From 592eaf53947859da044e33e4d0f53e4c8b2dc356 Mon Sep 17 00:00:00 2001 From: Patrick Miller Date: Mon, 3 Oct 2022 03:21:45 +0000 Subject: [PATCH] with browser true --- dist-cloudflare/README.md | 2 +- dist-cloudflare/server.js | 16797 +- dist-cloudflare/server.js.map | 8 +- ...t.b0117054.js => entry-client.0e635511.js} | 2 +- .../{index.af6c29ac.js => index.f572890e.js} | 2 +- dist/public/manifest.json | 4 +- dist/public/route-manifest.json | 6 +- dist/public/ssr-manifest.json | 96 +- dist/server.js | 163704 ++------------- package.json | 7 + patches/solid-js@1.5.7.patch | 45 + ...solid-start-cloudflare-workers@0.1.2.patch | 12 + pnpm-lock.yaml | 36 +- wrangler.toml | 3 +- 14 files changed, 26330 insertions(+), 154394 deletions(-) rename dist/public/assets/{entry-client.b0117054.js => entry-client.0e635511.js} (99%) rename dist/public/assets/{index.af6c29ac.js => index.f572890e.js} (99%) create mode 100644 patches/solid-js@1.5.7.patch create mode 100644 patches/solid-start-cloudflare-workers@0.1.2.patch diff --git a/dist-cloudflare/README.md b/dist-cloudflare/README.md index 5d30b32..b5eeaf0 100644 --- a/dist-cloudflare/README.md +++ b/dist-cloudflare/README.md @@ -1 +1 @@ -This folder contains the built output assets for the worker "solid-start-2022-09-30" generated at 2022-10-03T08:45:34.756Z. \ No newline at end of file +This folder contains the built output assets for the worker "solid-start-2022-09-30" generated at 2022-10-03T08:49:53.721Z. \ No newline at end of file diff --git a/dist-cloudflare/server.js b/dist-cloudflare/server.js index abb9af7..ce13263 100644 --- a/dist-cloudflare/server.js +++ b/dist-cloudflare/server.js @@ -1,9041 +1,3994 @@ -var __create = Object.create; var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __commonJS = (cb, mod) => function __require() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); var __publicField = (obj, key, value) => { __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); return value; }; -// node_modules/.pnpm/mime@3.0.0/node_modules/mime/Mime.js -var require_Mime = __commonJS({ - "node_modules/.pnpm/mime@3.0.0/node_modules/mime/Mime.js"(exports, module) { - "use strict"; - function Mime() { - this._types = /* @__PURE__ */ Object.create(null); - this._extensions = /* @__PURE__ */ Object.create(null); - for (let i = 0; i < arguments.length; i++) { - this.define(arguments[i]); - } - this.define = this.define.bind(this); - this.getType = this.getType.bind(this); - this.getExtension = this.getExtension.bind(this); - } - Mime.prototype.define = function(typeMap, force) { - for (let type in typeMap) { - let extensions = typeMap[type].map(function(t) { - return t.toLowerCase(); - }); - type = type.toLowerCase(); - for (let i = 0; i < extensions.length; i++) { - const ext = extensions[i]; - if (ext[0] === "*") { - continue; - } - if (!force && ext in this._types) { - throw new Error( - 'Attempt to change mapping for "' + ext + '" extension from "' + this._types[ext] + '" to "' + type + '". Pass `force=true` to allow this, otherwise remove "' + ext + '" from the list of extensions for "' + type + '".' - ); - } - this._types[ext] = type; - } - if (force || !this._extensions[type]) { - const ext = extensions[0]; - this._extensions[type] = ext[0] !== "*" ? ext : ext.substr(1); - } - } - }; - Mime.prototype.getType = function(path) { - path = String(path); - let last = path.replace(/^.*[/\\]/, "").toLowerCase(); - let ext = last.replace(/^.*\./, "").toLowerCase(); - let hasPath = last.length < path.length; - let hasDot = ext.length < last.length - 1; - return (hasDot || !hasPath) && this._types[ext] || null; - }; - Mime.prototype.getExtension = function(type) { - type = /^\s*([^;\s]*)/.test(type) && RegExp.$1; - return type && this._extensions[type.toLowerCase()] || null; +// dist/server.js +import manifestJSON from "__STATIC_CONTENT_MANIFEST"; +var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {}; +function getAugmentedNamespace(n) { + var f = n.default; + if (typeof f == "function") { + var a = function() { + return f.apply(this, arguments); }; - module.exports = Mime; + a.prototype = f.prototype; + } else + a = {}; + Object.defineProperty(a, "__esModule", { value: true }); + Object.keys(n).forEach(function(k) { + var d = Object.getOwnPropertyDescriptor(n, k); + Object.defineProperty(a, k, d.get ? d : { + enumerable: true, + get: function() { + return n[k]; + } + }); + }); + return a; +} +var dist$1 = {}; +function Mime$1() { + this._types = /* @__PURE__ */ Object.create(null); + this._extensions = /* @__PURE__ */ Object.create(null); + for (let i = 0; i < arguments.length; i++) { + this.define(arguments[i]); + } + this.define = this.define.bind(this); + this.getType = this.getType.bind(this); + this.getExtension = this.getExtension.bind(this); +} +Mime$1.prototype.define = function(typeMap, force) { + for (let type in typeMap) { + let extensions = typeMap[type].map(function(t) { + return t.toLowerCase(); + }); + type = type.toLowerCase(); + for (let i = 0; i < extensions.length; i++) { + const ext = extensions[i]; + if (ext[0] === "*") { + continue; + } + if (!force && ext in this._types) { + throw new Error( + 'Attempt to change mapping for "' + ext + '" extension from "' + this._types[ext] + '" to "' + type + '". Pass `force=true` to allow this, otherwise remove "' + ext + '" from the list of extensions for "' + type + '".' + ); + } + this._types[ext] = type; + } + if (force || !this._extensions[type]) { + const ext = extensions[0]; + this._extensions[type] = ext[0] !== "*" ? ext : ext.substr(1); + } } -}); - -// node_modules/.pnpm/mime@3.0.0/node_modules/mime/types/standard.js -var require_standard = __commonJS({ - "node_modules/.pnpm/mime@3.0.0/node_modules/mime/types/standard.js"(exports, module) { - module.exports = { "application/andrew-inset": ["ez"], "application/applixware": ["aw"], "application/atom+xml": ["atom"], "application/atomcat+xml": ["atomcat"], "application/atomdeleted+xml": ["atomdeleted"], "application/atomsvc+xml": ["atomsvc"], "application/atsc-dwd+xml": ["dwd"], "application/atsc-held+xml": ["held"], "application/atsc-rsat+xml": ["rsat"], "application/bdoc": ["bdoc"], "application/calendar+xml": ["xcs"], "application/ccxml+xml": ["ccxml"], "application/cdfx+xml": ["cdfx"], "application/cdmi-capability": ["cdmia"], "application/cdmi-container": ["cdmic"], "application/cdmi-domain": ["cdmid"], "application/cdmi-object": ["cdmio"], "application/cdmi-queue": ["cdmiq"], "application/cu-seeme": ["cu"], "application/dash+xml": ["mpd"], "application/davmount+xml": ["davmount"], "application/docbook+xml": ["dbk"], "application/dssc+der": ["dssc"], "application/dssc+xml": ["xdssc"], "application/ecmascript": ["es", "ecma"], "application/emma+xml": ["emma"], "application/emotionml+xml": ["emotionml"], "application/epub+zip": ["epub"], "application/exi": ["exi"], "application/express": ["exp"], "application/fdt+xml": ["fdt"], "application/font-tdpfr": ["pfr"], "application/geo+json": ["geojson"], "application/gml+xml": ["gml"], "application/gpx+xml": ["gpx"], "application/gxf": ["gxf"], "application/gzip": ["gz"], "application/hjson": ["hjson"], "application/hyperstudio": ["stk"], "application/inkml+xml": ["ink", "inkml"], "application/ipfix": ["ipfix"], "application/its+xml": ["its"], "application/java-archive": ["jar", "war", "ear"], "application/java-serialized-object": ["ser"], "application/java-vm": ["class"], "application/javascript": ["js", "mjs"], "application/json": ["json", "map"], "application/json5": ["json5"], "application/jsonml+json": ["jsonml"], "application/ld+json": ["jsonld"], "application/lgr+xml": ["lgr"], "application/lost+xml": ["lostxml"], "application/mac-binhex40": ["hqx"], "application/mac-compactpro": ["cpt"], "application/mads+xml": ["mads"], "application/manifest+json": ["webmanifest"], "application/marc": ["mrc"], "application/marcxml+xml": ["mrcx"], "application/mathematica": ["ma", "nb", "mb"], "application/mathml+xml": ["mathml"], "application/mbox": ["mbox"], "application/mediaservercontrol+xml": ["mscml"], "application/metalink+xml": ["metalink"], "application/metalink4+xml": ["meta4"], "application/mets+xml": ["mets"], "application/mmt-aei+xml": ["maei"], "application/mmt-usd+xml": ["musd"], "application/mods+xml": ["mods"], "application/mp21": ["m21", "mp21"], "application/mp4": ["mp4s", "m4p"], "application/msword": ["doc", "dot"], "application/mxf": ["mxf"], "application/n-quads": ["nq"], "application/n-triples": ["nt"], "application/node": ["cjs"], "application/octet-stream": ["bin", "dms", "lrf", "mar", "so", "dist", "distz", "pkg", "bpk", "dump", "elc", "deploy", "exe", "dll", "deb", "dmg", "iso", "img", "msi", "msp", "msm", "buffer"], "application/oda": ["oda"], "application/oebps-package+xml": ["opf"], "application/ogg": ["ogx"], "application/omdoc+xml": ["omdoc"], "application/onenote": ["onetoc", "onetoc2", "onetmp", "onepkg"], "application/oxps": ["oxps"], "application/p2p-overlay+xml": ["relo"], "application/patch-ops-error+xml": ["xer"], "application/pdf": ["pdf"], "application/pgp-encrypted": ["pgp"], "application/pgp-signature": ["asc", "sig"], "application/pics-rules": ["prf"], "application/pkcs10": ["p10"], "application/pkcs7-mime": ["p7m", "p7c"], "application/pkcs7-signature": ["p7s"], "application/pkcs8": ["p8"], "application/pkix-attr-cert": ["ac"], "application/pkix-cert": ["cer"], "application/pkix-crl": ["crl"], "application/pkix-pkipath": ["pkipath"], "application/pkixcmp": ["pki"], "application/pls+xml": ["pls"], "application/postscript": ["ai", "eps", "ps"], "application/provenance+xml": ["provx"], "application/pskc+xml": ["pskcxml"], "application/raml+yaml": ["raml"], "application/rdf+xml": ["rdf", "owl"], "application/reginfo+xml": ["rif"], "application/relax-ng-compact-syntax": ["rnc"], "application/resource-lists+xml": ["rl"], "application/resource-lists-diff+xml": ["rld"], "application/rls-services+xml": ["rs"], "application/route-apd+xml": ["rapd"], "application/route-s-tsid+xml": ["sls"], "application/route-usd+xml": ["rusd"], "application/rpki-ghostbusters": ["gbr"], "application/rpki-manifest": ["mft"], "application/rpki-roa": ["roa"], "application/rsd+xml": ["rsd"], "application/rss+xml": ["rss"], "application/rtf": ["rtf"], "application/sbml+xml": ["sbml"], "application/scvp-cv-request": ["scq"], "application/scvp-cv-response": ["scs"], "application/scvp-vp-request": ["spq"], "application/scvp-vp-response": ["spp"], "application/sdp": ["sdp"], "application/senml+xml": ["senmlx"], "application/sensml+xml": ["sensmlx"], "application/set-payment-initiation": ["setpay"], "application/set-registration-initiation": ["setreg"], "application/shf+xml": ["shf"], "application/sieve": ["siv", "sieve"], "application/smil+xml": ["smi", "smil"], "application/sparql-query": ["rq"], "application/sparql-results+xml": ["srx"], "application/srgs": ["gram"], "application/srgs+xml": ["grxml"], "application/sru+xml": ["sru"], "application/ssdl+xml": ["ssdl"], "application/ssml+xml": ["ssml"], "application/swid+xml": ["swidtag"], "application/tei+xml": ["tei", "teicorpus"], "application/thraud+xml": ["tfi"], "application/timestamped-data": ["tsd"], "application/toml": ["toml"], "application/trig": ["trig"], "application/ttml+xml": ["ttml"], "application/ubjson": ["ubj"], "application/urc-ressheet+xml": ["rsheet"], "application/urc-targetdesc+xml": ["td"], "application/voicexml+xml": ["vxml"], "application/wasm": ["wasm"], "application/widget": ["wgt"], "application/winhlp": ["hlp"], "application/wsdl+xml": ["wsdl"], "application/wspolicy+xml": ["wspolicy"], "application/xaml+xml": ["xaml"], "application/xcap-att+xml": ["xav"], "application/xcap-caps+xml": ["xca"], "application/xcap-diff+xml": ["xdf"], "application/xcap-el+xml": ["xel"], "application/xcap-ns+xml": ["xns"], "application/xenc+xml": ["xenc"], "application/xhtml+xml": ["xhtml", "xht"], "application/xliff+xml": ["xlf"], "application/xml": ["xml", "xsl", "xsd", "rng"], "application/xml-dtd": ["dtd"], "application/xop+xml": ["xop"], "application/xproc+xml": ["xpl"], "application/xslt+xml": ["*xsl", "xslt"], "application/xspf+xml": ["xspf"], "application/xv+xml": ["mxml", "xhvml", "xvml", "xvm"], "application/yang": ["yang"], "application/yin+xml": ["yin"], "application/zip": ["zip"], "audio/3gpp": ["*3gpp"], "audio/adpcm": ["adp"], "audio/amr": ["amr"], "audio/basic": ["au", "snd"], "audio/midi": ["mid", "midi", "kar", "rmi"], "audio/mobile-xmf": ["mxmf"], "audio/mp3": ["*mp3"], "audio/mp4": ["m4a", "mp4a"], "audio/mpeg": ["mpga", "mp2", "mp2a", "mp3", "m2a", "m3a"], "audio/ogg": ["oga", "ogg", "spx", "opus"], "audio/s3m": ["s3m"], "audio/silk": ["sil"], "audio/wav": ["wav"], "audio/wave": ["*wav"], "audio/webm": ["weba"], "audio/xm": ["xm"], "font/collection": ["ttc"], "font/otf": ["otf"], "font/ttf": ["ttf"], "font/woff": ["woff"], "font/woff2": ["woff2"], "image/aces": ["exr"], "image/apng": ["apng"], "image/avif": ["avif"], "image/bmp": ["bmp"], "image/cgm": ["cgm"], "image/dicom-rle": ["drle"], "image/emf": ["emf"], "image/fits": ["fits"], "image/g3fax": ["g3"], "image/gif": ["gif"], "image/heic": ["heic"], "image/heic-sequence": ["heics"], "image/heif": ["heif"], "image/heif-sequence": ["heifs"], "image/hej2k": ["hej2"], "image/hsj2": ["hsj2"], "image/ief": ["ief"], "image/jls": ["jls"], "image/jp2": ["jp2", "jpg2"], "image/jpeg": ["jpeg", "jpg", "jpe"], "image/jph": ["jph"], "image/jphc": ["jhc"], "image/jpm": ["jpm"], "image/jpx": ["jpx", "jpf"], "image/jxr": ["jxr"], "image/jxra": ["jxra"], "image/jxrs": ["jxrs"], "image/jxs": ["jxs"], "image/jxsc": ["jxsc"], "image/jxsi": ["jxsi"], "image/jxss": ["jxss"], "image/ktx": ["ktx"], "image/ktx2": ["ktx2"], "image/png": ["png"], "image/sgi": ["sgi"], "image/svg+xml": ["svg", "svgz"], "image/t38": ["t38"], "image/tiff": ["tif", "tiff"], "image/tiff-fx": ["tfx"], "image/webp": ["webp"], "image/wmf": ["wmf"], "message/disposition-notification": ["disposition-notification"], "message/global": ["u8msg"], "message/global-delivery-status": ["u8dsn"], "message/global-disposition-notification": ["u8mdn"], "message/global-headers": ["u8hdr"], "message/rfc822": ["eml", "mime"], "model/3mf": ["3mf"], "model/gltf+json": ["gltf"], "model/gltf-binary": ["glb"], "model/iges": ["igs", "iges"], "model/mesh": ["msh", "mesh", "silo"], "model/mtl": ["mtl"], "model/obj": ["obj"], "model/step+xml": ["stpx"], "model/step+zip": ["stpz"], "model/step-xml+zip": ["stpxz"], "model/stl": ["stl"], "model/vrml": ["wrl", "vrml"], "model/x3d+binary": ["*x3db", "x3dbz"], "model/x3d+fastinfoset": ["x3db"], "model/x3d+vrml": ["*x3dv", "x3dvz"], "model/x3d+xml": ["x3d", "x3dz"], "model/x3d-vrml": ["x3dv"], "text/cache-manifest": ["appcache", "manifest"], "text/calendar": ["ics", "ifb"], "text/coffeescript": ["coffee", "litcoffee"], "text/css": ["css"], "text/csv": ["csv"], "text/html": ["html", "htm", "shtml"], "text/jade": ["jade"], "text/jsx": ["jsx"], "text/less": ["less"], "text/markdown": ["markdown", "md"], "text/mathml": ["mml"], "text/mdx": ["mdx"], "text/n3": ["n3"], "text/plain": ["txt", "text", "conf", "def", "list", "log", "in", "ini"], "text/richtext": ["rtx"], "text/rtf": ["*rtf"], "text/sgml": ["sgml", "sgm"], "text/shex": ["shex"], "text/slim": ["slim", "slm"], "text/spdx": ["spdx"], "text/stylus": ["stylus", "styl"], "text/tab-separated-values": ["tsv"], "text/troff": ["t", "tr", "roff", "man", "me", "ms"], "text/turtle": ["ttl"], "text/uri-list": ["uri", "uris", "urls"], "text/vcard": ["vcard"], "text/vtt": ["vtt"], "text/xml": ["*xml"], "text/yaml": ["yaml", "yml"], "video/3gpp": ["3gp", "3gpp"], "video/3gpp2": ["3g2"], "video/h261": ["h261"], "video/h263": ["h263"], "video/h264": ["h264"], "video/iso.segment": ["m4s"], "video/jpeg": ["jpgv"], "video/jpm": ["*jpm", "jpgm"], "video/mj2": ["mj2", "mjp2"], "video/mp2t": ["ts"], "video/mp4": ["mp4", "mp4v", "mpg4"], "video/mpeg": ["mpeg", "mpg", "mpe", "m1v", "m2v"], "video/ogg": ["ogv"], "video/quicktime": ["qt", "mov"], "video/webm": ["webm"] }; +}; +Mime$1.prototype.getType = function(path) { + path = String(path); + let last = path.replace(/^.*[/\\]/, "").toLowerCase(); + let ext = last.replace(/^.*\./, "").toLowerCase(); + let hasPath = last.length < path.length; + let hasDot = ext.length < last.length - 1; + return (hasDot || !hasPath) && this._types[ext] || null; +}; +Mime$1.prototype.getExtension = function(type) { + type = /^\s*([^;\s]*)/.test(type) && RegExp.$1; + return type && this._extensions[type.toLowerCase()] || null; +}; +var Mime_1 = Mime$1; +var standard = { "application/andrew-inset": ["ez"], "application/applixware": ["aw"], "application/atom+xml": ["atom"], "application/atomcat+xml": ["atomcat"], "application/atomdeleted+xml": ["atomdeleted"], "application/atomsvc+xml": ["atomsvc"], "application/atsc-dwd+xml": ["dwd"], "application/atsc-held+xml": ["held"], "application/atsc-rsat+xml": ["rsat"], "application/bdoc": ["bdoc"], "application/calendar+xml": ["xcs"], "application/ccxml+xml": ["ccxml"], "application/cdfx+xml": ["cdfx"], "application/cdmi-capability": ["cdmia"], "application/cdmi-container": ["cdmic"], "application/cdmi-domain": ["cdmid"], "application/cdmi-object": ["cdmio"], "application/cdmi-queue": ["cdmiq"], "application/cu-seeme": ["cu"], "application/dash+xml": ["mpd"], "application/davmount+xml": ["davmount"], "application/docbook+xml": ["dbk"], "application/dssc+der": ["dssc"], "application/dssc+xml": ["xdssc"], "application/ecmascript": ["es", "ecma"], "application/emma+xml": ["emma"], "application/emotionml+xml": ["emotionml"], "application/epub+zip": ["epub"], "application/exi": ["exi"], "application/express": ["exp"], "application/fdt+xml": ["fdt"], "application/font-tdpfr": ["pfr"], "application/geo+json": ["geojson"], "application/gml+xml": ["gml"], "application/gpx+xml": ["gpx"], "application/gxf": ["gxf"], "application/gzip": ["gz"], "application/hjson": ["hjson"], "application/hyperstudio": ["stk"], "application/inkml+xml": ["ink", "inkml"], "application/ipfix": ["ipfix"], "application/its+xml": ["its"], "application/java-archive": ["jar", "war", "ear"], "application/java-serialized-object": ["ser"], "application/java-vm": ["class"], "application/javascript": ["js", "mjs"], "application/json": ["json", "map"], "application/json5": ["json5"], "application/jsonml+json": ["jsonml"], "application/ld+json": ["jsonld"], "application/lgr+xml": ["lgr"], "application/lost+xml": ["lostxml"], "application/mac-binhex40": ["hqx"], "application/mac-compactpro": ["cpt"], "application/mads+xml": ["mads"], "application/manifest+json": ["webmanifest"], "application/marc": ["mrc"], "application/marcxml+xml": ["mrcx"], "application/mathematica": ["ma", "nb", "mb"], "application/mathml+xml": ["mathml"], "application/mbox": ["mbox"], "application/mediaservercontrol+xml": ["mscml"], "application/metalink+xml": ["metalink"], "application/metalink4+xml": ["meta4"], "application/mets+xml": ["mets"], "application/mmt-aei+xml": ["maei"], "application/mmt-usd+xml": ["musd"], "application/mods+xml": ["mods"], "application/mp21": ["m21", "mp21"], "application/mp4": ["mp4s", "m4p"], "application/msword": ["doc", "dot"], "application/mxf": ["mxf"], "application/n-quads": ["nq"], "application/n-triples": ["nt"], "application/node": ["cjs"], "application/octet-stream": ["bin", "dms", "lrf", "mar", "so", "dist", "distz", "pkg", "bpk", "dump", "elc", "deploy", "exe", "dll", "deb", "dmg", "iso", "img", "msi", "msp", "msm", "buffer"], "application/oda": ["oda"], "application/oebps-package+xml": ["opf"], "application/ogg": ["ogx"], "application/omdoc+xml": ["omdoc"], "application/onenote": ["onetoc", "onetoc2", "onetmp", "onepkg"], "application/oxps": ["oxps"], "application/p2p-overlay+xml": ["relo"], "application/patch-ops-error+xml": ["xer"], "application/pdf": ["pdf"], "application/pgp-encrypted": ["pgp"], "application/pgp-signature": ["asc", "sig"], "application/pics-rules": ["prf"], "application/pkcs10": ["p10"], "application/pkcs7-mime": ["p7m", "p7c"], "application/pkcs7-signature": ["p7s"], "application/pkcs8": ["p8"], "application/pkix-attr-cert": ["ac"], "application/pkix-cert": ["cer"], "application/pkix-crl": ["crl"], "application/pkix-pkipath": ["pkipath"], "application/pkixcmp": ["pki"], "application/pls+xml": ["pls"], "application/postscript": ["ai", "eps", "ps"], "application/provenance+xml": ["provx"], "application/pskc+xml": ["pskcxml"], "application/raml+yaml": ["raml"], "application/rdf+xml": ["rdf", "owl"], "application/reginfo+xml": ["rif"], "application/relax-ng-compact-syntax": ["rnc"], "application/resource-lists+xml": ["rl"], "application/resource-lists-diff+xml": ["rld"], "application/rls-services+xml": ["rs"], "application/route-apd+xml": ["rapd"], "application/route-s-tsid+xml": ["sls"], "application/route-usd+xml": ["rusd"], "application/rpki-ghostbusters": ["gbr"], "application/rpki-manifest": ["mft"], "application/rpki-roa": ["roa"], "application/rsd+xml": ["rsd"], "application/rss+xml": ["rss"], "application/rtf": ["rtf"], "application/sbml+xml": ["sbml"], "application/scvp-cv-request": ["scq"], "application/scvp-cv-response": ["scs"], "application/scvp-vp-request": ["spq"], "application/scvp-vp-response": ["spp"], "application/sdp": ["sdp"], "application/senml+xml": ["senmlx"], "application/sensml+xml": ["sensmlx"], "application/set-payment-initiation": ["setpay"], "application/set-registration-initiation": ["setreg"], "application/shf+xml": ["shf"], "application/sieve": ["siv", "sieve"], "application/smil+xml": ["smi", "smil"], "application/sparql-query": ["rq"], "application/sparql-results+xml": ["srx"], "application/srgs": ["gram"], "application/srgs+xml": ["grxml"], "application/sru+xml": ["sru"], "application/ssdl+xml": ["ssdl"], "application/ssml+xml": ["ssml"], "application/swid+xml": ["swidtag"], "application/tei+xml": ["tei", "teicorpus"], "application/thraud+xml": ["tfi"], "application/timestamped-data": ["tsd"], "application/toml": ["toml"], "application/trig": ["trig"], "application/ttml+xml": ["ttml"], "application/ubjson": ["ubj"], "application/urc-ressheet+xml": ["rsheet"], "application/urc-targetdesc+xml": ["td"], "application/voicexml+xml": ["vxml"], "application/wasm": ["wasm"], "application/widget": ["wgt"], "application/winhlp": ["hlp"], "application/wsdl+xml": ["wsdl"], "application/wspolicy+xml": ["wspolicy"], "application/xaml+xml": ["xaml"], "application/xcap-att+xml": ["xav"], "application/xcap-caps+xml": ["xca"], "application/xcap-diff+xml": ["xdf"], "application/xcap-el+xml": ["xel"], "application/xcap-ns+xml": ["xns"], "application/xenc+xml": ["xenc"], "application/xhtml+xml": ["xhtml", "xht"], "application/xliff+xml": ["xlf"], "application/xml": ["xml", "xsl", "xsd", "rng"], "application/xml-dtd": ["dtd"], "application/xop+xml": ["xop"], "application/xproc+xml": ["xpl"], "application/xslt+xml": ["*xsl", "xslt"], "application/xspf+xml": ["xspf"], "application/xv+xml": ["mxml", "xhvml", "xvml", "xvm"], "application/yang": ["yang"], "application/yin+xml": ["yin"], "application/zip": ["zip"], "audio/3gpp": ["*3gpp"], "audio/adpcm": ["adp"], "audio/amr": ["amr"], "audio/basic": ["au", "snd"], "audio/midi": ["mid", "midi", "kar", "rmi"], "audio/mobile-xmf": ["mxmf"], "audio/mp3": ["*mp3"], "audio/mp4": ["m4a", "mp4a"], "audio/mpeg": ["mpga", "mp2", "mp2a", "mp3", "m2a", "m3a"], "audio/ogg": ["oga", "ogg", "spx", "opus"], "audio/s3m": ["s3m"], "audio/silk": ["sil"], "audio/wav": ["wav"], "audio/wave": ["*wav"], "audio/webm": ["weba"], "audio/xm": ["xm"], "font/collection": ["ttc"], "font/otf": ["otf"], "font/ttf": ["ttf"], "font/woff": ["woff"], "font/woff2": ["woff2"], "image/aces": ["exr"], "image/apng": ["apng"], "image/avif": ["avif"], "image/bmp": ["bmp"], "image/cgm": ["cgm"], "image/dicom-rle": ["drle"], "image/emf": ["emf"], "image/fits": ["fits"], "image/g3fax": ["g3"], "image/gif": ["gif"], "image/heic": ["heic"], "image/heic-sequence": ["heics"], "image/heif": ["heif"], "image/heif-sequence": ["heifs"], "image/hej2k": ["hej2"], "image/hsj2": ["hsj2"], "image/ief": ["ief"], "image/jls": ["jls"], "image/jp2": ["jp2", "jpg2"], "image/jpeg": ["jpeg", "jpg", "jpe"], "image/jph": ["jph"], "image/jphc": ["jhc"], "image/jpm": ["jpm"], "image/jpx": ["jpx", "jpf"], "image/jxr": ["jxr"], "image/jxra": ["jxra"], "image/jxrs": ["jxrs"], "image/jxs": ["jxs"], "image/jxsc": ["jxsc"], "image/jxsi": ["jxsi"], "image/jxss": ["jxss"], "image/ktx": ["ktx"], "image/ktx2": ["ktx2"], "image/png": ["png"], "image/sgi": ["sgi"], "image/svg+xml": ["svg", "svgz"], "image/t38": ["t38"], "image/tiff": ["tif", "tiff"], "image/tiff-fx": ["tfx"], "image/webp": ["webp"], "image/wmf": ["wmf"], "message/disposition-notification": ["disposition-notification"], "message/global": ["u8msg"], "message/global-delivery-status": ["u8dsn"], "message/global-disposition-notification": ["u8mdn"], "message/global-headers": ["u8hdr"], "message/rfc822": ["eml", "mime"], "model/3mf": ["3mf"], "model/gltf+json": ["gltf"], "model/gltf-binary": ["glb"], "model/iges": ["igs", "iges"], "model/mesh": ["msh", "mesh", "silo"], "model/mtl": ["mtl"], "model/obj": ["obj"], "model/step+xml": ["stpx"], "model/step+zip": ["stpz"], "model/step-xml+zip": ["stpxz"], "model/stl": ["stl"], "model/vrml": ["wrl", "vrml"], "model/x3d+binary": ["*x3db", "x3dbz"], "model/x3d+fastinfoset": ["x3db"], "model/x3d+vrml": ["*x3dv", "x3dvz"], "model/x3d+xml": ["x3d", "x3dz"], "model/x3d-vrml": ["x3dv"], "text/cache-manifest": ["appcache", "manifest"], "text/calendar": ["ics", "ifb"], "text/coffeescript": ["coffee", "litcoffee"], "text/css": ["css"], "text/csv": ["csv"], "text/html": ["html", "htm", "shtml"], "text/jade": ["jade"], "text/jsx": ["jsx"], "text/less": ["less"], "text/markdown": ["markdown", "md"], "text/mathml": ["mml"], "text/mdx": ["mdx"], "text/n3": ["n3"], "text/plain": ["txt", "text", "conf", "def", "list", "log", "in", "ini"], "text/richtext": ["rtx"], "text/rtf": ["*rtf"], "text/sgml": ["sgml", "sgm"], "text/shex": ["shex"], "text/slim": ["slim", "slm"], "text/spdx": ["spdx"], "text/stylus": ["stylus", "styl"], "text/tab-separated-values": ["tsv"], "text/troff": ["t", "tr", "roff", "man", "me", "ms"], "text/turtle": ["ttl"], "text/uri-list": ["uri", "uris", "urls"], "text/vcard": ["vcard"], "text/vtt": ["vtt"], "text/xml": ["*xml"], "text/yaml": ["yaml", "yml"], "video/3gpp": ["3gp", "3gpp"], "video/3gpp2": ["3g2"], "video/h261": ["h261"], "video/h263": ["h263"], "video/h264": ["h264"], "video/iso.segment": ["m4s"], "video/jpeg": ["jpgv"], "video/jpm": ["*jpm", "jpgm"], "video/mj2": ["mj2", "mjp2"], "video/mp2t": ["ts"], "video/mp4": ["mp4", "mp4v", "mpg4"], "video/mpeg": ["mpeg", "mpg", "mpe", "m1v", "m2v"], "video/ogg": ["ogv"], "video/quicktime": ["qt", "mov"], "video/webm": ["webm"] }; +var other = { "application/prs.cww": ["cww"], "application/vnd.1000minds.decision-model+xml": ["1km"], "application/vnd.3gpp.pic-bw-large": ["plb"], "application/vnd.3gpp.pic-bw-small": ["psb"], "application/vnd.3gpp.pic-bw-var": ["pvb"], "application/vnd.3gpp2.tcap": ["tcap"], "application/vnd.3m.post-it-notes": ["pwn"], "application/vnd.accpac.simply.aso": ["aso"], "application/vnd.accpac.simply.imp": ["imp"], "application/vnd.acucobol": ["acu"], "application/vnd.acucorp": ["atc", "acutc"], "application/vnd.adobe.air-application-installer-package+zip": ["air"], "application/vnd.adobe.formscentral.fcdt": ["fcdt"], "application/vnd.adobe.fxp": ["fxp", "fxpl"], "application/vnd.adobe.xdp+xml": ["xdp"], "application/vnd.adobe.xfdf": ["xfdf"], "application/vnd.ahead.space": ["ahead"], "application/vnd.airzip.filesecure.azf": ["azf"], "application/vnd.airzip.filesecure.azs": ["azs"], "application/vnd.amazon.ebook": ["azw"], "application/vnd.americandynamics.acc": ["acc"], "application/vnd.amiga.ami": ["ami"], "application/vnd.android.package-archive": ["apk"], "application/vnd.anser-web-certificate-issue-initiation": ["cii"], "application/vnd.anser-web-funds-transfer-initiation": ["fti"], "application/vnd.antix.game-component": ["atx"], "application/vnd.apple.installer+xml": ["mpkg"], "application/vnd.apple.keynote": ["key"], "application/vnd.apple.mpegurl": ["m3u8"], "application/vnd.apple.numbers": ["numbers"], "application/vnd.apple.pages": ["pages"], "application/vnd.apple.pkpass": ["pkpass"], "application/vnd.aristanetworks.swi": ["swi"], "application/vnd.astraea-software.iota": ["iota"], "application/vnd.audiograph": ["aep"], "application/vnd.balsamiq.bmml+xml": ["bmml"], "application/vnd.blueice.multipass": ["mpm"], "application/vnd.bmi": ["bmi"], "application/vnd.businessobjects": ["rep"], "application/vnd.chemdraw+xml": ["cdxml"], "application/vnd.chipnuts.karaoke-mmd": ["mmd"], "application/vnd.cinderella": ["cdy"], "application/vnd.citationstyles.style+xml": ["csl"], "application/vnd.claymore": ["cla"], "application/vnd.cloanto.rp9": ["rp9"], "application/vnd.clonk.c4group": ["c4g", "c4d", "c4f", "c4p", "c4u"], "application/vnd.cluetrust.cartomobile-config": ["c11amc"], "application/vnd.cluetrust.cartomobile-config-pkg": ["c11amz"], "application/vnd.commonspace": ["csp"], "application/vnd.contact.cmsg": ["cdbcmsg"], "application/vnd.cosmocaller": ["cmc"], "application/vnd.crick.clicker": ["clkx"], "application/vnd.crick.clicker.keyboard": ["clkk"], "application/vnd.crick.clicker.palette": ["clkp"], "application/vnd.crick.clicker.template": ["clkt"], "application/vnd.crick.clicker.wordbank": ["clkw"], "application/vnd.criticaltools.wbs+xml": ["wbs"], "application/vnd.ctc-posml": ["pml"], "application/vnd.cups-ppd": ["ppd"], "application/vnd.curl.car": ["car"], "application/vnd.curl.pcurl": ["pcurl"], "application/vnd.dart": ["dart"], "application/vnd.data-vision.rdz": ["rdz"], "application/vnd.dbf": ["dbf"], "application/vnd.dece.data": ["uvf", "uvvf", "uvd", "uvvd"], "application/vnd.dece.ttml+xml": ["uvt", "uvvt"], "application/vnd.dece.unspecified": ["uvx", "uvvx"], "application/vnd.dece.zip": ["uvz", "uvvz"], "application/vnd.denovo.fcselayout-link": ["fe_launch"], "application/vnd.dna": ["dna"], "application/vnd.dolby.mlp": ["mlp"], "application/vnd.dpgraph": ["dpg"], "application/vnd.dreamfactory": ["dfac"], "application/vnd.ds-keypoint": ["kpxx"], "application/vnd.dvb.ait": ["ait"], "application/vnd.dvb.service": ["svc"], "application/vnd.dynageo": ["geo"], "application/vnd.ecowin.chart": ["mag"], "application/vnd.enliven": ["nml"], "application/vnd.epson.esf": ["esf"], "application/vnd.epson.msf": ["msf"], "application/vnd.epson.quickanime": ["qam"], "application/vnd.epson.salt": ["slt"], "application/vnd.epson.ssf": ["ssf"], "application/vnd.eszigno3+xml": ["es3", "et3"], "application/vnd.ezpix-album": ["ez2"], "application/vnd.ezpix-package": ["ez3"], "application/vnd.fdf": ["fdf"], "application/vnd.fdsn.mseed": ["mseed"], "application/vnd.fdsn.seed": ["seed", "dataless"], "application/vnd.flographit": ["gph"], "application/vnd.fluxtime.clip": ["ftc"], "application/vnd.framemaker": ["fm", "frame", "maker", "book"], "application/vnd.frogans.fnc": ["fnc"], "application/vnd.frogans.ltf": ["ltf"], "application/vnd.fsc.weblaunch": ["fsc"], "application/vnd.fujitsu.oasys": ["oas"], "application/vnd.fujitsu.oasys2": ["oa2"], "application/vnd.fujitsu.oasys3": ["oa3"], "application/vnd.fujitsu.oasysgp": ["fg5"], "application/vnd.fujitsu.oasysprs": ["bh2"], "application/vnd.fujixerox.ddd": ["ddd"], "application/vnd.fujixerox.docuworks": ["xdw"], "application/vnd.fujixerox.docuworks.binder": ["xbd"], "application/vnd.fuzzysheet": ["fzs"], "application/vnd.genomatix.tuxedo": ["txd"], "application/vnd.geogebra.file": ["ggb"], "application/vnd.geogebra.tool": ["ggt"], "application/vnd.geometry-explorer": ["gex", "gre"], "application/vnd.geonext": ["gxt"], "application/vnd.geoplan": ["g2w"], "application/vnd.geospace": ["g3w"], "application/vnd.gmx": ["gmx"], "application/vnd.google-apps.document": ["gdoc"], "application/vnd.google-apps.presentation": ["gslides"], "application/vnd.google-apps.spreadsheet": ["gsheet"], "application/vnd.google-earth.kml+xml": ["kml"], "application/vnd.google-earth.kmz": ["kmz"], "application/vnd.grafeq": ["gqf", "gqs"], "application/vnd.groove-account": ["gac"], "application/vnd.groove-help": ["ghf"], "application/vnd.groove-identity-message": ["gim"], "application/vnd.groove-injector": ["grv"], "application/vnd.groove-tool-message": ["gtm"], "application/vnd.groove-tool-template": ["tpl"], "application/vnd.groove-vcard": ["vcg"], "application/vnd.hal+xml": ["hal"], "application/vnd.handheld-entertainment+xml": ["zmm"], "application/vnd.hbci": ["hbci"], "application/vnd.hhe.lesson-player": ["les"], "application/vnd.hp-hpgl": ["hpgl"], "application/vnd.hp-hpid": ["hpid"], "application/vnd.hp-hps": ["hps"], "application/vnd.hp-jlyt": ["jlt"], "application/vnd.hp-pcl": ["pcl"], "application/vnd.hp-pclxl": ["pclxl"], "application/vnd.hydrostatix.sof-data": ["sfd-hdstx"], "application/vnd.ibm.minipay": ["mpy"], "application/vnd.ibm.modcap": ["afp", "listafp", "list3820"], "application/vnd.ibm.rights-management": ["irm"], "application/vnd.ibm.secure-container": ["sc"], "application/vnd.iccprofile": ["icc", "icm"], "application/vnd.igloader": ["igl"], "application/vnd.immervision-ivp": ["ivp"], "application/vnd.immervision-ivu": ["ivu"], "application/vnd.insors.igm": ["igm"], "application/vnd.intercon.formnet": ["xpw", "xpx"], "application/vnd.intergeo": ["i2g"], "application/vnd.intu.qbo": ["qbo"], "application/vnd.intu.qfx": ["qfx"], "application/vnd.ipunplugged.rcprofile": ["rcprofile"], "application/vnd.irepository.package+xml": ["irp"], "application/vnd.is-xpr": ["xpr"], "application/vnd.isac.fcs": ["fcs"], "application/vnd.jam": ["jam"], "application/vnd.jcp.javame.midlet-rms": ["rms"], "application/vnd.jisp": ["jisp"], "application/vnd.joost.joda-archive": ["joda"], "application/vnd.kahootz": ["ktz", "ktr"], "application/vnd.kde.karbon": ["karbon"], "application/vnd.kde.kchart": ["chrt"], "application/vnd.kde.kformula": ["kfo"], "application/vnd.kde.kivio": ["flw"], "application/vnd.kde.kontour": ["kon"], "application/vnd.kde.kpresenter": ["kpr", "kpt"], "application/vnd.kde.kspread": ["ksp"], "application/vnd.kde.kword": ["kwd", "kwt"], "application/vnd.kenameaapp": ["htke"], "application/vnd.kidspiration": ["kia"], "application/vnd.kinar": ["kne", "knp"], "application/vnd.koan": ["skp", "skd", "skt", "skm"], "application/vnd.kodak-descriptor": ["sse"], "application/vnd.las.las+xml": ["lasxml"], "application/vnd.llamagraphics.life-balance.desktop": ["lbd"], "application/vnd.llamagraphics.life-balance.exchange+xml": ["lbe"], "application/vnd.lotus-1-2-3": ["123"], "application/vnd.lotus-approach": ["apr"], "application/vnd.lotus-freelance": ["pre"], "application/vnd.lotus-notes": ["nsf"], "application/vnd.lotus-organizer": ["org"], "application/vnd.lotus-screencam": ["scm"], "application/vnd.lotus-wordpro": ["lwp"], "application/vnd.macports.portpkg": ["portpkg"], "application/vnd.mapbox-vector-tile": ["mvt"], "application/vnd.mcd": ["mcd"], "application/vnd.medcalcdata": ["mc1"], "application/vnd.mediastation.cdkey": ["cdkey"], "application/vnd.mfer": ["mwf"], "application/vnd.mfmp": ["mfm"], "application/vnd.micrografx.flo": ["flo"], "application/vnd.micrografx.igx": ["igx"], "application/vnd.mif": ["mif"], "application/vnd.mobius.daf": ["daf"], "application/vnd.mobius.dis": ["dis"], "application/vnd.mobius.mbk": ["mbk"], "application/vnd.mobius.mqy": ["mqy"], "application/vnd.mobius.msl": ["msl"], "application/vnd.mobius.plc": ["plc"], "application/vnd.mobius.txf": ["txf"], "application/vnd.mophun.application": ["mpn"], "application/vnd.mophun.certificate": ["mpc"], "application/vnd.mozilla.xul+xml": ["xul"], "application/vnd.ms-artgalry": ["cil"], "application/vnd.ms-cab-compressed": ["cab"], "application/vnd.ms-excel": ["xls", "xlm", "xla", "xlc", "xlt", "xlw"], "application/vnd.ms-excel.addin.macroenabled.12": ["xlam"], "application/vnd.ms-excel.sheet.binary.macroenabled.12": ["xlsb"], "application/vnd.ms-excel.sheet.macroenabled.12": ["xlsm"], "application/vnd.ms-excel.template.macroenabled.12": ["xltm"], "application/vnd.ms-fontobject": ["eot"], "application/vnd.ms-htmlhelp": ["chm"], "application/vnd.ms-ims": ["ims"], "application/vnd.ms-lrm": ["lrm"], "application/vnd.ms-officetheme": ["thmx"], "application/vnd.ms-outlook": ["msg"], "application/vnd.ms-pki.seccat": ["cat"], "application/vnd.ms-pki.stl": ["*stl"], "application/vnd.ms-powerpoint": ["ppt", "pps", "pot"], "application/vnd.ms-powerpoint.addin.macroenabled.12": ["ppam"], "application/vnd.ms-powerpoint.presentation.macroenabled.12": ["pptm"], "application/vnd.ms-powerpoint.slide.macroenabled.12": ["sldm"], "application/vnd.ms-powerpoint.slideshow.macroenabled.12": ["ppsm"], "application/vnd.ms-powerpoint.template.macroenabled.12": ["potm"], "application/vnd.ms-project": ["mpp", "mpt"], "application/vnd.ms-word.document.macroenabled.12": ["docm"], "application/vnd.ms-word.template.macroenabled.12": ["dotm"], "application/vnd.ms-works": ["wps", "wks", "wcm", "wdb"], "application/vnd.ms-wpl": ["wpl"], "application/vnd.ms-xpsdocument": ["xps"], "application/vnd.mseq": ["mseq"], "application/vnd.musician": ["mus"], "application/vnd.muvee.style": ["msty"], "application/vnd.mynfc": ["taglet"], "application/vnd.neurolanguage.nlu": ["nlu"], "application/vnd.nitf": ["ntf", "nitf"], "application/vnd.noblenet-directory": ["nnd"], "application/vnd.noblenet-sealer": ["nns"], "application/vnd.noblenet-web": ["nnw"], "application/vnd.nokia.n-gage.ac+xml": ["*ac"], "application/vnd.nokia.n-gage.data": ["ngdat"], "application/vnd.nokia.n-gage.symbian.install": ["n-gage"], "application/vnd.nokia.radio-preset": ["rpst"], "application/vnd.nokia.radio-presets": ["rpss"], "application/vnd.novadigm.edm": ["edm"], "application/vnd.novadigm.edx": ["edx"], "application/vnd.novadigm.ext": ["ext"], "application/vnd.oasis.opendocument.chart": ["odc"], "application/vnd.oasis.opendocument.chart-template": ["otc"], "application/vnd.oasis.opendocument.database": ["odb"], "application/vnd.oasis.opendocument.formula": ["odf"], "application/vnd.oasis.opendocument.formula-template": ["odft"], "application/vnd.oasis.opendocument.graphics": ["odg"], "application/vnd.oasis.opendocument.graphics-template": ["otg"], "application/vnd.oasis.opendocument.image": ["odi"], "application/vnd.oasis.opendocument.image-template": ["oti"], "application/vnd.oasis.opendocument.presentation": ["odp"], "application/vnd.oasis.opendocument.presentation-template": ["otp"], "application/vnd.oasis.opendocument.spreadsheet": ["ods"], "application/vnd.oasis.opendocument.spreadsheet-template": ["ots"], "application/vnd.oasis.opendocument.text": ["odt"], "application/vnd.oasis.opendocument.text-master": ["odm"], "application/vnd.oasis.opendocument.text-template": ["ott"], "application/vnd.oasis.opendocument.text-web": ["oth"], "application/vnd.olpc-sugar": ["xo"], "application/vnd.oma.dd2+xml": ["dd2"], "application/vnd.openblox.game+xml": ["obgx"], "application/vnd.openofficeorg.extension": ["oxt"], "application/vnd.openstreetmap.data+xml": ["osm"], "application/vnd.openxmlformats-officedocument.presentationml.presentation": ["pptx"], "application/vnd.openxmlformats-officedocument.presentationml.slide": ["sldx"], "application/vnd.openxmlformats-officedocument.presentationml.slideshow": ["ppsx"], "application/vnd.openxmlformats-officedocument.presentationml.template": ["potx"], "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": ["xlsx"], "application/vnd.openxmlformats-officedocument.spreadsheetml.template": ["xltx"], "application/vnd.openxmlformats-officedocument.wordprocessingml.document": ["docx"], "application/vnd.openxmlformats-officedocument.wordprocessingml.template": ["dotx"], "application/vnd.osgeo.mapguide.package": ["mgp"], "application/vnd.osgi.dp": ["dp"], "application/vnd.osgi.subsystem": ["esa"], "application/vnd.palm": ["pdb", "pqa", "oprc"], "application/vnd.pawaafile": ["paw"], "application/vnd.pg.format": ["str"], "application/vnd.pg.osasli": ["ei6"], "application/vnd.picsel": ["efif"], "application/vnd.pmi.widget": ["wg"], "application/vnd.pocketlearn": ["plf"], "application/vnd.powerbuilder6": ["pbd"], "application/vnd.previewsystems.box": ["box"], "application/vnd.proteus.magazine": ["mgz"], "application/vnd.publishare-delta-tree": ["qps"], "application/vnd.pvi.ptid1": ["ptid"], "application/vnd.quark.quarkxpress": ["qxd", "qxt", "qwd", "qwt", "qxl", "qxb"], "application/vnd.rar": ["rar"], "application/vnd.realvnc.bed": ["bed"], "application/vnd.recordare.musicxml": ["mxl"], "application/vnd.recordare.musicxml+xml": ["musicxml"], "application/vnd.rig.cryptonote": ["cryptonote"], "application/vnd.rim.cod": ["cod"], "application/vnd.rn-realmedia": ["rm"], "application/vnd.rn-realmedia-vbr": ["rmvb"], "application/vnd.route66.link66+xml": ["link66"], "application/vnd.sailingtracker.track": ["st"], "application/vnd.seemail": ["see"], "application/vnd.sema": ["sema"], "application/vnd.semd": ["semd"], "application/vnd.semf": ["semf"], "application/vnd.shana.informed.formdata": ["ifm"], "application/vnd.shana.informed.formtemplate": ["itp"], "application/vnd.shana.informed.interchange": ["iif"], "application/vnd.shana.informed.package": ["ipk"], "application/vnd.simtech-mindmapper": ["twd", "twds"], "application/vnd.smaf": ["mmf"], "application/vnd.smart.teacher": ["teacher"], "application/vnd.software602.filler.form+xml": ["fo"], "application/vnd.solent.sdkm+xml": ["sdkm", "sdkd"], "application/vnd.spotfire.dxp": ["dxp"], "application/vnd.spotfire.sfs": ["sfs"], "application/vnd.stardivision.calc": ["sdc"], "application/vnd.stardivision.draw": ["sda"], "application/vnd.stardivision.impress": ["sdd"], "application/vnd.stardivision.math": ["smf"], "application/vnd.stardivision.writer": ["sdw", "vor"], "application/vnd.stardivision.writer-global": ["sgl"], "application/vnd.stepmania.package": ["smzip"], "application/vnd.stepmania.stepchart": ["sm"], "application/vnd.sun.wadl+xml": ["wadl"], "application/vnd.sun.xml.calc": ["sxc"], "application/vnd.sun.xml.calc.template": ["stc"], "application/vnd.sun.xml.draw": ["sxd"], "application/vnd.sun.xml.draw.template": ["std"], "application/vnd.sun.xml.impress": ["sxi"], "application/vnd.sun.xml.impress.template": ["sti"], "application/vnd.sun.xml.math": ["sxm"], "application/vnd.sun.xml.writer": ["sxw"], "application/vnd.sun.xml.writer.global": ["sxg"], "application/vnd.sun.xml.writer.template": ["stw"], "application/vnd.sus-calendar": ["sus", "susp"], "application/vnd.svd": ["svd"], "application/vnd.symbian.install": ["sis", "sisx"], "application/vnd.syncml+xml": ["xsm"], "application/vnd.syncml.dm+wbxml": ["bdm"], "application/vnd.syncml.dm+xml": ["xdm"], "application/vnd.syncml.dmddf+xml": ["ddf"], "application/vnd.tao.intent-module-archive": ["tao"], "application/vnd.tcpdump.pcap": ["pcap", "cap", "dmp"], "application/vnd.tmobile-livetv": ["tmo"], "application/vnd.trid.tpt": ["tpt"], "application/vnd.triscape.mxs": ["mxs"], "application/vnd.trueapp": ["tra"], "application/vnd.ufdl": ["ufd", "ufdl"], "application/vnd.uiq.theme": ["utz"], "application/vnd.umajin": ["umj"], "application/vnd.unity": ["unityweb"], "application/vnd.uoml+xml": ["uoml"], "application/vnd.vcx": ["vcx"], "application/vnd.visio": ["vsd", "vst", "vss", "vsw"], "application/vnd.visionary": ["vis"], "application/vnd.vsf": ["vsf"], "application/vnd.wap.wbxml": ["wbxml"], "application/vnd.wap.wmlc": ["wmlc"], "application/vnd.wap.wmlscriptc": ["wmlsc"], "application/vnd.webturbo": ["wtb"], "application/vnd.wolfram.player": ["nbp"], "application/vnd.wordperfect": ["wpd"], "application/vnd.wqd": ["wqd"], "application/vnd.wt.stf": ["stf"], "application/vnd.xara": ["xar"], "application/vnd.xfdl": ["xfdl"], "application/vnd.yamaha.hv-dic": ["hvd"], "application/vnd.yamaha.hv-script": ["hvs"], "application/vnd.yamaha.hv-voice": ["hvp"], "application/vnd.yamaha.openscoreformat": ["osf"], "application/vnd.yamaha.openscoreformat.osfpvg+xml": ["osfpvg"], "application/vnd.yamaha.smaf-audio": ["saf"], "application/vnd.yamaha.smaf-phrase": ["spf"], "application/vnd.yellowriver-custom-menu": ["cmp"], "application/vnd.zul": ["zir", "zirz"], "application/vnd.zzazz.deck+xml": ["zaz"], "application/x-7z-compressed": ["7z"], "application/x-abiword": ["abw"], "application/x-ace-compressed": ["ace"], "application/x-apple-diskimage": ["*dmg"], "application/x-arj": ["arj"], "application/x-authorware-bin": ["aab", "x32", "u32", "vox"], "application/x-authorware-map": ["aam"], "application/x-authorware-seg": ["aas"], "application/x-bcpio": ["bcpio"], "application/x-bdoc": ["*bdoc"], "application/x-bittorrent": ["torrent"], "application/x-blorb": ["blb", "blorb"], "application/x-bzip": ["bz"], "application/x-bzip2": ["bz2", "boz"], "application/x-cbr": ["cbr", "cba", "cbt", "cbz", "cb7"], "application/x-cdlink": ["vcd"], "application/x-cfs-compressed": ["cfs"], "application/x-chat": ["chat"], "application/x-chess-pgn": ["pgn"], "application/x-chrome-extension": ["crx"], "application/x-cocoa": ["cco"], "application/x-conference": ["nsc"], "application/x-cpio": ["cpio"], "application/x-csh": ["csh"], "application/x-debian-package": ["*deb", "udeb"], "application/x-dgc-compressed": ["dgc"], "application/x-director": ["dir", "dcr", "dxr", "cst", "cct", "cxt", "w3d", "fgd", "swa"], "application/x-doom": ["wad"], "application/x-dtbncx+xml": ["ncx"], "application/x-dtbook+xml": ["dtb"], "application/x-dtbresource+xml": ["res"], "application/x-dvi": ["dvi"], "application/x-envoy": ["evy"], "application/x-eva": ["eva"], "application/x-font-bdf": ["bdf"], "application/x-font-ghostscript": ["gsf"], "application/x-font-linux-psf": ["psf"], "application/x-font-pcf": ["pcf"], "application/x-font-snf": ["snf"], "application/x-font-type1": ["pfa", "pfb", "pfm", "afm"], "application/x-freearc": ["arc"], "application/x-futuresplash": ["spl"], "application/x-gca-compressed": ["gca"], "application/x-glulx": ["ulx"], "application/x-gnumeric": ["gnumeric"], "application/x-gramps-xml": ["gramps"], "application/x-gtar": ["gtar"], "application/x-hdf": ["hdf"], "application/x-httpd-php": ["php"], "application/x-install-instructions": ["install"], "application/x-iso9660-image": ["*iso"], "application/x-iwork-keynote-sffkey": ["*key"], "application/x-iwork-numbers-sffnumbers": ["*numbers"], "application/x-iwork-pages-sffpages": ["*pages"], "application/x-java-archive-diff": ["jardiff"], "application/x-java-jnlp-file": ["jnlp"], "application/x-keepass2": ["kdbx"], "application/x-latex": ["latex"], "application/x-lua-bytecode": ["luac"], "application/x-lzh-compressed": ["lzh", "lha"], "application/x-makeself": ["run"], "application/x-mie": ["mie"], "application/x-mobipocket-ebook": ["prc", "mobi"], "application/x-ms-application": ["application"], "application/x-ms-shortcut": ["lnk"], "application/x-ms-wmd": ["wmd"], "application/x-ms-wmz": ["wmz"], "application/x-ms-xbap": ["xbap"], "application/x-msaccess": ["mdb"], "application/x-msbinder": ["obd"], "application/x-mscardfile": ["crd"], "application/x-msclip": ["clp"], "application/x-msdos-program": ["*exe"], "application/x-msdownload": ["*exe", "*dll", "com", "bat", "*msi"], "application/x-msmediaview": ["mvb", "m13", "m14"], "application/x-msmetafile": ["*wmf", "*wmz", "*emf", "emz"], "application/x-msmoney": ["mny"], "application/x-mspublisher": ["pub"], "application/x-msschedule": ["scd"], "application/x-msterminal": ["trm"], "application/x-mswrite": ["wri"], "application/x-netcdf": ["nc", "cdf"], "application/x-ns-proxy-autoconfig": ["pac"], "application/x-nzb": ["nzb"], "application/x-perl": ["pl", "pm"], "application/x-pilot": ["*prc", "*pdb"], "application/x-pkcs12": ["p12", "pfx"], "application/x-pkcs7-certificates": ["p7b", "spc"], "application/x-pkcs7-certreqresp": ["p7r"], "application/x-rar-compressed": ["*rar"], "application/x-redhat-package-manager": ["rpm"], "application/x-research-info-systems": ["ris"], "application/x-sea": ["sea"], "application/x-sh": ["sh"], "application/x-shar": ["shar"], "application/x-shockwave-flash": ["swf"], "application/x-silverlight-app": ["xap"], "application/x-sql": ["sql"], "application/x-stuffit": ["sit"], "application/x-stuffitx": ["sitx"], "application/x-subrip": ["srt"], "application/x-sv4cpio": ["sv4cpio"], "application/x-sv4crc": ["sv4crc"], "application/x-t3vm-image": ["t3"], "application/x-tads": ["gam"], "application/x-tar": ["tar"], "application/x-tcl": ["tcl", "tk"], "application/x-tex": ["tex"], "application/x-tex-tfm": ["tfm"], "application/x-texinfo": ["texinfo", "texi"], "application/x-tgif": ["*obj"], "application/x-ustar": ["ustar"], "application/x-virtualbox-hdd": ["hdd"], "application/x-virtualbox-ova": ["ova"], "application/x-virtualbox-ovf": ["ovf"], "application/x-virtualbox-vbox": ["vbox"], "application/x-virtualbox-vbox-extpack": ["vbox-extpack"], "application/x-virtualbox-vdi": ["vdi"], "application/x-virtualbox-vhd": ["vhd"], "application/x-virtualbox-vmdk": ["vmdk"], "application/x-wais-source": ["src"], "application/x-web-app-manifest+json": ["webapp"], "application/x-x509-ca-cert": ["der", "crt", "pem"], "application/x-xfig": ["fig"], "application/x-xliff+xml": ["*xlf"], "application/x-xpinstall": ["xpi"], "application/x-xz": ["xz"], "application/x-zmachine": ["z1", "z2", "z3", "z4", "z5", "z6", "z7", "z8"], "audio/vnd.dece.audio": ["uva", "uvva"], "audio/vnd.digital-winds": ["eol"], "audio/vnd.dra": ["dra"], "audio/vnd.dts": ["dts"], "audio/vnd.dts.hd": ["dtshd"], "audio/vnd.lucent.voice": ["lvp"], "audio/vnd.ms-playready.media.pya": ["pya"], "audio/vnd.nuera.ecelp4800": ["ecelp4800"], "audio/vnd.nuera.ecelp7470": ["ecelp7470"], "audio/vnd.nuera.ecelp9600": ["ecelp9600"], "audio/vnd.rip": ["rip"], "audio/x-aac": ["aac"], "audio/x-aiff": ["aif", "aiff", "aifc"], "audio/x-caf": ["caf"], "audio/x-flac": ["flac"], "audio/x-m4a": ["*m4a"], "audio/x-matroska": ["mka"], "audio/x-mpegurl": ["m3u"], "audio/x-ms-wax": ["wax"], "audio/x-ms-wma": ["wma"], "audio/x-pn-realaudio": ["ram", "ra"], "audio/x-pn-realaudio-plugin": ["rmp"], "audio/x-realaudio": ["*ra"], "audio/x-wav": ["*wav"], "chemical/x-cdx": ["cdx"], "chemical/x-cif": ["cif"], "chemical/x-cmdf": ["cmdf"], "chemical/x-cml": ["cml"], "chemical/x-csml": ["csml"], "chemical/x-xyz": ["xyz"], "image/prs.btif": ["btif"], "image/prs.pti": ["pti"], "image/vnd.adobe.photoshop": ["psd"], "image/vnd.airzip.accelerator.azv": ["azv"], "image/vnd.dece.graphic": ["uvi", "uvvi", "uvg", "uvvg"], "image/vnd.djvu": ["djvu", "djv"], "image/vnd.dvb.subtitle": ["*sub"], "image/vnd.dwg": ["dwg"], "image/vnd.dxf": ["dxf"], "image/vnd.fastbidsheet": ["fbs"], "image/vnd.fpx": ["fpx"], "image/vnd.fst": ["fst"], "image/vnd.fujixerox.edmics-mmr": ["mmr"], "image/vnd.fujixerox.edmics-rlc": ["rlc"], "image/vnd.microsoft.icon": ["ico"], "image/vnd.ms-dds": ["dds"], "image/vnd.ms-modi": ["mdi"], "image/vnd.ms-photo": ["wdp"], "image/vnd.net-fpx": ["npx"], "image/vnd.pco.b16": ["b16"], "image/vnd.tencent.tap": ["tap"], "image/vnd.valve.source.texture": ["vtf"], "image/vnd.wap.wbmp": ["wbmp"], "image/vnd.xiff": ["xif"], "image/vnd.zbrush.pcx": ["pcx"], "image/x-3ds": ["3ds"], "image/x-cmu-raster": ["ras"], "image/x-cmx": ["cmx"], "image/x-freehand": ["fh", "fhc", "fh4", "fh5", "fh7"], "image/x-icon": ["*ico"], "image/x-jng": ["jng"], "image/x-mrsid-image": ["sid"], "image/x-ms-bmp": ["*bmp"], "image/x-pcx": ["*pcx"], "image/x-pict": ["pic", "pct"], "image/x-portable-anymap": ["pnm"], "image/x-portable-bitmap": ["pbm"], "image/x-portable-graymap": ["pgm"], "image/x-portable-pixmap": ["ppm"], "image/x-rgb": ["rgb"], "image/x-tga": ["tga"], "image/x-xbitmap": ["xbm"], "image/x-xpixmap": ["xpm"], "image/x-xwindowdump": ["xwd"], "message/vnd.wfa.wsc": ["wsc"], "model/vnd.collada+xml": ["dae"], "model/vnd.dwf": ["dwf"], "model/vnd.gdl": ["gdl"], "model/vnd.gtw": ["gtw"], "model/vnd.mts": ["mts"], "model/vnd.opengex": ["ogex"], "model/vnd.parasolid.transmit.binary": ["x_b"], "model/vnd.parasolid.transmit.text": ["x_t"], "model/vnd.sap.vds": ["vds"], "model/vnd.usdz+zip": ["usdz"], "model/vnd.valve.source.compiled-map": ["bsp"], "model/vnd.vtu": ["vtu"], "text/prs.lines.tag": ["dsc"], "text/vnd.curl": ["curl"], "text/vnd.curl.dcurl": ["dcurl"], "text/vnd.curl.mcurl": ["mcurl"], "text/vnd.curl.scurl": ["scurl"], "text/vnd.dvb.subtitle": ["sub"], "text/vnd.fly": ["fly"], "text/vnd.fmi.flexstor": ["flx"], "text/vnd.graphviz": ["gv"], "text/vnd.in3d.3dml": ["3dml"], "text/vnd.in3d.spot": ["spot"], "text/vnd.sun.j2me.app-descriptor": ["jad"], "text/vnd.wap.wml": ["wml"], "text/vnd.wap.wmlscript": ["wmls"], "text/x-asm": ["s", "asm"], "text/x-c": ["c", "cc", "cxx", "cpp", "h", "hh", "dic"], "text/x-component": ["htc"], "text/x-fortran": ["f", "for", "f77", "f90"], "text/x-handlebars-template": ["hbs"], "text/x-java-source": ["java"], "text/x-lua": ["lua"], "text/x-markdown": ["mkd"], "text/x-nfo": ["nfo"], "text/x-opml": ["opml"], "text/x-org": ["*org"], "text/x-pascal": ["p", "pas"], "text/x-processing": ["pde"], "text/x-sass": ["sass"], "text/x-scss": ["scss"], "text/x-setext": ["etx"], "text/x-sfv": ["sfv"], "text/x-suse-ymp": ["ymp"], "text/x-uuencode": ["uu"], "text/x-vcalendar": ["vcs"], "text/x-vcard": ["vcf"], "video/vnd.dece.hd": ["uvh", "uvvh"], "video/vnd.dece.mobile": ["uvm", "uvvm"], "video/vnd.dece.pd": ["uvp", "uvvp"], "video/vnd.dece.sd": ["uvs", "uvvs"], "video/vnd.dece.video": ["uvv", "uvvv"], "video/vnd.dvb.file": ["dvb"], "video/vnd.fvt": ["fvt"], "video/vnd.mpegurl": ["mxu", "m4u"], "video/vnd.ms-playready.media.pyv": ["pyv"], "video/vnd.uvvu.mp4": ["uvu", "uvvu"], "video/vnd.vivo": ["viv"], "video/x-f4v": ["f4v"], "video/x-fli": ["fli"], "video/x-flv": ["flv"], "video/x-m4v": ["m4v"], "video/x-matroska": ["mkv", "mk3d", "mks"], "video/x-mng": ["mng"], "video/x-ms-asf": ["asf", "asx"], "video/x-ms-vob": ["vob"], "video/x-ms-wm": ["wm"], "video/x-ms-wmv": ["wmv"], "video/x-ms-wmx": ["wmx"], "video/x-ms-wvx": ["wvx"], "video/x-msvideo": ["avi"], "video/x-sgi-movie": ["movie"], "video/x-smv": ["smv"], "x-conference/x-cooltalk": ["ice"] }; +var Mime = Mime_1; +var mime = new Mime(standard, other); +var types$1 = {}; +Object.defineProperty(types$1, "__esModule", { value: true }); +types$1.InternalError = types$1.NotFoundError = types$1.MethodNotAllowedError = types$1.KVError = void 0; +var KVError = class extends Error { + constructor(message, status = 500) { + super(message); + Object.setPrototypeOf(this, new.target.prototype); + this.name = KVError.name; + this.status = status; } -}); - -// node_modules/.pnpm/mime@3.0.0/node_modules/mime/types/other.js -var require_other = __commonJS({ - "node_modules/.pnpm/mime@3.0.0/node_modules/mime/types/other.js"(exports, module) { - module.exports = { "application/prs.cww": ["cww"], "application/vnd.1000minds.decision-model+xml": ["1km"], "application/vnd.3gpp.pic-bw-large": ["plb"], "application/vnd.3gpp.pic-bw-small": ["psb"], "application/vnd.3gpp.pic-bw-var": ["pvb"], "application/vnd.3gpp2.tcap": ["tcap"], "application/vnd.3m.post-it-notes": ["pwn"], "application/vnd.accpac.simply.aso": ["aso"], "application/vnd.accpac.simply.imp": ["imp"], "application/vnd.acucobol": ["acu"], "application/vnd.acucorp": ["atc", "acutc"], "application/vnd.adobe.air-application-installer-package+zip": ["air"], "application/vnd.adobe.formscentral.fcdt": ["fcdt"], "application/vnd.adobe.fxp": ["fxp", "fxpl"], "application/vnd.adobe.xdp+xml": ["xdp"], "application/vnd.adobe.xfdf": ["xfdf"], "application/vnd.ahead.space": ["ahead"], "application/vnd.airzip.filesecure.azf": ["azf"], "application/vnd.airzip.filesecure.azs": ["azs"], "application/vnd.amazon.ebook": ["azw"], "application/vnd.americandynamics.acc": ["acc"], "application/vnd.amiga.ami": ["ami"], "application/vnd.android.package-archive": ["apk"], "application/vnd.anser-web-certificate-issue-initiation": ["cii"], "application/vnd.anser-web-funds-transfer-initiation": ["fti"], "application/vnd.antix.game-component": ["atx"], "application/vnd.apple.installer+xml": ["mpkg"], "application/vnd.apple.keynote": ["key"], "application/vnd.apple.mpegurl": ["m3u8"], "application/vnd.apple.numbers": ["numbers"], "application/vnd.apple.pages": ["pages"], "application/vnd.apple.pkpass": ["pkpass"], "application/vnd.aristanetworks.swi": ["swi"], "application/vnd.astraea-software.iota": ["iota"], "application/vnd.audiograph": ["aep"], "application/vnd.balsamiq.bmml+xml": ["bmml"], "application/vnd.blueice.multipass": ["mpm"], "application/vnd.bmi": ["bmi"], "application/vnd.businessobjects": ["rep"], "application/vnd.chemdraw+xml": ["cdxml"], "application/vnd.chipnuts.karaoke-mmd": ["mmd"], "application/vnd.cinderella": ["cdy"], "application/vnd.citationstyles.style+xml": ["csl"], "application/vnd.claymore": ["cla"], "application/vnd.cloanto.rp9": ["rp9"], "application/vnd.clonk.c4group": ["c4g", "c4d", "c4f", "c4p", "c4u"], "application/vnd.cluetrust.cartomobile-config": ["c11amc"], "application/vnd.cluetrust.cartomobile-config-pkg": ["c11amz"], "application/vnd.commonspace": ["csp"], "application/vnd.contact.cmsg": ["cdbcmsg"], "application/vnd.cosmocaller": ["cmc"], "application/vnd.crick.clicker": ["clkx"], "application/vnd.crick.clicker.keyboard": ["clkk"], "application/vnd.crick.clicker.palette": ["clkp"], "application/vnd.crick.clicker.template": ["clkt"], "application/vnd.crick.clicker.wordbank": ["clkw"], "application/vnd.criticaltools.wbs+xml": ["wbs"], "application/vnd.ctc-posml": ["pml"], "application/vnd.cups-ppd": ["ppd"], "application/vnd.curl.car": ["car"], "application/vnd.curl.pcurl": ["pcurl"], "application/vnd.dart": ["dart"], "application/vnd.data-vision.rdz": ["rdz"], "application/vnd.dbf": ["dbf"], "application/vnd.dece.data": ["uvf", "uvvf", "uvd", "uvvd"], "application/vnd.dece.ttml+xml": ["uvt", "uvvt"], "application/vnd.dece.unspecified": ["uvx", "uvvx"], "application/vnd.dece.zip": ["uvz", "uvvz"], "application/vnd.denovo.fcselayout-link": ["fe_launch"], "application/vnd.dna": ["dna"], "application/vnd.dolby.mlp": ["mlp"], "application/vnd.dpgraph": ["dpg"], "application/vnd.dreamfactory": ["dfac"], "application/vnd.ds-keypoint": ["kpxx"], "application/vnd.dvb.ait": ["ait"], "application/vnd.dvb.service": ["svc"], "application/vnd.dynageo": ["geo"], "application/vnd.ecowin.chart": ["mag"], "application/vnd.enliven": ["nml"], "application/vnd.epson.esf": ["esf"], "application/vnd.epson.msf": ["msf"], "application/vnd.epson.quickanime": ["qam"], "application/vnd.epson.salt": ["slt"], "application/vnd.epson.ssf": ["ssf"], "application/vnd.eszigno3+xml": ["es3", "et3"], "application/vnd.ezpix-album": ["ez2"], "application/vnd.ezpix-package": ["ez3"], "application/vnd.fdf": ["fdf"], "application/vnd.fdsn.mseed": ["mseed"], "application/vnd.fdsn.seed": ["seed", "dataless"], "application/vnd.flographit": ["gph"], "application/vnd.fluxtime.clip": ["ftc"], "application/vnd.framemaker": ["fm", "frame", "maker", "book"], "application/vnd.frogans.fnc": ["fnc"], "application/vnd.frogans.ltf": ["ltf"], "application/vnd.fsc.weblaunch": ["fsc"], "application/vnd.fujitsu.oasys": ["oas"], "application/vnd.fujitsu.oasys2": ["oa2"], "application/vnd.fujitsu.oasys3": ["oa3"], "application/vnd.fujitsu.oasysgp": ["fg5"], "application/vnd.fujitsu.oasysprs": ["bh2"], "application/vnd.fujixerox.ddd": ["ddd"], "application/vnd.fujixerox.docuworks": ["xdw"], "application/vnd.fujixerox.docuworks.binder": ["xbd"], "application/vnd.fuzzysheet": ["fzs"], "application/vnd.genomatix.tuxedo": ["txd"], "application/vnd.geogebra.file": ["ggb"], "application/vnd.geogebra.tool": ["ggt"], "application/vnd.geometry-explorer": ["gex", "gre"], "application/vnd.geonext": ["gxt"], "application/vnd.geoplan": ["g2w"], "application/vnd.geospace": ["g3w"], "application/vnd.gmx": ["gmx"], "application/vnd.google-apps.document": ["gdoc"], "application/vnd.google-apps.presentation": ["gslides"], "application/vnd.google-apps.spreadsheet": ["gsheet"], "application/vnd.google-earth.kml+xml": ["kml"], "application/vnd.google-earth.kmz": ["kmz"], "application/vnd.grafeq": ["gqf", "gqs"], "application/vnd.groove-account": ["gac"], "application/vnd.groove-help": ["ghf"], "application/vnd.groove-identity-message": ["gim"], "application/vnd.groove-injector": ["grv"], "application/vnd.groove-tool-message": ["gtm"], "application/vnd.groove-tool-template": ["tpl"], "application/vnd.groove-vcard": ["vcg"], "application/vnd.hal+xml": ["hal"], "application/vnd.handheld-entertainment+xml": ["zmm"], "application/vnd.hbci": ["hbci"], "application/vnd.hhe.lesson-player": ["les"], "application/vnd.hp-hpgl": ["hpgl"], "application/vnd.hp-hpid": ["hpid"], "application/vnd.hp-hps": ["hps"], "application/vnd.hp-jlyt": ["jlt"], "application/vnd.hp-pcl": ["pcl"], "application/vnd.hp-pclxl": ["pclxl"], "application/vnd.hydrostatix.sof-data": ["sfd-hdstx"], "application/vnd.ibm.minipay": ["mpy"], "application/vnd.ibm.modcap": ["afp", "listafp", "list3820"], "application/vnd.ibm.rights-management": ["irm"], "application/vnd.ibm.secure-container": ["sc"], "application/vnd.iccprofile": ["icc", "icm"], "application/vnd.igloader": ["igl"], "application/vnd.immervision-ivp": ["ivp"], "application/vnd.immervision-ivu": ["ivu"], "application/vnd.insors.igm": ["igm"], "application/vnd.intercon.formnet": ["xpw", "xpx"], "application/vnd.intergeo": ["i2g"], "application/vnd.intu.qbo": ["qbo"], "application/vnd.intu.qfx": ["qfx"], "application/vnd.ipunplugged.rcprofile": ["rcprofile"], "application/vnd.irepository.package+xml": ["irp"], "application/vnd.is-xpr": ["xpr"], "application/vnd.isac.fcs": ["fcs"], "application/vnd.jam": ["jam"], "application/vnd.jcp.javame.midlet-rms": ["rms"], "application/vnd.jisp": ["jisp"], "application/vnd.joost.joda-archive": ["joda"], "application/vnd.kahootz": ["ktz", "ktr"], "application/vnd.kde.karbon": ["karbon"], "application/vnd.kde.kchart": ["chrt"], "application/vnd.kde.kformula": ["kfo"], "application/vnd.kde.kivio": ["flw"], "application/vnd.kde.kontour": ["kon"], "application/vnd.kde.kpresenter": ["kpr", "kpt"], "application/vnd.kde.kspread": ["ksp"], "application/vnd.kde.kword": ["kwd", "kwt"], "application/vnd.kenameaapp": ["htke"], "application/vnd.kidspiration": ["kia"], "application/vnd.kinar": ["kne", "knp"], "application/vnd.koan": ["skp", "skd", "skt", "skm"], "application/vnd.kodak-descriptor": ["sse"], "application/vnd.las.las+xml": ["lasxml"], "application/vnd.llamagraphics.life-balance.desktop": ["lbd"], "application/vnd.llamagraphics.life-balance.exchange+xml": ["lbe"], "application/vnd.lotus-1-2-3": ["123"], "application/vnd.lotus-approach": ["apr"], "application/vnd.lotus-freelance": ["pre"], "application/vnd.lotus-notes": ["nsf"], "application/vnd.lotus-organizer": ["org"], "application/vnd.lotus-screencam": ["scm"], "application/vnd.lotus-wordpro": ["lwp"], "application/vnd.macports.portpkg": ["portpkg"], "application/vnd.mapbox-vector-tile": ["mvt"], "application/vnd.mcd": ["mcd"], "application/vnd.medcalcdata": ["mc1"], "application/vnd.mediastation.cdkey": ["cdkey"], "application/vnd.mfer": ["mwf"], "application/vnd.mfmp": ["mfm"], "application/vnd.micrografx.flo": ["flo"], "application/vnd.micrografx.igx": ["igx"], "application/vnd.mif": ["mif"], "application/vnd.mobius.daf": ["daf"], "application/vnd.mobius.dis": ["dis"], "application/vnd.mobius.mbk": ["mbk"], "application/vnd.mobius.mqy": ["mqy"], "application/vnd.mobius.msl": ["msl"], "application/vnd.mobius.plc": ["plc"], "application/vnd.mobius.txf": ["txf"], "application/vnd.mophun.application": ["mpn"], "application/vnd.mophun.certificate": ["mpc"], "application/vnd.mozilla.xul+xml": ["xul"], "application/vnd.ms-artgalry": ["cil"], "application/vnd.ms-cab-compressed": ["cab"], "application/vnd.ms-excel": ["xls", "xlm", "xla", "xlc", "xlt", "xlw"], "application/vnd.ms-excel.addin.macroenabled.12": ["xlam"], "application/vnd.ms-excel.sheet.binary.macroenabled.12": ["xlsb"], "application/vnd.ms-excel.sheet.macroenabled.12": ["xlsm"], "application/vnd.ms-excel.template.macroenabled.12": ["xltm"], "application/vnd.ms-fontobject": ["eot"], "application/vnd.ms-htmlhelp": ["chm"], "application/vnd.ms-ims": ["ims"], "application/vnd.ms-lrm": ["lrm"], "application/vnd.ms-officetheme": ["thmx"], "application/vnd.ms-outlook": ["msg"], "application/vnd.ms-pki.seccat": ["cat"], "application/vnd.ms-pki.stl": ["*stl"], "application/vnd.ms-powerpoint": ["ppt", "pps", "pot"], "application/vnd.ms-powerpoint.addin.macroenabled.12": ["ppam"], "application/vnd.ms-powerpoint.presentation.macroenabled.12": ["pptm"], "application/vnd.ms-powerpoint.slide.macroenabled.12": ["sldm"], "application/vnd.ms-powerpoint.slideshow.macroenabled.12": ["ppsm"], "application/vnd.ms-powerpoint.template.macroenabled.12": ["potm"], "application/vnd.ms-project": ["mpp", "mpt"], "application/vnd.ms-word.document.macroenabled.12": ["docm"], "application/vnd.ms-word.template.macroenabled.12": ["dotm"], "application/vnd.ms-works": ["wps", "wks", "wcm", "wdb"], "application/vnd.ms-wpl": ["wpl"], "application/vnd.ms-xpsdocument": ["xps"], "application/vnd.mseq": ["mseq"], "application/vnd.musician": ["mus"], "application/vnd.muvee.style": ["msty"], "application/vnd.mynfc": ["taglet"], "application/vnd.neurolanguage.nlu": ["nlu"], "application/vnd.nitf": ["ntf", "nitf"], "application/vnd.noblenet-directory": ["nnd"], "application/vnd.noblenet-sealer": ["nns"], "application/vnd.noblenet-web": ["nnw"], "application/vnd.nokia.n-gage.ac+xml": ["*ac"], "application/vnd.nokia.n-gage.data": ["ngdat"], "application/vnd.nokia.n-gage.symbian.install": ["n-gage"], "application/vnd.nokia.radio-preset": ["rpst"], "application/vnd.nokia.radio-presets": ["rpss"], "application/vnd.novadigm.edm": ["edm"], "application/vnd.novadigm.edx": ["edx"], "application/vnd.novadigm.ext": ["ext"], "application/vnd.oasis.opendocument.chart": ["odc"], "application/vnd.oasis.opendocument.chart-template": ["otc"], "application/vnd.oasis.opendocument.database": ["odb"], "application/vnd.oasis.opendocument.formula": ["odf"], "application/vnd.oasis.opendocument.formula-template": ["odft"], "application/vnd.oasis.opendocument.graphics": ["odg"], "application/vnd.oasis.opendocument.graphics-template": ["otg"], "application/vnd.oasis.opendocument.image": ["odi"], "application/vnd.oasis.opendocument.image-template": ["oti"], "application/vnd.oasis.opendocument.presentation": ["odp"], "application/vnd.oasis.opendocument.presentation-template": ["otp"], "application/vnd.oasis.opendocument.spreadsheet": ["ods"], "application/vnd.oasis.opendocument.spreadsheet-template": ["ots"], "application/vnd.oasis.opendocument.text": ["odt"], "application/vnd.oasis.opendocument.text-master": ["odm"], "application/vnd.oasis.opendocument.text-template": ["ott"], "application/vnd.oasis.opendocument.text-web": ["oth"], "application/vnd.olpc-sugar": ["xo"], "application/vnd.oma.dd2+xml": ["dd2"], "application/vnd.openblox.game+xml": ["obgx"], "application/vnd.openofficeorg.extension": ["oxt"], "application/vnd.openstreetmap.data+xml": ["osm"], "application/vnd.openxmlformats-officedocument.presentationml.presentation": ["pptx"], "application/vnd.openxmlformats-officedocument.presentationml.slide": ["sldx"], "application/vnd.openxmlformats-officedocument.presentationml.slideshow": ["ppsx"], "application/vnd.openxmlformats-officedocument.presentationml.template": ["potx"], "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": ["xlsx"], "application/vnd.openxmlformats-officedocument.spreadsheetml.template": ["xltx"], "application/vnd.openxmlformats-officedocument.wordprocessingml.document": ["docx"], "application/vnd.openxmlformats-officedocument.wordprocessingml.template": ["dotx"], "application/vnd.osgeo.mapguide.package": ["mgp"], "application/vnd.osgi.dp": ["dp"], "application/vnd.osgi.subsystem": ["esa"], "application/vnd.palm": ["pdb", "pqa", "oprc"], "application/vnd.pawaafile": ["paw"], "application/vnd.pg.format": ["str"], "application/vnd.pg.osasli": ["ei6"], "application/vnd.picsel": ["efif"], "application/vnd.pmi.widget": ["wg"], "application/vnd.pocketlearn": ["plf"], "application/vnd.powerbuilder6": ["pbd"], "application/vnd.previewsystems.box": ["box"], "application/vnd.proteus.magazine": ["mgz"], "application/vnd.publishare-delta-tree": ["qps"], "application/vnd.pvi.ptid1": ["ptid"], "application/vnd.quark.quarkxpress": ["qxd", "qxt", "qwd", "qwt", "qxl", "qxb"], "application/vnd.rar": ["rar"], "application/vnd.realvnc.bed": ["bed"], "application/vnd.recordare.musicxml": ["mxl"], "application/vnd.recordare.musicxml+xml": ["musicxml"], "application/vnd.rig.cryptonote": ["cryptonote"], "application/vnd.rim.cod": ["cod"], "application/vnd.rn-realmedia": ["rm"], "application/vnd.rn-realmedia-vbr": ["rmvb"], "application/vnd.route66.link66+xml": ["link66"], "application/vnd.sailingtracker.track": ["st"], "application/vnd.seemail": ["see"], "application/vnd.sema": ["sema"], "application/vnd.semd": ["semd"], "application/vnd.semf": ["semf"], "application/vnd.shana.informed.formdata": ["ifm"], "application/vnd.shana.informed.formtemplate": ["itp"], "application/vnd.shana.informed.interchange": ["iif"], "application/vnd.shana.informed.package": ["ipk"], "application/vnd.simtech-mindmapper": ["twd", "twds"], "application/vnd.smaf": ["mmf"], "application/vnd.smart.teacher": ["teacher"], "application/vnd.software602.filler.form+xml": ["fo"], "application/vnd.solent.sdkm+xml": ["sdkm", "sdkd"], "application/vnd.spotfire.dxp": ["dxp"], "application/vnd.spotfire.sfs": ["sfs"], "application/vnd.stardivision.calc": ["sdc"], "application/vnd.stardivision.draw": ["sda"], "application/vnd.stardivision.impress": ["sdd"], "application/vnd.stardivision.math": ["smf"], "application/vnd.stardivision.writer": ["sdw", "vor"], "application/vnd.stardivision.writer-global": ["sgl"], "application/vnd.stepmania.package": ["smzip"], "application/vnd.stepmania.stepchart": ["sm"], "application/vnd.sun.wadl+xml": ["wadl"], "application/vnd.sun.xml.calc": ["sxc"], "application/vnd.sun.xml.calc.template": ["stc"], "application/vnd.sun.xml.draw": ["sxd"], "application/vnd.sun.xml.draw.template": ["std"], "application/vnd.sun.xml.impress": ["sxi"], "application/vnd.sun.xml.impress.template": ["sti"], "application/vnd.sun.xml.math": ["sxm"], "application/vnd.sun.xml.writer": ["sxw"], "application/vnd.sun.xml.writer.global": ["sxg"], "application/vnd.sun.xml.writer.template": ["stw"], "application/vnd.sus-calendar": ["sus", "susp"], "application/vnd.svd": ["svd"], "application/vnd.symbian.install": ["sis", "sisx"], "application/vnd.syncml+xml": ["xsm"], "application/vnd.syncml.dm+wbxml": ["bdm"], "application/vnd.syncml.dm+xml": ["xdm"], "application/vnd.syncml.dmddf+xml": ["ddf"], "application/vnd.tao.intent-module-archive": ["tao"], "application/vnd.tcpdump.pcap": ["pcap", "cap", "dmp"], "application/vnd.tmobile-livetv": ["tmo"], "application/vnd.trid.tpt": ["tpt"], "application/vnd.triscape.mxs": ["mxs"], "application/vnd.trueapp": ["tra"], "application/vnd.ufdl": ["ufd", "ufdl"], "application/vnd.uiq.theme": ["utz"], "application/vnd.umajin": ["umj"], "application/vnd.unity": ["unityweb"], "application/vnd.uoml+xml": ["uoml"], "application/vnd.vcx": ["vcx"], "application/vnd.visio": ["vsd", "vst", "vss", "vsw"], "application/vnd.visionary": ["vis"], "application/vnd.vsf": ["vsf"], "application/vnd.wap.wbxml": ["wbxml"], "application/vnd.wap.wmlc": ["wmlc"], "application/vnd.wap.wmlscriptc": ["wmlsc"], "application/vnd.webturbo": ["wtb"], "application/vnd.wolfram.player": ["nbp"], "application/vnd.wordperfect": ["wpd"], "application/vnd.wqd": ["wqd"], "application/vnd.wt.stf": ["stf"], "application/vnd.xara": ["xar"], "application/vnd.xfdl": ["xfdl"], "application/vnd.yamaha.hv-dic": ["hvd"], "application/vnd.yamaha.hv-script": ["hvs"], "application/vnd.yamaha.hv-voice": ["hvp"], "application/vnd.yamaha.openscoreformat": ["osf"], "application/vnd.yamaha.openscoreformat.osfpvg+xml": ["osfpvg"], "application/vnd.yamaha.smaf-audio": ["saf"], "application/vnd.yamaha.smaf-phrase": ["spf"], "application/vnd.yellowriver-custom-menu": ["cmp"], "application/vnd.zul": ["zir", "zirz"], "application/vnd.zzazz.deck+xml": ["zaz"], "application/x-7z-compressed": ["7z"], "application/x-abiword": ["abw"], "application/x-ace-compressed": ["ace"], "application/x-apple-diskimage": ["*dmg"], "application/x-arj": ["arj"], "application/x-authorware-bin": ["aab", "x32", "u32", "vox"], "application/x-authorware-map": ["aam"], "application/x-authorware-seg": ["aas"], "application/x-bcpio": ["bcpio"], "application/x-bdoc": ["*bdoc"], "application/x-bittorrent": ["torrent"], "application/x-blorb": ["blb", "blorb"], "application/x-bzip": ["bz"], "application/x-bzip2": ["bz2", "boz"], "application/x-cbr": ["cbr", "cba", "cbt", "cbz", "cb7"], "application/x-cdlink": ["vcd"], "application/x-cfs-compressed": ["cfs"], "application/x-chat": ["chat"], "application/x-chess-pgn": ["pgn"], "application/x-chrome-extension": ["crx"], "application/x-cocoa": ["cco"], "application/x-conference": ["nsc"], "application/x-cpio": ["cpio"], "application/x-csh": ["csh"], "application/x-debian-package": ["*deb", "udeb"], "application/x-dgc-compressed": ["dgc"], "application/x-director": ["dir", "dcr", "dxr", "cst", "cct", "cxt", "w3d", "fgd", "swa"], "application/x-doom": ["wad"], "application/x-dtbncx+xml": ["ncx"], "application/x-dtbook+xml": ["dtb"], "application/x-dtbresource+xml": ["res"], "application/x-dvi": ["dvi"], "application/x-envoy": ["evy"], "application/x-eva": ["eva"], "application/x-font-bdf": ["bdf"], "application/x-font-ghostscript": ["gsf"], "application/x-font-linux-psf": ["psf"], "application/x-font-pcf": ["pcf"], "application/x-font-snf": ["snf"], "application/x-font-type1": ["pfa", "pfb", "pfm", "afm"], "application/x-freearc": ["arc"], "application/x-futuresplash": ["spl"], "application/x-gca-compressed": ["gca"], "application/x-glulx": ["ulx"], "application/x-gnumeric": ["gnumeric"], "application/x-gramps-xml": ["gramps"], "application/x-gtar": ["gtar"], "application/x-hdf": ["hdf"], "application/x-httpd-php": ["php"], "application/x-install-instructions": ["install"], "application/x-iso9660-image": ["*iso"], "application/x-iwork-keynote-sffkey": ["*key"], "application/x-iwork-numbers-sffnumbers": ["*numbers"], "application/x-iwork-pages-sffpages": ["*pages"], "application/x-java-archive-diff": ["jardiff"], "application/x-java-jnlp-file": ["jnlp"], "application/x-keepass2": ["kdbx"], "application/x-latex": ["latex"], "application/x-lua-bytecode": ["luac"], "application/x-lzh-compressed": ["lzh", "lha"], "application/x-makeself": ["run"], "application/x-mie": ["mie"], "application/x-mobipocket-ebook": ["prc", "mobi"], "application/x-ms-application": ["application"], "application/x-ms-shortcut": ["lnk"], "application/x-ms-wmd": ["wmd"], "application/x-ms-wmz": ["wmz"], "application/x-ms-xbap": ["xbap"], "application/x-msaccess": ["mdb"], "application/x-msbinder": ["obd"], "application/x-mscardfile": ["crd"], "application/x-msclip": ["clp"], "application/x-msdos-program": ["*exe"], "application/x-msdownload": ["*exe", "*dll", "com", "bat", "*msi"], "application/x-msmediaview": ["mvb", "m13", "m14"], "application/x-msmetafile": ["*wmf", "*wmz", "*emf", "emz"], "application/x-msmoney": ["mny"], "application/x-mspublisher": ["pub"], "application/x-msschedule": ["scd"], "application/x-msterminal": ["trm"], "application/x-mswrite": ["wri"], "application/x-netcdf": ["nc", "cdf"], "application/x-ns-proxy-autoconfig": ["pac"], "application/x-nzb": ["nzb"], "application/x-perl": ["pl", "pm"], "application/x-pilot": ["*prc", "*pdb"], "application/x-pkcs12": ["p12", "pfx"], "application/x-pkcs7-certificates": ["p7b", "spc"], "application/x-pkcs7-certreqresp": ["p7r"], "application/x-rar-compressed": ["*rar"], "application/x-redhat-package-manager": ["rpm"], "application/x-research-info-systems": ["ris"], "application/x-sea": ["sea"], "application/x-sh": ["sh"], "application/x-shar": ["shar"], "application/x-shockwave-flash": ["swf"], "application/x-silverlight-app": ["xap"], "application/x-sql": ["sql"], "application/x-stuffit": ["sit"], "application/x-stuffitx": ["sitx"], "application/x-subrip": ["srt"], "application/x-sv4cpio": ["sv4cpio"], "application/x-sv4crc": ["sv4crc"], "application/x-t3vm-image": ["t3"], "application/x-tads": ["gam"], "application/x-tar": ["tar"], "application/x-tcl": ["tcl", "tk"], "application/x-tex": ["tex"], "application/x-tex-tfm": ["tfm"], "application/x-texinfo": ["texinfo", "texi"], "application/x-tgif": ["*obj"], "application/x-ustar": ["ustar"], "application/x-virtualbox-hdd": ["hdd"], "application/x-virtualbox-ova": ["ova"], "application/x-virtualbox-ovf": ["ovf"], "application/x-virtualbox-vbox": ["vbox"], "application/x-virtualbox-vbox-extpack": ["vbox-extpack"], "application/x-virtualbox-vdi": ["vdi"], "application/x-virtualbox-vhd": ["vhd"], "application/x-virtualbox-vmdk": ["vmdk"], "application/x-wais-source": ["src"], "application/x-web-app-manifest+json": ["webapp"], "application/x-x509-ca-cert": ["der", "crt", "pem"], "application/x-xfig": ["fig"], "application/x-xliff+xml": ["*xlf"], "application/x-xpinstall": ["xpi"], "application/x-xz": ["xz"], "application/x-zmachine": ["z1", "z2", "z3", "z4", "z5", "z6", "z7", "z8"], "audio/vnd.dece.audio": ["uva", "uvva"], "audio/vnd.digital-winds": ["eol"], "audio/vnd.dra": ["dra"], "audio/vnd.dts": ["dts"], "audio/vnd.dts.hd": ["dtshd"], "audio/vnd.lucent.voice": ["lvp"], "audio/vnd.ms-playready.media.pya": ["pya"], "audio/vnd.nuera.ecelp4800": ["ecelp4800"], "audio/vnd.nuera.ecelp7470": ["ecelp7470"], "audio/vnd.nuera.ecelp9600": ["ecelp9600"], "audio/vnd.rip": ["rip"], "audio/x-aac": ["aac"], "audio/x-aiff": ["aif", "aiff", "aifc"], "audio/x-caf": ["caf"], "audio/x-flac": ["flac"], "audio/x-m4a": ["*m4a"], "audio/x-matroska": ["mka"], "audio/x-mpegurl": ["m3u"], "audio/x-ms-wax": ["wax"], "audio/x-ms-wma": ["wma"], "audio/x-pn-realaudio": ["ram", "ra"], "audio/x-pn-realaudio-plugin": ["rmp"], "audio/x-realaudio": ["*ra"], "audio/x-wav": ["*wav"], "chemical/x-cdx": ["cdx"], "chemical/x-cif": ["cif"], "chemical/x-cmdf": ["cmdf"], "chemical/x-cml": ["cml"], "chemical/x-csml": ["csml"], "chemical/x-xyz": ["xyz"], "image/prs.btif": ["btif"], "image/prs.pti": ["pti"], "image/vnd.adobe.photoshop": ["psd"], "image/vnd.airzip.accelerator.azv": ["azv"], "image/vnd.dece.graphic": ["uvi", "uvvi", "uvg", "uvvg"], "image/vnd.djvu": ["djvu", "djv"], "image/vnd.dvb.subtitle": ["*sub"], "image/vnd.dwg": ["dwg"], "image/vnd.dxf": ["dxf"], "image/vnd.fastbidsheet": ["fbs"], "image/vnd.fpx": ["fpx"], "image/vnd.fst": ["fst"], "image/vnd.fujixerox.edmics-mmr": ["mmr"], "image/vnd.fujixerox.edmics-rlc": ["rlc"], "image/vnd.microsoft.icon": ["ico"], "image/vnd.ms-dds": ["dds"], "image/vnd.ms-modi": ["mdi"], "image/vnd.ms-photo": ["wdp"], "image/vnd.net-fpx": ["npx"], "image/vnd.pco.b16": ["b16"], "image/vnd.tencent.tap": ["tap"], "image/vnd.valve.source.texture": ["vtf"], "image/vnd.wap.wbmp": ["wbmp"], "image/vnd.xiff": ["xif"], "image/vnd.zbrush.pcx": ["pcx"], "image/x-3ds": ["3ds"], "image/x-cmu-raster": ["ras"], "image/x-cmx": ["cmx"], "image/x-freehand": ["fh", "fhc", "fh4", "fh5", "fh7"], "image/x-icon": ["*ico"], "image/x-jng": ["jng"], "image/x-mrsid-image": ["sid"], "image/x-ms-bmp": ["*bmp"], "image/x-pcx": ["*pcx"], "image/x-pict": ["pic", "pct"], "image/x-portable-anymap": ["pnm"], "image/x-portable-bitmap": ["pbm"], "image/x-portable-graymap": ["pgm"], "image/x-portable-pixmap": ["ppm"], "image/x-rgb": ["rgb"], "image/x-tga": ["tga"], "image/x-xbitmap": ["xbm"], "image/x-xpixmap": ["xpm"], "image/x-xwindowdump": ["xwd"], "message/vnd.wfa.wsc": ["wsc"], "model/vnd.collada+xml": ["dae"], "model/vnd.dwf": ["dwf"], "model/vnd.gdl": ["gdl"], "model/vnd.gtw": ["gtw"], "model/vnd.mts": ["mts"], "model/vnd.opengex": ["ogex"], "model/vnd.parasolid.transmit.binary": ["x_b"], "model/vnd.parasolid.transmit.text": ["x_t"], "model/vnd.sap.vds": ["vds"], "model/vnd.usdz+zip": ["usdz"], "model/vnd.valve.source.compiled-map": ["bsp"], "model/vnd.vtu": ["vtu"], "text/prs.lines.tag": ["dsc"], "text/vnd.curl": ["curl"], "text/vnd.curl.dcurl": ["dcurl"], "text/vnd.curl.mcurl": ["mcurl"], "text/vnd.curl.scurl": ["scurl"], "text/vnd.dvb.subtitle": ["sub"], "text/vnd.fly": ["fly"], "text/vnd.fmi.flexstor": ["flx"], "text/vnd.graphviz": ["gv"], "text/vnd.in3d.3dml": ["3dml"], "text/vnd.in3d.spot": ["spot"], "text/vnd.sun.j2me.app-descriptor": ["jad"], "text/vnd.wap.wml": ["wml"], "text/vnd.wap.wmlscript": ["wmls"], "text/x-asm": ["s", "asm"], "text/x-c": ["c", "cc", "cxx", "cpp", "h", "hh", "dic"], "text/x-component": ["htc"], "text/x-fortran": ["f", "for", "f77", "f90"], "text/x-handlebars-template": ["hbs"], "text/x-java-source": ["java"], "text/x-lua": ["lua"], "text/x-markdown": ["mkd"], "text/x-nfo": ["nfo"], "text/x-opml": ["opml"], "text/x-org": ["*org"], "text/x-pascal": ["p", "pas"], "text/x-processing": ["pde"], "text/x-sass": ["sass"], "text/x-scss": ["scss"], "text/x-setext": ["etx"], "text/x-sfv": ["sfv"], "text/x-suse-ymp": ["ymp"], "text/x-uuencode": ["uu"], "text/x-vcalendar": ["vcs"], "text/x-vcard": ["vcf"], "video/vnd.dece.hd": ["uvh", "uvvh"], "video/vnd.dece.mobile": ["uvm", "uvvm"], "video/vnd.dece.pd": ["uvp", "uvvp"], "video/vnd.dece.sd": ["uvs", "uvvs"], "video/vnd.dece.video": ["uvv", "uvvv"], "video/vnd.dvb.file": ["dvb"], "video/vnd.fvt": ["fvt"], "video/vnd.mpegurl": ["mxu", "m4u"], "video/vnd.ms-playready.media.pyv": ["pyv"], "video/vnd.uvvu.mp4": ["uvu", "uvvu"], "video/vnd.vivo": ["viv"], "video/x-f4v": ["f4v"], "video/x-fli": ["fli"], "video/x-flv": ["flv"], "video/x-m4v": ["m4v"], "video/x-matroska": ["mkv", "mk3d", "mks"], "video/x-mng": ["mng"], "video/x-ms-asf": ["asf", "asx"], "video/x-ms-vob": ["vob"], "video/x-ms-wm": ["wm"], "video/x-ms-wmv": ["wmv"], "video/x-ms-wmx": ["wmx"], "video/x-ms-wvx": ["wvx"], "video/x-msvideo": ["avi"], "video/x-sgi-movie": ["movie"], "video/x-smv": ["smv"], "x-conference/x-cooltalk": ["ice"] }; +}; +types$1.KVError = KVError; +var MethodNotAllowedError = class extends KVError { + constructor(message = `Not a valid request method`, status = 405) { + super(message, status); } -}); - -// node_modules/.pnpm/mime@3.0.0/node_modules/mime/index.js -var require_mime = __commonJS({ - "node_modules/.pnpm/mime@3.0.0/node_modules/mime/index.js"(exports, module) { - "use strict"; - var Mime = require_Mime(); - module.exports = new Mime(require_standard(), require_other()); +}; +types$1.MethodNotAllowedError = MethodNotAllowedError; +var NotFoundError = class extends KVError { + constructor(message = `Not Found`, status = 404) { + super(message, status); } -}); - -// node_modules/.pnpm/@cloudflare+kv-asset-handler@0.2.0/node_modules/@cloudflare/kv-asset-handler/dist/types.js -var require_types = __commonJS({ - "node_modules/.pnpm/@cloudflare+kv-asset-handler@0.2.0/node_modules/@cloudflare/kv-asset-handler/dist/types.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.InternalError = exports.NotFoundError = exports.MethodNotAllowedError = exports.KVError = void 0; - var KVError = class extends Error { - constructor(message, status = 500) { - super(message); - Object.setPrototypeOf(this, new.target.prototype); - this.name = KVError.name; - this.status = status; - } - }; - exports.KVError = KVError; - var MethodNotAllowedError2 = class extends KVError { - constructor(message = `Not a valid request method`, status = 405) { - super(message, status); - } - }; - exports.MethodNotAllowedError = MethodNotAllowedError2; - var NotFoundError2 = class extends KVError { - constructor(message = `Not Found`, status = 404) { - super(message, status); - } - }; - exports.NotFoundError = NotFoundError2; - var InternalError = class extends KVError { - constructor(message = `Internal Error in KV Asset Handler`, status = 500) { - super(message, status); - } - }; - exports.InternalError = InternalError; +}; +types$1.NotFoundError = NotFoundError; +var InternalError = class extends KVError { + constructor(message = `Internal Error in KV Asset Handler`, status = 500) { + super(message, status); } -}); - -// node_modules/.pnpm/@cloudflare+kv-asset-handler@0.2.0/node_modules/@cloudflare/kv-asset-handler/dist/index.js -var require_dist = __commonJS({ - "node_modules/.pnpm/@cloudflare+kv-asset-handler@0.2.0/node_modules/@cloudflare/kv-asset-handler/dist/index.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.InternalError = exports.NotFoundError = exports.MethodNotAllowedError = exports.serveSinglePageApp = exports.mapRequestToAsset = exports.getAssetFromKV = void 0; - var mime = require_mime(); - var types_1 = require_types(); - Object.defineProperty(exports, "MethodNotAllowedError", { enumerable: true, get: function() { - return types_1.MethodNotAllowedError; - } }); - Object.defineProperty(exports, "NotFoundError", { enumerable: true, get: function() { - return types_1.NotFoundError; - } }); - Object.defineProperty(exports, "InternalError", { enumerable: true, get: function() { - return types_1.InternalError; - } }); - var defaultCacheControl = { - browserTTL: null, - edgeTTL: 2 * 60 * 60 * 24, - bypassCache: false - }; - var parseStringAsObject = (maybeString) => typeof maybeString === "string" ? JSON.parse(maybeString) : maybeString; - var getAssetFromKVDefaultOptions = { - ASSET_NAMESPACE: typeof __STATIC_CONTENT !== "undefined" ? __STATIC_CONTENT : void 0, - ASSET_MANIFEST: typeof __STATIC_CONTENT_MANIFEST !== "undefined" ? parseStringAsObject(__STATIC_CONTENT_MANIFEST) : {}, - cacheControl: defaultCacheControl, - defaultMimeType: "text/plain", - defaultDocument: "index.html", - pathIsEncoded: false - }; - function assignOptions(options) { - return Object.assign({}, getAssetFromKVDefaultOptions, options); - } - var mapRequestToAsset = (request2, options) => { - options = assignOptions(options); - const parsedUrl = new URL(request2.url); - let pathname = parsedUrl.pathname; - if (pathname.endsWith("/")) { - pathname = pathname.concat(options.defaultDocument); - } else if (!mime.getType(pathname)) { - pathname = pathname.concat("/" + options.defaultDocument); - } - parsedUrl.pathname = pathname; - return new Request(parsedUrl.toString(), request2); - }; - exports.mapRequestToAsset = mapRequestToAsset; - function serveSinglePageApp(request2, options) { - options = assignOptions(options); - request2 = mapRequestToAsset(request2, options); - const parsedUrl = new URL(request2.url); - if (parsedUrl.pathname.endsWith(".html")) { - return new Request(`${parsedUrl.origin}/${options.defaultDocument}`, request2); - } else { - return request2; - } - } - exports.serveSinglePageApp = serveSinglePageApp; - var getAssetFromKV2 = async (event, options) => { - options = assignOptions(options); - const request2 = event.request; - const ASSET_NAMESPACE = options.ASSET_NAMESPACE; - const ASSET_MANIFEST = parseStringAsObject(options.ASSET_MANIFEST); - if (typeof ASSET_NAMESPACE === "undefined") { - throw new types_1.InternalError(`there is no KV namespace bound to the script`); - } - const rawPathKey = new URL(request2.url).pathname.replace(/^\/+/, ""); - let pathIsEncoded = options.pathIsEncoded; - let requestKey; - if (options.mapRequestToAsset) { - requestKey = options.mapRequestToAsset(request2); - } else if (ASSET_MANIFEST[rawPathKey]) { - requestKey = request2; - } else if (ASSET_MANIFEST[decodeURIComponent(rawPathKey)]) { +}; +types$1.InternalError = InternalError; +(function(exports) { + Object.defineProperty(exports, "__esModule", { value: true }); + exports.InternalError = exports.NotFoundError = exports.MethodNotAllowedError = exports.serveSinglePageApp = exports.mapRequestToAsset = exports.getAssetFromKV = void 0; + const mime$1 = mime; + const types_1 = types$1; + Object.defineProperty(exports, "MethodNotAllowedError", { enumerable: true, get: function() { + return types_1.MethodNotAllowedError; + } }); + Object.defineProperty(exports, "NotFoundError", { enumerable: true, get: function() { + return types_1.NotFoundError; + } }); + Object.defineProperty(exports, "InternalError", { enumerable: true, get: function() { + return types_1.InternalError; + } }); + const defaultCacheControl = { + browserTTL: null, + edgeTTL: 2 * 60 * 60 * 24, + bypassCache: false + }; + const parseStringAsObject = (maybeString) => typeof maybeString === "string" ? JSON.parse(maybeString) : maybeString; + const getAssetFromKVDefaultOptions = { + ASSET_NAMESPACE: typeof __STATIC_CONTENT !== "undefined" ? __STATIC_CONTENT : void 0, + ASSET_MANIFEST: typeof __STATIC_CONTENT_MANIFEST !== "undefined" ? parseStringAsObject(__STATIC_CONTENT_MANIFEST) : {}, + cacheControl: defaultCacheControl, + defaultMimeType: "text/plain", + defaultDocument: "index.html", + pathIsEncoded: false + }; + function assignOptions(options) { + return Object.assign({}, getAssetFromKVDefaultOptions, options); + } + const mapRequestToAsset = (request, options) => { + options = assignOptions(options); + const parsedUrl = new URL(request.url); + let pathname = parsedUrl.pathname; + if (pathname.endsWith("/")) { + pathname = pathname.concat(options.defaultDocument); + } else if (!mime$1.getType(pathname)) { + pathname = pathname.concat("/" + options.defaultDocument); + } + parsedUrl.pathname = pathname; + return new Request(parsedUrl.toString(), request); + }; + exports.mapRequestToAsset = mapRequestToAsset; + function serveSinglePageApp(request, options) { + options = assignOptions(options); + request = mapRequestToAsset(request, options); + const parsedUrl = new URL(request.url); + if (parsedUrl.pathname.endsWith(".html")) { + return new Request(`${parsedUrl.origin}/${options.defaultDocument}`, request); + } else { + return request; + } + } + exports.serveSinglePageApp = serveSinglePageApp; + const getAssetFromKV = async (event, options) => { + options = assignOptions(options); + const request = event.request; + const ASSET_NAMESPACE = options.ASSET_NAMESPACE; + const ASSET_MANIFEST = parseStringAsObject(options.ASSET_MANIFEST); + if (typeof ASSET_NAMESPACE === "undefined") { + throw new types_1.InternalError(`there is no KV namespace bound to the script`); + } + const rawPathKey = new URL(request.url).pathname.replace(/^\/+/, ""); + let pathIsEncoded = options.pathIsEncoded; + let requestKey; + if (options.mapRequestToAsset) { + requestKey = options.mapRequestToAsset(request); + } else if (ASSET_MANIFEST[rawPathKey]) { + requestKey = request; + } else if (ASSET_MANIFEST[decodeURIComponent(rawPathKey)]) { + pathIsEncoded = true; + requestKey = request; + } else { + const mappedRequest = mapRequestToAsset(request); + const mappedRawPathKey = new URL(mappedRequest.url).pathname.replace(/^\/+/, ""); + if (ASSET_MANIFEST[decodeURIComponent(mappedRawPathKey)]) { pathIsEncoded = true; - requestKey = request2; + requestKey = mappedRequest; } else { - const mappedRequest = mapRequestToAsset(request2); - const mappedRawPathKey = new URL(mappedRequest.url).pathname.replace(/^\/+/, ""); - if (ASSET_MANIFEST[decodeURIComponent(mappedRawPathKey)]) { - pathIsEncoded = true; - requestKey = mappedRequest; - } else { - requestKey = mapRequestToAsset(request2, options); - } - } - const SUPPORTED_METHODS = ["GET", "HEAD"]; - if (!SUPPORTED_METHODS.includes(requestKey.method)) { - throw new types_1.MethodNotAllowedError(`${requestKey.method} is not a valid request method`); - } - const parsedUrl = new URL(requestKey.url); - const pathname = pathIsEncoded ? decodeURIComponent(parsedUrl.pathname) : parsedUrl.pathname; - let pathKey = pathname.replace(/^\/+/, ""); - const cache = caches.default; - let mimeType = mime.getType(pathKey) || options.defaultMimeType; - if (mimeType.startsWith("text") || mimeType === "application/javascript") { - mimeType += "; charset=utf-8"; - } - let shouldEdgeCache = false; - if (typeof ASSET_MANIFEST !== "undefined") { - if (ASSET_MANIFEST[pathKey]) { - pathKey = ASSET_MANIFEST[pathKey]; - shouldEdgeCache = true; - } - } - let cacheKey = new Request(`${parsedUrl.origin}/${pathKey}`, request2); - const evalCacheOpts = (() => { - switch (typeof options.cacheControl) { - case "function": - return options.cacheControl(request2); - case "object": - return options.cacheControl; - default: - return defaultCacheControl; - } - })(); - const formatETag = (entityId = pathKey, validatorType = "strong") => { - if (!entityId) { - return ""; - } - switch (validatorType) { - case "weak": - if (!entityId.startsWith("W/")) { - return `W/${entityId}`; - } - return entityId; - case "strong": - if (entityId.startsWith(`W/"`)) { - entityId = entityId.replace("W/", ""); - } - if (!entityId.endsWith(`"`)) { - entityId = `"${entityId}"`; - } - return entityId; - default: - return ""; - } - }; - options.cacheControl = Object.assign({}, defaultCacheControl, evalCacheOpts); - if (options.cacheControl.bypassCache || options.cacheControl.edgeTTL === null || request2.method == "HEAD") { - shouldEdgeCache = false; + requestKey = mapRequestToAsset(request, options); } - const shouldSetBrowserCache = typeof options.cacheControl.browserTTL === "number"; - let response = null; - if (shouldEdgeCache) { - response = await cache.match(cacheKey); + } + const SUPPORTED_METHODS = ["GET", "HEAD"]; + if (!SUPPORTED_METHODS.includes(requestKey.method)) { + throw new types_1.MethodNotAllowedError(`${requestKey.method} is not a valid request method`); + } + const parsedUrl = new URL(requestKey.url); + const pathname = pathIsEncoded ? decodeURIComponent(parsedUrl.pathname) : parsedUrl.pathname; + let pathKey = pathname.replace(/^\/+/, ""); + const cache = caches.default; + let mimeType = mime$1.getType(pathKey) || options.defaultMimeType; + if (mimeType.startsWith("text") || mimeType === "application/javascript") { + mimeType += "; charset=utf-8"; + } + let shouldEdgeCache = false; + if (typeof ASSET_MANIFEST !== "undefined") { + if (ASSET_MANIFEST[pathKey]) { + pathKey = ASSET_MANIFEST[pathKey]; + shouldEdgeCache = true; } - if (response) { - if (response.status > 300 && response.status < 400) { - if (response.body && "cancel" in Object.getPrototypeOf(response.body)) { - response.body.cancel(); - } else { - } - response = new Response(null, response); - } else { - let opts = { - headers: new Headers(response.headers), - status: 0, - statusText: "" - }; - opts.headers.set("cf-cache-status", "HIT"); - if (response.status) { - opts.status = response.status; - opts.statusText = response.statusText; - } else if (opts.headers.has("Content-Range")) { - opts.status = 206; - opts.statusText = "Partial Content"; - } else { - opts.status = 200; - opts.statusText = "OK"; - } - response = new Response(response.body, opts); - } - } else { - const body = await ASSET_NAMESPACE.get(pathKey, "arrayBuffer"); - if (body === null) { - throw new types_1.NotFoundError(`could not find ${pathKey} in your content namespace`); - } - response = new Response(body); - if (shouldEdgeCache) { - response.headers.set("Accept-Ranges", "bytes"); - response.headers.set("Content-Length", body.length); - if (!response.headers.has("etag")) { - response.headers.set("etag", formatETag(pathKey, "strong")); - } - response.headers.set("Cache-Control", `max-age=${options.cacheControl.edgeTTL}`); - event.waitUntil(cache.put(cacheKey, response.clone())); - response.headers.set("CF-Cache-Status", "MISS"); - } - } - response.headers.set("Content-Type", mimeType); - if (response.status === 304) { - let etag = formatETag(response.headers.get("etag"), "strong"); - let ifNoneMatch = cacheKey.headers.get("if-none-match"); - let proxyCacheStatus = response.headers.get("CF-Cache-Status"); - if (etag) { - if (ifNoneMatch && ifNoneMatch === etag && proxyCacheStatus === "MISS") { - response.headers.set("CF-Cache-Status", "EXPIRED"); - } else { - response.headers.set("CF-Cache-Status", "REVALIDATED"); - } - response.headers.set("etag", formatETag(etag, "weak")); - } + } + let cacheKey = new Request(`${parsedUrl.origin}/${pathKey}`, request); + const evalCacheOpts = (() => { + switch (typeof options.cacheControl) { + case "function": + return options.cacheControl(request); + case "object": + return options.cacheControl; + default: + return defaultCacheControl; } - if (shouldSetBrowserCache) { - response.headers.set("Cache-Control", `max-age=${options.cacheControl.browserTTL}`); - } else { - response.headers.delete("Cache-Control"); + })(); + const formatETag = (entityId = pathKey, validatorType = "strong") => { + if (!entityId) { + return ""; } - return response; - }; - exports.getAssetFromKV = getAssetFromKV2; - } -}); - -// node_modules/.pnpm/cross-fetch@3.1.5/node_modules/cross-fetch/dist/browser-ponyfill.js -var require_browser_ponyfill = __commonJS({ - "node_modules/.pnpm/cross-fetch@3.1.5/node_modules/cross-fetch/dist/browser-ponyfill.js"(exports, module) { - var global = typeof self !== "undefined" ? self : exports; - var __self__ = function() { - function F() { - this.fetch = false; - this.DOMException = global.DOMException; - } - F.prototype = global; - return new F(); - }(); - (function(self2) { - var irrelevant = function(exports2) { - var support = { - searchParams: "URLSearchParams" in self2, - iterable: "Symbol" in self2 && "iterator" in Symbol, - blob: "FileReader" in self2 && "Blob" in self2 && function() { - try { - new Blob(); - return true; - } catch (e) { - return false; - } - }(), - formData: "FormData" in self2, - arrayBuffer: "ArrayBuffer" in self2 - }; - function isDataView(obj) { - return obj && DataView.prototype.isPrototypeOf(obj); - } - if (support.arrayBuffer) { - var viewClasses = [ - "[object Int8Array]", - "[object Uint8Array]", - "[object Uint8ClampedArray]", - "[object Int16Array]", - "[object Uint16Array]", - "[object Int32Array]", - "[object Uint32Array]", - "[object Float32Array]", - "[object Float64Array]" - ]; - var isArrayBufferView = ArrayBuffer.isView || function(obj) { - return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1; - }; - } - function normalizeName(name) { - if (typeof name !== "string") { - name = String(name); - } - if (/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(name)) { - throw new TypeError("Invalid character in header field name"); - } - return name.toLowerCase(); - } - function normalizeValue(value) { - if (typeof value !== "string") { - value = String(value); - } - return value; - } - function iteratorFor(items) { - var iterator = { - next: function() { - var value = items.shift(); - return { done: value === void 0, value }; - } - }; - if (support.iterable) { - iterator[Symbol.iterator] = function() { - return iterator; - }; - } - return iterator; - } - function Headers2(headers) { - this.map = {}; - if (headers instanceof Headers2) { - headers.forEach(function(value, name) { - this.append(name, value); - }, this); - } else if (Array.isArray(headers)) { - headers.forEach(function(header) { - this.append(header[0], header[1]); - }, this); - } else if (headers) { - Object.getOwnPropertyNames(headers).forEach(function(name) { - this.append(name, headers[name]); - }, this); - } - } - Headers2.prototype.append = function(name, value) { - name = normalizeName(name); - value = normalizeValue(value); - var oldValue = this.map[name]; - this.map[name] = oldValue ? oldValue + ", " + value : value; - }; - Headers2.prototype["delete"] = function(name) { - delete this.map[normalizeName(name)]; - }; - Headers2.prototype.get = function(name) { - name = normalizeName(name); - return this.has(name) ? this.map[name] : null; - }; - Headers2.prototype.has = function(name) { - return this.map.hasOwnProperty(normalizeName(name)); - }; - Headers2.prototype.set = function(name, value) { - this.map[normalizeName(name)] = normalizeValue(value); - }; - Headers2.prototype.forEach = function(callback, thisArg) { - for (var name in this.map) { - if (this.map.hasOwnProperty(name)) { - callback.call(thisArg, this.map[name], name, this); - } + switch (validatorType) { + case "weak": + if (!entityId.startsWith("W/")) { + return `W/${entityId}`; } - }; - Headers2.prototype.keys = function() { - var items = []; - this.forEach(function(value, name) { - items.push(name); - }); - return iteratorFor(items); - }; - Headers2.prototype.values = function() { - var items = []; - this.forEach(function(value) { - items.push(value); - }); - return iteratorFor(items); - }; - Headers2.prototype.entries = function() { - var items = []; - this.forEach(function(value, name) { - items.push([name, value]); - }); - return iteratorFor(items); - }; - if (support.iterable) { - Headers2.prototype[Symbol.iterator] = Headers2.prototype.entries; - } - function consumed(body) { - if (body.bodyUsed) { - return Promise.reject(new TypeError("Already read")); - } - body.bodyUsed = true; - } - function fileReaderReady(reader) { - return new Promise(function(resolve, reject2) { - reader.onload = function() { - resolve(reader.result); - }; - reader.onerror = function() { - reject2(reader.error); - }; - }); - } - function readBlobAsArrayBuffer(blob) { - var reader = new FileReader(); - var promise = fileReaderReady(reader); - reader.readAsArrayBuffer(blob); - return promise; - } - function readBlobAsText(blob) { - var reader = new FileReader(); - var promise = fileReaderReady(reader); - reader.readAsText(blob); - return promise; - } - function readArrayBufferAsText(buf) { - var view = new Uint8Array(buf); - var chars = new Array(view.length); - for (var i = 0; i < view.length; i++) { - chars[i] = String.fromCharCode(view[i]); - } - return chars.join(""); - } - function bufferClone(buf) { - if (buf.slice) { - return buf.slice(0); - } else { - var view = new Uint8Array(buf.byteLength); - view.set(new Uint8Array(buf)); - return view.buffer; - } - } - function Body2() { - this.bodyUsed = false; - this._initBody = function(body) { - this._bodyInit = body; - if (!body) { - this._bodyText = ""; - } else if (typeof body === "string") { - this._bodyText = body; - } else if (support.blob && Blob.prototype.isPrototypeOf(body)) { - this._bodyBlob = body; - } else if (support.formData && FormData.prototype.isPrototypeOf(body)) { - this._bodyFormData = body; - } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) { - this._bodyText = body.toString(); - } else if (support.arrayBuffer && support.blob && isDataView(body)) { - this._bodyArrayBuffer = bufferClone(body.buffer); - this._bodyInit = new Blob([this._bodyArrayBuffer]); - } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) { - this._bodyArrayBuffer = bufferClone(body); - } else { - this._bodyText = body = Object.prototype.toString.call(body); - } - if (!this.headers.get("content-type")) { - if (typeof body === "string") { - this.headers.set("content-type", "text/plain;charset=UTF-8"); - } else if (this._bodyBlob && this._bodyBlob.type) { - this.headers.set("content-type", this._bodyBlob.type); - } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) { - this.headers.set("content-type", "application/x-www-form-urlencoded;charset=UTF-8"); - } - } - }; - if (support.blob) { - this.blob = function() { - var rejected = consumed(this); - if (rejected) { - return rejected; - } - if (this._bodyBlob) { - return Promise.resolve(this._bodyBlob); - } else if (this._bodyArrayBuffer) { - return Promise.resolve(new Blob([this._bodyArrayBuffer])); - } else if (this._bodyFormData) { - throw new Error("could not read FormData body as blob"); - } else { - return Promise.resolve(new Blob([this._bodyText])); - } - }; - this.arrayBuffer = function() { - if (this._bodyArrayBuffer) { - return consumed(this) || Promise.resolve(this._bodyArrayBuffer); - } else { - return this.blob().then(readBlobAsArrayBuffer); - } - }; - } - this.text = function() { - var rejected = consumed(this); - if (rejected) { - return rejected; - } - if (this._bodyBlob) { - return readBlobAsText(this._bodyBlob); - } else if (this._bodyArrayBuffer) { - return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer)); - } else if (this._bodyFormData) { - throw new Error("could not read FormData body as text"); - } else { - return Promise.resolve(this._bodyText); - } - }; - if (support.formData) { - this.formData = function() { - return this.text().then(decode); - }; - } - this.json = function() { - return this.text().then(JSON.parse); - }; - return this; - } - var methods = ["DELETE", "GET", "HEAD", "OPTIONS", "POST", "PUT"]; - function normalizeMethod(method) { - var upcased = method.toUpperCase(); - return methods.indexOf(upcased) > -1 ? upcased : method; - } - function Request3(input, options) { - options = options || {}; - var body = options.body; - if (input instanceof Request3) { - if (input.bodyUsed) { - throw new TypeError("Already read"); - } - this.url = input.url; - this.credentials = input.credentials; - if (!options.headers) { - this.headers = new Headers2(input.headers); - } - this.method = input.method; - this.mode = input.mode; - this.signal = input.signal; - if (!body && input._bodyInit != null) { - body = input._bodyInit; - input.bodyUsed = true; - } - } else { - this.url = String(input); - } - this.credentials = options.credentials || this.credentials || "same-origin"; - if (options.headers || !this.headers) { - this.headers = new Headers2(options.headers); + return entityId; + case "strong": + if (entityId.startsWith(`W/"`)) { + entityId = entityId.replace("W/", ""); } - this.method = normalizeMethod(options.method || this.method || "GET"); - this.mode = options.mode || this.mode || null; - this.signal = options.signal || this.signal; - this.referrer = null; - if ((this.method === "GET" || this.method === "HEAD") && body) { - throw new TypeError("Body not allowed for GET or HEAD requests"); + if (!entityId.endsWith(`"`)) { + entityId = `"${entityId}"`; } - this._initBody(body); - } - Request3.prototype.clone = function() { - return new Request3(this, { body: this._bodyInit }); - }; - function decode(body) { - var form = new FormData(); - body.trim().split("&").forEach(function(bytes) { - if (bytes) { - var split = bytes.split("="); - var name = split.shift().replace(/\+/g, " "); - var value = split.join("=").replace(/\+/g, " "); - form.append(decodeURIComponent(name), decodeURIComponent(value)); - } - }); - return form; - } - function parseHeaders(rawHeaders) { - var headers = new Headers2(); - var preProcessedHeaders = rawHeaders.replace(/\r?\n[\t ]+/g, " "); - preProcessedHeaders.split(/\r?\n/).forEach(function(line) { - var parts = line.split(":"); - var key = parts.shift().trim(); - if (key) { - var value = parts.join(":").trim(); - headers.append(key, value); - } - }); - return headers; + return entityId; + default: + return ""; + } + }; + options.cacheControl = Object.assign({}, defaultCacheControl, evalCacheOpts); + if (options.cacheControl.bypassCache || options.cacheControl.edgeTTL === null || request.method == "HEAD") { + shouldEdgeCache = false; + } + const shouldSetBrowserCache = typeof options.cacheControl.browserTTL === "number"; + let response = null; + if (shouldEdgeCache) { + response = await cache.match(cacheKey); + } + if (response) { + if (response.status > 300 && response.status < 400) { + if (response.body && "cancel" in Object.getPrototypeOf(response.body)) { + response.body.cancel(); } - Body2.call(Request3.prototype); - function Response3(bodyInit, options) { - if (!options) { - options = {}; - } - this.type = "default"; - this.status = options.status === void 0 ? 200 : options.status; - this.ok = this.status >= 200 && this.status < 300; - this.statusText = "statusText" in options ? options.statusText : "OK"; - this.headers = new Headers2(options.headers); - this.url = options.url || ""; - this._initBody(bodyInit); - } - Body2.call(Response3.prototype); - Response3.prototype.clone = function() { - return new Response3(this._bodyInit, { - status: this.status, - statusText: this.statusText, - headers: new Headers2(this.headers), - url: this.url - }); - }; - Response3.error = function() { - var response = new Response3(null, { status: 0, statusText: "" }); - response.type = "error"; - return response; - }; - var redirectStatuses = [301, 302, 303, 307, 308]; - Response3.redirect = function(url, status) { - if (redirectStatuses.indexOf(status) === -1) { - throw new RangeError("Invalid status code"); - } - return new Response3(null, { status, headers: { location: url } }); + response = new Response(null, response); + } else { + let opts = { + headers: new Headers(response.headers), + status: 0, + statusText: "" }; - exports2.DOMException = self2.DOMException; - try { - new exports2.DOMException(); - } catch (err) { - exports2.DOMException = function(message, name) { - this.message = message; - this.name = name; - var error = Error(message); - this.stack = error.stack; - }; - exports2.DOMException.prototype = Object.create(Error.prototype); - exports2.DOMException.prototype.constructor = exports2.DOMException; - } - function fetch3(input, init) { - return new Promise(function(resolve, reject2) { - var request2 = new Request3(input, init); - if (request2.signal && request2.signal.aborted) { - return reject2(new exports2.DOMException("Aborted", "AbortError")); - } - var xhr = new XMLHttpRequest(); - function abortXhr() { - xhr.abort(); - } - xhr.onload = function() { - var options = { - status: xhr.status, - statusText: xhr.statusText, - headers: parseHeaders(xhr.getAllResponseHeaders() || "") - }; - options.url = "responseURL" in xhr ? xhr.responseURL : options.headers.get("X-Request-URL"); - var body = "response" in xhr ? xhr.response : xhr.responseText; - resolve(new Response3(body, options)); - }; - xhr.onerror = function() { - reject2(new TypeError("Network request failed")); - }; - xhr.ontimeout = function() { - reject2(new TypeError("Network request failed")); - }; - xhr.onabort = function() { - reject2(new exports2.DOMException("Aborted", "AbortError")); - }; - xhr.open(request2.method, request2.url, true); - if (request2.credentials === "include") { - xhr.withCredentials = true; - } else if (request2.credentials === "omit") { - xhr.withCredentials = false; - } - if ("responseType" in xhr && support.blob) { - xhr.responseType = "blob"; - } - request2.headers.forEach(function(value, name) { - xhr.setRequestHeader(name, value); - }); - if (request2.signal) { - request2.signal.addEventListener("abort", abortXhr); - xhr.onreadystatechange = function() { - if (xhr.readyState === 4) { - request2.signal.removeEventListener("abort", abortXhr); - } - }; - } - xhr.send(typeof request2._bodyInit === "undefined" ? null : request2._bodyInit); - }); + opts.headers.set("cf-cache-status", "HIT"); + if (response.status) { + opts.status = response.status; + opts.statusText = response.statusText; + } else if (opts.headers.has("Content-Range")) { + opts.status = 206; + opts.statusText = "Partial Content"; + } else { + opts.status = 200; + opts.statusText = "OK"; } - fetch3.polyfill = true; - if (!self2.fetch) { - self2.fetch = fetch3; - self2.Headers = Headers2; - self2.Request = Request3; - self2.Response = Response3; - } - exports2.Headers = Headers2; - exports2.Request = Request3; - exports2.Response = Response3; - exports2.fetch = fetch3; - Object.defineProperty(exports2, "__esModule", { value: true }); - return exports2; - }({}); - })(__self__); - __self__.fetch.ponyfill = true; - delete __self__.fetch.polyfill; - var ctx = __self__; - exports = ctx.fetch; - exports.default = ctx.fetch; - exports.fetch = ctx.fetch; - exports.Headers = ctx.Headers; - exports.Request = ctx.Request; - exports.Response = ctx.Response; - module.exports = exports; - } -}); - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/jsutils/isObjectLike.js -var require_isObjectLike = __commonJS({ - "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/jsutils/isObjectLike.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.isObjectLike = isObjectLike2; - function isObjectLike2(value) { - return typeof value == "object" && value !== null; - } - } -}); - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/jsutils/invariant.js -var require_invariant = __commonJS({ - "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/jsutils/invariant.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.invariant = invariant3; - function invariant3(condition, message) { - const booleanCondition = Boolean(condition); - if (!booleanCondition) { - throw new Error( - message != null ? message : "Unexpected invariant triggered." - ); + response = new Response(response.body, opts); } - } - } -}); - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/location.js -var require_location = __commonJS({ - "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/location.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.getLocation = getLocation2; - var _invariant = require_invariant(); - var LineRegExp2 = /\r\n|[\n\r]/g; - function getLocation2(source, position) { - let lastLineStart = 0; - let line = 1; - for (const match of source.body.matchAll(LineRegExp2)) { - typeof match.index === "number" || (0, _invariant.invariant)(false); - if (match.index >= position) { - break; + } else { + const body = await ASSET_NAMESPACE.get(pathKey, "arrayBuffer"); + if (body === null) { + throw new types_1.NotFoundError(`could not find ${pathKey} in your content namespace`); + } + response = new Response(body); + if (shouldEdgeCache) { + response.headers.set("Accept-Ranges", "bytes"); + response.headers.set("Content-Length", body.length); + if (!response.headers.has("etag")) { + response.headers.set("etag", formatETag(pathKey, "strong")); + } + response.headers.set("Cache-Control", `max-age=${options.cacheControl.edgeTTL}`); + event.waitUntil(cache.put(cacheKey, response.clone())); + response.headers.set("CF-Cache-Status", "MISS"); + } + } + response.headers.set("Content-Type", mimeType); + if (response.status === 304) { + let etag = formatETag(response.headers.get("etag"), "strong"); + let ifNoneMatch = cacheKey.headers.get("if-none-match"); + let proxyCacheStatus = response.headers.get("CF-Cache-Status"); + if (etag) { + if (ifNoneMatch && ifNoneMatch === etag && proxyCacheStatus === "MISS") { + response.headers.set("CF-Cache-Status", "EXPIRED"); + } else { + response.headers.set("CF-Cache-Status", "REVALIDATED"); } - lastLineStart = match.index + match[0].length; - line += 1; + response.headers.set("etag", formatETag(etag, "weak")); } - return { - line, - column: position + 1 - lastLineStart - }; - } - } -}); - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/printLocation.js -var require_printLocation = __commonJS({ - "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/printLocation.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.printLocation = printLocation2; - exports.printSourceLocation = printSourceLocation2; - var _location = require_location(); - function printLocation2(location) { - return printSourceLocation2( - location.source, - (0, _location.getLocation)(location.source, location.start) - ); } - function printSourceLocation2(source, sourceLocation) { - const firstLineColumnOffset = source.locationOffset.column - 1; - const body = "".padStart(firstLineColumnOffset) + source.body; - const lineIndex = sourceLocation.line - 1; - const lineOffset = source.locationOffset.line - 1; - const lineNum = sourceLocation.line + lineOffset; - const columnOffset = sourceLocation.line === 1 ? firstLineColumnOffset : 0; - const columnNum = sourceLocation.column + columnOffset; - const locationStr = `${source.name}:${lineNum}:${columnNum} -`; - const lines = body.split(/\r\n|[\n\r]/g); - const locationLine = lines[lineIndex]; - if (locationLine.length > 120) { - const subLineIndex = Math.floor(columnNum / 80); - const subLineColumnNum = columnNum % 80; - const subLines = []; - for (let i = 0; i < locationLine.length; i += 80) { - subLines.push(locationLine.slice(i, i + 80)); - } - return locationStr + printPrefixedLines2([ - [`${lineNum} |`, subLines[0]], - ...subLines.slice(1, subLineIndex + 1).map((subLine) => ["|", subLine]), - ["|", "^".padStart(subLineColumnNum)], - ["|", subLines[subLineIndex + 1]] - ]); - } - return locationStr + printPrefixedLines2([ - [`${lineNum - 1} |`, lines[lineIndex - 1]], - [`${lineNum} |`, locationLine], - ["|", "^".padStart(columnNum)], - [`${lineNum + 1} |`, lines[lineIndex + 1]] - ]); - } - function printPrefixedLines2(lines) { - const existingLines = lines.filter(([_, line]) => line !== void 0); - const padLen = Math.max(...existingLines.map(([prefix2]) => prefix2.length)); - return existingLines.map(([prefix2, line]) => prefix2.padStart(padLen) + (line ? " " + line : "")).join("\n"); + if (shouldSetBrowserCache) { + response.headers.set("Cache-Control", `max-age=${options.cacheControl.browserTTL}`); + } else { + response.headers.delete("Cache-Control"); } - } -}); - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/error/GraphQLError.js -var require_GraphQLError = __commonJS({ - "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/error/GraphQLError.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.GraphQLError = void 0; - exports.formatError = formatError4; - exports.printError = printError2; - var _isObjectLike = require_isObjectLike(); - var _location = require_location(); - var _printLocation = require_printLocation(); - function toNormalizedOptions2(args) { - const firstArg = args[0]; - if (firstArg == null || "kind" in firstArg || "length" in firstArg) { - return { - nodes: firstArg, - source: args[1], - positions: args[2], - path: args[3], - originalError: args[4], - extensions: args[5] - }; - } - return firstArg; - } - var GraphQLError2 = class extends Error { - constructor(message, ...rawArgs) { - var _this$nodes, _nodeLocations$, _ref; - const { nodes, source, positions, path, originalError, extensions } = toNormalizedOptions2(rawArgs); - super(message); - this.name = "GraphQLError"; - this.path = path !== null && path !== void 0 ? path : void 0; - this.originalError = originalError !== null && originalError !== void 0 ? originalError : void 0; - this.nodes = undefinedIfEmpty2( - Array.isArray(nodes) ? nodes : nodes ? [nodes] : void 0 - ); - const nodeLocations = undefinedIfEmpty2( - (_this$nodes = this.nodes) === null || _this$nodes === void 0 ? void 0 : _this$nodes.map((node) => node.loc).filter((loc) => loc != null) - ); - this.source = source !== null && source !== void 0 ? source : nodeLocations === null || nodeLocations === void 0 ? void 0 : (_nodeLocations$ = nodeLocations[0]) === null || _nodeLocations$ === void 0 ? void 0 : _nodeLocations$.source; - this.positions = positions !== null && positions !== void 0 ? positions : nodeLocations === null || nodeLocations === void 0 ? void 0 : nodeLocations.map((loc) => loc.start); - this.locations = positions && source ? positions.map((pos) => (0, _location.getLocation)(source, pos)) : nodeLocations === null || nodeLocations === void 0 ? void 0 : nodeLocations.map( - (loc) => (0, _location.getLocation)(loc.source, loc.start) - ); - const originalExtensions = (0, _isObjectLike.isObjectLike)( - originalError === null || originalError === void 0 ? void 0 : originalError.extensions - ) ? originalError === null || originalError === void 0 ? void 0 : originalError.extensions : void 0; - this.extensions = (_ref = extensions !== null && extensions !== void 0 ? extensions : originalExtensions) !== null && _ref !== void 0 ? _ref : /* @__PURE__ */ Object.create(null); - Object.defineProperties(this, { - message: { - writable: true, - enumerable: true - }, - name: { - enumerable: false - }, - nodes: { - enumerable: false - }, - source: { - enumerable: false - }, - positions: { - enumerable: false - }, - originalError: { - enumerable: false - } - }); - if (originalError !== null && originalError !== void 0 && originalError.stack) { - Object.defineProperty(this, "stack", { - value: originalError.stack, - writable: true, - configurable: true - }); - } else if (Error.captureStackTrace) { - Error.captureStackTrace(this, GraphQLError2); - } else { - Object.defineProperty(this, "stack", { - value: Error().stack, - writable: true, - configurable: true - }); - } - } - get [Symbol.toStringTag]() { - return "GraphQLError"; - } - toString() { - let output = this.message; - if (this.nodes) { - for (const node of this.nodes) { - if (node.loc) { - output += "\n\n" + (0, _printLocation.printLocation)(node.loc); - } - } - } else if (this.source && this.locations) { - for (const location of this.locations) { - output += "\n\n" + (0, _printLocation.printSourceLocation)(this.source, location); - } - } - return output; - } - toJSON() { - const formattedError = { - message: this.message - }; - if (this.locations != null) { - formattedError.locations = this.locations; - } - if (this.path != null) { - formattedError.path = this.path; - } - if (this.extensions != null && Object.keys(this.extensions).length > 0) { - formattedError.extensions = this.extensions; - } - return formattedError; - } - }; - exports.GraphQLError = GraphQLError2; - function undefinedIfEmpty2(array) { - return array === void 0 || array.length === 0 ? void 0 : array; - } - function printError2(error) { - return error.toString(); + return response; + }; + exports.getAssetFromKV = getAssetFromKV; +})(dist$1); +var manifest = { + "/": [ + { + type: "script", + href: "/assets/index.f572890e.js" + }, + { + type: "script", + href: "/assets/entry-client.0e635511.js" + }, + { + type: "style", + href: "/assets/entry-client.17ea8755.css" } - function formatError4(error) { - return error.toJSON(); + ], + "entry-client": [ + { + type: "script", + href: "/assets/entry-client.0e635511.js" + }, + { + type: "style", + href: "/assets/entry-client.17ea8755.css" } - } -}); - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/error/syntaxError.js -var require_syntaxError = __commonJS({ - "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/error/syntaxError.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true + ], + "index.html": [] +}; +var ERROR = Symbol("error"); +var BRANCH = Symbol("branch"); +function castError(err) { + if (err instanceof Error || typeof err === "string") + return err; + return new Error("Unknown error"); +} +function handleError$1(err) { + err = castError(err); + const fns = lookup(Owner, ERROR); + if (!fns) + throw err; + for (const f of fns) + f(err); +} +var UNOWNED = { + context: null, + owner: null +}; +var Owner = null; +function createRoot(fn, detachedOwner) { + detachedOwner && (Owner = detachedOwner); + const owner = Owner, root = fn.length === 0 ? UNOWNED : { + context: null, + owner + }; + Owner = root; + let result; + try { + result = fn(() => { }); - exports.syntaxError = syntaxError2; - var _GraphQLError = require_GraphQLError(); - function syntaxError2(source, position, description) { - return new _GraphQLError.GraphQLError(`Syntax Error: ${description}`, { - source, - positions: [position] - }); - } + } catch (err) { + handleError$1(err); + } finally { + Owner = owner; } -}); - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/ast.js -var require_ast = __commonJS({ - "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/ast.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.Token = exports.QueryDocumentKeys = exports.OperationTypeNode = exports.Location = void 0; - exports.isNode = isNode2; - var Location2 = class { - constructor(startToken, endToken, source) { - this.start = startToken.start; - this.end = endToken.end; - this.startToken = startToken; - this.endToken = endToken; - this.source = source; - } - get [Symbol.toStringTag]() { - return "Location"; - } - toJSON() { - return { - start: this.start, - end: this.end - }; - } - }; - exports.Location = Location2; - var Token2 = class { - constructor(kind, start, end, line, column, value) { - this.kind = kind; - this.start = start; - this.end = end; - this.line = line; - this.column = column; - this.value = value; - this.prev = null; - this.next = null; - } - get [Symbol.toStringTag]() { - return "Token"; - } - toJSON() { - return { - kind: this.kind, - value: this.value, - line: this.line, - column: this.column - }; - } - }; - exports.Token = Token2; - var QueryDocumentKeys2 = { - Name: [], - Document: ["definitions"], - OperationDefinition: [ - "name", - "variableDefinitions", - "directives", - "selectionSet" - ], - VariableDefinition: ["variable", "type", "defaultValue", "directives"], - Variable: ["name"], - SelectionSet: ["selections"], - Field: ["alias", "name", "arguments", "directives", "selectionSet"], - Argument: ["name", "value"], - FragmentSpread: ["name", "directives"], - InlineFragment: ["typeCondition", "directives", "selectionSet"], - FragmentDefinition: [ - "name", - "variableDefinitions", - "typeCondition", - "directives", - "selectionSet" - ], - IntValue: [], - FloatValue: [], - StringValue: [], - BooleanValue: [], - NullValue: [], - EnumValue: [], - ListValue: ["values"], - ObjectValue: ["fields"], - ObjectField: ["name", "value"], - Directive: ["name", "arguments"], - NamedType: ["name"], - ListType: ["type"], - NonNullType: ["type"], - SchemaDefinition: ["description", "directives", "operationTypes"], - OperationTypeDefinition: ["type"], - ScalarTypeDefinition: ["description", "name", "directives"], - ObjectTypeDefinition: [ - "description", - "name", - "interfaces", - "directives", - "fields" - ], - FieldDefinition: ["description", "name", "arguments", "type", "directives"], - InputValueDefinition: [ - "description", - "name", - "type", - "defaultValue", - "directives" - ], - InterfaceTypeDefinition: [ - "description", - "name", - "interfaces", - "directives", - "fields" - ], - UnionTypeDefinition: ["description", "name", "directives", "types"], - EnumTypeDefinition: ["description", "name", "directives", "values"], - EnumValueDefinition: ["description", "name", "directives"], - InputObjectTypeDefinition: ["description", "name", "directives", "fields"], - DirectiveDefinition: ["description", "name", "arguments", "locations"], - SchemaExtension: ["directives", "operationTypes"], - ScalarTypeExtension: ["name", "directives"], - ObjectTypeExtension: ["name", "interfaces", "directives", "fields"], - InterfaceTypeExtension: ["name", "interfaces", "directives", "fields"], - UnionTypeExtension: ["name", "directives", "types"], - EnumTypeExtension: ["name", "directives", "values"], - InputObjectTypeExtension: ["name", "directives", "fields"] - }; - exports.QueryDocumentKeys = QueryDocumentKeys2; - var kindValues2 = new Set(Object.keys(QueryDocumentKeys2)); - function isNode2(maybeNode) { - const maybeKind = maybeNode === null || maybeNode === void 0 ? void 0 : maybeNode.kind; - return typeof maybeKind === "string" && kindValues2.has(maybeKind); - } - var OperationTypeNode2; - exports.OperationTypeNode = OperationTypeNode2; - (function(OperationTypeNode3) { - OperationTypeNode3["QUERY"] = "query"; - OperationTypeNode3["MUTATION"] = "mutation"; - OperationTypeNode3["SUBSCRIPTION"] = "subscription"; - })(OperationTypeNode2 || (exports.OperationTypeNode = OperationTypeNode2 = {})); + return result; +} +function createSignal(value, options) { + return [() => value, (v) => { + return value = typeof v === "function" ? v(value) : v; + }]; +} +function createComputed(fn, value) { + Owner = { + owner: Owner, + context: null + }; + try { + fn(value); + } catch (err) { + handleError$1(err); + } finally { + Owner = Owner.owner; } -}); - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/directiveLocation.js -var require_directiveLocation = __commonJS({ - "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/directiveLocation.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.DirectiveLocation = void 0; - var DirectiveLocation2; - exports.DirectiveLocation = DirectiveLocation2; - (function(DirectiveLocation3) { - DirectiveLocation3["QUERY"] = "QUERY"; - DirectiveLocation3["MUTATION"] = "MUTATION"; - DirectiveLocation3["SUBSCRIPTION"] = "SUBSCRIPTION"; - DirectiveLocation3["FIELD"] = "FIELD"; - DirectiveLocation3["FRAGMENT_DEFINITION"] = "FRAGMENT_DEFINITION"; - DirectiveLocation3["FRAGMENT_SPREAD"] = "FRAGMENT_SPREAD"; - DirectiveLocation3["INLINE_FRAGMENT"] = "INLINE_FRAGMENT"; - DirectiveLocation3["VARIABLE_DEFINITION"] = "VARIABLE_DEFINITION"; - DirectiveLocation3["SCHEMA"] = "SCHEMA"; - DirectiveLocation3["SCALAR"] = "SCALAR"; - DirectiveLocation3["OBJECT"] = "OBJECT"; - DirectiveLocation3["FIELD_DEFINITION"] = "FIELD_DEFINITION"; - DirectiveLocation3["ARGUMENT_DEFINITION"] = "ARGUMENT_DEFINITION"; - DirectiveLocation3["INTERFACE"] = "INTERFACE"; - DirectiveLocation3["UNION"] = "UNION"; - DirectiveLocation3["ENUM"] = "ENUM"; - DirectiveLocation3["ENUM_VALUE"] = "ENUM_VALUE"; - DirectiveLocation3["INPUT_OBJECT"] = "INPUT_OBJECT"; - DirectiveLocation3["INPUT_FIELD_DEFINITION"] = "INPUT_FIELD_DEFINITION"; - })(DirectiveLocation2 || (exports.DirectiveLocation = DirectiveLocation2 = {})); +} +var createRenderEffect = createComputed; +function createMemo(fn, value) { + Owner = { + owner: Owner, + context: null + }; + let v; + try { + v = fn(value); + } catch (err) { + handleError$1(err); + } finally { + Owner = Owner.owner; } -}); - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/kinds.js -var require_kinds = __commonJS({ - "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/kinds.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.Kind = void 0; - var Kind2; - exports.Kind = Kind2; - (function(Kind3) { - Kind3["NAME"] = "Name"; - Kind3["DOCUMENT"] = "Document"; - Kind3["OPERATION_DEFINITION"] = "OperationDefinition"; - Kind3["VARIABLE_DEFINITION"] = "VariableDefinition"; - Kind3["SELECTION_SET"] = "SelectionSet"; - Kind3["FIELD"] = "Field"; - Kind3["ARGUMENT"] = "Argument"; - Kind3["FRAGMENT_SPREAD"] = "FragmentSpread"; - Kind3["INLINE_FRAGMENT"] = "InlineFragment"; - Kind3["FRAGMENT_DEFINITION"] = "FragmentDefinition"; - Kind3["VARIABLE"] = "Variable"; - Kind3["INT"] = "IntValue"; - Kind3["FLOAT"] = "FloatValue"; - Kind3["STRING"] = "StringValue"; - Kind3["BOOLEAN"] = "BooleanValue"; - Kind3["NULL"] = "NullValue"; - Kind3["ENUM"] = "EnumValue"; - Kind3["LIST"] = "ListValue"; - Kind3["OBJECT"] = "ObjectValue"; - Kind3["OBJECT_FIELD"] = "ObjectField"; - Kind3["DIRECTIVE"] = "Directive"; - Kind3["NAMED_TYPE"] = "NamedType"; - Kind3["LIST_TYPE"] = "ListType"; - Kind3["NON_NULL_TYPE"] = "NonNullType"; - Kind3["SCHEMA_DEFINITION"] = "SchemaDefinition"; - Kind3["OPERATION_TYPE_DEFINITION"] = "OperationTypeDefinition"; - Kind3["SCALAR_TYPE_DEFINITION"] = "ScalarTypeDefinition"; - Kind3["OBJECT_TYPE_DEFINITION"] = "ObjectTypeDefinition"; - Kind3["FIELD_DEFINITION"] = "FieldDefinition"; - Kind3["INPUT_VALUE_DEFINITION"] = "InputValueDefinition"; - Kind3["INTERFACE_TYPE_DEFINITION"] = "InterfaceTypeDefinition"; - Kind3["UNION_TYPE_DEFINITION"] = "UnionTypeDefinition"; - Kind3["ENUM_TYPE_DEFINITION"] = "EnumTypeDefinition"; - Kind3["ENUM_VALUE_DEFINITION"] = "EnumValueDefinition"; - Kind3["INPUT_OBJECT_TYPE_DEFINITION"] = "InputObjectTypeDefinition"; - Kind3["DIRECTIVE_DEFINITION"] = "DirectiveDefinition"; - Kind3["SCHEMA_EXTENSION"] = "SchemaExtension"; - Kind3["SCALAR_TYPE_EXTENSION"] = "ScalarTypeExtension"; - Kind3["OBJECT_TYPE_EXTENSION"] = "ObjectTypeExtension"; - Kind3["INTERFACE_TYPE_EXTENSION"] = "InterfaceTypeExtension"; - Kind3["UNION_TYPE_EXTENSION"] = "UnionTypeExtension"; - Kind3["ENUM_TYPE_EXTENSION"] = "EnumTypeExtension"; - Kind3["INPUT_OBJECT_TYPE_EXTENSION"] = "InputObjectTypeExtension"; - })(Kind2 || (exports.Kind = Kind2 = {})); + return () => v; +} +function batch(fn) { + return fn(); +} +var untrack = batch; +function on(deps, fn, options = {}) { + const isArray = Array.isArray(deps); + const defer = options.defer; + return () => { + if (defer) + return void 0; + let value; + if (isArray) { + value = []; + for (let i = 0; i < deps.length; i++) + value.push(deps[i]()); + } else + value = deps(); + return fn(value); + }; +} +function onCleanup(fn) { + let node; + if (Owner && (node = lookup(Owner, BRANCH))) { + if (!node.cleanups) + node.cleanups = [fn]; + else + node.cleanups.push(fn); } -}); - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/characterClasses.js -var require_characterClasses = __commonJS({ - "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/characterClasses.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.isDigit = isDigit3; - exports.isLetter = isLetter2; - exports.isNameContinue = isNameContinue2; - exports.isNameStart = isNameStart2; - exports.isWhiteSpace = isWhiteSpace2; - function isWhiteSpace2(code) { - return code === 9 || code === 32; - } - function isDigit3(code) { - return code >= 48 && code <= 57; - } - function isLetter2(code) { - return code >= 97 && code <= 122 || code >= 65 && code <= 90; - } - function isNameStart2(code) { - return isLetter2(code) || code === 95; - } - function isNameContinue2(code) { - return isLetter2(code) || isDigit3(code) || code === 95; + return fn; +} +function cleanNode(node) { + if (node.cleanups) { + for (let i = 0; i < node.cleanups.length; i++) + node.cleanups[i](); + node.cleanups = void 0; + } +} +function onError(fn) { + if (Owner) { + if (Owner.context === null) + Owner.context = { + [ERROR]: [fn] + }; + else if (!Owner.context[ERROR]) + Owner.context[ERROR] = [fn]; + else + Owner.context[ERROR].push(fn); + } +} +function createContext(defaultValue) { + const id = Symbol("context"); + return { + id, + Provider: createProvider(id), + defaultValue + }; +} +function useContext(context) { + let ctx; + return (ctx = lookup(Owner, context.id)) !== void 0 ? ctx : context.defaultValue; +} +function getOwner() { + return Owner; +} +function children(fn) { + const memo = createMemo(() => resolveChildren(fn())); + memo.toArray = () => { + const c = memo(); + return Array.isArray(c) ? c : c != null ? [c] : []; + }; + return memo; +} +function runWithOwner(o, fn) { + const prev = Owner; + Owner = o; + try { + return fn(); + } catch (err) { + handleError$1(err); + } finally { + Owner = prev; + } +} +function lookup(owner, key) { + return owner ? owner.context && owner.context[key] !== void 0 ? owner.context[key] : lookup(owner.owner, key) : void 0; +} +function resolveChildren(children2) { + if (typeof children2 === "function" && !children2.length) + return resolveChildren(children2()); + if (Array.isArray(children2)) { + const results = []; + for (let i = 0; i < children2.length; i++) { + const result = resolveChildren(children2[i]); + Array.isArray(result) ? results.push.apply(results, result) : results.push(result); } + return results; } -}); - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/blockString.js -var require_blockString = __commonJS({ - "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/blockString.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true + return children2; +} +function createProvider(id) { + return function provider(props) { + return createMemo(() => { + Owner.context = { + [id]: props.value + }; + return children(() => props.children); }); - exports.dedentBlockStringLines = dedentBlockStringLines2; - exports.isPrintableAsBlockString = isPrintableAsBlockString; - exports.printBlockString = printBlockString3; - var _characterClasses = require_characterClasses(); - function dedentBlockStringLines2(lines) { - var _firstNonEmptyLine2; - let commonIndent = Number.MAX_SAFE_INTEGER; - let firstNonEmptyLine = null; - let lastNonEmptyLine = -1; - for (let i = 0; i < lines.length; ++i) { - var _firstNonEmptyLine; - const line = lines[i]; - const indent3 = leadingWhitespace3(line); - if (indent3 === line.length) { - continue; - } - firstNonEmptyLine = (_firstNonEmptyLine = firstNonEmptyLine) !== null && _firstNonEmptyLine !== void 0 ? _firstNonEmptyLine : i; - lastNonEmptyLine = i; - if (i !== 0 && indent3 < commonIndent) { - commonIndent = indent3; - } - } - return lines.map((line, i) => i === 0 ? line : line.slice(commonIndent)).slice( - (_firstNonEmptyLine2 = firstNonEmptyLine) !== null && _firstNonEmptyLine2 !== void 0 ? _firstNonEmptyLine2 : 0, - lastNonEmptyLine + 1 - ); - } - function leadingWhitespace3(str) { - let i = 0; - while (i < str.length && (0, _characterClasses.isWhiteSpace)(str.charCodeAt(i))) { - ++i; - } - return i; - } - function isPrintableAsBlockString(value) { - if (value === "") { - return true; - } - let isEmptyLine = true; - let hasIndent = false; - let hasCommonIndent = true; - let seenNonEmptyLine = false; - for (let i = 0; i < value.length; ++i) { - switch (value.codePointAt(i)) { - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - case 11: - case 12: - case 14: - case 15: - return false; - case 13: - return false; - case 10: - if (isEmptyLine && !seenNonEmptyLine) { - return false; - } - seenNonEmptyLine = true; - isEmptyLine = true; - hasIndent = false; - break; - case 9: - case 32: - hasIndent || (hasIndent = isEmptyLine); - break; - default: - hasCommonIndent && (hasCommonIndent = hasIndent); - isEmptyLine = false; - } - } - if (isEmptyLine) { - return false; - } - if (hasCommonIndent && seenNonEmptyLine) { - return false; - } - return true; - } - function printBlockString3(value, options) { - const escapedValue = value.replace(/"""/g, '\\"""'); - const lines = escapedValue.split(/\r\n|[\n\r]/g); - const isSingleLine = lines.length === 1; - const forceLeadingNewLine = lines.length > 1 && lines.slice(1).every( - (line) => line.length === 0 || (0, _characterClasses.isWhiteSpace)(line.charCodeAt(0)) - ); - const hasTrailingTripleQuotes = escapedValue.endsWith('\\"""'); - const hasTrailingQuote = value.endsWith('"') && !hasTrailingTripleQuotes; - const hasTrailingSlash = value.endsWith("\\"); - const forceTrailingNewline = hasTrailingQuote || hasTrailingSlash; - const printAsMultipleLines = !(options !== null && options !== void 0 && options.minimize) && (!isSingleLine || value.length > 70 || forceTrailingNewline || forceLeadingNewLine || hasTrailingTripleQuotes); - let result = ""; - const skipLeadingNewLine = isSingleLine && (0, _characterClasses.isWhiteSpace)(value.charCodeAt(0)); - if (printAsMultipleLines && !skipLeadingNewLine || forceLeadingNewLine) { - result += "\n"; - } - result += escapedValue; - if (printAsMultipleLines || forceTrailingNewline) { - result += "\n"; - } - return '"""' + result + '"""'; - } + }; +} +function resolveSSRNode$1(node) { + const t = typeof node; + if (t === "string") + return node; + if (node == null || t === "boolean") + return ""; + if (Array.isArray(node)) { + let mapped = ""; + for (let i = 0, len = node.length; i < len; i++) + mapped += resolveSSRNode$1(node[i]); + return mapped; } -}); - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/tokenKind.js -var require_tokenKind = __commonJS({ - "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/tokenKind.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.TokenKind = void 0; - var TokenKind2; - exports.TokenKind = TokenKind2; - (function(TokenKind3) { - TokenKind3["SOF"] = ""; - TokenKind3["EOF"] = ""; - TokenKind3["BANG"] = "!"; - TokenKind3["DOLLAR"] = "$"; - TokenKind3["AMP"] = "&"; - TokenKind3["PAREN_L"] = "("; - TokenKind3["PAREN_R"] = ")"; - TokenKind3["SPREAD"] = "..."; - TokenKind3["COLON"] = ":"; - TokenKind3["EQUALS"] = "="; - TokenKind3["AT"] = "@"; - TokenKind3["BRACKET_L"] = "["; - TokenKind3["BRACKET_R"] = "]"; - TokenKind3["BRACE_L"] = "{"; - TokenKind3["PIPE"] = "|"; - TokenKind3["BRACE_R"] = "}"; - TokenKind3["NAME"] = "Name"; - TokenKind3["INT"] = "Int"; - TokenKind3["FLOAT"] = "Float"; - TokenKind3["STRING"] = "String"; - TokenKind3["BLOCK_STRING"] = "BlockString"; - TokenKind3["COMMENT"] = "Comment"; - })(TokenKind2 || (exports.TokenKind = TokenKind2 = {})); + if (t === "object") + return node.t; + if (t === "function") + return resolveSSRNode$1(node()); + return String(node); +} +var sharedConfig = {}; +function setHydrateContext(context) { + sharedConfig.context = context; +} +function nextHydrateContext() { + return sharedConfig.context ? { + ...sharedConfig.context, + id: `${sharedConfig.context.id}${sharedConfig.context.count++}-`, + count: 0 + } : void 0; +} +function createUniqueId() { + const ctx = sharedConfig.context; + if (!ctx) + throw new Error(`createUniqueId cannot be used under non-hydrating context`); + return `${ctx.id}${ctx.count++}`; +} +function createComponent(Comp, props) { + if (sharedConfig.context && !sharedConfig.context.noHydrate) { + const c = sharedConfig.context; + setHydrateContext(nextHydrateContext()); + const r = Comp(props || {}); + setHydrateContext(c); + return r; } -}); - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/lexer.js -var require_lexer = __commonJS({ - "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/lexer.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true + return Comp(props || {}); +} +function Show(props) { + let c; + return props.when ? typeof (c = props.children) === "function" ? c(props.when) : c : props.fallback || ""; +} +function ErrorBoundary$1(props) { + let error, res, clean, sync = true; + const ctx = sharedConfig.context; + const id = ctx.id + ctx.count; + function displayFallback() { + cleanNode(clean); + ctx.writeResource(id, error, true); + setHydrateContext({ + ...ctx, + count: 0 }); - exports.Lexer = void 0; - exports.isPunctuatorTokenKind = isPunctuatorTokenKind2; - var _syntaxError = require_syntaxError(); - var _ast = require_ast(); - var _blockString = require_blockString(); - var _characterClasses = require_characterClasses(); - var _tokenKind = require_tokenKind(); - var Lexer2 = class { - constructor(source) { - const startOfFileToken = new _ast.Token( - _tokenKind.TokenKind.SOF, - 0, - 0, - 0, - 0 - ); - this.source = source; - this.lastToken = startOfFileToken; - this.token = startOfFileToken; - this.line = 1; - this.lineStart = 0; - } - get [Symbol.toStringTag]() { - return "Lexer"; - } - advance() { - this.lastToken = this.token; - const token = this.token = this.lookahead(); - return token; - } - lookahead() { - let token = this.token; - if (token.kind !== _tokenKind.TokenKind.EOF) { - do { - if (token.next) { - token = token.next; - } else { - const nextToken = readNextToken2(this, token.end); - token.next = nextToken; - nextToken.prev = token; - token = nextToken; - } - } while (token.kind === _tokenKind.TokenKind.COMMENT); - } - return token; - } + const f = props.fallback; + return typeof f === "function" && f.length ? f(error, () => { + }) : f; + } + onError((err) => { + error = err; + !sync && ctx.replace("e" + id, displayFallback); + sync = true; + }); + onCleanup(() => cleanNode(clean)); + createMemo(() => { + Owner.context = { + [BRANCH]: clean = {} }; - exports.Lexer = Lexer2; - function isPunctuatorTokenKind2(kind) { - return kind === _tokenKind.TokenKind.BANG || kind === _tokenKind.TokenKind.DOLLAR || kind === _tokenKind.TokenKind.AMP || kind === _tokenKind.TokenKind.PAREN_L || kind === _tokenKind.TokenKind.PAREN_R || kind === _tokenKind.TokenKind.SPREAD || kind === _tokenKind.TokenKind.COLON || kind === _tokenKind.TokenKind.EQUALS || kind === _tokenKind.TokenKind.AT || kind === _tokenKind.TokenKind.BRACKET_L || kind === _tokenKind.TokenKind.BRACKET_R || kind === _tokenKind.TokenKind.BRACE_L || kind === _tokenKind.TokenKind.PIPE || kind === _tokenKind.TokenKind.BRACE_R; - } - function isUnicodeScalarValue2(code) { - return code >= 0 && code <= 55295 || code >= 57344 && code <= 1114111; - } - function isSupplementaryCodePoint2(body, location) { - return isLeadingSurrogate2(body.charCodeAt(location)) && isTrailingSurrogate2(body.charCodeAt(location + 1)); - } - function isLeadingSurrogate2(code) { - return code >= 55296 && code <= 56319; - } - function isTrailingSurrogate2(code) { - return code >= 56320 && code <= 57343; - } - function printCodePointAt2(lexer, location) { - const code = lexer.source.body.codePointAt(location); - if (code === void 0) { - return _tokenKind.TokenKind.EOF; - } else if (code >= 32 && code <= 126) { - const char = String.fromCodePoint(code); - return char === '"' ? `'"'` : `"${char}"`; - } - return "U+" + code.toString(16).toUpperCase().padStart(4, "0"); - } - function createToken2(lexer, kind, start, end, value) { - const line = lexer.line; - const col = 1 + start - lexer.lineStart; - return new _ast.Token(kind, start, end, line, col, value); - } - function readNextToken2(lexer, start) { - const body = lexer.source.body; - const bodyLength = body.length; - let position = start; - while (position < bodyLength) { - const code = body.charCodeAt(position); - switch (code) { - case 65279: - case 9: - case 32: - case 44: - ++position; - continue; - case 10: - ++position; - ++lexer.line; - lexer.lineStart = position; - continue; - case 13: - if (body.charCodeAt(position + 1) === 10) { - position += 2; - } else { - ++position; - } - ++lexer.line; - lexer.lineStart = position; - continue; - case 35: - return readComment2(lexer, position); - case 33: - return createToken2( - lexer, - _tokenKind.TokenKind.BANG, - position, - position + 1 - ); - case 36: - return createToken2( - lexer, - _tokenKind.TokenKind.DOLLAR, - position, - position + 1 - ); - case 38: - return createToken2( - lexer, - _tokenKind.TokenKind.AMP, - position, - position + 1 - ); - case 40: - return createToken2( - lexer, - _tokenKind.TokenKind.PAREN_L, - position, - position + 1 - ); - case 41: - return createToken2( - lexer, - _tokenKind.TokenKind.PAREN_R, - position, - position + 1 - ); - case 46: - if (body.charCodeAt(position + 1) === 46 && body.charCodeAt(position + 2) === 46) { - return createToken2( - lexer, - _tokenKind.TokenKind.SPREAD, - position, - position + 3 - ); - } - break; - case 58: - return createToken2( - lexer, - _tokenKind.TokenKind.COLON, - position, - position + 1 - ); - case 61: - return createToken2( - lexer, - _tokenKind.TokenKind.EQUALS, - position, - position + 1 - ); - case 64: - return createToken2( - lexer, - _tokenKind.TokenKind.AT, - position, - position + 1 - ); - case 91: - return createToken2( - lexer, - _tokenKind.TokenKind.BRACKET_L, - position, - position + 1 - ); - case 93: - return createToken2( - lexer, - _tokenKind.TokenKind.BRACKET_R, - position, - position + 1 - ); - case 123: - return createToken2( - lexer, - _tokenKind.TokenKind.BRACE_L, - position, - position + 1 - ); - case 124: - return createToken2( - lexer, - _tokenKind.TokenKind.PIPE, - position, - position + 1 - ); - case 125: - return createToken2( - lexer, - _tokenKind.TokenKind.BRACE_R, - position, - position + 1 - ); - case 34: - if (body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34) { - return readBlockString2(lexer, position); - } - return readString2(lexer, position); - } - if ((0, _characterClasses.isDigit)(code) || code === 45) { - return readNumber2(lexer, position, code); - } - if ((0, _characterClasses.isNameStart)(code)) { - return readName2(lexer, position); - } - throw (0, _syntaxError.syntaxError)( - lexer.source, - position, - code === 39 ? `Unexpected single quote character ('), did you mean to use a double quote (")?` : isUnicodeScalarValue2(code) || isSupplementaryCodePoint2(body, position) ? `Unexpected character: ${printCodePointAt2(lexer, position)}.` : `Invalid character: ${printCodePointAt2(lexer, position)}.` - ); - } - return createToken2(lexer, _tokenKind.TokenKind.EOF, bodyLength, bodyLength); + return res = props.children; + }); + if (error) + return displayFallback(); + sync = false; + return { + t: `${resolveSSRNode$1(res)}` + }; +} +var SuspenseContext = createContext(); +var resourceContext = null; +function createResource(source, fetcher, options = {}) { + if (arguments.length === 2) { + if (typeof fetcher === "object") { + options = fetcher; + fetcher = source; + source = true; } - function readComment2(lexer, start) { - const body = lexer.source.body; - const bodyLength = body.length; - let position = start + 1; - while (position < bodyLength) { - const code = body.charCodeAt(position); - if (code === 10 || code === 13) { - break; - } - if (isUnicodeScalarValue2(code)) { - ++position; - } else if (isSupplementaryCodePoint2(body, position)) { - position += 2; - } else { - break; - } - } - return createToken2( - lexer, - _tokenKind.TokenKind.COMMENT, - start, - position, - body.slice(start + 1, position) - ); + } else if (arguments.length === 1) { + fetcher = source; + source = true; + } + const contexts = /* @__PURE__ */ new Set(); + const id = sharedConfig.context.id + sharedConfig.context.count++; + let resource = {}; + let value = options.storage ? options.storage(options.initialValue)[0]() : options.initialValue; + let p; + let error; + if (sharedConfig.context.async && options.ssrLoadFrom !== "initial") { + resource = sharedConfig.context.resources[id] || (sharedConfig.context.resources[id] = {}); + if (resource.ref) { + if (!resource.data && !resource.ref[0].loading && !resource.ref[0].error) + resource.ref[1].refetch(); + return resource.ref; } - function readNumber2(lexer, start, firstCode) { - const body = lexer.source.body; - let position = start; - let code = firstCode; - let isFloat = false; - if (code === 45) { - code = body.charCodeAt(++position); - } - if (code === 48) { - code = body.charCodeAt(++position); - if ((0, _characterClasses.isDigit)(code)) { - throw (0, _syntaxError.syntaxError)( - lexer.source, - position, - `Invalid number, unexpected digit after 0: ${printCodePointAt2( - lexer, - position - )}.` - ); - } - } else { - position = readDigits2(lexer, position, code); - code = body.charCodeAt(position); - } - if (code === 46) { - isFloat = true; - code = body.charCodeAt(++position); - position = readDigits2(lexer, position, code); - code = body.charCodeAt(position); - } - if (code === 69 || code === 101) { - isFloat = true; - code = body.charCodeAt(++position); - if (code === 43 || code === 45) { - code = body.charCodeAt(++position); - } - position = readDigits2(lexer, position, code); - code = body.charCodeAt(position); - } - if (code === 46 || (0, _characterClasses.isNameStart)(code)) { - throw (0, _syntaxError.syntaxError)( - lexer.source, - position, - `Invalid number, expected digit but got: ${printCodePointAt2( - lexer, - position - )}.` - ); + } + const read = () => { + if (error) + throw error; + if (resourceContext && p) + resourceContext.push(p); + const resolved = options.ssrLoadFrom !== "initial" && sharedConfig.context.async && "data" in sharedConfig.context.resources[id]; + if (!resolved && read.loading) { + const ctx = useContext(SuspenseContext); + if (ctx) { + ctx.resources.set(id, read); + contexts.add(ctx); } - return createToken2( - lexer, - isFloat ? _tokenKind.TokenKind.FLOAT : _tokenKind.TokenKind.INT, - start, - position, - body.slice(start, position) - ); } - function readDigits2(lexer, start, firstCode) { - if (!(0, _characterClasses.isDigit)(firstCode)) { - throw (0, _syntaxError.syntaxError)( - lexer.source, - start, - `Invalid number, expected digit but got: ${printCodePointAt2( - lexer, - start - )}.` - ); - } - const body = lexer.source.body; - let position = start + 1; - while ((0, _characterClasses.isDigit)(body.charCodeAt(position))) { - ++position; - } - return position; - } - function readString2(lexer, start) { - const body = lexer.source.body; - const bodyLength = body.length; - let position = start + 1; - let chunkStart = position; - let value = ""; - while (position < bodyLength) { - const code = body.charCodeAt(position); - if (code === 34) { - value += body.slice(chunkStart, position); - return createToken2( - lexer, - _tokenKind.TokenKind.STRING, - start, - position + 1, - value - ); - } - if (code === 92) { - value += body.slice(chunkStart, position); - const escape2 = body.charCodeAt(position + 1) === 117 ? body.charCodeAt(position + 2) === 123 ? readEscapedUnicodeVariableWidth2(lexer, position) : readEscapedUnicodeFixedWidth2(lexer, position) : readEscapedCharacter2(lexer, position); - value += escape2.value; - position += escape2.size; - chunkStart = position; - continue; - } - if (code === 10 || code === 13) { - break; - } - if (isUnicodeScalarValue2(code)) { - ++position; - } else if (isSupplementaryCodePoint2(body, position)) { - position += 2; - } else { - throw (0, _syntaxError.syntaxError)( - lexer.source, - position, - `Invalid character within String: ${printCodePointAt2( - lexer, - position - )}.` - ); - } - } - throw (0, _syntaxError.syntaxError)( - lexer.source, - position, - "Unterminated string." - ); + return resolved ? sharedConfig.context.resources[id].data : value; + }; + read.loading = false; + read.error = void 0; + read.state = "initialValue" in options ? "resolved" : "unresolved"; + Object.defineProperty(read, "latest", { + get() { + return read(); } - function readEscapedUnicodeVariableWidth2(lexer, position) { - const body = lexer.source.body; - let point = 0; - let size = 3; - while (size < 12) { - const code = body.charCodeAt(position + size++); - if (code === 125) { - if (size < 5 || !isUnicodeScalarValue2(point)) { - break; - } - return { - value: String.fromCodePoint(point), - size - }; - } - point = point << 4 | readHexDigit2(code); - if (point < 0) { - break; - } - } - throw (0, _syntaxError.syntaxError)( - lexer.source, - position, - `Invalid Unicode escape sequence: "${body.slice( - position, - position + size - )}".` - ); + }); + function load() { + const ctx = sharedConfig.context; + if (!ctx.async) + return read.loading = !!(typeof source === "function" ? source() : source); + if (ctx.resources && id in ctx.resources && "data" in ctx.resources[id]) { + value = ctx.resources[id].data; + return; } - function readEscapedUnicodeFixedWidth2(lexer, position) { - const body = lexer.source.body; - const code = read16BitHexCode2(body, position + 2); - if (isUnicodeScalarValue2(code)) { - return { - value: String.fromCodePoint(code), - size: 6 - }; - } - if (isLeadingSurrogate2(code)) { - if (body.charCodeAt(position + 6) === 92 && body.charCodeAt(position + 7) === 117) { - const trailingCode = read16BitHexCode2(body, position + 8); - if (isTrailingSurrogate2(trailingCode)) { - return { - value: String.fromCodePoint(code, trailingCode), - size: 12 - }; - } - } - } - throw (0, _syntaxError.syntaxError)( - lexer.source, - position, - `Invalid Unicode escape sequence: "${body.slice(position, position + 6)}".` - ); - } - function read16BitHexCode2(body, position) { - return readHexDigit2(body.charCodeAt(position)) << 12 | readHexDigit2(body.charCodeAt(position + 1)) << 8 | readHexDigit2(body.charCodeAt(position + 2)) << 4 | readHexDigit2(body.charCodeAt(position + 3)); + resourceContext = []; + const lookup2 = typeof source === "function" ? source() : source; + if (resourceContext.length) { + p = Promise.all(resourceContext).then(() => fetcher(source(), { + value + })); } - function readHexDigit2(code) { - return code >= 48 && code <= 57 ? code - 48 : code >= 65 && code <= 70 ? code - 55 : code >= 97 && code <= 102 ? code - 87 : -1; + resourceContext = null; + if (!p) { + if (lookup2 == null || lookup2 === false) + return; + p = fetcher(lookup2, { + value + }); } - function readEscapedCharacter2(lexer, position) { - const body = lexer.source.body; - const code = body.charCodeAt(position + 1); - switch (code) { - case 34: - return { - value: '"', - size: 2 - }; - case 92: - return { - value: "\\", - size: 2 - }; - case 47: - return { - value: "/", - size: 2 - }; - case 98: - return { - value: "\b", - size: 2 - }; - case 102: - return { - value: "\f", - size: 2 - }; - case 110: - return { - value: "\n", - size: 2 - }; - case 114: - return { - value: "\r", - size: 2 - }; - case 116: - return { - value: " ", - size: 2 - }; - } - throw (0, _syntaxError.syntaxError)( - lexer.source, - position, - `Invalid character escape sequence: "${body.slice( - position, - position + 2 - )}".` - ); + if (p != void 0 && typeof p === "object" && "then" in p) { + read.loading = true; + read.state = "pending"; + if (ctx.writeResource) + ctx.writeResource(id, p, void 0, options.deferStream); + return p.then((res) => { + read.loading = false; + read.state = "resolved"; + ctx.resources[id].data = res; + p = null; + notifySuspense(contexts); + return res; + }).catch((err) => { + read.loading = false; + read.state = "errored"; + read.error = error = castError(err); + p = null; + notifySuspense(contexts); + }); } - function readBlockString2(lexer, start) { - const body = lexer.source.body; - const bodyLength = body.length; - let lineStart = lexer.lineStart; - let position = start + 3; - let chunkStart = position; - let currentLine = ""; - const blockLines = []; - while (position < bodyLength) { - const code = body.charCodeAt(position); - if (code === 34 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34) { - currentLine += body.slice(chunkStart, position); - blockLines.push(currentLine); - const token = createToken2( - lexer, - _tokenKind.TokenKind.BLOCK_STRING, - start, - position + 3, - (0, _blockString.dedentBlockStringLines)(blockLines).join("\n") - ); - lexer.line += blockLines.length - 1; - lexer.lineStart = lineStart; - return token; - } - if (code === 92 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34 && body.charCodeAt(position + 3) === 34) { - currentLine += body.slice(chunkStart, position); - chunkStart = position + 1; - position += 4; - continue; - } - if (code === 10 || code === 13) { - currentLine += body.slice(chunkStart, position); - blockLines.push(currentLine); - if (code === 13 && body.charCodeAt(position + 1) === 10) { - position += 2; - } else { - ++position; - } - currentLine = ""; - chunkStart = position; - lineStart = position; - continue; - } - if (isUnicodeScalarValue2(code)) { - ++position; - } else if (isSupplementaryCodePoint2(body, position)) { - position += 2; - } else { - throw (0, _syntaxError.syntaxError)( - lexer.source, - position, - `Invalid character within String: ${printCodePointAt2( - lexer, - position - )}.` - ); - } + ctx.resources[id].data = p; + if (ctx.writeResource) + ctx.writeResource(id, p); + p = null; + return ctx.resources[id].data; + } + if (options.ssrLoadFrom !== "initial") + load(); + return resource.ref = [read, { + refetch: load, + mutate: (v) => value = v + }]; +} +function suspenseComplete(c) { + for (const r of c.resources.values()) { + if (r.loading) + return false; + } + return true; +} +function notifySuspense(contexts) { + for (const c of contexts) { + if (suspenseComplete(c)) + c.completed(); + } + contexts.clear(); +} +function useTransition() { + return [() => false, (fn) => { + fn(); + }]; +} +function Suspense(props) { + let done; + let clean; + const ctx = sharedConfig.context; + const id = ctx.id + ctx.count; + const o = Owner; + if (o) { + if (o.context) + o.context[BRANCH] = clean = {}; + else + o.context = { + [BRANCH]: clean = {} + }; + } + const value = ctx.suspense[id] || (ctx.suspense[id] = { + resources: /* @__PURE__ */ new Map(), + completed: () => { + const res2 = runSuspense(); + if (suspenseComplete(value)) { + done(resolveSSRNode$1(res2)); } - throw (0, _syntaxError.syntaxError)( - lexer.source, - position, - "Unterminated string." - ); } - function readName2(lexer, start) { - const body = lexer.source.body; - const bodyLength = body.length; - let position = start + 1; - while (position < bodyLength) { - const code = body.charCodeAt(position); - if ((0, _characterClasses.isNameContinue)(code)) { - ++position; - } else { - break; + }); + function runSuspense() { + setHydrateContext({ + ...ctx, + count: 0 + }); + return runWithOwner(o, () => { + return createComponent(SuspenseContext.Provider, { + value, + get children() { + clean && cleanNode(clean); + return props.children; } - } - return createToken2( - lexer, - _tokenKind.TokenKind.NAME, - start, - position, - body.slice(start, position) - ); - } - } -}); - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/jsutils/devAssert.js -var require_devAssert = __commonJS({ - "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/jsutils/devAssert.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true + }); }); - exports.devAssert = devAssert2; - function devAssert2(condition, message) { - const booleanCondition = Boolean(condition); - if (!booleanCondition) { - throw new Error(message); - } - } } -}); - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/jsutils/inspect.js -var require_inspect = __commonJS({ - "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/jsutils/inspect.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true + const res = runSuspense(); + if (suspenseComplete(value)) + return res; + onError((err) => { + if (!done || !done(void 0, err)) { + if (o) + runWithOwner(o.owner, () => { + throw err; + }); + else + throw err; + } + }); + done = ctx.async ? ctx.registerFragment(id) : void 0; + if (ctx.async) { + setHydrateContext({ + ...ctx, + count: 0, + id: ctx.id + "0.f", + noHydrate: true }); - exports.inspect = inspect3; - var MAX_ARRAY_LENGTH2 = 10; - var MAX_RECURSIVE_DEPTH3 = 2; - function inspect3(value) { - return formatValue3(value, []); - } - function formatValue3(value, seenValues) { - switch (typeof value) { - case "string": - return JSON.stringify(value); - case "function": - return value.name ? `[function ${value.name}]` : "[function]"; - case "object": - return formatObjectValue3(value, seenValues); - default: - return String(value); - } + const res2 = { + t: `${resolveSSRNode$1(props.fallback)}` + }; + setHydrateContext(ctx); + return res2; + } + setHydrateContext({ + ...ctx, + count: 0, + id: ctx.id + "0.f" + }); + ctx.writeResource(id, "$$f"); + return props.fallback; +} +var booleans = ["allowfullscreen", "async", "autofocus", "autoplay", "checked", "controls", "default", "disabled", "formnovalidate", "hidden", "indeterminate", "ismap", "loop", "multiple", "muted", "nomodule", "novalidate", "open", "playsinline", "readonly", "required", "reversed", "seamless", "selected"]; +var BooleanAttributes = /* @__PURE__ */ new Set(booleans); +/* @__PURE__ */ new Set(["className", "value", "readOnly", "formNoValidate", "isMap", "noModule", "playsInline", ...booleans]); +var ChildProperties = /* @__PURE__ */ new Set(["innerHTML", "textContent", "innerText", "children"]); +var Aliases = { + className: "class", + htmlFor: "for" +}; +var { + hasOwnProperty: hasOwnProperty$1 +} = Object.prototype; +var REF_START_CHARS = "hjkmoquxzABCDEFGHIJKLNPQRTUVWXYZ$_"; +var REF_START_CHARS_LEN = REF_START_CHARS.length; +var REF_CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$_"; +var REF_CHARS_LEN = REF_CHARS.length; +var STACK = []; +var BUFFER = [""]; +var ASSIGNMENTS = /* @__PURE__ */ new Map(); +var INDEX_OR_REF = /* @__PURE__ */ new WeakMap(); +var REF_COUNT = 0; +BUFFER.pop(); +function stringify(root) { + if (writeProp(root, "")) { + let result = BUFFER[0]; + for (let i = 1, len = BUFFER.length; i < len; i++) { + result += BUFFER[i]; } - function formatObjectValue3(value, previouslySeenValues) { - if (value === null) { - return "null"; - } - if (previouslySeenValues.includes(value)) { - return "[Circular]"; - } - const seenValues = [...previouslySeenValues, value]; - if (isJSONable3(value)) { - const jsonValue = value.toJSON(); - if (jsonValue !== value) { - return typeof jsonValue === "string" ? jsonValue : formatValue3(jsonValue, seenValues); + if (REF_COUNT) { + if (ASSIGNMENTS.size) { + let ref = INDEX_OR_REF.get(root); + if (typeof ref === "number") { + ref = toRefParam(REF_COUNT++); + result = ref + "=" + result; } - } else if (Array.isArray(value)) { - return formatArray3(value, seenValues); - } - return formatObject3(value, seenValues); - } - function isJSONable3(value) { - return typeof value.toJSON === "function"; - } - function formatObject3(object, seenValues) { - const entries = Object.entries(object); - if (entries.length === 0) { - return "{}"; - } - if (seenValues.length > MAX_RECURSIVE_DEPTH3) { - return "[" + getObjectTag3(object) + "]"; - } - const properties = entries.map( - ([key, value]) => key + ": " + formatValue3(value, seenValues) - ); - return "{ " + properties.join(", ") + " }"; - } - function formatArray3(array, seenValues) { - if (array.length === 0) { - return "[]"; - } - if (seenValues.length > MAX_RECURSIVE_DEPTH3) { - return "[Array]"; - } - const len = Math.min(MAX_ARRAY_LENGTH2, array.length); - const remaining = array.length - len; - const items = []; - for (let i = 0; i < len; ++i) { - items.push(formatValue3(array[i], seenValues)); - } - if (remaining === 1) { - items.push("... 1 more item"); - } else if (remaining > 1) { - items.push(`... ${remaining} more items`); - } - return "[" + items.join(", ") + "]"; - } - function getObjectTag3(object) { - const tag = Object.prototype.toString.call(object).replace(/^\[object /, "").replace(/]$/, ""); - if (tag === "Object" && typeof object.constructor === "function") { - const name = object.constructor.name; - if (typeof name === "string" && name !== "") { - return name; + for (const [assignmentRef, assignments] of ASSIGNMENTS) { + result += ";" + assignments + assignmentRef; } + result += ";return " + ref; + ASSIGNMENTS = /* @__PURE__ */ new Map(); + } else { + result = "return " + result; } - return tag; + result = "(function(" + refParamsString() + "){" + result + "}())"; + } else if (root && root.constructor === Object) { + result = "(" + result + ")"; } + BUFFER.length = 0; + INDEX_OR_REF = /* @__PURE__ */ new WeakMap(); + return result; } -}); - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/jsutils/instanceOf.js -var require_instanceOf = __commonJS({ - "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/jsutils/instanceOf.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.instanceOf = void 0; - var _inspect = require_inspect(); - var instanceOf4 = false ? function instanceOf5(value, constructor) { - return value instanceof constructor; - } : function instanceOf5(value, constructor) { - if (value instanceof constructor) { - return true; - } - if (typeof value === "object" && value !== null) { - var _value$constructor; - const className = constructor.prototype[Symbol.toStringTag]; - const valueClassName = Symbol.toStringTag in value ? value[Symbol.toStringTag] : (_value$constructor = value.constructor) === null || _value$constructor === void 0 ? void 0 : _value$constructor.name; - if (className === valueClassName) { - const stringifiedValue = (0, _inspect.inspect)(value); - throw new Error(`Cannot use ${className} "${stringifiedValue}" from another module or realm. - -Ensure that there is only one instance of "graphql" in the node_modules -directory. If different versions of "graphql" are the dependencies of other -relied on modules, use "resolutions" to ensure only one version is installed. - -https://yarnpkg.com/en/docs/selective-version-resolutions - -Duplicate "graphql" modules cannot be used at the same time since different -versions may have different capabilities and behavior. The data from one -version used in the function from another could produce confusing and -spurious results.`); - } - } + return "void 0"; +} +function writeProp(cur, accessor) { + switch (typeof cur) { + case "string": + BUFFER.push(quote(cur, 0)); + break; + case "number": + BUFFER.push(cur + ""); + break; + case "boolean": + BUFFER.push(cur ? "!0" : "!1"); + break; + case "object": + if (cur === null) { + BUFFER.push("null"); + } else { + const ref = getRef(cur, accessor); + switch (ref) { + case true: + return false; + case false: + switch (cur.constructor) { + case Object: + writeObject(cur); + break; + case Array: + writeArray(cur); + break; + case Date: + BUFFER.push('new Date("' + cur.toISOString() + '")'); + break; + case RegExp: + BUFFER.push(cur + ""); + break; + case Map: + BUFFER.push("new Map("); + writeArray(Array.from(cur)); + BUFFER.push(")"); + break; + case Set: + BUFFER.push("new Set("); + writeArray(Array.from(cur)); + BUFFER.push(")"); + break; + case void 0: + BUFFER.push("Object.assign(Object.create(null),"); + writeObject(cur); + BUFFER.push("))"); + break; + default: + return false; + } + break; + default: + BUFFER.push(ref); + break; + } + } + break; + default: return false; - }; - exports.instanceOf = instanceOf4; } -}); - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/source.js -var require_source = __commonJS({ - "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/source.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.Source = void 0; - exports.isSource = isSource2; - var _devAssert = require_devAssert(); - var _inspect = require_inspect(); - var _instanceOf = require_instanceOf(); - var Source2 = class { - constructor(body, name = "GraphQL request", locationOffset = { - line: 1, - column: 1 - }) { - typeof body === "string" || (0, _devAssert.devAssert)( - false, - `Body must be a string. Received: ${(0, _inspect.inspect)(body)}.` - ); - this.body = body; - this.name = name; - this.locationOffset = locationOffset; - this.locationOffset.line > 0 || (0, _devAssert.devAssert)( - false, - "line in locationOffset is 1-indexed and must be positive." - ); - this.locationOffset.column > 0 || (0, _devAssert.devAssert)( - false, - "column in locationOffset is 1-indexed and must be positive." - ); - } - get [Symbol.toStringTag]() { - return "Source"; + return true; +} +function writeObject(obj) { + let sep = "{"; + STACK.push(obj); + for (const key in obj) { + if (hasOwnProperty$1.call(obj, key)) { + const val = obj[key]; + const escapedKey = toObjectKey(key); + BUFFER.push(sep + escapedKey + ":"); + if (writeProp(val, escapedKey)) { + sep = ","; + } else { + BUFFER.pop(); } - }; - exports.Source = Source2; - function isSource2(source) { - return (0, _instanceOf.instanceOf)(source, Source2); } } -}); - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/parser.js -var require_parser = __commonJS({ - "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/parser.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.Parser = void 0; - exports.parse = parse2; - exports.parseConstValue = parseConstValue2; - exports.parseType = parseType2; - exports.parseValue = parseValue2; - var _syntaxError = require_syntaxError(); - var _ast = require_ast(); - var _directiveLocation = require_directiveLocation(); - var _kinds = require_kinds(); - var _lexer = require_lexer(); - var _source = require_source(); - var _tokenKind = require_tokenKind(); - function parse2(source, options) { - const parser = new Parser2(source, options); - return parser.parseDocument(); - } - function parseValue2(source, options) { - const parser = new Parser2(source, options); - parser.expectToken(_tokenKind.TokenKind.SOF); - const value = parser.parseValueLiteral(false); - parser.expectToken(_tokenKind.TokenKind.EOF); - return value; + if (sep === "{") { + BUFFER.push("{}"); + } else { + BUFFER.push("}"); + } + STACK.pop(); +} +function writeArray(arr) { + BUFFER.push("["); + STACK.push(arr); + writeProp(arr[0], 0); + for (let i = 1, len = arr.length; i < len; i++) { + BUFFER.push(","); + writeProp(arr[i], i); + } + STACK.pop(); + BUFFER.push("]"); +} +function getRef(cur, accessor) { + let ref = INDEX_OR_REF.get(cur); + if (ref === void 0) { + INDEX_OR_REF.set(cur, BUFFER.length); + return false; + } + if (typeof ref === "number") { + ref = insertAndGetRef(cur, ref); + } + if (STACK.includes(cur)) { + const parent = STACK[STACK.length - 1]; + let parentRef = INDEX_OR_REF.get(parent); + if (typeof parentRef === "number") { + parentRef = insertAndGetRef(parent, parentRef); } - function parseConstValue2(source, options) { - const parser = new Parser2(source, options); - parser.expectToken(_tokenKind.TokenKind.SOF); - const value = parser.parseConstValueLiteral(); - parser.expectToken(_tokenKind.TokenKind.EOF); - return value; + ASSIGNMENTS.set(ref, (ASSIGNMENTS.get(ref) || "") + toAssignment(parentRef, accessor) + "="); + return true; + } + return ref; +} +function toObjectKey(name) { + const invalidIdentifierPos = getInvalidIdentifierPos(name); + return invalidIdentifierPos === -1 ? name : quote(name, invalidIdentifierPos); +} +function toAssignment(parent, key) { + return parent + (typeof key === "number" || key[0] === '"' ? "[" + key + "]" : "." + key); +} +function getInvalidIdentifierPos(name) { + let char = name[0]; + if (!(char >= "a" && char <= "z" || char >= "A" && char <= "Z" || char === "$" || char === "_")) { + return 0; + } + for (let i = 1, len = name.length; i < len; i++) { + char = name[i]; + if (!(char >= "a" && char <= "z" || char >= "A" && char <= "Z" || char >= "0" && char <= "9" || char === "$" || char === "_")) { + return i; } - function parseType2(source, options) { - const parser = new Parser2(source, options); - parser.expectToken(_tokenKind.TokenKind.SOF); - const type = parser.parseTypeReference(); - parser.expectToken(_tokenKind.TokenKind.EOF); - return type; + } + return -1; +} +function quote(str, startPos) { + let result = ""; + let lastPos = 0; + for (let i = startPos, len = str.length; i < len; i++) { + let replacement; + switch (str[i]) { + case '"': + replacement = '\\"'; + break; + case "\\": + replacement = "\\\\"; + break; + case "<": + replacement = "\\x3C"; + break; + case "\n": + replacement = "\\n"; + break; + case "\r": + replacement = "\\r"; + break; + case "\u2028": + replacement = "\\u2028"; + break; + case "\u2029": + replacement = "\\u2029"; + break; + default: + continue; } - var Parser2 = class { - constructor(source, options = {}) { - const sourceObj = (0, _source.isSource)(source) ? source : new _source.Source(source); - this._lexer = new _lexer.Lexer(sourceObj); - this._options = options; - this._tokenCounter = 0; - } - parseName() { - const token = this.expectToken(_tokenKind.TokenKind.NAME); - return this.node(token, { - kind: _kinds.Kind.NAME, - value: token.value - }); - } - parseDocument() { - return this.node(this._lexer.token, { - kind: _kinds.Kind.DOCUMENT, - definitions: this.many( - _tokenKind.TokenKind.SOF, - this.parseDefinition, - _tokenKind.TokenKind.EOF - ) - }); - } - parseDefinition() { - if (this.peek(_tokenKind.TokenKind.BRACE_L)) { - return this.parseOperationDefinition(); + result += str.slice(lastPos, i) + replacement; + lastPos = i + 1; + } + if (lastPos === startPos) { + result = str; + } else { + result += str.slice(lastPos); + } + return '"' + result + '"'; +} +function insertAndGetRef(obj, pos) { + const ref = toRefParam(REF_COUNT++); + INDEX_OR_REF.set(obj, ref); + if (pos) { + BUFFER[pos - 1] += ref + "="; + } else { + BUFFER[pos] = ref + "=" + BUFFER[pos]; + } + return ref; +} +function refParamsString() { + let result = REF_START_CHARS[0]; + for (let i = 1; i < REF_COUNT; i++) { + result += "," + toRefParam(i); + } + REF_COUNT = 0; + return result; +} +function toRefParam(index) { + let mod = index % REF_START_CHARS_LEN; + let ref = REF_START_CHARS[mod]; + index = (index - mod) / REF_START_CHARS_LEN; + while (index > 0) { + mod = index % REF_CHARS_LEN; + ref += REF_CHARS[mod]; + index = (index - mod) / REF_CHARS_LEN; + } + return ref; +} +var REPLACE_SCRIPT = `function $df(e,t,d,l){d=document.getElementById(e),(l=document.getElementById("pl-"+e))&&l.replaceWith(...d.childNodes),d.remove(),_$HY.set(e,t)}`; +function renderToStringAsync(code, options = {}) { + const { + timeoutMs = 3e4 + } = options; + let timeoutHandle; + const timeout = new Promise((_, reject2) => { + timeoutHandle = setTimeout(() => reject2("renderToString timed out"), timeoutMs); + }); + return Promise.race([renderToStream(code, options), timeout]).then((html) => { + clearTimeout(timeoutHandle); + return html; + }); +} +function renderToStream(code, options = {}) { + let { + nonce, + onCompleteShell, + onCompleteAll, + renderId + } = options; + const blockingResources = []; + const registry = /* @__PURE__ */ new Map(); + const dedupe = /* @__PURE__ */ new WeakMap(); + const checkEnd = () => { + if (!registry.size && !completed) { + writeTasks(); + onCompleteAll && onCompleteAll({ + write(v) { + !completed && buffer.write(v); } - const hasDescription = this.peekDescription(); - const keywordToken = hasDescription ? this._lexer.lookahead() : this._lexer.token; - if (keywordToken.kind === _tokenKind.TokenKind.NAME) { - switch (keywordToken.value) { - case "schema": - return this.parseSchemaDefinition(); - case "scalar": - return this.parseScalarTypeDefinition(); - case "type": - return this.parseObjectTypeDefinition(); - case "interface": - return this.parseInterfaceTypeDefinition(); - case "union": - return this.parseUnionTypeDefinition(); - case "enum": - return this.parseEnumTypeDefinition(); - case "input": - return this.parseInputObjectTypeDefinition(); - case "directive": - return this.parseDirectiveDefinition(); - } - if (hasDescription) { - throw (0, _syntaxError.syntaxError)( - this._lexer.source, - this._lexer.token.start, - "Unexpected description, descriptions are supported only on type definitions." - ); - } - switch (keywordToken.value) { - case "query": - case "mutation": - case "subscription": - return this.parseOperationDefinition(); - case "fragment": - return this.parseFragmentDefinition(); - case "extend": - return this.parseTypeSystemExtension(); - } - } - throw this.unexpected(keywordToken); - } - parseOperationDefinition() { - const start = this._lexer.token; - if (this.peek(_tokenKind.TokenKind.BRACE_L)) { - return this.node(start, { - kind: _kinds.Kind.OPERATION_DEFINITION, - operation: _ast.OperationTypeNode.QUERY, - name: void 0, - variableDefinitions: [], - directives: [], - selectionSet: this.parseSelectionSet() - }); - } - const operation = this.parseOperationType(); - let name; - if (this.peek(_tokenKind.TokenKind.NAME)) { - name = this.parseName(); - } - return this.node(start, { - kind: _kinds.Kind.OPERATION_DEFINITION, - operation, - name, - variableDefinitions: this.parseVariableDefinitions(), - directives: this.parseDirectives(false), - selectionSet: this.parseSelectionSet() - }); - } - parseOperationType() { - const operationToken = this.expectToken(_tokenKind.TokenKind.NAME); - switch (operationToken.value) { - case "query": - return _ast.OperationTypeNode.QUERY; - case "mutation": - return _ast.OperationTypeNode.MUTATION; - case "subscription": - return _ast.OperationTypeNode.SUBSCRIPTION; - } - throw this.unexpected(operationToken); - } - parseVariableDefinitions() { - return this.optionalMany( - _tokenKind.TokenKind.PAREN_L, - this.parseVariableDefinition, - _tokenKind.TokenKind.PAREN_R - ); - } - parseVariableDefinition() { - return this.node(this._lexer.token, { - kind: _kinds.Kind.VARIABLE_DEFINITION, - variable: this.parseVariable(), - type: (this.expectToken(_tokenKind.TokenKind.COLON), this.parseTypeReference()), - defaultValue: this.expectOptionalToken(_tokenKind.TokenKind.EQUALS) ? this.parseConstValueLiteral() : void 0, - directives: this.parseConstDirectives() - }); - } - parseVariable() { - const start = this._lexer.token; - this.expectToken(_tokenKind.TokenKind.DOLLAR); - return this.node(start, { - kind: _kinds.Kind.VARIABLE, - name: this.parseName() - }); - } - parseSelectionSet() { - return this.node(this._lexer.token, { - kind: _kinds.Kind.SELECTION_SET, - selections: this.many( - _tokenKind.TokenKind.BRACE_L, - this.parseSelection, - _tokenKind.TokenKind.BRACE_R - ) - }); - } - parseSelection() { - return this.peek(_tokenKind.TokenKind.SPREAD) ? this.parseFragment() : this.parseField(); - } - parseField() { - const start = this._lexer.token; - const nameOrAlias = this.parseName(); - let alias; - let name; - if (this.expectOptionalToken(_tokenKind.TokenKind.COLON)) { - alias = nameOrAlias; - name = this.parseName(); - } else { - name = nameOrAlias; - } - return this.node(start, { - kind: _kinds.Kind.FIELD, - alias, - name, - arguments: this.parseArguments(false), - directives: this.parseDirectives(false), - selectionSet: this.peek(_tokenKind.TokenKind.BRACE_L) ? this.parseSelectionSet() : void 0 - }); - } - parseArguments(isConst) { - const item = isConst ? this.parseConstArgument : this.parseArgument; - return this.optionalMany( - _tokenKind.TokenKind.PAREN_L, - item, - _tokenKind.TokenKind.PAREN_R - ); - } - parseArgument(isConst = false) { - const start = this._lexer.token; - const name = this.parseName(); - this.expectToken(_tokenKind.TokenKind.COLON); - return this.node(start, { - kind: _kinds.Kind.ARGUMENT, - name, - value: this.parseValueLiteral(isConst) - }); - } - parseConstArgument() { - return this.parseArgument(true); - } - parseFragment() { - const start = this._lexer.token; - this.expectToken(_tokenKind.TokenKind.SPREAD); - const hasTypeCondition = this.expectOptionalKeyword("on"); - if (!hasTypeCondition && this.peek(_tokenKind.TokenKind.NAME)) { - return this.node(start, { - kind: _kinds.Kind.FRAGMENT_SPREAD, - name: this.parseFragmentName(), - directives: this.parseDirectives(false) - }); - } - return this.node(start, { - kind: _kinds.Kind.INLINE_FRAGMENT, - typeCondition: hasTypeCondition ? this.parseNamedType() : void 0, - directives: this.parseDirectives(false), - selectionSet: this.parseSelectionSet() - }); - } - parseFragmentDefinition() { - const start = this._lexer.token; - this.expectKeyword("fragment"); - if (this._options.allowLegacyFragmentVariables === true) { - return this.node(start, { - kind: _kinds.Kind.FRAGMENT_DEFINITION, - name: this.parseFragmentName(), - variableDefinitions: this.parseVariableDefinitions(), - typeCondition: (this.expectKeyword("on"), this.parseNamedType()), - directives: this.parseDirectives(false), - selectionSet: this.parseSelectionSet() - }); - } - return this.node(start, { - kind: _kinds.Kind.FRAGMENT_DEFINITION, - name: this.parseFragmentName(), - typeCondition: (this.expectKeyword("on"), this.parseNamedType()), - directives: this.parseDirectives(false), - selectionSet: this.parseSelectionSet() - }); + }); + writable && writable.end(); + completed = true; + } + }; + const pushTask = (task) => { + tasks += task + ";"; + if (!scheduled && firstFlushed) { + Promise.resolve().then(writeTasks); + scheduled = true; + } + }; + const writeTasks = () => { + if (tasks.length && !completed && firstFlushed) { + buffer.write(`${tasks}<\/script>`); + tasks = ""; + } + scheduled = false; + }; + let context; + let writable; + let tmp = ""; + let tasks = ""; + let firstFlushed = false; + let completed = false; + let scriptFlushed = false; + let scheduled = true; + let buffer = { + write(payload) { + tmp += payload; + } + }; + sharedConfig.context = context = { + id: renderId || "", + count: 0, + async: true, + resources: {}, + suspense: {}, + assets: [], + nonce, + block(p) { + if (!firstFlushed) + blockingResources.push(p); + }, + replace(id, payloadFn) { + if (firstFlushed) + return; + const placeholder = ``; + const first = html.indexOf(placeholder); + if (first === -1) + return; + const last = html.indexOf(``, first + placeholder.length); + html = html.replace(html.slice(first, last + placeholder.length + 1), resolveSSRNode(payloadFn())); + }, + writeResource(id, p, error, wait) { + if (error) + return pushTask(serializeSet(dedupe, id, p, serializeError)); + if (!p || typeof p !== "object" || !("then" in p)) + return pushTask(serializeSet(dedupe, id, p)); + if (!firstFlushed) + wait && blockingResources.push(p); + else + pushTask(`_$HY.init("${id}")`); + p.then((d) => { + !completed && pushTask(serializeSet(dedupe, id, d)); + }).catch(() => { + !completed && pushTask(`_$HY.set("${id}", {})`); + }); + }, + registerFragment(key) { + if (!registry.has(key)) { + registry.set(key, []); + firstFlushed && pushTask(`_$HY.init("${key}")`); } - parseFragmentName() { - if (this._lexer.token.value === "on") { - throw this.unexpected(); - } - return this.parseName(); - } - parseValueLiteral(isConst) { - const token = this._lexer.token; - switch (token.kind) { - case _tokenKind.TokenKind.BRACKET_L: - return this.parseList(isConst); - case _tokenKind.TokenKind.BRACE_L: - return this.parseObject(isConst); - case _tokenKind.TokenKind.INT: - this.advanceLexer(); - return this.node(token, { - kind: _kinds.Kind.INT, - value: token.value - }); - case _tokenKind.TokenKind.FLOAT: - this.advanceLexer(); - return this.node(token, { - kind: _kinds.Kind.FLOAT, - value: token.value - }); - case _tokenKind.TokenKind.STRING: - case _tokenKind.TokenKind.BLOCK_STRING: - return this.parseStringLiteral(); - case _tokenKind.TokenKind.NAME: - this.advanceLexer(); - switch (token.value) { - case "true": - return this.node(token, { - kind: _kinds.Kind.BOOLEAN, - value: true - }); - case "false": - return this.node(token, { - kind: _kinds.Kind.BOOLEAN, - value: false - }); - case "null": - return this.node(token, { - kind: _kinds.Kind.NULL - }); - default: - return this.node(token, { - kind: _kinds.Kind.ENUM, - value: token.value - }); - } - case _tokenKind.TokenKind.DOLLAR: - if (isConst) { - this.expectToken(_tokenKind.TokenKind.DOLLAR); - if (this._lexer.token.kind === _tokenKind.TokenKind.NAME) { - const varName = this._lexer.token.value; - throw (0, _syntaxError.syntaxError)( - this._lexer.source, - token.start, - `Unexpected variable "$${varName}" in constant value.` - ); - } else { - throw this.unexpected(token); - } + return (value, error) => { + if (registry.has(key)) { + const keys = registry.get(key); + registry.delete(key); + if (waitForFragments(registry, key)) + return; + if ((value !== void 0 || error) && !completed) { + if (!firstFlushed) { + Promise.resolve().then(() => html = replacePlaceholder(html, key, value !== void 0 ? value : "")); + error && pushTask(serializeSet(dedupe, key, error, serializeError)); + } else { + buffer.write(``); + pushTask(`${keys.length ? keys.map((k) => `_$HY.unset("${k}")`).join(";") + ";" : ""}$df("${key}"${error ? "," + serializeError(error) : ""})${!scriptFlushed ? ";" + REPLACE_SCRIPT : ""}`); + scriptFlushed = true; } - return this.parseVariable(); - default: - throw this.unexpected(); - } - } - parseConstValueLiteral() { - return this.parseValueLiteral(true); - } - parseStringLiteral() { - const token = this._lexer.token; - this.advanceLexer(); - return this.node(token, { - kind: _kinds.Kind.STRING, - value: token.value, - block: token.kind === _tokenKind.TokenKind.BLOCK_STRING - }); - } - parseList(isConst) { - const item = () => this.parseValueLiteral(isConst); - return this.node(this._lexer.token, { - kind: _kinds.Kind.LIST, - values: this.any( - _tokenKind.TokenKind.BRACKET_L, - item, - _tokenKind.TokenKind.BRACKET_R - ) - }); - } - parseObject(isConst) { - const item = () => this.parseObjectField(isConst); - return this.node(this._lexer.token, { - kind: _kinds.Kind.OBJECT, - fields: this.any( - _tokenKind.TokenKind.BRACE_L, - item, - _tokenKind.TokenKind.BRACE_R - ) - }); - } - parseObjectField(isConst) { - const start = this._lexer.token; - const name = this.parseName(); - this.expectToken(_tokenKind.TokenKind.COLON); - return this.node(start, { - kind: _kinds.Kind.OBJECT_FIELD, - name, - value: this.parseValueLiteral(isConst) - }); - } - parseDirectives(isConst) { - const directives = []; - while (this.peek(_tokenKind.TokenKind.AT)) { - directives.push(this.parseDirective(isConst)); - } - return directives; - } - parseConstDirectives() { - return this.parseDirectives(true); - } - parseDirective(isConst) { - const start = this._lexer.token; - this.expectToken(_tokenKind.TokenKind.AT); - return this.node(start, { - kind: _kinds.Kind.DIRECTIVE, - name: this.parseName(), - arguments: this.parseArguments(isConst) - }); - } - parseTypeReference() { - const start = this._lexer.token; - let type; - if (this.expectOptionalToken(_tokenKind.TokenKind.BRACKET_L)) { - const innerType = this.parseTypeReference(); - this.expectToken(_tokenKind.TokenKind.BRACKET_R); - type = this.node(start, { - kind: _kinds.Kind.LIST_TYPE, - type: innerType - }); - } else { - type = this.parseNamedType(); - } - if (this.expectOptionalToken(_tokenKind.TokenKind.BANG)) { - return this.node(start, { - kind: _kinds.Kind.NON_NULL_TYPE, - type - }); - } - return type; - } - parseNamedType() { - return this.node(this._lexer.token, { - kind: _kinds.Kind.NAMED_TYPE, - name: this.parseName() - }); - } - peekDescription() { - return this.peek(_tokenKind.TokenKind.STRING) || this.peek(_tokenKind.TokenKind.BLOCK_STRING); - } - parseDescription() { - if (this.peekDescription()) { - return this.parseStringLiteral(); - } - } - parseSchemaDefinition() { - const start = this._lexer.token; - const description = this.parseDescription(); - this.expectKeyword("schema"); - const directives = this.parseConstDirectives(); - const operationTypes = this.many( - _tokenKind.TokenKind.BRACE_L, - this.parseOperationTypeDefinition, - _tokenKind.TokenKind.BRACE_R - ); - return this.node(start, { - kind: _kinds.Kind.SCHEMA_DEFINITION, - description, - directives, - operationTypes - }); - } - parseOperationTypeDefinition() { - const start = this._lexer.token; - const operation = this.parseOperationType(); - this.expectToken(_tokenKind.TokenKind.COLON); - const type = this.parseNamedType(); - return this.node(start, { - kind: _kinds.Kind.OPERATION_TYPE_DEFINITION, - operation, - type - }); - } - parseScalarTypeDefinition() { - const start = this._lexer.token; - const description = this.parseDescription(); - this.expectKeyword("scalar"); - const name = this.parseName(); - const directives = this.parseConstDirectives(); - return this.node(start, { - kind: _kinds.Kind.SCALAR_TYPE_DEFINITION, - description, - name, - directives - }); - } - parseObjectTypeDefinition() { - const start = this._lexer.token; - const description = this.parseDescription(); - this.expectKeyword("type"); - const name = this.parseName(); - const interfaces = this.parseImplementsInterfaces(); - const directives = this.parseConstDirectives(); - const fields = this.parseFieldsDefinition(); - return this.node(start, { - kind: _kinds.Kind.OBJECT_TYPE_DEFINITION, - description, - name, - interfaces, - directives, - fields - }); - } - parseImplementsInterfaces() { - return this.expectOptionalKeyword("implements") ? this.delimitedMany(_tokenKind.TokenKind.AMP, this.parseNamedType) : []; - } - parseFieldsDefinition() { - return this.optionalMany( - _tokenKind.TokenKind.BRACE_L, - this.parseFieldDefinition, - _tokenKind.TokenKind.BRACE_R - ); - } - parseFieldDefinition() { - const start = this._lexer.token; - const description = this.parseDescription(); - const name = this.parseName(); - const args = this.parseArgumentDefs(); - this.expectToken(_tokenKind.TokenKind.COLON); - const type = this.parseTypeReference(); - const directives = this.parseConstDirectives(); - return this.node(start, { - kind: _kinds.Kind.FIELD_DEFINITION, - description, - name, - arguments: args, - type, - directives - }); - } - parseArgumentDefs() { - return this.optionalMany( - _tokenKind.TokenKind.PAREN_L, - this.parseInputValueDef, - _tokenKind.TokenKind.PAREN_R - ); - } - parseInputValueDef() { - const start = this._lexer.token; - const description = this.parseDescription(); - const name = this.parseName(); - this.expectToken(_tokenKind.TokenKind.COLON); - const type = this.parseTypeReference(); - let defaultValue; - if (this.expectOptionalToken(_tokenKind.TokenKind.EQUALS)) { - defaultValue = this.parseConstValueLiteral(); - } - const directives = this.parseConstDirectives(); - return this.node(start, { - kind: _kinds.Kind.INPUT_VALUE_DEFINITION, - description, - name, - type, - defaultValue, - directives - }); - } - parseInterfaceTypeDefinition() { - const start = this._lexer.token; - const description = this.parseDescription(); - this.expectKeyword("interface"); - const name = this.parseName(); - const interfaces = this.parseImplementsInterfaces(); - const directives = this.parseConstDirectives(); - const fields = this.parseFieldsDefinition(); - return this.node(start, { - kind: _kinds.Kind.INTERFACE_TYPE_DEFINITION, - description, - name, - interfaces, - directives, - fields - }); - } - parseUnionTypeDefinition() { - const start = this._lexer.token; - const description = this.parseDescription(); - this.expectKeyword("union"); - const name = this.parseName(); - const directives = this.parseConstDirectives(); - const types = this.parseUnionMemberTypes(); - return this.node(start, { - kind: _kinds.Kind.UNION_TYPE_DEFINITION, - description, - name, - directives, - types - }); - } - parseUnionMemberTypes() { - return this.expectOptionalToken(_tokenKind.TokenKind.EQUALS) ? this.delimitedMany(_tokenKind.TokenKind.PIPE, this.parseNamedType) : []; - } - parseEnumTypeDefinition() { - const start = this._lexer.token; - const description = this.parseDescription(); - this.expectKeyword("enum"); - const name = this.parseName(); - const directives = this.parseConstDirectives(); - const values = this.parseEnumValuesDefinition(); - return this.node(start, { - kind: _kinds.Kind.ENUM_TYPE_DEFINITION, - description, - name, - directives, - values - }); - } - parseEnumValuesDefinition() { - return this.optionalMany( - _tokenKind.TokenKind.BRACE_L, - this.parseEnumValueDefinition, - _tokenKind.TokenKind.BRACE_R - ); - } - parseEnumValueDefinition() { - const start = this._lexer.token; - const description = this.parseDescription(); - const name = this.parseEnumValueName(); - const directives = this.parseConstDirectives(); - return this.node(start, { - kind: _kinds.Kind.ENUM_VALUE_DEFINITION, - description, - name, - directives - }); - } - parseEnumValueName() { - if (this._lexer.token.value === "true" || this._lexer.token.value === "false" || this._lexer.token.value === "null") { - throw (0, _syntaxError.syntaxError)( - this._lexer.source, - this._lexer.token.start, - `${getTokenDesc2( - this._lexer.token - )} is reserved and cannot be used for an enum value.` - ); - } - return this.parseName(); - } - parseInputObjectTypeDefinition() { - const start = this._lexer.token; - const description = this.parseDescription(); - this.expectKeyword("input"); - const name = this.parseName(); - const directives = this.parseConstDirectives(); - const fields = this.parseInputFieldsDefinition(); - return this.node(start, { - kind: _kinds.Kind.INPUT_OBJECT_TYPE_DEFINITION, - description, - name, - directives, - fields - }); - } - parseInputFieldsDefinition() { - return this.optionalMany( - _tokenKind.TokenKind.BRACE_L, - this.parseInputValueDef, - _tokenKind.TokenKind.BRACE_R - ); - } - parseTypeSystemExtension() { - const keywordToken = this._lexer.lookahead(); - if (keywordToken.kind === _tokenKind.TokenKind.NAME) { - switch (keywordToken.value) { - case "schema": - return this.parseSchemaExtension(); - case "scalar": - return this.parseScalarTypeExtension(); - case "type": - return this.parseObjectTypeExtension(); - case "interface": - return this.parseInterfaceTypeExtension(); - case "union": - return this.parseUnionTypeExtension(); - case "enum": - return this.parseEnumTypeExtension(); - case "input": - return this.parseInputObjectTypeExtension(); } } - throw this.unexpected(keywordToken); - } - parseSchemaExtension() { - const start = this._lexer.token; - this.expectKeyword("extend"); - this.expectKeyword("schema"); - const directives = this.parseConstDirectives(); - const operationTypes = this.optionalMany( - _tokenKind.TokenKind.BRACE_L, - this.parseOperationTypeDefinition, - _tokenKind.TokenKind.BRACE_R - ); - if (directives.length === 0 && operationTypes.length === 0) { - throw this.unexpected(); - } - return this.node(start, { - kind: _kinds.Kind.SCHEMA_EXTENSION, - directives, - operationTypes - }); - } - parseScalarTypeExtension() { - const start = this._lexer.token; - this.expectKeyword("extend"); - this.expectKeyword("scalar"); - const name = this.parseName(); - const directives = this.parseConstDirectives(); - if (directives.length === 0) { - throw this.unexpected(); - } - return this.node(start, { - kind: _kinds.Kind.SCALAR_TYPE_EXTENSION, - name, - directives - }); + if (!registry.size) + Promise.resolve().then(checkEnd); + return firstFlushed; + }; + } + }; + let html = resolveSSRNode(escape(code())); + function doShell() { + sharedConfig.context = context; + context.noHydrate = true; + html = injectAssets(context.assets, html); + for (const key in context.resources) { + if (!("data" in context.resources[key] || context.resources[key].ref[0].error)) + pushTask(`_$HY.init("${key}")`); + } + for (const key of registry.keys()) + pushTask(`_$HY.init("${key}")`); + if (tasks.length) + html = injectScripts(html, tasks, nonce); + buffer.write(html); + tasks = ""; + scheduled = false; + onCompleteShell && onCompleteShell({ + write(v) { + !completed && buffer.write(v); } - parseObjectTypeExtension() { - const start = this._lexer.token; - this.expectKeyword("extend"); - this.expectKeyword("type"); - const name = this.parseName(); - const interfaces = this.parseImplementsInterfaces(); - const directives = this.parseConstDirectives(); - const fields = this.parseFieldsDefinition(); - if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) { - throw this.unexpected(); - } - return this.node(start, { - kind: _kinds.Kind.OBJECT_TYPE_EXTENSION, - name, - interfaces, - directives, - fields - }); + }); + } + return { + then(fn) { + function complete() { + doShell(); + fn(tmp); } - parseInterfaceTypeExtension() { - const start = this._lexer.token; - this.expectKeyword("extend"); - this.expectKeyword("interface"); - const name = this.parseName(); - const interfaces = this.parseImplementsInterfaces(); - const directives = this.parseConstDirectives(); - const fields = this.parseFieldsDefinition(); - if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) { - throw this.unexpected(); - } - return this.node(start, { - kind: _kinds.Kind.INTERFACE_TYPE_EXTENSION, - name, - interfaces, - directives, - fields - }); - } - parseUnionTypeExtension() { - const start = this._lexer.token; - this.expectKeyword("extend"); - this.expectKeyword("union"); - const name = this.parseName(); - const directives = this.parseConstDirectives(); - const types = this.parseUnionMemberTypes(); - if (directives.length === 0 && types.length === 0) { - throw this.unexpected(); - } - return this.node(start, { - kind: _kinds.Kind.UNION_TYPE_EXTENSION, - name, - directives, - types - }); - } - parseEnumTypeExtension() { - const start = this._lexer.token; - this.expectKeyword("extend"); - this.expectKeyword("enum"); - const name = this.parseName(); - const directives = this.parseConstDirectives(); - const values = this.parseEnumValuesDefinition(); - if (directives.length === 0 && values.length === 0) { - throw this.unexpected(); - } - return this.node(start, { - kind: _kinds.Kind.ENUM_TYPE_EXTENSION, - name, - directives, - values - }); - } - parseInputObjectTypeExtension() { - const start = this._lexer.token; - this.expectKeyword("extend"); - this.expectKeyword("input"); - const name = this.parseName(); - const directives = this.parseConstDirectives(); - const fields = this.parseInputFieldsDefinition(); - if (directives.length === 0 && fields.length === 0) { - throw this.unexpected(); - } - return this.node(start, { - kind: _kinds.Kind.INPUT_OBJECT_TYPE_EXTENSION, - name, - directives, - fields - }); - } - parseDirectiveDefinition() { - const start = this._lexer.token; - const description = this.parseDescription(); - this.expectKeyword("directive"); - this.expectToken(_tokenKind.TokenKind.AT); - const name = this.parseName(); - const args = this.parseArgumentDefs(); - const repeatable = this.expectOptionalKeyword("repeatable"); - this.expectKeyword("on"); - const locations = this.parseDirectiveLocations(); - return this.node(start, { - kind: _kinds.Kind.DIRECTIVE_DEFINITION, - description, - name, - arguments: args, - repeatable, - locations - }); - } - parseDirectiveLocations() { - return this.delimitedMany( - _tokenKind.TokenKind.PIPE, - this.parseDirectiveLocation - ); - } - parseDirectiveLocation() { - const start = this._lexer.token; - const name = this.parseName(); - if (Object.prototype.hasOwnProperty.call( - _directiveLocation.DirectiveLocation, - name.value - )) { - return name; - } - throw this.unexpected(start); - } - node(startToken, node) { - if (this._options.noLocation !== true) { - node.loc = new _ast.Location( - startToken, - this._lexer.lastToken, - this._lexer.source - ); - } - return node; - } - peek(kind) { - return this._lexer.token.kind === kind; - } - expectToken(kind) { - const token = this._lexer.token; - if (token.kind === kind) { - this.advanceLexer(); - return token; - } - throw (0, _syntaxError.syntaxError)( - this._lexer.source, - token.start, - `Expected ${getTokenKindDesc2(kind)}, found ${getTokenDesc2(token)}.` - ); - } - expectOptionalToken(kind) { - const token = this._lexer.token; - if (token.kind === kind) { - this.advanceLexer(); - return true; - } - return false; - } - expectKeyword(value) { - const token = this._lexer.token; - if (token.kind === _tokenKind.TokenKind.NAME && token.value === value) { - this.advanceLexer(); - } else { - throw (0, _syntaxError.syntaxError)( - this._lexer.source, - token.start, - `Expected "${value}", found ${getTokenDesc2(token)}.` - ); - } - } - expectOptionalKeyword(value) { - const token = this._lexer.token; - if (token.kind === _tokenKind.TokenKind.NAME && token.value === value) { - this.advanceLexer(); - return true; - } - return false; - } - unexpected(atToken) { - const token = atToken !== null && atToken !== void 0 ? atToken : this._lexer.token; - return (0, _syntaxError.syntaxError)( - this._lexer.source, - token.start, - `Unexpected ${getTokenDesc2(token)}.` - ); - } - any(openKind, parseFn, closeKind) { - this.expectToken(openKind); - const nodes = []; - while (!this.expectOptionalToken(closeKind)) { - nodes.push(parseFn.call(this)); - } - return nodes; - } - optionalMany(openKind, parseFn, closeKind) { - if (this.expectOptionalToken(openKind)) { - const nodes = []; - do { - nodes.push(parseFn.call(this)); - } while (!this.expectOptionalToken(closeKind)); - return nodes; - } - return []; - } - many(openKind, parseFn, closeKind) { - this.expectToken(openKind); - const nodes = []; - do { - nodes.push(parseFn.call(this)); - } while (!this.expectOptionalToken(closeKind)); - return nodes; - } - delimitedMany(delimiterKind, parseFn) { - this.expectOptionalToken(delimiterKind); - const nodes = []; - do { - nodes.push(parseFn.call(this)); - } while (this.expectOptionalToken(delimiterKind)); - return nodes; - } - advanceLexer() { - const { maxTokens } = this._options; - const token = this._lexer.advance(); - if (maxTokens !== void 0 && token.kind !== _tokenKind.TokenKind.EOF) { - ++this._tokenCounter; - if (this._tokenCounter > maxTokens) { - throw (0, _syntaxError.syntaxError)( - this._lexer.source, - token.start, - `Document contains more that ${maxTokens} tokens. Parsing aborted.` - ); + if (onCompleteAll) { + ogComplete = onCompleteAll; + onCompleteAll = (options2) => { + ogComplete(options2); + complete(); + }; + } else + onCompleteAll = complete; + if (!registry.size) + Promise.resolve().then(checkEnd); + }, + pipe(w) { + Promise.allSettled(blockingResources).then(() => { + doShell(); + buffer = writable = w; + buffer.write(tmp); + firstFlushed = true; + if (completed) + writable.end(); + else + setTimeout(checkEnd); + }); + }, + pipeTo(w) { + Promise.allSettled(blockingResources).then(() => { + doShell(); + const encoder = new TextEncoder(); + const writer = w.getWriter(); + writable = { + end() { + writer.releaseLock(); + w.close(); } - } - } - }; - exports.Parser = Parser2; - function getTokenDesc2(token) { - const value = token.value; - return getTokenKindDesc2(token.kind) + (value != null ? ` "${value}"` : ""); + }; + buffer = { + write(payload) { + writer.write(encoder.encode(payload)); + } + }; + buffer.write(tmp); + firstFlushed = true; + if (completed) + writable.end(); + else + setTimeout(checkEnd); + }); } - function getTokenKindDesc2(kind) { - return (0, _lexer.isPunctuatorTokenKind)(kind) ? `"${kind}"` : kind; + }; +} +function Assets(props) { + useAssets(() => props.children); +} +function HydrationScript(props) { + const { + nonce + } = sharedConfig.context; + return ssr(generateHydrationScript({ + nonce, + ...props + })); +} +function NoHydration(props) { + const c = sharedConfig.context; + c.noHydrate = true; + const children2 = props.children; + c.noHydrate = false; + return children2; +} +function ssr(t, ...nodes) { + if (nodes.length) { + let result = ""; + for (let i = 0; i < nodes.length; i++) { + result += t[i]; + const node = nodes[i]; + if (node !== void 0) + result += resolveSSRNode(node); } + t = result + t[nodes.length]; } -}); - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/printString.js -var require_printString = __commonJS({ - "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/printString.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.printString = printString2; - function printString2(str) { - return `"${str.replace(escapedRegExp2, escapedReplacer2)}"`; - } - var escapedRegExp2 = /[\x00-\x1f\x22\x5c\x7f-\x9f]/g; - function escapedReplacer2(str) { - return escapeSequences2[str.charCodeAt(0)]; - } - var escapeSequences2 = [ - "\\u0000", - "\\u0001", - "\\u0002", - "\\u0003", - "\\u0004", - "\\u0005", - "\\u0006", - "\\u0007", - "\\b", - "\\t", - "\\n", - "\\u000B", - "\\f", - "\\r", - "\\u000E", - "\\u000F", - "\\u0010", - "\\u0011", - "\\u0012", - "\\u0013", - "\\u0014", - "\\u0015", - "\\u0016", - "\\u0017", - "\\u0018", - "\\u0019", - "\\u001A", - "\\u001B", - "\\u001C", - "\\u001D", - "\\u001E", - "\\u001F", - "", - "", - '\\"', - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "\\\\", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "\\u007F", - "\\u0080", - "\\u0081", - "\\u0082", - "\\u0083", - "\\u0084", - "\\u0085", - "\\u0086", - "\\u0087", - "\\u0088", - "\\u0089", - "\\u008A", - "\\u008B", - "\\u008C", - "\\u008D", - "\\u008E", - "\\u008F", - "\\u0090", - "\\u0091", - "\\u0092", - "\\u0093", - "\\u0094", - "\\u0095", - "\\u0096", - "\\u0097", - "\\u0098", - "\\u0099", - "\\u009A", - "\\u009B", - "\\u009C", - "\\u009D", - "\\u009E", - "\\u009F" - ]; + return { + t + }; +} +function ssrClassList(value) { + if (!value) + return ""; + let classKeys = Object.keys(value), result = ""; + for (let i = 0, len = classKeys.length; i < len; i++) { + const key = classKeys[i], classValue = !!value[key]; + if (!key || !classValue) + continue; + i && (result += " "); + result += key; } -}); - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/visitor.js -var require_visitor = __commonJS({ - "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/visitor.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.BREAK = void 0; - exports.getEnterLeaveForKind = getEnterLeaveForKind2; - exports.getVisitFn = getVisitFn2; - exports.visit = visit2; - exports.visitInParallel = visitInParallel2; - var _devAssert = require_devAssert(); - var _inspect = require_inspect(); - var _ast = require_ast(); - var _kinds = require_kinds(); - var BREAK2 = Object.freeze({}); - exports.BREAK = BREAK2; - function visit2(root, visitor, visitorKeys = _ast.QueryDocumentKeys) { - const enterLeaveMap = /* @__PURE__ */ new Map(); - for (const kind of Object.values(_kinds.Kind)) { - enterLeaveMap.set(kind, getEnterLeaveForKind2(visitor, kind)); - } - let stack = void 0; - let inArray = Array.isArray(root); - let keys = [root]; - let index = -1; - let edits = []; - let node = root; - let key = void 0; - let parent = void 0; - const path = []; - const ancestors = []; - do { - index++; - const isLeaving = index === keys.length; - const isEdited = isLeaving && edits.length !== 0; - if (isLeaving) { - key = ancestors.length === 0 ? void 0 : path[path.length - 1]; - node = parent; - parent = ancestors.pop(); - if (isEdited) { - if (inArray) { - node = node.slice(); - let editOffset = 0; - for (const [editKey, editValue] of edits) { - const arrayKey = editKey - editOffset; - if (editValue === null) { - node.splice(arrayKey, 1); - editOffset++; - } else { - node[arrayKey] = editValue; - } - } - } else { - node = Object.defineProperties( - {}, - Object.getOwnPropertyDescriptors(node) - ); - for (const [editKey, editValue] of edits) { - node[editKey] = editValue; - } - } - } - index = stack.index; - keys = stack.keys; - edits = stack.edits; - inArray = stack.inArray; - stack = stack.prev; - } else if (parent) { - key = inArray ? index : keys[index]; - node = parent[key]; - if (node === null || node === void 0) { - continue; - } - path.push(key); - } - let result; - if (!Array.isArray(node)) { - var _enterLeaveMap$get, _enterLeaveMap$get2; - (0, _ast.isNode)(node) || (0, _devAssert.devAssert)( - false, - `Invalid AST Node: ${(0, _inspect.inspect)(node)}.` - ); - const visitFn = isLeaving ? (_enterLeaveMap$get = enterLeaveMap.get(node.kind)) === null || _enterLeaveMap$get === void 0 ? void 0 : _enterLeaveMap$get.leave : (_enterLeaveMap$get2 = enterLeaveMap.get(node.kind)) === null || _enterLeaveMap$get2 === void 0 ? void 0 : _enterLeaveMap$get2.enter; - result = visitFn === null || visitFn === void 0 ? void 0 : visitFn.call(visitor, node, key, parent, path, ancestors); - if (result === BREAK2) { - break; - } - if (result === false) { - if (!isLeaving) { - path.pop(); - continue; - } - } else if (result !== void 0) { - edits.push([key, result]); - if (!isLeaving) { - if ((0, _ast.isNode)(result)) { - node = result; - } else { - path.pop(); - continue; - } - } - } - } - if (result === void 0 && isEdited) { - edits.push([key, node]); - } - if (isLeaving) { - path.pop(); - } else { - var _node$kind; - stack = { - inArray, - index, - keys, - edits, - prev: stack - }; - inArray = Array.isArray(node); - keys = inArray ? node : (_node$kind = visitorKeys[node.kind]) !== null && _node$kind !== void 0 ? _node$kind : []; - index = -1; - edits = []; - if (parent) { - ancestors.push(parent); - } - parent = node; - } - } while (stack !== void 0); - if (edits.length !== 0) { - return edits[edits.length - 1][1]; - } - return root; - } - function visitInParallel2(visitors) { - const skipping = new Array(visitors.length).fill(null); - const mergedVisitor = /* @__PURE__ */ Object.create(null); - for (const kind of Object.values(_kinds.Kind)) { - let hasVisitor = false; - const enterList = new Array(visitors.length).fill(void 0); - const leaveList = new Array(visitors.length).fill(void 0); - for (let i = 0; i < visitors.length; ++i) { - const { enter, leave } = getEnterLeaveForKind2(visitors[i], kind); - hasVisitor || (hasVisitor = enter != null || leave != null); - enterList[i] = enter; - leaveList[i] = leave; - } - if (!hasVisitor) { - continue; - } - const mergedEnterLeave = { - enter(...args) { - const node = args[0]; - for (let i = 0; i < visitors.length; i++) { - if (skipping[i] === null) { - var _enterList$i; - const result = (_enterList$i = enterList[i]) === null || _enterList$i === void 0 ? void 0 : _enterList$i.apply(visitors[i], args); - if (result === false) { - skipping[i] = node; - } else if (result === BREAK2) { - skipping[i] = BREAK2; - } else if (result !== void 0) { - return result; - } - } - } - }, - leave(...args) { - const node = args[0]; - for (let i = 0; i < visitors.length; i++) { - if (skipping[i] === null) { - var _leaveList$i; - const result = (_leaveList$i = leaveList[i]) === null || _leaveList$i === void 0 ? void 0 : _leaveList$i.apply(visitors[i], args); - if (result === BREAK2) { - skipping[i] = BREAK2; - } else if (result !== void 0 && result !== false) { - return result; - } - } else if (skipping[i] === node) { - skipping[i] = null; - } - } - } - }; - mergedVisitor[kind] = mergedEnterLeave; - } - return mergedVisitor; + return result; +} +function ssrStyle(value) { + if (!value) + return ""; + if (typeof value === "string") + return value; + let result = ""; + const k = Object.keys(value); + for (let i = 0; i < k.length; i++) { + const s = k[i]; + if (i) + result += ";"; + result += `${s}:${escape(value[s], true)}`; + } + return result; +} +function ssrElement(tag, props, children2, needsId) { + let result = `<${tag}${needsId ? ssrHydrationKey() : ""} `; + if (props == null) + props = {}; + else if (typeof props === "function") + props = props(); + const keys = Object.keys(props); + let classResolved; + for (let i = 0; i < keys.length; i++) { + const prop = keys[i]; + if (ChildProperties.has(prop)) { + if (children2 === void 0) + children2 = prop === "innerHTML" ? props[prop] : escape(props[prop]); + continue; } - function getEnterLeaveForKind2(visitor, kind) { - const kindVisitor = visitor[kind]; - if (typeof kindVisitor === "object") { - return kindVisitor; - } else if (typeof kindVisitor === "function") { - return { - enter: kindVisitor, - leave: void 0 - }; - } + const value = props[prop]; + if (prop === "style") { + result += `style="${ssrStyle(value)}"`; + } else if (prop === "class" || prop === "className" || prop === "classList") { + if (classResolved) + continue; + let n; + result += `class="${(n = props.class) ? n + " " : ""}${(n = props.className) ? n + " " : ""}${ssrClassList(props.classList)}"`; + classResolved = true; + } else if (BooleanAttributes.has(prop)) { + if (value) + result += prop; + else + continue; + } else if (value == void 0 || prop === "ref" || prop.slice(0, 2) === "on") { + continue; + } else { + result += `${Aliases[prop] || prop}="${escape(value, true)}"`; + } + if (i !== keys.length - 1) + result += " "; + } + return { + t: result + `>${resolveSSRNode(children2)}` + }; +} +function ssrAttribute(key, value, isBoolean) { + return isBoolean ? value ? " " + key : "" : value != null ? ` ${key}="${value}"` : ""; +} +function ssrHydrationKey() { + const hk = getHydrationKey(); + return hk ? ` data-hk="${hk}"` : ""; +} +function escape(s, attr) { + const t = typeof s; + if (t !== "string") { + if (!attr && t === "function") + return escape(s(), attr); + if (!attr && Array.isArray(s)) { + let r = ""; + for (let i = 0; i < s.length; i++) + r += resolveSSRNode(escape(s[i], attr)); return { - enter: visitor.enter, - leave: visitor.leave + t: r }; } - function getVisitFn2(visitor, kind, isLeaving) { - const { enter, leave } = getEnterLeaveForKind2(visitor, kind); - return isLeaving ? leave : enter; - } + if (attr && t === "boolean") + return String(s); + return s; } -}); - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/printer.js -var require_printer = __commonJS({ - "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/printer.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.print = print2; - var _blockString = require_blockString(); - var _printString = require_printString(); - var _visitor = require_visitor(); - function print2(ast) { - return (0, _visitor.visit)(ast, printDocASTReducer3); - } - var MAX_LINE_LENGTH3 = 80; - var printDocASTReducer3 = { - Name: { - leave: (node) => node.value - }, - Variable: { - leave: (node) => "$" + node.name - }, - Document: { - leave: (node) => join3(node.definitions, "\n\n") - }, - OperationDefinition: { - leave(node) { - const varDefs = wrap3("(", join3(node.variableDefinitions, ", "), ")"); - const prefix2 = join3( - [ - node.operation, - join3([node.name, varDefs]), - join3(node.directives, " ") - ], - " " - ); - return (prefix2 === "query" ? "" : prefix2 + " ") + node.selectionSet; - } - }, - VariableDefinition: { - leave: ({ variable, type, defaultValue, directives }) => variable + ": " + type + wrap3(" = ", defaultValue) + wrap3(" ", join3(directives, " ")) - }, - SelectionSet: { - leave: ({ selections }) => block3(selections) - }, - Field: { - leave({ alias, name, arguments: args, directives, selectionSet }) { - const prefix2 = wrap3("", alias, ": ") + name; - let argsLine = prefix2 + wrap3("(", join3(args, ", "), ")"); - if (argsLine.length > MAX_LINE_LENGTH3) { - argsLine = prefix2 + wrap3("(\n", indent3(join3(args, "\n")), "\n)"); - } - return join3([argsLine, join3(directives, " "), selectionSet], " "); - } - }, - Argument: { - leave: ({ name, value }) => name + ": " + value - }, - FragmentSpread: { - leave: ({ name, directives }) => "..." + name + wrap3(" ", join3(directives, " ")) - }, - InlineFragment: { - leave: ({ typeCondition, directives, selectionSet }) => join3( - [ - "...", - wrap3("on ", typeCondition), - join3(directives, " "), - selectionSet - ], - " " - ) - }, - FragmentDefinition: { - leave: ({ name, typeCondition, variableDefinitions, directives, selectionSet }) => `fragment ${name}${wrap3("(", join3(variableDefinitions, ", "), ")")} on ${typeCondition} ${wrap3("", join3(directives, " "), " ")}` + selectionSet - }, - IntValue: { - leave: ({ value }) => value - }, - FloatValue: { - leave: ({ value }) => value - }, - StringValue: { - leave: ({ value, block: isBlockString }) => isBlockString ? (0, _blockString.printBlockString)(value) : (0, _printString.printString)(value) - }, - BooleanValue: { - leave: ({ value }) => value ? "true" : "false" - }, - NullValue: { - leave: () => "null" - }, - EnumValue: { - leave: ({ value }) => value - }, - ListValue: { - leave: ({ values }) => "[" + join3(values, ", ") + "]" - }, - ObjectValue: { - leave: ({ fields }) => "{" + join3(fields, ", ") + "}" - }, - ObjectField: { - leave: ({ name, value }) => name + ": " + value - }, - Directive: { - leave: ({ name, arguments: args }) => "@" + name + wrap3("(", join3(args, ", "), ")") - }, - NamedType: { - leave: ({ name }) => name - }, - ListType: { - leave: ({ type }) => "[" + type + "]" - }, - NonNullType: { - leave: ({ type }) => type + "!" - }, - SchemaDefinition: { - leave: ({ description, directives, operationTypes }) => wrap3("", description, "\n") + join3(["schema", join3(directives, " "), block3(operationTypes)], " ") - }, - OperationTypeDefinition: { - leave: ({ operation, type }) => operation + ": " + type - }, - ScalarTypeDefinition: { - leave: ({ description, name, directives }) => wrap3("", description, "\n") + join3(["scalar", name, join3(directives, " ")], " ") - }, - ObjectTypeDefinition: { - leave: ({ description, name, interfaces, directives, fields }) => wrap3("", description, "\n") + join3( - [ - "type", - name, - wrap3("implements ", join3(interfaces, " & ")), - join3(directives, " "), - block3(fields) - ], - " " - ) - }, - FieldDefinition: { - leave: ({ description, name, arguments: args, type, directives }) => wrap3("", description, "\n") + name + (hasMultilineItems3(args) ? wrap3("(\n", indent3(join3(args, "\n")), "\n)") : wrap3("(", join3(args, ", "), ")")) + ": " + type + wrap3(" ", join3(directives, " ")) - }, - InputValueDefinition: { - leave: ({ description, name, type, defaultValue, directives }) => wrap3("", description, "\n") + join3( - [name + ": " + type, wrap3("= ", defaultValue), join3(directives, " ")], - " " - ) - }, - InterfaceTypeDefinition: { - leave: ({ description, name, interfaces, directives, fields }) => wrap3("", description, "\n") + join3( - [ - "interface", - name, - wrap3("implements ", join3(interfaces, " & ")), - join3(directives, " "), - block3(fields) - ], - " " - ) - }, - UnionTypeDefinition: { - leave: ({ description, name, directives, types }) => wrap3("", description, "\n") + join3( - ["union", name, join3(directives, " "), wrap3("= ", join3(types, " | "))], - " " - ) - }, - EnumTypeDefinition: { - leave: ({ description, name, directives, values }) => wrap3("", description, "\n") + join3(["enum", name, join3(directives, " "), block3(values)], " ") - }, - EnumValueDefinition: { - leave: ({ description, name, directives }) => wrap3("", description, "\n") + join3([name, join3(directives, " ")], " ") - }, - InputObjectTypeDefinition: { - leave: ({ description, name, directives, fields }) => wrap3("", description, "\n") + join3(["input", name, join3(directives, " "), block3(fields)], " ") - }, - DirectiveDefinition: { - leave: ({ description, name, arguments: args, repeatable, locations }) => wrap3("", description, "\n") + "directive @" + name + (hasMultilineItems3(args) ? wrap3("(\n", indent3(join3(args, "\n")), "\n)") : wrap3("(", join3(args, ", "), ")")) + (repeatable ? " repeatable" : "") + " on " + join3(locations, " | ") - }, - SchemaExtension: { - leave: ({ directives, operationTypes }) => join3( - ["extend schema", join3(directives, " "), block3(operationTypes)], - " " - ) - }, - ScalarTypeExtension: { - leave: ({ name, directives }) => join3(["extend scalar", name, join3(directives, " ")], " ") - }, - ObjectTypeExtension: { - leave: ({ name, interfaces, directives, fields }) => join3( - [ - "extend type", - name, - wrap3("implements ", join3(interfaces, " & ")), - join3(directives, " "), - block3(fields) - ], - " " - ) - }, - InterfaceTypeExtension: { - leave: ({ name, interfaces, directives, fields }) => join3( - [ - "extend interface", - name, - wrap3("implements ", join3(interfaces, " & ")), - join3(directives, " "), - block3(fields) - ], - " " - ) - }, - UnionTypeExtension: { - leave: ({ name, directives, types }) => join3( - [ - "extend union", - name, - join3(directives, " "), - wrap3("= ", join3(types, " | ")) - ], - " " - ) - }, - EnumTypeExtension: { - leave: ({ name, directives, values }) => join3(["extend enum", name, join3(directives, " "), block3(values)], " ") - }, - InputObjectTypeExtension: { - leave: ({ name, directives, fields }) => join3(["extend input", name, join3(directives, " "), block3(fields)], " ") - } - }; - function join3(maybeArray, separator = "") { - var _maybeArray$filter$jo; - return (_maybeArray$filter$jo = maybeArray === null || maybeArray === void 0 ? void 0 : maybeArray.filter((x) => x).join(separator)) !== null && _maybeArray$filter$jo !== void 0 ? _maybeArray$filter$jo : ""; - } - function block3(array) { - return wrap3("{\n", indent3(join3(array, "\n")), "\n}"); - } - function wrap3(start, maybeString, end = "") { - return maybeString != null && maybeString !== "" ? start + maybeString + end : ""; + const delim = attr ? '"' : "<"; + const escDelim = attr ? """ : "<"; + let iDelim = s.indexOf(delim); + let iAmp = s.indexOf("&"); + if (iDelim < 0 && iAmp < 0) + return s; + let left = 0, out = ""; + while (iDelim >= 0 && iAmp >= 0) { + if (iDelim < iAmp) { + if (left < iDelim) + out += s.substring(left, iDelim); + out += escDelim; + left = iDelim + 1; + iDelim = s.indexOf(delim, left); + } else { + if (left < iAmp) + out += s.substring(left, iAmp); + out += "&"; + left = iAmp + 1; + iAmp = s.indexOf("&", left); } - function indent3(str) { - return wrap3(" ", str.replace(/\n/g, "\n ")); + } + if (iDelim >= 0) { + do { + if (left < iDelim) + out += s.substring(left, iDelim); + out += escDelim; + left = iDelim + 1; + iDelim = s.indexOf(delim, left); + } while (iDelim >= 0); + } else + while (iAmp >= 0) { + if (left < iAmp) + out += s.substring(left, iAmp); + out += "&"; + left = iAmp + 1; + iAmp = s.indexOf("&", left); } - function hasMultilineItems3(maybeArray) { - var _maybeArray$some; - return (_maybeArray$some = maybeArray === null || maybeArray === void 0 ? void 0 : maybeArray.some((str) => str.includes("\n"))) !== null && _maybeArray$some !== void 0 ? _maybeArray$some : false; + return left < s.length ? out + s.substring(left) : out; +} +function resolveSSRNode(node) { + const t = typeof node; + if (t === "string") + return node; + if (node == null || t === "boolean") + return ""; + if (Array.isArray(node)) { + let mapped = ""; + for (let i = 0, len = node.length; i < len; i++) + mapped += resolveSSRNode(node[i]); + return mapped; + } + if (t === "object") + return node.t; + if (t === "function") + return resolveSSRNode(node()); + return String(node); +} +function getHydrationKey() { + const hydrate = sharedConfig.context; + return hydrate && !hydrate.noHydrate && `${hydrate.id}${hydrate.count++}`; +} +function useAssets(fn) { + sharedConfig.context.assets.push(() => resolveSSRNode(fn())); +} +function generateHydrationScript({ + eventNames = ["click", "input"], + nonce +} = {}) { + return `var e,t;e=window._$HY||(_$HY={events:[],completed:new WeakSet,r:{}}),t=e=>e&&e.hasAttribute&&(e.hasAttribute("data-hk")?e:t(e.host&&e.host instanceof Node?e.host:e.parentNode)),["${eventNames.join('","')}"].forEach((o=>document.addEventListener(o,(o=>{let s=o.composedPath&&o.composedPath()[0]||o.target,a=t(s);a&&!e.completed.has(a)&&e.events.push([a,o])})))),e.init=(t,o)=>{e.r[t]=[new Promise(((e,t)=>o=e)),o]},e.set=(t,o,s)=>{(s=e.r[t])&&s[1](o),e.r[t]=[o]},e.unset=t=>{delete e.r[t]},e.load=t=>e.r[t];<\/script>`; +} +function injectAssets(assets, html) { + if (!assets || !assets.length) + return html; + let out = ""; + for (let i = 0, len = assets.length; i < len; i++) + out += assets[i](); + return html.replace(``, out + ``); +} +function injectScripts(html, scripts, nonce) { + const tag = `${scripts}<\/script>`; + const index = html.indexOf(""); + if (index > -1) { + return html.slice(0, index) + tag + html.slice(index); + } + return html + tag; +} +function serializeError(error) { + if (error.message) { + const fields = {}; + const keys = Object.getOwnPropertyNames(error); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + const value = error[key]; + if (!value || key !== "message" && typeof value !== "function") { + fields[key] = value; + } } + return `Object.assign(new Error(${stringify(error.message)}), ${stringify(fields)})`; } -}); - -// node_modules/.pnpm/extract-files@9.0.0/node_modules/extract-files/public/ReactNativeFile.js -var require_ReactNativeFile = __commonJS({ - "node_modules/.pnpm/extract-files@9.0.0/node_modules/extract-files/public/ReactNativeFile.js"(exports, module) { - "use strict"; - module.exports = function ReactNativeFile(_ref) { - var uri = _ref.uri, name = _ref.name, type = _ref.type; - this.uri = uri; - this.name = name; - this.type = type; - }; + return stringify(error); +} +function waitForFragments(registry, key) { + for (const k of [...registry.keys()].reverse()) { + if (key.startsWith(k)) { + registry.get(k).push(key); + return true; + } } -}); - -// node_modules/.pnpm/extract-files@9.0.0/node_modules/extract-files/public/isExtractableFile.js -var require_isExtractableFile = __commonJS({ - "node_modules/.pnpm/extract-files@9.0.0/node_modules/extract-files/public/isExtractableFile.js"(exports, module) { - "use strict"; - var ReactNativeFile = require_ReactNativeFile(); - module.exports = function isExtractableFile(value) { - return typeof File !== "undefined" && value instanceof File || typeof Blob !== "undefined" && value instanceof Blob || value instanceof ReactNativeFile; - }; + return false; +} +function serializeSet(registry, key, value, serializer = stringify) { + const exist = registry.get(value); + if (exist) + return `_$HY.set("${key}", _$HY.r["${exist}"][0])`; + value !== null && typeof value === "object" && registry.set(value, key); + return `_$HY.set("${key}", ${serializer(value)})`; +} +function replacePlaceholder(html, key, value) { + const nextRegex = /(<[/]?span[^>]*>)/g; + const marker = ``; + const first = html.indexOf(marker); + if (first === -1) + return html; + nextRegex.lastIndex = first + marker.length; + let match; + let open = 0, close = 0; + while (match = nextRegex.exec(html)) { + if (match[0][1] === "/") { + close++; + if (close > open) + break; + } else + open++; } -}); - -// node_modules/.pnpm/extract-files@9.0.0/node_modules/extract-files/public/extractFiles.js -var require_extractFiles = __commonJS({ - "node_modules/.pnpm/extract-files@9.0.0/node_modules/extract-files/public/extractFiles.js"(exports, module) { - "use strict"; - var defaultIsExtractableFile = require_isExtractableFile(); - module.exports = function extractFiles(value, path, isExtractableFile) { - if (path === void 0) { - path = ""; - } - if (isExtractableFile === void 0) { - isExtractableFile = defaultIsExtractableFile; - } - var clone; - var files = /* @__PURE__ */ new Map(); - function addFile(paths, file) { - var storedPaths = files.get(file); - if (storedPaths) - storedPaths.push.apply(storedPaths, paths); - else - files.set(file, paths); + return html.slice(0, first) + value + html.slice(nextRegex.lastIndex); +} +var isServer = true; +var dist = {}; +var browserPonyfill = { exports: {} }; +(function(module, exports) { + var global2 = typeof self !== "undefined" ? self : commonjsGlobal; + var __self__ = function() { + function F() { + this.fetch = false; + this.DOMException = global2.DOMException; + } + F.prototype = global2; + return new F(); + }(); + (function(self2) { + (function(exports2) { + var support = { + searchParams: "URLSearchParams" in self2, + iterable: "Symbol" in self2 && "iterator" in Symbol, + blob: "FileReader" in self2 && "Blob" in self2 && function() { + try { + new Blob(); + return true; + } catch (e) { + return false; + } + }(), + formData: "FormData" in self2, + arrayBuffer: "ArrayBuffer" in self2 + }; + function isDataView(obj) { + return obj && DataView.prototype.isPrototypeOf(obj); + } + if (support.arrayBuffer) { + var viewClasses = [ + "[object Int8Array]", + "[object Uint8Array]", + "[object Uint8ClampedArray]", + "[object Int16Array]", + "[object Uint16Array]", + "[object Int32Array]", + "[object Uint32Array]", + "[object Float32Array]", + "[object Float64Array]" + ]; + var isArrayBufferView = ArrayBuffer.isView || function(obj) { + return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1; + }; } - if (isExtractableFile(value)) { - clone = null; - addFile([path], value); - } else { - var prefix2 = path ? path + "." : ""; - if (typeof FileList !== "undefined" && value instanceof FileList) - clone = Array.prototype.map.call(value, function(file, i2) { - addFile(["" + prefix2 + i2], file); - return null; - }); - else if (Array.isArray(value)) - clone = value.map(function(child, i2) { - var result2 = extractFiles(child, "" + prefix2 + i2, isExtractableFile); - result2.files.forEach(addFile); - return result2.clone; - }); - else if (value && value.constructor === Object) { - clone = {}; - for (var i in value) { - var result = extractFiles(value[i], "" + prefix2 + i, isExtractableFile); - result.files.forEach(addFile); - clone[i] = result.clone; + function normalizeName(name) { + if (typeof name !== "string") { + name = String(name); + } + if (/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(name)) { + throw new TypeError("Invalid character in header field name"); + } + return name.toLowerCase(); + } + function normalizeValue(value) { + if (typeof value !== "string") { + value = String(value); + } + return value; + } + function iteratorFor(items) { + var iterator2 = { + next: function() { + var value = items.shift(); + return { done: value === void 0, value }; } - } else - clone = value; + }; + if (support.iterable) { + iterator2[Symbol.iterator] = function() { + return iterator2; + }; + } + return iterator2; } - return { - clone, - files + function Headers2(headers) { + this.map = {}; + if (headers instanceof Headers2) { + headers.forEach(function(value, name) { + this.append(name, value); + }, this); + } else if (Array.isArray(headers)) { + headers.forEach(function(header) { + this.append(header[0], header[1]); + }, this); + } else if (headers) { + Object.getOwnPropertyNames(headers).forEach(function(name) { + this.append(name, headers[name]); + }, this); + } + } + Headers2.prototype.append = function(name, value) { + name = normalizeName(name); + value = normalizeValue(value); + var oldValue = this.map[name]; + this.map[name] = oldValue ? oldValue + ", " + value : value; }; - }; - } -}); - -// node_modules/.pnpm/extract-files@9.0.0/node_modules/extract-files/public/index.js -var require_public = __commonJS({ - "node_modules/.pnpm/extract-files@9.0.0/node_modules/extract-files/public/index.js"(exports) { - "use strict"; - exports.ReactNativeFile = require_ReactNativeFile(); - exports.extractFiles = require_extractFiles(); - exports.isExtractableFile = require_isExtractableFile(); - } -}); - -// node_modules/.pnpm/form-data@3.0.1/node_modules/form-data/lib/browser.js -var require_browser = __commonJS({ - "node_modules/.pnpm/form-data@3.0.1/node_modules/form-data/lib/browser.js"(exports, module) { - module.exports = typeof self == "object" ? self.FormData : window.FormData; - } -}); - -// node_modules/.pnpm/graphql-request@5.0.0_graphql@16.6.0/node_modules/graphql-request/dist/defaultJsonSerializer.js -var require_defaultJsonSerializer = __commonJS({ - "node_modules/.pnpm/graphql-request@5.0.0_graphql@16.6.0/node_modules/graphql-request/dist/defaultJsonSerializer.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.defaultJsonSerializer = void 0; - exports.defaultJsonSerializer = { - parse: JSON.parse, - stringify: JSON.stringify - }; - } -}); - -// node_modules/.pnpm/graphql-request@5.0.0_graphql@16.6.0/node_modules/graphql-request/dist/createRequestBody.js -var require_createRequestBody = __commonJS({ - "node_modules/.pnpm/graphql-request@5.0.0_graphql@16.6.0/node_modules/graphql-request/dist/createRequestBody.js"(exports) { - "use strict"; - var __importDefault = exports && exports.__importDefault || function(mod) { - return mod && mod.__esModule ? mod : { "default": mod }; - }; - Object.defineProperty(exports, "__esModule", { value: true }); - var extract_files_1 = require_public(); - var form_data_1 = __importDefault(require_browser()); - var defaultJsonSerializer_1 = require_defaultJsonSerializer(); - var isExtractableFileEnhanced = function(value) { - return extract_files_1.isExtractableFile(value) || value !== null && typeof value === "object" && typeof value.pipe === "function"; - }; - function createRequestBody(query, variables, operationName, jsonSerializer) { - if (jsonSerializer === void 0) { - jsonSerializer = defaultJsonSerializer_1.defaultJsonSerializer; - } - var _a2 = extract_files_1.extractFiles({ query, variables, operationName }, "", isExtractableFileEnhanced), clone = _a2.clone, files = _a2.files; - if (files.size === 0) { - if (!Array.isArray(query)) { - return jsonSerializer.stringify(clone); - } - if (typeof variables !== "undefined" && !Array.isArray(variables)) { - throw new Error("Cannot create request body with given variable type, array expected"); - } - var payload = query.reduce(function(accu, currentQuery, index) { - accu.push({ query: currentQuery, variables: variables ? variables[index] : void 0 }); - return accu; - }, []); - return jsonSerializer.stringify(payload); - } - var Form = typeof FormData === "undefined" ? form_data_1.default : FormData; - var form = new Form(); - form.append("operations", jsonSerializer.stringify(clone)); - var map2 = {}; - var i = 0; - files.forEach(function(paths) { - map2[++i] = paths; - }); - form.append("map", jsonSerializer.stringify(map2)); - i = 0; - files.forEach(function(paths, file) { - form.append("" + ++i, file); - }); - return form; - } - exports.default = createRequestBody; - } -}); - -// node_modules/.pnpm/graphql-request@5.0.0_graphql@16.6.0/node_modules/graphql-request/dist/parseArgs.js -var require_parseArgs = __commonJS({ - "node_modules/.pnpm/graphql-request@5.0.0_graphql@16.6.0/node_modules/graphql-request/dist/parseArgs.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.parseBatchRequestsExtendedArgs = exports.parseRawRequestExtendedArgs = exports.parseRequestExtendedArgs = exports.parseBatchRequestArgs = exports.parseRawRequestArgs = exports.parseRequestArgs = void 0; - function parseRequestArgs(documentOrOptions, variables, requestHeaders) { - return documentOrOptions.document ? documentOrOptions : { - document: documentOrOptions, - variables, - requestHeaders, - signal: void 0 - }; - } - exports.parseRequestArgs = parseRequestArgs; - function parseRawRequestArgs(queryOrOptions, variables, requestHeaders) { - return queryOrOptions.query ? queryOrOptions : { - query: queryOrOptions, - variables, - requestHeaders, - signal: void 0 + Headers2.prototype["delete"] = function(name) { + delete this.map[normalizeName(name)]; }; - } - exports.parseRawRequestArgs = parseRawRequestArgs; - function parseBatchRequestArgs(documentsOrOptions, requestHeaders) { - return documentsOrOptions.documents ? documentsOrOptions : { - documents: documentsOrOptions, - requestHeaders, - signal: void 0 + Headers2.prototype.get = function(name) { + name = normalizeName(name); + return this.has(name) ? this.map[name] : null; }; - } - exports.parseBatchRequestArgs = parseBatchRequestArgs; - function parseRequestExtendedArgs(urlOrOptions, document2, variables, requestHeaders) { - return urlOrOptions.document ? urlOrOptions : { - url: urlOrOptions, - document: document2, - variables, - requestHeaders, - signal: void 0 + Headers2.prototype.has = function(name) { + return this.map.hasOwnProperty(normalizeName(name)); }; - } - exports.parseRequestExtendedArgs = parseRequestExtendedArgs; - function parseRawRequestExtendedArgs(urlOrOptions, query, variables, requestHeaders) { - return urlOrOptions.query ? urlOrOptions : { - url: urlOrOptions, - query, - variables, - requestHeaders, - signal: void 0 + Headers2.prototype.set = function(name, value) { + this.map[normalizeName(name)] = normalizeValue(value); }; - } - exports.parseRawRequestExtendedArgs = parseRawRequestExtendedArgs; - function parseBatchRequestsExtendedArgs(urlOrOptions, documents, requestHeaders) { - return urlOrOptions.documents ? urlOrOptions : { - url: urlOrOptions, - documents, - requestHeaders, - signal: void 0 + Headers2.prototype.forEach = function(callback, thisArg) { + for (var name in this.map) { + if (this.map.hasOwnProperty(name)) { + callback.call(thisArg, this.map[name], name, this); + } + } }; - } - exports.parseBatchRequestsExtendedArgs = parseBatchRequestsExtendedArgs; - } -}); - -// node_modules/.pnpm/graphql-request@5.0.0_graphql@16.6.0/node_modules/graphql-request/dist/types.js -var require_types2 = __commonJS({ - "node_modules/.pnpm/graphql-request@5.0.0_graphql@16.6.0/node_modules/graphql-request/dist/types.js"(exports) { - "use strict"; - var __extends2 = exports && exports.__extends || function() { - var extendStatics2 = function(d, b) { - extendStatics2 = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) { - d2.__proto__ = b2; - } || function(d2, b2) { - for (var p in b2) - if (Object.prototype.hasOwnProperty.call(b2, p)) - d2[p] = b2[p]; - }; - return extendStatics2(d, b); + Headers2.prototype.keys = function() { + var items = []; + this.forEach(function(value, name) { + items.push(name); + }); + return iteratorFor(items); }; - return function(d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics2(d, b); - function __() { - this.constructor = d; - } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + Headers2.prototype.values = function() { + var items = []; + this.forEach(function(value) { + items.push(value); + }); + return iteratorFor(items); }; - }(); - Object.defineProperty(exports, "__esModule", { value: true }); - exports.ClientError = void 0; - var ClientError = function(_super) { - __extends2(ClientError2, _super); - function ClientError2(response, request2) { - var _this = this; - var message = ClientError2.extractMessage(response) + ": " + JSON.stringify({ - response, - request: request2 + Headers2.prototype.entries = function() { + var items = []; + this.forEach(function(value, name) { + items.push([name, value]); }); - _this = _super.call(this, message) || this; - Object.setPrototypeOf(_this, ClientError2.prototype); - _this.response = response; - _this.request = request2; - if (typeof Error.captureStackTrace === "function") { - Error.captureStackTrace(_this, ClientError2); - } - return _this; - } - ClientError2.extractMessage = function(response) { - try { - return response.errors[0].message; - } catch (e) { - return "GraphQL Error (Code: " + response.status + ")"; - } + return iteratorFor(items); }; - return ClientError2; - }(Error); - exports.ClientError = ClientError; - } -}); - -// node_modules/.pnpm/graphql-request@5.0.0_graphql@16.6.0/node_modules/graphql-request/dist/graphql-ws.js -var require_graphql_ws = __commonJS({ - "node_modules/.pnpm/graphql-request@5.0.0_graphql@16.6.0/node_modules/graphql-request/dist/graphql-ws.js"(exports) { - "use strict"; - var __assign = exports && exports.__assign || function() { - __assign = Object.assign || function(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) - if (Object.prototype.hasOwnProperty.call(s, p)) - t[p] = s[p]; + if (support.iterable) { + Headers2.prototype[Symbol.iterator] = Headers2.prototype.entries; + } + function consumed(body) { + if (body.bodyUsed) { + return Promise.reject(new TypeError("Already read")); } - return t; - }; - return __assign.apply(this, arguments); - }; - var __awaiter2 = exports && exports.__awaiter || function(thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P ? value : new P(function(resolve) { - resolve(value); + body.bodyUsed = true; + } + function fileReaderReady(reader) { + return new Promise(function(resolve, reject2) { + reader.onload = function() { + resolve(reader.result); + }; + reader.onerror = function() { + reject2(reader.error); + }; }); } - return new (P || (P = Promise))(function(resolve, reject2) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject2(e); - } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject2(e); + function readBlobAsArrayBuffer(blob) { + var reader = new FileReader(); + var promise = fileReaderReady(reader); + reader.readAsArrayBuffer(blob); + return promise; + } + function readBlobAsText(blob) { + var reader = new FileReader(); + var promise = fileReaderReady(reader); + reader.readAsText(blob); + return promise; + } + function readArrayBufferAsText(buf) { + var view = new Uint8Array(buf); + var chars = new Array(view.length); + for (var i = 0; i < view.length; i++) { + chars[i] = String.fromCharCode(view[i]); + } + return chars.join(""); + } + function bufferClone(buf) { + if (buf.slice) { + return buf.slice(0); + } else { + var view = new Uint8Array(buf.byteLength); + view.set(new Uint8Array(buf)); + return view.buffer; + } + } + function Body2() { + this.bodyUsed = false; + this._initBody = function(body) { + this._bodyInit = body; + if (!body) { + this._bodyText = ""; + } else if (typeof body === "string") { + this._bodyText = body; + } else if (support.blob && Blob.prototype.isPrototypeOf(body)) { + this._bodyBlob = body; + } else if (support.formData && FormData.prototype.isPrototypeOf(body)) { + this._bodyFormData = body; + } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) { + this._bodyText = body.toString(); + } else if (support.arrayBuffer && support.blob && isDataView(body)) { + this._bodyArrayBuffer = bufferClone(body.buffer); + this._bodyInit = new Blob([this._bodyArrayBuffer]); + } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) { + this._bodyArrayBuffer = bufferClone(body); + } else { + this._bodyText = body = Object.prototype.toString.call(body); } - } - function step(result) { - result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - }; - var __generator2 = exports && exports.__generator || function(thisArg, body) { - var _ = { label: 0, sent: function() { - if (t[0] & 1) - throw t[1]; - return t[1]; - }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { - return this; - }), g; - function verb(n) { - return function(v) { - return step([n, v]); - }; - } - function step(op) { - if (f) - throw new TypeError("Generator is already executing."); - while (_) - try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) - return t; - if (y = 0, t) - op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: - case 1: - t = op; - break; - case 4: - _.label++; - return { value: op[1], done: false }; - case 5: - _.label++; - y = op[1]; - op = [0]; - continue; - case 7: - op = _.ops.pop(); - _.trys.pop(); - continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { - _ = 0; - continue; - } - if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { - _.label = op[1]; - break; - } - if (op[0] === 6 && _.label < t[1]) { - _.label = t[1]; - t = op; - break; - } - if (t && _.label < t[2]) { - _.label = t[2]; - _.ops.push(op); - break; - } - if (t[2]) - _.ops.pop(); - _.trys.pop(); - continue; + if (!this.headers.get("content-type")) { + if (typeof body === "string") { + this.headers.set("content-type", "text/plain;charset=UTF-8"); + } else if (this._bodyBlob && this._bodyBlob.type) { + this.headers.set("content-type", this._bodyBlob.type); + } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) { + this.headers.set("content-type", "application/x-www-form-urlencoded;charset=UTF-8"); } - op = body.call(thisArg, _); - } catch (e) { - op = [6, e]; - y = 0; - } finally { - f = t = 0; } - if (op[0] & 5) - throw op[1]; - return { value: op[0] ? op[1] : void 0, done: true }; - } - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.GraphQLWebSocketClient = void 0; - var types_1 = require_types2(); - var _1 = require_dist2(); - var CONNECTION_INIT = "connection_init"; - var CONNECTION_ACK = "connection_ack"; - var PING = "ping"; - var PONG = "pong"; - var SUBSCRIBE = "subscribe"; - var NEXT = "next"; - var ERROR2 = "error"; - var COMPLETE = "complete"; - var GraphQLWebSocketMessage = function() { - function GraphQLWebSocketMessage2(type, payload, id) { - this._type = type; - this._payload = payload; - this._id = id; - } - Object.defineProperty(GraphQLWebSocketMessage2.prototype, "type", { - get: function() { - return this._type; - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(GraphQLWebSocketMessage2.prototype, "id", { - get: function() { - return this._id; - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(GraphQLWebSocketMessage2.prototype, "payload", { - get: function() { - return this._payload; - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(GraphQLWebSocketMessage2.prototype, "text", { - get: function() { - var result = { type: this.type }; - if (this.id != null && this.id != void 0) - result.id = this.id; - if (this.payload != null && this.payload != void 0) - result.payload = this.payload; - return JSON.stringify(result); - }, - enumerable: false, - configurable: true - }); - GraphQLWebSocketMessage2.parse = function(data, f) { - var _a2 = JSON.parse(data), type = _a2.type, payload = _a2.payload, id = _a2.id; - return new GraphQLWebSocketMessage2(type, f(payload), id); - }; - return GraphQLWebSocketMessage2; - }(); - var GraphQLWebSocketClient = function() { - function GraphQLWebSocketClient2(socket, _a2) { - var _this = this; - var onInit = _a2.onInit, onAcknowledged = _a2.onAcknowledged, onPing = _a2.onPing, onPong = _a2.onPong; - this.socketState = { acknowledged: false, lastRequestId: 0, subscriptions: {} }; - this.socket = socket; - socket.onopen = function(e) { - return __awaiter2(_this, void 0, void 0, function() { - var _a3, _b, _c, _d; - return __generator2(this, function(_e) { - switch (_e.label) { - case 0: - this.socketState.acknowledged = false; - this.socketState.subscriptions = {}; - _b = (_a3 = socket).send; - _c = ConnectionInit; - if (!onInit) - return [3, 2]; - return [4, onInit()]; - case 1: - _d = _e.sent(); - return [3, 3]; - case 2: - _d = null; - _e.label = 3; - case 3: - _b.apply(_a3, [_c.apply(void 0, [_d]).text]); - return [2]; - } - }); - }); - }; - socket.onclose = function(e) { - _this.socketState.acknowledged = false; - _this.socketState.subscriptions = {}; - }; - socket.onerror = function(e) { - console.error(e); }; - socket.onmessage = function(e) { - try { - var message = parseMessage(e.data); - switch (message.type) { - case CONNECTION_ACK: { - if (_this.socketState.acknowledged) { - console.warn("Duplicate CONNECTION_ACK message ignored"); - } else { - _this.socketState.acknowledged = true; - if (onAcknowledged) - onAcknowledged(message.payload); - } - return; - } - case PING: { - if (onPing) - onPing(message.payload).then(function(r) { - return socket.send(Pong(r).text); - }); - else - socket.send(Pong(null).text); - return; - } - case PONG: { - if (onPong) - onPong(message.payload); - return; - } - } - if (!_this.socketState.acknowledged) { - return; + if (support.blob) { + this.blob = function() { + var rejected = consumed(this); + if (rejected) { + return rejected; } - if (message.id === void 0 || message.id === null || !_this.socketState.subscriptions[message.id]) { - return; + if (this._bodyBlob) { + return Promise.resolve(this._bodyBlob); + } else if (this._bodyArrayBuffer) { + return Promise.resolve(new Blob([this._bodyArrayBuffer])); + } else if (this._bodyFormData) { + throw new Error("could not read FormData body as blob"); + } else { + return Promise.resolve(new Blob([this._bodyText])); } - var _a3 = _this.socketState.subscriptions[message.id], query = _a3.query, variables = _a3.variables, subscriber = _a3.subscriber; - switch (message.type) { - case NEXT: { - if (!message.payload.errors && message.payload.data) { - subscriber.next && subscriber.next(message.payload.data); - } - if (message.payload.errors) { - subscriber.error && subscriber.error(new types_1.ClientError(__assign(__assign({}, message.payload), { status: 200 }), { query, variables })); - } else { - } - return; - } - case ERROR2: { - subscriber.error && subscriber.error(new types_1.ClientError({ errors: message.payload, status: 200 }, { query, variables })); - return; - } - case COMPLETE: { - subscriber.complete && subscriber.complete(); - delete _this.socketState.subscriptions[message.id]; - return; - } + }; + this.arrayBuffer = function() { + if (this._bodyArrayBuffer) { + return consumed(this) || Promise.resolve(this._bodyArrayBuffer); + } else { + return this.blob().then(readBlobAsArrayBuffer); } - } catch (e2) { - console.error(e2); - socket.close(1006); + }; + } + this.text = function() { + var rejected = consumed(this); + if (rejected) { + return rejected; + } + if (this._bodyBlob) { + return readBlobAsText(this._bodyBlob); + } else if (this._bodyArrayBuffer) { + return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer)); + } else if (this._bodyFormData) { + throw new Error("could not read FormData body as text"); + } else { + return Promise.resolve(this._bodyText); } - socket.close(4400, "Unknown graphql-ws message."); }; - } - GraphQLWebSocketClient2.prototype.makeSubscribe = function(query, operationName, variables, subscriber) { - var _this = this; - var subscriptionId = (this.socketState.lastRequestId++).toString(); - this.socketState.subscriptions[subscriptionId] = { query, variables, subscriber }; - this.socket.send(Subscribe(subscriptionId, { query, operationName, variables }).text); - return function() { - _this.socket.send(Complete(subscriptionId).text); - delete _this.socketState.subscriptions[subscriptionId]; + if (support.formData) { + this.formData = function() { + return this.text().then(decode); + }; + } + this.json = function() { + return this.text().then(JSON.parse); }; + return this; + } + var methods = ["DELETE", "GET", "HEAD", "OPTIONS", "POST", "PUT"]; + function normalizeMethod(method) { + var upcased = method.toUpperCase(); + return methods.indexOf(upcased) > -1 ? upcased : method; + } + function Request2(input, options) { + options = options || {}; + var body = options.body; + if (input instanceof Request2) { + if (input.bodyUsed) { + throw new TypeError("Already read"); + } + this.url = input.url; + this.credentials = input.credentials; + if (!options.headers) { + this.headers = new Headers2(input.headers); + } + this.method = input.method; + this.mode = input.mode; + this.signal = input.signal; + if (!body && input._bodyInit != null) { + body = input._bodyInit; + input.bodyUsed = true; + } + } else { + this.url = String(input); + } + this.credentials = options.credentials || this.credentials || "same-origin"; + if (options.headers || !this.headers) { + this.headers = new Headers2(options.headers); + } + this.method = normalizeMethod(options.method || this.method || "GET"); + this.mode = options.mode || this.mode || null; + this.signal = options.signal || this.signal; + this.referrer = null; + if ((this.method === "GET" || this.method === "HEAD") && body) { + throw new TypeError("Body not allowed for GET or HEAD requests"); + } + this._initBody(body); + } + Request2.prototype.clone = function() { + return new Request2(this, { body: this._bodyInit }); }; - GraphQLWebSocketClient2.prototype.rawRequest = function(query, variables) { - var _this = this; - return new Promise(function(resolve, reject2) { - var result; - _this.rawSubscribe(query, { - next: function(data, extensions) { - return result = { data, extensions }; - }, - error: reject2, - complete: function() { - return resolve(result); - } - }, variables); + function decode(body) { + var form = new FormData(); + body.trim().split("&").forEach(function(bytes) { + if (bytes) { + var split = bytes.split("="); + var name = split.shift().replace(/\+/g, " "); + var value = split.join("=").replace(/\+/g, " "); + form.append(decodeURIComponent(name), decodeURIComponent(value)); + } }); - }; - GraphQLWebSocketClient2.prototype.request = function(document2, variables) { - var _this = this; - return new Promise(function(resolve, reject2) { - var result; - _this.subscribe(document2, { - next: function(data) { - return result = data; - }, - error: reject2, - complete: function() { - return resolve(result); - } - }, variables); + return form; + } + function parseHeaders(rawHeaders) { + var headers = new Headers2(); + var preProcessedHeaders = rawHeaders.replace(/\r?\n[\t ]+/g, " "); + preProcessedHeaders.split(/\r?\n/).forEach(function(line) { + var parts = line.split(":"); + var key = parts.shift().trim(); + if (key) { + var value = parts.join(":").trim(); + headers.append(key, value); + } + }); + return headers; + } + Body2.call(Request2.prototype); + function Response2(bodyInit, options) { + if (!options) { + options = {}; + } + this.type = "default"; + this.status = options.status === void 0 ? 200 : options.status; + this.ok = this.status >= 200 && this.status < 300; + this.statusText = "statusText" in options ? options.statusText : "OK"; + this.headers = new Headers2(options.headers); + this.url = options.url || ""; + this._initBody(bodyInit); + } + Body2.call(Response2.prototype); + Response2.prototype.clone = function() { + return new Response2(this._bodyInit, { + status: this.status, + statusText: this.statusText, + headers: new Headers2(this.headers), + url: this.url }); }; - GraphQLWebSocketClient2.prototype.subscribe = function(document2, subscriber, variables) { - var _a2 = _1.resolveRequestDocument(document2), query = _a2.query, operationName = _a2.operationName; - return this.makeSubscribe(query, operationName, variables, subscriber); - }; - GraphQLWebSocketClient2.prototype.rawSubscribe = function(query, subscriber, variables) { - return this.makeSubscribe(query, void 0, variables, subscriber); - }; - GraphQLWebSocketClient2.prototype.ping = function(payload) { - this.socket.send(Ping(payload).text); + Response2.error = function() { + var response = new Response2(null, { status: 0, statusText: "" }); + response.type = "error"; + return response; }; - GraphQLWebSocketClient2.prototype.close = function() { - this.socket.close(1e3); + var redirectStatuses = [301, 302, 303, 307, 308]; + Response2.redirect = function(url, status) { + if (redirectStatuses.indexOf(status) === -1) { + throw new RangeError("Invalid status code"); + } + return new Response2(null, { status, headers: { location: url } }); }; - GraphQLWebSocketClient2.PROTOCOL = "graphql-transport-ws"; - return GraphQLWebSocketClient2; - }(); - exports.GraphQLWebSocketClient = GraphQLWebSocketClient; - function parseMessage(data, f) { - if (f === void 0) { - f = function(a) { - return a; + exports2.DOMException = self2.DOMException; + try { + new exports2.DOMException(); + } catch (err) { + exports2.DOMException = function(message, name) { + this.message = message; + this.name = name; + var error = Error(message); + this.stack = error.stack; }; + exports2.DOMException.prototype = Object.create(Error.prototype); + exports2.DOMException.prototype.constructor = exports2.DOMException; } - var m = GraphQLWebSocketMessage.parse(data, f); - return m; - } - function ConnectionInit(payload) { - return new GraphQLWebSocketMessage(CONNECTION_INIT, payload); - } - function Ping(payload) { - return new GraphQLWebSocketMessage(PING, payload, void 0); - } - function Pong(payload) { - return new GraphQLWebSocketMessage(PONG, payload, void 0); - } - function Subscribe(id, payload) { - return new GraphQLWebSocketMessage(SUBSCRIBE, payload, id); - } - function Complete(id) { - return new GraphQLWebSocketMessage(COMPLETE, void 0, id); - } - } -}); - -// node_modules/.pnpm/graphql-request@5.0.0_graphql@16.6.0/node_modules/graphql-request/dist/index.js -var require_dist2 = __commonJS({ - "node_modules/.pnpm/graphql-request@5.0.0_graphql@16.6.0/node_modules/graphql-request/dist/index.js"(exports) { - "use strict"; - var __assign = exports && exports.__assign || function() { - __assign = Object.assign || function(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) - if (Object.prototype.hasOwnProperty.call(s, p)) - t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); - }; - var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) { - if (k2 === void 0) - k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { - return m[k]; - } }); - } : function(o, m, k, k2) { - if (k2 === void 0) - k2 = k; - o[k2] = m[k]; - }); - var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); - } : function(o, v) { - o["default"] = v; - }); - var __importStar = exports && exports.__importStar || function(mod) { - if (mod && mod.__esModule) - return mod; - var result = {}; - if (mod != null) { - for (var k in mod) - if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) - __createBinding(result, mod, k); - } - __setModuleDefault(result, mod); - return result; - }; - var __awaiter2 = exports && exports.__awaiter || function(thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P ? value : new P(function(resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function(resolve, reject2) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject2(e); + function fetch2(input, init) { + return new Promise(function(resolve, reject2) { + var request = new Request2(input, init); + if (request.signal && request.signal.aborted) { + return reject2(new exports2.DOMException("Aborted", "AbortError")); } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject2(e); + var xhr = new XMLHttpRequest(); + function abortXhr() { + xhr.abort(); } - } - function step(result) { - result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - }; - var __generator2 = exports && exports.__generator || function(thisArg, body) { - var _ = { label: 0, sent: function() { - if (t[0] & 1) - throw t[1]; - return t[1]; - }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { - return this; - }), g; - function verb(n) { - return function(v) { - return step([n, v]); - }; - } - function step(op) { - if (f) - throw new TypeError("Generator is already executing."); - while (_) - try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) - return t; - if (y = 0, t) - op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: - case 1: - t = op; - break; - case 4: - _.label++; - return { value: op[1], done: false }; - case 5: - _.label++; - y = op[1]; - op = [0]; - continue; - case 7: - op = _.ops.pop(); - _.trys.pop(); - continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { - _ = 0; - continue; - } - if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { - _.label = op[1]; - break; - } - if (op[0] === 6 && _.label < t[1]) { - _.label = t[1]; - t = op; - break; - } - if (t && _.label < t[2]) { - _.label = t[2]; - _.ops.push(op); - break; - } - if (t[2]) - _.ops.pop(); - _.trys.pop(); - continue; - } - op = body.call(thisArg, _); - } catch (e) { - op = [6, e]; - y = 0; - } finally { - f = t = 0; + xhr.onload = function() { + var options = { + status: xhr.status, + statusText: xhr.statusText, + headers: parseHeaders(xhr.getAllResponseHeaders() || "") + }; + options.url = "responseURL" in xhr ? xhr.responseURL : options.headers.get("X-Request-URL"); + var body = "response" in xhr ? xhr.response : xhr.responseText; + resolve(new Response2(body, options)); + }; + xhr.onerror = function() { + reject2(new TypeError("Network request failed")); + }; + xhr.ontimeout = function() { + reject2(new TypeError("Network request failed")); + }; + xhr.onabort = function() { + reject2(new exports2.DOMException("Aborted", "AbortError")); + }; + xhr.open(request.method, request.url, true); + if (request.credentials === "include") { + xhr.withCredentials = true; + } else if (request.credentials === "omit") { + xhr.withCredentials = false; } - if (op[0] & 5) - throw op[1]; - return { value: op[0] ? op[1] : void 0, done: true }; - } - }; - var __rest = exports && exports.__rest || function(s, e) { - var t = {}; - for (var p in s) - if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) - t[p] = s[p]; - if (s != null && typeof Object.getOwnPropertySymbols === "function") - for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { - if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) - t[p[i]] = s[p[i]]; - } - return t; - }; - var __importDefault = exports && exports.__importDefault || function(mod) { - return mod && mod.__esModule ? mod : { "default": mod }; - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.GraphQLWebSocketClient = exports.gql = exports.resolveRequestDocument = exports.batchRequests = exports.request = exports.rawRequest = exports.GraphQLClient = exports.ClientError = void 0; - var cross_fetch_1 = __importStar(require_browser_ponyfill()); - var CrossFetch = cross_fetch_1; - var parser_1 = require_parser(); - var printer_1 = require_printer(); - var createRequestBody_1 = __importDefault(require_createRequestBody()); - var defaultJsonSerializer_1 = require_defaultJsonSerializer(); - var parseArgs_1 = require_parseArgs(); - var types_1 = require_types2(); - Object.defineProperty(exports, "ClientError", { enumerable: true, get: function() { - return types_1.ClientError; - } }); - var resolveHeaders = function(headers) { - var oHeaders = {}; - if (headers) { - if (typeof Headers !== "undefined" && headers instanceof Headers || CrossFetch && CrossFetch.Headers && headers instanceof CrossFetch.Headers) { - oHeaders = HeadersInstanceToPlainObject(headers); - } else if (Array.isArray(headers)) { - headers.forEach(function(_a2) { - var name = _a2[0], value = _a2[1]; - oHeaders[name] = value; - }); - } else { - oHeaders = headers; - } - } - return oHeaders; - }; - var queryCleanner = function(str) { - return str.replace(/([\s,]|#[^\n\r]+)+/g, " ").trim(); - }; - var buildGetQueryParams = function(_a2) { - var query = _a2.query, variables = _a2.variables, operationName = _a2.operationName, jsonSerializer = _a2.jsonSerializer; - if (!Array.isArray(query)) { - var search = ["query=" + encodeURIComponent(queryCleanner(query))]; - if (variables) { - search.push("variables=" + encodeURIComponent(jsonSerializer.stringify(variables))); - } - if (operationName) { - search.push("operationName=" + encodeURIComponent(operationName)); - } - return search.join("&"); - } - if (typeof variables !== "undefined" && !Array.isArray(variables)) { - throw new Error("Cannot create query with given variable type, array expected"); - } - var payload = query.reduce(function(accu, currentQuery, index) { - accu.push({ - query: queryCleanner(currentQuery), - variables: variables ? jsonSerializer.stringify(variables[index]) : void 0 - }); - return accu; - }, []); - return "query=" + encodeURIComponent(jsonSerializer.stringify(payload)); - }; - var post2 = function(_a2) { - var url = _a2.url, query = _a2.query, variables = _a2.variables, operationName = _a2.operationName, headers = _a2.headers, fetch3 = _a2.fetch, fetchOptions = _a2.fetchOptions, middleware = _a2.middleware; - return __awaiter2(void 0, void 0, void 0, function() { - var body, options; - return __generator2(this, function(_b) { - switch (_b.label) { - case 0: - body = createRequestBody_1.default(query, variables, operationName, fetchOptions.jsonSerializer); - options = __assign({ method: "POST", headers: __assign(__assign({}, typeof body === "string" ? { "Content-Type": "application/json" } : {}), headers), body }, fetchOptions); - if (!middleware) - return [3, 2]; - return [4, Promise.resolve(middleware(options))]; - case 1: - options = _b.sent(); - _b.label = 2; - case 2: - return [4, fetch3(url, options)]; - case 3: - return [2, _b.sent()]; + if ("responseType" in xhr && support.blob) { + xhr.responseType = "blob"; } - }); - }); - }; - var get2 = function(_a2) { - var url = _a2.url, query = _a2.query, variables = _a2.variables, operationName = _a2.operationName, headers = _a2.headers, fetch3 = _a2.fetch, fetchOptions = _a2.fetchOptions, middleware = _a2.middleware; - return __awaiter2(void 0, void 0, void 0, function() { - var queryParams, options; - return __generator2(this, function(_b) { - switch (_b.label) { - case 0: - queryParams = buildGetQueryParams({ - query, - variables, - operationName, - jsonSerializer: fetchOptions.jsonSerializer - }); - options = __assign({ method: "GET", headers }, fetchOptions); - if (!middleware) - return [3, 2]; - return [4, Promise.resolve(middleware(options))]; - case 1: - options = _b.sent(); - _b.label = 2; - case 2: - return [4, fetch3(url + "?" + queryParams, options)]; - case 3: - return [2, _b.sent()]; + request.headers.forEach(function(value, name) { + xhr.setRequestHeader(name, value); + }); + if (request.signal) { + request.signal.addEventListener("abort", abortXhr); + xhr.onreadystatechange = function() { + if (xhr.readyState === 4) { + request.signal.removeEventListener("abort", abortXhr); + } + }; } + xhr.send(typeof request._bodyInit === "undefined" ? null : request._bodyInit); }); - }); - }; - var GraphQLClient = function() { - function GraphQLClient2(url, options) { - if (options === void 0) { - options = {}; - } - this.url = url; - this.options = options; } - GraphQLClient2.prototype.rawRequest = function(queryOrOptions, variables, requestHeaders) { - return __awaiter2(this, void 0, void 0, function() { - var rawRequestOptions, _a2, headers, _b, fetch3, _c, method, requestMiddleware, responseMiddleware, fetchOptions, url, operationName; - return __generator2(this, function(_d) { - rawRequestOptions = parseArgs_1.parseRawRequestArgs(queryOrOptions, variables, requestHeaders); - _a2 = this.options, headers = _a2.headers, _b = _a2.fetch, fetch3 = _b === void 0 ? cross_fetch_1.default : _b, _c = _a2.method, method = _c === void 0 ? "POST" : _c, requestMiddleware = _a2.requestMiddleware, responseMiddleware = _a2.responseMiddleware, fetchOptions = __rest(_a2, ["headers", "fetch", "method", "requestMiddleware", "responseMiddleware"]); - url = this.url; - if (rawRequestOptions.signal !== void 0) { - fetchOptions.signal = rawRequestOptions.signal; - } - operationName = resolveRequestDocument(rawRequestOptions.query).operationName; - return [2, makeRequest({ - url, - query: rawRequestOptions.query, - variables: rawRequestOptions.variables, - headers: __assign(__assign({}, resolveHeaders(callOrIdentity(headers))), resolveHeaders(rawRequestOptions.requestHeaders)), - operationName, - fetch: fetch3, - method, - fetchOptions, - middleware: requestMiddleware - }).then(function(response) { - if (responseMiddleware) { - responseMiddleware(response); - } - return response; - }).catch(function(error) { - if (responseMiddleware) { - responseMiddleware(error); - } - throw error; - })]; - }); - }); - }; - GraphQLClient2.prototype.request = function(documentOrOptions) { - var variablesAndRequestHeaders = []; - for (var _i = 1; _i < arguments.length; _i++) { - variablesAndRequestHeaders[_i - 1] = arguments[_i]; - } - var variables = variablesAndRequestHeaders[0], requestHeaders = variablesAndRequestHeaders[1]; - var requestOptions = parseArgs_1.parseRequestArgs(documentOrOptions, variables, requestHeaders); - var _a2 = this.options, headers = _a2.headers, _b = _a2.fetch, fetch3 = _b === void 0 ? cross_fetch_1.default : _b, _c = _a2.method, method = _c === void 0 ? "POST" : _c, requestMiddleware = _a2.requestMiddleware, responseMiddleware = _a2.responseMiddleware, fetchOptions = __rest(_a2, ["headers", "fetch", "method", "requestMiddleware", "responseMiddleware"]); - var url = this.url; - if (requestOptions.signal !== void 0) { - fetchOptions.signal = requestOptions.signal; - } - var _d = resolveRequestDocument(requestOptions.document), query = _d.query, operationName = _d.operationName; - return makeRequest({ - url, - query, - variables: requestOptions.variables, - headers: __assign(__assign({}, resolveHeaders(callOrIdentity(headers))), resolveHeaders(requestOptions.requestHeaders)), - operationName, - fetch: fetch3, - method, - fetchOptions, - middleware: requestMiddleware - }).then(function(response) { - if (responseMiddleware) { - responseMiddleware(response); - } - return response.data; - }).catch(function(error) { - if (responseMiddleware) { - responseMiddleware(error); - } - throw error; - }); - }; - GraphQLClient2.prototype.batchRequests = function(documentsOrOptions, requestHeaders) { - var batchRequestOptions = parseArgs_1.parseBatchRequestArgs(documentsOrOptions, requestHeaders); - var _a2 = this.options, headers = _a2.headers, _b = _a2.fetch, fetch3 = _b === void 0 ? cross_fetch_1.default : _b, _c = _a2.method, method = _c === void 0 ? "POST" : _c, requestMiddleware = _a2.requestMiddleware, responseMiddleware = _a2.responseMiddleware, fetchOptions = __rest(_a2, ["headers", "fetch", "method", "requestMiddleware", "responseMiddleware"]); - var url = this.url; - if (batchRequestOptions.signal !== void 0) { - fetchOptions.signal = batchRequestOptions.signal; - } - var queries = batchRequestOptions.documents.map(function(_a3) { - var document2 = _a3.document; - return resolveRequestDocument(document2).query; - }); - var variables = batchRequestOptions.documents.map(function(_a3) { - var variables2 = _a3.variables; - return variables2; - }); - return makeRequest({ - url, - query: queries, - variables, - headers: __assign(__assign({}, resolveHeaders(callOrIdentity(headers))), resolveHeaders(batchRequestOptions.requestHeaders)), - operationName: void 0, - fetch: fetch3, - method, - fetchOptions, - middleware: requestMiddleware - }).then(function(response) { - if (responseMiddleware) { - responseMiddleware(response); - } - return response.data; - }).catch(function(error) { - if (responseMiddleware) { - responseMiddleware(error); - } - throw error; - }); - }; - GraphQLClient2.prototype.setHeaders = function(headers) { - this.options.headers = headers; - return this; - }; - GraphQLClient2.prototype.setHeader = function(key, value) { - var _a2; - var headers = this.options.headers; - if (headers) { - headers[key] = value; - } else { - this.options.headers = (_a2 = {}, _a2[key] = value, _a2); - } - return this; - }; - GraphQLClient2.prototype.setEndpoint = function(value) { - this.url = value; - return this; - }; - return GraphQLClient2; - }(); - exports.GraphQLClient = GraphQLClient; - function makeRequest(_a2) { - var url = _a2.url, query = _a2.query, variables = _a2.variables, headers = _a2.headers, operationName = _a2.operationName, fetch3 = _a2.fetch, _b = _a2.method, method = _b === void 0 ? "POST" : _b, fetchOptions = _a2.fetchOptions, middleware = _a2.middleware; - return __awaiter2(this, void 0, void 0, function() { - var fetcher, isBathchingQuery, response, result, successfullyReceivedData, successfullyPassedErrorPolicy, headers_1, status_1, errors, rest, data, errorResult; - return __generator2(this, function(_c) { - switch (_c.label) { - case 0: - fetcher = method.toUpperCase() === "POST" ? post2 : get2; - isBathchingQuery = Array.isArray(query); - return [4, fetcher({ - url, - query, - variables, - operationName, - headers, - fetch: fetch3, - fetchOptions, - middleware - })]; - case 1: - response = _c.sent(); - return [4, getResult(response, fetchOptions.jsonSerializer)]; - case 2: - result = _c.sent(); - successfullyReceivedData = isBathchingQuery && Array.isArray(result) ? !result.some(function(_a3) { - var data2 = _a3.data; - return !data2; - }) : !!result.data; - successfullyPassedErrorPolicy = !result.errors || fetchOptions.errorPolicy === "all" || fetchOptions.errorPolicy === "ignore"; - if (response.ok && successfullyPassedErrorPolicy && successfullyReceivedData) { - headers_1 = response.headers, status_1 = response.status; - errors = result.errors, rest = __rest(result, ["errors"]); - data = fetchOptions.errorPolicy === "ignore" ? rest : result; - return [2, __assign(__assign({}, isBathchingQuery ? { data } : data), { headers: headers_1, status: status_1 })]; - } else { - errorResult = typeof result === "string" ? { error: result } : result; - throw new types_1.ClientError(__assign(__assign({}, errorResult), { status: response.status, headers: response.headers }), { query, variables }); - } - return [2]; - } - }); - }); - } - function rawRequest(urlOrOptions, query, variables, requestHeaders) { - return __awaiter2(this, void 0, void 0, function() { - var requestOptions, client; - return __generator2(this, function(_a2) { - requestOptions = parseArgs_1.parseRawRequestExtendedArgs(urlOrOptions, query, variables, requestHeaders); - client = new GraphQLClient(requestOptions.url); - return [2, client.rawRequest(__assign({}, requestOptions))]; - }); - }); - } - exports.rawRequest = rawRequest; - function request2(urlOrOptions, document2) { - var variablesAndRequestHeaders = []; - for (var _i = 2; _i < arguments.length; _i++) { - variablesAndRequestHeaders[_i - 2] = arguments[_i]; - } - return __awaiter2(this, void 0, void 0, function() { - var variables, requestHeaders, requestOptions, client; - return __generator2(this, function(_a2) { - variables = variablesAndRequestHeaders[0], requestHeaders = variablesAndRequestHeaders[1]; - requestOptions = parseArgs_1.parseRequestExtendedArgs(urlOrOptions, document2, variables, requestHeaders); - client = new GraphQLClient(requestOptions.url); - return [2, client.request(__assign({}, requestOptions))]; - }); - }); - } - exports.request = request2; - function batchRequests(urlOrOptions, documents, requestHeaders) { - return __awaiter2(this, void 0, void 0, function() { - var requestOptions, client; - return __generator2(this, function(_a2) { - requestOptions = parseArgs_1.parseBatchRequestsExtendedArgs(urlOrOptions, documents, requestHeaders); - client = new GraphQLClient(requestOptions.url); - return [2, client.batchRequests(__assign({}, requestOptions))]; - }); - }); + fetch2.polyfill = true; + if (!self2.fetch) { + self2.fetch = fetch2; + self2.Headers = Headers2; + self2.Request = Request2; + self2.Response = Response2; + } + exports2.Headers = Headers2; + exports2.Request = Request2; + exports2.Response = Response2; + exports2.fetch = fetch2; + Object.defineProperty(exports2, "__esModule", { value: true }); + return exports2; + })({}); + })(__self__); + __self__.fetch.ponyfill = true; + delete __self__.fetch.polyfill; + var ctx = __self__; + exports = ctx.fetch; + exports.default = ctx.fetch; + exports.fetch = ctx.fetch; + exports.Headers = ctx.Headers; + exports.Request = ctx.Request; + exports.Response = ctx.Response; + module.exports = exports; +})(browserPonyfill, browserPonyfill.exports); +function isObjectLike(value) { + return typeof value == "object" && value !== null; +} +function invariant$1(condition, message) { + const booleanCondition = Boolean(condition); + if (!booleanCondition) { + throw new Error( + message != null ? message : "Unexpected invariant triggered." + ); + } +} +var LineRegExp = /\r\n|[\n\r]/g; +function getLocation(source, position) { + let lastLineStart = 0; + let line = 1; + for (const match of source.body.matchAll(LineRegExp)) { + typeof match.index === "number" || invariant$1(false); + if (match.index >= position) { + break; } - exports.batchRequests = batchRequests; - exports.default = request2; - function getResult(response, jsonSerializer) { - if (jsonSerializer === void 0) { - jsonSerializer = defaultJsonSerializer_1.defaultJsonSerializer; - } - return __awaiter2(this, void 0, void 0, function() { - var contentType, _a2, _b; - return __generator2(this, function(_c) { - switch (_c.label) { - case 0: - response.headers.forEach(function(value, key) { - if (key.toLowerCase() === "content-type") { - contentType = value; - } - }); - if (!(contentType && contentType.toLowerCase().startsWith("application/json"))) - return [3, 2]; - _b = (_a2 = jsonSerializer).parse; - return [4, response.text()]; - case 1: - return [2, _b.apply(_a2, [_c.sent()])]; - case 2: - return [2, response.text()]; - } - }); - }); + lastLineStart = match.index + match[0].length; + line += 1; + } + return { + line, + column: position + 1 - lastLineStart + }; +} +function printLocation(location) { + return printSourceLocation( + location.source, + getLocation(location.source, location.start) + ); +} +function printSourceLocation(source, sourceLocation) { + const firstLineColumnOffset = source.locationOffset.column - 1; + const body = "".padStart(firstLineColumnOffset) + source.body; + const lineIndex = sourceLocation.line - 1; + const lineOffset = source.locationOffset.line - 1; + const lineNum = sourceLocation.line + lineOffset; + const columnOffset = sourceLocation.line === 1 ? firstLineColumnOffset : 0; + const columnNum = sourceLocation.column + columnOffset; + const locationStr = `${source.name}:${lineNum}:${columnNum} +`; + const lines = body.split(/\r\n|[\n\r]/g); + const locationLine = lines[lineIndex]; + if (locationLine.length > 120) { + const subLineIndex = Math.floor(columnNum / 80); + const subLineColumnNum = columnNum % 80; + const subLines = []; + for (let i = 0; i < locationLine.length; i += 80) { + subLines.push(locationLine.slice(i, i + 80)); } - function extractOperationName(document2) { - var _a2; - var operationName = void 0; - var operationDefinitions = document2.definitions.filter(function(definition) { - return definition.kind === "OperationDefinition"; - }); - if (operationDefinitions.length === 1) { - operationName = (_a2 = operationDefinitions[0].name) === null || _a2 === void 0 ? void 0 : _a2.value; - } - return operationName; - } - function resolveRequestDocument(document2) { - if (typeof document2 === "string") { - var operationName_1 = void 0; - try { - var parsedDocument = parser_1.parse(document2); - operationName_1 = extractOperationName(parsedDocument); - } catch (err) { - } - return { query: document2, operationName: operationName_1 }; - } - var operationName = extractOperationName(document2); - return { query: printer_1.print(document2), operationName }; - } - exports.resolveRequestDocument = resolveRequestDocument; - function callOrIdentity(value) { - return typeof value === "function" ? value() : value; - } - function gql2(chunks) { - var variables = []; - for (var _i = 1; _i < arguments.length; _i++) { - variables[_i - 1] = arguments[_i]; + return locationStr + printPrefixedLines([ + [`${lineNum} |`, subLines[0]], + ...subLines.slice(1, subLineIndex + 1).map((subLine) => ["|", subLine]), + ["|", "^".padStart(subLineColumnNum)], + ["|", subLines[subLineIndex + 1]] + ]); + } + return locationStr + printPrefixedLines([ + [`${lineNum - 1} |`, lines[lineIndex - 1]], + [`${lineNum} |`, locationLine], + ["|", "^".padStart(columnNum)], + [`${lineNum + 1} |`, lines[lineIndex + 1]] + ]); +} +function printPrefixedLines(lines) { + const existingLines = lines.filter(([_, line]) => line !== void 0); + const padLen = Math.max(...existingLines.map(([prefix2]) => prefix2.length)); + return existingLines.map(([prefix2, line]) => prefix2.padStart(padLen) + (line ? " " + line : "")).join("\n"); +} +function toNormalizedOptions(args) { + const firstArg = args[0]; + if (firstArg == null || "kind" in firstArg || "length" in firstArg) { + return { + nodes: firstArg, + source: args[1], + positions: args[2], + path: args[3], + originalError: args[4], + extensions: args[5] + }; + } + return firstArg; +} +var GraphQLError = class extends Error { + constructor(message, ...rawArgs) { + var _this$nodes, _nodeLocations$, _ref; + const { nodes, source, positions, path, originalError, extensions } = toNormalizedOptions(rawArgs); + super(message); + this.name = "GraphQLError"; + this.path = path !== null && path !== void 0 ? path : void 0; + this.originalError = originalError !== null && originalError !== void 0 ? originalError : void 0; + this.nodes = undefinedIfEmpty( + Array.isArray(nodes) ? nodes : nodes ? [nodes] : void 0 + ); + const nodeLocations = undefinedIfEmpty( + (_this$nodes = this.nodes) === null || _this$nodes === void 0 ? void 0 : _this$nodes.map((node) => node.loc).filter((loc) => loc != null) + ); + this.source = source !== null && source !== void 0 ? source : nodeLocations === null || nodeLocations === void 0 ? void 0 : (_nodeLocations$ = nodeLocations[0]) === null || _nodeLocations$ === void 0 ? void 0 : _nodeLocations$.source; + this.positions = positions !== null && positions !== void 0 ? positions : nodeLocations === null || nodeLocations === void 0 ? void 0 : nodeLocations.map((loc) => loc.start); + this.locations = positions && source ? positions.map((pos) => getLocation(source, pos)) : nodeLocations === null || nodeLocations === void 0 ? void 0 : nodeLocations.map((loc) => getLocation(loc.source, loc.start)); + const originalExtensions = isObjectLike( + originalError === null || originalError === void 0 ? void 0 : originalError.extensions + ) ? originalError === null || originalError === void 0 ? void 0 : originalError.extensions : void 0; + this.extensions = (_ref = extensions !== null && extensions !== void 0 ? extensions : originalExtensions) !== null && _ref !== void 0 ? _ref : /* @__PURE__ */ Object.create(null); + Object.defineProperties(this, { + message: { + writable: true, + enumerable: true + }, + name: { + enumerable: false + }, + nodes: { + enumerable: false + }, + source: { + enumerable: false + }, + positions: { + enumerable: false + }, + originalError: { + enumerable: false } - return chunks.reduce(function(accumulator, chunk, index) { - return "" + accumulator + chunk + (index in variables ? variables[index] : ""); - }, ""); - } - exports.gql = gql2; - function HeadersInstanceToPlainObject(headers) { - var o = {}; - headers.forEach(function(v, k) { - o[k] = v; + }); + if (originalError !== null && originalError !== void 0 && originalError.stack) { + Object.defineProperty(this, "stack", { + value: originalError.stack, + writable: true, + configurable: true + }); + } else if (Error.captureStackTrace) { + Error.captureStackTrace(this, GraphQLError); + } else { + Object.defineProperty(this, "stack", { + value: Error().stack, + writable: true, + configurable: true }); - return o; } - var graphql_ws_1 = require_graphql_ws(); - Object.defineProperty(exports, "GraphQLWebSocketClient", { enumerable: true, get: function() { - return graphql_ws_1.GraphQLWebSocketClient; - } }); } -}); - -// node_modules/.pnpm/yallist@4.0.0/node_modules/yallist/iterator.js -var require_iterator = __commonJS({ - "node_modules/.pnpm/yallist@4.0.0/node_modules/yallist/iterator.js"(exports, module) { - "use strict"; - module.exports = function(Yallist) { - Yallist.prototype[Symbol.iterator] = function* () { - for (let walker = this.head; walker; walker = walker.next) { - yield walker.value; - } - }; - }; + get [Symbol.toStringTag]() { + return "GraphQLError"; } -}); - -// node_modules/.pnpm/yallist@4.0.0/node_modules/yallist/yallist.js -var require_yallist = __commonJS({ - "node_modules/.pnpm/yallist@4.0.0/node_modules/yallist/yallist.js"(exports, module) { - "use strict"; - module.exports = Yallist; - Yallist.Node = Node2; - Yallist.create = Yallist; - function Yallist(list) { - var self2 = this; - if (!(self2 instanceof Yallist)) { - self2 = new Yallist(); - } - self2.tail = null; - self2.head = null; - self2.length = 0; - if (list && typeof list.forEach === "function") { - list.forEach(function(item) { - self2.push(item); - }); - } else if (arguments.length > 0) { - for (var i = 0, l = arguments.length; i < l; i++) { - self2.push(arguments[i]); + toString() { + let output = this.message; + if (this.nodes) { + for (const node of this.nodes) { + if (node.loc) { + output += "\n\n" + printLocation(node.loc); } } - return self2; - } - Yallist.prototype.removeNode = function(node) { - if (node.list !== this) { - throw new Error("removing node which does not belong to this list"); - } - var next = node.next; - var prev = node.prev; - if (next) { - next.prev = prev; - } - if (prev) { - prev.next = next; - } - if (node === this.head) { - this.head = next; - } - if (node === this.tail) { - this.tail = prev; - } - node.list.length--; - node.next = null; - node.prev = null; - node.list = null; - return next; - }; - Yallist.prototype.unshiftNode = function(node) { - if (node === this.head) { - return; - } - if (node.list) { - node.list.removeNode(node); - } - var head = this.head; - node.list = this; - node.next = head; - if (head) { - head.prev = node; - } - this.head = node; - if (!this.tail) { - this.tail = node; - } - this.length++; - }; - Yallist.prototype.pushNode = function(node) { - if (node === this.tail) { - return; - } - if (node.list) { - node.list.removeNode(node); - } - var tail = this.tail; - node.list = this; - node.prev = tail; - if (tail) { - tail.next = node; - } - this.tail = node; - if (!this.head) { - this.head = node; - } - this.length++; - }; - Yallist.prototype.push = function() { - for (var i = 0, l = arguments.length; i < l; i++) { - push2(this, arguments[i]); - } - return this.length; - }; - Yallist.prototype.unshift = function() { - for (var i = 0, l = arguments.length; i < l; i++) { - unshift(this, arguments[i]); - } - return this.length; - }; - Yallist.prototype.pop = function() { - if (!this.tail) { - return void 0; - } - var res = this.tail.value; - this.tail = this.tail.prev; - if (this.tail) { - this.tail.next = null; - } else { - this.head = null; - } - this.length--; - return res; - }; - Yallist.prototype.shift = function() { - if (!this.head) { - return void 0; - } - var res = this.head.value; - this.head = this.head.next; - if (this.head) { - this.head.prev = null; - } else { - this.tail = null; - } - this.length--; - return res; - }; - Yallist.prototype.forEach = function(fn, thisp) { - thisp = thisp || this; - for (var walker = this.head, i = 0; walker !== null; i++) { - fn.call(thisp, walker.value, i, this); - walker = walker.next; - } - }; - Yallist.prototype.forEachReverse = function(fn, thisp) { - thisp = thisp || this; - for (var walker = this.tail, i = this.length - 1; walker !== null; i--) { - fn.call(thisp, walker.value, i, this); - walker = walker.prev; - } - }; - Yallist.prototype.get = function(n) { - for (var i = 0, walker = this.head; walker !== null && i < n; i++) { - walker = walker.next; - } - if (i === n && walker !== null) { - return walker.value; - } - }; - Yallist.prototype.getReverse = function(n) { - for (var i = 0, walker = this.tail; walker !== null && i < n; i++) { - walker = walker.prev; - } - if (i === n && walker !== null) { - return walker.value; - } - }; - Yallist.prototype.map = function(fn, thisp) { - thisp = thisp || this; - var res = new Yallist(); - for (var walker = this.head; walker !== null; ) { - res.push(fn.call(thisp, walker.value, this)); - walker = walker.next; - } - return res; - }; - Yallist.prototype.mapReverse = function(fn, thisp) { - thisp = thisp || this; - var res = new Yallist(); - for (var walker = this.tail; walker !== null; ) { - res.push(fn.call(thisp, walker.value, this)); - walker = walker.prev; - } - return res; - }; - Yallist.prototype.reduce = function(fn, initial) { - var acc; - var walker = this.head; - if (arguments.length > 1) { - acc = initial; - } else if (this.head) { - walker = this.head.next; - acc = this.head.value; - } else { - throw new TypeError("Reduce of empty list with no initial value"); - } - for (var i = 0; walker !== null; i++) { - acc = fn(acc, walker.value, i); - walker = walker.next; - } - return acc; - }; - Yallist.prototype.reduceReverse = function(fn, initial) { - var acc; - var walker = this.tail; - if (arguments.length > 1) { - acc = initial; - } else if (this.tail) { - walker = this.tail.prev; - acc = this.tail.value; - } else { - throw new TypeError("Reduce of empty list with no initial value"); - } - for (var i = this.length - 1; walker !== null; i--) { - acc = fn(acc, walker.value, i); - walker = walker.prev; - } - return acc; - }; - Yallist.prototype.toArray = function() { - var arr = new Array(this.length); - for (var i = 0, walker = this.head; walker !== null; i++) { - arr[i] = walker.value; - walker = walker.next; - } - return arr; - }; - Yallist.prototype.toArrayReverse = function() { - var arr = new Array(this.length); - for (var i = 0, walker = this.tail; walker !== null; i++) { - arr[i] = walker.value; - walker = walker.prev; - } - return arr; - }; - Yallist.prototype.slice = function(from, to) { - to = to || this.length; - if (to < 0) { - to += this.length; - } - from = from || 0; - if (from < 0) { - from += this.length; - } - var ret = new Yallist(); - if (to < from || to < 0) { - return ret; - } - if (from < 0) { - from = 0; - } - if (to > this.length) { - to = this.length; - } - for (var i = 0, walker = this.head; walker !== null && i < from; i++) { - walker = walker.next; - } - for (; walker !== null && i < to; i++, walker = walker.next) { - ret.push(walker.value); - } - return ret; - }; - Yallist.prototype.sliceReverse = function(from, to) { - to = to || this.length; - if (to < 0) { - to += this.length; - } - from = from || 0; - if (from < 0) { - from += this.length; - } - var ret = new Yallist(); - if (to < from || to < 0) { - return ret; - } - if (from < 0) { - from = 0; - } - if (to > this.length) { - to = this.length; - } - for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) { - walker = walker.prev; - } - for (; walker !== null && i > from; i--, walker = walker.prev) { - ret.push(walker.value); - } - return ret; - }; - Yallist.prototype.splice = function(start, deleteCount, ...nodes) { - if (start > this.length) { - start = this.length - 1; - } - if (start < 0) { - start = this.length + start; - } - for (var i = 0, walker = this.head; walker !== null && i < start; i++) { - walker = walker.next; - } - var ret = []; - for (var i = 0; walker && i < deleteCount; i++) { - ret.push(walker.value); - walker = this.removeNode(walker); - } - if (walker === null) { - walker = this.tail; - } - if (walker !== this.head && walker !== this.tail) { - walker = walker.prev; - } - for (var i = 0; i < nodes.length; i++) { - walker = insert(this, walker, nodes[i]); - } - return ret; - }; - Yallist.prototype.reverse = function() { - var head = this.head; - var tail = this.tail; - for (var walker = head; walker !== null; walker = walker.prev) { - var p = walker.prev; - walker.prev = walker.next; - walker.next = p; - } - this.head = tail; - this.tail = head; - return this; - }; - function insert(self2, node, value) { - var inserted = node === self2.head ? new Node2(value, null, node, self2) : new Node2(value, node, node.next, self2); - if (inserted.next === null) { - self2.tail = inserted; - } - if (inserted.prev === null) { - self2.head = inserted; - } - self2.length++; - return inserted; - } - function push2(self2, item) { - self2.tail = new Node2(item, self2.tail, null, self2); - if (!self2.head) { - self2.head = self2.tail; + } else if (this.source && this.locations) { + for (const location of this.locations) { + output += "\n\n" + printSourceLocation(this.source, location); } - self2.length++; } - function unshift(self2, item) { - self2.head = new Node2(item, null, self2.head, self2); - if (!self2.tail) { - self2.tail = self2.head; - } - self2.length++; + return output; + } + toJSON() { + const formattedError = { + message: this.message + }; + if (this.locations != null) { + formattedError.locations = this.locations; } - function Node2(value, prev, next, list) { - if (!(this instanceof Node2)) { - return new Node2(value, prev, next, list); - } - this.list = list; - this.value = value; - if (prev) { - prev.next = this; - this.prev = prev; - } else { - this.prev = null; - } - if (next) { - next.prev = this; - this.next = next; - } else { - this.next = null; - } + if (this.path != null) { + formattedError.path = this.path; } - try { - require_iterator()(Yallist); - } catch (er) { + if (this.extensions != null && Object.keys(this.extensions).length > 0) { + formattedError.extensions = this.extensions; } + return formattedError; } -}); - -// node_modules/.pnpm/lru-cache@6.0.0/node_modules/lru-cache/index.js -var require_lru_cache = __commonJS({ - "node_modules/.pnpm/lru-cache@6.0.0/node_modules/lru-cache/index.js"(exports, module) { - "use strict"; - var Yallist = require_yallist(); - var MAX = Symbol("max"); - var LENGTH = Symbol("length"); - var LENGTH_CALCULATOR = Symbol("lengthCalculator"); - var ALLOW_STALE = Symbol("allowStale"); - var MAX_AGE = Symbol("maxAge"); - var DISPOSE = Symbol("dispose"); - var NO_DISPOSE_ON_SET = Symbol("noDisposeOnSet"); - var LRU_LIST = Symbol("lruList"); - var CACHE = Symbol("cache"); - var UPDATE_AGE_ON_GET = Symbol("updateAgeOnGet"); - var naiveLength = () => 1; - var LRUCache = class { - constructor(options) { - if (typeof options === "number") - options = { max: options }; - if (!options) - options = {}; - if (options.max && (typeof options.max !== "number" || options.max < 0)) - throw new TypeError("max must be a non-negative number"); - const max = this[MAX] = options.max || Infinity; - const lc = options.length || naiveLength; - this[LENGTH_CALCULATOR] = typeof lc !== "function" ? naiveLength : lc; - this[ALLOW_STALE] = options.stale || false; - if (options.maxAge && typeof options.maxAge !== "number") - throw new TypeError("maxAge must be a number"); - this[MAX_AGE] = options.maxAge || 0; - this[DISPOSE] = options.dispose; - this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false; - this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false; - this.reset(); - } - set max(mL) { - if (typeof mL !== "number" || mL < 0) - throw new TypeError("max must be a non-negative number"); - this[MAX] = mL || Infinity; - trim(this); - } - get max() { - return this[MAX]; - } - set allowStale(allowStale) { - this[ALLOW_STALE] = !!allowStale; - } - get allowStale() { - return this[ALLOW_STALE]; - } - set maxAge(mA) { - if (typeof mA !== "number") - throw new TypeError("maxAge must be a non-negative number"); - this[MAX_AGE] = mA; - trim(this); - } - get maxAge() { - return this[MAX_AGE]; - } - set lengthCalculator(lC) { - if (typeof lC !== "function") - lC = naiveLength; - if (lC !== this[LENGTH_CALCULATOR]) { - this[LENGTH_CALCULATOR] = lC; - this[LENGTH] = 0; - this[LRU_LIST].forEach((hit) => { - hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key); - this[LENGTH] += hit.length; - }); - } - trim(this); - } - get lengthCalculator() { - return this[LENGTH_CALCULATOR]; - } - get length() { - return this[LENGTH]; - } - get itemCount() { - return this[LRU_LIST].length; - } - rforEach(fn, thisp) { - thisp = thisp || this; - for (let walker = this[LRU_LIST].tail; walker !== null; ) { - const prev = walker.prev; - forEachStep(this, fn, walker, thisp); - walker = prev; - } - } - forEach(fn, thisp) { - thisp = thisp || this; - for (let walker = this[LRU_LIST].head; walker !== null; ) { - const next = walker.next; - forEachStep(this, fn, walker, thisp); - walker = next; - } - } - keys() { - return this[LRU_LIST].toArray().map((k) => k.key); - } - values() { - return this[LRU_LIST].toArray().map((k) => k.value); - } - reset() { - if (this[DISPOSE] && this[LRU_LIST] && this[LRU_LIST].length) { - this[LRU_LIST].forEach((hit) => this[DISPOSE](hit.key, hit.value)); - } - this[CACHE] = /* @__PURE__ */ new Map(); - this[LRU_LIST] = new Yallist(); - this[LENGTH] = 0; - } - dump() { - return this[LRU_LIST].map((hit) => isStale(this, hit) ? false : { - k: hit.key, - v: hit.value, - e: hit.now + (hit.maxAge || 0) - }).toArray().filter((h) => h); - } - dumpLru() { - return this[LRU_LIST]; - } - set(key, value, maxAge) { - maxAge = maxAge || this[MAX_AGE]; - if (maxAge && typeof maxAge !== "number") - throw new TypeError("maxAge must be a number"); - const now = maxAge ? Date.now() : 0; - const len = this[LENGTH_CALCULATOR](value, key); - if (this[CACHE].has(key)) { - if (len > this[MAX]) { - del(this, this[CACHE].get(key)); - return false; - } - const node = this[CACHE].get(key); - const item = node.value; - if (this[DISPOSE]) { - if (!this[NO_DISPOSE_ON_SET]) - this[DISPOSE](key, item.value); - } - item.now = now; - item.maxAge = maxAge; - item.value = value; - this[LENGTH] += len - item.length; - item.length = len; - this.get(key); - trim(this); - return true; - } - const hit = new Entry(key, value, len, now, maxAge); - if (hit.length > this[MAX]) { - if (this[DISPOSE]) - this[DISPOSE](key, value); - return false; - } - this[LENGTH] += hit.length; - this[LRU_LIST].unshift(hit); - this[CACHE].set(key, this[LRU_LIST].head); - trim(this); - return true; - } - has(key) { - if (!this[CACHE].has(key)) - return false; - const hit = this[CACHE].get(key).value; - return !isStale(this, hit); - } - get(key) { - return get2(this, key, true); - } - peek(key) { - return get2(this, key, false); - } - pop() { - const node = this[LRU_LIST].tail; - if (!node) - return null; - del(this, node); - return node.value; - } - del(key) { - del(this, this[CACHE].get(key)); - } - load(arr) { - this.reset(); - const now = Date.now(); - for (let l = arr.length - 1; l >= 0; l--) { - const hit = arr[l]; - const expiresAt = hit.e || 0; - if (expiresAt === 0) - this.set(hit.k, hit.v); - else { - const maxAge = expiresAt - now; - if (maxAge > 0) { - this.set(hit.k, hit.v, maxAge); - } - } - } - } - prune() { - this[CACHE].forEach((value, key) => get2(this, key, false)); - } - }; - var get2 = (self2, key, doUse) => { - const node = self2[CACHE].get(key); - if (node) { - const hit = node.value; - if (isStale(self2, hit)) { - del(self2, node); - if (!self2[ALLOW_STALE]) - return void 0; - } else { - if (doUse) { - if (self2[UPDATE_AGE_ON_GET]) - node.value.now = Date.now(); - self2[LRU_LIST].unshiftNode(node); - } - } - return hit.value; - } - }; - var isStale = (self2, hit) => { - if (!hit || !hit.maxAge && !self2[MAX_AGE]) - return false; - const diff = Date.now() - hit.now; - return hit.maxAge ? diff > hit.maxAge : self2[MAX_AGE] && diff > self2[MAX_AGE]; - }; - var trim = (self2) => { - if (self2[LENGTH] > self2[MAX]) { - for (let walker = self2[LRU_LIST].tail; self2[LENGTH] > self2[MAX] && walker !== null; ) { - const prev = walker.prev; - del(self2, walker); - walker = prev; - } - } - }; - var del = (self2, node) => { - if (node) { - const hit = node.value; - if (self2[DISPOSE]) - self2[DISPOSE](hit.key, hit.value); - self2[LENGTH] -= hit.length; - self2[CACHE].delete(hit.key); - self2[LRU_LIST].removeNode(node); - } - }; - var Entry = class { - constructor(key, value, length, now, maxAge) { - this.key = key; - this.value = value; - this.length = length; - this.now = now; - this.maxAge = maxAge || 0; - } - }; - var forEachStep = (self2, fn, node, thisp) => { - let hit = node.value; - if (isStale(self2, hit)) { - del(self2, node); - if (!self2[ALLOW_STALE]) - hit = void 0; - } - if (hit) - fn.call(thisp, hit.value, hit.key, self2); - }; - module.exports = LRUCache; - } -}); - -// node_modules/.pnpm/@whatwg-node+fetch@0.3.2/node_modules/@whatwg-node/fetch/dist/global-ponyfill.js -var require_global_ponyfill = __commonJS({ - "node_modules/.pnpm/@whatwg-node+fetch@0.3.2/node_modules/@whatwg-node/fetch/dist/global-ponyfill.js"(exports, module) { - module.exports.fetch = globalThis.fetch; - module.exports.Headers = globalThis.Headers; - module.exports.Request = globalThis.Request; - module.exports.Response = globalThis.Response; - module.exports.FormData = globalThis.FormData; - module.exports.AbortController = globalThis.AbortController; - module.exports.ReadableStream = globalThis.ReadableStream; - module.exports.WritableStream = globalThis.WritableStream; - module.exports.TransformStream = globalThis.TransformStream; - module.exports.Blob = globalThis.Blob; - module.exports.File = globalThis.File; - module.exports.crypto = globalThis.crypto; - module.exports.btoa = globalThis.btoa; - module.exports.TextEncoder = globalThis.TextEncoder; - module.exports.TextDecoder = globalThis.TextDecoder; - module.exports.Event = globalThis.Event; - module.exports.EventTarget = globalThis.EventTarget; - module.exports.createFetch = () => globalThis; - } -}); - -// .solid/server/server.js -var import_kv_asset_handler = __toESM(require_dist(), 1); -import manifestJSON from "__STATIC_CONTENT_MANIFEST"; - -// dist/public/route-manifest.json -var route_manifest_default = { - "/": [ - { - type: "script", - href: "/assets/index.af6c29ac.js" - }, - { - type: "script", - href: "/assets/entry-client.b0117054.js" - }, - { - type: "style", - href: "/assets/entry-client.17ea8755.css" - } - ], - "entry-client": [ - { - type: "script", - href: "/assets/entry-client.b0117054.js" - }, - { - type: "style", - href: "/assets/entry-client.17ea8755.css" - } - ], - "index.html": [] }; - -// node_modules/.pnpm/solid-js@1.5.7/node_modules/solid-js/dist/server.js -var $PROXY = Symbol("solid-proxy"); -var $TRACK = Symbol("solid-track"); -var $DEVCOMP = Symbol("solid-dev-component"); -var ERROR = Symbol("error"); -var BRANCH = Symbol("branch"); -function castError(err) { - if (err instanceof Error || typeof err === "string") - return err; - return new Error("Unknown error"); +function undefinedIfEmpty(array) { + return array === void 0 || array.length === 0 ? void 0 : array; } -function handleError(err) { - err = castError(err); - const fns = lookup(Owner, ERROR); - if (!fns) - throw err; - for (const f of fns) - f(err); +function syntaxError(source, position, description) { + return new GraphQLError(`Syntax Error: ${description}`, { + source, + positions: [position] + }); } -var UNOWNED = { - context: null, - owner: null -}; -var Owner = null; -function createRoot(fn, detachedOwner) { - detachedOwner && (Owner = detachedOwner); - const owner = Owner, root = fn.length === 0 ? UNOWNED : { - context: null, - owner - }; - Owner = root; - let result; - try { - result = fn(() => { - }); - } catch (err) { - handleError(err); - } finally { - Owner = owner; +var Location = class { + constructor(startToken, endToken, source) { + this.start = startToken.start; + this.end = endToken.end; + this.startToken = startToken; + this.endToken = endToken; + this.source = source; } - return result; -} -function createSignal(value, options) { - return [() => value, (v) => { - return value = typeof v === "function" ? v(value) : v; - }]; -} -function createComputed(fn, value) { - Owner = { - owner: Owner, - context: null - }; - try { - fn(value); - } catch (err) { - handleError(err); - } finally { - Owner = Owner.owner; + get [Symbol.toStringTag]() { + return "Location"; } -} -var createRenderEffect = createComputed; -function createEffect(fn, value) { -} -function createMemo(fn, value) { - Owner = { - owner: Owner, - context: null - }; - let v; - try { - v = fn(value); - } catch (err) { - handleError(err); - } finally { - Owner = Owner.owner; + toJSON() { + return { + start: this.start, + end: this.end + }; } - return () => v; -} -function batch(fn) { - return fn(); -} -var untrack = batch; -function on(deps, fn, options = {}) { - const isArray = Array.isArray(deps); - const defer = options.defer; - return () => { - if (defer) - return void 0; - let value; - if (isArray) { - value = []; - for (let i = 0; i < deps.length; i++) - value.push(deps[i]()); - } else - value = deps(); - return fn(value); - }; -} -function onMount(fn) { -} -function onCleanup(fn) { - let node; - if (Owner && (node = lookup(Owner, BRANCH))) { - if (!node.cleanups) - node.cleanups = [fn]; - else - node.cleanups.push(fn); +}; +var Token = class { + constructor(kind, start, end, line, column, value) { + this.kind = kind; + this.start = start; + this.end = end; + this.line = line; + this.column = column; + this.value = value; + this.prev = null; + this.next = null; } - return fn; -} -function cleanNode(node) { - if (node.cleanups) { - for (let i = 0; i < node.cleanups.length; i++) - node.cleanups[i](); - node.cleanups = void 0; + get [Symbol.toStringTag]() { + return "Token"; } -} -function onError(fn) { - if (Owner) { - if (Owner.context === null) - Owner.context = { - [ERROR]: [fn] - }; - else if (!Owner.context[ERROR]) - Owner.context[ERROR] = [fn]; - else - Owner.context[ERROR].push(fn); + toJSON() { + return { + kind: this.kind, + value: this.value, + line: this.line, + column: this.column + }; } +}; +var QueryDocumentKeys = { + Name: [], + Document: ["definitions"], + OperationDefinition: [ + "name", + "variableDefinitions", + "directives", + "selectionSet" + ], + VariableDefinition: ["variable", "type", "defaultValue", "directives"], + Variable: ["name"], + SelectionSet: ["selections"], + Field: ["alias", "name", "arguments", "directives", "selectionSet"], + Argument: ["name", "value"], + FragmentSpread: ["name", "directives"], + InlineFragment: ["typeCondition", "directives", "selectionSet"], + FragmentDefinition: [ + "name", + "variableDefinitions", + "typeCondition", + "directives", + "selectionSet" + ], + IntValue: [], + FloatValue: [], + StringValue: [], + BooleanValue: [], + NullValue: [], + EnumValue: [], + ListValue: ["values"], + ObjectValue: ["fields"], + ObjectField: ["name", "value"], + Directive: ["name", "arguments"], + NamedType: ["name"], + ListType: ["type"], + NonNullType: ["type"], + SchemaDefinition: ["description", "directives", "operationTypes"], + OperationTypeDefinition: ["type"], + ScalarTypeDefinition: ["description", "name", "directives"], + ObjectTypeDefinition: [ + "description", + "name", + "interfaces", + "directives", + "fields" + ], + FieldDefinition: ["description", "name", "arguments", "type", "directives"], + InputValueDefinition: [ + "description", + "name", + "type", + "defaultValue", + "directives" + ], + InterfaceTypeDefinition: [ + "description", + "name", + "interfaces", + "directives", + "fields" + ], + UnionTypeDefinition: ["description", "name", "directives", "types"], + EnumTypeDefinition: ["description", "name", "directives", "values"], + EnumValueDefinition: ["description", "name", "directives"], + InputObjectTypeDefinition: ["description", "name", "directives", "fields"], + DirectiveDefinition: ["description", "name", "arguments", "locations"], + SchemaExtension: ["directives", "operationTypes"], + ScalarTypeExtension: ["name", "directives"], + ObjectTypeExtension: ["name", "interfaces", "directives", "fields"], + InterfaceTypeExtension: ["name", "interfaces", "directives", "fields"], + UnionTypeExtension: ["name", "directives", "types"], + EnumTypeExtension: ["name", "directives", "values"], + InputObjectTypeExtension: ["name", "directives", "fields"] +}; +var kindValues = new Set(Object.keys(QueryDocumentKeys)); +function isNode(maybeNode) { + const maybeKind = maybeNode === null || maybeNode === void 0 ? void 0 : maybeNode.kind; + return typeof maybeKind === "string" && kindValues.has(maybeKind); } -function createContext(defaultValue) { - const id = Symbol("context"); - return { - id, - Provider: createProvider(id), - defaultValue - }; -} -function useContext(context) { - let ctx; - return (ctx = lookup(Owner, context.id)) !== void 0 ? ctx : context.defaultValue; -} -function getOwner() { - return Owner; -} -function children(fn) { - const memo = createMemo(() => resolveChildren(fn())); - memo.toArray = () => { - const c = memo(); - return Array.isArray(c) ? c : c != null ? [c] : []; - }; - return memo; -} -function runWithOwner(o, fn) { - const prev = Owner; - Owner = o; - try { - return fn(); - } catch (err) { - handleError(err); - } finally { - Owner = prev; - } -} -function lookup(owner, key) { - return owner ? owner.context && owner.context[key] !== void 0 ? owner.context[key] : lookup(owner.owner, key) : void 0; -} -function resolveChildren(children2) { - if (typeof children2 === "function" && !children2.length) - return resolveChildren(children2()); - if (Array.isArray(children2)) { - const results = []; - for (let i = 0; i < children2.length; i++) { - const result = resolveChildren(children2[i]); - Array.isArray(result) ? results.push.apply(results, result) : results.push(result); - } - return results; - } - return children2; -} -function createProvider(id) { - return function provider(props) { - return createMemo(() => { - Owner.context = { - [id]: props.value - }; - return children(() => props.children); - }); - }; +var OperationTypeNode; +(function(OperationTypeNode2) { + OperationTypeNode2["QUERY"] = "query"; + OperationTypeNode2["MUTATION"] = "mutation"; + OperationTypeNode2["SUBSCRIPTION"] = "subscription"; +})(OperationTypeNode || (OperationTypeNode = {})); +var DirectiveLocation$1; +(function(DirectiveLocation2) { + DirectiveLocation2["QUERY"] = "QUERY"; + DirectiveLocation2["MUTATION"] = "MUTATION"; + DirectiveLocation2["SUBSCRIPTION"] = "SUBSCRIPTION"; + DirectiveLocation2["FIELD"] = "FIELD"; + DirectiveLocation2["FRAGMENT_DEFINITION"] = "FRAGMENT_DEFINITION"; + DirectiveLocation2["FRAGMENT_SPREAD"] = "FRAGMENT_SPREAD"; + DirectiveLocation2["INLINE_FRAGMENT"] = "INLINE_FRAGMENT"; + DirectiveLocation2["VARIABLE_DEFINITION"] = "VARIABLE_DEFINITION"; + DirectiveLocation2["SCHEMA"] = "SCHEMA"; + DirectiveLocation2["SCALAR"] = "SCALAR"; + DirectiveLocation2["OBJECT"] = "OBJECT"; + DirectiveLocation2["FIELD_DEFINITION"] = "FIELD_DEFINITION"; + DirectiveLocation2["ARGUMENT_DEFINITION"] = "ARGUMENT_DEFINITION"; + DirectiveLocation2["INTERFACE"] = "INTERFACE"; + DirectiveLocation2["UNION"] = "UNION"; + DirectiveLocation2["ENUM"] = "ENUM"; + DirectiveLocation2["ENUM_VALUE"] = "ENUM_VALUE"; + DirectiveLocation2["INPUT_OBJECT"] = "INPUT_OBJECT"; + DirectiveLocation2["INPUT_FIELD_DEFINITION"] = "INPUT_FIELD_DEFINITION"; +})(DirectiveLocation$1 || (DirectiveLocation$1 = {})); +var Kind; +(function(Kind2) { + Kind2["NAME"] = "Name"; + Kind2["DOCUMENT"] = "Document"; + Kind2["OPERATION_DEFINITION"] = "OperationDefinition"; + Kind2["VARIABLE_DEFINITION"] = "VariableDefinition"; + Kind2["SELECTION_SET"] = "SelectionSet"; + Kind2["FIELD"] = "Field"; + Kind2["ARGUMENT"] = "Argument"; + Kind2["FRAGMENT_SPREAD"] = "FragmentSpread"; + Kind2["INLINE_FRAGMENT"] = "InlineFragment"; + Kind2["FRAGMENT_DEFINITION"] = "FragmentDefinition"; + Kind2["VARIABLE"] = "Variable"; + Kind2["INT"] = "IntValue"; + Kind2["FLOAT"] = "FloatValue"; + Kind2["STRING"] = "StringValue"; + Kind2["BOOLEAN"] = "BooleanValue"; + Kind2["NULL"] = "NullValue"; + Kind2["ENUM"] = "EnumValue"; + Kind2["LIST"] = "ListValue"; + Kind2["OBJECT"] = "ObjectValue"; + Kind2["OBJECT_FIELD"] = "ObjectField"; + Kind2["DIRECTIVE"] = "Directive"; + Kind2["NAMED_TYPE"] = "NamedType"; + Kind2["LIST_TYPE"] = "ListType"; + Kind2["NON_NULL_TYPE"] = "NonNullType"; + Kind2["SCHEMA_DEFINITION"] = "SchemaDefinition"; + Kind2["OPERATION_TYPE_DEFINITION"] = "OperationTypeDefinition"; + Kind2["SCALAR_TYPE_DEFINITION"] = "ScalarTypeDefinition"; + Kind2["OBJECT_TYPE_DEFINITION"] = "ObjectTypeDefinition"; + Kind2["FIELD_DEFINITION"] = "FieldDefinition"; + Kind2["INPUT_VALUE_DEFINITION"] = "InputValueDefinition"; + Kind2["INTERFACE_TYPE_DEFINITION"] = "InterfaceTypeDefinition"; + Kind2["UNION_TYPE_DEFINITION"] = "UnionTypeDefinition"; + Kind2["ENUM_TYPE_DEFINITION"] = "EnumTypeDefinition"; + Kind2["ENUM_VALUE_DEFINITION"] = "EnumValueDefinition"; + Kind2["INPUT_OBJECT_TYPE_DEFINITION"] = "InputObjectTypeDefinition"; + Kind2["DIRECTIVE_DEFINITION"] = "DirectiveDefinition"; + Kind2["SCHEMA_EXTENSION"] = "SchemaExtension"; + Kind2["SCALAR_TYPE_EXTENSION"] = "ScalarTypeExtension"; + Kind2["OBJECT_TYPE_EXTENSION"] = "ObjectTypeExtension"; + Kind2["INTERFACE_TYPE_EXTENSION"] = "InterfaceTypeExtension"; + Kind2["UNION_TYPE_EXTENSION"] = "UnionTypeExtension"; + Kind2["ENUM_TYPE_EXTENSION"] = "EnumTypeExtension"; + Kind2["INPUT_OBJECT_TYPE_EXTENSION"] = "InputObjectTypeExtension"; +})(Kind || (Kind = {})); +function isWhiteSpace(code) { + return code === 9 || code === 32; } -function resolveSSRNode(node) { - const t = typeof node; - if (t === "string") - return node; - if (node == null || t === "boolean") - return ""; - if (Array.isArray(node)) { - let mapped = ""; - for (let i = 0, len = node.length; i < len; i++) - mapped += resolveSSRNode(node[i]); - return mapped; - } - if (t === "object") - return node.t; - if (t === "function") - return resolveSSRNode(node()); - return String(node); +function isDigit$1(code) { + return code >= 48 && code <= 57; } -var sharedConfig = {}; -function setHydrateContext(context) { - sharedConfig.context = context; +function isLetter(code) { + return code >= 97 && code <= 122 || code >= 65 && code <= 90; } -function nextHydrateContext() { - return sharedConfig.context ? { - ...sharedConfig.context, - id: `${sharedConfig.context.id}${sharedConfig.context.count++}-`, - count: 0 - } : void 0; +function isNameStart(code) { + return isLetter(code) || code === 95; } -function createUniqueId() { - const ctx = sharedConfig.context; - if (!ctx) - throw new Error(`createUniqueId cannot be used under non-hydrating context`); - return `${ctx.id}${ctx.count++}`; +function isNameContinue(code) { + return isLetter(code) || isDigit$1(code) || code === 95; } -function createComponent(Comp, props) { - if (sharedConfig.context && !sharedConfig.context.noHydrate) { - const c = sharedConfig.context; - setHydrateContext(nextHydrateContext()); - const r = Comp(props || {}); - setHydrateContext(c); - return r; +function dedentBlockStringLines(lines) { + var _firstNonEmptyLine2; + let commonIndent = Number.MAX_SAFE_INTEGER; + let firstNonEmptyLine = null; + let lastNonEmptyLine = -1; + for (let i = 0; i < lines.length; ++i) { + var _firstNonEmptyLine; + const line = lines[i]; + const indent2 = leadingWhitespace$1(line); + if (indent2 === line.length) { + continue; + } + firstNonEmptyLine = (_firstNonEmptyLine = firstNonEmptyLine) !== null && _firstNonEmptyLine !== void 0 ? _firstNonEmptyLine : i; + lastNonEmptyLine = i; + if (i !== 0 && indent2 < commonIndent) { + commonIndent = indent2; + } } - return Comp(props || {}); -} -function Show(props) { - let c; - return props.when ? typeof (c = props.children) === "function" ? c(props.when) : c : props.fallback || ""; + return lines.map((line, i) => i === 0 ? line : line.slice(commonIndent)).slice( + (_firstNonEmptyLine2 = firstNonEmptyLine) !== null && _firstNonEmptyLine2 !== void 0 ? _firstNonEmptyLine2 : 0, + lastNonEmptyLine + 1 + ); } -function resetErrorBoundaries() { +function leadingWhitespace$1(str) { + let i = 0; + while (i < str.length && isWhiteSpace(str.charCodeAt(i))) { + ++i; + } + return i; } -function ErrorBoundary(props) { - let error, res, clean, sync = true; - const ctx = sharedConfig.context; - const id = ctx.id + ctx.count; - function displayFallback() { - cleanNode(clean); - ctx.writeResource(id, error, true); - setHydrateContext({ - ...ctx, - count: 0 - }); - const f = props.fallback; - return typeof f === "function" && f.length ? f(error, () => { - }) : f; +function printBlockString$1(value, options) { + const escapedValue = value.replace(/"""/g, '\\"""'); + const lines = escapedValue.split(/\r\n|[\n\r]/g); + const isSingleLine = lines.length === 1; + const forceLeadingNewLine = lines.length > 1 && lines.slice(1).every((line) => line.length === 0 || isWhiteSpace(line.charCodeAt(0))); + const hasTrailingTripleQuotes = escapedValue.endsWith('\\"""'); + const hasTrailingQuote = value.endsWith('"') && !hasTrailingTripleQuotes; + const hasTrailingSlash = value.endsWith("\\"); + const forceTrailingNewline = hasTrailingQuote || hasTrailingSlash; + const printAsMultipleLines = !(options !== null && options !== void 0 && options.minimize) && (!isSingleLine || value.length > 70 || forceTrailingNewline || forceLeadingNewLine || hasTrailingTripleQuotes); + let result = ""; + const skipLeadingNewLine = isSingleLine && isWhiteSpace(value.charCodeAt(0)); + if (printAsMultipleLines && !skipLeadingNewLine || forceLeadingNewLine) { + result += "\n"; } - onError((err) => { - error = err; - !sync && ctx.replace("e" + id, displayFallback); - sync = true; - }); - onCleanup(() => cleanNode(clean)); - createMemo(() => { - Owner.context = { - [BRANCH]: clean = {} - }; - return res = props.children; - }); - if (error) - return displayFallback(); - sync = false; - return { - t: `${resolveSSRNode(res)}` - }; + result += escapedValue; + if (printAsMultipleLines || forceTrailingNewline) { + result += "\n"; + } + return '"""' + result + '"""'; } -var SuspenseContext = createContext(); -var resourceContext = null; -function createResource(source, fetcher, options = {}) { - if (arguments.length === 2) { - if (typeof fetcher === "object") { - options = fetcher; - fetcher = source; - source = true; - } - } else if (arguments.length === 1) { - fetcher = source; - source = true; +var TokenKind; +(function(TokenKind2) { + TokenKind2["SOF"] = ""; + TokenKind2["EOF"] = ""; + TokenKind2["BANG"] = "!"; + TokenKind2["DOLLAR"] = "$"; + TokenKind2["AMP"] = "&"; + TokenKind2["PAREN_L"] = "("; + TokenKind2["PAREN_R"] = ")"; + TokenKind2["SPREAD"] = "..."; + TokenKind2["COLON"] = ":"; + TokenKind2["EQUALS"] = "="; + TokenKind2["AT"] = "@"; + TokenKind2["BRACKET_L"] = "["; + TokenKind2["BRACKET_R"] = "]"; + TokenKind2["BRACE_L"] = "{"; + TokenKind2["PIPE"] = "|"; + TokenKind2["BRACE_R"] = "}"; + TokenKind2["NAME"] = "Name"; + TokenKind2["INT"] = "Int"; + TokenKind2["FLOAT"] = "Float"; + TokenKind2["STRING"] = "String"; + TokenKind2["BLOCK_STRING"] = "BlockString"; + TokenKind2["COMMENT"] = "Comment"; +})(TokenKind || (TokenKind = {})); +var Lexer = class { + constructor(source) { + const startOfFileToken = new Token(TokenKind.SOF, 0, 0, 0, 0); + this.source = source; + this.lastToken = startOfFileToken; + this.token = startOfFileToken; + this.line = 1; + this.lineStart = 0; } - const contexts = /* @__PURE__ */ new Set(); - const id = sharedConfig.context.id + sharedConfig.context.count++; - let resource = {}; - let value = options.storage ? options.storage(options.initialValue)[0]() : options.initialValue; - let p; - let error; - if (sharedConfig.context.async && options.ssrLoadFrom !== "initial") { - resource = sharedConfig.context.resources[id] || (sharedConfig.context.resources[id] = {}); - if (resource.ref) { - if (!resource.data && !resource.ref[0].loading && !resource.ref[0].error) - resource.ref[1].refetch(); - return resource.ref; - } + get [Symbol.toStringTag]() { + return "Lexer"; } - const read = () => { - if (error) - throw error; - if (resourceContext && p) - resourceContext.push(p); - const resolved = options.ssrLoadFrom !== "initial" && sharedConfig.context.async && "data" in sharedConfig.context.resources[id]; - if (!resolved && read.loading) { - const ctx = useContext(SuspenseContext); - if (ctx) { - ctx.resources.set(id, read); - contexts.add(ctx); - } - } - return resolved ? sharedConfig.context.resources[id].data : value; - }; - read.loading = false; - read.error = void 0; - read.state = "initialValue" in options ? "resolved" : "unresolved"; - Object.defineProperty(read, "latest", { - get() { - return read(); - } - }); - function load() { - const ctx = sharedConfig.context; - if (!ctx.async) - return read.loading = !!(typeof source === "function" ? source() : source); - if (ctx.resources && id in ctx.resources && "data" in ctx.resources[id]) { - value = ctx.resources[id].data; - return; - } - resourceContext = []; - const lookup2 = typeof source === "function" ? source() : source; - if (resourceContext.length) { - p = Promise.all(resourceContext).then(() => fetcher(source(), { - value - })); - } - resourceContext = null; - if (!p) { - if (lookup2 == null || lookup2 === false) - return; - p = fetcher(lookup2, { - value - }); - } - if (p != void 0 && typeof p === "object" && "then" in p) { - read.loading = true; - read.state = "pending"; - if (ctx.writeResource) - ctx.writeResource(id, p, void 0, options.deferStream); - return p.then((res) => { - read.loading = false; - read.state = "resolved"; - ctx.resources[id].data = res; - p = null; - notifySuspense(contexts); - return res; - }).catch((err) => { - read.loading = false; - read.state = "errored"; - read.error = error = castError(err); - p = null; - notifySuspense(contexts); - }); + advance() { + this.lastToken = this.token; + const token = this.token = this.lookahead(); + return token; + } + lookahead() { + let token = this.token; + if (token.kind !== TokenKind.EOF) { + do { + if (token.next) { + token = token.next; + } else { + const nextToken = readNextToken(this, token.end); + token.next = nextToken; + nextToken.prev = token; + token = nextToken; + } + } while (token.kind === TokenKind.COMMENT); } - ctx.resources[id].data = p; - if (ctx.writeResource) - ctx.writeResource(id, p); - p = null; - return ctx.resources[id].data; + return token; } - if (options.ssrLoadFrom !== "initial") - load(); - return resource.ref = [read, { - refetch: load, - mutate: (v) => value = v - }]; +}; +function isPunctuatorTokenKind(kind) { + return kind === TokenKind.BANG || kind === TokenKind.DOLLAR || kind === TokenKind.AMP || kind === TokenKind.PAREN_L || kind === TokenKind.PAREN_R || kind === TokenKind.SPREAD || kind === TokenKind.COLON || kind === TokenKind.EQUALS || kind === TokenKind.AT || kind === TokenKind.BRACKET_L || kind === TokenKind.BRACKET_R || kind === TokenKind.BRACE_L || kind === TokenKind.PIPE || kind === TokenKind.BRACE_R; } -function suspenseComplete(c) { - for (const r of c.resources.values()) { - if (r.loading) - return false; - } - return true; +function isUnicodeScalarValue(code) { + return code >= 0 && code <= 55295 || code >= 57344 && code <= 1114111; } -function notifySuspense(contexts) { - for (const c of contexts) { - if (suspenseComplete(c)) - c.completed(); - } - contexts.clear(); +function isSupplementaryCodePoint(body, location) { + return isLeadingSurrogate(body.charCodeAt(location)) && isTrailingSurrogate(body.charCodeAt(location + 1)); } -function useTransition() { - return [() => false, (fn) => { - fn(); - }]; +function isLeadingSurrogate(code) { + return code >= 55296 && code <= 56319; } -function Suspense(props) { - let done; - let clean; - const ctx = sharedConfig.context; - const id = ctx.id + ctx.count; - const o = Owner; - if (o) { - if (o.context) - o.context[BRANCH] = clean = {}; - else - o.context = { - [BRANCH]: clean = {} - }; +function isTrailingSurrogate(code) { + return code >= 56320 && code <= 57343; +} +function printCodePointAt(lexer, location) { + const code = lexer.source.body.codePointAt(location); + if (code === void 0) { + return TokenKind.EOF; + } else if (code >= 32 && code <= 126) { + const char = String.fromCodePoint(code); + return char === '"' ? `'"'` : `"${char}"`; } - const value = ctx.suspense[id] || (ctx.suspense[id] = { - resources: /* @__PURE__ */ new Map(), - completed: () => { - const res2 = runSuspense(); - if (suspenseComplete(value)) { - done(resolveSSRNode(res2)); - } - } - }); - function runSuspense() { - setHydrateContext({ - ...ctx, - count: 0 - }); - return runWithOwner(o, () => { - return createComponent(SuspenseContext.Provider, { - value, - get children() { - clean && cleanNode(clean); - return props.children; - } - }); - }); - } - const res = runSuspense(); - if (suspenseComplete(value)) - return res; - onError((err) => { - if (!done || !done(void 0, err)) { - if (o) - runWithOwner(o.owner, () => { - throw err; - }); - else - throw err; - } - }); - done = ctx.async ? ctx.registerFragment(id) : void 0; - if (ctx.async) { - setHydrateContext({ - ...ctx, - count: 0, - id: ctx.id + "0.f", - noHydrate: true - }); - const res2 = { - t: `${resolveSSRNode(props.fallback)}` - }; - setHydrateContext(ctx); - return res2; - } - setHydrateContext({ - ...ctx, - count: 0, - id: ctx.id + "0.f" - }); - ctx.writeResource(id, "$$f"); - return props.fallback; + return "U+" + code.toString(16).toUpperCase().padStart(4, "0"); } - -// node_modules/.pnpm/solid-js@1.5.7/node_modules/solid-js/web/dist/server.js -var booleans = ["allowfullscreen", "async", "autofocus", "autoplay", "checked", "controls", "default", "disabled", "formnovalidate", "hidden", "indeterminate", "ismap", "loop", "multiple", "muted", "nomodule", "novalidate", "open", "playsinline", "readonly", "required", "reversed", "seamless", "selected"]; -var BooleanAttributes = /* @__PURE__ */ new Set(booleans); -/* @__PURE__ */ new Set(["className", "value", "readOnly", "formNoValidate", "isMap", "noModule", "playsInline", ...booleans]); -var ChildProperties = /* @__PURE__ */ new Set(["innerHTML", "textContent", "innerText", "children"]); -var Aliases = { - className: "class", - htmlFor: "for" -}; -var { - hasOwnProperty -} = Object.prototype; -var REF_START_CHARS = "hjkmoquxzABCDEFGHIJKLNPQRTUVWXYZ$_"; -var REF_START_CHARS_LEN = REF_START_CHARS.length; -var REF_CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$_"; -var REF_CHARS_LEN = REF_CHARS.length; -var STACK = []; -var BUFFER = [""]; -var ASSIGNMENTS = /* @__PURE__ */ new Map(); -var INDEX_OR_REF = /* @__PURE__ */ new WeakMap(); -var REF_COUNT = 0; -BUFFER.pop(); -function stringify(root) { - if (writeProp(root, "")) { - let result = BUFFER[0]; - for (let i = 1, len = BUFFER.length; i < len; i++) { - result += BUFFER[i]; - } - if (REF_COUNT) { - if (ASSIGNMENTS.size) { - let ref = INDEX_OR_REF.get(root); - if (typeof ref === "number") { - ref = toRefParam(REF_COUNT++); - result = ref + "=" + result; +function createToken(lexer, kind, start, end, value) { + const line = lexer.line; + const col = 1 + start - lexer.lineStart; + return new Token(kind, start, end, line, col, value); +} +function readNextToken(lexer, start) { + const body = lexer.source.body; + const bodyLength = body.length; + let position = start; + while (position < bodyLength) { + const code = body.charCodeAt(position); + switch (code) { + case 65279: + case 9: + case 32: + case 44: + ++position; + continue; + case 10: + ++position; + ++lexer.line; + lexer.lineStart = position; + continue; + case 13: + if (body.charCodeAt(position + 1) === 10) { + position += 2; + } else { + ++position; } - for (const [assignmentRef, assignments] of ASSIGNMENTS) { - result += ";" + assignments + assignmentRef; + ++lexer.line; + lexer.lineStart = position; + continue; + case 35: + return readComment(lexer, position); + case 33: + return createToken(lexer, TokenKind.BANG, position, position + 1); + case 36: + return createToken(lexer, TokenKind.DOLLAR, position, position + 1); + case 38: + return createToken(lexer, TokenKind.AMP, position, position + 1); + case 40: + return createToken(lexer, TokenKind.PAREN_L, position, position + 1); + case 41: + return createToken(lexer, TokenKind.PAREN_R, position, position + 1); + case 46: + if (body.charCodeAt(position + 1) === 46 && body.charCodeAt(position + 2) === 46) { + return createToken(lexer, TokenKind.SPREAD, position, position + 3); } - result += ";return " + ref; - ASSIGNMENTS = /* @__PURE__ */ new Map(); - } else { - result = "return " + result; - } - result = "(function(" + refParamsString() + "){" + result + "}())"; - } else if (root && root.constructor === Object) { - result = "(" + result + ")"; + break; + case 58: + return createToken(lexer, TokenKind.COLON, position, position + 1); + case 61: + return createToken(lexer, TokenKind.EQUALS, position, position + 1); + case 64: + return createToken(lexer, TokenKind.AT, position, position + 1); + case 91: + return createToken(lexer, TokenKind.BRACKET_L, position, position + 1); + case 93: + return createToken(lexer, TokenKind.BRACKET_R, position, position + 1); + case 123: + return createToken(lexer, TokenKind.BRACE_L, position, position + 1); + case 124: + return createToken(lexer, TokenKind.PIPE, position, position + 1); + case 125: + return createToken(lexer, TokenKind.BRACE_R, position, position + 1); + case 34: + if (body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34) { + return readBlockString(lexer, position); + } + return readString(lexer, position); } - BUFFER.length = 0; - INDEX_OR_REF = /* @__PURE__ */ new WeakMap(); - return result; + if (isDigit$1(code) || code === 45) { + return readNumber(lexer, position, code); + } + if (isNameStart(code)) { + return readName(lexer, position); + } + throw syntaxError( + lexer.source, + position, + code === 39 ? `Unexpected single quote character ('), did you mean to use a double quote (")?` : isUnicodeScalarValue(code) || isSupplementaryCodePoint(body, position) ? `Unexpected character: ${printCodePointAt(lexer, position)}.` : `Invalid character: ${printCodePointAt(lexer, position)}.` + ); } - return "void 0"; + return createToken(lexer, TokenKind.EOF, bodyLength, bodyLength); } -function writeProp(cur, accessor) { - switch (typeof cur) { - case "string": - BUFFER.push(quote(cur, 0)); - break; - case "number": - BUFFER.push(cur + ""); - break; - case "boolean": - BUFFER.push(cur ? "!0" : "!1"); +function readComment(lexer, start) { + const body = lexer.source.body; + const bodyLength = body.length; + let position = start + 1; + while (position < bodyLength) { + const code = body.charCodeAt(position); + if (code === 10 || code === 13) { break; - case "object": - if (cur === null) { - BUFFER.push("null"); - } else { - const ref = getRef(cur, accessor); - switch (ref) { - case true: - return false; - case false: - switch (cur.constructor) { - case Object: - writeObject(cur); - break; - case Array: - writeArray(cur); - break; - case Date: - BUFFER.push('new Date("' + cur.toISOString() + '")'); - break; - case RegExp: - BUFFER.push(cur + ""); - break; - case Map: - BUFFER.push("new Map("); - writeArray(Array.from(cur)); - BUFFER.push(")"); - break; - case Set: - BUFFER.push("new Set("); - writeArray(Array.from(cur)); - BUFFER.push(")"); - break; - case void 0: - BUFFER.push("Object.assign(Object.create(null),"); - writeObject(cur); - BUFFER.push("))"); - break; - default: - return false; - } - break; - default: - BUFFER.push(ref); - break; - } - } + } + if (isUnicodeScalarValue(code)) { + ++position; + } else if (isSupplementaryCodePoint(body, position)) { + position += 2; + } else { break; - default: - return false; + } } - return true; -} -function writeObject(obj) { - let sep = "{"; - STACK.push(obj); - for (const key in obj) { - if (hasOwnProperty.call(obj, key)) { - const val = obj[key]; - const escapedKey = toObjectKey(key); - BUFFER.push(sep + escapedKey + ":"); - if (writeProp(val, escapedKey)) { - sep = ","; - } else { - BUFFER.pop(); - } - } - } - if (sep === "{") { - BUFFER.push("{}"); - } else { - BUFFER.push("}"); - } - STACK.pop(); + return createToken( + lexer, + TokenKind.COMMENT, + start, + position, + body.slice(start + 1, position) + ); } -function writeArray(arr) { - BUFFER.push("["); - STACK.push(arr); - writeProp(arr[0], 0); - for (let i = 1, len = arr.length; i < len; i++) { - BUFFER.push(","); - writeProp(arr[i], i); +function readNumber(lexer, start, firstCode) { + const body = lexer.source.body; + let position = start; + let code = firstCode; + let isFloat = false; + if (code === 45) { + code = body.charCodeAt(++position); } - STACK.pop(); - BUFFER.push("]"); -} -function getRef(cur, accessor) { - let ref = INDEX_OR_REF.get(cur); - if (ref === void 0) { - INDEX_OR_REF.set(cur, BUFFER.length); - return false; + if (code === 48) { + code = body.charCodeAt(++position); + if (isDigit$1(code)) { + throw syntaxError( + lexer.source, + position, + `Invalid number, unexpected digit after 0: ${printCodePointAt( + lexer, + position + )}.` + ); + } + } else { + position = readDigits(lexer, position, code); + code = body.charCodeAt(position); } - if (typeof ref === "number") { - ref = insertAndGetRef(cur, ref); + if (code === 46) { + isFloat = true; + code = body.charCodeAt(++position); + position = readDigits(lexer, position, code); + code = body.charCodeAt(position); } - if (STACK.includes(cur)) { - const parent = STACK[STACK.length - 1]; - let parentRef = INDEX_OR_REF.get(parent); - if (typeof parentRef === "number") { - parentRef = insertAndGetRef(parent, parentRef); + if (code === 69 || code === 101) { + isFloat = true; + code = body.charCodeAt(++position); + if (code === 43 || code === 45) { + code = body.charCodeAt(++position); } - ASSIGNMENTS.set(ref, (ASSIGNMENTS.get(ref) || "") + toAssignment(parentRef, accessor) + "="); - return true; + position = readDigits(lexer, position, code); + code = body.charCodeAt(position); } - return ref; -} -function toObjectKey(name) { - const invalidIdentifierPos = getInvalidIdentifierPos(name); - return invalidIdentifierPos === -1 ? name : quote(name, invalidIdentifierPos); -} -function toAssignment(parent, key) { - return parent + (typeof key === "number" || key[0] === '"' ? "[" + key + "]" : "." + key); + if (code === 46 || isNameStart(code)) { + throw syntaxError( + lexer.source, + position, + `Invalid number, expected digit but got: ${printCodePointAt( + lexer, + position + )}.` + ); + } + return createToken( + lexer, + isFloat ? TokenKind.FLOAT : TokenKind.INT, + start, + position, + body.slice(start, position) + ); } -function getInvalidIdentifierPos(name) { - let char = name[0]; - if (!(char >= "a" && char <= "z" || char >= "A" && char <= "Z" || char === "$" || char === "_")) { - return 0; +function readDigits(lexer, start, firstCode) { + if (!isDigit$1(firstCode)) { + throw syntaxError( + lexer.source, + start, + `Invalid number, expected digit but got: ${printCodePointAt( + lexer, + start + )}.` + ); } - for (let i = 1, len = name.length; i < len; i++) { - char = name[i]; - if (!(char >= "a" && char <= "z" || char >= "A" && char <= "Z" || char >= "0" && char <= "9" || char === "$" || char === "_")) { - return i; - } + const body = lexer.source.body; + let position = start + 1; + while (isDigit$1(body.charCodeAt(position))) { + ++position; } - return -1; + return position; } -function quote(str, startPos) { - let result = ""; - let lastPos = 0; - for (let i = startPos, len = str.length; i < len; i++) { - let replacement; - switch (str[i]) { - case '"': - replacement = '\\"'; - break; - case "\\": - replacement = "\\\\"; - break; - case "<": - replacement = "\\x3C"; - break; - case "\n": - replacement = "\\n"; - break; - case "\r": - replacement = "\\r"; - break; - case "\u2028": - replacement = "\\u2028"; - break; - case "\u2029": - replacement = "\\u2029"; - break; - default: - continue; +function readString(lexer, start) { + const body = lexer.source.body; + const bodyLength = body.length; + let position = start + 1; + let chunkStart = position; + let value = ""; + while (position < bodyLength) { + const code = body.charCodeAt(position); + if (code === 34) { + value += body.slice(chunkStart, position); + return createToken(lexer, TokenKind.STRING, start, position + 1, value); + } + if (code === 92) { + value += body.slice(chunkStart, position); + const escape2 = body.charCodeAt(position + 1) === 117 ? body.charCodeAt(position + 2) === 123 ? readEscapedUnicodeVariableWidth(lexer, position) : readEscapedUnicodeFixedWidth(lexer, position) : readEscapedCharacter(lexer, position); + value += escape2.value; + position += escape2.size; + chunkStart = position; + continue; + } + if (code === 10 || code === 13) { + break; + } + if (isUnicodeScalarValue(code)) { + ++position; + } else if (isSupplementaryCodePoint(body, position)) { + position += 2; + } else { + throw syntaxError( + lexer.source, + position, + `Invalid character within String: ${printCodePointAt( + lexer, + position + )}.` + ); } - result += str.slice(lastPos, i) + replacement; - lastPos = i + 1; - } - if (lastPos === startPos) { - result = str; - } else { - result += str.slice(lastPos); } - return '"' + result + '"'; + throw syntaxError(lexer.source, position, "Unterminated string."); } -function insertAndGetRef(obj, pos) { - const ref = toRefParam(REF_COUNT++); - INDEX_OR_REF.set(obj, ref); - if (pos) { - BUFFER[pos - 1] += ref + "="; - } else { - BUFFER[pos] = ref + "=" + BUFFER[pos]; +function readEscapedUnicodeVariableWidth(lexer, position) { + const body = lexer.source.body; + let point = 0; + let size = 3; + while (size < 12) { + const code = body.charCodeAt(position + size++); + if (code === 125) { + if (size < 5 || !isUnicodeScalarValue(point)) { + break; + } + return { + value: String.fromCodePoint(point), + size + }; + } + point = point << 4 | readHexDigit(code); + if (point < 0) { + break; + } } - return ref; + throw syntaxError( + lexer.source, + position, + `Invalid Unicode escape sequence: "${body.slice( + position, + position + size + )}".` + ); } -function refParamsString() { - let result = REF_START_CHARS[0]; - for (let i = 1; i < REF_COUNT; i++) { - result += "," + toRefParam(i); +function readEscapedUnicodeFixedWidth(lexer, position) { + const body = lexer.source.body; + const code = read16BitHexCode(body, position + 2); + if (isUnicodeScalarValue(code)) { + return { + value: String.fromCodePoint(code), + size: 6 + }; } - REF_COUNT = 0; - return result; -} -function toRefParam(index) { - let mod = index % REF_START_CHARS_LEN; - let ref = REF_START_CHARS[mod]; - index = (index - mod) / REF_START_CHARS_LEN; - while (index > 0) { - mod = index % REF_CHARS_LEN; - ref += REF_CHARS[mod]; - index = (index - mod) / REF_CHARS_LEN; + if (isLeadingSurrogate(code)) { + if (body.charCodeAt(position + 6) === 92 && body.charCodeAt(position + 7) === 117) { + const trailingCode = read16BitHexCode(body, position + 8); + if (isTrailingSurrogate(trailingCode)) { + return { + value: String.fromCodePoint(code, trailingCode), + size: 12 + }; + } + } } - return ref; + throw syntaxError( + lexer.source, + position, + `Invalid Unicode escape sequence: "${body.slice(position, position + 6)}".` + ); } -var REPLACE_SCRIPT = `function $df(e,t,d,l){d=document.getElementById(e),(l=document.getElementById("pl-"+e))&&l.replaceWith(...d.childNodes),d.remove(),_$HY.set(e,t)}`; -function renderToStringAsync(code, options = {}) { - const { - timeoutMs = 3e4 - } = options; - let timeoutHandle; - const timeout = new Promise((_, reject2) => { - timeoutHandle = setTimeout(() => reject2("renderToString timed out"), timeoutMs); - }); - return Promise.race([renderToStream(code, options), timeout]).then((html) => { - clearTimeout(timeoutHandle); - return html; - }); +function read16BitHexCode(body, position) { + return readHexDigit(body.charCodeAt(position)) << 12 | readHexDigit(body.charCodeAt(position + 1)) << 8 | readHexDigit(body.charCodeAt(position + 2)) << 4 | readHexDigit(body.charCodeAt(position + 3)); } -function renderToStream(code, options = {}) { - let { - nonce, - onCompleteShell, - onCompleteAll, - renderId - } = options; - const blockingResources = []; - const registry = /* @__PURE__ */ new Map(); - const dedupe = /* @__PURE__ */ new WeakMap(); - const checkEnd = () => { - if (!registry.size && !completed) { - writeTasks(); - onCompleteAll && onCompleteAll({ - write(v) { - !completed && buffer.write(v); - } - }); - writable && writable.end(); - completed = true; - } - }; - const pushTask = (task) => { - tasks += task + ";"; - if (!scheduled && firstFlushed) { - Promise.resolve().then(writeTasks); - scheduled = true; - } - }; - const writeTasks = () => { - if (tasks.length && !completed && firstFlushed) { - buffer.write(`${tasks}<\/script>`); - tasks = ""; - } - scheduled = false; - }; - let context; - let writable; - let tmp = ""; - let tasks = ""; - let firstFlushed = false; - let completed = false; - let scriptFlushed = false; - let scheduled = true; - let buffer = { - write(payload) { - tmp += payload; - } - }; - sharedConfig.context = context = { - id: renderId || "", - count: 0, - async: true, - resources: {}, - suspense: {}, - assets: [], - nonce, - block(p) { - if (!firstFlushed) - blockingResources.push(p); - }, - replace(id, payloadFn) { - if (firstFlushed) - return; - const placeholder = ``; - const first = html.indexOf(placeholder); - if (first === -1) - return; - const last = html.indexOf(``, first + placeholder.length); - html = html.replace(html.slice(first, last + placeholder.length + 1), resolveSSRNode2(payloadFn())); - }, - writeResource(id, p, error, wait) { - if (error) - return pushTask(serializeSet(dedupe, id, p, serializeError)); - if (!p || typeof p !== "object" || !("then" in p)) - return pushTask(serializeSet(dedupe, id, p)); - if (!firstFlushed) - wait && blockingResources.push(p); - else - pushTask(`_$HY.init("${id}")`); - p.then((d) => { - !completed && pushTask(serializeSet(dedupe, id, d)); - }).catch(() => { - !completed && pushTask(`_$HY.set("${id}", {})`); - }); - }, - registerFragment(key) { - if (!registry.has(key)) { - registry.set(key, []); - firstFlushed && pushTask(`_$HY.init("${key}")`); - } - return (value, error) => { - if (registry.has(key)) { - const keys = registry.get(key); - registry.delete(key); - if (waitForFragments(registry, key)) - return; - if ((value !== void 0 || error) && !completed) { - if (!firstFlushed) { - Promise.resolve().then(() => html = replacePlaceholder(html, key, value !== void 0 ? value : "")); - error && pushTask(serializeSet(dedupe, key, error, serializeError)); - } else { - buffer.write(``); - pushTask(`${keys.length ? keys.map((k) => `_$HY.unset("${k}")`).join(";") + ";" : ""}$df("${key}"${error ? "," + serializeError(error) : ""})${!scriptFlushed ? ";" + REPLACE_SCRIPT : ""}`); - scriptFlushed = true; - } - } - } - if (!registry.size) - Promise.resolve().then(checkEnd); - return firstFlushed; +function readHexDigit(code) { + return code >= 48 && code <= 57 ? code - 48 : code >= 65 && code <= 70 ? code - 55 : code >= 97 && code <= 102 ? code - 87 : -1; +} +function readEscapedCharacter(lexer, position) { + const body = lexer.source.body; + const code = body.charCodeAt(position + 1); + switch (code) { + case 34: + return { + value: '"', + size: 2 + }; + case 92: + return { + value: "\\", + size: 2 + }; + case 47: + return { + value: "/", + size: 2 + }; + case 98: + return { + value: "\b", + size: 2 + }; + case 102: + return { + value: "\f", + size: 2 }; + case 110: + return { + value: "\n", + size: 2 + }; + case 114: + return { + value: "\r", + size: 2 + }; + case 116: + return { + value: " ", + size: 2 + }; + } + throw syntaxError( + lexer.source, + position, + `Invalid character escape sequence: "${body.slice( + position, + position + 2 + )}".` + ); +} +function readBlockString(lexer, start) { + const body = lexer.source.body; + const bodyLength = body.length; + let lineStart = lexer.lineStart; + let position = start + 3; + let chunkStart = position; + let currentLine = ""; + const blockLines = []; + while (position < bodyLength) { + const code = body.charCodeAt(position); + if (code === 34 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34) { + currentLine += body.slice(chunkStart, position); + blockLines.push(currentLine); + const token = createToken( + lexer, + TokenKind.BLOCK_STRING, + start, + position + 3, + dedentBlockStringLines(blockLines).join("\n") + ); + lexer.line += blockLines.length - 1; + lexer.lineStart = lineStart; + return token; } - }; - let html = resolveSSRNode2(escape(code())); - function doShell() { - sharedConfig.context = context; - context.noHydrate = true; - html = injectAssets(context.assets, html); - for (const key in context.resources) { - if (!("data" in context.resources[key] || context.resources[key].ref[0].error)) - pushTask(`_$HY.init("${key}")`); + if (code === 92 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34 && body.charCodeAt(position + 3) === 34) { + currentLine += body.slice(chunkStart, position); + chunkStart = position + 1; + position += 4; + continue; } - for (const key of registry.keys()) - pushTask(`_$HY.init("${key}")`); - if (tasks.length) - html = injectScripts(html, tasks, nonce); - buffer.write(html); - tasks = ""; - scheduled = false; - onCompleteShell && onCompleteShell({ - write(v) { - !completed && buffer.write(v); + if (code === 10 || code === 13) { + currentLine += body.slice(chunkStart, position); + blockLines.push(currentLine); + if (code === 13 && body.charCodeAt(position + 1) === 10) { + position += 2; + } else { + ++position; } - }); - } - return { - then(fn) { - function complete() { - doShell(); - fn(tmp); - } - if (onCompleteAll) { - ogComplete = onCompleteAll; - onCompleteAll = (options2) => { - ogComplete(options2); - complete(); - }; - } else - onCompleteAll = complete; - if (!registry.size) - Promise.resolve().then(checkEnd); - }, - pipe(w) { - Promise.allSettled(blockingResources).then(() => { - doShell(); - buffer = writable = w; - buffer.write(tmp); - firstFlushed = true; - if (completed) - writable.end(); - else - setTimeout(checkEnd); - }); - }, - pipeTo(w) { - Promise.allSettled(blockingResources).then(() => { - doShell(); - const encoder = new TextEncoder(); - const writer = w.getWriter(); - writable = { - end() { - writer.releaseLock(); - w.close(); - } - }; - buffer = { - write(payload) { - writer.write(encoder.encode(payload)); - } - }; - buffer.write(tmp); - firstFlushed = true; - if (completed) - writable.end(); - else - setTimeout(checkEnd); - }); + currentLine = ""; + chunkStart = position; + lineStart = position; + continue; } - }; -} -function Assets(props) { - useAssets(() => props.children); -} -function HydrationScript(props) { - const { - nonce - } = sharedConfig.context; - return ssr(generateHydrationScript({ - nonce, - ...props - })); -} -function NoHydration(props) { - const c = sharedConfig.context; - c.noHydrate = true; - const children2 = props.children; - c.noHydrate = false; - return children2; + if (isUnicodeScalarValue(code)) { + ++position; + } else if (isSupplementaryCodePoint(body, position)) { + position += 2; + } else { + throw syntaxError( + lexer.source, + position, + `Invalid character within String: ${printCodePointAt( + lexer, + position + )}.` + ); + } + } + throw syntaxError(lexer.source, position, "Unterminated string."); } -function ssr(t, ...nodes) { - if (nodes.length) { - let result = ""; - for (let i = 0; i < nodes.length; i++) { - result += t[i]; - const node = nodes[i]; - if (node !== void 0) - result += resolveSSRNode2(node); +function readName(lexer, start) { + const body = lexer.source.body; + const bodyLength = body.length; + let position = start + 1; + while (position < bodyLength) { + const code = body.charCodeAt(position); + if (isNameContinue(code)) { + ++position; + } else { + break; } - t = result + t[nodes.length]; } - return { - t - }; + return createToken( + lexer, + TokenKind.NAME, + start, + position, + body.slice(start, position) + ); } -function ssrClassList(value) { - if (!value) - return ""; - let classKeys = Object.keys(value), result = ""; - for (let i = 0, len = classKeys.length; i < len; i++) { - const key = classKeys[i], classValue = !!value[key]; - if (!key || !classValue) - continue; - i && (result += " "); - result += key; +function devAssert(condition, message) { + const booleanCondition = Boolean(condition); + if (!booleanCondition) { + throw new Error(message); } - return result; } -function ssrStyle(value) { - if (!value) - return ""; - if (typeof value === "string") - return value; - let result = ""; - const k = Object.keys(value); - for (let i = 0; i < k.length; i++) { - const s = k[i]; - if (i) - result += ";"; - result += `${s}:${escape(value[s], true)}`; +var MAX_ARRAY_LENGTH = 10; +var MAX_RECURSIVE_DEPTH$1 = 2; +function inspect$1(value) { + return formatValue$1(value, []); +} +function formatValue$1(value, seenValues) { + switch (typeof value) { + case "string": + return JSON.stringify(value); + case "function": + return value.name ? `[function ${value.name}]` : "[function]"; + case "object": + return formatObjectValue$1(value, seenValues); + default: + return String(value); } - return result; } -function ssrElement(tag, props, children2, needsId) { - let result = `<${tag}${needsId ? ssrHydrationKey() : ""} `; - if (props == null) - props = {}; - else if (typeof props === "function") - props = props(); - const keys = Object.keys(props); - let classResolved; - for (let i = 0; i < keys.length; i++) { - const prop = keys[i]; - if (ChildProperties.has(prop)) { - if (children2 === void 0) - children2 = prop === "innerHTML" ? props[prop] : escape(props[prop]); - continue; - } - const value = props[prop]; - if (prop === "style") { - result += `style="${ssrStyle(value)}"`; - } else if (prop === "class" || prop === "className" || prop === "classList") { - if (classResolved) - continue; - let n; - result += `class="${(n = props.class) ? n + " " : ""}${(n = props.className) ? n + " " : ""}${ssrClassList(props.classList)}"`; - classResolved = true; - } else if (BooleanAttributes.has(prop)) { - if (value) - result += prop; - else - continue; - } else if (value == void 0 || prop === "ref" || prop.slice(0, 2) === "on") { - continue; - } else { - result += `${Aliases[prop] || prop}="${escape(value, true)}"`; +function formatObjectValue$1(value, previouslySeenValues) { + if (value === null) { + return "null"; + } + if (previouslySeenValues.includes(value)) { + return "[Circular]"; + } + const seenValues = [...previouslySeenValues, value]; + if (isJSONable$1(value)) { + const jsonValue = value.toJSON(); + if (jsonValue !== value) { + return typeof jsonValue === "string" ? jsonValue : formatValue$1(jsonValue, seenValues); } - if (i !== keys.length - 1) - result += " "; + } else if (Array.isArray(value)) { + return formatArray$1(value, seenValues); } - return { - t: result + `>${resolveSSRNode2(children2)}` - }; + return formatObject$1(value, seenValues); } -function ssrAttribute(key, value, isBoolean) { - return isBoolean ? value ? " " + key : "" : value != null ? ` ${key}="${value}"` : ""; +function isJSONable$1(value) { + return typeof value.toJSON === "function"; } -function ssrHydrationKey() { - const hk = getHydrationKey(); - return hk ? ` data-hk="${hk}"` : ""; +function formatObject$1(object, seenValues) { + const entries = Object.entries(object); + if (entries.length === 0) { + return "{}"; + } + if (seenValues.length > MAX_RECURSIVE_DEPTH$1) { + return "[" + getObjectTag$1(object) + "]"; + } + const properties = entries.map( + ([key, value]) => key + ": " + formatValue$1(value, seenValues) + ); + return "{ " + properties.join(", ") + " }"; } -function escape(s, attr) { - const t = typeof s; - if (t !== "string") { - if (!attr && t === "function") - return escape(s(), attr); - if (!attr && Array.isArray(s)) { - let r = ""; - for (let i = 0; i < s.length; i++) - r += resolveSSRNode2(escape(s[i], attr)); - return { - t: r - }; +function formatArray$1(array, seenValues) { + if (array.length === 0) { + return "[]"; + } + if (seenValues.length > MAX_RECURSIVE_DEPTH$1) { + return "[Array]"; + } + const len = Math.min(MAX_ARRAY_LENGTH, array.length); + const remaining = array.length - len; + const items = []; + for (let i = 0; i < len; ++i) { + items.push(formatValue$1(array[i], seenValues)); + } + if (remaining === 1) { + items.push("... 1 more item"); + } else if (remaining > 1) { + items.push(`... ${remaining} more items`); + } + return "[" + items.join(", ") + "]"; +} +function getObjectTag$1(object) { + const tag = Object.prototype.toString.call(object).replace(/^\[object /, "").replace(/]$/, ""); + if (tag === "Object" && typeof object.constructor === "function") { + const name = object.constructor.name; + if (typeof name === "string" && name !== "") { + return name; } - if (attr && t === "boolean") - return String(s); - return s; } - const delim = attr ? '"' : "<"; - const escDelim = attr ? """ : "<"; - let iDelim = s.indexOf(delim); - let iAmp = s.indexOf("&"); - if (iDelim < 0 && iAmp < 0) - return s; - let left = 0, out = ""; - while (iDelim >= 0 && iAmp >= 0) { - if (iDelim < iAmp) { - if (left < iDelim) - out += s.substring(left, iDelim); - out += escDelim; - left = iDelim + 1; - iDelim = s.indexOf(delim, left); - } else { - if (left < iAmp) - out += s.substring(left, iAmp); - out += "&"; - left = iAmp + 1; - iAmp = s.indexOf("&", left); - } - } - if (iDelim >= 0) { - do { - if (left < iDelim) - out += s.substring(left, iDelim); - out += escDelim; - left = iDelim + 1; - iDelim = s.indexOf(delim, left); - } while (iDelim >= 0); - } else - while (iAmp >= 0) { - if (left < iAmp) - out += s.substring(left, iAmp); - out += "&"; - left = iAmp + 1; - iAmp = s.indexOf("&", left); - } - return left < s.length ? out + s.substring(left) : out; -} -function resolveSSRNode2(node) { - const t = typeof node; - if (t === "string") - return node; - if (node == null || t === "boolean") - return ""; - if (Array.isArray(node)) { - let mapped = ""; - for (let i = 0, len = node.length; i < len; i++) - mapped += resolveSSRNode2(node[i]); - return mapped; - } - if (t === "object") - return node.t; - if (t === "function") - return resolveSSRNode2(node()); - return String(node); -} -function getHydrationKey() { - const hydrate = sharedConfig.context; - return hydrate && !hydrate.noHydrate && `${hydrate.id}${hydrate.count++}`; -} -function useAssets(fn) { - sharedConfig.context.assets.push(() => resolveSSRNode2(fn())); -} -function generateHydrationScript({ - eventNames = ["click", "input"], - nonce -} = {}) { - return `var e,t;e=window._$HY||(_$HY={events:[],completed:new WeakSet,r:{}}),t=e=>e&&e.hasAttribute&&(e.hasAttribute("data-hk")?e:t(e.host&&e.host instanceof Node?e.host:e.parentNode)),["${eventNames.join('","')}"].forEach((o=>document.addEventListener(o,(o=>{let s=o.composedPath&&o.composedPath()[0]||o.target,a=t(s);a&&!e.completed.has(a)&&e.events.push([a,o])})))),e.init=(t,o)=>{e.r[t]=[new Promise(((e,t)=>o=e)),o]},e.set=(t,o,s)=>{(s=e.r[t])&&s[1](o),e.r[t]=[o]},e.unset=t=>{delete e.r[t]},e.load=t=>e.r[t];<\/script>`; -} -function injectAssets(assets, html) { - if (!assets || !assets.length) - return html; - let out = ""; - for (let i = 0, len = assets.length; i < len; i++) - out += assets[i](); - return html.replace(``, out + ``); -} -function injectScripts(html, scripts, nonce) { - const tag = `${scripts}<\/script>`; - const index = html.indexOf(""); - if (index > -1) { - return html.slice(0, index) + tag + html.slice(index); - } - return html + tag; + return tag; } -function serializeError(error) { - if (error.message) { - const fields = {}; - const keys = Object.getOwnPropertyNames(error); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const value = error[key]; - if (!value || key !== "message" && typeof value !== "function") { - fields[key] = value; - } - } - return `Object.assign(new Error(${stringify(error.message)}), ${stringify(fields)})`; +var instanceOf = false ? function instanceOf2(value, constructor) { + return value instanceof constructor; +} : function instanceOf3(value, constructor) { + if (value instanceof constructor) { + return true; } - return stringify(error); -} -function waitForFragments(registry, key) { - for (const k of [...registry.keys()].reverse()) { - if (key.startsWith(k)) { - registry.get(k).push(key); - return true; + if (typeof value === "object" && value !== null) { + var _value$constructor; + const className = constructor.prototype[Symbol.toStringTag]; + const valueClassName = Symbol.toStringTag in value ? value[Symbol.toStringTag] : (_value$constructor = value.constructor) === null || _value$constructor === void 0 ? void 0 : _value$constructor.name; + if (className === valueClassName) { + const stringifiedValue = inspect$1(value); + throw new Error(`Cannot use ${className} "${stringifiedValue}" from another module or realm. + +Ensure that there is only one instance of "graphql" in the node_modules +directory. If different versions of "graphql" are the dependencies of other +relied on modules, use "resolutions" to ensure only one version is installed. + +https://yarnpkg.com/en/docs/selective-version-resolutions + +Duplicate "graphql" modules cannot be used at the same time since different +versions may have different capabilities and behavior. The data from one +version used in the function from another could produce confusing and +spurious results.`); } } return false; -} -function serializeSet(registry, key, value, serializer = stringify) { - const exist = registry.get(value); - if (exist) - return `_$HY.set("${key}", _$HY.r["${exist}"][0])`; - value !== null && typeof value === "object" && registry.set(value, key); - return `_$HY.set("${key}", ${serializer(value)})`; -} -function replacePlaceholder(html, key, value) { - const nextRegex = /(<[/]?span[^>]*>)/g; - const marker = ``; - const first = html.indexOf(marker); - if (first === -1) - return html; - nextRegex.lastIndex = first + marker.length; - let match; - let open = 0, close = 0; - while (match = nextRegex.exec(html)) { - if (match[0][1] === "/") { - close++; - if (close > open) - break; - } else - open++; +}; +var Source = class { + constructor(body, name = "GraphQL request", locationOffset = { + line: 1, + column: 1 + }) { + typeof body === "string" || devAssert(false, `Body must be a string. Received: ${inspect$1(body)}.`); + this.body = body; + this.name = name; + this.locationOffset = locationOffset; + this.locationOffset.line > 0 || devAssert( + false, + "line in locationOffset is 1-indexed and must be positive." + ); + this.locationOffset.column > 0 || devAssert( + false, + "column in locationOffset is 1-indexed and must be positive." + ); } - return html.slice(0, first) + value + html.slice(nextRegex.lastIndex); + get [Symbol.toStringTag]() { + return "Source"; + } +}; +function isSource(source) { + return instanceOf(source, Source); } -var isServer = true; -function spread() { +function parse(source, options) { + const parser2 = new Parser(source, options); + return parser2.parseDocument(); +} +function parseValue(source, options) { + const parser2 = new Parser(source, options); + parser2.expectToken(TokenKind.SOF); + const value = parser2.parseValueLiteral(false); + parser2.expectToken(TokenKind.EOF); + return value; } -function delegateEvents() { +function parseConstValue(source, options) { + const parser2 = new Parser(source, options); + parser2.expectToken(TokenKind.SOF); + const value = parser2.parseConstValueLiteral(); + parser2.expectToken(TokenKind.EOF); + return value; } - -// .solid/server/handler.js -var import_graphql_request = __toESM(require_dist2(), 1); - -// node_modules/.pnpm/@envelop+core@2.6.0_graphql@16.6.0/node_modules/@envelop/core/esm/enable-if.js -var EnableIfBranded; -(function(EnableIfBranded2) { - EnableIfBranded2[EnableIfBranded2["DisabledPlugin"] = 0] = "DisabledPlugin"; -})(EnableIfBranded || (EnableIfBranded = {})); -function isPluginEnabled(t) { - return t !== EnableIfBranded.DisabledPlugin && t !== null; +function parseType(source, options) { + const parser2 = new Parser(source, options); + parser2.expectToken(TokenKind.SOF); + const type = parser2.parseTypeReference(); + parser2.expectToken(TokenKind.EOF); + return type; } -function enableIf(condition, plugin) { - if (condition) { - return typeof plugin === "function" ? plugin() : plugin; +var Parser = class { + constructor(source, options = {}) { + const sourceObj = isSource(source) ? source : new Source(source); + this._lexer = new Lexer(sourceObj); + this._options = options; + this._tokenCounter = 0; } - return EnableIfBranded.DisabledPlugin; -} - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/version.mjs -var versionInfo = Object.freeze({ - major: 16, - minor: 6, - patch: 0, - preReleaseTag: null -}); - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/jsutils/devAssert.mjs -function devAssert(condition, message) { - const booleanCondition = Boolean(condition); - if (!booleanCondition) { - throw new Error(message); + parseName() { + const token = this.expectToken(TokenKind.NAME); + return this.node(token, { + kind: Kind.NAME, + value: token.value + }); } -} - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/jsutils/isPromise.mjs -function isPromise(value) { - return typeof (value === null || value === void 0 ? void 0 : value.then) === "function"; -} - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/jsutils/isObjectLike.mjs -function isObjectLike(value) { - return typeof value == "object" && value !== null; -} - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/jsutils/invariant.mjs -function invariant(condition, message) { - const booleanCondition = Boolean(condition); - if (!booleanCondition) { - throw new Error( - message != null ? message : "Unexpected invariant triggered." - ); + parseDocument() { + return this.node(this._lexer.token, { + kind: Kind.DOCUMENT, + definitions: this.many( + TokenKind.SOF, + this.parseDefinition, + TokenKind.EOF + ) + }); } -} - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/location.mjs -var LineRegExp = /\r\n|[\n\r]/g; -function getLocation(source, position) { - let lastLineStart = 0; - let line = 1; - for (const match of source.body.matchAll(LineRegExp)) { - typeof match.index === "number" || invariant(false); - if (match.index >= position) { - break; + parseDefinition() { + if (this.peek(TokenKind.BRACE_L)) { + return this.parseOperationDefinition(); } - lastLineStart = match.index + match[0].length; - line += 1; - } - return { - line, - column: position + 1 - lastLineStart - }; -} - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/printLocation.mjs -function printLocation(location) { - return printSourceLocation( - location.source, - getLocation(location.source, location.start) - ); -} -function printSourceLocation(source, sourceLocation) { - const firstLineColumnOffset = source.locationOffset.column - 1; - const body = "".padStart(firstLineColumnOffset) + source.body; - const lineIndex = sourceLocation.line - 1; - const lineOffset = source.locationOffset.line - 1; - const lineNum = sourceLocation.line + lineOffset; - const columnOffset = sourceLocation.line === 1 ? firstLineColumnOffset : 0; - const columnNum = sourceLocation.column + columnOffset; - const locationStr = `${source.name}:${lineNum}:${columnNum} -`; - const lines = body.split(/\r\n|[\n\r]/g); - const locationLine = lines[lineIndex]; - if (locationLine.length > 120) { - const subLineIndex = Math.floor(columnNum / 80); - const subLineColumnNum = columnNum % 80; - const subLines = []; - for (let i = 0; i < locationLine.length; i += 80) { - subLines.push(locationLine.slice(i, i + 80)); - } - return locationStr + printPrefixedLines([ - [`${lineNum} |`, subLines[0]], - ...subLines.slice(1, subLineIndex + 1).map((subLine) => ["|", subLine]), - ["|", "^".padStart(subLineColumnNum)], - ["|", subLines[subLineIndex + 1]] - ]); - } - return locationStr + printPrefixedLines([ - [`${lineNum - 1} |`, lines[lineIndex - 1]], - [`${lineNum} |`, locationLine], - ["|", "^".padStart(columnNum)], - [`${lineNum + 1} |`, lines[lineIndex + 1]] - ]); -} -function printPrefixedLines(lines) { - const existingLines = lines.filter(([_, line]) => line !== void 0); - const padLen = Math.max(...existingLines.map(([prefix2]) => prefix2.length)); - return existingLines.map(([prefix2, line]) => prefix2.padStart(padLen) + (line ? " " + line : "")).join("\n"); -} - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/error/GraphQLError.mjs -function toNormalizedOptions(args) { - const firstArg = args[0]; - if (firstArg == null || "kind" in firstArg || "length" in firstArg) { - return { - nodes: firstArg, - source: args[1], - positions: args[2], - path: args[3], - originalError: args[4], - extensions: args[5] - }; - } - return firstArg; -} -var GraphQLError = class extends Error { - constructor(message, ...rawArgs) { - var _this$nodes, _nodeLocations$, _ref; - const { nodes, source, positions, path, originalError, extensions } = toNormalizedOptions(rawArgs); - super(message); - this.name = "GraphQLError"; - this.path = path !== null && path !== void 0 ? path : void 0; - this.originalError = originalError !== null && originalError !== void 0 ? originalError : void 0; - this.nodes = undefinedIfEmpty( - Array.isArray(nodes) ? nodes : nodes ? [nodes] : void 0 - ); - const nodeLocations = undefinedIfEmpty( - (_this$nodes = this.nodes) === null || _this$nodes === void 0 ? void 0 : _this$nodes.map((node) => node.loc).filter((loc) => loc != null) - ); - this.source = source !== null && source !== void 0 ? source : nodeLocations === null || nodeLocations === void 0 ? void 0 : (_nodeLocations$ = nodeLocations[0]) === null || _nodeLocations$ === void 0 ? void 0 : _nodeLocations$.source; - this.positions = positions !== null && positions !== void 0 ? positions : nodeLocations === null || nodeLocations === void 0 ? void 0 : nodeLocations.map((loc) => loc.start); - this.locations = positions && source ? positions.map((pos) => getLocation(source, pos)) : nodeLocations === null || nodeLocations === void 0 ? void 0 : nodeLocations.map((loc) => getLocation(loc.source, loc.start)); - const originalExtensions = isObjectLike( - originalError === null || originalError === void 0 ? void 0 : originalError.extensions - ) ? originalError === null || originalError === void 0 ? void 0 : originalError.extensions : void 0; - this.extensions = (_ref = extensions !== null && extensions !== void 0 ? extensions : originalExtensions) !== null && _ref !== void 0 ? _ref : /* @__PURE__ */ Object.create(null); - Object.defineProperties(this, { - message: { - writable: true, - enumerable: true - }, - name: { - enumerable: false - }, - nodes: { - enumerable: false - }, - source: { - enumerable: false - }, - positions: { - enumerable: false - }, - originalError: { - enumerable: false + const hasDescription = this.peekDescription(); + const keywordToken = hasDescription ? this._lexer.lookahead() : this._lexer.token; + if (keywordToken.kind === TokenKind.NAME) { + switch (keywordToken.value) { + case "schema": + return this.parseSchemaDefinition(); + case "scalar": + return this.parseScalarTypeDefinition(); + case "type": + return this.parseObjectTypeDefinition(); + case "interface": + return this.parseInterfaceTypeDefinition(); + case "union": + return this.parseUnionTypeDefinition(); + case "enum": + return this.parseEnumTypeDefinition(); + case "input": + return this.parseInputObjectTypeDefinition(); + case "directive": + return this.parseDirectiveDefinition(); } - }); - if (originalError !== null && originalError !== void 0 && originalError.stack) { - Object.defineProperty(this, "stack", { - value: originalError.stack, - writable: true, - configurable: true - }); - } else if (Error.captureStackTrace) { - Error.captureStackTrace(this, GraphQLError); - } else { - Object.defineProperty(this, "stack", { - value: Error().stack, - writable: true, - configurable: true - }); - } - } - get [Symbol.toStringTag]() { - return "GraphQLError"; - } - toString() { - let output = this.message; - if (this.nodes) { - for (const node of this.nodes) { - if (node.loc) { - output += "\n\n" + printLocation(node.loc); - } + if (hasDescription) { + throw syntaxError( + this._lexer.source, + this._lexer.token.start, + "Unexpected description, descriptions are supported only on type definitions." + ); } - } else if (this.source && this.locations) { - for (const location of this.locations) { - output += "\n\n" + printSourceLocation(this.source, location); + switch (keywordToken.value) { + case "query": + case "mutation": + case "subscription": + return this.parseOperationDefinition(); + case "fragment": + return this.parseFragmentDefinition(); + case "extend": + return this.parseTypeSystemExtension(); } } - return output; + throw this.unexpected(keywordToken); } - toJSON() { - const formattedError = { - message: this.message - }; - if (this.locations != null) { - formattedError.locations = this.locations; - } - if (this.path != null) { - formattedError.path = this.path; + parseOperationDefinition() { + const start = this._lexer.token; + if (this.peek(TokenKind.BRACE_L)) { + return this.node(start, { + kind: Kind.OPERATION_DEFINITION, + operation: OperationTypeNode.QUERY, + name: void 0, + variableDefinitions: [], + directives: [], + selectionSet: this.parseSelectionSet() + }); } - if (this.extensions != null && Object.keys(this.extensions).length > 0) { - formattedError.extensions = this.extensions; + const operation = this.parseOperationType(); + let name; + if (this.peek(TokenKind.NAME)) { + name = this.parseName(); } - return formattedError; + return this.node(start, { + kind: Kind.OPERATION_DEFINITION, + operation, + name, + variableDefinitions: this.parseVariableDefinitions(), + directives: this.parseDirectives(false), + selectionSet: this.parseSelectionSet() + }); } -}; -function undefinedIfEmpty(array) { - return array === void 0 || array.length === 0 ? void 0 : array; -} - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/error/syntaxError.mjs -function syntaxError(source, position, description) { - return new GraphQLError(`Syntax Error: ${description}`, { - source, - positions: [position] - }); -} - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/ast.mjs -var Location = class { - constructor(startToken, endToken, source) { - this.start = startToken.start; - this.end = endToken.end; - this.startToken = startToken; - this.endToken = endToken; - this.source = source; + parseOperationType() { + const operationToken = this.expectToken(TokenKind.NAME); + switch (operationToken.value) { + case "query": + return OperationTypeNode.QUERY; + case "mutation": + return OperationTypeNode.MUTATION; + case "subscription": + return OperationTypeNode.SUBSCRIPTION; + } + throw this.unexpected(operationToken); } - get [Symbol.toStringTag]() { - return "Location"; + parseVariableDefinitions() { + return this.optionalMany( + TokenKind.PAREN_L, + this.parseVariableDefinition, + TokenKind.PAREN_R + ); } - toJSON() { - return { - start: this.start, - end: this.end - }; + parseVariableDefinition() { + return this.node(this._lexer.token, { + kind: Kind.VARIABLE_DEFINITION, + variable: this.parseVariable(), + type: (this.expectToken(TokenKind.COLON), this.parseTypeReference()), + defaultValue: this.expectOptionalToken(TokenKind.EQUALS) ? this.parseConstValueLiteral() : void 0, + directives: this.parseConstDirectives() + }); } -}; -var Token = class { - constructor(kind, start, end, line, column, value) { - this.kind = kind; - this.start = start; - this.end = end; - this.line = line; - this.column = column; - this.value = value; - this.prev = null; - this.next = null; + parseVariable() { + const start = this._lexer.token; + this.expectToken(TokenKind.DOLLAR); + return this.node(start, { + kind: Kind.VARIABLE, + name: this.parseName() + }); } - get [Symbol.toStringTag]() { - return "Token"; + parseSelectionSet() { + return this.node(this._lexer.token, { + kind: Kind.SELECTION_SET, + selections: this.many( + TokenKind.BRACE_L, + this.parseSelection, + TokenKind.BRACE_R + ) + }); } - toJSON() { - return { - kind: this.kind, - value: this.value, - line: this.line, - column: this.column - }; + parseSelection() { + return this.peek(TokenKind.SPREAD) ? this.parseFragment() : this.parseField(); } -}; -var QueryDocumentKeys = { - Name: [], - Document: ["definitions"], - OperationDefinition: [ - "name", - "variableDefinitions", - "directives", - "selectionSet" - ], - VariableDefinition: ["variable", "type", "defaultValue", "directives"], - Variable: ["name"], - SelectionSet: ["selections"], - Field: ["alias", "name", "arguments", "directives", "selectionSet"], - Argument: ["name", "value"], - FragmentSpread: ["name", "directives"], - InlineFragment: ["typeCondition", "directives", "selectionSet"], - FragmentDefinition: [ - "name", - "variableDefinitions", - "typeCondition", - "directives", - "selectionSet" - ], - IntValue: [], - FloatValue: [], - StringValue: [], - BooleanValue: [], - NullValue: [], - EnumValue: [], - ListValue: ["values"], - ObjectValue: ["fields"], - ObjectField: ["name", "value"], - Directive: ["name", "arguments"], - NamedType: ["name"], - ListType: ["type"], - NonNullType: ["type"], - SchemaDefinition: ["description", "directives", "operationTypes"], - OperationTypeDefinition: ["type"], - ScalarTypeDefinition: ["description", "name", "directives"], - ObjectTypeDefinition: [ - "description", - "name", - "interfaces", - "directives", - "fields" - ], - FieldDefinition: ["description", "name", "arguments", "type", "directives"], - InputValueDefinition: [ - "description", - "name", - "type", - "defaultValue", - "directives" - ], - InterfaceTypeDefinition: [ - "description", - "name", - "interfaces", - "directives", - "fields" - ], - UnionTypeDefinition: ["description", "name", "directives", "types"], - EnumTypeDefinition: ["description", "name", "directives", "values"], - EnumValueDefinition: ["description", "name", "directives"], - InputObjectTypeDefinition: ["description", "name", "directives", "fields"], - DirectiveDefinition: ["description", "name", "arguments", "locations"], - SchemaExtension: ["directives", "operationTypes"], - ScalarTypeExtension: ["name", "directives"], - ObjectTypeExtension: ["name", "interfaces", "directives", "fields"], - InterfaceTypeExtension: ["name", "interfaces", "directives", "fields"], - UnionTypeExtension: ["name", "directives", "types"], - EnumTypeExtension: ["name", "directives", "values"], - InputObjectTypeExtension: ["name", "directives", "fields"] -}; -var kindValues = new Set(Object.keys(QueryDocumentKeys)); -function isNode(maybeNode) { - const maybeKind = maybeNode === null || maybeNode === void 0 ? void 0 : maybeNode.kind; - return typeof maybeKind === "string" && kindValues.has(maybeKind); -} -var OperationTypeNode; -(function(OperationTypeNode2) { - OperationTypeNode2["QUERY"] = "query"; - OperationTypeNode2["MUTATION"] = "mutation"; - OperationTypeNode2["SUBSCRIPTION"] = "subscription"; -})(OperationTypeNode || (OperationTypeNode = {})); - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/directiveLocation.mjs -var DirectiveLocation; -(function(DirectiveLocation2) { - DirectiveLocation2["QUERY"] = "QUERY"; - DirectiveLocation2["MUTATION"] = "MUTATION"; - DirectiveLocation2["SUBSCRIPTION"] = "SUBSCRIPTION"; - DirectiveLocation2["FIELD"] = "FIELD"; - DirectiveLocation2["FRAGMENT_DEFINITION"] = "FRAGMENT_DEFINITION"; - DirectiveLocation2["FRAGMENT_SPREAD"] = "FRAGMENT_SPREAD"; - DirectiveLocation2["INLINE_FRAGMENT"] = "INLINE_FRAGMENT"; - DirectiveLocation2["VARIABLE_DEFINITION"] = "VARIABLE_DEFINITION"; - DirectiveLocation2["SCHEMA"] = "SCHEMA"; - DirectiveLocation2["SCALAR"] = "SCALAR"; - DirectiveLocation2["OBJECT"] = "OBJECT"; - DirectiveLocation2["FIELD_DEFINITION"] = "FIELD_DEFINITION"; - DirectiveLocation2["ARGUMENT_DEFINITION"] = "ARGUMENT_DEFINITION"; - DirectiveLocation2["INTERFACE"] = "INTERFACE"; - DirectiveLocation2["UNION"] = "UNION"; - DirectiveLocation2["ENUM"] = "ENUM"; - DirectiveLocation2["ENUM_VALUE"] = "ENUM_VALUE"; - DirectiveLocation2["INPUT_OBJECT"] = "INPUT_OBJECT"; - DirectiveLocation2["INPUT_FIELD_DEFINITION"] = "INPUT_FIELD_DEFINITION"; -})(DirectiveLocation || (DirectiveLocation = {})); - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/kinds.mjs -var Kind; -(function(Kind2) { - Kind2["NAME"] = "Name"; - Kind2["DOCUMENT"] = "Document"; - Kind2["OPERATION_DEFINITION"] = "OperationDefinition"; - Kind2["VARIABLE_DEFINITION"] = "VariableDefinition"; - Kind2["SELECTION_SET"] = "SelectionSet"; - Kind2["FIELD"] = "Field"; - Kind2["ARGUMENT"] = "Argument"; - Kind2["FRAGMENT_SPREAD"] = "FragmentSpread"; - Kind2["INLINE_FRAGMENT"] = "InlineFragment"; - Kind2["FRAGMENT_DEFINITION"] = "FragmentDefinition"; - Kind2["VARIABLE"] = "Variable"; - Kind2["INT"] = "IntValue"; - Kind2["FLOAT"] = "FloatValue"; - Kind2["STRING"] = "StringValue"; - Kind2["BOOLEAN"] = "BooleanValue"; - Kind2["NULL"] = "NullValue"; - Kind2["ENUM"] = "EnumValue"; - Kind2["LIST"] = "ListValue"; - Kind2["OBJECT"] = "ObjectValue"; - Kind2["OBJECT_FIELD"] = "ObjectField"; - Kind2["DIRECTIVE"] = "Directive"; - Kind2["NAMED_TYPE"] = "NamedType"; - Kind2["LIST_TYPE"] = "ListType"; - Kind2["NON_NULL_TYPE"] = "NonNullType"; - Kind2["SCHEMA_DEFINITION"] = "SchemaDefinition"; - Kind2["OPERATION_TYPE_DEFINITION"] = "OperationTypeDefinition"; - Kind2["SCALAR_TYPE_DEFINITION"] = "ScalarTypeDefinition"; - Kind2["OBJECT_TYPE_DEFINITION"] = "ObjectTypeDefinition"; - Kind2["FIELD_DEFINITION"] = "FieldDefinition"; - Kind2["INPUT_VALUE_DEFINITION"] = "InputValueDefinition"; - Kind2["INTERFACE_TYPE_DEFINITION"] = "InterfaceTypeDefinition"; - Kind2["UNION_TYPE_DEFINITION"] = "UnionTypeDefinition"; - Kind2["ENUM_TYPE_DEFINITION"] = "EnumTypeDefinition"; - Kind2["ENUM_VALUE_DEFINITION"] = "EnumValueDefinition"; - Kind2["INPUT_OBJECT_TYPE_DEFINITION"] = "InputObjectTypeDefinition"; - Kind2["DIRECTIVE_DEFINITION"] = "DirectiveDefinition"; - Kind2["SCHEMA_EXTENSION"] = "SchemaExtension"; - Kind2["SCALAR_TYPE_EXTENSION"] = "ScalarTypeExtension"; - Kind2["OBJECT_TYPE_EXTENSION"] = "ObjectTypeExtension"; - Kind2["INTERFACE_TYPE_EXTENSION"] = "InterfaceTypeExtension"; - Kind2["UNION_TYPE_EXTENSION"] = "UnionTypeExtension"; - Kind2["ENUM_TYPE_EXTENSION"] = "EnumTypeExtension"; - Kind2["INPUT_OBJECT_TYPE_EXTENSION"] = "InputObjectTypeExtension"; -})(Kind || (Kind = {})); - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/characterClasses.mjs -function isWhiteSpace(code) { - return code === 9 || code === 32; -} -function isDigit(code) { - return code >= 48 && code <= 57; -} -function isLetter(code) { - return code >= 97 && code <= 122 || code >= 65 && code <= 90; -} -function isNameStart(code) { - return isLetter(code) || code === 95; -} -function isNameContinue(code) { - return isLetter(code) || isDigit(code) || code === 95; -} - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/blockString.mjs -function dedentBlockStringLines(lines) { - var _firstNonEmptyLine2; - let commonIndent = Number.MAX_SAFE_INTEGER; - let firstNonEmptyLine = null; - let lastNonEmptyLine = -1; - for (let i = 0; i < lines.length; ++i) { - var _firstNonEmptyLine; - const line = lines[i]; - const indent3 = leadingWhitespace(line); - if (indent3 === line.length) { - continue; - } - firstNonEmptyLine = (_firstNonEmptyLine = firstNonEmptyLine) !== null && _firstNonEmptyLine !== void 0 ? _firstNonEmptyLine : i; - lastNonEmptyLine = i; - if (i !== 0 && indent3 < commonIndent) { - commonIndent = indent3; + parseField() { + const start = this._lexer.token; + const nameOrAlias = this.parseName(); + let alias; + let name; + if (this.expectOptionalToken(TokenKind.COLON)) { + alias = nameOrAlias; + name = this.parseName(); + } else { + name = nameOrAlias; } + return this.node(start, { + kind: Kind.FIELD, + alias, + name, + arguments: this.parseArguments(false), + directives: this.parseDirectives(false), + selectionSet: this.peek(TokenKind.BRACE_L) ? this.parseSelectionSet() : void 0 + }); } - return lines.map((line, i) => i === 0 ? line : line.slice(commonIndent)).slice( - (_firstNonEmptyLine2 = firstNonEmptyLine) !== null && _firstNonEmptyLine2 !== void 0 ? _firstNonEmptyLine2 : 0, - lastNonEmptyLine + 1 - ); -} -function leadingWhitespace(str) { - let i = 0; - while (i < str.length && isWhiteSpace(str.charCodeAt(i))) { - ++i; + parseArguments(isConst) { + const item = isConst ? this.parseConstArgument : this.parseArgument; + return this.optionalMany(TokenKind.PAREN_L, item, TokenKind.PAREN_R); } - return i; -} -function printBlockString(value, options) { - const escapedValue = value.replace(/"""/g, '\\"""'); - const lines = escapedValue.split(/\r\n|[\n\r]/g); - const isSingleLine = lines.length === 1; - const forceLeadingNewLine = lines.length > 1 && lines.slice(1).every((line) => line.length === 0 || isWhiteSpace(line.charCodeAt(0))); - const hasTrailingTripleQuotes = escapedValue.endsWith('\\"""'); - const hasTrailingQuote = value.endsWith('"') && !hasTrailingTripleQuotes; - const hasTrailingSlash = value.endsWith("\\"); - const forceTrailingNewline = hasTrailingQuote || hasTrailingSlash; - const printAsMultipleLines = !(options !== null && options !== void 0 && options.minimize) && (!isSingleLine || value.length > 70 || forceTrailingNewline || forceLeadingNewLine || hasTrailingTripleQuotes); - let result = ""; - const skipLeadingNewLine = isSingleLine && isWhiteSpace(value.charCodeAt(0)); - if (printAsMultipleLines && !skipLeadingNewLine || forceLeadingNewLine) { - result += "\n"; + parseArgument(isConst = false) { + const start = this._lexer.token; + const name = this.parseName(); + this.expectToken(TokenKind.COLON); + return this.node(start, { + kind: Kind.ARGUMENT, + name, + value: this.parseValueLiteral(isConst) + }); } - result += escapedValue; - if (printAsMultipleLines || forceTrailingNewline) { - result += "\n"; + parseConstArgument() { + return this.parseArgument(true); } - return '"""' + result + '"""'; -} - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/tokenKind.mjs -var TokenKind; -(function(TokenKind2) { - TokenKind2["SOF"] = ""; - TokenKind2["EOF"] = ""; - TokenKind2["BANG"] = "!"; - TokenKind2["DOLLAR"] = "$"; - TokenKind2["AMP"] = "&"; - TokenKind2["PAREN_L"] = "("; - TokenKind2["PAREN_R"] = ")"; - TokenKind2["SPREAD"] = "..."; - TokenKind2["COLON"] = ":"; - TokenKind2["EQUALS"] = "="; - TokenKind2["AT"] = "@"; - TokenKind2["BRACKET_L"] = "["; - TokenKind2["BRACKET_R"] = "]"; - TokenKind2["BRACE_L"] = "{"; - TokenKind2["PIPE"] = "|"; - TokenKind2["BRACE_R"] = "}"; - TokenKind2["NAME"] = "Name"; - TokenKind2["INT"] = "Int"; - TokenKind2["FLOAT"] = "Float"; - TokenKind2["STRING"] = "String"; - TokenKind2["BLOCK_STRING"] = "BlockString"; - TokenKind2["COMMENT"] = "Comment"; -})(TokenKind || (TokenKind = {})); - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/lexer.mjs -var Lexer = class { - constructor(source) { - const startOfFileToken = new Token(TokenKind.SOF, 0, 0, 0, 0); - this.source = source; - this.lastToken = startOfFileToken; - this.token = startOfFileToken; - this.line = 1; - this.lineStart = 0; + parseFragment() { + const start = this._lexer.token; + this.expectToken(TokenKind.SPREAD); + const hasTypeCondition = this.expectOptionalKeyword("on"); + if (!hasTypeCondition && this.peek(TokenKind.NAME)) { + return this.node(start, { + kind: Kind.FRAGMENT_SPREAD, + name: this.parseFragmentName(), + directives: this.parseDirectives(false) + }); + } + return this.node(start, { + kind: Kind.INLINE_FRAGMENT, + typeCondition: hasTypeCondition ? this.parseNamedType() : void 0, + directives: this.parseDirectives(false), + selectionSet: this.parseSelectionSet() + }); } - get [Symbol.toStringTag]() { - return "Lexer"; + parseFragmentDefinition() { + const start = this._lexer.token; + this.expectKeyword("fragment"); + if (this._options.allowLegacyFragmentVariables === true) { + return this.node(start, { + kind: Kind.FRAGMENT_DEFINITION, + name: this.parseFragmentName(), + variableDefinitions: this.parseVariableDefinitions(), + typeCondition: (this.expectKeyword("on"), this.parseNamedType()), + directives: this.parseDirectives(false), + selectionSet: this.parseSelectionSet() + }); + } + return this.node(start, { + kind: Kind.FRAGMENT_DEFINITION, + name: this.parseFragmentName(), + typeCondition: (this.expectKeyword("on"), this.parseNamedType()), + directives: this.parseDirectives(false), + selectionSet: this.parseSelectionSet() + }); } - advance() { - this.lastToken = this.token; - const token = this.token = this.lookahead(); - return token; + parseFragmentName() { + if (this._lexer.token.value === "on") { + throw this.unexpected(); + } + return this.parseName(); } - lookahead() { - let token = this.token; - if (token.kind !== TokenKind.EOF) { - do { - if (token.next) { - token = token.next; - } else { - const nextToken = readNextToken(this, token.end); - token.next = nextToken; - nextToken.prev = token; - token = nextToken; + parseValueLiteral(isConst) { + const token = this._lexer.token; + switch (token.kind) { + case TokenKind.BRACKET_L: + return this.parseList(isConst); + case TokenKind.BRACE_L: + return this.parseObject(isConst); + case TokenKind.INT: + this.advanceLexer(); + return this.node(token, { + kind: Kind.INT, + value: token.value + }); + case TokenKind.FLOAT: + this.advanceLexer(); + return this.node(token, { + kind: Kind.FLOAT, + value: token.value + }); + case TokenKind.STRING: + case TokenKind.BLOCK_STRING: + return this.parseStringLiteral(); + case TokenKind.NAME: + this.advanceLexer(); + switch (token.value) { + case "true": + return this.node(token, { + kind: Kind.BOOLEAN, + value: true + }); + case "false": + return this.node(token, { + kind: Kind.BOOLEAN, + value: false + }); + case "null": + return this.node(token, { + kind: Kind.NULL + }); + default: + return this.node(token, { + kind: Kind.ENUM, + value: token.value + }); } - } while (token.kind === TokenKind.COMMENT); + case TokenKind.DOLLAR: + if (isConst) { + this.expectToken(TokenKind.DOLLAR); + if (this._lexer.token.kind === TokenKind.NAME) { + const varName = this._lexer.token.value; + throw syntaxError( + this._lexer.source, + token.start, + `Unexpected variable "$${varName}" in constant value.` + ); + } else { + throw this.unexpected(token); + } + } + return this.parseVariable(); + default: + throw this.unexpected(); } - return token; } -}; -function isPunctuatorTokenKind(kind) { - return kind === TokenKind.BANG || kind === TokenKind.DOLLAR || kind === TokenKind.AMP || kind === TokenKind.PAREN_L || kind === TokenKind.PAREN_R || kind === TokenKind.SPREAD || kind === TokenKind.COLON || kind === TokenKind.EQUALS || kind === TokenKind.AT || kind === TokenKind.BRACKET_L || kind === TokenKind.BRACKET_R || kind === TokenKind.BRACE_L || kind === TokenKind.PIPE || kind === TokenKind.BRACE_R; -} -function isUnicodeScalarValue(code) { - return code >= 0 && code <= 55295 || code >= 57344 && code <= 1114111; -} -function isSupplementaryCodePoint(body, location) { - return isLeadingSurrogate(body.charCodeAt(location)) && isTrailingSurrogate(body.charCodeAt(location + 1)); -} -function isLeadingSurrogate(code) { - return code >= 55296 && code <= 56319; -} -function isTrailingSurrogate(code) { - return code >= 56320 && code <= 57343; -} -function printCodePointAt(lexer, location) { - const code = lexer.source.body.codePointAt(location); - if (code === void 0) { - return TokenKind.EOF; - } else if (code >= 32 && code <= 126) { - const char = String.fromCodePoint(code); - return char === '"' ? `'"'` : `"${char}"`; + parseConstValueLiteral() { + return this.parseValueLiteral(true); } - return "U+" + code.toString(16).toUpperCase().padStart(4, "0"); -} -function createToken(lexer, kind, start, end, value) { - const line = lexer.line; - const col = 1 + start - lexer.lineStart; - return new Token(kind, start, end, line, col, value); -} -function readNextToken(lexer, start) { - const body = lexer.source.body; - const bodyLength = body.length; - let position = start; - while (position < bodyLength) { - const code = body.charCodeAt(position); - switch (code) { - case 65279: - case 9: - case 32: - case 44: - ++position; - continue; - case 10: - ++position; - ++lexer.line; - lexer.lineStart = position; - continue; - case 13: - if (body.charCodeAt(position + 1) === 10) { - position += 2; - } else { - ++position; - } - ++lexer.line; - lexer.lineStart = position; - continue; - case 35: - return readComment(lexer, position); - case 33: - return createToken(lexer, TokenKind.BANG, position, position + 1); - case 36: - return createToken(lexer, TokenKind.DOLLAR, position, position + 1); - case 38: - return createToken(lexer, TokenKind.AMP, position, position + 1); - case 40: - return createToken(lexer, TokenKind.PAREN_L, position, position + 1); - case 41: - return createToken(lexer, TokenKind.PAREN_R, position, position + 1); - case 46: - if (body.charCodeAt(position + 1) === 46 && body.charCodeAt(position + 2) === 46) { - return createToken(lexer, TokenKind.SPREAD, position, position + 3); - } - break; - case 58: - return createToken(lexer, TokenKind.COLON, position, position + 1); - case 61: - return createToken(lexer, TokenKind.EQUALS, position, position + 1); - case 64: - return createToken(lexer, TokenKind.AT, position, position + 1); - case 91: - return createToken(lexer, TokenKind.BRACKET_L, position, position + 1); - case 93: - return createToken(lexer, TokenKind.BRACKET_R, position, position + 1); - case 123: - return createToken(lexer, TokenKind.BRACE_L, position, position + 1); - case 124: - return createToken(lexer, TokenKind.PIPE, position, position + 1); - case 125: - return createToken(lexer, TokenKind.BRACE_R, position, position + 1); - case 34: - if (body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34) { - return readBlockString(lexer, position); - } - return readString(lexer, position); - } - if (isDigit(code) || code === 45) { - return readNumber(lexer, position, code); - } - if (isNameStart(code)) { - return readName(lexer, position); - } - throw syntaxError( - lexer.source, - position, - code === 39 ? `Unexpected single quote character ('), did you mean to use a double quote (")?` : isUnicodeScalarValue(code) || isSupplementaryCodePoint(body, position) ? `Unexpected character: ${printCodePointAt(lexer, position)}.` : `Invalid character: ${printCodePointAt(lexer, position)}.` - ); - } - return createToken(lexer, TokenKind.EOF, bodyLength, bodyLength); -} -function readComment(lexer, start) { - const body = lexer.source.body; - const bodyLength = body.length; - let position = start + 1; - while (position < bodyLength) { - const code = body.charCodeAt(position); - if (code === 10 || code === 13) { - break; - } - if (isUnicodeScalarValue(code)) { - ++position; - } else if (isSupplementaryCodePoint(body, position)) { - position += 2; - } else { - break; - } + parseStringLiteral() { + const token = this._lexer.token; + this.advanceLexer(); + return this.node(token, { + kind: Kind.STRING, + value: token.value, + block: token.kind === TokenKind.BLOCK_STRING + }); } - return createToken( - lexer, - TokenKind.COMMENT, - start, - position, - body.slice(start + 1, position) - ); -} -function readNumber(lexer, start, firstCode) { - const body = lexer.source.body; - let position = start; - let code = firstCode; - let isFloat = false; - if (code === 45) { - code = body.charCodeAt(++position); + parseList(isConst) { + const item = () => this.parseValueLiteral(isConst); + return this.node(this._lexer.token, { + kind: Kind.LIST, + values: this.any(TokenKind.BRACKET_L, item, TokenKind.BRACKET_R) + }); } - if (code === 48) { - code = body.charCodeAt(++position); - if (isDigit(code)) { - throw syntaxError( - lexer.source, - position, - `Invalid number, unexpected digit after 0: ${printCodePointAt( - lexer, - position - )}.` - ); - } - } else { - position = readDigits(lexer, position, code); - code = body.charCodeAt(position); + parseObject(isConst) { + const item = () => this.parseObjectField(isConst); + return this.node(this._lexer.token, { + kind: Kind.OBJECT, + fields: this.any(TokenKind.BRACE_L, item, TokenKind.BRACE_R) + }); } - if (code === 46) { - isFloat = true; - code = body.charCodeAt(++position); - position = readDigits(lexer, position, code); - code = body.charCodeAt(position); + parseObjectField(isConst) { + const start = this._lexer.token; + const name = this.parseName(); + this.expectToken(TokenKind.COLON); + return this.node(start, { + kind: Kind.OBJECT_FIELD, + name, + value: this.parseValueLiteral(isConst) + }); } - if (code === 69 || code === 101) { - isFloat = true; - code = body.charCodeAt(++position); - if (code === 43 || code === 45) { - code = body.charCodeAt(++position); + parseDirectives(isConst) { + const directives = []; + while (this.peek(TokenKind.AT)) { + directives.push(this.parseDirective(isConst)); } - position = readDigits(lexer, position, code); - code = body.charCodeAt(position); - } - if (code === 46 || isNameStart(code)) { - throw syntaxError( - lexer.source, - position, - `Invalid number, expected digit but got: ${printCodePointAt( - lexer, - position - )}.` - ); + return directives; } - return createToken( - lexer, - isFloat ? TokenKind.FLOAT : TokenKind.INT, - start, - position, - body.slice(start, position) - ); -} -function readDigits(lexer, start, firstCode) { - if (!isDigit(firstCode)) { - throw syntaxError( - lexer.source, - start, - `Invalid number, expected digit but got: ${printCodePointAt( - lexer, - start - )}.` - ); + parseConstDirectives() { + return this.parseDirectives(true); } - const body = lexer.source.body; - let position = start + 1; - while (isDigit(body.charCodeAt(position))) { - ++position; + parseDirective(isConst) { + const start = this._lexer.token; + this.expectToken(TokenKind.AT); + return this.node(start, { + kind: Kind.DIRECTIVE, + name: this.parseName(), + arguments: this.parseArguments(isConst) + }); } - return position; -} -function readString(lexer, start) { - const body = lexer.source.body; - const bodyLength = body.length; - let position = start + 1; - let chunkStart = position; - let value = ""; - while (position < bodyLength) { - const code = body.charCodeAt(position); - if (code === 34) { - value += body.slice(chunkStart, position); - return createToken(lexer, TokenKind.STRING, start, position + 1, value); - } - if (code === 92) { - value += body.slice(chunkStart, position); - const escape2 = body.charCodeAt(position + 1) === 117 ? body.charCodeAt(position + 2) === 123 ? readEscapedUnicodeVariableWidth(lexer, position) : readEscapedUnicodeFixedWidth(lexer, position) : readEscapedCharacter(lexer, position); - value += escape2.value; - position += escape2.size; - chunkStart = position; - continue; - } - if (code === 10 || code === 13) { - break; - } - if (isUnicodeScalarValue(code)) { - ++position; - } else if (isSupplementaryCodePoint(body, position)) { - position += 2; + parseTypeReference() { + const start = this._lexer.token; + let type; + if (this.expectOptionalToken(TokenKind.BRACKET_L)) { + const innerType = this.parseTypeReference(); + this.expectToken(TokenKind.BRACKET_R); + type = this.node(start, { + kind: Kind.LIST_TYPE, + type: innerType + }); } else { - throw syntaxError( - lexer.source, - position, - `Invalid character within String: ${printCodePointAt( - lexer, - position - )}.` - ); + type = this.parseNamedType(); } - } - throw syntaxError(lexer.source, position, "Unterminated string."); -} -function readEscapedUnicodeVariableWidth(lexer, position) { - const body = lexer.source.body; - let point = 0; - let size = 3; - while (size < 12) { - const code = body.charCodeAt(position + size++); - if (code === 125) { - if (size < 5 || !isUnicodeScalarValue(point)) { - break; - } - return { - value: String.fromCodePoint(point), - size - }; + if (this.expectOptionalToken(TokenKind.BANG)) { + return this.node(start, { + kind: Kind.NON_NULL_TYPE, + type + }); } - point = point << 4 | readHexDigit(code); - if (point < 0) { - break; + return type; + } + parseNamedType() { + return this.node(this._lexer.token, { + kind: Kind.NAMED_TYPE, + name: this.parseName() + }); + } + peekDescription() { + return this.peek(TokenKind.STRING) || this.peek(TokenKind.BLOCK_STRING); + } + parseDescription() { + if (this.peekDescription()) { + return this.parseStringLiteral(); } } - throw syntaxError( - lexer.source, - position, - `Invalid Unicode escape sequence: "${body.slice( - position, - position + size - )}".` - ); -} -function readEscapedUnicodeFixedWidth(lexer, position) { - const body = lexer.source.body; - const code = read16BitHexCode(body, position + 2); - if (isUnicodeScalarValue(code)) { - return { - value: String.fromCodePoint(code), - size: 6 - }; - } - if (isLeadingSurrogate(code)) { - if (body.charCodeAt(position + 6) === 92 && body.charCodeAt(position + 7) === 117) { - const trailingCode = read16BitHexCode(body, position + 8); - if (isTrailingSurrogate(trailingCode)) { - return { - value: String.fromCodePoint(code, trailingCode), - size: 12 - }; - } - } - } - throw syntaxError( - lexer.source, - position, - `Invalid Unicode escape sequence: "${body.slice(position, position + 6)}".` - ); -} -function read16BitHexCode(body, position) { - return readHexDigit(body.charCodeAt(position)) << 12 | readHexDigit(body.charCodeAt(position + 1)) << 8 | readHexDigit(body.charCodeAt(position + 2)) << 4 | readHexDigit(body.charCodeAt(position + 3)); -} -function readHexDigit(code) { - return code >= 48 && code <= 57 ? code - 48 : code >= 65 && code <= 70 ? code - 55 : code >= 97 && code <= 102 ? code - 87 : -1; -} -function readEscapedCharacter(lexer, position) { - const body = lexer.source.body; - const code = body.charCodeAt(position + 1); - switch (code) { - case 34: - return { - value: '"', - size: 2 - }; - case 92: - return { - value: "\\", - size: 2 - }; - case 47: - return { - value: "/", - size: 2 - }; - case 98: - return { - value: "\b", - size: 2 - }; - case 102: - return { - value: "\f", - size: 2 - }; - case 110: - return { - value: "\n", - size: 2 - }; - case 114: - return { - value: "\r", - size: 2 - }; - case 116: - return { - value: " ", - size: 2 - }; + parseSchemaDefinition() { + const start = this._lexer.token; + const description = this.parseDescription(); + this.expectKeyword("schema"); + const directives = this.parseConstDirectives(); + const operationTypes = this.many( + TokenKind.BRACE_L, + this.parseOperationTypeDefinition, + TokenKind.BRACE_R + ); + return this.node(start, { + kind: Kind.SCHEMA_DEFINITION, + description, + directives, + operationTypes + }); } - throw syntaxError( - lexer.source, - position, - `Invalid character escape sequence: "${body.slice( - position, - position + 2 - )}".` - ); -} -function readBlockString(lexer, start) { - const body = lexer.source.body; - const bodyLength = body.length; - let lineStart = lexer.lineStart; - let position = start + 3; - let chunkStart = position; - let currentLine = ""; - const blockLines = []; - while (position < bodyLength) { - const code = body.charCodeAt(position); - if (code === 34 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34) { - currentLine += body.slice(chunkStart, position); - blockLines.push(currentLine); - const token = createToken( - lexer, - TokenKind.BLOCK_STRING, - start, - position + 3, - dedentBlockStringLines(blockLines).join("\n") - ); - lexer.line += blockLines.length - 1; - lexer.lineStart = lineStart; - return token; - } - if (code === 92 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34 && body.charCodeAt(position + 3) === 34) { - currentLine += body.slice(chunkStart, position); - chunkStart = position + 1; - position += 4; - continue; - } - if (code === 10 || code === 13) { - currentLine += body.slice(chunkStart, position); - blockLines.push(currentLine); - if (code === 13 && body.charCodeAt(position + 1) === 10) { - position += 2; - } else { - ++position; - } - currentLine = ""; - chunkStart = position; - lineStart = position; - continue; - } - if (isUnicodeScalarValue(code)) { - ++position; - } else if (isSupplementaryCodePoint(body, position)) { - position += 2; - } else { - throw syntaxError( - lexer.source, - position, - `Invalid character within String: ${printCodePointAt( - lexer, - position - )}.` - ); - } + parseOperationTypeDefinition() { + const start = this._lexer.token; + const operation = this.parseOperationType(); + this.expectToken(TokenKind.COLON); + const type = this.parseNamedType(); + return this.node(start, { + kind: Kind.OPERATION_TYPE_DEFINITION, + operation, + type + }); } - throw syntaxError(lexer.source, position, "Unterminated string."); -} -function readName(lexer, start) { - const body = lexer.source.body; - const bodyLength = body.length; - let position = start + 1; - while (position < bodyLength) { - const code = body.charCodeAt(position); - if (isNameContinue(code)) { - ++position; - } else { - break; - } + parseScalarTypeDefinition() { + const start = this._lexer.token; + const description = this.parseDescription(); + this.expectKeyword("scalar"); + const name = this.parseName(); + const directives = this.parseConstDirectives(); + return this.node(start, { + kind: Kind.SCALAR_TYPE_DEFINITION, + description, + name, + directives + }); } - return createToken( - lexer, - TokenKind.NAME, - start, - position, - body.slice(start, position) - ); -} - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/jsutils/inspect.mjs -var MAX_ARRAY_LENGTH = 10; -var MAX_RECURSIVE_DEPTH = 2; -function inspect(value) { - return formatValue(value, []); -} -function formatValue(value, seenValues) { - switch (typeof value) { - case "string": - return JSON.stringify(value); - case "function": - return value.name ? `[function ${value.name}]` : "[function]"; - case "object": - return formatObjectValue(value, seenValues); - default: - return String(value); + parseObjectTypeDefinition() { + const start = this._lexer.token; + const description = this.parseDescription(); + this.expectKeyword("type"); + const name = this.parseName(); + const interfaces = this.parseImplementsInterfaces(); + const directives = this.parseConstDirectives(); + const fields = this.parseFieldsDefinition(); + return this.node(start, { + kind: Kind.OBJECT_TYPE_DEFINITION, + description, + name, + interfaces, + directives, + fields + }); } -} -function formatObjectValue(value, previouslySeenValues) { - if (value === null) { - return "null"; + parseImplementsInterfaces() { + return this.expectOptionalKeyword("implements") ? this.delimitedMany(TokenKind.AMP, this.parseNamedType) : []; } - if (previouslySeenValues.includes(value)) { - return "[Circular]"; + parseFieldsDefinition() { + return this.optionalMany( + TokenKind.BRACE_L, + this.parseFieldDefinition, + TokenKind.BRACE_R + ); } - const seenValues = [...previouslySeenValues, value]; - if (isJSONable(value)) { - const jsonValue = value.toJSON(); - if (jsonValue !== value) { - return typeof jsonValue === "string" ? jsonValue : formatValue(jsonValue, seenValues); + parseFieldDefinition() { + const start = this._lexer.token; + const description = this.parseDescription(); + const name = this.parseName(); + const args = this.parseArgumentDefs(); + this.expectToken(TokenKind.COLON); + const type = this.parseTypeReference(); + const directives = this.parseConstDirectives(); + return this.node(start, { + kind: Kind.FIELD_DEFINITION, + description, + name, + arguments: args, + type, + directives + }); + } + parseArgumentDefs() { + return this.optionalMany( + TokenKind.PAREN_L, + this.parseInputValueDef, + TokenKind.PAREN_R + ); + } + parseInputValueDef() { + const start = this._lexer.token; + const description = this.parseDescription(); + const name = this.parseName(); + this.expectToken(TokenKind.COLON); + const type = this.parseTypeReference(); + let defaultValue; + if (this.expectOptionalToken(TokenKind.EQUALS)) { + defaultValue = this.parseConstValueLiteral(); } - } else if (Array.isArray(value)) { - return formatArray(value, seenValues); + const directives = this.parseConstDirectives(); + return this.node(start, { + kind: Kind.INPUT_VALUE_DEFINITION, + description, + name, + type, + defaultValue, + directives + }); } - return formatObject(value, seenValues); -} -function isJSONable(value) { - return typeof value.toJSON === "function"; -} -function formatObject(object, seenValues) { - const entries = Object.entries(object); - if (entries.length === 0) { - return "{}"; + parseInterfaceTypeDefinition() { + const start = this._lexer.token; + const description = this.parseDescription(); + this.expectKeyword("interface"); + const name = this.parseName(); + const interfaces = this.parseImplementsInterfaces(); + const directives = this.parseConstDirectives(); + const fields = this.parseFieldsDefinition(); + return this.node(start, { + kind: Kind.INTERFACE_TYPE_DEFINITION, + description, + name, + interfaces, + directives, + fields + }); } - if (seenValues.length > MAX_RECURSIVE_DEPTH) { - return "[" + getObjectTag(object) + "]"; + parseUnionTypeDefinition() { + const start = this._lexer.token; + const description = this.parseDescription(); + this.expectKeyword("union"); + const name = this.parseName(); + const directives = this.parseConstDirectives(); + const types2 = this.parseUnionMemberTypes(); + return this.node(start, { + kind: Kind.UNION_TYPE_DEFINITION, + description, + name, + directives, + types: types2 + }); } - const properties = entries.map( - ([key, value]) => key + ": " + formatValue(value, seenValues) - ); - return "{ " + properties.join(", ") + " }"; -} -function formatArray(array, seenValues) { - if (array.length === 0) { - return "[]"; + parseUnionMemberTypes() { + return this.expectOptionalToken(TokenKind.EQUALS) ? this.delimitedMany(TokenKind.PIPE, this.parseNamedType) : []; } - if (seenValues.length > MAX_RECURSIVE_DEPTH) { - return "[Array]"; + parseEnumTypeDefinition() { + const start = this._lexer.token; + const description = this.parseDescription(); + this.expectKeyword("enum"); + const name = this.parseName(); + const directives = this.parseConstDirectives(); + const values = this.parseEnumValuesDefinition(); + return this.node(start, { + kind: Kind.ENUM_TYPE_DEFINITION, + description, + name, + directives, + values + }); } - const len = Math.min(MAX_ARRAY_LENGTH, array.length); - const remaining = array.length - len; - const items = []; - for (let i = 0; i < len; ++i) { - items.push(formatValue(array[i], seenValues)); + parseEnumValuesDefinition() { + return this.optionalMany( + TokenKind.BRACE_L, + this.parseEnumValueDefinition, + TokenKind.BRACE_R + ); } - if (remaining === 1) { - items.push("... 1 more item"); - } else if (remaining > 1) { - items.push(`... ${remaining} more items`); + parseEnumValueDefinition() { + const start = this._lexer.token; + const description = this.parseDescription(); + const name = this.parseEnumValueName(); + const directives = this.parseConstDirectives(); + return this.node(start, { + kind: Kind.ENUM_VALUE_DEFINITION, + description, + name, + directives + }); } - return "[" + items.join(", ") + "]"; -} -function getObjectTag(object) { - const tag = Object.prototype.toString.call(object).replace(/^\[object /, "").replace(/]$/, ""); - if (tag === "Object" && typeof object.constructor === "function") { - const name = object.constructor.name; - if (typeof name === "string" && name !== "") { - return name; + parseEnumValueName() { + if (this._lexer.token.value === "true" || this._lexer.token.value === "false" || this._lexer.token.value === "null") { + throw syntaxError( + this._lexer.source, + this._lexer.token.start, + `${getTokenDesc( + this._lexer.token + )} is reserved and cannot be used for an enum value.` + ); } + return this.parseName(); } - return tag; -} - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/jsutils/instanceOf.mjs -var instanceOf = false ? function instanceOf2(value, constructor) { - return value instanceof constructor; -} : function instanceOf3(value, constructor) { - if (value instanceof constructor) { - return true; + parseInputObjectTypeDefinition() { + const start = this._lexer.token; + const description = this.parseDescription(); + this.expectKeyword("input"); + const name = this.parseName(); + const directives = this.parseConstDirectives(); + const fields = this.parseInputFieldsDefinition(); + return this.node(start, { + kind: Kind.INPUT_OBJECT_TYPE_DEFINITION, + description, + name, + directives, + fields + }); } - if (typeof value === "object" && value !== null) { - var _value$constructor; - const className = constructor.prototype[Symbol.toStringTag]; - const valueClassName = Symbol.toStringTag in value ? value[Symbol.toStringTag] : (_value$constructor = value.constructor) === null || _value$constructor === void 0 ? void 0 : _value$constructor.name; - if (className === valueClassName) { - const stringifiedValue = inspect(value); - throw new Error(`Cannot use ${className} "${stringifiedValue}" from another module or realm. - -Ensure that there is only one instance of "graphql" in the node_modules -directory. If different versions of "graphql" are the dependencies of other -relied on modules, use "resolutions" to ensure only one version is installed. - -https://yarnpkg.com/en/docs/selective-version-resolutions - -Duplicate "graphql" modules cannot be used at the same time since different -versions may have different capabilities and behavior. The data from one -version used in the function from another could produce confusing and -spurious results.`); + parseInputFieldsDefinition() { + return this.optionalMany( + TokenKind.BRACE_L, + this.parseInputValueDef, + TokenKind.BRACE_R + ); + } + parseTypeSystemExtension() { + const keywordToken = this._lexer.lookahead(); + if (keywordToken.kind === TokenKind.NAME) { + switch (keywordToken.value) { + case "schema": + return this.parseSchemaExtension(); + case "scalar": + return this.parseScalarTypeExtension(); + case "type": + return this.parseObjectTypeExtension(); + case "interface": + return this.parseInterfaceTypeExtension(); + case "union": + return this.parseUnionTypeExtension(); + case "enum": + return this.parseEnumTypeExtension(); + case "input": + return this.parseInputObjectTypeExtension(); + } } + throw this.unexpected(keywordToken); } - return false; -}; - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/source.mjs -var Source = class { - constructor(body, name = "GraphQL request", locationOffset = { - line: 1, - column: 1 - }) { - typeof body === "string" || devAssert(false, `Body must be a string. Received: ${inspect(body)}.`); - this.body = body; - this.name = name; - this.locationOffset = locationOffset; - this.locationOffset.line > 0 || devAssert( - false, - "line in locationOffset is 1-indexed and must be positive." - ); - this.locationOffset.column > 0 || devAssert( - false, - "column in locationOffset is 1-indexed and must be positive." + parseSchemaExtension() { + const start = this._lexer.token; + this.expectKeyword("extend"); + this.expectKeyword("schema"); + const directives = this.parseConstDirectives(); + const operationTypes = this.optionalMany( + TokenKind.BRACE_L, + this.parseOperationTypeDefinition, + TokenKind.BRACE_R ); + if (directives.length === 0 && operationTypes.length === 0) { + throw this.unexpected(); + } + return this.node(start, { + kind: Kind.SCHEMA_EXTENSION, + directives, + operationTypes + }); } - get [Symbol.toStringTag]() { - return "Source"; - } -}; -function isSource(source) { - return instanceOf(source, Source); -} - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/parser.mjs -function parse(source, options) { - const parser = new Parser(source, options); - return parser.parseDocument(); -} -var Parser = class { - constructor(source, options = {}) { - const sourceObj = isSource(source) ? source : new Source(source); - this._lexer = new Lexer(sourceObj); - this._options = options; - this._tokenCounter = 0; - } - parseName() { - const token = this.expectToken(TokenKind.NAME); - return this.node(token, { - kind: Kind.NAME, - value: token.value - }); - } - parseDocument() { - return this.node(this._lexer.token, { - kind: Kind.DOCUMENT, - definitions: this.many( - TokenKind.SOF, - this.parseDefinition, - TokenKind.EOF - ) - }); - } - parseDefinition() { - if (this.peek(TokenKind.BRACE_L)) { - return this.parseOperationDefinition(); - } - const hasDescription = this.peekDescription(); - const keywordToken = hasDescription ? this._lexer.lookahead() : this._lexer.token; - if (keywordToken.kind === TokenKind.NAME) { - switch (keywordToken.value) { - case "schema": - return this.parseSchemaDefinition(); - case "scalar": - return this.parseScalarTypeDefinition(); - case "type": - return this.parseObjectTypeDefinition(); - case "interface": - return this.parseInterfaceTypeDefinition(); - case "union": - return this.parseUnionTypeDefinition(); - case "enum": - return this.parseEnumTypeDefinition(); - case "input": - return this.parseInputObjectTypeDefinition(); - case "directive": - return this.parseDirectiveDefinition(); - } - if (hasDescription) { - throw syntaxError( - this._lexer.source, - this._lexer.token.start, - "Unexpected description, descriptions are supported only on type definitions." - ); - } - switch (keywordToken.value) { - case "query": - case "mutation": - case "subscription": - return this.parseOperationDefinition(); - case "fragment": - return this.parseFragmentDefinition(); - case "extend": - return this.parseTypeSystemExtension(); - } - } - throw this.unexpected(keywordToken); - } - parseOperationDefinition() { + parseScalarTypeExtension() { const start = this._lexer.token; - if (this.peek(TokenKind.BRACE_L)) { - return this.node(start, { - kind: Kind.OPERATION_DEFINITION, - operation: OperationTypeNode.QUERY, - name: void 0, - variableDefinitions: [], - directives: [], - selectionSet: this.parseSelectionSet() - }); - } - const operation = this.parseOperationType(); - let name; - if (this.peek(TokenKind.NAME)) { - name = this.parseName(); + this.expectKeyword("extend"); + this.expectKeyword("scalar"); + const name = this.parseName(); + const directives = this.parseConstDirectives(); + if (directives.length === 0) { + throw this.unexpected(); } return this.node(start, { - kind: Kind.OPERATION_DEFINITION, - operation, + kind: Kind.SCALAR_TYPE_EXTENSION, name, - variableDefinitions: this.parseVariableDefinitions(), - directives: this.parseDirectives(false), - selectionSet: this.parseSelectionSet() + directives }); } - parseOperationType() { - const operationToken = this.expectToken(TokenKind.NAME); - switch (operationToken.value) { - case "query": - return OperationTypeNode.QUERY; - case "mutation": - return OperationTypeNode.MUTATION; - case "subscription": - return OperationTypeNode.SUBSCRIPTION; + parseObjectTypeExtension() { + const start = this._lexer.token; + this.expectKeyword("extend"); + this.expectKeyword("type"); + const name = this.parseName(); + const interfaces = this.parseImplementsInterfaces(); + const directives = this.parseConstDirectives(); + const fields = this.parseFieldsDefinition(); + if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) { + throw this.unexpected(); } - throw this.unexpected(operationToken); - } - parseVariableDefinitions() { - return this.optionalMany( - TokenKind.PAREN_L, - this.parseVariableDefinition, - TokenKind.PAREN_R - ); - } - parseVariableDefinition() { - return this.node(this._lexer.token, { - kind: Kind.VARIABLE_DEFINITION, - variable: this.parseVariable(), - type: (this.expectToken(TokenKind.COLON), this.parseTypeReference()), - defaultValue: this.expectOptionalToken(TokenKind.EQUALS) ? this.parseConstValueLiteral() : void 0, - directives: this.parseConstDirectives() + return this.node(start, { + kind: Kind.OBJECT_TYPE_EXTENSION, + name, + interfaces, + directives, + fields }); } - parseVariable() { + parseInterfaceTypeExtension() { const start = this._lexer.token; - this.expectToken(TokenKind.DOLLAR); + this.expectKeyword("extend"); + this.expectKeyword("interface"); + const name = this.parseName(); + const interfaces = this.parseImplementsInterfaces(); + const directives = this.parseConstDirectives(); + const fields = this.parseFieldsDefinition(); + if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) { + throw this.unexpected(); + } return this.node(start, { - kind: Kind.VARIABLE, - name: this.parseName() - }); - } - parseSelectionSet() { - return this.node(this._lexer.token, { - kind: Kind.SELECTION_SET, - selections: this.many( - TokenKind.BRACE_L, - this.parseSelection, - TokenKind.BRACE_R - ) + kind: Kind.INTERFACE_TYPE_EXTENSION, + name, + interfaces, + directives, + fields }); } - parseSelection() { - return this.peek(TokenKind.SPREAD) ? this.parseFragment() : this.parseField(); - } - parseField() { + parseUnionTypeExtension() { const start = this._lexer.token; - const nameOrAlias = this.parseName(); - let alias; - let name; - if (this.expectOptionalToken(TokenKind.COLON)) { - alias = nameOrAlias; - name = this.parseName(); - } else { - name = nameOrAlias; + this.expectKeyword("extend"); + this.expectKeyword("union"); + const name = this.parseName(); + const directives = this.parseConstDirectives(); + const types2 = this.parseUnionMemberTypes(); + if (directives.length === 0 && types2.length === 0) { + throw this.unexpected(); } return this.node(start, { - kind: Kind.FIELD, - alias, + kind: Kind.UNION_TYPE_EXTENSION, name, - arguments: this.parseArguments(false), - directives: this.parseDirectives(false), - selectionSet: this.peek(TokenKind.BRACE_L) ? this.parseSelectionSet() : void 0 + directives, + types: types2 }); } - parseArguments(isConst) { - const item = isConst ? this.parseConstArgument : this.parseArgument; - return this.optionalMany(TokenKind.PAREN_L, item, TokenKind.PAREN_R); - } - parseArgument(isConst = false) { + parseEnumTypeExtension() { const start = this._lexer.token; + this.expectKeyword("extend"); + this.expectKeyword("enum"); const name = this.parseName(); - this.expectToken(TokenKind.COLON); + const directives = this.parseConstDirectives(); + const values = this.parseEnumValuesDefinition(); + if (directives.length === 0 && values.length === 0) { + throw this.unexpected(); + } return this.node(start, { - kind: Kind.ARGUMENT, + kind: Kind.ENUM_TYPE_EXTENSION, name, - value: this.parseValueLiteral(isConst) + directives, + values }); } - parseConstArgument() { - return this.parseArgument(true); - } - parseFragment() { + parseInputObjectTypeExtension() { const start = this._lexer.token; - this.expectToken(TokenKind.SPREAD); - const hasTypeCondition = this.expectOptionalKeyword("on"); - if (!hasTypeCondition && this.peek(TokenKind.NAME)) { - return this.node(start, { - kind: Kind.FRAGMENT_SPREAD, - name: this.parseFragmentName(), - directives: this.parseDirectives(false) - }); + this.expectKeyword("extend"); + this.expectKeyword("input"); + const name = this.parseName(); + const directives = this.parseConstDirectives(); + const fields = this.parseInputFieldsDefinition(); + if (directives.length === 0 && fields.length === 0) { + throw this.unexpected(); } return this.node(start, { - kind: Kind.INLINE_FRAGMENT, - typeCondition: hasTypeCondition ? this.parseNamedType() : void 0, - directives: this.parseDirectives(false), - selectionSet: this.parseSelectionSet() + kind: Kind.INPUT_OBJECT_TYPE_EXTENSION, + name, + directives, + fields }); } - parseFragmentDefinition() { + parseDirectiveDefinition() { const start = this._lexer.token; - this.expectKeyword("fragment"); - if (this._options.allowLegacyFragmentVariables === true) { - return this.node(start, { - kind: Kind.FRAGMENT_DEFINITION, - name: this.parseFragmentName(), - variableDefinitions: this.parseVariableDefinitions(), - typeCondition: (this.expectKeyword("on"), this.parseNamedType()), - directives: this.parseDirectives(false), - selectionSet: this.parseSelectionSet() - }); - } + const description = this.parseDescription(); + this.expectKeyword("directive"); + this.expectToken(TokenKind.AT); + const name = this.parseName(); + const args = this.parseArgumentDefs(); + const repeatable = this.expectOptionalKeyword("repeatable"); + this.expectKeyword("on"); + const locations = this.parseDirectiveLocations(); return this.node(start, { - kind: Kind.FRAGMENT_DEFINITION, - name: this.parseFragmentName(), - typeCondition: (this.expectKeyword("on"), this.parseNamedType()), - directives: this.parseDirectives(false), - selectionSet: this.parseSelectionSet() + kind: Kind.DIRECTIVE_DEFINITION, + description, + name, + arguments: args, + repeatable, + locations }); } - parseFragmentName() { - if (this._lexer.token.value === "on") { - throw this.unexpected(); + parseDirectiveLocations() { + return this.delimitedMany(TokenKind.PIPE, this.parseDirectiveLocation); + } + parseDirectiveLocation() { + const start = this._lexer.token; + const name = this.parseName(); + if (Object.prototype.hasOwnProperty.call(DirectiveLocation$1, name.value)) { + return name; } - return this.parseName(); + throw this.unexpected(start); } - parseValueLiteral(isConst) { - const token = this._lexer.token; - switch (token.kind) { - case TokenKind.BRACKET_L: - return this.parseList(isConst); - case TokenKind.BRACE_L: - return this.parseObject(isConst); - case TokenKind.INT: - this.advanceLexer(); - return this.node(token, { - kind: Kind.INT, - value: token.value - }); - case TokenKind.FLOAT: - this.advanceLexer(); - return this.node(token, { - kind: Kind.FLOAT, - value: token.value - }); - case TokenKind.STRING: - case TokenKind.BLOCK_STRING: - return this.parseStringLiteral(); - case TokenKind.NAME: - this.advanceLexer(); - switch (token.value) { - case "true": - return this.node(token, { - kind: Kind.BOOLEAN, - value: true - }); - case "false": - return this.node(token, { - kind: Kind.BOOLEAN, - value: false - }); - case "null": - return this.node(token, { - kind: Kind.NULL - }); - default: - return this.node(token, { - kind: Kind.ENUM, - value: token.value - }); - } - case TokenKind.DOLLAR: - if (isConst) { - this.expectToken(TokenKind.DOLLAR); - if (this._lexer.token.kind === TokenKind.NAME) { - const varName = this._lexer.token.value; - throw syntaxError( - this._lexer.source, - token.start, - `Unexpected variable "$${varName}" in constant value.` - ); - } else { - throw this.unexpected(token); - } - } - return this.parseVariable(); - default: - throw this.unexpected(); + node(startToken, node) { + if (this._options.noLocation !== true) { + node.loc = new Location( + startToken, + this._lexer.lastToken, + this._lexer.source + ); } + return node; } - parseConstValueLiteral() { - return this.parseValueLiteral(true); + peek(kind) { + return this._lexer.token.kind === kind; } - parseStringLiteral() { + expectToken(kind) { const token = this._lexer.token; - this.advanceLexer(); - return this.node(token, { - kind: Kind.STRING, - value: token.value, - block: token.kind === TokenKind.BLOCK_STRING - }); - } - parseList(isConst) { - const item = () => this.parseValueLiteral(isConst); - return this.node(this._lexer.token, { - kind: Kind.LIST, - values: this.any(TokenKind.BRACKET_L, item, TokenKind.BRACKET_R) - }); - } - parseObject(isConst) { - const item = () => this.parseObjectField(isConst); - return this.node(this._lexer.token, { - kind: Kind.OBJECT, - fields: this.any(TokenKind.BRACE_L, item, TokenKind.BRACE_R) - }); - } - parseObjectField(isConst) { - const start = this._lexer.token; - const name = this.parseName(); - this.expectToken(TokenKind.COLON); - return this.node(start, { - kind: Kind.OBJECT_FIELD, - name, - value: this.parseValueLiteral(isConst) - }); - } - parseDirectives(isConst) { - const directives = []; - while (this.peek(TokenKind.AT)) { - directives.push(this.parseDirective(isConst)); + if (token.kind === kind) { + this.advanceLexer(); + return token; } - return directives; - } - parseConstDirectives() { - return this.parseDirectives(true); + throw syntaxError( + this._lexer.source, + token.start, + `Expected ${getTokenKindDesc(kind)}, found ${getTokenDesc(token)}.` + ); } - parseDirective(isConst) { - const start = this._lexer.token; - this.expectToken(TokenKind.AT); - return this.node(start, { - kind: Kind.DIRECTIVE, - name: this.parseName(), - arguments: this.parseArguments(isConst) - }); + expectOptionalToken(kind) { + const token = this._lexer.token; + if (token.kind === kind) { + this.advanceLexer(); + return true; + } + return false; } - parseTypeReference() { - const start = this._lexer.token; - let type; - if (this.expectOptionalToken(TokenKind.BRACKET_L)) { - const innerType = this.parseTypeReference(); - this.expectToken(TokenKind.BRACKET_R); - type = this.node(start, { - kind: Kind.LIST_TYPE, - type: innerType - }); + expectKeyword(value) { + const token = this._lexer.token; + if (token.kind === TokenKind.NAME && token.value === value) { + this.advanceLexer(); } else { - type = this.parseNamedType(); + throw syntaxError( + this._lexer.source, + token.start, + `Expected "${value}", found ${getTokenDesc(token)}.` + ); } - if (this.expectOptionalToken(TokenKind.BANG)) { - return this.node(start, { - kind: Kind.NON_NULL_TYPE, - type - }); + } + expectOptionalKeyword(value) { + const token = this._lexer.token; + if (token.kind === TokenKind.NAME && token.value === value) { + this.advanceLexer(); + return true; } - return type; + return false; } - parseNamedType() { - return this.node(this._lexer.token, { - kind: Kind.NAMED_TYPE, - name: this.parseName() - }); + unexpected(atToken) { + const token = atToken !== null && atToken !== void 0 ? atToken : this._lexer.token; + return syntaxError( + this._lexer.source, + token.start, + `Unexpected ${getTokenDesc(token)}.` + ); } - peekDescription() { - return this.peek(TokenKind.STRING) || this.peek(TokenKind.BLOCK_STRING); + any(openKind, parseFn, closeKind) { + this.expectToken(openKind); + const nodes = []; + while (!this.expectOptionalToken(closeKind)) { + nodes.push(parseFn.call(this)); + } + return nodes; } - parseDescription() { - if (this.peekDescription()) { - return this.parseStringLiteral(); + optionalMany(openKind, parseFn, closeKind) { + if (this.expectOptionalToken(openKind)) { + const nodes = []; + do { + nodes.push(parseFn.call(this)); + } while (!this.expectOptionalToken(closeKind)); + return nodes; } + return []; } - parseSchemaDefinition() { - const start = this._lexer.token; - const description = this.parseDescription(); - this.expectKeyword("schema"); - const directives = this.parseConstDirectives(); - const operationTypes = this.many( - TokenKind.BRACE_L, - this.parseOperationTypeDefinition, - TokenKind.BRACE_R - ); - return this.node(start, { - kind: Kind.SCHEMA_DEFINITION, - description, - directives, - operationTypes - }); - } - parseOperationTypeDefinition() { - const start = this._lexer.token; - const operation = this.parseOperationType(); - this.expectToken(TokenKind.COLON); - const type = this.parseNamedType(); - return this.node(start, { - kind: Kind.OPERATION_TYPE_DEFINITION, - operation, - type - }); - } - parseScalarTypeDefinition() { - const start = this._lexer.token; - const description = this.parseDescription(); - this.expectKeyword("scalar"); - const name = this.parseName(); - const directives = this.parseConstDirectives(); - return this.node(start, { - kind: Kind.SCALAR_TYPE_DEFINITION, - description, - name, - directives - }); - } - parseObjectTypeDefinition() { - const start = this._lexer.token; - const description = this.parseDescription(); - this.expectKeyword("type"); - const name = this.parseName(); - const interfaces = this.parseImplementsInterfaces(); - const directives = this.parseConstDirectives(); - const fields = this.parseFieldsDefinition(); - return this.node(start, { - kind: Kind.OBJECT_TYPE_DEFINITION, - description, - name, - interfaces, - directives, - fields - }); - } - parseImplementsInterfaces() { - return this.expectOptionalKeyword("implements") ? this.delimitedMany(TokenKind.AMP, this.parseNamedType) : []; - } - parseFieldsDefinition() { - return this.optionalMany( - TokenKind.BRACE_L, - this.parseFieldDefinition, - TokenKind.BRACE_R - ); - } - parseFieldDefinition() { - const start = this._lexer.token; - const description = this.parseDescription(); - const name = this.parseName(); - const args = this.parseArgumentDefs(); - this.expectToken(TokenKind.COLON); - const type = this.parseTypeReference(); - const directives = this.parseConstDirectives(); - return this.node(start, { - kind: Kind.FIELD_DEFINITION, - description, - name, - arguments: args, - type, - directives - }); - } - parseArgumentDefs() { - return this.optionalMany( - TokenKind.PAREN_L, - this.parseInputValueDef, - TokenKind.PAREN_R - ); - } - parseInputValueDef() { - const start = this._lexer.token; - const description = this.parseDescription(); - const name = this.parseName(); - this.expectToken(TokenKind.COLON); - const type = this.parseTypeReference(); - let defaultValue; - if (this.expectOptionalToken(TokenKind.EQUALS)) { - defaultValue = this.parseConstValueLiteral(); - } - const directives = this.parseConstDirectives(); - return this.node(start, { - kind: Kind.INPUT_VALUE_DEFINITION, - description, - name, - type, - defaultValue, - directives - }); - } - parseInterfaceTypeDefinition() { - const start = this._lexer.token; - const description = this.parseDescription(); - this.expectKeyword("interface"); - const name = this.parseName(); - const interfaces = this.parseImplementsInterfaces(); - const directives = this.parseConstDirectives(); - const fields = this.parseFieldsDefinition(); - return this.node(start, { - kind: Kind.INTERFACE_TYPE_DEFINITION, - description, - name, - interfaces, - directives, - fields - }); - } - parseUnionTypeDefinition() { - const start = this._lexer.token; - const description = this.parseDescription(); - this.expectKeyword("union"); - const name = this.parseName(); - const directives = this.parseConstDirectives(); - const types = this.parseUnionMemberTypes(); - return this.node(start, { - kind: Kind.UNION_TYPE_DEFINITION, - description, - name, - directives, - types - }); - } - parseUnionMemberTypes() { - return this.expectOptionalToken(TokenKind.EQUALS) ? this.delimitedMany(TokenKind.PIPE, this.parseNamedType) : []; - } - parseEnumTypeDefinition() { - const start = this._lexer.token; - const description = this.parseDescription(); - this.expectKeyword("enum"); - const name = this.parseName(); - const directives = this.parseConstDirectives(); - const values = this.parseEnumValuesDefinition(); - return this.node(start, { - kind: Kind.ENUM_TYPE_DEFINITION, - description, - name, - directives, - values - }); - } - parseEnumValuesDefinition() { - return this.optionalMany( - TokenKind.BRACE_L, - this.parseEnumValueDefinition, - TokenKind.BRACE_R - ); - } - parseEnumValueDefinition() { - const start = this._lexer.token; - const description = this.parseDescription(); - const name = this.parseEnumValueName(); - const directives = this.parseConstDirectives(); - return this.node(start, { - kind: Kind.ENUM_VALUE_DEFINITION, - description, - name, - directives - }); - } - parseEnumValueName() { - if (this._lexer.token.value === "true" || this._lexer.token.value === "false" || this._lexer.token.value === "null") { - throw syntaxError( - this._lexer.source, - this._lexer.token.start, - `${getTokenDesc( - this._lexer.token - )} is reserved and cannot be used for an enum value.` - ); - } - return this.parseName(); - } - parseInputObjectTypeDefinition() { - const start = this._lexer.token; - const description = this.parseDescription(); - this.expectKeyword("input"); - const name = this.parseName(); - const directives = this.parseConstDirectives(); - const fields = this.parseInputFieldsDefinition(); - return this.node(start, { - kind: Kind.INPUT_OBJECT_TYPE_DEFINITION, - description, - name, - directives, - fields - }); + many(openKind, parseFn, closeKind) { + this.expectToken(openKind); + const nodes = []; + do { + nodes.push(parseFn.call(this)); + } while (!this.expectOptionalToken(closeKind)); + return nodes; } - parseInputFieldsDefinition() { - return this.optionalMany( - TokenKind.BRACE_L, - this.parseInputValueDef, - TokenKind.BRACE_R - ); + delimitedMany(delimiterKind, parseFn) { + this.expectOptionalToken(delimiterKind); + const nodes = []; + do { + nodes.push(parseFn.call(this)); + } while (this.expectOptionalToken(delimiterKind)); + return nodes; } - parseTypeSystemExtension() { - const keywordToken = this._lexer.lookahead(); - if (keywordToken.kind === TokenKind.NAME) { - switch (keywordToken.value) { - case "schema": - return this.parseSchemaExtension(); - case "scalar": - return this.parseScalarTypeExtension(); - case "type": - return this.parseObjectTypeExtension(); - case "interface": - return this.parseInterfaceTypeExtension(); - case "union": - return this.parseUnionTypeExtension(); - case "enum": - return this.parseEnumTypeExtension(); - case "input": - return this.parseInputObjectTypeExtension(); - } - } - throw this.unexpected(keywordToken); - } - parseSchemaExtension() { - const start = this._lexer.token; - this.expectKeyword("extend"); - this.expectKeyword("schema"); - const directives = this.parseConstDirectives(); - const operationTypes = this.optionalMany( - TokenKind.BRACE_L, - this.parseOperationTypeDefinition, - TokenKind.BRACE_R - ); - if (directives.length === 0 && operationTypes.length === 0) { - throw this.unexpected(); - } - return this.node(start, { - kind: Kind.SCHEMA_EXTENSION, - directives, - operationTypes - }); - } - parseScalarTypeExtension() { - const start = this._lexer.token; - this.expectKeyword("extend"); - this.expectKeyword("scalar"); - const name = this.parseName(); - const directives = this.parseConstDirectives(); - if (directives.length === 0) { - throw this.unexpected(); - } - return this.node(start, { - kind: Kind.SCALAR_TYPE_EXTENSION, - name, - directives - }); - } - parseObjectTypeExtension() { - const start = this._lexer.token; - this.expectKeyword("extend"); - this.expectKeyword("type"); - const name = this.parseName(); - const interfaces = this.parseImplementsInterfaces(); - const directives = this.parseConstDirectives(); - const fields = this.parseFieldsDefinition(); - if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) { - throw this.unexpected(); - } - return this.node(start, { - kind: Kind.OBJECT_TYPE_EXTENSION, - name, - interfaces, - directives, - fields - }); - } - parseInterfaceTypeExtension() { - const start = this._lexer.token; - this.expectKeyword("extend"); - this.expectKeyword("interface"); - const name = this.parseName(); - const interfaces = this.parseImplementsInterfaces(); - const directives = this.parseConstDirectives(); - const fields = this.parseFieldsDefinition(); - if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) { - throw this.unexpected(); - } - return this.node(start, { - kind: Kind.INTERFACE_TYPE_EXTENSION, - name, - interfaces, - directives, - fields - }); - } - parseUnionTypeExtension() { - const start = this._lexer.token; - this.expectKeyword("extend"); - this.expectKeyword("union"); - const name = this.parseName(); - const directives = this.parseConstDirectives(); - const types = this.parseUnionMemberTypes(); - if (directives.length === 0 && types.length === 0) { - throw this.unexpected(); - } - return this.node(start, { - kind: Kind.UNION_TYPE_EXTENSION, - name, - directives, - types - }); - } - parseEnumTypeExtension() { - const start = this._lexer.token; - this.expectKeyword("extend"); - this.expectKeyword("enum"); - const name = this.parseName(); - const directives = this.parseConstDirectives(); - const values = this.parseEnumValuesDefinition(); - if (directives.length === 0 && values.length === 0) { - throw this.unexpected(); - } - return this.node(start, { - kind: Kind.ENUM_TYPE_EXTENSION, - name, - directives, - values - }); - } - parseInputObjectTypeExtension() { - const start = this._lexer.token; - this.expectKeyword("extend"); - this.expectKeyword("input"); - const name = this.parseName(); - const directives = this.parseConstDirectives(); - const fields = this.parseInputFieldsDefinition(); - if (directives.length === 0 && fields.length === 0) { - throw this.unexpected(); - } - return this.node(start, { - kind: Kind.INPUT_OBJECT_TYPE_EXTENSION, - name, - directives, - fields - }); - } - parseDirectiveDefinition() { - const start = this._lexer.token; - const description = this.parseDescription(); - this.expectKeyword("directive"); - this.expectToken(TokenKind.AT); - const name = this.parseName(); - const args = this.parseArgumentDefs(); - const repeatable = this.expectOptionalKeyword("repeatable"); - this.expectKeyword("on"); - const locations = this.parseDirectiveLocations(); - return this.node(start, { - kind: Kind.DIRECTIVE_DEFINITION, - description, - name, - arguments: args, - repeatable, - locations - }); - } - parseDirectiveLocations() { - return this.delimitedMany(TokenKind.PIPE, this.parseDirectiveLocation); - } - parseDirectiveLocation() { - const start = this._lexer.token; - const name = this.parseName(); - if (Object.prototype.hasOwnProperty.call(DirectiveLocation, name.value)) { - return name; - } - throw this.unexpected(start); - } - node(startToken, node) { - if (this._options.noLocation !== true) { - node.loc = new Location( - startToken, - this._lexer.lastToken, - this._lexer.source - ); - } - return node; - } - peek(kind) { - return this._lexer.token.kind === kind; - } - expectToken(kind) { - const token = this._lexer.token; - if (token.kind === kind) { - this.advanceLexer(); - return token; - } - throw syntaxError( - this._lexer.source, - token.start, - `Expected ${getTokenKindDesc(kind)}, found ${getTokenDesc(token)}.` - ); - } - expectOptionalToken(kind) { - const token = this._lexer.token; - if (token.kind === kind) { - this.advanceLexer(); - return true; - } - return false; - } - expectKeyword(value) { - const token = this._lexer.token; - if (token.kind === TokenKind.NAME && token.value === value) { - this.advanceLexer(); - } else { - throw syntaxError( - this._lexer.source, - token.start, - `Expected "${value}", found ${getTokenDesc(token)}.` - ); - } - } - expectOptionalKeyword(value) { - const token = this._lexer.token; - if (token.kind === TokenKind.NAME && token.value === value) { - this.advanceLexer(); - return true; - } - return false; - } - unexpected(atToken) { - const token = atToken !== null && atToken !== void 0 ? atToken : this._lexer.token; - return syntaxError( - this._lexer.source, - token.start, - `Unexpected ${getTokenDesc(token)}.` - ); - } - any(openKind, parseFn, closeKind) { - this.expectToken(openKind); - const nodes = []; - while (!this.expectOptionalToken(closeKind)) { - nodes.push(parseFn.call(this)); - } - return nodes; - } - optionalMany(openKind, parseFn, closeKind) { - if (this.expectOptionalToken(openKind)) { - const nodes = []; - do { - nodes.push(parseFn.call(this)); - } while (!this.expectOptionalToken(closeKind)); - return nodes; - } - return []; - } - many(openKind, parseFn, closeKind) { - this.expectToken(openKind); - const nodes = []; - do { - nodes.push(parseFn.call(this)); - } while (!this.expectOptionalToken(closeKind)); - return nodes; - } - delimitedMany(delimiterKind, parseFn) { - this.expectOptionalToken(delimiterKind); - const nodes = []; - do { - nodes.push(parseFn.call(this)); - } while (this.expectOptionalToken(delimiterKind)); - return nodes; - } - advanceLexer() { - const { maxTokens } = this._options; - const token = this._lexer.advance(); - if (maxTokens !== void 0 && token.kind !== TokenKind.EOF) { - ++this._tokenCounter; - if (this._tokenCounter > maxTokens) { - throw syntaxError( - this._lexer.source, - token.start, - `Document contains more that ${maxTokens} tokens. Parsing aborted.` - ); + advanceLexer() { + const { maxTokens } = this._options; + const token = this._lexer.advance(); + if (maxTokens !== void 0 && token.kind !== TokenKind.EOF) { + ++this._tokenCounter; + if (this._tokenCounter > maxTokens) { + throw syntaxError( + this._lexer.source, + token.start, + `Document contains more that ${maxTokens} tokens. Parsing aborted.` + ); } } } @@ -9047,210 +4000,15 @@ function getTokenDesc(token) { function getTokenKindDesc(kind) { return isPunctuatorTokenKind(kind) ? `"${kind}"` : kind; } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/jsutils/didYouMean.mjs -var MAX_SUGGESTIONS = 5; -function didYouMean(firstArg, secondArg) { - const [subMessage, suggestionsArg] = secondArg ? [firstArg, secondArg] : [void 0, firstArg]; - let message = " Did you mean "; - if (subMessage) { - message += subMessage + " "; - } - const suggestions = suggestionsArg.map((x) => `"${x}"`); - switch (suggestions.length) { - case 0: - return ""; - case 1: - return message + suggestions[0] + "?"; - case 2: - return message + suggestions[0] + " or " + suggestions[1] + "?"; - } - const selected = suggestions.slice(0, MAX_SUGGESTIONS); - const lastItem = selected.pop(); - return message + selected.join(", ") + ", or " + lastItem + "?"; -} - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/jsutils/identityFunc.mjs -function identityFunc(x) { - return x; -} - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/jsutils/keyMap.mjs -function keyMap(list, keyFn) { - const result = /* @__PURE__ */ Object.create(null); - for (const item of list) { - result[keyFn(item)] = item; - } - return result; -} - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/jsutils/keyValMap.mjs -function keyValMap(list, keyFn, valFn) { - const result = /* @__PURE__ */ Object.create(null); - for (const item of list) { - result[keyFn(item)] = valFn(item); - } - return result; -} - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/jsutils/mapValue.mjs -function mapValue(map2, fn) { - const result = /* @__PURE__ */ Object.create(null); - for (const key of Object.keys(map2)) { - result[key] = fn(map2[key], key); - } - return result; -} - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/jsutils/naturalCompare.mjs -function naturalCompare(aStr, bStr) { - let aIndex = 0; - let bIndex = 0; - while (aIndex < aStr.length && bIndex < bStr.length) { - let aChar = aStr.charCodeAt(aIndex); - let bChar = bStr.charCodeAt(bIndex); - if (isDigit2(aChar) && isDigit2(bChar)) { - let aNum = 0; - do { - ++aIndex; - aNum = aNum * 10 + aChar - DIGIT_0; - aChar = aStr.charCodeAt(aIndex); - } while (isDigit2(aChar) && aNum > 0); - let bNum = 0; - do { - ++bIndex; - bNum = bNum * 10 + bChar - DIGIT_0; - bChar = bStr.charCodeAt(bIndex); - } while (isDigit2(bChar) && bNum > 0); - if (aNum < bNum) { - return -1; - } - if (aNum > bNum) { - return 1; - } - } else { - if (aChar < bChar) { - return -1; - } - if (aChar > bChar) { - return 1; - } - ++aIndex; - ++bIndex; - } - } - return aStr.length - bStr.length; -} -var DIGIT_0 = 48; -var DIGIT_9 = 57; -function isDigit2(code) { - return !isNaN(code) && DIGIT_0 <= code && code <= DIGIT_9; -} - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/jsutils/suggestionList.mjs -function suggestionList(input, options) { - const optionsByDistance = /* @__PURE__ */ Object.create(null); - const lexicalDistance = new LexicalDistance(input); - const threshold = Math.floor(input.length * 0.4) + 1; - for (const option of options) { - const distance = lexicalDistance.measure(option, threshold); - if (distance !== void 0) { - optionsByDistance[option] = distance; - } - } - return Object.keys(optionsByDistance).sort((a, b) => { - const distanceDiff = optionsByDistance[a] - optionsByDistance[b]; - return distanceDiff !== 0 ? distanceDiff : naturalCompare(a, b); - }); -} -var LexicalDistance = class { - constructor(input) { - this._input = input; - this._inputLowerCase = input.toLowerCase(); - this._inputArray = stringToArray(this._inputLowerCase); - this._rows = [ - new Array(input.length + 1).fill(0), - new Array(input.length + 1).fill(0), - new Array(input.length + 1).fill(0) - ]; - } - measure(option, threshold) { - if (this._input === option) { - return 0; - } - const optionLowerCase = option.toLowerCase(); - if (this._inputLowerCase === optionLowerCase) { - return 1; - } - let a = stringToArray(optionLowerCase); - let b = this._inputArray; - if (a.length < b.length) { - const tmp = a; - a = b; - b = tmp; - } - const aLength = a.length; - const bLength = b.length; - if (aLength - bLength > threshold) { - return void 0; - } - const rows = this._rows; - for (let j = 0; j <= bLength; j++) { - rows[0][j] = j; - } - for (let i = 1; i <= aLength; i++) { - const upRow = rows[(i - 1) % 3]; - const currentRow = rows[i % 3]; - let smallestCell = currentRow[0] = i; - for (let j = 1; j <= bLength; j++) { - const cost = a[i - 1] === b[j - 1] ? 0 : 1; - let currentCell = Math.min( - upRow[j] + 1, - currentRow[j - 1] + 1, - upRow[j - 1] + cost - ); - if (i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b[j - 1]) { - const doubleDiagonalCell = rows[(i - 2) % 3][j - 2]; - currentCell = Math.min(currentCell, doubleDiagonalCell + 1); - } - if (currentCell < smallestCell) { - smallestCell = currentCell; - } - currentRow[j] = currentCell; - } - if (smallestCell > threshold) { - return void 0; - } - } - const distance = rows[aLength % 3][bLength]; - return distance <= threshold ? distance : void 0; - } -}; -function stringToArray(str) { - const strLength = str.length; - const array = new Array(strLength); - for (let i = 0; i < strLength; ++i) { - array[i] = str.charCodeAt(i); - } - return array; -} - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/jsutils/toObjMap.mjs -function toObjMap(obj) { - if (obj == null) { - return /* @__PURE__ */ Object.create(null); - } - if (Object.getPrototypeOf(obj) === null) { - return obj; - } - const map2 = /* @__PURE__ */ Object.create(null); - for (const [key, value] of Object.entries(obj)) { - map2[key] = value; - } - return map2; -} - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/printString.mjs +var parser = /* @__PURE__ */ Object.freeze({ + __proto__: null, + parse, + parseValue, + parseConstValue, + parseType, + Parser +}); +var require$$1 = /* @__PURE__ */ getAugmentedNamespace(parser); function printString(str) { return `"${str.replace(escapedRegExp, escapedReplacer)}"`; } @@ -9420,8 +4178,6 @@ var escapeSequences = [ "\\u009E", "\\u009F" ]; - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/visitor.mjs var BREAK = Object.freeze({}); function visit(root, visitor, visitorKeys = QueryDocumentKeys) { const enterLeaveMap = /* @__PURE__ */ new Map(); @@ -9459,388 +4215,1751 @@ function visit(root, visitor, visitorKeys = QueryDocumentKeys) { node[arrayKey] = editValue; } } - } else { - node = Object.defineProperties( - {}, - Object.getOwnPropertyDescriptors(node) - ); - for (const [editKey, editValue] of edits) { - node[editKey] = editValue; + } else { + node = Object.defineProperties( + {}, + Object.getOwnPropertyDescriptors(node) + ); + for (const [editKey, editValue] of edits) { + node[editKey] = editValue; + } + } + } + index = stack.index; + keys = stack.keys; + edits = stack.edits; + inArray = stack.inArray; + stack = stack.prev; + } else if (parent) { + key = inArray ? index : keys[index]; + node = parent[key]; + if (node === null || node === void 0) { + continue; + } + path.push(key); + } + let result; + if (!Array.isArray(node)) { + var _enterLeaveMap$get, _enterLeaveMap$get2; + isNode(node) || devAssert(false, `Invalid AST Node: ${inspect$1(node)}.`); + const visitFn = isLeaving ? (_enterLeaveMap$get = enterLeaveMap.get(node.kind)) === null || _enterLeaveMap$get === void 0 ? void 0 : _enterLeaveMap$get.leave : (_enterLeaveMap$get2 = enterLeaveMap.get(node.kind)) === null || _enterLeaveMap$get2 === void 0 ? void 0 : _enterLeaveMap$get2.enter; + result = visitFn === null || visitFn === void 0 ? void 0 : visitFn.call(visitor, node, key, parent, path, ancestors); + if (result === BREAK) { + break; + } + if (result === false) { + if (!isLeaving) { + path.pop(); + continue; + } + } else if (result !== void 0) { + edits.push([key, result]); + if (!isLeaving) { + if (isNode(result)) { + node = result; + } else { + path.pop(); + continue; + } + } + } + } + if (result === void 0 && isEdited) { + edits.push([key, node]); + } + if (isLeaving) { + path.pop(); + } else { + var _node$kind; + stack = { + inArray, + index, + keys, + edits, + prev: stack + }; + inArray = Array.isArray(node); + keys = inArray ? node : (_node$kind = visitorKeys[node.kind]) !== null && _node$kind !== void 0 ? _node$kind : []; + index = -1; + edits = []; + if (parent) { + ancestors.push(parent); + } + parent = node; + } + } while (stack !== void 0); + if (edits.length !== 0) { + return edits[edits.length - 1][1]; + } + return root; +} +function visitInParallel(visitors) { + const skipping = new Array(visitors.length).fill(null); + const mergedVisitor = /* @__PURE__ */ Object.create(null); + for (const kind of Object.values(Kind)) { + let hasVisitor = false; + const enterList = new Array(visitors.length).fill(void 0); + const leaveList = new Array(visitors.length).fill(void 0); + for (let i = 0; i < visitors.length; ++i) { + const { enter, leave } = getEnterLeaveForKind(visitors[i], kind); + hasVisitor || (hasVisitor = enter != null || leave != null); + enterList[i] = enter; + leaveList[i] = leave; + } + if (!hasVisitor) { + continue; + } + const mergedEnterLeave = { + enter(...args) { + const node = args[0]; + for (let i = 0; i < visitors.length; i++) { + if (skipping[i] === null) { + var _enterList$i; + const result = (_enterList$i = enterList[i]) === null || _enterList$i === void 0 ? void 0 : _enterList$i.apply(visitors[i], args); + if (result === false) { + skipping[i] = node; + } else if (result === BREAK) { + skipping[i] = BREAK; + } else if (result !== void 0) { + return result; + } + } + } + }, + leave(...args) { + const node = args[0]; + for (let i = 0; i < visitors.length; i++) { + if (skipping[i] === null) { + var _leaveList$i; + const result = (_leaveList$i = leaveList[i]) === null || _leaveList$i === void 0 ? void 0 : _leaveList$i.apply(visitors[i], args); + if (result === BREAK) { + skipping[i] = BREAK; + } else if (result !== void 0 && result !== false) { + return result; + } + } else if (skipping[i] === node) { + skipping[i] = null; + } + } + } + }; + mergedVisitor[kind] = mergedEnterLeave; + } + return mergedVisitor; +} +function getEnterLeaveForKind(visitor, kind) { + const kindVisitor = visitor[kind]; + if (typeof kindVisitor === "object") { + return kindVisitor; + } else if (typeof kindVisitor === "function") { + return { + enter: kindVisitor, + leave: void 0 + }; + } + return { + enter: visitor.enter, + leave: visitor.leave + }; +} +function print(ast) { + return visit(ast, printDocASTReducer$1); +} +var MAX_LINE_LENGTH$1 = 80; +var printDocASTReducer$1 = { + Name: { + leave: (node) => node.value + }, + Variable: { + leave: (node) => "$" + node.name + }, + Document: { + leave: (node) => join$1(node.definitions, "\n\n") + }, + OperationDefinition: { + leave(node) { + const varDefs = wrap$1("(", join$1(node.variableDefinitions, ", "), ")"); + const prefix2 = join$1( + [ + node.operation, + join$1([node.name, varDefs]), + join$1(node.directives, " ") + ], + " " + ); + return (prefix2 === "query" ? "" : prefix2 + " ") + node.selectionSet; + } + }, + VariableDefinition: { + leave: ({ variable, type, defaultValue, directives }) => variable + ": " + type + wrap$1(" = ", defaultValue) + wrap$1(" ", join$1(directives, " ")) + }, + SelectionSet: { + leave: ({ selections }) => block$1(selections) + }, + Field: { + leave({ alias, name, arguments: args, directives, selectionSet }) { + const prefix2 = wrap$1("", alias, ": ") + name; + let argsLine = prefix2 + wrap$1("(", join$1(args, ", "), ")"); + if (argsLine.length > MAX_LINE_LENGTH$1) { + argsLine = prefix2 + wrap$1("(\n", indent$1(join$1(args, "\n")), "\n)"); + } + return join$1([argsLine, join$1(directives, " "), selectionSet], " "); + } + }, + Argument: { + leave: ({ name, value }) => name + ": " + value + }, + FragmentSpread: { + leave: ({ name, directives }) => "..." + name + wrap$1(" ", join$1(directives, " ")) + }, + InlineFragment: { + leave: ({ typeCondition, directives, selectionSet }) => join$1( + [ + "...", + wrap$1("on ", typeCondition), + join$1(directives, " "), + selectionSet + ], + " " + ) + }, + FragmentDefinition: { + leave: ({ name, typeCondition, variableDefinitions, directives, selectionSet }) => `fragment ${name}${wrap$1("(", join$1(variableDefinitions, ", "), ")")} on ${typeCondition} ${wrap$1("", join$1(directives, " "), " ")}` + selectionSet + }, + IntValue: { + leave: ({ value }) => value + }, + FloatValue: { + leave: ({ value }) => value + }, + StringValue: { + leave: ({ value, block: isBlockString }) => isBlockString ? printBlockString$1(value) : printString(value) + }, + BooleanValue: { + leave: ({ value }) => value ? "true" : "false" + }, + NullValue: { + leave: () => "null" + }, + EnumValue: { + leave: ({ value }) => value + }, + ListValue: { + leave: ({ values }) => "[" + join$1(values, ", ") + "]" + }, + ObjectValue: { + leave: ({ fields }) => "{" + join$1(fields, ", ") + "}" + }, + ObjectField: { + leave: ({ name, value }) => name + ": " + value + }, + Directive: { + leave: ({ name, arguments: args }) => "@" + name + wrap$1("(", join$1(args, ", "), ")") + }, + NamedType: { + leave: ({ name }) => name + }, + ListType: { + leave: ({ type }) => "[" + type + "]" + }, + NonNullType: { + leave: ({ type }) => type + "!" + }, + SchemaDefinition: { + leave: ({ description, directives, operationTypes }) => wrap$1("", description, "\n") + join$1(["schema", join$1(directives, " "), block$1(operationTypes)], " ") + }, + OperationTypeDefinition: { + leave: ({ operation, type }) => operation + ": " + type + }, + ScalarTypeDefinition: { + leave: ({ description, name, directives }) => wrap$1("", description, "\n") + join$1(["scalar", name, join$1(directives, " ")], " ") + }, + ObjectTypeDefinition: { + leave: ({ description, name, interfaces, directives, fields }) => wrap$1("", description, "\n") + join$1( + [ + "type", + name, + wrap$1("implements ", join$1(interfaces, " & ")), + join$1(directives, " "), + block$1(fields) + ], + " " + ) + }, + FieldDefinition: { + leave: ({ description, name, arguments: args, type, directives }) => wrap$1("", description, "\n") + name + (hasMultilineItems$1(args) ? wrap$1("(\n", indent$1(join$1(args, "\n")), "\n)") : wrap$1("(", join$1(args, ", "), ")")) + ": " + type + wrap$1(" ", join$1(directives, " ")) + }, + InputValueDefinition: { + leave: ({ description, name, type, defaultValue, directives }) => wrap$1("", description, "\n") + join$1( + [name + ": " + type, wrap$1("= ", defaultValue), join$1(directives, " ")], + " " + ) + }, + InterfaceTypeDefinition: { + leave: ({ description, name, interfaces, directives, fields }) => wrap$1("", description, "\n") + join$1( + [ + "interface", + name, + wrap$1("implements ", join$1(interfaces, " & ")), + join$1(directives, " "), + block$1(fields) + ], + " " + ) + }, + UnionTypeDefinition: { + leave: ({ description, name, directives, types: types2 }) => wrap$1("", description, "\n") + join$1( + ["union", name, join$1(directives, " "), wrap$1("= ", join$1(types2, " | "))], + " " + ) + }, + EnumTypeDefinition: { + leave: ({ description, name, directives, values }) => wrap$1("", description, "\n") + join$1(["enum", name, join$1(directives, " "), block$1(values)], " ") + }, + EnumValueDefinition: { + leave: ({ description, name, directives }) => wrap$1("", description, "\n") + join$1([name, join$1(directives, " ")], " ") + }, + InputObjectTypeDefinition: { + leave: ({ description, name, directives, fields }) => wrap$1("", description, "\n") + join$1(["input", name, join$1(directives, " "), block$1(fields)], " ") + }, + DirectiveDefinition: { + leave: ({ description, name, arguments: args, repeatable, locations }) => wrap$1("", description, "\n") + "directive @" + name + (hasMultilineItems$1(args) ? wrap$1("(\n", indent$1(join$1(args, "\n")), "\n)") : wrap$1("(", join$1(args, ", "), ")")) + (repeatable ? " repeatable" : "") + " on " + join$1(locations, " | ") + }, + SchemaExtension: { + leave: ({ directives, operationTypes }) => join$1( + ["extend schema", join$1(directives, " "), block$1(operationTypes)], + " " + ) + }, + ScalarTypeExtension: { + leave: ({ name, directives }) => join$1(["extend scalar", name, join$1(directives, " ")], " ") + }, + ObjectTypeExtension: { + leave: ({ name, interfaces, directives, fields }) => join$1( + [ + "extend type", + name, + wrap$1("implements ", join$1(interfaces, " & ")), + join$1(directives, " "), + block$1(fields) + ], + " " + ) + }, + InterfaceTypeExtension: { + leave: ({ name, interfaces, directives, fields }) => join$1( + [ + "extend interface", + name, + wrap$1("implements ", join$1(interfaces, " & ")), + join$1(directives, " "), + block$1(fields) + ], + " " + ) + }, + UnionTypeExtension: { + leave: ({ name, directives, types: types2 }) => join$1( + [ + "extend union", + name, + join$1(directives, " "), + wrap$1("= ", join$1(types2, " | ")) + ], + " " + ) + }, + EnumTypeExtension: { + leave: ({ name, directives, values }) => join$1(["extend enum", name, join$1(directives, " "), block$1(values)], " ") + }, + InputObjectTypeExtension: { + leave: ({ name, directives, fields }) => join$1(["extend input", name, join$1(directives, " "), block$1(fields)], " ") + } +}; +function join$1(maybeArray, separator = "") { + var _maybeArray$filter$jo; + return (_maybeArray$filter$jo = maybeArray === null || maybeArray === void 0 ? void 0 : maybeArray.filter((x) => x).join(separator)) !== null && _maybeArray$filter$jo !== void 0 ? _maybeArray$filter$jo : ""; +} +function block$1(array) { + return wrap$1("{\n", indent$1(join$1(array, "\n")), "\n}"); +} +function wrap$1(start, maybeString, end = "") { + return maybeString != null && maybeString !== "" ? start + maybeString + end : ""; +} +function indent$1(str) { + return wrap$1(" ", str.replace(/\n/g, "\n ")); +} +function hasMultilineItems$1(maybeArray) { + var _maybeArray$some; + return (_maybeArray$some = maybeArray === null || maybeArray === void 0 ? void 0 : maybeArray.some((str) => str.includes("\n"))) !== null && _maybeArray$some !== void 0 ? _maybeArray$some : false; +} +var printer = /* @__PURE__ */ Object.freeze({ + __proto__: null, + print +}); +var require$$2 = /* @__PURE__ */ getAugmentedNamespace(printer); +var createRequestBody$1 = {}; +var _public = {}; +var ReactNativeFile$1 = function ReactNativeFile(_ref) { + var uri = _ref.uri, name = _ref.name, type = _ref.type; + this.uri = uri; + this.name = name; + this.type = type; +}; +var ReactNativeFile2 = ReactNativeFile$1; +var isExtractableFile = function isExtractableFile2(value) { + return typeof File !== "undefined" && value instanceof File || typeof Blob !== "undefined" && value instanceof Blob || value instanceof ReactNativeFile2; +}; +var defaultIsExtractableFile = isExtractableFile; +var extractFiles = function extractFiles2(value, path, isExtractableFile3) { + if (path === void 0) { + path = ""; + } + if (isExtractableFile3 === void 0) { + isExtractableFile3 = defaultIsExtractableFile; + } + var clone; + var files = /* @__PURE__ */ new Map(); + function addFile(paths, file) { + var storedPaths = files.get(file); + if (storedPaths) + storedPaths.push.apply(storedPaths, paths); + else + files.set(file, paths); + } + if (isExtractableFile3(value)) { + clone = null; + addFile([path], value); + } else { + var prefix2 = path ? path + "." : ""; + if (typeof FileList !== "undefined" && value instanceof FileList) + clone = Array.prototype.map.call(value, function(file, i2) { + addFile(["" + prefix2 + i2], file); + return null; + }); + else if (Array.isArray(value)) + clone = value.map(function(child, i2) { + var result2 = extractFiles2(child, "" + prefix2 + i2, isExtractableFile3); + result2.files.forEach(addFile); + return result2.clone; + }); + else if (value && value.constructor === Object) { + clone = {}; + for (var i in value) { + var result = extractFiles2(value[i], "" + prefix2 + i, isExtractableFile3); + result.files.forEach(addFile); + clone[i] = result.clone; + } + } else + clone = value; + } + return { + clone, + files + }; +}; +_public.ReactNativeFile = ReactNativeFile$1; +_public.extractFiles = extractFiles; +_public.isExtractableFile = isExtractableFile; +var browser = typeof self == "object" ? self.FormData : window.FormData; +var defaultJsonSerializer = {}; +Object.defineProperty(defaultJsonSerializer, "__esModule", { value: true }); +defaultJsonSerializer.defaultJsonSerializer = void 0; +defaultJsonSerializer.defaultJsonSerializer = { + parse: JSON.parse, + stringify: JSON.stringify +}; +var __importDefault = commonjsGlobal && commonjsGlobal.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; +}; +Object.defineProperty(createRequestBody$1, "__esModule", { value: true }); +var extract_files_1 = _public; +var form_data_1 = __importDefault(browser); +var defaultJsonSerializer_1 = defaultJsonSerializer; +var isExtractableFileEnhanced = function(value) { + return extract_files_1.isExtractableFile(value) || value !== null && typeof value === "object" && typeof value.pipe === "function"; +}; +function createRequestBody(query, variables, operationName, jsonSerializer) { + if (jsonSerializer === void 0) { + jsonSerializer = defaultJsonSerializer_1.defaultJsonSerializer; + } + var _a2 = extract_files_1.extractFiles({ query, variables, operationName }, "", isExtractableFileEnhanced), clone = _a2.clone, files = _a2.files; + if (files.size === 0) { + if (!Array.isArray(query)) { + return jsonSerializer.stringify(clone); + } + if (typeof variables !== "undefined" && !Array.isArray(variables)) { + throw new Error("Cannot create request body with given variable type, array expected"); + } + var payload = query.reduce(function(accu, currentQuery, index) { + accu.push({ query: currentQuery, variables: variables ? variables[index] : void 0 }); + return accu; + }, []); + return jsonSerializer.stringify(payload); + } + var Form = typeof FormData === "undefined" ? form_data_1.default : FormData; + var form = new Form(); + form.append("operations", jsonSerializer.stringify(clone)); + var map = {}; + var i = 0; + files.forEach(function(paths) { + map[++i] = paths; + }); + form.append("map", jsonSerializer.stringify(map)); + i = 0; + files.forEach(function(paths, file) { + form.append("" + ++i, file); + }); + return form; +} +createRequestBody$1.default = createRequestBody; +var parseArgs = {}; +Object.defineProperty(parseArgs, "__esModule", { value: true }); +parseArgs.parseBatchRequestsExtendedArgs = parseArgs.parseRawRequestExtendedArgs = parseArgs.parseRequestExtendedArgs = parseArgs.parseBatchRequestArgs = parseArgs.parseRawRequestArgs = parseArgs.parseRequestArgs = void 0; +function parseRequestArgs(documentOrOptions, variables, requestHeaders) { + return documentOrOptions.document ? documentOrOptions : { + document: documentOrOptions, + variables, + requestHeaders, + signal: void 0 + }; +} +parseArgs.parseRequestArgs = parseRequestArgs; +function parseRawRequestArgs(queryOrOptions, variables, requestHeaders) { + return queryOrOptions.query ? queryOrOptions : { + query: queryOrOptions, + variables, + requestHeaders, + signal: void 0 + }; +} +parseArgs.parseRawRequestArgs = parseRawRequestArgs; +function parseBatchRequestArgs(documentsOrOptions, requestHeaders) { + return documentsOrOptions.documents ? documentsOrOptions : { + documents: documentsOrOptions, + requestHeaders, + signal: void 0 + }; +} +parseArgs.parseBatchRequestArgs = parseBatchRequestArgs; +function parseRequestExtendedArgs(urlOrOptions, document2, variables, requestHeaders) { + return urlOrOptions.document ? urlOrOptions : { + url: urlOrOptions, + document: document2, + variables, + requestHeaders, + signal: void 0 + }; +} +parseArgs.parseRequestExtendedArgs = parseRequestExtendedArgs; +function parseRawRequestExtendedArgs(urlOrOptions, query, variables, requestHeaders) { + return urlOrOptions.query ? urlOrOptions : { + url: urlOrOptions, + query, + variables, + requestHeaders, + signal: void 0 + }; +} +parseArgs.parseRawRequestExtendedArgs = parseRawRequestExtendedArgs; +function parseBatchRequestsExtendedArgs(urlOrOptions, documents, requestHeaders) { + return urlOrOptions.documents ? urlOrOptions : { + url: urlOrOptions, + documents, + requestHeaders, + signal: void 0 + }; +} +parseArgs.parseBatchRequestsExtendedArgs = parseBatchRequestsExtendedArgs; +var types = {}; +var __extends$1 = commonjsGlobal && commonjsGlobal.__extends || function() { + var extendStatics2 = function(d, b) { + extendStatics2 = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) { + d2.__proto__ = b2; + } || function(d2, b2) { + for (var p in b2) + if (Object.prototype.hasOwnProperty.call(b2, p)) + d2[p] = b2[p]; + }; + return extendStatics2(d, b); + }; + return function(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics2(d, b); + function __() { + this.constructor = d; + } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +}(); +Object.defineProperty(types, "__esModule", { value: true }); +types.ClientError = void 0; +var ClientError = function(_super) { + __extends$1(ClientError2, _super); + function ClientError2(response, request) { + var _this = this; + var message = ClientError2.extractMessage(response) + ": " + JSON.stringify({ + response, + request + }); + _this = _super.call(this, message) || this; + Object.setPrototypeOf(_this, ClientError2.prototype); + _this.response = response; + _this.request = request; + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(_this, ClientError2); + } + return _this; + } + ClientError2.extractMessage = function(response) { + try { + return response.errors[0].message; + } catch (e) { + return "GraphQL Error (Code: " + response.status + ")"; + } + }; + return ClientError2; +}(Error); +types.ClientError = ClientError; +var graphqlWs = {}; +var hasRequiredGraphqlWs; +function requireGraphqlWs() { + if (hasRequiredGraphqlWs) + return graphqlWs; + hasRequiredGraphqlWs = 1; + var __assign = commonjsGlobal && commonjsGlobal.__assign || function() { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) + if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + }; + var __awaiter2 = commonjsGlobal && commonjsGlobal.__awaiter || function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function(resolve, reject2) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject2(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject2(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + var __generator2 = commonjsGlobal && commonjsGlobal.__generator || function(thisArg, body) { + var _ = { label: 0, sent: function() { + if (t[0] & 1) + throw t[1]; + return t[1]; + }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { + return this; + }), g; + function verb(n) { + return function(v) { + return step([n, v]); + }; + } + function step(op) { + if (f) + throw new TypeError("Generator is already executing."); + while (_) + try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) + return t; + if (y = 0, t) + op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: + case 1: + t = op; + break; + case 4: + _.label++; + return { value: op[1], done: false }; + case 5: + _.label++; + y = op[1]; + op = [0]; + continue; + case 7: + op = _.ops.pop(); + _.trys.pop(); + continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { + _ = 0; + continue; + } + if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { + _.label = op[1]; + break; + } + if (op[0] === 6 && _.label < t[1]) { + _.label = t[1]; + t = op; + break; + } + if (t && _.label < t[2]) { + _.label = t[2]; + _.ops.push(op); + break; + } + if (t[2]) + _.ops.pop(); + _.trys.pop(); + continue; + } + op = body.call(thisArg, _); + } catch (e) { + op = [6, e]; + y = 0; + } finally { + f = t = 0; + } + if (op[0] & 5) + throw op[1]; + return { value: op[0] ? op[1] : void 0, done: true }; + } + }; + Object.defineProperty(graphqlWs, "__esModule", { value: true }); + graphqlWs.GraphQLWebSocketClient = void 0; + var types_1 = types; + var _1 = requireDist(); + var CONNECTION_INIT = "connection_init"; + var CONNECTION_ACK = "connection_ack"; + var PING = "ping"; + var PONG = "pong"; + var SUBSCRIBE = "subscribe"; + var NEXT = "next"; + var ERROR2 = "error"; + var COMPLETE = "complete"; + var GraphQLWebSocketMessage = function() { + function GraphQLWebSocketMessage2(type, payload, id) { + this._type = type; + this._payload = payload; + this._id = id; + } + Object.defineProperty(GraphQLWebSocketMessage2.prototype, "type", { + get: function() { + return this._type; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(GraphQLWebSocketMessage2.prototype, "id", { + get: function() { + return this._id; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(GraphQLWebSocketMessage2.prototype, "payload", { + get: function() { + return this._payload; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(GraphQLWebSocketMessage2.prototype, "text", { + get: function() { + var result = { type: this.type }; + if (this.id != null && this.id != void 0) + result.id = this.id; + if (this.payload != null && this.payload != void 0) + result.payload = this.payload; + return JSON.stringify(result); + }, + enumerable: false, + configurable: true + }); + GraphQLWebSocketMessage2.parse = function(data, f) { + var _a2 = JSON.parse(data), type = _a2.type, payload = _a2.payload, id = _a2.id; + return new GraphQLWebSocketMessage2(type, f(payload), id); + }; + return GraphQLWebSocketMessage2; + }(); + var GraphQLWebSocketClient = function() { + function GraphQLWebSocketClient2(socket, _a2) { + var _this = this; + var onInit = _a2.onInit, onAcknowledged = _a2.onAcknowledged, onPing = _a2.onPing, onPong = _a2.onPong; + this.socketState = { acknowledged: false, lastRequestId: 0, subscriptions: {} }; + this.socket = socket; + socket.onopen = function(e) { + return __awaiter2(_this, void 0, void 0, function() { + var _a3, _b, _c, _d; + return __generator2(this, function(_e) { + switch (_e.label) { + case 0: + this.socketState.acknowledged = false; + this.socketState.subscriptions = {}; + _b = (_a3 = socket).send; + _c = ConnectionInit; + if (!onInit) + return [3, 2]; + return [4, onInit()]; + case 1: + _d = _e.sent(); + return [3, 3]; + case 2: + _d = null; + _e.label = 3; + case 3: + _b.apply(_a3, [_c.apply(void 0, [_d]).text]); + return [2]; + } + }); + }); + }; + socket.onclose = function(e) { + _this.socketState.acknowledged = false; + _this.socketState.subscriptions = {}; + }; + socket.onerror = function(e) { + console.error(e); + }; + socket.onmessage = function(e) { + try { + var message = parseMessage(e.data); + switch (message.type) { + case CONNECTION_ACK: { + if (_this.socketState.acknowledged) { + console.warn("Duplicate CONNECTION_ACK message ignored"); + } else { + _this.socketState.acknowledged = true; + if (onAcknowledged) + onAcknowledged(message.payload); + } + return; + } + case PING: { + if (onPing) + onPing(message.payload).then(function(r) { + return socket.send(Pong(r).text); + }); + else + socket.send(Pong(null).text); + return; + } + case PONG: { + if (onPong) + onPong(message.payload); + return; + } + } + if (!_this.socketState.acknowledged) { + return; + } + if (message.id === void 0 || message.id === null || !_this.socketState.subscriptions[message.id]) { + return; + } + var _a3 = _this.socketState.subscriptions[message.id], query = _a3.query, variables = _a3.variables, subscriber = _a3.subscriber; + switch (message.type) { + case NEXT: { + if (!message.payload.errors && message.payload.data) { + subscriber.next && subscriber.next(message.payload.data); + } + if (message.payload.errors) { + subscriber.error && subscriber.error(new types_1.ClientError(__assign(__assign({}, message.payload), { status: 200 }), { query, variables })); + } else { + } + return; + } + case ERROR2: { + subscriber.error && subscriber.error(new types_1.ClientError({ errors: message.payload, status: 200 }, { query, variables })); + return; + } + case COMPLETE: { + subscriber.complete && subscriber.complete(); + delete _this.socketState.subscriptions[message.id]; + return; + } + } + } catch (e2) { + console.error(e2); + socket.close(1006); + } + socket.close(4400, "Unknown graphql-ws message."); + }; + } + GraphQLWebSocketClient2.prototype.makeSubscribe = function(query, operationName, variables, subscriber) { + var _this = this; + var subscriptionId = (this.socketState.lastRequestId++).toString(); + this.socketState.subscriptions[subscriptionId] = { query, variables, subscriber }; + this.socket.send(Subscribe(subscriptionId, { query, operationName, variables }).text); + return function() { + _this.socket.send(Complete(subscriptionId).text); + delete _this.socketState.subscriptions[subscriptionId]; + }; + }; + GraphQLWebSocketClient2.prototype.rawRequest = function(query, variables) { + var _this = this; + return new Promise(function(resolve, reject2) { + var result; + _this.rawSubscribe(query, { + next: function(data, extensions) { + return result = { data, extensions }; + }, + error: reject2, + complete: function() { + return resolve(result); + } + }, variables); + }); + }; + GraphQLWebSocketClient2.prototype.request = function(document2, variables) { + var _this = this; + return new Promise(function(resolve, reject2) { + var result; + _this.subscribe(document2, { + next: function(data) { + return result = data; + }, + error: reject2, + complete: function() { + return resolve(result); + } + }, variables); + }); + }; + GraphQLWebSocketClient2.prototype.subscribe = function(document2, subscriber, variables) { + var _a2 = _1.resolveRequestDocument(document2), query = _a2.query, operationName = _a2.operationName; + return this.makeSubscribe(query, operationName, variables, subscriber); + }; + GraphQLWebSocketClient2.prototype.rawSubscribe = function(query, subscriber, variables) { + return this.makeSubscribe(query, void 0, variables, subscriber); + }; + GraphQLWebSocketClient2.prototype.ping = function(payload) { + this.socket.send(Ping(payload).text); + }; + GraphQLWebSocketClient2.prototype.close = function() { + this.socket.close(1e3); + }; + GraphQLWebSocketClient2.PROTOCOL = "graphql-transport-ws"; + return GraphQLWebSocketClient2; + }(); + graphqlWs.GraphQLWebSocketClient = GraphQLWebSocketClient; + function parseMessage(data, f) { + if (f === void 0) { + f = function(a) { + return a; + }; + } + var m = GraphQLWebSocketMessage.parse(data, f); + return m; + } + function ConnectionInit(payload) { + return new GraphQLWebSocketMessage(CONNECTION_INIT, payload); + } + function Ping(payload) { + return new GraphQLWebSocketMessage(PING, payload, void 0); + } + function Pong(payload) { + return new GraphQLWebSocketMessage(PONG, payload, void 0); + } + function Subscribe(id, payload) { + return new GraphQLWebSocketMessage(SUBSCRIBE, payload, id); + } + function Complete(id) { + return new GraphQLWebSocketMessage(COMPLETE, void 0, id); + } + return graphqlWs; +} +var hasRequiredDist; +function requireDist() { + if (hasRequiredDist) + return dist; + hasRequiredDist = 1; + (function(exports) { + var __assign = commonjsGlobal && commonjsGlobal.__assign || function() { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) + if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + }; + var __createBinding = commonjsGlobal && commonjsGlobal.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { + return m[k]; + } }); + } : function(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = commonjsGlobal && commonjsGlobal.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar = commonjsGlobal && commonjsGlobal.__importStar || function(mod) { + if (mod && mod.__esModule) + return mod; + var result = {}; + if (mod != null) { + for (var k in mod) + if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) + __createBinding(result, mod, k); + } + __setModuleDefault(result, mod); + return result; + }; + var __awaiter2 = commonjsGlobal && commonjsGlobal.__awaiter || function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function(resolve, reject2) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject2(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject2(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + var __generator2 = commonjsGlobal && commonjsGlobal.__generator || function(thisArg, body) { + var _ = { label: 0, sent: function() { + if (t[0] & 1) + throw t[1]; + return t[1]; + }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { + return this; + }), g; + function verb(n) { + return function(v) { + return step([n, v]); + }; + } + function step(op) { + if (f) + throw new TypeError("Generator is already executing."); + while (_) + try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) + return t; + if (y = 0, t) + op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: + case 1: + t = op; + break; + case 4: + _.label++; + return { value: op[1], done: false }; + case 5: + _.label++; + y = op[1]; + op = [0]; + continue; + case 7: + op = _.ops.pop(); + _.trys.pop(); + continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { + _ = 0; + continue; + } + if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { + _.label = op[1]; + break; + } + if (op[0] === 6 && _.label < t[1]) { + _.label = t[1]; + t = op; + break; + } + if (t && _.label < t[2]) { + _.label = t[2]; + _.ops.push(op); + break; + } + if (t[2]) + _.ops.pop(); + _.trys.pop(); + continue; + } + op = body.call(thisArg, _); + } catch (e) { + op = [6, e]; + y = 0; + } finally { + f = t = 0; + } + if (op[0] & 5) + throw op[1]; + return { value: op[0] ? op[1] : void 0, done: true }; + } + }; + var __rest = commonjsGlobal && commonjsGlobal.__rest || function(s, e) { + var t = {}; + for (var p in s) + if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; + }; + var __importDefault2 = commonjsGlobal && commonjsGlobal.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.GraphQLWebSocketClient = exports.gql = exports.resolveRequestDocument = exports.batchRequests = exports.request = exports.rawRequest = exports.GraphQLClient = exports.ClientError = void 0; + var cross_fetch_1 = __importStar(browserPonyfill.exports), CrossFetch = cross_fetch_1; + var parser_1 = require$$1; + var printer_1 = require$$2; + var createRequestBody_1 = __importDefault2(createRequestBody$1); + var defaultJsonSerializer_12 = defaultJsonSerializer; + var parseArgs_1 = parseArgs; + var types_1 = types; + Object.defineProperty(exports, "ClientError", { enumerable: true, get: function() { + return types_1.ClientError; + } }); + var resolveHeaders = function(headers) { + var oHeaders = {}; + if (headers) { + if (typeof Headers !== "undefined" && headers instanceof Headers || CrossFetch && CrossFetch.Headers && headers instanceof CrossFetch.Headers) { + oHeaders = HeadersInstanceToPlainObject(headers); + } else if (Array.isArray(headers)) { + headers.forEach(function(_a2) { + var name = _a2[0], value = _a2[1]; + oHeaders[name] = value; + }); + } else { + oHeaders = headers; + } + } + return oHeaders; + }; + var queryCleanner = function(str) { + return str.replace(/([\s,]|#[^\n\r]+)+/g, " ").trim(); + }; + var buildGetQueryParams = function(_a2) { + var query = _a2.query, variables = _a2.variables, operationName = _a2.operationName, jsonSerializer = _a2.jsonSerializer; + if (!Array.isArray(query)) { + var search = ["query=" + encodeURIComponent(queryCleanner(query))]; + if (variables) { + search.push("variables=" + encodeURIComponent(jsonSerializer.stringify(variables))); + } + if (operationName) { + search.push("operationName=" + encodeURIComponent(operationName)); + } + return search.join("&"); + } + if (typeof variables !== "undefined" && !Array.isArray(variables)) { + throw new Error("Cannot create query with given variable type, array expected"); + } + var payload = query.reduce(function(accu, currentQuery, index) { + accu.push({ + query: queryCleanner(currentQuery), + variables: variables ? jsonSerializer.stringify(variables[index]) : void 0 + }); + return accu; + }, []); + return "query=" + encodeURIComponent(jsonSerializer.stringify(payload)); + }; + var post2 = function(_a2) { + var url = _a2.url, query = _a2.query, variables = _a2.variables, operationName = _a2.operationName, headers = _a2.headers, fetch2 = _a2.fetch, fetchOptions = _a2.fetchOptions, middleware = _a2.middleware; + return __awaiter2(void 0, void 0, void 0, function() { + var body, options; + return __generator2(this, function(_b) { + switch (_b.label) { + case 0: + body = createRequestBody_1.default(query, variables, operationName, fetchOptions.jsonSerializer); + options = __assign({ method: "POST", headers: __assign(__assign({}, typeof body === "string" ? { "Content-Type": "application/json" } : {}), headers), body }, fetchOptions); + if (!middleware) + return [3, 2]; + return [4, Promise.resolve(middleware(options))]; + case 1: + options = _b.sent(); + _b.label = 2; + case 2: + return [4, fetch2(url, options)]; + case 3: + return [2, _b.sent()]; + } + }); + }); + }; + var get2 = function(_a2) { + var url = _a2.url, query = _a2.query, variables = _a2.variables, operationName = _a2.operationName, headers = _a2.headers, fetch2 = _a2.fetch, fetchOptions = _a2.fetchOptions, middleware = _a2.middleware; + return __awaiter2(void 0, void 0, void 0, function() { + var queryParams, options; + return __generator2(this, function(_b) { + switch (_b.label) { + case 0: + queryParams = buildGetQueryParams({ + query, + variables, + operationName, + jsonSerializer: fetchOptions.jsonSerializer + }); + options = __assign({ method: "GET", headers }, fetchOptions); + if (!middleware) + return [3, 2]; + return [4, Promise.resolve(middleware(options))]; + case 1: + options = _b.sent(); + _b.label = 2; + case 2: + return [4, fetch2(url + "?" + queryParams, options)]; + case 3: + return [2, _b.sent()]; + } + }); + }); + }; + var GraphQLClient = function() { + function GraphQLClient2(url, options) { + if (options === void 0) { + options = {}; + } + this.url = url; + this.options = options; + } + GraphQLClient2.prototype.rawRequest = function(queryOrOptions, variables, requestHeaders) { + return __awaiter2(this, void 0, void 0, function() { + var rawRequestOptions, _a2, headers, _b, fetch2, _c, method, requestMiddleware, responseMiddleware, fetchOptions, url, operationName; + return __generator2(this, function(_d) { + rawRequestOptions = parseArgs_1.parseRawRequestArgs(queryOrOptions, variables, requestHeaders); + _a2 = this.options, headers = _a2.headers, _b = _a2.fetch, fetch2 = _b === void 0 ? cross_fetch_1.default : _b, _c = _a2.method, method = _c === void 0 ? "POST" : _c, requestMiddleware = _a2.requestMiddleware, responseMiddleware = _a2.responseMiddleware, fetchOptions = __rest(_a2, ["headers", "fetch", "method", "requestMiddleware", "responseMiddleware"]); + url = this.url; + if (rawRequestOptions.signal !== void 0) { + fetchOptions.signal = rawRequestOptions.signal; + } + operationName = resolveRequestDocument(rawRequestOptions.query).operationName; + return [2, makeRequest({ + url, + query: rawRequestOptions.query, + variables: rawRequestOptions.variables, + headers: __assign(__assign({}, resolveHeaders(callOrIdentity(headers))), resolveHeaders(rawRequestOptions.requestHeaders)), + operationName, + fetch: fetch2, + method, + fetchOptions, + middleware: requestMiddleware + }).then(function(response) { + if (responseMiddleware) { + responseMiddleware(response); + } + return response; + }).catch(function(error) { + if (responseMiddleware) { + responseMiddleware(error); + } + throw error; + })]; + }); + }); + }; + GraphQLClient2.prototype.request = function(documentOrOptions) { + var variablesAndRequestHeaders = []; + for (var _i = 1; _i < arguments.length; _i++) { + variablesAndRequestHeaders[_i - 1] = arguments[_i]; + } + var variables = variablesAndRequestHeaders[0], requestHeaders = variablesAndRequestHeaders[1]; + var requestOptions = parseArgs_1.parseRequestArgs(documentOrOptions, variables, requestHeaders); + var _a2 = this.options, headers = _a2.headers, _b = _a2.fetch, fetch2 = _b === void 0 ? cross_fetch_1.default : _b, _c = _a2.method, method = _c === void 0 ? "POST" : _c, requestMiddleware = _a2.requestMiddleware, responseMiddleware = _a2.responseMiddleware, fetchOptions = __rest(_a2, ["headers", "fetch", "method", "requestMiddleware", "responseMiddleware"]); + var url = this.url; + if (requestOptions.signal !== void 0) { + fetchOptions.signal = requestOptions.signal; + } + var _d = resolveRequestDocument(requestOptions.document), query = _d.query, operationName = _d.operationName; + return makeRequest({ + url, + query, + variables: requestOptions.variables, + headers: __assign(__assign({}, resolveHeaders(callOrIdentity(headers))), resolveHeaders(requestOptions.requestHeaders)), + operationName, + fetch: fetch2, + method, + fetchOptions, + middleware: requestMiddleware + }).then(function(response) { + if (responseMiddleware) { + responseMiddleware(response); + } + return response.data; + }).catch(function(error) { + if (responseMiddleware) { + responseMiddleware(error); + } + throw error; + }); + }; + GraphQLClient2.prototype.batchRequests = function(documentsOrOptions, requestHeaders) { + var batchRequestOptions = parseArgs_1.parseBatchRequestArgs(documentsOrOptions, requestHeaders); + var _a2 = this.options, headers = _a2.headers, _b = _a2.fetch, fetch2 = _b === void 0 ? cross_fetch_1.default : _b, _c = _a2.method, method = _c === void 0 ? "POST" : _c, requestMiddleware = _a2.requestMiddleware, responseMiddleware = _a2.responseMiddleware, fetchOptions = __rest(_a2, ["headers", "fetch", "method", "requestMiddleware", "responseMiddleware"]); + var url = this.url; + if (batchRequestOptions.signal !== void 0) { + fetchOptions.signal = batchRequestOptions.signal; + } + var queries = batchRequestOptions.documents.map(function(_a3) { + var document2 = _a3.document; + return resolveRequestDocument(document2).query; + }); + var variables = batchRequestOptions.documents.map(function(_a3) { + var variables2 = _a3.variables; + return variables2; + }); + return makeRequest({ + url, + query: queries, + variables, + headers: __assign(__assign({}, resolveHeaders(callOrIdentity(headers))), resolveHeaders(batchRequestOptions.requestHeaders)), + operationName: void 0, + fetch: fetch2, + method, + fetchOptions, + middleware: requestMiddleware + }).then(function(response) { + if (responseMiddleware) { + responseMiddleware(response); } + return response.data; + }).catch(function(error) { + if (responseMiddleware) { + responseMiddleware(error); + } + throw error; + }); + }; + GraphQLClient2.prototype.setHeaders = function(headers) { + this.options.headers = headers; + return this; + }; + GraphQLClient2.prototype.setHeader = function(key, value) { + var _a2; + var headers = this.options.headers; + if (headers) { + headers[key] = value; + } else { + this.options.headers = (_a2 = {}, _a2[key] = value, _a2); } + return this; + }; + GraphQLClient2.prototype.setEndpoint = function(value) { + this.url = value; + return this; + }; + return GraphQLClient2; + }(); + exports.GraphQLClient = GraphQLClient; + function makeRequest(_a2) { + var url = _a2.url, query = _a2.query, variables = _a2.variables, headers = _a2.headers, operationName = _a2.operationName, fetch2 = _a2.fetch, _b = _a2.method, method = _b === void 0 ? "POST" : _b, fetchOptions = _a2.fetchOptions, middleware = _a2.middleware; + return __awaiter2(this, void 0, void 0, function() { + var fetcher, isBathchingQuery, response, result, successfullyReceivedData, successfullyPassedErrorPolicy, headers_1, status_1, rest, data, errorResult; + return __generator2(this, function(_c) { + switch (_c.label) { + case 0: + fetcher = method.toUpperCase() === "POST" ? post2 : get2; + isBathchingQuery = Array.isArray(query); + return [4, fetcher({ + url, + query, + variables, + operationName, + headers, + fetch: fetch2, + fetchOptions, + middleware + })]; + case 1: + response = _c.sent(); + return [4, getResult(response, fetchOptions.jsonSerializer)]; + case 2: + result = _c.sent(); + successfullyReceivedData = isBathchingQuery && Array.isArray(result) ? !result.some(function(_a3) { + var data2 = _a3.data; + return !data2; + }) : !!result.data; + successfullyPassedErrorPolicy = !result.errors || fetchOptions.errorPolicy === "all" || fetchOptions.errorPolicy === "ignore"; + if (response.ok && successfullyPassedErrorPolicy && successfullyReceivedData) { + headers_1 = response.headers, status_1 = response.status; + result.errors, rest = __rest(result, ["errors"]); + data = fetchOptions.errorPolicy === "ignore" ? rest : result; + return [2, __assign(__assign({}, isBathchingQuery ? { data } : data), { headers: headers_1, status: status_1 })]; + } else { + errorResult = typeof result === "string" ? { error: result } : result; + throw new types_1.ClientError(__assign(__assign({}, errorResult), { status: response.status, headers: response.headers }), { query, variables }); + } + } + }); + }); + } + function rawRequest(urlOrOptions, query, variables, requestHeaders) { + return __awaiter2(this, void 0, void 0, function() { + var requestOptions, client; + return __generator2(this, function(_a2) { + requestOptions = parseArgs_1.parseRawRequestExtendedArgs(urlOrOptions, query, variables, requestHeaders); + client = new GraphQLClient(requestOptions.url); + return [2, client.rawRequest(__assign({}, requestOptions))]; + }); + }); + } + exports.rawRequest = rawRequest; + function request(urlOrOptions, document2) { + var variablesAndRequestHeaders = []; + for (var _i = 2; _i < arguments.length; _i++) { + variablesAndRequestHeaders[_i - 2] = arguments[_i]; } - index = stack.index; - keys = stack.keys; - edits = stack.edits; - inArray = stack.inArray; - stack = stack.prev; - } else if (parent) { - key = inArray ? index : keys[index]; - node = parent[key]; - if (node === null || node === void 0) { - continue; + return __awaiter2(this, void 0, void 0, function() { + var variables, requestHeaders, requestOptions, client; + return __generator2(this, function(_a2) { + variables = variablesAndRequestHeaders[0], requestHeaders = variablesAndRequestHeaders[1]; + requestOptions = parseArgs_1.parseRequestExtendedArgs(urlOrOptions, document2, variables, requestHeaders); + client = new GraphQLClient(requestOptions.url); + return [2, client.request(__assign({}, requestOptions))]; + }); + }); + } + exports.request = request; + function batchRequests(urlOrOptions, documents, requestHeaders) { + return __awaiter2(this, void 0, void 0, function() { + var requestOptions, client; + return __generator2(this, function(_a2) { + requestOptions = parseArgs_1.parseBatchRequestsExtendedArgs(urlOrOptions, documents, requestHeaders); + client = new GraphQLClient(requestOptions.url); + return [2, client.batchRequests(__assign({}, requestOptions))]; + }); + }); + } + exports.batchRequests = batchRequests; + exports.default = request; + function getResult(response, jsonSerializer) { + if (jsonSerializer === void 0) { + jsonSerializer = defaultJsonSerializer_12.defaultJsonSerializer; } - path.push(key); + return __awaiter2(this, void 0, void 0, function() { + var contentType, _a2, _b; + return __generator2(this, function(_c) { + switch (_c.label) { + case 0: + response.headers.forEach(function(value, key) { + if (key.toLowerCase() === "content-type") { + contentType = value; + } + }); + if (!(contentType && contentType.toLowerCase().startsWith("application/json"))) + return [3, 2]; + _b = (_a2 = jsonSerializer).parse; + return [4, response.text()]; + case 1: + return [2, _b.apply(_a2, [_c.sent()])]; + case 2: + return [2, response.text()]; + } + }); + }); } - let result; - if (!Array.isArray(node)) { - var _enterLeaveMap$get, _enterLeaveMap$get2; - isNode(node) || devAssert(false, `Invalid AST Node: ${inspect(node)}.`); - const visitFn = isLeaving ? (_enterLeaveMap$get = enterLeaveMap.get(node.kind)) === null || _enterLeaveMap$get === void 0 ? void 0 : _enterLeaveMap$get.leave : (_enterLeaveMap$get2 = enterLeaveMap.get(node.kind)) === null || _enterLeaveMap$get2 === void 0 ? void 0 : _enterLeaveMap$get2.enter; - result = visitFn === null || visitFn === void 0 ? void 0 : visitFn.call(visitor, node, key, parent, path, ancestors); - if (result === BREAK) { - break; + function extractOperationName(document2) { + var _a2; + var operationName = void 0; + var operationDefinitions = document2.definitions.filter(function(definition) { + return definition.kind === "OperationDefinition"; + }); + if (operationDefinitions.length === 1) { + operationName = (_a2 = operationDefinitions[0].name) === null || _a2 === void 0 ? void 0 : _a2.value; } - if (result === false) { - if (!isLeaving) { - path.pop(); - continue; - } - } else if (result !== void 0) { - edits.push([key, result]); - if (!isLeaving) { - if (isNode(result)) { - node = result; - } else { - path.pop(); - continue; - } + return operationName; + } + function resolveRequestDocument(document2) { + if (typeof document2 === "string") { + var operationName_1 = void 0; + try { + var parsedDocument = parser_1.parse(document2); + operationName_1 = extractOperationName(parsedDocument); + } catch (err) { } + return { query: document2, operationName: operationName_1 }; } + var operationName = extractOperationName(document2); + return { query: printer_1.print(document2), operationName }; } - if (result === void 0 && isEdited) { - edits.push([key, node]); + exports.resolveRequestDocument = resolveRequestDocument; + function callOrIdentity(value) { + return typeof value === "function" ? value() : value; } - if (isLeaving) { - path.pop(); - } else { - var _node$kind; - stack = { - inArray, - index, - keys, - edits, - prev: stack - }; - inArray = Array.isArray(node); - keys = inArray ? node : (_node$kind = visitorKeys[node.kind]) !== null && _node$kind !== void 0 ? _node$kind : []; - index = -1; - edits = []; - if (parent) { - ancestors.push(parent); + function gql2(chunks) { + var variables = []; + for (var _i = 1; _i < arguments.length; _i++) { + variables[_i - 1] = arguments[_i]; } - parent = node; + return chunks.reduce(function(accumulator, chunk, index) { + return "" + accumulator + chunk + (index in variables ? variables[index] : ""); + }, ""); } - } while (stack !== void 0); - if (edits.length !== 0) { - return edits[edits.length - 1][1]; + exports.gql = gql2; + function HeadersInstanceToPlainObject(headers) { + var o = {}; + headers.forEach(function(v, k) { + o[k] = v; + }); + return o; + } + var graphql_ws_1 = requireGraphqlWs(); + Object.defineProperty(exports, "GraphQLWebSocketClient", { enumerable: true, get: function() { + return graphql_ws_1.GraphQLWebSocketClient; + } }); + })(dist); + return dist; +} +var distExports = requireDist(); +var EnableIfBranded; +(function(EnableIfBranded2) { + EnableIfBranded2[EnableIfBranded2["DisabledPlugin"] = 0] = "DisabledPlugin"; +})(EnableIfBranded || (EnableIfBranded = {})); +function isPluginEnabled(t) { + return t !== EnableIfBranded.DisabledPlugin && t !== null; +} +function enableIf(condition, plugin) { + if (condition) { + return typeof plugin === "function" ? plugin() : plugin; } - return root; + return EnableIfBranded.DisabledPlugin; } -function visitInParallel(visitors) { - const skipping = new Array(visitors.length).fill(null); - const mergedVisitor = /* @__PURE__ */ Object.create(null); - for (const kind of Object.values(Kind)) { - let hasVisitor = false; - const enterList = new Array(visitors.length).fill(void 0); - const leaveList = new Array(visitors.length).fill(void 0); - for (let i = 0; i < visitors.length; ++i) { - const { enter, leave } = getEnterLeaveForKind(visitors[i], kind); - hasVisitor || (hasVisitor = enter != null || leave != null); - enterList[i] = enter; - leaveList[i] = leave; - } - if (!hasVisitor) { - continue; - } - const mergedEnterLeave = { - enter(...args) { - const node = args[0]; - for (let i = 0; i < visitors.length; i++) { - if (skipping[i] === null) { - var _enterList$i; - const result = (_enterList$i = enterList[i]) === null || _enterList$i === void 0 ? void 0 : _enterList$i.apply(visitors[i], args); - if (result === false) { - skipping[i] = node; - } else if (result === BREAK) { - skipping[i] = BREAK; - } else if (result !== void 0) { - return result; - } - } - } - }, - leave(...args) { - const node = args[0]; - for (let i = 0; i < visitors.length; i++) { - if (skipping[i] === null) { - var _leaveList$i; - const result = (_leaveList$i = leaveList[i]) === null || _leaveList$i === void 0 ? void 0 : _leaveList$i.apply(visitors[i], args); - if (result === BREAK) { - skipping[i] = BREAK; - } else if (result !== void 0 && result !== false) { - return result; - } - } else if (skipping[i] === node) { - skipping[i] = null; - } - } - } - }; - mergedVisitor[kind] = mergedEnterLeave; +var versionInfo = Object.freeze({ + major: 16, + minor: 6, + patch: 0, + preReleaseTag: null +}); +function isPromise(value) { + return typeof (value === null || value === void 0 ? void 0 : value.then) === "function"; +} +var MAX_SUGGESTIONS = 5; +function didYouMean(firstArg, secondArg) { + const [subMessage, suggestionsArg] = secondArg ? [firstArg, secondArg] : [void 0, firstArg]; + let message = " Did you mean "; + if (subMessage) { + message += subMessage + " "; } - return mergedVisitor; + const suggestions = suggestionsArg.map((x) => `"${x}"`); + switch (suggestions.length) { + case 0: + return ""; + case 1: + return message + suggestions[0] + "?"; + case 2: + return message + suggestions[0] + " or " + suggestions[1] + "?"; + } + const selected = suggestions.slice(0, MAX_SUGGESTIONS); + const lastItem = selected.pop(); + return message + selected.join(", ") + ", or " + lastItem + "?"; } -function getEnterLeaveForKind(visitor, kind) { - const kindVisitor = visitor[kind]; - if (typeof kindVisitor === "object") { - return kindVisitor; - } else if (typeof kindVisitor === "function") { - return { - enter: kindVisitor, - leave: void 0 - }; +function identityFunc(x) { + return x; +} +function keyMap(list, keyFn) { + const result = /* @__PURE__ */ Object.create(null); + for (const item of list) { + result[keyFn(item)] = item; } - return { - enter: visitor.enter, - leave: visitor.leave - }; + return result; +} +function keyValMap(list, keyFn, valFn) { + const result = /* @__PURE__ */ Object.create(null); + for (const item of list) { + result[keyFn(item)] = valFn(item); + } + return result; +} +function mapValue(map, fn) { + const result = /* @__PURE__ */ Object.create(null); + for (const key of Object.keys(map)) { + result[key] = fn(map[key], key); + } + return result; +} +function naturalCompare(aStr, bStr) { + let aIndex = 0; + let bIndex = 0; + while (aIndex < aStr.length && bIndex < bStr.length) { + let aChar = aStr.charCodeAt(aIndex); + let bChar = bStr.charCodeAt(bIndex); + if (isDigit(aChar) && isDigit(bChar)) { + let aNum = 0; + do { + ++aIndex; + aNum = aNum * 10 + aChar - DIGIT_0; + aChar = aStr.charCodeAt(aIndex); + } while (isDigit(aChar) && aNum > 0); + let bNum = 0; + do { + ++bIndex; + bNum = bNum * 10 + bChar - DIGIT_0; + bChar = bStr.charCodeAt(bIndex); + } while (isDigit(bChar) && bNum > 0); + if (aNum < bNum) { + return -1; + } + if (aNum > bNum) { + return 1; + } + } else { + if (aChar < bChar) { + return -1; + } + if (aChar > bChar) { + return 1; + } + ++aIndex; + ++bIndex; + } + } + return aStr.length - bStr.length; +} +var DIGIT_0 = 48; +var DIGIT_9 = 57; +function isDigit(code) { + return !isNaN(code) && DIGIT_0 <= code && code <= DIGIT_9; } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/printer.mjs -function print(ast) { - return visit(ast, printDocASTReducer); +function suggestionList(input, options) { + const optionsByDistance = /* @__PURE__ */ Object.create(null); + const lexicalDistance = new LexicalDistance(input); + const threshold = Math.floor(input.length * 0.4) + 1; + for (const option of options) { + const distance = lexicalDistance.measure(option, threshold); + if (distance !== void 0) { + optionsByDistance[option] = distance; + } + } + return Object.keys(optionsByDistance).sort((a, b) => { + const distanceDiff = optionsByDistance[a] - optionsByDistance[b]; + return distanceDiff !== 0 ? distanceDiff : naturalCompare(a, b); + }); } -var MAX_LINE_LENGTH = 80; -var printDocASTReducer = { - Name: { - leave: (node) => node.value - }, - Variable: { - leave: (node) => "$" + node.name - }, - Document: { - leave: (node) => join(node.definitions, "\n\n") - }, - OperationDefinition: { - leave(node) { - const varDefs = wrap("(", join(node.variableDefinitions, ", "), ")"); - const prefix2 = join( - [ - node.operation, - join([node.name, varDefs]), - join(node.directives, " ") - ], - " " - ); - return (prefix2 === "query" ? "" : prefix2 + " ") + node.selectionSet; +var LexicalDistance = class { + constructor(input) { + this._input = input; + this._inputLowerCase = input.toLowerCase(); + this._inputArray = stringToArray(this._inputLowerCase); + this._rows = [ + new Array(input.length + 1).fill(0), + new Array(input.length + 1).fill(0), + new Array(input.length + 1).fill(0) + ]; + } + measure(option, threshold) { + if (this._input === option) { + return 0; } - }, - VariableDefinition: { - leave: ({ variable, type, defaultValue, directives }) => variable + ": " + type + wrap(" = ", defaultValue) + wrap(" ", join(directives, " ")) - }, - SelectionSet: { - leave: ({ selections }) => block(selections) - }, - Field: { - leave({ alias, name, arguments: args, directives, selectionSet }) { - const prefix2 = wrap("", alias, ": ") + name; - let argsLine = prefix2 + wrap("(", join(args, ", "), ")"); - if (argsLine.length > MAX_LINE_LENGTH) { - argsLine = prefix2 + wrap("(\n", indent(join(args, "\n")), "\n)"); + const optionLowerCase = option.toLowerCase(); + if (this._inputLowerCase === optionLowerCase) { + return 1; + } + let a = stringToArray(optionLowerCase); + let b = this._inputArray; + if (a.length < b.length) { + const tmp = a; + a = b; + b = tmp; + } + const aLength = a.length; + const bLength = b.length; + if (aLength - bLength > threshold) { + return void 0; + } + const rows = this._rows; + for (let j = 0; j <= bLength; j++) { + rows[0][j] = j; + } + for (let i = 1; i <= aLength; i++) { + const upRow = rows[(i - 1) % 3]; + const currentRow = rows[i % 3]; + let smallestCell = currentRow[0] = i; + for (let j = 1; j <= bLength; j++) { + const cost = a[i - 1] === b[j - 1] ? 0 : 1; + let currentCell = Math.min( + upRow[j] + 1, + currentRow[j - 1] + 1, + upRow[j - 1] + cost + ); + if (i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b[j - 1]) { + const doubleDiagonalCell = rows[(i - 2) % 3][j - 2]; + currentCell = Math.min(currentCell, doubleDiagonalCell + 1); + } + if (currentCell < smallestCell) { + smallestCell = currentCell; + } + currentRow[j] = currentCell; + } + if (smallestCell > threshold) { + return void 0; } - return join([argsLine, join(directives, " "), selectionSet], " "); } - }, - Argument: { - leave: ({ name, value }) => name + ": " + value - }, - FragmentSpread: { - leave: ({ name, directives }) => "..." + name + wrap(" ", join(directives, " ")) - }, - InlineFragment: { - leave: ({ typeCondition, directives, selectionSet }) => join( - [ - "...", - wrap("on ", typeCondition), - join(directives, " "), - selectionSet - ], - " " - ) - }, - FragmentDefinition: { - leave: ({ name, typeCondition, variableDefinitions, directives, selectionSet }) => `fragment ${name}${wrap("(", join(variableDefinitions, ", "), ")")} on ${typeCondition} ${wrap("", join(directives, " "), " ")}` + selectionSet - }, - IntValue: { - leave: ({ value }) => value - }, - FloatValue: { - leave: ({ value }) => value - }, - StringValue: { - leave: ({ value, block: isBlockString }) => isBlockString ? printBlockString(value) : printString(value) - }, - BooleanValue: { - leave: ({ value }) => value ? "true" : "false" - }, - NullValue: { - leave: () => "null" - }, - EnumValue: { - leave: ({ value }) => value - }, - ListValue: { - leave: ({ values }) => "[" + join(values, ", ") + "]" - }, - ObjectValue: { - leave: ({ fields }) => "{" + join(fields, ", ") + "}" - }, - ObjectField: { - leave: ({ name, value }) => name + ": " + value - }, - Directive: { - leave: ({ name, arguments: args }) => "@" + name + wrap("(", join(args, ", "), ")") - }, - NamedType: { - leave: ({ name }) => name - }, - ListType: { - leave: ({ type }) => "[" + type + "]" - }, - NonNullType: { - leave: ({ type }) => type + "!" - }, - SchemaDefinition: { - leave: ({ description, directives, operationTypes }) => wrap("", description, "\n") + join(["schema", join(directives, " "), block(operationTypes)], " ") - }, - OperationTypeDefinition: { - leave: ({ operation, type }) => operation + ": " + type - }, - ScalarTypeDefinition: { - leave: ({ description, name, directives }) => wrap("", description, "\n") + join(["scalar", name, join(directives, " ")], " ") - }, - ObjectTypeDefinition: { - leave: ({ description, name, interfaces, directives, fields }) => wrap("", description, "\n") + join( - [ - "type", - name, - wrap("implements ", join(interfaces, " & ")), - join(directives, " "), - block(fields) - ], - " " - ) - }, - FieldDefinition: { - leave: ({ description, name, arguments: args, type, directives }) => wrap("", description, "\n") + name + (hasMultilineItems(args) ? wrap("(\n", indent(join(args, "\n")), "\n)") : wrap("(", join(args, ", "), ")")) + ": " + type + wrap(" ", join(directives, " ")) - }, - InputValueDefinition: { - leave: ({ description, name, type, defaultValue, directives }) => wrap("", description, "\n") + join( - [name + ": " + type, wrap("= ", defaultValue), join(directives, " ")], - " " - ) - }, - InterfaceTypeDefinition: { - leave: ({ description, name, interfaces, directives, fields }) => wrap("", description, "\n") + join( - [ - "interface", - name, - wrap("implements ", join(interfaces, " & ")), - join(directives, " "), - block(fields) - ], - " " - ) - }, - UnionTypeDefinition: { - leave: ({ description, name, directives, types }) => wrap("", description, "\n") + join( - ["union", name, join(directives, " "), wrap("= ", join(types, " | "))], - " " - ) - }, - EnumTypeDefinition: { - leave: ({ description, name, directives, values }) => wrap("", description, "\n") + join(["enum", name, join(directives, " "), block(values)], " ") - }, - EnumValueDefinition: { - leave: ({ description, name, directives }) => wrap("", description, "\n") + join([name, join(directives, " ")], " ") - }, - InputObjectTypeDefinition: { - leave: ({ description, name, directives, fields }) => wrap("", description, "\n") + join(["input", name, join(directives, " "), block(fields)], " ") - }, - DirectiveDefinition: { - leave: ({ description, name, arguments: args, repeatable, locations }) => wrap("", description, "\n") + "directive @" + name + (hasMultilineItems(args) ? wrap("(\n", indent(join(args, "\n")), "\n)") : wrap("(", join(args, ", "), ")")) + (repeatable ? " repeatable" : "") + " on " + join(locations, " | ") - }, - SchemaExtension: { - leave: ({ directives, operationTypes }) => join( - ["extend schema", join(directives, " "), block(operationTypes)], - " " - ) - }, - ScalarTypeExtension: { - leave: ({ name, directives }) => join(["extend scalar", name, join(directives, " ")], " ") - }, - ObjectTypeExtension: { - leave: ({ name, interfaces, directives, fields }) => join( - [ - "extend type", - name, - wrap("implements ", join(interfaces, " & ")), - join(directives, " "), - block(fields) - ], - " " - ) - }, - InterfaceTypeExtension: { - leave: ({ name, interfaces, directives, fields }) => join( - [ - "extend interface", - name, - wrap("implements ", join(interfaces, " & ")), - join(directives, " "), - block(fields) - ], - " " - ) - }, - UnionTypeExtension: { - leave: ({ name, directives, types }) => join( - [ - "extend union", - name, - join(directives, " "), - wrap("= ", join(types, " | ")) - ], - " " - ) - }, - EnumTypeExtension: { - leave: ({ name, directives, values }) => join(["extend enum", name, join(directives, " "), block(values)], " ") - }, - InputObjectTypeExtension: { - leave: ({ name, directives, fields }) => join(["extend input", name, join(directives, " "), block(fields)], " ") + const distance = rows[aLength % 3][bLength]; + return distance <= threshold ? distance : void 0; } }; -function join(maybeArray, separator = "") { - var _maybeArray$filter$jo; - return (_maybeArray$filter$jo = maybeArray === null || maybeArray === void 0 ? void 0 : maybeArray.filter((x) => x).join(separator)) !== null && _maybeArray$filter$jo !== void 0 ? _maybeArray$filter$jo : ""; -} -function block(array) { - return wrap("{\n", indent(join(array, "\n")), "\n}"); -} -function wrap(start, maybeString, end = "") { - return maybeString != null && maybeString !== "" ? start + maybeString + end : ""; -} -function indent(str) { - return wrap(" ", str.replace(/\n/g, "\n ")); +function stringToArray(str) { + const strLength = str.length; + const array = new Array(strLength); + for (let i = 0; i < strLength; ++i) { + array[i] = str.charCodeAt(i); + } + return array; } -function hasMultilineItems(maybeArray) { - var _maybeArray$some; - return (_maybeArray$some = maybeArray === null || maybeArray === void 0 ? void 0 : maybeArray.some((str) => str.includes("\n"))) !== null && _maybeArray$some !== void 0 ? _maybeArray$some : false; +function toObjMap(obj) { + if (obj == null) { + return /* @__PURE__ */ Object.create(null); + } + if (Object.getPrototypeOf(obj) === null) { + return obj; + } + const map = /* @__PURE__ */ Object.create(null); + for (const [key, value] of Object.entries(obj)) { + map[key] = value; + } + return map; } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/utilities/valueFromASTUntyped.mjs function valueFromASTUntyped(valueNode, variables) { switch (valueNode.kind) { case Kind.NULL: @@ -9867,8 +5986,6 @@ function valueFromASTUntyped(valueNode, variables) { return variables === null || variables === void 0 ? void 0 : variables[valueNode.name.value]; } } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/type/assertName.mjs function assertName(name) { name != null || devAssert(false, "Must provide name."); typeof name === "string" || devAssert(false, "Expected name to be a string."); @@ -9895,8 +6012,6 @@ function assertEnumValueName(name) { } return assertName(name); } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/type/definition.mjs function isType(type) { return isScalarType(type) || isObjectType(type) || isInterfaceType(type) || isUnionType(type) || isEnumType(type) || isInputObjectType(type) || isListType(type) || isNonNullType(type); } @@ -9941,7 +6056,7 @@ function isAbstractType(type) { } var GraphQLList = class { constructor(ofType) { - isType(ofType) || devAssert(false, `Expected ${inspect(ofType)} to be a GraphQL type.`); + isType(ofType) || devAssert(false, `Expected ${inspect$1(ofType)} to be a GraphQL type.`); this.ofType = ofType; } get [Symbol.toStringTag]() { @@ -9958,7 +6073,7 @@ var GraphQLNonNull = class { constructor(ofType) { isNullableType(ofType) || devAssert( false, - `Expected ${inspect(ofType)} to be a GraphQL nullable type.` + `Expected ${inspect$1(ofType)} to be a GraphQL nullable type.` ); this.ofType = ofType; } @@ -10016,7 +6131,7 @@ var GraphQLScalarType = class { this.extensionASTNodes = (_config$extensionASTN = config.extensionASTNodes) !== null && _config$extensionASTN !== void 0 ? _config$extensionASTN : []; config.specifiedByURL == null || typeof config.specifiedByURL === "string" || devAssert( false, - `${this.name} must provide "specifiedByURL" as a string, but got: ${inspect(config.specifiedByURL)}.` + `${this.name} must provide "specifiedByURL" as a string, but got: ${inspect$1(config.specifiedByURL)}.` ); config.serialize == null || typeof config.serialize === "function" || devAssert( false, @@ -10065,7 +6180,7 @@ var GraphQLObjectType = class { this._interfaces = () => defineInterfaces(config); config.isTypeOf == null || typeof config.isTypeOf === "function" || devAssert( false, - `${this.name} must provide "isTypeOf" as a function, but got: ${inspect(config.isTypeOf)}.` + `${this.name} must provide "isTypeOf" as a function, but got: ${inspect$1(config.isTypeOf)}.` ); } get [Symbol.toStringTag]() { @@ -10127,7 +6242,7 @@ function defineFieldMap(config) { ); fieldConfig.resolve == null || typeof fieldConfig.resolve === "function" || devAssert( false, - `${config.name}.${fieldName} field resolver must be a function if provided, but got: ${inspect(fieldConfig.resolve)}.` + `${config.name}.${fieldName} field resolver must be a function if provided, but got: ${inspect$1(fieldConfig.resolve)}.` ); const argsConfig = (_fieldConfig$args = fieldConfig.args) !== null && _fieldConfig$args !== void 0 ? _fieldConfig$args : {}; isPlainObj(argsConfig) || devAssert( @@ -10203,7 +6318,7 @@ var GraphQLInterfaceType = class { this._interfaces = defineInterfaces.bind(void 0, config); config.resolveType == null || typeof config.resolveType === "function" || devAssert( false, - `${this.name} must provide "resolveType" as a function, but got: ${inspect(config.resolveType)}.` + `${this.name} must provide "resolveType" as a function, but got: ${inspect$1(config.resolveType)}.` ); } get [Symbol.toStringTag]() { @@ -10252,7 +6367,7 @@ var GraphQLUnionType = class { this._types = defineTypes.bind(void 0, config); config.resolveType == null || typeof config.resolveType === "function" || devAssert( false, - `${this.name} must provide "resolveType" as a function, but got: ${inspect(config.resolveType)}.` + `${this.name} must provide "resolveType" as a function, but got: ${inspect$1(config.resolveType)}.` ); } get [Symbol.toStringTag]() { @@ -10283,12 +6398,12 @@ var GraphQLUnionType = class { } }; function defineTypes(config) { - const types = resolveReadonlyArrayThunk(config.types); - Array.isArray(types) || devAssert( + const types2 = resolveReadonlyArrayThunk(config.types); + Array.isArray(types2) || devAssert( false, `Must provide Array of types or a function which returns such an array for Union ${config.name}.` ); - return types; + return types2; } var GraphQLEnumType = class { constructor(config) { @@ -10317,14 +6432,14 @@ var GraphQLEnumType = class { const enumValue = this._valueLookup.get(outputValue); if (enumValue === void 0) { throw new GraphQLError( - `Enum "${this.name}" cannot represent value: ${inspect(outputValue)}` + `Enum "${this.name}" cannot represent value: ${inspect$1(outputValue)}` ); } return enumValue.name; } parseValue(inputValue) { if (typeof inputValue !== "string") { - const valueStr = inspect(inputValue); + const valueStr = inspect$1(inputValue); throw new GraphQLError( `Enum "${this.name}" cannot represent non-string value: ${valueStr}.` + didYouMeanEnumValue(this, valueStr) ); @@ -10400,7 +6515,7 @@ function defineEnumValues(typeName, valueMap) { return Object.entries(valueMap).map(([valueName, valueConfig]) => { isPlainObj(valueConfig) || devAssert( false, - `${typeName}.${valueName} must refer to an object with a "value" key representing an internal value but got: ${inspect(valueConfig)}.` + `${typeName}.${valueName} must refer to an object with a "value" key representing an internal value but got: ${inspect$1(valueConfig)}.` ); return { name: assertEnumValueName(valueName), @@ -10481,8 +6596,6 @@ function defineInputFieldMap(config) { function isRequiredInputField(field) { return isNonNullType(field.type) && field.defaultValue === void 0; } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/utilities/typeComparators.mjs function isEqualType(typeA, typeB) { if (typeA === typeB) { return true; @@ -10534,8 +6647,6 @@ function doTypesOverlap(schema, typeA, typeB) { } return false; } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/type/scalars.mjs var GRAPHQL_MAX_INT = 2147483647; var GRAPHQL_MIN_INT = -2147483648; var GraphQLInt = new GraphQLScalarType({ @@ -10552,12 +6663,12 @@ var GraphQLInt = new GraphQLScalarType({ } if (typeof num !== "number" || !Number.isInteger(num)) { throw new GraphQLError( - `Int cannot represent non-integer value: ${inspect(coercedValue)}` + `Int cannot represent non-integer value: ${inspect$1(coercedValue)}` ); } if (num > GRAPHQL_MAX_INT || num < GRAPHQL_MIN_INT) { throw new GraphQLError( - "Int cannot represent non 32-bit signed integer value: " + inspect(coercedValue) + "Int cannot represent non 32-bit signed integer value: " + inspect$1(coercedValue) ); } return num; @@ -10565,7 +6676,7 @@ var GraphQLInt = new GraphQLScalarType({ parseValue(inputValue) { if (typeof inputValue !== "number" || !Number.isInteger(inputValue)) { throw new GraphQLError( - `Int cannot represent non-integer value: ${inspect(inputValue)}` + `Int cannot represent non-integer value: ${inspect$1(inputValue)}` ); } if (inputValue > GRAPHQL_MAX_INT || inputValue < GRAPHQL_MIN_INT) { @@ -10610,7 +6721,7 @@ var GraphQLFloat = new GraphQLScalarType({ } if (typeof num !== "number" || !Number.isFinite(num)) { throw new GraphQLError( - `Float cannot represent non numeric value: ${inspect(coercedValue)}` + `Float cannot represent non numeric value: ${inspect$1(coercedValue)}` ); } return num; @@ -10618,7 +6729,7 @@ var GraphQLFloat = new GraphQLScalarType({ parseValue(inputValue) { if (typeof inputValue !== "number" || !Number.isFinite(inputValue)) { throw new GraphQLError( - `Float cannot represent non numeric value: ${inspect(inputValue)}` + `Float cannot represent non numeric value: ${inspect$1(inputValue)}` ); } return inputValue; @@ -10648,13 +6759,13 @@ var GraphQLString = new GraphQLScalarType({ return coercedValue.toString(); } throw new GraphQLError( - `String cannot represent value: ${inspect(outputValue)}` + `String cannot represent value: ${inspect$1(outputValue)}` ); }, parseValue(inputValue) { if (typeof inputValue !== "string") { throw new GraphQLError( - `String cannot represent a non string value: ${inspect(inputValue)}` + `String cannot represent a non string value: ${inspect$1(inputValue)}` ); } return inputValue; @@ -10683,13 +6794,13 @@ var GraphQLBoolean = new GraphQLScalarType({ return coercedValue !== 0; } throw new GraphQLError( - `Boolean cannot represent a non boolean value: ${inspect(coercedValue)}` + `Boolean cannot represent a non boolean value: ${inspect$1(coercedValue)}` ); }, parseValue(inputValue) { if (typeof inputValue !== "boolean") { throw new GraphQLError( - `Boolean cannot represent a non boolean value: ${inspect(inputValue)}` + `Boolean cannot represent a non boolean value: ${inspect$1(inputValue)}` ); } return inputValue; @@ -10718,7 +6829,7 @@ var GraphQLID = new GraphQLScalarType({ return String(coercedValue); } throw new GraphQLError( - `ID cannot represent value: ${inspect(outputValue)}` + `ID cannot represent value: ${inspect$1(outputValue)}` ); }, parseValue(inputValue) { @@ -10728,7 +6839,7 @@ var GraphQLID = new GraphQLScalarType({ if (typeof inputValue === "number" && Number.isInteger(inputValue)) { return inputValue.toString(); } - throw new GraphQLError(`ID cannot represent value: ${inspect(inputValue)}`); + throw new GraphQLError(`ID cannot represent value: ${inspect$1(inputValue)}`); }, parseLiteral(valueNode) { if (valueNode.kind !== Kind.STRING && valueNode.kind !== Kind.INT) { @@ -10766,8 +6877,6 @@ function serializeObject(outputValue) { } return outputValue; } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/type/directives.mjs function isDirective(directive) { return instanceOf(directive, GraphQLDirective); } @@ -10813,9 +6922,9 @@ var GraphQLIncludeDirective = new GraphQLDirective({ name: "include", description: "Directs the executor to include this field or fragment only when the `if` argument is true.", locations: [ - DirectiveLocation.FIELD, - DirectiveLocation.FRAGMENT_SPREAD, - DirectiveLocation.INLINE_FRAGMENT + DirectiveLocation$1.FIELD, + DirectiveLocation$1.FRAGMENT_SPREAD, + DirectiveLocation$1.INLINE_FRAGMENT ], args: { if: { @@ -10828,9 +6937,9 @@ var GraphQLSkipDirective = new GraphQLDirective({ name: "skip", description: "Directs the executor to skip this field or fragment when the `if` argument is true.", locations: [ - DirectiveLocation.FIELD, - DirectiveLocation.FRAGMENT_SPREAD, - DirectiveLocation.INLINE_FRAGMENT + DirectiveLocation$1.FIELD, + DirectiveLocation$1.FRAGMENT_SPREAD, + DirectiveLocation$1.INLINE_FRAGMENT ], args: { if: { @@ -10844,10 +6953,10 @@ var GraphQLDeprecatedDirective = new GraphQLDirective({ name: "deprecated", description: "Marks an element of a GraphQL schema as no longer supported.", locations: [ - DirectiveLocation.FIELD_DEFINITION, - DirectiveLocation.ARGUMENT_DEFINITION, - DirectiveLocation.INPUT_FIELD_DEFINITION, - DirectiveLocation.ENUM_VALUE + DirectiveLocation$1.FIELD_DEFINITION, + DirectiveLocation$1.ARGUMENT_DEFINITION, + DirectiveLocation$1.INPUT_FIELD_DEFINITION, + DirectiveLocation$1.ENUM_VALUE ], args: { reason: { @@ -10860,7 +6969,7 @@ var GraphQLDeprecatedDirective = new GraphQLDirective({ var GraphQLSpecifiedByDirective = new GraphQLDirective({ name: "specifiedBy", description: "Exposes a URL that specifies the behavior of this scalar.", - locations: [DirectiveLocation.SCALAR], + locations: [DirectiveLocation$1.SCALAR], args: { url: { type: new GraphQLNonNull(GraphQLString), @@ -10877,13 +6986,9 @@ var specifiedDirectives = Object.freeze([ function isSpecifiedDirective(directive) { return specifiedDirectives.some(({ name }) => name === directive.name); } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/jsutils/isIterableObject.mjs function isIterableObject(maybeIterable) { return typeof maybeIterable === "object" && typeof (maybeIterable === null || maybeIterable === void 0 ? void 0 : maybeIterable[Symbol.iterator]) === "function"; } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/utilities/astFromValue.mjs function astFromValue(value, type) { if (isNonNullType(type)) { const astValue = astFromValue(value, type.ofType); @@ -10953,7 +7058,7 @@ function astFromValue(value, type) { } if (typeof serialized === "number" && Number.isFinite(serialized)) { const stringNum = String(serialized); - return integerStringRegExp.test(stringNum) ? { + return integerStringRegExp$1.test(stringNum) ? { kind: Kind.INT, value: stringNum } : { @@ -10968,7 +7073,7 @@ function astFromValue(value, type) { value: serialized }; } - if (type === GraphQLID && integerStringRegExp.test(serialized)) { + if (type === GraphQLID && integerStringRegExp$1.test(serialized)) { return { kind: Kind.INT, value: serialized @@ -10979,13 +7084,11 @@ function astFromValue(value, type) { value: serialized }; } - throw new TypeError(`Cannot convert value to AST: ${inspect(serialized)}.`); + throw new TypeError(`Cannot convert value to AST: ${inspect$1(serialized)}.`); } - invariant(false, "Unexpected input type: " + inspect(type)); + invariant$1(false, "Unexpected input type: " + inspect$1(type)); } -var integerStringRegExp = /^-?(?:0|[1-9][0-9]*)$/; - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/type/introspection.mjs +var integerStringRegExp$1 = /^-?(?:0|[1-9][0-9]*)$/; var __Schema = new GraphQLObjectType({ name: "__Schema", description: "A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, as well as the entry points for query, mutation, and subscription operations.", @@ -11068,79 +7171,79 @@ var __DirectiveLocation = new GraphQLEnumType({ description: "A Directive can be adjacent to many parts of the GraphQL language, a __DirectiveLocation describes one such possible adjacencies.", values: { QUERY: { - value: DirectiveLocation.QUERY, + value: DirectiveLocation$1.QUERY, description: "Location adjacent to a query operation." }, MUTATION: { - value: DirectiveLocation.MUTATION, + value: DirectiveLocation$1.MUTATION, description: "Location adjacent to a mutation operation." }, SUBSCRIPTION: { - value: DirectiveLocation.SUBSCRIPTION, + value: DirectiveLocation$1.SUBSCRIPTION, description: "Location adjacent to a subscription operation." }, FIELD: { - value: DirectiveLocation.FIELD, + value: DirectiveLocation$1.FIELD, description: "Location adjacent to a field." }, FRAGMENT_DEFINITION: { - value: DirectiveLocation.FRAGMENT_DEFINITION, + value: DirectiveLocation$1.FRAGMENT_DEFINITION, description: "Location adjacent to a fragment definition." }, FRAGMENT_SPREAD: { - value: DirectiveLocation.FRAGMENT_SPREAD, + value: DirectiveLocation$1.FRAGMENT_SPREAD, description: "Location adjacent to a fragment spread." }, INLINE_FRAGMENT: { - value: DirectiveLocation.INLINE_FRAGMENT, + value: DirectiveLocation$1.INLINE_FRAGMENT, description: "Location adjacent to an inline fragment." }, VARIABLE_DEFINITION: { - value: DirectiveLocation.VARIABLE_DEFINITION, + value: DirectiveLocation$1.VARIABLE_DEFINITION, description: "Location adjacent to a variable definition." }, SCHEMA: { - value: DirectiveLocation.SCHEMA, + value: DirectiveLocation$1.SCHEMA, description: "Location adjacent to a schema definition." }, SCALAR: { - value: DirectiveLocation.SCALAR, + value: DirectiveLocation$1.SCALAR, description: "Location adjacent to a scalar definition." }, OBJECT: { - value: DirectiveLocation.OBJECT, + value: DirectiveLocation$1.OBJECT, description: "Location adjacent to an object type definition." }, FIELD_DEFINITION: { - value: DirectiveLocation.FIELD_DEFINITION, + value: DirectiveLocation$1.FIELD_DEFINITION, description: "Location adjacent to a field definition." }, ARGUMENT_DEFINITION: { - value: DirectiveLocation.ARGUMENT_DEFINITION, + value: DirectiveLocation$1.ARGUMENT_DEFINITION, description: "Location adjacent to an argument definition." }, INTERFACE: { - value: DirectiveLocation.INTERFACE, + value: DirectiveLocation$1.INTERFACE, description: "Location adjacent to an interface definition." }, UNION: { - value: DirectiveLocation.UNION, + value: DirectiveLocation$1.UNION, description: "Location adjacent to a union definition." }, ENUM: { - value: DirectiveLocation.ENUM, + value: DirectiveLocation$1.ENUM, description: "Location adjacent to an enum definition." }, ENUM_VALUE: { - value: DirectiveLocation.ENUM_VALUE, + value: DirectiveLocation$1.ENUM_VALUE, description: "Location adjacent to an enum value definition." }, INPUT_OBJECT: { - value: DirectiveLocation.INPUT_OBJECT, + value: DirectiveLocation$1.INPUT_OBJECT, description: "Location adjacent to an input object type definition." }, INPUT_FIELD_DEFINITION: { - value: DirectiveLocation.INPUT_FIELD_DEFINITION, + value: DirectiveLocation$1.INPUT_FIELD_DEFINITION, description: "Location adjacent to an input object field definition." } } @@ -11176,7 +7279,7 @@ var __Type = new GraphQLObjectType({ if (isNonNullType(type)) { return TypeKind.NON_NULL; } - invariant(false, `Unexpected type: "${inspect(type)}".`); + invariant$1(false, `Unexpected type: "${inspect$1(type)}".`); } }, name: { @@ -11457,14 +7560,12 @@ var introspectionTypes = Object.freeze([ function isIntrospectionType(type) { return introspectionTypes.some(({ name }) => type.name === name); } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/type/schema.mjs function isSchema(schema) { return instanceOf(schema, GraphQLSchema); } function assertSchema(schema) { if (!isSchema(schema)) { - throw new Error(`Expected ${inspect(schema)} to be a GraphQL schema.`); + throw new Error(`Expected ${inspect$1(schema)} to be a GraphQL schema.`); } return schema; } @@ -11475,11 +7576,11 @@ var GraphQLSchema = class { isObjectLike(config) || devAssert(false, "Must provide configuration object."); !config.types || Array.isArray(config.types) || devAssert( false, - `"types" must be Array if provided but got: ${inspect(config.types)}.` + `"types" must be Array if provided but got: ${inspect$1(config.types)}.` ); !config.directives || Array.isArray(config.directives) || devAssert( false, - `"directives" must be Array if provided but got: ${inspect(config.directives)}.` + `"directives" must be Array if provided but got: ${inspect$1(config.directives)}.` ); this.description = config.description; this.extensions = toObjMap(config.extensions); @@ -11599,25 +7700,25 @@ var GraphQLSchema = class { }; } isSubType(abstractType, maybeSubType) { - let map2 = this._subTypeMap[abstractType.name]; - if (map2 === void 0) { - map2 = /* @__PURE__ */ Object.create(null); + let map = this._subTypeMap[abstractType.name]; + if (map === void 0) { + map = /* @__PURE__ */ Object.create(null); if (isUnionType(abstractType)) { for (const type of abstractType.getTypes()) { - map2[type.name] = true; + map[type.name] = true; } } else { const implementations = this.getImplementations(abstractType); for (const type of implementations.objects) { - map2[type.name] = true; + map[type.name] = true; } for (const type of implementations.interfaces) { - map2[type.name] = true; + map[type.name] = true; } } - this._subTypeMap[abstractType.name] = map2; + this._subTypeMap[abstractType.name] = map; } - return map2[maybeSubType.name] !== void 0; + return map[maybeSubType.name] !== void 0; } getDirectives() { return this._directives; @@ -11666,8 +7767,6 @@ function collectReferencedTypes(type, typeSet) { } return typeSet; } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/type/validate.mjs function validateSchema(schema) { assertSchema(schema); if (schema.__validationErrors) { @@ -11712,7 +7811,7 @@ function validateRootTypes(context) { } else if (!isObjectType(queryType)) { var _getOperationTypeNode; context.reportError( - `Query root type must be Object type, it cannot be ${inspect( + `Query root type must be Object type, it cannot be ${inspect$1( queryType )}.`, (_getOperationTypeNode = getOperationTypeNode( @@ -11725,7 +7824,7 @@ function validateRootTypes(context) { if (mutationType && !isObjectType(mutationType)) { var _getOperationTypeNode2; context.reportError( - `Mutation root type must be Object type if provided, it cannot be ${inspect(mutationType)}.`, + `Mutation root type must be Object type if provided, it cannot be ${inspect$1(mutationType)}.`, (_getOperationTypeNode2 = getOperationTypeNode( schema, OperationTypeNode.MUTATION @@ -11736,7 +7835,7 @@ function validateRootTypes(context) { if (subscriptionType && !isObjectType(subscriptionType)) { var _getOperationTypeNode3; context.reportError( - `Subscription root type must be Object type if provided, it cannot be ${inspect(subscriptionType)}.`, + `Subscription root type must be Object type if provided, it cannot be ${inspect$1(subscriptionType)}.`, (_getOperationTypeNode3 = getOperationTypeNode( schema, OperationTypeNode.SUBSCRIPTION @@ -11757,7 +7856,7 @@ function validateDirectives(context) { for (const directive of context.schema.getDirectives()) { if (!isDirective(directive)) { context.reportError( - `Expected directive but got: ${inspect(directive)}.`, + `Expected directive but got: ${inspect$1(directive)}.`, directive === null || directive === void 0 ? void 0 : directive.astNode ); continue; @@ -11767,7 +7866,7 @@ function validateDirectives(context) { validateName(context, arg); if (!isInputType(arg.type)) { context.reportError( - `The type of @${directive.name}(${arg.name}:) must be Input Type but got: ${inspect(arg.type)}.`, + `The type of @${directive.name}(${arg.name}:) must be Input Type but got: ${inspect$1(arg.type)}.`, arg.astNode ); } @@ -11798,7 +7897,7 @@ function validateTypes(context) { for (const type of Object.values(typeMap)) { if (!isNamedType(type)) { context.reportError( - `Expected GraphQL named type but got: ${inspect(type)}.`, + `Expected GraphQL named type but got: ${inspect$1(type)}.`, type.astNode ); continue; @@ -11835,7 +7934,7 @@ function validateFields(context, type) { if (!isOutputType(field.type)) { var _field$astNode; context.reportError( - `The type of ${type.name}.${field.name} must be Output Type but got: ${inspect(field.type)}.`, + `The type of ${type.name}.${field.name} must be Output Type but got: ${inspect$1(field.type)}.`, (_field$astNode = field.astNode) === null || _field$astNode === void 0 ? void 0 : _field$astNode.type ); } @@ -11845,7 +7944,7 @@ function validateFields(context, type) { if (!isInputType(arg.type)) { var _arg$astNode2; context.reportError( - `The type of ${type.name}.${field.name}(${argName}:) must be Input Type but got: ${inspect(arg.type)}.`, + `The type of ${type.name}.${field.name}(${argName}:) must be Input Type but got: ${inspect$1(arg.type)}.`, (_arg$astNode2 = arg.astNode) === null || _arg$astNode2 === void 0 ? void 0 : _arg$astNode2.type ); } @@ -11867,7 +7966,7 @@ function validateInterfaces(context, type) { for (const iface of type.getInterfaces()) { if (!isInterfaceType(iface)) { context.reportError( - `Type ${inspect(type)} must only implement Interface types, it cannot implement ${inspect(iface)}.`, + `Type ${inspect$1(type)} must only implement Interface types, it cannot implement ${inspect$1(iface)}.`, getAllImplementsInterfaceNodes(type, iface) ); continue; @@ -11906,7 +8005,7 @@ function validateTypeImplementsInterface(context, type, iface) { if (!isTypeSubTypeOf(context.schema, typeField.type, ifaceField.type)) { var _ifaceField$astNode, _typeField$astNode; context.reportError( - `Interface field ${iface.name}.${fieldName} expects type ${inspect(ifaceField.type)} but ${type.name}.${fieldName} is type ${inspect(typeField.type)}.`, + `Interface field ${iface.name}.${fieldName} expects type ${inspect$1(ifaceField.type)} but ${type.name}.${fieldName} is type ${inspect$1(typeField.type)}.`, [ (_ifaceField$astNode = ifaceField.astNode) === null || _ifaceField$astNode === void 0 ? void 0 : _ifaceField$astNode.type, (_typeField$astNode = typeField.astNode) === null || _typeField$astNode === void 0 ? void 0 : _typeField$astNode.type @@ -11926,7 +8025,7 @@ function validateTypeImplementsInterface(context, type, iface) { if (!isEqualType(ifaceArg.type, typeArg.type)) { var _ifaceArg$astNode, _typeArg$astNode; context.reportError( - `Interface field argument ${iface.name}.${fieldName}(${argName}:) expects type ${inspect(ifaceArg.type)} but ${type.name}.${fieldName}(${argName}:) is type ${inspect(typeArg.type)}.`, + `Interface field argument ${iface.name}.${fieldName}(${argName}:) expects type ${inspect$1(ifaceArg.type)} but ${type.name}.${fieldName}(${argName}:) is type ${inspect$1(typeArg.type)}.`, [ (_ifaceArg$astNode = ifaceArg.astNode) === null || _ifaceArg$astNode === void 0 ? void 0 : _ifaceArg$astNode.type, (_typeArg$astNode = typeArg.astNode) === null || _typeArg$astNode === void 0 ? void 0 : _typeArg$astNode.type @@ -11980,7 +8079,7 @@ function validateUnionMembers(context, union) { includedTypeNames[memberType.name] = true; if (!isObjectType(memberType)) { context.reportError( - `Union type ${union.name} can only include Object types, it cannot include ${inspect(memberType)}.`, + `Union type ${union.name} can only include Object types, it cannot include ${inspect$1(memberType)}.`, getUnionMemberTypeNodes(union, String(memberType)) ); } @@ -12011,7 +8110,7 @@ function validateInputFields(context, inputObj) { if (!isInputType(field.type)) { var _field$astNode2; context.reportError( - `The type of ${inputObj.name}.${field.name} must be Input Type but got: ${inspect(field.type)}.`, + `The type of ${inputObj.name}.${field.name} must be Input Type but got: ${inspect$1(field.type)}.`, (_field$astNode2 = field.astNode) === null || _field$astNode2 === void 0 ? void 0 : _field$astNode2.type ); } @@ -12082,8 +8181,6 @@ function getDeprecatedDirectiveNode(definitionNode) { (node) => node.name.value === GraphQLDeprecatedDirective.name ); } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/utilities/typeFromAST.mjs function typeFromAST(schema, typeNode) { switch (typeNode.kind) { case Kind.LIST_TYPE: { @@ -12098,8 +8195,6 @@ function typeFromAST(schema, typeNode) { return schema.getType(typeNode.name.value); } } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/utilities/TypeInfo.mjs var TypeInfo = class { constructor(schema, initialType, getFieldDefFn) { this._schema = schema; @@ -12111,7 +8206,7 @@ var TypeInfo = class { this._directive = null; this._argument = null; this._enumValue = null; - this._getFieldDef = getFieldDefFn !== null && getFieldDefFn !== void 0 ? getFieldDefFn : getFieldDef; + this._getFieldDef = getFieldDefFn !== null && getFieldDefFn !== void 0 ? getFieldDefFn : getFieldDef$1; if (initialType) { if (isInputType(initialType)) { this._inputTypeStack.push(initialType); @@ -12264,7 +8359,6 @@ var TypeInfo = class { this._enumValue = enumValue; break; } - default: } } leave(node) { @@ -12300,11 +8394,10 @@ var TypeInfo = class { case Kind.ENUM: this._enumValue = null; break; - default: } } }; -function getFieldDef(schema, parentType, fieldNode) { +function getFieldDef$1(schema, parentType, fieldNode) { const name = fieldNode.name.value; if (name === SchemaMetaFieldDef.name && schema.getQueryType() === parentType) { return SchemaMetaFieldDef; @@ -12348,8 +8441,6 @@ function visitWithTypeInfo(typeInfo, visitor) { } }; } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/predicates.mjs function isDefinitionNode(node) { return isExecutableDefinitionNode(node) || isTypeSystemDefinitionNode(node) || isTypeSystemExtensionNode(node); } @@ -12368,8 +8459,6 @@ function isTypeSystemExtensionNode(node) { function isTypeExtensionNode(node) { return node.kind === Kind.SCALAR_TYPE_EXTENSION || node.kind === Kind.OBJECT_TYPE_EXTENSION || node.kind === Kind.INTERFACE_TYPE_EXTENSION || node.kind === Kind.UNION_TYPE_EXTENSION || node.kind === Kind.ENUM_TYPE_EXTENSION || node.kind === Kind.INPUT_OBJECT_TYPE_EXTENSION; } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/validation/rules/ExecutableDefinitionsRule.mjs function ExecutableDefinitionsRule(context) { return { Document(node) { @@ -12387,8 +8476,6 @@ function ExecutableDefinitionsRule(context) { } }; } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/validation/rules/FieldsOnCorrectTypeRule.mjs function FieldsOnCorrectTypeRule(context) { return { Field(node) { @@ -12460,8 +8547,6 @@ function getSuggestedFieldNames(type, fieldName) { } return []; } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/validation/rules/FragmentsOnCompositeTypesRule.mjs function FragmentsOnCompositeTypesRule(context) { return { InlineFragment(node) { @@ -12497,8 +8582,6 @@ function FragmentsOnCompositeTypesRule(context) { } }; } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/validation/rules/KnownArgumentNamesRule.mjs function KnownArgumentNamesRule(context) { return { ...KnownArgumentNamesOnDirectivesRule(context), @@ -12561,8 +8644,6 @@ function KnownArgumentNamesOnDirectivesRule(context) { } }; } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/validation/rules/KnownDirectivesRule.mjs function KnownDirectivesRule(context) { const locationsMap = /* @__PURE__ */ Object.create(null); const schema = context.getSchema(); @@ -12604,66 +8685,64 @@ function KnownDirectivesRule(context) { } function getDirectiveLocationForASTPath(ancestors) { const appliedTo = ancestors[ancestors.length - 1]; - "kind" in appliedTo || invariant(false); + "kind" in appliedTo || invariant$1(false); switch (appliedTo.kind) { case Kind.OPERATION_DEFINITION: return getDirectiveLocationForOperation(appliedTo.operation); case Kind.FIELD: - return DirectiveLocation.FIELD; + return DirectiveLocation$1.FIELD; case Kind.FRAGMENT_SPREAD: - return DirectiveLocation.FRAGMENT_SPREAD; + return DirectiveLocation$1.FRAGMENT_SPREAD; case Kind.INLINE_FRAGMENT: - return DirectiveLocation.INLINE_FRAGMENT; + return DirectiveLocation$1.INLINE_FRAGMENT; case Kind.FRAGMENT_DEFINITION: - return DirectiveLocation.FRAGMENT_DEFINITION; + return DirectiveLocation$1.FRAGMENT_DEFINITION; case Kind.VARIABLE_DEFINITION: - return DirectiveLocation.VARIABLE_DEFINITION; + return DirectiveLocation$1.VARIABLE_DEFINITION; case Kind.SCHEMA_DEFINITION: case Kind.SCHEMA_EXTENSION: - return DirectiveLocation.SCHEMA; + return DirectiveLocation$1.SCHEMA; case Kind.SCALAR_TYPE_DEFINITION: case Kind.SCALAR_TYPE_EXTENSION: - return DirectiveLocation.SCALAR; + return DirectiveLocation$1.SCALAR; case Kind.OBJECT_TYPE_DEFINITION: case Kind.OBJECT_TYPE_EXTENSION: - return DirectiveLocation.OBJECT; + return DirectiveLocation$1.OBJECT; case Kind.FIELD_DEFINITION: - return DirectiveLocation.FIELD_DEFINITION; + return DirectiveLocation$1.FIELD_DEFINITION; case Kind.INTERFACE_TYPE_DEFINITION: case Kind.INTERFACE_TYPE_EXTENSION: - return DirectiveLocation.INTERFACE; + return DirectiveLocation$1.INTERFACE; case Kind.UNION_TYPE_DEFINITION: case Kind.UNION_TYPE_EXTENSION: - return DirectiveLocation.UNION; + return DirectiveLocation$1.UNION; case Kind.ENUM_TYPE_DEFINITION: case Kind.ENUM_TYPE_EXTENSION: - return DirectiveLocation.ENUM; + return DirectiveLocation$1.ENUM; case Kind.ENUM_VALUE_DEFINITION: - return DirectiveLocation.ENUM_VALUE; + return DirectiveLocation$1.ENUM_VALUE; case Kind.INPUT_OBJECT_TYPE_DEFINITION: case Kind.INPUT_OBJECT_TYPE_EXTENSION: - return DirectiveLocation.INPUT_OBJECT; + return DirectiveLocation$1.INPUT_OBJECT; case Kind.INPUT_VALUE_DEFINITION: { const parentNode = ancestors[ancestors.length - 3]; - "kind" in parentNode || invariant(false); - return parentNode.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION ? DirectiveLocation.INPUT_FIELD_DEFINITION : DirectiveLocation.ARGUMENT_DEFINITION; + "kind" in parentNode || invariant$1(false); + return parentNode.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION ? DirectiveLocation$1.INPUT_FIELD_DEFINITION : DirectiveLocation$1.ARGUMENT_DEFINITION; } default: - invariant(false, "Unexpected kind: " + inspect(appliedTo.kind)); + invariant$1(false, "Unexpected kind: " + inspect$1(appliedTo.kind)); } } function getDirectiveLocationForOperation(operation) { switch (operation) { case OperationTypeNode.QUERY: - return DirectiveLocation.QUERY; + return DirectiveLocation$1.QUERY; case OperationTypeNode.MUTATION: - return DirectiveLocation.MUTATION; + return DirectiveLocation$1.MUTATION; case OperationTypeNode.SUBSCRIPTION: - return DirectiveLocation.SUBSCRIPTION; + return DirectiveLocation$1.SUBSCRIPTION; } } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/validation/rules/KnownFragmentNamesRule.mjs function KnownFragmentNamesRule(context) { return { FragmentSpread(node) { @@ -12679,8 +8758,6 @@ function KnownFragmentNamesRule(context) { } }; } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/validation/rules/KnownTypeNamesRule.mjs function KnownTypeNamesRule(context) { const schema = context.getSchema(); const existingTypesMap = schema ? schema.getTypeMap() : /* @__PURE__ */ Object.create(null); @@ -12726,8 +8803,6 @@ var standardTypeNames = [...specifiedScalarTypes, ...introspectionTypes].map( function isSDLNode(value) { return "kind" in value && (isTypeSystemDefinitionNode(value) || isTypeSystemExtensionNode(value)); } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/validation/rules/LoneAnonymousOperationRule.mjs function LoneAnonymousOperationRule(context) { let operationCount = 0; return { @@ -12750,8 +8825,6 @@ function LoneAnonymousOperationRule(context) { } }; } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/validation/rules/LoneSchemaDefinitionRule.mjs function LoneSchemaDefinitionRule(context) { var _ref, _ref2, _oldSchema$astNode; const oldSchema = context.getSchema(); @@ -12781,8 +8854,6 @@ function LoneSchemaDefinitionRule(context) { } }; } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/validation/rules/NoFragmentCyclesRule.mjs function NoFragmentCyclesRule(context) { const visitedFrags = /* @__PURE__ */ Object.create(null); const spreadPath = []; @@ -12831,8 +8902,6 @@ function NoFragmentCyclesRule(context) { spreadPathIndexByName[fragmentName] = void 0; } } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/validation/rules/NoUndefinedVariablesRule.mjs function NoUndefinedVariablesRule(context) { let variableNameDefined = /* @__PURE__ */ Object.create(null); return { @@ -12862,8 +8931,6 @@ function NoUndefinedVariablesRule(context) { } }; } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/validation/rules/NoUnusedFragmentsRule.mjs function NoUnusedFragmentsRule(context) { const operationDefs = []; const fragmentDefs = []; @@ -12900,8 +8967,6 @@ function NoUnusedFragmentsRule(context) { } }; } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/validation/rules/NoUnusedVariablesRule.mjs function NoUnusedVariablesRule(context) { let variableDefs = []; return { @@ -12935,8 +9000,6 @@ function NoUnusedVariablesRule(context) { } }; } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/utilities/sortValueNode.mjs function sortValueNode(valueNode) { switch (valueNode.kind) { case Kind.OBJECT: @@ -12961,8 +9024,6 @@ function sortFields(fields) { (fieldA, fieldB) => naturalCompare(fieldA.name.value, fieldB.name.value) ); } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.mjs function reasonMessage(reason) { if (Array.isArray(reason)) { return reason.map( @@ -13276,7 +9337,7 @@ function findConflict(context, cachedFieldsAndFragmentNames, comparedFragmentPai return [ [ responseName, - `they return conflicting types "${inspect(type1)}" and "${inspect( + `they return conflicting types "${inspect$1(type1)}" and "${inspect$1( type2 )}"` ], @@ -13420,24 +9481,22 @@ var PairSet = class { } add(a, b, areMutuallyExclusive) { const [key1, key2] = a < b ? [a, b] : [b, a]; - const map2 = this._data.get(key1); - if (map2 === void 0) { + const map = this._data.get(key1); + if (map === void 0) { this._data.set(key1, /* @__PURE__ */ new Map([[key2, areMutuallyExclusive]])); } else { - map2.set(key2, areMutuallyExclusive); + map.set(key2, areMutuallyExclusive); } } }; - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.mjs function PossibleFragmentSpreadsRule(context) { return { InlineFragment(node) { const fragType = context.getType(); const parentType = context.getParentType(); if (isCompositeType(fragType) && isCompositeType(parentType) && !doTypesOverlap(context.getSchema(), fragType, parentType)) { - const parentTypeStr = inspect(parentType); - const fragTypeStr = inspect(fragType); + const parentTypeStr = inspect$1(parentType); + const fragTypeStr = inspect$1(fragType); context.reportError( new GraphQLError( `Fragment cannot be spread here as objects of type "${parentTypeStr}" can never be of type "${fragTypeStr}".`, @@ -13453,8 +9512,8 @@ function PossibleFragmentSpreadsRule(context) { const fragType = getFragmentType(context, fragName); const parentType = context.getParentType(); if (fragType && parentType && !doTypesOverlap(context.getSchema(), fragType, parentType)) { - const parentTypeStr = inspect(parentType); - const fragTypeStr = inspect(fragType); + const parentTypeStr = inspect$1(parentType); + const fragTypeStr = inspect$1(fragType); context.reportError( new GraphQLError( `Fragment "${fragName}" cannot be spread here as objects of type "${parentTypeStr}" can never be of type "${fragTypeStr}".`, @@ -13476,8 +9535,6 @@ function getFragmentType(context, name) { } } } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/validation/rules/PossibleTypeExtensionsRule.mjs function PossibleTypeExtensionsRule(context) { const schema = context.getSchema(); const definedTypes = /* @__PURE__ */ Object.create(null); @@ -13557,7 +9614,7 @@ function typeToExtKind(type) { if (isInputObjectType(type)) { return Kind.INPUT_OBJECT_TYPE_EXTENSION; } - invariant(false, "Unexpected type: " + inspect(type)); + invariant$1(false, "Unexpected type: " + inspect$1(type)); } function extensionKindToTypeName(kind) { switch (kind) { @@ -13574,11 +9631,9 @@ function extensionKindToTypeName(kind) { case Kind.INPUT_OBJECT_TYPE_EXTENSION: return "input object"; default: - invariant(false, "Unexpected kind: " + inspect(kind)); + invariant$1(false, "Unexpected kind: " + inspect$1(kind)); } } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/validation/rules/ProvidedRequiredArgumentsRule.mjs function ProvidedRequiredArgumentsRule(context) { return { ...ProvidedRequiredArgumentsOnDirectivesRule(context), @@ -13594,7 +9649,7 @@ function ProvidedRequiredArgumentsRule(context) { ); for (const argDef of fieldDef.args) { if (!providedArgs.has(argDef.name) && isRequiredArgument(argDef)) { - const argTypeStr = inspect(argDef.type); + const argTypeStr = inspect$1(argDef.type); context.reportError( new GraphQLError( `Field "${fieldDef.name}" argument "${argDef.name}" of type "${argTypeStr}" is required, but it was not provided.`, @@ -13642,7 +9697,7 @@ function ProvidedRequiredArgumentsOnDirectivesRule(context) { const argNodeMap = new Set(argNodes.map((arg) => arg.name.value)); for (const [argName, argDef] of Object.entries(requiredArgs)) { if (!argNodeMap.has(argName)) { - const argType = isType(argDef.type) ? inspect(argDef.type) : print(argDef.type); + const argType = isType(argDef.type) ? inspect$1(argDef.type) : print(argDef.type); context.reportError( new GraphQLError( `Directive "@${directiveName}" argument "${argName}" of type "${argType}" is required, but it was not provided.`, @@ -13661,8 +9716,6 @@ function ProvidedRequiredArgumentsOnDirectivesRule(context) { function isRequiredArgumentNode(arg) { return arg.type.kind === Kind.NON_NULL_TYPE && arg.defaultValue == null; } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/validation/rules/ScalarLeafsRule.mjs function ScalarLeafsRule(context) { return { Field(node) { @@ -13672,7 +9725,7 @@ function ScalarLeafsRule(context) { if (isLeafType(getNamedType(type))) { if (selectionSet) { const fieldName = node.name.value; - const typeStr = inspect(type); + const typeStr = inspect$1(type); context.reportError( new GraphQLError( `Field "${fieldName}" must not have a selection since type "${typeStr}" has no subfields.`, @@ -13684,7 +9737,7 @@ function ScalarLeafsRule(context) { } } else if (!selectionSet) { const fieldName = node.name.value; - const typeStr = inspect(type); + const typeStr = inspect$1(type); context.reportError( new GraphQLError( `Field "${fieldName}" of type "${typeStr}" must have a selection of subfields. Did you mean "${fieldName} { ... }"?`, @@ -13698,15 +9751,11 @@ function ScalarLeafsRule(context) { } }; } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/jsutils/printPathArray.mjs function printPathArray(path) { return path.map( (key) => typeof key === "number" ? "[" + key.toString() + "]" : "." + key ).join(""); } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/jsutils/Path.mjs function addPath(prev, key, typename) { return { prev, @@ -13723,13 +9772,11 @@ function pathToArray(path) { } return flattened.reverse(); } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/utilities/coerceInputValue.mjs function coerceInputValue(inputValue, type, onError2 = defaultOnError) { return coerceInputValueImpl(inputValue, type, onError2, void 0); } function defaultOnError(path, invalidValue, error) { - let errorPrefix = "Invalid value " + inspect(invalidValue); + let errorPrefix = "Invalid value " + inspect$1(invalidValue); if (path.length > 0) { errorPrefix += ` at "value${printPathArray(path)}"`; } @@ -13745,7 +9792,7 @@ function coerceInputValueImpl(inputValue, type, onError2, path) { pathToArray(path), inputValue, new GraphQLError( - `Expected non-nullable type "${inspect(type)}" not to be null.` + `Expected non-nullable type "${inspect$1(type)}" not to be null.` ) ); return; @@ -13780,7 +9827,7 @@ function coerceInputValueImpl(inputValue, type, onError2, path) { if (field.defaultValue !== void 0) { coercedValue[field.name] = field.defaultValue; } else if (isNonNullType(field.type)) { - const typeStr = inspect(field.type); + const typeStr = inspect$1(field.type); onError2( pathToArray(path), inputValue, @@ -13842,10 +9889,8 @@ function coerceInputValueImpl(inputValue, type, onError2, path) { } return parseResult; } - invariant(false, "Unexpected input type: " + inspect(type)); + invariant$1(false, "Unexpected input type: " + inspect$1(type)); } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/utilities/valueFromAST.mjs function valueFromAST(valueNode, type, variables) { if (!valueNode) { return; @@ -13932,13 +9977,11 @@ function valueFromAST(valueNode, type, variables) { } return result; } - invariant(false, "Unexpected input type: " + inspect(type)); + invariant$1(false, "Unexpected input type: " + inspect$1(type)); } function isMissingVariable(valueNode, variables) { return valueNode.kind === Kind.VARIABLE && (variables == null || variables[valueNode.name.value] === void 0); } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/execution/values.mjs function getVariableValues(schema, varDefNodes, inputs, options) { const errors = []; const maxErrors = options === null || options === void 0 ? void 0 : options.maxErrors; @@ -13985,11 +10028,11 @@ function coerceVariableValues(schema, varDefNodes, inputs, onError2) { ); continue; } - if (!hasOwnProperty2(inputs, varName)) { + if (!hasOwnProperty(inputs, varName)) { if (varDefNode.defaultValue) { coercedValues[varName] = valueFromAST(varDefNode.defaultValue, varType); } else if (isNonNullType(varType)) { - const varTypeStr = inspect(varType); + const varTypeStr = inspect$1(varType); onError2( new GraphQLError( `Variable "$${varName}" of required type "${varTypeStr}" was not provided.`, @@ -14003,7 +10046,7 @@ function coerceVariableValues(schema, varDefNodes, inputs, onError2) { } const value = inputs[varName]; if (value === null && isNonNullType(varType)) { - const varTypeStr = inspect(varType); + const varTypeStr = inspect$1(varType); onError2( new GraphQLError( `Variable "$${varName}" of non-null type "${varTypeStr}" must not be null.`, @@ -14018,7 +10061,7 @@ function coerceVariableValues(schema, varDefNodes, inputs, onError2) { value, varType, (path, invalidValue, error) => { - let prefix2 = `Variable "$${varName}" got invalid value ` + inspect(invalidValue); + let prefix2 = `Variable "$${varName}" got invalid value ` + inspect$1(invalidValue); if (path.length > 0) { prefix2 += ` at "${varName}${printPathArray(path)}"`; } @@ -14047,7 +10090,7 @@ function getArgumentValues(def, node, variableValues) { coercedValues[name] = argDef.defaultValue; } else if (isNonNullType(argType)) { throw new GraphQLError( - `Argument "${name}" of required type "${inspect(argType)}" was not provided.`, + `Argument "${name}" of required type "${inspect$1(argType)}" was not provided.`, { nodes: node } @@ -14059,12 +10102,12 @@ function getArgumentValues(def, node, variableValues) { let isNull = valueNode.kind === Kind.NULL; if (valueNode.kind === Kind.VARIABLE) { const variableName = valueNode.name.value; - if (variableValues == null || !hasOwnProperty2(variableValues, variableName)) { + if (variableValues == null || !hasOwnProperty(variableValues, variableName)) { if (argDef.defaultValue !== void 0) { coercedValues[name] = argDef.defaultValue; } else if (isNonNullType(argType)) { throw new GraphQLError( - `Argument "${name}" of required type "${inspect(argType)}" was provided the variable "$${variableName}" which was not provided a runtime value.`, + `Argument "${name}" of required type "${inspect$1(argType)}" was provided the variable "$${variableName}" which was not provided a runtime value.`, { nodes: valueNode } @@ -14076,7 +10119,7 @@ function getArgumentValues(def, node, variableValues) { } if (isNull && isNonNullType(argType)) { throw new GraphQLError( - `Argument "${name}" of non-null type "${inspect(argType)}" must not be null.`, + `Argument "${name}" of non-null type "${inspect$1(argType)}" must not be null.`, { nodes: valueNode } @@ -14104,11 +10147,9 @@ function getDirectiveValues(directiveDef, node, variableValues) { return getArgumentValues(directiveDef, directiveNode, variableValues); } } -function hasOwnProperty2(obj, prop) { +function hasOwnProperty(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/execution/collectFields.mjs function collectFields(schema, fragments, variableValues, runtimeType, selectionSet) { const fields = /* @__PURE__ */ new Map(); collectFieldsImpl( @@ -14122,7 +10163,7 @@ function collectFields(schema, fragments, variableValues, runtimeType, selection ); return fields; } -function collectSubfields(schema, fragments, variableValues, returnType, fieldNodes) { +function collectSubfields$1(schema, fragments, variableValues, returnType, fieldNodes) { const subFieldNodes = /* @__PURE__ */ new Map(); const visitedFragmentNames = /* @__PURE__ */ new Set(); for (const node of fieldNodes) { @@ -14227,8 +10268,6 @@ function doesFragmentConditionMatch(schema, fragment, type) { function getFieldEntryKey(node) { return node.alias ? node.alias.value : node.name.value; } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/validation/rules/SingleFieldSubscriptionsRule.mjs function SingleFieldSubscriptionsRule(context) { return { OperationDefinition(node) { @@ -14284,8 +10323,6 @@ function SingleFieldSubscriptionsRule(context) { } }; } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/jsutils/groupBy.mjs function groupBy(list, keyFn) { const result = /* @__PURE__ */ new Map(); for (const item of list) { @@ -14299,8 +10336,6 @@ function groupBy(list, keyFn) { } return result; } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/validation/rules/UniqueArgumentDefinitionNamesRule.mjs function UniqueArgumentDefinitionNamesRule(context) { return { DirectiveDefinition(directiveNode) { @@ -14342,8 +10377,6 @@ function UniqueArgumentDefinitionNamesRule(context) { return false; } } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/validation/rules/UniqueArgumentNamesRule.mjs function UniqueArgumentNamesRule(context) { return { Field: checkArgUniqueness, @@ -14367,8 +10400,6 @@ function UniqueArgumentNamesRule(context) { } } } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/validation/rules/UniqueDirectiveNamesRule.mjs function UniqueDirectiveNamesRule(context) { const knownDirectiveNames = /* @__PURE__ */ Object.create(null); const schema = context.getSchema(); @@ -14402,8 +10433,6 @@ function UniqueDirectiveNamesRule(context) { } }; } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/validation/rules/UniqueDirectivesPerLocationRule.mjs function UniqueDirectivesPerLocationRule(context) { const uniqueDirectiveMap = /* @__PURE__ */ Object.create(null); const schema = context.getSchema(); @@ -14456,8 +10485,6 @@ function UniqueDirectivesPerLocationRule(context) { } }; } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/validation/rules/UniqueEnumValueNamesRule.mjs function UniqueEnumValueNamesRule(context) { const schema = context.getSchema(); const existingTypeMap = schema ? schema.getTypeMap() : /* @__PURE__ */ Object.create(null); @@ -14502,8 +10529,6 @@ function UniqueEnumValueNamesRule(context) { return false; } } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/validation/rules/UniqueFieldDefinitionNamesRule.mjs function UniqueFieldDefinitionNamesRule(context) { const schema = context.getSchema(); const existingTypeMap = schema ? schema.getTypeMap() : /* @__PURE__ */ Object.create(null); @@ -14557,8 +10582,6 @@ function hasField(type, fieldName) { } return false; } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/validation/rules/UniqueFragmentNamesRule.mjs function UniqueFragmentNamesRule(context) { const knownFragmentNames = /* @__PURE__ */ Object.create(null); return { @@ -14581,8 +10604,6 @@ function UniqueFragmentNamesRule(context) { } }; } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/validation/rules/UniqueInputFieldNamesRule.mjs function UniqueInputFieldNamesRule(context) { const knownNameStack = []; let knownNames = /* @__PURE__ */ Object.create(null); @@ -14594,7 +10615,7 @@ function UniqueInputFieldNamesRule(context) { }, leave() { const prevKnownNames = knownNameStack.pop(); - prevKnownNames || invariant(false); + prevKnownNames || invariant$1(false); knownNames = prevKnownNames; } }, @@ -14615,8 +10636,6 @@ function UniqueInputFieldNamesRule(context) { } }; } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/validation/rules/UniqueOperationNamesRule.mjs function UniqueOperationNamesRule(context) { const knownOperationNames = /* @__PURE__ */ Object.create(null); return { @@ -14644,8 +10663,6 @@ function UniqueOperationNamesRule(context) { FragmentDefinition: () => false }; } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/validation/rules/UniqueOperationTypesRule.mjs function UniqueOperationTypesRule(context) { const schema = context.getSchema(); const definedOperationTypes = /* @__PURE__ */ Object.create(null); @@ -14689,8 +10706,6 @@ function UniqueOperationTypesRule(context) { return false; } } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/validation/rules/UniqueTypeNamesRule.mjs function UniqueTypeNamesRule(context) { const knownTypeNames = /* @__PURE__ */ Object.create(null); const schema = context.getSchema(); @@ -14727,8 +10742,6 @@ function UniqueTypeNamesRule(context) { return false; } } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/validation/rules/UniqueVariableNamesRule.mjs function UniqueVariableNamesRule(context) { return { OperationDefinition(operationNode) { @@ -14753,8 +10766,6 @@ function UniqueVariableNamesRule(context) { } }; } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/validation/rules/ValuesOfCorrectTypeRule.mjs function ValuesOfCorrectTypeRule(context) { return { ListValue(node) { @@ -14774,7 +10785,7 @@ function ValuesOfCorrectTypeRule(context) { for (const fieldDef of Object.values(type.getFields())) { const fieldNode = fieldNodeMap[fieldDef.name]; if (!fieldNode && isRequiredInputField(fieldDef)) { - const typeStr = inspect(fieldDef.type); + const typeStr = inspect$1(fieldDef.type); context.reportError( new GraphQLError( `Field "${type.name}.${fieldDef.name}" of required type "${typeStr}" was not provided.`, @@ -14809,7 +10820,7 @@ function ValuesOfCorrectTypeRule(context) { if (isNonNullType(type)) { context.reportError( new GraphQLError( - `Expected value of type "${inspect(type)}", found ${print(node)}.`, + `Expected value of type "${inspect$1(type)}", found ${print(node)}.`, { nodes: node } @@ -14831,7 +10842,7 @@ function isValidValueNode(context, node) { } const type = getNamedType(locationType); if (!isLeafType(type)) { - const typeStr = inspect(locationType); + const typeStr = inspect$1(locationType); context.reportError( new GraphQLError( `Expected value of type "${typeStr}", found ${print(node)}.`, @@ -14848,7 +10859,7 @@ function isValidValueNode(context, node) { void 0 ); if (parseResult === void 0) { - const typeStr = inspect(locationType); + const typeStr = inspect$1(locationType); context.reportError( new GraphQLError( `Expected value of type "${typeStr}", found ${print(node)}.`, @@ -14859,7 +10870,7 @@ function isValidValueNode(context, node) { ); } } catch (error) { - const typeStr = inspect(locationType); + const typeStr = inspect$1(locationType); if (error instanceof GraphQLError) { context.reportError(error); } else { @@ -14875,8 +10886,6 @@ function isValidValueNode(context, node) { } } } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/validation/rules/VariablesAreInputTypesRule.mjs function VariablesAreInputTypesRule(context) { return { VariableDefinition(node) { @@ -14896,8 +10905,6 @@ function VariablesAreInputTypesRule(context) { } }; } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/validation/rules/VariablesInAllowedPositionRule.mjs function VariablesInAllowedPositionRule(context) { let varDefMap = /* @__PURE__ */ Object.create(null); return { @@ -14920,8 +10927,8 @@ function VariablesInAllowedPositionRule(context) { type, defaultValue )) { - const varTypeStr = inspect(varType); - const typeStr = inspect(type); + const varTypeStr = inspect$1(varType); + const typeStr = inspect$1(type); context.reportError( new GraphQLError( `Variable "$${varName}" of type "${varTypeStr}" used in position expecting type "${typeStr}".`, @@ -14952,8 +10959,6 @@ function allowedVariableUsage(schema, varType, varDefaultValue, locationType, lo } return isTypeSubTypeOf(schema, varType, locationType); } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/validation/specifiedRules.mjs var specifiedRules = Object.freeze([ ExecutableDefinitionsRule, UniqueOperationNamesRule, @@ -14999,8 +11004,6 @@ var specifiedSDLRules = Object.freeze([ UniqueInputFieldNamesRule, ProvidedRequiredArgumentsOnDirectivesRule ]); - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/validation/ValidationContext.mjs var ASTValidationContext = class { constructor(ast, onError2) { this._ast = ast; @@ -15060,8 +11063,8 @@ var ASTValidationContext = class { const nodesToVisit = [operation.selectionSet]; let node; while (node = nodesToVisit.pop()) { - for (const spread2 of this.getFragmentSpreads(node)) { - const fragName = spread2.name.value; + for (const spread of this.getFragmentSpreads(node)) { + const fragName = spread.name.value; if (collectedNames[fragName] !== true) { collectedNames[fragName] = true; const fragment = this.getFragment(fragName); @@ -15162,8 +11165,6 @@ var ValidationContext = class extends ASTValidationContext { return this._typeInfo.getEnumValue(); } }; - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/validation/validate.mjs function validate(schema, documentAST, rules = specifiedRules, options, typeInfo = new TypeInfo(schema)) { var _options$maxErrors; const maxErrors = (_options$maxErrors = options === null || options === void 0 ? void 0 : options.maxErrors) !== null && _options$maxErrors !== void 0 ? _options$maxErrors : 100; @@ -15216,8 +11217,6 @@ function assertValidSDL(documentAST) { throw new Error(errors.map((error) => error.message).join("\n\n")); } } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/jsutils/memoize3.mjs function memoize3(fn) { let cache0; return function memoized(a1, a2, a3) { @@ -15242,8 +11241,6 @@ function memoize3(fn) { return fnResult; }; } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/jsutils/promiseForObject.mjs function promiseForObject(object) { return Promise.all(Object.values(object)).then((resolvedValues) => { const resolvedObject = /* @__PURE__ */ Object.create(null); @@ -15253,8 +11250,6 @@ function promiseForObject(object) { return resolvedObject; }); } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/jsutils/promiseReduce.mjs function promiseReduce(values, callbackFn, initialValue) { let accumulator = initialValue; for (const value of values) { @@ -15262,20 +11257,16 @@ function promiseReduce(values, callbackFn, initialValue) { } return accumulator; } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/jsutils/toError.mjs function toError(thrownValue) { return thrownValue instanceof Error ? thrownValue : new NonErrorThrown(thrownValue); } var NonErrorThrown = class extends Error { constructor(thrownValue) { - super("Unexpected error value: " + inspect(thrownValue)); + super("Unexpected error value: " + inspect$1(thrownValue)); this.name = "NonErrorThrown"; this.thrownValue = thrownValue; } }; - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/error/locatedError.mjs function locatedError(rawOriginalError, nodes, path) { var _nodes; const originalError = toError(rawOriginalError); @@ -15293,10 +11284,8 @@ function locatedError(rawOriginalError, nodes, path) { function isLocatedGraphQLError(error) { return Array.isArray(error.path); } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/execution/execute.mjs -var collectSubfields2 = memoize3( - (exeContext, returnType, fieldNodes) => collectSubfields( +var collectSubfields = memoize3( + (exeContext, returnType, fieldNodes) => collectSubfields$1( exeContext.schema, exeContext.fragments, exeContext.variableValues, @@ -15304,7 +11293,7 @@ var collectSubfields2 = memoize3( fieldNodes ) ); -function execute(args) { +function execute$1(args) { arguments.length < 2 || devAssert( false, "graphql@16 dropped long-deprecated support for positional arguments, please pass an object instead." @@ -15385,7 +11374,6 @@ function buildExecutionContext(args) { case Kind.FRAGMENT_DEFINITION: fragments[definition.name.value] = definition; break; - default: } } if (!operation) { @@ -15505,7 +11493,7 @@ function executeFields(exeContext, parentType, sourceValue, path, fields) { } function executeField(exeContext, parentType, source, fieldNodes, path) { var _fieldDef$resolve; - const fieldDef = getFieldDef2(exeContext.schema, parentType, fieldNodes[0]); + const fieldDef = getFieldDef(exeContext.schema, parentType, fieldNodes[0]); if (!fieldDef) { return; } @@ -15630,9 +11618,9 @@ function completeValue(exeContext, returnType, fieldNodes, info, path, result) { result ); } - invariant( + invariant$1( false, - "Cannot complete value of unexpected output type: " + inspect(returnType) + "Cannot complete value of unexpected output type: " + inspect$1(returnType) ); } function completeListValue(exeContext, returnType, fieldNodes, info, path, result) { @@ -15691,7 +11679,7 @@ function completeLeafValue(returnType, result) { const serializedResult = returnType.serialize(result); if (serializedResult == null) { throw new Error( - `Expected \`${inspect(returnType)}.serialize(${inspect(result)})\` to return non-nullable value, returned: ${inspect(serializedResult)}` + `Expected \`${inspect$1(returnType)}.serialize(${inspect$1(result)})\` to return non-nullable value, returned: ${inspect$1(serializedResult)}` ); } return serializedResult; @@ -15750,7 +11738,7 @@ function ensureValidRuntimeType(runtimeTypeName, exeContext, returnType, fieldNo } if (typeof runtimeTypeName !== "string") { throw new GraphQLError( - `Abstract type "${returnType.name}" must resolve to an Object type at runtime for field "${info.parentType.name}.${info.fieldName}" with value ${inspect(result)}, received "${inspect(runtimeTypeName)}".` + `Abstract type "${returnType.name}" must resolve to an Object type at runtime for field "${info.parentType.name}.${info.fieldName}" with value ${inspect$1(result)}, received "${inspect$1(runtimeTypeName)}".` ); } const runtimeType = exeContext.schema.getType(runtimeTypeName); @@ -15781,7 +11769,7 @@ function ensureValidRuntimeType(runtimeTypeName, exeContext, returnType, fieldNo return runtimeType; } function completeObjectValue(exeContext, returnType, fieldNodes, info, path, result) { - const subFieldNodes = collectSubfields2(exeContext, returnType, fieldNodes); + const subFieldNodes = collectSubfields(exeContext, returnType, fieldNodes); if (returnType.isTypeOf) { const isTypeOf = returnType.isTypeOf(result, exeContext.contextValue, info); if (isPromise(isTypeOf)) { @@ -15806,7 +11794,7 @@ function completeObjectValue(exeContext, returnType, fieldNodes, info, path, res } function invalidReturnTypeError(returnType, result, fieldNodes) { return new GraphQLError( - `Expected value of type "${returnType.name}" but got: ${inspect(result)}.`, + `Expected value of type "${returnType.name}" but got: ${inspect$1(result)}.`, { nodes: fieldNodes } @@ -15848,7 +11836,7 @@ var defaultFieldResolver = function(source, args, contextValue, info) { return property; } }; -function getFieldDef2(schema, parentType, fieldNode) { +function getFieldDef(schema, parentType, fieldNode) { const fieldName = fieldNode.name.value; if (fieldName === SchemaMetaFieldDef.name && schema.getQueryType() === parentType) { return SchemaMetaFieldDef; @@ -15859,15 +11847,11 @@ function getFieldDef2(schema, parentType, fieldNode) { } return parentType.getFields()[fieldName]; } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/jsutils/isAsyncIterable.mjs -function isAsyncIterable(maybeAsyncIterable) { +function isAsyncIterable$2(maybeAsyncIterable) { return typeof (maybeAsyncIterable === null || maybeAsyncIterable === void 0 ? void 0 : maybeAsyncIterable[Symbol.asyncIterator]) === "function"; } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/execution/mapAsyncIterator.mjs -function mapAsyncIterator(iterable, callback) { - const iterator = iterable[Symbol.asyncIterator](); +function mapAsyncIterator$1(iterable, callback) { + const iterator2 = iterable[Symbol.asyncIterator](); async function mapResult(result) { if (result.done) { return result; @@ -15878,9 +11862,9 @@ function mapAsyncIterator(iterable, callback) { done: false }; } catch (error) { - if (typeof iterator.return === "function") { + if (typeof iterator2.return === "function") { try { - await iterator.return(); + await iterator2.return(); } catch (_e) { } } @@ -15889,17 +11873,17 @@ function mapAsyncIterator(iterable, callback) { } return { async next() { - return mapResult(await iterator.next()); + return mapResult(await iterator2.next()); }, async return() { - return typeof iterator.return === "function" ? mapResult(await iterator.return()) : { + return typeof iterator2.return === "function" ? mapResult(await iterator2.return()) : { value: void 0, done: true }; }, async throw(error) { - if (typeof iterator.throw === "function") { - return mapResult(await iterator.throw(error)); + if (typeof iterator2.throw === "function") { + return mapResult(await iterator2.throw(error)); } throw error; }, @@ -15908,19 +11892,17 @@ function mapAsyncIterator(iterable, callback) { } }; } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/execution/subscribe.mjs async function subscribe(args) { arguments.length < 2 || devAssert( false, "graphql@16 dropped long-deprecated support for positional arguments, please pass an object instead." ); const resultOrStream = await createSourceEventStream(args); - if (!isAsyncIterable(resultOrStream)) { + if (!isAsyncIterable$2(resultOrStream)) { return resultOrStream; } - const mapSourceToResponse = (payload) => execute({ ...args, rootValue: payload }); - return mapAsyncIterator(resultOrStream, mapSourceToResponse); + const mapSourceToResponse = (payload) => execute$1({ ...args, rootValue: payload }); + return mapAsyncIterator$1(resultOrStream, mapSourceToResponse); } function toNormalizedArgs(args) { const firstArg = args[0]; @@ -15949,9 +11931,9 @@ async function createSourceEventStream(...rawArgs) { } try { const eventStream = await executeSubscription(exeContext); - if (!isAsyncIterable(eventStream)) { + if (!isAsyncIterable$2(eventStream)) { throw new Error( - `Subscription field must return Async Iterable. Received: ${inspect(eventStream)}.` + `Subscription field must return Async Iterable. Received: ${inspect$1(eventStream)}.` ); } return eventStream; @@ -15983,7 +11965,7 @@ async function executeSubscription(exeContext) { operation.selectionSet ); const [responseName, fieldNodes] = [...rootFields.entries()][0]; - const fieldDef = getFieldDef2(schema, rootType, fieldNodes[0]); + const fieldDef = getFieldDef(schema, rootType, fieldNodes[0]); if (!fieldDef) { const fieldName = fieldNodes[0].name.value; throw new GraphQLError( @@ -16015,8 +11997,6 @@ async function executeSubscription(exeContext) { throw locatedError(error, fieldNodes, pathToArray(path)); } } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/utilities/getOperationAST.mjs function getOperationAST(documentAST, operationName) { let operation = null; for (const definition of documentAST.definitions) { @@ -16034,8 +12014,6 @@ function getOperationAST(documentAST, operationName) { } return operation; } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/utilities/extendSchema.mjs function extendSchemaImpl(schemaConfig, documentAST, options) { var _schemaDef, _schemaDef$descriptio, _schemaDef2, _options$assumeValid; const typeDefs = []; @@ -16131,7 +12109,7 @@ function extendSchemaImpl(schemaConfig, documentAST, options) { if (isInputObjectType(type)) { return extendInputObjectType(type); } - invariant(false, "Unexpected type: " + inspect(type)); + invariant$1(false, "Unexpected type: " + inspect$1(type)); } function extendInputObjectType(type) { var _typeExtensionsMap$co; @@ -16443,8 +12421,6 @@ function getSpecifiedByURL(node) { const specifiedBy = getDirectiveValues(GraphQLSpecifiedByDirective, node); return specifiedBy === null || specifiedBy === void 0 ? void 0 : specifiedBy.url; } - -// node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/utilities/buildASTSchema.mjs function buildASTSchema(documentAST, options) { documentAST != null && documentAST.kind === Kind.DOCUMENT || devAssert(false, "Must provide valid Document AST."); if ((options === null || options === void 0 ? void 0 : options.assumeValid) !== true && (options === null || options === void 0 ? void 0 : options.assumeValidSDL) !== true) { @@ -16494,8 +12470,6 @@ function buildSchema(source, options) { assumeValid: options === null || options === void 0 ? void 0 : options.assumeValid }); } - -// node_modules/.pnpm/@envelop+core@2.6.0_graphql@16.6.0/node_modules/@envelop/core/esm/traced-schema.js var trackedSchemaSymbol = Symbol("TRACKED_SCHEMA"); var resolversHooksSymbol = Symbol("RESOLVERS_HOOKS"); function prepareTracedSchema(schema) { @@ -16557,8 +12531,6 @@ function prepareTracedSchema(schema) { } } } - -// node_modules/.pnpm/@envelop+core@2.6.0_graphql@16.6.0/node_modules/@envelop/core/esm/utils.js var envelopIsIntrospectionSymbol = Symbol("ENVELOP_IS_INTROSPECTION"); function isIntrospectionOperationString(operation) { return (typeof operation === "string" ? operation : operation.body).indexOf("__schema") !== -1; @@ -16576,8 +12548,8 @@ function getSubscribeArgs(args) { }; } var makeSubscribe = (subscribeFn) => (...polyArgs) => subscribeFn(getSubscribeArgs(polyArgs)); -function mapAsyncIterator2(source, mapper) { - const iterator = source[Symbol.asyncIterator](); +function mapAsyncIterator(source, mapper) { + const iterator2 = source[Symbol.asyncIterator](); async function mapResult(result) { var _a2; if (result.done) { @@ -16587,7 +12559,7 @@ function mapAsyncIterator2(source, mapper) { return { value: await mapper(result.value), done: false }; } catch (error) { try { - await ((_a2 = iterator.return) === null || _a2 === void 0 ? void 0 : _a2.call(iterator)); + await ((_a2 = iterator2.return) === null || _a2 === void 0 ? void 0 : _a2.call(iterator2)); } catch (_error) { } throw error; @@ -16598,16 +12570,16 @@ function mapAsyncIterator2(source, mapper) { return stream; }, async next() { - return await mapResult(await iterator.next()); + return await mapResult(await iterator2.next()); }, async return() { var _a2; - const promise = (_a2 = iterator.return) === null || _a2 === void 0 ? void 0 : _a2.call(iterator); + const promise = (_a2 = iterator2.return) === null || _a2 === void 0 ? void 0 : _a2.call(iterator2); return promise ? await mapResult(await promise) : { value: void 0, done: true }; }, async throw(error) { var _a2; - const promise = (_a2 = iterator.throw) === null || _a2 === void 0 ? void 0 : _a2.call(iterator); + const promise = (_a2 = iterator2.throw) === null || _a2 === void 0 ? void 0 : _a2.call(iterator2); if (promise) { return await mapResult(await promise); } @@ -16629,11 +12601,11 @@ function getExecuteArgs(args) { }; } var makeExecute = (executeFn) => (...polyArgs) => executeFn(getExecuteArgs(polyArgs)); -function isAsyncIterable2(maybeAsyncIterable) { +function isAsyncIterable$1(maybeAsyncIterable) { return typeof maybeAsyncIterable === "object" && maybeAsyncIterable != null && typeof maybeAsyncIterable[Symbol.asyncIterator] === "function"; } function handleStreamOrSingleExecutionResult(payload, fn) { - if (isAsyncIterable2(payload.result)) { + if (isAsyncIterable$1(payload.result)) { return { onNext: fn }; } fn({ @@ -16644,14 +12616,14 @@ function handleStreamOrSingleExecutionResult(payload, fn) { return void 0; } function finalAsyncIterator(source, onFinal) { - const iterator = source[Symbol.asyncIterator](); + const iterator2 = source[Symbol.asyncIterator](); let isDone = false; const stream = { [Symbol.asyncIterator]() { return stream; }, async next() { - const result = await iterator.next(); + const result = await iterator2.next(); if (result.done && isDone === false) { isDone = true; onFinal(); @@ -16660,7 +12632,7 @@ function finalAsyncIterator(source, onFinal) { }, async return() { var _a2; - const promise = (_a2 = iterator.return) === null || _a2 === void 0 ? void 0 : _a2.call(iterator); + const promise = (_a2 = iterator2.return) === null || _a2 === void 0 ? void 0 : _a2.call(iterator2); if (isDone === false) { isDone = true; onFinal(); @@ -16669,7 +12641,7 @@ function finalAsyncIterator(source, onFinal) { }, async throw(error) { var _a2; - const promise = (_a2 = iterator.throw) === null || _a2 === void 0 ? void 0 : _a2.call(iterator); + const promise = (_a2 = iterator2.throw) === null || _a2 === void 0 ? void 0 : _a2.call(iterator2); if (promise) { return await promise; } @@ -16679,14 +12651,14 @@ function finalAsyncIterator(source, onFinal) { return stream; } function errorAsyncIterator(source, onError2) { - const iterator = source[Symbol.asyncIterator](); + const iterator2 = source[Symbol.asyncIterator](); const stream = { [Symbol.asyncIterator]() { return stream; }, async next() { try { - return await iterator.next(); + return await iterator2.next(); } catch (error) { onError2(error); return { done: true, value: void 0 }; @@ -16694,12 +12666,12 @@ function errorAsyncIterator(source, onError2) { }, async return() { var _a2; - const promise = (_a2 = iterator.return) === null || _a2 === void 0 ? void 0 : _a2.call(iterator); + const promise = (_a2 = iterator2.return) === null || _a2 === void 0 ? void 0 : _a2.call(iterator2); return promise ? await promise : { done: true, value: void 0 }; }, async throw(error) { var _a2; - const promise = (_a2 = iterator.throw) === null || _a2 === void 0 ? void 0 : _a2.call(iterator); + const promise = (_a2 = iterator2.throw) === null || _a2 === void 0 ? void 0 : _a2.call(iterator2); if (promise) { return await promise; } @@ -16708,8 +12680,6 @@ function errorAsyncIterator(source, onError2) { }; return stream; } - -// node_modules/.pnpm/@envelop+core@2.6.0_graphql@16.6.0/node_modules/@envelop/core/esm/orchestrator.js function createEnvelopOrchestrator(plugins) { let schema = null; let initDone = false; @@ -16987,8 +12957,8 @@ function createEnvelopOrchestrator(plugins) { } } } - if (onNextHandler.length && isAsyncIterable2(result)) { - result = mapAsyncIterator2(result, async (result2) => { + if (onNextHandler.length && isAsyncIterable$1(result)) { + result = mapAsyncIterator(result, async (result2) => { for (const onNext of onNextHandler) { await onNext({ args, @@ -16999,14 +12969,14 @@ function createEnvelopOrchestrator(plugins) { return result2; }); } - if (onEndHandler.length && isAsyncIterable2(result)) { + if (onEndHandler.length && isAsyncIterable$1(result)) { result = finalAsyncIterator(result, () => { for (const onEnd of onEndHandler) { onEnd(); } }); } - if (subscribeErrorHandlers.length && isAsyncIterable2(result)) { + if (subscribeErrorHandlers.length && isAsyncIterable$1(result)) { result = errorAsyncIterator(result, (err) => { let error = err; for (const handler2 of subscribeErrorHandlers) { @@ -17024,7 +12994,7 @@ function createEnvelopOrchestrator(plugins) { }) : makeSubscribe(subscribe); const useCustomExecute = beforeCallbacks.execute.length || onResolversHandlers.length; const customExecute = useCustomExecute ? makeExecute(async (args) => { - let executeFn = execute; + let executeFn = execute$1; let result; const afterCalls = []; let context = args.contextValue || {}; @@ -17084,8 +13054,8 @@ function createEnvelopOrchestrator(plugins) { } } } - if (onNextHandler.length && isAsyncIterable2(result)) { - result = mapAsyncIterator2(result, async (result2) => { + if (onNextHandler.length && isAsyncIterable$1(result)) { + result = mapAsyncIterator(result, async (result2) => { for (const onNext of onNextHandler) { await onNext({ args, @@ -17098,7 +13068,7 @@ function createEnvelopOrchestrator(plugins) { return result2; }); } - if (onEndHandler.length && isAsyncIterable2(result)) { + if (onEndHandler.length && isAsyncIterable$1(result)) { result = finalAsyncIterator(result, () => { for (const onEnd of onEndHandler) { onEnd(); @@ -17106,7 +13076,7 @@ function createEnvelopOrchestrator(plugins) { }); } return result; - }) : makeExecute(execute); + }) : makeExecute(execute$1); initDone = true; if (schema) { for (const [i, plugin] of plugins.entries()) { @@ -17128,8 +13098,6 @@ function createEnvelopOrchestrator(plugins) { contextFactory: customContextFactory }; } - -// node_modules/.pnpm/@envelop+core@2.6.0_graphql@16.6.0/node_modules/@envelop/core/esm/traced-orchestrator.js var _a; var getTimestamp = typeof globalThis !== "undefined" && ((_a = globalThis === null || globalThis === void 0 ? void 0 : globalThis.performance) === null || _a === void 0 ? void 0 : _a.now) ? () => globalThis.performance.now() : () => Date.now(); var measure = () => { @@ -17197,7 +13165,7 @@ function traceOrchestrator(orchestrator) { try { const result = await orchestrator.execute(args); done(); - if (!isAsyncIterable2(result)) { + if (!isAsyncIterable$1(result)) { result.extensions = result.extensions || {}; result.extensions.envelopTracing = args.contextValue[tracingSymbol]; } else { @@ -17240,8 +13208,6 @@ function traceOrchestrator(orchestrator) { } }; } - -// node_modules/.pnpm/@envelop+core@2.6.0_graphql@16.6.0/node_modules/@envelop/core/esm/create.js function envelop(options) { const plugins = options.plugins.filter(isPluginEnabled); let orchestrator = createEnvelopOrchestrator(plugins); @@ -17263,8 +13229,6 @@ function envelop(options) { getEnveloped._plugins = plugins; return getEnveloped; } - -// node_modules/.pnpm/@envelop+core@2.6.0_graphql@16.6.0/node_modules/@envelop/core/esm/plugins/use-logger.js var DEFAULT_OPTIONS = { logFn: console.log }; @@ -17305,8 +13269,6 @@ var useLogger = (rawOptions = DEFAULT_OPTIONS) => { } }; }; - -// node_modules/.pnpm/@envelop+core@2.6.0_graphql@16.6.0/node_modules/@envelop/core/esm/plugins/use-schema.js var useSchema = (schema) => { return { onPluginInit({ setSchema }) { @@ -17314,22 +13276,18 @@ var useSchema = (schema) => { } }; }; - -// node_modules/.pnpm/@envelop+core@2.6.0_graphql@16.6.0/node_modules/@envelop/core/esm/plugins/use-extend-context.js var useExtendContext = (contextFactory) => ({ async onContextBuilding({ context, extendContext }) { extendContext(await contextFactory(context)); } }); - -// node_modules/.pnpm/@envelop+core@2.6.0_graphql@16.6.0/node_modules/@envelop/core/esm/plugins/use-masked-errors.js var DEFAULT_ERROR_MESSAGE = "Unexpected error."; var EnvelopError = class extends GraphQLError { constructor(message, extensions) { super(message, void 0, void 0, void 0, void 0, void 0, extensions); } }; -var formatError2 = (err, message, isDev2) => { +var formatError$1 = (err, message, isDev2) => { var _a2, _b, _c, _d; if (err instanceof GraphQLError) { if (err.originalError && err.originalError instanceof EnvelopError === false || err.originalError === void 0 && err instanceof EnvelopError === false) { @@ -17351,7 +13309,7 @@ var makeHandleResult = (format, message, isDev2) => ({ result, setResult }) => { }; var useMaskedErrors = (opts) => { var _a2, _b; - const format = (_a2 = opts === null || opts === void 0 ? void 0 : opts.formatError) !== null && _a2 !== void 0 ? _a2 : formatError2; + const format = (_a2 = opts === null || opts === void 0 ? void 0 : opts.formatError) !== null && _a2 !== void 0 ? _a2 : formatError$1; const message = (opts === null || opts === void 0 ? void 0 : opts.errorMessage) || DEFAULT_ERROR_MESSAGE; const isDev2 = (_b = opts === null || opts === void 0 ? void 0 : opts.isDev) !== null && _b !== void 0 ? _b : typeof process !== "undefined" ? false : false; const handleResult = makeHandleResult(format, message, isDev2); @@ -17397,8 +13355,6 @@ var useMaskedErrors = (opts) => { } }; }; - -// node_modules/.pnpm/@graphql-yoga+common@2.12.12_graphql@16.6.0/node_modules/@graphql-yoga/common/esm/logger.js var ANSI_CODES = { black: "\x1B[30m", red: "\x1B[31m", @@ -17453,46 +13409,681 @@ var defaultYogaLogger = { } else { console.log(...fullMessage); } - }, - warn(...args) { - const fullMessage = [ - `\u26A0\uFE0F `, - ...prefix, - LEVEL_COLOR.warn, - ...args, - LEVEL_COLOR.reset - ]; - if (console.warn) { - console.warn(...fullMessage); + }, + warn(...args) { + const fullMessage = [ + `\u26A0\uFE0F `, + ...prefix, + LEVEL_COLOR.warn, + ...args, + LEVEL_COLOR.reset + ]; + if (console.warn) { + console.warn(...fullMessage); + } else { + console.log(...fullMessage); + } + }, + error(...args) { + const fullMessage = [ + `\u274C `, + ...prefix, + LEVEL_COLOR.error, + ...args, + LEVEL_COLOR.reset + ]; + if (console.error) { + console.error(...fullMessage); + } else { + console.log(...fullMessage); + } + } +}; +var iterator; +var hasRequiredIterator; +function requireIterator() { + if (hasRequiredIterator) + return iterator; + hasRequiredIterator = 1; + iterator = function(Yallist2) { + Yallist2.prototype[Symbol.iterator] = function* () { + for (let walker = this.head; walker; walker = walker.next) { + yield walker.value; + } + }; + }; + return iterator; +} +var yallist = Yallist$1; +Yallist$1.Node = Node; +Yallist$1.create = Yallist$1; +function Yallist$1(list) { + var self2 = this; + if (!(self2 instanceof Yallist$1)) { + self2 = new Yallist$1(); + } + self2.tail = null; + self2.head = null; + self2.length = 0; + if (list && typeof list.forEach === "function") { + list.forEach(function(item) { + self2.push(item); + }); + } else if (arguments.length > 0) { + for (var i = 0, l = arguments.length; i < l; i++) { + self2.push(arguments[i]); + } + } + return self2; +} +Yallist$1.prototype.removeNode = function(node) { + if (node.list !== this) { + throw new Error("removing node which does not belong to this list"); + } + var next = node.next; + var prev = node.prev; + if (next) { + next.prev = prev; + } + if (prev) { + prev.next = next; + } + if (node === this.head) { + this.head = next; + } + if (node === this.tail) { + this.tail = prev; + } + node.list.length--; + node.next = null; + node.prev = null; + node.list = null; + return next; +}; +Yallist$1.prototype.unshiftNode = function(node) { + if (node === this.head) { + return; + } + if (node.list) { + node.list.removeNode(node); + } + var head = this.head; + node.list = this; + node.next = head; + if (head) { + head.prev = node; + } + this.head = node; + if (!this.tail) { + this.tail = node; + } + this.length++; +}; +Yallist$1.prototype.pushNode = function(node) { + if (node === this.tail) { + return; + } + if (node.list) { + node.list.removeNode(node); + } + var tail = this.tail; + node.list = this; + node.prev = tail; + if (tail) { + tail.next = node; + } + this.tail = node; + if (!this.head) { + this.head = node; + } + this.length++; +}; +Yallist$1.prototype.push = function() { + for (var i = 0, l = arguments.length; i < l; i++) { + push$1(this, arguments[i]); + } + return this.length; +}; +Yallist$1.prototype.unshift = function() { + for (var i = 0, l = arguments.length; i < l; i++) { + unshift(this, arguments[i]); + } + return this.length; +}; +Yallist$1.prototype.pop = function() { + if (!this.tail) { + return void 0; + } + var res = this.tail.value; + this.tail = this.tail.prev; + if (this.tail) { + this.tail.next = null; + } else { + this.head = null; + } + this.length--; + return res; +}; +Yallist$1.prototype.shift = function() { + if (!this.head) { + return void 0; + } + var res = this.head.value; + this.head = this.head.next; + if (this.head) { + this.head.prev = null; + } else { + this.tail = null; + } + this.length--; + return res; +}; +Yallist$1.prototype.forEach = function(fn, thisp) { + thisp = thisp || this; + for (var walker = this.head, i = 0; walker !== null; i++) { + fn.call(thisp, walker.value, i, this); + walker = walker.next; + } +}; +Yallist$1.prototype.forEachReverse = function(fn, thisp) { + thisp = thisp || this; + for (var walker = this.tail, i = this.length - 1; walker !== null; i--) { + fn.call(thisp, walker.value, i, this); + walker = walker.prev; + } +}; +Yallist$1.prototype.get = function(n) { + for (var i = 0, walker = this.head; walker !== null && i < n; i++) { + walker = walker.next; + } + if (i === n && walker !== null) { + return walker.value; + } +}; +Yallist$1.prototype.getReverse = function(n) { + for (var i = 0, walker = this.tail; walker !== null && i < n; i++) { + walker = walker.prev; + } + if (i === n && walker !== null) { + return walker.value; + } +}; +Yallist$1.prototype.map = function(fn, thisp) { + thisp = thisp || this; + var res = new Yallist$1(); + for (var walker = this.head; walker !== null; ) { + res.push(fn.call(thisp, walker.value, this)); + walker = walker.next; + } + return res; +}; +Yallist$1.prototype.mapReverse = function(fn, thisp) { + thisp = thisp || this; + var res = new Yallist$1(); + for (var walker = this.tail; walker !== null; ) { + res.push(fn.call(thisp, walker.value, this)); + walker = walker.prev; + } + return res; +}; +Yallist$1.prototype.reduce = function(fn, initial) { + var acc; + var walker = this.head; + if (arguments.length > 1) { + acc = initial; + } else if (this.head) { + walker = this.head.next; + acc = this.head.value; + } else { + throw new TypeError("Reduce of empty list with no initial value"); + } + for (var i = 0; walker !== null; i++) { + acc = fn(acc, walker.value, i); + walker = walker.next; + } + return acc; +}; +Yallist$1.prototype.reduceReverse = function(fn, initial) { + var acc; + var walker = this.tail; + if (arguments.length > 1) { + acc = initial; + } else if (this.tail) { + walker = this.tail.prev; + acc = this.tail.value; + } else { + throw new TypeError("Reduce of empty list with no initial value"); + } + for (var i = this.length - 1; walker !== null; i--) { + acc = fn(acc, walker.value, i); + walker = walker.prev; + } + return acc; +}; +Yallist$1.prototype.toArray = function() { + var arr = new Array(this.length); + for (var i = 0, walker = this.head; walker !== null; i++) { + arr[i] = walker.value; + walker = walker.next; + } + return arr; +}; +Yallist$1.prototype.toArrayReverse = function() { + var arr = new Array(this.length); + for (var i = 0, walker = this.tail; walker !== null; i++) { + arr[i] = walker.value; + walker = walker.prev; + } + return arr; +}; +Yallist$1.prototype.slice = function(from, to) { + to = to || this.length; + if (to < 0) { + to += this.length; + } + from = from || 0; + if (from < 0) { + from += this.length; + } + var ret = new Yallist$1(); + if (to < from || to < 0) { + return ret; + } + if (from < 0) { + from = 0; + } + if (to > this.length) { + to = this.length; + } + for (var i = 0, walker = this.head; walker !== null && i < from; i++) { + walker = walker.next; + } + for (; walker !== null && i < to; i++, walker = walker.next) { + ret.push(walker.value); + } + return ret; +}; +Yallist$1.prototype.sliceReverse = function(from, to) { + to = to || this.length; + if (to < 0) { + to += this.length; + } + from = from || 0; + if (from < 0) { + from += this.length; + } + var ret = new Yallist$1(); + if (to < from || to < 0) { + return ret; + } + if (from < 0) { + from = 0; + } + if (to > this.length) { + to = this.length; + } + for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) { + walker = walker.prev; + } + for (; walker !== null && i > from; i--, walker = walker.prev) { + ret.push(walker.value); + } + return ret; +}; +Yallist$1.prototype.splice = function(start, deleteCount, ...nodes) { + if (start > this.length) { + start = this.length - 1; + } + if (start < 0) { + start = this.length + start; + } + for (var i = 0, walker = this.head; walker !== null && i < start; i++) { + walker = walker.next; + } + var ret = []; + for (var i = 0; walker && i < deleteCount; i++) { + ret.push(walker.value); + walker = this.removeNode(walker); + } + if (walker === null) { + walker = this.tail; + } + if (walker !== this.head && walker !== this.tail) { + walker = walker.prev; + } + for (var i = 0; i < nodes.length; i++) { + walker = insert(this, walker, nodes[i]); + } + return ret; +}; +Yallist$1.prototype.reverse = function() { + var head = this.head; + var tail = this.tail; + for (var walker = head; walker !== null; walker = walker.prev) { + var p = walker.prev; + walker.prev = walker.next; + walker.next = p; + } + this.head = tail; + this.tail = head; + return this; +}; +function insert(self2, node, value) { + var inserted = node === self2.head ? new Node(value, null, node, self2) : new Node(value, node, node.next, self2); + if (inserted.next === null) { + self2.tail = inserted; + } + if (inserted.prev === null) { + self2.head = inserted; + } + self2.length++; + return inserted; +} +function push$1(self2, item) { + self2.tail = new Node(item, self2.tail, null, self2); + if (!self2.head) { + self2.head = self2.tail; + } + self2.length++; +} +function unshift(self2, item) { + self2.head = new Node(item, null, self2.head, self2); + if (!self2.tail) { + self2.tail = self2.head; + } + self2.length++; +} +function Node(value, prev, next, list) { + if (!(this instanceof Node)) { + return new Node(value, prev, next, list); + } + this.list = list; + this.value = value; + if (prev) { + prev.next = this; + this.prev = prev; + } else { + this.prev = null; + } + if (next) { + next.prev = this; + this.next = next; + } else { + this.next = null; + } +} +try { + requireIterator()(Yallist$1); +} catch (er) { +} +var Yallist = yallist; +var MAX = Symbol("max"); +var LENGTH = Symbol("length"); +var LENGTH_CALCULATOR = Symbol("lengthCalculator"); +var ALLOW_STALE = Symbol("allowStale"); +var MAX_AGE = Symbol("maxAge"); +var DISPOSE = Symbol("dispose"); +var NO_DISPOSE_ON_SET = Symbol("noDisposeOnSet"); +var LRU_LIST = Symbol("lruList"); +var CACHE = Symbol("cache"); +var UPDATE_AGE_ON_GET = Symbol("updateAgeOnGet"); +var naiveLength = () => 1; +var LRUCache = class { + constructor(options) { + if (typeof options === "number") + options = { max: options }; + if (!options) + options = {}; + if (options.max && (typeof options.max !== "number" || options.max < 0)) + throw new TypeError("max must be a non-negative number"); + this[MAX] = options.max || Infinity; + const lc = options.length || naiveLength; + this[LENGTH_CALCULATOR] = typeof lc !== "function" ? naiveLength : lc; + this[ALLOW_STALE] = options.stale || false; + if (options.maxAge && typeof options.maxAge !== "number") + throw new TypeError("maxAge must be a number"); + this[MAX_AGE] = options.maxAge || 0; + this[DISPOSE] = options.dispose; + this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false; + this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false; + this.reset(); + } + set max(mL) { + if (typeof mL !== "number" || mL < 0) + throw new TypeError("max must be a non-negative number"); + this[MAX] = mL || Infinity; + trim(this); + } + get max() { + return this[MAX]; + } + set allowStale(allowStale) { + this[ALLOW_STALE] = !!allowStale; + } + get allowStale() { + return this[ALLOW_STALE]; + } + set maxAge(mA) { + if (typeof mA !== "number") + throw new TypeError("maxAge must be a non-negative number"); + this[MAX_AGE] = mA; + trim(this); + } + get maxAge() { + return this[MAX_AGE]; + } + set lengthCalculator(lC) { + if (typeof lC !== "function") + lC = naiveLength; + if (lC !== this[LENGTH_CALCULATOR]) { + this[LENGTH_CALCULATOR] = lC; + this[LENGTH] = 0; + this[LRU_LIST].forEach((hit) => { + hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key); + this[LENGTH] += hit.length; + }); + } + trim(this); + } + get lengthCalculator() { + return this[LENGTH_CALCULATOR]; + } + get length() { + return this[LENGTH]; + } + get itemCount() { + return this[LRU_LIST].length; + } + rforEach(fn, thisp) { + thisp = thisp || this; + for (let walker = this[LRU_LIST].tail; walker !== null; ) { + const prev = walker.prev; + forEachStep(this, fn, walker, thisp); + walker = prev; + } + } + forEach(fn, thisp) { + thisp = thisp || this; + for (let walker = this[LRU_LIST].head; walker !== null; ) { + const next = walker.next; + forEachStep(this, fn, walker, thisp); + walker = next; + } + } + keys() { + return this[LRU_LIST].toArray().map((k) => k.key); + } + values() { + return this[LRU_LIST].toArray().map((k) => k.value); + } + reset() { + if (this[DISPOSE] && this[LRU_LIST] && this[LRU_LIST].length) { + this[LRU_LIST].forEach((hit) => this[DISPOSE](hit.key, hit.value)); + } + this[CACHE] = /* @__PURE__ */ new Map(); + this[LRU_LIST] = new Yallist(); + this[LENGTH] = 0; + } + dump() { + return this[LRU_LIST].map((hit) => isStale(this, hit) ? false : { + k: hit.key, + v: hit.value, + e: hit.now + (hit.maxAge || 0) + }).toArray().filter((h) => h); + } + dumpLru() { + return this[LRU_LIST]; + } + set(key, value, maxAge) { + maxAge = maxAge || this[MAX_AGE]; + if (maxAge && typeof maxAge !== "number") + throw new TypeError("maxAge must be a number"); + const now = maxAge ? Date.now() : 0; + const len = this[LENGTH_CALCULATOR](value, key); + if (this[CACHE].has(key)) { + if (len > this[MAX]) { + del(this, this[CACHE].get(key)); + return false; + } + const node = this[CACHE].get(key); + const item = node.value; + if (this[DISPOSE]) { + if (!this[NO_DISPOSE_ON_SET]) + this[DISPOSE](key, item.value); + } + item.now = now; + item.maxAge = maxAge; + item.value = value; + this[LENGTH] += len - item.length; + item.length = len; + this.get(key); + trim(this); + return true; + } + const hit = new Entry(key, value, len, now, maxAge); + if (hit.length > this[MAX]) { + if (this[DISPOSE]) + this[DISPOSE](key, value); + return false; + } + this[LENGTH] += hit.length; + this[LRU_LIST].unshift(hit); + this[CACHE].set(key, this[LRU_LIST].head); + trim(this); + return true; + } + has(key) { + if (!this[CACHE].has(key)) + return false; + const hit = this[CACHE].get(key).value; + return !isStale(this, hit); + } + get(key) { + return get$1(this, key, true); + } + peek(key) { + return get$1(this, key, false); + } + pop() { + const node = this[LRU_LIST].tail; + if (!node) + return null; + del(this, node); + return node.value; + } + del(key) { + del(this, this[CACHE].get(key)); + } + load(arr) { + this.reset(); + const now = Date.now(); + for (let l = arr.length - 1; l >= 0; l--) { + const hit = arr[l]; + const expiresAt = hit.e || 0; + if (expiresAt === 0) + this.set(hit.k, hit.v); + else { + const maxAge = expiresAt - now; + if (maxAge > 0) { + this.set(hit.k, hit.v, maxAge); + } + } + } + } + prune() { + this[CACHE].forEach((value, key) => get$1(this, key, false)); + } +}; +var get$1 = (self2, key, doUse) => { + const node = self2[CACHE].get(key); + if (node) { + const hit = node.value; + if (isStale(self2, hit)) { + del(self2, node); + if (!self2[ALLOW_STALE]) + return void 0; } else { - console.log(...fullMessage); + if (doUse) { + if (self2[UPDATE_AGE_ON_GET]) + node.value.now = Date.now(); + self2[LRU_LIST].unshiftNode(node); + } } - }, - error(...args) { - const fullMessage = [ - `\u274C `, - ...prefix, - LEVEL_COLOR.error, - ...args, - LEVEL_COLOR.reset - ]; - if (console.error) { - console.error(...fullMessage); - } else { - console.log(...fullMessage); + return hit.value; + } +}; +var isStale = (self2, hit) => { + if (!hit || !hit.maxAge && !self2[MAX_AGE]) + return false; + const diff = Date.now() - hit.now; + return hit.maxAge ? diff > hit.maxAge : self2[MAX_AGE] && diff > self2[MAX_AGE]; +}; +var trim = (self2) => { + if (self2[LENGTH] > self2[MAX]) { + for (let walker = self2[LRU_LIST].tail; self2[LENGTH] > self2[MAX] && walker !== null; ) { + const prev = walker.prev; + del(self2, walker); + walker = prev; } } }; - -// node_modules/.pnpm/@envelop+validation-cache@4.7.0_4hr55tbjlvoppd2sokdhrbpreq/node_modules/@envelop/validation-cache/esm/index.js -var import_lru_cache = __toESM(require_lru_cache(), 1); -var DEFAULT_MAX = 1e3; -var DEFAULT_TTL = 36e5; +var del = (self2, node) => { + if (node) { + const hit = node.value; + if (self2[DISPOSE]) + self2[DISPOSE](hit.key, hit.value); + self2[LENGTH] -= hit.length; + self2[CACHE].delete(hit.key); + self2[LRU_LIST].removeNode(node); + } +}; +var Entry = class { + constructor(key, value, length, now, maxAge) { + this.key = key; + this.value = value; + this.length = length; + this.now = now; + this.maxAge = maxAge || 0; + } +}; +var forEachStep = (self2, fn, node, thisp) => { + let hit = node.value; + if (isStale(self2, hit)) { + del(self2, node); + if (!self2[ALLOW_STALE]) + hit = void 0; + } + if (hit) + fn.call(thisp, hit.value, hit.key, self2); +}; +var lruCache = LRUCache; +var DEFAULT_MAX$1 = 1e3; +var DEFAULT_TTL$1 = 36e5; var rawDocumentSymbol = Symbol("rawDocument"); var useValidationCache = (pluginOptions = {}) => { - const resultCache = typeof pluginOptions.cache !== "undefined" ? pluginOptions.cache : new import_lru_cache.default({ - max: DEFAULT_MAX, - maxAge: DEFAULT_TTL + const resultCache = typeof pluginOptions.cache !== "undefined" ? pluginOptions.cache : new lruCache({ + max: DEFAULT_MAX$1, + maxAge: DEFAULT_TTL$1 }); return { onSchemaChange() { @@ -17519,14 +14110,11 @@ var useValidationCache = (pluginOptions = {}) => { } }; }; - -// node_modules/.pnpm/@envelop+parser-cache@4.7.0_4hr55tbjlvoppd2sokdhrbpreq/node_modules/@envelop/parser-cache/esm/index.js -var import_lru_cache2 = __toESM(require_lru_cache(), 1); -var DEFAULT_MAX2 = 1e3; -var DEFAULT_TTL2 = 36e5; +var DEFAULT_MAX = 1e3; +var DEFAULT_TTL = 36e5; var useParserCache = (pluginOptions = {}) => { - const documentCache = typeof pluginOptions.documentCache !== "undefined" ? pluginOptions.documentCache : new import_lru_cache2.default({ max: DEFAULT_MAX2, maxAge: DEFAULT_TTL2 }); - const errorCache = typeof pluginOptions.errorCache !== "undefined" ? pluginOptions.errorCache : new import_lru_cache2.default({ max: DEFAULT_MAX2, maxAge: DEFAULT_TTL2 }); + const documentCache = typeof pluginOptions.documentCache !== "undefined" ? pluginOptions.documentCache : new lruCache({ max: DEFAULT_MAX, maxAge: DEFAULT_TTL }); + const errorCache = typeof pluginOptions.errorCache !== "undefined" ? pluginOptions.errorCache : new lruCache({ max: DEFAULT_MAX, maxAge: DEFAULT_TTL }); return { onParse({ params, setParsedDocument }) { const { source } = params; @@ -17549,9 +14137,7 @@ var useParserCache = (pluginOptions = {}) => { } }; }; - -// node_modules/.pnpm/@graphql-tools+utils@8.12.0_graphql@16.6.0/node_modules/@graphql-tools/utils/esm/helpers.js -var asArray = (fns) => Array.isArray(fns) ? fns : fns ? [fns] : []; +var asArray$1 = (fns) => Array.isArray(fns) ? fns : fns ? [fns] : []; function compareStrings(a, b) { if (String(a) < String(b)) { return -1; @@ -17586,16 +14172,12 @@ function compareNodes(a, b, customFn) { function isSome(input) { return input != null; } - -// node_modules/.pnpm/@graphql-tools+utils@8.12.0_graphql@16.6.0/node_modules/@graphql-tools/utils/esm/errors.js function createGraphQLError(message, options) { if (versionInfo.major >= 17) { return new GraphQLError(message, options); } return new GraphQLError(message, options === null || options === void 0 ? void 0 : options.nodes, options === null || options === void 0 ? void 0 : options.source, options === null || options === void 0 ? void 0 : options.positions, options === null || options === void 0 ? void 0 : options.path, options === null || options === void 0 ? void 0 : options.originalError, options === null || options === void 0 ? void 0 : options.extensions); } - -// node_modules/.pnpm/@graphql-tools+utils@8.12.0_graphql@16.6.0/node_modules/@graphql-tools/utils/esm/AggregateError.js var AggregateErrorImpl; if (typeof AggregateError === "undefined") { class AggregateErrorClass extends Error { @@ -17612,84 +14194,82 @@ if (typeof AggregateError === "undefined") { } else { AggregateErrorImpl = AggregateError; } -function isAggregateError(error) { +function isAggregateError$1(error) { return "errors" in error && Array.isArray(error["errors"]); } - -// node_modules/.pnpm/@graphql-tools+utils@8.12.0_graphql@16.6.0/node_modules/@graphql-tools/utils/esm/inspect.js -var MAX_RECURSIVE_DEPTH2 = 3; -function inspect2(value) { - return formatValue2(value, []); +var MAX_RECURSIVE_DEPTH = 3; +function inspect(value) { + return formatValue(value, []); } -function formatValue2(value, seenValues) { +function formatValue(value, seenValues) { switch (typeof value) { case "string": return JSON.stringify(value); case "function": return value.name ? `[function ${value.name}]` : "[function]"; case "object": - return formatObjectValue2(value, seenValues); + return formatObjectValue(value, seenValues); default: return String(value); } } -function formatError3(value) { +function formatError(value) { if (value instanceof GraphQLError) { return value.toString(); } return `${value.name}: ${value.message}; ${value.stack}`; } -function formatObjectValue2(value, previouslySeenValues) { +function formatObjectValue(value, previouslySeenValues) { if (value === null) { return "null"; } if (value instanceof Error) { - if (isAggregateError(value)) { - return formatError3(value) + "\n" + formatArray2(value.errors, previouslySeenValues); + if (isAggregateError$1(value)) { + return formatError(value) + "\n" + formatArray(value.errors, previouslySeenValues); } - return formatError3(value); + return formatError(value); } if (previouslySeenValues.includes(value)) { return "[Circular]"; } const seenValues = [...previouslySeenValues, value]; - if (isJSONable2(value)) { + if (isJSONable(value)) { const jsonValue = value.toJSON(); if (jsonValue !== value) { - return typeof jsonValue === "string" ? jsonValue : formatValue2(jsonValue, seenValues); + return typeof jsonValue === "string" ? jsonValue : formatValue(jsonValue, seenValues); } } else if (Array.isArray(value)) { - return formatArray2(value, seenValues); + return formatArray(value, seenValues); } - return formatObject2(value, seenValues); + return formatObject(value, seenValues); } -function isJSONable2(value) { +function isJSONable(value) { return typeof value.toJSON === "function"; } -function formatObject2(object, seenValues) { +function formatObject(object, seenValues) { const entries = Object.entries(object); if (entries.length === 0) { return "{}"; } - if (seenValues.length > MAX_RECURSIVE_DEPTH2) { - return "[" + getObjectTag2(object) + "]"; + if (seenValues.length > MAX_RECURSIVE_DEPTH) { + return "[" + getObjectTag(object) + "]"; } - const properties = entries.map(([key, value]) => key + ": " + formatValue2(value, seenValues)); + const properties = entries.map(([key, value]) => key + ": " + formatValue(value, seenValues)); return "{ " + properties.join(", ") + " }"; } -function formatArray2(array, seenValues) { +function formatArray(array, seenValues) { if (array.length === 0) { return "[]"; } - if (seenValues.length > MAX_RECURSIVE_DEPTH2) { + if (seenValues.length > MAX_RECURSIVE_DEPTH) { return "[Array]"; } const len = array.length; const remaining = array.length; const items = []; for (let i = 0; i < len; ++i) { - items.push(formatValue2(array[i], seenValues)); + items.push(formatValue(array[i], seenValues)); } if (remaining === 1) { items.push("... 1 more item"); @@ -17698,7 +14278,7 @@ function formatArray2(array, seenValues) { } return "[" + items.join(", ") + "]"; } -function getObjectTag2(object) { +function getObjectTag(object) { const tag = Object.prototype.toString.call(object).replace(/^\[object /, "").replace(/]$/, ""); if (tag === "Object" && typeof object.constructor === "function") { const name = object.constructor.name; @@ -17708,18 +14288,14 @@ function getObjectTag2(object) { } return tag; } - -// node_modules/.pnpm/@graphql-tools+utils@8.12.0_graphql@16.6.0/node_modules/@graphql-tools/utils/esm/get-directives.js function getDirectivesInExtensions(node, pathToDirectivesInExtensions = ["directives"]) { return pathToDirectivesInExtensions.reduce((acc, pathSegment) => acc == null ? acc : acc[pathSegment], node === null || node === void 0 ? void 0 : node.extensions); } - -// node_modules/.pnpm/@graphql-tools+utils@8.12.0_graphql@16.6.0/node_modules/@graphql-tools/utils/esm/astFromType.js function astFromType(type) { if (isNonNullType(type)) { const innerType = astFromType(type.ofType); if (innerType.kind === Kind.NON_NULL_TYPE) { - throw new Error(`Invalid type node ${inspect2(type)}. Inner type of non-null type cannot be a non-null type.`); + throw new Error(`Invalid type node ${inspect(type)}. Inner type of non-null type cannot be a non-null type.`); } return { kind: Kind.NON_NULL_TYPE, @@ -17739,8 +14315,6 @@ function astFromType(type) { } }; } - -// node_modules/.pnpm/@graphql-tools+utils@8.12.0_graphql@16.6.0/node_modules/@graphql-tools/utils/esm/astFromValueUntyped.js function astFromValueUntyped(value) { if (value === null) { return { kind: Kind.NULL }; @@ -17778,16 +14352,14 @@ function astFromValueUntyped(value) { } if (typeof value === "number" && isFinite(value)) { const stringNum = String(value); - return integerStringRegExp2.test(stringNum) ? { kind: Kind.INT, value: stringNum } : { kind: Kind.FLOAT, value: stringNum }; + return integerStringRegExp.test(stringNum) ? { kind: Kind.INT, value: stringNum } : { kind: Kind.FLOAT, value: stringNum }; } if (typeof value === "string") { return { kind: Kind.STRING, value }; } throw new TypeError(`Cannot convert value to AST: ${value}.`); } -var integerStringRegExp2 = /^-?(?:0|[1-9][0-9]*)$/; - -// node_modules/.pnpm/@graphql-tools+utils@8.12.0_graphql@16.6.0/node_modules/@graphql-tools/utils/esm/memoize.js +var integerStringRegExp = /^-?(?:0|[1-9][0-9]*)$/; function memoize1(fn) { const memoize1cache = /* @__PURE__ */ new WeakMap(); return function memoized(a1) { @@ -17800,16 +14372,6 @@ function memoize1(fn) { return cachedValue; }; } - -// node_modules/.pnpm/@graphql-tools+utils@8.12.0_graphql@16.6.0/node_modules/@graphql-tools/utils/esm/rootTypes.js -var getRootTypeNames = memoize1(function getRootTypeNames2(schema) { - const rootTypes = getRootTypes(schema); - return new Set([...rootTypes].map((type) => type.name)); -}); -var getRootTypes = memoize1(function getRootTypes2(schema) { - const rootTypeMap = getRootTypeMap(schema); - return new Set(rootTypeMap.values()); -}); var getRootTypeMap = memoize1(function getRootTypeMap2(schema) { const rootTypeMap = /* @__PURE__ */ new Map(); const queryType = schema.getQueryType(); @@ -17826,8 +14388,6 @@ var getRootTypeMap = memoize1(function getRootTypeMap2(schema) { } return rootTypeMap; }); - -// node_modules/.pnpm/@graphql-tools+utils@8.12.0_graphql@16.6.0/node_modules/@graphql-tools/utils/esm/print-schema-with-directives.js function getDocumentNodeFromSchema(schema, options = {}) { const pathToDirectivesInExtensions = options.pathToDirectivesInExtensions; const typesMap = schema.getTypeMap(); @@ -18236,9 +14796,7 @@ function makeDirectiveNodes(schema, directiveValues) { } return directiveNodes; } - -// node_modules/.pnpm/@graphql-tools+utils@8.12.0_graphql@16.6.0/node_modules/@graphql-tools/utils/esm/comments.js -var MAX_LINE_LENGTH2 = 80; +var MAX_LINE_LENGTH = 80; var commentsRegistry = {}; function resetComments() { commentsRegistry = {}; @@ -18295,10 +14853,10 @@ function pushComment(node, entity, field, argument) { function printComment(comment) { return "\n# " + comment.replace(/\n/g, "\n# "); } -function join2(maybeArray, separator) { +function join(maybeArray, separator) { return maybeArray ? maybeArray.filter((x) => x).join(separator || "") : ""; } -function hasMultilineItems2(maybeArray) { +function hasMultilineItems(maybeArray) { var _a2; return (_a2 = maybeArray === null || maybeArray === void 0 ? void 0 : maybeArray.some((str) => str.includes("\n"))) !== null && _a2 !== void 0 ? _a2 : false; } @@ -18317,69 +14875,69 @@ function addDescription(cb) { if (node.kind.includes("Definition") && commentsRegistry[key]) { items.push(...commentsRegistry[key]); } - return join2([...items.map(printComment), node.description, cb(node, _key, _parent, path, ancestors)], "\n"); + return join([...items.map(printComment), node.description, cb(node, _key, _parent, path, ancestors)], "\n"); }; } -function indent2(maybeString) { +function indent(maybeString) { return maybeString && ` ${maybeString.replace(/\n/g, "\n ")}`; } -function block2(array) { +function block(array) { return array && array.length !== 0 ? `{ -${indent2(join2(array, "\n"))} +${indent(join(array, "\n"))} }` : ""; } -function wrap2(start, maybeString, end) { +function wrap(start, maybeString, end) { return maybeString ? start + maybeString + (end || "") : ""; } -function printBlockString2(value, isDescription = false) { +function printBlockString(value, isDescription = false) { const escaped = value.replace(/"""/g, '\\"""'); return (value[0] === " " || value[0] === " ") && value.indexOf("\n") === -1 ? `"""${escaped.replace(/"$/, '"\n')}"""` : `""" -${isDescription ? escaped : indent2(escaped)} +${isDescription ? escaped : indent(escaped)} """`; } -var printDocASTReducer2 = { +var printDocASTReducer = { Name: { leave: (node) => node.value }, Variable: { leave: (node) => "$" + node.name }, Document: { - leave: (node) => join2(node.definitions, "\n\n") + leave: (node) => join(node.definitions, "\n\n") }, OperationDefinition: { leave: (node) => { - const varDefs = wrap2("(", join2(node.variableDefinitions, ", "), ")"); - const prefix2 = join2([node.operation, join2([node.name, varDefs]), join2(node.directives, " ")], " "); + const varDefs = wrap("(", join(node.variableDefinitions, ", "), ")"); + const prefix2 = join([node.operation, join([node.name, varDefs]), join(node.directives, " ")], " "); return prefix2 + " " + node.selectionSet; } }, VariableDefinition: { - leave: ({ variable, type, defaultValue, directives }) => variable + ": " + type + wrap2(" = ", defaultValue) + wrap2(" ", join2(directives, " ")) + leave: ({ variable, type, defaultValue, directives }) => variable + ": " + type + wrap(" = ", defaultValue) + wrap(" ", join(directives, " ")) }, - SelectionSet: { leave: ({ selections }) => block2(selections) }, + SelectionSet: { leave: ({ selections }) => block(selections) }, Field: { leave({ alias, name, arguments: args, directives, selectionSet }) { - const prefix2 = wrap2("", alias, ": ") + name; - let argsLine = prefix2 + wrap2("(", join2(args, ", "), ")"); - if (argsLine.length > MAX_LINE_LENGTH2) { - argsLine = prefix2 + wrap2("(\n", indent2(join2(args, "\n")), "\n)"); + const prefix2 = wrap("", alias, ": ") + name; + let argsLine = prefix2 + wrap("(", join(args, ", "), ")"); + if (argsLine.length > MAX_LINE_LENGTH) { + argsLine = prefix2 + wrap("(\n", indent(join(args, "\n")), "\n)"); } - return join2([argsLine, join2(directives, " "), selectionSet], " "); + return join([argsLine, join(directives, " "), selectionSet], " "); } }, Argument: { leave: ({ name, value }) => name + ": " + value }, FragmentSpread: { - leave: ({ name, directives }) => "..." + name + wrap2(" ", join2(directives, " ")) + leave: ({ name, directives }) => "..." + name + wrap(" ", join(directives, " ")) }, InlineFragment: { - leave: ({ typeCondition, directives, selectionSet }) => join2(["...", wrap2("on ", typeCondition), join2(directives, " "), selectionSet], " ") + leave: ({ typeCondition, directives, selectionSet }) => join(["...", wrap("on ", typeCondition), join(directives, " "), selectionSet], " ") }, FragmentDefinition: { - leave: ({ name, typeCondition, variableDefinitions, directives, selectionSet }) => `fragment ${name}${wrap2("(", join2(variableDefinitions, ", "), ")")} on ${typeCondition} ${wrap2("", join2(directives, " "), " ")}` + selectionSet + leave: ({ name, typeCondition, variableDefinitions, directives, selectionSet }) => `fragment ${name}${wrap("(", join(variableDefinitions, ", "), ")")} on ${typeCondition} ${wrap("", join(directives, " "), " ")}` + selectionSet }, IntValue: { leave: ({ value }) => value }, FloatValue: { leave: ({ value }) => value }, StringValue: { leave: ({ value, block: isBlockString }) => { if (isBlockString) { - return printBlockString2(value); + return printBlockString(value); } return JSON.stringify(value); } @@ -18387,77 +14945,77 @@ var printDocASTReducer2 = { BooleanValue: { leave: ({ value }) => value ? "true" : "false" }, NullValue: { leave: () => "null" }, EnumValue: { leave: ({ value }) => value }, - ListValue: { leave: ({ values }) => "[" + join2(values, ", ") + "]" }, - ObjectValue: { leave: ({ fields }) => "{" + join2(fields, ", ") + "}" }, + ListValue: { leave: ({ values }) => "[" + join(values, ", ") + "]" }, + ObjectValue: { leave: ({ fields }) => "{" + join(fields, ", ") + "}" }, ObjectField: { leave: ({ name, value }) => name + ": " + value }, Directive: { - leave: ({ name, arguments: args }) => "@" + name + wrap2("(", join2(args, ", "), ")") + leave: ({ name, arguments: args }) => "@" + name + wrap("(", join(args, ", "), ")") }, NamedType: { leave: ({ name }) => name }, ListType: { leave: ({ type }) => "[" + type + "]" }, NonNullType: { leave: ({ type }) => type + "!" }, SchemaDefinition: { - leave: ({ directives, operationTypes }) => join2(["schema", join2(directives, " "), block2(operationTypes)], " ") + leave: ({ directives, operationTypes }) => join(["schema", join(directives, " "), block(operationTypes)], " ") }, OperationTypeDefinition: { leave: ({ operation, type }) => operation + ": " + type }, ScalarTypeDefinition: { - leave: ({ name, directives }) => join2(["scalar", name, join2(directives, " ")], " ") + leave: ({ name, directives }) => join(["scalar", name, join(directives, " ")], " ") }, ObjectTypeDefinition: { - leave: ({ name, interfaces, directives, fields }) => join2(["type", name, wrap2("implements ", join2(interfaces, " & ")), join2(directives, " "), block2(fields)], " ") + leave: ({ name, interfaces, directives, fields }) => join(["type", name, wrap("implements ", join(interfaces, " & ")), join(directives, " "), block(fields)], " ") }, FieldDefinition: { - leave: ({ name, arguments: args, type, directives }) => name + (hasMultilineItems2(args) ? wrap2("(\n", indent2(join2(args, "\n")), "\n)") : wrap2("(", join2(args, ", "), ")")) + ": " + type + wrap2(" ", join2(directives, " ")) + leave: ({ name, arguments: args, type, directives }) => name + (hasMultilineItems(args) ? wrap("(\n", indent(join(args, "\n")), "\n)") : wrap("(", join(args, ", "), ")")) + ": " + type + wrap(" ", join(directives, " ")) }, InputValueDefinition: { - leave: ({ name, type, defaultValue, directives }) => join2([name + ": " + type, wrap2("= ", defaultValue), join2(directives, " ")], " ") + leave: ({ name, type, defaultValue, directives }) => join([name + ": " + type, wrap("= ", defaultValue), join(directives, " ")], " ") }, InterfaceTypeDefinition: { - leave: ({ name, interfaces, directives, fields }) => join2(["interface", name, wrap2("implements ", join2(interfaces, " & ")), join2(directives, " "), block2(fields)], " ") + leave: ({ name, interfaces, directives, fields }) => join(["interface", name, wrap("implements ", join(interfaces, " & ")), join(directives, " "), block(fields)], " ") }, UnionTypeDefinition: { - leave: ({ name, directives, types }) => join2(["union", name, join2(directives, " "), wrap2("= ", join2(types, " | "))], " ") + leave: ({ name, directives, types: types2 }) => join(["union", name, join(directives, " "), wrap("= ", join(types2, " | "))], " ") }, EnumTypeDefinition: { - leave: ({ name, directives, values }) => join2(["enum", name, join2(directives, " "), block2(values)], " ") + leave: ({ name, directives, values }) => join(["enum", name, join(directives, " "), block(values)], " ") }, EnumValueDefinition: { - leave: ({ name, directives }) => join2([name, join2(directives, " ")], " ") + leave: ({ name, directives }) => join([name, join(directives, " ")], " ") }, InputObjectTypeDefinition: { - leave: ({ name, directives, fields }) => join2(["input", name, join2(directives, " "), block2(fields)], " ") + leave: ({ name, directives, fields }) => join(["input", name, join(directives, " "), block(fields)], " ") }, DirectiveDefinition: { - leave: ({ name, arguments: args, repeatable, locations }) => "directive @" + name + (hasMultilineItems2(args) ? wrap2("(\n", indent2(join2(args, "\n")), "\n)") : wrap2("(", join2(args, ", "), ")")) + (repeatable ? " repeatable" : "") + " on " + join2(locations, " | ") + leave: ({ name, arguments: args, repeatable, locations }) => "directive @" + name + (hasMultilineItems(args) ? wrap("(\n", indent(join(args, "\n")), "\n)") : wrap("(", join(args, ", "), ")")) + (repeatable ? " repeatable" : "") + " on " + join(locations, " | ") }, SchemaExtension: { - leave: ({ directives, operationTypes }) => join2(["extend schema", join2(directives, " "), block2(operationTypes)], " ") + leave: ({ directives, operationTypes }) => join(["extend schema", join(directives, " "), block(operationTypes)], " ") }, ScalarTypeExtension: { - leave: ({ name, directives }) => join2(["extend scalar", name, join2(directives, " ")], " ") + leave: ({ name, directives }) => join(["extend scalar", name, join(directives, " ")], " ") }, ObjectTypeExtension: { - leave: ({ name, interfaces, directives, fields }) => join2(["extend type", name, wrap2("implements ", join2(interfaces, " & ")), join2(directives, " "), block2(fields)], " ") + leave: ({ name, interfaces, directives, fields }) => join(["extend type", name, wrap("implements ", join(interfaces, " & ")), join(directives, " "), block(fields)], " ") }, InterfaceTypeExtension: { - leave: ({ name, interfaces, directives, fields }) => join2(["extend interface", name, wrap2("implements ", join2(interfaces, " & ")), join2(directives, " "), block2(fields)], " ") + leave: ({ name, interfaces, directives, fields }) => join(["extend interface", name, wrap("implements ", join(interfaces, " & ")), join(directives, " "), block(fields)], " ") }, UnionTypeExtension: { - leave: ({ name, directives, types }) => join2(["extend union", name, join2(directives, " "), wrap2("= ", join2(types, " | "))], " ") + leave: ({ name, directives, types: types2 }) => join(["extend union", name, join(directives, " "), wrap("= ", join(types2, " | "))], " ") }, EnumTypeExtension: { - leave: ({ name, directives, values }) => join2(["extend enum", name, join2(directives, " "), block2(values)], " ") + leave: ({ name, directives, values }) => join(["extend enum", name, join(directives, " "), block(values)], " ") }, InputObjectTypeExtension: { - leave: ({ name, directives, fields }) => join2(["extend input", name, join2(directives, " "), block2(fields)], " ") + leave: ({ name, directives, fields }) => join(["extend input", name, join(directives, " "), block(fields)], " ") } }; -var printDocASTReducerWithComments = Object.keys(printDocASTReducer2).reduce((prev, key) => ({ +var printDocASTReducerWithComments = Object.keys(printDocASTReducer).reduce((prev, key) => ({ ...prev, [key]: { - leave: addDescription(printDocASTReducer2[key].leave) + leave: addDescription(printDocASTReducer[key].leave) } }), {}); function printWithComments(ast) { @@ -18507,12 +15065,12 @@ function getBlockStringIndentation(lines) { let commonIndent = null; for (let i = 1; i < lines.length; i++) { const line = lines[i]; - const indent3 = leadingWhitespace2(line); - if (indent3 === line.length) { + const indent2 = leadingWhitespace(line); + if (indent2 === line.length) { continue; } - if (commonIndent === null || indent3 < commonIndent) { - commonIndent = indent3; + if (commonIndent === null || indent2 < commonIndent) { + commonIndent = indent2; if (commonIndent === 0) { break; } @@ -18520,7 +15078,7 @@ function getBlockStringIndentation(lines) { } return commonIndent === null ? 0 : commonIndent; } -function leadingWhitespace2(str) { +function leadingWhitespace(str) { let i = 0; while (i < str.length && (str[i] === " " || str[i] === " ")) { i++; @@ -18528,10 +15086,30 @@ function leadingWhitespace2(str) { return i; } function isBlank(str) { - return leadingWhitespace2(str) === str.length; + return leadingWhitespace(str) === str.length; } - -// node_modules/.pnpm/@graphql-tools+utils@8.12.0_graphql@16.6.0/node_modules/@graphql-tools/utils/esm/Interfaces.js +var DirectiveLocation; +(function(DirectiveLocation2) { + DirectiveLocation2["QUERY"] = "QUERY"; + DirectiveLocation2["MUTATION"] = "MUTATION"; + DirectiveLocation2["SUBSCRIPTION"] = "SUBSCRIPTION"; + DirectiveLocation2["FIELD"] = "FIELD"; + DirectiveLocation2["FRAGMENT_DEFINITION"] = "FRAGMENT_DEFINITION"; + DirectiveLocation2["FRAGMENT_SPREAD"] = "FRAGMENT_SPREAD"; + DirectiveLocation2["INLINE_FRAGMENT"] = "INLINE_FRAGMENT"; + DirectiveLocation2["VARIABLE_DEFINITION"] = "VARIABLE_DEFINITION"; + DirectiveLocation2["SCHEMA"] = "SCHEMA"; + DirectiveLocation2["SCALAR"] = "SCALAR"; + DirectiveLocation2["OBJECT"] = "OBJECT"; + DirectiveLocation2["FIELD_DEFINITION"] = "FIELD_DEFINITION"; + DirectiveLocation2["ARGUMENT_DEFINITION"] = "ARGUMENT_DEFINITION"; + DirectiveLocation2["INTERFACE"] = "INTERFACE"; + DirectiveLocation2["UNION"] = "UNION"; + DirectiveLocation2["ENUM"] = "ENUM"; + DirectiveLocation2["ENUM_VALUE"] = "ENUM_VALUE"; + DirectiveLocation2["INPUT_OBJECT"] = "INPUT_OBJECT"; + DirectiveLocation2["INPUT_FIELD_DEFINITION"] = "INPUT_FIELD_DEFINITION"; +})(DirectiveLocation || (DirectiveLocation = {})); var MapperKind; (function(MapperKind2) { MapperKind2["TYPE"] = "MapperKind.TYPE"; @@ -18560,8 +15138,6 @@ var MapperKind; MapperKind2["ARGUMENT"] = "MapperKind.ARGUMENT"; MapperKind2["ENUM_VALUE"] = "MapperKind.ENUM_VALUE"; })(MapperKind || (MapperKind = {})); - -// node_modules/.pnpm/@graphql-tools+utils@8.12.0_graphql@16.6.0/node_modules/@graphql-tools/utils/esm/getObjectTypeFromTypeMap.js function getObjectTypeFromTypeMap(typeMap, type) { if (type) { const maybeObjectType = typeMap[type.name]; @@ -18570,8 +15146,6 @@ function getObjectTypeFromTypeMap(typeMap, type) { } } } - -// node_modules/.pnpm/@graphql-tools+utils@8.12.0_graphql@16.6.0/node_modules/@graphql-tools/utils/esm/stub.js function isNamedStub(type) { if ("getFields" in type) { const fields = type.getFields(); @@ -18598,8 +15172,6 @@ function getBuiltInForStub(type) { return type; } } - -// node_modules/.pnpm/@graphql-tools+utils@8.12.0_graphql@16.6.0/node_modules/@graphql-tools/utils/esm/rewire.js function rewireTypes(originalTypeMap, directives) { const referenceTypeMap = /* @__PURE__ */ Object.create(null); for (const typeName in originalTypeMap) { @@ -18747,8 +15319,6 @@ function rewireTypes(originalTypeMap, directives) { return null; } } - -// node_modules/.pnpm/@graphql-tools+utils@8.12.0_graphql@16.6.0/node_modules/@graphql-tools/utils/esm/transformInputValue.js function transformInputValue(type, value, inputLeafValueTransformer = null, inputObjectValueTransformer = null) { if (value == null) { return value; @@ -18788,8 +15358,6 @@ function parseInputValue(type, value) { } }); } - -// node_modules/.pnpm/@graphql-tools+utils@8.12.0_graphql@16.6.0/node_modules/@graphql-tools/utils/esm/mapSchema.js function mapSchema(schema, schemaMapper = {}) { const newTypeMap = mapArguments(mapFields(mapTypes(mapDefaultValues(mapEnumValues(mapTypes(mapDefaultValues(schema.getTypeMap(), schema, serializeInputValue), schema, schemaMapper, (type) => isLeafType(type)), schema, schemaMapper), schema, parseInputValue), schema, schemaMapper, (type) => !isLeafType(type)), schema, schemaMapper), schema, schemaMapper); const originalDirectives = schema.getDirectives(); @@ -19218,8 +15786,6 @@ function correctASTNodes(type) { return type; } } - -// node_modules/.pnpm/@graphql-tools+utils@8.12.0_graphql@16.6.0/node_modules/@graphql-tools/utils/esm/heal.js function healSchema(schema) { healTypes(schema.getTypeMap(), schema.getDirectives()); return schema; @@ -19315,8 +15881,8 @@ function healTypes(originalTypeMap, directives) { } } function healUnderlyingTypes(type) { - const types = type.getTypes(); - types.push(...types.splice(0).map((t) => healType(t)).filter(Boolean)); + const types2 = type.getTypes(); + types2.push(...types2.splice(0).map((t) => healType(t)).filter(Boolean)); } function healType(type) { if (isListType(type)) { @@ -19334,8 +15900,6 @@ function healTypes(originalTypeMap, directives) { return type; } } - -// node_modules/.pnpm/@graphql-tools+utils@8.12.0_graphql@16.6.0/node_modules/@graphql-tools/utils/esm/forEachField.js function forEachField(schema, fn) { const typeMap = schema.getTypeMap(); for (const typeName in typeMap) { @@ -19349,8 +15913,6 @@ function forEachField(schema, fn) { } } } - -// node_modules/.pnpm/@graphql-tools+utils@8.12.0_graphql@16.6.0/node_modules/@graphql-tools/utils/esm/forEachDefaultValue.js function forEachDefaultValue(schema, fn) { const typeMap = schema.getTypeMap(); for (const typeName in typeMap) { @@ -19374,8 +15936,6 @@ function forEachDefaultValue(schema, fn) { } } } - -// node_modules/.pnpm/@graphql-tools+utils@8.12.0_graphql@16.6.0/node_modules/@graphql-tools/utils/esm/mergeDeep.js function mergeDeep(sources, respectPrototype = false) { const target = sources[0] || {}; const output = {}; @@ -19414,18 +15974,12 @@ function mergeDeep(sources, respectPrototype = false) { function isObject(item) { return item && typeof item === "object" && !Array.isArray(item); } - -// node_modules/.pnpm/@graphql-tools+utils@8.12.0_graphql@16.6.0/node_modules/@graphql-tools/utils/esm/isAsyncIterable.js -function isAsyncIterable3(value) { +function isAsyncIterable(value) { return typeof value === "object" && value != null && Symbol.asyncIterator in value && typeof value[Symbol.asyncIterator] === "function"; } - -// node_modules/.pnpm/@graphql-tools+utils@8.12.0_graphql@16.6.0/node_modules/@graphql-tools/utils/esm/isDocumentNode.js function isDocumentNode(object) { return object && typeof object === "object" && "kind" in object && object.kind === Kind.DOCUMENT; } - -// node_modules/.pnpm/@graphql-tools+schema@9.0.4_graphql@16.6.0/node_modules/@graphql-tools/schema/esm/assertResolversPresent.js function assertResolversPresent(schema, resolverValidationOptions = {}) { const { requireResolversForArgs, requireResolversForNonScalar, requireResolversForAllFields } = resolverValidationOptions; if (requireResolversForAllFields && (requireResolversForArgs || requireResolversForNonScalar)) { @@ -19462,8 +16016,6 @@ To disable this validator, use: throw new Error(`Resolver "${typeName}.${fieldName}" must be a function`); } } - -// node_modules/.pnpm/@graphql-tools+schema@9.0.4_graphql@16.6.0/node_modules/@graphql-tools/schema/esm/checkForResolveTypeResolver.js function checkForResolveTypeResolver(schema, requireResolversForResolveType) { mapSchema(schema, { [MapperKind.ABSTRACT_TYPE]: (type) => { @@ -19480,8 +16032,6 @@ function checkForResolveTypeResolver(schema, requireResolversForResolveType) { } }); } - -// node_modules/.pnpm/@graphql-tools+schema@9.0.4_graphql@16.6.0/node_modules/@graphql-tools/schema/esm/extendResolversFromInterfaces.js function extendResolversFromInterfaces(schema, resolvers) { const extendedResolvers = {}; const typeMap = schema.getTypeMap(); @@ -19512,8 +16062,6 @@ function extendResolversFromInterfaces(schema, resolvers) { } return extendedResolvers; } - -// node_modules/.pnpm/@graphql-tools+schema@9.0.4_graphql@16.6.0/node_modules/@graphql-tools/schema/esm/addResolversToSchema.js function addResolversToSchema({ schema, resolvers: inputResolvers, defaultFieldResolver: defaultFieldResolver2, resolverValidationOptions = {}, inheritResolversFromInterfaces = false, updateResolversInPlace = false }) { const { requireResolversToMatchSchema = "error", requireResolversForResolveType } = resolverValidationOptions; const resolvers = inheritResolversFromInterfaces ? extendResolversFromInterfaces(schema, inputResolvers) : inputResolvers; @@ -19771,8 +16319,6 @@ function setFieldProperties(field, propertiesObj) { field[propertyName] = propertiesObj[propertyName]; } } - -// node_modules/.pnpm/@graphql-tools+merge@8.3.6_graphql@16.6.0/node_modules/@graphql-tools/merge/esm/merge-resolvers.js function mergeResolvers(resolversDefinitions, options) { if (!resolversDefinitions || Array.isArray(resolversDefinitions) && resolversDefinitions.length === 0) { return {}; @@ -19805,9 +16351,7 @@ function mergeResolvers(resolversDefinitions, options) { } return result; } - -// node_modules/.pnpm/@graphql-tools+merge@8.3.6_graphql@16.6.0/node_modules/@graphql-tools/merge/esm/typedefs-mergers/arguments.js -function mergeArguments(args1, args2, config) { +function mergeArguments$1(args1, args2, config) { const result = deduplicateArguments([...args2, ...args1].filter(isSome)); if (config && config.sort) { result.sort(compareNodes); @@ -19823,15 +16367,13 @@ function deduplicateArguments(args) { return acc; }, []); } - -// node_modules/.pnpm/@graphql-tools+merge@8.3.6_graphql@16.6.0/node_modules/@graphql-tools/merge/esm/typedefs-mergers/directives.js function directiveAlreadyExists(directivesArr, otherDirective) { return !!directivesArr.find((directive) => directive.name.value === otherDirective.name.value); } function nameAlreadyExists(name, namesArr) { return namesArr.some(({ value }) => value === name.value); } -function mergeArguments2(a1, a2) { +function mergeArguments(a1, a2) { const result = [...a2]; for (const argument of a1) { const existingIndex = result.findIndex((a) => a.name.value === argument.name.value); @@ -19858,7 +16400,7 @@ function deduplicateDirectives(directives) { const firstAt = all.findIndex((d) => d.name.value === directive.name.value); if (firstAt !== i) { const dup = all[firstAt]; - directive.arguments = mergeArguments2(directive.arguments, dup.arguments); + directive.arguments = mergeArguments(directive.arguments, dup.arguments); return null; } return directive; @@ -19873,7 +16415,7 @@ function mergeDirectives(d1 = [], d2 = [], config) { if (directiveAlreadyExists(result, directive)) { const existingDirectiveIndex = result.findIndex((d) => d.name.value === directive.name.value); const existingDirective = result[existingDirectiveIndex]; - result[existingDirectiveIndex].arguments = mergeArguments2(directive.arguments || [], existingDirective.arguments || []); + result[existingDirectiveIndex].arguments = mergeArguments(directive.arguments || [], existingDirective.arguments || []); } else { result.push(directive); } @@ -19915,8 +16457,6 @@ function mergeDirective(node, existingNode) { function deduplicateLists(source, target, filterFn) { return source.concat(target.filter((val) => filterFn(val, source))); } - -// node_modules/.pnpm/@graphql-tools+merge@8.3.6_graphql@16.6.0/node_modules/@graphql-tools/merge/esm/typedefs-mergers/enum-values.js function mergeEnumValues(first, second, config) { if (config === null || config === void 0 ? void 0 : config.consistentEnumMerge) { const reversed = []; @@ -19950,8 +16490,6 @@ function mergeEnumValues(first, second, config) { } return result; } - -// node_modules/.pnpm/@graphql-tools+merge@8.3.6_graphql@16.6.0/node_modules/@graphql-tools/merge/esm/typedefs-mergers/enum.js function mergeEnum(e1, e2, config) { if (e2) { return { @@ -19968,13 +16506,11 @@ function mergeEnum(e1, e2, config) { kind: Kind.ENUM_TYPE_DEFINITION } : e1; } - -// node_modules/.pnpm/@graphql-tools+merge@8.3.6_graphql@16.6.0/node_modules/@graphql-tools/merge/esm/typedefs-mergers/utils.js -function isStringTypes(types) { - return typeof types === "string"; +function isStringTypes(types2) { + return typeof types2 === "string"; } -function isSourceTypes(types) { - return types instanceof Source; +function isSourceTypes(types2) { + return types2 instanceof Source; } function extractType(type) { let visitedType = type; @@ -20023,8 +16559,6 @@ function defaultStringComparator(a, b) { return CompareVal.A_GREATER_THAN_B; return CompareVal.A_EQUALS_B; } - -// node_modules/.pnpm/@graphql-tools+merge@8.3.6_graphql@16.6.0/node_modules/@graphql-tools/merge/esm/typedefs-mergers/fields.js function fieldAlreadyExists(fieldsArr, otherField, config) { const result = fieldsArr.find((field) => field.name.value === otherField.name.value); if (result && !(config === null || config === void 0 ? void 0 : config.ignoreFieldConflicts)) { @@ -20055,7 +16589,7 @@ function mergeFields(type, f1, f2, config) { existing.type = field.type; } } - existing.arguments = mergeArguments(field["arguments"] || [], existing.arguments || [], config); + existing.arguments = mergeArguments$1(field["arguments"] || [], existing.arguments || [], config); existing.directives = mergeDirectives(field.directives, existing.directives, config); existing.description = field.description || existing.description; } else { @@ -20095,8 +16629,6 @@ function safeChangeForFieldType(oldType, newType, ignoreNullability = false) { } return false; } - -// node_modules/.pnpm/@graphql-tools+merge@8.3.6_graphql@16.6.0/node_modules/@graphql-tools/merge/esm/typedefs-mergers/input-type.js function mergeInputType(node, existingNode, config) { if (existingNode) { try { @@ -20117,8 +16649,6 @@ function mergeInputType(node, existingNode, config) { kind: Kind.INPUT_OBJECT_TYPE_DEFINITION } : node; } - -// node_modules/.pnpm/@graphql-tools+merge@8.3.6_graphql@16.6.0/node_modules/@graphql-tools/merge/esm/typedefs-mergers/interface.js function mergeInterface(node, existingNode, config) { if (existingNode) { try { @@ -20140,10 +16670,8 @@ function mergeInterface(node, existingNode, config) { kind: Kind.INTERFACE_TYPE_DEFINITION } : node; } - -// node_modules/.pnpm/@graphql-tools+merge@8.3.6_graphql@16.6.0/node_modules/@graphql-tools/merge/esm/typedefs-mergers/merge-named-type-array.js -function alreadyExists(arr, other) { - return !!arr.find((i) => i.name.value === other.name.value); +function alreadyExists(arr, other2) { + return !!arr.find((i) => i.name.value === other2.name.value); } function mergeNamedTypeArray(first = [], second = [], config = {}) { const result = [...second, ...first.filter((d) => !alreadyExists(second, d))]; @@ -20152,8 +16680,6 @@ function mergeNamedTypeArray(first = [], second = [], config = {}) { } return result; } - -// node_modules/.pnpm/@graphql-tools+merge@8.3.6_graphql@16.6.0/node_modules/@graphql-tools/merge/esm/typedefs-mergers/type.js function mergeType(node, existingNode, config) { if (existingNode) { try { @@ -20175,8 +16701,6 @@ function mergeType(node, existingNode, config) { kind: Kind.OBJECT_TYPE_DEFINITION } : node; } - -// node_modules/.pnpm/@graphql-tools+merge@8.3.6_graphql@16.6.0/node_modules/@graphql-tools/merge/esm/typedefs-mergers/scalar.js function mergeScalar(node, existingNode, config) { if (existingNode) { return { @@ -20192,8 +16716,6 @@ function mergeScalar(node, existingNode, config) { kind: Kind.SCALAR_TYPE_DEFINITION } : node; } - -// node_modules/.pnpm/@graphql-tools+merge@8.3.6_graphql@16.6.0/node_modules/@graphql-tools/merge/esm/typedefs-mergers/union.js function mergeUnion(first, second, config) { if (second) { return { @@ -20210,8 +16732,6 @@ function mergeUnion(first, second, config) { kind: Kind.UNION_TYPE_DEFINITION } : first; } - -// node_modules/.pnpm/@graphql-tools+merge@8.3.6_graphql@16.6.0/node_modules/@graphql-tools/merge/esm/typedefs-mergers/schema-def.js var DEFAULT_OPERATION_TYPE_NAME_MAP = { query: "Query", mutation: "Mutation", @@ -20241,8 +16761,6 @@ function mergeSchemaDefs(node, existingNode, config) { kind: Kind.SCHEMA_DEFINITION } : node; } - -// node_modules/.pnpm/@graphql-tools+merge@8.3.6_graphql@16.6.0/node_modules/@graphql-tools/merge/esm/typedefs-mergers/merge-nodes.js var schemaDefSymbol = "SCHEMA_DEF_SYMBOL"; function isNamedDefinitionNode(definitionNode) { return "name" in definitionNode; @@ -20298,8 +16816,6 @@ function mergeGraphQLNodes(nodes, config) { } return mergedResultMap; } - -// node_modules/.pnpm/@graphql-tools+merge@8.3.6_graphql@16.6.0/node_modules/@graphql-tools/merge/esm/typedefs-mergers/merge-typedefs.js function mergeTypeDefs(typeSource, config) { resetComments(); const doc = { @@ -20406,8 +16922,6 @@ function mergeGraphQLTypes(typeSource, config) { } return mergedNodeDefinitions; } - -// node_modules/.pnpm/@graphql-tools+merge@8.3.6_graphql@16.6.0/node_modules/@graphql-tools/merge/esm/extensions.js function mergeExtensions(extensions) { return mergeDeep(extensions); } @@ -20448,8 +16962,6 @@ function applyExtensions(schema, extensions) { } return schema; } - -// node_modules/.pnpm/@graphql-tools+schema@9.0.4_graphql@16.6.0/node_modules/@graphql-tools/schema/esm/makeExecutableSchema.js function makeExecutableSchema({ typeDefs, resolvers = {}, resolverValidationOptions = {}, inheritResolversFromInterfaces = false, updateResolversInPlace = false, schemaExtensions, ...otherOptions }) { if (typeof resolverValidationOptions !== "object") { throw new Error("Expected `resolverValidationOptions` to be an object"); @@ -20481,17 +16993,16 @@ function makeExecutableSchema({ typeDefs, resolvers = {}, resolverValidationOpti assertResolversPresent(schema, resolverValidationOptions); } if (schemaExtensions) { - schemaExtensions = mergeExtensions(asArray(schemaExtensions)); + schemaExtensions = mergeExtensions(asArray$1(schemaExtensions)); applyExtensions(schema, schemaExtensions); } return schema; } - -// node_modules/.pnpm/@graphql-yoga+common@2.12.12_graphql@16.6.0/node_modules/@graphql-yoga/common/esm/server.js -var crossUndiciFetch = __toESM(require_global_ponyfill(), 1); - -// node_modules/.pnpm/@graphql-yoga+common@2.12.12_graphql@16.6.0/node_modules/@graphql-yoga/common/esm/processRequest.js -async function processRequest({ request: request2, params, enveloped, fetchAPI, onResultProcessHooks }) { +var fetch$1 = globalThis.fetch; +var Request$1 = globalThis.Request; +var Response$1 = globalThis.Response; +var ReadableStream = globalThis.ReadableStream; +async function processRequest({ request, params, enveloped, fetchAPI, onResultProcessHooks }) { const document2 = enveloped.parse(params.query); enveloped.validate(enveloped.schema, document2); const contextValue = await enveloped.contextFactory(); @@ -20508,7 +17019,7 @@ async function processRequest({ request: request2, params, enveloped, fetchAPI, let resultProcessor; for (const onResultProcessHook of onResultProcessHooks) { await onResultProcessHook({ - request: request2, + request, result, resultProcessor, setResultProcessor(newResultProcessor) { @@ -20524,16 +17035,14 @@ async function processRequest({ request: request2, params, enveloped, fetchAPI, } return resultProcessor(result, fetchAPI); } - -// node_modules/.pnpm/@graphql-yoga+common@2.12.12_graphql@16.6.0/node_modules/@graphql-yoga/common/esm/plugins/useCORS.js -function getCORSHeadersByRequestAndOptions(request2, corsOptions) { +function getCORSHeadersByRequestAndOptions(request, corsOptions) { var _a2, _b; const headers = {}; if (corsOptions === false) { return headers; } if (corsOptions.origin == null || corsOptions.origin.length === 0 || corsOptions.origin.includes("*")) { - const currentOrigin = request2.headers.get("origin"); + const currentOrigin = request.headers.get("origin"); if (currentOrigin != null) { headers["Access-Control-Allow-Origin"] = currentOrigin; headers["Vary"] = "Origin"; @@ -20546,7 +17055,7 @@ function getCORSHeadersByRequestAndOptions(request2, corsOptions) { if (corsOptions.origin.length === 1) { headers["Access-Control-Allow-Origin"] = corsOptions.origin[0]; } else { - const currentOrigin = request2.headers.get("origin"); + const currentOrigin = request.headers.get("origin"); if (currentOrigin != null && corsOptions.origin.includes(currentOrigin)) { headers["Access-Control-Allow-Origin"] = currentOrigin; headers["Vary"] = "Origin"; @@ -20558,7 +17067,7 @@ function getCORSHeadersByRequestAndOptions(request2, corsOptions) { if ((_a2 = corsOptions.methods) === null || _a2 === void 0 ? void 0 : _a2.length) { headers["Access-Control-Allow-Methods"] = corsOptions.methods.join(", "); } else { - const requestMethod = request2.headers.get("access-control-request-method"); + const requestMethod = request.headers.get("access-control-request-method"); if (requestMethod) { headers["Access-Control-Allow-Methods"] = requestMethod; } @@ -20566,7 +17075,7 @@ function getCORSHeadersByRequestAndOptions(request2, corsOptions) { if ((_b = corsOptions.allowedHeaders) === null || _b === void 0 ? void 0 : _b.length) { headers["Access-Control-Allow-Headers"] = corsOptions.allowedHeaders.join(", "); } else { - const requestHeaders = request2.headers.get("access-control-request-headers"); + const requestHeaders = request.headers.get("access-control-request-headers"); if (requestHeaders) { headers["Access-Control-Allow-Headers"] = requestHeaders; if (headers["Vary"]) { @@ -20590,9 +17099,9 @@ function getCORSHeadersByRequestAndOptions(request2, corsOptions) { } return headers; } -async function getCORSResponseHeaders(request2, corsOptionsFactory, serverContext) { - const corsOptions = await corsOptionsFactory(request2, serverContext); - return getCORSHeadersByRequestAndOptions(request2, corsOptions); +async function getCORSResponseHeaders(request, corsOptionsFactory, serverContext) { + const corsOptions = await corsOptionsFactory(request, serverContext); + return getCORSHeadersByRequestAndOptions(request, corsOptions); } function useCORS(options) { let corsOptionsFactory = () => ({}); @@ -20609,9 +17118,9 @@ function useCORS(options) { } } return { - async onRequest({ request: request2, serverContext, fetchAPI, endResponse }) { - if (request2.method.toUpperCase() === "OPTIONS") { - const headers = await getCORSResponseHeaders(request2, corsOptionsFactory, serverContext); + async onRequest({ request, serverContext, fetchAPI, endResponse }) { + if (request.method.toUpperCase() === "OPTIONS") { + const headers = await getCORSResponseHeaders(request, corsOptionsFactory, serverContext); const response = new fetchAPI.Response(null, { status: 204, headers: { @@ -20622,22 +17131,20 @@ function useCORS(options) { endResponse(response); } }, - async onResponse({ request: request2, serverContext, response }) { - const headers = await getCORSResponseHeaders(request2, corsOptionsFactory, serverContext); + async onResponse({ request, serverContext, response }) { + const headers = await getCORSResponseHeaders(request, corsOptionsFactory, serverContext); for (const headerName in headers) { response.headers.set(headerName, headers[headerName]); } } }; } - -// node_modules/.pnpm/@graphql-yoga+common@2.12.12_graphql@16.6.0/node_modules/@graphql-yoga/common/esm/plugins/useHealthCheck.js function useHealthCheck(options) { const id = (options === null || options === void 0 ? void 0 : options.id) || Date.now().toString(); const logger = (options === null || options === void 0 ? void 0 : options.logger) || console; return { - async onRequest({ request: request2, endResponse, fetchAPI }) { - const requestPath = request2.url.split("?")[0]; + async onRequest({ request, endResponse, fetchAPI }) { + const requestPath = request.url.split("?")[0]; if (requestPath.endsWith("/health")) { logger.debug(`Responding Health Check`); const response = new fetchAPI.Response(JSON.stringify({ @@ -20652,7 +17159,7 @@ function useHealthCheck(options) { endResponse(response); } else if (requestPath.endsWith("/readiness")) { logger.debug(`Responding Readiness Check`); - const readinessResponse = await fetchAPI.fetch(request2.url.replace("/readiness", "/health")); + const readinessResponse = await fetchAPI.fetch(request.url.replace("/readiness", "/health")); const { message } = await readinessResponse.json(); if (readinessResponse.status === 200 && readinessResponse.headers.get("x-yoga-id") === id && message === "alive") { const response = new fetchAPI.Response(JSON.stringify({ @@ -20671,16 +17178,12 @@ function useHealthCheck(options) { } }; } - -// node_modules/.pnpm/@graphql-yoga+common@2.12.12_graphql@16.6.0/node_modules/@graphql-yoga/common/esm/graphiqlHTML.js -var graphiqlHTML_default = '__TITLE__
`);\n tasks = \"\";\n }\n scheduled = false;\n };\n let context;\n let writable;\n let tmp = \"\";\n let tasks = \"\";\n let firstFlushed = false;\n let completed = false;\n let scriptFlushed = false;\n let scheduled = true;\n let buffer = {\n write(payload) {\n tmp += payload;\n }\n };\n sharedConfig.context = context = {\n id: renderId || \"\",\n count: 0,\n async: true,\n resources: {},\n suspense: {},\n assets: [],\n nonce,\n block(p) {\n if (!firstFlushed) blockingResources.push(p);\n },\n replace(id, payloadFn) {\n if (firstFlushed) return;\n const placeholder = ``;\n const first = html.indexOf(placeholder);\n if (first === -1) return;\n const last = html.indexOf(``, first + placeholder.length);\n html = html.replace(html.slice(first, last + placeholder.length + 1), resolveSSRNode(payloadFn()));\n },\n writeResource(id, p, error, wait) {\n if (error) return pushTask(serializeSet(dedupe, id, p, serializeError));\n if (!p || typeof p !== \"object\" || !(\"then\" in p)) return pushTask(serializeSet(dedupe, id, p));\n if (!firstFlushed) wait && blockingResources.push(p);else pushTask(`_$HY.init(\"${id}\")`);\n p.then(d => {\n !completed && pushTask(serializeSet(dedupe, id, d));\n }).catch(() => {\n !completed && pushTask(`_$HY.set(\"${id}\", {})`);\n });\n },\n registerFragment(key) {\n if (!registry.has(key)) {\n registry.set(key, []);\n firstFlushed && pushTask(`_$HY.init(\"${key}\")`);\n }\n return (value, error) => {\n if (registry.has(key)) {\n const keys = registry.get(key);\n registry.delete(key);\n if (waitForFragments(registry, key)) return;\n if ((value !== undefined || error) && !completed) {\n if (!firstFlushed) {\n Promise.resolve().then(() => html = replacePlaceholder(html, key, value !== undefined ? value : \"\"));\n error && pushTask(serializeSet(dedupe, key, error, serializeError));\n } else {\n buffer.write(``);\n pushTask(`${keys.length ? keys.map(k => `_$HY.unset(\"${k}\")`).join(\";\") + \";\" : \"\"}$df(\"${key}\"${error ? \",\" + serializeError(error) : \"\"})${!scriptFlushed ? \";\" + REPLACE_SCRIPT : \"\"}`);\n scriptFlushed = true;\n }\n }\n }\n if (!registry.size) Promise.resolve().then(checkEnd);\n return firstFlushed;\n };\n }\n };\n let html = resolveSSRNode(escape(code()));\n function doShell() {\n sharedConfig.context = context;\n context.noHydrate = true;\n html = injectAssets(context.assets, html);\n for (const key in context.resources) {\n if (!(\"data\" in context.resources[key] || context.resources[key].ref[0].error)) pushTask(`_$HY.init(\"${key}\")`);\n }\n for (const key of registry.keys()) pushTask(`_$HY.init(\"${key}\")`);\n if (tasks.length) html = injectScripts(html, tasks, nonce);\n buffer.write(html);\n tasks = \"\";\n scheduled = false;\n onCompleteShell && onCompleteShell({\n write(v) {\n !completed && buffer.write(v);\n }\n });\n }\n return {\n then(fn) {\n function complete() {\n doShell();\n fn(tmp);\n }\n if (onCompleteAll) {\n ogComplete = onCompleteAll;\n onCompleteAll = options => {\n ogComplete(options);\n complete();\n };\n } else onCompleteAll = complete;\n if (!registry.size) Promise.resolve().then(checkEnd);\n },\n pipe(w) {\n Promise.allSettled(blockingResources).then(() => {\n doShell();\n buffer = writable = w;\n buffer.write(tmp);\n firstFlushed = true;\n if (completed) writable.end();else setTimeout(checkEnd);\n });\n },\n pipeTo(w) {\n Promise.allSettled(blockingResources).then(() => {\n doShell();\n const encoder = new TextEncoder();\n const writer = w.getWriter();\n writable = {\n end() {\n writer.releaseLock();\n w.close();\n }\n };\n buffer = {\n write(payload) {\n writer.write(encoder.encode(payload));\n }\n };\n buffer.write(tmp);\n firstFlushed = true;\n if (completed) writable.end();else setTimeout(checkEnd);\n });\n }\n };\n}\nfunction Assets(props) {\n useAssets(() => props.children);\n}\nfunction HydrationScript(props) {\n const {\n nonce\n } = sharedConfig.context;\n return ssr(generateHydrationScript({\n nonce,\n ...props\n }));\n}\nfunction NoHydration(props) {\n const c = sharedConfig.context;\n c.noHydrate = true;\n const children = props.children;\n c.noHydrate = false;\n return children;\n}\nfunction ssr(t, ...nodes) {\n if (nodes.length) {\n let result = \"\";\n for (let i = 0; i < nodes.length; i++) {\n result += t[i];\n const node = nodes[i];\n if (node !== undefined) result += resolveSSRNode(node);\n }\n t = result + t[nodes.length];\n }\n return {\n t\n };\n}\nfunction ssrClassList(value) {\n if (!value) return \"\";\n let classKeys = Object.keys(value),\n result = \"\";\n for (let i = 0, len = classKeys.length; i < len; i++) {\n const key = classKeys[i],\n classValue = !!value[key];\n if (!key || !classValue) continue;\n i && (result += \" \");\n result += key;\n }\n return result;\n}\nfunction ssrStyle(value) {\n if (!value) return \"\";\n if (typeof value === \"string\") return value;\n let result = \"\";\n const k = Object.keys(value);\n for (let i = 0; i < k.length; i++) {\n const s = k[i];\n if (i) result += \";\";\n result += `${s}:${escape(value[s], true)}`;\n }\n return result;\n}\nfunction ssrElement(tag, props, children, needsId) {\n let result = `<${tag}${needsId ? ssrHydrationKey() : \"\"} `;\n if (props == null) props = {};else if (typeof props === \"function\") props = props();\n const keys = Object.keys(props);\n let classResolved;\n for (let i = 0; i < keys.length; i++) {\n const prop = keys[i];\n if (ChildProperties.has(prop)) {\n if (children === undefined) children = prop === \"innerHTML\" ? props[prop] : escape(props[prop]);\n continue;\n }\n const value = props[prop];\n if (prop === \"style\") {\n result += `style=\"${ssrStyle(value)}\"`;\n } else if (prop === \"class\" || prop === \"className\" || prop === \"classList\") {\n if (classResolved) continue;\n let n;\n result += `class=\"${(n = props.class) ? n + \" \" : \"\"}${(n = props.className) ? n + \" \" : \"\"}${ssrClassList(props.classList)}\"`;\n classResolved = true;\n } else if (BooleanAttributes.has(prop)) {\n if (value) result += prop;else continue;\n } else if (value == undefined || prop === \"ref\" || prop.slice(0, 2) === \"on\") {\n continue;\n } else {\n result += `${Aliases[prop] || prop}=\"${escape(value, true)}\"`;\n }\n if (i !== keys.length - 1) result += \" \";\n }\n return {\n t: result + `>${resolveSSRNode(children)}`\n };\n}\nfunction ssrAttribute(key, value, isBoolean) {\n return isBoolean ? value ? \" \" + key : \"\" : value != null ? ` ${key}=\"${value}\"` : \"\";\n}\nfunction ssrHydrationKey() {\n const hk = getHydrationKey();\n return hk ? ` data-hk=\"${hk}\"` : \"\";\n}\nfunction escape(s, attr) {\n const t = typeof s;\n if (t !== \"string\") {\n if (!attr && t === \"function\") return escape(s(), attr);\n if (!attr && Array.isArray(s)) {\n let r = \"\";\n for (let i = 0; i < s.length; i++) r += resolveSSRNode(escape(s[i], attr));\n return {\n t: r\n };\n }\n if (attr && t === \"boolean\") return String(s);\n return s;\n }\n const delim = attr ? '\"' : \"<\";\n const escDelim = attr ? \""\" : \"<\";\n let iDelim = s.indexOf(delim);\n let iAmp = s.indexOf(\"&\");\n if (iDelim < 0 && iAmp < 0) return s;\n let left = 0,\n out = \"\";\n while (iDelim >= 0 && iAmp >= 0) {\n if (iDelim < iAmp) {\n if (left < iDelim) out += s.substring(left, iDelim);\n out += escDelim;\n left = iDelim + 1;\n iDelim = s.indexOf(delim, left);\n } else {\n if (left < iAmp) out += s.substring(left, iAmp);\n out += \"&\";\n left = iAmp + 1;\n iAmp = s.indexOf(\"&\", left);\n }\n }\n if (iDelim >= 0) {\n do {\n if (left < iDelim) out += s.substring(left, iDelim);\n out += escDelim;\n left = iDelim + 1;\n iDelim = s.indexOf(delim, left);\n } while (iDelim >= 0);\n } else while (iAmp >= 0) {\n if (left < iAmp) out += s.substring(left, iAmp);\n out += \"&\";\n left = iAmp + 1;\n iAmp = s.indexOf(\"&\", left);\n }\n return left < s.length ? out + s.substring(left) : out;\n}\nfunction resolveSSRNode(node) {\n const t = typeof node;\n if (t === \"string\") return node;\n if (node == null || t === \"boolean\") return \"\";\n if (Array.isArray(node)) {\n let mapped = \"\";\n for (let i = 0, len = node.length; i < len; i++) mapped += resolveSSRNode(node[i]);\n return mapped;\n }\n if (t === \"object\") return node.t;\n if (t === \"function\") return resolveSSRNode(node());\n return String(node);\n}\nfunction getHydrationKey() {\n const hydrate = sharedConfig.context;\n return hydrate && !hydrate.noHydrate && `${hydrate.id}${hydrate.count++}`;\n}\nfunction useAssets(fn) {\n sharedConfig.context.assets.push(() => resolveSSRNode(fn()));\n}\nfunction getAssets() {\n const assets = sharedConfig.context.assets;\n let out = \"\";\n for (let i = 0, len = assets.length; i < len; i++) out += assets[i]();\n return out;\n}\nfunction generateHydrationScript({\n eventNames = [\"click\", \"input\"],\n nonce\n} = {}) {\n return `var e,t;e=window._$HY||(_$HY={events:[],completed:new WeakSet,r:{}}),t=e=>e&&e.hasAttribute&&(e.hasAttribute(\"data-hk\")?e:t(e.host&&e.host instanceof Node?e.host:e.parentNode)),[\"${eventNames.join('\",\"')}\"].forEach((o=>document.addEventListener(o,(o=>{let s=o.composedPath&&o.composedPath()[0]||o.target,a=t(s);a&&!e.completed.has(a)&&e.events.push([a,o])})))),e.init=(t,o)=>{e.r[t]=[new Promise(((e,t)=>o=e)),o]},e.set=(t,o,s)=>{(s=e.r[t])&&s[1](o),e.r[t]=[o]},e.unset=t=>{delete e.r[t]},e.load=t=>e.r[t];`;\n}\nfunction injectAssets(assets, html) {\n if (!assets || !assets.length) return html;\n let out = \"\";\n for (let i = 0, len = assets.length; i < len; i++) out += assets[i]();\n return html.replace(``, out + ``);\n}\nfunction injectScripts(html, scripts, nonce) {\n const tag = `${scripts}`;\n const index = html.indexOf(\"\");\n if (index > -1) {\n return html.slice(0, index) + tag + html.slice(index);\n }\n return html + tag;\n}\nfunction serializeError(error) {\n if (error.message) {\n const fields = {};\n const keys = Object.getOwnPropertyNames(error);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const value = error[key];\n if (!value || key !== \"message\" && typeof value !== \"function\") {\n fields[key] = value;\n }\n }\n return `Object.assign(new Error(${stringify(error.message)}), ${stringify(fields)})`;\n }\n return stringify(error);\n}\nfunction waitForFragments(registry, key) {\n for (const k of [...registry.keys()].reverse()) {\n if (key.startsWith(k)) {\n registry.get(k).push(key);\n return true;\n }\n }\n return false;\n}\nfunction serializeSet(registry, key, value, serializer = stringify) {\n const exist = registry.get(value);\n if (exist) return `_$HY.set(\"${key}\", _$HY.r[\"${exist}\"][0])`;\n value !== null && typeof value === \"object\" && registry.set(value, key);\n return `_$HY.set(\"${key}\", ${serializer(value)})`;\n}\nfunction replacePlaceholder(html, key, value) {\n const nextRegex = /(<[/]?span[^>]*>)/g;\n const marker = ``;\n const first = html.indexOf(marker);\n if (first === -1) return html;\n nextRegex.lastIndex = first + marker.length;\n let match;\n let open = 0,\n close = 0;\n while (match = nextRegex.exec(html)) {\n if (match[0][1] === \"/\") {\n close++;\n if (close > open) break;\n } else open++;\n }\n return html.slice(0, first) + value + html.slice(nextRegex.lastIndex);\n}\nfunction pipeToNodeWritable(code, writable, options = {}) {\n if (options.onReady) {\n options.onCompleteShell = ({\n write\n }) => {\n options.onReady({\n write,\n startWriting() {\n stream.pipe(writable);\n }\n });\n };\n }\n const stream = renderToStream(code, options);\n if (!options.onReady) stream.pipe(writable);\n}\nfunction pipeToWritable(code, writable, options = {}) {\n if (options.onReady) {\n options.onCompleteShell = ({\n write\n }) => {\n options.onReady({\n write,\n startWriting() {\n stream.pipeTo(writable);\n }\n });\n };\n }\n const stream = renderToStream(code, options);\n if (!options.onReady) stream.pipeTo(writable);\n}\nfunction ssrSpread(props, isSVG, skipChildren) {\n let result = \"\";\n if (props == null) return result;\n if (typeof props === \"function\") props = props();\n const keys = Object.keys(props);\n let classResolved;\n for (let i = 0; i < keys.length; i++) {\n const prop = keys[i];\n if (prop === \"children\") {\n !skipChildren && console.warn(`SSR currently does not support spread children.`);\n continue;\n }\n const value = props[prop];\n if (prop === \"style\") {\n result += `style=\"${ssrStyle(value)}\"`;\n } else if (prop === \"class\" || prop === \"className\" || prop === \"classList\") {\n if (classResolved) continue;\n let n;\n result += `class=\"${(n = props.class) ? n + \" \" : \"\"}${(n = props.className) ? n + \" \" : \"\"}${ssrClassList(props.classList)}\"`;\n classResolved = true;\n } else if (BooleanAttributes.has(prop)) {\n if (value) result += prop;else continue;\n } else if (value == undefined || prop === \"ref\" || prop.slice(0, 2) === \"on\") {\n continue;\n } else {\n result += `${Aliases[prop] || prop}=\"${escape(value, true)}\"`;\n }\n if (i !== keys.length - 1) result += \" \";\n }\n return result;\n}\n\nconst isServer = true;\nfunction insert() {}\nfunction spread() {}\nfunction delegateEvents() {}\nfunction Dynamic(props) {\n const [p, others] = splitProps(props, [\"component\"]);\n const comp = p.component,\n t = typeof comp;\n if (comp) {\n if (t === \"function\") return comp(others);else if (t === \"string\") {\n return ssrElement(comp, others, undefined, true);\n }\n }\n}\nfunction Portal(props) {\n return \"\";\n}\n\nexport { Assets, Dynamic, HydrationScript, NoHydration, Portal, delegateEvents, escape, generateHydrationScript, getAssets, getHydrationKey, insert, isServer, pipeToNodeWritable, pipeToWritable, renderToStream, renderToString, renderToStringAsync, resolveSSRNode, spread, ssr, ssrAttribute, ssrClassList, ssrElement, ssrHydrationKey, ssrSpread, ssrStyle, useAssets };\n", "import { renderToStringAsync, isServer, createComponent, spread, delegateEvents, ssr, ssrHydrationKey, escape, Assets, ssrAttribute, HydrationScript, NoHydration, ssrElement } from 'solid-js/web';\nimport { createContext, createUniqueId, useContext, createRenderEffect, onCleanup, createSignal, getOwner, runWithOwner, createMemo, useTransition, untrack, createComponent as createComponent$1, on, resetErrorBoundaries, children, createRoot, Show, ErrorBoundary as ErrorBoundary$1, createEffect, onMount, createResource, Suspense, sharedConfig } from 'solid-js';\nimport { request } from 'graphql-request';\nimport { createServer } from '@graphql-yoga/common';\n\nconst FETCH_EVENT = \"$FETCH\";\n\nfunction getRouteMatches$1(routes, path, method) {\n const segments = path.split(\"/\").filter(Boolean);\n routeLoop:\n for (const route of routes) {\n const matchSegments = route.matchSegments;\n if (segments.length < matchSegments.length || !route.wildcard && segments.length > matchSegments.length) {\n continue;\n }\n for (let index = 0; index < matchSegments.length; index++) {\n const match = matchSegments[index];\n if (!match) {\n continue;\n }\n if (segments[index] !== match) {\n continue routeLoop;\n }\n }\n const handler = route[method];\n if (handler === \"skip\" || handler === void 0) {\n return;\n }\n const params = {};\n for (const { type, name, index } of route.params) {\n if (type === \":\") {\n params[name] = segments[index];\n } else {\n params[name] = segments.slice(index).join(\"/\");\n }\n }\n return { handler, params };\n }\n}\n\nlet apiRoutes$1;\nconst registerApiRoutes = (routes) => {\n apiRoutes$1 = routes;\n};\nasync function internalFetch(route, init) {\n if (route.startsWith(\"http\")) {\n return await fetch(route, init);\n }\n let url = new URL(route, \"http://internal\");\n const request = new Request(url.href, init);\n const handler = getRouteMatches$1(apiRoutes$1, url.pathname, request.method.toLowerCase());\n let apiEvent = Object.freeze({\n request,\n params: handler.params,\n env: {},\n $type: FETCH_EVENT,\n fetch: internalFetch\n });\n const response = await handler.handler(apiEvent);\n return response;\n}\n\nconst XSolidStartLocationHeader = \"x-solidstart-location\";\nconst LocationHeader = \"Location\";\nconst ContentTypeHeader = \"content-type\";\nconst XSolidStartResponseTypeHeader = \"x-solidstart-response-type\";\nconst XSolidStartContentTypeHeader = \"x-solidstart-content-type\";\nconst XSolidStartOrigin = \"x-solidstart-origin\";\nconst JSONResponseType = \"application/json\";\nfunction redirect(url, init = 302) {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n if (url === \"\") {\n url = \"/\";\n }\n let headers = new Headers(responseInit.headers);\n headers.set(LocationHeader, url);\n const response = new Response(null, {\n ...responseInit,\n headers\n });\n return response;\n}\nconst redirectStatusCodes = /* @__PURE__ */ new Set([204, 301, 302, 303, 307, 308]);\nfunction isRedirectResponse(response) {\n return response && response instanceof Response && redirectStatusCodes.has(response.status);\n}\nclass ResponseError extends Error {\n status;\n headers;\n name = \"ResponseError\";\n ok;\n statusText;\n redirected;\n url;\n constructor(response) {\n let message = JSON.stringify({\n $type: \"response\",\n status: response.status,\n message: response.statusText,\n headers: [...response.headers.entries()]\n });\n super(message);\n this.status = response.status;\n this.headers = new Map([...response.headers.entries()]);\n this.url = response.url;\n this.ok = response.ok;\n this.statusText = response.statusText;\n this.redirected = response.redirected;\n this.bodyUsed = false;\n this.type = response.type;\n this.response = () => response;\n }\n response;\n type;\n clone() {\n return this.response();\n }\n get body() {\n return this.response().body;\n }\n bodyUsed;\n async arrayBuffer() {\n return await this.response().arrayBuffer();\n }\n async blob() {\n return await this.response().blob();\n }\n async formData() {\n return await this.response().formData();\n }\n async text() {\n return await this.response().text();\n }\n async json() {\n return await this.response().json();\n }\n}\n\nfunction renderAsync(fn, options) {\n return () => async (event) => {\n let pageEvent = createPageEvent(event);\n let markup = await renderToStringAsync(() => fn(pageEvent), options);\n if (pageEvent.routerContext.url) {\n return redirect(pageEvent.routerContext.url, {\n headers: pageEvent.responseHeaders\n });\n }\n markup = handleIslandsRouting(pageEvent, markup);\n return new Response(markup, {\n status: pageEvent.getStatusCode(),\n headers: pageEvent.responseHeaders\n });\n };\n}\nfunction createPageEvent(event) {\n let responseHeaders = new Headers({\n \"Content-Type\": \"text/html\"\n });\n const prevPath = event.request.headers.get(\"x-solid-referrer\");\n let statusCode = 200;\n function setStatusCode(code) {\n statusCode = code;\n }\n function getStatusCode() {\n return statusCode;\n }\n const pageEvent = Object.freeze({\n request: event.request,\n prevUrl: prevPath,\n routerContext: {},\n tags: [],\n env: event.env,\n $type: FETCH_EVENT,\n responseHeaders,\n setStatusCode,\n getStatusCode,\n fetch: internalFetch\n });\n return pageEvent;\n}\nfunction handleIslandsRouting(pageEvent, markup) {\n return markup;\n}\n\nconst MetaContext = createContext();\nconst cascadingTags = [\"title\", \"meta\"];\n\nconst getTagType = tag => tag.tag + (tag.name ? `.${tag.name}\"` : \"\");\n\nconst MetaProvider = props => {\n const cascadedTagInstances = new Map(); // TODO: use one element for all tags of the same type, just swap out\n // where the props get applied\n\n function getElement(tag) {\n if (tag.ref) {\n return tag.ref;\n }\n\n let el = document.querySelector(`[data-sm=\"${tag.id}\"]`);\n\n if (el) {\n if (el.tagName.toLowerCase() !== tag.tag) {\n if (el.parentNode) {\n // remove the old tag\n el.parentNode.removeChild(el);\n } // add the new tag\n\n\n el = document.createElement(tag.tag);\n } // use the old tag\n\n\n el.removeAttribute(\"data-sm\");\n } else {\n // create a new tag\n el = document.createElement(tag.tag);\n }\n\n return el;\n }\n\n const actions = {\n addClientTag: tag => {\n let tagType = getTagType(tag);\n\n if (cascadingTags.indexOf(tag.tag) !== -1) {\n // only cascading tags need to be kept as singletons\n if (!cascadedTagInstances.has(tagType)) {\n cascadedTagInstances.set(tagType, []);\n }\n\n let instances = cascadedTagInstances.get(tagType);\n let index = instances.length;\n instances = [...instances, tag]; // track indices synchronously\n\n cascadedTagInstances.set(tagType, instances);\n\n if (!isServer) {\n let element = getElement(tag);\n tag.ref = element;\n spread(element, () => tag.props);\n let lastVisited = null;\n\n for (var i = index - 1; i >= 0; i--) {\n if (instances[i] != null) {\n lastVisited = instances[i];\n break;\n }\n }\n\n if (element.parentNode != document.head) {\n document.head.appendChild(element);\n }\n\n if (lastVisited && lastVisited.ref) {\n document.head.removeChild(lastVisited.ref);\n }\n }\n\n return index;\n }\n\n if (!isServer) {\n let element = getElement(tag);\n tag.ref = element;\n spread(element, () => tag.props);\n\n if (element.parentNode != document.head) {\n document.head.appendChild(element);\n }\n }\n\n return -1;\n },\n removeClientTag: (tag, index) => {\n const tagName = getTagType(tag);\n\n if (tag.ref) {\n const t = cascadedTagInstances.get(tagName);\n\n if (t) {\n if (tag.ref.parentNode) {\n tag.ref.parentNode.removeChild(tag.ref);\n\n for (let i = index - 1; i >= 0; i--) {\n if (t[i] != null) {\n document.head.appendChild(t[i].ref);\n }\n }\n }\n\n t[index] = null;\n cascadedTagInstances.set(tagName, t);\n } else {\n if (tag.ref.parentNode) {\n tag.ref.parentNode.removeChild(tag.ref);\n }\n }\n }\n }\n };\n\n if (isServer) {\n actions.addServerTag = tagDesc => {\n const {\n tags = []\n } = props; // tweak only cascading tags\n\n if (cascadingTags.indexOf(tagDesc.tag) !== -1) {\n const index = tags.findIndex(prev => {\n const prevName = prev.props.name || prev.props.property;\n const nextName = tagDesc.props.name || tagDesc.props.property;\n return prev.tag === tagDesc.tag && prevName === nextName;\n });\n\n if (index !== -1) {\n tags.splice(index, 1);\n }\n }\n\n tags.push(tagDesc);\n };\n\n if (Array.isArray(props.tags) === false) {\n throw Error(\"tags array should be passed to in node\");\n }\n }\n\n return createComponent(MetaContext.Provider, {\n value: actions,\n\n get children() {\n return props.children;\n }\n\n });\n};\n\nconst MetaTag = (tag, props) => {\n const id = createUniqueId();\n const c = useContext(MetaContext);\n if (!c) throw new Error(\" should be in the tree\");\n useHead({\n tag,\n props,\n id,\n\n get name() {\n return props.name || props.property;\n }\n\n });\n return null;\n};\nfunction useHead(tagDesc) {\n const {\n addClientTag,\n removeClientTag,\n addServerTag\n } = useContext(MetaContext);\n createRenderEffect(() => {\n if (!isServer) {\n let index = addClientTag(tagDesc);\n onCleanup(() => removeClientTag(tagDesc, index));\n }\n });\n\n if (isServer) {\n addServerTag(tagDesc);\n return null;\n }\n}\nfunction renderTags(tags) {\n return tags.map(tag => {\n const keys = Object.keys(tag.props);\n const props = keys.map(k => k === \"children\" ? \"\" : ` ${k}=\"${tag.props[k]}\"`).join(\"\");\n return tag.props.children ? `<${tag.tag} data-sm=\"${tag.id}\"${props}>${// Tags might contain multiple text children:\n // example - {myCompany}\n Array.isArray(tag.props.children) ? tag.props.children.join(\"\") : tag.props.children}` : `<${tag.tag} data-sm=\"${tag.id}\"${props}/>`;\n }).join(\"\");\n}\nconst Title = props => MetaTag(\"title\", props);\nconst Meta$1 = props => MetaTag(\"meta\", props);\n\nfunction bindEvent(target, type, handler) {\n target.addEventListener(type, handler);\n return () => target.removeEventListener(type, handler);\n}\nfunction intercept([value, setValue], get, set) {\n return [get ? () => get(value()) : value, set ? (v) => setValue(set(v)) : setValue];\n}\nfunction querySelector(selector) {\n // Guard against selector being an invalid CSS selector\n try {\n return document.querySelector(selector);\n }\n catch (e) {\n return null;\n }\n}\nfunction scrollToHash(hash, fallbackTop) {\n const el = querySelector(`#${hash}`);\n if (el) {\n el.scrollIntoView();\n }\n else if (fallbackTop) {\n window.scrollTo(0, 0);\n }\n}\nfunction createIntegration(get, set, init, utils) {\n let ignore = false;\n const wrap = (value) => (typeof value === \"string\" ? { value } : value);\n const signal = intercept(createSignal(wrap(get()), { equals: (a, b) => a.value === b.value }), undefined, next => {\n !ignore && set(next);\n return next;\n });\n init &&\n onCleanup(init((value = get()) => {\n ignore = true;\n signal[1](wrap(value));\n ignore = false;\n }));\n return {\n signal,\n utils\n };\n}\nfunction normalizeIntegration(integration) {\n if (!integration) {\n return {\n signal: createSignal({ value: \"\" })\n };\n }\n else if (Array.isArray(integration)) {\n return {\n signal: integration\n };\n }\n return integration;\n}\nfunction staticIntegration(obj) {\n return {\n signal: [() => obj, next => Object.assign(obj, next)]\n };\n}\nfunction pathIntegration() {\n return createIntegration(() => ({\n value: window.location.pathname + window.location.search + window.location.hash,\n state: history.state\n }), ({ value, replace, scroll, state }) => {\n if (replace) {\n window.history.replaceState(state, \"\", value);\n }\n else {\n window.history.pushState(state, \"\", value);\n }\n scrollToHash(window.location.hash.slice(1), scroll);\n }, notify => bindEvent(window, \"popstate\", () => notify()), {\n go: delta => window.history.go(delta)\n });\n}\n\nconst hasSchemeRegex = /^(?:[a-z0-9]+:)?\\/\\//i;\nconst trimPathRegex = /^\\/+|\\/+$/g;\nfunction normalize(path, omitSlash = false) {\n const s = path.replace(trimPathRegex, \"\");\n return s ? (omitSlash || /^[?#]/.test(s) ? s : \"/\" + s) : \"\";\n}\nfunction resolvePath(base, path, from) {\n if (hasSchemeRegex.test(path)) {\n return undefined;\n }\n const basePath = normalize(base);\n const fromPath = from && normalize(from);\n let result = \"\";\n if (!fromPath || path.startsWith(\"/\")) {\n result = basePath;\n }\n else if (fromPath.toLowerCase().indexOf(basePath.toLowerCase()) !== 0) {\n result = basePath + fromPath;\n }\n else {\n result = fromPath;\n }\n return (result || \"/\") + normalize(path, !result);\n}\nfunction invariant(value, message) {\n if (value == null) {\n throw new Error(message);\n }\n return value;\n}\nfunction joinPaths(from, to) {\n return normalize(from).replace(/\\/*(\\*.*)?$/g, \"\") + normalize(to);\n}\nfunction extractSearchParams(url) {\n const params = {};\n url.searchParams.forEach((value, key) => {\n params[key] = value;\n });\n return params;\n}\nfunction urlDecode(str, isQuery) {\n return decodeURIComponent(isQuery ? str.replace(/\\+/g, \" \") : str);\n}\nfunction createMatcher(path, partial) {\n const [pattern, splat] = path.split(\"/*\", 2);\n const segments = pattern.split(\"/\").filter(Boolean);\n const len = segments.length;\n return (location) => {\n const locSegments = location.split(\"/\").filter(Boolean);\n const lenDiff = locSegments.length - len;\n if (lenDiff < 0 || (lenDiff > 0 && splat === undefined && !partial)) {\n return null;\n }\n const match = {\n path: len ? \"\" : \"/\",\n params: {}\n };\n for (let i = 0; i < len; i++) {\n const segment = segments[i];\n const locSegment = locSegments[i];\n if (segment[0] === \":\") {\n match.params[segment.slice(1)] = locSegment;\n }\n else if (segment.localeCompare(locSegment, undefined, { sensitivity: \"base\" }) !== 0) {\n return null;\n }\n match.path += `/${locSegment}`;\n }\n if (splat) {\n match.params[splat] = lenDiff ? locSegments.slice(-lenDiff).join(\"/\") : \"\";\n }\n return match;\n };\n}\nfunction scoreRoute(route) {\n const [pattern, splat] = route.pattern.split(\"/*\", 2);\n const segments = pattern.split(\"/\").filter(Boolean);\n return segments.reduce((score, segment) => score + (segment.startsWith(\":\") ? 2 : 3), segments.length - (splat === undefined ? 0 : 1));\n}\nfunction createMemoObject(fn) {\n const map = new Map();\n const owner = getOwner();\n return new Proxy({}, {\n get(_, property) {\n if (!map.has(property)) {\n runWithOwner(owner, () => map.set(property, createMemo(() => fn()[property])));\n }\n return map.get(property)();\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true\n };\n },\n ownKeys() {\n return Reflect.ownKeys(fn());\n }\n });\n}\nfunction expandOptionals(pattern) {\n let match = /(\\/?\\:[^\\/]+)\\?/.exec(pattern);\n if (!match)\n return [pattern];\n let prefix = pattern.slice(0, match.index);\n let suffix = pattern.slice(match.index + match[0].length);\n const prefixes = [prefix, (prefix += match[1])];\n // This section handles adjacent optional params. We don't actually want all permuations since\n // that will lead to equivalent routes which have the same number of params. For example\n // `/:a?/:b?/:c`? only has the unique expansion: `/`, `/:a`, `/:a/:b`, `/:a/:b/:c` and we can\n // discard `/:b`, `/:c`, `/:b/:c` by building them up in order and not recursing. This also helps\n // ensure predictability where earlier params have precidence.\n while ((match = /^(\\/\\:[^\\/]+)\\?/.exec(suffix))) {\n prefixes.push((prefix += match[1]));\n suffix = suffix.slice(match[0].length);\n }\n return expandOptionals(suffix).reduce((results, expansion) => [...results, ...prefixes.map(p => p + expansion)], []);\n}\n\nconst MAX_REDIRECTS = 100;\nconst RouterContextObj = createContext();\nconst RouteContextObj = createContext();\nconst useRouter = () => invariant(useContext(RouterContextObj), \"Make sure your app is wrapped in a \");\nlet TempRoute;\nconst useRoute = () => TempRoute || useContext(RouteContextObj) || useRouter().base;\nfunction createRoutes(routeDef, base = \"\", fallback) {\n const { component, data, children } = routeDef;\n const isLeaf = !children || (Array.isArray(children) && !children.length);\n const shared = {\n key: routeDef,\n element: component\n ? () => createComponent$1(component, {})\n : () => {\n const { element } = routeDef;\n return element === undefined && fallback\n ? createComponent$1(fallback, {})\n : element;\n },\n preload: routeDef.component\n ? component.preload\n : routeDef.preload,\n data\n };\n return asArray(routeDef.path).reduce((acc, path) => {\n for (const originalPath of expandOptionals(path)) {\n const path = joinPaths(base, originalPath);\n const pattern = isLeaf ? path : path.split(\"/*\", 1)[0];\n acc.push({\n ...shared,\n originalPath,\n pattern,\n matcher: createMatcher(pattern, !isLeaf)\n });\n }\n return acc;\n }, []);\n}\nfunction createBranch(routes, index = 0) {\n return {\n routes,\n score: scoreRoute(routes[routes.length - 1]) * 10000 - index,\n matcher(location) {\n const matches = [];\n for (let i = routes.length - 1; i >= 0; i--) {\n const route = routes[i];\n const match = route.matcher(location);\n if (!match) {\n return null;\n }\n matches.unshift({\n ...match,\n route\n });\n }\n return matches;\n }\n };\n}\nfunction asArray(value) {\n return Array.isArray(value) ? value : [value];\n}\nfunction createBranches(routeDef, base = \"\", fallback, stack = [], branches = []) {\n const routeDefs = asArray(routeDef);\n for (let i = 0, len = routeDefs.length; i < len; i++) {\n const def = routeDefs[i];\n if (def && typeof def === \"object\" && def.hasOwnProperty(\"path\")) {\n const routes = createRoutes(def, base, fallback);\n for (const route of routes) {\n stack.push(route);\n if (def.children) {\n createBranches(def.children, route.pattern, fallback, stack, branches);\n }\n else {\n const branch = createBranch([...stack], branches.length);\n branches.push(branch);\n }\n stack.pop();\n }\n }\n }\n // Stack will be empty on final return\n return stack.length ? branches : branches.sort((a, b) => b.score - a.score);\n}\nfunction getRouteMatches(branches, location) {\n for (let i = 0, len = branches.length; i < len; i++) {\n const match = branches[i].matcher(location);\n if (match) {\n return match;\n }\n }\n return [];\n}\nfunction createLocation(path, state) {\n const origin = new URL(\"http://sar\");\n const url = createMemo(prev => {\n const path_ = path();\n try {\n return new URL(path_, origin);\n }\n catch (err) {\n console.error(`Invalid path ${path_}`);\n return prev;\n }\n }, origin, {\n equals: (a, b) => a.href === b.href\n });\n const pathname = createMemo(() => urlDecode(url().pathname));\n const search = createMemo(() => urlDecode(url().search, true));\n const hash = createMemo(() => urlDecode(url().hash));\n const key = createMemo(() => \"\");\n return {\n get pathname() {\n return pathname();\n },\n get search() {\n return search();\n },\n get hash() {\n return hash();\n },\n get state() {\n return state();\n },\n get key() {\n return key();\n },\n query: createMemoObject(on(search, () => extractSearchParams(url())))\n };\n}\nfunction createRouterContext(integration, base = \"\", data, out) {\n const { signal: [source, setSource], utils = {} } = normalizeIntegration(integration);\n const parsePath = utils.parsePath || (p => p);\n const renderPath = utils.renderPath || (p => p);\n const basePath = resolvePath(\"\", base);\n const output = isServer && out\n ? Object.assign(out, {\n matches: [],\n url: undefined\n })\n : undefined;\n if (basePath === undefined) {\n throw new Error(`${basePath} is not a valid base path`);\n }\n else if (basePath && !source().value) {\n setSource({ value: basePath, replace: true, scroll: false });\n }\n const [isRouting, start] = useTransition();\n const [reference, setReference] = createSignal(source().value);\n const [state, setState] = createSignal(source().state);\n const location = createLocation(reference, state);\n const referrers = [];\n const baseRoute = {\n pattern: basePath,\n params: {},\n path: () => basePath,\n outlet: () => null,\n resolvePath(to) {\n return resolvePath(basePath, to);\n }\n };\n if (data) {\n try {\n TempRoute = baseRoute;\n baseRoute.data = data({\n data: undefined,\n params: {},\n location,\n navigate: navigatorFactory(baseRoute)\n });\n }\n finally {\n TempRoute = undefined;\n }\n }\n function navigateFromRoute(route, to, options) {\n // Untrack in case someone navigates in an effect - don't want to track `reference` or route paths\n untrack(() => {\n if (typeof to === \"number\") {\n if (!to) ;\n else if (utils.go) {\n utils.go(to);\n }\n else {\n console.warn(\"Router integration does not support relative routing\");\n }\n return;\n }\n const { replace, resolve, scroll, state: nextState } = {\n replace: false,\n resolve: true,\n scroll: true,\n ...options\n };\n const resolvedTo = resolve ? route.resolvePath(to) : resolvePath(\"\", to);\n if (resolvedTo === undefined) {\n throw new Error(`Path '${to}' is not a routable path`);\n }\n else if (referrers.length >= MAX_REDIRECTS) {\n throw new Error(\"Too many redirects\");\n }\n const current = reference();\n if (resolvedTo !== current || nextState !== state()) {\n if (isServer) {\n if (output) {\n output.url = resolvedTo;\n }\n setSource({ value: resolvedTo, replace, scroll, state: nextState });\n }\n else {\n const len = referrers.push({ value: current, replace, scroll, state: state() });\n start(() => {\n setReference(resolvedTo);\n setState(nextState);\n resetErrorBoundaries();\n }).then(() => {\n if (referrers.length === len) {\n navigateEnd({\n value: resolvedTo,\n state: nextState\n });\n }\n });\n }\n }\n });\n }\n function navigatorFactory(route) {\n // Workaround for vite issue (https://github.com/vitejs/vite/issues/3803)\n route = route || useContext(RouteContextObj) || baseRoute;\n return (to, options) => navigateFromRoute(route, to, options);\n }\n function navigateEnd(next) {\n const first = referrers[0];\n if (first) {\n if (next.value !== first.value || next.state !== first.state) {\n setSource({\n ...next,\n replace: first.replace,\n scroll: first.scroll\n });\n }\n referrers.length = 0;\n }\n }\n createRenderEffect(() => {\n const { value, state } = source();\n // Untrack this whole block so `start` doesn't cause Solid's Listener to be preserved\n untrack(() => {\n if (value !== reference()) {\n start(() => {\n setReference(value);\n setState(state);\n });\n }\n });\n });\n if (!isServer) {\n function isSvg(el) {\n return el.namespaceURI === \"http://www.w3.org/2000/svg\";\n }\n function handleAnchorClick(evt) {\n if (evt.defaultPrevented ||\n evt.button !== 0 ||\n evt.metaKey ||\n evt.altKey ||\n evt.ctrlKey ||\n evt.shiftKey)\n return;\n const a = evt\n .composedPath()\n .find(el => el instanceof Node && el.nodeName.toUpperCase() === \"A\");\n if (!a)\n return;\n const svg = isSvg(a);\n const href = svg ? a.href.baseVal : a.href;\n const target = svg ? a.target.baseVal : a.target;\n if (target || (!href && !a.hasAttribute(\"state\")))\n return;\n const rel = (a.getAttribute(\"rel\") || \"\").split(/\\s+/);\n if (a.hasAttribute(\"download\") || (rel && rel.includes(\"external\")))\n return;\n const url = svg ? new URL(href, document.baseURI) : new URL(href);\n const pathname = urlDecode(url.pathname);\n if (url.origin !== window.location.origin ||\n (basePath && pathname && !pathname.toLowerCase().startsWith(basePath.toLowerCase())))\n return;\n const to = parsePath(pathname + urlDecode(url.search, true) + urlDecode(url.hash));\n const state = a.getAttribute(\"state\");\n evt.preventDefault();\n navigateFromRoute(baseRoute, to, {\n resolve: false,\n replace: a.hasAttribute(\"replace\"),\n scroll: !a.hasAttribute(\"noscroll\"),\n state: state && JSON.parse(state)\n });\n }\n // ensure delegated events run first\n delegateEvents([\"click\"]);\n document.addEventListener(\"click\", handleAnchorClick);\n onCleanup(() => document.removeEventListener(\"click\", handleAnchorClick));\n }\n return {\n base: baseRoute,\n out: output,\n location,\n isRouting,\n renderPath,\n parsePath,\n navigatorFactory\n };\n}\nfunction createRouteContext(router, parent, child, match) {\n const { base, location, navigatorFactory } = router;\n const { pattern, element: outlet, preload, data } = match().route;\n const path = createMemo(() => match().path);\n const params = createMemoObject(() => match().params);\n preload && preload();\n const route = {\n parent,\n pattern,\n get child() {\n return child();\n },\n path,\n params,\n data: parent.data,\n outlet,\n resolvePath(to) {\n return resolvePath(base.path(), to, path());\n }\n };\n if (data) {\n try {\n TempRoute = route;\n route.data = data({ data: parent.data, params, location, navigate: navigatorFactory(route) });\n }\n finally {\n TempRoute = undefined;\n }\n }\n return route;\n}\n\nconst Router = props => {\n const {\n source,\n url,\n base,\n data,\n out\n } = props;\n const integration = source || (isServer ? staticIntegration({\n value: url || \"\"\n }) : pathIntegration());\n const routerState = createRouterContext(integration, base, data, out);\n return createComponent(RouterContextObj.Provider, {\n value: routerState,\n\n get children() {\n return props.children;\n }\n\n });\n};\nconst Routes$1 = props => {\n const router = useRouter();\n const parentRoute = useRoute();\n const routeDefs = children(() => props.children);\n const branches = createMemo(() => createBranches(routeDefs(), joinPaths(parentRoute.pattern, props.base || \"\"), Outlet));\n const matches = createMemo(() => getRouteMatches(branches(), router.location.pathname));\n\n if (router.out) {\n router.out.matches.push(matches().map(({\n route,\n path,\n params\n }) => ({\n originalPath: route.originalPath,\n pattern: route.pattern,\n path,\n params\n })));\n }\n\n const disposers = [];\n let root;\n const routeStates = createMemo(on(matches, (nextMatches, prevMatches, prev) => {\n let equal = prevMatches && nextMatches.length === prevMatches.length;\n const next = [];\n\n for (let i = 0, len = nextMatches.length; i < len; i++) {\n const prevMatch = prevMatches && prevMatches[i];\n const nextMatch = nextMatches[i];\n\n if (prev && prevMatch && nextMatch.route.key === prevMatch.route.key) {\n next[i] = prev[i];\n } else {\n equal = false;\n\n if (disposers[i]) {\n disposers[i]();\n }\n\n createRoot(dispose => {\n disposers[i] = dispose;\n next[i] = createRouteContext(router, next[i - 1] || parentRoute, () => routeStates()[i + 1], () => matches()[i]);\n });\n }\n }\n\n disposers.splice(nextMatches.length).forEach(dispose => dispose());\n\n if (prev && equal) {\n return prev;\n }\n\n root = next[0];\n return next;\n }));\n return createComponent(Show, {\n get when() {\n return routeStates() && root;\n },\n\n children: route => createComponent(RouteContextObj.Provider, {\n value: route,\n\n get children() {\n return route.outlet();\n }\n\n })\n });\n};\nconst Outlet = () => {\n const route = useRoute();\n return createComponent(Show, {\n get when() {\n return route.child;\n },\n\n children: child => createComponent(RouteContextObj.Provider, {\n value: child,\n\n get children() {\n return child.outlet();\n }\n\n })\n });\n};\n\nclass ServerError extends Error {\n constructor(message, {\n stack\n } = {}) {\n super(message);\n this.name = \"ServerError\";\n\n if (stack) {\n this.stack = stack;\n }\n }\n\n}\nclass FormError extends ServerError {\n constructor(message, {\n fieldErrors = {},\n form,\n fields,\n stack\n } = {}) {\n super(message, {\n stack\n });\n this.formError = message;\n this.name = \"FormError\";\n this.fields = fields || Object.fromEntries(typeof form !== \"undefined\" ? form.entries() : []) || {};\n this.fieldErrors = fieldErrors;\n }\n\n}\n\nconst ServerContext = createContext({});\n\ncreateContext();\ncreateContext();\n\nfunction Routes(props) {\n\n return createComponent(Routes$1, {\n get children() {\n return props.children;\n }\n\n });\n}\n\nconst _tmpl$$2 = [\"

\", \"

\", \"
\"];\nfunction ErrorBoundary(props) {\n return createComponent(ErrorBoundary$1, {\n fallback: e => {\n return createComponent(Show, {\n get when() {\n return !props.fallback;\n },\n\n get fallback() {\n return props.fallback(e);\n },\n\n get children() {\n return createComponent(ErrorMessage, {\n error: e\n });\n }\n\n });\n },\n\n get children() {\n return props.children;\n }\n\n });\n}\n\nfunction ErrorMessage(props) {\n createEffect(() => console.error(props.error));\n return ssr(_tmpl$$2, ssrHydrationKey(), \"padding:\" + \"16px\", \"background-color:\" + \"rgba(252, 165, 165)\" + (\";color:\" + \"rgb(153, 27, 27)\") + (\";border-radius:\" + \"5px\") + (\";overflow:\" + \"scroll\") + (\";padding:\" + \"16px\") + (\";margin-bottom:\" + \"8px\"), \"font-weight:\" + \"bold\", escape(props.error.message), \"color:\" + \"rgba(252, 165, 165)\" + (\";background-color:\" + \"rgb(153, 27, 27)\") + (\";border-radius:\" + \"5px\") + (\";padding:\" + \"4px 8px\"), \"margin-top:\" + \"8px\" + (\";width:\" + \"100%\"), escape(props.error.stack));\n}\n\nconst _tmpl$$1 = [\"

hello

\", \"\"],\n _tmpl$2$1 = [\"\", \"\"];\nconst gql = String.raw;\nfunction Home() {\n const [mounted, setMount] = createSignal(false);\n onMount(() => {\n setMount(true);\n });\n return ssr(_tmpl$$1, ssrHydrationKey(), escape(createComponent(Show, {\n get when() {\n return mounted();\n },\n\n get children() {\n return createComponent(GqlQueryTest, {});\n }\n\n })));\n}\nconst GqlQueryTest = props => {\n const [result, status] = createResource(() => request(\"/graphql\", gql`\n {\n hello\n }\n `));\n\n const data = () => result.latest ? JSON.stringify(result.latest) : undefined;\n\n return ssr(_tmpl$2$1, ssrHydrationKey(), escape(data));\n};\n\n/// \nconst routesConfig = {\n routes: [{\n component: Home,\n path: \"/\"\n }],\n routeLayouts: {\n \"/\": {\n \"id\": \"/\",\n \"layouts\": []\n }\n }\n};\n/**\n * Routes are the file system based routes, used by Solid App Router to show the current page according to the URL.\n */\n\nconst FileRoutes = () => {\n return routesConfig.routes;\n};\n\nconst _tmpl$ = [\"\"],\n _tmpl$2 = [\"\"];\n\nfunction getAssetsFromManifest(manifest, routerContext) {\n const match = routerContext.matches.reduce((memo, m) => {\n if (m.length) {\n const fullPath = m.reduce((previous, match) => previous + match.originalPath, \"\");\n const route = routesConfig.routeLayouts[fullPath];\n\n if (route) {\n memo.push(...(manifest[route.id] || []));\n const layoutsManifestEntries = route.layouts.flatMap(manifestKey => manifest[manifestKey] || []);\n memo.push(...layoutsManifestEntries);\n }\n }\n\n return memo;\n }, []);\n match.push(...(manifest[\"entry-client\"] || []));\n const links = match.reduce((r, src) => {\n r[src.href] = src.type === \"style\" ? ssr(_tmpl$, ssrHydrationKey(), ssrAttribute(\"href\", escape(src.href, true), false)) : src.type === \"script\" ? ssr(_tmpl$2, ssrHydrationKey(), ssrAttribute(\"href\", escape(src.href, true), false)) : undefined;\n return r;\n }, {});\n return Object.values(links);\n}\n/**\n * Links are used to load assets for the server rendered HTML\n * @returns {JSXElement}\n */\n\n\nfunction Links() {\n const context = useContext(ServerContext);\n return createComponent(Assets, {\n get children() {\n return getAssetsFromManifest(context.env.manifest, context.routerContext);\n }\n\n });\n}\n\nfunction Meta() {\n const context = useContext(ServerContext); // @ts-expect-error The ssr() types do not match the Assets child types\n\n return createComponent(Assets, {\n get children() {\n return ssr(renderTags(context.tags));\n }\n\n });\n}\n\nconst _tmpl$4 = [\"\"];\nconst isDev = \"production\" === \"development\";\nconst isIslands = false;\nfunction Scripts() {\n const context = useContext(ServerContext);\n return [createComponent(HydrationScript, {}), isIslands , createComponent(NoHydration, {\n get children() {\n return isServer && (ssr(_tmpl$4, ssrHydrationKey(), ssrAttribute(\"src\", escape(context.env.manifest[\"entry-client\"][0].href, true), false)) );\n }\n\n }), isDev ];\n}\n\nfunction Html(props) {\n\n {\n return ssrElement(\"html\", props, undefined, false);\n }\n}\nfunction Head(props) {\n {\n return ssrElement(\"head\", props, () => [props.children, createComponent(Meta, {}), createComponent(Links, {})], false);\n }\n}\nfunction Body(props) {\n {\n return ssrElement(\"body\", props, () => props.children , false);\n }\n}\n\nconst root = '';\n\nfunction Root() {\n return createComponent(Html, {\n lang: \"en\",\n\n get children() {\n return [createComponent(Head, {\n get children() {\n return [createComponent(Title, {\n children: \"SolidStart - With TailwindCSS\"\n }), createComponent(Meta$1, {\n charset: \"utf-8\"\n }), createComponent(Meta$1, {\n name: \"viewport\",\n content: \"width=device-width, initial-scale=1\"\n })];\n }\n\n }), createComponent(Body, {\n get children() {\n return [createComponent(Suspense, {\n get children() {\n return createComponent(ErrorBoundary, {\n get children() {\n return createComponent(Routes, {\n get children() {\n return createComponent(FileRoutes, {});\n }\n\n });\n }\n\n });\n }\n\n }), createComponent(Scripts, {})];\n }\n\n })];\n }\n\n });\n}\n\nconst server = createServer({\n schema: {\n typeDefs: `\n type Query {\n hello: String\n }\n `,\n resolvers: {\n Query: {\n hello: () => \"Hello from Yoga!\"\n }\n }\n }\n});\nconst handler = ({ request }) => {\n return server.handleRequest(request);\n};\nconst get = handler;\nconst post = handler;\n\nconst api = [\n {\n get: get,\n post: post,\n path: \"/graphql\"\n },\n {\n get: \"skip\",\n path: \"/\"\n }\n];\nfunction routeToMatchRoute(route) {\n const segments = route.path.split(\"/\").filter(Boolean);\n const params = [];\n const matchSegments = [];\n let score = route.path.endsWith(\"/\") ? 4 : 0;\n let wildcard = false;\n for (const [index, segment] of segments.entries()) {\n if (segment[0] === \":\") {\n const name = segment.slice(1);\n score += 3;\n params.push({\n type: \":\",\n name,\n index\n });\n matchSegments.push(null);\n } else if (segment[0] === \"*\") {\n params.push({\n type: \"*\",\n name: segment.slice(1),\n index\n });\n wildcard = true;\n } else {\n score += 4;\n matchSegments.push(segment);\n }\n }\n return {\n ...route,\n score,\n params,\n matchSegments,\n wildcard\n };\n}\nconst allRoutes = api.map(routeToMatchRoute).sort((a, b) => b.score - a.score);\nregisterApiRoutes(allRoutes);\nfunction getApiHandler(url, method) {\n return getRouteMatches$1(allRoutes, url.pathname, method.toLowerCase());\n}\n\nconst apiRoutes = ({ forward }) => {\n return async (event) => {\n let apiHandler = getApiHandler(new URL(event.request.url), event.request.method);\n if (apiHandler) {\n let apiEvent = Object.freeze({\n request: event.request,\n params: apiHandler.params,\n env: event.env,\n $type: FETCH_EVENT,\n fetch: internalFetch\n });\n try {\n return await apiHandler.handler(apiEvent);\n } catch (error) {\n if (error instanceof Response) {\n return error;\n }\n return new Response(JSON.stringify(error), {\n status: 500\n });\n }\n }\n return await forward(event);\n };\n};\n\nconst server$ = (fn) => {\n throw new Error(\"Should be compiled away\");\n};\nasync function parseRequest(event) {\n let request = event.request;\n let contentType = request.headers.get(ContentTypeHeader);\n let name = new URL(request.url).pathname, args = [];\n if (contentType) {\n if (contentType === JSONResponseType) {\n let text = await request.text();\n try {\n args = JSON.parse(text, (key, value) => {\n if (!value) {\n return value;\n }\n if (value.$type === \"fetch_event\") {\n return event;\n }\n if (value.$type === \"headers\") {\n let headers = new Headers();\n request.headers.forEach((value2, key2) => headers.set(key2, value2));\n value.values.forEach(([key2, value2]) => headers.set(key2, value2));\n return headers;\n }\n if (value.$type === \"request\") {\n return new Request(value.url, {\n method: value.method,\n headers: value.headers\n });\n }\n return value;\n });\n } catch (e) {\n throw new Error(`Error parsing request body: ${text}`);\n }\n } else if (contentType.includes(\"form\")) {\n let formData = await request.clone().formData();\n args = [formData, event];\n }\n }\n return [name, args];\n}\nfunction respondWith(request, data, responseType) {\n if (data instanceof ResponseError) {\n data = data.clone();\n }\n if (data instanceof Response) {\n if (isRedirectResponse(data) && request.headers.get(XSolidStartOrigin) === \"client\") {\n let headers = new Headers(data.headers);\n headers.set(XSolidStartOrigin, \"server\");\n headers.set(XSolidStartLocationHeader, data.headers.get(LocationHeader));\n headers.set(XSolidStartResponseTypeHeader, responseType);\n headers.set(XSolidStartContentTypeHeader, \"response\");\n return new Response(null, {\n status: 204,\n statusText: \"Redirected\",\n headers\n });\n } else if (data.status === 101) {\n return data;\n } else {\n let headers = new Headers(data.headers);\n headers.set(XSolidStartOrigin, \"server\");\n headers.set(XSolidStartResponseTypeHeader, responseType);\n headers.set(XSolidStartContentTypeHeader, \"response\");\n return new Response(data.body, {\n status: data.status,\n statusText: data.statusText,\n headers\n });\n }\n } else if (data instanceof FormError) {\n return new Response(\n JSON.stringify({\n error: {\n message: data.message,\n stack: \"\",\n formError: data.formError,\n fields: data.fields,\n fieldErrors: data.fieldErrors\n }\n }),\n {\n status: 400,\n headers: {\n [XSolidStartResponseTypeHeader]: responseType,\n [XSolidStartContentTypeHeader]: \"form-error\"\n }\n }\n );\n } else if (data instanceof ServerError) {\n return new Response(\n JSON.stringify({\n error: {\n message: data.message,\n stack: \"\"\n }\n }),\n {\n status: 400,\n headers: {\n [XSolidStartResponseTypeHeader]: responseType,\n [XSolidStartContentTypeHeader]: \"server-error\"\n }\n }\n );\n } else if (data instanceof Error) {\n console.error(data);\n return new Response(\n JSON.stringify({\n error: {\n message: \"Internal Server Error\",\n stack: \"\",\n status: data.status\n }\n }),\n {\n status: data.status || 500,\n headers: {\n [XSolidStartResponseTypeHeader]: responseType,\n [XSolidStartContentTypeHeader]: \"error\"\n }\n }\n );\n } else if (typeof data === \"object\" || typeof data === \"string\" || typeof data === \"number\" || typeof data === \"boolean\") {\n return new Response(JSON.stringify(data), {\n status: 200,\n headers: {\n [ContentTypeHeader]: \"application/json\",\n [XSolidStartResponseTypeHeader]: responseType,\n [XSolidStartContentTypeHeader]: \"json\"\n }\n });\n }\n return new Response(\"null\", {\n status: 200,\n headers: {\n [ContentTypeHeader]: \"application/json\",\n [XSolidStartContentTypeHeader]: \"json\",\n [XSolidStartResponseTypeHeader]: responseType\n }\n });\n}\nasync function handleServerRequest(event) {\n const url = new URL(event.request.url);\n if (server$.hasHandler(url.pathname)) {\n try {\n let [name, args] = await parseRequest(event);\n let handler = server$.getHandler(name);\n if (!handler) {\n throw {\n status: 404,\n message: \"Handler Not Found for \" + name\n };\n }\n const data = await handler.call(event, ...Array.isArray(args) ? args : [args]);\n return respondWith(event.request, data, \"return\");\n } catch (error) {\n return respondWith(event.request, error, \"throw\");\n }\n }\n return null;\n}\nconst handlers = /* @__PURE__ */ new Map();\nserver$.createHandler = (_fn, hash) => {\n let fn = function(...args) {\n let ctx;\n if (typeof this === \"object\") {\n ctx = this;\n } else if (sharedConfig.context && sharedConfig.context.requestContext) {\n ctx = sharedConfig.context.requestContext;\n } else {\n ctx = {\n request: new URL(hash, \"http://localhost:3000\").href,\n responseHeaders: new Headers()\n };\n }\n const execute = async () => {\n try {\n let e = await _fn.call(ctx, ...args);\n return e;\n } catch (e) {\n if (/[A-Za-z]+ is not defined/.test(e.message)) {\n const error = new Error(\n e.message + \"\\n You probably are using a variable defined in a closure in your server function.\"\n );\n error.stack = e.stack;\n throw error;\n }\n throw e;\n }\n };\n return execute();\n };\n fn.url = hash;\n fn.action = function(...args) {\n return fn.call(this, ...args);\n };\n return fn;\n};\nserver$.registerHandler = function(route, handler) {\n handlers.set(route, handler);\n};\nserver$.getHandler = function(route) {\n return handlers.get(route);\n};\nserver$.hasHandler = function(route) {\n return handlers.has(route);\n};\nserver$.fetch = internalFetch;\n\nconst inlineServerFunctions = ({ forward }) => {\n return async (event) => {\n const url = new URL(event.request.url);\n if (server$.hasHandler(url.pathname)) {\n let contentType = event.request.headers.get(ContentTypeHeader);\n let origin = event.request.headers.get(XSolidStartOrigin);\n let formRequestBody;\n if (contentType != null && contentType.includes(\"form\") && !(origin != null && origin.includes(\"client\"))) {\n let [read1, read2] = event.request.body.tee();\n formRequestBody = new Request(event.request.url, {\n body: read2,\n headers: event.request.headers,\n method: event.request.method\n });\n event.request = new Request(event.request.url, {\n body: read1,\n headers: event.request.headers,\n method: event.request.method\n });\n }\n let serverFunctionEvent = Object.freeze({\n request: event.request,\n fetch: internalFetch,\n $type: FETCH_EVENT,\n env: event.env\n });\n const serverResponse = await handleServerRequest(serverFunctionEvent);\n let responseContentType = serverResponse.headers.get(XSolidStartContentTypeHeader);\n if (formRequestBody && responseContentType !== null && responseContentType.includes(\"error\")) {\n const formData = await formRequestBody.formData();\n let entries = [...formData.entries()];\n return new Response(null, {\n status: 302,\n headers: {\n Location: new URL(event.request.headers.get(\"referer\")).pathname + \"?form=\" + encodeURIComponent(\n JSON.stringify({\n url: url.pathname,\n entries,\n ...await serverResponse.json()\n })\n )\n }\n });\n }\n return serverResponse;\n }\n const response = await forward(event);\n return response;\n };\n};\n\nconst rootData = Object.values(/* #__PURE__ */ Object.assign({}))[0];\nconst dataFn = rootData ? rootData.default : undefined;\n/** Function responsible for listening for streamed [operations]{@link Operation}. */\n\n/** This composes an array of Exchanges into a single ExchangeIO function */\nconst composeMiddleware = exchanges => ({\n forward\n}) => exchanges.reduceRight((forward, exchange) => exchange({\n forward\n}), forward);\nfunction createHandler(...exchanges) {\n const exchange = composeMiddleware([apiRoutes, inlineServerFunctions, ...exchanges]);\n return async event => {\n return await exchange({\n forward: async op => {\n return new Response(null, {\n status: 404\n });\n }\n })(event);\n };\n}\nfunction StartRouter(props) {\n\n return createComponent(Router, props);\n}\nconst docType = ssr(\"\");\nfunction StartServer({\n event\n}) {\n const parsed = new URL(event.request.url);\n const path = parsed.pathname + parsed.search;\n sharedConfig.context.requestContext = event;\n return createComponent(ServerContext.Provider, {\n value: event,\n\n get children() {\n return createComponent(MetaProvider, {\n get tags() {\n return event.tags;\n },\n\n get children() {\n return createComponent(StartRouter, {\n url: path,\n\n get out() {\n return event.routerContext;\n },\n\n location: path,\n\n get prevLocation() {\n return event.prevUrl;\n },\n\n data: dataFn,\n\n get routes() {\n return routesConfig.routes;\n },\n\n get children() {\n return [docType, createComponent(Root, {})];\n }\n\n });\n }\n\n });\n }\n\n });\n}\n\nconst entryServer = createHandler(renderAsync(event => createComponent(StartServer, {\n event: event\n})));\n\nexport { entryServer as default };\n", "/**\n * This enum is used only internally in order to create nominal type for the disabled plugin\n */\nvar EnableIfBranded;\n(function (EnableIfBranded) {\n EnableIfBranded[EnableIfBranded[\"DisabledPlugin\"] = 0] = \"DisabledPlugin\";\n})(EnableIfBranded || (EnableIfBranded = {}));\nexport function isPluginEnabled(t) {\n return t !== EnableIfBranded.DisabledPlugin && t !== null;\n}\n/**\n * Utility function to enable a plugin.\n */\nexport function enableIf(condition, plugin) {\n if (condition) {\n return typeof plugin === 'function' ? plugin() : plugin;\n }\n return EnableIfBranded.DisabledPlugin;\n}\n", "// Note: This file is autogenerated using \"resources/gen-version.js\" script and\n// automatically updated by \"npm version\" command.\n\n/**\n * A string containing the version of the GraphQL.js library\n */\nexport const version = '16.6.0';\n/**\n * An object containing the components of the GraphQL.js version string\n */\n\nexport const versionInfo = Object.freeze({\n major: 16,\n minor: 6,\n patch: 0,\n preReleaseTag: null,\n});\n", "export function devAssert(condition, message) {\n const booleanCondition = Boolean(condition);\n\n if (!booleanCondition) {\n throw new Error(message);\n }\n}\n", "/**\n * Returns true if the value acts like a Promise, i.e. has a \"then\" function,\n * otherwise returns false.\n */\nexport function isPromise(value) {\n return (\n typeof (value === null || value === void 0 ? void 0 : value.then) ===\n 'function'\n );\n}\n", "/**\n * Return true if `value` is object-like. A value is object-like if it's not\n * `null` and has a `typeof` result of \"object\".\n */\nexport function isObjectLike(value) {\n return typeof value == 'object' && value !== null;\n}\n", "export function invariant(condition, message) {\n const booleanCondition = Boolean(condition);\n\n if (!booleanCondition) {\n throw new Error(\n message != null ? message : 'Unexpected invariant triggered.',\n );\n }\n}\n", "import { invariant } from '../jsutils/invariant.mjs';\nconst LineRegExp = /\\r\\n|[\\n\\r]/g;\n/**\n * Represents a location in a Source.\n */\n\n/**\n * Takes a Source and a UTF-8 character offset, and returns the corresponding\n * line and column as a SourceLocation.\n */\nexport function getLocation(source, position) {\n let lastLineStart = 0;\n let line = 1;\n\n for (const match of source.body.matchAll(LineRegExp)) {\n typeof match.index === 'number' || invariant(false);\n\n if (match.index >= position) {\n break;\n }\n\n lastLineStart = match.index + match[0].length;\n line += 1;\n }\n\n return {\n line,\n column: position + 1 - lastLineStart,\n };\n}\n", "import { getLocation } from './location.mjs';\n\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\nexport function printLocation(location) {\n return printSourceLocation(\n location.source,\n getLocation(location.source, location.start),\n );\n}\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\n\nexport function printSourceLocation(source, sourceLocation) {\n const firstLineColumnOffset = source.locationOffset.column - 1;\n const body = ''.padStart(firstLineColumnOffset) + source.body;\n const lineIndex = sourceLocation.line - 1;\n const lineOffset = source.locationOffset.line - 1;\n const lineNum = sourceLocation.line + lineOffset;\n const columnOffset = sourceLocation.line === 1 ? firstLineColumnOffset : 0;\n const columnNum = sourceLocation.column + columnOffset;\n const locationStr = `${source.name}:${lineNum}:${columnNum}\\n`;\n const lines = body.split(/\\r\\n|[\\n\\r]/g);\n const locationLine = lines[lineIndex]; // Special case for minified documents\n\n if (locationLine.length > 120) {\n const subLineIndex = Math.floor(columnNum / 80);\n const subLineColumnNum = columnNum % 80;\n const subLines = [];\n\n for (let i = 0; i < locationLine.length; i += 80) {\n subLines.push(locationLine.slice(i, i + 80));\n }\n\n return (\n locationStr +\n printPrefixedLines([\n [`${lineNum} |`, subLines[0]],\n ...subLines.slice(1, subLineIndex + 1).map((subLine) => ['|', subLine]),\n ['|', '^'.padStart(subLineColumnNum)],\n ['|', subLines[subLineIndex + 1]],\n ])\n );\n }\n\n return (\n locationStr +\n printPrefixedLines([\n // Lines specified like this: [\"prefix\", \"string\"],\n [`${lineNum - 1} |`, lines[lineIndex - 1]],\n [`${lineNum} |`, locationLine],\n ['|', '^'.padStart(columnNum)],\n [`${lineNum + 1} |`, lines[lineIndex + 1]],\n ])\n );\n}\n\nfunction printPrefixedLines(lines) {\n const existingLines = lines.filter(([_, line]) => line !== undefined);\n const padLen = Math.max(...existingLines.map(([prefix]) => prefix.length));\n return existingLines\n .map(([prefix, line]) => prefix.padStart(padLen) + (line ? ' ' + line : ''))\n .join('\\n');\n}\n", "import { isObjectLike } from '../jsutils/isObjectLike.mjs';\nimport { getLocation } from '../language/location.mjs';\nimport {\n printLocation,\n printSourceLocation,\n} from '../language/printLocation.mjs';\n\nfunction toNormalizedOptions(args) {\n const firstArg = args[0];\n\n if (firstArg == null || 'kind' in firstArg || 'length' in firstArg) {\n return {\n nodes: firstArg,\n source: args[1],\n positions: args[2],\n path: args[3],\n originalError: args[4],\n extensions: args[5],\n };\n }\n\n return firstArg;\n}\n/**\n * A GraphQLError describes an Error found during the parse, validate, or\n * execute phases of performing a GraphQL operation. In addition to a message\n * and stack trace, it also includes information about the locations in a\n * GraphQL document and/or execution result that correspond to the Error.\n */\n\nexport class GraphQLError extends Error {\n /**\n * An array of `{ line, column }` locations within the source GraphQL document\n * which correspond to this error.\n *\n * Errors during validation often contain multiple locations, for example to\n * point out two things with the same name. Errors during execution include a\n * single location, the field which produced the error.\n *\n * Enumerable, and appears in the result of JSON.stringify().\n */\n\n /**\n * An array describing the JSON-path into the execution response which\n * corresponds to this error. Only included for errors during execution.\n *\n * Enumerable, and appears in the result of JSON.stringify().\n */\n\n /**\n * An array of GraphQL AST Nodes corresponding to this error.\n */\n\n /**\n * The source GraphQL document for the first location of this error.\n *\n * Note that if this Error represents more than one node, the source may not\n * represent nodes after the first node.\n */\n\n /**\n * An array of character offsets within the source GraphQL document\n * which correspond to this error.\n */\n\n /**\n * The original error thrown from a field resolver during execution.\n */\n\n /**\n * Extension fields to add to the formatted error.\n */\n\n /**\n * @deprecated Please use the `GraphQLErrorOptions` constructor overload instead.\n */\n constructor(message, ...rawArgs) {\n var _this$nodes, _nodeLocations$, _ref;\n\n const { nodes, source, positions, path, originalError, extensions } =\n toNormalizedOptions(rawArgs);\n super(message);\n this.name = 'GraphQLError';\n this.path = path !== null && path !== void 0 ? path : undefined;\n this.originalError =\n originalError !== null && originalError !== void 0\n ? originalError\n : undefined; // Compute list of blame nodes.\n\n this.nodes = undefinedIfEmpty(\n Array.isArray(nodes) ? nodes : nodes ? [nodes] : undefined,\n );\n const nodeLocations = undefinedIfEmpty(\n (_this$nodes = this.nodes) === null || _this$nodes === void 0\n ? void 0\n : _this$nodes.map((node) => node.loc).filter((loc) => loc != null),\n ); // Compute locations in the source for the given nodes/positions.\n\n this.source =\n source !== null && source !== void 0\n ? source\n : nodeLocations === null || nodeLocations === void 0\n ? void 0\n : (_nodeLocations$ = nodeLocations[0]) === null ||\n _nodeLocations$ === void 0\n ? void 0\n : _nodeLocations$.source;\n this.positions =\n positions !== null && positions !== void 0\n ? positions\n : nodeLocations === null || nodeLocations === void 0\n ? void 0\n : nodeLocations.map((loc) => loc.start);\n this.locations =\n positions && source\n ? positions.map((pos) => getLocation(source, pos))\n : nodeLocations === null || nodeLocations === void 0\n ? void 0\n : nodeLocations.map((loc) => getLocation(loc.source, loc.start));\n const originalExtensions = isObjectLike(\n originalError === null || originalError === void 0\n ? void 0\n : originalError.extensions,\n )\n ? originalError === null || originalError === void 0\n ? void 0\n : originalError.extensions\n : undefined;\n this.extensions =\n (_ref =\n extensions !== null && extensions !== void 0\n ? extensions\n : originalExtensions) !== null && _ref !== void 0\n ? _ref\n : Object.create(null); // Only properties prescribed by the spec should be enumerable.\n // Keep the rest as non-enumerable.\n\n Object.defineProperties(this, {\n message: {\n writable: true,\n enumerable: true,\n },\n name: {\n enumerable: false,\n },\n nodes: {\n enumerable: false,\n },\n source: {\n enumerable: false,\n },\n positions: {\n enumerable: false,\n },\n originalError: {\n enumerable: false,\n },\n }); // Include (non-enumerable) stack trace.\n\n /* c8 ignore start */\n // FIXME: https://github.com/graphql/graphql-js/issues/2317\n\n if (\n originalError !== null &&\n originalError !== void 0 &&\n originalError.stack\n ) {\n Object.defineProperty(this, 'stack', {\n value: originalError.stack,\n writable: true,\n configurable: true,\n });\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, GraphQLError);\n } else {\n Object.defineProperty(this, 'stack', {\n value: Error().stack,\n writable: true,\n configurable: true,\n });\n }\n /* c8 ignore stop */\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLError';\n }\n\n toString() {\n let output = this.message;\n\n if (this.nodes) {\n for (const node of this.nodes) {\n if (node.loc) {\n output += '\\n\\n' + printLocation(node.loc);\n }\n }\n } else if (this.source && this.locations) {\n for (const location of this.locations) {\n output += '\\n\\n' + printSourceLocation(this.source, location);\n }\n }\n\n return output;\n }\n\n toJSON() {\n const formattedError = {\n message: this.message,\n };\n\n if (this.locations != null) {\n formattedError.locations = this.locations;\n }\n\n if (this.path != null) {\n formattedError.path = this.path;\n }\n\n if (this.extensions != null && Object.keys(this.extensions).length > 0) {\n formattedError.extensions = this.extensions;\n }\n\n return formattedError;\n }\n}\n\nfunction undefinedIfEmpty(array) {\n return array === undefined || array.length === 0 ? undefined : array;\n}\n/**\n * See: https://spec.graphql.org/draft/#sec-Errors\n */\n\n/**\n * Prints a GraphQLError to a string, representing useful location information\n * about the error's position in the source.\n *\n * @deprecated Please use `error.toString` instead. Will be removed in v17\n */\nexport function printError(error) {\n return error.toString();\n}\n/**\n * Given a GraphQLError, format it according to the rules described by the\n * Response Format, Errors section of the GraphQL Specification.\n *\n * @deprecated Please use `error.toJSON` instead. Will be removed in v17\n */\n\nexport function formatError(error) {\n return error.toJSON();\n}\n", "import { GraphQLError } from './GraphQLError.mjs';\n/**\n * Produces a GraphQLError representing a syntax error, containing useful\n * descriptive information about the syntax error's position in the source.\n */\n\nexport function syntaxError(source, position, description) {\n return new GraphQLError(`Syntax Error: ${description}`, {\n source,\n positions: [position],\n });\n}\n", "/**\n * Contains a range of UTF-8 character offsets and token references that\n * identify the region of the source from which the AST derived.\n */\nexport class Location {\n /**\n * The character offset at which this Node begins.\n */\n\n /**\n * The character offset at which this Node ends.\n */\n\n /**\n * The Token at which this Node begins.\n */\n\n /**\n * The Token at which this Node ends.\n */\n\n /**\n * The Source document the AST represents.\n */\n constructor(startToken, endToken, source) {\n this.start = startToken.start;\n this.end = endToken.end;\n this.startToken = startToken;\n this.endToken = endToken;\n this.source = source;\n }\n\n get [Symbol.toStringTag]() {\n return 'Location';\n }\n\n toJSON() {\n return {\n start: this.start,\n end: this.end,\n };\n }\n}\n/**\n * Represents a range of characters represented by a lexical token\n * within a Source.\n */\n\nexport class Token {\n /**\n * The kind of Token.\n */\n\n /**\n * The character offset at which this Node begins.\n */\n\n /**\n * The character offset at which this Node ends.\n */\n\n /**\n * The 1-indexed line number on which this Token appears.\n */\n\n /**\n * The 1-indexed column number at which this Token begins.\n */\n\n /**\n * For non-punctuation tokens, represents the interpreted value of the token.\n *\n * Note: is undefined for punctuation tokens, but typed as string for\n * convenience in the parser.\n */\n\n /**\n * Tokens exist as nodes in a double-linked-list amongst all tokens\n * including ignored tokens. is always the first node and \n * the last.\n */\n constructor(kind, start, end, line, column, value) {\n this.kind = kind;\n this.start = start;\n this.end = end;\n this.line = line;\n this.column = column; // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\n this.value = value;\n this.prev = null;\n this.next = null;\n }\n\n get [Symbol.toStringTag]() {\n return 'Token';\n }\n\n toJSON() {\n return {\n kind: this.kind,\n value: this.value,\n line: this.line,\n column: this.column,\n };\n }\n}\n/**\n * The list of all possible AST node types.\n */\n\n/**\n * @internal\n */\nexport const QueryDocumentKeys = {\n Name: [],\n Document: ['definitions'],\n OperationDefinition: [\n 'name',\n 'variableDefinitions',\n 'directives',\n 'selectionSet',\n ],\n VariableDefinition: ['variable', 'type', 'defaultValue', 'directives'],\n Variable: ['name'],\n SelectionSet: ['selections'],\n Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet'],\n Argument: ['name', 'value'],\n FragmentSpread: ['name', 'directives'],\n InlineFragment: ['typeCondition', 'directives', 'selectionSet'],\n FragmentDefinition: [\n 'name', // Note: fragment variable definitions are deprecated and will removed in v17.0.0\n 'variableDefinitions',\n 'typeCondition',\n 'directives',\n 'selectionSet',\n ],\n IntValue: [],\n FloatValue: [],\n StringValue: [],\n BooleanValue: [],\n NullValue: [],\n EnumValue: [],\n ListValue: ['values'],\n ObjectValue: ['fields'],\n ObjectField: ['name', 'value'],\n Directive: ['name', 'arguments'],\n NamedType: ['name'],\n ListType: ['type'],\n NonNullType: ['type'],\n SchemaDefinition: ['description', 'directives', 'operationTypes'],\n OperationTypeDefinition: ['type'],\n ScalarTypeDefinition: ['description', 'name', 'directives'],\n ObjectTypeDefinition: [\n 'description',\n 'name',\n 'interfaces',\n 'directives',\n 'fields',\n ],\n FieldDefinition: ['description', 'name', 'arguments', 'type', 'directives'],\n InputValueDefinition: [\n 'description',\n 'name',\n 'type',\n 'defaultValue',\n 'directives',\n ],\n InterfaceTypeDefinition: [\n 'description',\n 'name',\n 'interfaces',\n 'directives',\n 'fields',\n ],\n UnionTypeDefinition: ['description', 'name', 'directives', 'types'],\n EnumTypeDefinition: ['description', 'name', 'directives', 'values'],\n EnumValueDefinition: ['description', 'name', 'directives'],\n InputObjectTypeDefinition: ['description', 'name', 'directives', 'fields'],\n DirectiveDefinition: ['description', 'name', 'arguments', 'locations'],\n SchemaExtension: ['directives', 'operationTypes'],\n ScalarTypeExtension: ['name', 'directives'],\n ObjectTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n InterfaceTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n UnionTypeExtension: ['name', 'directives', 'types'],\n EnumTypeExtension: ['name', 'directives', 'values'],\n InputObjectTypeExtension: ['name', 'directives', 'fields'],\n};\nconst kindValues = new Set(Object.keys(QueryDocumentKeys));\n/**\n * @internal\n */\n\nexport function isNode(maybeNode) {\n const maybeKind =\n maybeNode === null || maybeNode === void 0 ? void 0 : maybeNode.kind;\n return typeof maybeKind === 'string' && kindValues.has(maybeKind);\n}\n/** Name */\n\nvar OperationTypeNode;\n\n(function (OperationTypeNode) {\n OperationTypeNode['QUERY'] = 'query';\n OperationTypeNode['MUTATION'] = 'mutation';\n OperationTypeNode['SUBSCRIPTION'] = 'subscription';\n})(OperationTypeNode || (OperationTypeNode = {}));\n\nexport { OperationTypeNode };\n", "/**\n * The set of allowed directive location values.\n */\nvar DirectiveLocation;\n\n(function (DirectiveLocation) {\n DirectiveLocation['QUERY'] = 'QUERY';\n DirectiveLocation['MUTATION'] = 'MUTATION';\n DirectiveLocation['SUBSCRIPTION'] = 'SUBSCRIPTION';\n DirectiveLocation['FIELD'] = 'FIELD';\n DirectiveLocation['FRAGMENT_DEFINITION'] = 'FRAGMENT_DEFINITION';\n DirectiveLocation['FRAGMENT_SPREAD'] = 'FRAGMENT_SPREAD';\n DirectiveLocation['INLINE_FRAGMENT'] = 'INLINE_FRAGMENT';\n DirectiveLocation['VARIABLE_DEFINITION'] = 'VARIABLE_DEFINITION';\n DirectiveLocation['SCHEMA'] = 'SCHEMA';\n DirectiveLocation['SCALAR'] = 'SCALAR';\n DirectiveLocation['OBJECT'] = 'OBJECT';\n DirectiveLocation['FIELD_DEFINITION'] = 'FIELD_DEFINITION';\n DirectiveLocation['ARGUMENT_DEFINITION'] = 'ARGUMENT_DEFINITION';\n DirectiveLocation['INTERFACE'] = 'INTERFACE';\n DirectiveLocation['UNION'] = 'UNION';\n DirectiveLocation['ENUM'] = 'ENUM';\n DirectiveLocation['ENUM_VALUE'] = 'ENUM_VALUE';\n DirectiveLocation['INPUT_OBJECT'] = 'INPUT_OBJECT';\n DirectiveLocation['INPUT_FIELD_DEFINITION'] = 'INPUT_FIELD_DEFINITION';\n})(DirectiveLocation || (DirectiveLocation = {}));\n\nexport { DirectiveLocation };\n/**\n * The enum type representing the directive location values.\n *\n * @deprecated Please use `DirectiveLocation`. Will be remove in v17.\n */\n", "/**\n * The set of allowed kind values for AST nodes.\n */\nvar Kind;\n\n(function (Kind) {\n Kind['NAME'] = 'Name';\n Kind['DOCUMENT'] = 'Document';\n Kind['OPERATION_DEFINITION'] = 'OperationDefinition';\n Kind['VARIABLE_DEFINITION'] = 'VariableDefinition';\n Kind['SELECTION_SET'] = 'SelectionSet';\n Kind['FIELD'] = 'Field';\n Kind['ARGUMENT'] = 'Argument';\n Kind['FRAGMENT_SPREAD'] = 'FragmentSpread';\n Kind['INLINE_FRAGMENT'] = 'InlineFragment';\n Kind['FRAGMENT_DEFINITION'] = 'FragmentDefinition';\n Kind['VARIABLE'] = 'Variable';\n Kind['INT'] = 'IntValue';\n Kind['FLOAT'] = 'FloatValue';\n Kind['STRING'] = 'StringValue';\n Kind['BOOLEAN'] = 'BooleanValue';\n Kind['NULL'] = 'NullValue';\n Kind['ENUM'] = 'EnumValue';\n Kind['LIST'] = 'ListValue';\n Kind['OBJECT'] = 'ObjectValue';\n Kind['OBJECT_FIELD'] = 'ObjectField';\n Kind['DIRECTIVE'] = 'Directive';\n Kind['NAMED_TYPE'] = 'NamedType';\n Kind['LIST_TYPE'] = 'ListType';\n Kind['NON_NULL_TYPE'] = 'NonNullType';\n Kind['SCHEMA_DEFINITION'] = 'SchemaDefinition';\n Kind['OPERATION_TYPE_DEFINITION'] = 'OperationTypeDefinition';\n Kind['SCALAR_TYPE_DEFINITION'] = 'ScalarTypeDefinition';\n Kind['OBJECT_TYPE_DEFINITION'] = 'ObjectTypeDefinition';\n Kind['FIELD_DEFINITION'] = 'FieldDefinition';\n Kind['INPUT_VALUE_DEFINITION'] = 'InputValueDefinition';\n Kind['INTERFACE_TYPE_DEFINITION'] = 'InterfaceTypeDefinition';\n Kind['UNION_TYPE_DEFINITION'] = 'UnionTypeDefinition';\n Kind['ENUM_TYPE_DEFINITION'] = 'EnumTypeDefinition';\n Kind['ENUM_VALUE_DEFINITION'] = 'EnumValueDefinition';\n Kind['INPUT_OBJECT_TYPE_DEFINITION'] = 'InputObjectTypeDefinition';\n Kind['DIRECTIVE_DEFINITION'] = 'DirectiveDefinition';\n Kind['SCHEMA_EXTENSION'] = 'SchemaExtension';\n Kind['SCALAR_TYPE_EXTENSION'] = 'ScalarTypeExtension';\n Kind['OBJECT_TYPE_EXTENSION'] = 'ObjectTypeExtension';\n Kind['INTERFACE_TYPE_EXTENSION'] = 'InterfaceTypeExtension';\n Kind['UNION_TYPE_EXTENSION'] = 'UnionTypeExtension';\n Kind['ENUM_TYPE_EXTENSION'] = 'EnumTypeExtension';\n Kind['INPUT_OBJECT_TYPE_EXTENSION'] = 'InputObjectTypeExtension';\n})(Kind || (Kind = {}));\n\nexport { Kind };\n/**\n * The enum type representing the possible kind values of AST nodes.\n *\n * @deprecated Please use `Kind`. Will be remove in v17.\n */\n", "/**\n * ```\n * WhiteSpace ::\n * - \"Horizontal Tab (U+0009)\"\n * - \"Space (U+0020)\"\n * ```\n * @internal\n */\nexport function isWhiteSpace(code) {\n return code === 0x0009 || code === 0x0020;\n}\n/**\n * ```\n * Digit :: one of\n * - `0` `1` `2` `3` `4` `5` `6` `7` `8` `9`\n * ```\n * @internal\n */\n\nexport function isDigit(code) {\n return code >= 0x0030 && code <= 0x0039;\n}\n/**\n * ```\n * Letter :: one of\n * - `A` `B` `C` `D` `E` `F` `G` `H` `I` `J` `K` `L` `M`\n * - `N` `O` `P` `Q` `R` `S` `T` `U` `V` `W` `X` `Y` `Z`\n * - `a` `b` `c` `d` `e` `f` `g` `h` `i` `j` `k` `l` `m`\n * - `n` `o` `p` `q` `r` `s` `t` `u` `v` `w` `x` `y` `z`\n * ```\n * @internal\n */\n\nexport function isLetter(code) {\n return (\n (code >= 0x0061 && code <= 0x007a) || // A-Z\n (code >= 0x0041 && code <= 0x005a) // a-z\n );\n}\n/**\n * ```\n * NameStart ::\n * - Letter\n * - `_`\n * ```\n * @internal\n */\n\nexport function isNameStart(code) {\n return isLetter(code) || code === 0x005f;\n}\n/**\n * ```\n * NameContinue ::\n * - Letter\n * - Digit\n * - `_`\n * ```\n * @internal\n */\n\nexport function isNameContinue(code) {\n return isLetter(code) || isDigit(code) || code === 0x005f;\n}\n", "import { isWhiteSpace } from './characterClasses.mjs';\n/**\n * Produces the value of a block string from its parsed raw value, similar to\n * CoffeeScript's block string, Python's docstring trim or Ruby's strip_heredoc.\n *\n * This implements the GraphQL spec's BlockStringValue() static algorithm.\n *\n * @internal\n */\n\nexport function dedentBlockStringLines(lines) {\n var _firstNonEmptyLine2;\n\n let commonIndent = Number.MAX_SAFE_INTEGER;\n let firstNonEmptyLine = null;\n let lastNonEmptyLine = -1;\n\n for (let i = 0; i < lines.length; ++i) {\n var _firstNonEmptyLine;\n\n const line = lines[i];\n const indent = leadingWhitespace(line);\n\n if (indent === line.length) {\n continue; // skip empty lines\n }\n\n firstNonEmptyLine =\n (_firstNonEmptyLine = firstNonEmptyLine) !== null &&\n _firstNonEmptyLine !== void 0\n ? _firstNonEmptyLine\n : i;\n lastNonEmptyLine = i;\n\n if (i !== 0 && indent < commonIndent) {\n commonIndent = indent;\n }\n }\n\n return lines // Remove common indentation from all lines but first.\n .map((line, i) => (i === 0 ? line : line.slice(commonIndent))) // Remove leading and trailing blank lines.\n .slice(\n (_firstNonEmptyLine2 = firstNonEmptyLine) !== null &&\n _firstNonEmptyLine2 !== void 0\n ? _firstNonEmptyLine2\n : 0,\n lastNonEmptyLine + 1,\n );\n}\n\nfunction leadingWhitespace(str) {\n let i = 0;\n\n while (i < str.length && isWhiteSpace(str.charCodeAt(i))) {\n ++i;\n }\n\n return i;\n}\n/**\n * @internal\n */\n\nexport function isPrintableAsBlockString(value) {\n if (value === '') {\n return true; // empty string is printable\n }\n\n let isEmptyLine = true;\n let hasIndent = false;\n let hasCommonIndent = true;\n let seenNonEmptyLine = false;\n\n for (let i = 0; i < value.length; ++i) {\n switch (value.codePointAt(i)) {\n case 0x0000:\n case 0x0001:\n case 0x0002:\n case 0x0003:\n case 0x0004:\n case 0x0005:\n case 0x0006:\n case 0x0007:\n case 0x0008:\n case 0x000b:\n case 0x000c:\n case 0x000e:\n case 0x000f:\n return false;\n // Has non-printable characters\n\n case 0x000d:\n // \\r\n return false;\n // Has \\r or \\r\\n which will be replaced as \\n\n\n case 10:\n // \\n\n if (isEmptyLine && !seenNonEmptyLine) {\n return false; // Has leading new line\n }\n\n seenNonEmptyLine = true;\n isEmptyLine = true;\n hasIndent = false;\n break;\n\n case 9: // \\t\n\n case 32:\n // \n hasIndent || (hasIndent = isEmptyLine);\n break;\n\n default:\n hasCommonIndent && (hasCommonIndent = hasIndent);\n isEmptyLine = false;\n }\n }\n\n if (isEmptyLine) {\n return false; // Has trailing empty lines\n }\n\n if (hasCommonIndent && seenNonEmptyLine) {\n return false; // Has internal indent\n }\n\n return true;\n}\n/**\n * Print a block string in the indented block form by adding a leading and\n * trailing blank line. However, if a block string starts with whitespace and is\n * a single-line, adding a leading blank line would strip that whitespace.\n *\n * @internal\n */\n\nexport function printBlockString(value, options) {\n const escapedValue = value.replace(/\"\"\"/g, '\\\\\"\"\"'); // Expand a block string's raw value into independent lines.\n\n const lines = escapedValue.split(/\\r\\n|[\\n\\r]/g);\n const isSingleLine = lines.length === 1; // If common indentation is found we can fix some of those cases by adding leading new line\n\n const forceLeadingNewLine =\n lines.length > 1 &&\n lines\n .slice(1)\n .every((line) => line.length === 0 || isWhiteSpace(line.charCodeAt(0))); // Trailing triple quotes just looks confusing but doesn't force trailing new line\n\n const hasTrailingTripleQuotes = escapedValue.endsWith('\\\\\"\"\"'); // Trailing quote (single or double) or slash forces trailing new line\n\n const hasTrailingQuote = value.endsWith('\"') && !hasTrailingTripleQuotes;\n const hasTrailingSlash = value.endsWith('\\\\');\n const forceTrailingNewline = hasTrailingQuote || hasTrailingSlash;\n const printAsMultipleLines =\n !(options !== null && options !== void 0 && options.minimize) && // add leading and trailing new lines only if it improves readability\n (!isSingleLine ||\n value.length > 70 ||\n forceTrailingNewline ||\n forceLeadingNewLine ||\n hasTrailingTripleQuotes);\n let result = ''; // Format a multi-line block quote to account for leading space.\n\n const skipLeadingNewLine = isSingleLine && isWhiteSpace(value.charCodeAt(0));\n\n if ((printAsMultipleLines && !skipLeadingNewLine) || forceLeadingNewLine) {\n result += '\\n';\n }\n\n result += escapedValue;\n\n if (printAsMultipleLines || forceTrailingNewline) {\n result += '\\n';\n }\n\n return '\"\"\"' + result + '\"\"\"';\n}\n", "/**\n * An exported enum describing the different kinds of tokens that the\n * lexer emits.\n */\nvar TokenKind;\n\n(function (TokenKind) {\n TokenKind['SOF'] = '';\n TokenKind['EOF'] = '';\n TokenKind['BANG'] = '!';\n TokenKind['DOLLAR'] = '$';\n TokenKind['AMP'] = '&';\n TokenKind['PAREN_L'] = '(';\n TokenKind['PAREN_R'] = ')';\n TokenKind['SPREAD'] = '...';\n TokenKind['COLON'] = ':';\n TokenKind['EQUALS'] = '=';\n TokenKind['AT'] = '@';\n TokenKind['BRACKET_L'] = '[';\n TokenKind['BRACKET_R'] = ']';\n TokenKind['BRACE_L'] = '{';\n TokenKind['PIPE'] = '|';\n TokenKind['BRACE_R'] = '}';\n TokenKind['NAME'] = 'Name';\n TokenKind['INT'] = 'Int';\n TokenKind['FLOAT'] = 'Float';\n TokenKind['STRING'] = 'String';\n TokenKind['BLOCK_STRING'] = 'BlockString';\n TokenKind['COMMENT'] = 'Comment';\n})(TokenKind || (TokenKind = {}));\n\nexport { TokenKind };\n/**\n * The enum type representing the token kinds values.\n *\n * @deprecated Please use `TokenKind`. Will be remove in v17.\n */\n", "import { syntaxError } from '../error/syntaxError.mjs';\nimport { Token } from './ast.mjs';\nimport { dedentBlockStringLines } from './blockString.mjs';\nimport { isDigit, isNameContinue, isNameStart } from './characterClasses.mjs';\nimport { TokenKind } from './tokenKind.mjs';\n/**\n * Given a Source object, creates a Lexer for that source.\n * A Lexer is a stateful stream generator in that every time\n * it is advanced, it returns the next token in the Source. Assuming the\n * source lexes, the final Token emitted by the lexer will be of kind\n * EOF, after which the lexer will repeatedly return the same EOF token\n * whenever called.\n */\n\nexport class Lexer {\n /**\n * The previously focused non-ignored token.\n */\n\n /**\n * The currently focused non-ignored token.\n */\n\n /**\n * The (1-indexed) line containing the current token.\n */\n\n /**\n * The character offset at which the current line begins.\n */\n constructor(source) {\n const startOfFileToken = new Token(TokenKind.SOF, 0, 0, 0, 0);\n this.source = source;\n this.lastToken = startOfFileToken;\n this.token = startOfFileToken;\n this.line = 1;\n this.lineStart = 0;\n }\n\n get [Symbol.toStringTag]() {\n return 'Lexer';\n }\n /**\n * Advances the token stream to the next non-ignored token.\n */\n\n advance() {\n this.lastToken = this.token;\n const token = (this.token = this.lookahead());\n return token;\n }\n /**\n * Looks ahead and returns the next non-ignored token, but does not change\n * the state of Lexer.\n */\n\n lookahead() {\n let token = this.token;\n\n if (token.kind !== TokenKind.EOF) {\n do {\n if (token.next) {\n token = token.next;\n } else {\n // Read the next token and form a link in the token linked-list.\n const nextToken = readNextToken(this, token.end); // @ts-expect-error next is only mutable during parsing.\n\n token.next = nextToken; // @ts-expect-error prev is only mutable during parsing.\n\n nextToken.prev = token;\n token = nextToken;\n }\n } while (token.kind === TokenKind.COMMENT);\n }\n\n return token;\n }\n}\n/**\n * @internal\n */\n\nexport function isPunctuatorTokenKind(kind) {\n return (\n kind === TokenKind.BANG ||\n kind === TokenKind.DOLLAR ||\n kind === TokenKind.AMP ||\n kind === TokenKind.PAREN_L ||\n kind === TokenKind.PAREN_R ||\n kind === TokenKind.SPREAD ||\n kind === TokenKind.COLON ||\n kind === TokenKind.EQUALS ||\n kind === TokenKind.AT ||\n kind === TokenKind.BRACKET_L ||\n kind === TokenKind.BRACKET_R ||\n kind === TokenKind.BRACE_L ||\n kind === TokenKind.PIPE ||\n kind === TokenKind.BRACE_R\n );\n}\n/**\n * A Unicode scalar value is any Unicode code point except surrogate code\n * points. In other words, the inclusive ranges of values 0x0000 to 0xD7FF and\n * 0xE000 to 0x10FFFF.\n *\n * SourceCharacter ::\n * - \"Any Unicode scalar value\"\n */\n\nfunction isUnicodeScalarValue(code) {\n return (\n (code >= 0x0000 && code <= 0xd7ff) || (code >= 0xe000 && code <= 0x10ffff)\n );\n}\n/**\n * The GraphQL specification defines source text as a sequence of unicode scalar\n * values (which Unicode defines to exclude surrogate code points). However\n * JavaScript defines strings as a sequence of UTF-16 code units which may\n * include surrogates. A surrogate pair is a valid source character as it\n * encodes a supplementary code point (above U+FFFF), but unpaired surrogate\n * code points are not valid source characters.\n */\n\nfunction isSupplementaryCodePoint(body, location) {\n return (\n isLeadingSurrogate(body.charCodeAt(location)) &&\n isTrailingSurrogate(body.charCodeAt(location + 1))\n );\n}\n\nfunction isLeadingSurrogate(code) {\n return code >= 0xd800 && code <= 0xdbff;\n}\n\nfunction isTrailingSurrogate(code) {\n return code >= 0xdc00 && code <= 0xdfff;\n}\n/**\n * Prints the code point (or end of file reference) at a given location in a\n * source for use in error messages.\n *\n * Printable ASCII is printed quoted, while other points are printed in Unicode\n * code point form (ie. U+1234).\n */\n\nfunction printCodePointAt(lexer, location) {\n const code = lexer.source.body.codePointAt(location);\n\n if (code === undefined) {\n return TokenKind.EOF;\n } else if (code >= 0x0020 && code <= 0x007e) {\n // Printable ASCII\n const char = String.fromCodePoint(code);\n return char === '\"' ? \"'\\\"'\" : `\"${char}\"`;\n } // Unicode code point\n\n return 'U+' + code.toString(16).toUpperCase().padStart(4, '0');\n}\n/**\n * Create a token with line and column location information.\n */\n\nfunction createToken(lexer, kind, start, end, value) {\n const line = lexer.line;\n const col = 1 + start - lexer.lineStart;\n return new Token(kind, start, end, line, col, value);\n}\n/**\n * Gets the next token from the source starting at the given position.\n *\n * This skips over whitespace until it finds the next lexable token, then lexes\n * punctuators immediately or calls the appropriate helper function for more\n * complicated tokens.\n */\n\nfunction readNextToken(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let position = start;\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position); // SourceCharacter\n\n switch (code) {\n // Ignored ::\n // - UnicodeBOM\n // - WhiteSpace\n // - LineTerminator\n // - Comment\n // - Comma\n //\n // UnicodeBOM :: \"Byte Order Mark (U+FEFF)\"\n //\n // WhiteSpace ::\n // - \"Horizontal Tab (U+0009)\"\n // - \"Space (U+0020)\"\n //\n // Comma :: ,\n case 0xfeff: // \n\n case 0x0009: // \\t\n\n case 0x0020: // \n\n case 0x002c:\n // ,\n ++position;\n continue;\n // LineTerminator ::\n // - \"New Line (U+000A)\"\n // - \"Carriage Return (U+000D)\" [lookahead != \"New Line (U+000A)\"]\n // - \"Carriage Return (U+000D)\" \"New Line (U+000A)\"\n\n case 0x000a:\n // \\n\n ++position;\n ++lexer.line;\n lexer.lineStart = position;\n continue;\n\n case 0x000d:\n // \\r\n if (body.charCodeAt(position + 1) === 0x000a) {\n position += 2;\n } else {\n ++position;\n }\n\n ++lexer.line;\n lexer.lineStart = position;\n continue;\n // Comment\n\n case 0x0023:\n // #\n return readComment(lexer, position);\n // Token ::\n // - Punctuator\n // - Name\n // - IntValue\n // - FloatValue\n // - StringValue\n //\n // Punctuator :: one of ! $ & ( ) ... : = @ [ ] { | }\n\n case 0x0021:\n // !\n return createToken(lexer, TokenKind.BANG, position, position + 1);\n\n case 0x0024:\n // $\n return createToken(lexer, TokenKind.DOLLAR, position, position + 1);\n\n case 0x0026:\n // &\n return createToken(lexer, TokenKind.AMP, position, position + 1);\n\n case 0x0028:\n // (\n return createToken(lexer, TokenKind.PAREN_L, position, position + 1);\n\n case 0x0029:\n // )\n return createToken(lexer, TokenKind.PAREN_R, position, position + 1);\n\n case 0x002e:\n // .\n if (\n body.charCodeAt(position + 1) === 0x002e &&\n body.charCodeAt(position + 2) === 0x002e\n ) {\n return createToken(lexer, TokenKind.SPREAD, position, position + 3);\n }\n\n break;\n\n case 0x003a:\n // :\n return createToken(lexer, TokenKind.COLON, position, position + 1);\n\n case 0x003d:\n // =\n return createToken(lexer, TokenKind.EQUALS, position, position + 1);\n\n case 0x0040:\n // @\n return createToken(lexer, TokenKind.AT, position, position + 1);\n\n case 0x005b:\n // [\n return createToken(lexer, TokenKind.BRACKET_L, position, position + 1);\n\n case 0x005d:\n // ]\n return createToken(lexer, TokenKind.BRACKET_R, position, position + 1);\n\n case 0x007b:\n // {\n return createToken(lexer, TokenKind.BRACE_L, position, position + 1);\n\n case 0x007c:\n // |\n return createToken(lexer, TokenKind.PIPE, position, position + 1);\n\n case 0x007d:\n // }\n return createToken(lexer, TokenKind.BRACE_R, position, position + 1);\n // StringValue\n\n case 0x0022:\n // \"\n if (\n body.charCodeAt(position + 1) === 0x0022 &&\n body.charCodeAt(position + 2) === 0x0022\n ) {\n return readBlockString(lexer, position);\n }\n\n return readString(lexer, position);\n } // IntValue | FloatValue (Digit | -)\n\n if (isDigit(code) || code === 0x002d) {\n return readNumber(lexer, position, code);\n } // Name\n\n if (isNameStart(code)) {\n return readName(lexer, position);\n }\n\n throw syntaxError(\n lexer.source,\n position,\n code === 0x0027\n ? 'Unexpected single quote character (\\'), did you mean to use a double quote (\")?'\n : isUnicodeScalarValue(code) || isSupplementaryCodePoint(body, position)\n ? `Unexpected character: ${printCodePointAt(lexer, position)}.`\n : `Invalid character: ${printCodePointAt(lexer, position)}.`,\n );\n }\n\n return createToken(lexer, TokenKind.EOF, bodyLength, bodyLength);\n}\n/**\n * Reads a comment token from the source file.\n *\n * ```\n * Comment :: # CommentChar* [lookahead != CommentChar]\n *\n * CommentChar :: SourceCharacter but not LineTerminator\n * ```\n */\n\nfunction readComment(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let position = start + 1;\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position); // LineTerminator (\\n | \\r)\n\n if (code === 0x000a || code === 0x000d) {\n break;\n } // SourceCharacter\n\n if (isUnicodeScalarValue(code)) {\n ++position;\n } else if (isSupplementaryCodePoint(body, position)) {\n position += 2;\n } else {\n break;\n }\n }\n\n return createToken(\n lexer,\n TokenKind.COMMENT,\n start,\n position,\n body.slice(start + 1, position),\n );\n}\n/**\n * Reads a number token from the source file, either a FloatValue or an IntValue\n * depending on whether a FractionalPart or ExponentPart is encountered.\n *\n * ```\n * IntValue :: IntegerPart [lookahead != {Digit, `.`, NameStart}]\n *\n * IntegerPart ::\n * - NegativeSign? 0\n * - NegativeSign? NonZeroDigit Digit*\n *\n * NegativeSign :: -\n *\n * NonZeroDigit :: Digit but not `0`\n *\n * FloatValue ::\n * - IntegerPart FractionalPart ExponentPart [lookahead != {Digit, `.`, NameStart}]\n * - IntegerPart FractionalPart [lookahead != {Digit, `.`, NameStart}]\n * - IntegerPart ExponentPart [lookahead != {Digit, `.`, NameStart}]\n *\n * FractionalPart :: . Digit+\n *\n * ExponentPart :: ExponentIndicator Sign? Digit+\n *\n * ExponentIndicator :: one of `e` `E`\n *\n * Sign :: one of + -\n * ```\n */\n\nfunction readNumber(lexer, start, firstCode) {\n const body = lexer.source.body;\n let position = start;\n let code = firstCode;\n let isFloat = false; // NegativeSign (-)\n\n if (code === 0x002d) {\n code = body.charCodeAt(++position);\n } // Zero (0)\n\n if (code === 0x0030) {\n code = body.charCodeAt(++position);\n\n if (isDigit(code)) {\n throw syntaxError(\n lexer.source,\n position,\n `Invalid number, unexpected digit after 0: ${printCodePointAt(\n lexer,\n position,\n )}.`,\n );\n }\n } else {\n position = readDigits(lexer, position, code);\n code = body.charCodeAt(position);\n } // Full stop (.)\n\n if (code === 0x002e) {\n isFloat = true;\n code = body.charCodeAt(++position);\n position = readDigits(lexer, position, code);\n code = body.charCodeAt(position);\n } // E e\n\n if (code === 0x0045 || code === 0x0065) {\n isFloat = true;\n code = body.charCodeAt(++position); // + -\n\n if (code === 0x002b || code === 0x002d) {\n code = body.charCodeAt(++position);\n }\n\n position = readDigits(lexer, position, code);\n code = body.charCodeAt(position);\n } // Numbers cannot be followed by . or NameStart\n\n if (code === 0x002e || isNameStart(code)) {\n throw syntaxError(\n lexer.source,\n position,\n `Invalid number, expected digit but got: ${printCodePointAt(\n lexer,\n position,\n )}.`,\n );\n }\n\n return createToken(\n lexer,\n isFloat ? TokenKind.FLOAT : TokenKind.INT,\n start,\n position,\n body.slice(start, position),\n );\n}\n/**\n * Returns the new position in the source after reading one or more digits.\n */\n\nfunction readDigits(lexer, start, firstCode) {\n if (!isDigit(firstCode)) {\n throw syntaxError(\n lexer.source,\n start,\n `Invalid number, expected digit but got: ${printCodePointAt(\n lexer,\n start,\n )}.`,\n );\n }\n\n const body = lexer.source.body;\n let position = start + 1; // +1 to skip first firstCode\n\n while (isDigit(body.charCodeAt(position))) {\n ++position;\n }\n\n return position;\n}\n/**\n * Reads a single-quote string token from the source file.\n *\n * ```\n * StringValue ::\n * - `\"\"` [lookahead != `\"`]\n * - `\"` StringCharacter+ `\"`\n *\n * StringCharacter ::\n * - SourceCharacter but not `\"` or `\\` or LineTerminator\n * - `\\u` EscapedUnicode\n * - `\\` EscapedCharacter\n *\n * EscapedUnicode ::\n * - `{` HexDigit+ `}`\n * - HexDigit HexDigit HexDigit HexDigit\n *\n * EscapedCharacter :: one of `\"` `\\` `/` `b` `f` `n` `r` `t`\n * ```\n */\n\nfunction readString(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let position = start + 1;\n let chunkStart = position;\n let value = '';\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position); // Closing Quote (\")\n\n if (code === 0x0022) {\n value += body.slice(chunkStart, position);\n return createToken(lexer, TokenKind.STRING, start, position + 1, value);\n } // Escape Sequence (\\)\n\n if (code === 0x005c) {\n value += body.slice(chunkStart, position);\n const escape =\n body.charCodeAt(position + 1) === 0x0075 // u\n ? body.charCodeAt(position + 2) === 0x007b // {\n ? readEscapedUnicodeVariableWidth(lexer, position)\n : readEscapedUnicodeFixedWidth(lexer, position)\n : readEscapedCharacter(lexer, position);\n value += escape.value;\n position += escape.size;\n chunkStart = position;\n continue;\n } // LineTerminator (\\n | \\r)\n\n if (code === 0x000a || code === 0x000d) {\n break;\n } // SourceCharacter\n\n if (isUnicodeScalarValue(code)) {\n ++position;\n } else if (isSupplementaryCodePoint(body, position)) {\n position += 2;\n } else {\n throw syntaxError(\n lexer.source,\n position,\n `Invalid character within String: ${printCodePointAt(\n lexer,\n position,\n )}.`,\n );\n }\n }\n\n throw syntaxError(lexer.source, position, 'Unterminated string.');\n} // The string value and lexed size of an escape sequence.\n\nfunction readEscapedUnicodeVariableWidth(lexer, position) {\n const body = lexer.source.body;\n let point = 0;\n let size = 3; // Cannot be larger than 12 chars (\\u{00000000}).\n\n while (size < 12) {\n const code = body.charCodeAt(position + size++); // Closing Brace (})\n\n if (code === 0x007d) {\n // Must be at least 5 chars (\\u{0}) and encode a Unicode scalar value.\n if (size < 5 || !isUnicodeScalarValue(point)) {\n break;\n }\n\n return {\n value: String.fromCodePoint(point),\n size,\n };\n } // Append this hex digit to the code point.\n\n point = (point << 4) | readHexDigit(code);\n\n if (point < 0) {\n break;\n }\n }\n\n throw syntaxError(\n lexer.source,\n position,\n `Invalid Unicode escape sequence: \"${body.slice(\n position,\n position + size,\n )}\".`,\n );\n}\n\nfunction readEscapedUnicodeFixedWidth(lexer, position) {\n const body = lexer.source.body;\n const code = read16BitHexCode(body, position + 2);\n\n if (isUnicodeScalarValue(code)) {\n return {\n value: String.fromCodePoint(code),\n size: 6,\n };\n } // GraphQL allows JSON-style surrogate pair escape sequences, but only when\n // a valid pair is formed.\n\n if (isLeadingSurrogate(code)) {\n // \\u\n if (\n body.charCodeAt(position + 6) === 0x005c &&\n body.charCodeAt(position + 7) === 0x0075\n ) {\n const trailingCode = read16BitHexCode(body, position + 8);\n\n if (isTrailingSurrogate(trailingCode)) {\n // JavaScript defines strings as a sequence of UTF-16 code units and\n // encodes Unicode code points above U+FFFF using a surrogate pair of\n // code units. Since this is a surrogate pair escape sequence, just\n // include both codes into the JavaScript string value. Had JavaScript\n // not been internally based on UTF-16, then this surrogate pair would\n // be decoded to retrieve the supplementary code point.\n return {\n value: String.fromCodePoint(code, trailingCode),\n size: 12,\n };\n }\n }\n }\n\n throw syntaxError(\n lexer.source,\n position,\n `Invalid Unicode escape sequence: \"${body.slice(position, position + 6)}\".`,\n );\n}\n/**\n * Reads four hexadecimal characters and returns the positive integer that 16bit\n * hexadecimal string represents. For example, \"000f\" will return 15, and \"dead\"\n * will return 57005.\n *\n * Returns a negative number if any char was not a valid hexadecimal digit.\n */\n\nfunction read16BitHexCode(body, position) {\n // readHexDigit() returns -1 on error. ORing a negative value with any other\n // value always produces a negative value.\n return (\n (readHexDigit(body.charCodeAt(position)) << 12) |\n (readHexDigit(body.charCodeAt(position + 1)) << 8) |\n (readHexDigit(body.charCodeAt(position + 2)) << 4) |\n readHexDigit(body.charCodeAt(position + 3))\n );\n}\n/**\n * Reads a hexadecimal character and returns its positive integer value (0-15).\n *\n * '0' becomes 0, '9' becomes 9\n * 'A' becomes 10, 'F' becomes 15\n * 'a' becomes 10, 'f' becomes 15\n *\n * Returns -1 if the provided character code was not a valid hexadecimal digit.\n *\n * HexDigit :: one of\n * - `0` `1` `2` `3` `4` `5` `6` `7` `8` `9`\n * - `A` `B` `C` `D` `E` `F`\n * - `a` `b` `c` `d` `e` `f`\n */\n\nfunction readHexDigit(code) {\n return code >= 0x0030 && code <= 0x0039 // 0-9\n ? code - 0x0030\n : code >= 0x0041 && code <= 0x0046 // A-F\n ? code - 0x0037\n : code >= 0x0061 && code <= 0x0066 // a-f\n ? code - 0x0057\n : -1;\n}\n/**\n * | Escaped Character | Code Point | Character Name |\n * | ----------------- | ---------- | ---------------------------- |\n * | `\"` | U+0022 | double quote |\n * | `\\` | U+005C | reverse solidus (back slash) |\n * | `/` | U+002F | solidus (forward slash) |\n * | `b` | U+0008 | backspace |\n * | `f` | U+000C | form feed |\n * | `n` | U+000A | line feed (new line) |\n * | `r` | U+000D | carriage return |\n * | `t` | U+0009 | horizontal tab |\n */\n\nfunction readEscapedCharacter(lexer, position) {\n const body = lexer.source.body;\n const code = body.charCodeAt(position + 1);\n\n switch (code) {\n case 0x0022:\n // \"\n return {\n value: '\\u0022',\n size: 2,\n };\n\n case 0x005c:\n // \\\n return {\n value: '\\u005c',\n size: 2,\n };\n\n case 0x002f:\n // /\n return {\n value: '\\u002f',\n size: 2,\n };\n\n case 0x0062:\n // b\n return {\n value: '\\u0008',\n size: 2,\n };\n\n case 0x0066:\n // f\n return {\n value: '\\u000c',\n size: 2,\n };\n\n case 0x006e:\n // n\n return {\n value: '\\u000a',\n size: 2,\n };\n\n case 0x0072:\n // r\n return {\n value: '\\u000d',\n size: 2,\n };\n\n case 0x0074:\n // t\n return {\n value: '\\u0009',\n size: 2,\n };\n }\n\n throw syntaxError(\n lexer.source,\n position,\n `Invalid character escape sequence: \"${body.slice(\n position,\n position + 2,\n )}\".`,\n );\n}\n/**\n * Reads a block string token from the source file.\n *\n * ```\n * StringValue ::\n * - `\"\"\"` BlockStringCharacter* `\"\"\"`\n *\n * BlockStringCharacter ::\n * - SourceCharacter but not `\"\"\"` or `\\\"\"\"`\n * - `\\\"\"\"`\n * ```\n */\n\nfunction readBlockString(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let lineStart = lexer.lineStart;\n let position = start + 3;\n let chunkStart = position;\n let currentLine = '';\n const blockLines = [];\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position); // Closing Triple-Quote (\"\"\")\n\n if (\n code === 0x0022 &&\n body.charCodeAt(position + 1) === 0x0022 &&\n body.charCodeAt(position + 2) === 0x0022\n ) {\n currentLine += body.slice(chunkStart, position);\n blockLines.push(currentLine);\n const token = createToken(\n lexer,\n TokenKind.BLOCK_STRING,\n start,\n position + 3, // Return a string of the lines joined with U+000A.\n dedentBlockStringLines(blockLines).join('\\n'),\n );\n lexer.line += blockLines.length - 1;\n lexer.lineStart = lineStart;\n return token;\n } // Escaped Triple-Quote (\\\"\"\")\n\n if (\n code === 0x005c &&\n body.charCodeAt(position + 1) === 0x0022 &&\n body.charCodeAt(position + 2) === 0x0022 &&\n body.charCodeAt(position + 3) === 0x0022\n ) {\n currentLine += body.slice(chunkStart, position);\n chunkStart = position + 1; // skip only slash\n\n position += 4;\n continue;\n } // LineTerminator\n\n if (code === 0x000a || code === 0x000d) {\n currentLine += body.slice(chunkStart, position);\n blockLines.push(currentLine);\n\n if (code === 0x000d && body.charCodeAt(position + 1) === 0x000a) {\n position += 2;\n } else {\n ++position;\n }\n\n currentLine = '';\n chunkStart = position;\n lineStart = position;\n continue;\n } // SourceCharacter\n\n if (isUnicodeScalarValue(code)) {\n ++position;\n } else if (isSupplementaryCodePoint(body, position)) {\n position += 2;\n } else {\n throw syntaxError(\n lexer.source,\n position,\n `Invalid character within String: ${printCodePointAt(\n lexer,\n position,\n )}.`,\n );\n }\n }\n\n throw syntaxError(lexer.source, position, 'Unterminated string.');\n}\n/**\n * Reads an alphanumeric + underscore name from the source.\n *\n * ```\n * Name ::\n * - NameStart NameContinue* [lookahead != NameContinue]\n * ```\n */\n\nfunction readName(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let position = start + 1;\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position);\n\n if (isNameContinue(code)) {\n ++position;\n } else {\n break;\n }\n }\n\n return createToken(\n lexer,\n TokenKind.NAME,\n start,\n position,\n body.slice(start, position),\n );\n}\n", "const MAX_ARRAY_LENGTH = 10;\nconst MAX_RECURSIVE_DEPTH = 2;\n/**\n * Used to print values in error messages.\n */\n\nexport function inspect(value) {\n return formatValue(value, []);\n}\n\nfunction formatValue(value, seenValues) {\n switch (typeof value) {\n case 'string':\n return JSON.stringify(value);\n\n case 'function':\n return value.name ? `[function ${value.name}]` : '[function]';\n\n case 'object':\n return formatObjectValue(value, seenValues);\n\n default:\n return String(value);\n }\n}\n\nfunction formatObjectValue(value, previouslySeenValues) {\n if (value === null) {\n return 'null';\n }\n\n if (previouslySeenValues.includes(value)) {\n return '[Circular]';\n }\n\n const seenValues = [...previouslySeenValues, value];\n\n if (isJSONable(value)) {\n const jsonValue = value.toJSON(); // check for infinite recursion\n\n if (jsonValue !== value) {\n return typeof jsonValue === 'string'\n ? jsonValue\n : formatValue(jsonValue, seenValues);\n }\n } else if (Array.isArray(value)) {\n return formatArray(value, seenValues);\n }\n\n return formatObject(value, seenValues);\n}\n\nfunction isJSONable(value) {\n return typeof value.toJSON === 'function';\n}\n\nfunction formatObject(object, seenValues) {\n const entries = Object.entries(object);\n\n if (entries.length === 0) {\n return '{}';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[' + getObjectTag(object) + ']';\n }\n\n const properties = entries.map(\n ([key, value]) => key + ': ' + formatValue(value, seenValues),\n );\n return '{ ' + properties.join(', ') + ' }';\n}\n\nfunction formatArray(array, seenValues) {\n if (array.length === 0) {\n return '[]';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[Array]';\n }\n\n const len = Math.min(MAX_ARRAY_LENGTH, array.length);\n const remaining = array.length - len;\n const items = [];\n\n for (let i = 0; i < len; ++i) {\n items.push(formatValue(array[i], seenValues));\n }\n\n if (remaining === 1) {\n items.push('... 1 more item');\n } else if (remaining > 1) {\n items.push(`... ${remaining} more items`);\n }\n\n return '[' + items.join(', ') + ']';\n}\n\nfunction getObjectTag(object) {\n const tag = Object.prototype.toString\n .call(object)\n .replace(/^\\[object /, '')\n .replace(/]$/, '');\n\n if (tag === 'Object' && typeof object.constructor === 'function') {\n const name = object.constructor.name;\n\n if (typeof name === 'string' && name !== '') {\n return name;\n }\n }\n\n return tag;\n}\n", "import { inspect } from './inspect.mjs';\n/**\n * A replacement for instanceof which includes an error warning when multi-realm\n * constructors are detected.\n * See: https://expressjs.com/en/advanced/best-practice-performance.html#set-node_env-to-production\n * See: https://webpack.js.org/guides/production/\n */\n\nexport const instanceOf =\n /* c8 ignore next 6 */\n // FIXME: https://github.com/graphql/graphql-js/issues/2317\n // eslint-disable-next-line no-undef\n process.env.NODE_ENV === 'production'\n ? function instanceOf(value, constructor) {\n return value instanceof constructor;\n }\n : function instanceOf(value, constructor) {\n if (value instanceof constructor) {\n return true;\n }\n\n if (typeof value === 'object' && value !== null) {\n var _value$constructor;\n\n // Prefer Symbol.toStringTag since it is immune to minification.\n const className = constructor.prototype[Symbol.toStringTag];\n const valueClassName = // We still need to support constructor's name to detect conflicts with older versions of this library.\n Symbol.toStringTag in value // @ts-expect-error TS bug see, https://github.com/microsoft/TypeScript/issues/38009\n ? value[Symbol.toStringTag]\n : (_value$constructor = value.constructor) === null ||\n _value$constructor === void 0\n ? void 0\n : _value$constructor.name;\n\n if (className === valueClassName) {\n const stringifiedValue = inspect(value);\n throw new Error(`Cannot use ${className} \"${stringifiedValue}\" from another module or realm.\n\nEnsure that there is only one instance of \"graphql\" in the node_modules\ndirectory. If different versions of \"graphql\" are the dependencies of other\nrelied on modules, use \"resolutions\" to ensure only one version is installed.\n\nhttps://yarnpkg.com/en/docs/selective-version-resolutions\n\nDuplicate \"graphql\" modules cannot be used at the same time since different\nversions may have different capabilities and behavior. The data from one\nversion used in the function from another could produce confusing and\nspurious results.`);\n }\n }\n\n return false;\n };\n", "import { devAssert } from '../jsutils/devAssert.mjs';\nimport { inspect } from '../jsutils/inspect.mjs';\nimport { instanceOf } from '../jsutils/instanceOf.mjs';\n\n/**\n * A representation of source input to GraphQL. The `name` and `locationOffset` parameters are\n * optional, but they are useful for clients who store GraphQL documents in source files.\n * For example, if the GraphQL input starts at line 40 in a file named `Foo.graphql`, it might\n * be useful for `name` to be `\"Foo.graphql\"` and location to be `{ line: 40, column: 1 }`.\n * The `line` and `column` properties in `locationOffset` are 1-indexed.\n */\nexport class Source {\n constructor(\n body,\n name = 'GraphQL request',\n locationOffset = {\n line: 1,\n column: 1,\n },\n ) {\n typeof body === 'string' ||\n devAssert(false, `Body must be a string. Received: ${inspect(body)}.`);\n this.body = body;\n this.name = name;\n this.locationOffset = locationOffset;\n this.locationOffset.line > 0 ||\n devAssert(\n false,\n 'line in locationOffset is 1-indexed and must be positive.',\n );\n this.locationOffset.column > 0 ||\n devAssert(\n false,\n 'column in locationOffset is 1-indexed and must be positive.',\n );\n }\n\n get [Symbol.toStringTag]() {\n return 'Source';\n }\n}\n/**\n * Test if the given value is a Source object.\n *\n * @internal\n */\n\nexport function isSource(source) {\n return instanceOf(source, Source);\n}\n", "import { syntaxError } from '../error/syntaxError.mjs';\nimport { Location, OperationTypeNode } from './ast.mjs';\nimport { DirectiveLocation } from './directiveLocation.mjs';\nimport { Kind } from './kinds.mjs';\nimport { isPunctuatorTokenKind, Lexer } from './lexer.mjs';\nimport { isSource, Source } from './source.mjs';\nimport { TokenKind } from './tokenKind.mjs';\n/**\n * Configuration options to control parser behavior\n */\n\n/**\n * Given a GraphQL source, parses it into a Document.\n * Throws GraphQLError if a syntax error is encountered.\n */\nexport function parse(source, options) {\n const parser = new Parser(source, options);\n return parser.parseDocument();\n}\n/**\n * Given a string containing a GraphQL value (ex. `[42]`), parse the AST for\n * that value.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Values directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: valueFromAST().\n */\n\nexport function parseValue(source, options) {\n const parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n const value = parser.parseValueLiteral(false);\n parser.expectToken(TokenKind.EOF);\n return value;\n}\n/**\n * Similar to parseValue(), but raises a parse error if it encounters a\n * variable. The return type will be a constant value.\n */\n\nexport function parseConstValue(source, options) {\n const parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n const value = parser.parseConstValueLiteral();\n parser.expectToken(TokenKind.EOF);\n return value;\n}\n/**\n * Given a string containing a GraphQL Type (ex. `[Int!]`), parse the AST for\n * that type.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Types directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: typeFromAST().\n */\n\nexport function parseType(source, options) {\n const parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n const type = parser.parseTypeReference();\n parser.expectToken(TokenKind.EOF);\n return type;\n}\n/**\n * This class is exported only to assist people in implementing their own parsers\n * without duplicating too much code and should be used only as last resort for cases\n * such as experimental syntax or if certain features could not be contributed upstream.\n *\n * It is still part of the internal API and is versioned, so any changes to it are never\n * considered breaking changes. If you still need to support multiple versions of the\n * library, please use the `versionInfo` variable for version detection.\n *\n * @internal\n */\n\nexport class Parser {\n constructor(source, options = {}) {\n const sourceObj = isSource(source) ? source : new Source(source);\n this._lexer = new Lexer(sourceObj);\n this._options = options;\n this._tokenCounter = 0;\n }\n /**\n * Converts a name lex token into a name parse node.\n */\n\n parseName() {\n const token = this.expectToken(TokenKind.NAME);\n return this.node(token, {\n kind: Kind.NAME,\n value: token.value,\n });\n } // Implements the parsing rules in the Document section.\n\n /**\n * Document : Definition+\n */\n\n parseDocument() {\n return this.node(this._lexer.token, {\n kind: Kind.DOCUMENT,\n definitions: this.many(\n TokenKind.SOF,\n this.parseDefinition,\n TokenKind.EOF,\n ),\n });\n }\n /**\n * Definition :\n * - ExecutableDefinition\n * - TypeSystemDefinition\n * - TypeSystemExtension\n *\n * ExecutableDefinition :\n * - OperationDefinition\n * - FragmentDefinition\n *\n * TypeSystemDefinition :\n * - SchemaDefinition\n * - TypeDefinition\n * - DirectiveDefinition\n *\n * TypeDefinition :\n * - ScalarTypeDefinition\n * - ObjectTypeDefinition\n * - InterfaceTypeDefinition\n * - UnionTypeDefinition\n * - EnumTypeDefinition\n * - InputObjectTypeDefinition\n */\n\n parseDefinition() {\n if (this.peek(TokenKind.BRACE_L)) {\n return this.parseOperationDefinition();\n } // Many definitions begin with a description and require a lookahead.\n\n const hasDescription = this.peekDescription();\n const keywordToken = hasDescription\n ? this._lexer.lookahead()\n : this._lexer.token;\n\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaDefinition();\n\n case 'scalar':\n return this.parseScalarTypeDefinition();\n\n case 'type':\n return this.parseObjectTypeDefinition();\n\n case 'interface':\n return this.parseInterfaceTypeDefinition();\n\n case 'union':\n return this.parseUnionTypeDefinition();\n\n case 'enum':\n return this.parseEnumTypeDefinition();\n\n case 'input':\n return this.parseInputObjectTypeDefinition();\n\n case 'directive':\n return this.parseDirectiveDefinition();\n }\n\n if (hasDescription) {\n throw syntaxError(\n this._lexer.source,\n this._lexer.token.start,\n 'Unexpected description, descriptions are supported only on type definitions.',\n );\n }\n\n switch (keywordToken.value) {\n case 'query':\n case 'mutation':\n case 'subscription':\n return this.parseOperationDefinition();\n\n case 'fragment':\n return this.parseFragmentDefinition();\n\n case 'extend':\n return this.parseTypeSystemExtension();\n }\n }\n\n throw this.unexpected(keywordToken);\n } // Implements the parsing rules in the Operations section.\n\n /**\n * OperationDefinition :\n * - SelectionSet\n * - OperationType Name? VariableDefinitions? Directives? SelectionSet\n */\n\n parseOperationDefinition() {\n const start = this._lexer.token;\n\n if (this.peek(TokenKind.BRACE_L)) {\n return this.node(start, {\n kind: Kind.OPERATION_DEFINITION,\n operation: OperationTypeNode.QUERY,\n name: undefined,\n variableDefinitions: [],\n directives: [],\n selectionSet: this.parseSelectionSet(),\n });\n }\n\n const operation = this.parseOperationType();\n let name;\n\n if (this.peek(TokenKind.NAME)) {\n name = this.parseName();\n }\n\n return this.node(start, {\n kind: Kind.OPERATION_DEFINITION,\n operation,\n name,\n variableDefinitions: this.parseVariableDefinitions(),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n /**\n * OperationType : one of query mutation subscription\n */\n\n parseOperationType() {\n const operationToken = this.expectToken(TokenKind.NAME);\n\n switch (operationToken.value) {\n case 'query':\n return OperationTypeNode.QUERY;\n\n case 'mutation':\n return OperationTypeNode.MUTATION;\n\n case 'subscription':\n return OperationTypeNode.SUBSCRIPTION;\n }\n\n throw this.unexpected(operationToken);\n }\n /**\n * VariableDefinitions : ( VariableDefinition+ )\n */\n\n parseVariableDefinitions() {\n return this.optionalMany(\n TokenKind.PAREN_L,\n this.parseVariableDefinition,\n TokenKind.PAREN_R,\n );\n }\n /**\n * VariableDefinition : Variable : Type DefaultValue? Directives[Const]?\n */\n\n parseVariableDefinition() {\n return this.node(this._lexer.token, {\n kind: Kind.VARIABLE_DEFINITION,\n variable: this.parseVariable(),\n type: (this.expectToken(TokenKind.COLON), this.parseTypeReference()),\n defaultValue: this.expectOptionalToken(TokenKind.EQUALS)\n ? this.parseConstValueLiteral()\n : undefined,\n directives: this.parseConstDirectives(),\n });\n }\n /**\n * Variable : $ Name\n */\n\n parseVariable() {\n const start = this._lexer.token;\n this.expectToken(TokenKind.DOLLAR);\n return this.node(start, {\n kind: Kind.VARIABLE,\n name: this.parseName(),\n });\n }\n /**\n * ```\n * SelectionSet : { Selection+ }\n * ```\n */\n\n parseSelectionSet() {\n return this.node(this._lexer.token, {\n kind: Kind.SELECTION_SET,\n selections: this.many(\n TokenKind.BRACE_L,\n this.parseSelection,\n TokenKind.BRACE_R,\n ),\n });\n }\n /**\n * Selection :\n * - Field\n * - FragmentSpread\n * - InlineFragment\n */\n\n parseSelection() {\n return this.peek(TokenKind.SPREAD)\n ? this.parseFragment()\n : this.parseField();\n }\n /**\n * Field : Alias? Name Arguments? Directives? SelectionSet?\n *\n * Alias : Name :\n */\n\n parseField() {\n const start = this._lexer.token;\n const nameOrAlias = this.parseName();\n let alias;\n let name;\n\n if (this.expectOptionalToken(TokenKind.COLON)) {\n alias = nameOrAlias;\n name = this.parseName();\n } else {\n name = nameOrAlias;\n }\n\n return this.node(start, {\n kind: Kind.FIELD,\n alias,\n name,\n arguments: this.parseArguments(false),\n directives: this.parseDirectives(false),\n selectionSet: this.peek(TokenKind.BRACE_L)\n ? this.parseSelectionSet()\n : undefined,\n });\n }\n /**\n * Arguments[Const] : ( Argument[?Const]+ )\n */\n\n parseArguments(isConst) {\n const item = isConst ? this.parseConstArgument : this.parseArgument;\n return this.optionalMany(TokenKind.PAREN_L, item, TokenKind.PAREN_R);\n }\n /**\n * Argument[Const] : Name : Value[?Const]\n */\n\n parseArgument(isConst = false) {\n const start = this._lexer.token;\n const name = this.parseName();\n this.expectToken(TokenKind.COLON);\n return this.node(start, {\n kind: Kind.ARGUMENT,\n name,\n value: this.parseValueLiteral(isConst),\n });\n }\n\n parseConstArgument() {\n return this.parseArgument(true);\n } // Implements the parsing rules in the Fragments section.\n\n /**\n * Corresponds to both FragmentSpread and InlineFragment in the spec.\n *\n * FragmentSpread : ... FragmentName Directives?\n *\n * InlineFragment : ... TypeCondition? Directives? SelectionSet\n */\n\n parseFragment() {\n const start = this._lexer.token;\n this.expectToken(TokenKind.SPREAD);\n const hasTypeCondition = this.expectOptionalKeyword('on');\n\n if (!hasTypeCondition && this.peek(TokenKind.NAME)) {\n return this.node(start, {\n kind: Kind.FRAGMENT_SPREAD,\n name: this.parseFragmentName(),\n directives: this.parseDirectives(false),\n });\n }\n\n return this.node(start, {\n kind: Kind.INLINE_FRAGMENT,\n typeCondition: hasTypeCondition ? this.parseNamedType() : undefined,\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n /**\n * FragmentDefinition :\n * - fragment FragmentName on TypeCondition Directives? SelectionSet\n *\n * TypeCondition : NamedType\n */\n\n parseFragmentDefinition() {\n const start = this._lexer.token;\n this.expectKeyword('fragment'); // Legacy support for defining variables within fragments changes\n // the grammar of FragmentDefinition:\n // - fragment FragmentName VariableDefinitions? on TypeCondition Directives? SelectionSet\n\n if (this._options.allowLegacyFragmentVariables === true) {\n return this.node(start, {\n kind: Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n variableDefinitions: this.parseVariableDefinitions(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n\n return this.node(start, {\n kind: Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n /**\n * FragmentName : Name but not `on`\n */\n\n parseFragmentName() {\n if (this._lexer.token.value === 'on') {\n throw this.unexpected();\n }\n\n return this.parseName();\n } // Implements the parsing rules in the Values section.\n\n /**\n * Value[Const] :\n * - [~Const] Variable\n * - IntValue\n * - FloatValue\n * - StringValue\n * - BooleanValue\n * - NullValue\n * - EnumValue\n * - ListValue[?Const]\n * - ObjectValue[?Const]\n *\n * BooleanValue : one of `true` `false`\n *\n * NullValue : `null`\n *\n * EnumValue : Name but not `true`, `false` or `null`\n */\n\n parseValueLiteral(isConst) {\n const token = this._lexer.token;\n\n switch (token.kind) {\n case TokenKind.BRACKET_L:\n return this.parseList(isConst);\n\n case TokenKind.BRACE_L:\n return this.parseObject(isConst);\n\n case TokenKind.INT:\n this.advanceLexer();\n return this.node(token, {\n kind: Kind.INT,\n value: token.value,\n });\n\n case TokenKind.FLOAT:\n this.advanceLexer();\n return this.node(token, {\n kind: Kind.FLOAT,\n value: token.value,\n });\n\n case TokenKind.STRING:\n case TokenKind.BLOCK_STRING:\n return this.parseStringLiteral();\n\n case TokenKind.NAME:\n this.advanceLexer();\n\n switch (token.value) {\n case 'true':\n return this.node(token, {\n kind: Kind.BOOLEAN,\n value: true,\n });\n\n case 'false':\n return this.node(token, {\n kind: Kind.BOOLEAN,\n value: false,\n });\n\n case 'null':\n return this.node(token, {\n kind: Kind.NULL,\n });\n\n default:\n return this.node(token, {\n kind: Kind.ENUM,\n value: token.value,\n });\n }\n\n case TokenKind.DOLLAR:\n if (isConst) {\n this.expectToken(TokenKind.DOLLAR);\n\n if (this._lexer.token.kind === TokenKind.NAME) {\n const varName = this._lexer.token.value;\n throw syntaxError(\n this._lexer.source,\n token.start,\n `Unexpected variable \"$${varName}\" in constant value.`,\n );\n } else {\n throw this.unexpected(token);\n }\n }\n\n return this.parseVariable();\n\n default:\n throw this.unexpected();\n }\n }\n\n parseConstValueLiteral() {\n return this.parseValueLiteral(true);\n }\n\n parseStringLiteral() {\n const token = this._lexer.token;\n this.advanceLexer();\n return this.node(token, {\n kind: Kind.STRING,\n value: token.value,\n block: token.kind === TokenKind.BLOCK_STRING,\n });\n }\n /**\n * ListValue[Const] :\n * - [ ]\n * - [ Value[?Const]+ ]\n */\n\n parseList(isConst) {\n const item = () => this.parseValueLiteral(isConst);\n\n return this.node(this._lexer.token, {\n kind: Kind.LIST,\n values: this.any(TokenKind.BRACKET_L, item, TokenKind.BRACKET_R),\n });\n }\n /**\n * ```\n * ObjectValue[Const] :\n * - { }\n * - { ObjectField[?Const]+ }\n * ```\n */\n\n parseObject(isConst) {\n const item = () => this.parseObjectField(isConst);\n\n return this.node(this._lexer.token, {\n kind: Kind.OBJECT,\n fields: this.any(TokenKind.BRACE_L, item, TokenKind.BRACE_R),\n });\n }\n /**\n * ObjectField[Const] : Name : Value[?Const]\n */\n\n parseObjectField(isConst) {\n const start = this._lexer.token;\n const name = this.parseName();\n this.expectToken(TokenKind.COLON);\n return this.node(start, {\n kind: Kind.OBJECT_FIELD,\n name,\n value: this.parseValueLiteral(isConst),\n });\n } // Implements the parsing rules in the Directives section.\n\n /**\n * Directives[Const] : Directive[?Const]+\n */\n\n parseDirectives(isConst) {\n const directives = [];\n\n while (this.peek(TokenKind.AT)) {\n directives.push(this.parseDirective(isConst));\n }\n\n return directives;\n }\n\n parseConstDirectives() {\n return this.parseDirectives(true);\n }\n /**\n * ```\n * Directive[Const] : @ Name Arguments[?Const]?\n * ```\n */\n\n parseDirective(isConst) {\n const start = this._lexer.token;\n this.expectToken(TokenKind.AT);\n return this.node(start, {\n kind: Kind.DIRECTIVE,\n name: this.parseName(),\n arguments: this.parseArguments(isConst),\n });\n } // Implements the parsing rules in the Types section.\n\n /**\n * Type :\n * - NamedType\n * - ListType\n * - NonNullType\n */\n\n parseTypeReference() {\n const start = this._lexer.token;\n let type;\n\n if (this.expectOptionalToken(TokenKind.BRACKET_L)) {\n const innerType = this.parseTypeReference();\n this.expectToken(TokenKind.BRACKET_R);\n type = this.node(start, {\n kind: Kind.LIST_TYPE,\n type: innerType,\n });\n } else {\n type = this.parseNamedType();\n }\n\n if (this.expectOptionalToken(TokenKind.BANG)) {\n return this.node(start, {\n kind: Kind.NON_NULL_TYPE,\n type,\n });\n }\n\n return type;\n }\n /**\n * NamedType : Name\n */\n\n parseNamedType() {\n return this.node(this._lexer.token, {\n kind: Kind.NAMED_TYPE,\n name: this.parseName(),\n });\n } // Implements the parsing rules in the Type Definition section.\n\n peekDescription() {\n return this.peek(TokenKind.STRING) || this.peek(TokenKind.BLOCK_STRING);\n }\n /**\n * Description : StringValue\n */\n\n parseDescription() {\n if (this.peekDescription()) {\n return this.parseStringLiteral();\n }\n }\n /**\n * ```\n * SchemaDefinition : Description? schema Directives[Const]? { OperationTypeDefinition+ }\n * ```\n */\n\n parseSchemaDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('schema');\n const directives = this.parseConstDirectives();\n const operationTypes = this.many(\n TokenKind.BRACE_L,\n this.parseOperationTypeDefinition,\n TokenKind.BRACE_R,\n );\n return this.node(start, {\n kind: Kind.SCHEMA_DEFINITION,\n description,\n directives,\n operationTypes,\n });\n }\n /**\n * OperationTypeDefinition : OperationType : NamedType\n */\n\n parseOperationTypeDefinition() {\n const start = this._lexer.token;\n const operation = this.parseOperationType();\n this.expectToken(TokenKind.COLON);\n const type = this.parseNamedType();\n return this.node(start, {\n kind: Kind.OPERATION_TYPE_DEFINITION,\n operation,\n type,\n });\n }\n /**\n * ScalarTypeDefinition : Description? scalar Name Directives[Const]?\n */\n\n parseScalarTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('scalar');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n return this.node(start, {\n kind: Kind.SCALAR_TYPE_DEFINITION,\n description,\n name,\n directives,\n });\n }\n /**\n * ObjectTypeDefinition :\n * Description?\n * type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition?\n */\n\n parseObjectTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('type');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n return this.node(start, {\n kind: Kind.OBJECT_TYPE_DEFINITION,\n description,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n /**\n * ImplementsInterfaces :\n * - implements `&`? NamedType\n * - ImplementsInterfaces & NamedType\n */\n\n parseImplementsInterfaces() {\n return this.expectOptionalKeyword('implements')\n ? this.delimitedMany(TokenKind.AMP, this.parseNamedType)\n : [];\n }\n /**\n * ```\n * FieldsDefinition : { FieldDefinition+ }\n * ```\n */\n\n parseFieldsDefinition() {\n return this.optionalMany(\n TokenKind.BRACE_L,\n this.parseFieldDefinition,\n TokenKind.BRACE_R,\n );\n }\n /**\n * FieldDefinition :\n * - Description? Name ArgumentsDefinition? : Type Directives[Const]?\n */\n\n parseFieldDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n const name = this.parseName();\n const args = this.parseArgumentDefs();\n this.expectToken(TokenKind.COLON);\n const type = this.parseTypeReference();\n const directives = this.parseConstDirectives();\n return this.node(start, {\n kind: Kind.FIELD_DEFINITION,\n description,\n name,\n arguments: args,\n type,\n directives,\n });\n }\n /**\n * ArgumentsDefinition : ( InputValueDefinition+ )\n */\n\n parseArgumentDefs() {\n return this.optionalMany(\n TokenKind.PAREN_L,\n this.parseInputValueDef,\n TokenKind.PAREN_R,\n );\n }\n /**\n * InputValueDefinition :\n * - Description? Name : Type DefaultValue? Directives[Const]?\n */\n\n parseInputValueDef() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n const name = this.parseName();\n this.expectToken(TokenKind.COLON);\n const type = this.parseTypeReference();\n let defaultValue;\n\n if (this.expectOptionalToken(TokenKind.EQUALS)) {\n defaultValue = this.parseConstValueLiteral();\n }\n\n const directives = this.parseConstDirectives();\n return this.node(start, {\n kind: Kind.INPUT_VALUE_DEFINITION,\n description,\n name,\n type,\n defaultValue,\n directives,\n });\n }\n /**\n * InterfaceTypeDefinition :\n * - Description? interface Name Directives[Const]? FieldsDefinition?\n */\n\n parseInterfaceTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('interface');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n return this.node(start, {\n kind: Kind.INTERFACE_TYPE_DEFINITION,\n description,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n /**\n * UnionTypeDefinition :\n * - Description? union Name Directives[Const]? UnionMemberTypes?\n */\n\n parseUnionTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('union');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const types = this.parseUnionMemberTypes();\n return this.node(start, {\n kind: Kind.UNION_TYPE_DEFINITION,\n description,\n name,\n directives,\n types,\n });\n }\n /**\n * UnionMemberTypes :\n * - = `|`? NamedType\n * - UnionMemberTypes | NamedType\n */\n\n parseUnionMemberTypes() {\n return this.expectOptionalToken(TokenKind.EQUALS)\n ? this.delimitedMany(TokenKind.PIPE, this.parseNamedType)\n : [];\n }\n /**\n * EnumTypeDefinition :\n * - Description? enum Name Directives[Const]? EnumValuesDefinition?\n */\n\n parseEnumTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('enum');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const values = this.parseEnumValuesDefinition();\n return this.node(start, {\n kind: Kind.ENUM_TYPE_DEFINITION,\n description,\n name,\n directives,\n values,\n });\n }\n /**\n * ```\n * EnumValuesDefinition : { EnumValueDefinition+ }\n * ```\n */\n\n parseEnumValuesDefinition() {\n return this.optionalMany(\n TokenKind.BRACE_L,\n this.parseEnumValueDefinition,\n TokenKind.BRACE_R,\n );\n }\n /**\n * EnumValueDefinition : Description? EnumValue Directives[Const]?\n */\n\n parseEnumValueDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n const name = this.parseEnumValueName();\n const directives = this.parseConstDirectives();\n return this.node(start, {\n kind: Kind.ENUM_VALUE_DEFINITION,\n description,\n name,\n directives,\n });\n }\n /**\n * EnumValue : Name but not `true`, `false` or `null`\n */\n\n parseEnumValueName() {\n if (\n this._lexer.token.value === 'true' ||\n this._lexer.token.value === 'false' ||\n this._lexer.token.value === 'null'\n ) {\n throw syntaxError(\n this._lexer.source,\n this._lexer.token.start,\n `${getTokenDesc(\n this._lexer.token,\n )} is reserved and cannot be used for an enum value.`,\n );\n }\n\n return this.parseName();\n }\n /**\n * InputObjectTypeDefinition :\n * - Description? input Name Directives[Const]? InputFieldsDefinition?\n */\n\n parseInputObjectTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('input');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const fields = this.parseInputFieldsDefinition();\n return this.node(start, {\n kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,\n description,\n name,\n directives,\n fields,\n });\n }\n /**\n * ```\n * InputFieldsDefinition : { InputValueDefinition+ }\n * ```\n */\n\n parseInputFieldsDefinition() {\n return this.optionalMany(\n TokenKind.BRACE_L,\n this.parseInputValueDef,\n TokenKind.BRACE_R,\n );\n }\n /**\n * TypeSystemExtension :\n * - SchemaExtension\n * - TypeExtension\n *\n * TypeExtension :\n * - ScalarTypeExtension\n * - ObjectTypeExtension\n * - InterfaceTypeExtension\n * - UnionTypeExtension\n * - EnumTypeExtension\n * - InputObjectTypeDefinition\n */\n\n parseTypeSystemExtension() {\n const keywordToken = this._lexer.lookahead();\n\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaExtension();\n\n case 'scalar':\n return this.parseScalarTypeExtension();\n\n case 'type':\n return this.parseObjectTypeExtension();\n\n case 'interface':\n return this.parseInterfaceTypeExtension();\n\n case 'union':\n return this.parseUnionTypeExtension();\n\n case 'enum':\n return this.parseEnumTypeExtension();\n\n case 'input':\n return this.parseInputObjectTypeExtension();\n }\n }\n\n throw this.unexpected(keywordToken);\n }\n /**\n * ```\n * SchemaExtension :\n * - extend schema Directives[Const]? { OperationTypeDefinition+ }\n * - extend schema Directives[Const]\n * ```\n */\n\n parseSchemaExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('schema');\n const directives = this.parseConstDirectives();\n const operationTypes = this.optionalMany(\n TokenKind.BRACE_L,\n this.parseOperationTypeDefinition,\n TokenKind.BRACE_R,\n );\n\n if (directives.length === 0 && operationTypes.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.SCHEMA_EXTENSION,\n directives,\n operationTypes,\n });\n }\n /**\n * ScalarTypeExtension :\n * - extend scalar Name Directives[Const]\n */\n\n parseScalarTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('scalar');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n\n if (directives.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.SCALAR_TYPE_EXTENSION,\n name,\n directives,\n });\n }\n /**\n * ObjectTypeExtension :\n * - extend type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend type Name ImplementsInterfaces? Directives[Const]\n * - extend type Name ImplementsInterfaces\n */\n\n parseObjectTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('type');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n\n if (\n interfaces.length === 0 &&\n directives.length === 0 &&\n fields.length === 0\n ) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.OBJECT_TYPE_EXTENSION,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n /**\n * InterfaceTypeExtension :\n * - extend interface Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend interface Name ImplementsInterfaces? Directives[Const]\n * - extend interface Name ImplementsInterfaces\n */\n\n parseInterfaceTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('interface');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n\n if (\n interfaces.length === 0 &&\n directives.length === 0 &&\n fields.length === 0\n ) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.INTERFACE_TYPE_EXTENSION,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n /**\n * UnionTypeExtension :\n * - extend union Name Directives[Const]? UnionMemberTypes\n * - extend union Name Directives[Const]\n */\n\n parseUnionTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('union');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const types = this.parseUnionMemberTypes();\n\n if (directives.length === 0 && types.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.UNION_TYPE_EXTENSION,\n name,\n directives,\n types,\n });\n }\n /**\n * EnumTypeExtension :\n * - extend enum Name Directives[Const]? EnumValuesDefinition\n * - extend enum Name Directives[Const]\n */\n\n parseEnumTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('enum');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const values = this.parseEnumValuesDefinition();\n\n if (directives.length === 0 && values.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.ENUM_TYPE_EXTENSION,\n name,\n directives,\n values,\n });\n }\n /**\n * InputObjectTypeExtension :\n * - extend input Name Directives[Const]? InputFieldsDefinition\n * - extend input Name Directives[Const]\n */\n\n parseInputObjectTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('input');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const fields = this.parseInputFieldsDefinition();\n\n if (directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.INPUT_OBJECT_TYPE_EXTENSION,\n name,\n directives,\n fields,\n });\n }\n /**\n * ```\n * DirectiveDefinition :\n * - Description? directive @ Name ArgumentsDefinition? `repeatable`? on DirectiveLocations\n * ```\n */\n\n parseDirectiveDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('directive');\n this.expectToken(TokenKind.AT);\n const name = this.parseName();\n const args = this.parseArgumentDefs();\n const repeatable = this.expectOptionalKeyword('repeatable');\n this.expectKeyword('on');\n const locations = this.parseDirectiveLocations();\n return this.node(start, {\n kind: Kind.DIRECTIVE_DEFINITION,\n description,\n name,\n arguments: args,\n repeatable,\n locations,\n });\n }\n /**\n * DirectiveLocations :\n * - `|`? DirectiveLocation\n * - DirectiveLocations | DirectiveLocation\n */\n\n parseDirectiveLocations() {\n return this.delimitedMany(TokenKind.PIPE, this.parseDirectiveLocation);\n }\n /*\n * DirectiveLocation :\n * - ExecutableDirectiveLocation\n * - TypeSystemDirectiveLocation\n *\n * ExecutableDirectiveLocation : one of\n * `QUERY`\n * `MUTATION`\n * `SUBSCRIPTION`\n * `FIELD`\n * `FRAGMENT_DEFINITION`\n * `FRAGMENT_SPREAD`\n * `INLINE_FRAGMENT`\n *\n * TypeSystemDirectiveLocation : one of\n * `SCHEMA`\n * `SCALAR`\n * `OBJECT`\n * `FIELD_DEFINITION`\n * `ARGUMENT_DEFINITION`\n * `INTERFACE`\n * `UNION`\n * `ENUM`\n * `ENUM_VALUE`\n * `INPUT_OBJECT`\n * `INPUT_FIELD_DEFINITION`\n */\n\n parseDirectiveLocation() {\n const start = this._lexer.token;\n const name = this.parseName();\n\n if (Object.prototype.hasOwnProperty.call(DirectiveLocation, name.value)) {\n return name;\n }\n\n throw this.unexpected(start);\n } // Core parsing utility functions\n\n /**\n * Returns a node that, if configured to do so, sets a \"loc\" field as a\n * location object, used to identify the place in the source that created a\n * given parsed object.\n */\n\n node(startToken, node) {\n if (this._options.noLocation !== true) {\n node.loc = new Location(\n startToken,\n this._lexer.lastToken,\n this._lexer.source,\n );\n }\n\n return node;\n }\n /**\n * Determines if the next token is of a given kind\n */\n\n peek(kind) {\n return this._lexer.token.kind === kind;\n }\n /**\n * If the next token is of the given kind, return that token after advancing the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */\n\n expectToken(kind) {\n const token = this._lexer.token;\n\n if (token.kind === kind) {\n this.advanceLexer();\n return token;\n }\n\n throw syntaxError(\n this._lexer.source,\n token.start,\n `Expected ${getTokenKindDesc(kind)}, found ${getTokenDesc(token)}.`,\n );\n }\n /**\n * If the next token is of the given kind, return \"true\" after advancing the lexer.\n * Otherwise, do not change the parser state and return \"false\".\n */\n\n expectOptionalToken(kind) {\n const token = this._lexer.token;\n\n if (token.kind === kind) {\n this.advanceLexer();\n return true;\n }\n\n return false;\n }\n /**\n * If the next token is a given keyword, advance the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */\n\n expectKeyword(value) {\n const token = this._lexer.token;\n\n if (token.kind === TokenKind.NAME && token.value === value) {\n this.advanceLexer();\n } else {\n throw syntaxError(\n this._lexer.source,\n token.start,\n `Expected \"${value}\", found ${getTokenDesc(token)}.`,\n );\n }\n }\n /**\n * If the next token is a given keyword, return \"true\" after advancing the lexer.\n * Otherwise, do not change the parser state and return \"false\".\n */\n\n expectOptionalKeyword(value) {\n const token = this._lexer.token;\n\n if (token.kind === TokenKind.NAME && token.value === value) {\n this.advanceLexer();\n return true;\n }\n\n return false;\n }\n /**\n * Helper function for creating an error when an unexpected lexed token is encountered.\n */\n\n unexpected(atToken) {\n const token =\n atToken !== null && atToken !== void 0 ? atToken : this._lexer.token;\n return syntaxError(\n this._lexer.source,\n token.start,\n `Unexpected ${getTokenDesc(token)}.`,\n );\n }\n /**\n * Returns a possibly empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n\n any(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n const nodes = [];\n\n while (!this.expectOptionalToken(closeKind)) {\n nodes.push(parseFn.call(this));\n }\n\n return nodes;\n }\n /**\n * Returns a list of parse nodes, determined by the parseFn.\n * It can be empty only if open token is missing otherwise it will always return non-empty list\n * that begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n\n optionalMany(openKind, parseFn, closeKind) {\n if (this.expectOptionalToken(openKind)) {\n const nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n }\n\n return [];\n }\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n\n many(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n const nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n }\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list may begin with a lex token of delimiterKind followed by items separated by lex tokens of tokenKind.\n * Advances the parser to the next lex token after last item in the list.\n */\n\n delimitedMany(delimiterKind, parseFn) {\n this.expectOptionalToken(delimiterKind);\n const nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (this.expectOptionalToken(delimiterKind));\n\n return nodes;\n }\n\n advanceLexer() {\n const { maxTokens } = this._options;\n\n const token = this._lexer.advance();\n\n if (maxTokens !== undefined && token.kind !== TokenKind.EOF) {\n ++this._tokenCounter;\n\n if (this._tokenCounter > maxTokens) {\n throw syntaxError(\n this._lexer.source,\n token.start,\n `Document contains more that ${maxTokens} tokens. Parsing aborted.`,\n );\n }\n }\n }\n}\n/**\n * A helper function to describe a token as a string for debugging.\n */\n\nfunction getTokenDesc(token) {\n const value = token.value;\n return getTokenKindDesc(token.kind) + (value != null ? ` \"${value}\"` : '');\n}\n/**\n * A helper function to describe a token kind as a string for debugging.\n */\n\nfunction getTokenKindDesc(kind) {\n return isPunctuatorTokenKind(kind) ? `\"${kind}\"` : kind;\n}\n", "const MAX_SUGGESTIONS = 5;\n/**\n * Given [ A, B, C ] return ' Did you mean A, B, or C?'.\n */\n\nexport function didYouMean(firstArg, secondArg) {\n const [subMessage, suggestionsArg] = secondArg\n ? [firstArg, secondArg]\n : [undefined, firstArg];\n let message = ' Did you mean ';\n\n if (subMessage) {\n message += subMessage + ' ';\n }\n\n const suggestions = suggestionsArg.map((x) => `\"${x}\"`);\n\n switch (suggestions.length) {\n case 0:\n return '';\n\n case 1:\n return message + suggestions[0] + '?';\n\n case 2:\n return message + suggestions[0] + ' or ' + suggestions[1] + '?';\n }\n\n const selected = suggestions.slice(0, MAX_SUGGESTIONS);\n const lastItem = selected.pop();\n return message + selected.join(', ') + ', or ' + lastItem + '?';\n}\n", "/**\n * Returns the first argument it receives.\n */\nexport function identityFunc(x) {\n return x;\n}\n", "/**\n * Creates a keyed JS object from an array, given a function to produce the keys\n * for each value in the array.\n *\n * This provides a convenient lookup for the array items if the key function\n * produces unique results.\n * ```ts\n * const phoneBook = [\n * { name: 'Jon', num: '555-1234' },\n * { name: 'Jenny', num: '867-5309' }\n * ]\n *\n * const entriesByName = keyMap(\n * phoneBook,\n * entry => entry.name\n * )\n *\n * // {\n * // Jon: { name: 'Jon', num: '555-1234' },\n * // Jenny: { name: 'Jenny', num: '867-5309' }\n * // }\n *\n * const jennyEntry = entriesByName['Jenny']\n *\n * // { name: 'Jenny', num: '857-6309' }\n * ```\n */\nexport function keyMap(list, keyFn) {\n const result = Object.create(null);\n\n for (const item of list) {\n result[keyFn(item)] = item;\n }\n\n return result;\n}\n", "/**\n * Creates a keyed JS object from an array, given a function to produce the keys\n * and a function to produce the values from each item in the array.\n * ```ts\n * const phoneBook = [\n * { name: 'Jon', num: '555-1234' },\n * { name: 'Jenny', num: '867-5309' }\n * ]\n *\n * // { Jon: '555-1234', Jenny: '867-5309' }\n * const phonesByName = keyValMap(\n * phoneBook,\n * entry => entry.name,\n * entry => entry.num\n * )\n * ```\n */\nexport function keyValMap(list, keyFn, valFn) {\n const result = Object.create(null);\n\n for (const item of list) {\n result[keyFn(item)] = valFn(item);\n }\n\n return result;\n}\n", "/**\n * Creates an object map with the same keys as `map` and values generated by\n * running each value of `map` thru `fn`.\n */\nexport function mapValue(map, fn) {\n const result = Object.create(null);\n\n for (const key of Object.keys(map)) {\n result[key] = fn(map[key], key);\n }\n\n return result;\n}\n", "/**\n * Returns a number indicating whether a reference string comes before, or after,\n * or is the same as the given string in natural sort order.\n *\n * See: https://en.wikipedia.org/wiki/Natural_sort_order\n *\n */\nexport function naturalCompare(aStr, bStr) {\n let aIndex = 0;\n let bIndex = 0;\n\n while (aIndex < aStr.length && bIndex < bStr.length) {\n let aChar = aStr.charCodeAt(aIndex);\n let bChar = bStr.charCodeAt(bIndex);\n\n if (isDigit(aChar) && isDigit(bChar)) {\n let aNum = 0;\n\n do {\n ++aIndex;\n aNum = aNum * 10 + aChar - DIGIT_0;\n aChar = aStr.charCodeAt(aIndex);\n } while (isDigit(aChar) && aNum > 0);\n\n let bNum = 0;\n\n do {\n ++bIndex;\n bNum = bNum * 10 + bChar - DIGIT_0;\n bChar = bStr.charCodeAt(bIndex);\n } while (isDigit(bChar) && bNum > 0);\n\n if (aNum < bNum) {\n return -1;\n }\n\n if (aNum > bNum) {\n return 1;\n }\n } else {\n if (aChar < bChar) {\n return -1;\n }\n\n if (aChar > bChar) {\n return 1;\n }\n\n ++aIndex;\n ++bIndex;\n }\n }\n\n return aStr.length - bStr.length;\n}\nconst DIGIT_0 = 48;\nconst DIGIT_9 = 57;\n\nfunction isDigit(code) {\n return !isNaN(code) && DIGIT_0 <= code && code <= DIGIT_9;\n}\n", "import { naturalCompare } from './naturalCompare.mjs';\n/**\n * Given an invalid input string and a list of valid options, returns a filtered\n * list of valid options sorted based on their similarity with the input.\n */\n\nexport function suggestionList(input, options) {\n const optionsByDistance = Object.create(null);\n const lexicalDistance = new LexicalDistance(input);\n const threshold = Math.floor(input.length * 0.4) + 1;\n\n for (const option of options) {\n const distance = lexicalDistance.measure(option, threshold);\n\n if (distance !== undefined) {\n optionsByDistance[option] = distance;\n }\n }\n\n return Object.keys(optionsByDistance).sort((a, b) => {\n const distanceDiff = optionsByDistance[a] - optionsByDistance[b];\n return distanceDiff !== 0 ? distanceDiff : naturalCompare(a, b);\n });\n}\n/**\n * Computes the lexical distance between strings A and B.\n *\n * The \"distance\" between two strings is given by counting the minimum number\n * of edits needed to transform string A into string B. An edit can be an\n * insertion, deletion, or substitution of a single character, or a swap of two\n * adjacent characters.\n *\n * Includes a custom alteration from Damerau-Levenshtein to treat case changes\n * as a single edit which helps identify mis-cased values with an edit distance\n * of 1.\n *\n * This distance can be useful for detecting typos in input or sorting\n */\n\nclass LexicalDistance {\n constructor(input) {\n this._input = input;\n this._inputLowerCase = input.toLowerCase();\n this._inputArray = stringToArray(this._inputLowerCase);\n this._rows = [\n new Array(input.length + 1).fill(0),\n new Array(input.length + 1).fill(0),\n new Array(input.length + 1).fill(0),\n ];\n }\n\n measure(option, threshold) {\n if (this._input === option) {\n return 0;\n }\n\n const optionLowerCase = option.toLowerCase(); // Any case change counts as a single edit\n\n if (this._inputLowerCase === optionLowerCase) {\n return 1;\n }\n\n let a = stringToArray(optionLowerCase);\n let b = this._inputArray;\n\n if (a.length < b.length) {\n const tmp = a;\n a = b;\n b = tmp;\n }\n\n const aLength = a.length;\n const bLength = b.length;\n\n if (aLength - bLength > threshold) {\n return undefined;\n }\n\n const rows = this._rows;\n\n for (let j = 0; j <= bLength; j++) {\n rows[0][j] = j;\n }\n\n for (let i = 1; i <= aLength; i++) {\n const upRow = rows[(i - 1) % 3];\n const currentRow = rows[i % 3];\n let smallestCell = (currentRow[0] = i);\n\n for (let j = 1; j <= bLength; j++) {\n const cost = a[i - 1] === b[j - 1] ? 0 : 1;\n let currentCell = Math.min(\n upRow[j] + 1, // delete\n currentRow[j - 1] + 1, // insert\n upRow[j - 1] + cost, // substitute\n );\n\n if (i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b[j - 1]) {\n // transposition\n const doubleDiagonalCell = rows[(i - 2) % 3][j - 2];\n currentCell = Math.min(currentCell, doubleDiagonalCell + 1);\n }\n\n if (currentCell < smallestCell) {\n smallestCell = currentCell;\n }\n\n currentRow[j] = currentCell;\n } // Early exit, since distance can't go smaller than smallest element of the previous row.\n\n if (smallestCell > threshold) {\n return undefined;\n }\n }\n\n const distance = rows[aLength % 3][bLength];\n return distance <= threshold ? distance : undefined;\n }\n}\n\nfunction stringToArray(str) {\n const strLength = str.length;\n const array = new Array(strLength);\n\n for (let i = 0; i < strLength; ++i) {\n array[i] = str.charCodeAt(i);\n }\n\n return array;\n}\n", "export function toObjMap(obj) {\n if (obj == null) {\n return Object.create(null);\n }\n\n if (Object.getPrototypeOf(obj) === null) {\n return obj;\n }\n\n const map = Object.create(null);\n\n for (const [key, value] of Object.entries(obj)) {\n map[key] = value;\n }\n\n return map;\n}\n", "/**\n * Prints a string as a GraphQL StringValue literal. Replaces control characters\n * and excluded characters (\" U+0022 and \\\\ U+005C) with escape sequences.\n */\nexport function printString(str) {\n return `\"${str.replace(escapedRegExp, escapedReplacer)}\"`;\n} // eslint-disable-next-line no-control-regex\n\nconst escapedRegExp = /[\\x00-\\x1f\\x22\\x5c\\x7f-\\x9f]/g;\n\nfunction escapedReplacer(str) {\n return escapeSequences[str.charCodeAt(0)];\n} // prettier-ignore\n\nconst escapeSequences = [\n '\\\\u0000',\n '\\\\u0001',\n '\\\\u0002',\n '\\\\u0003',\n '\\\\u0004',\n '\\\\u0005',\n '\\\\u0006',\n '\\\\u0007',\n '\\\\b',\n '\\\\t',\n '\\\\n',\n '\\\\u000B',\n '\\\\f',\n '\\\\r',\n '\\\\u000E',\n '\\\\u000F',\n '\\\\u0010',\n '\\\\u0011',\n '\\\\u0012',\n '\\\\u0013',\n '\\\\u0014',\n '\\\\u0015',\n '\\\\u0016',\n '\\\\u0017',\n '\\\\u0018',\n '\\\\u0019',\n '\\\\u001A',\n '\\\\u001B',\n '\\\\u001C',\n '\\\\u001D',\n '\\\\u001E',\n '\\\\u001F',\n '',\n '',\n '\\\\\"',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '', // 2F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '', // 3F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '', // 4F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '\\\\\\\\',\n '',\n '',\n '', // 5F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '', // 6F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '\\\\u007F',\n '\\\\u0080',\n '\\\\u0081',\n '\\\\u0082',\n '\\\\u0083',\n '\\\\u0084',\n '\\\\u0085',\n '\\\\u0086',\n '\\\\u0087',\n '\\\\u0088',\n '\\\\u0089',\n '\\\\u008A',\n '\\\\u008B',\n '\\\\u008C',\n '\\\\u008D',\n '\\\\u008E',\n '\\\\u008F',\n '\\\\u0090',\n '\\\\u0091',\n '\\\\u0092',\n '\\\\u0093',\n '\\\\u0094',\n '\\\\u0095',\n '\\\\u0096',\n '\\\\u0097',\n '\\\\u0098',\n '\\\\u0099',\n '\\\\u009A',\n '\\\\u009B',\n '\\\\u009C',\n '\\\\u009D',\n '\\\\u009E',\n '\\\\u009F',\n];\n", "import { devAssert } from '../jsutils/devAssert.mjs';\nimport { inspect } from '../jsutils/inspect.mjs';\nimport { isNode, QueryDocumentKeys } from './ast.mjs';\nimport { Kind } from './kinds.mjs';\n/**\n * A visitor is provided to visit, it contains the collection of\n * relevant functions to be called during the visitor's traversal.\n */\n\nexport const BREAK = Object.freeze({});\n/**\n * visit() will walk through an AST using a depth-first traversal, calling\n * the visitor's enter function at each node in the traversal, and calling the\n * leave function after visiting that node and all of its child nodes.\n *\n * By returning different values from the enter and leave functions, the\n * behavior of the visitor can be altered, including skipping over a sub-tree of\n * the AST (by returning false), editing the AST by returning a value or null\n * to remove the value, or to stop the whole traversal by returning BREAK.\n *\n * When using visit() to edit an AST, the original AST will not be modified, and\n * a new version of the AST with the changes applied will be returned from the\n * visit function.\n *\n * ```ts\n * const editedAST = visit(ast, {\n * enter(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: skip visiting this node\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * },\n * leave(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: no action\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * }\n * });\n * ```\n *\n * Alternatively to providing enter() and leave() functions, a visitor can\n * instead provide functions named the same as the kinds of AST nodes, or\n * enter/leave visitors at a named key, leading to three permutations of the\n * visitor API:\n *\n * 1) Named visitors triggered when entering a node of a specific kind.\n *\n * ```ts\n * visit(ast, {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * })\n * ```\n *\n * 2) Named visitors that trigger upon entering and leaving a node of a specific kind.\n *\n * ```ts\n * visit(ast, {\n * Kind: {\n * enter(node) {\n * // enter the \"Kind\" node\n * }\n * leave(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n * ```\n *\n * 3) Generic visitors that trigger upon entering and leaving any node.\n *\n * ```ts\n * visit(ast, {\n * enter(node) {\n * // enter any node\n * },\n * leave(node) {\n * // leave any node\n * }\n * })\n * ```\n */\n\nexport function visit(root, visitor, visitorKeys = QueryDocumentKeys) {\n const enterLeaveMap = new Map();\n\n for (const kind of Object.values(Kind)) {\n enterLeaveMap.set(kind, getEnterLeaveForKind(visitor, kind));\n }\n /* eslint-disable no-undef-init */\n\n let stack = undefined;\n let inArray = Array.isArray(root);\n let keys = [root];\n let index = -1;\n let edits = [];\n let node = root;\n let key = undefined;\n let parent = undefined;\n const path = [];\n const ancestors = [];\n /* eslint-enable no-undef-init */\n\n do {\n index++;\n const isLeaving = index === keys.length;\n const isEdited = isLeaving && edits.length !== 0;\n\n if (isLeaving) {\n key = ancestors.length === 0 ? undefined : path[path.length - 1];\n node = parent;\n parent = ancestors.pop();\n\n if (isEdited) {\n if (inArray) {\n node = node.slice();\n let editOffset = 0;\n\n for (const [editKey, editValue] of edits) {\n const arrayKey = editKey - editOffset;\n\n if (editValue === null) {\n node.splice(arrayKey, 1);\n editOffset++;\n } else {\n node[arrayKey] = editValue;\n }\n }\n } else {\n node = Object.defineProperties(\n {},\n Object.getOwnPropertyDescriptors(node),\n );\n\n for (const [editKey, editValue] of edits) {\n node[editKey] = editValue;\n }\n }\n }\n\n index = stack.index;\n keys = stack.keys;\n edits = stack.edits;\n inArray = stack.inArray;\n stack = stack.prev;\n } else if (parent) {\n key = inArray ? index : keys[index];\n node = parent[key];\n\n if (node === null || node === undefined) {\n continue;\n }\n\n path.push(key);\n }\n\n let result;\n\n if (!Array.isArray(node)) {\n var _enterLeaveMap$get, _enterLeaveMap$get2;\n\n isNode(node) || devAssert(false, `Invalid AST Node: ${inspect(node)}.`);\n const visitFn = isLeaving\n ? (_enterLeaveMap$get = enterLeaveMap.get(node.kind)) === null ||\n _enterLeaveMap$get === void 0\n ? void 0\n : _enterLeaveMap$get.leave\n : (_enterLeaveMap$get2 = enterLeaveMap.get(node.kind)) === null ||\n _enterLeaveMap$get2 === void 0\n ? void 0\n : _enterLeaveMap$get2.enter;\n result =\n visitFn === null || visitFn === void 0\n ? void 0\n : visitFn.call(visitor, node, key, parent, path, ancestors);\n\n if (result === BREAK) {\n break;\n }\n\n if (result === false) {\n if (!isLeaving) {\n path.pop();\n continue;\n }\n } else if (result !== undefined) {\n edits.push([key, result]);\n\n if (!isLeaving) {\n if (isNode(result)) {\n node = result;\n } else {\n path.pop();\n continue;\n }\n }\n }\n }\n\n if (result === undefined && isEdited) {\n edits.push([key, node]);\n }\n\n if (isLeaving) {\n path.pop();\n } else {\n var _node$kind;\n\n stack = {\n inArray,\n index,\n keys,\n edits,\n prev: stack,\n };\n inArray = Array.isArray(node);\n keys = inArray\n ? node\n : (_node$kind = visitorKeys[node.kind]) !== null &&\n _node$kind !== void 0\n ? _node$kind\n : [];\n index = -1;\n edits = [];\n\n if (parent) {\n ancestors.push(parent);\n }\n\n parent = node;\n }\n } while (stack !== undefined);\n\n if (edits.length !== 0) {\n // New root\n return edits[edits.length - 1][1];\n }\n\n return root;\n}\n/**\n * Creates a new visitor instance which delegates to many visitors to run in\n * parallel. Each visitor will be visited for each node before moving on.\n *\n * If a prior visitor edits a node, no following visitors will see that node.\n */\n\nexport function visitInParallel(visitors) {\n const skipping = new Array(visitors.length).fill(null);\n const mergedVisitor = Object.create(null);\n\n for (const kind of Object.values(Kind)) {\n let hasVisitor = false;\n const enterList = new Array(visitors.length).fill(undefined);\n const leaveList = new Array(visitors.length).fill(undefined);\n\n for (let i = 0; i < visitors.length; ++i) {\n const { enter, leave } = getEnterLeaveForKind(visitors[i], kind);\n hasVisitor || (hasVisitor = enter != null || leave != null);\n enterList[i] = enter;\n leaveList[i] = leave;\n }\n\n if (!hasVisitor) {\n continue;\n }\n\n const mergedEnterLeave = {\n enter(...args) {\n const node = args[0];\n\n for (let i = 0; i < visitors.length; i++) {\n if (skipping[i] === null) {\n var _enterList$i;\n\n const result =\n (_enterList$i = enterList[i]) === null || _enterList$i === void 0\n ? void 0\n : _enterList$i.apply(visitors[i], args);\n\n if (result === false) {\n skipping[i] = node;\n } else if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined) {\n return result;\n }\n }\n }\n },\n\n leave(...args) {\n const node = args[0];\n\n for (let i = 0; i < visitors.length; i++) {\n if (skipping[i] === null) {\n var _leaveList$i;\n\n const result =\n (_leaveList$i = leaveList[i]) === null || _leaveList$i === void 0\n ? void 0\n : _leaveList$i.apply(visitors[i], args);\n\n if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined && result !== false) {\n return result;\n }\n } else if (skipping[i] === node) {\n skipping[i] = null;\n }\n }\n },\n };\n mergedVisitor[kind] = mergedEnterLeave;\n }\n\n return mergedVisitor;\n}\n/**\n * Given a visitor instance and a node kind, return EnterLeaveVisitor for that kind.\n */\n\nexport function getEnterLeaveForKind(visitor, kind) {\n const kindVisitor = visitor[kind];\n\n if (typeof kindVisitor === 'object') {\n // { Kind: { enter() {}, leave() {} } }\n return kindVisitor;\n } else if (typeof kindVisitor === 'function') {\n // { Kind() {} }\n return {\n enter: kindVisitor,\n leave: undefined,\n };\n } // { enter() {}, leave() {} }\n\n return {\n enter: visitor.enter,\n leave: visitor.leave,\n };\n}\n/**\n * Given a visitor instance, if it is leaving or not, and a node kind, return\n * the function the visitor runtime should call.\n *\n * @deprecated Please use `getEnterLeaveForKind` instead. Will be removed in v17\n */\n\n/* c8 ignore next 8 */\n\nexport function getVisitFn(visitor, kind, isLeaving) {\n const { enter, leave } = getEnterLeaveForKind(visitor, kind);\n return isLeaving ? leave : enter;\n}\n", "import { printBlockString } from './blockString.mjs';\nimport { printString } from './printString.mjs';\nimport { visit } from './visitor.mjs';\n/**\n * Converts an AST into a string, using one set of reasonable\n * formatting rules.\n */\n\nexport function print(ast) {\n return visit(ast, printDocASTReducer);\n}\nconst MAX_LINE_LENGTH = 80;\nconst printDocASTReducer = {\n Name: {\n leave: (node) => node.value,\n },\n Variable: {\n leave: (node) => '$' + node.name,\n },\n // Document\n Document: {\n leave: (node) => join(node.definitions, '\\n\\n'),\n },\n OperationDefinition: {\n leave(node) {\n const varDefs = wrap('(', join(node.variableDefinitions, ', '), ')');\n const prefix = join(\n [\n node.operation,\n join([node.name, varDefs]),\n join(node.directives, ' '),\n ],\n ' ',\n ); // Anonymous queries with no directives or variable definitions can use\n // the query short form.\n\n return (prefix === 'query' ? '' : prefix + ' ') + node.selectionSet;\n },\n },\n VariableDefinition: {\n leave: ({ variable, type, defaultValue, directives }) =>\n variable +\n ': ' +\n type +\n wrap(' = ', defaultValue) +\n wrap(' ', join(directives, ' ')),\n },\n SelectionSet: {\n leave: ({ selections }) => block(selections),\n },\n Field: {\n leave({ alias, name, arguments: args, directives, selectionSet }) {\n const prefix = wrap('', alias, ': ') + name;\n let argsLine = prefix + wrap('(', join(args, ', '), ')');\n\n if (argsLine.length > MAX_LINE_LENGTH) {\n argsLine = prefix + wrap('(\\n', indent(join(args, '\\n')), '\\n)');\n }\n\n return join([argsLine, join(directives, ' '), selectionSet], ' ');\n },\n },\n Argument: {\n leave: ({ name, value }) => name + ': ' + value,\n },\n // Fragments\n FragmentSpread: {\n leave: ({ name, directives }) =>\n '...' + name + wrap(' ', join(directives, ' ')),\n },\n InlineFragment: {\n leave: ({ typeCondition, directives, selectionSet }) =>\n join(\n [\n '...',\n wrap('on ', typeCondition),\n join(directives, ' '),\n selectionSet,\n ],\n ' ',\n ),\n },\n FragmentDefinition: {\n leave: (\n { name, typeCondition, variableDefinitions, directives, selectionSet }, // Note: fragment variable definitions are experimental and may be changed\n ) =>\n // or removed in the future.\n `fragment ${name}${wrap('(', join(variableDefinitions, ', '), ')')} ` +\n `on ${typeCondition} ${wrap('', join(directives, ' '), ' ')}` +\n selectionSet,\n },\n // Value\n IntValue: {\n leave: ({ value }) => value,\n },\n FloatValue: {\n leave: ({ value }) => value,\n },\n StringValue: {\n leave: ({ value, block: isBlockString }) =>\n isBlockString ? printBlockString(value) : printString(value),\n },\n BooleanValue: {\n leave: ({ value }) => (value ? 'true' : 'false'),\n },\n NullValue: {\n leave: () => 'null',\n },\n EnumValue: {\n leave: ({ value }) => value,\n },\n ListValue: {\n leave: ({ values }) => '[' + join(values, ', ') + ']',\n },\n ObjectValue: {\n leave: ({ fields }) => '{' + join(fields, ', ') + '}',\n },\n ObjectField: {\n leave: ({ name, value }) => name + ': ' + value,\n },\n // Directive\n Directive: {\n leave: ({ name, arguments: args }) =>\n '@' + name + wrap('(', join(args, ', '), ')'),\n },\n // Type\n NamedType: {\n leave: ({ name }) => name,\n },\n ListType: {\n leave: ({ type }) => '[' + type + ']',\n },\n NonNullType: {\n leave: ({ type }) => type + '!',\n },\n // Type System Definitions\n SchemaDefinition: {\n leave: ({ description, directives, operationTypes }) =>\n wrap('', description, '\\n') +\n join(['schema', join(directives, ' '), block(operationTypes)], ' '),\n },\n OperationTypeDefinition: {\n leave: ({ operation, type }) => operation + ': ' + type,\n },\n ScalarTypeDefinition: {\n leave: ({ description, name, directives }) =>\n wrap('', description, '\\n') +\n join(['scalar', name, join(directives, ' ')], ' '),\n },\n ObjectTypeDefinition: {\n leave: ({ description, name, interfaces, directives, fields }) =>\n wrap('', description, '\\n') +\n join(\n [\n 'type',\n name,\n wrap('implements ', join(interfaces, ' & ')),\n join(directives, ' '),\n block(fields),\n ],\n ' ',\n ),\n },\n FieldDefinition: {\n leave: ({ description, name, arguments: args, type, directives }) =>\n wrap('', description, '\\n') +\n name +\n (hasMultilineItems(args)\n ? wrap('(\\n', indent(join(args, '\\n')), '\\n)')\n : wrap('(', join(args, ', '), ')')) +\n ': ' +\n type +\n wrap(' ', join(directives, ' ')),\n },\n InputValueDefinition: {\n leave: ({ description, name, type, defaultValue, directives }) =>\n wrap('', description, '\\n') +\n join(\n [name + ': ' + type, wrap('= ', defaultValue), join(directives, ' ')],\n ' ',\n ),\n },\n InterfaceTypeDefinition: {\n leave: ({ description, name, interfaces, directives, fields }) =>\n wrap('', description, '\\n') +\n join(\n [\n 'interface',\n name,\n wrap('implements ', join(interfaces, ' & ')),\n join(directives, ' '),\n block(fields),\n ],\n ' ',\n ),\n },\n UnionTypeDefinition: {\n leave: ({ description, name, directives, types }) =>\n wrap('', description, '\\n') +\n join(\n ['union', name, join(directives, ' '), wrap('= ', join(types, ' | '))],\n ' ',\n ),\n },\n EnumTypeDefinition: {\n leave: ({ description, name, directives, values }) =>\n wrap('', description, '\\n') +\n join(['enum', name, join(directives, ' '), block(values)], ' '),\n },\n EnumValueDefinition: {\n leave: ({ description, name, directives }) =>\n wrap('', description, '\\n') + join([name, join(directives, ' ')], ' '),\n },\n InputObjectTypeDefinition: {\n leave: ({ description, name, directives, fields }) =>\n wrap('', description, '\\n') +\n join(['input', name, join(directives, ' '), block(fields)], ' '),\n },\n DirectiveDefinition: {\n leave: ({ description, name, arguments: args, repeatable, locations }) =>\n wrap('', description, '\\n') +\n 'directive @' +\n name +\n (hasMultilineItems(args)\n ? wrap('(\\n', indent(join(args, '\\n')), '\\n)')\n : wrap('(', join(args, ', '), ')')) +\n (repeatable ? ' repeatable' : '') +\n ' on ' +\n join(locations, ' | '),\n },\n SchemaExtension: {\n leave: ({ directives, operationTypes }) =>\n join(\n ['extend schema', join(directives, ' '), block(operationTypes)],\n ' ',\n ),\n },\n ScalarTypeExtension: {\n leave: ({ name, directives }) =>\n join(['extend scalar', name, join(directives, ' ')], ' '),\n },\n ObjectTypeExtension: {\n leave: ({ name, interfaces, directives, fields }) =>\n join(\n [\n 'extend type',\n name,\n wrap('implements ', join(interfaces, ' & ')),\n join(directives, ' '),\n block(fields),\n ],\n ' ',\n ),\n },\n InterfaceTypeExtension: {\n leave: ({ name, interfaces, directives, fields }) =>\n join(\n [\n 'extend interface',\n name,\n wrap('implements ', join(interfaces, ' & ')),\n join(directives, ' '),\n block(fields),\n ],\n ' ',\n ),\n },\n UnionTypeExtension: {\n leave: ({ name, directives, types }) =>\n join(\n [\n 'extend union',\n name,\n join(directives, ' '),\n wrap('= ', join(types, ' | ')),\n ],\n ' ',\n ),\n },\n EnumTypeExtension: {\n leave: ({ name, directives, values }) =>\n join(['extend enum', name, join(directives, ' '), block(values)], ' '),\n },\n InputObjectTypeExtension: {\n leave: ({ name, directives, fields }) =>\n join(['extend input', name, join(directives, ' '), block(fields)], ' '),\n },\n};\n/**\n * Given maybeArray, print an empty string if it is null or empty, otherwise\n * print all items together separated by separator if provided\n */\n\nfunction join(maybeArray, separator = '') {\n var _maybeArray$filter$jo;\n\n return (_maybeArray$filter$jo =\n maybeArray === null || maybeArray === void 0\n ? void 0\n : maybeArray.filter((x) => x).join(separator)) !== null &&\n _maybeArray$filter$jo !== void 0\n ? _maybeArray$filter$jo\n : '';\n}\n/**\n * Given array, print each item on its own line, wrapped in an indented `{ }` block.\n */\n\nfunction block(array) {\n return wrap('{\\n', indent(join(array, '\\n')), '\\n}');\n}\n/**\n * If maybeString is not null or empty, then wrap with start and end, otherwise print an empty string.\n */\n\nfunction wrap(start, maybeString, end = '') {\n return maybeString != null && maybeString !== ''\n ? start + maybeString + end\n : '';\n}\n\nfunction indent(str) {\n return wrap(' ', str.replace(/\\n/g, '\\n '));\n}\n\nfunction hasMultilineItems(maybeArray) {\n var _maybeArray$some;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n return (_maybeArray$some =\n maybeArray === null || maybeArray === void 0\n ? void 0\n : maybeArray.some((str) => str.includes('\\n'))) !== null &&\n _maybeArray$some !== void 0\n ? _maybeArray$some\n : false;\n}\n", "import { keyValMap } from '../jsutils/keyValMap.mjs';\nimport { Kind } from '../language/kinds.mjs';\n/**\n * Produces a JavaScript value given a GraphQL Value AST.\n *\n * Unlike `valueFromAST()`, no type is provided. The resulting JavaScript value\n * will reflect the provided GraphQL value AST.\n *\n * | GraphQL Value | JavaScript Value |\n * | -------------------- | ---------------- |\n * | Input Object | Object |\n * | List | Array |\n * | Boolean | Boolean |\n * | String / Enum | String |\n * | Int / Float | Number |\n * | Null | null |\n *\n */\n\nexport function valueFromASTUntyped(valueNode, variables) {\n switch (valueNode.kind) {\n case Kind.NULL:\n return null;\n\n case Kind.INT:\n return parseInt(valueNode.value, 10);\n\n case Kind.FLOAT:\n return parseFloat(valueNode.value);\n\n case Kind.STRING:\n case Kind.ENUM:\n case Kind.BOOLEAN:\n return valueNode.value;\n\n case Kind.LIST:\n return valueNode.values.map((node) =>\n valueFromASTUntyped(node, variables),\n );\n\n case Kind.OBJECT:\n return keyValMap(\n valueNode.fields,\n (field) => field.name.value,\n (field) => valueFromASTUntyped(field.value, variables),\n );\n\n case Kind.VARIABLE:\n return variables === null || variables === void 0\n ? void 0\n : variables[valueNode.name.value];\n }\n}\n", "import { devAssert } from '../jsutils/devAssert.mjs';\nimport { GraphQLError } from '../error/GraphQLError.mjs';\nimport { isNameContinue, isNameStart } from '../language/characterClasses.mjs';\n/**\n * Upholds the spec rules about naming.\n */\n\nexport function assertName(name) {\n name != null || devAssert(false, 'Must provide name.');\n typeof name === 'string' || devAssert(false, 'Expected name to be a string.');\n\n if (name.length === 0) {\n throw new GraphQLError('Expected name to be a non-empty string.');\n }\n\n for (let i = 1; i < name.length; ++i) {\n if (!isNameContinue(name.charCodeAt(i))) {\n throw new GraphQLError(\n `Names must only contain [_a-zA-Z0-9] but \"${name}\" does not.`,\n );\n }\n }\n\n if (!isNameStart(name.charCodeAt(0))) {\n throw new GraphQLError(\n `Names must start with [_a-zA-Z] but \"${name}\" does not.`,\n );\n }\n\n return name;\n}\n/**\n * Upholds the spec rules about naming enum values.\n *\n * @internal\n */\n\nexport function assertEnumValueName(name) {\n if (name === 'true' || name === 'false' || name === 'null') {\n throw new GraphQLError(`Enum values cannot be named: ${name}`);\n }\n\n return assertName(name);\n}\n", "import { devAssert } from '../jsutils/devAssert.mjs';\nimport { didYouMean } from '../jsutils/didYouMean.mjs';\nimport { identityFunc } from '../jsutils/identityFunc.mjs';\nimport { inspect } from '../jsutils/inspect.mjs';\nimport { instanceOf } from '../jsutils/instanceOf.mjs';\nimport { isObjectLike } from '../jsutils/isObjectLike.mjs';\nimport { keyMap } from '../jsutils/keyMap.mjs';\nimport { keyValMap } from '../jsutils/keyValMap.mjs';\nimport { mapValue } from '../jsutils/mapValue.mjs';\nimport { suggestionList } from '../jsutils/suggestionList.mjs';\nimport { toObjMap } from '../jsutils/toObjMap.mjs';\nimport { GraphQLError } from '../error/GraphQLError.mjs';\nimport { Kind } from '../language/kinds.mjs';\nimport { print } from '../language/printer.mjs';\nimport { valueFromASTUntyped } from '../utilities/valueFromASTUntyped.mjs';\nimport { assertEnumValueName, assertName } from './assertName.mjs';\nexport function isType(type) {\n return (\n isScalarType(type) ||\n isObjectType(type) ||\n isInterfaceType(type) ||\n isUnionType(type) ||\n isEnumType(type) ||\n isInputObjectType(type) ||\n isListType(type) ||\n isNonNullType(type)\n );\n}\nexport function assertType(type) {\n if (!isType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL type.`);\n }\n\n return type;\n}\n/**\n * There are predicates for each kind of GraphQL type.\n */\n\nexport function isScalarType(type) {\n return instanceOf(type, GraphQLScalarType);\n}\nexport function assertScalarType(type) {\n if (!isScalarType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL Scalar type.`);\n }\n\n return type;\n}\nexport function isObjectType(type) {\n return instanceOf(type, GraphQLObjectType);\n}\nexport function assertObjectType(type) {\n if (!isObjectType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL Object type.`);\n }\n\n return type;\n}\nexport function isInterfaceType(type) {\n return instanceOf(type, GraphQLInterfaceType);\n}\nexport function assertInterfaceType(type) {\n if (!isInterfaceType(type)) {\n throw new Error(\n `Expected ${inspect(type)} to be a GraphQL Interface type.`,\n );\n }\n\n return type;\n}\nexport function isUnionType(type) {\n return instanceOf(type, GraphQLUnionType);\n}\nexport function assertUnionType(type) {\n if (!isUnionType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL Union type.`);\n }\n\n return type;\n}\nexport function isEnumType(type) {\n return instanceOf(type, GraphQLEnumType);\n}\nexport function assertEnumType(type) {\n if (!isEnumType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL Enum type.`);\n }\n\n return type;\n}\nexport function isInputObjectType(type) {\n return instanceOf(type, GraphQLInputObjectType);\n}\nexport function assertInputObjectType(type) {\n if (!isInputObjectType(type)) {\n throw new Error(\n `Expected ${inspect(type)} to be a GraphQL Input Object type.`,\n );\n }\n\n return type;\n}\nexport function isListType(type) {\n return instanceOf(type, GraphQLList);\n}\nexport function assertListType(type) {\n if (!isListType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL List type.`);\n }\n\n return type;\n}\nexport function isNonNullType(type) {\n return instanceOf(type, GraphQLNonNull);\n}\nexport function assertNonNullType(type) {\n if (!isNonNullType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL Non-Null type.`);\n }\n\n return type;\n}\n/**\n * These types may be used as input types for arguments and directives.\n */\n\nexport function isInputType(type) {\n return (\n isScalarType(type) ||\n isEnumType(type) ||\n isInputObjectType(type) ||\n (isWrappingType(type) && isInputType(type.ofType))\n );\n}\nexport function assertInputType(type) {\n if (!isInputType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL input type.`);\n }\n\n return type;\n}\n/**\n * These types may be used as output types as the result of fields.\n */\n\nexport function isOutputType(type) {\n return (\n isScalarType(type) ||\n isObjectType(type) ||\n isInterfaceType(type) ||\n isUnionType(type) ||\n isEnumType(type) ||\n (isWrappingType(type) && isOutputType(type.ofType))\n );\n}\nexport function assertOutputType(type) {\n if (!isOutputType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL output type.`);\n }\n\n return type;\n}\n/**\n * These types may describe types which may be leaf values.\n */\n\nexport function isLeafType(type) {\n return isScalarType(type) || isEnumType(type);\n}\nexport function assertLeafType(type) {\n if (!isLeafType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL leaf type.`);\n }\n\n return type;\n}\n/**\n * These types may describe the parent context of a selection set.\n */\n\nexport function isCompositeType(type) {\n return isObjectType(type) || isInterfaceType(type) || isUnionType(type);\n}\nexport function assertCompositeType(type) {\n if (!isCompositeType(type)) {\n throw new Error(\n `Expected ${inspect(type)} to be a GraphQL composite type.`,\n );\n }\n\n return type;\n}\n/**\n * These types may describe the parent context of a selection set.\n */\n\nexport function isAbstractType(type) {\n return isInterfaceType(type) || isUnionType(type);\n}\nexport function assertAbstractType(type) {\n if (!isAbstractType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL abstract type.`);\n }\n\n return type;\n}\n/**\n * List Type Wrapper\n *\n * A list is a wrapping type which points to another type.\n * Lists are often created within the context of defining the fields of\n * an object type.\n *\n * Example:\n *\n * ```ts\n * const PersonType = new GraphQLObjectType({\n * name: 'Person',\n * fields: () => ({\n * parents: { type: new GraphQLList(PersonType) },\n * children: { type: new GraphQLList(PersonType) },\n * })\n * })\n * ```\n */\n\nexport class GraphQLList {\n constructor(ofType) {\n isType(ofType) ||\n devAssert(false, `Expected ${inspect(ofType)} to be a GraphQL type.`);\n this.ofType = ofType;\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLList';\n }\n\n toString() {\n return '[' + String(this.ofType) + ']';\n }\n\n toJSON() {\n return this.toString();\n }\n}\n/**\n * Non-Null Type Wrapper\n *\n * A non-null is a wrapping type which points to another type.\n * Non-null types enforce that their values are never null and can ensure\n * an error is raised if this ever occurs during a request. It is useful for\n * fields which you can make a strong guarantee on non-nullability, for example\n * usually the id field of a database row will never be null.\n *\n * Example:\n *\n * ```ts\n * const RowType = new GraphQLObjectType({\n * name: 'Row',\n * fields: () => ({\n * id: { type: new GraphQLNonNull(GraphQLString) },\n * })\n * })\n * ```\n * Note: the enforcement of non-nullability occurs within the executor.\n */\n\nexport class GraphQLNonNull {\n constructor(ofType) {\n isNullableType(ofType) ||\n devAssert(\n false,\n `Expected ${inspect(ofType)} to be a GraphQL nullable type.`,\n );\n this.ofType = ofType;\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLNonNull';\n }\n\n toString() {\n return String(this.ofType) + '!';\n }\n\n toJSON() {\n return this.toString();\n }\n}\n/**\n * These types wrap and modify other types\n */\n\nexport function isWrappingType(type) {\n return isListType(type) || isNonNullType(type);\n}\nexport function assertWrappingType(type) {\n if (!isWrappingType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL wrapping type.`);\n }\n\n return type;\n}\n/**\n * These types can all accept null as a value.\n */\n\nexport function isNullableType(type) {\n return isType(type) && !isNonNullType(type);\n}\nexport function assertNullableType(type) {\n if (!isNullableType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL nullable type.`);\n }\n\n return type;\n}\nexport function getNullableType(type) {\n if (type) {\n return isNonNullType(type) ? type.ofType : type;\n }\n}\n/**\n * These named types do not include modifiers like List or NonNull.\n */\n\nexport function isNamedType(type) {\n return (\n isScalarType(type) ||\n isObjectType(type) ||\n isInterfaceType(type) ||\n isUnionType(type) ||\n isEnumType(type) ||\n isInputObjectType(type)\n );\n}\nexport function assertNamedType(type) {\n if (!isNamedType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL named type.`);\n }\n\n return type;\n}\nexport function getNamedType(type) {\n if (type) {\n let unwrappedType = type;\n\n while (isWrappingType(unwrappedType)) {\n unwrappedType = unwrappedType.ofType;\n }\n\n return unwrappedType;\n }\n}\n/**\n * Used while defining GraphQL types to allow for circular references in\n * otherwise immutable type definitions.\n */\n\nexport function resolveReadonlyArrayThunk(thunk) {\n return typeof thunk === 'function' ? thunk() : thunk;\n}\nexport function resolveObjMapThunk(thunk) {\n return typeof thunk === 'function' ? thunk() : thunk;\n}\n/**\n * Custom extensions\n *\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n */\n\n/**\n * Scalar Type Definition\n *\n * The leaf values of any request and input values to arguments are\n * Scalars (or Enums) and are defined with a name and a series of functions\n * used to parse input from ast or variables and to ensure validity.\n *\n * If a type's serialize function returns `null` or does not return a value\n * (i.e. it returns `undefined`) then an error will be raised and a `null`\n * value will be returned in the response. It is always better to validate\n *\n * Example:\n *\n * ```ts\n * const OddType = new GraphQLScalarType({\n * name: 'Odd',\n * serialize(value) {\n * if (!Number.isFinite(value)) {\n * throw new Error(\n * `Scalar \"Odd\" cannot represent \"${value}\" since it is not a finite number.`,\n * );\n * }\n *\n * if (value % 2 === 0) {\n * throw new Error(`Scalar \"Odd\" cannot represent \"${value}\" since it is even.`);\n * }\n * return value;\n * }\n * });\n * ```\n */\nexport class GraphQLScalarType {\n constructor(config) {\n var _config$parseValue,\n _config$serialize,\n _config$parseLiteral,\n _config$extensionASTN;\n\n const parseValue =\n (_config$parseValue = config.parseValue) !== null &&\n _config$parseValue !== void 0\n ? _config$parseValue\n : identityFunc;\n this.name = assertName(config.name);\n this.description = config.description;\n this.specifiedByURL = config.specifiedByURL;\n this.serialize =\n (_config$serialize = config.serialize) !== null &&\n _config$serialize !== void 0\n ? _config$serialize\n : identityFunc;\n this.parseValue = parseValue;\n this.parseLiteral =\n (_config$parseLiteral = config.parseLiteral) !== null &&\n _config$parseLiteral !== void 0\n ? _config$parseLiteral\n : (node, variables) => parseValue(valueFromASTUntyped(node, variables));\n this.extensions = toObjMap(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes =\n (_config$extensionASTN = config.extensionASTNodes) !== null &&\n _config$extensionASTN !== void 0\n ? _config$extensionASTN\n : [];\n config.specifiedByURL == null ||\n typeof config.specifiedByURL === 'string' ||\n devAssert(\n false,\n `${this.name} must provide \"specifiedByURL\" as a string, ` +\n `but got: ${inspect(config.specifiedByURL)}.`,\n );\n config.serialize == null ||\n typeof config.serialize === 'function' ||\n devAssert(\n false,\n `${this.name} must provide \"serialize\" function. If this custom Scalar is also used as an input type, ensure \"parseValue\" and \"parseLiteral\" functions are also provided.`,\n );\n\n if (config.parseLiteral) {\n (typeof config.parseValue === 'function' &&\n typeof config.parseLiteral === 'function') ||\n devAssert(\n false,\n `${this.name} must provide both \"parseValue\" and \"parseLiteral\" functions.`,\n );\n }\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLScalarType';\n }\n\n toConfig() {\n return {\n name: this.name,\n description: this.description,\n specifiedByURL: this.specifiedByURL,\n serialize: this.serialize,\n parseValue: this.parseValue,\n parseLiteral: this.parseLiteral,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes,\n };\n }\n\n toString() {\n return this.name;\n }\n\n toJSON() {\n return this.toString();\n }\n}\n\n/**\n * Object Type Definition\n *\n * Almost all of the GraphQL types you define will be object types. Object types\n * have a name, but most importantly describe their fields.\n *\n * Example:\n *\n * ```ts\n * const AddressType = new GraphQLObjectType({\n * name: 'Address',\n * fields: {\n * street: { type: GraphQLString },\n * number: { type: GraphQLInt },\n * formatted: {\n * type: GraphQLString,\n * resolve(obj) {\n * return obj.number + ' ' + obj.street\n * }\n * }\n * }\n * });\n * ```\n *\n * When two types need to refer to each other, or a type needs to refer to\n * itself in a field, you can use a function expression (aka a closure or a\n * thunk) to supply the fields lazily.\n *\n * Example:\n *\n * ```ts\n * const PersonType = new GraphQLObjectType({\n * name: 'Person',\n * fields: () => ({\n * name: { type: GraphQLString },\n * bestFriend: { type: PersonType },\n * })\n * });\n * ```\n */\nexport class GraphQLObjectType {\n constructor(config) {\n var _config$extensionASTN2;\n\n this.name = assertName(config.name);\n this.description = config.description;\n this.isTypeOf = config.isTypeOf;\n this.extensions = toObjMap(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes =\n (_config$extensionASTN2 = config.extensionASTNodes) !== null &&\n _config$extensionASTN2 !== void 0\n ? _config$extensionASTN2\n : [];\n\n this._fields = () => defineFieldMap(config);\n\n this._interfaces = () => defineInterfaces(config);\n\n config.isTypeOf == null ||\n typeof config.isTypeOf === 'function' ||\n devAssert(\n false,\n `${this.name} must provide \"isTypeOf\" as a function, ` +\n `but got: ${inspect(config.isTypeOf)}.`,\n );\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLObjectType';\n }\n\n getFields() {\n if (typeof this._fields === 'function') {\n this._fields = this._fields();\n }\n\n return this._fields;\n }\n\n getInterfaces() {\n if (typeof this._interfaces === 'function') {\n this._interfaces = this._interfaces();\n }\n\n return this._interfaces;\n }\n\n toConfig() {\n return {\n name: this.name,\n description: this.description,\n interfaces: this.getInterfaces(),\n fields: fieldsToFieldsConfig(this.getFields()),\n isTypeOf: this.isTypeOf,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes,\n };\n }\n\n toString() {\n return this.name;\n }\n\n toJSON() {\n return this.toString();\n }\n}\n\nfunction defineInterfaces(config) {\n var _config$interfaces;\n\n const interfaces = resolveReadonlyArrayThunk(\n (_config$interfaces = config.interfaces) !== null &&\n _config$interfaces !== void 0\n ? _config$interfaces\n : [],\n );\n Array.isArray(interfaces) ||\n devAssert(\n false,\n `${config.name} interfaces must be an Array or a function which returns an Array.`,\n );\n return interfaces;\n}\n\nfunction defineFieldMap(config) {\n const fieldMap = resolveObjMapThunk(config.fields);\n isPlainObj(fieldMap) ||\n devAssert(\n false,\n `${config.name} fields must be an object with field names as keys or a function which returns such an object.`,\n );\n return mapValue(fieldMap, (fieldConfig, fieldName) => {\n var _fieldConfig$args;\n\n isPlainObj(fieldConfig) ||\n devAssert(\n false,\n `${config.name}.${fieldName} field config must be an object.`,\n );\n fieldConfig.resolve == null ||\n typeof fieldConfig.resolve === 'function' ||\n devAssert(\n false,\n `${config.name}.${fieldName} field resolver must be a function if ` +\n `provided, but got: ${inspect(fieldConfig.resolve)}.`,\n );\n const argsConfig =\n (_fieldConfig$args = fieldConfig.args) !== null &&\n _fieldConfig$args !== void 0\n ? _fieldConfig$args\n : {};\n isPlainObj(argsConfig) ||\n devAssert(\n false,\n `${config.name}.${fieldName} args must be an object with argument names as keys.`,\n );\n return {\n name: assertName(fieldName),\n description: fieldConfig.description,\n type: fieldConfig.type,\n args: defineArguments(argsConfig),\n resolve: fieldConfig.resolve,\n subscribe: fieldConfig.subscribe,\n deprecationReason: fieldConfig.deprecationReason,\n extensions: toObjMap(fieldConfig.extensions),\n astNode: fieldConfig.astNode,\n };\n });\n}\n\nexport function defineArguments(config) {\n return Object.entries(config).map(([argName, argConfig]) => ({\n name: assertName(argName),\n description: argConfig.description,\n type: argConfig.type,\n defaultValue: argConfig.defaultValue,\n deprecationReason: argConfig.deprecationReason,\n extensions: toObjMap(argConfig.extensions),\n astNode: argConfig.astNode,\n }));\n}\n\nfunction isPlainObj(obj) {\n return isObjectLike(obj) && !Array.isArray(obj);\n}\n\nfunction fieldsToFieldsConfig(fields) {\n return mapValue(fields, (field) => ({\n description: field.description,\n type: field.type,\n args: argsToArgsConfig(field.args),\n resolve: field.resolve,\n subscribe: field.subscribe,\n deprecationReason: field.deprecationReason,\n extensions: field.extensions,\n astNode: field.astNode,\n }));\n}\n/**\n * @internal\n */\n\nexport function argsToArgsConfig(args) {\n return keyValMap(\n args,\n (arg) => arg.name,\n (arg) => ({\n description: arg.description,\n type: arg.type,\n defaultValue: arg.defaultValue,\n deprecationReason: arg.deprecationReason,\n extensions: arg.extensions,\n astNode: arg.astNode,\n }),\n );\n}\nexport function isRequiredArgument(arg) {\n return isNonNullType(arg.type) && arg.defaultValue === undefined;\n}\n\n/**\n * Interface Type Definition\n *\n * When a field can return one of a heterogeneous set of types, a Interface type\n * is used to describe what types are possible, what fields are in common across\n * all types, as well as a function to determine which type is actually used\n * when the field is resolved.\n *\n * Example:\n *\n * ```ts\n * const EntityType = new GraphQLInterfaceType({\n * name: 'Entity',\n * fields: {\n * name: { type: GraphQLString }\n * }\n * });\n * ```\n */\nexport class GraphQLInterfaceType {\n constructor(config) {\n var _config$extensionASTN3;\n\n this.name = assertName(config.name);\n this.description = config.description;\n this.resolveType = config.resolveType;\n this.extensions = toObjMap(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes =\n (_config$extensionASTN3 = config.extensionASTNodes) !== null &&\n _config$extensionASTN3 !== void 0\n ? _config$extensionASTN3\n : [];\n this._fields = defineFieldMap.bind(undefined, config);\n this._interfaces = defineInterfaces.bind(undefined, config);\n config.resolveType == null ||\n typeof config.resolveType === 'function' ||\n devAssert(\n false,\n `${this.name} must provide \"resolveType\" as a function, ` +\n `but got: ${inspect(config.resolveType)}.`,\n );\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLInterfaceType';\n }\n\n getFields() {\n if (typeof this._fields === 'function') {\n this._fields = this._fields();\n }\n\n return this._fields;\n }\n\n getInterfaces() {\n if (typeof this._interfaces === 'function') {\n this._interfaces = this._interfaces();\n }\n\n return this._interfaces;\n }\n\n toConfig() {\n return {\n name: this.name,\n description: this.description,\n interfaces: this.getInterfaces(),\n fields: fieldsToFieldsConfig(this.getFields()),\n resolveType: this.resolveType,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes,\n };\n }\n\n toString() {\n return this.name;\n }\n\n toJSON() {\n return this.toString();\n }\n}\n\n/**\n * Union Type Definition\n *\n * When a field can return one of a heterogeneous set of types, a Union type\n * is used to describe what types are possible as well as providing a function\n * to determine which type is actually used when the field is resolved.\n *\n * Example:\n *\n * ```ts\n * const PetType = new GraphQLUnionType({\n * name: 'Pet',\n * types: [ DogType, CatType ],\n * resolveType(value) {\n * if (value instanceof Dog) {\n * return DogType;\n * }\n * if (value instanceof Cat) {\n * return CatType;\n * }\n * }\n * });\n * ```\n */\nexport class GraphQLUnionType {\n constructor(config) {\n var _config$extensionASTN4;\n\n this.name = assertName(config.name);\n this.description = config.description;\n this.resolveType = config.resolveType;\n this.extensions = toObjMap(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes =\n (_config$extensionASTN4 = config.extensionASTNodes) !== null &&\n _config$extensionASTN4 !== void 0\n ? _config$extensionASTN4\n : [];\n this._types = defineTypes.bind(undefined, config);\n config.resolveType == null ||\n typeof config.resolveType === 'function' ||\n devAssert(\n false,\n `${this.name} must provide \"resolveType\" as a function, ` +\n `but got: ${inspect(config.resolveType)}.`,\n );\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLUnionType';\n }\n\n getTypes() {\n if (typeof this._types === 'function') {\n this._types = this._types();\n }\n\n return this._types;\n }\n\n toConfig() {\n return {\n name: this.name,\n description: this.description,\n types: this.getTypes(),\n resolveType: this.resolveType,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes,\n };\n }\n\n toString() {\n return this.name;\n }\n\n toJSON() {\n return this.toString();\n }\n}\n\nfunction defineTypes(config) {\n const types = resolveReadonlyArrayThunk(config.types);\n Array.isArray(types) ||\n devAssert(\n false,\n `Must provide Array of types or a function which returns such an array for Union ${config.name}.`,\n );\n return types;\n}\n\n/**\n * Enum Type Definition\n *\n * Some leaf values of requests and input values are Enums. GraphQL serializes\n * Enum values as strings, however internally Enums can be represented by any\n * kind of type, often integers.\n *\n * Example:\n *\n * ```ts\n * const RGBType = new GraphQLEnumType({\n * name: 'RGB',\n * values: {\n * RED: { value: 0 },\n * GREEN: { value: 1 },\n * BLUE: { value: 2 }\n * }\n * });\n * ```\n *\n * Note: If a value is not provided in a definition, the name of the enum value\n * will be used as its internal value.\n */\nexport class GraphQLEnumType {\n /* */\n constructor(config) {\n var _config$extensionASTN5;\n\n this.name = assertName(config.name);\n this.description = config.description;\n this.extensions = toObjMap(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes =\n (_config$extensionASTN5 = config.extensionASTNodes) !== null &&\n _config$extensionASTN5 !== void 0\n ? _config$extensionASTN5\n : [];\n this._values = defineEnumValues(this.name, config.values);\n this._valueLookup = new Map(\n this._values.map((enumValue) => [enumValue.value, enumValue]),\n );\n this._nameLookup = keyMap(this._values, (value) => value.name);\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLEnumType';\n }\n\n getValues() {\n return this._values;\n }\n\n getValue(name) {\n return this._nameLookup[name];\n }\n\n serialize(outputValue) {\n const enumValue = this._valueLookup.get(outputValue);\n\n if (enumValue === undefined) {\n throw new GraphQLError(\n `Enum \"${this.name}\" cannot represent value: ${inspect(outputValue)}`,\n );\n }\n\n return enumValue.name;\n }\n\n parseValue(inputValue) /* T */\n {\n if (typeof inputValue !== 'string') {\n const valueStr = inspect(inputValue);\n throw new GraphQLError(\n `Enum \"${this.name}\" cannot represent non-string value: ${valueStr}.` +\n didYouMeanEnumValue(this, valueStr),\n );\n }\n\n const enumValue = this.getValue(inputValue);\n\n if (enumValue == null) {\n throw new GraphQLError(\n `Value \"${inputValue}\" does not exist in \"${this.name}\" enum.` +\n didYouMeanEnumValue(this, inputValue),\n );\n }\n\n return enumValue.value;\n }\n\n parseLiteral(valueNode, _variables) /* T */\n {\n // Note: variables will be resolved to a value before calling this function.\n if (valueNode.kind !== Kind.ENUM) {\n const valueStr = print(valueNode);\n throw new GraphQLError(\n `Enum \"${this.name}\" cannot represent non-enum value: ${valueStr}.` +\n didYouMeanEnumValue(this, valueStr),\n {\n nodes: valueNode,\n },\n );\n }\n\n const enumValue = this.getValue(valueNode.value);\n\n if (enumValue == null) {\n const valueStr = print(valueNode);\n throw new GraphQLError(\n `Value \"${valueStr}\" does not exist in \"${this.name}\" enum.` +\n didYouMeanEnumValue(this, valueStr),\n {\n nodes: valueNode,\n },\n );\n }\n\n return enumValue.value;\n }\n\n toConfig() {\n const values = keyValMap(\n this.getValues(),\n (value) => value.name,\n (value) => ({\n description: value.description,\n value: value.value,\n deprecationReason: value.deprecationReason,\n extensions: value.extensions,\n astNode: value.astNode,\n }),\n );\n return {\n name: this.name,\n description: this.description,\n values,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes,\n };\n }\n\n toString() {\n return this.name;\n }\n\n toJSON() {\n return this.toString();\n }\n}\n\nfunction didYouMeanEnumValue(enumType, unknownValueStr) {\n const allNames = enumType.getValues().map((value) => value.name);\n const suggestedValues = suggestionList(unknownValueStr, allNames);\n return didYouMean('the enum value', suggestedValues);\n}\n\nfunction defineEnumValues(typeName, valueMap) {\n isPlainObj(valueMap) ||\n devAssert(\n false,\n `${typeName} values must be an object with value names as keys.`,\n );\n return Object.entries(valueMap).map(([valueName, valueConfig]) => {\n isPlainObj(valueConfig) ||\n devAssert(\n false,\n `${typeName}.${valueName} must refer to an object with a \"value\" key ` +\n `representing an internal value but got: ${inspect(valueConfig)}.`,\n );\n return {\n name: assertEnumValueName(valueName),\n description: valueConfig.description,\n value: valueConfig.value !== undefined ? valueConfig.value : valueName,\n deprecationReason: valueConfig.deprecationReason,\n extensions: toObjMap(valueConfig.extensions),\n astNode: valueConfig.astNode,\n };\n });\n}\n\n/**\n * Input Object Type Definition\n *\n * An input object defines a structured collection of fields which may be\n * supplied to a field argument.\n *\n * Using `NonNull` will ensure that a value must be provided by the query\n *\n * Example:\n *\n * ```ts\n * const GeoPoint = new GraphQLInputObjectType({\n * name: 'GeoPoint',\n * fields: {\n * lat: { type: new GraphQLNonNull(GraphQLFloat) },\n * lon: { type: new GraphQLNonNull(GraphQLFloat) },\n * alt: { type: GraphQLFloat, defaultValue: 0 },\n * }\n * });\n * ```\n */\nexport class GraphQLInputObjectType {\n constructor(config) {\n var _config$extensionASTN6;\n\n this.name = assertName(config.name);\n this.description = config.description;\n this.extensions = toObjMap(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes =\n (_config$extensionASTN6 = config.extensionASTNodes) !== null &&\n _config$extensionASTN6 !== void 0\n ? _config$extensionASTN6\n : [];\n this._fields = defineInputFieldMap.bind(undefined, config);\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLInputObjectType';\n }\n\n getFields() {\n if (typeof this._fields === 'function') {\n this._fields = this._fields();\n }\n\n return this._fields;\n }\n\n toConfig() {\n const fields = mapValue(this.getFields(), (field) => ({\n description: field.description,\n type: field.type,\n defaultValue: field.defaultValue,\n deprecationReason: field.deprecationReason,\n extensions: field.extensions,\n astNode: field.astNode,\n }));\n return {\n name: this.name,\n description: this.description,\n fields,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes,\n };\n }\n\n toString() {\n return this.name;\n }\n\n toJSON() {\n return this.toString();\n }\n}\n\nfunction defineInputFieldMap(config) {\n const fieldMap = resolveObjMapThunk(config.fields);\n isPlainObj(fieldMap) ||\n devAssert(\n false,\n `${config.name} fields must be an object with field names as keys or a function which returns such an object.`,\n );\n return mapValue(fieldMap, (fieldConfig, fieldName) => {\n !('resolve' in fieldConfig) ||\n devAssert(\n false,\n `${config.name}.${fieldName} field has a resolve property, but Input Types cannot define resolvers.`,\n );\n return {\n name: assertName(fieldName),\n description: fieldConfig.description,\n type: fieldConfig.type,\n defaultValue: fieldConfig.defaultValue,\n deprecationReason: fieldConfig.deprecationReason,\n extensions: toObjMap(fieldConfig.extensions),\n astNode: fieldConfig.astNode,\n };\n });\n}\n\nexport function isRequiredInputField(field) {\n return isNonNullType(field.type) && field.defaultValue === undefined;\n}\n", "import {\n isAbstractType,\n isInterfaceType,\n isListType,\n isNonNullType,\n isObjectType,\n} from '../type/definition.mjs';\n\n/**\n * Provided two types, return true if the types are equal (invariant).\n */\nexport function isEqualType(typeA, typeB) {\n // Equivalent types are equal.\n if (typeA === typeB) {\n return true;\n } // If either type is non-null, the other must also be non-null.\n\n if (isNonNullType(typeA) && isNonNullType(typeB)) {\n return isEqualType(typeA.ofType, typeB.ofType);\n } // If either type is a list, the other must also be a list.\n\n if (isListType(typeA) && isListType(typeB)) {\n return isEqualType(typeA.ofType, typeB.ofType);\n } // Otherwise the types are not equal.\n\n return false;\n}\n/**\n * Provided a type and a super type, return true if the first type is either\n * equal or a subset of the second super type (covariant).\n */\n\nexport function isTypeSubTypeOf(schema, maybeSubType, superType) {\n // Equivalent type is a valid subtype\n if (maybeSubType === superType) {\n return true;\n } // If superType is non-null, maybeSubType must also be non-null.\n\n if (isNonNullType(superType)) {\n if (isNonNullType(maybeSubType)) {\n return isTypeSubTypeOf(schema, maybeSubType.ofType, superType.ofType);\n }\n\n return false;\n }\n\n if (isNonNullType(maybeSubType)) {\n // If superType is nullable, maybeSubType may be non-null or nullable.\n return isTypeSubTypeOf(schema, maybeSubType.ofType, superType);\n } // If superType type is a list, maybeSubType type must also be a list.\n\n if (isListType(superType)) {\n if (isListType(maybeSubType)) {\n return isTypeSubTypeOf(schema, maybeSubType.ofType, superType.ofType);\n }\n\n return false;\n }\n\n if (isListType(maybeSubType)) {\n // If superType is not a list, maybeSubType must also be not a list.\n return false;\n } // If superType type is an abstract type, check if it is super type of maybeSubType.\n // Otherwise, the child type is not a valid subtype of the parent type.\n\n return (\n isAbstractType(superType) &&\n (isInterfaceType(maybeSubType) || isObjectType(maybeSubType)) &&\n schema.isSubType(superType, maybeSubType)\n );\n}\n/**\n * Provided two composite types, determine if they \"overlap\". Two composite\n * types overlap when the Sets of possible concrete types for each intersect.\n *\n * This is often used to determine if a fragment of a given type could possibly\n * be visited in a context of another type.\n *\n * This function is commutative.\n */\n\nexport function doTypesOverlap(schema, typeA, typeB) {\n // Equivalent types overlap\n if (typeA === typeB) {\n return true;\n }\n\n if (isAbstractType(typeA)) {\n if (isAbstractType(typeB)) {\n // If both types are abstract, then determine if there is any intersection\n // between possible concrete types of each.\n return schema\n .getPossibleTypes(typeA)\n .some((type) => schema.isSubType(typeB, type));\n } // Determine if the latter type is a possible concrete type of the former.\n\n return schema.isSubType(typeA, typeB);\n }\n\n if (isAbstractType(typeB)) {\n // Determine if the former type is a possible concrete type of the latter.\n return schema.isSubType(typeB, typeA);\n } // Otherwise the types do not overlap.\n\n return false;\n}\n", "import { inspect } from '../jsutils/inspect.mjs';\nimport { isObjectLike } from '../jsutils/isObjectLike.mjs';\nimport { GraphQLError } from '../error/GraphQLError.mjs';\nimport { Kind } from '../language/kinds.mjs';\nimport { print } from '../language/printer.mjs';\nimport { GraphQLScalarType } from './definition.mjs';\n/**\n * Maximum possible Int value as per GraphQL Spec (32-bit signed integer).\n * n.b. This differs from JavaScript's numbers that are IEEE 754 doubles safe up-to 2^53 - 1\n * */\n\nexport const GRAPHQL_MAX_INT = 2147483647;\n/**\n * Minimum possible Int value as per GraphQL Spec (32-bit signed integer).\n * n.b. This differs from JavaScript's numbers that are IEEE 754 doubles safe starting at -(2^53 - 1)\n * */\n\nexport const GRAPHQL_MIN_INT = -2147483648;\nexport const GraphQLInt = new GraphQLScalarType({\n name: 'Int',\n description:\n 'The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.',\n\n serialize(outputValue) {\n const coercedValue = serializeObject(outputValue);\n\n if (typeof coercedValue === 'boolean') {\n return coercedValue ? 1 : 0;\n }\n\n let num = coercedValue;\n\n if (typeof coercedValue === 'string' && coercedValue !== '') {\n num = Number(coercedValue);\n }\n\n if (typeof num !== 'number' || !Number.isInteger(num)) {\n throw new GraphQLError(\n `Int cannot represent non-integer value: ${inspect(coercedValue)}`,\n );\n }\n\n if (num > GRAPHQL_MAX_INT || num < GRAPHQL_MIN_INT) {\n throw new GraphQLError(\n 'Int cannot represent non 32-bit signed integer value: ' +\n inspect(coercedValue),\n );\n }\n\n return num;\n },\n\n parseValue(inputValue) {\n if (typeof inputValue !== 'number' || !Number.isInteger(inputValue)) {\n throw new GraphQLError(\n `Int cannot represent non-integer value: ${inspect(inputValue)}`,\n );\n }\n\n if (inputValue > GRAPHQL_MAX_INT || inputValue < GRAPHQL_MIN_INT) {\n throw new GraphQLError(\n `Int cannot represent non 32-bit signed integer value: ${inputValue}`,\n );\n }\n\n return inputValue;\n },\n\n parseLiteral(valueNode) {\n if (valueNode.kind !== Kind.INT) {\n throw new GraphQLError(\n `Int cannot represent non-integer value: ${print(valueNode)}`,\n {\n nodes: valueNode,\n },\n );\n }\n\n const num = parseInt(valueNode.value, 10);\n\n if (num > GRAPHQL_MAX_INT || num < GRAPHQL_MIN_INT) {\n throw new GraphQLError(\n `Int cannot represent non 32-bit signed integer value: ${valueNode.value}`,\n {\n nodes: valueNode,\n },\n );\n }\n\n return num;\n },\n});\nexport const GraphQLFloat = new GraphQLScalarType({\n name: 'Float',\n description:\n 'The `Float` scalar type represents signed double-precision fractional values as specified by [IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point).',\n\n serialize(outputValue) {\n const coercedValue = serializeObject(outputValue);\n\n if (typeof coercedValue === 'boolean') {\n return coercedValue ? 1 : 0;\n }\n\n let num = coercedValue;\n\n if (typeof coercedValue === 'string' && coercedValue !== '') {\n num = Number(coercedValue);\n }\n\n if (typeof num !== 'number' || !Number.isFinite(num)) {\n throw new GraphQLError(\n `Float cannot represent non numeric value: ${inspect(coercedValue)}`,\n );\n }\n\n return num;\n },\n\n parseValue(inputValue) {\n if (typeof inputValue !== 'number' || !Number.isFinite(inputValue)) {\n throw new GraphQLError(\n `Float cannot represent non numeric value: ${inspect(inputValue)}`,\n );\n }\n\n return inputValue;\n },\n\n parseLiteral(valueNode) {\n if (valueNode.kind !== Kind.FLOAT && valueNode.kind !== Kind.INT) {\n throw new GraphQLError(\n `Float cannot represent non numeric value: ${print(valueNode)}`,\n valueNode,\n );\n }\n\n return parseFloat(valueNode.value);\n },\n});\nexport const GraphQLString = new GraphQLScalarType({\n name: 'String',\n description:\n 'The `String` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.',\n\n serialize(outputValue) {\n const coercedValue = serializeObject(outputValue); // Serialize string, boolean and number values to a string, but do not\n // attempt to coerce object, function, symbol, or other types as strings.\n\n if (typeof coercedValue === 'string') {\n return coercedValue;\n }\n\n if (typeof coercedValue === 'boolean') {\n return coercedValue ? 'true' : 'false';\n }\n\n if (typeof coercedValue === 'number' && Number.isFinite(coercedValue)) {\n return coercedValue.toString();\n }\n\n throw new GraphQLError(\n `String cannot represent value: ${inspect(outputValue)}`,\n );\n },\n\n parseValue(inputValue) {\n if (typeof inputValue !== 'string') {\n throw new GraphQLError(\n `String cannot represent a non string value: ${inspect(inputValue)}`,\n );\n }\n\n return inputValue;\n },\n\n parseLiteral(valueNode) {\n if (valueNode.kind !== Kind.STRING) {\n throw new GraphQLError(\n `String cannot represent a non string value: ${print(valueNode)}`,\n {\n nodes: valueNode,\n },\n );\n }\n\n return valueNode.value;\n },\n});\nexport const GraphQLBoolean = new GraphQLScalarType({\n name: 'Boolean',\n description: 'The `Boolean` scalar type represents `true` or `false`.',\n\n serialize(outputValue) {\n const coercedValue = serializeObject(outputValue);\n\n if (typeof coercedValue === 'boolean') {\n return coercedValue;\n }\n\n if (Number.isFinite(coercedValue)) {\n return coercedValue !== 0;\n }\n\n throw new GraphQLError(\n `Boolean cannot represent a non boolean value: ${inspect(coercedValue)}`,\n );\n },\n\n parseValue(inputValue) {\n if (typeof inputValue !== 'boolean') {\n throw new GraphQLError(\n `Boolean cannot represent a non boolean value: ${inspect(inputValue)}`,\n );\n }\n\n return inputValue;\n },\n\n parseLiteral(valueNode) {\n if (valueNode.kind !== Kind.BOOLEAN) {\n throw new GraphQLError(\n `Boolean cannot represent a non boolean value: ${print(valueNode)}`,\n {\n nodes: valueNode,\n },\n );\n }\n\n return valueNode.value;\n },\n});\nexport const GraphQLID = new GraphQLScalarType({\n name: 'ID',\n description:\n 'The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `\"4\"`) or integer (such as `4`) input value will be accepted as an ID.',\n\n serialize(outputValue) {\n const coercedValue = serializeObject(outputValue);\n\n if (typeof coercedValue === 'string') {\n return coercedValue;\n }\n\n if (Number.isInteger(coercedValue)) {\n return String(coercedValue);\n }\n\n throw new GraphQLError(\n `ID cannot represent value: ${inspect(outputValue)}`,\n );\n },\n\n parseValue(inputValue) {\n if (typeof inputValue === 'string') {\n return inputValue;\n }\n\n if (typeof inputValue === 'number' && Number.isInteger(inputValue)) {\n return inputValue.toString();\n }\n\n throw new GraphQLError(`ID cannot represent value: ${inspect(inputValue)}`);\n },\n\n parseLiteral(valueNode) {\n if (valueNode.kind !== Kind.STRING && valueNode.kind !== Kind.INT) {\n throw new GraphQLError(\n 'ID cannot represent a non-string and non-integer value: ' +\n print(valueNode),\n {\n nodes: valueNode,\n },\n );\n }\n\n return valueNode.value;\n },\n});\nexport const specifiedScalarTypes = Object.freeze([\n GraphQLString,\n GraphQLInt,\n GraphQLFloat,\n GraphQLBoolean,\n GraphQLID,\n]);\nexport function isSpecifiedScalarType(type) {\n return specifiedScalarTypes.some(({ name }) => type.name === name);\n} // Support serializing objects with custom valueOf() or toJSON() functions -\n// a common way to represent a complex value which can be represented as\n// a string (ex: MongoDB id objects).\n\nfunction serializeObject(outputValue) {\n if (isObjectLike(outputValue)) {\n if (typeof outputValue.valueOf === 'function') {\n const valueOfResult = outputValue.valueOf();\n\n if (!isObjectLike(valueOfResult)) {\n return valueOfResult;\n }\n }\n\n if (typeof outputValue.toJSON === 'function') {\n return outputValue.toJSON();\n }\n }\n\n return outputValue;\n}\n", "import { devAssert } from '../jsutils/devAssert.mjs';\nimport { inspect } from '../jsutils/inspect.mjs';\nimport { instanceOf } from '../jsutils/instanceOf.mjs';\nimport { isObjectLike } from '../jsutils/isObjectLike.mjs';\nimport { toObjMap } from '../jsutils/toObjMap.mjs';\nimport { DirectiveLocation } from '../language/directiveLocation.mjs';\nimport { assertName } from './assertName.mjs';\nimport {\n argsToArgsConfig,\n defineArguments,\n GraphQLNonNull,\n} from './definition.mjs';\nimport { GraphQLBoolean, GraphQLString } from './scalars.mjs';\n/**\n * Test if the given value is a GraphQL directive.\n */\n\nexport function isDirective(directive) {\n return instanceOf(directive, GraphQLDirective);\n}\nexport function assertDirective(directive) {\n if (!isDirective(directive)) {\n throw new Error(\n `Expected ${inspect(directive)} to be a GraphQL directive.`,\n );\n }\n\n return directive;\n}\n/**\n * Custom extensions\n *\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n */\n\n/**\n * Directives are used by the GraphQL runtime as a way of modifying execution\n * behavior. Type system creators will usually not create these directly.\n */\nexport class GraphQLDirective {\n constructor(config) {\n var _config$isRepeatable, _config$args;\n\n this.name = assertName(config.name);\n this.description = config.description;\n this.locations = config.locations;\n this.isRepeatable =\n (_config$isRepeatable = config.isRepeatable) !== null &&\n _config$isRepeatable !== void 0\n ? _config$isRepeatable\n : false;\n this.extensions = toObjMap(config.extensions);\n this.astNode = config.astNode;\n Array.isArray(config.locations) ||\n devAssert(false, `@${config.name} locations must be an Array.`);\n const args =\n (_config$args = config.args) !== null && _config$args !== void 0\n ? _config$args\n : {};\n (isObjectLike(args) && !Array.isArray(args)) ||\n devAssert(\n false,\n `@${config.name} args must be an object with argument names as keys.`,\n );\n this.args = defineArguments(args);\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLDirective';\n }\n\n toConfig() {\n return {\n name: this.name,\n description: this.description,\n locations: this.locations,\n args: argsToArgsConfig(this.args),\n isRepeatable: this.isRepeatable,\n extensions: this.extensions,\n astNode: this.astNode,\n };\n }\n\n toString() {\n return '@' + this.name;\n }\n\n toJSON() {\n return this.toString();\n }\n}\n\n/**\n * Used to conditionally include fields or fragments.\n */\nexport const GraphQLIncludeDirective = new GraphQLDirective({\n name: 'include',\n description:\n 'Directs the executor to include this field or fragment only when the `if` argument is true.',\n locations: [\n DirectiveLocation.FIELD,\n DirectiveLocation.FRAGMENT_SPREAD,\n DirectiveLocation.INLINE_FRAGMENT,\n ],\n args: {\n if: {\n type: new GraphQLNonNull(GraphQLBoolean),\n description: 'Included when true.',\n },\n },\n});\n/**\n * Used to conditionally skip (exclude) fields or fragments.\n */\n\nexport const GraphQLSkipDirective = new GraphQLDirective({\n name: 'skip',\n description:\n 'Directs the executor to skip this field or fragment when the `if` argument is true.',\n locations: [\n DirectiveLocation.FIELD,\n DirectiveLocation.FRAGMENT_SPREAD,\n DirectiveLocation.INLINE_FRAGMENT,\n ],\n args: {\n if: {\n type: new GraphQLNonNull(GraphQLBoolean),\n description: 'Skipped when true.',\n },\n },\n});\n/**\n * Constant string used for default reason for a deprecation.\n */\n\nexport const DEFAULT_DEPRECATION_REASON = 'No longer supported';\n/**\n * Used to declare element of a GraphQL schema as deprecated.\n */\n\nexport const GraphQLDeprecatedDirective = new GraphQLDirective({\n name: 'deprecated',\n description: 'Marks an element of a GraphQL schema as no longer supported.',\n locations: [\n DirectiveLocation.FIELD_DEFINITION,\n DirectiveLocation.ARGUMENT_DEFINITION,\n DirectiveLocation.INPUT_FIELD_DEFINITION,\n DirectiveLocation.ENUM_VALUE,\n ],\n args: {\n reason: {\n type: GraphQLString,\n description:\n 'Explains why this element was deprecated, usually also including a suggestion for how to access supported similar data. Formatted using the Markdown syntax, as specified by [CommonMark](https://commonmark.org/).',\n defaultValue: DEFAULT_DEPRECATION_REASON,\n },\n },\n});\n/**\n * Used to provide a URL for specifying the behavior of custom scalar definitions.\n */\n\nexport const GraphQLSpecifiedByDirective = new GraphQLDirective({\n name: 'specifiedBy',\n description: 'Exposes a URL that specifies the behavior of this scalar.',\n locations: [DirectiveLocation.SCALAR],\n args: {\n url: {\n type: new GraphQLNonNull(GraphQLString),\n description: 'The URL that specifies the behavior of this scalar.',\n },\n },\n});\n/**\n * The full list of specified directives.\n */\n\nexport const specifiedDirectives = Object.freeze([\n GraphQLIncludeDirective,\n GraphQLSkipDirective,\n GraphQLDeprecatedDirective,\n GraphQLSpecifiedByDirective,\n]);\nexport function isSpecifiedDirective(directive) {\n return specifiedDirectives.some(({ name }) => name === directive.name);\n}\n", "/**\n * Returns true if the provided object is an Object (i.e. not a string literal)\n * and implements the Iterator protocol.\n *\n * This may be used in place of [Array.isArray()][isArray] to determine if\n * an object should be iterated-over e.g. Array, Map, Set, Int8Array,\n * TypedArray, etc. but excludes string literals.\n *\n * @example\n * ```ts\n * isIterableObject([ 1, 2, 3 ]) // true\n * isIterableObject(new Map()) // true\n * isIterableObject('ABC') // false\n * isIterableObject({ key: 'value' }) // false\n * isIterableObject({ length: 1, 0: 'Alpha' }) // false\n * ```\n */\nexport function isIterableObject(maybeIterable) {\n return (\n typeof maybeIterable === 'object' &&\n typeof (maybeIterable === null || maybeIterable === void 0\n ? void 0\n : maybeIterable[Symbol.iterator]) === 'function'\n );\n}\n", "import { inspect } from '../jsutils/inspect.mjs';\nimport { invariant } from '../jsutils/invariant.mjs';\nimport { isIterableObject } from '../jsutils/isIterableObject.mjs';\nimport { isObjectLike } from '../jsutils/isObjectLike.mjs';\nimport { Kind } from '../language/kinds.mjs';\nimport {\n isEnumType,\n isInputObjectType,\n isLeafType,\n isListType,\n isNonNullType,\n} from '../type/definition.mjs';\nimport { GraphQLID } from '../type/scalars.mjs';\n/**\n * Produces a GraphQL Value AST given a JavaScript object.\n * Function will match JavaScript/JSON values to GraphQL AST schema format\n * by using suggested GraphQLInputType. For example:\n *\n * astFromValue(\"value\", GraphQLString)\n *\n * A GraphQL type must be provided, which will be used to interpret different\n * JavaScript values.\n *\n * | JSON Value | GraphQL Value |\n * | ------------- | -------------------- |\n * | Object | Input Object |\n * | Array | List |\n * | Boolean | Boolean |\n * | String | String / Enum Value |\n * | Number | Int / Float |\n * | Unknown | Enum Value |\n * | null | NullValue |\n *\n */\n\nexport function astFromValue(value, type) {\n if (isNonNullType(type)) {\n const astValue = astFromValue(value, type.ofType);\n\n if (\n (astValue === null || astValue === void 0 ? void 0 : astValue.kind) ===\n Kind.NULL\n ) {\n return null;\n }\n\n return astValue;\n } // only explicit null, not undefined, NaN\n\n if (value === null) {\n return {\n kind: Kind.NULL,\n };\n } // undefined\n\n if (value === undefined) {\n return null;\n } // Convert JavaScript array to GraphQL list. If the GraphQLType is a list, but\n // the value is not an array, convert the value using the list's item type.\n\n if (isListType(type)) {\n const itemType = type.ofType;\n\n if (isIterableObject(value)) {\n const valuesNodes = [];\n\n for (const item of value) {\n const itemNode = astFromValue(item, itemType);\n\n if (itemNode != null) {\n valuesNodes.push(itemNode);\n }\n }\n\n return {\n kind: Kind.LIST,\n values: valuesNodes,\n };\n }\n\n return astFromValue(value, itemType);\n } // Populate the fields of the input object by creating ASTs from each value\n // in the JavaScript object according to the fields in the input type.\n\n if (isInputObjectType(type)) {\n if (!isObjectLike(value)) {\n return null;\n }\n\n const fieldNodes = [];\n\n for (const field of Object.values(type.getFields())) {\n const fieldValue = astFromValue(value[field.name], field.type);\n\n if (fieldValue) {\n fieldNodes.push({\n kind: Kind.OBJECT_FIELD,\n name: {\n kind: Kind.NAME,\n value: field.name,\n },\n value: fieldValue,\n });\n }\n }\n\n return {\n kind: Kind.OBJECT,\n fields: fieldNodes,\n };\n }\n\n if (isLeafType(type)) {\n // Since value is an internally represented value, it must be serialized\n // to an externally represented value before converting into an AST.\n const serialized = type.serialize(value);\n\n if (serialized == null) {\n return null;\n } // Others serialize based on their corresponding JavaScript scalar types.\n\n if (typeof serialized === 'boolean') {\n return {\n kind: Kind.BOOLEAN,\n value: serialized,\n };\n } // JavaScript numbers can be Int or Float values.\n\n if (typeof serialized === 'number' && Number.isFinite(serialized)) {\n const stringNum = String(serialized);\n return integerStringRegExp.test(stringNum)\n ? {\n kind: Kind.INT,\n value: stringNum,\n }\n : {\n kind: Kind.FLOAT,\n value: stringNum,\n };\n }\n\n if (typeof serialized === 'string') {\n // Enum types use Enum literals.\n if (isEnumType(type)) {\n return {\n kind: Kind.ENUM,\n value: serialized,\n };\n } // ID types can use Int literals.\n\n if (type === GraphQLID && integerStringRegExp.test(serialized)) {\n return {\n kind: Kind.INT,\n value: serialized,\n };\n }\n\n return {\n kind: Kind.STRING,\n value: serialized,\n };\n }\n\n throw new TypeError(`Cannot convert value to AST: ${inspect(serialized)}.`);\n }\n /* c8 ignore next 3 */\n // Not reachable, all possible types have been considered.\n\n false || invariant(false, 'Unexpected input type: ' + inspect(type));\n}\n/**\n * IntValue:\n * - NegativeSign? 0\n * - NegativeSign? NonZeroDigit ( Digit+ )?\n */\n\nconst integerStringRegExp = /^-?(?:0|[1-9][0-9]*)$/;\n", "import { inspect } from '../jsutils/inspect.mjs';\nimport { invariant } from '../jsutils/invariant.mjs';\nimport { DirectiveLocation } from '../language/directiveLocation.mjs';\nimport { print } from '../language/printer.mjs';\nimport { astFromValue } from '../utilities/astFromValue.mjs';\nimport {\n GraphQLEnumType,\n GraphQLList,\n GraphQLNonNull,\n GraphQLObjectType,\n isAbstractType,\n isEnumType,\n isInputObjectType,\n isInterfaceType,\n isListType,\n isNonNullType,\n isObjectType,\n isScalarType,\n isUnionType,\n} from './definition.mjs';\nimport { GraphQLBoolean, GraphQLString } from './scalars.mjs';\nexport const __Schema = new GraphQLObjectType({\n name: '__Schema',\n description:\n 'A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, as well as the entry points for query, mutation, and subscription operations.',\n fields: () => ({\n description: {\n type: GraphQLString,\n resolve: (schema) => schema.description,\n },\n types: {\n description: 'A list of all types supported by this server.',\n type: new GraphQLNonNull(new GraphQLList(new GraphQLNonNull(__Type))),\n\n resolve(schema) {\n return Object.values(schema.getTypeMap());\n },\n },\n queryType: {\n description: 'The type that query operations will be rooted at.',\n type: new GraphQLNonNull(__Type),\n resolve: (schema) => schema.getQueryType(),\n },\n mutationType: {\n description:\n 'If this server supports mutation, the type that mutation operations will be rooted at.',\n type: __Type,\n resolve: (schema) => schema.getMutationType(),\n },\n subscriptionType: {\n description:\n 'If this server support subscription, the type that subscription operations will be rooted at.',\n type: __Type,\n resolve: (schema) => schema.getSubscriptionType(),\n },\n directives: {\n description: 'A list of all directives supported by this server.',\n type: new GraphQLNonNull(\n new GraphQLList(new GraphQLNonNull(__Directive)),\n ),\n resolve: (schema) => schema.getDirectives(),\n },\n }),\n});\nexport const __Directive = new GraphQLObjectType({\n name: '__Directive',\n description:\n \"A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document.\\n\\nIn some cases, you need to provide options to alter GraphQL's execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to the executor.\",\n fields: () => ({\n name: {\n type: new GraphQLNonNull(GraphQLString),\n resolve: (directive) => directive.name,\n },\n description: {\n type: GraphQLString,\n resolve: (directive) => directive.description,\n },\n isRepeatable: {\n type: new GraphQLNonNull(GraphQLBoolean),\n resolve: (directive) => directive.isRepeatable,\n },\n locations: {\n type: new GraphQLNonNull(\n new GraphQLList(new GraphQLNonNull(__DirectiveLocation)),\n ),\n resolve: (directive) => directive.locations,\n },\n args: {\n type: new GraphQLNonNull(\n new GraphQLList(new GraphQLNonNull(__InputValue)),\n ),\n args: {\n includeDeprecated: {\n type: GraphQLBoolean,\n defaultValue: false,\n },\n },\n\n resolve(field, { includeDeprecated }) {\n return includeDeprecated\n ? field.args\n : field.args.filter((arg) => arg.deprecationReason == null);\n },\n },\n }),\n});\nexport const __DirectiveLocation = new GraphQLEnumType({\n name: '__DirectiveLocation',\n description:\n 'A Directive can be adjacent to many parts of the GraphQL language, a __DirectiveLocation describes one such possible adjacencies.',\n values: {\n QUERY: {\n value: DirectiveLocation.QUERY,\n description: 'Location adjacent to a query operation.',\n },\n MUTATION: {\n value: DirectiveLocation.MUTATION,\n description: 'Location adjacent to a mutation operation.',\n },\n SUBSCRIPTION: {\n value: DirectiveLocation.SUBSCRIPTION,\n description: 'Location adjacent to a subscription operation.',\n },\n FIELD: {\n value: DirectiveLocation.FIELD,\n description: 'Location adjacent to a field.',\n },\n FRAGMENT_DEFINITION: {\n value: DirectiveLocation.FRAGMENT_DEFINITION,\n description: 'Location adjacent to a fragment definition.',\n },\n FRAGMENT_SPREAD: {\n value: DirectiveLocation.FRAGMENT_SPREAD,\n description: 'Location adjacent to a fragment spread.',\n },\n INLINE_FRAGMENT: {\n value: DirectiveLocation.INLINE_FRAGMENT,\n description: 'Location adjacent to an inline fragment.',\n },\n VARIABLE_DEFINITION: {\n value: DirectiveLocation.VARIABLE_DEFINITION,\n description: 'Location adjacent to a variable definition.',\n },\n SCHEMA: {\n value: DirectiveLocation.SCHEMA,\n description: 'Location adjacent to a schema definition.',\n },\n SCALAR: {\n value: DirectiveLocation.SCALAR,\n description: 'Location adjacent to a scalar definition.',\n },\n OBJECT: {\n value: DirectiveLocation.OBJECT,\n description: 'Location adjacent to an object type definition.',\n },\n FIELD_DEFINITION: {\n value: DirectiveLocation.FIELD_DEFINITION,\n description: 'Location adjacent to a field definition.',\n },\n ARGUMENT_DEFINITION: {\n value: DirectiveLocation.ARGUMENT_DEFINITION,\n description: 'Location adjacent to an argument definition.',\n },\n INTERFACE: {\n value: DirectiveLocation.INTERFACE,\n description: 'Location adjacent to an interface definition.',\n },\n UNION: {\n value: DirectiveLocation.UNION,\n description: 'Location adjacent to a union definition.',\n },\n ENUM: {\n value: DirectiveLocation.ENUM,\n description: 'Location adjacent to an enum definition.',\n },\n ENUM_VALUE: {\n value: DirectiveLocation.ENUM_VALUE,\n description: 'Location adjacent to an enum value definition.',\n },\n INPUT_OBJECT: {\n value: DirectiveLocation.INPUT_OBJECT,\n description: 'Location adjacent to an input object type definition.',\n },\n INPUT_FIELD_DEFINITION: {\n value: DirectiveLocation.INPUT_FIELD_DEFINITION,\n description: 'Location adjacent to an input object field definition.',\n },\n },\n});\nexport const __Type = new GraphQLObjectType({\n name: '__Type',\n description:\n 'The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.\\n\\nDepending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name, description and optional `specifiedByURL`, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.',\n fields: () => ({\n kind: {\n type: new GraphQLNonNull(__TypeKind),\n\n resolve(type) {\n if (isScalarType(type)) {\n return TypeKind.SCALAR;\n }\n\n if (isObjectType(type)) {\n return TypeKind.OBJECT;\n }\n\n if (isInterfaceType(type)) {\n return TypeKind.INTERFACE;\n }\n\n if (isUnionType(type)) {\n return TypeKind.UNION;\n }\n\n if (isEnumType(type)) {\n return TypeKind.ENUM;\n }\n\n if (isInputObjectType(type)) {\n return TypeKind.INPUT_OBJECT;\n }\n\n if (isListType(type)) {\n return TypeKind.LIST;\n }\n\n if (isNonNullType(type)) {\n return TypeKind.NON_NULL;\n }\n /* c8 ignore next 3 */\n // Not reachable, all possible types have been considered)\n\n false || invariant(false, `Unexpected type: \"${inspect(type)}\".`);\n },\n },\n name: {\n type: GraphQLString,\n resolve: (type) => ('name' in type ? type.name : undefined),\n },\n description: {\n type: GraphQLString,\n resolve: (\n type, // FIXME: add test case\n ) =>\n /* c8 ignore next */\n 'description' in type ? type.description : undefined,\n },\n specifiedByURL: {\n type: GraphQLString,\n resolve: (obj) =>\n 'specifiedByURL' in obj ? obj.specifiedByURL : undefined,\n },\n fields: {\n type: new GraphQLList(new GraphQLNonNull(__Field)),\n args: {\n includeDeprecated: {\n type: GraphQLBoolean,\n defaultValue: false,\n },\n },\n\n resolve(type, { includeDeprecated }) {\n if (isObjectType(type) || isInterfaceType(type)) {\n const fields = Object.values(type.getFields());\n return includeDeprecated\n ? fields\n : fields.filter((field) => field.deprecationReason == null);\n }\n },\n },\n interfaces: {\n type: new GraphQLList(new GraphQLNonNull(__Type)),\n\n resolve(type) {\n if (isObjectType(type) || isInterfaceType(type)) {\n return type.getInterfaces();\n }\n },\n },\n possibleTypes: {\n type: new GraphQLList(new GraphQLNonNull(__Type)),\n\n resolve(type, _args, _context, { schema }) {\n if (isAbstractType(type)) {\n return schema.getPossibleTypes(type);\n }\n },\n },\n enumValues: {\n type: new GraphQLList(new GraphQLNonNull(__EnumValue)),\n args: {\n includeDeprecated: {\n type: GraphQLBoolean,\n defaultValue: false,\n },\n },\n\n resolve(type, { includeDeprecated }) {\n if (isEnumType(type)) {\n const values = type.getValues();\n return includeDeprecated\n ? values\n : values.filter((field) => field.deprecationReason == null);\n }\n },\n },\n inputFields: {\n type: new GraphQLList(new GraphQLNonNull(__InputValue)),\n args: {\n includeDeprecated: {\n type: GraphQLBoolean,\n defaultValue: false,\n },\n },\n\n resolve(type, { includeDeprecated }) {\n if (isInputObjectType(type)) {\n const values = Object.values(type.getFields());\n return includeDeprecated\n ? values\n : values.filter((field) => field.deprecationReason == null);\n }\n },\n },\n ofType: {\n type: __Type,\n resolve: (type) => ('ofType' in type ? type.ofType : undefined),\n },\n }),\n});\nexport const __Field = new GraphQLObjectType({\n name: '__Field',\n description:\n 'Object and Interface types are described by a list of Fields, each of which has a name, potentially a list of arguments, and a return type.',\n fields: () => ({\n name: {\n type: new GraphQLNonNull(GraphQLString),\n resolve: (field) => field.name,\n },\n description: {\n type: GraphQLString,\n resolve: (field) => field.description,\n },\n args: {\n type: new GraphQLNonNull(\n new GraphQLList(new GraphQLNonNull(__InputValue)),\n ),\n args: {\n includeDeprecated: {\n type: GraphQLBoolean,\n defaultValue: false,\n },\n },\n\n resolve(field, { includeDeprecated }) {\n return includeDeprecated\n ? field.args\n : field.args.filter((arg) => arg.deprecationReason == null);\n },\n },\n type: {\n type: new GraphQLNonNull(__Type),\n resolve: (field) => field.type,\n },\n isDeprecated: {\n type: new GraphQLNonNull(GraphQLBoolean),\n resolve: (field) => field.deprecationReason != null,\n },\n deprecationReason: {\n type: GraphQLString,\n resolve: (field) => field.deprecationReason,\n },\n }),\n});\nexport const __InputValue = new GraphQLObjectType({\n name: '__InputValue',\n description:\n 'Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.',\n fields: () => ({\n name: {\n type: new GraphQLNonNull(GraphQLString),\n resolve: (inputValue) => inputValue.name,\n },\n description: {\n type: GraphQLString,\n resolve: (inputValue) => inputValue.description,\n },\n type: {\n type: new GraphQLNonNull(__Type),\n resolve: (inputValue) => inputValue.type,\n },\n defaultValue: {\n type: GraphQLString,\n description:\n 'A GraphQL-formatted string representing the default value for this input value.',\n\n resolve(inputValue) {\n const { type, defaultValue } = inputValue;\n const valueAST = astFromValue(defaultValue, type);\n return valueAST ? print(valueAST) : null;\n },\n },\n isDeprecated: {\n type: new GraphQLNonNull(GraphQLBoolean),\n resolve: (field) => field.deprecationReason != null,\n },\n deprecationReason: {\n type: GraphQLString,\n resolve: (obj) => obj.deprecationReason,\n },\n }),\n});\nexport const __EnumValue = new GraphQLObjectType({\n name: '__EnumValue',\n description:\n 'One possible value for a given Enum. Enum values are unique values, not a placeholder for a string or numeric value. However an Enum value is returned in a JSON response as a string.',\n fields: () => ({\n name: {\n type: new GraphQLNonNull(GraphQLString),\n resolve: (enumValue) => enumValue.name,\n },\n description: {\n type: GraphQLString,\n resolve: (enumValue) => enumValue.description,\n },\n isDeprecated: {\n type: new GraphQLNonNull(GraphQLBoolean),\n resolve: (enumValue) => enumValue.deprecationReason != null,\n },\n deprecationReason: {\n type: GraphQLString,\n resolve: (enumValue) => enumValue.deprecationReason,\n },\n }),\n});\nvar TypeKind;\n\n(function (TypeKind) {\n TypeKind['SCALAR'] = 'SCALAR';\n TypeKind['OBJECT'] = 'OBJECT';\n TypeKind['INTERFACE'] = 'INTERFACE';\n TypeKind['UNION'] = 'UNION';\n TypeKind['ENUM'] = 'ENUM';\n TypeKind['INPUT_OBJECT'] = 'INPUT_OBJECT';\n TypeKind['LIST'] = 'LIST';\n TypeKind['NON_NULL'] = 'NON_NULL';\n})(TypeKind || (TypeKind = {}));\n\nexport { TypeKind };\nexport const __TypeKind = new GraphQLEnumType({\n name: '__TypeKind',\n description: 'An enum describing what kind of type a given `__Type` is.',\n values: {\n SCALAR: {\n value: TypeKind.SCALAR,\n description: 'Indicates this type is a scalar.',\n },\n OBJECT: {\n value: TypeKind.OBJECT,\n description:\n 'Indicates this type is an object. `fields` and `interfaces` are valid fields.',\n },\n INTERFACE: {\n value: TypeKind.INTERFACE,\n description:\n 'Indicates this type is an interface. `fields`, `interfaces`, and `possibleTypes` are valid fields.',\n },\n UNION: {\n value: TypeKind.UNION,\n description:\n 'Indicates this type is a union. `possibleTypes` is a valid field.',\n },\n ENUM: {\n value: TypeKind.ENUM,\n description:\n 'Indicates this type is an enum. `enumValues` is a valid field.',\n },\n INPUT_OBJECT: {\n value: TypeKind.INPUT_OBJECT,\n description:\n 'Indicates this type is an input object. `inputFields` is a valid field.',\n },\n LIST: {\n value: TypeKind.LIST,\n description: 'Indicates this type is a list. `ofType` is a valid field.',\n },\n NON_NULL: {\n value: TypeKind.NON_NULL,\n description:\n 'Indicates this type is a non-null. `ofType` is a valid field.',\n },\n },\n});\n/**\n * Note that these are GraphQLField and not GraphQLFieldConfig,\n * so the format for args is different.\n */\n\nexport const SchemaMetaFieldDef = {\n name: '__schema',\n type: new GraphQLNonNull(__Schema),\n description: 'Access the current type schema of this server.',\n args: [],\n resolve: (_source, _args, _context, { schema }) => schema,\n deprecationReason: undefined,\n extensions: Object.create(null),\n astNode: undefined,\n};\nexport const TypeMetaFieldDef = {\n name: '__type',\n type: __Type,\n description: 'Request the type information of a single type.',\n args: [\n {\n name: 'name',\n description: undefined,\n type: new GraphQLNonNull(GraphQLString),\n defaultValue: undefined,\n deprecationReason: undefined,\n extensions: Object.create(null),\n astNode: undefined,\n },\n ],\n resolve: (_source, { name }, _context, { schema }) => schema.getType(name),\n deprecationReason: undefined,\n extensions: Object.create(null),\n astNode: undefined,\n};\nexport const TypeNameMetaFieldDef = {\n name: '__typename',\n type: new GraphQLNonNull(GraphQLString),\n description: 'The name of the current Object type at runtime.',\n args: [],\n resolve: (_source, _args, _context, { parentType }) => parentType.name,\n deprecationReason: undefined,\n extensions: Object.create(null),\n astNode: undefined,\n};\nexport const introspectionTypes = Object.freeze([\n __Schema,\n __Directive,\n __DirectiveLocation,\n __Type,\n __Field,\n __InputValue,\n __EnumValue,\n __TypeKind,\n]);\nexport function isIntrospectionType(type) {\n return introspectionTypes.some(({ name }) => type.name === name);\n}\n", "import { devAssert } from '../jsutils/devAssert.mjs';\nimport { inspect } from '../jsutils/inspect.mjs';\nimport { instanceOf } from '../jsutils/instanceOf.mjs';\nimport { isObjectLike } from '../jsutils/isObjectLike.mjs';\nimport { toObjMap } from '../jsutils/toObjMap.mjs';\nimport { OperationTypeNode } from '../language/ast.mjs';\nimport {\n getNamedType,\n isInputObjectType,\n isInterfaceType,\n isObjectType,\n isUnionType,\n} from './definition.mjs';\nimport { isDirective, specifiedDirectives } from './directives.mjs';\nimport { __Schema } from './introspection.mjs';\n/**\n * Test if the given value is a GraphQL schema.\n */\n\nexport function isSchema(schema) {\n return instanceOf(schema, GraphQLSchema);\n}\nexport function assertSchema(schema) {\n if (!isSchema(schema)) {\n throw new Error(`Expected ${inspect(schema)} to be a GraphQL schema.`);\n }\n\n return schema;\n}\n/**\n * Custom extensions\n *\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n */\n\n/**\n * Schema Definition\n *\n * A Schema is created by supplying the root types of each type of operation,\n * query and mutation (optional). A schema definition is then supplied to the\n * validator and executor.\n *\n * Example:\n *\n * ```ts\n * const MyAppSchema = new GraphQLSchema({\n * query: MyAppQueryRootType,\n * mutation: MyAppMutationRootType,\n * })\n * ```\n *\n * Note: When the schema is constructed, by default only the types that are\n * reachable by traversing the root types are included, other types must be\n * explicitly referenced.\n *\n * Example:\n *\n * ```ts\n * const characterInterface = new GraphQLInterfaceType({\n * name: 'Character',\n * ...\n * });\n *\n * const humanType = new GraphQLObjectType({\n * name: 'Human',\n * interfaces: [characterInterface],\n * ...\n * });\n *\n * const droidType = new GraphQLObjectType({\n * name: 'Droid',\n * interfaces: [characterInterface],\n * ...\n * });\n *\n * const schema = new GraphQLSchema({\n * query: new GraphQLObjectType({\n * name: 'Query',\n * fields: {\n * hero: { type: characterInterface, ... },\n * }\n * }),\n * ...\n * // Since this schema references only the `Character` interface it's\n * // necessary to explicitly list the types that implement it if\n * // you want them to be included in the final schema.\n * types: [humanType, droidType],\n * })\n * ```\n *\n * Note: If an array of `directives` are provided to GraphQLSchema, that will be\n * the exact list of directives represented and allowed. If `directives` is not\n * provided then a default set of the specified directives (e.g. `@include` and\n * `@skip`) will be used. If you wish to provide *additional* directives to these\n * specified directives, you must explicitly declare them. Example:\n *\n * ```ts\n * const MyAppSchema = new GraphQLSchema({\n * ...\n * directives: specifiedDirectives.concat([ myCustomDirective ]),\n * })\n * ```\n */\nexport class GraphQLSchema {\n // Used as a cache for validateSchema().\n constructor(config) {\n var _config$extensionASTN, _config$directives;\n\n // If this schema was built from a source known to be valid, then it may be\n // marked with assumeValid to avoid an additional type system validation.\n this.__validationErrors = config.assumeValid === true ? [] : undefined; // Check for common mistakes during construction to produce early errors.\n\n isObjectLike(config) ||\n devAssert(false, 'Must provide configuration object.');\n !config.types ||\n Array.isArray(config.types) ||\n devAssert(\n false,\n `\"types\" must be Array if provided but got: ${inspect(config.types)}.`,\n );\n !config.directives ||\n Array.isArray(config.directives) ||\n devAssert(\n false,\n '\"directives\" must be Array if provided but got: ' +\n `${inspect(config.directives)}.`,\n );\n this.description = config.description;\n this.extensions = toObjMap(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes =\n (_config$extensionASTN = config.extensionASTNodes) !== null &&\n _config$extensionASTN !== void 0\n ? _config$extensionASTN\n : [];\n this._queryType = config.query;\n this._mutationType = config.mutation;\n this._subscriptionType = config.subscription; // Provide specified directives (e.g. @include and @skip) by default.\n\n this._directives =\n (_config$directives = config.directives) !== null &&\n _config$directives !== void 0\n ? _config$directives\n : specifiedDirectives; // To preserve order of user-provided types, we add first to add them to\n // the set of \"collected\" types, so `collectReferencedTypes` ignore them.\n\n const allReferencedTypes = new Set(config.types);\n\n if (config.types != null) {\n for (const type of config.types) {\n // When we ready to process this type, we remove it from \"collected\" types\n // and then add it together with all dependent types in the correct position.\n allReferencedTypes.delete(type);\n collectReferencedTypes(type, allReferencedTypes);\n }\n }\n\n if (this._queryType != null) {\n collectReferencedTypes(this._queryType, allReferencedTypes);\n }\n\n if (this._mutationType != null) {\n collectReferencedTypes(this._mutationType, allReferencedTypes);\n }\n\n if (this._subscriptionType != null) {\n collectReferencedTypes(this._subscriptionType, allReferencedTypes);\n }\n\n for (const directive of this._directives) {\n // Directives are not validated until validateSchema() is called.\n if (isDirective(directive)) {\n for (const arg of directive.args) {\n collectReferencedTypes(arg.type, allReferencedTypes);\n }\n }\n }\n\n collectReferencedTypes(__Schema, allReferencedTypes); // Storing the resulting map for reference by the schema.\n\n this._typeMap = Object.create(null);\n this._subTypeMap = Object.create(null); // Keep track of all implementations by interface name.\n\n this._implementationsMap = Object.create(null);\n\n for (const namedType of allReferencedTypes) {\n if (namedType == null) {\n continue;\n }\n\n const typeName = namedType.name;\n typeName ||\n devAssert(\n false,\n 'One of the provided types for building the Schema is missing a name.',\n );\n\n if (this._typeMap[typeName] !== undefined) {\n throw new Error(\n `Schema must contain uniquely named types but contains multiple types named \"${typeName}\".`,\n );\n }\n\n this._typeMap[typeName] = namedType;\n\n if (isInterfaceType(namedType)) {\n // Store implementations by interface.\n for (const iface of namedType.getInterfaces()) {\n if (isInterfaceType(iface)) {\n let implementations = this._implementationsMap[iface.name];\n\n if (implementations === undefined) {\n implementations = this._implementationsMap[iface.name] = {\n objects: [],\n interfaces: [],\n };\n }\n\n implementations.interfaces.push(namedType);\n }\n }\n } else if (isObjectType(namedType)) {\n // Store implementations by objects.\n for (const iface of namedType.getInterfaces()) {\n if (isInterfaceType(iface)) {\n let implementations = this._implementationsMap[iface.name];\n\n if (implementations === undefined) {\n implementations = this._implementationsMap[iface.name] = {\n objects: [],\n interfaces: [],\n };\n }\n\n implementations.objects.push(namedType);\n }\n }\n }\n }\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLSchema';\n }\n\n getQueryType() {\n return this._queryType;\n }\n\n getMutationType() {\n return this._mutationType;\n }\n\n getSubscriptionType() {\n return this._subscriptionType;\n }\n\n getRootType(operation) {\n switch (operation) {\n case OperationTypeNode.QUERY:\n return this.getQueryType();\n\n case OperationTypeNode.MUTATION:\n return this.getMutationType();\n\n case OperationTypeNode.SUBSCRIPTION:\n return this.getSubscriptionType();\n }\n }\n\n getTypeMap() {\n return this._typeMap;\n }\n\n getType(name) {\n return this.getTypeMap()[name];\n }\n\n getPossibleTypes(abstractType) {\n return isUnionType(abstractType)\n ? abstractType.getTypes()\n : this.getImplementations(abstractType).objects;\n }\n\n getImplementations(interfaceType) {\n const implementations = this._implementationsMap[interfaceType.name];\n return implementations !== null && implementations !== void 0\n ? implementations\n : {\n objects: [],\n interfaces: [],\n };\n }\n\n isSubType(abstractType, maybeSubType) {\n let map = this._subTypeMap[abstractType.name];\n\n if (map === undefined) {\n map = Object.create(null);\n\n if (isUnionType(abstractType)) {\n for (const type of abstractType.getTypes()) {\n map[type.name] = true;\n }\n } else {\n const implementations = this.getImplementations(abstractType);\n\n for (const type of implementations.objects) {\n map[type.name] = true;\n }\n\n for (const type of implementations.interfaces) {\n map[type.name] = true;\n }\n }\n\n this._subTypeMap[abstractType.name] = map;\n }\n\n return map[maybeSubType.name] !== undefined;\n }\n\n getDirectives() {\n return this._directives;\n }\n\n getDirective(name) {\n return this.getDirectives().find((directive) => directive.name === name);\n }\n\n toConfig() {\n return {\n description: this.description,\n query: this.getQueryType(),\n mutation: this.getMutationType(),\n subscription: this.getSubscriptionType(),\n types: Object.values(this.getTypeMap()),\n directives: this.getDirectives(),\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes,\n assumeValid: this.__validationErrors !== undefined,\n };\n }\n}\n\nfunction collectReferencedTypes(type, typeSet) {\n const namedType = getNamedType(type);\n\n if (!typeSet.has(namedType)) {\n typeSet.add(namedType);\n\n if (isUnionType(namedType)) {\n for (const memberType of namedType.getTypes()) {\n collectReferencedTypes(memberType, typeSet);\n }\n } else if (isObjectType(namedType) || isInterfaceType(namedType)) {\n for (const interfaceType of namedType.getInterfaces()) {\n collectReferencedTypes(interfaceType, typeSet);\n }\n\n for (const field of Object.values(namedType.getFields())) {\n collectReferencedTypes(field.type, typeSet);\n\n for (const arg of field.args) {\n collectReferencedTypes(arg.type, typeSet);\n }\n }\n } else if (isInputObjectType(namedType)) {\n for (const field of Object.values(namedType.getFields())) {\n collectReferencedTypes(field.type, typeSet);\n }\n }\n }\n\n return typeSet;\n}\n", "import { inspect } from '../jsutils/inspect.mjs';\nimport { GraphQLError } from '../error/GraphQLError.mjs';\nimport { OperationTypeNode } from '../language/ast.mjs';\nimport { isEqualType, isTypeSubTypeOf } from '../utilities/typeComparators.mjs';\nimport {\n isEnumType,\n isInputObjectType,\n isInputType,\n isInterfaceType,\n isNamedType,\n isNonNullType,\n isObjectType,\n isOutputType,\n isRequiredArgument,\n isRequiredInputField,\n isUnionType,\n} from './definition.mjs';\nimport { GraphQLDeprecatedDirective, isDirective } from './directives.mjs';\nimport { isIntrospectionType } from './introspection.mjs';\nimport { assertSchema } from './schema.mjs';\n/**\n * Implements the \"Type Validation\" sub-sections of the specification's\n * \"Type System\" section.\n *\n * Validation runs synchronously, returning an array of encountered errors, or\n * an empty array if no errors were encountered and the Schema is valid.\n */\n\nexport function validateSchema(schema) {\n // First check to ensure the provided value is in fact a GraphQLSchema.\n assertSchema(schema); // If this Schema has already been validated, return the previous results.\n\n if (schema.__validationErrors) {\n return schema.__validationErrors;\n } // Validate the schema, producing a list of errors.\n\n const context = new SchemaValidationContext(schema);\n validateRootTypes(context);\n validateDirectives(context);\n validateTypes(context); // Persist the results of validation before returning to ensure validation\n // does not run multiple times for this schema.\n\n const errors = context.getErrors();\n schema.__validationErrors = errors;\n return errors;\n}\n/**\n * Utility function which asserts a schema is valid by throwing an error if\n * it is invalid.\n */\n\nexport function assertValidSchema(schema) {\n const errors = validateSchema(schema);\n\n if (errors.length !== 0) {\n throw new Error(errors.map((error) => error.message).join('\\n\\n'));\n }\n}\n\nclass SchemaValidationContext {\n constructor(schema) {\n this._errors = [];\n this.schema = schema;\n }\n\n reportError(message, nodes) {\n const _nodes = Array.isArray(nodes) ? nodes.filter(Boolean) : nodes;\n\n this._errors.push(\n new GraphQLError(message, {\n nodes: _nodes,\n }),\n );\n }\n\n getErrors() {\n return this._errors;\n }\n}\n\nfunction validateRootTypes(context) {\n const schema = context.schema;\n const queryType = schema.getQueryType();\n\n if (!queryType) {\n context.reportError('Query root type must be provided.', schema.astNode);\n } else if (!isObjectType(queryType)) {\n var _getOperationTypeNode;\n\n context.reportError(\n `Query root type must be Object type, it cannot be ${inspect(\n queryType,\n )}.`,\n (_getOperationTypeNode = getOperationTypeNode(\n schema,\n OperationTypeNode.QUERY,\n )) !== null && _getOperationTypeNode !== void 0\n ? _getOperationTypeNode\n : queryType.astNode,\n );\n }\n\n const mutationType = schema.getMutationType();\n\n if (mutationType && !isObjectType(mutationType)) {\n var _getOperationTypeNode2;\n\n context.reportError(\n 'Mutation root type must be Object type if provided, it cannot be ' +\n `${inspect(mutationType)}.`,\n (_getOperationTypeNode2 = getOperationTypeNode(\n schema,\n OperationTypeNode.MUTATION,\n )) !== null && _getOperationTypeNode2 !== void 0\n ? _getOperationTypeNode2\n : mutationType.astNode,\n );\n }\n\n const subscriptionType = schema.getSubscriptionType();\n\n if (subscriptionType && !isObjectType(subscriptionType)) {\n var _getOperationTypeNode3;\n\n context.reportError(\n 'Subscription root type must be Object type if provided, it cannot be ' +\n `${inspect(subscriptionType)}.`,\n (_getOperationTypeNode3 = getOperationTypeNode(\n schema,\n OperationTypeNode.SUBSCRIPTION,\n )) !== null && _getOperationTypeNode3 !== void 0\n ? _getOperationTypeNode3\n : subscriptionType.astNode,\n );\n }\n}\n\nfunction getOperationTypeNode(schema, operation) {\n var _flatMap$find;\n\n return (_flatMap$find = [schema.astNode, ...schema.extensionASTNodes]\n .flatMap(\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n (schemaNode) => {\n var _schemaNode$operation;\n\n return (\n /* c8 ignore next */\n (_schemaNode$operation =\n schemaNode === null || schemaNode === void 0\n ? void 0\n : schemaNode.operationTypes) !== null &&\n _schemaNode$operation !== void 0\n ? _schemaNode$operation\n : []\n );\n },\n )\n .find((operationNode) => operationNode.operation === operation)) === null ||\n _flatMap$find === void 0\n ? void 0\n : _flatMap$find.type;\n}\n\nfunction validateDirectives(context) {\n for (const directive of context.schema.getDirectives()) {\n // Ensure all directives are in fact GraphQL directives.\n if (!isDirective(directive)) {\n context.reportError(\n `Expected directive but got: ${inspect(directive)}.`,\n directive === null || directive === void 0 ? void 0 : directive.astNode,\n );\n continue;\n } // Ensure they are named correctly.\n\n validateName(context, directive); // TODO: Ensure proper locations.\n // Ensure the arguments are valid.\n\n for (const arg of directive.args) {\n // Ensure they are named correctly.\n validateName(context, arg); // Ensure the type is an input type.\n\n if (!isInputType(arg.type)) {\n context.reportError(\n `The type of @${directive.name}(${arg.name}:) must be Input Type ` +\n `but got: ${inspect(arg.type)}.`,\n arg.astNode,\n );\n }\n\n if (isRequiredArgument(arg) && arg.deprecationReason != null) {\n var _arg$astNode;\n\n context.reportError(\n `Required argument @${directive.name}(${arg.name}:) cannot be deprecated.`,\n [\n getDeprecatedDirectiveNode(arg.astNode),\n (_arg$astNode = arg.astNode) === null || _arg$astNode === void 0\n ? void 0\n : _arg$astNode.type,\n ],\n );\n }\n }\n }\n}\n\nfunction validateName(context, node) {\n // Ensure names are valid, however introspection types opt out.\n if (node.name.startsWith('__')) {\n context.reportError(\n `Name \"${node.name}\" must not begin with \"__\", which is reserved by GraphQL introspection.`,\n node.astNode,\n );\n }\n}\n\nfunction validateTypes(context) {\n const validateInputObjectCircularRefs =\n createInputObjectCircularRefsValidator(context);\n const typeMap = context.schema.getTypeMap();\n\n for (const type of Object.values(typeMap)) {\n // Ensure all provided types are in fact GraphQL type.\n if (!isNamedType(type)) {\n context.reportError(\n `Expected GraphQL named type but got: ${inspect(type)}.`,\n type.astNode,\n );\n continue;\n } // Ensure it is named correctly (excluding introspection types).\n\n if (!isIntrospectionType(type)) {\n validateName(context, type);\n }\n\n if (isObjectType(type)) {\n // Ensure fields are valid\n validateFields(context, type); // Ensure objects implement the interfaces they claim to.\n\n validateInterfaces(context, type);\n } else if (isInterfaceType(type)) {\n // Ensure fields are valid.\n validateFields(context, type); // Ensure interfaces implement the interfaces they claim to.\n\n validateInterfaces(context, type);\n } else if (isUnionType(type)) {\n // Ensure Unions include valid member types.\n validateUnionMembers(context, type);\n } else if (isEnumType(type)) {\n // Ensure Enums have valid values.\n validateEnumValues(context, type);\n } else if (isInputObjectType(type)) {\n // Ensure Input Object fields are valid.\n validateInputFields(context, type); // Ensure Input Objects do not contain non-nullable circular references\n\n validateInputObjectCircularRefs(type);\n }\n }\n}\n\nfunction validateFields(context, type) {\n const fields = Object.values(type.getFields()); // Objects and Interfaces both must define one or more fields.\n\n if (fields.length === 0) {\n context.reportError(`Type ${type.name} must define one or more fields.`, [\n type.astNode,\n ...type.extensionASTNodes,\n ]);\n }\n\n for (const field of fields) {\n // Ensure they are named correctly.\n validateName(context, field); // Ensure the type is an output type\n\n if (!isOutputType(field.type)) {\n var _field$astNode;\n\n context.reportError(\n `The type of ${type.name}.${field.name} must be Output Type ` +\n `but got: ${inspect(field.type)}.`,\n (_field$astNode = field.astNode) === null || _field$astNode === void 0\n ? void 0\n : _field$astNode.type,\n );\n } // Ensure the arguments are valid\n\n for (const arg of field.args) {\n const argName = arg.name; // Ensure they are named correctly.\n\n validateName(context, arg); // Ensure the type is an input type\n\n if (!isInputType(arg.type)) {\n var _arg$astNode2;\n\n context.reportError(\n `The type of ${type.name}.${field.name}(${argName}:) must be Input ` +\n `Type but got: ${inspect(arg.type)}.`,\n (_arg$astNode2 = arg.astNode) === null || _arg$astNode2 === void 0\n ? void 0\n : _arg$astNode2.type,\n );\n }\n\n if (isRequiredArgument(arg) && arg.deprecationReason != null) {\n var _arg$astNode3;\n\n context.reportError(\n `Required argument ${type.name}.${field.name}(${argName}:) cannot be deprecated.`,\n [\n getDeprecatedDirectiveNode(arg.astNode),\n (_arg$astNode3 = arg.astNode) === null || _arg$astNode3 === void 0\n ? void 0\n : _arg$astNode3.type,\n ],\n );\n }\n }\n }\n}\n\nfunction validateInterfaces(context, type) {\n const ifaceTypeNames = Object.create(null);\n\n for (const iface of type.getInterfaces()) {\n if (!isInterfaceType(iface)) {\n context.reportError(\n `Type ${inspect(type)} must only implement Interface types, ` +\n `it cannot implement ${inspect(iface)}.`,\n getAllImplementsInterfaceNodes(type, iface),\n );\n continue;\n }\n\n if (type === iface) {\n context.reportError(\n `Type ${type.name} cannot implement itself because it would create a circular reference.`,\n getAllImplementsInterfaceNodes(type, iface),\n );\n continue;\n }\n\n if (ifaceTypeNames[iface.name]) {\n context.reportError(\n `Type ${type.name} can only implement ${iface.name} once.`,\n getAllImplementsInterfaceNodes(type, iface),\n );\n continue;\n }\n\n ifaceTypeNames[iface.name] = true;\n validateTypeImplementsAncestors(context, type, iface);\n validateTypeImplementsInterface(context, type, iface);\n }\n}\n\nfunction validateTypeImplementsInterface(context, type, iface) {\n const typeFieldMap = type.getFields(); // Assert each interface field is implemented.\n\n for (const ifaceField of Object.values(iface.getFields())) {\n const fieldName = ifaceField.name;\n const typeField = typeFieldMap[fieldName]; // Assert interface field exists on type.\n\n if (!typeField) {\n context.reportError(\n `Interface field ${iface.name}.${fieldName} expected but ${type.name} does not provide it.`,\n [ifaceField.astNode, type.astNode, ...type.extensionASTNodes],\n );\n continue;\n } // Assert interface field type is satisfied by type field type, by being\n // a valid subtype. (covariant)\n\n if (!isTypeSubTypeOf(context.schema, typeField.type, ifaceField.type)) {\n var _ifaceField$astNode, _typeField$astNode;\n\n context.reportError(\n `Interface field ${iface.name}.${fieldName} expects type ` +\n `${inspect(ifaceField.type)} but ${type.name}.${fieldName} ` +\n `is type ${inspect(typeField.type)}.`,\n [\n (_ifaceField$astNode = ifaceField.astNode) === null ||\n _ifaceField$astNode === void 0\n ? void 0\n : _ifaceField$astNode.type,\n (_typeField$astNode = typeField.astNode) === null ||\n _typeField$astNode === void 0\n ? void 0\n : _typeField$astNode.type,\n ],\n );\n } // Assert each interface field arg is implemented.\n\n for (const ifaceArg of ifaceField.args) {\n const argName = ifaceArg.name;\n const typeArg = typeField.args.find((arg) => arg.name === argName); // Assert interface field arg exists on object field.\n\n if (!typeArg) {\n context.reportError(\n `Interface field argument ${iface.name}.${fieldName}(${argName}:) expected but ${type.name}.${fieldName} does not provide it.`,\n [ifaceArg.astNode, typeField.astNode],\n );\n continue;\n } // Assert interface field arg type matches object field arg type.\n // (invariant)\n // TODO: change to contravariant?\n\n if (!isEqualType(ifaceArg.type, typeArg.type)) {\n var _ifaceArg$astNode, _typeArg$astNode;\n\n context.reportError(\n `Interface field argument ${iface.name}.${fieldName}(${argName}:) ` +\n `expects type ${inspect(ifaceArg.type)} but ` +\n `${type.name}.${fieldName}(${argName}:) is type ` +\n `${inspect(typeArg.type)}.`,\n [\n (_ifaceArg$astNode = ifaceArg.astNode) === null ||\n _ifaceArg$astNode === void 0\n ? void 0\n : _ifaceArg$astNode.type,\n (_typeArg$astNode = typeArg.astNode) === null ||\n _typeArg$astNode === void 0\n ? void 0\n : _typeArg$astNode.type,\n ],\n );\n } // TODO: validate default values?\n } // Assert additional arguments must not be required.\n\n for (const typeArg of typeField.args) {\n const argName = typeArg.name;\n const ifaceArg = ifaceField.args.find((arg) => arg.name === argName);\n\n if (!ifaceArg && isRequiredArgument(typeArg)) {\n context.reportError(\n `Object field ${type.name}.${fieldName} includes required argument ${argName} that is missing from the Interface field ${iface.name}.${fieldName}.`,\n [typeArg.astNode, ifaceField.astNode],\n );\n }\n }\n }\n}\n\nfunction validateTypeImplementsAncestors(context, type, iface) {\n const ifaceInterfaces = type.getInterfaces();\n\n for (const transitive of iface.getInterfaces()) {\n if (!ifaceInterfaces.includes(transitive)) {\n context.reportError(\n transitive === type\n ? `Type ${type.name} cannot implement ${iface.name} because it would create a circular reference.`\n : `Type ${type.name} must implement ${transitive.name} because it is implemented by ${iface.name}.`,\n [\n ...getAllImplementsInterfaceNodes(iface, transitive),\n ...getAllImplementsInterfaceNodes(type, iface),\n ],\n );\n }\n }\n}\n\nfunction validateUnionMembers(context, union) {\n const memberTypes = union.getTypes();\n\n if (memberTypes.length === 0) {\n context.reportError(\n `Union type ${union.name} must define one or more member types.`,\n [union.astNode, ...union.extensionASTNodes],\n );\n }\n\n const includedTypeNames = Object.create(null);\n\n for (const memberType of memberTypes) {\n if (includedTypeNames[memberType.name]) {\n context.reportError(\n `Union type ${union.name} can only include type ${memberType.name} once.`,\n getUnionMemberTypeNodes(union, memberType.name),\n );\n continue;\n }\n\n includedTypeNames[memberType.name] = true;\n\n if (!isObjectType(memberType)) {\n context.reportError(\n `Union type ${union.name} can only include Object types, ` +\n `it cannot include ${inspect(memberType)}.`,\n getUnionMemberTypeNodes(union, String(memberType)),\n );\n }\n }\n}\n\nfunction validateEnumValues(context, enumType) {\n const enumValues = enumType.getValues();\n\n if (enumValues.length === 0) {\n context.reportError(\n `Enum type ${enumType.name} must define one or more values.`,\n [enumType.astNode, ...enumType.extensionASTNodes],\n );\n }\n\n for (const enumValue of enumValues) {\n // Ensure valid name.\n validateName(context, enumValue);\n }\n}\n\nfunction validateInputFields(context, inputObj) {\n const fields = Object.values(inputObj.getFields());\n\n if (fields.length === 0) {\n context.reportError(\n `Input Object type ${inputObj.name} must define one or more fields.`,\n [inputObj.astNode, ...inputObj.extensionASTNodes],\n );\n } // Ensure the arguments are valid\n\n for (const field of fields) {\n // Ensure they are named correctly.\n validateName(context, field); // Ensure the type is an input type\n\n if (!isInputType(field.type)) {\n var _field$astNode2;\n\n context.reportError(\n `The type of ${inputObj.name}.${field.name} must be Input Type ` +\n `but got: ${inspect(field.type)}.`,\n (_field$astNode2 = field.astNode) === null || _field$astNode2 === void 0\n ? void 0\n : _field$astNode2.type,\n );\n }\n\n if (isRequiredInputField(field) && field.deprecationReason != null) {\n var _field$astNode3;\n\n context.reportError(\n `Required input field ${inputObj.name}.${field.name} cannot be deprecated.`,\n [\n getDeprecatedDirectiveNode(field.astNode),\n (_field$astNode3 = field.astNode) === null ||\n _field$astNode3 === void 0\n ? void 0\n : _field$astNode3.type,\n ],\n );\n }\n }\n}\n\nfunction createInputObjectCircularRefsValidator(context) {\n // Modified copy of algorithm from 'src/validation/rules/NoFragmentCycles.js'.\n // Tracks already visited types to maintain O(N) and to ensure that cycles\n // are not redundantly reported.\n const visitedTypes = Object.create(null); // Array of types nodes used to produce meaningful errors\n\n const fieldPath = []; // Position in the type path\n\n const fieldPathIndexByTypeName = Object.create(null);\n return detectCycleRecursive; // This does a straight-forward DFS to find cycles.\n // It does not terminate when a cycle was found but continues to explore\n // the graph to find all possible cycles.\n\n function detectCycleRecursive(inputObj) {\n if (visitedTypes[inputObj.name]) {\n return;\n }\n\n visitedTypes[inputObj.name] = true;\n fieldPathIndexByTypeName[inputObj.name] = fieldPath.length;\n const fields = Object.values(inputObj.getFields());\n\n for (const field of fields) {\n if (isNonNullType(field.type) && isInputObjectType(field.type.ofType)) {\n const fieldType = field.type.ofType;\n const cycleIndex = fieldPathIndexByTypeName[fieldType.name];\n fieldPath.push(field);\n\n if (cycleIndex === undefined) {\n detectCycleRecursive(fieldType);\n } else {\n const cyclePath = fieldPath.slice(cycleIndex);\n const pathStr = cyclePath.map((fieldObj) => fieldObj.name).join('.');\n context.reportError(\n `Cannot reference Input Object \"${fieldType.name}\" within itself through a series of non-null fields: \"${pathStr}\".`,\n cyclePath.map((fieldObj) => fieldObj.astNode),\n );\n }\n\n fieldPath.pop();\n }\n }\n\n fieldPathIndexByTypeName[inputObj.name] = undefined;\n }\n}\n\nfunction getAllImplementsInterfaceNodes(type, iface) {\n const { astNode, extensionASTNodes } = type;\n const nodes =\n astNode != null ? [astNode, ...extensionASTNodes] : extensionASTNodes; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n return nodes\n .flatMap((typeNode) => {\n var _typeNode$interfaces;\n\n return (\n /* c8 ignore next */\n (_typeNode$interfaces = typeNode.interfaces) !== null &&\n _typeNode$interfaces !== void 0\n ? _typeNode$interfaces\n : []\n );\n })\n .filter((ifaceNode) => ifaceNode.name.value === iface.name);\n}\n\nfunction getUnionMemberTypeNodes(union, typeName) {\n const { astNode, extensionASTNodes } = union;\n const nodes =\n astNode != null ? [astNode, ...extensionASTNodes] : extensionASTNodes; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n return nodes\n .flatMap((unionNode) => {\n var _unionNode$types;\n\n return (\n /* c8 ignore next */\n (_unionNode$types = unionNode.types) !== null &&\n _unionNode$types !== void 0\n ? _unionNode$types\n : []\n );\n })\n .filter((typeNode) => typeNode.name.value === typeName);\n}\n\nfunction getDeprecatedDirectiveNode(definitionNode) {\n var _definitionNode$direc;\n\n return definitionNode === null || definitionNode === void 0\n ? void 0\n : (_definitionNode$direc = definitionNode.directives) === null ||\n _definitionNode$direc === void 0\n ? void 0\n : _definitionNode$direc.find(\n (node) => node.name.value === GraphQLDeprecatedDirective.name,\n );\n}\n", "import { Kind } from '../language/kinds.mjs';\nimport { GraphQLList, GraphQLNonNull } from '../type/definition.mjs';\nexport function typeFromAST(schema, typeNode) {\n switch (typeNode.kind) {\n case Kind.LIST_TYPE: {\n const innerType = typeFromAST(schema, typeNode.type);\n return innerType && new GraphQLList(innerType);\n }\n\n case Kind.NON_NULL_TYPE: {\n const innerType = typeFromAST(schema, typeNode.type);\n return innerType && new GraphQLNonNull(innerType);\n }\n\n case Kind.NAMED_TYPE:\n return schema.getType(typeNode.name.value);\n }\n}\n", "import { isNode } from '../language/ast.mjs';\nimport { Kind } from '../language/kinds.mjs';\nimport { getEnterLeaveForKind } from '../language/visitor.mjs';\nimport {\n getNamedType,\n getNullableType,\n isCompositeType,\n isEnumType,\n isInputObjectType,\n isInputType,\n isInterfaceType,\n isListType,\n isObjectType,\n isOutputType,\n} from '../type/definition.mjs';\nimport {\n SchemaMetaFieldDef,\n TypeMetaFieldDef,\n TypeNameMetaFieldDef,\n} from '../type/introspection.mjs';\nimport { typeFromAST } from './typeFromAST.mjs';\n/**\n * TypeInfo is a utility class which, given a GraphQL schema, can keep track\n * of the current field and type definitions at any point in a GraphQL document\n * AST during a recursive descent by calling `enter(node)` and `leave(node)`.\n */\n\nexport class TypeInfo {\n constructor(\n schema,\n /**\n * Initial type may be provided in rare cases to facilitate traversals\n * beginning somewhere other than documents.\n */\n initialType,\n /** @deprecated will be removed in 17.0.0 */\n getFieldDefFn,\n ) {\n this._schema = schema;\n this._typeStack = [];\n this._parentTypeStack = [];\n this._inputTypeStack = [];\n this._fieldDefStack = [];\n this._defaultValueStack = [];\n this._directive = null;\n this._argument = null;\n this._enumValue = null;\n this._getFieldDef =\n getFieldDefFn !== null && getFieldDefFn !== void 0\n ? getFieldDefFn\n : getFieldDef;\n\n if (initialType) {\n if (isInputType(initialType)) {\n this._inputTypeStack.push(initialType);\n }\n\n if (isCompositeType(initialType)) {\n this._parentTypeStack.push(initialType);\n }\n\n if (isOutputType(initialType)) {\n this._typeStack.push(initialType);\n }\n }\n }\n\n get [Symbol.toStringTag]() {\n return 'TypeInfo';\n }\n\n getType() {\n if (this._typeStack.length > 0) {\n return this._typeStack[this._typeStack.length - 1];\n }\n }\n\n getParentType() {\n if (this._parentTypeStack.length > 0) {\n return this._parentTypeStack[this._parentTypeStack.length - 1];\n }\n }\n\n getInputType() {\n if (this._inputTypeStack.length > 0) {\n return this._inputTypeStack[this._inputTypeStack.length - 1];\n }\n }\n\n getParentInputType() {\n if (this._inputTypeStack.length > 1) {\n return this._inputTypeStack[this._inputTypeStack.length - 2];\n }\n }\n\n getFieldDef() {\n if (this._fieldDefStack.length > 0) {\n return this._fieldDefStack[this._fieldDefStack.length - 1];\n }\n }\n\n getDefaultValue() {\n if (this._defaultValueStack.length > 0) {\n return this._defaultValueStack[this._defaultValueStack.length - 1];\n }\n }\n\n getDirective() {\n return this._directive;\n }\n\n getArgument() {\n return this._argument;\n }\n\n getEnumValue() {\n return this._enumValue;\n }\n\n enter(node) {\n const schema = this._schema; // Note: many of the types below are explicitly typed as \"unknown\" to drop\n // any assumptions of a valid schema to ensure runtime types are properly\n // checked before continuing since TypeInfo is used as part of validation\n // which occurs before guarantees of schema and document validity.\n\n switch (node.kind) {\n case Kind.SELECTION_SET: {\n const namedType = getNamedType(this.getType());\n\n this._parentTypeStack.push(\n isCompositeType(namedType) ? namedType : undefined,\n );\n\n break;\n }\n\n case Kind.FIELD: {\n const parentType = this.getParentType();\n let fieldDef;\n let fieldType;\n\n if (parentType) {\n fieldDef = this._getFieldDef(schema, parentType, node);\n\n if (fieldDef) {\n fieldType = fieldDef.type;\n }\n }\n\n this._fieldDefStack.push(fieldDef);\n\n this._typeStack.push(isOutputType(fieldType) ? fieldType : undefined);\n\n break;\n }\n\n case Kind.DIRECTIVE:\n this._directive = schema.getDirective(node.name.value);\n break;\n\n case Kind.OPERATION_DEFINITION: {\n const rootType = schema.getRootType(node.operation);\n\n this._typeStack.push(isObjectType(rootType) ? rootType : undefined);\n\n break;\n }\n\n case Kind.INLINE_FRAGMENT:\n case Kind.FRAGMENT_DEFINITION: {\n const typeConditionAST = node.typeCondition;\n const outputType = typeConditionAST\n ? typeFromAST(schema, typeConditionAST)\n : getNamedType(this.getType());\n\n this._typeStack.push(isOutputType(outputType) ? outputType : undefined);\n\n break;\n }\n\n case Kind.VARIABLE_DEFINITION: {\n const inputType = typeFromAST(schema, node.type);\n\n this._inputTypeStack.push(\n isInputType(inputType) ? inputType : undefined,\n );\n\n break;\n }\n\n case Kind.ARGUMENT: {\n var _this$getDirective;\n\n let argDef;\n let argType;\n const fieldOrDirective =\n (_this$getDirective = this.getDirective()) !== null &&\n _this$getDirective !== void 0\n ? _this$getDirective\n : this.getFieldDef();\n\n if (fieldOrDirective) {\n argDef = fieldOrDirective.args.find(\n (arg) => arg.name === node.name.value,\n );\n\n if (argDef) {\n argType = argDef.type;\n }\n }\n\n this._argument = argDef;\n\n this._defaultValueStack.push(argDef ? argDef.defaultValue : undefined);\n\n this._inputTypeStack.push(isInputType(argType) ? argType : undefined);\n\n break;\n }\n\n case Kind.LIST: {\n const listType = getNullableType(this.getInputType());\n const itemType = isListType(listType) ? listType.ofType : listType; // List positions never have a default value.\n\n this._defaultValueStack.push(undefined);\n\n this._inputTypeStack.push(isInputType(itemType) ? itemType : undefined);\n\n break;\n }\n\n case Kind.OBJECT_FIELD: {\n const objectType = getNamedType(this.getInputType());\n let inputFieldType;\n let inputField;\n\n if (isInputObjectType(objectType)) {\n inputField = objectType.getFields()[node.name.value];\n\n if (inputField) {\n inputFieldType = inputField.type;\n }\n }\n\n this._defaultValueStack.push(\n inputField ? inputField.defaultValue : undefined,\n );\n\n this._inputTypeStack.push(\n isInputType(inputFieldType) ? inputFieldType : undefined,\n );\n\n break;\n }\n\n case Kind.ENUM: {\n const enumType = getNamedType(this.getInputType());\n let enumValue;\n\n if (isEnumType(enumType)) {\n enumValue = enumType.getValue(node.value);\n }\n\n this._enumValue = enumValue;\n break;\n }\n\n default: // Ignore other nodes\n }\n }\n\n leave(node) {\n switch (node.kind) {\n case Kind.SELECTION_SET:\n this._parentTypeStack.pop();\n\n break;\n\n case Kind.FIELD:\n this._fieldDefStack.pop();\n\n this._typeStack.pop();\n\n break;\n\n case Kind.DIRECTIVE:\n this._directive = null;\n break;\n\n case Kind.OPERATION_DEFINITION:\n case Kind.INLINE_FRAGMENT:\n case Kind.FRAGMENT_DEFINITION:\n this._typeStack.pop();\n\n break;\n\n case Kind.VARIABLE_DEFINITION:\n this._inputTypeStack.pop();\n\n break;\n\n case Kind.ARGUMENT:\n this._argument = null;\n\n this._defaultValueStack.pop();\n\n this._inputTypeStack.pop();\n\n break;\n\n case Kind.LIST:\n case Kind.OBJECT_FIELD:\n this._defaultValueStack.pop();\n\n this._inputTypeStack.pop();\n\n break;\n\n case Kind.ENUM:\n this._enumValue = null;\n break;\n\n default: // Ignore other nodes\n }\n }\n}\n\n/**\n * Not exactly the same as the executor's definition of getFieldDef, in this\n * statically evaluated environment we do not always have an Object type,\n * and need to handle Interface and Union types.\n */\nfunction getFieldDef(schema, parentType, fieldNode) {\n const name = fieldNode.name.value;\n\n if (\n name === SchemaMetaFieldDef.name &&\n schema.getQueryType() === parentType\n ) {\n return SchemaMetaFieldDef;\n }\n\n if (name === TypeMetaFieldDef.name && schema.getQueryType() === parentType) {\n return TypeMetaFieldDef;\n }\n\n if (name === TypeNameMetaFieldDef.name && isCompositeType(parentType)) {\n return TypeNameMetaFieldDef;\n }\n\n if (isObjectType(parentType) || isInterfaceType(parentType)) {\n return parentType.getFields()[name];\n }\n}\n/**\n * Creates a new visitor instance which maintains a provided TypeInfo instance\n * along with visiting visitor.\n */\n\nexport function visitWithTypeInfo(typeInfo, visitor) {\n return {\n enter(...args) {\n const node = args[0];\n typeInfo.enter(node);\n const fn = getEnterLeaveForKind(visitor, node.kind).enter;\n\n if (fn) {\n const result = fn.apply(visitor, args);\n\n if (result !== undefined) {\n typeInfo.leave(node);\n\n if (isNode(result)) {\n typeInfo.enter(result);\n }\n }\n\n return result;\n }\n },\n\n leave(...args) {\n const node = args[0];\n const fn = getEnterLeaveForKind(visitor, node.kind).leave;\n let result;\n\n if (fn) {\n result = fn.apply(visitor, args);\n }\n\n typeInfo.leave(node);\n return result;\n },\n };\n}\n", "import { Kind } from './kinds.mjs';\nexport function isDefinitionNode(node) {\n return (\n isExecutableDefinitionNode(node) ||\n isTypeSystemDefinitionNode(node) ||\n isTypeSystemExtensionNode(node)\n );\n}\nexport function isExecutableDefinitionNode(node) {\n return (\n node.kind === Kind.OPERATION_DEFINITION ||\n node.kind === Kind.FRAGMENT_DEFINITION\n );\n}\nexport function isSelectionNode(node) {\n return (\n node.kind === Kind.FIELD ||\n node.kind === Kind.FRAGMENT_SPREAD ||\n node.kind === Kind.INLINE_FRAGMENT\n );\n}\nexport function isValueNode(node) {\n return (\n node.kind === Kind.VARIABLE ||\n node.kind === Kind.INT ||\n node.kind === Kind.FLOAT ||\n node.kind === Kind.STRING ||\n node.kind === Kind.BOOLEAN ||\n node.kind === Kind.NULL ||\n node.kind === Kind.ENUM ||\n node.kind === Kind.LIST ||\n node.kind === Kind.OBJECT\n );\n}\nexport function isConstValueNode(node) {\n return (\n isValueNode(node) &&\n (node.kind === Kind.LIST\n ? node.values.some(isConstValueNode)\n : node.kind === Kind.OBJECT\n ? node.fields.some((field) => isConstValueNode(field.value))\n : node.kind !== Kind.VARIABLE)\n );\n}\nexport function isTypeNode(node) {\n return (\n node.kind === Kind.NAMED_TYPE ||\n node.kind === Kind.LIST_TYPE ||\n node.kind === Kind.NON_NULL_TYPE\n );\n}\nexport function isTypeSystemDefinitionNode(node) {\n return (\n node.kind === Kind.SCHEMA_DEFINITION ||\n isTypeDefinitionNode(node) ||\n node.kind === Kind.DIRECTIVE_DEFINITION\n );\n}\nexport function isTypeDefinitionNode(node) {\n return (\n node.kind === Kind.SCALAR_TYPE_DEFINITION ||\n node.kind === Kind.OBJECT_TYPE_DEFINITION ||\n node.kind === Kind.INTERFACE_TYPE_DEFINITION ||\n node.kind === Kind.UNION_TYPE_DEFINITION ||\n node.kind === Kind.ENUM_TYPE_DEFINITION ||\n node.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION\n );\n}\nexport function isTypeSystemExtensionNode(node) {\n return node.kind === Kind.SCHEMA_EXTENSION || isTypeExtensionNode(node);\n}\nexport function isTypeExtensionNode(node) {\n return (\n node.kind === Kind.SCALAR_TYPE_EXTENSION ||\n node.kind === Kind.OBJECT_TYPE_EXTENSION ||\n node.kind === Kind.INTERFACE_TYPE_EXTENSION ||\n node.kind === Kind.UNION_TYPE_EXTENSION ||\n node.kind === Kind.ENUM_TYPE_EXTENSION ||\n node.kind === Kind.INPUT_OBJECT_TYPE_EXTENSION\n );\n}\n", "import { GraphQLError } from '../../error/GraphQLError.mjs';\nimport { Kind } from '../../language/kinds.mjs';\nimport { isExecutableDefinitionNode } from '../../language/predicates.mjs';\n\n/**\n * Executable definitions\n *\n * A GraphQL document is only valid for execution if all definitions are either\n * operation or fragment definitions.\n *\n * See https://spec.graphql.org/draft/#sec-Executable-Definitions\n */\nexport function ExecutableDefinitionsRule(context) {\n return {\n Document(node) {\n for (const definition of node.definitions) {\n if (!isExecutableDefinitionNode(definition)) {\n const defName =\n definition.kind === Kind.SCHEMA_DEFINITION ||\n definition.kind === Kind.SCHEMA_EXTENSION\n ? 'schema'\n : '\"' + definition.name.value + '\"';\n context.reportError(\n new GraphQLError(`The ${defName} definition is not executable.`, {\n nodes: definition,\n }),\n );\n }\n }\n\n return false;\n },\n };\n}\n", "import { didYouMean } from '../../jsutils/didYouMean.mjs';\nimport { naturalCompare } from '../../jsutils/naturalCompare.mjs';\nimport { suggestionList } from '../../jsutils/suggestionList.mjs';\nimport { GraphQLError } from '../../error/GraphQLError.mjs';\nimport {\n isAbstractType,\n isInterfaceType,\n isObjectType,\n} from '../../type/definition.mjs';\n\n/**\n * Fields on correct type\n *\n * A GraphQL document is only valid if all fields selected are defined by the\n * parent type, or are an allowed meta field such as __typename.\n *\n * See https://spec.graphql.org/draft/#sec-Field-Selections\n */\nexport function FieldsOnCorrectTypeRule(context) {\n return {\n Field(node) {\n const type = context.getParentType();\n\n if (type) {\n const fieldDef = context.getFieldDef();\n\n if (!fieldDef) {\n // This field doesn't exist, lets look for suggestions.\n const schema = context.getSchema();\n const fieldName = node.name.value; // First determine if there are any suggested types to condition on.\n\n let suggestion = didYouMean(\n 'to use an inline fragment on',\n getSuggestedTypeNames(schema, type, fieldName),\n ); // If there are no suggested types, then perhaps this was a typo?\n\n if (suggestion === '') {\n suggestion = didYouMean(getSuggestedFieldNames(type, fieldName));\n } // Report an error, including helpful suggestions.\n\n context.reportError(\n new GraphQLError(\n `Cannot query field \"${fieldName}\" on type \"${type.name}\".` +\n suggestion,\n {\n nodes: node,\n },\n ),\n );\n }\n }\n },\n };\n}\n/**\n * Go through all of the implementations of type, as well as the interfaces that\n * they implement. If any of those types include the provided field, suggest them,\n * sorted by how often the type is referenced.\n */\n\nfunction getSuggestedTypeNames(schema, type, fieldName) {\n if (!isAbstractType(type)) {\n // Must be an Object type, which does not have possible fields.\n return [];\n }\n\n const suggestedTypes = new Set();\n const usageCount = Object.create(null);\n\n for (const possibleType of schema.getPossibleTypes(type)) {\n if (!possibleType.getFields()[fieldName]) {\n continue;\n } // This object type defines this field.\n\n suggestedTypes.add(possibleType);\n usageCount[possibleType.name] = 1;\n\n for (const possibleInterface of possibleType.getInterfaces()) {\n var _usageCount$possibleI;\n\n if (!possibleInterface.getFields()[fieldName]) {\n continue;\n } // This interface type defines this field.\n\n suggestedTypes.add(possibleInterface);\n usageCount[possibleInterface.name] =\n ((_usageCount$possibleI = usageCount[possibleInterface.name]) !==\n null && _usageCount$possibleI !== void 0\n ? _usageCount$possibleI\n : 0) + 1;\n }\n }\n\n return [...suggestedTypes]\n .sort((typeA, typeB) => {\n // Suggest both interface and object types based on how common they are.\n const usageCountDiff = usageCount[typeB.name] - usageCount[typeA.name];\n\n if (usageCountDiff !== 0) {\n return usageCountDiff;\n } // Suggest super types first followed by subtypes\n\n if (isInterfaceType(typeA) && schema.isSubType(typeA, typeB)) {\n return -1;\n }\n\n if (isInterfaceType(typeB) && schema.isSubType(typeB, typeA)) {\n return 1;\n }\n\n return naturalCompare(typeA.name, typeB.name);\n })\n .map((x) => x.name);\n}\n/**\n * For the field name provided, determine if there are any similar field names\n * that may be the result of a typo.\n */\n\nfunction getSuggestedFieldNames(type, fieldName) {\n if (isObjectType(type) || isInterfaceType(type)) {\n const possibleFieldNames = Object.keys(type.getFields());\n return suggestionList(fieldName, possibleFieldNames);\n } // Otherwise, must be a Union type, which does not define fields.\n\n return [];\n}\n", "import { GraphQLError } from '../../error/GraphQLError.mjs';\nimport { print } from '../../language/printer.mjs';\nimport { isCompositeType } from '../../type/definition.mjs';\nimport { typeFromAST } from '../../utilities/typeFromAST.mjs';\n\n/**\n * Fragments on composite type\n *\n * Fragments use a type condition to determine if they apply, since fragments\n * can only be spread into a composite type (object, interface, or union), the\n * type condition must also be a composite type.\n *\n * See https://spec.graphql.org/draft/#sec-Fragments-On-Composite-Types\n */\nexport function FragmentsOnCompositeTypesRule(context) {\n return {\n InlineFragment(node) {\n const typeCondition = node.typeCondition;\n\n if (typeCondition) {\n const type = typeFromAST(context.getSchema(), typeCondition);\n\n if (type && !isCompositeType(type)) {\n const typeStr = print(typeCondition);\n context.reportError(\n new GraphQLError(\n `Fragment cannot condition on non composite type \"${typeStr}\".`,\n {\n nodes: typeCondition,\n },\n ),\n );\n }\n }\n },\n\n FragmentDefinition(node) {\n const type = typeFromAST(context.getSchema(), node.typeCondition);\n\n if (type && !isCompositeType(type)) {\n const typeStr = print(node.typeCondition);\n context.reportError(\n new GraphQLError(\n `Fragment \"${node.name.value}\" cannot condition on non composite type \"${typeStr}\".`,\n {\n nodes: node.typeCondition,\n },\n ),\n );\n }\n },\n };\n}\n", "import { didYouMean } from '../../jsutils/didYouMean.mjs';\nimport { suggestionList } from '../../jsutils/suggestionList.mjs';\nimport { GraphQLError } from '../../error/GraphQLError.mjs';\nimport { Kind } from '../../language/kinds.mjs';\nimport { specifiedDirectives } from '../../type/directives.mjs';\n\n/**\n * Known argument names\n *\n * A GraphQL field is only valid if all supplied arguments are defined by\n * that field.\n *\n * See https://spec.graphql.org/draft/#sec-Argument-Names\n * See https://spec.graphql.org/draft/#sec-Directives-Are-In-Valid-Locations\n */\nexport function KnownArgumentNamesRule(context) {\n return {\n // eslint-disable-next-line new-cap\n ...KnownArgumentNamesOnDirectivesRule(context),\n\n Argument(argNode) {\n const argDef = context.getArgument();\n const fieldDef = context.getFieldDef();\n const parentType = context.getParentType();\n\n if (!argDef && fieldDef && parentType) {\n const argName = argNode.name.value;\n const knownArgsNames = fieldDef.args.map((arg) => arg.name);\n const suggestions = suggestionList(argName, knownArgsNames);\n context.reportError(\n new GraphQLError(\n `Unknown argument \"${argName}\" on field \"${parentType.name}.${fieldDef.name}\".` +\n didYouMean(suggestions),\n {\n nodes: argNode,\n },\n ),\n );\n }\n },\n };\n}\n/**\n * @internal\n */\n\nexport function KnownArgumentNamesOnDirectivesRule(context) {\n const directiveArgs = Object.create(null);\n const schema = context.getSchema();\n const definedDirectives = schema\n ? schema.getDirectives()\n : specifiedDirectives;\n\n for (const directive of definedDirectives) {\n directiveArgs[directive.name] = directive.args.map((arg) => arg.name);\n }\n\n const astDefinitions = context.getDocument().definitions;\n\n for (const def of astDefinitions) {\n if (def.kind === Kind.DIRECTIVE_DEFINITION) {\n var _def$arguments;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n const argsNodes =\n (_def$arguments = def.arguments) !== null && _def$arguments !== void 0\n ? _def$arguments\n : [];\n directiveArgs[def.name.value] = argsNodes.map((arg) => arg.name.value);\n }\n }\n\n return {\n Directive(directiveNode) {\n const directiveName = directiveNode.name.value;\n const knownArgs = directiveArgs[directiveName];\n\n if (directiveNode.arguments && knownArgs) {\n for (const argNode of directiveNode.arguments) {\n const argName = argNode.name.value;\n\n if (!knownArgs.includes(argName)) {\n const suggestions = suggestionList(argName, knownArgs);\n context.reportError(\n new GraphQLError(\n `Unknown argument \"${argName}\" on directive \"@${directiveName}\".` +\n didYouMean(suggestions),\n {\n nodes: argNode,\n },\n ),\n );\n }\n }\n }\n\n return false;\n },\n };\n}\n", "import { inspect } from '../../jsutils/inspect.mjs';\nimport { invariant } from '../../jsutils/invariant.mjs';\nimport { GraphQLError } from '../../error/GraphQLError.mjs';\nimport { OperationTypeNode } from '../../language/ast.mjs';\nimport { DirectiveLocation } from '../../language/directiveLocation.mjs';\nimport { Kind } from '../../language/kinds.mjs';\nimport { specifiedDirectives } from '../../type/directives.mjs';\n\n/**\n * Known directives\n *\n * A GraphQL document is only valid if all `@directives` are known by the\n * schema and legally positioned.\n *\n * See https://spec.graphql.org/draft/#sec-Directives-Are-Defined\n */\nexport function KnownDirectivesRule(context) {\n const locationsMap = Object.create(null);\n const schema = context.getSchema();\n const definedDirectives = schema\n ? schema.getDirectives()\n : specifiedDirectives;\n\n for (const directive of definedDirectives) {\n locationsMap[directive.name] = directive.locations;\n }\n\n const astDefinitions = context.getDocument().definitions;\n\n for (const def of astDefinitions) {\n if (def.kind === Kind.DIRECTIVE_DEFINITION) {\n locationsMap[def.name.value] = def.locations.map((name) => name.value);\n }\n }\n\n return {\n Directive(node, _key, _parent, _path, ancestors) {\n const name = node.name.value;\n const locations = locationsMap[name];\n\n if (!locations) {\n context.reportError(\n new GraphQLError(`Unknown directive \"@${name}\".`, {\n nodes: node,\n }),\n );\n return;\n }\n\n const candidateLocation = getDirectiveLocationForASTPath(ancestors);\n\n if (candidateLocation && !locations.includes(candidateLocation)) {\n context.reportError(\n new GraphQLError(\n `Directive \"@${name}\" may not be used on ${candidateLocation}.`,\n {\n nodes: node,\n },\n ),\n );\n }\n },\n };\n}\n\nfunction getDirectiveLocationForASTPath(ancestors) {\n const appliedTo = ancestors[ancestors.length - 1];\n 'kind' in appliedTo || invariant(false);\n\n switch (appliedTo.kind) {\n case Kind.OPERATION_DEFINITION:\n return getDirectiveLocationForOperation(appliedTo.operation);\n\n case Kind.FIELD:\n return DirectiveLocation.FIELD;\n\n case Kind.FRAGMENT_SPREAD:\n return DirectiveLocation.FRAGMENT_SPREAD;\n\n case Kind.INLINE_FRAGMENT:\n return DirectiveLocation.INLINE_FRAGMENT;\n\n case Kind.FRAGMENT_DEFINITION:\n return DirectiveLocation.FRAGMENT_DEFINITION;\n\n case Kind.VARIABLE_DEFINITION:\n return DirectiveLocation.VARIABLE_DEFINITION;\n\n case Kind.SCHEMA_DEFINITION:\n case Kind.SCHEMA_EXTENSION:\n return DirectiveLocation.SCHEMA;\n\n case Kind.SCALAR_TYPE_DEFINITION:\n case Kind.SCALAR_TYPE_EXTENSION:\n return DirectiveLocation.SCALAR;\n\n case Kind.OBJECT_TYPE_DEFINITION:\n case Kind.OBJECT_TYPE_EXTENSION:\n return DirectiveLocation.OBJECT;\n\n case Kind.FIELD_DEFINITION:\n return DirectiveLocation.FIELD_DEFINITION;\n\n case Kind.INTERFACE_TYPE_DEFINITION:\n case Kind.INTERFACE_TYPE_EXTENSION:\n return DirectiveLocation.INTERFACE;\n\n case Kind.UNION_TYPE_DEFINITION:\n case Kind.UNION_TYPE_EXTENSION:\n return DirectiveLocation.UNION;\n\n case Kind.ENUM_TYPE_DEFINITION:\n case Kind.ENUM_TYPE_EXTENSION:\n return DirectiveLocation.ENUM;\n\n case Kind.ENUM_VALUE_DEFINITION:\n return DirectiveLocation.ENUM_VALUE;\n\n case Kind.INPUT_OBJECT_TYPE_DEFINITION:\n case Kind.INPUT_OBJECT_TYPE_EXTENSION:\n return DirectiveLocation.INPUT_OBJECT;\n\n case Kind.INPUT_VALUE_DEFINITION: {\n const parentNode = ancestors[ancestors.length - 3];\n 'kind' in parentNode || invariant(false);\n return parentNode.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION\n ? DirectiveLocation.INPUT_FIELD_DEFINITION\n : DirectiveLocation.ARGUMENT_DEFINITION;\n }\n // Not reachable, all possible types have been considered.\n\n /* c8 ignore next */\n\n default:\n false || invariant(false, 'Unexpected kind: ' + inspect(appliedTo.kind));\n }\n}\n\nfunction getDirectiveLocationForOperation(operation) {\n switch (operation) {\n case OperationTypeNode.QUERY:\n return DirectiveLocation.QUERY;\n\n case OperationTypeNode.MUTATION:\n return DirectiveLocation.MUTATION;\n\n case OperationTypeNode.SUBSCRIPTION:\n return DirectiveLocation.SUBSCRIPTION;\n }\n}\n", "import { GraphQLError } from '../../error/GraphQLError.mjs';\n\n/**\n * Known fragment names\n *\n * A GraphQL document is only valid if all `...Fragment` fragment spreads refer\n * to fragments defined in the same document.\n *\n * See https://spec.graphql.org/draft/#sec-Fragment-spread-target-defined\n */\nexport function KnownFragmentNamesRule(context) {\n return {\n FragmentSpread(node) {\n const fragmentName = node.name.value;\n const fragment = context.getFragment(fragmentName);\n\n if (!fragment) {\n context.reportError(\n new GraphQLError(`Unknown fragment \"${fragmentName}\".`, {\n nodes: node.name,\n }),\n );\n }\n },\n };\n}\n", "import { didYouMean } from '../../jsutils/didYouMean.mjs';\nimport { suggestionList } from '../../jsutils/suggestionList.mjs';\nimport { GraphQLError } from '../../error/GraphQLError.mjs';\nimport {\n isTypeDefinitionNode,\n isTypeSystemDefinitionNode,\n isTypeSystemExtensionNode,\n} from '../../language/predicates.mjs';\nimport { introspectionTypes } from '../../type/introspection.mjs';\nimport { specifiedScalarTypes } from '../../type/scalars.mjs';\n\n/**\n * Known type names\n *\n * A GraphQL document is only valid if referenced types (specifically\n * variable definitions and fragment conditions) are defined by the type schema.\n *\n * See https://spec.graphql.org/draft/#sec-Fragment-Spread-Type-Existence\n */\nexport function KnownTypeNamesRule(context) {\n const schema = context.getSchema();\n const existingTypesMap = schema ? schema.getTypeMap() : Object.create(null);\n const definedTypes = Object.create(null);\n\n for (const def of context.getDocument().definitions) {\n if (isTypeDefinitionNode(def)) {\n definedTypes[def.name.value] = true;\n }\n }\n\n const typeNames = [\n ...Object.keys(existingTypesMap),\n ...Object.keys(definedTypes),\n ];\n return {\n NamedType(node, _1, parent, _2, ancestors) {\n const typeName = node.name.value;\n\n if (!existingTypesMap[typeName] && !definedTypes[typeName]) {\n var _ancestors$;\n\n const definitionNode =\n (_ancestors$ = ancestors[2]) !== null && _ancestors$ !== void 0\n ? _ancestors$\n : parent;\n const isSDL = definitionNode != null && isSDLNode(definitionNode);\n\n if (isSDL && standardTypeNames.includes(typeName)) {\n return;\n }\n\n const suggestedTypes = suggestionList(\n typeName,\n isSDL ? standardTypeNames.concat(typeNames) : typeNames,\n );\n context.reportError(\n new GraphQLError(\n `Unknown type \"${typeName}\".` + didYouMean(suggestedTypes),\n {\n nodes: node,\n },\n ),\n );\n }\n },\n };\n}\nconst standardTypeNames = [...specifiedScalarTypes, ...introspectionTypes].map(\n (type) => type.name,\n);\n\nfunction isSDLNode(value) {\n return (\n 'kind' in value &&\n (isTypeSystemDefinitionNode(value) || isTypeSystemExtensionNode(value))\n );\n}\n", "import { GraphQLError } from '../../error/GraphQLError.mjs';\nimport { Kind } from '../../language/kinds.mjs';\n\n/**\n * Lone anonymous operation\n *\n * A GraphQL document is only valid if when it contains an anonymous operation\n * (the query short-hand) that it contains only that one operation definition.\n *\n * See https://spec.graphql.org/draft/#sec-Lone-Anonymous-Operation\n */\nexport function LoneAnonymousOperationRule(context) {\n let operationCount = 0;\n return {\n Document(node) {\n operationCount = node.definitions.filter(\n (definition) => definition.kind === Kind.OPERATION_DEFINITION,\n ).length;\n },\n\n OperationDefinition(node) {\n if (!node.name && operationCount > 1) {\n context.reportError(\n new GraphQLError(\n 'This anonymous operation must be the only defined operation.',\n {\n nodes: node,\n },\n ),\n );\n }\n },\n };\n}\n", "import { GraphQLError } from '../../error/GraphQLError.mjs';\n\n/**\n * Lone Schema definition\n *\n * A GraphQL document is only valid if it contains only one schema definition.\n */\nexport function LoneSchemaDefinitionRule(context) {\n var _ref, _ref2, _oldSchema$astNode;\n\n const oldSchema = context.getSchema();\n const alreadyDefined =\n (_ref =\n (_ref2 =\n (_oldSchema$astNode =\n oldSchema === null || oldSchema === void 0\n ? void 0\n : oldSchema.astNode) !== null && _oldSchema$astNode !== void 0\n ? _oldSchema$astNode\n : oldSchema === null || oldSchema === void 0\n ? void 0\n : oldSchema.getQueryType()) !== null && _ref2 !== void 0\n ? _ref2\n : oldSchema === null || oldSchema === void 0\n ? void 0\n : oldSchema.getMutationType()) !== null && _ref !== void 0\n ? _ref\n : oldSchema === null || oldSchema === void 0\n ? void 0\n : oldSchema.getSubscriptionType();\n let schemaDefinitionsCount = 0;\n return {\n SchemaDefinition(node) {\n if (alreadyDefined) {\n context.reportError(\n new GraphQLError(\n 'Cannot define a new schema within a schema extension.',\n {\n nodes: node,\n },\n ),\n );\n return;\n }\n\n if (schemaDefinitionsCount > 0) {\n context.reportError(\n new GraphQLError('Must provide only one schema definition.', {\n nodes: node,\n }),\n );\n }\n\n ++schemaDefinitionsCount;\n },\n };\n}\n", "import { GraphQLError } from '../../error/GraphQLError.mjs';\n\n/**\n * No fragment cycles\n *\n * The graph of fragment spreads must not form any cycles including spreading itself.\n * Otherwise an operation could infinitely spread or infinitely execute on cycles in the underlying data.\n *\n * See https://spec.graphql.org/draft/#sec-Fragment-spreads-must-not-form-cycles\n */\nexport function NoFragmentCyclesRule(context) {\n // Tracks already visited fragments to maintain O(N) and to ensure that cycles\n // are not redundantly reported.\n const visitedFrags = Object.create(null); // Array of AST nodes used to produce meaningful errors\n\n const spreadPath = []; // Position in the spread path\n\n const spreadPathIndexByName = Object.create(null);\n return {\n OperationDefinition: () => false,\n\n FragmentDefinition(node) {\n detectCycleRecursive(node);\n return false;\n },\n }; // This does a straight-forward DFS to find cycles.\n // It does not terminate when a cycle was found but continues to explore\n // the graph to find all possible cycles.\n\n function detectCycleRecursive(fragment) {\n if (visitedFrags[fragment.name.value]) {\n return;\n }\n\n const fragmentName = fragment.name.value;\n visitedFrags[fragmentName] = true;\n const spreadNodes = context.getFragmentSpreads(fragment.selectionSet);\n\n if (spreadNodes.length === 0) {\n return;\n }\n\n spreadPathIndexByName[fragmentName] = spreadPath.length;\n\n for (const spreadNode of spreadNodes) {\n const spreadName = spreadNode.name.value;\n const cycleIndex = spreadPathIndexByName[spreadName];\n spreadPath.push(spreadNode);\n\n if (cycleIndex === undefined) {\n const spreadFragment = context.getFragment(spreadName);\n\n if (spreadFragment) {\n detectCycleRecursive(spreadFragment);\n }\n } else {\n const cyclePath = spreadPath.slice(cycleIndex);\n const viaPath = cyclePath\n .slice(0, -1)\n .map((s) => '\"' + s.name.value + '\"')\n .join(', ');\n context.reportError(\n new GraphQLError(\n `Cannot spread fragment \"${spreadName}\" within itself` +\n (viaPath !== '' ? ` via ${viaPath}.` : '.'),\n {\n nodes: cyclePath,\n },\n ),\n );\n }\n\n spreadPath.pop();\n }\n\n spreadPathIndexByName[fragmentName] = undefined;\n }\n}\n", "import { GraphQLError } from '../../error/GraphQLError.mjs';\n\n/**\n * No undefined variables\n *\n * A GraphQL operation is only valid if all variables encountered, both directly\n * and via fragment spreads, are defined by that operation.\n *\n * See https://spec.graphql.org/draft/#sec-All-Variable-Uses-Defined\n */\nexport function NoUndefinedVariablesRule(context) {\n let variableNameDefined = Object.create(null);\n return {\n OperationDefinition: {\n enter() {\n variableNameDefined = Object.create(null);\n },\n\n leave(operation) {\n const usages = context.getRecursiveVariableUsages(operation);\n\n for (const { node } of usages) {\n const varName = node.name.value;\n\n if (variableNameDefined[varName] !== true) {\n context.reportError(\n new GraphQLError(\n operation.name\n ? `Variable \"$${varName}\" is not defined by operation \"${operation.name.value}\".`\n : `Variable \"$${varName}\" is not defined.`,\n {\n nodes: [node, operation],\n },\n ),\n );\n }\n }\n },\n },\n\n VariableDefinition(node) {\n variableNameDefined[node.variable.name.value] = true;\n },\n };\n}\n", "import { GraphQLError } from '../../error/GraphQLError.mjs';\n\n/**\n * No unused fragments\n *\n * A GraphQL document is only valid if all fragment definitions are spread\n * within operations, or spread within other fragments spread within operations.\n *\n * See https://spec.graphql.org/draft/#sec-Fragments-Must-Be-Used\n */\nexport function NoUnusedFragmentsRule(context) {\n const operationDefs = [];\n const fragmentDefs = [];\n return {\n OperationDefinition(node) {\n operationDefs.push(node);\n return false;\n },\n\n FragmentDefinition(node) {\n fragmentDefs.push(node);\n return false;\n },\n\n Document: {\n leave() {\n const fragmentNameUsed = Object.create(null);\n\n for (const operation of operationDefs) {\n for (const fragment of context.getRecursivelyReferencedFragments(\n operation,\n )) {\n fragmentNameUsed[fragment.name.value] = true;\n }\n }\n\n for (const fragmentDef of fragmentDefs) {\n const fragName = fragmentDef.name.value;\n\n if (fragmentNameUsed[fragName] !== true) {\n context.reportError(\n new GraphQLError(`Fragment \"${fragName}\" is never used.`, {\n nodes: fragmentDef,\n }),\n );\n }\n }\n },\n },\n };\n}\n", "import { GraphQLError } from '../../error/GraphQLError.mjs';\n\n/**\n * No unused variables\n *\n * A GraphQL operation is only valid if all variables defined by an operation\n * are used, either directly or within a spread fragment.\n *\n * See https://spec.graphql.org/draft/#sec-All-Variables-Used\n */\nexport function NoUnusedVariablesRule(context) {\n let variableDefs = [];\n return {\n OperationDefinition: {\n enter() {\n variableDefs = [];\n },\n\n leave(operation) {\n const variableNameUsed = Object.create(null);\n const usages = context.getRecursiveVariableUsages(operation);\n\n for (const { node } of usages) {\n variableNameUsed[node.name.value] = true;\n }\n\n for (const variableDef of variableDefs) {\n const variableName = variableDef.variable.name.value;\n\n if (variableNameUsed[variableName] !== true) {\n context.reportError(\n new GraphQLError(\n operation.name\n ? `Variable \"$${variableName}\" is never used in operation \"${operation.name.value}\".`\n : `Variable \"$${variableName}\" is never used.`,\n {\n nodes: variableDef,\n },\n ),\n );\n }\n }\n },\n },\n\n VariableDefinition(def) {\n variableDefs.push(def);\n },\n };\n}\n", "import { naturalCompare } from '../jsutils/naturalCompare.mjs';\nimport { Kind } from '../language/kinds.mjs';\n/**\n * Sort ValueNode.\n *\n * This function returns a sorted copy of the given ValueNode.\n *\n * @internal\n */\n\nexport function sortValueNode(valueNode) {\n switch (valueNode.kind) {\n case Kind.OBJECT:\n return { ...valueNode, fields: sortFields(valueNode.fields) };\n\n case Kind.LIST:\n return { ...valueNode, values: valueNode.values.map(sortValueNode) };\n\n case Kind.INT:\n case Kind.FLOAT:\n case Kind.STRING:\n case Kind.BOOLEAN:\n case Kind.NULL:\n case Kind.ENUM:\n case Kind.VARIABLE:\n return valueNode;\n }\n}\n\nfunction sortFields(fields) {\n return fields\n .map((fieldNode) => ({\n ...fieldNode,\n value: sortValueNode(fieldNode.value),\n }))\n .sort((fieldA, fieldB) =>\n naturalCompare(fieldA.name.value, fieldB.name.value),\n );\n}\n", "import { inspect } from '../../jsutils/inspect.mjs';\nimport { GraphQLError } from '../../error/GraphQLError.mjs';\nimport { Kind } from '../../language/kinds.mjs';\nimport { print } from '../../language/printer.mjs';\nimport {\n getNamedType,\n isInterfaceType,\n isLeafType,\n isListType,\n isNonNullType,\n isObjectType,\n} from '../../type/definition.mjs';\nimport { sortValueNode } from '../../utilities/sortValueNode.mjs';\nimport { typeFromAST } from '../../utilities/typeFromAST.mjs';\n\nfunction reasonMessage(reason) {\n if (Array.isArray(reason)) {\n return reason\n .map(\n ([responseName, subReason]) =>\n `subfields \"${responseName}\" conflict because ` +\n reasonMessage(subReason),\n )\n .join(' and ');\n }\n\n return reason;\n}\n/**\n * Overlapping fields can be merged\n *\n * A selection set is only valid if all fields (including spreading any\n * fragments) either correspond to distinct response names or can be merged\n * without ambiguity.\n *\n * See https://spec.graphql.org/draft/#sec-Field-Selection-Merging\n */\n\nexport function OverlappingFieldsCanBeMergedRule(context) {\n // A memoization for when two fragments are compared \"between\" each other for\n // conflicts. Two fragments may be compared many times, so memoizing this can\n // dramatically improve the performance of this validator.\n const comparedFragmentPairs = new PairSet(); // A cache for the \"field map\" and list of fragment names found in any given\n // selection set. Selection sets may be asked for this information multiple\n // times, so this improves the performance of this validator.\n\n const cachedFieldsAndFragmentNames = new Map();\n return {\n SelectionSet(selectionSet) {\n const conflicts = findConflictsWithinSelectionSet(\n context,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n context.getParentType(),\n selectionSet,\n );\n\n for (const [[responseName, reason], fields1, fields2] of conflicts) {\n const reasonMsg = reasonMessage(reason);\n context.reportError(\n new GraphQLError(\n `Fields \"${responseName}\" conflict because ${reasonMsg}. Use different aliases on the fields to fetch both if this was intentional.`,\n {\n nodes: fields1.concat(fields2),\n },\n ),\n );\n }\n },\n };\n}\n\n/**\n * Algorithm:\n *\n * Conflicts occur when two fields exist in a query which will produce the same\n * response name, but represent differing values, thus creating a conflict.\n * The algorithm below finds all conflicts via making a series of comparisons\n * between fields. In order to compare as few fields as possible, this makes\n * a series of comparisons \"within\" sets of fields and \"between\" sets of fields.\n *\n * Given any selection set, a collection produces both a set of fields by\n * also including all inline fragments, as well as a list of fragments\n * referenced by fragment spreads.\n *\n * A) Each selection set represented in the document first compares \"within\" its\n * collected set of fields, finding any conflicts between every pair of\n * overlapping fields.\n * Note: This is the *only time* that a the fields \"within\" a set are compared\n * to each other. After this only fields \"between\" sets are compared.\n *\n * B) Also, if any fragment is referenced in a selection set, then a\n * comparison is made \"between\" the original set of fields and the\n * referenced fragment.\n *\n * C) Also, if multiple fragments are referenced, then comparisons\n * are made \"between\" each referenced fragment.\n *\n * D) When comparing \"between\" a set of fields and a referenced fragment, first\n * a comparison is made between each field in the original set of fields and\n * each field in the the referenced set of fields.\n *\n * E) Also, if any fragment is referenced in the referenced selection set,\n * then a comparison is made \"between\" the original set of fields and the\n * referenced fragment (recursively referring to step D).\n *\n * F) When comparing \"between\" two fragments, first a comparison is made between\n * each field in the first referenced set of fields and each field in the the\n * second referenced set of fields.\n *\n * G) Also, any fragments referenced by the first must be compared to the\n * second, and any fragments referenced by the second must be compared to the\n * first (recursively referring to step F).\n *\n * H) When comparing two fields, if both have selection sets, then a comparison\n * is made \"between\" both selection sets, first comparing the set of fields in\n * the first selection set with the set of fields in the second.\n *\n * I) Also, if any fragment is referenced in either selection set, then a\n * comparison is made \"between\" the other set of fields and the\n * referenced fragment.\n *\n * J) Also, if two fragments are referenced in both selection sets, then a\n * comparison is made \"between\" the two fragments.\n *\n */\n// Find all conflicts found \"within\" a selection set, including those found\n// via spreading in fragments. Called when visiting each SelectionSet in the\n// GraphQL Document.\nfunction findConflictsWithinSelectionSet(\n context,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n parentType,\n selectionSet,\n) {\n const conflicts = [];\n const [fieldMap, fragmentNames] = getFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n parentType,\n selectionSet,\n ); // (A) Find find all conflicts \"within\" the fields of this selection set.\n // Note: this is the *only place* `collectConflictsWithin` is called.\n\n collectConflictsWithin(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n fieldMap,\n );\n\n if (fragmentNames.length !== 0) {\n // (B) Then collect conflicts between these fields and those represented by\n // each spread fragment name found.\n for (let i = 0; i < fragmentNames.length; i++) {\n collectConflictsBetweenFieldsAndFragment(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n false,\n fieldMap,\n fragmentNames[i],\n ); // (C) Then compare this fragment with all other fragments found in this\n // selection set to collect conflicts between fragments spread together.\n // This compares each item in the list of fragment names to every other\n // item in that same list (except for itself).\n\n for (let j = i + 1; j < fragmentNames.length; j++) {\n collectConflictsBetweenFragments(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n false,\n fragmentNames[i],\n fragmentNames[j],\n );\n }\n }\n }\n\n return conflicts;\n} // Collect all conflicts found between a set of fields and a fragment reference\n// including via spreading in any nested fragments.\n\nfunction collectConflictsBetweenFieldsAndFragment(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fieldMap,\n fragmentName,\n) {\n const fragment = context.getFragment(fragmentName);\n\n if (!fragment) {\n return;\n }\n\n const [fieldMap2, referencedFragmentNames] =\n getReferencedFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n fragment,\n ); // Do not compare a fragment's fieldMap to itself.\n\n if (fieldMap === fieldMap2) {\n return;\n } // (D) First collect any conflicts between the provided collection of fields\n // and the collection of fields represented by the given fragment.\n\n collectConflictsBetween(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fieldMap,\n fieldMap2,\n ); // (E) Then collect any conflicts between the provided collection of fields\n // and any fragment names found in the given fragment.\n\n for (const referencedFragmentName of referencedFragmentNames) {\n // Memoize so two fragments are not compared for conflicts more than once.\n if (\n comparedFragmentPairs.has(\n referencedFragmentName,\n fragmentName,\n areMutuallyExclusive,\n )\n ) {\n continue;\n }\n\n comparedFragmentPairs.add(\n referencedFragmentName,\n fragmentName,\n areMutuallyExclusive,\n );\n collectConflictsBetweenFieldsAndFragment(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fieldMap,\n referencedFragmentName,\n );\n }\n} // Collect all conflicts found between two fragments, including via spreading in\n// any nested fragments.\n\nfunction collectConflictsBetweenFragments(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fragmentName1,\n fragmentName2,\n) {\n // No need to compare a fragment to itself.\n if (fragmentName1 === fragmentName2) {\n return;\n } // Memoize so two fragments are not compared for conflicts more than once.\n\n if (\n comparedFragmentPairs.has(\n fragmentName1,\n fragmentName2,\n areMutuallyExclusive,\n )\n ) {\n return;\n }\n\n comparedFragmentPairs.add(fragmentName1, fragmentName2, areMutuallyExclusive);\n const fragment1 = context.getFragment(fragmentName1);\n const fragment2 = context.getFragment(fragmentName2);\n\n if (!fragment1 || !fragment2) {\n return;\n }\n\n const [fieldMap1, referencedFragmentNames1] =\n getReferencedFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n fragment1,\n );\n const [fieldMap2, referencedFragmentNames2] =\n getReferencedFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n fragment2,\n ); // (F) First, collect all conflicts between these two collections of fields\n // (not including any nested fragments).\n\n collectConflictsBetween(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fieldMap1,\n fieldMap2,\n ); // (G) Then collect conflicts between the first fragment and any nested\n // fragments spread in the second fragment.\n\n for (const referencedFragmentName2 of referencedFragmentNames2) {\n collectConflictsBetweenFragments(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fragmentName1,\n referencedFragmentName2,\n );\n } // (G) Then collect conflicts between the second fragment and any nested\n // fragments spread in the first fragment.\n\n for (const referencedFragmentName1 of referencedFragmentNames1) {\n collectConflictsBetweenFragments(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n referencedFragmentName1,\n fragmentName2,\n );\n }\n} // Find all conflicts found between two selection sets, including those found\n// via spreading in fragments. Called when determining if conflicts exist\n// between the sub-fields of two overlapping fields.\n\nfunction findConflictsBetweenSubSelectionSets(\n context,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n parentType1,\n selectionSet1,\n parentType2,\n selectionSet2,\n) {\n const conflicts = [];\n const [fieldMap1, fragmentNames1] = getFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n parentType1,\n selectionSet1,\n );\n const [fieldMap2, fragmentNames2] = getFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n parentType2,\n selectionSet2,\n ); // (H) First, collect all conflicts between these two collections of field.\n\n collectConflictsBetween(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fieldMap1,\n fieldMap2,\n ); // (I) Then collect conflicts between the first collection of fields and\n // those referenced by each fragment name associated with the second.\n\n for (const fragmentName2 of fragmentNames2) {\n collectConflictsBetweenFieldsAndFragment(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fieldMap1,\n fragmentName2,\n );\n } // (I) Then collect conflicts between the second collection of fields and\n // those referenced by each fragment name associated with the first.\n\n for (const fragmentName1 of fragmentNames1) {\n collectConflictsBetweenFieldsAndFragment(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fieldMap2,\n fragmentName1,\n );\n } // (J) Also collect conflicts between any fragment names by the first and\n // fragment names by the second. This compares each item in the first set of\n // names to each item in the second set of names.\n\n for (const fragmentName1 of fragmentNames1) {\n for (const fragmentName2 of fragmentNames2) {\n collectConflictsBetweenFragments(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fragmentName1,\n fragmentName2,\n );\n }\n }\n\n return conflicts;\n} // Collect all Conflicts \"within\" one collection of fields.\n\nfunction collectConflictsWithin(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n fieldMap,\n) {\n // A field map is a keyed collection, where each key represents a response\n // name and the value at that key is a list of all fields which provide that\n // response name. For every response name, if there are multiple fields, they\n // must be compared to find a potential conflict.\n for (const [responseName, fields] of Object.entries(fieldMap)) {\n // This compares every field in the list to every other field in this list\n // (except to itself). If the list only has one item, nothing needs to\n // be compared.\n if (fields.length > 1) {\n for (let i = 0; i < fields.length; i++) {\n for (let j = i + 1; j < fields.length; j++) {\n const conflict = findConflict(\n context,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n false, // within one collection is never mutually exclusive\n responseName,\n fields[i],\n fields[j],\n );\n\n if (conflict) {\n conflicts.push(conflict);\n }\n }\n }\n }\n }\n} // Collect all Conflicts between two collections of fields. This is similar to,\n// but different from the `collectConflictsWithin` function above. This check\n// assumes that `collectConflictsWithin` has already been called on each\n// provided collection of fields. This is true because this validator traverses\n// each individual selection set.\n\nfunction collectConflictsBetween(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n parentFieldsAreMutuallyExclusive,\n fieldMap1,\n fieldMap2,\n) {\n // A field map is a keyed collection, where each key represents a response\n // name and the value at that key is a list of all fields which provide that\n // response name. For any response name which appears in both provided field\n // maps, each field from the first field map must be compared to every field\n // in the second field map to find potential conflicts.\n for (const [responseName, fields1] of Object.entries(fieldMap1)) {\n const fields2 = fieldMap2[responseName];\n\n if (fields2) {\n for (const field1 of fields1) {\n for (const field2 of fields2) {\n const conflict = findConflict(\n context,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n parentFieldsAreMutuallyExclusive,\n responseName,\n field1,\n field2,\n );\n\n if (conflict) {\n conflicts.push(conflict);\n }\n }\n }\n }\n }\n} // Determines if there is a conflict between two particular fields, including\n// comparing their sub-fields.\n\nfunction findConflict(\n context,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n parentFieldsAreMutuallyExclusive,\n responseName,\n field1,\n field2,\n) {\n const [parentType1, node1, def1] = field1;\n const [parentType2, node2, def2] = field2; // If it is known that two fields could not possibly apply at the same\n // time, due to the parent types, then it is safe to permit them to diverge\n // in aliased field or arguments used as they will not present any ambiguity\n // by differing.\n // It is known that two parent types could never overlap if they are\n // different Object types. Interface or Union types might overlap - if not\n // in the current state of the schema, then perhaps in some future version,\n // thus may not safely diverge.\n\n const areMutuallyExclusive =\n parentFieldsAreMutuallyExclusive ||\n (parentType1 !== parentType2 &&\n isObjectType(parentType1) &&\n isObjectType(parentType2));\n\n if (!areMutuallyExclusive) {\n // Two aliases must refer to the same field.\n const name1 = node1.name.value;\n const name2 = node2.name.value;\n\n if (name1 !== name2) {\n return [\n [responseName, `\"${name1}\" and \"${name2}\" are different fields`],\n [node1],\n [node2],\n ];\n } // Two field calls must have the same arguments.\n\n if (stringifyArguments(node1) !== stringifyArguments(node2)) {\n return [\n [responseName, 'they have differing arguments'],\n [node1],\n [node2],\n ];\n }\n } // The return type for each field.\n\n const type1 = def1 === null || def1 === void 0 ? void 0 : def1.type;\n const type2 = def2 === null || def2 === void 0 ? void 0 : def2.type;\n\n if (type1 && type2 && doTypesConflict(type1, type2)) {\n return [\n [\n responseName,\n `they return conflicting types \"${inspect(type1)}\" and \"${inspect(\n type2,\n )}\"`,\n ],\n [node1],\n [node2],\n ];\n } // Collect and compare sub-fields. Use the same \"visited fragment names\" list\n // for both collections so fields in a fragment reference are never\n // compared to themselves.\n\n const selectionSet1 = node1.selectionSet;\n const selectionSet2 = node2.selectionSet;\n\n if (selectionSet1 && selectionSet2) {\n const conflicts = findConflictsBetweenSubSelectionSets(\n context,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n getNamedType(type1),\n selectionSet1,\n getNamedType(type2),\n selectionSet2,\n );\n return subfieldConflicts(conflicts, responseName, node1, node2);\n }\n}\n\nfunction stringifyArguments(fieldNode) {\n var _fieldNode$arguments;\n\n // FIXME https://github.com/graphql/graphql-js/issues/2203\n const args =\n /* c8 ignore next */\n (_fieldNode$arguments = fieldNode.arguments) !== null &&\n _fieldNode$arguments !== void 0\n ? _fieldNode$arguments\n : [];\n const inputObjectWithArgs = {\n kind: Kind.OBJECT,\n fields: args.map((argNode) => ({\n kind: Kind.OBJECT_FIELD,\n name: argNode.name,\n value: argNode.value,\n })),\n };\n return print(sortValueNode(inputObjectWithArgs));\n} // Two types conflict if both types could not apply to a value simultaneously.\n// Composite types are ignored as their individual field types will be compared\n// later recursively. However List and Non-Null types must match.\n\nfunction doTypesConflict(type1, type2) {\n if (isListType(type1)) {\n return isListType(type2)\n ? doTypesConflict(type1.ofType, type2.ofType)\n : true;\n }\n\n if (isListType(type2)) {\n return true;\n }\n\n if (isNonNullType(type1)) {\n return isNonNullType(type2)\n ? doTypesConflict(type1.ofType, type2.ofType)\n : true;\n }\n\n if (isNonNullType(type2)) {\n return true;\n }\n\n if (isLeafType(type1) || isLeafType(type2)) {\n return type1 !== type2;\n }\n\n return false;\n} // Given a selection set, return the collection of fields (a mapping of response\n// name to field nodes and definitions) as well as a list of fragment names\n// referenced via fragment spreads.\n\nfunction getFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n parentType,\n selectionSet,\n) {\n const cached = cachedFieldsAndFragmentNames.get(selectionSet);\n\n if (cached) {\n return cached;\n }\n\n const nodeAndDefs = Object.create(null);\n const fragmentNames = Object.create(null);\n\n _collectFieldsAndFragmentNames(\n context,\n parentType,\n selectionSet,\n nodeAndDefs,\n fragmentNames,\n );\n\n const result = [nodeAndDefs, Object.keys(fragmentNames)];\n cachedFieldsAndFragmentNames.set(selectionSet, result);\n return result;\n} // Given a reference to a fragment, return the represented collection of fields\n// as well as a list of nested fragment names referenced via fragment spreads.\n\nfunction getReferencedFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n fragment,\n) {\n // Short-circuit building a type from the node if possible.\n const cached = cachedFieldsAndFragmentNames.get(fragment.selectionSet);\n\n if (cached) {\n return cached;\n }\n\n const fragmentType = typeFromAST(context.getSchema(), fragment.typeCondition);\n return getFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n fragmentType,\n fragment.selectionSet,\n );\n}\n\nfunction _collectFieldsAndFragmentNames(\n context,\n parentType,\n selectionSet,\n nodeAndDefs,\n fragmentNames,\n) {\n for (const selection of selectionSet.selections) {\n switch (selection.kind) {\n case Kind.FIELD: {\n const fieldName = selection.name.value;\n let fieldDef;\n\n if (isObjectType(parentType) || isInterfaceType(parentType)) {\n fieldDef = parentType.getFields()[fieldName];\n }\n\n const responseName = selection.alias\n ? selection.alias.value\n : fieldName;\n\n if (!nodeAndDefs[responseName]) {\n nodeAndDefs[responseName] = [];\n }\n\n nodeAndDefs[responseName].push([parentType, selection, fieldDef]);\n break;\n }\n\n case Kind.FRAGMENT_SPREAD:\n fragmentNames[selection.name.value] = true;\n break;\n\n case Kind.INLINE_FRAGMENT: {\n const typeCondition = selection.typeCondition;\n const inlineFragmentType = typeCondition\n ? typeFromAST(context.getSchema(), typeCondition)\n : parentType;\n\n _collectFieldsAndFragmentNames(\n context,\n inlineFragmentType,\n selection.selectionSet,\n nodeAndDefs,\n fragmentNames,\n );\n\n break;\n }\n }\n }\n} // Given a series of Conflicts which occurred between two sub-fields, generate\n// a single Conflict.\n\nfunction subfieldConflicts(conflicts, responseName, node1, node2) {\n if (conflicts.length > 0) {\n return [\n [responseName, conflicts.map(([reason]) => reason)],\n [node1, ...conflicts.map(([, fields1]) => fields1).flat()],\n [node2, ...conflicts.map(([, , fields2]) => fields2).flat()],\n ];\n }\n}\n/**\n * A way to keep track of pairs of things when the ordering of the pair does not matter.\n */\n\nclass PairSet {\n constructor() {\n this._data = new Map();\n }\n\n has(a, b, areMutuallyExclusive) {\n var _this$_data$get;\n\n const [key1, key2] = a < b ? [a, b] : [b, a];\n const result =\n (_this$_data$get = this._data.get(key1)) === null ||\n _this$_data$get === void 0\n ? void 0\n : _this$_data$get.get(key2);\n\n if (result === undefined) {\n return false;\n } // areMutuallyExclusive being false is a superset of being true, hence if\n // we want to know if this PairSet \"has\" these two with no exclusivity,\n // we have to ensure it was added as such.\n\n return areMutuallyExclusive ? true : areMutuallyExclusive === result;\n }\n\n add(a, b, areMutuallyExclusive) {\n const [key1, key2] = a < b ? [a, b] : [b, a];\n\n const map = this._data.get(key1);\n\n if (map === undefined) {\n this._data.set(key1, new Map([[key2, areMutuallyExclusive]]));\n } else {\n map.set(key2, areMutuallyExclusive);\n }\n }\n}\n", "import { inspect } from '../../jsutils/inspect.mjs';\nimport { GraphQLError } from '../../error/GraphQLError.mjs';\nimport { isCompositeType } from '../../type/definition.mjs';\nimport { doTypesOverlap } from '../../utilities/typeComparators.mjs';\nimport { typeFromAST } from '../../utilities/typeFromAST.mjs';\n\n/**\n * Possible fragment spread\n *\n * A fragment spread is only valid if the type condition could ever possibly\n * be true: if there is a non-empty intersection of the possible parent types,\n * and possible types which pass the type condition.\n */\nexport function PossibleFragmentSpreadsRule(context) {\n return {\n InlineFragment(node) {\n const fragType = context.getType();\n const parentType = context.getParentType();\n\n if (\n isCompositeType(fragType) &&\n isCompositeType(parentType) &&\n !doTypesOverlap(context.getSchema(), fragType, parentType)\n ) {\n const parentTypeStr = inspect(parentType);\n const fragTypeStr = inspect(fragType);\n context.reportError(\n new GraphQLError(\n `Fragment cannot be spread here as objects of type \"${parentTypeStr}\" can never be of type \"${fragTypeStr}\".`,\n {\n nodes: node,\n },\n ),\n );\n }\n },\n\n FragmentSpread(node) {\n const fragName = node.name.value;\n const fragType = getFragmentType(context, fragName);\n const parentType = context.getParentType();\n\n if (\n fragType &&\n parentType &&\n !doTypesOverlap(context.getSchema(), fragType, parentType)\n ) {\n const parentTypeStr = inspect(parentType);\n const fragTypeStr = inspect(fragType);\n context.reportError(\n new GraphQLError(\n `Fragment \"${fragName}\" cannot be spread here as objects of type \"${parentTypeStr}\" can never be of type \"${fragTypeStr}\".`,\n {\n nodes: node,\n },\n ),\n );\n }\n },\n };\n}\n\nfunction getFragmentType(context, name) {\n const frag = context.getFragment(name);\n\n if (frag) {\n const type = typeFromAST(context.getSchema(), frag.typeCondition);\n\n if (isCompositeType(type)) {\n return type;\n }\n }\n}\n", "import { didYouMean } from '../../jsutils/didYouMean.mjs';\nimport { inspect } from '../../jsutils/inspect.mjs';\nimport { invariant } from '../../jsutils/invariant.mjs';\nimport { suggestionList } from '../../jsutils/suggestionList.mjs';\nimport { GraphQLError } from '../../error/GraphQLError.mjs';\nimport { Kind } from '../../language/kinds.mjs';\nimport { isTypeDefinitionNode } from '../../language/predicates.mjs';\nimport {\n isEnumType,\n isInputObjectType,\n isInterfaceType,\n isObjectType,\n isScalarType,\n isUnionType,\n} from '../../type/definition.mjs';\n\n/**\n * Possible type extension\n *\n * A type extension is only valid if the type is defined and has the same kind.\n */\nexport function PossibleTypeExtensionsRule(context) {\n const schema = context.getSchema();\n const definedTypes = Object.create(null);\n\n for (const def of context.getDocument().definitions) {\n if (isTypeDefinitionNode(def)) {\n definedTypes[def.name.value] = def;\n }\n }\n\n return {\n ScalarTypeExtension: checkExtension,\n ObjectTypeExtension: checkExtension,\n InterfaceTypeExtension: checkExtension,\n UnionTypeExtension: checkExtension,\n EnumTypeExtension: checkExtension,\n InputObjectTypeExtension: checkExtension,\n };\n\n function checkExtension(node) {\n const typeName = node.name.value;\n const defNode = definedTypes[typeName];\n const existingType =\n schema === null || schema === void 0 ? void 0 : schema.getType(typeName);\n let expectedKind;\n\n if (defNode) {\n expectedKind = defKindToExtKind[defNode.kind];\n } else if (existingType) {\n expectedKind = typeToExtKind(existingType);\n }\n\n if (expectedKind) {\n if (expectedKind !== node.kind) {\n const kindStr = extensionKindToTypeName(node.kind);\n context.reportError(\n new GraphQLError(`Cannot extend non-${kindStr} type \"${typeName}\".`, {\n nodes: defNode ? [defNode, node] : node,\n }),\n );\n }\n } else {\n const allTypeNames = Object.keys({\n ...definedTypes,\n ...(schema === null || schema === void 0\n ? void 0\n : schema.getTypeMap()),\n });\n const suggestedTypes = suggestionList(typeName, allTypeNames);\n context.reportError(\n new GraphQLError(\n `Cannot extend type \"${typeName}\" because it is not defined.` +\n didYouMean(suggestedTypes),\n {\n nodes: node.name,\n },\n ),\n );\n }\n }\n}\nconst defKindToExtKind = {\n [Kind.SCALAR_TYPE_DEFINITION]: Kind.SCALAR_TYPE_EXTENSION,\n [Kind.OBJECT_TYPE_DEFINITION]: Kind.OBJECT_TYPE_EXTENSION,\n [Kind.INTERFACE_TYPE_DEFINITION]: Kind.INTERFACE_TYPE_EXTENSION,\n [Kind.UNION_TYPE_DEFINITION]: Kind.UNION_TYPE_EXTENSION,\n [Kind.ENUM_TYPE_DEFINITION]: Kind.ENUM_TYPE_EXTENSION,\n [Kind.INPUT_OBJECT_TYPE_DEFINITION]: Kind.INPUT_OBJECT_TYPE_EXTENSION,\n};\n\nfunction typeToExtKind(type) {\n if (isScalarType(type)) {\n return Kind.SCALAR_TYPE_EXTENSION;\n }\n\n if (isObjectType(type)) {\n return Kind.OBJECT_TYPE_EXTENSION;\n }\n\n if (isInterfaceType(type)) {\n return Kind.INTERFACE_TYPE_EXTENSION;\n }\n\n if (isUnionType(type)) {\n return Kind.UNION_TYPE_EXTENSION;\n }\n\n if (isEnumType(type)) {\n return Kind.ENUM_TYPE_EXTENSION;\n }\n\n if (isInputObjectType(type)) {\n return Kind.INPUT_OBJECT_TYPE_EXTENSION;\n }\n /* c8 ignore next 3 */\n // Not reachable. All possible types have been considered\n\n false || invariant(false, 'Unexpected type: ' + inspect(type));\n}\n\nfunction extensionKindToTypeName(kind) {\n switch (kind) {\n case Kind.SCALAR_TYPE_EXTENSION:\n return 'scalar';\n\n case Kind.OBJECT_TYPE_EXTENSION:\n return 'object';\n\n case Kind.INTERFACE_TYPE_EXTENSION:\n return 'interface';\n\n case Kind.UNION_TYPE_EXTENSION:\n return 'union';\n\n case Kind.ENUM_TYPE_EXTENSION:\n return 'enum';\n\n case Kind.INPUT_OBJECT_TYPE_EXTENSION:\n return 'input object';\n // Not reachable. All possible types have been considered\n\n /* c8 ignore next */\n\n default:\n false || invariant(false, 'Unexpected kind: ' + inspect(kind));\n }\n}\n", "import { inspect } from '../../jsutils/inspect.mjs';\nimport { keyMap } from '../../jsutils/keyMap.mjs';\nimport { GraphQLError } from '../../error/GraphQLError.mjs';\nimport { Kind } from '../../language/kinds.mjs';\nimport { print } from '../../language/printer.mjs';\nimport { isRequiredArgument, isType } from '../../type/definition.mjs';\nimport { specifiedDirectives } from '../../type/directives.mjs';\n\n/**\n * Provided required arguments\n *\n * A field or directive is only valid if all required (non-null without a\n * default value) field arguments have been provided.\n */\nexport function ProvidedRequiredArgumentsRule(context) {\n return {\n // eslint-disable-next-line new-cap\n ...ProvidedRequiredArgumentsOnDirectivesRule(context),\n Field: {\n // Validate on leave to allow for deeper errors to appear first.\n leave(fieldNode) {\n var _fieldNode$arguments;\n\n const fieldDef = context.getFieldDef();\n\n if (!fieldDef) {\n return false;\n }\n\n const providedArgs = new Set( // FIXME: https://github.com/graphql/graphql-js/issues/2203\n /* c8 ignore next */\n (_fieldNode$arguments = fieldNode.arguments) === null ||\n _fieldNode$arguments === void 0\n ? void 0\n : _fieldNode$arguments.map((arg) => arg.name.value),\n );\n\n for (const argDef of fieldDef.args) {\n if (!providedArgs.has(argDef.name) && isRequiredArgument(argDef)) {\n const argTypeStr = inspect(argDef.type);\n context.reportError(\n new GraphQLError(\n `Field \"${fieldDef.name}\" argument \"${argDef.name}\" of type \"${argTypeStr}\" is required, but it was not provided.`,\n {\n nodes: fieldNode,\n },\n ),\n );\n }\n }\n },\n },\n };\n}\n/**\n * @internal\n */\n\nexport function ProvidedRequiredArgumentsOnDirectivesRule(context) {\n var _schema$getDirectives;\n\n const requiredArgsMap = Object.create(null);\n const schema = context.getSchema();\n const definedDirectives =\n (_schema$getDirectives =\n schema === null || schema === void 0\n ? void 0\n : schema.getDirectives()) !== null && _schema$getDirectives !== void 0\n ? _schema$getDirectives\n : specifiedDirectives;\n\n for (const directive of definedDirectives) {\n requiredArgsMap[directive.name] = keyMap(\n directive.args.filter(isRequiredArgument),\n (arg) => arg.name,\n );\n }\n\n const astDefinitions = context.getDocument().definitions;\n\n for (const def of astDefinitions) {\n if (def.kind === Kind.DIRECTIVE_DEFINITION) {\n var _def$arguments;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n const argNodes =\n (_def$arguments = def.arguments) !== null && _def$arguments !== void 0\n ? _def$arguments\n : [];\n requiredArgsMap[def.name.value] = keyMap(\n argNodes.filter(isRequiredArgumentNode),\n (arg) => arg.name.value,\n );\n }\n }\n\n return {\n Directive: {\n // Validate on leave to allow for deeper errors to appear first.\n leave(directiveNode) {\n const directiveName = directiveNode.name.value;\n const requiredArgs = requiredArgsMap[directiveName];\n\n if (requiredArgs) {\n var _directiveNode$argume;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n const argNodes =\n (_directiveNode$argume = directiveNode.arguments) !== null &&\n _directiveNode$argume !== void 0\n ? _directiveNode$argume\n : [];\n const argNodeMap = new Set(argNodes.map((arg) => arg.name.value));\n\n for (const [argName, argDef] of Object.entries(requiredArgs)) {\n if (!argNodeMap.has(argName)) {\n const argType = isType(argDef.type)\n ? inspect(argDef.type)\n : print(argDef.type);\n context.reportError(\n new GraphQLError(\n `Directive \"@${directiveName}\" argument \"${argName}\" of type \"${argType}\" is required, but it was not provided.`,\n {\n nodes: directiveNode,\n },\n ),\n );\n }\n }\n }\n },\n },\n };\n}\n\nfunction isRequiredArgumentNode(arg) {\n return arg.type.kind === Kind.NON_NULL_TYPE && arg.defaultValue == null;\n}\n", "import { inspect } from '../../jsutils/inspect.mjs';\nimport { GraphQLError } from '../../error/GraphQLError.mjs';\nimport { getNamedType, isLeafType } from '../../type/definition.mjs';\n\n/**\n * Scalar leafs\n *\n * A GraphQL document is valid only if all leaf fields (fields without\n * sub selections) are of scalar or enum types.\n */\nexport function ScalarLeafsRule(context) {\n return {\n Field(node) {\n const type = context.getType();\n const selectionSet = node.selectionSet;\n\n if (type) {\n if (isLeafType(getNamedType(type))) {\n if (selectionSet) {\n const fieldName = node.name.value;\n const typeStr = inspect(type);\n context.reportError(\n new GraphQLError(\n `Field \"${fieldName}\" must not have a selection since type \"${typeStr}\" has no subfields.`,\n {\n nodes: selectionSet,\n },\n ),\n );\n }\n } else if (!selectionSet) {\n const fieldName = node.name.value;\n const typeStr = inspect(type);\n context.reportError(\n new GraphQLError(\n `Field \"${fieldName}\" of type \"${typeStr}\" must have a selection of subfields. Did you mean \"${fieldName} { ... }\"?`,\n {\n nodes: node,\n },\n ),\n );\n }\n }\n },\n };\n}\n", "/**\n * Build a string describing the path.\n */\nexport function printPathArray(path) {\n return path\n .map((key) =>\n typeof key === 'number' ? '[' + key.toString() + ']' : '.' + key,\n )\n .join('');\n}\n", "/**\n * Given a Path and a key, return a new Path containing the new key.\n */\nexport function addPath(prev, key, typename) {\n return {\n prev,\n key,\n typename,\n };\n}\n/**\n * Given a Path, return an Array of the path keys.\n */\n\nexport function pathToArray(path) {\n const flattened = [];\n let curr = path;\n\n while (curr) {\n flattened.push(curr.key);\n curr = curr.prev;\n }\n\n return flattened.reverse();\n}\n", "import { didYouMean } from '../jsutils/didYouMean.mjs';\nimport { inspect } from '../jsutils/inspect.mjs';\nimport { invariant } from '../jsutils/invariant.mjs';\nimport { isIterableObject } from '../jsutils/isIterableObject.mjs';\nimport { isObjectLike } from '../jsutils/isObjectLike.mjs';\nimport { addPath, pathToArray } from '../jsutils/Path.mjs';\nimport { printPathArray } from '../jsutils/printPathArray.mjs';\nimport { suggestionList } from '../jsutils/suggestionList.mjs';\nimport { GraphQLError } from '../error/GraphQLError.mjs';\nimport {\n isInputObjectType,\n isLeafType,\n isListType,\n isNonNullType,\n} from '../type/definition.mjs';\n\n/**\n * Coerces a JavaScript value given a GraphQL Input Type.\n */\nexport function coerceInputValue(inputValue, type, onError = defaultOnError) {\n return coerceInputValueImpl(inputValue, type, onError, undefined);\n}\n\nfunction defaultOnError(path, invalidValue, error) {\n let errorPrefix = 'Invalid value ' + inspect(invalidValue);\n\n if (path.length > 0) {\n errorPrefix += ` at \"value${printPathArray(path)}\"`;\n }\n\n error.message = errorPrefix + ': ' + error.message;\n throw error;\n}\n\nfunction coerceInputValueImpl(inputValue, type, onError, path) {\n if (isNonNullType(type)) {\n if (inputValue != null) {\n return coerceInputValueImpl(inputValue, type.ofType, onError, path);\n }\n\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(\n `Expected non-nullable type \"${inspect(type)}\" not to be null.`,\n ),\n );\n return;\n }\n\n if (inputValue == null) {\n // Explicitly return the value null.\n return null;\n }\n\n if (isListType(type)) {\n const itemType = type.ofType;\n\n if (isIterableObject(inputValue)) {\n return Array.from(inputValue, (itemValue, index) => {\n const itemPath = addPath(path, index, undefined);\n return coerceInputValueImpl(itemValue, itemType, onError, itemPath);\n });\n } // Lists accept a non-list value as a list of one.\n\n return [coerceInputValueImpl(inputValue, itemType, onError, path)];\n }\n\n if (isInputObjectType(type)) {\n if (!isObjectLike(inputValue)) {\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(`Expected type \"${type.name}\" to be an object.`),\n );\n return;\n }\n\n const coercedValue = {};\n const fieldDefs = type.getFields();\n\n for (const field of Object.values(fieldDefs)) {\n const fieldValue = inputValue[field.name];\n\n if (fieldValue === undefined) {\n if (field.defaultValue !== undefined) {\n coercedValue[field.name] = field.defaultValue;\n } else if (isNonNullType(field.type)) {\n const typeStr = inspect(field.type);\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(\n `Field \"${field.name}\" of required type \"${typeStr}\" was not provided.`,\n ),\n );\n }\n\n continue;\n }\n\n coercedValue[field.name] = coerceInputValueImpl(\n fieldValue,\n field.type,\n onError,\n addPath(path, field.name, type.name),\n );\n } // Ensure every provided field is defined.\n\n for (const fieldName of Object.keys(inputValue)) {\n if (!fieldDefs[fieldName]) {\n const suggestions = suggestionList(\n fieldName,\n Object.keys(type.getFields()),\n );\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(\n `Field \"${fieldName}\" is not defined by type \"${type.name}\".` +\n didYouMean(suggestions),\n ),\n );\n }\n }\n\n return coercedValue;\n }\n\n if (isLeafType(type)) {\n let parseResult; // Scalars and Enums determine if a input value is valid via parseValue(),\n // which can throw to indicate failure. If it throws, maintain a reference\n // to the original error.\n\n try {\n parseResult = type.parseValue(inputValue);\n } catch (error) {\n if (error instanceof GraphQLError) {\n onError(pathToArray(path), inputValue, error);\n } else {\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(`Expected type \"${type.name}\". ` + error.message, {\n originalError: error,\n }),\n );\n }\n\n return;\n }\n\n if (parseResult === undefined) {\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(`Expected type \"${type.name}\".`),\n );\n }\n\n return parseResult;\n }\n /* c8 ignore next 3 */\n // Not reachable, all possible types have been considered.\n\n false || invariant(false, 'Unexpected input type: ' + inspect(type));\n}\n", "import { inspect } from '../jsutils/inspect.mjs';\nimport { invariant } from '../jsutils/invariant.mjs';\nimport { keyMap } from '../jsutils/keyMap.mjs';\nimport { Kind } from '../language/kinds.mjs';\nimport {\n isInputObjectType,\n isLeafType,\n isListType,\n isNonNullType,\n} from '../type/definition.mjs';\n/**\n * Produces a JavaScript value given a GraphQL Value AST.\n *\n * A GraphQL type must be provided, which will be used to interpret different\n * GraphQL Value literals.\n *\n * Returns `undefined` when the value could not be validly coerced according to\n * the provided type.\n *\n * | GraphQL Value | JSON Value |\n * | -------------------- | ------------- |\n * | Input Object | Object |\n * | List | Array |\n * | Boolean | Boolean |\n * | String | String |\n * | Int / Float | Number |\n * | Enum Value | Unknown |\n * | NullValue | null |\n *\n */\n\nexport function valueFromAST(valueNode, type, variables) {\n if (!valueNode) {\n // When there is no node, then there is also no value.\n // Importantly, this is different from returning the value null.\n return;\n }\n\n if (valueNode.kind === Kind.VARIABLE) {\n const variableName = valueNode.name.value;\n\n if (variables == null || variables[variableName] === undefined) {\n // No valid return value.\n return;\n }\n\n const variableValue = variables[variableName];\n\n if (variableValue === null && isNonNullType(type)) {\n return; // Invalid: intentionally return no value.\n } // Note: This does no further checking that this variable is correct.\n // This assumes that this query has been validated and the variable\n // usage here is of the correct type.\n\n return variableValue;\n }\n\n if (isNonNullType(type)) {\n if (valueNode.kind === Kind.NULL) {\n return; // Invalid: intentionally return no value.\n }\n\n return valueFromAST(valueNode, type.ofType, variables);\n }\n\n if (valueNode.kind === Kind.NULL) {\n // This is explicitly returning the value null.\n return null;\n }\n\n if (isListType(type)) {\n const itemType = type.ofType;\n\n if (valueNode.kind === Kind.LIST) {\n const coercedValues = [];\n\n for (const itemNode of valueNode.values) {\n if (isMissingVariable(itemNode, variables)) {\n // If an array contains a missing variable, it is either coerced to\n // null or if the item type is non-null, it considered invalid.\n if (isNonNullType(itemType)) {\n return; // Invalid: intentionally return no value.\n }\n\n coercedValues.push(null);\n } else {\n const itemValue = valueFromAST(itemNode, itemType, variables);\n\n if (itemValue === undefined) {\n return; // Invalid: intentionally return no value.\n }\n\n coercedValues.push(itemValue);\n }\n }\n\n return coercedValues;\n }\n\n const coercedValue = valueFromAST(valueNode, itemType, variables);\n\n if (coercedValue === undefined) {\n return; // Invalid: intentionally return no value.\n }\n\n return [coercedValue];\n }\n\n if (isInputObjectType(type)) {\n if (valueNode.kind !== Kind.OBJECT) {\n return; // Invalid: intentionally return no value.\n }\n\n const coercedObj = Object.create(null);\n const fieldNodes = keyMap(valueNode.fields, (field) => field.name.value);\n\n for (const field of Object.values(type.getFields())) {\n const fieldNode = fieldNodes[field.name];\n\n if (!fieldNode || isMissingVariable(fieldNode.value, variables)) {\n if (field.defaultValue !== undefined) {\n coercedObj[field.name] = field.defaultValue;\n } else if (isNonNullType(field.type)) {\n return; // Invalid: intentionally return no value.\n }\n\n continue;\n }\n\n const fieldValue = valueFromAST(fieldNode.value, field.type, variables);\n\n if (fieldValue === undefined) {\n return; // Invalid: intentionally return no value.\n }\n\n coercedObj[field.name] = fieldValue;\n }\n\n return coercedObj;\n }\n\n if (isLeafType(type)) {\n // Scalars and Enums fulfill parsing a literal value via parseLiteral().\n // Invalid values represent a failure to parse correctly, in which case\n // no value is returned.\n let result;\n\n try {\n result = type.parseLiteral(valueNode, variables);\n } catch (_error) {\n return; // Invalid: intentionally return no value.\n }\n\n if (result === undefined) {\n return; // Invalid: intentionally return no value.\n }\n\n return result;\n }\n /* c8 ignore next 3 */\n // Not reachable, all possible input types have been considered.\n\n false || invariant(false, 'Unexpected input type: ' + inspect(type));\n} // Returns true if the provided valueNode is a variable which is not defined\n// in the set of variables.\n\nfunction isMissingVariable(valueNode, variables) {\n return (\n valueNode.kind === Kind.VARIABLE &&\n (variables == null || variables[valueNode.name.value] === undefined)\n );\n}\n", "import { inspect } from '../jsutils/inspect.mjs';\nimport { keyMap } from '../jsutils/keyMap.mjs';\nimport { printPathArray } from '../jsutils/printPathArray.mjs';\nimport { GraphQLError } from '../error/GraphQLError.mjs';\nimport { Kind } from '../language/kinds.mjs';\nimport { print } from '../language/printer.mjs';\nimport { isInputType, isNonNullType } from '../type/definition.mjs';\nimport { coerceInputValue } from '../utilities/coerceInputValue.mjs';\nimport { typeFromAST } from '../utilities/typeFromAST.mjs';\nimport { valueFromAST } from '../utilities/valueFromAST.mjs';\n\n/**\n * Prepares an object map of variableValues of the correct type based on the\n * provided variable definitions and arbitrary input. If the input cannot be\n * parsed to match the variable definitions, a GraphQLError will be thrown.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n */\nexport function getVariableValues(schema, varDefNodes, inputs, options) {\n const errors = [];\n const maxErrors =\n options === null || options === void 0 ? void 0 : options.maxErrors;\n\n try {\n const coerced = coerceVariableValues(\n schema,\n varDefNodes,\n inputs,\n (error) => {\n if (maxErrors != null && errors.length >= maxErrors) {\n throw new GraphQLError(\n 'Too many errors processing variables, error limit reached. Execution aborted.',\n );\n }\n\n errors.push(error);\n },\n );\n\n if (errors.length === 0) {\n return {\n coerced,\n };\n }\n } catch (error) {\n errors.push(error);\n }\n\n return {\n errors,\n };\n}\n\nfunction coerceVariableValues(schema, varDefNodes, inputs, onError) {\n const coercedValues = {};\n\n for (const varDefNode of varDefNodes) {\n const varName = varDefNode.variable.name.value;\n const varType = typeFromAST(schema, varDefNode.type);\n\n if (!isInputType(varType)) {\n // Must use input types for variables. This should be caught during\n // validation, however is checked again here for safety.\n const varTypeStr = print(varDefNode.type);\n onError(\n new GraphQLError(\n `Variable \"$${varName}\" expected value of type \"${varTypeStr}\" which cannot be used as an input type.`,\n {\n nodes: varDefNode.type,\n },\n ),\n );\n continue;\n }\n\n if (!hasOwnProperty(inputs, varName)) {\n if (varDefNode.defaultValue) {\n coercedValues[varName] = valueFromAST(varDefNode.defaultValue, varType);\n } else if (isNonNullType(varType)) {\n const varTypeStr = inspect(varType);\n onError(\n new GraphQLError(\n `Variable \"$${varName}\" of required type \"${varTypeStr}\" was not provided.`,\n {\n nodes: varDefNode,\n },\n ),\n );\n }\n\n continue;\n }\n\n const value = inputs[varName];\n\n if (value === null && isNonNullType(varType)) {\n const varTypeStr = inspect(varType);\n onError(\n new GraphQLError(\n `Variable \"$${varName}\" of non-null type \"${varTypeStr}\" must not be null.`,\n {\n nodes: varDefNode,\n },\n ),\n );\n continue;\n }\n\n coercedValues[varName] = coerceInputValue(\n value,\n varType,\n (path, invalidValue, error) => {\n let prefix =\n `Variable \"$${varName}\" got invalid value ` + inspect(invalidValue);\n\n if (path.length > 0) {\n prefix += ` at \"${varName}${printPathArray(path)}\"`;\n }\n\n onError(\n new GraphQLError(prefix + '; ' + error.message, {\n nodes: varDefNode,\n originalError: error.originalError,\n }),\n );\n },\n );\n }\n\n return coercedValues;\n}\n/**\n * Prepares an object map of argument values given a list of argument\n * definitions and list of argument AST nodes.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n */\n\nexport function getArgumentValues(def, node, variableValues) {\n var _node$arguments;\n\n const coercedValues = {}; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n\n const argumentNodes =\n (_node$arguments = node.arguments) !== null && _node$arguments !== void 0\n ? _node$arguments\n : [];\n const argNodeMap = keyMap(argumentNodes, (arg) => arg.name.value);\n\n for (const argDef of def.args) {\n const name = argDef.name;\n const argType = argDef.type;\n const argumentNode = argNodeMap[name];\n\n if (!argumentNode) {\n if (argDef.defaultValue !== undefined) {\n coercedValues[name] = argDef.defaultValue;\n } else if (isNonNullType(argType)) {\n throw new GraphQLError(\n `Argument \"${name}\" of required type \"${inspect(argType)}\" ` +\n 'was not provided.',\n {\n nodes: node,\n },\n );\n }\n\n continue;\n }\n\n const valueNode = argumentNode.value;\n let isNull = valueNode.kind === Kind.NULL;\n\n if (valueNode.kind === Kind.VARIABLE) {\n const variableName = valueNode.name.value;\n\n if (\n variableValues == null ||\n !hasOwnProperty(variableValues, variableName)\n ) {\n if (argDef.defaultValue !== undefined) {\n coercedValues[name] = argDef.defaultValue;\n } else if (isNonNullType(argType)) {\n throw new GraphQLError(\n `Argument \"${name}\" of required type \"${inspect(argType)}\" ` +\n `was provided the variable \"$${variableName}\" which was not provided a runtime value.`,\n {\n nodes: valueNode,\n },\n );\n }\n\n continue;\n }\n\n isNull = variableValues[variableName] == null;\n }\n\n if (isNull && isNonNullType(argType)) {\n throw new GraphQLError(\n `Argument \"${name}\" of non-null type \"${inspect(argType)}\" ` +\n 'must not be null.',\n {\n nodes: valueNode,\n },\n );\n }\n\n const coercedValue = valueFromAST(valueNode, argType, variableValues);\n\n if (coercedValue === undefined) {\n // Note: ValuesOfCorrectTypeRule validation should catch this before\n // execution. This is a runtime check to ensure execution does not\n // continue with an invalid argument value.\n throw new GraphQLError(\n `Argument \"${name}\" has invalid value ${print(valueNode)}.`,\n {\n nodes: valueNode,\n },\n );\n }\n\n coercedValues[name] = coercedValue;\n }\n\n return coercedValues;\n}\n/**\n * Prepares an object map of argument values given a directive definition\n * and a AST node which may contain directives. Optionally also accepts a map\n * of variable values.\n *\n * If the directive does not exist on the node, returns undefined.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n */\n\nexport function getDirectiveValues(directiveDef, node, variableValues) {\n var _node$directives;\n\n const directiveNode =\n (_node$directives = node.directives) === null || _node$directives === void 0\n ? void 0\n : _node$directives.find(\n (directive) => directive.name.value === directiveDef.name,\n );\n\n if (directiveNode) {\n return getArgumentValues(directiveDef, directiveNode, variableValues);\n }\n}\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n", "import { Kind } from '../language/kinds.mjs';\nimport { isAbstractType } from '../type/definition.mjs';\nimport {\n GraphQLIncludeDirective,\n GraphQLSkipDirective,\n} from '../type/directives.mjs';\nimport { typeFromAST } from '../utilities/typeFromAST.mjs';\nimport { getDirectiveValues } from './values.mjs';\n/**\n * Given a selectionSet, collects all of the fields and returns them.\n *\n * CollectFields requires the \"runtime type\" of an object. For a field that\n * returns an Interface or Union type, the \"runtime type\" will be the actual\n * object type returned by that field.\n *\n * @internal\n */\n\nexport function collectFields(\n schema,\n fragments,\n variableValues,\n runtimeType,\n selectionSet,\n) {\n const fields = new Map();\n collectFieldsImpl(\n schema,\n fragments,\n variableValues,\n runtimeType,\n selectionSet,\n fields,\n new Set(),\n );\n return fields;\n}\n/**\n * Given an array of field nodes, collects all of the subfields of the passed\n * in fields, and returns them at the end.\n *\n * CollectSubFields requires the \"return type\" of an object. For a field that\n * returns an Interface or Union type, the \"return type\" will be the actual\n * object type returned by that field.\n *\n * @internal\n */\n\nexport function collectSubfields(\n schema,\n fragments,\n variableValues,\n returnType,\n fieldNodes,\n) {\n const subFieldNodes = new Map();\n const visitedFragmentNames = new Set();\n\n for (const node of fieldNodes) {\n if (node.selectionSet) {\n collectFieldsImpl(\n schema,\n fragments,\n variableValues,\n returnType,\n node.selectionSet,\n subFieldNodes,\n visitedFragmentNames,\n );\n }\n }\n\n return subFieldNodes;\n}\n\nfunction collectFieldsImpl(\n schema,\n fragments,\n variableValues,\n runtimeType,\n selectionSet,\n fields,\n visitedFragmentNames,\n) {\n for (const selection of selectionSet.selections) {\n switch (selection.kind) {\n case Kind.FIELD: {\n if (!shouldIncludeNode(variableValues, selection)) {\n continue;\n }\n\n const name = getFieldEntryKey(selection);\n const fieldList = fields.get(name);\n\n if (fieldList !== undefined) {\n fieldList.push(selection);\n } else {\n fields.set(name, [selection]);\n }\n\n break;\n }\n\n case Kind.INLINE_FRAGMENT: {\n if (\n !shouldIncludeNode(variableValues, selection) ||\n !doesFragmentConditionMatch(schema, selection, runtimeType)\n ) {\n continue;\n }\n\n collectFieldsImpl(\n schema,\n fragments,\n variableValues,\n runtimeType,\n selection.selectionSet,\n fields,\n visitedFragmentNames,\n );\n break;\n }\n\n case Kind.FRAGMENT_SPREAD: {\n const fragName = selection.name.value;\n\n if (\n visitedFragmentNames.has(fragName) ||\n !shouldIncludeNode(variableValues, selection)\n ) {\n continue;\n }\n\n visitedFragmentNames.add(fragName);\n const fragment = fragments[fragName];\n\n if (\n !fragment ||\n !doesFragmentConditionMatch(schema, fragment, runtimeType)\n ) {\n continue;\n }\n\n collectFieldsImpl(\n schema,\n fragments,\n variableValues,\n runtimeType,\n fragment.selectionSet,\n fields,\n visitedFragmentNames,\n );\n break;\n }\n }\n }\n}\n/**\n * Determines if a field should be included based on the `@include` and `@skip`\n * directives, where `@skip` has higher precedence than `@include`.\n */\n\nfunction shouldIncludeNode(variableValues, node) {\n const skip = getDirectiveValues(GraphQLSkipDirective, node, variableValues);\n\n if ((skip === null || skip === void 0 ? void 0 : skip.if) === true) {\n return false;\n }\n\n const include = getDirectiveValues(\n GraphQLIncludeDirective,\n node,\n variableValues,\n );\n\n if (\n (include === null || include === void 0 ? void 0 : include.if) === false\n ) {\n return false;\n }\n\n return true;\n}\n/**\n * Determines if a fragment is applicable to the given type.\n */\n\nfunction doesFragmentConditionMatch(schema, fragment, type) {\n const typeConditionNode = fragment.typeCondition;\n\n if (!typeConditionNode) {\n return true;\n }\n\n const conditionalType = typeFromAST(schema, typeConditionNode);\n\n if (conditionalType === type) {\n return true;\n }\n\n if (isAbstractType(conditionalType)) {\n return schema.isSubType(conditionalType, type);\n }\n\n return false;\n}\n/**\n * Implements the logic to compute the key of a given field's entry\n */\n\nfunction getFieldEntryKey(node) {\n return node.alias ? node.alias.value : node.name.value;\n}\n", "import { GraphQLError } from '../../error/GraphQLError.mjs';\nimport { Kind } from '../../language/kinds.mjs';\nimport { collectFields } from '../../execution/collectFields.mjs';\n\n/**\n * Subscriptions must only include a non-introspection field.\n *\n * A GraphQL subscription is valid only if it contains a single root field and\n * that root field is not an introspection field.\n *\n * See https://spec.graphql.org/draft/#sec-Single-root-field\n */\nexport function SingleFieldSubscriptionsRule(context) {\n return {\n OperationDefinition(node) {\n if (node.operation === 'subscription') {\n const schema = context.getSchema();\n const subscriptionType = schema.getSubscriptionType();\n\n if (subscriptionType) {\n const operationName = node.name ? node.name.value : null;\n const variableValues = Object.create(null);\n const document = context.getDocument();\n const fragments = Object.create(null);\n\n for (const definition of document.definitions) {\n if (definition.kind === Kind.FRAGMENT_DEFINITION) {\n fragments[definition.name.value] = definition;\n }\n }\n\n const fields = collectFields(\n schema,\n fragments,\n variableValues,\n subscriptionType,\n node.selectionSet,\n );\n\n if (fields.size > 1) {\n const fieldSelectionLists = [...fields.values()];\n const extraFieldSelectionLists = fieldSelectionLists.slice(1);\n const extraFieldSelections = extraFieldSelectionLists.flat();\n context.reportError(\n new GraphQLError(\n operationName != null\n ? `Subscription \"${operationName}\" must select only one top level field.`\n : 'Anonymous Subscription must select only one top level field.',\n {\n nodes: extraFieldSelections,\n },\n ),\n );\n }\n\n for (const fieldNodes of fields.values()) {\n const field = fieldNodes[0];\n const fieldName = field.name.value;\n\n if (fieldName.startsWith('__')) {\n context.reportError(\n new GraphQLError(\n operationName != null\n ? `Subscription \"${operationName}\" must not select an introspection top level field.`\n : 'Anonymous Subscription must not select an introspection top level field.',\n {\n nodes: fieldNodes,\n },\n ),\n );\n }\n }\n }\n }\n },\n };\n}\n", "/**\n * Groups array items into a Map, given a function to produce grouping key.\n */\nexport function groupBy(list, keyFn) {\n const result = new Map();\n\n for (const item of list) {\n const key = keyFn(item);\n const group = result.get(key);\n\n if (group === undefined) {\n result.set(key, [item]);\n } else {\n group.push(item);\n }\n }\n\n return result;\n}\n", "import { groupBy } from '../../jsutils/groupBy.mjs';\nimport { GraphQLError } from '../../error/GraphQLError.mjs';\n\n/**\n * Unique argument definition names\n *\n * A GraphQL Object or Interface type is only valid if all its fields have uniquely named arguments.\n * A GraphQL Directive is only valid if all its arguments are uniquely named.\n */\nexport function UniqueArgumentDefinitionNamesRule(context) {\n return {\n DirectiveDefinition(directiveNode) {\n var _directiveNode$argume;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n const argumentNodes =\n (_directiveNode$argume = directiveNode.arguments) !== null &&\n _directiveNode$argume !== void 0\n ? _directiveNode$argume\n : [];\n return checkArgUniqueness(`@${directiveNode.name.value}`, argumentNodes);\n },\n\n InterfaceTypeDefinition: checkArgUniquenessPerField,\n InterfaceTypeExtension: checkArgUniquenessPerField,\n ObjectTypeDefinition: checkArgUniquenessPerField,\n ObjectTypeExtension: checkArgUniquenessPerField,\n };\n\n function checkArgUniquenessPerField(typeNode) {\n var _typeNode$fields;\n\n const typeName = typeNode.name.value; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n\n const fieldNodes =\n (_typeNode$fields = typeNode.fields) !== null &&\n _typeNode$fields !== void 0\n ? _typeNode$fields\n : [];\n\n for (const fieldDef of fieldNodes) {\n var _fieldDef$arguments;\n\n const fieldName = fieldDef.name.value; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n\n const argumentNodes =\n (_fieldDef$arguments = fieldDef.arguments) !== null &&\n _fieldDef$arguments !== void 0\n ? _fieldDef$arguments\n : [];\n checkArgUniqueness(`${typeName}.${fieldName}`, argumentNodes);\n }\n\n return false;\n }\n\n function checkArgUniqueness(parentName, argumentNodes) {\n const seenArgs = groupBy(argumentNodes, (arg) => arg.name.value);\n\n for (const [argName, argNodes] of seenArgs) {\n if (argNodes.length > 1) {\n context.reportError(\n new GraphQLError(\n `Argument \"${parentName}(${argName}:)\" can only be defined once.`,\n {\n nodes: argNodes.map((node) => node.name),\n },\n ),\n );\n }\n }\n\n return false;\n }\n}\n", "import { groupBy } from '../../jsutils/groupBy.mjs';\nimport { GraphQLError } from '../../error/GraphQLError.mjs';\n\n/**\n * Unique argument names\n *\n * A GraphQL field or directive is only valid if all supplied arguments are\n * uniquely named.\n *\n * See https://spec.graphql.org/draft/#sec-Argument-Names\n */\nexport function UniqueArgumentNamesRule(context) {\n return {\n Field: checkArgUniqueness,\n Directive: checkArgUniqueness,\n };\n\n function checkArgUniqueness(parentNode) {\n var _parentNode$arguments;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n const argumentNodes =\n (_parentNode$arguments = parentNode.arguments) !== null &&\n _parentNode$arguments !== void 0\n ? _parentNode$arguments\n : [];\n const seenArgs = groupBy(argumentNodes, (arg) => arg.name.value);\n\n for (const [argName, argNodes] of seenArgs) {\n if (argNodes.length > 1) {\n context.reportError(\n new GraphQLError(\n `There can be only one argument named \"${argName}\".`,\n {\n nodes: argNodes.map((node) => node.name),\n },\n ),\n );\n }\n }\n }\n}\n", "import { GraphQLError } from '../../error/GraphQLError.mjs';\n\n/**\n * Unique directive names\n *\n * A GraphQL document is only valid if all defined directives have unique names.\n */\nexport function UniqueDirectiveNamesRule(context) {\n const knownDirectiveNames = Object.create(null);\n const schema = context.getSchema();\n return {\n DirectiveDefinition(node) {\n const directiveName = node.name.value;\n\n if (\n schema !== null &&\n schema !== void 0 &&\n schema.getDirective(directiveName)\n ) {\n context.reportError(\n new GraphQLError(\n `Directive \"@${directiveName}\" already exists in the schema. It cannot be redefined.`,\n {\n nodes: node.name,\n },\n ),\n );\n return;\n }\n\n if (knownDirectiveNames[directiveName]) {\n context.reportError(\n new GraphQLError(\n `There can be only one directive named \"@${directiveName}\".`,\n {\n nodes: [knownDirectiveNames[directiveName], node.name],\n },\n ),\n );\n } else {\n knownDirectiveNames[directiveName] = node.name;\n }\n\n return false;\n },\n };\n}\n", "import { GraphQLError } from '../../error/GraphQLError.mjs';\nimport { Kind } from '../../language/kinds.mjs';\nimport {\n isTypeDefinitionNode,\n isTypeExtensionNode,\n} from '../../language/predicates.mjs';\nimport { specifiedDirectives } from '../../type/directives.mjs';\n\n/**\n * Unique directive names per location\n *\n * A GraphQL document is only valid if all non-repeatable directives at\n * a given location are uniquely named.\n *\n * See https://spec.graphql.org/draft/#sec-Directives-Are-Unique-Per-Location\n */\nexport function UniqueDirectivesPerLocationRule(context) {\n const uniqueDirectiveMap = Object.create(null);\n const schema = context.getSchema();\n const definedDirectives = schema\n ? schema.getDirectives()\n : specifiedDirectives;\n\n for (const directive of definedDirectives) {\n uniqueDirectiveMap[directive.name] = !directive.isRepeatable;\n }\n\n const astDefinitions = context.getDocument().definitions;\n\n for (const def of astDefinitions) {\n if (def.kind === Kind.DIRECTIVE_DEFINITION) {\n uniqueDirectiveMap[def.name.value] = !def.repeatable;\n }\n }\n\n const schemaDirectives = Object.create(null);\n const typeDirectivesMap = Object.create(null);\n return {\n // Many different AST nodes may contain directives. Rather than listing\n // them all, just listen for entering any node, and check to see if it\n // defines any directives.\n enter(node) {\n if (!('directives' in node) || !node.directives) {\n return;\n }\n\n let seenDirectives;\n\n if (\n node.kind === Kind.SCHEMA_DEFINITION ||\n node.kind === Kind.SCHEMA_EXTENSION\n ) {\n seenDirectives = schemaDirectives;\n } else if (isTypeDefinitionNode(node) || isTypeExtensionNode(node)) {\n const typeName = node.name.value;\n seenDirectives = typeDirectivesMap[typeName];\n\n if (seenDirectives === undefined) {\n typeDirectivesMap[typeName] = seenDirectives = Object.create(null);\n }\n } else {\n seenDirectives = Object.create(null);\n }\n\n for (const directive of node.directives) {\n const directiveName = directive.name.value;\n\n if (uniqueDirectiveMap[directiveName]) {\n if (seenDirectives[directiveName]) {\n context.reportError(\n new GraphQLError(\n `The directive \"@${directiveName}\" can only be used once at this location.`,\n {\n nodes: [seenDirectives[directiveName], directive],\n },\n ),\n );\n } else {\n seenDirectives[directiveName] = directive;\n }\n }\n }\n },\n };\n}\n", "import { GraphQLError } from '../../error/GraphQLError.mjs';\nimport { isEnumType } from '../../type/definition.mjs';\n\n/**\n * Unique enum value names\n *\n * A GraphQL enum type is only valid if all its values are uniquely named.\n */\nexport function UniqueEnumValueNamesRule(context) {\n const schema = context.getSchema();\n const existingTypeMap = schema ? schema.getTypeMap() : Object.create(null);\n const knownValueNames = Object.create(null);\n return {\n EnumTypeDefinition: checkValueUniqueness,\n EnumTypeExtension: checkValueUniqueness,\n };\n\n function checkValueUniqueness(node) {\n var _node$values;\n\n const typeName = node.name.value;\n\n if (!knownValueNames[typeName]) {\n knownValueNames[typeName] = Object.create(null);\n } // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n\n const valueNodes =\n (_node$values = node.values) !== null && _node$values !== void 0\n ? _node$values\n : [];\n const valueNames = knownValueNames[typeName];\n\n for (const valueDef of valueNodes) {\n const valueName = valueDef.name.value;\n const existingType = existingTypeMap[typeName];\n\n if (isEnumType(existingType) && existingType.getValue(valueName)) {\n context.reportError(\n new GraphQLError(\n `Enum value \"${typeName}.${valueName}\" already exists in the schema. It cannot also be defined in this type extension.`,\n {\n nodes: valueDef.name,\n },\n ),\n );\n } else if (valueNames[valueName]) {\n context.reportError(\n new GraphQLError(\n `Enum value \"${typeName}.${valueName}\" can only be defined once.`,\n {\n nodes: [valueNames[valueName], valueDef.name],\n },\n ),\n );\n } else {\n valueNames[valueName] = valueDef.name;\n }\n }\n\n return false;\n }\n}\n", "import { GraphQLError } from '../../error/GraphQLError.mjs';\nimport {\n isInputObjectType,\n isInterfaceType,\n isObjectType,\n} from '../../type/definition.mjs';\n\n/**\n * Unique field definition names\n *\n * A GraphQL complex type is only valid if all its fields are uniquely named.\n */\nexport function UniqueFieldDefinitionNamesRule(context) {\n const schema = context.getSchema();\n const existingTypeMap = schema ? schema.getTypeMap() : Object.create(null);\n const knownFieldNames = Object.create(null);\n return {\n InputObjectTypeDefinition: checkFieldUniqueness,\n InputObjectTypeExtension: checkFieldUniqueness,\n InterfaceTypeDefinition: checkFieldUniqueness,\n InterfaceTypeExtension: checkFieldUniqueness,\n ObjectTypeDefinition: checkFieldUniqueness,\n ObjectTypeExtension: checkFieldUniqueness,\n };\n\n function checkFieldUniqueness(node) {\n var _node$fields;\n\n const typeName = node.name.value;\n\n if (!knownFieldNames[typeName]) {\n knownFieldNames[typeName] = Object.create(null);\n } // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n\n const fieldNodes =\n (_node$fields = node.fields) !== null && _node$fields !== void 0\n ? _node$fields\n : [];\n const fieldNames = knownFieldNames[typeName];\n\n for (const fieldDef of fieldNodes) {\n const fieldName = fieldDef.name.value;\n\n if (hasField(existingTypeMap[typeName], fieldName)) {\n context.reportError(\n new GraphQLError(\n `Field \"${typeName}.${fieldName}\" already exists in the schema. It cannot also be defined in this type extension.`,\n {\n nodes: fieldDef.name,\n },\n ),\n );\n } else if (fieldNames[fieldName]) {\n context.reportError(\n new GraphQLError(\n `Field \"${typeName}.${fieldName}\" can only be defined once.`,\n {\n nodes: [fieldNames[fieldName], fieldDef.name],\n },\n ),\n );\n } else {\n fieldNames[fieldName] = fieldDef.name;\n }\n }\n\n return false;\n }\n}\n\nfunction hasField(type, fieldName) {\n if (isObjectType(type) || isInterfaceType(type) || isInputObjectType(type)) {\n return type.getFields()[fieldName] != null;\n }\n\n return false;\n}\n", "import { GraphQLError } from '../../error/GraphQLError.mjs';\n\n/**\n * Unique fragment names\n *\n * A GraphQL document is only valid if all defined fragments have unique names.\n *\n * See https://spec.graphql.org/draft/#sec-Fragment-Name-Uniqueness\n */\nexport function UniqueFragmentNamesRule(context) {\n const knownFragmentNames = Object.create(null);\n return {\n OperationDefinition: () => false,\n\n FragmentDefinition(node) {\n const fragmentName = node.name.value;\n\n if (knownFragmentNames[fragmentName]) {\n context.reportError(\n new GraphQLError(\n `There can be only one fragment named \"${fragmentName}\".`,\n {\n nodes: [knownFragmentNames[fragmentName], node.name],\n },\n ),\n );\n } else {\n knownFragmentNames[fragmentName] = node.name;\n }\n\n return false;\n },\n };\n}\n", "import { invariant } from '../../jsutils/invariant.mjs';\nimport { GraphQLError } from '../../error/GraphQLError.mjs';\n\n/**\n * Unique input field names\n *\n * A GraphQL input object value is only valid if all supplied fields are\n * uniquely named.\n *\n * See https://spec.graphql.org/draft/#sec-Input-Object-Field-Uniqueness\n */\nexport function UniqueInputFieldNamesRule(context) {\n const knownNameStack = [];\n let knownNames = Object.create(null);\n return {\n ObjectValue: {\n enter() {\n knownNameStack.push(knownNames);\n knownNames = Object.create(null);\n },\n\n leave() {\n const prevKnownNames = knownNameStack.pop();\n prevKnownNames || invariant(false);\n knownNames = prevKnownNames;\n },\n },\n\n ObjectField(node) {\n const fieldName = node.name.value;\n\n if (knownNames[fieldName]) {\n context.reportError(\n new GraphQLError(\n `There can be only one input field named \"${fieldName}\".`,\n {\n nodes: [knownNames[fieldName], node.name],\n },\n ),\n );\n } else {\n knownNames[fieldName] = node.name;\n }\n },\n };\n}\n", "import { GraphQLError } from '../../error/GraphQLError.mjs';\n\n/**\n * Unique operation names\n *\n * A GraphQL document is only valid if all defined operations have unique names.\n *\n * See https://spec.graphql.org/draft/#sec-Operation-Name-Uniqueness\n */\nexport function UniqueOperationNamesRule(context) {\n const knownOperationNames = Object.create(null);\n return {\n OperationDefinition(node) {\n const operationName = node.name;\n\n if (operationName) {\n if (knownOperationNames[operationName.value]) {\n context.reportError(\n new GraphQLError(\n `There can be only one operation named \"${operationName.value}\".`,\n {\n nodes: [\n knownOperationNames[operationName.value],\n operationName,\n ],\n },\n ),\n );\n } else {\n knownOperationNames[operationName.value] = operationName;\n }\n }\n\n return false;\n },\n\n FragmentDefinition: () => false,\n };\n}\n", "import { GraphQLError } from '../../error/GraphQLError.mjs';\n\n/**\n * Unique operation types\n *\n * A GraphQL document is only valid if it has only one type per operation.\n */\nexport function UniqueOperationTypesRule(context) {\n const schema = context.getSchema();\n const definedOperationTypes = Object.create(null);\n const existingOperationTypes = schema\n ? {\n query: schema.getQueryType(),\n mutation: schema.getMutationType(),\n subscription: schema.getSubscriptionType(),\n }\n : {};\n return {\n SchemaDefinition: checkOperationTypes,\n SchemaExtension: checkOperationTypes,\n };\n\n function checkOperationTypes(node) {\n var _node$operationTypes;\n\n // See: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n const operationTypesNodes =\n (_node$operationTypes = node.operationTypes) !== null &&\n _node$operationTypes !== void 0\n ? _node$operationTypes\n : [];\n\n for (const operationType of operationTypesNodes) {\n const operation = operationType.operation;\n const alreadyDefinedOperationType = definedOperationTypes[operation];\n\n if (existingOperationTypes[operation]) {\n context.reportError(\n new GraphQLError(\n `Type for ${operation} already defined in the schema. It cannot be redefined.`,\n {\n nodes: operationType,\n },\n ),\n );\n } else if (alreadyDefinedOperationType) {\n context.reportError(\n new GraphQLError(\n `There can be only one ${operation} type in schema.`,\n {\n nodes: [alreadyDefinedOperationType, operationType],\n },\n ),\n );\n } else {\n definedOperationTypes[operation] = operationType;\n }\n }\n\n return false;\n }\n}\n", "import { GraphQLError } from '../../error/GraphQLError.mjs';\n\n/**\n * Unique type names\n *\n * A GraphQL document is only valid if all defined types have unique names.\n */\nexport function UniqueTypeNamesRule(context) {\n const knownTypeNames = Object.create(null);\n const schema = context.getSchema();\n return {\n ScalarTypeDefinition: checkTypeName,\n ObjectTypeDefinition: checkTypeName,\n InterfaceTypeDefinition: checkTypeName,\n UnionTypeDefinition: checkTypeName,\n EnumTypeDefinition: checkTypeName,\n InputObjectTypeDefinition: checkTypeName,\n };\n\n function checkTypeName(node) {\n const typeName = node.name.value;\n\n if (schema !== null && schema !== void 0 && schema.getType(typeName)) {\n context.reportError(\n new GraphQLError(\n `Type \"${typeName}\" already exists in the schema. It cannot also be defined in this type definition.`,\n {\n nodes: node.name,\n },\n ),\n );\n return;\n }\n\n if (knownTypeNames[typeName]) {\n context.reportError(\n new GraphQLError(`There can be only one type named \"${typeName}\".`, {\n nodes: [knownTypeNames[typeName], node.name],\n }),\n );\n } else {\n knownTypeNames[typeName] = node.name;\n }\n\n return false;\n }\n}\n", "import { groupBy } from '../../jsutils/groupBy.mjs';\nimport { GraphQLError } from '../../error/GraphQLError.mjs';\n\n/**\n * Unique variable names\n *\n * A GraphQL operation is only valid if all its variables are uniquely named.\n */\nexport function UniqueVariableNamesRule(context) {\n return {\n OperationDefinition(operationNode) {\n var _operationNode$variab;\n\n // See: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n const variableDefinitions =\n (_operationNode$variab = operationNode.variableDefinitions) !== null &&\n _operationNode$variab !== void 0\n ? _operationNode$variab\n : [];\n const seenVariableDefinitions = groupBy(\n variableDefinitions,\n (node) => node.variable.name.value,\n );\n\n for (const [variableName, variableNodes] of seenVariableDefinitions) {\n if (variableNodes.length > 1) {\n context.reportError(\n new GraphQLError(\n `There can be only one variable named \"$${variableName}\".`,\n {\n nodes: variableNodes.map((node) => node.variable.name),\n },\n ),\n );\n }\n }\n },\n };\n}\n", "import { didYouMean } from '../../jsutils/didYouMean.mjs';\nimport { inspect } from '../../jsutils/inspect.mjs';\nimport { keyMap } from '../../jsutils/keyMap.mjs';\nimport { suggestionList } from '../../jsutils/suggestionList.mjs';\nimport { GraphQLError } from '../../error/GraphQLError.mjs';\nimport { print } from '../../language/printer.mjs';\nimport {\n getNamedType,\n getNullableType,\n isInputObjectType,\n isLeafType,\n isListType,\n isNonNullType,\n isRequiredInputField,\n} from '../../type/definition.mjs';\n\n/**\n * Value literals of correct type\n *\n * A GraphQL document is only valid if all value literals are of the type\n * expected at their position.\n *\n * See https://spec.graphql.org/draft/#sec-Values-of-Correct-Type\n */\nexport function ValuesOfCorrectTypeRule(context) {\n return {\n ListValue(node) {\n // Note: TypeInfo will traverse into a list's item type, so look to the\n // parent input type to check if it is a list.\n const type = getNullableType(context.getParentInputType());\n\n if (!isListType(type)) {\n isValidValueNode(context, node);\n return false; // Don't traverse further.\n }\n },\n\n ObjectValue(node) {\n const type = getNamedType(context.getInputType());\n\n if (!isInputObjectType(type)) {\n isValidValueNode(context, node);\n return false; // Don't traverse further.\n } // Ensure every required field exists.\n\n const fieldNodeMap = keyMap(node.fields, (field) => field.name.value);\n\n for (const fieldDef of Object.values(type.getFields())) {\n const fieldNode = fieldNodeMap[fieldDef.name];\n\n if (!fieldNode && isRequiredInputField(fieldDef)) {\n const typeStr = inspect(fieldDef.type);\n context.reportError(\n new GraphQLError(\n `Field \"${type.name}.${fieldDef.name}\" of required type \"${typeStr}\" was not provided.`,\n {\n nodes: node,\n },\n ),\n );\n }\n }\n },\n\n ObjectField(node) {\n const parentType = getNamedType(context.getParentInputType());\n const fieldType = context.getInputType();\n\n if (!fieldType && isInputObjectType(parentType)) {\n const suggestions = suggestionList(\n node.name.value,\n Object.keys(parentType.getFields()),\n );\n context.reportError(\n new GraphQLError(\n `Field \"${node.name.value}\" is not defined by type \"${parentType.name}\".` +\n didYouMean(suggestions),\n {\n nodes: node,\n },\n ),\n );\n }\n },\n\n NullValue(node) {\n const type = context.getInputType();\n\n if (isNonNullType(type)) {\n context.reportError(\n new GraphQLError(\n `Expected value of type \"${inspect(type)}\", found ${print(node)}.`,\n {\n nodes: node,\n },\n ),\n );\n }\n },\n\n EnumValue: (node) => isValidValueNode(context, node),\n IntValue: (node) => isValidValueNode(context, node),\n FloatValue: (node) => isValidValueNode(context, node),\n StringValue: (node) => isValidValueNode(context, node),\n BooleanValue: (node) => isValidValueNode(context, node),\n };\n}\n/**\n * Any value literal may be a valid representation of a Scalar, depending on\n * that scalar type.\n */\n\nfunction isValidValueNode(context, node) {\n // Report any error at the full type expected by the location.\n const locationType = context.getInputType();\n\n if (!locationType) {\n return;\n }\n\n const type = getNamedType(locationType);\n\n if (!isLeafType(type)) {\n const typeStr = inspect(locationType);\n context.reportError(\n new GraphQLError(\n `Expected value of type \"${typeStr}\", found ${print(node)}.`,\n {\n nodes: node,\n },\n ),\n );\n return;\n } // Scalars and Enums determine if a literal value is valid via parseLiteral(),\n // which may throw or return an invalid value to indicate failure.\n\n try {\n const parseResult = type.parseLiteral(\n node,\n undefined,\n /* variables */\n );\n\n if (parseResult === undefined) {\n const typeStr = inspect(locationType);\n context.reportError(\n new GraphQLError(\n `Expected value of type \"${typeStr}\", found ${print(node)}.`,\n {\n nodes: node,\n },\n ),\n );\n }\n } catch (error) {\n const typeStr = inspect(locationType);\n\n if (error instanceof GraphQLError) {\n context.reportError(error);\n } else {\n context.reportError(\n new GraphQLError(\n `Expected value of type \"${typeStr}\", found ${print(node)}; ` +\n error.message,\n {\n nodes: node,\n originalError: error,\n },\n ),\n );\n }\n }\n}\n", "import { GraphQLError } from '../../error/GraphQLError.mjs';\nimport { print } from '../../language/printer.mjs';\nimport { isInputType } from '../../type/definition.mjs';\nimport { typeFromAST } from '../../utilities/typeFromAST.mjs';\n\n/**\n * Variables are input types\n *\n * A GraphQL operation is only valid if all the variables it defines are of\n * input types (scalar, enum, or input object).\n *\n * See https://spec.graphql.org/draft/#sec-Variables-Are-Input-Types\n */\nexport function VariablesAreInputTypesRule(context) {\n return {\n VariableDefinition(node) {\n const type = typeFromAST(context.getSchema(), node.type);\n\n if (type !== undefined && !isInputType(type)) {\n const variableName = node.variable.name.value;\n const typeName = print(node.type);\n context.reportError(\n new GraphQLError(\n `Variable \"$${variableName}\" cannot be non-input type \"${typeName}\".`,\n {\n nodes: node.type,\n },\n ),\n );\n }\n },\n };\n}\n", "import { inspect } from '../../jsutils/inspect.mjs';\nimport { GraphQLError } from '../../error/GraphQLError.mjs';\nimport { Kind } from '../../language/kinds.mjs';\nimport { isNonNullType } from '../../type/definition.mjs';\nimport { isTypeSubTypeOf } from '../../utilities/typeComparators.mjs';\nimport { typeFromAST } from '../../utilities/typeFromAST.mjs';\n\n/**\n * Variables in allowed position\n *\n * Variable usages must be compatible with the arguments they are passed to.\n *\n * See https://spec.graphql.org/draft/#sec-All-Variable-Usages-are-Allowed\n */\nexport function VariablesInAllowedPositionRule(context) {\n let varDefMap = Object.create(null);\n return {\n OperationDefinition: {\n enter() {\n varDefMap = Object.create(null);\n },\n\n leave(operation) {\n const usages = context.getRecursiveVariableUsages(operation);\n\n for (const { node, type, defaultValue } of usages) {\n const varName = node.name.value;\n const varDef = varDefMap[varName];\n\n if (varDef && type) {\n // A var type is allowed if it is the same or more strict (e.g. is\n // a subtype of) than the expected type. It can be more strict if\n // the variable type is non-null when the expected type is nullable.\n // If both are list types, the variable item type can be more strict\n // than the expected item type (contravariant).\n const schema = context.getSchema();\n const varType = typeFromAST(schema, varDef.type);\n\n if (\n varType &&\n !allowedVariableUsage(\n schema,\n varType,\n varDef.defaultValue,\n type,\n defaultValue,\n )\n ) {\n const varTypeStr = inspect(varType);\n const typeStr = inspect(type);\n context.reportError(\n new GraphQLError(\n `Variable \"$${varName}\" of type \"${varTypeStr}\" used in position expecting type \"${typeStr}\".`,\n {\n nodes: [varDef, node],\n },\n ),\n );\n }\n }\n }\n },\n },\n\n VariableDefinition(node) {\n varDefMap[node.variable.name.value] = node;\n },\n };\n}\n/**\n * Returns true if the variable is allowed in the location it was found,\n * which includes considering if default values exist for either the variable\n * or the location at which it is located.\n */\n\nfunction allowedVariableUsage(\n schema,\n varType,\n varDefaultValue,\n locationType,\n locationDefaultValue,\n) {\n if (isNonNullType(locationType) && !isNonNullType(varType)) {\n const hasNonNullVariableDefaultValue =\n varDefaultValue != null && varDefaultValue.kind !== Kind.NULL;\n const hasLocationDefaultValue = locationDefaultValue !== undefined;\n\n if (!hasNonNullVariableDefaultValue && !hasLocationDefaultValue) {\n return false;\n }\n\n const nullableLocationType = locationType.ofType;\n return isTypeSubTypeOf(schema, varType, nullableLocationType);\n }\n\n return isTypeSubTypeOf(schema, varType, locationType);\n}\n", "// Spec Section: \"Executable Definitions\"\nimport { ExecutableDefinitionsRule } from './rules/ExecutableDefinitionsRule.mjs'; // Spec Section: \"Field Selections on Objects, Interfaces, and Unions Types\"\n\nimport { FieldsOnCorrectTypeRule } from './rules/FieldsOnCorrectTypeRule.mjs'; // Spec Section: \"Fragments on Composite Types\"\n\nimport { FragmentsOnCompositeTypesRule } from './rules/FragmentsOnCompositeTypesRule.mjs'; // Spec Section: \"Argument Names\"\n\nimport {\n KnownArgumentNamesOnDirectivesRule,\n KnownArgumentNamesRule,\n} from './rules/KnownArgumentNamesRule.mjs'; // Spec Section: \"Directives Are Defined\"\n\nimport { KnownDirectivesRule } from './rules/KnownDirectivesRule.mjs'; // Spec Section: \"Fragment spread target defined\"\n\nimport { KnownFragmentNamesRule } from './rules/KnownFragmentNamesRule.mjs'; // Spec Section: \"Fragment Spread Type Existence\"\n\nimport { KnownTypeNamesRule } from './rules/KnownTypeNamesRule.mjs'; // Spec Section: \"Lone Anonymous Operation\"\n\nimport { LoneAnonymousOperationRule } from './rules/LoneAnonymousOperationRule.mjs'; // SDL-specific validation rules\n\nimport { LoneSchemaDefinitionRule } from './rules/LoneSchemaDefinitionRule.mjs'; // Spec Section: \"Fragments must not form cycles\"\n\nimport { NoFragmentCyclesRule } from './rules/NoFragmentCyclesRule.mjs'; // Spec Section: \"All Variable Used Defined\"\n\nimport { NoUndefinedVariablesRule } from './rules/NoUndefinedVariablesRule.mjs'; // Spec Section: \"Fragments must be used\"\n\nimport { NoUnusedFragmentsRule } from './rules/NoUnusedFragmentsRule.mjs'; // Spec Section: \"All Variables Used\"\n\nimport { NoUnusedVariablesRule } from './rules/NoUnusedVariablesRule.mjs'; // Spec Section: \"Field Selection Merging\"\n\nimport { OverlappingFieldsCanBeMergedRule } from './rules/OverlappingFieldsCanBeMergedRule.mjs'; // Spec Section: \"Fragment spread is possible\"\n\nimport { PossibleFragmentSpreadsRule } from './rules/PossibleFragmentSpreadsRule.mjs';\nimport { PossibleTypeExtensionsRule } from './rules/PossibleTypeExtensionsRule.mjs'; // Spec Section: \"Argument Optionality\"\n\nimport {\n ProvidedRequiredArgumentsOnDirectivesRule,\n ProvidedRequiredArgumentsRule,\n} from './rules/ProvidedRequiredArgumentsRule.mjs'; // Spec Section: \"Leaf Field Selections\"\n\nimport { ScalarLeafsRule } from './rules/ScalarLeafsRule.mjs'; // Spec Section: \"Subscriptions with Single Root Field\"\n\nimport { SingleFieldSubscriptionsRule } from './rules/SingleFieldSubscriptionsRule.mjs';\nimport { UniqueArgumentDefinitionNamesRule } from './rules/UniqueArgumentDefinitionNamesRule.mjs'; // Spec Section: \"Argument Uniqueness\"\n\nimport { UniqueArgumentNamesRule } from './rules/UniqueArgumentNamesRule.mjs';\nimport { UniqueDirectiveNamesRule } from './rules/UniqueDirectiveNamesRule.mjs'; // Spec Section: \"Directives Are Unique Per Location\"\n\nimport { UniqueDirectivesPerLocationRule } from './rules/UniqueDirectivesPerLocationRule.mjs';\nimport { UniqueEnumValueNamesRule } from './rules/UniqueEnumValueNamesRule.mjs';\nimport { UniqueFieldDefinitionNamesRule } from './rules/UniqueFieldDefinitionNamesRule.mjs'; // Spec Section: \"Fragment Name Uniqueness\"\n\nimport { UniqueFragmentNamesRule } from './rules/UniqueFragmentNamesRule.mjs'; // Spec Section: \"Input Object Field Uniqueness\"\n\nimport { UniqueInputFieldNamesRule } from './rules/UniqueInputFieldNamesRule.mjs'; // Spec Section: \"Operation Name Uniqueness\"\n\nimport { UniqueOperationNamesRule } from './rules/UniqueOperationNamesRule.mjs';\nimport { UniqueOperationTypesRule } from './rules/UniqueOperationTypesRule.mjs';\nimport { UniqueTypeNamesRule } from './rules/UniqueTypeNamesRule.mjs'; // Spec Section: \"Variable Uniqueness\"\n\nimport { UniqueVariableNamesRule } from './rules/UniqueVariableNamesRule.mjs'; // Spec Section: \"Value Type Correctness\"\n\nimport { ValuesOfCorrectTypeRule } from './rules/ValuesOfCorrectTypeRule.mjs'; // Spec Section: \"Variables are Input Types\"\n\nimport { VariablesAreInputTypesRule } from './rules/VariablesAreInputTypesRule.mjs'; // Spec Section: \"All Variable Usages Are Allowed\"\n\nimport { VariablesInAllowedPositionRule } from './rules/VariablesInAllowedPositionRule.mjs';\n\n/**\n * This set includes all validation rules defined by the GraphQL spec.\n *\n * The order of the rules in this list has been adjusted to lead to the\n * most clear output when encountering multiple validation errors.\n */\nexport const specifiedRules = Object.freeze([\n ExecutableDefinitionsRule,\n UniqueOperationNamesRule,\n LoneAnonymousOperationRule,\n SingleFieldSubscriptionsRule,\n KnownTypeNamesRule,\n FragmentsOnCompositeTypesRule,\n VariablesAreInputTypesRule,\n ScalarLeafsRule,\n FieldsOnCorrectTypeRule,\n UniqueFragmentNamesRule,\n KnownFragmentNamesRule,\n NoUnusedFragmentsRule,\n PossibleFragmentSpreadsRule,\n NoFragmentCyclesRule,\n UniqueVariableNamesRule,\n NoUndefinedVariablesRule,\n NoUnusedVariablesRule,\n KnownDirectivesRule,\n UniqueDirectivesPerLocationRule,\n KnownArgumentNamesRule,\n UniqueArgumentNamesRule,\n ValuesOfCorrectTypeRule,\n ProvidedRequiredArgumentsRule,\n VariablesInAllowedPositionRule,\n OverlappingFieldsCanBeMergedRule,\n UniqueInputFieldNamesRule,\n]);\n/**\n * @internal\n */\n\nexport const specifiedSDLRules = Object.freeze([\n LoneSchemaDefinitionRule,\n UniqueOperationTypesRule,\n UniqueTypeNamesRule,\n UniqueEnumValueNamesRule,\n UniqueFieldDefinitionNamesRule,\n UniqueArgumentDefinitionNamesRule,\n UniqueDirectiveNamesRule,\n KnownTypeNamesRule,\n KnownDirectivesRule,\n UniqueDirectivesPerLocationRule,\n PossibleTypeExtensionsRule,\n KnownArgumentNamesOnDirectivesRule,\n UniqueArgumentNamesRule,\n UniqueInputFieldNamesRule,\n ProvidedRequiredArgumentsOnDirectivesRule,\n]);\n", "import { Kind } from '../language/kinds.mjs';\nimport { visit } from '../language/visitor.mjs';\nimport { TypeInfo, visitWithTypeInfo } from '../utilities/TypeInfo.mjs';\n\n/**\n * An instance of this class is passed as the \"this\" context to all validators,\n * allowing access to commonly useful contextual information from within a\n * validation rule.\n */\nexport class ASTValidationContext {\n constructor(ast, onError) {\n this._ast = ast;\n this._fragments = undefined;\n this._fragmentSpreads = new Map();\n this._recursivelyReferencedFragments = new Map();\n this._onError = onError;\n }\n\n get [Symbol.toStringTag]() {\n return 'ASTValidationContext';\n }\n\n reportError(error) {\n this._onError(error);\n }\n\n getDocument() {\n return this._ast;\n }\n\n getFragment(name) {\n let fragments;\n\n if (this._fragments) {\n fragments = this._fragments;\n } else {\n fragments = Object.create(null);\n\n for (const defNode of this.getDocument().definitions) {\n if (defNode.kind === Kind.FRAGMENT_DEFINITION) {\n fragments[defNode.name.value] = defNode;\n }\n }\n\n this._fragments = fragments;\n }\n\n return fragments[name];\n }\n\n getFragmentSpreads(node) {\n let spreads = this._fragmentSpreads.get(node);\n\n if (!spreads) {\n spreads = [];\n const setsToVisit = [node];\n let set;\n\n while ((set = setsToVisit.pop())) {\n for (const selection of set.selections) {\n if (selection.kind === Kind.FRAGMENT_SPREAD) {\n spreads.push(selection);\n } else if (selection.selectionSet) {\n setsToVisit.push(selection.selectionSet);\n }\n }\n }\n\n this._fragmentSpreads.set(node, spreads);\n }\n\n return spreads;\n }\n\n getRecursivelyReferencedFragments(operation) {\n let fragments = this._recursivelyReferencedFragments.get(operation);\n\n if (!fragments) {\n fragments = [];\n const collectedNames = Object.create(null);\n const nodesToVisit = [operation.selectionSet];\n let node;\n\n while ((node = nodesToVisit.pop())) {\n for (const spread of this.getFragmentSpreads(node)) {\n const fragName = spread.name.value;\n\n if (collectedNames[fragName] !== true) {\n collectedNames[fragName] = true;\n const fragment = this.getFragment(fragName);\n\n if (fragment) {\n fragments.push(fragment);\n nodesToVisit.push(fragment.selectionSet);\n }\n }\n }\n }\n\n this._recursivelyReferencedFragments.set(operation, fragments);\n }\n\n return fragments;\n }\n}\nexport class SDLValidationContext extends ASTValidationContext {\n constructor(ast, schema, onError) {\n super(ast, onError);\n this._schema = schema;\n }\n\n get [Symbol.toStringTag]() {\n return 'SDLValidationContext';\n }\n\n getSchema() {\n return this._schema;\n }\n}\nexport class ValidationContext extends ASTValidationContext {\n constructor(schema, ast, typeInfo, onError) {\n super(ast, onError);\n this._schema = schema;\n this._typeInfo = typeInfo;\n this._variableUsages = new Map();\n this._recursiveVariableUsages = new Map();\n }\n\n get [Symbol.toStringTag]() {\n return 'ValidationContext';\n }\n\n getSchema() {\n return this._schema;\n }\n\n getVariableUsages(node) {\n let usages = this._variableUsages.get(node);\n\n if (!usages) {\n const newUsages = [];\n const typeInfo = new TypeInfo(this._schema);\n visit(\n node,\n visitWithTypeInfo(typeInfo, {\n VariableDefinition: () => false,\n\n Variable(variable) {\n newUsages.push({\n node: variable,\n type: typeInfo.getInputType(),\n defaultValue: typeInfo.getDefaultValue(),\n });\n },\n }),\n );\n usages = newUsages;\n\n this._variableUsages.set(node, usages);\n }\n\n return usages;\n }\n\n getRecursiveVariableUsages(operation) {\n let usages = this._recursiveVariableUsages.get(operation);\n\n if (!usages) {\n usages = this.getVariableUsages(operation);\n\n for (const frag of this.getRecursivelyReferencedFragments(operation)) {\n usages = usages.concat(this.getVariableUsages(frag));\n }\n\n this._recursiveVariableUsages.set(operation, usages);\n }\n\n return usages;\n }\n\n getType() {\n return this._typeInfo.getType();\n }\n\n getParentType() {\n return this._typeInfo.getParentType();\n }\n\n getInputType() {\n return this._typeInfo.getInputType();\n }\n\n getParentInputType() {\n return this._typeInfo.getParentInputType();\n }\n\n getFieldDef() {\n return this._typeInfo.getFieldDef();\n }\n\n getDirective() {\n return this._typeInfo.getDirective();\n }\n\n getArgument() {\n return this._typeInfo.getArgument();\n }\n\n getEnumValue() {\n return this._typeInfo.getEnumValue();\n }\n}\n", "import { devAssert } from '../jsutils/devAssert.mjs';\nimport { GraphQLError } from '../error/GraphQLError.mjs';\nimport { visit, visitInParallel } from '../language/visitor.mjs';\nimport { assertValidSchema } from '../type/validate.mjs';\nimport { TypeInfo, visitWithTypeInfo } from '../utilities/TypeInfo.mjs';\nimport { specifiedRules, specifiedSDLRules } from './specifiedRules.mjs';\nimport {\n SDLValidationContext,\n ValidationContext,\n} from './ValidationContext.mjs';\n/**\n * Implements the \"Validation\" section of the spec.\n *\n * Validation runs synchronously, returning an array of encountered errors, or\n * an empty array if no errors were encountered and the document is valid.\n *\n * A list of specific validation rules may be provided. If not provided, the\n * default list of rules defined by the GraphQL specification will be used.\n *\n * Each validation rules is a function which returns a visitor\n * (see the language/visitor API). Visitor methods are expected to return\n * GraphQLErrors, or Arrays of GraphQLErrors when invalid.\n *\n * Validate will stop validation after a `maxErrors` limit has been reached.\n * Attackers can send pathologically invalid queries to induce a DoS attack,\n * so by default `maxErrors` set to 100 errors.\n *\n * Optionally a custom TypeInfo instance may be provided. If not provided, one\n * will be created from the provided schema.\n */\n\nexport function validate(\n schema,\n documentAST,\n rules = specifiedRules,\n options,\n /** @deprecated will be removed in 17.0.0 */\n typeInfo = new TypeInfo(schema),\n) {\n var _options$maxErrors;\n\n const maxErrors =\n (_options$maxErrors =\n options === null || options === void 0 ? void 0 : options.maxErrors) !==\n null && _options$maxErrors !== void 0\n ? _options$maxErrors\n : 100;\n documentAST || devAssert(false, 'Must provide document.'); // If the schema used for validation is invalid, throw an error.\n\n assertValidSchema(schema);\n const abortObj = Object.freeze({});\n const errors = [];\n const context = new ValidationContext(\n schema,\n documentAST,\n typeInfo,\n (error) => {\n if (errors.length >= maxErrors) {\n errors.push(\n new GraphQLError(\n 'Too many validation errors, error limit reached. Validation aborted.',\n ),\n ); // eslint-disable-next-line @typescript-eslint/no-throw-literal\n\n throw abortObj;\n }\n\n errors.push(error);\n },\n ); // This uses a specialized visitor which runs multiple visitors in parallel,\n // while maintaining the visitor skip and break API.\n\n const visitor = visitInParallel(rules.map((rule) => rule(context))); // Visit the whole document with each instance of all provided rules.\n\n try {\n visit(documentAST, visitWithTypeInfo(typeInfo, visitor));\n } catch (e) {\n if (e !== abortObj) {\n throw e;\n }\n }\n\n return errors;\n}\n/**\n * @internal\n */\n\nexport function validateSDL(\n documentAST,\n schemaToExtend,\n rules = specifiedSDLRules,\n) {\n const errors = [];\n const context = new SDLValidationContext(\n documentAST,\n schemaToExtend,\n (error) => {\n errors.push(error);\n },\n );\n const visitors = rules.map((rule) => rule(context));\n visit(documentAST, visitInParallel(visitors));\n return errors;\n}\n/**\n * Utility function which asserts a SDL document is valid by throwing an error\n * if it is invalid.\n *\n * @internal\n */\n\nexport function assertValidSDL(documentAST) {\n const errors = validateSDL(documentAST);\n\n if (errors.length !== 0) {\n throw new Error(errors.map((error) => error.message).join('\\n\\n'));\n }\n}\n/**\n * Utility function which asserts a SDL document is valid by throwing an error\n * if it is invalid.\n *\n * @internal\n */\n\nexport function assertValidSDLExtension(documentAST, schema) {\n const errors = validateSDL(documentAST, schema);\n\n if (errors.length !== 0) {\n throw new Error(errors.map((error) => error.message).join('\\n\\n'));\n }\n}\n", "/**\n * Memoizes the provided three-argument function.\n */\nexport function memoize3(fn) {\n let cache0;\n return function memoized(a1, a2, a3) {\n if (cache0 === undefined) {\n cache0 = new WeakMap();\n }\n\n let cache1 = cache0.get(a1);\n\n if (cache1 === undefined) {\n cache1 = new WeakMap();\n cache0.set(a1, cache1);\n }\n\n let cache2 = cache1.get(a2);\n\n if (cache2 === undefined) {\n cache2 = new WeakMap();\n cache1.set(a2, cache2);\n }\n\n let fnResult = cache2.get(a3);\n\n if (fnResult === undefined) {\n fnResult = fn(a1, a2, a3);\n cache2.set(a3, fnResult);\n }\n\n return fnResult;\n };\n}\n", "/**\n * This function transforms a JS object `ObjMap>` into\n * a `Promise>`\n *\n * This is akin to bluebird's `Promise.props`, but implemented only using\n * `Promise.all` so it will work with any implementation of ES6 promises.\n */\nexport function promiseForObject(object) {\n return Promise.all(Object.values(object)).then((resolvedValues) => {\n const resolvedObject = Object.create(null);\n\n for (const [i, key] of Object.keys(object).entries()) {\n resolvedObject[key] = resolvedValues[i];\n }\n\n return resolvedObject;\n });\n}\n", "import { isPromise } from './isPromise.mjs';\n\n/**\n * Similar to Array.prototype.reduce(), however the reducing callback may return\n * a Promise, in which case reduction will continue after each promise resolves.\n *\n * If the callback does not return a Promise, then this function will also not\n * return a Promise.\n */\nexport function promiseReduce(values, callbackFn, initialValue) {\n let accumulator = initialValue;\n\n for (const value of values) {\n accumulator = isPromise(accumulator)\n ? accumulator.then((resolved) => callbackFn(resolved, value))\n : callbackFn(accumulator, value);\n }\n\n return accumulator;\n}\n", "import { inspect } from './inspect.mjs';\n/**\n * Sometimes a non-error is thrown, wrap it as an Error instance to ensure a consistent Error interface.\n */\n\nexport function toError(thrownValue) {\n return thrownValue instanceof Error\n ? thrownValue\n : new NonErrorThrown(thrownValue);\n}\n\nclass NonErrorThrown extends Error {\n constructor(thrownValue) {\n super('Unexpected error value: ' + inspect(thrownValue));\n this.name = 'NonErrorThrown';\n this.thrownValue = thrownValue;\n }\n}\n", "import { toError } from '../jsutils/toError.mjs';\nimport { GraphQLError } from './GraphQLError.mjs';\n/**\n * Given an arbitrary value, presumably thrown while attempting to execute a\n * GraphQL operation, produce a new GraphQLError aware of the location in the\n * document responsible for the original Error.\n */\n\nexport function locatedError(rawOriginalError, nodes, path) {\n var _nodes;\n\n const originalError = toError(rawOriginalError); // Note: this uses a brand-check to support GraphQL errors originating from other contexts.\n\n if (isLocatedGraphQLError(originalError)) {\n return originalError;\n }\n\n return new GraphQLError(originalError.message, {\n nodes:\n (_nodes = originalError.nodes) !== null && _nodes !== void 0\n ? _nodes\n : nodes,\n source: originalError.source,\n positions: originalError.positions,\n path,\n originalError,\n });\n}\n\nfunction isLocatedGraphQLError(error) {\n return Array.isArray(error.path);\n}\n", "import { devAssert } from '../jsutils/devAssert.mjs';\nimport { inspect } from '../jsutils/inspect.mjs';\nimport { invariant } from '../jsutils/invariant.mjs';\nimport { isIterableObject } from '../jsutils/isIterableObject.mjs';\nimport { isObjectLike } from '../jsutils/isObjectLike.mjs';\nimport { isPromise } from '../jsutils/isPromise.mjs';\nimport { memoize3 } from '../jsutils/memoize3.mjs';\nimport { addPath, pathToArray } from '../jsutils/Path.mjs';\nimport { promiseForObject } from '../jsutils/promiseForObject.mjs';\nimport { promiseReduce } from '../jsutils/promiseReduce.mjs';\nimport { GraphQLError } from '../error/GraphQLError.mjs';\nimport { locatedError } from '../error/locatedError.mjs';\nimport { OperationTypeNode } from '../language/ast.mjs';\nimport { Kind } from '../language/kinds.mjs';\nimport {\n isAbstractType,\n isLeafType,\n isListType,\n isNonNullType,\n isObjectType,\n} from '../type/definition.mjs';\nimport {\n SchemaMetaFieldDef,\n TypeMetaFieldDef,\n TypeNameMetaFieldDef,\n} from '../type/introspection.mjs';\nimport { assertValidSchema } from '../type/validate.mjs';\nimport {\n collectFields,\n collectSubfields as _collectSubfields,\n} from './collectFields.mjs';\nimport { getArgumentValues, getVariableValues } from './values.mjs';\n/**\n * A memoized collection of relevant subfields with regard to the return\n * type. Memoizing ensures the subfields are not repeatedly calculated, which\n * saves overhead when resolving lists of values.\n */\n\nconst collectSubfields = memoize3((exeContext, returnType, fieldNodes) =>\n _collectSubfields(\n exeContext.schema,\n exeContext.fragments,\n exeContext.variableValues,\n returnType,\n fieldNodes,\n ),\n);\n/**\n * Terminology\n *\n * \"Definitions\" are the generic name for top-level statements in the document.\n * Examples of this include:\n * 1) Operations (such as a query)\n * 2) Fragments\n *\n * \"Operations\" are a generic name for requests in the document.\n * Examples of this include:\n * 1) query,\n * 2) mutation\n *\n * \"Selections\" are the definitions that can appear legally and at\n * single level of the query. These include:\n * 1) field references e.g `a`\n * 2) fragment \"spreads\" e.g. `...c`\n * 3) inline fragment \"spreads\" e.g. `...on Type { a }`\n */\n\n/**\n * Data that must be available at all points during query execution.\n *\n * Namely, schema of the type system that is currently executing,\n * and the fragments defined in the query document\n */\n\n/**\n * Implements the \"Executing requests\" section of the GraphQL specification.\n *\n * Returns either a synchronous ExecutionResult (if all encountered resolvers\n * are synchronous), or a Promise of an ExecutionResult that will eventually be\n * resolved and never rejected.\n *\n * If the arguments to this function do not result in a legal execution context,\n * a GraphQLError will be thrown immediately explaining the invalid input.\n */\nexport function execute(args) {\n // Temporary for v15 to v16 migration. Remove in v17\n arguments.length < 2 ||\n devAssert(\n false,\n 'graphql@16 dropped long-deprecated support for positional arguments, please pass an object instead.',\n );\n const { schema, document, variableValues, rootValue } = args; // If arguments are missing or incorrect, throw an error.\n\n assertValidExecutionArguments(schema, document, variableValues); // If a valid execution context cannot be created due to incorrect arguments,\n // a \"Response\" with only errors is returned.\n\n const exeContext = buildExecutionContext(args); // Return early errors if execution context failed.\n\n if (!('schema' in exeContext)) {\n return {\n errors: exeContext,\n };\n } // Return a Promise that will eventually resolve to the data described by\n // The \"Response\" section of the GraphQL specification.\n //\n // If errors are encountered while executing a GraphQL field, only that\n // field and its descendants will be omitted, and sibling fields will still\n // be executed. An execution which encounters errors will still result in a\n // resolved Promise.\n //\n // Errors from sub-fields of a NonNull type may propagate to the top level,\n // at which point we still log the error and null the parent field, which\n // in this case is the entire response.\n\n try {\n const { operation } = exeContext;\n const result = executeOperation(exeContext, operation, rootValue);\n\n if (isPromise(result)) {\n return result.then(\n (data) => buildResponse(data, exeContext.errors),\n (error) => {\n exeContext.errors.push(error);\n return buildResponse(null, exeContext.errors);\n },\n );\n }\n\n return buildResponse(result, exeContext.errors);\n } catch (error) {\n exeContext.errors.push(error);\n return buildResponse(null, exeContext.errors);\n }\n}\n/**\n * Also implements the \"Executing requests\" section of the GraphQL specification.\n * However, it guarantees to complete synchronously (or throw an error) assuming\n * that all field resolvers are also synchronous.\n */\n\nexport function executeSync(args) {\n const result = execute(args); // Assert that the execution was synchronous.\n\n if (isPromise(result)) {\n throw new Error('GraphQL execution failed to complete synchronously.');\n }\n\n return result;\n}\n/**\n * Given a completed execution context and data, build the `{ errors, data }`\n * response defined by the \"Response\" section of the GraphQL specification.\n */\n\nfunction buildResponse(data, errors) {\n return errors.length === 0\n ? {\n data,\n }\n : {\n errors,\n data,\n };\n}\n/**\n * Essential assertions before executing to provide developer feedback for\n * improper use of the GraphQL library.\n *\n * @internal\n */\n\nexport function assertValidExecutionArguments(\n schema,\n document,\n rawVariableValues,\n) {\n document || devAssert(false, 'Must provide document.'); // If the schema used for execution is invalid, throw an error.\n\n assertValidSchema(schema); // Variables, if provided, must be an object.\n\n rawVariableValues == null ||\n isObjectLike(rawVariableValues) ||\n devAssert(\n false,\n 'Variables must be provided as an Object where each property is a variable value. Perhaps look to see if an unparsed JSON string was provided.',\n );\n}\n/**\n * Constructs a ExecutionContext object from the arguments passed to\n * execute, which we will pass throughout the other execution methods.\n *\n * Throws a GraphQLError if a valid execution context cannot be created.\n *\n * @internal\n */\n\nexport function buildExecutionContext(args) {\n var _definition$name, _operation$variableDe;\n\n const {\n schema,\n document,\n rootValue,\n contextValue,\n variableValues: rawVariableValues,\n operationName,\n fieldResolver,\n typeResolver,\n subscribeFieldResolver,\n } = args;\n let operation;\n const fragments = Object.create(null);\n\n for (const definition of document.definitions) {\n switch (definition.kind) {\n case Kind.OPERATION_DEFINITION:\n if (operationName == null) {\n if (operation !== undefined) {\n return [\n new GraphQLError(\n 'Must provide operation name if query contains multiple operations.',\n ),\n ];\n }\n\n operation = definition;\n } else if (\n ((_definition$name = definition.name) === null ||\n _definition$name === void 0\n ? void 0\n : _definition$name.value) === operationName\n ) {\n operation = definition;\n }\n\n break;\n\n case Kind.FRAGMENT_DEFINITION:\n fragments[definition.name.value] = definition;\n break;\n\n default: // ignore non-executable definitions\n }\n }\n\n if (!operation) {\n if (operationName != null) {\n return [new GraphQLError(`Unknown operation named \"${operationName}\".`)];\n }\n\n return [new GraphQLError('Must provide an operation.')];\n } // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n\n const variableDefinitions =\n (_operation$variableDe = operation.variableDefinitions) !== null &&\n _operation$variableDe !== void 0\n ? _operation$variableDe\n : [];\n const coercedVariableValues = getVariableValues(\n schema,\n variableDefinitions,\n rawVariableValues !== null && rawVariableValues !== void 0\n ? rawVariableValues\n : {},\n {\n maxErrors: 50,\n },\n );\n\n if (coercedVariableValues.errors) {\n return coercedVariableValues.errors;\n }\n\n return {\n schema,\n fragments,\n rootValue,\n contextValue,\n operation,\n variableValues: coercedVariableValues.coerced,\n fieldResolver:\n fieldResolver !== null && fieldResolver !== void 0\n ? fieldResolver\n : defaultFieldResolver,\n typeResolver:\n typeResolver !== null && typeResolver !== void 0\n ? typeResolver\n : defaultTypeResolver,\n subscribeFieldResolver:\n subscribeFieldResolver !== null && subscribeFieldResolver !== void 0\n ? subscribeFieldResolver\n : defaultFieldResolver,\n errors: [],\n };\n}\n/**\n * Implements the \"Executing operations\" section of the spec.\n */\n\nfunction executeOperation(exeContext, operation, rootValue) {\n const rootType = exeContext.schema.getRootType(operation.operation);\n\n if (rootType == null) {\n throw new GraphQLError(\n `Schema is not configured to execute ${operation.operation} operation.`,\n {\n nodes: operation,\n },\n );\n }\n\n const rootFields = collectFields(\n exeContext.schema,\n exeContext.fragments,\n exeContext.variableValues,\n rootType,\n operation.selectionSet,\n );\n const path = undefined;\n\n switch (operation.operation) {\n case OperationTypeNode.QUERY:\n return executeFields(exeContext, rootType, rootValue, path, rootFields);\n\n case OperationTypeNode.MUTATION:\n return executeFieldsSerially(\n exeContext,\n rootType,\n rootValue,\n path,\n rootFields,\n );\n\n case OperationTypeNode.SUBSCRIPTION:\n // TODO: deprecate `subscribe` and move all logic here\n // Temporary solution until we finish merging execute and subscribe together\n return executeFields(exeContext, rootType, rootValue, path, rootFields);\n }\n}\n/**\n * Implements the \"Executing selection sets\" section of the spec\n * for fields that must be executed serially.\n */\n\nfunction executeFieldsSerially(\n exeContext,\n parentType,\n sourceValue,\n path,\n fields,\n) {\n return promiseReduce(\n fields.entries(),\n (results, [responseName, fieldNodes]) => {\n const fieldPath = addPath(path, responseName, parentType.name);\n const result = executeField(\n exeContext,\n parentType,\n sourceValue,\n fieldNodes,\n fieldPath,\n );\n\n if (result === undefined) {\n return results;\n }\n\n if (isPromise(result)) {\n return result.then((resolvedResult) => {\n results[responseName] = resolvedResult;\n return results;\n });\n }\n\n results[responseName] = result;\n return results;\n },\n Object.create(null),\n );\n}\n/**\n * Implements the \"Executing selection sets\" section of the spec\n * for fields that may be executed in parallel.\n */\n\nfunction executeFields(exeContext, parentType, sourceValue, path, fields) {\n const results = Object.create(null);\n let containsPromise = false;\n\n for (const [responseName, fieldNodes] of fields.entries()) {\n const fieldPath = addPath(path, responseName, parentType.name);\n const result = executeField(\n exeContext,\n parentType,\n sourceValue,\n fieldNodes,\n fieldPath,\n );\n\n if (result !== undefined) {\n results[responseName] = result;\n\n if (isPromise(result)) {\n containsPromise = true;\n }\n }\n } // If there are no promises, we can just return the object\n\n if (!containsPromise) {\n return results;\n } // Otherwise, results is a map from field name to the result of resolving that\n // field, which is possibly a promise. Return a promise that will return this\n // same map, but with any promises replaced with the values they resolved to.\n\n return promiseForObject(results);\n}\n/**\n * Implements the \"Executing fields\" section of the spec\n * In particular, this function figures out the value that the field returns by\n * calling its resolve function, then calls completeValue to complete promises,\n * serialize scalars, or execute the sub-selection-set for objects.\n */\n\nfunction executeField(exeContext, parentType, source, fieldNodes, path) {\n var _fieldDef$resolve;\n\n const fieldDef = getFieldDef(exeContext.schema, parentType, fieldNodes[0]);\n\n if (!fieldDef) {\n return;\n }\n\n const returnType = fieldDef.type;\n const resolveFn =\n (_fieldDef$resolve = fieldDef.resolve) !== null &&\n _fieldDef$resolve !== void 0\n ? _fieldDef$resolve\n : exeContext.fieldResolver;\n const info = buildResolveInfo(\n exeContext,\n fieldDef,\n fieldNodes,\n parentType,\n path,\n ); // Get the resolve function, regardless of if its result is normal or abrupt (error).\n\n try {\n // Build a JS object of arguments from the field.arguments AST, using the\n // variables scope to fulfill any variable references.\n // TODO: find a way to memoize, in case this field is within a List type.\n const args = getArgumentValues(\n fieldDef,\n fieldNodes[0],\n exeContext.variableValues,\n ); // The resolve function's optional third argument is a context value that\n // is provided to every resolve function within an execution. It is commonly\n // used to represent an authenticated user, or request-specific caches.\n\n const contextValue = exeContext.contextValue;\n const result = resolveFn(source, args, contextValue, info);\n let completed;\n\n if (isPromise(result)) {\n completed = result.then((resolved) =>\n completeValue(exeContext, returnType, fieldNodes, info, path, resolved),\n );\n } else {\n completed = completeValue(\n exeContext,\n returnType,\n fieldNodes,\n info,\n path,\n result,\n );\n }\n\n if (isPromise(completed)) {\n // Note: we don't rely on a `catch` method, but we do expect \"thenable\"\n // to take a second callback for the error case.\n return completed.then(undefined, (rawError) => {\n const error = locatedError(rawError, fieldNodes, pathToArray(path));\n return handleFieldError(error, returnType, exeContext);\n });\n }\n\n return completed;\n } catch (rawError) {\n const error = locatedError(rawError, fieldNodes, pathToArray(path));\n return handleFieldError(error, returnType, exeContext);\n }\n}\n/**\n * @internal\n */\n\nexport function buildResolveInfo(\n exeContext,\n fieldDef,\n fieldNodes,\n parentType,\n path,\n) {\n // The resolve function's optional fourth argument is a collection of\n // information about the current execution state.\n return {\n fieldName: fieldDef.name,\n fieldNodes,\n returnType: fieldDef.type,\n parentType,\n path,\n schema: exeContext.schema,\n fragments: exeContext.fragments,\n rootValue: exeContext.rootValue,\n operation: exeContext.operation,\n variableValues: exeContext.variableValues,\n };\n}\n\nfunction handleFieldError(error, returnType, exeContext) {\n // If the field type is non-nullable, then it is resolved without any\n // protection from errors, however it still properly locates the error.\n if (isNonNullType(returnType)) {\n throw error;\n } // Otherwise, error protection is applied, logging the error and resolving\n // a null value for this field if one is encountered.\n\n exeContext.errors.push(error);\n return null;\n}\n/**\n * Implements the instructions for completeValue as defined in the\n * \"Value Completion\" section of the spec.\n *\n * If the field type is Non-Null, then this recursively completes the value\n * for the inner type. It throws a field error if that completion returns null,\n * as per the \"Nullability\" section of the spec.\n *\n * If the field type is a List, then this recursively completes the value\n * for the inner type on each item in the list.\n *\n * If the field type is a Scalar or Enum, ensures the completed value is a legal\n * value of the type by calling the `serialize` method of GraphQL type\n * definition.\n *\n * If the field is an abstract type, determine the runtime type of the value\n * and then complete based on that type\n *\n * Otherwise, the field type expects a sub-selection set, and will complete the\n * value by executing all sub-selections.\n */\n\nfunction completeValue(exeContext, returnType, fieldNodes, info, path, result) {\n // If result is an Error, throw a located error.\n if (result instanceof Error) {\n throw result;\n } // If field type is NonNull, complete for inner type, and throw field error\n // if result is null.\n\n if (isNonNullType(returnType)) {\n const completed = completeValue(\n exeContext,\n returnType.ofType,\n fieldNodes,\n info,\n path,\n result,\n );\n\n if (completed === null) {\n throw new Error(\n `Cannot return null for non-nullable field ${info.parentType.name}.${info.fieldName}.`,\n );\n }\n\n return completed;\n } // If result value is null or undefined then return null.\n\n if (result == null) {\n return null;\n } // If field type is List, complete each item in the list with the inner type\n\n if (isListType(returnType)) {\n return completeListValue(\n exeContext,\n returnType,\n fieldNodes,\n info,\n path,\n result,\n );\n } // If field type is a leaf type, Scalar or Enum, serialize to a valid value,\n // returning null if serialization is not possible.\n\n if (isLeafType(returnType)) {\n return completeLeafValue(returnType, result);\n } // If field type is an abstract type, Interface or Union, determine the\n // runtime Object type and complete for that type.\n\n if (isAbstractType(returnType)) {\n return completeAbstractValue(\n exeContext,\n returnType,\n fieldNodes,\n info,\n path,\n result,\n );\n } // If field type is Object, execute and complete all sub-selections.\n\n if (isObjectType(returnType)) {\n return completeObjectValue(\n exeContext,\n returnType,\n fieldNodes,\n info,\n path,\n result,\n );\n }\n /* c8 ignore next 6 */\n // Not reachable, all possible output types have been considered.\n\n false ||\n invariant(\n false,\n 'Cannot complete value of unexpected output type: ' + inspect(returnType),\n );\n}\n/**\n * Complete a list value by completing each item in the list with the\n * inner type\n */\n\nfunction completeListValue(\n exeContext,\n returnType,\n fieldNodes,\n info,\n path,\n result,\n) {\n if (!isIterableObject(result)) {\n throw new GraphQLError(\n `Expected Iterable, but did not find one for field \"${info.parentType.name}.${info.fieldName}\".`,\n );\n } // This is specified as a simple map, however we're optimizing the path\n // where the list contains no Promises by avoiding creating another Promise.\n\n const itemType = returnType.ofType;\n let containsPromise = false;\n const completedResults = Array.from(result, (item, index) => {\n // No need to modify the info object containing the path,\n // since from here on it is not ever accessed by resolver functions.\n const itemPath = addPath(path, index, undefined);\n\n try {\n let completedItem;\n\n if (isPromise(item)) {\n completedItem = item.then((resolved) =>\n completeValue(\n exeContext,\n itemType,\n fieldNodes,\n info,\n itemPath,\n resolved,\n ),\n );\n } else {\n completedItem = completeValue(\n exeContext,\n itemType,\n fieldNodes,\n info,\n itemPath,\n item,\n );\n }\n\n if (isPromise(completedItem)) {\n containsPromise = true; // Note: we don't rely on a `catch` method, but we do expect \"thenable\"\n // to take a second callback for the error case.\n\n return completedItem.then(undefined, (rawError) => {\n const error = locatedError(\n rawError,\n fieldNodes,\n pathToArray(itemPath),\n );\n return handleFieldError(error, itemType, exeContext);\n });\n }\n\n return completedItem;\n } catch (rawError) {\n const error = locatedError(rawError, fieldNodes, pathToArray(itemPath));\n return handleFieldError(error, itemType, exeContext);\n }\n });\n return containsPromise ? Promise.all(completedResults) : completedResults;\n}\n/**\n * Complete a Scalar or Enum by serializing to a valid value, returning\n * null if serialization is not possible.\n */\n\nfunction completeLeafValue(returnType, result) {\n const serializedResult = returnType.serialize(result);\n\n if (serializedResult == null) {\n throw new Error(\n `Expected \\`${inspect(returnType)}.serialize(${inspect(result)})\\` to ` +\n `return non-nullable value, returned: ${inspect(serializedResult)}`,\n );\n }\n\n return serializedResult;\n}\n/**\n * Complete a value of an abstract type by determining the runtime object type\n * of that value, then complete the value for that type.\n */\n\nfunction completeAbstractValue(\n exeContext,\n returnType,\n fieldNodes,\n info,\n path,\n result,\n) {\n var _returnType$resolveTy;\n\n const resolveTypeFn =\n (_returnType$resolveTy = returnType.resolveType) !== null &&\n _returnType$resolveTy !== void 0\n ? _returnType$resolveTy\n : exeContext.typeResolver;\n const contextValue = exeContext.contextValue;\n const runtimeType = resolveTypeFn(result, contextValue, info, returnType);\n\n if (isPromise(runtimeType)) {\n return runtimeType.then((resolvedRuntimeType) =>\n completeObjectValue(\n exeContext,\n ensureValidRuntimeType(\n resolvedRuntimeType,\n exeContext,\n returnType,\n fieldNodes,\n info,\n result,\n ),\n fieldNodes,\n info,\n path,\n result,\n ),\n );\n }\n\n return completeObjectValue(\n exeContext,\n ensureValidRuntimeType(\n runtimeType,\n exeContext,\n returnType,\n fieldNodes,\n info,\n result,\n ),\n fieldNodes,\n info,\n path,\n result,\n );\n}\n\nfunction ensureValidRuntimeType(\n runtimeTypeName,\n exeContext,\n returnType,\n fieldNodes,\n info,\n result,\n) {\n if (runtimeTypeName == null) {\n throw new GraphQLError(\n `Abstract type \"${returnType.name}\" must resolve to an Object type at runtime for field \"${info.parentType.name}.${info.fieldName}\". Either the \"${returnType.name}\" type should provide a \"resolveType\" function or each possible type should provide an \"isTypeOf\" function.`,\n fieldNodes,\n );\n } // releases before 16.0.0 supported returning `GraphQLObjectType` from `resolveType`\n // TODO: remove in 17.0.0 release\n\n if (isObjectType(runtimeTypeName)) {\n throw new GraphQLError(\n 'Support for returning GraphQLObjectType from resolveType was removed in graphql-js@16.0.0 please return type name instead.',\n );\n }\n\n if (typeof runtimeTypeName !== 'string') {\n throw new GraphQLError(\n `Abstract type \"${returnType.name}\" must resolve to an Object type at runtime for field \"${info.parentType.name}.${info.fieldName}\" with ` +\n `value ${inspect(result)}, received \"${inspect(runtimeTypeName)}\".`,\n );\n }\n\n const runtimeType = exeContext.schema.getType(runtimeTypeName);\n\n if (runtimeType == null) {\n throw new GraphQLError(\n `Abstract type \"${returnType.name}\" was resolved to a type \"${runtimeTypeName}\" that does not exist inside the schema.`,\n {\n nodes: fieldNodes,\n },\n );\n }\n\n if (!isObjectType(runtimeType)) {\n throw new GraphQLError(\n `Abstract type \"${returnType.name}\" was resolved to a non-object type \"${runtimeTypeName}\".`,\n {\n nodes: fieldNodes,\n },\n );\n }\n\n if (!exeContext.schema.isSubType(returnType, runtimeType)) {\n throw new GraphQLError(\n `Runtime Object type \"${runtimeType.name}\" is not a possible type for \"${returnType.name}\".`,\n {\n nodes: fieldNodes,\n },\n );\n }\n\n return runtimeType;\n}\n/**\n * Complete an Object value by executing all sub-selections.\n */\n\nfunction completeObjectValue(\n exeContext,\n returnType,\n fieldNodes,\n info,\n path,\n result,\n) {\n // Collect sub-fields to execute to complete this value.\n const subFieldNodes = collectSubfields(exeContext, returnType, fieldNodes); // If there is an isTypeOf predicate function, call it with the\n // current result. If isTypeOf returns false, then raise an error rather\n // than continuing execution.\n\n if (returnType.isTypeOf) {\n const isTypeOf = returnType.isTypeOf(result, exeContext.contextValue, info);\n\n if (isPromise(isTypeOf)) {\n return isTypeOf.then((resolvedIsTypeOf) => {\n if (!resolvedIsTypeOf) {\n throw invalidReturnTypeError(returnType, result, fieldNodes);\n }\n\n return executeFields(\n exeContext,\n returnType,\n result,\n path,\n subFieldNodes,\n );\n });\n }\n\n if (!isTypeOf) {\n throw invalidReturnTypeError(returnType, result, fieldNodes);\n }\n }\n\n return executeFields(exeContext, returnType, result, path, subFieldNodes);\n}\n\nfunction invalidReturnTypeError(returnType, result, fieldNodes) {\n return new GraphQLError(\n `Expected value of type \"${returnType.name}\" but got: ${inspect(result)}.`,\n {\n nodes: fieldNodes,\n },\n );\n}\n/**\n * If a resolveType function is not given, then a default resolve behavior is\n * used which attempts two strategies:\n *\n * First, See if the provided value has a `__typename` field defined, if so, use\n * that value as name of the resolved type.\n *\n * Otherwise, test each possible type for the abstract type by calling\n * isTypeOf for the object being coerced, returning the first type that matches.\n */\n\nexport const defaultTypeResolver = function (\n value,\n contextValue,\n info,\n abstractType,\n) {\n // First, look for `__typename`.\n if (isObjectLike(value) && typeof value.__typename === 'string') {\n return value.__typename;\n } // Otherwise, test each possible type.\n\n const possibleTypes = info.schema.getPossibleTypes(abstractType);\n const promisedIsTypeOfResults = [];\n\n for (let i = 0; i < possibleTypes.length; i++) {\n const type = possibleTypes[i];\n\n if (type.isTypeOf) {\n const isTypeOfResult = type.isTypeOf(value, contextValue, info);\n\n if (isPromise(isTypeOfResult)) {\n promisedIsTypeOfResults[i] = isTypeOfResult;\n } else if (isTypeOfResult) {\n return type.name;\n }\n }\n }\n\n if (promisedIsTypeOfResults.length) {\n return Promise.all(promisedIsTypeOfResults).then((isTypeOfResults) => {\n for (let i = 0; i < isTypeOfResults.length; i++) {\n if (isTypeOfResults[i]) {\n return possibleTypes[i].name;\n }\n }\n });\n }\n};\n/**\n * If a resolve function is not given, then a default resolve behavior is used\n * which takes the property of the source object of the same name as the field\n * and returns it as the result, or if it's a function, returns the result\n * of calling that function while passing along args and context value.\n */\n\nexport const defaultFieldResolver = function (\n source,\n args,\n contextValue,\n info,\n) {\n // ensure source is a value for which property access is acceptable.\n if (isObjectLike(source) || typeof source === 'function') {\n const property = source[info.fieldName];\n\n if (typeof property === 'function') {\n return source[info.fieldName](args, contextValue, info);\n }\n\n return property;\n }\n};\n/**\n * This method looks up the field on the given type definition.\n * It has special casing for the three introspection fields,\n * __schema, __type and __typename. __typename is special because\n * it can always be queried as a field, even in situations where no\n * other fields are allowed, like on a Union. __schema and __type\n * could get automatically added to the query type, but that would\n * require mutating type definitions, which would cause issues.\n *\n * @internal\n */\n\nexport function getFieldDef(schema, parentType, fieldNode) {\n const fieldName = fieldNode.name.value;\n\n if (\n fieldName === SchemaMetaFieldDef.name &&\n schema.getQueryType() === parentType\n ) {\n return SchemaMetaFieldDef;\n } else if (\n fieldName === TypeMetaFieldDef.name &&\n schema.getQueryType() === parentType\n ) {\n return TypeMetaFieldDef;\n } else if (fieldName === TypeNameMetaFieldDef.name) {\n return TypeNameMetaFieldDef;\n }\n\n return parentType.getFields()[fieldName];\n}\n", "/**\n * Returns true if the provided object implements the AsyncIterator protocol via\n * implementing a `Symbol.asyncIterator` method.\n */\nexport function isAsyncIterable(maybeAsyncIterable) {\n return (\n typeof (maybeAsyncIterable === null || maybeAsyncIterable === void 0\n ? void 0\n : maybeAsyncIterable[Symbol.asyncIterator]) === 'function'\n );\n}\n", "/**\n * Given an AsyncIterable and a callback function, return an AsyncIterator\n * which produces values mapped via calling the callback function.\n */\nexport function mapAsyncIterator(iterable, callback) {\n const iterator = iterable[Symbol.asyncIterator]();\n\n async function mapResult(result) {\n if (result.done) {\n return result;\n }\n\n try {\n return {\n value: await callback(result.value),\n done: false,\n };\n } catch (error) {\n /* c8 ignore start */\n // FIXME: add test case\n if (typeof iterator.return === 'function') {\n try {\n await iterator.return();\n } catch (_e) {\n /* ignore error */\n }\n }\n\n throw error;\n /* c8 ignore stop */\n }\n }\n\n return {\n async next() {\n return mapResult(await iterator.next());\n },\n\n async return() {\n // If iterator.return() does not exist, then type R must be undefined.\n return typeof iterator.return === 'function'\n ? mapResult(await iterator.return())\n : {\n value: undefined,\n done: true,\n };\n },\n\n async throw(error) {\n if (typeof iterator.throw === 'function') {\n return mapResult(await iterator.throw(error));\n }\n\n throw error;\n },\n\n [Symbol.asyncIterator]() {\n return this;\n },\n };\n}\n", "import { devAssert } from '../jsutils/devAssert.mjs';\nimport { inspect } from '../jsutils/inspect.mjs';\nimport { isAsyncIterable } from '../jsutils/isAsyncIterable.mjs';\nimport { addPath, pathToArray } from '../jsutils/Path.mjs';\nimport { GraphQLError } from '../error/GraphQLError.mjs';\nimport { locatedError } from '../error/locatedError.mjs';\nimport { collectFields } from './collectFields.mjs';\nimport {\n assertValidExecutionArguments,\n buildExecutionContext,\n buildResolveInfo,\n execute,\n getFieldDef,\n} from './execute.mjs';\nimport { mapAsyncIterator } from './mapAsyncIterator.mjs';\nimport { getArgumentValues } from './values.mjs';\n/**\n * Implements the \"Subscribe\" algorithm described in the GraphQL specification.\n *\n * Returns a Promise which resolves to either an AsyncIterator (if successful)\n * or an ExecutionResult (error). The promise will be rejected if the schema or\n * other arguments to this function are invalid, or if the resolved event stream\n * is not an async iterable.\n *\n * If the client-provided arguments to this function do not result in a\n * compliant subscription, a GraphQL Response (ExecutionResult) with\n * descriptive errors and no data will be returned.\n *\n * If the source stream could not be created due to faulty subscription\n * resolver logic or underlying systems, the promise will resolve to a single\n * ExecutionResult containing `errors` and no `data`.\n *\n * If the operation succeeded, the promise resolves to an AsyncIterator, which\n * yields a stream of ExecutionResults representing the response stream.\n *\n * Accepts either an object with named arguments, or individual arguments.\n */\n\nexport async function subscribe(args) {\n // Temporary for v15 to v16 migration. Remove in v17\n arguments.length < 2 ||\n devAssert(\n false,\n 'graphql@16 dropped long-deprecated support for positional arguments, please pass an object instead.',\n );\n const resultOrStream = await createSourceEventStream(args);\n\n if (!isAsyncIterable(resultOrStream)) {\n return resultOrStream;\n } // For each payload yielded from a subscription, map it over the normal\n // GraphQL `execute` function, with `payload` as the rootValue.\n // This implements the \"MapSourceToResponseEvent\" algorithm described in\n // the GraphQL specification. The `execute` function provides the\n // \"ExecuteSubscriptionEvent\" algorithm, as it is nearly identical to the\n // \"ExecuteQuery\" algorithm, for which `execute` is also used.\n\n const mapSourceToResponse = (payload) =>\n execute({ ...args, rootValue: payload }); // Map every source value to a ExecutionResult value as described above.\n\n return mapAsyncIterator(resultOrStream, mapSourceToResponse);\n}\n\nfunction toNormalizedArgs(args) {\n const firstArg = args[0];\n\n if (firstArg && 'document' in firstArg) {\n return firstArg;\n }\n\n return {\n schema: firstArg,\n // FIXME: when underlying TS bug fixed, see https://github.com/microsoft/TypeScript/issues/31613\n document: args[1],\n rootValue: args[2],\n contextValue: args[3],\n variableValues: args[4],\n operationName: args[5],\n subscribeFieldResolver: args[6],\n };\n}\n/**\n * Implements the \"CreateSourceEventStream\" algorithm described in the\n * GraphQL specification, resolving the subscription source event stream.\n *\n * Returns a Promise which resolves to either an AsyncIterable (if successful)\n * or an ExecutionResult (error). The promise will be rejected if the schema or\n * other arguments to this function are invalid, or if the resolved event stream\n * is not an async iterable.\n *\n * If the client-provided arguments to this function do not result in a\n * compliant subscription, a GraphQL Response (ExecutionResult) with\n * descriptive errors and no data will be returned.\n *\n * If the the source stream could not be created due to faulty subscription\n * resolver logic or underlying systems, the promise will resolve to a single\n * ExecutionResult containing `errors` and no `data`.\n *\n * If the operation succeeded, the promise resolves to the AsyncIterable for the\n * event stream returned by the resolver.\n *\n * A Source Event Stream represents a sequence of events, each of which triggers\n * a GraphQL execution for that event.\n *\n * This may be useful when hosting the stateful subscription service in a\n * different process or machine than the stateless GraphQL execution engine,\n * or otherwise separating these two steps. For more on this, see the\n * \"Supporting Subscriptions at Scale\" information in the GraphQL specification.\n */\n\nexport async function createSourceEventStream(...rawArgs) {\n const args = toNormalizedArgs(rawArgs);\n const { schema, document, variableValues } = args; // If arguments are missing or incorrectly typed, this is an internal\n // developer mistake which should throw an early error.\n\n assertValidExecutionArguments(schema, document, variableValues); // If a valid execution context cannot be created due to incorrect arguments,\n // a \"Response\" with only errors is returned.\n\n const exeContext = buildExecutionContext(args); // Return early errors if execution context failed.\n\n if (!('schema' in exeContext)) {\n return {\n errors: exeContext,\n };\n }\n\n try {\n const eventStream = await executeSubscription(exeContext); // Assert field returned an event stream, otherwise yield an error.\n\n if (!isAsyncIterable(eventStream)) {\n throw new Error(\n 'Subscription field must return Async Iterable. ' +\n `Received: ${inspect(eventStream)}.`,\n );\n }\n\n return eventStream;\n } catch (error) {\n // If it GraphQLError, report it as an ExecutionResult, containing only errors and no data.\n // Otherwise treat the error as a system-class error and re-throw it.\n if (error instanceof GraphQLError) {\n return {\n errors: [error],\n };\n }\n\n throw error;\n }\n}\n\nasync function executeSubscription(exeContext) {\n const { schema, fragments, operation, variableValues, rootValue } =\n exeContext;\n const rootType = schema.getSubscriptionType();\n\n if (rootType == null) {\n throw new GraphQLError(\n 'Schema is not configured to execute subscription operation.',\n {\n nodes: operation,\n },\n );\n }\n\n const rootFields = collectFields(\n schema,\n fragments,\n variableValues,\n rootType,\n operation.selectionSet,\n );\n const [responseName, fieldNodes] = [...rootFields.entries()][0];\n const fieldDef = getFieldDef(schema, rootType, fieldNodes[0]);\n\n if (!fieldDef) {\n const fieldName = fieldNodes[0].name.value;\n throw new GraphQLError(\n `The subscription field \"${fieldName}\" is not defined.`,\n {\n nodes: fieldNodes,\n },\n );\n }\n\n const path = addPath(undefined, responseName, rootType.name);\n const info = buildResolveInfo(\n exeContext,\n fieldDef,\n fieldNodes,\n rootType,\n path,\n );\n\n try {\n var _fieldDef$subscribe;\n\n // Implements the \"ResolveFieldEventStream\" algorithm from GraphQL specification.\n // It differs from \"ResolveFieldValue\" due to providing a different `resolveFn`.\n // Build a JS object of arguments from the field.arguments AST, using the\n // variables scope to fulfill any variable references.\n const args = getArgumentValues(fieldDef, fieldNodes[0], variableValues); // The resolve function's optional third argument is a context value that\n // is provided to every resolve function within an execution. It is commonly\n // used to represent an authenticated user, or request-specific caches.\n\n const contextValue = exeContext.contextValue; // Call the `subscribe()` resolver or the default resolver to produce an\n // AsyncIterable yielding raw payloads.\n\n const resolveFn =\n (_fieldDef$subscribe = fieldDef.subscribe) !== null &&\n _fieldDef$subscribe !== void 0\n ? _fieldDef$subscribe\n : exeContext.subscribeFieldResolver;\n const eventStream = await resolveFn(rootValue, args, contextValue, info);\n\n if (eventStream instanceof Error) {\n throw eventStream;\n }\n\n return eventStream;\n } catch (error) {\n throw locatedError(error, fieldNodes, pathToArray(path));\n }\n}\n", "import { Kind } from '../language/kinds.mjs';\n/**\n * Returns an operation AST given a document AST and optionally an operation\n * name. If a name is not provided, an operation is only returned if only one is\n * provided in the document.\n */\n\nexport function getOperationAST(documentAST, operationName) {\n let operation = null;\n\n for (const definition of documentAST.definitions) {\n if (definition.kind === Kind.OPERATION_DEFINITION) {\n var _definition$name;\n\n if (operationName == null) {\n // If no operation name was provided, only return an Operation if there\n // is one defined in the document. Upon encountering the second, return\n // null.\n if (operation) {\n return null;\n }\n\n operation = definition;\n } else if (\n ((_definition$name = definition.name) === null ||\n _definition$name === void 0\n ? void 0\n : _definition$name.value) === operationName\n ) {\n return definition;\n }\n }\n }\n\n return operation;\n}\n", "import { devAssert } from '../jsutils/devAssert.mjs';\nimport { inspect } from '../jsutils/inspect.mjs';\nimport { invariant } from '../jsutils/invariant.mjs';\nimport { keyMap } from '../jsutils/keyMap.mjs';\nimport { mapValue } from '../jsutils/mapValue.mjs';\nimport { Kind } from '../language/kinds.mjs';\nimport {\n isTypeDefinitionNode,\n isTypeExtensionNode,\n} from '../language/predicates.mjs';\nimport {\n GraphQLEnumType,\n GraphQLInputObjectType,\n GraphQLInterfaceType,\n GraphQLList,\n GraphQLNonNull,\n GraphQLObjectType,\n GraphQLScalarType,\n GraphQLUnionType,\n isEnumType,\n isInputObjectType,\n isInterfaceType,\n isListType,\n isNonNullType,\n isObjectType,\n isScalarType,\n isUnionType,\n} from '../type/definition.mjs';\nimport {\n GraphQLDeprecatedDirective,\n GraphQLDirective,\n GraphQLSpecifiedByDirective,\n} from '../type/directives.mjs';\nimport {\n introspectionTypes,\n isIntrospectionType,\n} from '../type/introspection.mjs';\nimport {\n isSpecifiedScalarType,\n specifiedScalarTypes,\n} from '../type/scalars.mjs';\nimport { assertSchema, GraphQLSchema } from '../type/schema.mjs';\nimport { assertValidSDLExtension } from '../validation/validate.mjs';\nimport { getDirectiveValues } from '../execution/values.mjs';\nimport { valueFromAST } from './valueFromAST.mjs';\n\n/**\n * Produces a new schema given an existing schema and a document which may\n * contain GraphQL type extensions and definitions. The original schema will\n * remain unaltered.\n *\n * Because a schema represents a graph of references, a schema cannot be\n * extended without effectively making an entire copy. We do not know until it's\n * too late if subgraphs remain unchanged.\n *\n * This algorithm copies the provided schema, applying extensions while\n * producing the copy. The original schema remains unaltered.\n */\nexport function extendSchema(schema, documentAST, options) {\n assertSchema(schema);\n (documentAST != null && documentAST.kind === Kind.DOCUMENT) ||\n devAssert(false, 'Must provide valid Document AST.');\n\n if (\n (options === null || options === void 0 ? void 0 : options.assumeValid) !==\n true &&\n (options === null || options === void 0\n ? void 0\n : options.assumeValidSDL) !== true\n ) {\n assertValidSDLExtension(documentAST, schema);\n }\n\n const schemaConfig = schema.toConfig();\n const extendedConfig = extendSchemaImpl(schemaConfig, documentAST, options);\n return schemaConfig === extendedConfig\n ? schema\n : new GraphQLSchema(extendedConfig);\n}\n/**\n * @internal\n */\n\nexport function extendSchemaImpl(schemaConfig, documentAST, options) {\n var _schemaDef, _schemaDef$descriptio, _schemaDef2, _options$assumeValid;\n\n // Collect the type definitions and extensions found in the document.\n const typeDefs = [];\n const typeExtensionsMap = Object.create(null); // New directives and types are separate because a directives and types can\n // have the same name. For example, a type named \"skip\".\n\n const directiveDefs = [];\n let schemaDef; // Schema extensions are collected which may add additional operation types.\n\n const schemaExtensions = [];\n\n for (const def of documentAST.definitions) {\n if (def.kind === Kind.SCHEMA_DEFINITION) {\n schemaDef = def;\n } else if (def.kind === Kind.SCHEMA_EXTENSION) {\n schemaExtensions.push(def);\n } else if (isTypeDefinitionNode(def)) {\n typeDefs.push(def);\n } else if (isTypeExtensionNode(def)) {\n const extendedTypeName = def.name.value;\n const existingTypeExtensions = typeExtensionsMap[extendedTypeName];\n typeExtensionsMap[extendedTypeName] = existingTypeExtensions\n ? existingTypeExtensions.concat([def])\n : [def];\n } else if (def.kind === Kind.DIRECTIVE_DEFINITION) {\n directiveDefs.push(def);\n }\n } // If this document contains no new types, extensions, or directives then\n // return the same unmodified GraphQLSchema instance.\n\n if (\n Object.keys(typeExtensionsMap).length === 0 &&\n typeDefs.length === 0 &&\n directiveDefs.length === 0 &&\n schemaExtensions.length === 0 &&\n schemaDef == null\n ) {\n return schemaConfig;\n }\n\n const typeMap = Object.create(null);\n\n for (const existingType of schemaConfig.types) {\n typeMap[existingType.name] = extendNamedType(existingType);\n }\n\n for (const typeNode of typeDefs) {\n var _stdTypeMap$name;\n\n const name = typeNode.name.value;\n typeMap[name] =\n (_stdTypeMap$name = stdTypeMap[name]) !== null &&\n _stdTypeMap$name !== void 0\n ? _stdTypeMap$name\n : buildType(typeNode);\n }\n\n const operationTypes = {\n // Get the extended root operation types.\n query: schemaConfig.query && replaceNamedType(schemaConfig.query),\n mutation: schemaConfig.mutation && replaceNamedType(schemaConfig.mutation),\n subscription:\n schemaConfig.subscription && replaceNamedType(schemaConfig.subscription),\n // Then, incorporate schema definition and all schema extensions.\n ...(schemaDef && getOperationTypes([schemaDef])),\n ...getOperationTypes(schemaExtensions),\n }; // Then produce and return a Schema config with these types.\n\n return {\n description:\n (_schemaDef = schemaDef) === null || _schemaDef === void 0\n ? void 0\n : (_schemaDef$descriptio = _schemaDef.description) === null ||\n _schemaDef$descriptio === void 0\n ? void 0\n : _schemaDef$descriptio.value,\n ...operationTypes,\n types: Object.values(typeMap),\n directives: [\n ...schemaConfig.directives.map(replaceDirective),\n ...directiveDefs.map(buildDirective),\n ],\n extensions: Object.create(null),\n astNode:\n (_schemaDef2 = schemaDef) !== null && _schemaDef2 !== void 0\n ? _schemaDef2\n : schemaConfig.astNode,\n extensionASTNodes: schemaConfig.extensionASTNodes.concat(schemaExtensions),\n assumeValid:\n (_options$assumeValid =\n options === null || options === void 0\n ? void 0\n : options.assumeValid) !== null && _options$assumeValid !== void 0\n ? _options$assumeValid\n : false,\n }; // Below are functions used for producing this schema that have closed over\n // this scope and have access to the schema, cache, and newly defined types.\n\n function replaceType(type) {\n if (isListType(type)) {\n // @ts-expect-error\n return new GraphQLList(replaceType(type.ofType));\n }\n\n if (isNonNullType(type)) {\n // @ts-expect-error\n return new GraphQLNonNull(replaceType(type.ofType));\n } // @ts-expect-error FIXME\n\n return replaceNamedType(type);\n }\n\n function replaceNamedType(type) {\n // Note: While this could make early assertions to get the correctly\n // typed values, that would throw immediately while type system\n // validation with validateSchema() will produce more actionable results.\n return typeMap[type.name];\n }\n\n function replaceDirective(directive) {\n const config = directive.toConfig();\n return new GraphQLDirective({\n ...config,\n args: mapValue(config.args, extendArg),\n });\n }\n\n function extendNamedType(type) {\n if (isIntrospectionType(type) || isSpecifiedScalarType(type)) {\n // Builtin types are not extended.\n return type;\n }\n\n if (isScalarType(type)) {\n return extendScalarType(type);\n }\n\n if (isObjectType(type)) {\n return extendObjectType(type);\n }\n\n if (isInterfaceType(type)) {\n return extendInterfaceType(type);\n }\n\n if (isUnionType(type)) {\n return extendUnionType(type);\n }\n\n if (isEnumType(type)) {\n return extendEnumType(type);\n }\n\n if (isInputObjectType(type)) {\n return extendInputObjectType(type);\n }\n /* c8 ignore next 3 */\n // Not reachable, all possible type definition nodes have been considered.\n\n false || invariant(false, 'Unexpected type: ' + inspect(type));\n }\n\n function extendInputObjectType(type) {\n var _typeExtensionsMap$co;\n\n const config = type.toConfig();\n const extensions =\n (_typeExtensionsMap$co = typeExtensionsMap[config.name]) !== null &&\n _typeExtensionsMap$co !== void 0\n ? _typeExtensionsMap$co\n : [];\n return new GraphQLInputObjectType({\n ...config,\n fields: () => ({\n ...mapValue(config.fields, (field) => ({\n ...field,\n type: replaceType(field.type),\n })),\n ...buildInputFieldMap(extensions),\n }),\n extensionASTNodes: config.extensionASTNodes.concat(extensions),\n });\n }\n\n function extendEnumType(type) {\n var _typeExtensionsMap$ty;\n\n const config = type.toConfig();\n const extensions =\n (_typeExtensionsMap$ty = typeExtensionsMap[type.name]) !== null &&\n _typeExtensionsMap$ty !== void 0\n ? _typeExtensionsMap$ty\n : [];\n return new GraphQLEnumType({\n ...config,\n values: { ...config.values, ...buildEnumValueMap(extensions) },\n extensionASTNodes: config.extensionASTNodes.concat(extensions),\n });\n }\n\n function extendScalarType(type) {\n var _typeExtensionsMap$co2;\n\n const config = type.toConfig();\n const extensions =\n (_typeExtensionsMap$co2 = typeExtensionsMap[config.name]) !== null &&\n _typeExtensionsMap$co2 !== void 0\n ? _typeExtensionsMap$co2\n : [];\n let specifiedByURL = config.specifiedByURL;\n\n for (const extensionNode of extensions) {\n var _getSpecifiedByURL;\n\n specifiedByURL =\n (_getSpecifiedByURL = getSpecifiedByURL(extensionNode)) !== null &&\n _getSpecifiedByURL !== void 0\n ? _getSpecifiedByURL\n : specifiedByURL;\n }\n\n return new GraphQLScalarType({\n ...config,\n specifiedByURL,\n extensionASTNodes: config.extensionASTNodes.concat(extensions),\n });\n }\n\n function extendObjectType(type) {\n var _typeExtensionsMap$co3;\n\n const config = type.toConfig();\n const extensions =\n (_typeExtensionsMap$co3 = typeExtensionsMap[config.name]) !== null &&\n _typeExtensionsMap$co3 !== void 0\n ? _typeExtensionsMap$co3\n : [];\n return new GraphQLObjectType({\n ...config,\n interfaces: () => [\n ...type.getInterfaces().map(replaceNamedType),\n ...buildInterfaces(extensions),\n ],\n fields: () => ({\n ...mapValue(config.fields, extendField),\n ...buildFieldMap(extensions),\n }),\n extensionASTNodes: config.extensionASTNodes.concat(extensions),\n });\n }\n\n function extendInterfaceType(type) {\n var _typeExtensionsMap$co4;\n\n const config = type.toConfig();\n const extensions =\n (_typeExtensionsMap$co4 = typeExtensionsMap[config.name]) !== null &&\n _typeExtensionsMap$co4 !== void 0\n ? _typeExtensionsMap$co4\n : [];\n return new GraphQLInterfaceType({\n ...config,\n interfaces: () => [\n ...type.getInterfaces().map(replaceNamedType),\n ...buildInterfaces(extensions),\n ],\n fields: () => ({\n ...mapValue(config.fields, extendField),\n ...buildFieldMap(extensions),\n }),\n extensionASTNodes: config.extensionASTNodes.concat(extensions),\n });\n }\n\n function extendUnionType(type) {\n var _typeExtensionsMap$co5;\n\n const config = type.toConfig();\n const extensions =\n (_typeExtensionsMap$co5 = typeExtensionsMap[config.name]) !== null &&\n _typeExtensionsMap$co5 !== void 0\n ? _typeExtensionsMap$co5\n : [];\n return new GraphQLUnionType({\n ...config,\n types: () => [\n ...type.getTypes().map(replaceNamedType),\n ...buildUnionTypes(extensions),\n ],\n extensionASTNodes: config.extensionASTNodes.concat(extensions),\n });\n }\n\n function extendField(field) {\n return {\n ...field,\n type: replaceType(field.type),\n args: field.args && mapValue(field.args, extendArg),\n };\n }\n\n function extendArg(arg) {\n return { ...arg, type: replaceType(arg.type) };\n }\n\n function getOperationTypes(nodes) {\n const opTypes = {};\n\n for (const node of nodes) {\n var _node$operationTypes;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n const operationTypesNodes =\n /* c8 ignore next */\n (_node$operationTypes = node.operationTypes) !== null &&\n _node$operationTypes !== void 0\n ? _node$operationTypes\n : [];\n\n for (const operationType of operationTypesNodes) {\n // Note: While this could make early assertions to get the correctly\n // typed values below, that would throw immediately while type system\n // validation with validateSchema() will produce more actionable results.\n // @ts-expect-error\n opTypes[operationType.operation] = getNamedType(operationType.type);\n }\n }\n\n return opTypes;\n }\n\n function getNamedType(node) {\n var _stdTypeMap$name2;\n\n const name = node.name.value;\n const type =\n (_stdTypeMap$name2 = stdTypeMap[name]) !== null &&\n _stdTypeMap$name2 !== void 0\n ? _stdTypeMap$name2\n : typeMap[name];\n\n if (type === undefined) {\n throw new Error(`Unknown type: \"${name}\".`);\n }\n\n return type;\n }\n\n function getWrappedType(node) {\n if (node.kind === Kind.LIST_TYPE) {\n return new GraphQLList(getWrappedType(node.type));\n }\n\n if (node.kind === Kind.NON_NULL_TYPE) {\n return new GraphQLNonNull(getWrappedType(node.type));\n }\n\n return getNamedType(node);\n }\n\n function buildDirective(node) {\n var _node$description;\n\n return new GraphQLDirective({\n name: node.name.value,\n description:\n (_node$description = node.description) === null ||\n _node$description === void 0\n ? void 0\n : _node$description.value,\n // @ts-expect-error\n locations: node.locations.map(({ value }) => value),\n isRepeatable: node.repeatable,\n args: buildArgumentMap(node.arguments),\n astNode: node,\n });\n }\n\n function buildFieldMap(nodes) {\n const fieldConfigMap = Object.create(null);\n\n for (const node of nodes) {\n var _node$fields;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n const nodeFields =\n /* c8 ignore next */\n (_node$fields = node.fields) !== null && _node$fields !== void 0\n ? _node$fields\n : [];\n\n for (const field of nodeFields) {\n var _field$description;\n\n fieldConfigMap[field.name.value] = {\n // Note: While this could make assertions to get the correctly typed\n // value, that would throw immediately while type system validation\n // with validateSchema() will produce more actionable results.\n type: getWrappedType(field.type),\n description:\n (_field$description = field.description) === null ||\n _field$description === void 0\n ? void 0\n : _field$description.value,\n args: buildArgumentMap(field.arguments),\n deprecationReason: getDeprecationReason(field),\n astNode: field,\n };\n }\n }\n\n return fieldConfigMap;\n }\n\n function buildArgumentMap(args) {\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n const argsNodes =\n /* c8 ignore next */\n args !== null && args !== void 0 ? args : [];\n const argConfigMap = Object.create(null);\n\n for (const arg of argsNodes) {\n var _arg$description;\n\n // Note: While this could make assertions to get the correctly typed\n // value, that would throw immediately while type system validation\n // with validateSchema() will produce more actionable results.\n const type = getWrappedType(arg.type);\n argConfigMap[arg.name.value] = {\n type,\n description:\n (_arg$description = arg.description) === null ||\n _arg$description === void 0\n ? void 0\n : _arg$description.value,\n defaultValue: valueFromAST(arg.defaultValue, type),\n deprecationReason: getDeprecationReason(arg),\n astNode: arg,\n };\n }\n\n return argConfigMap;\n }\n\n function buildInputFieldMap(nodes) {\n const inputFieldMap = Object.create(null);\n\n for (const node of nodes) {\n var _node$fields2;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n const fieldsNodes =\n /* c8 ignore next */\n (_node$fields2 = node.fields) !== null && _node$fields2 !== void 0\n ? _node$fields2\n : [];\n\n for (const field of fieldsNodes) {\n var _field$description2;\n\n // Note: While this could make assertions to get the correctly typed\n // value, that would throw immediately while type system validation\n // with validateSchema() will produce more actionable results.\n const type = getWrappedType(field.type);\n inputFieldMap[field.name.value] = {\n type,\n description:\n (_field$description2 = field.description) === null ||\n _field$description2 === void 0\n ? void 0\n : _field$description2.value,\n defaultValue: valueFromAST(field.defaultValue, type),\n deprecationReason: getDeprecationReason(field),\n astNode: field,\n };\n }\n }\n\n return inputFieldMap;\n }\n\n function buildEnumValueMap(nodes) {\n const enumValueMap = Object.create(null);\n\n for (const node of nodes) {\n var _node$values;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n const valuesNodes =\n /* c8 ignore next */\n (_node$values = node.values) !== null && _node$values !== void 0\n ? _node$values\n : [];\n\n for (const value of valuesNodes) {\n var _value$description;\n\n enumValueMap[value.name.value] = {\n description:\n (_value$description = value.description) === null ||\n _value$description === void 0\n ? void 0\n : _value$description.value,\n deprecationReason: getDeprecationReason(value),\n astNode: value,\n };\n }\n }\n\n return enumValueMap;\n }\n\n function buildInterfaces(nodes) {\n // Note: While this could make assertions to get the correctly typed\n // values below, that would throw immediately while type system\n // validation with validateSchema() will produce more actionable results.\n // @ts-expect-error\n return nodes.flatMap(\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n (node) => {\n var _node$interfaces$map, _node$interfaces;\n\n return (\n /* c8 ignore next */\n (_node$interfaces$map =\n (_node$interfaces = node.interfaces) === null ||\n _node$interfaces === void 0\n ? void 0\n : _node$interfaces.map(getNamedType)) !== null &&\n _node$interfaces$map !== void 0\n ? _node$interfaces$map\n : []\n );\n },\n );\n }\n\n function buildUnionTypes(nodes) {\n // Note: While this could make assertions to get the correctly typed\n // values below, that would throw immediately while type system\n // validation with validateSchema() will produce more actionable results.\n // @ts-expect-error\n return nodes.flatMap(\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n (node) => {\n var _node$types$map, _node$types;\n\n return (\n /* c8 ignore next */\n (_node$types$map =\n (_node$types = node.types) === null || _node$types === void 0\n ? void 0\n : _node$types.map(getNamedType)) !== null &&\n _node$types$map !== void 0\n ? _node$types$map\n : []\n );\n },\n );\n }\n\n function buildType(astNode) {\n var _typeExtensionsMap$na;\n\n const name = astNode.name.value;\n const extensionASTNodes =\n (_typeExtensionsMap$na = typeExtensionsMap[name]) !== null &&\n _typeExtensionsMap$na !== void 0\n ? _typeExtensionsMap$na\n : [];\n\n switch (astNode.kind) {\n case Kind.OBJECT_TYPE_DEFINITION: {\n var _astNode$description;\n\n const allNodes = [astNode, ...extensionASTNodes];\n return new GraphQLObjectType({\n name,\n description:\n (_astNode$description = astNode.description) === null ||\n _astNode$description === void 0\n ? void 0\n : _astNode$description.value,\n interfaces: () => buildInterfaces(allNodes),\n fields: () => buildFieldMap(allNodes),\n astNode,\n extensionASTNodes,\n });\n }\n\n case Kind.INTERFACE_TYPE_DEFINITION: {\n var _astNode$description2;\n\n const allNodes = [astNode, ...extensionASTNodes];\n return new GraphQLInterfaceType({\n name,\n description:\n (_astNode$description2 = astNode.description) === null ||\n _astNode$description2 === void 0\n ? void 0\n : _astNode$description2.value,\n interfaces: () => buildInterfaces(allNodes),\n fields: () => buildFieldMap(allNodes),\n astNode,\n extensionASTNodes,\n });\n }\n\n case Kind.ENUM_TYPE_DEFINITION: {\n var _astNode$description3;\n\n const allNodes = [astNode, ...extensionASTNodes];\n return new GraphQLEnumType({\n name,\n description:\n (_astNode$description3 = astNode.description) === null ||\n _astNode$description3 === void 0\n ? void 0\n : _astNode$description3.value,\n values: buildEnumValueMap(allNodes),\n astNode,\n extensionASTNodes,\n });\n }\n\n case Kind.UNION_TYPE_DEFINITION: {\n var _astNode$description4;\n\n const allNodes = [astNode, ...extensionASTNodes];\n return new GraphQLUnionType({\n name,\n description:\n (_astNode$description4 = astNode.description) === null ||\n _astNode$description4 === void 0\n ? void 0\n : _astNode$description4.value,\n types: () => buildUnionTypes(allNodes),\n astNode,\n extensionASTNodes,\n });\n }\n\n case Kind.SCALAR_TYPE_DEFINITION: {\n var _astNode$description5;\n\n return new GraphQLScalarType({\n name,\n description:\n (_astNode$description5 = astNode.description) === null ||\n _astNode$description5 === void 0\n ? void 0\n : _astNode$description5.value,\n specifiedByURL: getSpecifiedByURL(astNode),\n astNode,\n extensionASTNodes,\n });\n }\n\n case Kind.INPUT_OBJECT_TYPE_DEFINITION: {\n var _astNode$description6;\n\n const allNodes = [astNode, ...extensionASTNodes];\n return new GraphQLInputObjectType({\n name,\n description:\n (_astNode$description6 = astNode.description) === null ||\n _astNode$description6 === void 0\n ? void 0\n : _astNode$description6.value,\n fields: () => buildInputFieldMap(allNodes),\n astNode,\n extensionASTNodes,\n });\n }\n }\n }\n}\nconst stdTypeMap = keyMap(\n [...specifiedScalarTypes, ...introspectionTypes],\n (type) => type.name,\n);\n/**\n * Given a field or enum value node, returns the string value for the\n * deprecation reason.\n */\n\nfunction getDeprecationReason(node) {\n const deprecated = getDirectiveValues(GraphQLDeprecatedDirective, node); // @ts-expect-error validated by `getDirectiveValues`\n\n return deprecated === null || deprecated === void 0\n ? void 0\n : deprecated.reason;\n}\n/**\n * Given a scalar node, returns the string value for the specifiedByURL.\n */\n\nfunction getSpecifiedByURL(node) {\n const specifiedBy = getDirectiveValues(GraphQLSpecifiedByDirective, node); // @ts-expect-error validated by `getDirectiveValues`\n\n return specifiedBy === null || specifiedBy === void 0\n ? void 0\n : specifiedBy.url;\n}\n", "import { devAssert } from '../jsutils/devAssert.mjs';\nimport { Kind } from '../language/kinds.mjs';\nimport { parse } from '../language/parser.mjs';\nimport { specifiedDirectives } from '../type/directives.mjs';\nimport { GraphQLSchema } from '../type/schema.mjs';\nimport { assertValidSDL } from '../validation/validate.mjs';\nimport { extendSchemaImpl } from './extendSchema.mjs';\n\n/**\n * This takes the ast of a schema document produced by the parse function in\n * src/language/parser.js.\n *\n * If no schema definition is provided, then it will look for types named Query,\n * Mutation and Subscription.\n *\n * Given that AST it constructs a GraphQLSchema. The resulting schema\n * has no resolve methods, so execution will use default resolvers.\n */\nexport function buildASTSchema(documentAST, options) {\n (documentAST != null && documentAST.kind === Kind.DOCUMENT) ||\n devAssert(false, 'Must provide valid Document AST.');\n\n if (\n (options === null || options === void 0 ? void 0 : options.assumeValid) !==\n true &&\n (options === null || options === void 0\n ? void 0\n : options.assumeValidSDL) !== true\n ) {\n assertValidSDL(documentAST);\n }\n\n const emptySchemaConfig = {\n description: undefined,\n types: [],\n directives: [],\n extensions: Object.create(null),\n extensionASTNodes: [],\n assumeValid: false,\n };\n const config = extendSchemaImpl(emptySchemaConfig, documentAST, options);\n\n if (config.astNode == null) {\n for (const type of config.types) {\n switch (type.name) {\n // Note: While this could make early assertions to get the correctly\n // typed values below, that would throw immediately while type system\n // validation with validateSchema() will produce more actionable results.\n case 'Query':\n // @ts-expect-error validated in `validateSchema`\n config.query = type;\n break;\n\n case 'Mutation':\n // @ts-expect-error validated in `validateSchema`\n config.mutation = type;\n break;\n\n case 'Subscription':\n // @ts-expect-error validated in `validateSchema`\n config.subscription = type;\n break;\n }\n }\n }\n\n const directives = [\n ...config.directives, // If specified directives were not explicitly declared, add them.\n ...specifiedDirectives.filter((stdDirective) =>\n config.directives.every(\n (directive) => directive.name !== stdDirective.name,\n ),\n ),\n ];\n return new GraphQLSchema({ ...config, directives });\n}\n/**\n * A helper function to build a GraphQLSchema directly from a source\n * document.\n */\n\nexport function buildSchema(source, options) {\n const document = parse(source, {\n noLocation:\n options === null || options === void 0 ? void 0 : options.noLocation,\n allowLegacyFragmentVariables:\n options === null || options === void 0\n ? void 0\n : options.allowLegacyFragmentVariables,\n });\n return buildASTSchema(document, {\n assumeValidSDL:\n options === null || options === void 0 ? void 0 : options.assumeValidSDL,\n assumeValid:\n options === null || options === void 0 ? void 0 : options.assumeValid,\n });\n}\n", "import { defaultFieldResolver, isIntrospectionType, isObjectType } from 'graphql';\nexport const trackedSchemaSymbol = Symbol('TRACKED_SCHEMA');\nexport const resolversHooksSymbol = Symbol('RESOLVERS_HOOKS');\nexport function prepareTracedSchema(schema) {\n if (!schema || schema[trackedSchemaSymbol]) {\n return;\n }\n schema[trackedSchemaSymbol] = true;\n const entries = Object.values(schema.getTypeMap());\n for (const type of entries) {\n if (!isIntrospectionType(type) && isObjectType(type)) {\n const fields = Object.values(type.getFields());\n for (const field of fields) {\n let resolverFn = (field.resolve || defaultFieldResolver);\n field.resolve = async (root, args, context, info) => {\n if (context && context[resolversHooksSymbol]) {\n const hooks = context[resolversHooksSymbol];\n const afterCalls = [];\n for (const hook of hooks) {\n const afterFn = await hook({\n root,\n args,\n context,\n info,\n resolverFn,\n replaceResolverFn: newFn => {\n resolverFn = newFn;\n },\n });\n afterFn && afterCalls.push(afterFn);\n }\n try {\n let result = await resolverFn(root, args, context, info);\n for (const afterFn of afterCalls) {\n afterFn({\n result,\n setResult: newResult => {\n result = newResult;\n },\n });\n }\n return result;\n }\n catch (e) {\n let resultErr = e;\n for (const afterFn of afterCalls) {\n afterFn({\n result: resultErr,\n setResult: newResult => {\n resultErr = newResult;\n },\n });\n }\n throw resultErr;\n }\n }\n else {\n return resolverFn(root, args, context, info);\n }\n };\n }\n }\n }\n}\n", "import { Kind, visit, BREAK, } from 'graphql';\nexport const envelopIsIntrospectionSymbol = Symbol('ENVELOP_IS_INTROSPECTION');\nexport function isOperationDefinition(def) {\n return def.kind === Kind.OPERATION_DEFINITION;\n}\nexport function isIntrospectionOperation(operation) {\n return isIntrospectionDocument({\n kind: Kind.DOCUMENT,\n definitions: [operation],\n });\n}\nexport function isIntrospectionDocument(document) {\n let isIntrospectionOperation = false;\n visit(document, {\n Field: node => {\n if (node.name.value === '__schema' || node.name.value === '__type') {\n isIntrospectionOperation = true;\n return BREAK;\n }\n },\n });\n return isIntrospectionOperation;\n}\nexport function isIntrospectionOperationString(operation) {\n return (typeof operation === 'string' ? operation : operation.body).indexOf('__schema') !== -1;\n}\nfunction getSubscribeArgs(args) {\n return args.length === 1\n ? args[0]\n : {\n schema: args[0],\n document: args[1],\n rootValue: args[2],\n contextValue: args[3],\n variableValues: args[4],\n operationName: args[5],\n fieldResolver: args[6],\n subscribeFieldResolver: args[7],\n };\n}\n/**\n * Utility function for making a subscribe function that handles polymorphic arguments.\n */\nexport const makeSubscribe = (subscribeFn) => ((...polyArgs) => subscribeFn(getSubscribeArgs(polyArgs)));\nexport function mapAsyncIterator(source, mapper) {\n const iterator = source[Symbol.asyncIterator]();\n async function mapResult(result) {\n var _a;\n if (result.done) {\n return result;\n }\n try {\n return { value: await mapper(result.value), done: false };\n }\n catch (error) {\n try {\n await ((_a = iterator.return) === null || _a === void 0 ? void 0 : _a.call(iterator));\n }\n catch (_error) {\n /* ignore error */\n }\n throw error;\n }\n }\n const stream = {\n [Symbol.asyncIterator]() {\n return stream;\n },\n async next() {\n return await mapResult(await iterator.next());\n },\n async return() {\n var _a;\n const promise = (_a = iterator.return) === null || _a === void 0 ? void 0 : _a.call(iterator);\n return promise ? await mapResult(await promise) : { value: undefined, done: true };\n },\n async throw(error) {\n var _a;\n const promise = (_a = iterator.throw) === null || _a === void 0 ? void 0 : _a.call(iterator);\n if (promise) {\n return await mapResult(await promise);\n }\n // if the source has no throw method we just re-throw error\n // usually throw is not called anyways\n throw error;\n },\n };\n return stream;\n}\nfunction getExecuteArgs(args) {\n return args.length === 1\n ? args[0]\n : {\n schema: args[0],\n document: args[1],\n rootValue: args[2],\n contextValue: args[3],\n variableValues: args[4],\n operationName: args[5],\n fieldResolver: args[6],\n typeResolver: args[7],\n };\n}\n/**\n * Utility function for making a execute function that handles polymorphic arguments.\n */\nexport const makeExecute = (executeFn) => ((...polyArgs) => executeFn(getExecuteArgs(polyArgs)));\n/**\n * Returns true if the provided object implements the AsyncIterator protocol via\n * implementing a `Symbol.asyncIterator` method.\n *\n * Source: https://github.com/graphql/graphql-js/blob/main/src/jsutils/isAsyncIterable.ts\n */\nexport function isAsyncIterable(maybeAsyncIterable) {\n return (typeof maybeAsyncIterable === 'object' &&\n maybeAsyncIterable != null &&\n typeof maybeAsyncIterable[Symbol.asyncIterator] === 'function');\n}\n/**\n * A utility function for handling `onExecuteDone` hook result, for simplifying the handling of AsyncIterable returned from `execute`.\n *\n * @param payload The payload send to `onExecuteDone` hook function\n * @param fn The handler to be executed on each result\n * @returns a subscription for streamed results, or undefined in case of an non-async\n */\nexport function handleStreamOrSingleExecutionResult(payload, fn) {\n if (isAsyncIterable(payload.result)) {\n return { onNext: fn };\n }\n fn({\n args: payload.args,\n result: payload.result,\n setResult: payload.setResult,\n });\n return undefined;\n}\nexport function finalAsyncIterator(source, onFinal) {\n const iterator = source[Symbol.asyncIterator]();\n let isDone = false;\n const stream = {\n [Symbol.asyncIterator]() {\n return stream;\n },\n async next() {\n const result = await iterator.next();\n if (result.done && isDone === false) {\n isDone = true;\n onFinal();\n }\n return result;\n },\n async return() {\n var _a;\n const promise = (_a = iterator.return) === null || _a === void 0 ? void 0 : _a.call(iterator);\n if (isDone === false) {\n isDone = true;\n onFinal();\n }\n return promise ? await promise : { done: true, value: undefined };\n },\n async throw(error) {\n var _a;\n const promise = (_a = iterator.throw) === null || _a === void 0 ? void 0 : _a.call(iterator);\n if (promise) {\n return await promise;\n }\n // if the source has no throw method we just re-throw error\n // usually throw is not called anyways\n throw error;\n },\n };\n return stream;\n}\nexport function errorAsyncIterator(source, onError) {\n const iterator = source[Symbol.asyncIterator]();\n const stream = {\n [Symbol.asyncIterator]() {\n return stream;\n },\n async next() {\n try {\n return await iterator.next();\n }\n catch (error) {\n onError(error);\n return { done: true, value: undefined };\n }\n },\n async return() {\n var _a;\n const promise = (_a = iterator.return) === null || _a === void 0 ? void 0 : _a.call(iterator);\n return promise ? await promise : { done: true, value: undefined };\n },\n async throw(error) {\n var _a;\n const promise = (_a = iterator.throw) === null || _a === void 0 ? void 0 : _a.call(iterator);\n if (promise) {\n return await promise;\n }\n // if the source has no throw method we just re-throw error\n // usually throw is not called anyways\n throw error;\n },\n };\n return stream;\n}\n", "import { execute, parse, specifiedRules, subscribe, validate, } from 'graphql';\nimport { prepareTracedSchema, resolversHooksSymbol } from './traced-schema.js';\nimport { errorAsyncIterator, finalAsyncIterator, makeExecute, makeSubscribe, mapAsyncIterator, isAsyncIterable, } from './utils.js';\nexport function createEnvelopOrchestrator(plugins) {\n let schema = null;\n let initDone = false;\n const onResolversHandlers = [];\n for (const plugin of plugins) {\n if (plugin.onResolverCalled) {\n onResolversHandlers.push(plugin.onResolverCalled);\n }\n }\n // Define the initial method for replacing the GraphQL schema, this is needed in order\n // to allow setting the schema from the onPluginInit callback. We also need to make sure\n // here not to call the same plugin that initiated the schema switch.\n const replaceSchema = (newSchema, ignorePluginIndex = -1) => {\n if (onResolversHandlers.length) {\n prepareTracedSchema(newSchema);\n }\n schema = newSchema;\n if (initDone) {\n for (const [i, plugin] of plugins.entries()) {\n if (i !== ignorePluginIndex) {\n plugin.onSchemaChange &&\n plugin.onSchemaChange({\n schema,\n replaceSchema: schemaToSet => {\n replaceSchema(schemaToSet, i);\n },\n });\n }\n }\n }\n };\n const contextErrorHandlers = [];\n // Iterate all plugins and trigger onPluginInit\n for (const [i, plugin] of plugins.entries()) {\n plugin.onPluginInit &&\n plugin.onPluginInit({\n plugins,\n addPlugin: newPlugin => {\n plugins.push(newPlugin);\n },\n setSchema: modifiedSchema => replaceSchema(modifiedSchema, i),\n registerContextErrorHandler: handler => contextErrorHandlers.push(handler),\n });\n }\n // A set of before callbacks defined here in order to allow it to be used later\n const beforeCallbacks = {\n init: [],\n parse: [],\n validate: [],\n subscribe: [],\n execute: [],\n context: [],\n };\n for (const { onContextBuilding, onExecute, onParse, onSubscribe, onValidate, onEnveloped } of plugins) {\n onEnveloped && beforeCallbacks.init.push(onEnveloped);\n onContextBuilding && beforeCallbacks.context.push(onContextBuilding);\n onExecute && beforeCallbacks.execute.push(onExecute);\n onParse && beforeCallbacks.parse.push(onParse);\n onSubscribe && beforeCallbacks.subscribe.push(onSubscribe);\n onValidate && beforeCallbacks.validate.push(onValidate);\n }\n const init = initialContext => {\n for (const [i, onEnveloped] of beforeCallbacks.init.entries()) {\n onEnveloped({\n context: initialContext,\n extendContext: extension => {\n if (!initialContext) {\n return;\n }\n Object.assign(initialContext, extension);\n },\n setSchema: modifiedSchema => replaceSchema(modifiedSchema, i),\n });\n }\n };\n const customParse = beforeCallbacks.parse.length\n ? initialContext => (source, parseOptions) => {\n let result = null;\n let parseFn = parse;\n const context = initialContext;\n const afterCalls = [];\n for (const onParse of beforeCallbacks.parse) {\n const afterFn = onParse({\n context,\n extendContext: extension => {\n Object.assign(context, extension);\n },\n params: { source, options: parseOptions },\n parseFn,\n setParseFn: newFn => {\n parseFn = newFn;\n },\n setParsedDocument: newDoc => {\n result = newDoc;\n },\n });\n afterFn && afterCalls.push(afterFn);\n }\n if (result === null) {\n try {\n result = parseFn(source, parseOptions);\n }\n catch (e) {\n result = e;\n }\n }\n for (const afterCb of afterCalls) {\n afterCb({\n context,\n extendContext: extension => {\n Object.assign(context, extension);\n },\n replaceParseResult: newResult => {\n result = newResult;\n },\n result,\n });\n }\n if (result === null) {\n throw new Error(`Failed to parse document.`);\n }\n if (result instanceof Error) {\n throw result;\n }\n return result;\n }\n : () => parse;\n const customValidate = beforeCallbacks.validate.length\n ? initialContext => (schema, documentAST, rules, typeInfo, validationOptions) => {\n let actualRules = rules ? [...rules] : undefined;\n let validateFn = validate;\n let result = null;\n const context = initialContext;\n const afterCalls = [];\n for (const onValidate of beforeCallbacks.validate) {\n const afterFn = onValidate({\n context,\n extendContext: extension => {\n Object.assign(context, extension);\n },\n params: {\n schema,\n documentAST,\n rules: actualRules,\n typeInfo,\n options: validationOptions,\n },\n validateFn,\n addValidationRule: rule => {\n if (!actualRules) {\n actualRules = [...specifiedRules];\n }\n actualRules.push(rule);\n },\n setValidationFn: newFn => {\n validateFn = newFn;\n },\n setResult: newResults => {\n result = newResults;\n },\n });\n afterFn && afterCalls.push(afterFn);\n }\n if (!result) {\n result = validateFn(schema, documentAST, actualRules, typeInfo, validationOptions);\n }\n const valid = result.length === 0;\n for (const afterCb of afterCalls) {\n afterCb({\n valid,\n result,\n context,\n extendContext: extension => {\n Object.assign(context, extension);\n },\n setResult: newResult => {\n result = newResult;\n },\n });\n }\n return result;\n }\n : () => validate;\n const customContextFactory = beforeCallbacks.context\n .length\n ? initialContext => async (orchestratorCtx) => {\n const afterCalls = [];\n // In order to have access to the \"last working\" context object we keep this outside of the try block:\n let context = orchestratorCtx ? { ...initialContext, ...orchestratorCtx } : initialContext;\n try {\n let isBreakingContextBuilding = false;\n for (const onContext of beforeCallbacks.context) {\n const afterHookResult = await onContext({\n context,\n extendContext: extension => {\n context = { ...context, ...extension };\n },\n breakContextBuilding: () => {\n isBreakingContextBuilding = true;\n },\n });\n if (typeof afterHookResult === 'function') {\n afterCalls.push(afterHookResult);\n }\n if (isBreakingContextBuilding === true) {\n break;\n }\n }\n for (const afterCb of afterCalls) {\n afterCb({\n context,\n extendContext: extension => {\n context = { ...context, ...extension };\n },\n });\n }\n return context;\n }\n catch (err) {\n let error = err;\n for (const errorCb of contextErrorHandlers) {\n errorCb({\n context,\n error,\n setError: err => {\n error = err;\n },\n });\n }\n throw error;\n }\n }\n : initialContext => orchestratorCtx => orchestratorCtx ? { ...initialContext, ...orchestratorCtx } : initialContext;\n const useCustomSubscribe = beforeCallbacks.subscribe.length || onResolversHandlers.length;\n const customSubscribe = useCustomSubscribe\n ? makeSubscribe(async (args) => {\n let subscribeFn = subscribe;\n const afterCalls = [];\n const subscribeErrorHandlers = [];\n let context = args.contextValue || {};\n let result;\n for (const onSubscribe of beforeCallbacks.subscribe) {\n const after = await onSubscribe({\n subscribeFn,\n setSubscribeFn: newSubscribeFn => {\n subscribeFn = newSubscribeFn;\n },\n extendContext: extension => {\n context = { ...context, ...extension };\n },\n args: args,\n setResultAndStopExecution: stopResult => {\n result = stopResult;\n },\n });\n if (after) {\n if (after.onSubscribeResult) {\n afterCalls.push(after.onSubscribeResult);\n }\n if (after.onSubscribeError) {\n subscribeErrorHandlers.push(after.onSubscribeError);\n }\n }\n if (result !== undefined) {\n break;\n }\n }\n if (onResolversHandlers.length) {\n context[resolversHooksSymbol] = onResolversHandlers;\n }\n if (result === undefined) {\n result = await subscribeFn({\n ...args,\n contextValue: context,\n // Casted for GraphQL.js 15 compatibility\n // Can be removed once we drop support for GraphQL.js 15\n });\n }\n const onNextHandler = [];\n const onEndHandler = [];\n for (const afterCb of afterCalls) {\n const hookResult = afterCb({\n args: args,\n result,\n setResult: newResult => {\n result = newResult;\n },\n });\n if (hookResult) {\n if (hookResult.onNext) {\n onNextHandler.push(hookResult.onNext);\n }\n if (hookResult.onEnd) {\n onEndHandler.push(hookResult.onEnd);\n }\n }\n }\n if (onNextHandler.length && isAsyncIterable(result)) {\n result = mapAsyncIterator(result, async (result) => {\n for (const onNext of onNextHandler) {\n await onNext({\n args: args,\n result,\n setResult: newResult => (result = newResult),\n });\n }\n return result;\n });\n }\n if (onEndHandler.length && isAsyncIterable(result)) {\n result = finalAsyncIterator(result, () => {\n for (const onEnd of onEndHandler) {\n onEnd();\n }\n });\n }\n if (subscribeErrorHandlers.length && isAsyncIterable(result)) {\n result = errorAsyncIterator(result, err => {\n let error = err;\n for (const handler of subscribeErrorHandlers) {\n handler({\n error,\n setError: err => {\n error = err;\n },\n });\n }\n throw error;\n });\n }\n return result;\n })\n : makeSubscribe(subscribe);\n const useCustomExecute = beforeCallbacks.execute.length || onResolversHandlers.length;\n const customExecute = useCustomExecute\n ? makeExecute(async (args) => {\n let executeFn = execute;\n let result;\n const afterCalls = [];\n let context = args.contextValue || {};\n for (const onExecute of beforeCallbacks.execute) {\n const after = await onExecute({\n executeFn,\n setExecuteFn: newExecuteFn => {\n executeFn = newExecuteFn;\n },\n setResultAndStopExecution: stopResult => {\n result = stopResult;\n },\n extendContext: extension => {\n if (typeof extension === 'object') {\n context = {\n ...context,\n ...extension,\n };\n }\n else {\n throw new Error(`Invalid context extension provided! Expected \"object\", got: \"${JSON.stringify(extension)}\" (${typeof extension})`);\n }\n },\n args: args,\n });\n if (after === null || after === void 0 ? void 0 : after.onExecuteDone) {\n afterCalls.push(after.onExecuteDone);\n }\n if (result !== undefined) {\n break;\n }\n }\n if (onResolversHandlers.length) {\n context[resolversHooksSymbol] = onResolversHandlers;\n }\n if (result === undefined) {\n result = (await executeFn({\n ...args,\n contextValue: context,\n }));\n }\n const onNextHandler = [];\n const onEndHandler = [];\n for (const afterCb of afterCalls) {\n const hookResult = await afterCb({\n args: args,\n result,\n setResult: newResult => {\n result = newResult;\n },\n });\n if (hookResult) {\n if (hookResult.onNext) {\n onNextHandler.push(hookResult.onNext);\n }\n if (hookResult.onEnd) {\n onEndHandler.push(hookResult.onEnd);\n }\n }\n }\n if (onNextHandler.length && isAsyncIterable(result)) {\n result = mapAsyncIterator(result, async (result) => {\n for (const onNext of onNextHandler) {\n await onNext({\n args: args,\n result,\n setResult: newResult => {\n result = newResult;\n },\n });\n }\n return result;\n });\n }\n if (onEndHandler.length && isAsyncIterable(result)) {\n result = finalAsyncIterator(result, () => {\n for (const onEnd of onEndHandler) {\n onEnd();\n }\n });\n }\n return result;\n })\n : makeExecute(execute);\n initDone = true;\n // This is done in order to trigger the first schema available, to allow plugins that needs the schema\n // eagerly to have it.\n if (schema) {\n for (const [i, plugin] of plugins.entries()) {\n plugin.onSchemaChange &&\n plugin.onSchemaChange({\n schema,\n replaceSchema: modifiedSchema => replaceSchema(modifiedSchema, i),\n });\n }\n }\n return {\n getCurrentSchema() {\n return schema;\n },\n init,\n parse: customParse,\n validate: customValidate,\n execute: customExecute,\n subscribe: customSubscribe,\n contextFactory: customContextFactory,\n };\n}\n", "var _a;\nimport { GraphQLSchema, } from 'graphql';\nimport { isAsyncIterable } from './utils.js';\nconst getTimestamp = typeof globalThis !== 'undefined' && ((_a = globalThis === null || globalThis === void 0 ? void 0 : globalThis.performance) === null || _a === void 0 ? void 0 : _a.now)\n ? () => globalThis.performance.now()\n : () => Date.now();\nconst measure = () => {\n const start = getTimestamp();\n return () => {\n const end = getTimestamp();\n return end - start;\n };\n};\nconst tracingSymbol = Symbol('envelopTracing');\nexport function traceOrchestrator(orchestrator) {\n const createTracer = (name, ctx) => {\n const end = measure();\n return () => {\n ctx[tracingSymbol][name] = end();\n };\n };\n return {\n ...orchestrator,\n init: (ctx = {}) => {\n ctx[tracingSymbol] = ctx[tracingSymbol] || {};\n const done = createTracer('init', ctx || {});\n try {\n return orchestrator.init(ctx);\n }\n finally {\n done();\n }\n },\n parse: (ctx = {}) => {\n ctx[tracingSymbol] = ctx[tracingSymbol] || {};\n const actualFn = orchestrator.parse(ctx);\n return (...args) => {\n const done = createTracer('parse', ctx);\n try {\n return actualFn(...args);\n }\n finally {\n done();\n }\n };\n },\n validate: (ctx = {}) => {\n ctx[tracingSymbol] = ctx[tracingSymbol] || {};\n const actualFn = orchestrator.validate(ctx);\n return (...args) => {\n const done = createTracer('validate', ctx);\n try {\n return actualFn(...args);\n }\n finally {\n done();\n }\n };\n },\n execute: async (argsOrSchema, document, rootValue, contextValue, variableValues, operationName, fieldResolver, typeResolver) => {\n const args = argsOrSchema instanceof GraphQLSchema\n ? {\n schema: argsOrSchema,\n document: document,\n rootValue,\n contextValue,\n variableValues,\n operationName,\n fieldResolver,\n typeResolver,\n }\n : argsOrSchema;\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore GraphQL.js types contextValue as unknown\n const done = createTracer('execute', args.contextValue || {});\n try {\n const result = await orchestrator.execute(args);\n done();\n if (!isAsyncIterable(result)) {\n result.extensions = result.extensions || {};\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore GraphQL.js types contextValue as unknown\n result.extensions.envelopTracing = args.contextValue[tracingSymbol];\n }\n else {\n // eslint-disable-next-line no-console\n console.warn(`\"traceOrchestrator\" encountered a AsyncIterator which is not supported yet, so tracing data is not available for the operation.`);\n }\n return result;\n }\n catch (e) {\n done();\n throw e;\n }\n },\n subscribe: async (argsOrSchema, document, rootValue, contextValue, variableValues, operationName, fieldResolver, subscribeFieldResolver) => {\n const args = argsOrSchema instanceof GraphQLSchema\n ? {\n schema: argsOrSchema,\n document: document,\n rootValue,\n contextValue,\n variableValues,\n operationName,\n fieldResolver,\n subscribeFieldResolver,\n }\n : argsOrSchema;\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore GraphQL.js types contextValue as unknown\n const done = createTracer('subscribe', args.contextValue || {});\n try {\n return await orchestrator.subscribe(args);\n }\n finally {\n done();\n }\n },\n contextFactory: (ctx = {}) => {\n const actualFn = orchestrator.contextFactory(ctx);\n return async (childCtx) => {\n const done = createTracer('contextFactory', ctx);\n try {\n return await actualFn(childCtx);\n }\n finally {\n done();\n }\n };\n },\n };\n}\n", "import { isPluginEnabled } from './enable-if.js';\nimport { createEnvelopOrchestrator } from './orchestrator.js';\nimport { traceOrchestrator } from './traced-orchestrator.js';\nexport function envelop(options) {\n const plugins = options.plugins.filter(isPluginEnabled);\n let orchestrator = createEnvelopOrchestrator(plugins);\n if (options.enableInternalTracing) {\n orchestrator = traceOrchestrator(orchestrator);\n }\n const getEnveloped = (initialContext = {}) => {\n const typedOrchestrator = orchestrator;\n typedOrchestrator.init(initialContext);\n return {\n parse: typedOrchestrator.parse(initialContext),\n validate: typedOrchestrator.validate(initialContext),\n contextFactory: typedOrchestrator.contextFactory(initialContext),\n execute: typedOrchestrator.execute,\n subscribe: typedOrchestrator.subscribe,\n schema: typedOrchestrator.getCurrentSchema(),\n };\n };\n getEnveloped._plugins = plugins;\n return getEnveloped;\n}\n", "import { envelopIsIntrospectionSymbol, isIntrospectionOperationString } from '../utils.js';\nconst DEFAULT_OPTIONS = {\n logFn: console.log,\n};\nexport const useLogger = (rawOptions = DEFAULT_OPTIONS) => {\n const options = {\n DEFAULT_OPTIONS,\n ...rawOptions,\n };\n return {\n onParse({ extendContext, params }) {\n if (options.skipIntrospection && isIntrospectionOperationString(params.source)) {\n extendContext({\n [envelopIsIntrospectionSymbol]: true,\n });\n }\n },\n onExecute({ args }) {\n if (args.contextValue[envelopIsIntrospectionSymbol]) {\n return;\n }\n options.logFn('execute-start', { args });\n return {\n onExecuteDone: ({ result }) => {\n options.logFn('execute-end', { args, result });\n },\n };\n },\n onSubscribe({ args }) {\n if (args.contextValue[envelopIsIntrospectionSymbol]) {\n return;\n }\n options.logFn('subscribe-start', { args });\n return {\n onSubscribeResult: ({ result }) => {\n options.logFn('subscribe-end', { args, result });\n },\n };\n },\n };\n};\n", "export const useSchema = (schema) => {\n return {\n onPluginInit({ setSchema }) {\n setSchema(schema);\n },\n };\n};\nexport const useLazyLoadedSchema = (schemaLoader) => {\n return {\n onEnveloped({ setSchema, context }) {\n setSchema(schemaLoader(context));\n },\n };\n};\nexport const useAsyncSchema = (schemaPromise) => {\n return {\n onPluginInit({ setSchema }) {\n schemaPromise.then(schemaObj => {\n setSchema(schemaObj);\n });\n },\n };\n};\n", "export const useExtendContext = (contextFactory) => ({\n async onContextBuilding({ context, extendContext }) {\n extendContext((await contextFactory(context)));\n },\n});\n", "import { GraphQLError } from 'graphql';\nimport { handleStreamOrSingleExecutionResult } from '../utils.js';\nexport const DEFAULT_ERROR_MESSAGE = 'Unexpected error.';\nexport class EnvelopError extends GraphQLError {\n constructor(message, extensions) {\n super(message, undefined, undefined, undefined, undefined, undefined, extensions);\n }\n}\nexport const formatError = (err, message, isDev) => {\n var _a, _b, _c, _d;\n if (err instanceof GraphQLError) {\n if (\n /** execution error */\n (err.originalError && err.originalError instanceof EnvelopError === false) ||\n /** validate and parse errors */\n (err.originalError === undefined && err instanceof EnvelopError === false)) {\n return new GraphQLError(message, err.nodes, err.source, err.positions, err.path, undefined, isDev\n ? {\n originalError: {\n message: (_b = (_a = err.originalError) === null || _a === void 0 ? void 0 : _a.message) !== null && _b !== void 0 ? _b : err.message,\n stack: (_d = (_c = err.originalError) === null || _c === void 0 ? void 0 : _c.stack) !== null && _d !== void 0 ? _d : err.stack,\n },\n }\n : undefined);\n }\n return err;\n }\n return new GraphQLError(message);\n};\nconst makeHandleResult = (format, message, isDev) => ({ result, setResult }) => {\n if (result.errors != null) {\n setResult({ ...result, errors: result.errors.map(error => format(error, message, isDev)) });\n }\n};\nexport const useMaskedErrors = (opts) => {\n var _a, _b;\n const format = (_a = opts === null || opts === void 0 ? void 0 : opts.formatError) !== null && _a !== void 0 ? _a : formatError;\n const message = (opts === null || opts === void 0 ? void 0 : opts.errorMessage) || DEFAULT_ERROR_MESSAGE;\n // eslint-disable-next-line dot-notation\n const isDev = (_b = opts === null || opts === void 0 ? void 0 : opts.isDev) !== null && _b !== void 0 ? _b : (typeof process !== 'undefined' ? process.env['NODE_ENV'] === 'development' : false);\n const handleResult = makeHandleResult(format, message, isDev);\n return {\n onParse: (opts === null || opts === void 0 ? void 0 : opts.handleParseErrors) === true\n ? function onParse() {\n return function onParseEnd({ result, replaceParseResult }) {\n if (result instanceof Error) {\n replaceParseResult(format(result, message, isDev));\n }\n };\n }\n : undefined,\n onValidate: (opts === null || opts === void 0 ? void 0 : opts.handleValidationErrors) === true\n ? function onValidate() {\n return function onValidateEnd({ valid, result, setResult }) {\n if (valid === false) {\n setResult(result.map(error => format(error, message, isDev)));\n }\n };\n }\n : undefined,\n onPluginInit(context) {\n context.registerContextErrorHandler(({ error, setError }) => {\n if (error instanceof GraphQLError === false && error instanceof Error) {\n error = new GraphQLError(error.message, undefined, undefined, undefined, undefined, error);\n }\n setError(format(error, message, isDev));\n });\n },\n onExecute() {\n return {\n onExecuteDone(payload) {\n return handleStreamOrSingleExecutionResult(payload, handleResult);\n },\n };\n },\n onSubscribe() {\n return {\n onSubscribeResult(payload) {\n return handleStreamOrSingleExecutionResult(payload, handleResult);\n },\n onSubscribeError({ error, setError }) {\n setError(format(error, message, isDev));\n },\n };\n },\n };\n};\n", "const ANSI_CODES = {\n black: '\\x1b[30m',\n red: '\\x1b[31m',\n green: '\\x1b[32m',\n yellow: '\\x1b[33m',\n blue: '\\x1b[34m',\n magenta: '\\x1b[35m',\n cyan: '\\x1b[36m',\n white: '\\x1b[37m',\n reset: '\\x1b[0m',\n bold: '\\x1b[1m',\n orange: '\\x1b[48:5:166m',\n};\nexport const warnColor = (msg) => ANSI_CODES.orange + msg + ANSI_CODES.reset;\nexport const infoColor = (msg) => ANSI_CODES.cyan + msg + ANSI_CODES.reset;\nexport const errorColor = (msg) => ANSI_CODES.red + msg + ANSI_CODES.reset;\nexport const debugColor = (msg) => ANSI_CODES.magenta + msg + ANSI_CODES.reset;\nexport const titleBold = (msg) => ANSI_CODES.bold + msg + ANSI_CODES.reset;\nconst LEVEL_COLOR = {\n warn: ANSI_CODES.orange,\n info: ANSI_CODES.cyan,\n error: ANSI_CODES.red,\n debug: ANSI_CODES.magenta,\n title: ANSI_CODES.bold,\n reset: ANSI_CODES.reset,\n};\nconst isDebug = () => typeof process === 'object'\n ? process.env.DEBUG\n : // @ts-expect-error\n typeof DEBUG !== 'undefined'\n ? true\n : false;\nconst prefix = [LEVEL_COLOR.title, `\uD83E\uDDD8 Yoga -`, LEVEL_COLOR.reset];\nexport const defaultYogaLogger = {\n debug(...args) {\n if (isDebug()) {\n const fullMessage = [\n `\uD83D\uDC1B `,\n ...prefix,\n LEVEL_COLOR.debug,\n ...args,\n LEVEL_COLOR.reset,\n ];\n // Some environments don't have other console methods\n if (console.debug) {\n console.debug(...fullMessage);\n }\n else {\n console.log(...fullMessage);\n }\n }\n },\n info(...args) {\n const fullMessage = [\n `\uD83D\uDCA1 `,\n ...prefix,\n LEVEL_COLOR.info,\n ...args,\n LEVEL_COLOR.reset,\n ];\n if (console.info) {\n console.info(...fullMessage);\n }\n else {\n console.log(...fullMessage);\n }\n },\n warn(...args) {\n const fullMessage = [\n `\u26A0\uFE0F `,\n ...prefix,\n LEVEL_COLOR.warn,\n ...args,\n LEVEL_COLOR.reset,\n ];\n if (console.warn) {\n console.warn(...fullMessage);\n }\n else {\n console.log(...fullMessage);\n }\n },\n error(...args) {\n const fullMessage = [\n `\u274C `,\n ...prefix,\n LEVEL_COLOR.error,\n ...args,\n LEVEL_COLOR.reset,\n ];\n if (console.error) {\n console.error(...fullMessage);\n }\n else {\n console.log(...fullMessage);\n }\n },\n};\n", "import { print } from 'graphql';\nimport LRU from 'lru-cache';\nconst DEFAULT_MAX = 1000;\nconst DEFAULT_TTL = 3600000;\nconst rawDocumentSymbol = Symbol('rawDocument');\nexport const useValidationCache = (pluginOptions = {}) => {\n const resultCache = typeof pluginOptions.cache !== 'undefined'\n ? pluginOptions.cache\n : new LRU({\n max: DEFAULT_MAX,\n maxAge: DEFAULT_TTL,\n });\n return {\n onSchemaChange() {\n var _a, _b;\n if (resultCache.reset) {\n (_a = resultCache.reset) === null || _a === void 0 ? void 0 : _a.call(resultCache);\n }\n else if ('clear' in resultCache) {\n (_b = resultCache.clear) === null || _b === void 0 ? void 0 : _b.call(resultCache);\n }\n },\n onParse({ params, extendContext }) {\n extendContext({ [rawDocumentSymbol]: params.source.toString() });\n },\n onValidate({ params, context, setResult }) {\n var _a;\n const key = (_a = context[rawDocumentSymbol]) !== null && _a !== void 0 ? _a : print(params.documentAST);\n const cachedResult = resultCache.get(key);\n if (cachedResult !== undefined) {\n setResult(cachedResult);\n }\n return ({ result }) => {\n resultCache.set(key, result);\n };\n },\n };\n};\n", "import { Source } from 'graphql';\nimport LRU from 'lru-cache';\nconst DEFAULT_MAX = 1000;\nconst DEFAULT_TTL = 3600000;\nexport const useParserCache = (pluginOptions = {}) => {\n const documentCache = typeof pluginOptions.documentCache !== 'undefined'\n ? pluginOptions.documentCache\n : new LRU({ max: DEFAULT_MAX, maxAge: DEFAULT_TTL });\n const errorCache = typeof pluginOptions.errorCache !== 'undefined'\n ? pluginOptions.errorCache\n : new LRU({ max: DEFAULT_MAX, maxAge: DEFAULT_TTL });\n return {\n onParse({ params, setParsedDocument }) {\n const { source } = params;\n const key = source instanceof Source ? source.body : source;\n const cachedError = errorCache.get(key);\n if (cachedError !== undefined) {\n throw cachedError;\n }\n const cachedDocument = documentCache.get(key);\n if (cachedDocument !== undefined) {\n setParsedDocument(cachedDocument);\n }\n return ({ result }) => {\n if (result instanceof Error) {\n errorCache.set(key, result);\n }\n else if (result !== null) {\n documentCache.set(key, result);\n }\n };\n },\n };\n};\n", "import { parse } from 'graphql';\nexport const asArray = (fns) => (Array.isArray(fns) ? fns : fns ? [fns] : []);\nconst invalidDocRegex = /\\.[a-z0-9]+$/i;\nexport function isDocumentString(str) {\n if (typeof str !== 'string') {\n return false;\n }\n // XXX: is-valid-path or is-glob treat SDL as a valid path\n // (`scalar Date` for example)\n // this why checking the extension is fast enough\n // and prevent from parsing the string in order to find out\n // if the string is a SDL\n if (invalidDocRegex.test(str)) {\n return false;\n }\n try {\n parse(str);\n return true;\n }\n catch (e) { }\n return false;\n}\nconst invalidPathRegex = /[\u2018\u201C!%^<=>`]/;\nexport function isValidPath(str) {\n return typeof str === 'string' && !invalidPathRegex.test(str);\n}\nexport function compareStrings(a, b) {\n if (String(a) < String(b)) {\n return -1;\n }\n if (String(a) > String(b)) {\n return 1;\n }\n return 0;\n}\nexport function nodeToString(a) {\n var _a, _b;\n let name;\n if ('alias' in a) {\n name = (_a = a.alias) === null || _a === void 0 ? void 0 : _a.value;\n }\n if (name == null && 'name' in a) {\n name = (_b = a.name) === null || _b === void 0 ? void 0 : _b.value;\n }\n if (name == null) {\n name = a.kind;\n }\n return name;\n}\nexport function compareNodes(a, b, customFn) {\n const aStr = nodeToString(a);\n const bStr = nodeToString(b);\n if (typeof customFn === 'function') {\n return customFn(aStr, bStr);\n }\n return compareStrings(aStr, bStr);\n}\nexport function isSome(input) {\n return input != null;\n}\nexport function assertSome(input, message = 'Value should be something') {\n if (input == null) {\n throw new Error(message);\n }\n}\n", "import { GraphQLError, versionInfo } from 'graphql';\nexport function createGraphQLError(message, options) {\n if (versionInfo.major >= 17) {\n return new GraphQLError(message, options);\n }\n return new GraphQLError(message, options === null || options === void 0 ? void 0 : options.nodes, options === null || options === void 0 ? void 0 : options.source, options === null || options === void 0 ? void 0 : options.positions, options === null || options === void 0 ? void 0 : options.path, options === null || options === void 0 ? void 0 : options.originalError, options === null || options === void 0 ? void 0 : options.extensions);\n}\nexport function relocatedError(originalError, path) {\n return createGraphQLError(originalError.message, {\n nodes: originalError.nodes,\n source: originalError.source,\n positions: originalError.positions,\n path: path == null ? originalError.path : path,\n originalError,\n extensions: originalError.extensions,\n });\n}\n", "let AggregateErrorImpl;\nif (typeof AggregateError === 'undefined') {\n class AggregateErrorClass extends Error {\n constructor(errors, message = '') {\n super(message);\n this.errors = errors;\n this.name = 'AggregateError';\n Error.captureStackTrace(this, AggregateErrorClass);\n }\n }\n AggregateErrorImpl = function (errors, message) {\n return new AggregateErrorClass(errors, message);\n };\n}\nelse {\n AggregateErrorImpl = AggregateError;\n}\nexport { AggregateErrorImpl as AggregateError };\nexport function isAggregateError(error) {\n return 'errors' in error && Array.isArray(error['errors']);\n}\n", "// Taken from graphql-js\n// https://github.com/graphql/graphql-js/blob/main/src/jsutils/inspect.ts\nimport { GraphQLError } from 'graphql';\nimport { isAggregateError } from './AggregateError.js';\nconst MAX_RECURSIVE_DEPTH = 3;\n/**\n * Used to print values in error messages.\n */\nexport function inspect(value) {\n return formatValue(value, []);\n}\nfunction formatValue(value, seenValues) {\n switch (typeof value) {\n case 'string':\n return JSON.stringify(value);\n case 'function':\n return value.name ? `[function ${value.name}]` : '[function]';\n case 'object':\n return formatObjectValue(value, seenValues);\n default:\n return String(value);\n }\n}\nfunction formatError(value) {\n if (value instanceof GraphQLError) {\n return value.toString();\n }\n return `${value.name}: ${value.message};\\n ${value.stack}`;\n}\nfunction formatObjectValue(value, previouslySeenValues) {\n if (value === null) {\n return 'null';\n }\n if (value instanceof Error) {\n if (isAggregateError(value)) {\n return formatError(value) + '\\n' + formatArray(value.errors, previouslySeenValues);\n }\n return formatError(value);\n }\n if (previouslySeenValues.includes(value)) {\n return '[Circular]';\n }\n const seenValues = [...previouslySeenValues, value];\n if (isJSONable(value)) {\n const jsonValue = value.toJSON();\n // check for infinite recursion\n if (jsonValue !== value) {\n return typeof jsonValue === 'string' ? jsonValue : formatValue(jsonValue, seenValues);\n }\n }\n else if (Array.isArray(value)) {\n return formatArray(value, seenValues);\n }\n return formatObject(value, seenValues);\n}\nfunction isJSONable(value) {\n return typeof value.toJSON === 'function';\n}\nfunction formatObject(object, seenValues) {\n const entries = Object.entries(object);\n if (entries.length === 0) {\n return '{}';\n }\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[' + getObjectTag(object) + ']';\n }\n const properties = entries.map(([key, value]) => key + ': ' + formatValue(value, seenValues));\n return '{ ' + properties.join(', ') + ' }';\n}\nfunction formatArray(array, seenValues) {\n if (array.length === 0) {\n return '[]';\n }\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[Array]';\n }\n const len = array.length;\n const remaining = array.length;\n const items = [];\n for (let i = 0; i < len; ++i) {\n items.push(formatValue(array[i], seenValues));\n }\n if (remaining === 1) {\n items.push('... 1 more item');\n }\n else if (remaining > 1) {\n items.push(`... ${remaining} more items`);\n }\n return '[' + items.join(', ') + ']';\n}\nfunction getObjectTag(object) {\n const tag = Object.prototype.toString\n .call(object)\n .replace(/^\\[object /, '')\n .replace(/]$/, '');\n if (tag === 'Object' && typeof object.constructor === 'function') {\n const name = object.constructor.name;\n if (typeof name === 'string' && name !== '') {\n return name;\n }\n }\n return tag;\n}\n", "import { getArgumentValues } from './getArgumentValues.js';\nexport function getDirectivesInExtensions(node, pathToDirectivesInExtensions = ['directives']) {\n return pathToDirectivesInExtensions.reduce((acc, pathSegment) => (acc == null ? acc : acc[pathSegment]), node === null || node === void 0 ? void 0 : node.extensions);\n}\nfunction _getDirectiveInExtensions(directivesInExtensions, directiveName) {\n const directiveInExtensions = directivesInExtensions.filter(directiveAnnotation => directiveAnnotation.name === directiveName);\n if (!directiveInExtensions.length) {\n return undefined;\n }\n return directiveInExtensions.map(directive => { var _a; return (_a = directive.args) !== null && _a !== void 0 ? _a : {}; });\n}\nexport function getDirectiveInExtensions(node, directiveName, pathToDirectivesInExtensions = ['directives']) {\n const directivesInExtensions = pathToDirectivesInExtensions.reduce((acc, pathSegment) => (acc == null ? acc : acc[pathSegment]), node === null || node === void 0 ? void 0 : node.extensions);\n if (directivesInExtensions === undefined) {\n return undefined;\n }\n if (Array.isArray(directivesInExtensions)) {\n return _getDirectiveInExtensions(directivesInExtensions, directiveName);\n }\n // Support condensed format by converting to longer format\n // The condensed format does not preserve ordering of directives when repeatable directives are used.\n // See https://github.com/ardatan/graphql-tools/issues/2534\n const reformattedDirectivesInExtensions = [];\n for (const [name, argsOrArrayOfArgs] of Object.entries(directivesInExtensions)) {\n if (Array.isArray(argsOrArrayOfArgs)) {\n for (const args of argsOrArrayOfArgs) {\n reformattedDirectivesInExtensions.push({ name, args });\n }\n }\n else {\n reformattedDirectivesInExtensions.push({ name, args: argsOrArrayOfArgs });\n }\n }\n return _getDirectiveInExtensions(reformattedDirectivesInExtensions, directiveName);\n}\nexport function getDirectives(schema, node, pathToDirectivesInExtensions = ['directives']) {\n const directivesInExtensions = getDirectivesInExtensions(node, pathToDirectivesInExtensions);\n if (directivesInExtensions != null && directivesInExtensions.length > 0) {\n return directivesInExtensions;\n }\n const schemaDirectives = schema && schema.getDirectives ? schema.getDirectives() : [];\n const schemaDirectiveMap = schemaDirectives.reduce((schemaDirectiveMap, schemaDirective) => {\n schemaDirectiveMap[schemaDirective.name] = schemaDirective;\n return schemaDirectiveMap;\n }, {});\n let astNodes = [];\n if (node.astNode) {\n astNodes.push(node.astNode);\n }\n if ('extensionASTNodes' in node && node.extensionASTNodes) {\n astNodes = [...astNodes, ...node.extensionASTNodes];\n }\n const result = [];\n for (const astNode of astNodes) {\n if (astNode.directives) {\n for (const directiveNode of astNode.directives) {\n const schemaDirective = schemaDirectiveMap[directiveNode.name.value];\n if (schemaDirective) {\n result.push({ name: directiveNode.name.value, args: getArgumentValues(schemaDirective, directiveNode) });\n }\n }\n }\n }\n return result;\n}\nexport function getDirective(schema, node, directiveName, pathToDirectivesInExtensions = ['directives']) {\n const directiveInExtensions = getDirectiveInExtensions(node, directiveName, pathToDirectivesInExtensions);\n if (directiveInExtensions != null) {\n return directiveInExtensions;\n }\n const schemaDirective = schema && schema.getDirective ? schema.getDirective(directiveName) : undefined;\n if (schemaDirective == null) {\n return undefined;\n }\n let astNodes = [];\n if (node.astNode) {\n astNodes.push(node.astNode);\n }\n if ('extensionASTNodes' in node && node.extensionASTNodes) {\n astNodes = [...astNodes, ...node.extensionASTNodes];\n }\n const result = [];\n for (const astNode of astNodes) {\n if (astNode.directives) {\n for (const directiveNode of astNode.directives) {\n if (directiveNode.name.value === directiveName) {\n result.push(getArgumentValues(schemaDirective, directiveNode));\n }\n }\n }\n }\n if (!result.length) {\n return undefined;\n }\n return result;\n}\n", "import { isNonNullType, Kind, isListType } from 'graphql';\nimport { inspect } from './inspect.js';\nexport function astFromType(type) {\n if (isNonNullType(type)) {\n const innerType = astFromType(type.ofType);\n if (innerType.kind === Kind.NON_NULL_TYPE) {\n throw new Error(`Invalid type node ${inspect(type)}. Inner type of non-null type cannot be a non-null type.`);\n }\n return {\n kind: Kind.NON_NULL_TYPE,\n type: innerType,\n };\n }\n else if (isListType(type)) {\n return {\n kind: Kind.LIST_TYPE,\n type: astFromType(type.ofType),\n };\n }\n return {\n kind: Kind.NAMED_TYPE,\n name: {\n kind: Kind.NAME,\n value: type.name,\n },\n };\n}\n", "import { Kind } from 'graphql';\n/**\n * Produces a GraphQL Value AST given a JavaScript object.\n * Function will match JavaScript/JSON values to GraphQL AST schema format\n * by using the following mapping.\n *\n * | JSON Value | GraphQL Value |\n * | ------------- | -------------------- |\n * | Object | Input Object |\n * | Array | List |\n * | Boolean | Boolean |\n * | String | String |\n * | Number | Int / Float |\n * | null | NullValue |\n *\n */\nexport function astFromValueUntyped(value) {\n // only explicit null, not undefined, NaN\n if (value === null) {\n return { kind: Kind.NULL };\n }\n // undefined\n if (value === undefined) {\n return null;\n }\n // Convert JavaScript array to GraphQL list. If the GraphQLType is a list, but\n // the value is not an array, convert the value using the list's item type.\n if (Array.isArray(value)) {\n const valuesNodes = [];\n for (const item of value) {\n const itemNode = astFromValueUntyped(item);\n if (itemNode != null) {\n valuesNodes.push(itemNode);\n }\n }\n return { kind: Kind.LIST, values: valuesNodes };\n }\n if (typeof value === 'object') {\n const fieldNodes = [];\n for (const fieldName in value) {\n const fieldValue = value[fieldName];\n const ast = astFromValueUntyped(fieldValue);\n if (ast) {\n fieldNodes.push({\n kind: Kind.OBJECT_FIELD,\n name: { kind: Kind.NAME, value: fieldName },\n value: ast,\n });\n }\n }\n return { kind: Kind.OBJECT, fields: fieldNodes };\n }\n // Others serialize based on their corresponding JavaScript scalar types.\n if (typeof value === 'boolean') {\n return { kind: Kind.BOOLEAN, value };\n }\n // JavaScript numbers can be Int or Float values.\n if (typeof value === 'number' && isFinite(value)) {\n const stringNum = String(value);\n return integerStringRegExp.test(stringNum)\n ? { kind: Kind.INT, value: stringNum }\n : { kind: Kind.FLOAT, value: stringNum };\n }\n if (typeof value === 'string') {\n return { kind: Kind.STRING, value };\n }\n throw new TypeError(`Cannot convert value to AST: ${value}.`);\n}\n/**\n * IntValue:\n * - NegativeSign? 0\n * - NegativeSign? NonZeroDigit ( Digit+ )?\n */\nconst integerStringRegExp = /^-?(?:0|[1-9][0-9]*)$/;\n", "export function memoize1(fn) {\n const memoize1cache = new WeakMap();\n return function memoized(a1) {\n const cachedValue = memoize1cache.get(a1);\n if (cachedValue === undefined) {\n const newValue = fn(a1);\n memoize1cache.set(a1, newValue);\n return newValue;\n }\n return cachedValue;\n };\n}\nexport function memoize2(fn) {\n const memoize2cache = new WeakMap();\n return function memoized(a1, a2) {\n let cache2 = memoize2cache.get(a1);\n if (!cache2) {\n cache2 = new WeakMap();\n memoize2cache.set(a1, cache2);\n const newValue = fn(a1, a2);\n cache2.set(a2, newValue);\n return newValue;\n }\n const cachedValue = cache2.get(a2);\n if (cachedValue === undefined) {\n const newValue = fn(a1, a2);\n cache2.set(a2, newValue);\n return newValue;\n }\n return cachedValue;\n };\n}\nexport function memoize3(fn) {\n const memoize3Cache = new WeakMap();\n return function memoized(a1, a2, a3) {\n let cache2 = memoize3Cache.get(a1);\n if (!cache2) {\n cache2 = new WeakMap();\n memoize3Cache.set(a1, cache2);\n const cache3 = new WeakMap();\n cache2.set(a2, cache3);\n const newValue = fn(a1, a2, a3);\n cache3.set(a3, newValue);\n return newValue;\n }\n let cache3 = cache2.get(a2);\n if (!cache3) {\n cache3 = new WeakMap();\n cache2.set(a2, cache3);\n const newValue = fn(a1, a2, a3);\n cache3.set(a3, newValue);\n return newValue;\n }\n const cachedValue = cache3.get(a3);\n if (cachedValue === undefined) {\n const newValue = fn(a1, a2, a3);\n cache3.set(a3, newValue);\n return newValue;\n }\n return cachedValue;\n };\n}\nexport function memoize4(fn) {\n const memoize4Cache = new WeakMap();\n return function memoized(a1, a2, a3, a4) {\n let cache2 = memoize4Cache.get(a1);\n if (!cache2) {\n cache2 = new WeakMap();\n memoize4Cache.set(a1, cache2);\n const cache3 = new WeakMap();\n cache2.set(a2, cache3);\n const cache4 = new WeakMap();\n cache3.set(a3, cache4);\n const newValue = fn(a1, a2, a3, a4);\n cache4.set(a4, newValue);\n return newValue;\n }\n let cache3 = cache2.get(a2);\n if (!cache3) {\n cache3 = new WeakMap();\n cache2.set(a2, cache3);\n const cache4 = new WeakMap();\n cache3.set(a3, cache4);\n const newValue = fn(a1, a2, a3, a4);\n cache4.set(a4, newValue);\n return newValue;\n }\n const cache4 = cache3.get(a3);\n if (!cache4) {\n const cache4 = new WeakMap();\n cache3.set(a3, cache4);\n const newValue = fn(a1, a2, a3, a4);\n cache4.set(a4, newValue);\n return newValue;\n }\n const cachedValue = cache4.get(a4);\n if (cachedValue === undefined) {\n const newValue = fn(a1, a2, a3, a4);\n cache4.set(a4, newValue);\n return newValue;\n }\n return cachedValue;\n };\n}\nexport function memoize5(fn) {\n const memoize5Cache = new WeakMap();\n return function memoized(a1, a2, a3, a4, a5) {\n let cache2 = memoize5Cache.get(a1);\n if (!cache2) {\n cache2 = new WeakMap();\n memoize5Cache.set(a1, cache2);\n const cache3 = new WeakMap();\n cache2.set(a2, cache3);\n const cache4 = new WeakMap();\n cache3.set(a3, cache4);\n const cache5 = new WeakMap();\n cache4.set(a4, cache5);\n const newValue = fn(a1, a2, a3, a4, a5);\n cache5.set(a5, newValue);\n return newValue;\n }\n let cache3 = cache2.get(a2);\n if (!cache3) {\n cache3 = new WeakMap();\n cache2.set(a2, cache3);\n const cache4 = new WeakMap();\n cache3.set(a3, cache4);\n const cache5 = new WeakMap();\n cache4.set(a4, cache5);\n const newValue = fn(a1, a2, a3, a4, a5);\n cache5.set(a5, newValue);\n return newValue;\n }\n let cache4 = cache3.get(a3);\n if (!cache4) {\n cache4 = new WeakMap();\n cache3.set(a3, cache4);\n const cache5 = new WeakMap();\n cache4.set(a4, cache5);\n const newValue = fn(a1, a2, a3, a4, a5);\n cache5.set(a5, newValue);\n return newValue;\n }\n let cache5 = cache4.get(a4);\n if (!cache5) {\n cache5 = new WeakMap();\n cache4.set(a4, cache5);\n const newValue = fn(a1, a2, a3, a4, a5);\n cache5.set(a5, newValue);\n return newValue;\n }\n const cachedValue = cache5.get(a5);\n if (cachedValue === undefined) {\n const newValue = fn(a1, a2, a3, a4, a5);\n cache5.set(a5, newValue);\n return newValue;\n }\n return cachedValue;\n };\n}\nconst memoize2of4cache = new WeakMap();\nexport function memoize2of4(fn) {\n return function memoized(a1, a2, a3, a4) {\n let cache2 = memoize2of4cache.get(a1);\n if (!cache2) {\n cache2 = new WeakMap();\n memoize2of4cache.set(a1, cache2);\n const newValue = fn(a1, a2, a3, a4);\n cache2.set(a2, newValue);\n return newValue;\n }\n const cachedValue = cache2.get(a2);\n if (cachedValue === undefined) {\n const newValue = fn(a1, a2, a3, a4);\n cache2.set(a2, newValue);\n return newValue;\n }\n return cachedValue;\n };\n}\n", "import { memoize1 } from './memoize.js';\nexport function getDefinedRootType(schema, operation) {\n const rootTypeMap = getRootTypeMap(schema);\n const rootType = rootTypeMap.get(operation);\n if (rootType == null) {\n throw new Error(`Root type for operation \"${operation}\" not defined by the given schema.`);\n }\n return rootType;\n}\nexport const getRootTypeNames = memoize1(function getRootTypeNames(schema) {\n const rootTypes = getRootTypes(schema);\n return new Set([...rootTypes].map(type => type.name));\n});\nexport const getRootTypes = memoize1(function getRootTypes(schema) {\n const rootTypeMap = getRootTypeMap(schema);\n return new Set(rootTypeMap.values());\n});\nexport const getRootTypeMap = memoize1(function getRootTypeMap(schema) {\n const rootTypeMap = new Map();\n const queryType = schema.getQueryType();\n if (queryType) {\n rootTypeMap.set('query', queryType);\n }\n const mutationType = schema.getMutationType();\n if (mutationType) {\n rootTypeMap.set('mutation', mutationType);\n }\n const subscriptionType = schema.getSubscriptionType();\n if (subscriptionType) {\n rootTypeMap.set('subscription', subscriptionType);\n }\n return rootTypeMap;\n});\n", "import { print, Kind, isSpecifiedScalarType, isIntrospectionType, isSpecifiedDirective, astFromValue, GraphQLDeprecatedDirective, isObjectType, isInterfaceType, isUnionType, isInputObjectType, isEnumType, isScalarType, } from 'graphql';\nimport { astFromType } from './astFromType.js';\nimport { getDirectivesInExtensions } from './get-directives.js';\nimport { astFromValueUntyped } from './astFromValueUntyped.js';\nimport { isSome } from './helpers.js';\nimport { getRootTypeMap } from './rootTypes.js';\nexport function getDocumentNodeFromSchema(schema, options = {}) {\n const pathToDirectivesInExtensions = options.pathToDirectivesInExtensions;\n const typesMap = schema.getTypeMap();\n const schemaNode = astFromSchema(schema, pathToDirectivesInExtensions);\n const definitions = schemaNode != null ? [schemaNode] : [];\n const directives = schema.getDirectives();\n for (const directive of directives) {\n if (isSpecifiedDirective(directive)) {\n continue;\n }\n definitions.push(astFromDirective(directive, schema, pathToDirectivesInExtensions));\n }\n for (const typeName in typesMap) {\n const type = typesMap[typeName];\n const isPredefinedScalar = isSpecifiedScalarType(type);\n const isIntrospection = isIntrospectionType(type);\n if (isPredefinedScalar || isIntrospection) {\n continue;\n }\n if (isObjectType(type)) {\n definitions.push(astFromObjectType(type, schema, pathToDirectivesInExtensions));\n }\n else if (isInterfaceType(type)) {\n definitions.push(astFromInterfaceType(type, schema, pathToDirectivesInExtensions));\n }\n else if (isUnionType(type)) {\n definitions.push(astFromUnionType(type, schema, pathToDirectivesInExtensions));\n }\n else if (isInputObjectType(type)) {\n definitions.push(astFromInputObjectType(type, schema, pathToDirectivesInExtensions));\n }\n else if (isEnumType(type)) {\n definitions.push(astFromEnumType(type, schema, pathToDirectivesInExtensions));\n }\n else if (isScalarType(type)) {\n definitions.push(astFromScalarType(type, schema, pathToDirectivesInExtensions));\n }\n else {\n throw new Error(`Unknown type ${type}.`);\n }\n }\n return {\n kind: Kind.DOCUMENT,\n definitions,\n };\n}\n// this approach uses the default schema printer rather than a custom solution, so may be more backwards compatible\n// currently does not allow customization of printSchema options having to do with comments.\nexport function printSchemaWithDirectives(schema, options = {}) {\n const documentNode = getDocumentNodeFromSchema(schema, options);\n return print(documentNode);\n}\nexport function astFromSchema(schema, pathToDirectivesInExtensions) {\n var _a, _b;\n const operationTypeMap = new Map([\n ['query', undefined],\n ['mutation', undefined],\n ['subscription', undefined],\n ]);\n const nodes = [];\n if (schema.astNode != null) {\n nodes.push(schema.astNode);\n }\n if (schema.extensionASTNodes != null) {\n for (const extensionASTNode of schema.extensionASTNodes) {\n nodes.push(extensionASTNode);\n }\n }\n for (const node of nodes) {\n if (node.operationTypes) {\n for (const operationTypeDefinitionNode of node.operationTypes) {\n operationTypeMap.set(operationTypeDefinitionNode.operation, operationTypeDefinitionNode);\n }\n }\n }\n const rootTypeMap = getRootTypeMap(schema);\n for (const [operationTypeNode, operationTypeDefinitionNode] of operationTypeMap) {\n const rootType = rootTypeMap.get(operationTypeNode);\n if (rootType != null) {\n const rootTypeAST = astFromType(rootType);\n if (operationTypeDefinitionNode != null) {\n operationTypeDefinitionNode.type = rootTypeAST;\n }\n else {\n operationTypeMap.set(operationTypeNode, {\n kind: Kind.OPERATION_TYPE_DEFINITION,\n operation: operationTypeNode,\n type: rootTypeAST,\n });\n }\n }\n }\n const operationTypes = [...operationTypeMap.values()].filter(isSome);\n const directives = getDirectiveNodes(schema, schema, pathToDirectivesInExtensions);\n if (!operationTypes.length && !directives.length) {\n return null;\n }\n const schemaNode = {\n kind: operationTypes != null ? Kind.SCHEMA_DEFINITION : Kind.SCHEMA_EXTENSION,\n operationTypes,\n // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility\n directives: directives,\n };\n // This code is so weird because it needs to support GraphQL.js 14\n // In GraphQL.js 14 there is no `description` value on schemaNode\n schemaNode.description =\n ((_b = (_a = schema.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : schema.description != null)\n ? {\n kind: Kind.STRING,\n value: schema.description,\n block: true,\n }\n : undefined;\n return schemaNode;\n}\nexport function astFromDirective(directive, schema, pathToDirectivesInExtensions) {\n var _a, _b, _c, _d;\n return {\n kind: Kind.DIRECTIVE_DEFINITION,\n description: (_b = (_a = directive.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (directive.description\n ? {\n kind: Kind.STRING,\n value: directive.description,\n }\n : undefined),\n name: {\n kind: Kind.NAME,\n value: directive.name,\n },\n arguments: (_c = directive.args) === null || _c === void 0 ? void 0 : _c.map(arg => astFromArg(arg, schema, pathToDirectivesInExtensions)),\n repeatable: directive.isRepeatable,\n locations: ((_d = directive.locations) === null || _d === void 0 ? void 0 : _d.map(location => ({\n kind: Kind.NAME,\n value: location,\n }))) || [],\n };\n}\nexport function getDirectiveNodes(entity, schema, pathToDirectivesInExtensions) {\n const directivesInExtensions = getDirectivesInExtensions(entity, pathToDirectivesInExtensions);\n let nodes = [];\n if (entity.astNode != null) {\n nodes.push(entity.astNode);\n }\n if ('extensionASTNodes' in entity && entity.extensionASTNodes != null) {\n nodes = nodes.concat(entity.extensionASTNodes);\n }\n let directives;\n if (directivesInExtensions != null) {\n directives = makeDirectiveNodes(schema, directivesInExtensions);\n }\n else {\n directives = [];\n for (const node of nodes) {\n if (node.directives) {\n directives.push(...node.directives);\n }\n }\n }\n return directives;\n}\nexport function getDeprecatableDirectiveNodes(entity, schema, pathToDirectivesInExtensions) {\n var _a, _b;\n let directiveNodesBesidesDeprecated = [];\n let deprecatedDirectiveNode = null;\n const directivesInExtensions = getDirectivesInExtensions(entity, pathToDirectivesInExtensions);\n let directives;\n if (directivesInExtensions != null) {\n directives = makeDirectiveNodes(schema, directivesInExtensions);\n }\n else {\n directives = (_a = entity.astNode) === null || _a === void 0 ? void 0 : _a.directives;\n }\n if (directives != null) {\n directiveNodesBesidesDeprecated = directives.filter(directive => directive.name.value !== 'deprecated');\n if (entity.deprecationReason != null) {\n deprecatedDirectiveNode = (_b = directives.filter(directive => directive.name.value === 'deprecated')) === null || _b === void 0 ? void 0 : _b[0];\n }\n }\n if (entity.deprecationReason != null &&\n deprecatedDirectiveNode == null) {\n deprecatedDirectiveNode = makeDeprecatedDirective(entity.deprecationReason);\n }\n return deprecatedDirectiveNode == null\n ? directiveNodesBesidesDeprecated\n : [deprecatedDirectiveNode].concat(directiveNodesBesidesDeprecated);\n}\nexport function astFromArg(arg, schema, pathToDirectivesInExtensions) {\n var _a, _b, _c;\n return {\n kind: Kind.INPUT_VALUE_DEFINITION,\n description: (_b = (_a = arg.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (arg.description\n ? {\n kind: Kind.STRING,\n value: arg.description,\n block: true,\n }\n : undefined),\n name: {\n kind: Kind.NAME,\n value: arg.name,\n },\n type: astFromType(arg.type),\n // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility\n defaultValue: arg.defaultValue !== undefined ? (_c = astFromValue(arg.defaultValue, arg.type)) !== null && _c !== void 0 ? _c : undefined : undefined,\n directives: getDeprecatableDirectiveNodes(arg, schema, pathToDirectivesInExtensions),\n };\n}\nexport function astFromObjectType(type, schema, pathToDirectivesInExtensions) {\n var _a, _b;\n return {\n kind: Kind.OBJECT_TYPE_DEFINITION,\n description: (_b = (_a = type.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (type.description\n ? {\n kind: Kind.STRING,\n value: type.description,\n block: true,\n }\n : undefined),\n name: {\n kind: Kind.NAME,\n value: type.name,\n },\n fields: Object.values(type.getFields()).map(field => astFromField(field, schema, pathToDirectivesInExtensions)),\n interfaces: Object.values(type.getInterfaces()).map(iFace => astFromType(iFace)),\n directives: getDirectiveNodes(type, schema, pathToDirectivesInExtensions),\n };\n}\nexport function astFromInterfaceType(type, schema, pathToDirectivesInExtensions) {\n var _a, _b;\n const node = {\n kind: Kind.INTERFACE_TYPE_DEFINITION,\n description: (_b = (_a = type.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (type.description\n ? {\n kind: Kind.STRING,\n value: type.description,\n block: true,\n }\n : undefined),\n name: {\n kind: Kind.NAME,\n value: type.name,\n },\n fields: Object.values(type.getFields()).map(field => astFromField(field, schema, pathToDirectivesInExtensions)),\n directives: getDirectiveNodes(type, schema, pathToDirectivesInExtensions),\n };\n if ('getInterfaces' in type) {\n node.interfaces = Object.values(type.getInterfaces()).map(iFace => astFromType(iFace));\n }\n return node;\n}\nexport function astFromUnionType(type, schema, pathToDirectivesInExtensions) {\n var _a, _b;\n return {\n kind: Kind.UNION_TYPE_DEFINITION,\n description: (_b = (_a = type.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (type.description\n ? {\n kind: Kind.STRING,\n value: type.description,\n block: true,\n }\n : undefined),\n name: {\n kind: Kind.NAME,\n value: type.name,\n },\n // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility\n directives: getDirectiveNodes(type, schema, pathToDirectivesInExtensions),\n types: type.getTypes().map(type => astFromType(type)),\n };\n}\nexport function astFromInputObjectType(type, schema, pathToDirectivesInExtensions) {\n var _a, _b;\n return {\n kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,\n description: (_b = (_a = type.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (type.description\n ? {\n kind: Kind.STRING,\n value: type.description,\n block: true,\n }\n : undefined),\n name: {\n kind: Kind.NAME,\n value: type.name,\n },\n fields: Object.values(type.getFields()).map(field => astFromInputField(field, schema, pathToDirectivesInExtensions)),\n // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility\n directives: getDirectiveNodes(type, schema, pathToDirectivesInExtensions),\n };\n}\nexport function astFromEnumType(type, schema, pathToDirectivesInExtensions) {\n var _a, _b;\n return {\n kind: Kind.ENUM_TYPE_DEFINITION,\n description: (_b = (_a = type.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (type.description\n ? {\n kind: Kind.STRING,\n value: type.description,\n block: true,\n }\n : undefined),\n name: {\n kind: Kind.NAME,\n value: type.name,\n },\n values: Object.values(type.getValues()).map(value => astFromEnumValue(value, schema, pathToDirectivesInExtensions)),\n // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility\n directives: getDirectiveNodes(type, schema, pathToDirectivesInExtensions),\n };\n}\nexport function astFromScalarType(type, schema, pathToDirectivesInExtensions) {\n var _a, _b, _c;\n const directivesInExtensions = getDirectivesInExtensions(type, pathToDirectivesInExtensions);\n const directives = directivesInExtensions\n ? makeDirectiveNodes(schema, directivesInExtensions)\n : ((_a = type.astNode) === null || _a === void 0 ? void 0 : _a.directives) || [];\n const specifiedByValue = (type['specifiedByUrl'] || type['specifiedByURL']);\n if (specifiedByValue && !directives.some(directiveNode => directiveNode.name.value === 'specifiedBy')) {\n const specifiedByArgs = {\n url: specifiedByValue,\n };\n directives.push(makeDirectiveNode('specifiedBy', specifiedByArgs));\n }\n return {\n kind: Kind.SCALAR_TYPE_DEFINITION,\n description: (_c = (_b = type.astNode) === null || _b === void 0 ? void 0 : _b.description) !== null && _c !== void 0 ? _c : (type.description\n ? {\n kind: Kind.STRING,\n value: type.description,\n block: true,\n }\n : undefined),\n name: {\n kind: Kind.NAME,\n value: type.name,\n },\n // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility\n directives: directives,\n };\n}\nexport function astFromField(field, schema, pathToDirectivesInExtensions) {\n var _a, _b;\n return {\n kind: Kind.FIELD_DEFINITION,\n description: (_b = (_a = field.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (field.description\n ? {\n kind: Kind.STRING,\n value: field.description,\n block: true,\n }\n : undefined),\n name: {\n kind: Kind.NAME,\n value: field.name,\n },\n arguments: field.args.map(arg => astFromArg(arg, schema, pathToDirectivesInExtensions)),\n type: astFromType(field.type),\n // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility\n directives: getDeprecatableDirectiveNodes(field, schema, pathToDirectivesInExtensions),\n };\n}\nexport function astFromInputField(field, schema, pathToDirectivesInExtensions) {\n var _a, _b, _c;\n return {\n kind: Kind.INPUT_VALUE_DEFINITION,\n description: (_b = (_a = field.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (field.description\n ? {\n kind: Kind.STRING,\n value: field.description,\n block: true,\n }\n : undefined),\n name: {\n kind: Kind.NAME,\n value: field.name,\n },\n type: astFromType(field.type),\n // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility\n directives: getDeprecatableDirectiveNodes(field, schema, pathToDirectivesInExtensions),\n defaultValue: (_c = astFromValue(field.defaultValue, field.type)) !== null && _c !== void 0 ? _c : undefined,\n };\n}\nexport function astFromEnumValue(value, schema, pathToDirectivesInExtensions) {\n var _a, _b;\n return {\n kind: Kind.ENUM_VALUE_DEFINITION,\n description: (_b = (_a = value.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (value.description\n ? {\n kind: Kind.STRING,\n value: value.description,\n block: true,\n }\n : undefined),\n name: {\n kind: Kind.NAME,\n value: value.name,\n },\n // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility\n directives: getDeprecatableDirectiveNodes(value, schema, pathToDirectivesInExtensions),\n };\n}\nexport function makeDeprecatedDirective(deprecationReason) {\n return makeDirectiveNode('deprecated', { reason: deprecationReason }, GraphQLDeprecatedDirective);\n}\nexport function makeDirectiveNode(name, args, directive) {\n const directiveArguments = [];\n if (directive != null) {\n for (const arg of directive.args) {\n const argName = arg.name;\n const argValue = args[argName];\n if (argValue !== undefined) {\n const value = astFromValue(argValue, arg.type);\n if (value) {\n directiveArguments.push({\n kind: Kind.ARGUMENT,\n name: {\n kind: Kind.NAME,\n value: argName,\n },\n value,\n });\n }\n }\n }\n }\n else {\n for (const argName in args) {\n const argValue = args[argName];\n const value = astFromValueUntyped(argValue);\n if (value) {\n directiveArguments.push({\n kind: Kind.ARGUMENT,\n name: {\n kind: Kind.NAME,\n value: argName,\n },\n value,\n });\n }\n }\n }\n return {\n kind: Kind.DIRECTIVE,\n name: {\n kind: Kind.NAME,\n value: name,\n },\n arguments: directiveArguments,\n };\n}\nexport function makeDirectiveNodes(schema, directiveValues) {\n const directiveNodes = [];\n for (const directiveName in directiveValues) {\n const arrayOrSingleValue = directiveValues[directiveName];\n const directive = schema === null || schema === void 0 ? void 0 : schema.getDirective(directiveName);\n if (Array.isArray(arrayOrSingleValue)) {\n for (const value of arrayOrSingleValue) {\n directiveNodes.push(makeDirectiveNode(directiveName, value, directive));\n }\n }\n else {\n directiveNodes.push(makeDirectiveNode(directiveName, arrayOrSingleValue, directive));\n }\n }\n return directiveNodes;\n}\n", "import { visit, TokenKind, } from 'graphql';\nconst MAX_LINE_LENGTH = 80;\nlet commentsRegistry = {};\nexport function resetComments() {\n commentsRegistry = {};\n}\nexport function collectComment(node) {\n var _a;\n const entityName = (_a = node.name) === null || _a === void 0 ? void 0 : _a.value;\n if (entityName == null) {\n return;\n }\n pushComment(node, entityName);\n switch (node.kind) {\n case 'EnumTypeDefinition':\n if (node.values) {\n for (const value of node.values) {\n pushComment(value, entityName, value.name.value);\n }\n }\n break;\n case 'ObjectTypeDefinition':\n case 'InputObjectTypeDefinition':\n case 'InterfaceTypeDefinition':\n if (node.fields) {\n for (const field of node.fields) {\n pushComment(field, entityName, field.name.value);\n if (isFieldDefinitionNode(field) && field.arguments) {\n for (const arg of field.arguments) {\n pushComment(arg, entityName, field.name.value, arg.name.value);\n }\n }\n }\n }\n break;\n }\n}\nexport function pushComment(node, entity, field, argument) {\n const comment = getComment(node);\n if (typeof comment !== 'string' || comment.length === 0) {\n return;\n }\n const keys = [entity];\n if (field) {\n keys.push(field);\n if (argument) {\n keys.push(argument);\n }\n }\n const path = keys.join('.');\n if (!commentsRegistry[path]) {\n commentsRegistry[path] = [];\n }\n commentsRegistry[path].push(comment);\n}\nexport function printComment(comment) {\n return '\\n# ' + comment.replace(/\\n/g, '\\n# ');\n}\n/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/**\n * NOTE: ==> This file has been modified just to add comments to the printed AST\n * This is a temp measure, we will move to using the original non modified printer.js ASAP.\n */\n/**\n * Given maybeArray, print an empty string if it is null or empty, otherwise\n * print all items together separated by separator if provided\n */\nfunction join(maybeArray, separator) {\n return maybeArray ? maybeArray.filter(x => x).join(separator || '') : '';\n}\nfunction hasMultilineItems(maybeArray) {\n var _a;\n return (_a = maybeArray === null || maybeArray === void 0 ? void 0 : maybeArray.some(str => str.includes('\\n'))) !== null && _a !== void 0 ? _a : false;\n}\nfunction addDescription(cb) {\n return (node, _key, _parent, path, ancestors) => {\n var _a;\n const keys = [];\n const parent = path.reduce((prev, key) => {\n if (['fields', 'arguments', 'values'].includes(key) && prev.name) {\n keys.push(prev.name.value);\n }\n return prev[key];\n }, ancestors[0]);\n const key = [...keys, (_a = parent === null || parent === void 0 ? void 0 : parent.name) === null || _a === void 0 ? void 0 : _a.value].filter(Boolean).join('.');\n const items = [];\n if (node.kind.includes('Definition') && commentsRegistry[key]) {\n items.push(...commentsRegistry[key]);\n }\n return join([...items.map(printComment), node.description, cb(node, _key, _parent, path, ancestors)], '\\n');\n };\n}\nfunction indent(maybeString) {\n return maybeString && ` ${maybeString.replace(/\\n/g, '\\n ')}`;\n}\n/**\n * Given array, print each item on its own line, wrapped in an\n * indented \"{ }\" block.\n */\nfunction block(array) {\n return array && array.length !== 0 ? `{\\n${indent(join(array, '\\n'))}\\n}` : '';\n}\n/**\n * If maybeString is not null or empty, then wrap with start and end, otherwise\n * print an empty string.\n */\nfunction wrap(start, maybeString, end) {\n return maybeString ? start + maybeString + (end || '') : '';\n}\n/**\n * Print a block string in the indented block form by adding a leading and\n * trailing blank line. However, if a block string starts with whitespace and is\n * a single-line, adding a leading blank line would strip that whitespace.\n */\nfunction printBlockString(value, isDescription = false) {\n const escaped = value.replace(/\"\"\"/g, '\\\\\"\"\"');\n return (value[0] === ' ' || value[0] === '\\t') && value.indexOf('\\n') === -1\n ? `\"\"\"${escaped.replace(/\"$/, '\"\\n')}\"\"\"`\n : `\"\"\"\\n${isDescription ? escaped : indent(escaped)}\\n\"\"\"`;\n}\nconst printDocASTReducer = {\n Name: { leave: node => node.value },\n Variable: { leave: node => '$' + node.name },\n // Document\n Document: {\n leave: node => join(node.definitions, '\\n\\n'),\n },\n OperationDefinition: {\n leave: node => {\n const varDefs = wrap('(', join(node.variableDefinitions, ', '), ')');\n const prefix = join([node.operation, join([node.name, varDefs]), join(node.directives, ' ')], ' ');\n // the query short form.\n return prefix + ' ' + node.selectionSet;\n },\n },\n VariableDefinition: {\n leave: ({ variable, type, defaultValue, directives }) => variable + ': ' + type + wrap(' = ', defaultValue) + wrap(' ', join(directives, ' ')),\n },\n SelectionSet: { leave: ({ selections }) => block(selections) },\n Field: {\n leave({ alias, name, arguments: args, directives, selectionSet }) {\n const prefix = wrap('', alias, ': ') + name;\n let argsLine = prefix + wrap('(', join(args, ', '), ')');\n if (argsLine.length > MAX_LINE_LENGTH) {\n argsLine = prefix + wrap('(\\n', indent(join(args, '\\n')), '\\n)');\n }\n return join([argsLine, join(directives, ' '), selectionSet], ' ');\n },\n },\n Argument: { leave: ({ name, value }) => name + ': ' + value },\n // Fragments\n FragmentSpread: {\n leave: ({ name, directives }) => '...' + name + wrap(' ', join(directives, ' ')),\n },\n InlineFragment: {\n leave: ({ typeCondition, directives, selectionSet }) => join(['...', wrap('on ', typeCondition), join(directives, ' '), selectionSet], ' '),\n },\n FragmentDefinition: {\n leave: ({ name, typeCondition, variableDefinitions, directives, selectionSet }) => \n // Note: fragment variable definitions are experimental and may be changed\n // or removed in the future.\n `fragment ${name}${wrap('(', join(variableDefinitions, ', '), ')')} ` +\n `on ${typeCondition} ${wrap('', join(directives, ' '), ' ')}` +\n selectionSet,\n },\n // Value\n IntValue: { leave: ({ value }) => value },\n FloatValue: { leave: ({ value }) => value },\n StringValue: {\n leave: ({ value, block: isBlockString }) => {\n if (isBlockString) {\n return printBlockString(value);\n }\n return JSON.stringify(value);\n },\n },\n BooleanValue: { leave: ({ value }) => (value ? 'true' : 'false') },\n NullValue: { leave: () => 'null' },\n EnumValue: { leave: ({ value }) => value },\n ListValue: { leave: ({ values }) => '[' + join(values, ', ') + ']' },\n ObjectValue: { leave: ({ fields }) => '{' + join(fields, ', ') + '}' },\n ObjectField: { leave: ({ name, value }) => name + ': ' + value },\n // Directive\n Directive: {\n leave: ({ name, arguments: args }) => '@' + name + wrap('(', join(args, ', '), ')'),\n },\n // Type\n NamedType: { leave: ({ name }) => name },\n ListType: { leave: ({ type }) => '[' + type + ']' },\n NonNullType: { leave: ({ type }) => type + '!' },\n // Type System Definitions\n SchemaDefinition: {\n leave: ({ directives, operationTypes }) => join(['schema', join(directives, ' '), block(operationTypes)], ' '),\n },\n OperationTypeDefinition: {\n leave: ({ operation, type }) => operation + ': ' + type,\n },\n ScalarTypeDefinition: {\n leave: ({ name, directives }) => join(['scalar', name, join(directives, ' ')], ' '),\n },\n ObjectTypeDefinition: {\n leave: ({ name, interfaces, directives, fields }) => join(['type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' '),\n },\n FieldDefinition: {\n leave: ({ name, arguments: args, type, directives }) => name +\n (hasMultilineItems(args)\n ? wrap('(\\n', indent(join(args, '\\n')), '\\n)')\n : wrap('(', join(args, ', '), ')')) +\n ': ' +\n type +\n wrap(' ', join(directives, ' ')),\n },\n InputValueDefinition: {\n leave: ({ name, type, defaultValue, directives }) => join([name + ': ' + type, wrap('= ', defaultValue), join(directives, ' ')], ' '),\n },\n InterfaceTypeDefinition: {\n leave: ({ name, interfaces, directives, fields }) => join(['interface', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' '),\n },\n UnionTypeDefinition: {\n leave: ({ name, directives, types }) => join(['union', name, join(directives, ' '), wrap('= ', join(types, ' | '))], ' '),\n },\n EnumTypeDefinition: {\n leave: ({ name, directives, values }) => join(['enum', name, join(directives, ' '), block(values)], ' '),\n },\n EnumValueDefinition: {\n leave: ({ name, directives }) => join([name, join(directives, ' ')], ' '),\n },\n InputObjectTypeDefinition: {\n leave: ({ name, directives, fields }) => join(['input', name, join(directives, ' '), block(fields)], ' '),\n },\n DirectiveDefinition: {\n leave: ({ name, arguments: args, repeatable, locations }) => 'directive @' +\n name +\n (hasMultilineItems(args)\n ? wrap('(\\n', indent(join(args, '\\n')), '\\n)')\n : wrap('(', join(args, ', '), ')')) +\n (repeatable ? ' repeatable' : '') +\n ' on ' +\n join(locations, ' | '),\n },\n SchemaExtension: {\n leave: ({ directives, operationTypes }) => join(['extend schema', join(directives, ' '), block(operationTypes)], ' '),\n },\n ScalarTypeExtension: {\n leave: ({ name, directives }) => join(['extend scalar', name, join(directives, ' ')], ' '),\n },\n ObjectTypeExtension: {\n leave: ({ name, interfaces, directives, fields }) => join(['extend type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' '),\n },\n InterfaceTypeExtension: {\n leave: ({ name, interfaces, directives, fields }) => join(['extend interface', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' '),\n },\n UnionTypeExtension: {\n leave: ({ name, directives, types }) => join(['extend union', name, join(directives, ' '), wrap('= ', join(types, ' | '))], ' '),\n },\n EnumTypeExtension: {\n leave: ({ name, directives, values }) => join(['extend enum', name, join(directives, ' '), block(values)], ' '),\n },\n InputObjectTypeExtension: {\n leave: ({ name, directives, fields }) => join(['extend input', name, join(directives, ' '), block(fields)], ' '),\n },\n};\nconst printDocASTReducerWithComments = Object.keys(printDocASTReducer).reduce((prev, key) => ({\n ...prev,\n [key]: {\n leave: addDescription(printDocASTReducer[key].leave),\n },\n}), {});\n/**\n * Converts an AST into a string, using one set of reasonable\n * formatting rules.\n */\nexport function printWithComments(ast) {\n return visit(ast, printDocASTReducerWithComments);\n}\nfunction isFieldDefinitionNode(node) {\n return node.kind === 'FieldDefinition';\n}\n// graphql < v13 and > v15 does not export getDescription\nexport function getDescription(node, options) {\n if (node.description != null) {\n return node.description.value;\n }\n if (options === null || options === void 0 ? void 0 : options.commentDescriptions) {\n return getComment(node);\n }\n}\nexport function getComment(node) {\n const rawValue = getLeadingCommentBlock(node);\n if (rawValue !== undefined) {\n return dedentBlockStringValue(`\\n${rawValue}`);\n }\n}\nexport function getLeadingCommentBlock(node) {\n const loc = node.loc;\n if (!loc) {\n return;\n }\n const comments = [];\n let token = loc.startToken.prev;\n while (token != null &&\n token.kind === TokenKind.COMMENT &&\n token.next != null &&\n token.prev != null &&\n token.line + 1 === token.next.line &&\n token.line !== token.prev.line) {\n const value = String(token.value);\n comments.push(value);\n token = token.prev;\n }\n return comments.length > 0 ? comments.reverse().join('\\n') : undefined;\n}\nexport function dedentBlockStringValue(rawString) {\n // Expand a block string's raw value into independent lines.\n const lines = rawString.split(/\\r\\n|[\\n\\r]/g);\n // Remove common indentation from all lines but first.\n const commonIndent = getBlockStringIndentation(lines);\n if (commonIndent !== 0) {\n for (let i = 1; i < lines.length; i++) {\n lines[i] = lines[i].slice(commonIndent);\n }\n }\n // Remove leading and trailing blank lines.\n while (lines.length > 0 && isBlank(lines[0])) {\n lines.shift();\n }\n while (lines.length > 0 && isBlank(lines[lines.length - 1])) {\n lines.pop();\n }\n // Return a string of the lines joined with U+000A.\n return lines.join('\\n');\n}\n/**\n * @internal\n */\nexport function getBlockStringIndentation(lines) {\n let commonIndent = null;\n for (let i = 1; i < lines.length; i++) {\n const line = lines[i];\n const indent = leadingWhitespace(line);\n if (indent === line.length) {\n continue; // skip empty lines\n }\n if (commonIndent === null || indent < commonIndent) {\n commonIndent = indent;\n if (commonIndent === 0) {\n break;\n }\n }\n }\n return commonIndent === null ? 0 : commonIndent;\n}\nfunction leadingWhitespace(str) {\n let i = 0;\n while (i < str.length && (str[i] === ' ' || str[i] === '\\t')) {\n i++;\n }\n return i;\n}\nfunction isBlank(str) {\n return leadingWhitespace(str) === str.length;\n}\n", "export var MapperKind;\n(function (MapperKind) {\n MapperKind[\"TYPE\"] = \"MapperKind.TYPE\";\n MapperKind[\"SCALAR_TYPE\"] = \"MapperKind.SCALAR_TYPE\";\n MapperKind[\"ENUM_TYPE\"] = \"MapperKind.ENUM_TYPE\";\n MapperKind[\"COMPOSITE_TYPE\"] = \"MapperKind.COMPOSITE_TYPE\";\n MapperKind[\"OBJECT_TYPE\"] = \"MapperKind.OBJECT_TYPE\";\n MapperKind[\"INPUT_OBJECT_TYPE\"] = \"MapperKind.INPUT_OBJECT_TYPE\";\n MapperKind[\"ABSTRACT_TYPE\"] = \"MapperKind.ABSTRACT_TYPE\";\n MapperKind[\"UNION_TYPE\"] = \"MapperKind.UNION_TYPE\";\n MapperKind[\"INTERFACE_TYPE\"] = \"MapperKind.INTERFACE_TYPE\";\n MapperKind[\"ROOT_OBJECT\"] = \"MapperKind.ROOT_OBJECT\";\n MapperKind[\"QUERY\"] = \"MapperKind.QUERY\";\n MapperKind[\"MUTATION\"] = \"MapperKind.MUTATION\";\n MapperKind[\"SUBSCRIPTION\"] = \"MapperKind.SUBSCRIPTION\";\n MapperKind[\"DIRECTIVE\"] = \"MapperKind.DIRECTIVE\";\n MapperKind[\"FIELD\"] = \"MapperKind.FIELD\";\n MapperKind[\"COMPOSITE_FIELD\"] = \"MapperKind.COMPOSITE_FIELD\";\n MapperKind[\"OBJECT_FIELD\"] = \"MapperKind.OBJECT_FIELD\";\n MapperKind[\"ROOT_FIELD\"] = \"MapperKind.ROOT_FIELD\";\n MapperKind[\"QUERY_ROOT_FIELD\"] = \"MapperKind.QUERY_ROOT_FIELD\";\n MapperKind[\"MUTATION_ROOT_FIELD\"] = \"MapperKind.MUTATION_ROOT_FIELD\";\n MapperKind[\"SUBSCRIPTION_ROOT_FIELD\"] = \"MapperKind.SUBSCRIPTION_ROOT_FIELD\";\n MapperKind[\"INTERFACE_FIELD\"] = \"MapperKind.INTERFACE_FIELD\";\n MapperKind[\"INPUT_OBJECT_FIELD\"] = \"MapperKind.INPUT_OBJECT_FIELD\";\n MapperKind[\"ARGUMENT\"] = \"MapperKind.ARGUMENT\";\n MapperKind[\"ENUM_VALUE\"] = \"MapperKind.ENUM_VALUE\";\n})(MapperKind || (MapperKind = {}));\n", "import { isObjectType } from 'graphql';\nexport function getObjectTypeFromTypeMap(typeMap, type) {\n if (type) {\n const maybeObjectType = typeMap[type.name];\n if (isObjectType(maybeObjectType)) {\n return maybeObjectType;\n }\n }\n}\n", "import { GraphQLObjectType, GraphQLInterfaceType, GraphQLInputObjectType, GraphQLString, GraphQLInt, GraphQLFloat, GraphQLBoolean, GraphQLID, Kind, GraphQLList, GraphQLNonNull, } from 'graphql';\nexport function createNamedStub(name, type) {\n let constructor;\n if (type === 'object') {\n constructor = GraphQLObjectType;\n }\n else if (type === 'interface') {\n constructor = GraphQLInterfaceType;\n }\n else {\n constructor = GraphQLInputObjectType;\n }\n return new constructor({\n name,\n fields: {\n _fake: {\n type: GraphQLString,\n },\n },\n });\n}\nexport function createStub(node, type) {\n switch (node.kind) {\n case Kind.LIST_TYPE:\n return new GraphQLList(createStub(node.type, type));\n case Kind.NON_NULL_TYPE:\n return new GraphQLNonNull(createStub(node.type, type));\n default:\n if (type === 'output') {\n return createNamedStub(node.name.value, 'object');\n }\n return createNamedStub(node.name.value, 'input');\n }\n}\nexport function isNamedStub(type) {\n if ('getFields' in type) {\n const fields = type.getFields();\n // eslint-disable-next-line no-unreachable-loop\n for (const fieldName in fields) {\n const field = fields[fieldName];\n return field.name === '_fake';\n }\n }\n return false;\n}\nexport function getBuiltInForStub(type) {\n switch (type.name) {\n case GraphQLInt.name:\n return GraphQLInt;\n case GraphQLFloat.name:\n return GraphQLFloat;\n case GraphQLString.name:\n return GraphQLString;\n case GraphQLBoolean.name:\n return GraphQLBoolean;\n case GraphQLID.name:\n return GraphQLID;\n default:\n return type;\n }\n}\n", "import { GraphQLDirective, GraphQLEnumType, GraphQLInputObjectType, GraphQLInterfaceType, GraphQLList, GraphQLObjectType, GraphQLNonNull, GraphQLScalarType, GraphQLUnionType, isInterfaceType, isEnumType, isInputObjectType, isListType, isNamedType, isNonNullType, isObjectType, isScalarType, isUnionType, isSpecifiedScalarType, isSpecifiedDirective, } from 'graphql';\nimport { getBuiltInForStub, isNamedStub } from './stub.js';\nexport function rewireTypes(originalTypeMap, directives) {\n const referenceTypeMap = Object.create(null);\n for (const typeName in originalTypeMap) {\n referenceTypeMap[typeName] = originalTypeMap[typeName];\n }\n const newTypeMap = Object.create(null);\n for (const typeName in referenceTypeMap) {\n const namedType = referenceTypeMap[typeName];\n if (namedType == null || typeName.startsWith('__')) {\n continue;\n }\n const newName = namedType.name;\n if (newName.startsWith('__')) {\n continue;\n }\n if (newTypeMap[newName] != null) {\n console.warn(`Duplicate schema type name ${newName} found; keeping the existing one found in the schema`);\n continue;\n }\n newTypeMap[newName] = namedType;\n }\n for (const typeName in newTypeMap) {\n newTypeMap[typeName] = rewireNamedType(newTypeMap[typeName]);\n }\n const newDirectives = directives.map(directive => rewireDirective(directive));\n return {\n typeMap: newTypeMap,\n directives: newDirectives,\n };\n function rewireDirective(directive) {\n if (isSpecifiedDirective(directive)) {\n return directive;\n }\n const directiveConfig = directive.toConfig();\n directiveConfig.args = rewireArgs(directiveConfig.args);\n return new GraphQLDirective(directiveConfig);\n }\n function rewireArgs(args) {\n const rewiredArgs = {};\n for (const argName in args) {\n const arg = args[argName];\n const rewiredArgType = rewireType(arg.type);\n if (rewiredArgType != null) {\n arg.type = rewiredArgType;\n rewiredArgs[argName] = arg;\n }\n }\n return rewiredArgs;\n }\n function rewireNamedType(type) {\n if (isObjectType(type)) {\n const config = type.toConfig();\n const newConfig = {\n ...config,\n fields: () => rewireFields(config.fields),\n interfaces: () => rewireNamedTypes(config.interfaces),\n };\n return new GraphQLObjectType(newConfig);\n }\n else if (isInterfaceType(type)) {\n const config = type.toConfig();\n const newConfig = {\n ...config,\n fields: () => rewireFields(config.fields),\n };\n if ('interfaces' in newConfig) {\n newConfig.interfaces = () => rewireNamedTypes(config.interfaces);\n }\n return new GraphQLInterfaceType(newConfig);\n }\n else if (isUnionType(type)) {\n const config = type.toConfig();\n const newConfig = {\n ...config,\n types: () => rewireNamedTypes(config.types),\n };\n return new GraphQLUnionType(newConfig);\n }\n else if (isInputObjectType(type)) {\n const config = type.toConfig();\n const newConfig = {\n ...config,\n fields: () => rewireInputFields(config.fields),\n };\n return new GraphQLInputObjectType(newConfig);\n }\n else if (isEnumType(type)) {\n const enumConfig = type.toConfig();\n return new GraphQLEnumType(enumConfig);\n }\n else if (isScalarType(type)) {\n if (isSpecifiedScalarType(type)) {\n return type;\n }\n const scalarConfig = type.toConfig();\n return new GraphQLScalarType(scalarConfig);\n }\n throw new Error(`Unexpected schema type: ${type}`);\n }\n function rewireFields(fields) {\n const rewiredFields = {};\n for (const fieldName in fields) {\n const field = fields[fieldName];\n const rewiredFieldType = rewireType(field.type);\n if (rewiredFieldType != null && field.args) {\n field.type = rewiredFieldType;\n field.args = rewireArgs(field.args);\n rewiredFields[fieldName] = field;\n }\n }\n return rewiredFields;\n }\n function rewireInputFields(fields) {\n const rewiredFields = {};\n for (const fieldName in fields) {\n const field = fields[fieldName];\n const rewiredFieldType = rewireType(field.type);\n if (rewiredFieldType != null) {\n field.type = rewiredFieldType;\n rewiredFields[fieldName] = field;\n }\n }\n return rewiredFields;\n }\n function rewireNamedTypes(namedTypes) {\n const rewiredTypes = [];\n for (const namedType of namedTypes) {\n const rewiredType = rewireType(namedType);\n if (rewiredType != null) {\n rewiredTypes.push(rewiredType);\n }\n }\n return rewiredTypes;\n }\n function rewireType(type) {\n if (isListType(type)) {\n const rewiredType = rewireType(type.ofType);\n return rewiredType != null ? new GraphQLList(rewiredType) : null;\n }\n else if (isNonNullType(type)) {\n const rewiredType = rewireType(type.ofType);\n return rewiredType != null ? new GraphQLNonNull(rewiredType) : null;\n }\n else if (isNamedType(type)) {\n let rewiredType = referenceTypeMap[type.name];\n if (rewiredType === undefined) {\n rewiredType = isNamedStub(type) ? getBuiltInForStub(type) : rewireNamedType(type);\n newTypeMap[rewiredType.name] = referenceTypeMap[type.name] = rewiredType;\n }\n return rewiredType != null ? newTypeMap[rewiredType.name] : null;\n }\n return null;\n }\n}\n", "import { getNullableType, isLeafType, isListType, isInputObjectType } from 'graphql';\nexport function transformInputValue(type, value, inputLeafValueTransformer = null, inputObjectValueTransformer = null) {\n if (value == null) {\n return value;\n }\n const nullableType = getNullableType(type);\n if (isLeafType(nullableType)) {\n return inputLeafValueTransformer != null ? inputLeafValueTransformer(nullableType, value) : value;\n }\n else if (isListType(nullableType)) {\n return value.map((listMember) => transformInputValue(nullableType.ofType, listMember, inputLeafValueTransformer, inputObjectValueTransformer));\n }\n else if (isInputObjectType(nullableType)) {\n const fields = nullableType.getFields();\n const newValue = {};\n for (const key in value) {\n const field = fields[key];\n if (field != null) {\n newValue[key] = transformInputValue(field.type, value[key], inputLeafValueTransformer, inputObjectValueTransformer);\n }\n }\n return inputObjectValueTransformer != null ? inputObjectValueTransformer(nullableType, newValue) : newValue;\n }\n // unreachable, no other possible return value\n}\nexport function serializeInputValue(type, value) {\n return transformInputValue(type, value, (t, v) => {\n try {\n return t.serialize(v);\n }\n catch (_a) {\n return v;\n }\n });\n}\nexport function parseInputValue(type, value) {\n return transformInputValue(type, value, (t, v) => {\n try {\n return t.parseValue(v);\n }\n catch (_a) {\n return v;\n }\n });\n}\nexport function parseInputValueLiteral(type, value) {\n return transformInputValue(type, value, (t, v) => t.parseLiteral(v, {}));\n}\n", "import { GraphQLObjectType, GraphQLSchema, isInterfaceType, isEnumType, isObjectType, isScalarType, isUnionType, isInputObjectType, GraphQLInputObjectType, GraphQLInterfaceType, isLeafType, isListType, isNonNullType, isNamedType, GraphQLList, GraphQLNonNull, GraphQLEnumType, Kind, } from 'graphql';\nimport { getObjectTypeFromTypeMap } from './getObjectTypeFromTypeMap.js';\nimport { MapperKind, } from './Interfaces.js';\nimport { rewireTypes } from './rewire.js';\nimport { serializeInputValue, parseInputValue } from './transformInputValue.js';\nexport function mapSchema(schema, schemaMapper = {}) {\n const newTypeMap = mapArguments(mapFields(mapTypes(mapDefaultValues(mapEnumValues(mapTypes(mapDefaultValues(schema.getTypeMap(), schema, serializeInputValue), schema, schemaMapper, type => isLeafType(type)), schema, schemaMapper), schema, parseInputValue), schema, schemaMapper, type => !isLeafType(type)), schema, schemaMapper), schema, schemaMapper);\n const originalDirectives = schema.getDirectives();\n const newDirectives = mapDirectives(originalDirectives, schema, schemaMapper);\n const { typeMap, directives } = rewireTypes(newTypeMap, newDirectives);\n return new GraphQLSchema({\n ...schema.toConfig(),\n query: getObjectTypeFromTypeMap(typeMap, getObjectTypeFromTypeMap(newTypeMap, schema.getQueryType())),\n mutation: getObjectTypeFromTypeMap(typeMap, getObjectTypeFromTypeMap(newTypeMap, schema.getMutationType())),\n subscription: getObjectTypeFromTypeMap(typeMap, getObjectTypeFromTypeMap(newTypeMap, schema.getSubscriptionType())),\n types: Object.values(typeMap),\n directives,\n });\n}\nfunction mapTypes(originalTypeMap, schema, schemaMapper, testFn = () => true) {\n const newTypeMap = {};\n for (const typeName in originalTypeMap) {\n if (!typeName.startsWith('__')) {\n const originalType = originalTypeMap[typeName];\n if (originalType == null || !testFn(originalType)) {\n newTypeMap[typeName] = originalType;\n continue;\n }\n const typeMapper = getTypeMapper(schema, schemaMapper, typeName);\n if (typeMapper == null) {\n newTypeMap[typeName] = originalType;\n continue;\n }\n const maybeNewType = typeMapper(originalType, schema);\n if (maybeNewType === undefined) {\n newTypeMap[typeName] = originalType;\n continue;\n }\n newTypeMap[typeName] = maybeNewType;\n }\n }\n return newTypeMap;\n}\nfunction mapEnumValues(originalTypeMap, schema, schemaMapper) {\n const enumValueMapper = getEnumValueMapper(schemaMapper);\n if (!enumValueMapper) {\n return originalTypeMap;\n }\n return mapTypes(originalTypeMap, schema, {\n [MapperKind.ENUM_TYPE]: type => {\n const config = type.toConfig();\n const originalEnumValueConfigMap = config.values;\n const newEnumValueConfigMap = {};\n for (const externalValue in originalEnumValueConfigMap) {\n const originalEnumValueConfig = originalEnumValueConfigMap[externalValue];\n const mappedEnumValue = enumValueMapper(originalEnumValueConfig, type.name, schema, externalValue);\n if (mappedEnumValue === undefined) {\n newEnumValueConfigMap[externalValue] = originalEnumValueConfig;\n }\n else if (Array.isArray(mappedEnumValue)) {\n const [newExternalValue, newEnumValueConfig] = mappedEnumValue;\n newEnumValueConfigMap[newExternalValue] =\n newEnumValueConfig === undefined ? originalEnumValueConfig : newEnumValueConfig;\n }\n else if (mappedEnumValue !== null) {\n newEnumValueConfigMap[externalValue] = mappedEnumValue;\n }\n }\n return correctASTNodes(new GraphQLEnumType({\n ...config,\n values: newEnumValueConfigMap,\n }));\n },\n }, type => isEnumType(type));\n}\nfunction mapDefaultValues(originalTypeMap, schema, fn) {\n const newTypeMap = mapArguments(originalTypeMap, schema, {\n [MapperKind.ARGUMENT]: argumentConfig => {\n if (argumentConfig.defaultValue === undefined) {\n return argumentConfig;\n }\n const maybeNewType = getNewType(originalTypeMap, argumentConfig.type);\n if (maybeNewType != null) {\n return {\n ...argumentConfig,\n defaultValue: fn(maybeNewType, argumentConfig.defaultValue),\n };\n }\n },\n });\n return mapFields(newTypeMap, schema, {\n [MapperKind.INPUT_OBJECT_FIELD]: inputFieldConfig => {\n if (inputFieldConfig.defaultValue === undefined) {\n return inputFieldConfig;\n }\n const maybeNewType = getNewType(newTypeMap, inputFieldConfig.type);\n if (maybeNewType != null) {\n return {\n ...inputFieldConfig,\n defaultValue: fn(maybeNewType, inputFieldConfig.defaultValue),\n };\n }\n },\n });\n}\nfunction getNewType(newTypeMap, type) {\n if (isListType(type)) {\n const newType = getNewType(newTypeMap, type.ofType);\n return newType != null ? new GraphQLList(newType) : null;\n }\n else if (isNonNullType(type)) {\n const newType = getNewType(newTypeMap, type.ofType);\n return newType != null ? new GraphQLNonNull(newType) : null;\n }\n else if (isNamedType(type)) {\n const newType = newTypeMap[type.name];\n return newType != null ? newType : null;\n }\n return null;\n}\nfunction mapFields(originalTypeMap, schema, schemaMapper) {\n const newTypeMap = {};\n for (const typeName in originalTypeMap) {\n if (!typeName.startsWith('__')) {\n const originalType = originalTypeMap[typeName];\n if (!isObjectType(originalType) && !isInterfaceType(originalType) && !isInputObjectType(originalType)) {\n newTypeMap[typeName] = originalType;\n continue;\n }\n const fieldMapper = getFieldMapper(schema, schemaMapper, typeName);\n if (fieldMapper == null) {\n newTypeMap[typeName] = originalType;\n continue;\n }\n const config = originalType.toConfig();\n const originalFieldConfigMap = config.fields;\n const newFieldConfigMap = {};\n for (const fieldName in originalFieldConfigMap) {\n const originalFieldConfig = originalFieldConfigMap[fieldName];\n const mappedField = fieldMapper(originalFieldConfig, fieldName, typeName, schema);\n if (mappedField === undefined) {\n newFieldConfigMap[fieldName] = originalFieldConfig;\n }\n else if (Array.isArray(mappedField)) {\n const [newFieldName, newFieldConfig] = mappedField;\n if (newFieldConfig.astNode != null) {\n newFieldConfig.astNode = {\n ...newFieldConfig.astNode,\n name: {\n ...newFieldConfig.astNode.name,\n value: newFieldName,\n },\n };\n }\n newFieldConfigMap[newFieldName] = newFieldConfig === undefined ? originalFieldConfig : newFieldConfig;\n }\n else if (mappedField !== null) {\n newFieldConfigMap[fieldName] = mappedField;\n }\n }\n if (isObjectType(originalType)) {\n newTypeMap[typeName] = correctASTNodes(new GraphQLObjectType({\n ...config,\n fields: newFieldConfigMap,\n }));\n }\n else if (isInterfaceType(originalType)) {\n newTypeMap[typeName] = correctASTNodes(new GraphQLInterfaceType({\n ...config,\n fields: newFieldConfigMap,\n }));\n }\n else {\n newTypeMap[typeName] = correctASTNodes(new GraphQLInputObjectType({\n ...config,\n fields: newFieldConfigMap,\n }));\n }\n }\n }\n return newTypeMap;\n}\nfunction mapArguments(originalTypeMap, schema, schemaMapper) {\n const newTypeMap = {};\n for (const typeName in originalTypeMap) {\n if (!typeName.startsWith('__')) {\n const originalType = originalTypeMap[typeName];\n if (!isObjectType(originalType) && !isInterfaceType(originalType)) {\n newTypeMap[typeName] = originalType;\n continue;\n }\n const argumentMapper = getArgumentMapper(schemaMapper);\n if (argumentMapper == null) {\n newTypeMap[typeName] = originalType;\n continue;\n }\n const config = originalType.toConfig();\n const originalFieldConfigMap = config.fields;\n const newFieldConfigMap = {};\n for (const fieldName in originalFieldConfigMap) {\n const originalFieldConfig = originalFieldConfigMap[fieldName];\n const originalArgumentConfigMap = originalFieldConfig.args;\n if (originalArgumentConfigMap == null) {\n newFieldConfigMap[fieldName] = originalFieldConfig;\n continue;\n }\n const argumentNames = Object.keys(originalArgumentConfigMap);\n if (!argumentNames.length) {\n newFieldConfigMap[fieldName] = originalFieldConfig;\n continue;\n }\n const newArgumentConfigMap = {};\n for (const argumentName of argumentNames) {\n const originalArgumentConfig = originalArgumentConfigMap[argumentName];\n const mappedArgument = argumentMapper(originalArgumentConfig, fieldName, typeName, schema);\n if (mappedArgument === undefined) {\n newArgumentConfigMap[argumentName] = originalArgumentConfig;\n }\n else if (Array.isArray(mappedArgument)) {\n const [newArgumentName, newArgumentConfig] = mappedArgument;\n newArgumentConfigMap[newArgumentName] = newArgumentConfig;\n }\n else if (mappedArgument !== null) {\n newArgumentConfigMap[argumentName] = mappedArgument;\n }\n }\n newFieldConfigMap[fieldName] = {\n ...originalFieldConfig,\n args: newArgumentConfigMap,\n };\n }\n if (isObjectType(originalType)) {\n newTypeMap[typeName] = new GraphQLObjectType({\n ...config,\n fields: newFieldConfigMap,\n });\n }\n else if (isInterfaceType(originalType)) {\n newTypeMap[typeName] = new GraphQLInterfaceType({\n ...config,\n fields: newFieldConfigMap,\n });\n }\n else {\n newTypeMap[typeName] = new GraphQLInputObjectType({\n ...config,\n fields: newFieldConfigMap,\n });\n }\n }\n }\n return newTypeMap;\n}\nfunction mapDirectives(originalDirectives, schema, schemaMapper) {\n const directiveMapper = getDirectiveMapper(schemaMapper);\n if (directiveMapper == null) {\n return originalDirectives.slice();\n }\n const newDirectives = [];\n for (const directive of originalDirectives) {\n const mappedDirective = directiveMapper(directive, schema);\n if (mappedDirective === undefined) {\n newDirectives.push(directive);\n }\n else if (mappedDirective !== null) {\n newDirectives.push(mappedDirective);\n }\n }\n return newDirectives;\n}\nfunction getTypeSpecifiers(schema, typeName) {\n var _a, _b, _c;\n const type = schema.getType(typeName);\n const specifiers = [MapperKind.TYPE];\n if (isObjectType(type)) {\n specifiers.push(MapperKind.COMPOSITE_TYPE, MapperKind.OBJECT_TYPE);\n if (typeName === ((_a = schema.getQueryType()) === null || _a === void 0 ? void 0 : _a.name)) {\n specifiers.push(MapperKind.ROOT_OBJECT, MapperKind.QUERY);\n }\n else if (typeName === ((_b = schema.getMutationType()) === null || _b === void 0 ? void 0 : _b.name)) {\n specifiers.push(MapperKind.ROOT_OBJECT, MapperKind.MUTATION);\n }\n else if (typeName === ((_c = schema.getSubscriptionType()) === null || _c === void 0 ? void 0 : _c.name)) {\n specifiers.push(MapperKind.ROOT_OBJECT, MapperKind.SUBSCRIPTION);\n }\n }\n else if (isInputObjectType(type)) {\n specifiers.push(MapperKind.INPUT_OBJECT_TYPE);\n }\n else if (isInterfaceType(type)) {\n specifiers.push(MapperKind.COMPOSITE_TYPE, MapperKind.ABSTRACT_TYPE, MapperKind.INTERFACE_TYPE);\n }\n else if (isUnionType(type)) {\n specifiers.push(MapperKind.COMPOSITE_TYPE, MapperKind.ABSTRACT_TYPE, MapperKind.UNION_TYPE);\n }\n else if (isEnumType(type)) {\n specifiers.push(MapperKind.ENUM_TYPE);\n }\n else if (isScalarType(type)) {\n specifiers.push(MapperKind.SCALAR_TYPE);\n }\n return specifiers;\n}\nfunction getTypeMapper(schema, schemaMapper, typeName) {\n const specifiers = getTypeSpecifiers(schema, typeName);\n let typeMapper;\n const stack = [...specifiers];\n while (!typeMapper && stack.length > 0) {\n // It is safe to use the ! operator here as we check the length.\n const next = stack.pop();\n typeMapper = schemaMapper[next];\n }\n return typeMapper != null ? typeMapper : null;\n}\nfunction getFieldSpecifiers(schema, typeName) {\n var _a, _b, _c;\n const type = schema.getType(typeName);\n const specifiers = [MapperKind.FIELD];\n if (isObjectType(type)) {\n specifiers.push(MapperKind.COMPOSITE_FIELD, MapperKind.OBJECT_FIELD);\n if (typeName === ((_a = schema.getQueryType()) === null || _a === void 0 ? void 0 : _a.name)) {\n specifiers.push(MapperKind.ROOT_FIELD, MapperKind.QUERY_ROOT_FIELD);\n }\n else if (typeName === ((_b = schema.getMutationType()) === null || _b === void 0 ? void 0 : _b.name)) {\n specifiers.push(MapperKind.ROOT_FIELD, MapperKind.MUTATION_ROOT_FIELD);\n }\n else if (typeName === ((_c = schema.getSubscriptionType()) === null || _c === void 0 ? void 0 : _c.name)) {\n specifiers.push(MapperKind.ROOT_FIELD, MapperKind.SUBSCRIPTION_ROOT_FIELD);\n }\n }\n else if (isInterfaceType(type)) {\n specifiers.push(MapperKind.COMPOSITE_FIELD, MapperKind.INTERFACE_FIELD);\n }\n else if (isInputObjectType(type)) {\n specifiers.push(MapperKind.INPUT_OBJECT_FIELD);\n }\n return specifiers;\n}\nfunction getFieldMapper(schema, schemaMapper, typeName) {\n const specifiers = getFieldSpecifiers(schema, typeName);\n let fieldMapper;\n const stack = [...specifiers];\n while (!fieldMapper && stack.length > 0) {\n // It is safe to use the ! operator here as we check the length.\n const next = stack.pop();\n // TODO: fix this as unknown cast\n fieldMapper = schemaMapper[next];\n }\n return fieldMapper !== null && fieldMapper !== void 0 ? fieldMapper : null;\n}\nfunction getArgumentMapper(schemaMapper) {\n const argumentMapper = schemaMapper[MapperKind.ARGUMENT];\n return argumentMapper != null ? argumentMapper : null;\n}\nfunction getDirectiveMapper(schemaMapper) {\n const directiveMapper = schemaMapper[MapperKind.DIRECTIVE];\n return directiveMapper != null ? directiveMapper : null;\n}\nfunction getEnumValueMapper(schemaMapper) {\n const enumValueMapper = schemaMapper[MapperKind.ENUM_VALUE];\n return enumValueMapper != null ? enumValueMapper : null;\n}\nexport function correctASTNodes(type) {\n if (isObjectType(type)) {\n const config = type.toConfig();\n if (config.astNode != null) {\n const fields = [];\n for (const fieldName in config.fields) {\n const fieldConfig = config.fields[fieldName];\n if (fieldConfig.astNode != null) {\n fields.push(fieldConfig.astNode);\n }\n }\n config.astNode = {\n ...config.astNode,\n kind: Kind.OBJECT_TYPE_DEFINITION,\n fields,\n };\n }\n if (config.extensionASTNodes != null) {\n config.extensionASTNodes = config.extensionASTNodes.map(node => ({\n ...node,\n kind: Kind.OBJECT_TYPE_EXTENSION,\n fields: undefined,\n }));\n }\n return new GraphQLObjectType(config);\n }\n else if (isInterfaceType(type)) {\n const config = type.toConfig();\n if (config.astNode != null) {\n const fields = [];\n for (const fieldName in config.fields) {\n const fieldConfig = config.fields[fieldName];\n if (fieldConfig.astNode != null) {\n fields.push(fieldConfig.astNode);\n }\n }\n config.astNode = {\n ...config.astNode,\n kind: Kind.INTERFACE_TYPE_DEFINITION,\n fields,\n };\n }\n if (config.extensionASTNodes != null) {\n config.extensionASTNodes = config.extensionASTNodes.map(node => ({\n ...node,\n kind: Kind.INTERFACE_TYPE_EXTENSION,\n fields: undefined,\n }));\n }\n return new GraphQLInterfaceType(config);\n }\n else if (isInputObjectType(type)) {\n const config = type.toConfig();\n if (config.astNode != null) {\n const fields = [];\n for (const fieldName in config.fields) {\n const fieldConfig = config.fields[fieldName];\n if (fieldConfig.astNode != null) {\n fields.push(fieldConfig.astNode);\n }\n }\n config.astNode = {\n ...config.astNode,\n kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,\n fields,\n };\n }\n if (config.extensionASTNodes != null) {\n config.extensionASTNodes = config.extensionASTNodes.map(node => ({\n ...node,\n kind: Kind.INPUT_OBJECT_TYPE_EXTENSION,\n fields: undefined,\n }));\n }\n return new GraphQLInputObjectType(config);\n }\n else if (isEnumType(type)) {\n const config = type.toConfig();\n if (config.astNode != null) {\n const values = [];\n for (const enumKey in config.values) {\n const enumValueConfig = config.values[enumKey];\n if (enumValueConfig.astNode != null) {\n values.push(enumValueConfig.astNode);\n }\n }\n config.astNode = {\n ...config.astNode,\n values,\n };\n }\n if (config.extensionASTNodes != null) {\n config.extensionASTNodes = config.extensionASTNodes.map(node => ({\n ...node,\n values: undefined,\n }));\n }\n return new GraphQLEnumType(config);\n }\n else {\n return type;\n }\n}\n", "import { GraphQLList, GraphQLNonNull, isNamedType, isObjectType, isInterfaceType, isUnionType, isInputObjectType, isLeafType, isListType, isNonNullType, } from 'graphql';\n// Update any references to named schema types that disagree with the named\n// types found in schema.getTypeMap().\n//\n// healSchema and its callers (visitSchema/visitSchemaDirectives) all modify the schema in place.\n// Therefore, private variables (such as the stored implementation map and the proper root types)\n// are not updated.\n//\n// If this causes issues, the schema could be more aggressively healed as follows:\n//\n// healSchema(schema);\n// const config = schema.toConfig()\n// const healedSchema = new GraphQLSchema({\n// ...config,\n// query: schema.getType(''),\n// mutation: schema.getType(''),\n// subscription: schema.getType(''),\n// });\n//\n// One can then also -- if necessary -- assign the correct private variables to the initial schema\n// as follows:\n// Object.assign(schema, healedSchema);\n//\n// These steps are not taken automatically to preserve backwards compatibility with graphql-tools v4.\n// See https://github.com/ardatan/graphql-tools/issues/1462\n//\n// They were briefly taken in v5, but can now be phased out as they were only required when other\n// areas of the codebase were using healSchema and visitSchema more extensively.\n//\nexport function healSchema(schema) {\n healTypes(schema.getTypeMap(), schema.getDirectives());\n return schema;\n}\nexport function healTypes(originalTypeMap, directives) {\n const actualNamedTypeMap = Object.create(null);\n // If any of the .name properties of the GraphQLNamedType objects in\n // schema.getTypeMap() have changed, the keys of the type map need to\n // be updated accordingly.\n for (const typeName in originalTypeMap) {\n const namedType = originalTypeMap[typeName];\n if (namedType == null || typeName.startsWith('__')) {\n continue;\n }\n const actualName = namedType.name;\n if (actualName.startsWith('__')) {\n continue;\n }\n if (actualNamedTypeMap[actualName] != null) {\n console.warn(`Duplicate schema type name ${actualName} found; keeping the existing one found in the schema`);\n continue;\n }\n actualNamedTypeMap[actualName] = namedType;\n // Note: we are deliberately leaving namedType in the schema by its\n // original name (which might be different from actualName), so that\n // references by that name can be healed.\n }\n // Now add back every named type by its actual name.\n for (const typeName in actualNamedTypeMap) {\n const namedType = actualNamedTypeMap[typeName];\n originalTypeMap[typeName] = namedType;\n }\n // Directive declaration argument types can refer to named types.\n for (const decl of directives) {\n decl.args = decl.args.filter(arg => {\n arg.type = healType(arg.type);\n return arg.type !== null;\n });\n }\n for (const typeName in originalTypeMap) {\n const namedType = originalTypeMap[typeName];\n // Heal all named types, except for dangling references, kept only to redirect.\n if (!typeName.startsWith('__') && typeName in actualNamedTypeMap) {\n if (namedType != null) {\n healNamedType(namedType);\n }\n }\n }\n for (const typeName in originalTypeMap) {\n if (!typeName.startsWith('__') && !(typeName in actualNamedTypeMap)) {\n delete originalTypeMap[typeName];\n }\n }\n function healNamedType(type) {\n if (isObjectType(type)) {\n healFields(type);\n healInterfaces(type);\n return;\n }\n else if (isInterfaceType(type)) {\n healFields(type);\n if ('getInterfaces' in type) {\n healInterfaces(type);\n }\n return;\n }\n else if (isUnionType(type)) {\n healUnderlyingTypes(type);\n return;\n }\n else if (isInputObjectType(type)) {\n healInputFields(type);\n return;\n }\n else if (isLeafType(type)) {\n return;\n }\n throw new Error(`Unexpected schema type: ${type}`);\n }\n function healFields(type) {\n const fieldMap = type.getFields();\n for (const [key, field] of Object.entries(fieldMap)) {\n field.args\n .map(arg => {\n arg.type = healType(arg.type);\n return arg.type === null ? null : arg;\n })\n .filter(Boolean);\n field.type = healType(field.type);\n if (field.type === null) {\n delete fieldMap[key];\n }\n }\n }\n function healInterfaces(type) {\n if ('getInterfaces' in type) {\n const interfaces = type.getInterfaces();\n interfaces.push(...interfaces\n .splice(0)\n .map(iface => healType(iface))\n .filter(Boolean));\n }\n }\n function healInputFields(type) {\n const fieldMap = type.getFields();\n for (const [key, field] of Object.entries(fieldMap)) {\n field.type = healType(field.type);\n if (field.type === null) {\n delete fieldMap[key];\n }\n }\n }\n function healUnderlyingTypes(type) {\n const types = type.getTypes();\n types.push(...types\n .splice(0)\n .map(t => healType(t))\n .filter(Boolean));\n }\n function healType(type) {\n // Unwrap the two known wrapper types\n if (isListType(type)) {\n const healedType = healType(type.ofType);\n return healedType != null ? new GraphQLList(healedType) : null;\n }\n else if (isNonNullType(type)) {\n const healedType = healType(type.ofType);\n return healedType != null ? new GraphQLNonNull(healedType) : null;\n }\n else if (isNamedType(type)) {\n // If a type annotation on a field or an argument or a union member is\n // any `GraphQLNamedType` with a `name`, then it must end up identical\n // to `schema.getType(name)`, since `schema.getTypeMap()` is the source\n // of truth for all named schema types.\n // Note that new types can still be simply added by adding a field, as\n // the official type will be undefined, not null.\n const officialType = originalTypeMap[type.name];\n if (officialType && type !== officialType) {\n return officialType;\n }\n }\n return type;\n }\n}\n", "import { getNamedType, isObjectType } from 'graphql';\nexport function forEachField(schema, fn) {\n const typeMap = schema.getTypeMap();\n for (const typeName in typeMap) {\n const type = typeMap[typeName];\n // TODO: maybe have an option to include these?\n if (!getNamedType(type).name.startsWith('__') && isObjectType(type)) {\n const fields = type.getFields();\n for (const fieldName in fields) {\n const field = fields[fieldName];\n fn(field, typeName, fieldName);\n }\n }\n }\n}\n", "import { getNamedType, isObjectType, isInputObjectType } from 'graphql';\nexport function forEachDefaultValue(schema, fn) {\n const typeMap = schema.getTypeMap();\n for (const typeName in typeMap) {\n const type = typeMap[typeName];\n if (!getNamedType(type).name.startsWith('__')) {\n if (isObjectType(type)) {\n const fields = type.getFields();\n for (const fieldName in fields) {\n const field = fields[fieldName];\n for (const arg of field.args) {\n arg.defaultValue = fn(arg.type, arg.defaultValue);\n }\n }\n }\n else if (isInputObjectType(type)) {\n const fields = type.getFields();\n for (const fieldName in fields) {\n const field = fields[fieldName];\n field.defaultValue = fn(field.type, field.defaultValue);\n }\n }\n }\n }\n}\n", "import { isSome } from './helpers.js';\nexport function mergeDeep(sources, respectPrototype = false) {\n const target = sources[0] || {};\n const output = {};\n if (respectPrototype) {\n Object.setPrototypeOf(output, Object.create(Object.getPrototypeOf(target)));\n }\n for (const source of sources) {\n if (isObject(target) && isObject(source)) {\n if (respectPrototype) {\n const outputPrototype = Object.getPrototypeOf(output);\n const sourcePrototype = Object.getPrototypeOf(source);\n if (sourcePrototype) {\n for (const key of Object.getOwnPropertyNames(sourcePrototype)) {\n const descriptor = Object.getOwnPropertyDescriptor(sourcePrototype, key);\n if (isSome(descriptor)) {\n Object.defineProperty(outputPrototype, key, descriptor);\n }\n }\n }\n }\n for (const key in source) {\n if (isObject(source[key])) {\n if (!(key in output)) {\n Object.assign(output, { [key]: source[key] });\n }\n else {\n output[key] = mergeDeep([output[key], source[key]], respectPrototype);\n }\n }\n else {\n Object.assign(output, { [key]: source[key] });\n }\n }\n }\n }\n return output;\n}\nfunction isObject(item) {\n return item && typeof item === 'object' && !Array.isArray(item);\n}\n", "export function isAsyncIterable(value) {\n return (typeof value === 'object' &&\n value != null &&\n Symbol.asyncIterator in value &&\n typeof value[Symbol.asyncIterator] === 'function');\n}\n", "import { Kind } from 'graphql';\nexport function isDocumentNode(object) {\n return object && typeof object === 'object' && 'kind' in object && object.kind === Kind.DOCUMENT;\n}\n", "import { getNamedType, isScalarType } from 'graphql';\nimport { forEachField } from '@graphql-tools/utils';\nexport function assertResolversPresent(schema, resolverValidationOptions = {}) {\n const { requireResolversForArgs, requireResolversForNonScalar, requireResolversForAllFields } = resolverValidationOptions;\n if (requireResolversForAllFields && (requireResolversForArgs || requireResolversForNonScalar)) {\n throw new TypeError('requireResolversForAllFields takes precedence over the more specific assertions. ' +\n 'Please configure either requireResolversForAllFields or requireResolversForArgs / ' +\n 'requireResolversForNonScalar, but not a combination of them.');\n }\n forEachField(schema, (field, typeName, fieldName) => {\n // requires a resolver for *every* field.\n if (requireResolversForAllFields) {\n expectResolver('requireResolversForAllFields', requireResolversForAllFields, field, typeName, fieldName);\n }\n // requires a resolver on every field that has arguments\n if (requireResolversForArgs && field.args.length > 0) {\n expectResolver('requireResolversForArgs', requireResolversForArgs, field, typeName, fieldName);\n }\n // requires a resolver on every field that returns a non-scalar type\n if (requireResolversForNonScalar !== 'ignore' && !isScalarType(getNamedType(field.type))) {\n expectResolver('requireResolversForNonScalar', requireResolversForNonScalar, field, typeName, fieldName);\n }\n });\n}\nfunction expectResolver(validator, behavior, field, typeName, fieldName) {\n if (!field.resolve) {\n const message = `Resolver missing for \"${typeName}.${fieldName}\".\nTo disable this validator, use:\n resolverValidationOptions: {\n ${validator}: 'ignore'\n }`;\n if (behavior === 'error') {\n throw new Error(message);\n }\n if (behavior === 'warn') {\n console.warn(message);\n }\n return;\n }\n if (typeof field.resolve !== 'function') {\n throw new Error(`Resolver \"${typeName}.${fieldName}\" must be a function`);\n }\n}\n", "import { MapperKind, mapSchema } from '@graphql-tools/utils';\n// If we have any union or interface types throw if no there is no resolveType resolver\nexport function checkForResolveTypeResolver(schema, requireResolversForResolveType) {\n mapSchema(schema, {\n [MapperKind.ABSTRACT_TYPE]: type => {\n if (!type.resolveType) {\n const message = `Type \"${type.name}\" is missing a \"__resolveType\" resolver. Pass 'ignore' into ` +\n '\"resolverValidationOptions.requireResolversForResolveType\" to disable this error.';\n if (requireResolversForResolveType === 'error') {\n throw new Error(message);\n }\n if (requireResolversForResolveType === 'warn') {\n console.warn(message);\n }\n }\n return undefined;\n },\n });\n}\n", "export function extendResolversFromInterfaces(schema, resolvers) {\n const extendedResolvers = {};\n const typeMap = schema.getTypeMap();\n for (const typeName in typeMap) {\n const type = typeMap[typeName];\n if ('getInterfaces' in type) {\n extendedResolvers[typeName] = {};\n for (const iFace of type.getInterfaces()) {\n if (resolvers[iFace.name]) {\n for (const fieldName in resolvers[iFace.name]) {\n if (fieldName === '__isTypeOf' || !fieldName.startsWith('__')) {\n extendedResolvers[typeName][fieldName] = resolvers[iFace.name][fieldName];\n }\n }\n }\n }\n const typeResolvers = resolvers[typeName];\n extendedResolvers[typeName] = {\n ...extendedResolvers[typeName],\n ...typeResolvers,\n };\n }\n else {\n const typeResolvers = resolvers[typeName];\n if (typeResolvers != null) {\n extendedResolvers[typeName] = typeResolvers;\n }\n }\n }\n return extendedResolvers;\n}\n", "import { GraphQLEnumType, GraphQLScalarType, GraphQLUnionType, GraphQLInterfaceType, GraphQLObjectType, isSpecifiedScalarType, isScalarType, isEnumType, isUnionType, isInterfaceType, isObjectType, } from 'graphql';\nimport { mapSchema, MapperKind, forEachDefaultValue, serializeInputValue, healSchema, parseInputValue, forEachField, } from '@graphql-tools/utils';\nimport { checkForResolveTypeResolver } from './checkForResolveTypeResolver.js';\nimport { extendResolversFromInterfaces } from './extendResolversFromInterfaces.js';\nexport function addResolversToSchema({ schema, resolvers: inputResolvers, defaultFieldResolver, resolverValidationOptions = {}, inheritResolversFromInterfaces = false, updateResolversInPlace = false, }) {\n const { requireResolversToMatchSchema = 'error', requireResolversForResolveType } = resolverValidationOptions;\n const resolvers = inheritResolversFromInterfaces\n ? extendResolversFromInterfaces(schema, inputResolvers)\n : inputResolvers;\n for (const typeName in resolvers) {\n const resolverValue = resolvers[typeName];\n const resolverType = typeof resolverValue;\n if (resolverType !== 'object') {\n throw new Error(`\"${typeName}\" defined in resolvers, but has invalid value \"${resolverValue}\". The resolver's value must be of type object.`);\n }\n const type = schema.getType(typeName);\n if (type == null) {\n if (requireResolversToMatchSchema === 'ignore') {\n continue;\n }\n throw new Error(`\"${typeName}\" defined in resolvers, but not in schema`);\n }\n else if (isSpecifiedScalarType(type)) {\n // allow -- without recommending -- overriding of specified scalar types\n for (const fieldName in resolverValue) {\n if (fieldName.startsWith('__')) {\n type[fieldName.substring(2)] = resolverValue[fieldName];\n }\n else {\n type[fieldName] = resolverValue[fieldName];\n }\n }\n }\n else if (isEnumType(type)) {\n const values = type.getValues();\n for (const fieldName in resolverValue) {\n if (!fieldName.startsWith('__') &&\n !values.some(value => value.name === fieldName) &&\n requireResolversToMatchSchema &&\n requireResolversToMatchSchema !== 'ignore') {\n throw new Error(`${type.name}.${fieldName} was defined in resolvers, but not present within ${type.name}`);\n }\n }\n }\n else if (isUnionType(type)) {\n for (const fieldName in resolverValue) {\n if (!fieldName.startsWith('__') &&\n requireResolversToMatchSchema &&\n requireResolversToMatchSchema !== 'ignore') {\n throw new Error(`${type.name}.${fieldName} was defined in resolvers, but ${type.name} is not an object or interface type`);\n }\n }\n }\n else if (isObjectType(type) || isInterfaceType(type)) {\n for (const fieldName in resolverValue) {\n if (!fieldName.startsWith('__')) {\n const fields = type.getFields();\n const field = fields[fieldName];\n if (field == null) {\n // Field present in resolver but not in schema\n if (requireResolversToMatchSchema && requireResolversToMatchSchema !== 'ignore') {\n throw new Error(`${typeName}.${fieldName} defined in resolvers, but not in schema`);\n }\n }\n else {\n // Field present in both the resolver and schema\n const fieldResolve = resolverValue[fieldName];\n if (typeof fieldResolve !== 'function' && typeof fieldResolve !== 'object') {\n throw new Error(`Resolver ${typeName}.${fieldName} must be object or function`);\n }\n }\n }\n }\n }\n }\n schema = updateResolversInPlace\n ? addResolversToExistingSchema(schema, resolvers, defaultFieldResolver)\n : createNewSchemaWithResolvers(schema, resolvers, defaultFieldResolver);\n if (requireResolversForResolveType && requireResolversForResolveType !== 'ignore') {\n checkForResolveTypeResolver(schema, requireResolversForResolveType);\n }\n return schema;\n}\nfunction addResolversToExistingSchema(schema, resolvers, defaultFieldResolver) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\n const typeMap = schema.getTypeMap();\n for (const typeName in resolvers) {\n const type = schema.getType(typeName);\n const resolverValue = resolvers[typeName];\n if (isScalarType(type)) {\n for (const fieldName in resolverValue) {\n if (fieldName.startsWith('__')) {\n type[fieldName.substring(2)] = resolverValue[fieldName];\n }\n else if (fieldName === 'astNode' && type.astNode != null) {\n type.astNode = {\n ...type.astNode,\n description: (_b = (_a = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : type.astNode.description,\n directives: ((_c = type.astNode.directives) !== null && _c !== void 0 ? _c : []).concat((_e = (_d = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _d === void 0 ? void 0 : _d.directives) !== null && _e !== void 0 ? _e : []),\n };\n }\n else if (fieldName === 'extensionASTNodes' && type.extensionASTNodes != null) {\n type.extensionASTNodes = type.extensionASTNodes.concat((_f = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.extensionASTNodes) !== null && _f !== void 0 ? _f : []);\n }\n else if (fieldName === 'extensions' &&\n type.extensions != null &&\n resolverValue.extensions != null) {\n type.extensions = Object.assign(Object.create(null), type.extensions, resolverValue.extensions);\n }\n else {\n type[fieldName] = resolverValue[fieldName];\n }\n }\n }\n else if (isEnumType(type)) {\n const config = type.toConfig();\n const enumValueConfigMap = config.values;\n for (const fieldName in resolverValue) {\n if (fieldName.startsWith('__')) {\n config[fieldName.substring(2)] = resolverValue[fieldName];\n }\n else if (fieldName === 'astNode' && config.astNode != null) {\n config.astNode = {\n ...config.astNode,\n description: (_h = (_g = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _g === void 0 ? void 0 : _g.description) !== null && _h !== void 0 ? _h : config.astNode.description,\n directives: ((_j = config.astNode.directives) !== null && _j !== void 0 ? _j : []).concat((_l = (_k = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _k === void 0 ? void 0 : _k.directives) !== null && _l !== void 0 ? _l : []),\n };\n }\n else if (fieldName === 'extensionASTNodes' && config.extensionASTNodes != null) {\n config.extensionASTNodes = config.extensionASTNodes.concat((_m = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.extensionASTNodes) !== null && _m !== void 0 ? _m : []);\n }\n else if (fieldName === 'extensions' &&\n type.extensions != null &&\n resolverValue.extensions != null) {\n type.extensions = Object.assign(Object.create(null), type.extensions, resolverValue.extensions);\n }\n else if (enumValueConfigMap[fieldName]) {\n enumValueConfigMap[fieldName].value = resolverValue[fieldName];\n }\n }\n typeMap[typeName] = new GraphQLEnumType(config);\n }\n else if (isUnionType(type)) {\n for (const fieldName in resolverValue) {\n if (fieldName.startsWith('__')) {\n type[fieldName.substring(2)] = resolverValue[fieldName];\n }\n }\n }\n else if (isObjectType(type) || isInterfaceType(type)) {\n for (const fieldName in resolverValue) {\n if (fieldName.startsWith('__')) {\n // this is for isTypeOf and resolveType and all the other stuff.\n type[fieldName.substring(2)] = resolverValue[fieldName];\n continue;\n }\n const fields = type.getFields();\n const field = fields[fieldName];\n if (field != null) {\n const fieldResolve = resolverValue[fieldName];\n if (typeof fieldResolve === 'function') {\n // for convenience. Allows shorter syntax in resolver definition file\n field.resolve = fieldResolve.bind(resolverValue);\n }\n else {\n setFieldProperties(field, fieldResolve);\n }\n }\n }\n }\n }\n // serialize all default values prior to healing fields with new scalar/enum types.\n forEachDefaultValue(schema, serializeInputValue);\n // schema may have new scalar/enum types that require healing\n healSchema(schema);\n // reparse all default values with new parsing functions.\n forEachDefaultValue(schema, parseInputValue);\n if (defaultFieldResolver != null) {\n forEachField(schema, field => {\n if (!field.resolve) {\n field.resolve = defaultFieldResolver;\n }\n });\n }\n return schema;\n}\nfunction createNewSchemaWithResolvers(schema, resolvers, defaultFieldResolver) {\n schema = mapSchema(schema, {\n [MapperKind.SCALAR_TYPE]: type => {\n var _a, _b, _c, _d, _e, _f;\n const config = type.toConfig();\n const resolverValue = resolvers[type.name];\n if (!isSpecifiedScalarType(type) && resolverValue != null) {\n for (const fieldName in resolverValue) {\n if (fieldName.startsWith('__')) {\n config[fieldName.substring(2)] = resolverValue[fieldName];\n }\n else if (fieldName === 'astNode' && config.astNode != null) {\n config.astNode = {\n ...config.astNode,\n description: (_b = (_a = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : config.astNode.description,\n directives: ((_c = config.astNode.directives) !== null && _c !== void 0 ? _c : []).concat((_e = (_d = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _d === void 0 ? void 0 : _d.directives) !== null && _e !== void 0 ? _e : []),\n };\n }\n else if (fieldName === 'extensionASTNodes' && config.extensionASTNodes != null) {\n config.extensionASTNodes = config.extensionASTNodes.concat((_f = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.extensionASTNodes) !== null && _f !== void 0 ? _f : []);\n }\n else if (fieldName === 'extensions' &&\n config.extensions != null &&\n resolverValue.extensions != null) {\n config.extensions = Object.assign(Object.create(null), type.extensions, resolverValue.extensions);\n }\n else {\n config[fieldName] = resolverValue[fieldName];\n }\n }\n return new GraphQLScalarType(config);\n }\n },\n [MapperKind.ENUM_TYPE]: type => {\n var _a, _b, _c, _d, _e, _f;\n const resolverValue = resolvers[type.name];\n const config = type.toConfig();\n const enumValueConfigMap = config.values;\n if (resolverValue != null) {\n for (const fieldName in resolverValue) {\n if (fieldName.startsWith('__')) {\n config[fieldName.substring(2)] = resolverValue[fieldName];\n }\n else if (fieldName === 'astNode' && config.astNode != null) {\n config.astNode = {\n ...config.astNode,\n description: (_b = (_a = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : config.astNode.description,\n directives: ((_c = config.astNode.directives) !== null && _c !== void 0 ? _c : []).concat((_e = (_d = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _d === void 0 ? void 0 : _d.directives) !== null && _e !== void 0 ? _e : []),\n };\n }\n else if (fieldName === 'extensionASTNodes' && config.extensionASTNodes != null) {\n config.extensionASTNodes = config.extensionASTNodes.concat((_f = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.extensionASTNodes) !== null && _f !== void 0 ? _f : []);\n }\n else if (fieldName === 'extensions' &&\n config.extensions != null &&\n resolverValue.extensions != null) {\n config.extensions = Object.assign(Object.create(null), type.extensions, resolverValue.extensions);\n }\n else if (enumValueConfigMap[fieldName]) {\n enumValueConfigMap[fieldName].value = resolverValue[fieldName];\n }\n }\n return new GraphQLEnumType(config);\n }\n },\n [MapperKind.UNION_TYPE]: type => {\n const resolverValue = resolvers[type.name];\n if (resolverValue != null) {\n const config = type.toConfig();\n if (resolverValue['__resolveType']) {\n config.resolveType = resolverValue['__resolveType'];\n }\n return new GraphQLUnionType(config);\n }\n },\n [MapperKind.OBJECT_TYPE]: type => {\n const resolverValue = resolvers[type.name];\n if (resolverValue != null) {\n const config = type.toConfig();\n if (resolverValue['__isTypeOf']) {\n config.isTypeOf = resolverValue['__isTypeOf'];\n }\n return new GraphQLObjectType(config);\n }\n },\n [MapperKind.INTERFACE_TYPE]: type => {\n const resolverValue = resolvers[type.name];\n if (resolverValue != null) {\n const config = type.toConfig();\n if (resolverValue['__resolveType']) {\n config.resolveType = resolverValue['__resolveType'];\n }\n return new GraphQLInterfaceType(config);\n }\n },\n [MapperKind.COMPOSITE_FIELD]: (fieldConfig, fieldName, typeName) => {\n const resolverValue = resolvers[typeName];\n if (resolverValue != null) {\n const fieldResolve = resolverValue[fieldName];\n if (fieldResolve != null) {\n const newFieldConfig = { ...fieldConfig };\n if (typeof fieldResolve === 'function') {\n // for convenience. Allows shorter syntax in resolver definition file\n newFieldConfig.resolve = fieldResolve.bind(resolverValue);\n }\n else {\n setFieldProperties(newFieldConfig, fieldResolve);\n }\n return newFieldConfig;\n }\n }\n },\n });\n if (defaultFieldResolver != null) {\n schema = mapSchema(schema, {\n [MapperKind.OBJECT_FIELD]: fieldConfig => ({\n ...fieldConfig,\n resolve: fieldConfig.resolve != null ? fieldConfig.resolve : defaultFieldResolver,\n }),\n });\n }\n return schema;\n}\nfunction setFieldProperties(field, propertiesObj) {\n for (const propertyName in propertiesObj) {\n field[propertyName] = propertiesObj[propertyName];\n }\n}\n", "import { mergeDeep } from '@graphql-tools/utils';\n/**\n * Deep merges multiple resolver definition objects into a single definition.\n * @param resolversDefinitions Resolver definitions to be merged\n * @param options Additional options\n *\n * ```js\n * const { mergeResolvers } = require('@graphql-tools/merge');\n * const clientResolver = require('./clientResolver');\n * const productResolver = require('./productResolver');\n *\n * const resolvers = mergeResolvers([\n * clientResolver,\n * productResolver,\n * ]);\n * ```\n *\n * If you don't want to manually create the array of resolver objects, you can\n * also use this function along with loadFiles:\n *\n * ```js\n * const path = require('path');\n * const { mergeResolvers } = require('@graphql-tools/merge');\n * const { loadFilesSync } = require('@graphql-tools/load-files');\n *\n * const resolversArray = loadFilesSync(path.join(__dirname, './resolvers'));\n *\n * const resolvers = mergeResolvers(resolversArray)\n * ```\n */\nexport function mergeResolvers(resolversDefinitions, options) {\n if (!resolversDefinitions || (Array.isArray(resolversDefinitions) && resolversDefinitions.length === 0)) {\n return {};\n }\n if (!Array.isArray(resolversDefinitions)) {\n return resolversDefinitions;\n }\n if (resolversDefinitions.length === 1) {\n return resolversDefinitions[0] || {};\n }\n const resolvers = new Array();\n for (let resolversDefinition of resolversDefinitions) {\n if (Array.isArray(resolversDefinition)) {\n resolversDefinition = mergeResolvers(resolversDefinition);\n }\n if (typeof resolversDefinition === 'object' && resolversDefinition) {\n resolvers.push(resolversDefinition);\n }\n }\n const result = mergeDeep(resolvers, true);\n if (options === null || options === void 0 ? void 0 : options.exclusions) {\n for (const exclusion of options.exclusions) {\n const [typeName, fieldName] = exclusion.split('.');\n if (!fieldName || fieldName === '*') {\n delete result[typeName];\n }\n else if (result[typeName]) {\n delete result[typeName][fieldName];\n }\n }\n }\n return result;\n}\n", "import { compareNodes, isSome } from '@graphql-tools/utils';\nexport function mergeArguments(args1, args2, config) {\n const result = deduplicateArguments([...args2, ...args1].filter(isSome));\n if (config && config.sort) {\n result.sort(compareNodes);\n }\n return result;\n}\nfunction deduplicateArguments(args) {\n return args.reduce((acc, current) => {\n const dup = acc.find(arg => arg.name.value === current.name.value);\n if (!dup) {\n return acc.concat([current]);\n }\n return acc;\n }, []);\n}\n", "import { print } from 'graphql';\nimport { isSome } from '@graphql-tools/utils';\nfunction directiveAlreadyExists(directivesArr, otherDirective) {\n return !!directivesArr.find(directive => directive.name.value === otherDirective.name.value);\n}\nfunction nameAlreadyExists(name, namesArr) {\n return namesArr.some(({ value }) => value === name.value);\n}\nfunction mergeArguments(a1, a2) {\n const result = [...a2];\n for (const argument of a1) {\n const existingIndex = result.findIndex(a => a.name.value === argument.name.value);\n if (existingIndex > -1) {\n const existingArg = result[existingIndex];\n if (existingArg.value.kind === 'ListValue') {\n const source = existingArg.value.values;\n const target = argument.value.values;\n // merge values of two lists\n existingArg.value.values = deduplicateLists(source, target, (targetVal, source) => {\n const value = targetVal.value;\n return !value || !source.some((sourceVal) => sourceVal.value === value);\n });\n }\n else {\n existingArg.value = argument.value;\n }\n }\n else {\n result.push(argument);\n }\n }\n return result;\n}\nfunction deduplicateDirectives(directives) {\n return directives\n .map((directive, i, all) => {\n const firstAt = all.findIndex(d => d.name.value === directive.name.value);\n if (firstAt !== i) {\n const dup = all[firstAt];\n directive.arguments = mergeArguments(directive.arguments, dup.arguments);\n return null;\n }\n return directive;\n })\n .filter(isSome);\n}\nexport function mergeDirectives(d1 = [], d2 = [], config) {\n const reverseOrder = config && config.reverseDirectives;\n const asNext = reverseOrder ? d1 : d2;\n const asFirst = reverseOrder ? d2 : d1;\n const result = deduplicateDirectives([...asNext]);\n for (const directive of asFirst) {\n if (directiveAlreadyExists(result, directive)) {\n const existingDirectiveIndex = result.findIndex(d => d.name.value === directive.name.value);\n const existingDirective = result[existingDirectiveIndex];\n result[existingDirectiveIndex].arguments = mergeArguments(directive.arguments || [], existingDirective.arguments || []);\n }\n else {\n result.push(directive);\n }\n }\n return result;\n}\nfunction validateInputs(node, existingNode) {\n const printedNode = print({\n ...node,\n description: undefined,\n });\n const printedExistingNode = print({\n ...existingNode,\n description: undefined,\n });\n // eslint-disable-next-line\n const leaveInputs = new RegExp('(directive @w*d*)|( on .*$)', 'g');\n const sameArguments = printedNode.replace(leaveInputs, '') === printedExistingNode.replace(leaveInputs, '');\n if (!sameArguments) {\n throw new Error(`Unable to merge GraphQL directive \"${node.name.value}\". \\nExisting directive: \\n\\t${printedExistingNode} \\nReceived directive: \\n\\t${printedNode}`);\n }\n}\nexport function mergeDirective(node, existingNode) {\n if (existingNode) {\n validateInputs(node, existingNode);\n return {\n ...node,\n locations: [\n ...existingNode.locations,\n ...node.locations.filter(name => !nameAlreadyExists(name, existingNode.locations)),\n ],\n };\n }\n return node;\n}\nfunction deduplicateLists(source, target, filterFn) {\n return source.concat(target.filter(val => filterFn(val, source)));\n}\n", "import { mergeDirectives } from './directives.js';\nimport { compareNodes } from '@graphql-tools/utils';\nexport function mergeEnumValues(first, second, config) {\n if (config === null || config === void 0 ? void 0 : config.consistentEnumMerge) {\n const reversed = [];\n if (first) {\n reversed.push(...first);\n }\n first = second;\n second = reversed;\n }\n const enumValueMap = new Map();\n if (first) {\n for (const firstValue of first) {\n enumValueMap.set(firstValue.name.value, firstValue);\n }\n }\n if (second) {\n for (const secondValue of second) {\n const enumValue = secondValue.name.value;\n if (enumValueMap.has(enumValue)) {\n const firstValue = enumValueMap.get(enumValue);\n firstValue.description = secondValue.description || firstValue.description;\n firstValue.directives = mergeDirectives(secondValue.directives, firstValue.directives);\n }\n else {\n enumValueMap.set(enumValue, secondValue);\n }\n }\n }\n const result = [...enumValueMap.values()];\n if (config && config.sort) {\n result.sort(compareNodes);\n }\n return result;\n}\n", "import { Kind } from 'graphql';\nimport { mergeDirectives } from './directives.js';\nimport { mergeEnumValues } from './enum-values.js';\nexport function mergeEnum(e1, e2, config) {\n if (e2) {\n return {\n name: e1.name,\n description: e1['description'] || e2['description'],\n kind: (config === null || config === void 0 ? void 0 : config.convertExtensions) || e1.kind === 'EnumTypeDefinition' || e2.kind === 'EnumTypeDefinition'\n ? 'EnumTypeDefinition'\n : 'EnumTypeExtension',\n loc: e1.loc,\n directives: mergeDirectives(e1.directives, e2.directives, config),\n values: mergeEnumValues(e1.values, e2.values, config),\n };\n }\n return (config === null || config === void 0 ? void 0 : config.convertExtensions)\n ? {\n ...e1,\n kind: Kind.ENUM_TYPE_DEFINITION,\n }\n : e1;\n}\n", "import { Source, Kind } from 'graphql';\nexport function isStringTypes(types) {\n return typeof types === 'string';\n}\nexport function isSourceTypes(types) {\n return types instanceof Source;\n}\nexport function extractType(type) {\n let visitedType = type;\n while (visitedType.kind === Kind.LIST_TYPE || visitedType.kind === 'NonNullType') {\n visitedType = visitedType.type;\n }\n return visitedType;\n}\nexport function isWrappingTypeNode(type) {\n return type.kind !== Kind.NAMED_TYPE;\n}\nexport function isListTypeNode(type) {\n return type.kind === Kind.LIST_TYPE;\n}\nexport function isNonNullTypeNode(type) {\n return type.kind === Kind.NON_NULL_TYPE;\n}\nexport function printTypeNode(type) {\n if (isListTypeNode(type)) {\n return `[${printTypeNode(type.type)}]`;\n }\n if (isNonNullTypeNode(type)) {\n return `${printTypeNode(type.type)}!`;\n }\n return type.name.value;\n}\nexport var CompareVal;\n(function (CompareVal) {\n CompareVal[CompareVal[\"A_SMALLER_THAN_B\"] = -1] = \"A_SMALLER_THAN_B\";\n CompareVal[CompareVal[\"A_EQUALS_B\"] = 0] = \"A_EQUALS_B\";\n CompareVal[CompareVal[\"A_GREATER_THAN_B\"] = 1] = \"A_GREATER_THAN_B\";\n})(CompareVal || (CompareVal = {}));\nexport function defaultStringComparator(a, b) {\n if (a == null && b == null) {\n return CompareVal.A_EQUALS_B;\n }\n if (a == null) {\n return CompareVal.A_SMALLER_THAN_B;\n }\n if (b == null) {\n return CompareVal.A_GREATER_THAN_B;\n }\n if (a < b)\n return CompareVal.A_SMALLER_THAN_B;\n if (a > b)\n return CompareVal.A_GREATER_THAN_B;\n return CompareVal.A_EQUALS_B;\n}\n", "import { extractType, isWrappingTypeNode, isListTypeNode, isNonNullTypeNode, printTypeNode } from './utils.js';\nimport { mergeDirectives } from './directives.js';\nimport { compareNodes } from '@graphql-tools/utils';\nimport { mergeArguments } from './arguments.js';\nfunction fieldAlreadyExists(fieldsArr, otherField, config) {\n const result = fieldsArr.find(field => field.name.value === otherField.name.value);\n if (result && !(config === null || config === void 0 ? void 0 : config.ignoreFieldConflicts)) {\n const t1 = extractType(result.type);\n const t2 = extractType(otherField.type);\n if (t1.name.value !== t2.name.value) {\n throw new Error(`Field \"${otherField.name.value}\" already defined with a different type. Declared as \"${t1.name.value}\", but you tried to override with \"${t2.name.value}\"`);\n }\n }\n return !!result;\n}\nexport function mergeFields(type, f1, f2, config) {\n const result = [];\n if (f2 != null) {\n result.push(...f2);\n }\n if (f1 != null) {\n for (const field of f1) {\n if (fieldAlreadyExists(result, field, config)) {\n const existing = result.find((f) => f.name.value === field.name.value);\n if (!(config === null || config === void 0 ? void 0 : config.ignoreFieldConflicts)) {\n if (config === null || config === void 0 ? void 0 : config.throwOnConflict) {\n preventConflicts(type, existing, field, false);\n }\n else {\n preventConflicts(type, existing, field, true);\n }\n if (isNonNullTypeNode(field.type) && !isNonNullTypeNode(existing.type)) {\n existing.type = field.type;\n }\n }\n existing.arguments = mergeArguments(field['arguments'] || [], existing.arguments || [], config);\n existing.directives = mergeDirectives(field.directives, existing.directives, config);\n existing.description = field.description || existing.description;\n }\n else {\n result.push(field);\n }\n }\n }\n if (config && config.sort) {\n result.sort(compareNodes);\n }\n if (config && config.exclusions) {\n const exclusions = config.exclusions;\n return result.filter(field => !exclusions.includes(`${type.name.value}.${field.name.value}`));\n }\n return result;\n}\nfunction preventConflicts(type, a, b, ignoreNullability = false) {\n const aType = printTypeNode(a.type);\n const bType = printTypeNode(b.type);\n if (aType !== bType && !safeChangeForFieldType(a.type, b.type, ignoreNullability)) {\n throw new Error(`Field '${type.name.value}.${a.name.value}' changed type from '${aType}' to '${bType}'`);\n }\n}\nfunction safeChangeForFieldType(oldType, newType, ignoreNullability = false) {\n // both are named\n if (!isWrappingTypeNode(oldType) && !isWrappingTypeNode(newType)) {\n return oldType.toString() === newType.toString();\n }\n // new is non-null\n if (isNonNullTypeNode(newType)) {\n const ofType = isNonNullTypeNode(oldType) ? oldType.type : oldType;\n return safeChangeForFieldType(ofType, newType.type);\n }\n // old is non-null\n if (isNonNullTypeNode(oldType)) {\n return safeChangeForFieldType(newType, oldType, ignoreNullability);\n }\n // old is list\n if (isListTypeNode(oldType)) {\n return ((isListTypeNode(newType) && safeChangeForFieldType(oldType.type, newType.type)) ||\n (isNonNullTypeNode(newType) && safeChangeForFieldType(oldType, newType['type'])));\n }\n return false;\n}\n", "import { Kind } from 'graphql';\nimport { mergeFields } from './fields.js';\nimport { mergeDirectives } from './directives.js';\nexport function mergeInputType(node, existingNode, config) {\n if (existingNode) {\n try {\n return {\n name: node.name,\n description: node['description'] || existingNode['description'],\n kind: (config === null || config === void 0 ? void 0 : config.convertExtensions) ||\n node.kind === 'InputObjectTypeDefinition' ||\n existingNode.kind === 'InputObjectTypeDefinition'\n ? 'InputObjectTypeDefinition'\n : 'InputObjectTypeExtension',\n loc: node.loc,\n fields: mergeFields(node, node.fields, existingNode.fields, config),\n directives: mergeDirectives(node.directives, existingNode.directives, config),\n };\n }\n catch (e) {\n throw new Error(`Unable to merge GraphQL input type \"${node.name.value}\": ${e.message}`);\n }\n }\n return (config === null || config === void 0 ? void 0 : config.convertExtensions)\n ? {\n ...node,\n kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,\n }\n : node;\n}\n", "import { Kind } from 'graphql';\nimport { mergeFields } from './fields.js';\nimport { mergeDirectives } from './directives.js';\nimport { mergeNamedTypeArray } from './index.js';\nexport function mergeInterface(node, existingNode, config) {\n if (existingNode) {\n try {\n return {\n name: node.name,\n description: node['description'] || existingNode['description'],\n kind: (config === null || config === void 0 ? void 0 : config.convertExtensions) ||\n node.kind === 'InterfaceTypeDefinition' ||\n existingNode.kind === 'InterfaceTypeDefinition'\n ? 'InterfaceTypeDefinition'\n : 'InterfaceTypeExtension',\n loc: node.loc,\n fields: mergeFields(node, node.fields, existingNode.fields, config),\n directives: mergeDirectives(node.directives, existingNode.directives, config),\n interfaces: node['interfaces']\n ? mergeNamedTypeArray(node['interfaces'], existingNode['interfaces'], config)\n : undefined,\n };\n }\n catch (e) {\n throw new Error(`Unable to merge GraphQL interface \"${node.name.value}\": ${e.message}`);\n }\n }\n return (config === null || config === void 0 ? void 0 : config.convertExtensions)\n ? {\n ...node,\n kind: Kind.INTERFACE_TYPE_DEFINITION,\n }\n : node;\n}\n", "import { compareNodes } from '@graphql-tools/utils';\nfunction alreadyExists(arr, other) {\n return !!arr.find(i => i.name.value === other.name.value);\n}\nexport function mergeNamedTypeArray(first = [], second = [], config = {}) {\n const result = [...second, ...first.filter(d => !alreadyExists(second, d))];\n if (config && config.sort) {\n result.sort(compareNodes);\n }\n return result;\n}\n", "import { Kind } from 'graphql';\nimport { mergeFields } from './fields.js';\nimport { mergeDirectives } from './directives.js';\nimport { mergeNamedTypeArray } from './merge-named-type-array.js';\nexport function mergeType(node, existingNode, config) {\n if (existingNode) {\n try {\n return {\n name: node.name,\n description: node['description'] || existingNode['description'],\n kind: (config === null || config === void 0 ? void 0 : config.convertExtensions) ||\n node.kind === 'ObjectTypeDefinition' ||\n existingNode.kind === 'ObjectTypeDefinition'\n ? 'ObjectTypeDefinition'\n : 'ObjectTypeExtension',\n loc: node.loc,\n fields: mergeFields(node, node.fields, existingNode.fields, config),\n directives: mergeDirectives(node.directives, existingNode.directives, config),\n interfaces: mergeNamedTypeArray(node.interfaces, existingNode.interfaces, config),\n };\n }\n catch (e) {\n throw new Error(`Unable to merge GraphQL type \"${node.name.value}\": ${e.message}`);\n }\n }\n return (config === null || config === void 0 ? void 0 : config.convertExtensions)\n ? {\n ...node,\n kind: Kind.OBJECT_TYPE_DEFINITION,\n }\n : node;\n}\n", "import { Kind } from 'graphql';\nimport { mergeDirectives } from './directives.js';\nexport function mergeScalar(node, existingNode, config) {\n if (existingNode) {\n return {\n name: node.name,\n description: node['description'] || existingNode['description'],\n kind: (config === null || config === void 0 ? void 0 : config.convertExtensions) ||\n node.kind === 'ScalarTypeDefinition' ||\n existingNode.kind === 'ScalarTypeDefinition'\n ? 'ScalarTypeDefinition'\n : 'ScalarTypeExtension',\n loc: node.loc,\n directives: mergeDirectives(node.directives, existingNode.directives, config),\n };\n }\n return (config === null || config === void 0 ? void 0 : config.convertExtensions)\n ? {\n ...node,\n kind: Kind.SCALAR_TYPE_DEFINITION,\n }\n : node;\n}\n", "import { Kind } from 'graphql';\nimport { mergeDirectives } from './directives.js';\nimport { mergeNamedTypeArray } from './merge-named-type-array.js';\nexport function mergeUnion(first, second, config) {\n if (second) {\n return {\n name: first.name,\n description: first['description'] || second['description'],\n // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility\n directives: mergeDirectives(first.directives, second.directives, config),\n kind: (config === null || config === void 0 ? void 0 : config.convertExtensions) || first.kind === 'UnionTypeDefinition' || second.kind === 'UnionTypeDefinition'\n ? Kind.UNION_TYPE_DEFINITION\n : Kind.UNION_TYPE_EXTENSION,\n loc: first.loc,\n types: mergeNamedTypeArray(first.types, second.types, config),\n };\n }\n return (config === null || config === void 0 ? void 0 : config.convertExtensions)\n ? {\n ...first,\n kind: Kind.UNION_TYPE_DEFINITION,\n }\n : first;\n}\n", "import { Kind } from 'graphql';\nimport { mergeDirectives } from './directives.js';\nexport const DEFAULT_OPERATION_TYPE_NAME_MAP = {\n query: 'Query',\n mutation: 'Mutation',\n subscription: 'Subscription',\n};\nfunction mergeOperationTypes(opNodeList = [], existingOpNodeList = []) {\n const finalOpNodeList = [];\n for (const opNodeType in DEFAULT_OPERATION_TYPE_NAME_MAP) {\n const opNode = opNodeList.find(n => n.operation === opNodeType) || existingOpNodeList.find(n => n.operation === opNodeType);\n if (opNode) {\n finalOpNodeList.push(opNode);\n }\n }\n return finalOpNodeList;\n}\nexport function mergeSchemaDefs(node, existingNode, config) {\n if (existingNode) {\n return {\n kind: node.kind === Kind.SCHEMA_DEFINITION || existingNode.kind === Kind.SCHEMA_DEFINITION\n ? Kind.SCHEMA_DEFINITION\n : Kind.SCHEMA_EXTENSION,\n description: node['description'] || existingNode['description'],\n directives: mergeDirectives(node.directives, existingNode.directives, config),\n operationTypes: mergeOperationTypes(node.operationTypes, existingNode.operationTypes),\n };\n }\n return ((config === null || config === void 0 ? void 0 : config.convertExtensions)\n ? {\n ...node,\n kind: Kind.SCHEMA_DEFINITION,\n }\n : node);\n}\n", "import { Kind } from 'graphql';\nimport { mergeType } from './type.js';\nimport { mergeEnum } from './enum.js';\nimport { mergeScalar } from './scalar.js';\nimport { mergeUnion } from './union.js';\nimport { mergeInputType } from './input-type.js';\nimport { mergeInterface } from './interface.js';\nimport { mergeDirective } from './directives.js';\nimport { mergeSchemaDefs } from './schema-def.js';\nimport { collectComment } from '@graphql-tools/utils';\nexport const schemaDefSymbol = 'SCHEMA_DEF_SYMBOL';\nexport function isNamedDefinitionNode(definitionNode) {\n return 'name' in definitionNode;\n}\nexport function mergeGraphQLNodes(nodes, config) {\n var _a, _b, _c;\n const mergedResultMap = {};\n for (const nodeDefinition of nodes) {\n if (isNamedDefinitionNode(nodeDefinition)) {\n const name = (_a = nodeDefinition.name) === null || _a === void 0 ? void 0 : _a.value;\n if (config === null || config === void 0 ? void 0 : config.commentDescriptions) {\n collectComment(nodeDefinition);\n }\n if (name == null) {\n continue;\n }\n if (((_b = config === null || config === void 0 ? void 0 : config.exclusions) === null || _b === void 0 ? void 0 : _b.includes(name + '.*')) || ((_c = config === null || config === void 0 ? void 0 : config.exclusions) === null || _c === void 0 ? void 0 : _c.includes(name))) {\n delete mergedResultMap[name];\n }\n else {\n switch (nodeDefinition.kind) {\n case Kind.OBJECT_TYPE_DEFINITION:\n case Kind.OBJECT_TYPE_EXTENSION:\n mergedResultMap[name] = mergeType(nodeDefinition, mergedResultMap[name], config);\n break;\n case Kind.ENUM_TYPE_DEFINITION:\n case Kind.ENUM_TYPE_EXTENSION:\n mergedResultMap[name] = mergeEnum(nodeDefinition, mergedResultMap[name], config);\n break;\n case Kind.UNION_TYPE_DEFINITION:\n case Kind.UNION_TYPE_EXTENSION:\n mergedResultMap[name] = mergeUnion(nodeDefinition, mergedResultMap[name], config);\n break;\n case Kind.SCALAR_TYPE_DEFINITION:\n case Kind.SCALAR_TYPE_EXTENSION:\n mergedResultMap[name] = mergeScalar(nodeDefinition, mergedResultMap[name], config);\n break;\n case Kind.INPUT_OBJECT_TYPE_DEFINITION:\n case Kind.INPUT_OBJECT_TYPE_EXTENSION:\n mergedResultMap[name] = mergeInputType(nodeDefinition, mergedResultMap[name], config);\n break;\n case Kind.INTERFACE_TYPE_DEFINITION:\n case Kind.INTERFACE_TYPE_EXTENSION:\n mergedResultMap[name] = mergeInterface(nodeDefinition, mergedResultMap[name], config);\n break;\n case Kind.DIRECTIVE_DEFINITION:\n mergedResultMap[name] = mergeDirective(nodeDefinition, mergedResultMap[name]);\n break;\n }\n }\n }\n else if (nodeDefinition.kind === Kind.SCHEMA_DEFINITION || nodeDefinition.kind === Kind.SCHEMA_EXTENSION) {\n mergedResultMap[schemaDefSymbol] = mergeSchemaDefs(nodeDefinition, mergedResultMap[schemaDefSymbol], config);\n }\n }\n return mergedResultMap;\n}\n", "import { parse, Kind, isSchema, isDefinitionNode, } from 'graphql';\nimport { defaultStringComparator, isSourceTypes, isStringTypes } from './utils.js';\nimport { mergeGraphQLNodes, schemaDefSymbol } from './merge-nodes.js';\nimport { getDocumentNodeFromSchema, isDocumentNode, resetComments, printWithComments, } from '@graphql-tools/utils';\nimport { DEFAULT_OPERATION_TYPE_NAME_MAP } from './schema-def.js';\nexport function mergeTypeDefs(typeSource, config) {\n resetComments();\n const doc = {\n kind: Kind.DOCUMENT,\n definitions: mergeGraphQLTypes(typeSource, {\n useSchemaDefinition: true,\n forceSchemaDefinition: false,\n throwOnConflict: false,\n commentDescriptions: false,\n ...config,\n }),\n };\n let result;\n if (config === null || config === void 0 ? void 0 : config.commentDescriptions) {\n result = printWithComments(doc);\n }\n else {\n result = doc;\n }\n resetComments();\n return result;\n}\nfunction visitTypeSources(typeSource, options, allNodes = [], visitedTypeSources = new Set()) {\n if (typeSource && !visitedTypeSources.has(typeSource)) {\n visitedTypeSources.add(typeSource);\n if (typeof typeSource === 'function') {\n visitTypeSources(typeSource(), options, allNodes, visitedTypeSources);\n }\n else if (Array.isArray(typeSource)) {\n for (const type of typeSource) {\n visitTypeSources(type, options, allNodes, visitedTypeSources);\n }\n }\n else if (isSchema(typeSource)) {\n const documentNode = getDocumentNodeFromSchema(typeSource, options);\n visitTypeSources(documentNode.definitions, options, allNodes, visitedTypeSources);\n }\n else if (isStringTypes(typeSource) || isSourceTypes(typeSource)) {\n const documentNode = parse(typeSource, options);\n visitTypeSources(documentNode.definitions, options, allNodes, visitedTypeSources);\n }\n else if (typeof typeSource === 'object' && isDefinitionNode(typeSource)) {\n allNodes.push(typeSource);\n }\n else if (isDocumentNode(typeSource)) {\n visitTypeSources(typeSource.definitions, options, allNodes, visitedTypeSources);\n }\n else {\n throw new Error(`typeDefs must contain only strings, documents, schemas, or functions, got ${typeof typeSource}`);\n }\n }\n return allNodes;\n}\nexport function mergeGraphQLTypes(typeSource, config) {\n var _a, _b, _c;\n resetComments();\n const allNodes = visitTypeSources(typeSource, config);\n const mergedNodes = mergeGraphQLNodes(allNodes, config);\n if (config === null || config === void 0 ? void 0 : config.useSchemaDefinition) {\n // XXX: right now we don't handle multiple schema definitions\n const schemaDef = mergedNodes[schemaDefSymbol] || {\n kind: Kind.SCHEMA_DEFINITION,\n operationTypes: [],\n };\n const operationTypes = schemaDef.operationTypes;\n for (const opTypeDefNodeType in DEFAULT_OPERATION_TYPE_NAME_MAP) {\n const opTypeDefNode = operationTypes.find(operationType => operationType.operation === opTypeDefNodeType);\n if (!opTypeDefNode) {\n const possibleRootTypeName = DEFAULT_OPERATION_TYPE_NAME_MAP[opTypeDefNodeType];\n const existingPossibleRootType = mergedNodes[possibleRootTypeName];\n if (existingPossibleRootType != null && existingPossibleRootType.name != null) {\n operationTypes.push({\n kind: Kind.OPERATION_TYPE_DEFINITION,\n type: {\n kind: Kind.NAMED_TYPE,\n name: existingPossibleRootType.name,\n },\n operation: opTypeDefNodeType,\n });\n }\n }\n }\n if (((_a = schemaDef === null || schemaDef === void 0 ? void 0 : schemaDef.operationTypes) === null || _a === void 0 ? void 0 : _a.length) != null && schemaDef.operationTypes.length > 0) {\n mergedNodes[schemaDefSymbol] = schemaDef;\n }\n }\n if ((config === null || config === void 0 ? void 0 : config.forceSchemaDefinition) && !((_c = (_b = mergedNodes[schemaDefSymbol]) === null || _b === void 0 ? void 0 : _b.operationTypes) === null || _c === void 0 ? void 0 : _c.length)) {\n mergedNodes[schemaDefSymbol] = {\n kind: Kind.SCHEMA_DEFINITION,\n operationTypes: [\n {\n kind: Kind.OPERATION_TYPE_DEFINITION,\n operation: 'query',\n type: {\n kind: Kind.NAMED_TYPE,\n name: {\n kind: Kind.NAME,\n value: 'Query',\n },\n },\n },\n ],\n };\n }\n const mergedNodeDefinitions = Object.values(mergedNodes);\n if (config === null || config === void 0 ? void 0 : config.sort) {\n const sortFn = typeof config.sort === 'function' ? config.sort : defaultStringComparator;\n mergedNodeDefinitions.sort((a, b) => { var _a, _b; return sortFn((_a = a.name) === null || _a === void 0 ? void 0 : _a.value, (_b = b.name) === null || _b === void 0 ? void 0 : _b.value); });\n }\n return mergedNodeDefinitions;\n}\n", "import { mergeDeep } from '@graphql-tools/utils';\nexport { extractExtensionsFromSchema } from '@graphql-tools/utils';\nexport function mergeExtensions(extensions) {\n return mergeDeep(extensions);\n}\nfunction applyExtensionObject(obj, extensions) {\n if (!obj) {\n return;\n }\n obj.extensions = mergeDeep([obj.extensions || {}, extensions || {}]);\n}\nexport function applyExtensions(schema, extensions) {\n applyExtensionObject(schema, extensions.schemaExtensions);\n for (const [typeName, data] of Object.entries(extensions.types || {})) {\n const type = schema.getType(typeName);\n if (type) {\n applyExtensionObject(type, data.extensions);\n if (data.type === 'object' || data.type === 'interface') {\n for (const [fieldName, fieldData] of Object.entries(data.fields)) {\n const field = type.getFields()[fieldName];\n if (field) {\n applyExtensionObject(field, fieldData.extensions);\n for (const [arg, argData] of Object.entries(fieldData.arguments)) {\n applyExtensionObject(field.args.find(a => a.name === arg), argData);\n }\n }\n }\n }\n else if (data.type === 'input') {\n for (const [fieldName, fieldData] of Object.entries(data.fields)) {\n const field = type.getFields()[fieldName];\n applyExtensionObject(field, fieldData.extensions);\n }\n }\n else if (data.type === 'enum') {\n for (const [valueName, valueData] of Object.entries(data.values)) {\n const value = type.getValue(valueName);\n applyExtensionObject(value, valueData);\n }\n }\n }\n }\n return schema;\n}\n", "import { buildASTSchema, buildSchema, isSchema } from 'graphql';\nimport { asArray } from '@graphql-tools/utils';\nimport { addResolversToSchema } from './addResolversToSchema.js';\nimport { assertResolversPresent } from './assertResolversPresent.js';\nimport { applyExtensions, mergeExtensions, mergeResolvers, mergeTypeDefs } from '@graphql-tools/merge';\n/**\n * Builds a schema from the provided type definitions and resolvers.\n *\n * The type definitions are written using Schema Definition Language (SDL). They\n * can be provided as a string, a `DocumentNode`, a function, or an array of any\n * of these. If a function is provided, it will be passed no arguments and\n * should return an array of strings or `DocumentNode`s.\n *\n * Note: You can use GraphQL magic comment provide additional syntax\n * highlighting in your editor (with the appropriate editor plugin).\n *\n * ```js\n * const typeDefs = /* GraphQL *\\/ `\n * type Query {\n * posts: [Post]\n * author(id: Int!): Author\n * }\n * `;\n * ```\n *\n * The `resolvers` object should be a map of type names to nested object, which\n * themselves map the type's fields to their appropriate resolvers.\n * See the [Resolvers](/docs/resolvers) section of the documentation for more details.\n *\n * ```js\n * const resolvers = {\n * Query: {\n * posts: (obj, args, ctx, info) => getAllPosts(),\n * author: (obj, args, ctx, info) => getAuthorById(args.id)\n * }\n * };\n * ```\n *\n * Once you've defined both the `typeDefs` and `resolvers`, you can create your\n * schema:\n *\n * ```js\n * const schema = makeExecutableSchema({\n * typeDefs,\n * resolvers,\n * })\n * ```\n */\nexport function makeExecutableSchema({ typeDefs, resolvers = {}, resolverValidationOptions = {}, inheritResolversFromInterfaces = false, updateResolversInPlace = false, schemaExtensions, ...otherOptions }) {\n // Validate and clean up arguments\n if (typeof resolverValidationOptions !== 'object') {\n throw new Error('Expected `resolverValidationOptions` to be an object');\n }\n if (!typeDefs) {\n throw new Error('Must provide typeDefs');\n }\n let schema;\n if (isSchema(typeDefs)) {\n schema = typeDefs;\n }\n else if (otherOptions === null || otherOptions === void 0 ? void 0 : otherOptions.commentDescriptions) {\n const mergedTypeDefs = mergeTypeDefs(typeDefs, {\n ...otherOptions,\n commentDescriptions: true,\n });\n schema = buildSchema(mergedTypeDefs, otherOptions);\n }\n else {\n const mergedTypeDefs = mergeTypeDefs(typeDefs, otherOptions);\n schema = buildASTSchema(mergedTypeDefs, otherOptions);\n }\n // We allow passing in an array of resolver maps, in which case we merge them\n schema = addResolversToSchema({\n schema,\n resolvers: mergeResolvers(resolvers),\n resolverValidationOptions,\n inheritResolversFromInterfaces,\n updateResolversInPlace,\n });\n if (Object.keys(resolverValidationOptions).length > 0) {\n assertResolversPresent(schema, resolverValidationOptions);\n }\n if (schemaExtensions) {\n schemaExtensions = mergeExtensions(asArray(schemaExtensions));\n applyExtensions(schema, schemaExtensions);\n }\n return schema;\n}\n", "import { isSchema, print } from 'graphql';\nimport { envelop, useMaskedErrors, useExtendContext, enableIf, useLogger, useSchema, } from '@envelop/core';\nimport { useValidationCache } from '@envelop/validation-cache';\nimport { useParserCache } from '@envelop/parser-cache';\nimport { makeExecutableSchema } from '@graphql-tools/schema';\nimport * as crossUndiciFetch from '@whatwg-node/fetch';\nimport { processRequest as processGraphQLParams } from './processRequest.js';\nimport { defaultYogaLogger, titleBold } from './logger.js';\nimport { useCORS } from './plugins/useCORS.js';\nimport { useHealthCheck } from './plugins/useHealthCheck.js';\nimport { useGraphiQL, } from './plugins/useGraphiQL.js';\nimport { useRequestParser } from './plugins/useRequestParser.js';\nimport { isGETRequest, parseGETRequest } from './plugins/requestParser/GET.js';\nimport { isPOSTJsonRequest, parsePOSTJsonRequest, } from './plugins/requestParser/POSTJson.js';\nimport { isPOSTMultipartRequest, parsePOSTMultipartRequest, } from './plugins/requestParser/POSTMultipart.js';\nimport { isPOSTGraphQLStringRequest, parsePOSTGraphQLStringRequest, } from './plugins/requestParser/POSTGraphQLString.js';\nimport { useResultProcessor } from './plugins/useResultProcessor.js';\nimport { isRegularResult, processRegularResult, } from './plugins/resultProcessor/regular.js';\nimport { isPushResult, processPushResult, } from './plugins/resultProcessor/push.js';\nimport { isMultipartResult, processMultipartResult, } from './plugins/resultProcessor/multipart.js';\nimport { isPOSTFormUrlEncodedRequest, parsePOSTFormUrlEncodedRequest, } from './plugins/requestParser/POSTFormUrlEncoded.js';\nimport { handleError } from './GraphQLYogaError.js';\nimport { encodeString } from './encodeString.js';\nimport { useCheckMethodForGraphQL } from './plugins/requestValidation/useCheckMethodForGraphQL.js';\nimport { useCheckGraphQLQueryParam } from './plugins/requestValidation/useCheckGraphQLQueryParam.js';\nimport { useHTTPValidationError } from './plugins/requestValidation/useHTTPValidationError.js';\nimport { usePreventMutationViaGET } from './plugins/requestValidation/usePreventMutationViaGET.js';\nexport function getDefaultSchema() {\n return makeExecutableSchema({\n typeDefs: /* GraphQL */ `\n \"\"\"\n Greetings from GraphQL Yoga!\n \"\"\"\n type Query {\n greetings: String\n }\n type Subscription {\n \"\"\"\n Current Time\n \"\"\"\n time: String\n }\n `,\n resolvers: {\n Query: {\n greetings: () => 'This is the `greetings` field of the root `Query` type',\n },\n Subscription: {\n time: {\n async *subscribe() {\n while (true) {\n yield { time: new Date().toISOString() };\n await new Promise((resolve) => setTimeout(resolve, 1000));\n }\n },\n },\n },\n },\n });\n}\n/**\n * Base class that can be extended to create a GraphQL server with any HTTP server framework.\n * @internal\n */\nexport class YogaServer {\n constructor(options) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;\n this.handleRequest = async (request, ...args) => {\n const response = await this.getResponse(request, ...args);\n for (const onResponseHook of this.onResponseHooks) {\n await onResponseHook({\n request,\n response,\n serverContext: args[0],\n });\n }\n return response;\n };\n this.fetch = (input, init) => {\n let request;\n if (typeof input === 'string') {\n request = new this.fetchAPI.Request(input, init);\n }\n else {\n request = input;\n }\n return this.handleRequest(request, init);\n };\n // FetchEvent is not available in all envs\n this.fetchEventListener = (event) => event.respondWith(this.handleRequest(event.request, event));\n this.id = (_a = options === null || options === void 0 ? void 0 : options.id) !== null && _a !== void 0 ? _a : 'yoga';\n this.fetchAPI = {\n Request: (_c = (_b = options === null || options === void 0 ? void 0 : options.fetchAPI) === null || _b === void 0 ? void 0 : _b.Request) !== null && _c !== void 0 ? _c : crossUndiciFetch.Request,\n Response: (_e = (_d = options === null || options === void 0 ? void 0 : options.fetchAPI) === null || _d === void 0 ? void 0 : _d.Response) !== null && _e !== void 0 ? _e : crossUndiciFetch.Response,\n fetch: (_g = (_f = options === null || options === void 0 ? void 0 : options.fetchAPI) === null || _f === void 0 ? void 0 : _f.fetch) !== null && _g !== void 0 ? _g : crossUndiciFetch.fetch,\n ReadableStream: (_j = (_h = options === null || options === void 0 ? void 0 : options.fetchAPI) === null || _h === void 0 ? void 0 : _h.ReadableStream) !== null && _j !== void 0 ? _j : crossUndiciFetch.ReadableStream,\n };\n const schema = (options === null || options === void 0 ? void 0 : options.schema)\n ? isSchema(options.schema)\n ? options.schema\n : makeExecutableSchema({\n typeDefs: options.schema.typeDefs,\n resolvers: options.schema.resolvers,\n })\n : getDefaultSchema();\n const logger = (options === null || options === void 0 ? void 0 : options.logging) != null ? options.logging : true;\n this.logger =\n typeof logger === 'boolean'\n ? logger === true\n ? defaultYogaLogger\n : {\n debug: () => { },\n error: () => { },\n warn: () => { },\n info: () => { },\n }\n : logger;\n const maskedErrors = (_k = options === null || options === void 0 ? void 0 : options.maskedErrors) !== null && _k !== void 0 ? _k : true;\n const server = this;\n this.endpoint = options === null || options === void 0 ? void 0 : options.endpoint;\n this.plugins = [\n // Use the schema provided by the user\n enableIf(schema != null, useSchema(schema)),\n // Performance things\n enableIf((options === null || options === void 0 ? void 0 : options.parserCache) !== false, () => useParserCache(typeof (options === null || options === void 0 ? void 0 : options.parserCache) === 'object'\n ? options === null || options === void 0 ? void 0 : options.parserCache\n : undefined)),\n enableIf((options === null || options === void 0 ? void 0 : options.validationCache) !== false, () => useValidationCache({\n cache: typeof (options === null || options === void 0 ? void 0 : options.validationCache) === 'object'\n ? options === null || options === void 0 ? void 0 : options.validationCache\n : undefined,\n })),\n // Log events - useful for debugging purposes\n enableIf(logger !== false, useLogger({\n skipIntrospection: true,\n logFn: (eventName, events) => {\n switch (eventName) {\n case 'execute-start':\n case 'subscribe-start':\n this.logger.debug(titleBold('Execution start'));\n const { query, operationName, variables, extensions, } = events.args.contextValue;\n this.logger.debug(titleBold('Received GraphQL operation:'));\n this.logger.debug({\n query,\n operationName,\n variables,\n extensions,\n });\n break;\n case 'execute-end':\n case 'subscribe-end':\n this.logger.debug(titleBold('Execution end'));\n this.logger.debug({\n result: events.result,\n });\n break;\n }\n },\n })),\n enableIf((options === null || options === void 0 ? void 0 : options.context) != null, useExtendContext(async (initialContext) => {\n if (options === null || options === void 0 ? void 0 : options.context) {\n if (typeof options.context === 'function') {\n return options.context(initialContext);\n }\n return options.context;\n }\n })),\n // Middlewares before processing the incoming HTTP request\n useHealthCheck({\n id: this.id,\n logger: this.logger,\n }),\n enableIf((options === null || options === void 0 ? void 0 : options.graphiql) !== false, () => useGraphiQL({\n get endpoint() {\n return server.endpoint;\n },\n options: options === null || options === void 0 ? void 0 : options.graphiql,\n render: options === null || options === void 0 ? void 0 : options.renderGraphiQL,\n logger: this.logger,\n })),\n enableIf((options === null || options === void 0 ? void 0 : options.cors) !== false, () => useCORS(options === null || options === void 0 ? void 0 : options.cors)),\n // Middlewares before the GraphQL execution\n useCheckMethodForGraphQL(),\n useRequestParser({\n match: isGETRequest,\n parse: parseGETRequest,\n }),\n useRequestParser({\n match: isPOSTJsonRequest,\n parse: parsePOSTJsonRequest,\n }),\n enableIf((options === null || options === void 0 ? void 0 : options.multipart) !== false, () => useRequestParser({\n match: isPOSTMultipartRequest,\n parse: parsePOSTMultipartRequest,\n })),\n useRequestParser({\n match: isPOSTGraphQLStringRequest,\n parse: parsePOSTGraphQLStringRequest,\n }),\n useRequestParser({\n match: isPOSTFormUrlEncodedRequest,\n parse: parsePOSTFormUrlEncodedRequest,\n }),\n // Middlewares after the GraphQL execution\n useResultProcessor({\n match: isRegularResult,\n processResult: processRegularResult,\n }),\n useResultProcessor({\n match: isPushResult,\n processResult: processPushResult,\n }),\n useResultProcessor({\n match: isMultipartResult,\n processResult: processMultipartResult,\n }),\n ...((_l = options === null || options === void 0 ? void 0 : options.plugins) !== null && _l !== void 0 ? _l : []),\n useCheckGraphQLQueryParam(),\n // To make sure those are called at the end\n {\n onPluginInit({ addPlugin }) {\n addPlugin(\n // We make sure that the user doesn't send a mutation with GET\n usePreventMutationViaGET());\n if (!!maskedErrors) {\n addPlugin(useMaskedErrors(typeof maskedErrors === 'object' ? maskedErrors : undefined));\n }\n addPlugin(\n // We handle validation errors at the end\n useHTTPValidationError());\n },\n },\n ];\n this.getEnveloped = envelop({\n plugins: this.plugins,\n });\n this.onRequestHooks = [];\n this.onRequestParseHooks = [];\n this.onResultProcessHooks = [];\n this.onResponseHooks = [];\n for (const plugin of this.plugins) {\n if (plugin) {\n if (plugin.onRequestParse) {\n this.onRequestParseHooks.push(plugin.onRequestParse);\n }\n if (plugin.onRequest) {\n this.onRequestHooks.push(plugin.onRequest);\n }\n if (plugin.onResultProcess) {\n this.onResultProcessHooks.push(plugin.onResultProcess);\n }\n if (plugin.onResponse) {\n this.onResponseHooks.push(plugin.onResponse);\n }\n }\n }\n }\n async getResponse(request, ...args) {\n var _a, _b;\n const serverContext = args[0];\n try {\n for (const onRequestHook of this.onRequestHooks) {\n let response;\n await onRequestHook({\n request,\n serverContext,\n fetchAPI: this.fetchAPI,\n endResponse(newResponse) {\n response = newResponse;\n },\n });\n if (response) {\n return response;\n }\n }\n let requestParser;\n const onRequestParseDoneList = [];\n for (const onRequestParse of this.onRequestParseHooks) {\n const onRequestParseResult = await onRequestParse({\n request,\n requestParser,\n setRequestParser(parser) {\n requestParser = parser;\n },\n });\n if ((onRequestParseResult === null || onRequestParseResult === void 0 ? void 0 : onRequestParseResult.onRequestParseDone) != null) {\n onRequestParseDoneList.push(onRequestParseResult.onRequestParseDone);\n }\n }\n this.logger.debug(`Parsing request to extract GraphQL parameters`);\n if (!requestParser) {\n return new this.fetchAPI.Response('Request is not valid', {\n status: 400,\n statusText: 'Bad Request',\n });\n }\n let params = await requestParser(request);\n for (const onRequestParseDone of onRequestParseDoneList) {\n await onRequestParseDone({\n params,\n setParams(newParams) {\n params = newParams;\n },\n });\n }\n const initialContext = {\n request,\n ...params,\n ...serverContext,\n };\n const enveloped = this.getEnveloped(initialContext);\n this.logger.debug(`Processing GraphQL Parameters`);\n const result = await processGraphQLParams({\n request,\n params,\n enveloped,\n fetchAPI: this.fetchAPI,\n onResultProcessHooks: this.onResultProcessHooks,\n });\n return result;\n }\n catch (error) {\n const finalResponseInit = {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n };\n const errors = handleError(error);\n for (const error of errors) {\n if ((_a = error.extensions) === null || _a === void 0 ? void 0 : _a.http) {\n if (error.extensions.http.status &&\n ((_b = error.extensions) === null || _b === void 0 ? void 0 : _b.http.status) > finalResponseInit.status) {\n finalResponseInit.status = error.extensions.http.status;\n }\n if (error.extensions.http.headers) {\n Object.assign(finalResponseInit.headers, error.extensions.http.headers);\n }\n // Remove http extensions from the final response\n error.extensions.http = undefined;\n }\n }\n const payload = {\n data: null,\n errors,\n };\n const decodedString = encodeString(JSON.stringify(payload));\n finalResponseInit.headers['Content-Length'] =\n decodedString.byteLength.toString();\n return new this.fetchAPI.Response(decodedString, finalResponseInit);\n }\n }\n /**\n * Testing utility to mock http request for GraphQL endpoint\n *\n *\n * Example - Test a simple query\n * ```ts\n * const { response, executionResult } = await yoga.inject({\n * document: \"query { ping }\",\n * })\n * expect(response.status).toBe(200)\n * expect(executionResult.data.ping).toBe('pong')\n * ```\n **/\n async inject({ document, variables, operationName, headers, serverContext, }) {\n const request = new this.fetchAPI.Request('http://localhost/graphql', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...headers,\n },\n body: JSON.stringify({\n query: document &&\n (typeof document === 'string' ? document : print(document)),\n variables,\n operationName,\n }),\n });\n const response = await this.handleRequest(request, serverContext);\n let executionResult = null;\n if (response.headers.get('content-type') === 'application/json') {\n executionResult = await response.json();\n }\n return {\n response,\n executionResult,\n };\n }\n start() {\n self.addEventListener('fetch', this.fetchEventListener);\n }\n stop() {\n self.removeEventListener('fetch', this.fetchEventListener);\n }\n}\nexport function createServer(options) {\n const server = new YogaServer(options);\n // TODO: Will be removed once we get rid of classes\n const fnHandler = (input, ctx) => {\n // Is input a container object over Request?\n if (input.request) {\n // In this input is also the context\n return server.handleRequest(input.request, input);\n }\n // Or is it Request itself?\n // Then ctx is present and it is the context\n return server.handleRequest(input, ctx);\n };\n return new Proxy(server, {\n // It should have all the attributes of the handler function and the server instance\n has: (_, prop) => {\n return prop in fnHandler || prop in server;\n },\n get: (_, prop) => {\n if (server[prop]) {\n if (server[prop].bind) {\n return server[prop].bind(server);\n }\n return server[prop];\n }\n if (fnHandler[prop]) {\n if (fnHandler[prop].bind) {\n return fnHandler[prop].bind(fnHandler);\n }\n return fnHandler[prop];\n }\n },\n apply(_, __, [input, ctx]) {\n return fnHandler(input, ctx);\n },\n });\n}\n", "import { getOperationAST } from 'graphql';\nexport async function processRequest({ request, params, enveloped, fetchAPI, onResultProcessHooks, }) {\n // Parse GraphQLParams\n const document = enveloped.parse(params.query);\n // Validate parsed Document Node\n enveloped.validate(enveloped.schema, document);\n // Build the context for the execution\n const contextValue = (await enveloped.contextFactory());\n const executionArgs = {\n schema: enveloped.schema,\n document,\n contextValue,\n variableValues: params.variables,\n operationName: params.operationName,\n };\n // Get the actual operation\n const operation = getOperationAST(document, params.operationName);\n // Choose the right executor\n const executeFn = (operation === null || operation === void 0 ? void 0 : operation.operation) === 'subscription'\n ? enveloped.subscribe\n : enveloped.execute;\n // Get the result to be processed\n const result = await executeFn(executionArgs);\n let resultProcessor;\n for (const onResultProcessHook of onResultProcessHooks) {\n await onResultProcessHook({\n request,\n result,\n resultProcessor,\n setResultProcessor(newResultProcessor) {\n resultProcessor = newResultProcessor;\n },\n });\n }\n // If no result processor found for this result, return an error\n if (!resultProcessor) {\n return new fetchAPI.Response(null, {\n status: 406,\n statusText: 'Not Acceptable',\n });\n }\n return resultProcessor(result, fetchAPI);\n}\n", "export function getCORSHeadersByRequestAndOptions(request, corsOptions) {\n var _a, _b;\n const headers = {};\n if (corsOptions === false) {\n return headers;\n }\n // If defined origins have '*' or undefined by any means, we should allow all origins\n if (corsOptions.origin == null ||\n corsOptions.origin.length === 0 ||\n corsOptions.origin.includes('*')) {\n const currentOrigin = request.headers.get('origin');\n // If origin is available in the headers, use it\n if (currentOrigin != null) {\n headers['Access-Control-Allow-Origin'] = currentOrigin;\n // Vary by origin because there are multiple origins\n headers['Vary'] = 'Origin';\n }\n else {\n headers['Access-Control-Allow-Origin'] = '*';\n }\n }\n else if (typeof corsOptions.origin === 'string') {\n // If there is one specific origin is specified, use it directly\n headers['Access-Control-Allow-Origin'] = corsOptions.origin;\n }\n else if (Array.isArray(corsOptions.origin)) {\n // If there is only one origin defined in the array, consider it as a single one\n if (corsOptions.origin.length === 1) {\n headers['Access-Control-Allow-Origin'] = corsOptions.origin[0];\n }\n else {\n const currentOrigin = request.headers.get('origin');\n if (currentOrigin != null && corsOptions.origin.includes(currentOrigin)) {\n // If origin is available in the headers, use it\n headers['Access-Control-Allow-Origin'] = currentOrigin;\n // Vary by origin because there are multiple origins\n headers['Vary'] = 'Origin';\n }\n else {\n // There is no origin found in the headers, so we should return null\n headers['Access-Control-Allow-Origin'] = 'null';\n }\n }\n }\n if ((_a = corsOptions.methods) === null || _a === void 0 ? void 0 : _a.length) {\n headers['Access-Control-Allow-Methods'] = corsOptions.methods.join(', ');\n }\n else {\n const requestMethod = request.headers.get('access-control-request-method');\n if (requestMethod) {\n headers['Access-Control-Allow-Methods'] = requestMethod;\n }\n }\n if ((_b = corsOptions.allowedHeaders) === null || _b === void 0 ? void 0 : _b.length) {\n headers['Access-Control-Allow-Headers'] =\n corsOptions.allowedHeaders.join(', ');\n }\n else {\n const requestHeaders = request.headers.get('access-control-request-headers');\n if (requestHeaders) {\n headers['Access-Control-Allow-Headers'] = requestHeaders;\n if (headers['Vary']) {\n headers['Vary'] += ', Access-Control-Request-Headers';\n }\n headers['Vary'] = 'Access-Control-Request-Headers';\n }\n }\n if (corsOptions.credentials != null) {\n if (corsOptions.credentials === true) {\n headers['Access-Control-Allow-Credentials'] = 'true';\n }\n }\n else if (headers['Access-Control-Allow-Origin'] !== '*') {\n headers['Access-Control-Allow-Credentials'] = 'true';\n }\n if (corsOptions.exposedHeaders) {\n headers['Access-Control-Expose-Headers'] =\n corsOptions.exposedHeaders.join(', ');\n }\n if (corsOptions.maxAge) {\n headers['Access-Control-Max-Age'] = corsOptions.maxAge.toString();\n }\n return headers;\n}\nasync function getCORSResponseHeaders(request, corsOptionsFactory, serverContext) {\n const corsOptions = await corsOptionsFactory(request, serverContext);\n return getCORSHeadersByRequestAndOptions(request, corsOptions);\n}\nexport function useCORS(options) {\n let corsOptionsFactory = () => ({});\n if (options != null) {\n if (typeof options === 'function') {\n corsOptionsFactory = options;\n }\n else if (typeof options === 'object') {\n const corsOptions = {\n ...options,\n };\n corsOptionsFactory = () => corsOptions;\n }\n else if (options === false) {\n corsOptionsFactory = () => false;\n }\n }\n return {\n async onRequest({ request, serverContext, fetchAPI, endResponse }) {\n if (request.method.toUpperCase() === 'OPTIONS') {\n const headers = await getCORSResponseHeaders(request, corsOptionsFactory, serverContext);\n const response = new fetchAPI.Response(null, {\n status: 204,\n headers: {\n ...headers,\n 'Content-Length': '0',\n },\n });\n endResponse(response);\n }\n },\n async onResponse({ request, serverContext, response }) {\n const headers = await getCORSResponseHeaders(request, corsOptionsFactory, serverContext);\n for (const headerName in headers) {\n response.headers.set(headerName, headers[headerName]);\n }\n },\n };\n}\n", "import { createGraphQLError } from '@graphql-tools/utils';\nexport function useHealthCheck(options) {\n const id = (options === null || options === void 0 ? void 0 : options.id) || Date.now().toString();\n const logger = (options === null || options === void 0 ? void 0 : options.logger) || console;\n return {\n async onRequest({ request, endResponse, fetchAPI }) {\n const requestPath = request.url.split('?')[0];\n if (requestPath.endsWith('/health')) {\n logger.debug(`Responding Health Check`);\n const response = new fetchAPI.Response(JSON.stringify({\n message: 'alive',\n }), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n 'x-yoga-id': id,\n },\n });\n endResponse(response);\n }\n else if (requestPath.endsWith('/readiness')) {\n logger.debug(`Responding Readiness Check`);\n const readinessResponse = await fetchAPI.fetch(request.url.replace('/readiness', '/health'));\n const { message } = await readinessResponse.json();\n if (readinessResponse.status === 200 &&\n readinessResponse.headers.get('x-yoga-id') === id &&\n message === 'alive') {\n const response = new fetchAPI.Response(JSON.stringify({\n message: 'ready',\n }), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n endResponse(response);\n }\n else {\n throw createGraphQLError(`Readiness check failed with status ${readinessResponse.status}`);\n }\n }\n },\n };\n}\n", "export default \"__TITLE__
\";\n", "import graphiqlHTML from '../graphiqlHTML.js';\nexport function shouldRenderGraphiQL({ headers, method }) {\n var _a;\n return method === 'GET' && !!((_a = headers === null || headers === void 0 ? void 0 : headers.get('accept')) === null || _a === void 0 ? void 0 : _a.includes('text/html'));\n}\nexport const renderGraphiQL = (opts) => graphiqlHTML\n .replace('__TITLE__', (opts === null || opts === void 0 ? void 0 : opts.title) || 'Yoga GraphiQL')\n .replace('__OPTS__', JSON.stringify(opts !== null && opts !== void 0 ? opts : {}));\nexport function useGraphiQL(config) {\n var _a, _b;\n const logger = (_a = config === null || config === void 0 ? void 0 : config.logger) !== null && _a !== void 0 ? _a : console;\n let graphiqlOptionsFactory;\n if (typeof (config === null || config === void 0 ? void 0 : config.options) === 'function') {\n graphiqlOptionsFactory = config === null || config === void 0 ? void 0 : config.options;\n }\n else if (typeof (config === null || config === void 0 ? void 0 : config.options) === 'object') {\n graphiqlOptionsFactory = () => config === null || config === void 0 ? void 0 : config.options;\n }\n else if ((config === null || config === void 0 ? void 0 : config.options) === false) {\n graphiqlOptionsFactory = () => false;\n }\n else {\n graphiqlOptionsFactory = () => ({});\n }\n const renderer = (_b = config === null || config === void 0 ? void 0 : config.render) !== null && _b !== void 0 ? _b : renderGraphiQL;\n return {\n async onRequest({ request, serverContext, fetchAPI, endResponse }) {\n const requestPath = request.url.split('?')[0];\n if ((config === null || config === void 0 ? void 0 : config.endpoint) != null && !requestPath.endsWith(config === null || config === void 0 ? void 0 : config.endpoint)) {\n logger.debug(`Responding 404 Not Found`);\n const response = new fetchAPI.Response(`Unable to ${request.method} ${requestPath}`, {\n status: 404,\n statusText: `Not Found`,\n });\n endResponse(response);\n }\n else if (shouldRenderGraphiQL(request)) {\n logger.debug(`Rendering GraphiQL`);\n const graphiqlOptions = graphiqlOptionsFactory(request, serverContext);\n if (graphiqlOptions) {\n const graphiQLBody = await renderer({\n endpoint: config === null || config === void 0 ? void 0 : config.endpoint,\n ...(graphiqlOptions === true ? {} : graphiqlOptions),\n });\n const response = new fetchAPI.Response(graphiQLBody, {\n headers: {\n 'Content-Type': 'text/html',\n },\n status: 200,\n });\n endResponse(response);\n }\n }\n },\n };\n}\n", "const DEFAULT_MATCHER = () => true;\nexport function useRequestParser(options) {\n const matchFn = options.match || DEFAULT_MATCHER;\n return {\n onRequestParse({ request, setRequestParser }) {\n if (matchFn(request)) {\n setRequestParser(function useRequestParserFn(request) {\n return options.parse(request);\n });\n }\n },\n };\n}\n", "export function parseURLSearchParams(requestBody) {\n const searchParams = new URLSearchParams(requestBody);\n const operationName = searchParams.get('operationName') || undefined;\n const query = searchParams.get('query') || undefined;\n const variablesStr = searchParams.get('variables') || undefined;\n const extensionsStr = searchParams.get('extensions') || undefined;\n return {\n operationName,\n query,\n variables: variablesStr ? JSON.parse(variablesStr) : undefined,\n extensions: extensionsStr ? JSON.parse(extensionsStr) : undefined,\n };\n}\nexport function isContentTypeMatch(request, expectedContentType) {\n const contentType = request.headers.get('content-type');\n return (contentType === expectedContentType ||\n !!(contentType === null || contentType === void 0 ? void 0 : contentType.startsWith(`${expectedContentType};`)));\n}\n", "import { parseURLSearchParams } from './utils.js';\nexport function isGETRequest(request) {\n return request.method === 'GET';\n}\nexport function parseGETRequest(request) {\n const [, searchParamsStr] = request.url.split('?');\n return parseURLSearchParams(searchParamsStr);\n}\n", "export function isPOSTJsonRequest(request) {\n return request.method === 'POST';\n}\nexport async function parsePOSTJsonRequest(request) {\n const requestBody = await request.json();\n return {\n operationName: requestBody.operationName,\n query: requestBody.query,\n variables: requestBody.variables,\n extensions: requestBody.extensions,\n };\n}\n", "export function dset(obj, keys, val) {\n\tkeys.split && (keys=keys.split('.'));\n\tvar i=0, l=keys.length, t=obj, x, k;\n\twhile (i < l) {\n\t\tk = keys[i++];\n\t\tif (k === '__proto__' || k === 'constructor' || k === 'prototype') break;\n\t\tt = t[k] = (i === l) ? val : (typeof(x=t[k])===typeof(keys)) ? x : (keys[i]*0 !== 0 || !!~(''+keys[i]).indexOf('.')) ? {} : [];\n\t}\n}\n", "import { createGraphQLError } from '@graphql-tools/utils';\nimport { dset } from 'dset';\nimport { isContentTypeMatch } from './utils.js';\nexport function isPOSTMultipartRequest(request) {\n return (request.method === 'POST' &&\n isContentTypeMatch(request, 'multipart/form-data'));\n}\nexport async function parsePOSTMultipartRequest(request) {\n var _a, _b;\n let requestBody;\n try {\n requestBody = await request.formData();\n }\n catch (e) {\n // Trick for @whatwg-node/fetch errors on Node.js\n // TODO: This needs a better solution\n if (e instanceof Error &&\n e.message.startsWith('File size limit exceeded: ')) {\n throw createGraphQLError(e.message, {\n extensions: {\n http: {\n status: 413,\n },\n },\n });\n }\n throw e;\n }\n const operationsStr = ((_a = requestBody.get('operations')) === null || _a === void 0 ? void 0 : _a.toString()) || '{}';\n const operations = JSON.parse(operationsStr);\n const mapStr = ((_b = requestBody.get('map')) === null || _b === void 0 ? void 0 : _b.toString()) || '{}';\n const map = JSON.parse(mapStr);\n for (const fileIndex in map) {\n const file = requestBody.get(fileIndex);\n const keys = map[fileIndex];\n for (const key of keys) {\n dset(operations, key, file);\n }\n }\n return {\n operationName: operations.operationName,\n query: operations.query,\n variables: operations.variables,\n extensions: operations.extensions,\n };\n}\n", "import { isContentTypeMatch } from './utils.js';\nexport function isPOSTGraphQLStringRequest(request) {\n return (request.method === 'POST' &&\n isContentTypeMatch(request, 'application/graphql'));\n}\nexport async function parsePOSTGraphQLStringRequest(request) {\n const requestBody = await request.text();\n return {\n query: requestBody,\n };\n}\n", "export function useResultProcessor(options) {\n const isMatch = options.match || (() => true);\n return {\n onResultProcess({ request, result, setResultProcessor }) {\n if (isMatch(request, result)) {\n setResultProcessor(options.processResult);\n }\n },\n };\n}\n", "let encodeString;\nif (globalThis.Buffer) {\n encodeString = function encodeStringWithBuffer(str) {\n return globalThis.Buffer.from(str, 'utf8');\n };\n}\nelse {\n const textEncoder = new TextEncoder();\n encodeString = function encodeStringWithTextEncoder(str) {\n return textEncoder.encode(str);\n };\n}\nexport { encodeString };\n", "import { isAsyncIterable } from '@graphql-tools/utils';\nimport { encodeString } from '../../encodeString.js';\nexport function isRegularResult(request, result) {\n return !isAsyncIterable(result);\n}\nexport function processRegularResult(executionResult, fetchAPI) {\n const responseBody = JSON.stringify(executionResult);\n const decodedString = encodeString(responseBody);\n const headersInit = {\n 'Content-Type': 'application/json',\n 'Content-Length': decodedString.byteLength.toString(),\n };\n const responseInit = {\n headers: headersInit,\n status: 200,\n };\n return new fetchAPI.Response(decodedString, responseInit);\n}\n", "import { isAsyncIterable } from '@envelop/core';\nimport { encodeString } from '../../encodeString.js';\nexport function isPushResult(request, result) {\n var _a;\n return (isAsyncIterable(result) &&\n !!((_a = request.headers.get('accept')) === null || _a === void 0 ? void 0 : _a.includes('text/event-stream')));\n}\nexport function processPushResult(result, fetchAPI) {\n const headersInit = {\n 'Content-Type': 'text/event-stream',\n Connection: 'keep-alive',\n 'Cache-Control': 'no-cache',\n 'Content-Encoding': 'none',\n };\n const responseInit = {\n headers: headersInit,\n status: 200,\n };\n let iterator;\n const readableStream = new fetchAPI.ReadableStream({\n start() {\n iterator = result[Symbol.asyncIterator]();\n },\n async pull(controller) {\n const { done, value } = await iterator.next();\n if (value != null) {\n const chunk = JSON.stringify(value);\n controller.enqueue(encodeString(`data: ${chunk}\\n\\n`));\n }\n if (done) {\n controller.close();\n }\n },\n async cancel(e) {\n var _a;\n await ((_a = iterator.return) === null || _a === void 0 ? void 0 : _a.call(iterator, e));\n },\n });\n return new fetchAPI.Response(readableStream, responseInit);\n}\n", "import { isAsyncIterable } from '@envelop/core';\nimport { encodeString } from '../../encodeString.js';\nexport function isMultipartResult(request, result) {\n var _a;\n return (isAsyncIterable(result) &&\n !!((_a = request.headers.get('accept')) === null || _a === void 0 ? void 0 : _a.includes('multipart/mixed')));\n}\nexport function processMultipartResult(executionPatchResultIterable, fetchAPI) {\n const headersInit = {\n Connection: 'keep-alive',\n 'Content-Type': 'multipart/mixed; boundary=\"-\"',\n 'Transfer-Encoding': 'chunked',\n };\n const responseInit = {\n headers: headersInit,\n status: 200,\n };\n let iterator;\n const readableStream = new fetchAPI.ReadableStream({\n start(controller) {\n iterator = executionPatchResultIterable[Symbol.asyncIterator]();\n controller.enqueue(encodeString(`---`));\n },\n async pull(controller) {\n const { done, value } = await iterator.next();\n if (value != null) {\n controller.enqueue(encodeString('\\r\\n'));\n controller.enqueue(encodeString('Content-Type: application/json; charset=utf-8'));\n controller.enqueue(encodeString('\\r\\n'));\n const chunk = JSON.stringify(value);\n const encodedChunk = encodeString(chunk);\n controller.enqueue(encodeString('Content-Length: ' + encodedChunk.byteLength));\n controller.enqueue(encodeString('\\r\\n'));\n controller.enqueue(encodeString('\\r\\n'));\n controller.enqueue(encodedChunk);\n controller.enqueue(encodeString('\\r\\n'));\n controller.enqueue(encodeString('---'));\n }\n if (done) {\n controller.enqueue(encodeString('\\r\\n-----\\r\\n'));\n controller.close();\n }\n },\n async cancel(e) {\n var _a;\n await ((_a = iterator.return) === null || _a === void 0 ? void 0 : _a.call(iterator, e));\n },\n });\n return new fetchAPI.Response(readableStream, responseInit);\n}\n", "import { isContentTypeMatch, parseURLSearchParams } from './utils.js';\nexport function isPOSTFormUrlEncodedRequest(request) {\n return (request.method === 'POST' &&\n isContentTypeMatch(request, 'application/x-www-form-urlencoded'));\n}\nexport async function parsePOSTFormUrlEncodedRequest(request) {\n const requestBody = await request.text();\n return parseURLSearchParams(requestBody);\n}\n", "import { EnvelopError } from '@envelop/core';\nimport { createGraphQLError } from '@graphql-tools/utils';\nimport { GraphQLError } from 'graphql';\nexport { EnvelopError as GraphQLYogaError };\nfunction isAggregateError(obj) {\n return obj != null && typeof obj === 'object' && 'errors' in obj;\n}\nfunction hasToString(obj) {\n return obj != null && typeof obj.toString === 'function';\n}\nexport function handleError(error, errors = []) {\n if (isAggregateError(error)) {\n for (const singleError of error.errors) {\n errors.push(...handleError(singleError));\n }\n }\n else if (error instanceof GraphQLError) {\n errors.push(error);\n }\n else if (error instanceof Error) {\n errors.push(createGraphQLError(error.message));\n }\n else if (typeof error === 'string') {\n errors.push(createGraphQLError(error));\n }\n else if (hasToString(error)) {\n errors.push(createGraphQLError(error.toString()));\n }\n else {\n errors.push(createGraphQLError('Unexpected error!'));\n }\n return errors;\n}\n", "import { createGraphQLError } from '@graphql-tools/utils';\nexport function useCheckMethodForGraphQL() {\n return {\n onRequest({ request }) {\n if (request.method !== 'GET' && request.method !== 'POST') {\n throw createGraphQLError('GraphQL only supports GET and POST requests.', {\n extensions: {\n http: {\n status: 405,\n headers: {\n Allow: 'GET, POST',\n },\n },\n },\n });\n }\n },\n };\n}\n", "import { createGraphQLError } from '@graphql-tools/utils';\nexport function useCheckGraphQLQueryParam() {\n return {\n onRequestParse() {\n return {\n onRequestParseDone({ params }) {\n if (params.query == null) {\n throw createGraphQLError('Must provide query string.', {\n extensions: {\n http: {\n status: 400,\n headers: {\n Allow: 'GET, POST',\n },\n },\n },\n });\n }\n const queryParamType = typeof params.query;\n if (queryParamType !== 'string') {\n throw createGraphQLError(`Expected \"query\" to be \"string\" but given \"${queryParamType}\".`, {\n extensions: {\n http: {\n status: 400,\n headers: {\n Allow: 'GET, POST',\n },\n },\n },\n });\n }\n },\n };\n },\n };\n}\n", "import { AggregateError } from '@graphql-tools/utils';\nexport function useHTTPValidationError() {\n return {\n onValidate() {\n return ({ valid, result }) => {\n if (!valid) {\n result.forEach((error) => {\n error.extensions.http = {\n status: 400,\n };\n });\n throw new AggregateError(result);\n }\n };\n },\n };\n}\n", "import { createGraphQLError } from '@graphql-tools/utils';\nimport { getOperationAST, GraphQLError } from 'graphql';\nexport function usePreventMutationViaGET() {\n return {\n onParse() {\n // We should improve this by getting Yoga stuff from the hook params directly instead of the context\n return ({ result, context: { request, operationName } }) => {\n var _a;\n if (result instanceof Error) {\n if (result instanceof GraphQLError) {\n result.extensions.http = {\n status: 400,\n };\n }\n throw result;\n }\n const operation = result\n ? (_a = getOperationAST(result, operationName)) !== null && _a !== void 0 ? _a : undefined\n : undefined;\n if (!operation) {\n throw createGraphQLError('Could not determine what operation to execute.', {\n extensions: {\n http: {\n status: 400,\n },\n },\n });\n }\n if (operation.operation === 'mutation' && request.method === 'GET') {\n throw createGraphQLError('Can only perform a mutation operation from a POST request.', {\n extensions: {\n http: {\n status: 405,\n headers: {\n Allow: 'POST',\n },\n },\n },\n });\n }\n };\n },\n };\n}\n", "/// \n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nfunction __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nfunction __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nfunction __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\n\n/** An error subclass which is thrown when there are too many pending push or next operations on a single repeater. */\r\nvar RepeaterOverflowError = /** @class */ (function (_super) {\r\n __extends(RepeaterOverflowError, _super);\r\n function RepeaterOverflowError(message) {\r\n var _this = _super.call(this, message) || this;\r\n Object.defineProperty(_this, \"name\", {\r\n value: \"RepeaterOverflowError\",\r\n enumerable: false,\r\n });\r\n if (typeof Object.setPrototypeOf === \"function\") {\r\n Object.setPrototypeOf(_this, _this.constructor.prototype);\r\n }\r\n else {\r\n _this.__proto__ = _this.constructor.prototype;\r\n }\r\n if (typeof Error.captureStackTrace === \"function\") {\r\n Error.captureStackTrace(_this, _this.constructor);\r\n }\r\n return _this;\r\n }\r\n return RepeaterOverflowError;\r\n}(Error));\r\n/** A buffer which allows you to push a set amount of values to the repeater without pushes waiting or throwing errors. */\r\nvar FixedBuffer = /** @class */ (function () {\r\n function FixedBuffer(capacity) {\r\n if (capacity < 0) {\r\n throw new RangeError(\"Capacity may not be less than 0\");\r\n }\r\n this._c = capacity;\r\n this._q = [];\r\n }\r\n Object.defineProperty(FixedBuffer.prototype, \"empty\", {\r\n get: function () {\r\n return this._q.length === 0;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(FixedBuffer.prototype, \"full\", {\r\n get: function () {\r\n return this._q.length >= this._c;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n FixedBuffer.prototype.add = function (value) {\r\n if (this.full) {\r\n throw new Error(\"Buffer full\");\r\n }\r\n else {\r\n this._q.push(value);\r\n }\r\n };\r\n FixedBuffer.prototype.remove = function () {\r\n if (this.empty) {\r\n throw new Error(\"Buffer empty\");\r\n }\r\n return this._q.shift();\r\n };\r\n return FixedBuffer;\r\n}());\r\n// TODO: Use a circular buffer here.\r\n/** Sliding buffers allow you to push a set amount of values to the repeater without pushes waiting or throwing errors. If the number of values exceeds the capacity set in the constructor, the buffer will discard the earliest values added. */\r\nvar SlidingBuffer = /** @class */ (function () {\r\n function SlidingBuffer(capacity) {\r\n if (capacity < 1) {\r\n throw new RangeError(\"Capacity may not be less than 1\");\r\n }\r\n this._c = capacity;\r\n this._q = [];\r\n }\r\n Object.defineProperty(SlidingBuffer.prototype, \"empty\", {\r\n get: function () {\r\n return this._q.length === 0;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(SlidingBuffer.prototype, \"full\", {\r\n get: function () {\r\n return false;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n SlidingBuffer.prototype.add = function (value) {\r\n while (this._q.length >= this._c) {\r\n this._q.shift();\r\n }\r\n this._q.push(value);\r\n };\r\n SlidingBuffer.prototype.remove = function () {\r\n if (this.empty) {\r\n throw new Error(\"Buffer empty\");\r\n }\r\n return this._q.shift();\r\n };\r\n return SlidingBuffer;\r\n}());\r\n/** Dropping buffers allow you to push a set amount of values to the repeater without the push function waiting or throwing errors. If the number of values exceeds the capacity set in the constructor, the buffer will discard the latest values added. */\r\nvar DroppingBuffer = /** @class */ (function () {\r\n function DroppingBuffer(capacity) {\r\n if (capacity < 1) {\r\n throw new RangeError(\"Capacity may not be less than 1\");\r\n }\r\n this._c = capacity;\r\n this._q = [];\r\n }\r\n Object.defineProperty(DroppingBuffer.prototype, \"empty\", {\r\n get: function () {\r\n return this._q.length === 0;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DroppingBuffer.prototype, \"full\", {\r\n get: function () {\r\n return false;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n DroppingBuffer.prototype.add = function (value) {\r\n if (this._q.length < this._c) {\r\n this._q.push(value);\r\n }\r\n };\r\n DroppingBuffer.prototype.remove = function () {\r\n if (this.empty) {\r\n throw new Error(\"Buffer empty\");\r\n }\r\n return this._q.shift();\r\n };\r\n return DroppingBuffer;\r\n}());\r\n/** Makes sure promise-likes don\u2019t cause unhandled rejections. */\r\nfunction swallow(value) {\r\n if (value != null && typeof value.then === \"function\") {\r\n value.then(NOOP, NOOP);\r\n }\r\n}\r\n/*** REPEATER STATES ***/\r\n/** The following is an enumeration of all possible repeater states. These states are ordered, and a repeater may only advance to higher states. */\r\n/** The initial state of the repeater. */\r\nvar Initial = 0;\r\n/** Repeaters advance to this state the first time the next method is called on the repeater. */\r\nvar Started = 1;\r\n/** Repeaters advance to this state when the stop function is called. */\r\nvar Stopped = 2;\r\n/** Repeaters advance to this state when there are no values left to be pulled from the repeater. */\r\nvar Done = 3;\r\n/** Repeaters advance to this state if an error is thrown into the repeater. */\r\nvar Rejected = 4;\r\n/** The maximum number of push or next operations which may exist on a single repeater. */\r\nvar MAX_QUEUE_LENGTH = 1024;\r\nvar NOOP = function () { };\r\n/** A helper function used to mimic the behavior of async generators where the final iteration is consumed. */\r\nfunction consumeExecution(r) {\r\n var err = r.err;\r\n var execution = Promise.resolve(r.execution).then(function (value) {\r\n if (err != null) {\r\n throw err;\r\n }\r\n return value;\r\n });\r\n r.err = undefined;\r\n r.execution = execution.then(function () { return undefined; }, function () { return undefined; });\r\n return r.pending === undefined ? execution : r.pending.then(function () { return execution; });\r\n}\r\n/** A helper function for building iterations from values. Promises are unwrapped, so that iterations never have their value property set to a promise. */\r\nfunction createIteration(r, value) {\r\n var done = r.state >= Done;\r\n return Promise.resolve(value).then(function (value) {\r\n if (!done && r.state >= Rejected) {\r\n return consumeExecution(r).then(function (value) { return ({\r\n value: value,\r\n done: true,\r\n }); });\r\n }\r\n return { value: value, done: done };\r\n });\r\n}\r\n/**\r\n * This function is bound and passed to the executor as the stop argument.\r\n *\r\n * Advances state to Stopped.\r\n */\r\nfunction stop(r, err) {\r\n var e_1, _a;\r\n if (r.state >= Stopped) {\r\n return;\r\n }\r\n r.state = Stopped;\r\n r.onnext();\r\n r.onstop();\r\n if (r.err == null) {\r\n r.err = err;\r\n }\r\n if (r.pushes.length === 0 &&\r\n (typeof r.buffer === \"undefined\" || r.buffer.empty)) {\r\n finish(r);\r\n }\r\n else {\r\n try {\r\n for (var _b = __values(r.pushes), _d = _b.next(); !_d.done; _d = _b.next()) {\r\n var push_1 = _d.value;\r\n push_1.resolve();\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (_d && !_d.done && (_a = _b.return)) _a.call(_b);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n }\r\n}\r\n/**\r\n * The difference between stopping a repeater vs finishing a repeater is that stopping a repeater allows next to continue to drain values from the push queue and buffer, while finishing a repeater will clear all pending values and end iteration immediately. Once, a repeater is finished, all iterations will have the done property set to true.\r\n *\r\n * Advances state to Done.\r\n */\r\nfunction finish(r) {\r\n var e_2, _a;\r\n if (r.state >= Done) {\r\n return;\r\n }\r\n if (r.state < Stopped) {\r\n stop(r);\r\n }\r\n r.state = Done;\r\n r.buffer = undefined;\r\n try {\r\n for (var _b = __values(r.nexts), _d = _b.next(); !_d.done; _d = _b.next()) {\r\n var next = _d.value;\r\n var execution = r.pending === undefined\r\n ? consumeExecution(r)\r\n : r.pending.then(function () { return consumeExecution(r); });\r\n next.resolve(createIteration(r, execution));\r\n }\r\n }\r\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\r\n finally {\r\n try {\r\n if (_d && !_d.done && (_a = _b.return)) _a.call(_b);\r\n }\r\n finally { if (e_2) throw e_2.error; }\r\n }\r\n r.pushes = [];\r\n r.nexts = [];\r\n}\r\n/**\r\n * Called when a promise passed to push rejects, or when a push call is unhandled.\r\n *\r\n * Advances state to Rejected.\r\n */\r\nfunction reject(r) {\r\n if (r.state >= Rejected) {\r\n return;\r\n }\r\n if (r.state < Done) {\r\n finish(r);\r\n }\r\n r.state = Rejected;\r\n}\r\n/** This function is bound and passed to the executor as the push argument. */\r\nfunction push(r, value) {\r\n swallow(value);\r\n if (r.pushes.length >= MAX_QUEUE_LENGTH) {\r\n throw new RepeaterOverflowError(\"No more than \" + MAX_QUEUE_LENGTH + \" pending calls to push are allowed on a single repeater.\");\r\n }\r\n else if (r.state >= Stopped) {\r\n return Promise.resolve(undefined);\r\n }\r\n var valueP = r.pending === undefined\r\n ? Promise.resolve(value)\r\n : r.pending.then(function () { return value; });\r\n valueP = valueP.catch(function (err) {\r\n if (r.state < Stopped) {\r\n r.err = err;\r\n }\r\n reject(r);\r\n return undefined; // void :(\r\n });\r\n var nextP;\r\n if (r.nexts.length) {\r\n var next_1 = r.nexts.shift();\r\n next_1.resolve(createIteration(r, valueP));\r\n if (r.nexts.length) {\r\n nextP = Promise.resolve(r.nexts[0].value);\r\n }\r\n else {\r\n nextP = new Promise(function (resolve) { return (r.onnext = resolve); });\r\n }\r\n }\r\n else if (typeof r.buffer !== \"undefined\" && !r.buffer.full) {\r\n r.buffer.add(valueP);\r\n nextP = Promise.resolve(undefined);\r\n }\r\n else {\r\n nextP = new Promise(function (resolve) { return r.pushes.push({ resolve: resolve, value: valueP }); });\r\n }\r\n // If an error is thrown into the repeater via the next or throw methods, we give the repeater a chance to handle this by rejecting the promise returned from push. If the push call is not immediately handled we throw the next iteration of the repeater.\r\n // To check that the promise returned from push is floating, we modify the then and catch methods of the returned promise so that they flip the floating flag. The push function actually does not return a promise, because modern engines do not call the then and catch methods on native promises. By making next a plain old javascript object, we ensure that the then and catch methods will be called.\r\n var floating = true;\r\n var next = {};\r\n var unhandled = nextP.catch(function (err) {\r\n if (floating) {\r\n throw err;\r\n }\r\n return undefined; // void :(\r\n });\r\n next.then = function (onfulfilled, onrejected) {\r\n floating = false;\r\n return Promise.prototype.then.call(nextP, onfulfilled, onrejected);\r\n };\r\n next.catch = function (onrejected) {\r\n floating = false;\r\n return Promise.prototype.catch.call(nextP, onrejected);\r\n };\r\n next.finally = nextP.finally.bind(nextP);\r\n r.pending = valueP\r\n .then(function () { return unhandled; })\r\n .catch(function (err) {\r\n r.err = err;\r\n reject(r);\r\n });\r\n return next;\r\n}\r\n/**\r\n * Creates the stop callable promise which is passed to the executor\r\n */\r\nfunction createStop(r) {\r\n var stop1 = stop.bind(null, r);\r\n var stopP = new Promise(function (resolve) { return (r.onstop = resolve); });\r\n stop1.then = stopP.then.bind(stopP);\r\n stop1.catch = stopP.catch.bind(stopP);\r\n stop1.finally = stopP.finally.bind(stopP);\r\n return stop1;\r\n}\r\n/**\r\n * Calls the executor passed into the constructor. This function is called the first time the next method is called on the repeater.\r\n *\r\n * Advances state to Started.\r\n */\r\nfunction execute(r) {\r\n if (r.state >= Started) {\r\n return;\r\n }\r\n r.state = Started;\r\n var push1 = push.bind(null, r);\r\n var stop1 = createStop(r);\r\n r.execution = new Promise(function (resolve) { return resolve(r.executor(push1, stop1)); });\r\n // TODO: We should consider stopping all repeaters when the executor settles.\r\n r.execution.catch(function () { return stop(r); });\r\n}\r\nvar records = new WeakMap();\r\n// NOTE: While repeaters implement and are assignable to the AsyncGenerator interface, and you can use the types interchangeably, we don\u2019t use typescript\u2019s implements syntax here because this would make supporting earlier versions of typescript trickier. This is because TypeScript version 3.6 changed the iterator types by adding the TReturn and TNext type parameters.\r\nvar Repeater = /** @class */ (function () {\r\n function Repeater(executor, buffer) {\r\n records.set(this, {\r\n executor: executor,\r\n buffer: buffer,\r\n err: undefined,\r\n state: Initial,\r\n pushes: [],\r\n nexts: [],\r\n pending: undefined,\r\n execution: undefined,\r\n onnext: NOOP,\r\n onstop: NOOP,\r\n });\r\n }\r\n Repeater.prototype.next = function (value) {\r\n swallow(value);\r\n var r = records.get(this);\r\n if (r === undefined) {\r\n throw new Error(\"WeakMap error\");\r\n }\r\n if (r.nexts.length >= MAX_QUEUE_LENGTH) {\r\n throw new RepeaterOverflowError(\"No more than \" + MAX_QUEUE_LENGTH + \" pending calls to next are allowed on a single repeater.\");\r\n }\r\n if (r.state <= Initial) {\r\n execute(r);\r\n }\r\n r.onnext(value);\r\n if (typeof r.buffer !== \"undefined\" && !r.buffer.empty) {\r\n var result = createIteration(r, r.buffer.remove());\r\n if (r.pushes.length) {\r\n var push_2 = r.pushes.shift();\r\n r.buffer.add(push_2.value);\r\n r.onnext = push_2.resolve;\r\n }\r\n return result;\r\n }\r\n else if (r.pushes.length) {\r\n var push_3 = r.pushes.shift();\r\n r.onnext = push_3.resolve;\r\n return createIteration(r, push_3.value);\r\n }\r\n else if (r.state >= Stopped) {\r\n finish(r);\r\n return createIteration(r, consumeExecution(r));\r\n }\r\n return new Promise(function (resolve) { return r.nexts.push({ resolve: resolve, value: value }); });\r\n };\r\n Repeater.prototype.return = function (value) {\r\n swallow(value);\r\n var r = records.get(this);\r\n if (r === undefined) {\r\n throw new Error(\"WeakMap error\");\r\n }\r\n finish(r);\r\n // We override the execution because return should always return the value passed in.\r\n r.execution = Promise.resolve(r.execution).then(function () { return value; });\r\n return createIteration(r, consumeExecution(r));\r\n };\r\n Repeater.prototype.throw = function (err) {\r\n var r = records.get(this);\r\n if (r === undefined) {\r\n throw new Error(\"WeakMap error\");\r\n }\r\n if (r.state <= Initial ||\r\n r.state >= Stopped ||\r\n (typeof r.buffer !== \"undefined\" && !r.buffer.empty)) {\r\n finish(r);\r\n // If r.err is already set, that mean the repeater has already produced an error, so we throw that error rather than the error passed in, because doing so might be more informative for the caller.\r\n if (r.err == null) {\r\n r.err = err;\r\n }\r\n return createIteration(r, consumeExecution(r));\r\n }\r\n return this.next(Promise.reject(err));\r\n };\r\n Repeater.prototype[Symbol.asyncIterator] = function () {\r\n return this;\r\n };\r\n // TODO: Remove these static methods from the class.\r\n Repeater.race = race;\r\n Repeater.merge = merge;\r\n Repeater.zip = zip;\r\n Repeater.latest = latest;\r\n return Repeater;\r\n}());\r\n/*** COMBINATOR FUNCTIONS ***/\r\n// TODO: move these combinators to their own file.\r\nfunction getIterators(values, options) {\r\n var e_3, _a;\r\n var iters = [];\r\n var _loop_1 = function (value) {\r\n if (value != null && typeof value[Symbol.asyncIterator] === \"function\") {\r\n iters.push(value[Symbol.asyncIterator]());\r\n }\r\n else if (value != null && typeof value[Symbol.iterator] === \"function\") {\r\n iters.push(value[Symbol.iterator]());\r\n }\r\n else {\r\n iters.push((function valueToAsyncIterator() {\r\n return __asyncGenerator(this, arguments, function valueToAsyncIterator_1() {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!options.yieldValues) return [3 /*break*/, 3];\r\n return [4 /*yield*/, __await(value)];\r\n case 1: return [4 /*yield*/, _a.sent()];\r\n case 2:\r\n _a.sent();\r\n _a.label = 3;\r\n case 3:\r\n if (!options.returnValues) return [3 /*break*/, 5];\r\n return [4 /*yield*/, __await(value)];\r\n case 4: return [2 /*return*/, _a.sent()];\r\n case 5: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n })());\r\n }\r\n };\r\n try {\r\n for (var values_1 = __values(values), values_1_1 = values_1.next(); !values_1_1.done; values_1_1 = values_1.next()) {\r\n var value = values_1_1.value;\r\n _loop_1(value);\r\n }\r\n }\r\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\r\n finally {\r\n try {\r\n if (values_1_1 && !values_1_1.done && (_a = values_1.return)) _a.call(values_1);\r\n }\r\n finally { if (e_3) throw e_3.error; }\r\n }\r\n return iters;\r\n}\r\n// NOTE: whenever you see any variables called `advance` or `advances`, know that it is a hack to get around the fact that `Promise.race` leaks memory. These variables are intended to be set to the resolve function of a promise which is constructed and awaited as an alternative to Promise.race. For more information, see this comment in the Node.js issue tracker: https://github.com/nodejs/node/issues/17469#issuecomment-685216777.\r\nfunction race(contenders) {\r\n var _this = this;\r\n var iters = getIterators(contenders, { returnValues: true });\r\n return new Repeater(function (push, stop) { return __awaiter(_this, void 0, void 0, function () {\r\n var advance, stopped, finalIteration, iteration, i_1, _loop_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!iters.length) {\r\n stop();\r\n return [2 /*return*/];\r\n }\r\n stopped = false;\r\n stop.then(function () {\r\n advance();\r\n stopped = true;\r\n });\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, , 5, 7]);\r\n iteration = void 0;\r\n i_1 = 0;\r\n _loop_2 = function () {\r\n var j, iters_1, iters_1_1, iter;\r\n var e_4, _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n j = i_1;\r\n try {\r\n for (iters_1 = (e_4 = void 0, __values(iters)), iters_1_1 = iters_1.next(); !iters_1_1.done; iters_1_1 = iters_1.next()) {\r\n iter = iters_1_1.value;\r\n Promise.resolve(iter.next()).then(function (iteration) {\r\n if (iteration.done) {\r\n stop();\r\n if (finalIteration === undefined) {\r\n finalIteration = iteration;\r\n }\r\n }\r\n else if (i_1 === j) {\r\n // This iterator has won, advance i and resolve the promise.\r\n i_1++;\r\n advance(iteration);\r\n }\r\n }, function (err) { return stop(err); });\r\n }\r\n }\r\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\r\n finally {\r\n try {\r\n if (iters_1_1 && !iters_1_1.done && (_a = iters_1.return)) _a.call(iters_1);\r\n }\r\n finally { if (e_4) throw e_4.error; }\r\n }\r\n return [4 /*yield*/, new Promise(function (resolve) { return (advance = resolve); })];\r\n case 1:\r\n iteration = _b.sent();\r\n if (!(iteration !== undefined)) return [3 /*break*/, 3];\r\n return [4 /*yield*/, push(iteration.value)];\r\n case 2:\r\n _b.sent();\r\n _b.label = 3;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n };\r\n _a.label = 2;\r\n case 2:\r\n if (!!stopped) return [3 /*break*/, 4];\r\n return [5 /*yield**/, _loop_2()];\r\n case 3:\r\n _a.sent();\r\n return [3 /*break*/, 2];\r\n case 4: return [2 /*return*/, finalIteration && finalIteration.value];\r\n case 5:\r\n stop();\r\n return [4 /*yield*/, Promise.race(iters.map(function (iter) { return iter.return && iter.return(); }))];\r\n case 6:\r\n _a.sent();\r\n return [7 /*endfinally*/];\r\n case 7: return [2 /*return*/];\r\n }\r\n });\r\n }); });\r\n}\r\nfunction merge(contenders) {\r\n var _this = this;\r\n var iters = getIterators(contenders, { yieldValues: true });\r\n return new Repeater(function (push, stop) { return __awaiter(_this, void 0, void 0, function () {\r\n var advances, stopped, finalIteration;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!iters.length) {\r\n stop();\r\n return [2 /*return*/];\r\n }\r\n advances = [];\r\n stopped = false;\r\n stop.then(function () {\r\n var e_5, _a;\r\n stopped = true;\r\n try {\r\n for (var advances_1 = __values(advances), advances_1_1 = advances_1.next(); !advances_1_1.done; advances_1_1 = advances_1.next()) {\r\n var advance = advances_1_1.value;\r\n advance();\r\n }\r\n }\r\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\r\n finally {\r\n try {\r\n if (advances_1_1 && !advances_1_1.done && (_a = advances_1.return)) _a.call(advances_1);\r\n }\r\n finally { if (e_5) throw e_5.error; }\r\n }\r\n });\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, , 3, 4]);\r\n return [4 /*yield*/, Promise.all(iters.map(function (iter, i) { return __awaiter(_this, void 0, void 0, function () {\r\n var iteration, _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n _b.trys.push([0, , 6, 9]);\r\n _b.label = 1;\r\n case 1:\r\n if (!!stopped) return [3 /*break*/, 5];\r\n Promise.resolve(iter.next()).then(function (iteration) { return advances[i](iteration); }, function (err) { return stop(err); });\r\n return [4 /*yield*/, new Promise(function (resolve) {\r\n advances[i] = resolve;\r\n })];\r\n case 2:\r\n iteration = _b.sent();\r\n if (!(iteration !== undefined)) return [3 /*break*/, 4];\r\n if (iteration.done) {\r\n finalIteration = iteration;\r\n return [2 /*return*/];\r\n }\r\n return [4 /*yield*/, push(iteration.value)];\r\n case 3:\r\n _b.sent();\r\n _b.label = 4;\r\n case 4: return [3 /*break*/, 1];\r\n case 5: return [3 /*break*/, 9];\r\n case 6:\r\n _a = iter.return;\r\n if (!_a) return [3 /*break*/, 8];\r\n return [4 /*yield*/, iter.return()];\r\n case 7:\r\n _a = (_b.sent());\r\n _b.label = 8;\r\n case 8:\r\n return [7 /*endfinally*/];\r\n case 9: return [2 /*return*/];\r\n }\r\n });\r\n }); }))];\r\n case 2:\r\n _a.sent();\r\n return [2 /*return*/, finalIteration && finalIteration.value];\r\n case 3:\r\n stop();\r\n return [7 /*endfinally*/];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n }); });\r\n}\r\nfunction zip(contenders) {\r\n var _this = this;\r\n var iters = getIterators(contenders, { returnValues: true });\r\n return new Repeater(function (push, stop) { return __awaiter(_this, void 0, void 0, function () {\r\n var advance, stopped, iterations, values;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!iters.length) {\r\n stop();\r\n return [2 /*return*/, []];\r\n }\r\n stopped = false;\r\n stop.then(function () {\r\n advance();\r\n stopped = true;\r\n });\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, , 6, 8]);\r\n _a.label = 2;\r\n case 2:\r\n if (!!stopped) return [3 /*break*/, 5];\r\n Promise.all(iters.map(function (iter) { return iter.next(); })).then(function (iterations) { return advance(iterations); }, function (err) { return stop(err); });\r\n return [4 /*yield*/, new Promise(function (resolve) { return (advance = resolve); })];\r\n case 3:\r\n iterations = _a.sent();\r\n if (iterations === undefined) {\r\n return [2 /*return*/];\r\n }\r\n values = iterations.map(function (iteration) { return iteration.value; });\r\n if (iterations.some(function (iteration) { return iteration.done; })) {\r\n return [2 /*return*/, values];\r\n }\r\n return [4 /*yield*/, push(values)];\r\n case 4:\r\n _a.sent();\r\n return [3 /*break*/, 2];\r\n case 5: return [3 /*break*/, 8];\r\n case 6:\r\n stop();\r\n return [4 /*yield*/, Promise.all(iters.map(function (iter) { return iter.return && iter.return(); }))];\r\n case 7:\r\n _a.sent();\r\n return [7 /*endfinally*/];\r\n case 8: return [2 /*return*/];\r\n }\r\n });\r\n }); });\r\n}\r\nfunction latest(contenders) {\r\n var _this = this;\r\n var iters = getIterators(contenders, {\r\n yieldValues: true,\r\n returnValues: true,\r\n });\r\n return new Repeater(function (push, stop) { return __awaiter(_this, void 0, void 0, function () {\r\n var advance, advances, stopped, iterations_1, values_2;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!iters.length) {\r\n stop();\r\n return [2 /*return*/, []];\r\n }\r\n advances = [];\r\n stopped = false;\r\n stop.then(function () {\r\n var e_6, _a;\r\n advance();\r\n try {\r\n for (var advances_2 = __values(advances), advances_2_1 = advances_2.next(); !advances_2_1.done; advances_2_1 = advances_2.next()) {\r\n var advance1 = advances_2_1.value;\r\n advance1();\r\n }\r\n }\r\n catch (e_6_1) { e_6 = { error: e_6_1 }; }\r\n finally {\r\n try {\r\n if (advances_2_1 && !advances_2_1.done && (_a = advances_2.return)) _a.call(advances_2);\r\n }\r\n finally { if (e_6) throw e_6.error; }\r\n }\r\n stopped = true;\r\n });\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, , 5, 7]);\r\n Promise.all(iters.map(function (iter) { return iter.next(); })).then(function (iterations) { return advance(iterations); }, function (err) { return stop(err); });\r\n return [4 /*yield*/, new Promise(function (resolve) { return (advance = resolve); })];\r\n case 2:\r\n iterations_1 = _a.sent();\r\n if (iterations_1 === undefined) {\r\n return [2 /*return*/];\r\n }\r\n values_2 = iterations_1.map(function (iteration) { return iteration.value; });\r\n if (iterations_1.every(function (iteration) { return iteration.done; })) {\r\n return [2 /*return*/, values_2];\r\n }\r\n // We continuously yield and mutate the same values array so we shallow copy it each time it is pushed.\r\n return [4 /*yield*/, push(values_2.slice())];\r\n case 3:\r\n // We continuously yield and mutate the same values array so we shallow copy it each time it is pushed.\r\n _a.sent();\r\n return [4 /*yield*/, Promise.all(iters.map(function (iter, i) { return __awaiter(_this, void 0, void 0, function () {\r\n var iteration;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (iterations_1[i].done) {\r\n return [2 /*return*/, iterations_1[i].value];\r\n }\r\n _a.label = 1;\r\n case 1:\r\n if (!!stopped) return [3 /*break*/, 4];\r\n Promise.resolve(iter.next()).then(function (iteration) { return advances[i](iteration); }, function (err) { return stop(err); });\r\n return [4 /*yield*/, new Promise(function (resolve) { return (advances[i] = resolve); })];\r\n case 2:\r\n iteration = _a.sent();\r\n if (iteration === undefined) {\r\n return [2 /*return*/, iterations_1[i].value];\r\n }\r\n else if (iteration.done) {\r\n return [2 /*return*/, iteration.value];\r\n }\r\n values_2[i] = iteration.value;\r\n return [4 /*yield*/, push(values_2.slice())];\r\n case 3:\r\n _a.sent();\r\n return [3 /*break*/, 1];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n }); }))];\r\n case 4: return [2 /*return*/, _a.sent()];\r\n case 5:\r\n stop();\r\n return [4 /*yield*/, Promise.all(iters.map(function (iter) { return iter.return && iter.return(); }))];\r\n case 6:\r\n _a.sent();\r\n return [7 /*endfinally*/];\r\n case 7: return [2 /*return*/];\r\n }\r\n });\r\n }); });\r\n}\n\nexport { DroppingBuffer, FixedBuffer, MAX_QUEUE_LENGTH, Repeater, RepeaterOverflowError, SlidingBuffer };\n//# sourceMappingURL=repeater.js.map\n"], - "mappings": "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A,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA;AAAA;;;ACtLA;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,QAAQ;AAChB,YAAQ,uBAAuBC;AAC/B,YAAQ,aAAaC;AACrB,YAAQ,QAAQC;AAChB,YAAQ,kBAAkBC;AAE1B,QAAI,aAAa;AAEjB,QAAI,WAAW;AAEf,QAAI,OAAO;AAEX,QAAI,SAAS;AAEb,QAAMC,SAAQ,OAAO,OAAO,CAAC,CAAC;AAgF9B,YAAQ,QAAQA;AAEhB,aAASF,OAAM,MAAM,SAAS,cAAc,KAAK,mBAAmB;AAClE,YAAM,gBAAgB,oBAAI,IAAI;AAE9B,iBAAW,QAAQ,OAAO,OAAO,OAAO,IAAI,GAAG;AAC7C,sBAAc,IAAI,MAAMF,sBAAqB,SAAS,IAAI,CAAC;AAAA,MAC7D;AAGA,UAAI,QAAQ;AACZ,UAAI,UAAU,MAAM,QAAQ,IAAI;AAChC,UAAI,OAAO,CAAC,IAAI;AAChB,UAAI,QAAQ;AACZ,UAAI,QAAQ,CAAC;AACb,UAAI,OAAO;AACX,UAAI,MAAM;AACV,UAAI,SAAS;AACb,YAAM,OAAO,CAAC;AACd,YAAM,YAAY,CAAC;AAGnB,SAAG;AACD;AACA,cAAM,YAAY,UAAU,KAAK;AACjC,cAAM,WAAW,aAAa,MAAM,WAAW;AAE/C,YAAI,WAAW;AACb,gBAAM,UAAU,WAAW,IAAI,SAAY,KAAK,KAAK,SAAS;AAC9D,iBAAO;AACP,mBAAS,UAAU,IAAI;AAEvB,cAAI,UAAU;AACZ,gBAAI,SAAS;AACX,qBAAO,KAAK,MAAM;AAClB,kBAAI,aAAa;AAEjB,yBAAW,CAAC,SAAS,SAAS,KAAK,OAAO;AACxC,sBAAM,WAAW,UAAU;AAE3B,oBAAI,cAAc,MAAM;AACtB,uBAAK,OAAO,UAAU,CAAC;AACvB;AAAA,gBACF,OAAO;AACL,uBAAK,YAAY;AAAA,gBACnB;AAAA,cACF;AAAA,YACF,OAAO;AACL,qBAAO,OAAO;AAAA,gBACZ,CAAC;AAAA,gBACD,OAAO,0BAA0B,IAAI;AAAA,cACvC;AAEA,yBAAW,CAAC,SAAS,SAAS,KAAK,OAAO;AACxC,qBAAK,WAAW;AAAA,cAClB;AAAA,YACF;AAAA,UACF;AAEA,kBAAQ,MAAM;AACd,iBAAO,MAAM;AACb,kBAAQ,MAAM;AACd,oBAAU,MAAM;AAChB,kBAAQ,MAAM;AAAA,QAChB,WAAW,QAAQ;AACjB,gBAAM,UAAU,QAAQ,KAAK;AAC7B,iBAAO,OAAO;AAEd,cAAI,SAAS,QAAQ,SAAS,QAAW;AACvC;AAAA,UACF;AAEA,eAAK,KAAK,GAAG;AAAA,QACf;AAEA,YAAI;AAEJ,YAAI,CAAC,MAAM,QAAQ,IAAI,GAAG;AACxB,cAAI,oBAAoB;AAExB,WAAC,GAAG,KAAK,QAAQ,IAAI,MAClB,GAAG,WAAW;AAAA,YACb;AAAA,YACA,sBAAsB,GAAG,SAAS,SAAS,IAAI;AAAA,UACjD;AACF,gBAAM,UAAU,aACX,qBAAqB,cAAc,IAAI,KAAK,IAAI,OAAO,QACxD,uBAAuB,SACrB,SACA,mBAAmB,SACpB,sBAAsB,cAAc,IAAI,KAAK,IAAI,OAAO,QACzD,wBAAwB,SACxB,SACA,oBAAoB;AACxB,mBACE,YAAY,QAAQ,YAAY,SAC5B,SACA,QAAQ,KAAK,SAAS,MAAM,KAAK,QAAQ,MAAM,SAAS;AAE9D,cAAI,WAAWI,QAAO;AACpB;AAAA,UACF;AAEA,cAAI,WAAW,OAAO;AACpB,gBAAI,CAAC,WAAW;AACd,mBAAK,IAAI;AACT;AAAA,YACF;AAAA,UACF,WAAW,WAAW,QAAW;AAC/B,kBAAM,KAAK,CAAC,KAAK,MAAM,CAAC;AAExB,gBAAI,CAAC,WAAW;AACd,mBAAK,GAAG,KAAK,QAAQ,MAAM,GAAG;AAC5B,uBAAO;AAAA,cACT,OAAO;AACL,qBAAK,IAAI;AACT;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,YAAI,WAAW,UAAa,UAAU;AACpC,gBAAM,KAAK,CAAC,KAAK,IAAI,CAAC;AAAA,QACxB;AAEA,YAAI,WAAW;AACb,eAAK,IAAI;AAAA,QACX,OAAO;AACL,cAAI;AAEJ,kBAAQ;AAAA,YACN;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,MAAM;AAAA,UACR;AACA,oBAAU,MAAM,QAAQ,IAAI;AAC5B,iBAAO,UACH,QACC,aAAa,YAAY,KAAK,WAAW,QAC1C,eAAe,SACf,aACA,CAAC;AACL,kBAAQ;AACR,kBAAQ,CAAC;AAET,cAAI,QAAQ;AACV,sBAAU,KAAK,MAAM;AAAA,UACvB;AAEA,mBAAS;AAAA,QACX;AAAA,MACF,SAAS,UAAU;AAEnB,UAAI,MAAM,WAAW,GAAG;AAEtB,eAAO,MAAM,MAAM,SAAS,GAAG;AAAA,MACjC;AAEA,aAAO;AAAA,IACT;AAQA,aAASD,iBAAgB,UAAU;AACjC,YAAM,WAAW,IAAI,MAAM,SAAS,MAAM,EAAE,KAAK,IAAI;AACrD,YAAM,gBAAgB,uBAAO,OAAO,IAAI;AAExC,iBAAW,QAAQ,OAAO,OAAO,OAAO,IAAI,GAAG;AAC7C,YAAI,aAAa;AACjB,cAAM,YAAY,IAAI,MAAM,SAAS,MAAM,EAAE,KAAK,MAAS;AAC3D,cAAM,YAAY,IAAI,MAAM,SAAS,MAAM,EAAE,KAAK,MAAS;AAE3D,iBAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,EAAE,GAAG;AACxC,gBAAM,EAAE,OAAO,MAAM,IAAIH,sBAAqB,SAAS,IAAI,IAAI;AAC/D,yBAAe,aAAa,SAAS,QAAQ,SAAS;AACtD,oBAAU,KAAK;AACf,oBAAU,KAAK;AAAA,QACjB;AAEA,YAAI,CAAC,YAAY;AACf;AAAA,QACF;AAEA,cAAM,mBAAmB;AAAA,UACvB,SAAS,MAAM;AACb,kBAAM,OAAO,KAAK;AAElB,qBAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,kBAAI,SAAS,OAAO,MAAM;AACxB,oBAAI;AAEJ,sBAAM,UACH,eAAe,UAAU,QAAQ,QAAQ,iBAAiB,SACvD,SACA,aAAa,MAAM,SAAS,IAAI,IAAI;AAE1C,oBAAI,WAAW,OAAO;AACpB,2BAAS,KAAK;AAAA,gBAChB,WAAW,WAAWI,QAAO;AAC3B,2BAAS,KAAKA;AAAA,gBAChB,WAAW,WAAW,QAAW;AAC/B,yBAAO;AAAA,gBACT;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,UAEA,SAAS,MAAM;AACb,kBAAM,OAAO,KAAK;AAElB,qBAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,kBAAI,SAAS,OAAO,MAAM;AACxB,oBAAI;AAEJ,sBAAM,UACH,eAAe,UAAU,QAAQ,QAAQ,iBAAiB,SACvD,SACA,aAAa,MAAM,SAAS,IAAI,IAAI;AAE1C,oBAAI,WAAWA,QAAO;AACpB,2BAAS,KAAKA;AAAA,gBAChB,WAAW,WAAW,UAAa,WAAW,OAAO;AACnD,yBAAO;AAAA,gBACT;AAAA,cACF,WAAW,SAAS,OAAO,MAAM;AAC/B,yBAAS,KAAK;AAAA,cAChB;AAAA,YACF;AAAA,UACF;AAAA,QACF;AACA,sBAAc,QAAQ;AAAA,MACxB;AAEA,aAAO;AAAA,IACT;AAKA,aAASJ,sBAAqB,SAAS,MAAM;AAC3C,YAAM,cAAc,QAAQ;AAE5B,UAAI,OAAO,gBAAgB,UAAU;AAEnC,eAAO;AAAA,MACT,WAAW,OAAO,gBAAgB,YAAY;AAE5C,eAAO;AAAA,UACL,OAAO;AAAA,UACP,OAAO;AAAA,QACT;AAAA,MACF;AAEA,aAAO;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,OAAO,QAAQ;AAAA,MACjB;AAAA,IACF;AAUA,aAASC,YAAW,SAAS,MAAM,WAAW;AAC5C,YAAM,EAAE,OAAO,MAAM,IAAID,sBAAqB,SAAS,IAAI;AAC3D,aAAO,YAAY,QAAQ;AAAA,IAC7B;AAAA;AAAA;;;ACxXA;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,QAAQK;AAEhB,QAAI,eAAe;AAEnB,QAAI,eAAe;AAEnB,QAAI,WAAW;AAMf,aAASA,OAAM,KAAK;AAClB,cAAQ,GAAG,SAAS,OAAO,KAAKC,mBAAkB;AAAA,IACpD;AAEA,QAAMC,mBAAkB;AACxB,QAAMD,sBAAqB;AAAA,MACzB,MAAM;AAAA,QACJ,OAAO,CAAC,SAAS,KAAK;AAAA,MACxB;AAAA,MACA,UAAU;AAAA,QACR,OAAO,CAAC,SAAS,MAAM,KAAK;AAAA,MAC9B;AAAA,MAEA,UAAU;AAAA,QACR,OAAO,CAAC,SAASE,MAAK,KAAK,aAAa,MAAM;AAAA,MAChD;AAAA,MACA,qBAAqB;AAAA,QACnB,MAAM,MAAM;AACV,gBAAM,UAAUC,MAAK,KAAKD,MAAK,KAAK,qBAAqB,IAAI,GAAG,GAAG;AACnE,gBAAME,UAASF;AAAA,YACb;AAAA,cACE,KAAK;AAAA,cACLA,MAAK,CAAC,KAAK,MAAM,OAAO,CAAC;AAAA,cACzBA,MAAK,KAAK,YAAY,GAAG;AAAA,YAC3B;AAAA,YACA;AAAA,UACF;AAGA,kBAAQE,YAAW,UAAU,KAAKA,UAAS,OAAO,KAAK;AAAA,QACzD;AAAA,MACF;AAAA,MACA,oBAAoB;AAAA,QAClB,OAAO,CAAC,EAAE,UAAU,MAAM,cAAc,WAAW,MACjD,WACA,OACA,OACAD,MAAK,OAAO,YAAY,IACxBA,MAAK,KAAKD,MAAK,YAAY,GAAG,CAAC;AAAA,MACnC;AAAA,MACA,cAAc;AAAA,QACZ,OAAO,CAAC,EAAE,WAAW,MAAMG,OAAM,UAAU;AAAA,MAC7C;AAAA,MACA,OAAO;AAAA,QACL,MAAM,EAAE,OAAO,MAAM,WAAW,MAAM,YAAY,aAAa,GAAG;AAChE,gBAAMD,UAASD,MAAK,IAAI,OAAO,IAAI,IAAI;AACvC,cAAI,WAAWC,UAASD,MAAK,KAAKD,MAAK,MAAM,IAAI,GAAG,GAAG;AAEvD,cAAI,SAAS,SAASD,kBAAiB;AACrC,uBAAWG,UAASD,MAAK,OAAOG,QAAOJ,MAAK,MAAM,IAAI,CAAC,GAAG,KAAK;AAAA,UACjE;AAEA,iBAAOA,MAAK,CAAC,UAAUA,MAAK,YAAY,GAAG,GAAG,YAAY,GAAG,GAAG;AAAA,QAClE;AAAA,MACF;AAAA,MACA,UAAU;AAAA,QACR,OAAO,CAAC,EAAE,MAAM,MAAM,MAAM,OAAO,OAAO;AAAA,MAC5C;AAAA,MAEA,gBAAgB;AAAA,QACd,OAAO,CAAC,EAAE,MAAM,WAAW,MACzB,QAAQ,OAAOC,MAAK,KAAKD,MAAK,YAAY,GAAG,CAAC;AAAA,MAClD;AAAA,MACA,gBAAgB;AAAA,QACd,OAAO,CAAC,EAAE,eAAe,YAAY,aAAa,MAChDA;AAAA,UACE;AAAA,YACE;AAAA,YACAC,MAAK,OAAO,aAAa;AAAA,YACzBD,MAAK,YAAY,GAAG;AAAA,YACpB;AAAA,UACF;AAAA,UACA;AAAA,QACF;AAAA,MACJ;AAAA,MACA,oBAAoB;AAAA,QAClB,OAAO,CACL,EAAE,MAAM,eAAe,qBAAqB,YAAY,aAAa,MAGrE,YAAY,OAAOC,MAAK,KAAKD,MAAK,qBAAqB,IAAI,GAAG,GAAG,QAC3D,iBAAiBC,MAAK,IAAID,MAAK,YAAY,GAAG,GAAG,GAAG,MAC1D;AAAA,MACJ;AAAA,MAEA,UAAU;AAAA,QACR,OAAO,CAAC,EAAE,MAAM,MAAM;AAAA,MACxB;AAAA,MACA,YAAY;AAAA,QACV,OAAO,CAAC,EAAE,MAAM,MAAM;AAAA,MACxB;AAAA,MACA,aAAa;AAAA,QACX,OAAO,CAAC,EAAE,OAAO,OAAO,cAAc,MACpC,iBACK,GAAG,aAAa,kBAAkB,KAAK,KACvC,GAAG,aAAa,aAAa,KAAK;AAAA,MAC3C;AAAA,MACA,cAAc;AAAA,QACZ,OAAO,CAAC,EAAE,MAAM,MAAO,QAAQ,SAAS;AAAA,MAC1C;AAAA,MACA,WAAW;AAAA,QACT,OAAO,MAAM;AAAA,MACf;AAAA,MACA,WAAW;AAAA,QACT,OAAO,CAAC,EAAE,MAAM,MAAM;AAAA,MACxB;AAAA,MACA,WAAW;AAAA,QACT,OAAO,CAAC,EAAE,OAAO,MAAM,MAAMA,MAAK,QAAQ,IAAI,IAAI;AAAA,MACpD;AAAA,MACA,aAAa;AAAA,QACX,OAAO,CAAC,EAAE,OAAO,MAAM,MAAMA,MAAK,QAAQ,IAAI,IAAI;AAAA,MACpD;AAAA,MACA,aAAa;AAAA,QACX,OAAO,CAAC,EAAE,MAAM,MAAM,MAAM,OAAO,OAAO;AAAA,MAC5C;AAAA,MAEA,WAAW;AAAA,QACT,OAAO,CAAC,EAAE,MAAM,WAAW,KAAK,MAC9B,MAAM,OAAOC,MAAK,KAAKD,MAAK,MAAM,IAAI,GAAG,GAAG;AAAA,MAChD;AAAA,MAEA,WAAW;AAAA,QACT,OAAO,CAAC,EAAE,KAAK,MAAM;AAAA,MACvB;AAAA,MACA,UAAU;AAAA,QACR,OAAO,CAAC,EAAE,KAAK,MAAM,MAAM,OAAO;AAAA,MACpC;AAAA,MACA,aAAa;AAAA,QACX,OAAO,CAAC,EAAE,KAAK,MAAM,OAAO;AAAA,MAC9B;AAAA,MAEA,kBAAkB;AAAA,QAChB,OAAO,CAAC,EAAE,aAAa,YAAY,eAAe,MAChDC,MAAK,IAAI,aAAa,IAAI,IAC1BD,MAAK,CAAC,UAAUA,MAAK,YAAY,GAAG,GAAGG,OAAM,cAAc,CAAC,GAAG,GAAG;AAAA,MACtE;AAAA,MACA,yBAAyB;AAAA,QACvB,OAAO,CAAC,EAAE,WAAW,KAAK,MAAM,YAAY,OAAO;AAAA,MACrD;AAAA,MACA,sBAAsB;AAAA,QACpB,OAAO,CAAC,EAAE,aAAa,MAAM,WAAW,MACtCF,MAAK,IAAI,aAAa,IAAI,IAC1BD,MAAK,CAAC,UAAU,MAAMA,MAAK,YAAY,GAAG,CAAC,GAAG,GAAG;AAAA,MACrD;AAAA,MACA,sBAAsB;AAAA,QACpB,OAAO,CAAC,EAAE,aAAa,MAAM,YAAY,YAAY,OAAO,MAC1DC,MAAK,IAAI,aAAa,IAAI,IAC1BD;AAAA,UACE;AAAA,YACE;AAAA,YACA;AAAA,YACAC,MAAK,eAAeD,MAAK,YAAY,KAAK,CAAC;AAAA,YAC3CA,MAAK,YAAY,GAAG;AAAA,YACpBG,OAAM,MAAM;AAAA,UACd;AAAA,UACA;AAAA,QACF;AAAA,MACJ;AAAA,MACA,iBAAiB;AAAA,QACf,OAAO,CAAC,EAAE,aAAa,MAAM,WAAW,MAAM,MAAM,WAAW,MAC7DF,MAAK,IAAI,aAAa,IAAI,IAC1B,QACCI,mBAAkB,IAAI,IACnBJ,MAAK,OAAOG,QAAOJ,MAAK,MAAM,IAAI,CAAC,GAAG,KAAK,IAC3CC,MAAK,KAAKD,MAAK,MAAM,IAAI,GAAG,GAAG,KACnC,OACA,OACAC,MAAK,KAAKD,MAAK,YAAY,GAAG,CAAC;AAAA,MACnC;AAAA,MACA,sBAAsB;AAAA,QACpB,OAAO,CAAC,EAAE,aAAa,MAAM,MAAM,cAAc,WAAW,MAC1DC,MAAK,IAAI,aAAa,IAAI,IAC1BD;AAAA,UACE,CAAC,OAAO,OAAO,MAAMC,MAAK,MAAM,YAAY,GAAGD,MAAK,YAAY,GAAG,CAAC;AAAA,UACpE;AAAA,QACF;AAAA,MACJ;AAAA,MACA,yBAAyB;AAAA,QACvB,OAAO,CAAC,EAAE,aAAa,MAAM,YAAY,YAAY,OAAO,MAC1DC,MAAK,IAAI,aAAa,IAAI,IAC1BD;AAAA,UACE;AAAA,YACE;AAAA,YACA;AAAA,YACAC,MAAK,eAAeD,MAAK,YAAY,KAAK,CAAC;AAAA,YAC3CA,MAAK,YAAY,GAAG;AAAA,YACpBG,OAAM,MAAM;AAAA,UACd;AAAA,UACA;AAAA,QACF;AAAA,MACJ;AAAA,MACA,qBAAqB;AAAA,QACnB,OAAO,CAAC,EAAE,aAAa,MAAM,YAAY,MAAM,MAC7CF,MAAK,IAAI,aAAa,IAAI,IAC1BD;AAAA,UACE,CAAC,SAAS,MAAMA,MAAK,YAAY,GAAG,GAAGC,MAAK,MAAMD,MAAK,OAAO,KAAK,CAAC,CAAC;AAAA,UACrE;AAAA,QACF;AAAA,MACJ;AAAA,MACA,oBAAoB;AAAA,QAClB,OAAO,CAAC,EAAE,aAAa,MAAM,YAAY,OAAO,MAC9CC,MAAK,IAAI,aAAa,IAAI,IAC1BD,MAAK,CAAC,QAAQ,MAAMA,MAAK,YAAY,GAAG,GAAGG,OAAM,MAAM,CAAC,GAAG,GAAG;AAAA,MAClE;AAAA,MACA,qBAAqB;AAAA,QACnB,OAAO,CAAC,EAAE,aAAa,MAAM,WAAW,MACtCF,MAAK,IAAI,aAAa,IAAI,IAAID,MAAK,CAAC,MAAMA,MAAK,YAAY,GAAG,CAAC,GAAG,GAAG;AAAA,MACzE;AAAA,MACA,2BAA2B;AAAA,QACzB,OAAO,CAAC,EAAE,aAAa,MAAM,YAAY,OAAO,MAC9CC,MAAK,IAAI,aAAa,IAAI,IAC1BD,MAAK,CAAC,SAAS,MAAMA,MAAK,YAAY,GAAG,GAAGG,OAAM,MAAM,CAAC,GAAG,GAAG;AAAA,MACnE;AAAA,MACA,qBAAqB;AAAA,QACnB,OAAO,CAAC,EAAE,aAAa,MAAM,WAAW,MAAM,YAAY,UAAU,MAClEF,MAAK,IAAI,aAAa,IAAI,IAC1B,gBACA,QACCI,mBAAkB,IAAI,IACnBJ,MAAK,OAAOG,QAAOJ,MAAK,MAAM,IAAI,CAAC,GAAG,KAAK,IAC3CC,MAAK,KAAKD,MAAK,MAAM,IAAI,GAAG,GAAG,MAClC,aAAa,gBAAgB,MAC9B,SACAA,MAAK,WAAW,KAAK;AAAA,MACzB;AAAA,MACA,iBAAiB;AAAA,QACf,OAAO,CAAC,EAAE,YAAY,eAAe,MACnCA;AAAA,UACE,CAAC,iBAAiBA,MAAK,YAAY,GAAG,GAAGG,OAAM,cAAc,CAAC;AAAA,UAC9D;AAAA,QACF;AAAA,MACJ;AAAA,MACA,qBAAqB;AAAA,QACnB,OAAO,CAAC,EAAE,MAAM,WAAW,MACzBH,MAAK,CAAC,iBAAiB,MAAMA,MAAK,YAAY,GAAG,CAAC,GAAG,GAAG;AAAA,MAC5D;AAAA,MACA,qBAAqB;AAAA,QACnB,OAAO,CAAC,EAAE,MAAM,YAAY,YAAY,OAAO,MAC7CA;AAAA,UACE;AAAA,YACE;AAAA,YACA;AAAA,YACAC,MAAK,eAAeD,MAAK,YAAY,KAAK,CAAC;AAAA,YAC3CA,MAAK,YAAY,GAAG;AAAA,YACpBG,OAAM,MAAM;AAAA,UACd;AAAA,UACA;AAAA,QACF;AAAA,MACJ;AAAA,MACA,wBAAwB;AAAA,QACtB,OAAO,CAAC,EAAE,MAAM,YAAY,YAAY,OAAO,MAC7CH;AAAA,UACE;AAAA,YACE;AAAA,YACA;AAAA,YACAC,MAAK,eAAeD,MAAK,YAAY,KAAK,CAAC;AAAA,YAC3CA,MAAK,YAAY,GAAG;AAAA,YACpBG,OAAM,MAAM;AAAA,UACd;AAAA,UACA;AAAA,QACF;AAAA,MACJ;AAAA,MACA,oBAAoB;AAAA,QAClB,OAAO,CAAC,EAAE,MAAM,YAAY,MAAM,MAChCH;AAAA,UACE;AAAA,YACE;AAAA,YACA;AAAA,YACAA,MAAK,YAAY,GAAG;AAAA,YACpBC,MAAK,MAAMD,MAAK,OAAO,KAAK,CAAC;AAAA,UAC/B;AAAA,UACA;AAAA,QACF;AAAA,MACJ;AAAA,MACA,mBAAmB;AAAA,QACjB,OAAO,CAAC,EAAE,MAAM,YAAY,OAAO,MACjCA,MAAK,CAAC,eAAe,MAAMA,MAAK,YAAY,GAAG,GAAGG,OAAM,MAAM,CAAC,GAAG,GAAG;AAAA,MACzE;AAAA,MACA,0BAA0B;AAAA,QACxB,OAAO,CAAC,EAAE,MAAM,YAAY,OAAO,MACjCH,MAAK,CAAC,gBAAgB,MAAMA,MAAK,YAAY,GAAG,GAAGG,OAAM,MAAM,CAAC,GAAG,GAAG;AAAA,MAC1E;AAAA,IACF;AAMA,aAASH,MAAK,YAAY,YAAY,IAAI;AACxC,UAAI;AAEJ,cAAQ,wBACN,eAAe,QAAQ,eAAe,SAClC,SACA,WAAW,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,SAAS,OAAO,QACrD,0BAA0B,SACxB,wBACA;AAAA,IACN;AAKA,aAASG,OAAM,OAAO;AACpB,aAAOF,MAAK,OAAOG,QAAOJ,MAAK,OAAO,IAAI,CAAC,GAAG,KAAK;AAAA,IACrD;AAKA,aAASC,MAAK,OAAO,aAAa,MAAM,IAAI;AAC1C,aAAO,eAAe,QAAQ,gBAAgB,KAC1C,QAAQ,cAAc,MACtB;AAAA,IACN;AAEA,aAASG,QAAO,KAAK;AACnB,aAAOH,MAAK,MAAM,IAAI,QAAQ,OAAO,MAAM,CAAC;AAAA,IAC9C;AAEA,aAASI,mBAAkB,YAAY;AACrC,UAAI;AAKJ,cAAQ,mBACN,eAAe,QAAQ,eAAe,SAClC,SACA,WAAW,KAAK,CAAC,QAAQ,IAAI,SAAS,IAAI,CAAC,OAAO,QACtD,qBAAqB,SACnB,mBACA;AAAA,IACN;AAAA;AAAA;;;AC9VA;AAAA;AAAA;AAEA,WAAO,UAAU,SAAS,gBAAgB,MAAM;AAC9C,UAAI,MAAM,KAAK,KACb,OAAO,KAAK,MACZ,OAAO,KAAK;AACd,WAAK,MAAM;AACX,WAAK,OAAO;AACZ,WAAK,OAAO;AAAA,IACd;AAAA;AAAA;;;ACTA;AAAA;AAAA;AAEA,QAAI,kBAAkB;AAEtB,WAAO,UAAU,SAAS,kBAAkB,OAAO;AACjD,aACG,OAAO,SAAS,eAAe,iBAAiB,QAChD,OAAO,SAAS,eAAe,iBAAiB,QACjD,iBAAiB;AAAA,IAErB;AAAA;AAAA;;;ACVA;AAAA;AAAA;AAEA,QAAI,2BAA2B;AAE/B,WAAO,UAAU,SAAS,aAAa,OAAO,MAAM,mBAAmB;AACrE,UAAI,SAAS,QAAQ;AACnB,eAAO;AAAA,MACT;AAEA,UAAI,sBAAsB,QAAQ;AAChC,4BAAoB;AAAA,MACtB;AAEA,UAAI;AACJ,UAAI,QAAQ,oBAAI,IAAI;AAEpB,eAAS,QAAQ,OAAO,MAAM;AAC5B,YAAI,cAAc,MAAM,IAAI,IAAI;AAChC,YAAI;AAAa,sBAAY,KAAK,MAAM,aAAa,KAAK;AAAA;AACrD,gBAAM,IAAI,MAAM,KAAK;AAAA,MAC5B;AAEA,UAAI,kBAAkB,KAAK,GAAG;AAC5B,gBAAQ;AACR,gBAAQ,CAAC,IAAI,GAAG,KAAK;AAAA,MACvB,OAAO;AACL,YAAIC,UAAS,OAAO,OAAO,MAAM;AACjC,YAAI,OAAO,aAAa,eAAe,iBAAiB;AACtD,kBAAQ,MAAM,UAAU,IAAI,KAAK,OAAO,SAAU,MAAMC,IAAG;AACzD,oBAAQ,CAAC,KAAKD,UAASC,EAAC,GAAG,IAAI;AAC/B,mBAAO;AAAA,UACT,CAAC;AAAA,iBACM,MAAM,QAAQ,KAAK;AAC1B,kBAAQ,MAAM,IAAI,SAAU,OAAOA,IAAG;AACpC,gBAAIC,UAAS,aAAa,OAAO,KAAKF,UAASC,IAAG,iBAAiB;AACnE,YAAAC,QAAO,MAAM,QAAQ,OAAO;AAC5B,mBAAOA,QAAO;AAAA,UAChB,CAAC;AAAA,iBACM,SAAS,MAAM,gBAAgB,QAAQ;AAC9C,kBAAQ,CAAC;AAET,mBAAS,KAAK,OAAO;AACnB,gBAAI,SAAS,aAAa,MAAM,IAAI,KAAKF,UAAS,GAAG,iBAAiB;AACtE,mBAAO,MAAM,QAAQ,OAAO;AAC5B,kBAAM,KAAK,OAAO;AAAA,UACpB;AAAA,QACF;AAAO,kBAAQ;AAAA,MACjB;AAEA,aAAO;AAAA,QACL;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;ACrDA;AAAA;AAAA;AAEA,YAAQ,kBAAkB;AAC1B,YAAQ,eAAe;AACvB,YAAQ,oBAAoB;AAAA;AAAA;;;ACJ5B;AAAA;AACA,WAAO,UAAU,OAAO,QAAQ,WAAW,KAAK,WAAW,OAAO;AAAA;AAAA;;;;;;;;ACCrD,YAAA,wBAAwC;MACnD,OAAO,KAAK;MACZ,WAAW,KAAK;;;;;;;;;;;;;ACJlB,QAAA,kBAAA;AACA,QAAA,cAAA,gBAAA,iBAAA;AACA,QAAA,0BAAA;AAQA,QAAM,4BAA4B,SAAC,OAAU;AAC3C,aAAA,gBAAA,kBAAkB,KAAK,KACtB,UAAU,QAAQ,OAAO,UAAU,YAAY,OAAO,MAAM,SAAS;IADtE;AAQF,aAAwB,kBACtB,OACA,WACA,eACA,gBAAsC;AAAtC,UAAA,mBAAA,QAAA;AAAA,yBAAiB,wBAAA;MAAqB;AAEhC,UAAAG,MAAmB,gBAAA,aAAa,EAAE,OAAO,WAAW,cAAa,GAAI,IAAI,yBAAyB,GAAhG,QAAKA,IAAA,OAAE,QAAKA,IAAA;AAEpB,UAAI,MAAM,SAAS,GAAG;AACpB,YAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AACzB,iBAAO,eAAe,UAAU,KAAK;;AAGvC,YAAI,OAAO,cAAc,eAAe,CAAC,MAAM,QAAQ,SAAS,GAAG;AACjE,gBAAM,IAAI,MAAM,qEAAqE;;AAIvF,YAAM,UAAU,MAAM,OACpB,SAAC,MAAM,cAAc,OAAK;AACxB,eAAK,KAAK,EAAE,OAAO,cAAc,WAAW,YAAY,UAAU,SAAS,OAAS,CAAE;AACtF,iBAAO;QACT,GACA,CAAA,CAAE;AAGJ,eAAO,eAAe,UAAU,OAAO;;AAGzC,UAAM,OAAO,OAAO,aAAa,cAAc,YAAA,UAAe;AAE9D,UAAM,OAAO,IAAI,KAAI;AAErB,WAAK,OAAO,cAAc,eAAe,UAAU,KAAK,CAAC;AAEzD,UAAMC,OAAmC,CAAA;AACzC,UAAI,IAAI;AACR,YAAM,QAAQ,SAAC,OAAK;AAClB,QAAAA,KAAI,EAAE,KAAK;MACb,CAAC;AACD,WAAK,OAAO,OAAO,eAAe,UAAUA,IAAG,CAAC;AAEhD,UAAI;AACJ,YAAM,QAAQ,SAAC,OAAO,MAAI;AACxB,aAAK,OAAO,KAAG,EAAE,GAAK,IAAW;MACnC,CAAC;AAED,aAAO;IACT;AAhDA,YAAA,UAAA;;;;;;;;;;ACNA,aAAgB,iBACd,mBACA,WACA,gBAA2C;AAE3C,aAAQ,kBAAwC,WAC3C,oBACA;QACC,UAAU;QACV;QACA;QACA,QAAQ;;IAEhB;AAbA,YAAA,mBAAA;AAeA,aAAgB,oBACd,gBACA,WACA,gBAA2C;AAE3C,aAAQ,eAAwC,QAC3C,iBACD;QACE,OAAO;QACP;QACA;QACA,QAAQ;;IAEhB;AAbA,YAAA,sBAAA;AAeA,aAAgB,sBACd,oBACA,gBAA2C;AAE3C,aAAQ,mBAA+C,YAClD,qBACD;QACE,WAAW;QACX;QACA,QAAQ;;IAEhB;AAXA,YAAA,wBAAA;AAaA,aAAgB,yBACd,cACAC,WACA,WACA,gBAA2C;AAE3C,aAAQ,aAA2C,WAC9C,eACA;QACC,KAAK;QACL,UAAUA;QACV;QACA;QACA,QAAQ;;IAEhB;AAfA,YAAA,2BAAA;AAiBA,aAAgB,4BACd,cACA,OACA,WACA,gBAA2C;AAE3C,aAAQ,aAA8C,QACjD,eACD;QACE,KAAK;QACL;QACA;QACA;QACA,QAAQ;;IAEhB;AAfA,YAAA,8BAAA;AAiBA,aAAgB,+BACd,cACA,WACA,gBAA2C;AAE3C,aAAQ,aAAiD,YACpD,eACD;QACE,KAAK;QACL;QACA;QACA,QAAQ;;IAEhB;AAbA,YAAA,iCAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChEA,QAAA,cAAA,SAAA,QAAA;AAAiC,MAAAC,WAAAC,cAAA,MAAA;AAI/B,eAAAA,aAAY,UAA2BC,UAA8B;AAArE,YAAA,QAAA;AACE,YAAM,UAAaD,aAAY,eAAe,QAAQ,IAAC,OAAK,KAAK,UAAU;UACzE;UACA,SAAOC;SACR;AAED,gBAAA,OAAA,KAAA,MAAM,OAAO,KAAC;AAEd,eAAO,eAAe,OAAMD,aAAY,SAAS;AAEjD,cAAK,WAAW;AAChB,cAAK,UAAUC;AAGf,YAAI,OAAO,MAAM,sBAAsB,YAAY;AACjD,gBAAM,kBAAkB,OAAMD,YAAW;;;MAE7C;AAEe,MAAAA,aAAA,iBAAf,SAA8B,UAAyB;AACrD,YAAI;AACF,iBAAO,SAAS,OAAQ,GAAG;iBACpB,GAAP;AACA,iBAAO,0BAAwB,SAAS,SAAM;;MAElD;AACF,aAAAA;IAAA,EA9BiC,KAAK;AAAzB,YAAA,cAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1Bb,QAAA,UAAA;AAEA,QAAA,KAAA;AAEA,QAAM,kBAAkB;AACxB,QAAM,iBAAiB;AACvB,QAAM,OAAO;AACb,QAAM,OAAO;AACb,QAAM,YAAY;AAClB,QAAM,OAAO;AACb,QAAME,SAAQ;AACd,QAAM,WAAW;AAWjB,QAAA,0BAAA,WAAA;AAeE,eAAAC,yBAAY,MAAc,SAAa,IAAW;AAChD,aAAK,QAAQ;AACb,aAAK,WAAW;AAChB,aAAK,MAAM;MACb;AAdA,aAAA,eAAWA,yBAAA,WAAA,QAAI;aAAf,WAAA;AACE,iBAAO,KAAK;QACd;;;;AACA,aAAA,eAAWA,yBAAA,WAAA,MAAE;aAAb,WAAA;AACE,iBAAO,KAAK;QACd;;;;AACA,aAAA,eAAWA,yBAAA,WAAA,WAAO;aAAlB,WAAA;AACE,iBAAO,KAAK;QACd;;;;AAQA,aAAA,eAAWA,yBAAA,WAAA,QAAI;aAAf,WAAA;AACE,cAAM,SAAc,EAAE,MAAM,KAAK,KAAI;AACrC,cAAI,KAAK,MAAM,QAAQ,KAAK,MAAM;AAAW,mBAAO,KAAK,KAAK;AAC9D,cAAI,KAAK,WAAW,QAAQ,KAAK,WAAW;AAAW,mBAAO,UAAU,KAAK;AAC7E,iBAAO,KAAK,UAAU,MAAM;QAC9B;;;;AAEO,MAAAA,yBAAA,QAAP,SAAgB,MAAc,GAAsB;AAC5C,YAAAC,MAAoE,KAAK,MAAM,IAAI,GAAjF,OAAIA,IAAA,MAAE,UAAOA,IAAA,SAAE,KAAEA,IAAA;AACzB,eAAO,IAAID,yBAAwB,MAAM,EAAE,OAAO,GAAG,EAAE;MACzD;AACF,aAAAA;IAAA,EAhCA;AA8DA,QAAA,yBAAA,WAAA;AAME,eAAAE,wBAAY,QAAmBD,KAAyD;AAAxF,YAAA,QAAA;YAAiC,SAAMA,IAAA,QAAE,iBAAcA,IAAA,gBAAE,SAAMA,IAAA,QAAE,SAAMA,IAAA;AAF/D,aAAA,cAA2B,EAAE,cAAc,OAAO,eAAe,GAAG,eAAe,CAAA,EAAE;AAG3F,aAAK,SAAS;AAEd,eAAO,SAAS,SAAO,GAAC;AAAA,iBAAAE,WAAA,OAAA,QAAA,QAAA,WAAA;;;;;AACtB,uBAAK,YAAY,eAAe;AAChC,uBAAK,YAAY,gBAAgB,CAAA;AACjC,wBAAAF,MAAA,QAAO;AAAK,uBAAA;uBAAe;AAAA,2BAAA,CAAA,GAAA,CAAA;AAAS,yBAAA,CAAA,GAAM,OAAM,CAAE;;AAAd,uBAAA,GAAA,KAAA;;;AAAiB,uBAAA;;;AAArD,qBAAA,MAAAA,KAAA,CAAY,GAAA,MAAA,QAAA,CAAA,EAAA,CAAA,EAA+C,IAAI,CAAA;;;;;;AAGjE,eAAO,UAAU,SAAC,GAAC;AACjB,gBAAK,YAAY,eAAe;AAChC,gBAAK,YAAY,gBAAgB,CAAA;QACnC;AAEA,eAAO,UAAU,SAAC,GAAC;AACjB,kBAAQ,MAAM,CAAC;QACjB;AAEA,eAAO,YAAY,SAAC,GAAC;AACnB,cAAI;AACF,gBAAM,UAAU,aAAa,EAAE,IAAI;AACnC,oBAAQ,QAAQ;mBACT,gBAAgB;AACnB,oBAAI,MAAK,YAAY,cAAc;AACjC,0BAAQ,KAAK,0CAA0C;uBAClD;AACL,wBAAK,YAAY,eAAe;AAChC,sBAAI;AAAgB,mCAAe,QAAQ,OAAO;;AAEpD;;mBAEG,MAAM;AACT,oBAAI;AAAQ,yBAAO,QAAQ,OAAO,EAAE,KAAK,SAAC,GAAC;AAAK,2BAAA,OAAO,KAAK,KAAK,CAAC,EAAE,IAAI;kBAAxB,CAAyB;;AACpE,yBAAO,KAAK,KAAK,IAAI,EAAE,IAAI;AAChC;;mBAEG,MAAM;AACT,oBAAI;AAAQ,yBAAO,QAAQ,OAAO;AAClC;;;AAIJ,gBAAI,CAAC,MAAK,YAAY,cAAc;AAElC;;AAGF,gBAAI,QAAQ,OAAO,UAAa,QAAQ,OAAO,QAAQ,CAAC,MAAK,YAAY,cAAc,QAAQ,KAAK;AAElG;;AAEI,gBAAAA,MAAmC,MAAK,YAAY,cAAc,QAAQ,KAAxE,QAAKA,IAAA,OAAE,YAASA,IAAA,WAAE,aAAUA,IAAA;AAEpC,oBAAQ,QAAQ;mBACT,MAAM;AACT,oBAAI,CAAC,QAAQ,QAAQ,UAAU,QAAQ,QAAQ,MAAM;AACnD,6BAAW,QAAQ,WAAW,KAAK,QAAQ,QAAQ,IAAI;;AAEzD,oBAAI,QAAQ,QAAQ,QAAQ;AAC1B,6BAAW,SACT,WAAW,MAAM,IAAI,QAAA,YAAW,SAAA,SAAA,CAAA,GAAM,QAAQ,OAAO,GAAA,EAAE,QAAQ,IAAG,CAAA,GAAI,EAAE,OAAO,UAAS,CAAE,CAAC;uBACxF;;AAEP;;mBAGGF,QAAO;AACV,2BAAW,SACT,WAAW,MACT,IAAI,QAAA,YAAY,EAAE,QAAQ,QAAQ,SAAS,QAAQ,IAAG,GAAI,EAAE,OAAO,UAAS,CAAE,CAAC;AAEnF;;mBAGG,UAAU;AACb,2BAAW,YAAY,WAAW,SAAQ;AAC1C,uBAAO,MAAK,YAAY,cAAc,QAAQ;AAC9C;;;mBAGGK,IAAP;AAEA,oBAAQ,MAAMA,EAAC;AACf,mBAAO,MAAM,IAAI;;AAEnB,iBAAO,MAAM,MAAM,6BAA6B;QAClD;MACF;AAEQ,MAAAF,wBAAA,UAAA,gBAAR,SACE,OACA,eACA,WACA,YAAmC;AAJrC,YAAA,QAAA;AAME,YAAM,kBAAkB,KAAK,YAAY,iBAAiB,SAAQ;AAClE,aAAK,YAAY,cAAc,kBAAkB,EAAE,OAAO,WAAW,WAAU;AAC/E,aAAK,OAAO,KAAK,UAAU,gBAAgB,EAAE,OAAO,eAAe,UAAS,CAAE,EAAE,IAAI;AACpF,eAAO,WAAA;AACL,gBAAK,OAAO,KAAK,SAAS,cAAc,EAAE,IAAI;AAC9C,iBAAO,MAAK,YAAY,cAAc;QACxC;MACF;AAEA,MAAAA,wBAAA,UAAA,aAAA,SACE,OACA,WAAa;AAFf,YAAA,QAAA;AAIE,eAAO,IAAI,QACT,SAAC,SAASG,SAAM;AACd,cAAI;AACJ,gBAAK,aACH,OACA;YACE,MAAM,SAAC,MAAS,YAAa;AAAK,qBAAC,SAAS,EAAE,MAAM,WAAU;YAA5B;YAClC,OAAOA;YACP,UAAU,WAAA;AAAM,qBAAA,QAAQ,MAAM;YAAd;aAElB,SAAS;QAEb,CAAC;MAEL;AAEA,MAAAH,wBAAA,UAAA,UAAA,SAAgCI,WAA2B,WAAa;AAAxE,YAAA,QAAA;AACE,eAAO,IAAI,QAAW,SAAC,SAASD,SAAM;AACpC,cAAI;AACJ,gBAAK,UACHC,WACA;YACE,MAAM,SAAC,MAAO;AAAK,qBAAC,SAAS;YAAV;YACnB,OAAOD;YACP,UAAU,WAAA;AAAM,qBAAA,QAAQ,MAAM;YAAd;aAElB,SAAS;QAEb,CAAC;MACH;AAEA,MAAAH,wBAAA,UAAA,YAAA,SACEI,WACA,YACA,WAAa;AAEP,YAAAL,MAA2B,GAAA,uBAAuBK,SAAQ,GAAxD,QAAKL,IAAA,OAAE,gBAAaA,IAAA;AAC5B,eAAO,KAAK,cAAc,OAAO,eAAe,WAAW,UAAU;MACvE;AAEA,MAAAC,wBAAA,UAAA,eAAA,SACE,OACA,YACA,WAAa;AAEb,eAAO,KAAK,cAAc,OAAO,QAAW,WAAW,UAAU;MACnE;AAEA,MAAAA,wBAAA,UAAA,OAAA,SAAK,SAAkB;AACrB,aAAK,OAAO,KAAK,KAAK,OAAO,EAAE,IAAI;MACrC;AAEA,MAAAA,wBAAA,UAAA,QAAA,WAAA;AACE,aAAK,OAAO,MAAM,GAAI;MACxB;AAvKO,MAAAA,wBAAA,WAAmB;AAwK5B,aAAAA;MAzKA;AAAa,YAAA,yBAAA;AA6Kb,aAAS,aAAsB,MAAc,GAAiC;AAAjC,UAAA,MAAA,QAAA;AAAA,YAAA,SAA0B,GAAC;AAAK,iBAAA;QAAA;MAAC;AAC5E,UAAM,IAAI,wBAAwB,MAAS,MAAM,CAAC;AAClD,aAAO;IACT;AAEA,aAAS,eAAkB,SAAW;AACpC,aAAO,IAAI,wBAAwB,iBAAiB,OAAO;IAC7D;AAEA,aAAS,KAAK,SAAY;AACxB,aAAO,IAAI,wBAAwB,MAAM,SAAS,MAAS;IAC7D;AACA,aAAS,KAAK,SAAY;AACxB,aAAO,IAAI,wBAAwB,MAAM,SAAS,MAAS;IAC7D;AAEA,aAAS,UAAU,IAAY,SAAyB;AACtD,aAAO,IAAI,wBAAwB,WAAW,SAAS,EAAE;IAC3D;AAEA,aAAS,SAAS,IAAU;AAC1B,aAAO,IAAI,wBAAwB,UAAU,QAAW,EAAE;IAC5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvRA,QAAA,gBAAA,aAAA,0BAAA;AAAA,QAAA,aAAA;AAIA,QAAA,WAAA;AACA,QAAA,YAAA;AACA,QAAA,sBAAA,gBAAA,2BAAA;AACA,QAAA,0BAAA;AACA,QAAA,cAAA;AAQA,QAAA,UAAA;AAsBE,WAAA,eAAA,SAAA,eAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAnBA,QAAA;IAAW,EAAA,CAAA;AA+Bb,QAAM,iBAAiB,SAAC,SAAmC;AACzD,UAAI,WAAmC,CAAA;AACvC,UAAI,SAAS;AACX,YACG,OAAO,YAAY,eAAe,mBAAmB,WACrD,cAAc,WAAW,WAAW,mBAAmB,WAAW,SACnE;AACA,qBAAW,6BAA6B,OAAO;mBACtC,MAAM,QAAQ,OAAO,GAAG;AACjC,kBAAQ,QAAQ,SAACK,KAAa;gBAAZ,OAAIA,IAAA,IAAE,QAAKA,IAAA;AAC3B,qBAAS,QAAQ;UACnB,CAAC;eACI;AACL,qBAAW;;;AAIf,aAAO;IACT;AAQA,QAAM,gBAAgB,SAAC,KAAW;AAAa,aAAA,IAAI,QAAQ,uBAAuB,GAAG,EAAE,KAAI;IAA5C;AAyB/C,QAAM,sBAAsB,SAAIA,KAKN;UAJxB,QAAKA,IAAA,OACL,YAASA,IAAA,WACT,gBAAaA,IAAA,eACb,iBAAcA,IAAA;AAEd,UAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AACzB,YAAM,SAAmB,CAAC,WAAS,mBAAmB,cAAc,KAAK,CAAC,CAAG;AAE7E,YAAI,WAAW;AACb,iBAAO,KAAK,eAAa,mBAAmB,eAAe,UAAU,SAAS,CAAC,CAAG;;AAGpF,YAAI,eAAe;AACjB,iBAAO,KAAK,mBAAiB,mBAAmB,aAAa,CAAG;;AAGlE,eAAO,OAAO,KAAK,GAAG;;AAGxB,UAAI,OAAO,cAAc,eAAe,CAAC,MAAM,QAAQ,SAAS,GAAG;AACjE,cAAM,IAAI,MAAM,8DAA8D;;AAIhF,UAAM,UAAU,MAAM,OACpB,SAAC,MAAM,cAAc,OAAK;AACxB,aAAK,KAAK;UACR,OAAO,cAAc,YAAY;UACjC,WAAW,YAAY,eAAe,UAAU,UAAU,MAAM,IAAI;SACrE;AACD,eAAO;MACT,GACA,CAAA,CAAE;AAGJ,aAAO,WAAS,mBAAmB,eAAe,UAAU,OAAO,CAAC;IACtE;AAKA,QAAMC,QAAO,SAAsBD,KAkBlC;UAjBC,MAAGA,IAAA,KACH,QAAKA,IAAA,OACL,YAASA,IAAA,WACT,gBAAaA,IAAA,eACb,UAAOA,IAAA,SACPE,SAAKF,IAAA,OACL,eAAYA,IAAA,cACZ,aAAUA,IAAA;;;;;;AAWJ,qBAAO,oBAAA,QAAkB,OAAO,WAAW,eAAe,aAAa,cAAc;AAEvF,wBAAO,SAAA,EACT,QAAQ,QACR,SAAO,SAAA,SAAA,CAAA,GACD,OAAO,SAAS,WAAW,EAAE,gBAAgB,mBAAkB,IAAK,CAAA,CAAG,GACxE,OAAO,GAEZ,KAAI,GACD,YAAY;mBAEb;AAAA,uBAAA,CAAA,GAAA,CAAA;AACQ,qBAAA,CAAA,GAAM,QAAQ,QAAQ,WAAW,OAAO,CAAC,CAAC;;AAApD,wBAAU,GAAA,KAAA;;;AAEL,qBAAA,CAAA,GAAME,OAAM,KAAK,OAAO,CAAC;;AAAhC,qBAAA,CAAA,GAAO,GAAA,KAAA,CAAyB;;;;;AAMlC,QAAMC,OAAM,SAAsBH,KAkBjC;UAjBC,MAAGA,IAAA,KACH,QAAKA,IAAA,OACL,YAASA,IAAA,WACT,gBAAaA,IAAA,eACb,UAAOA,IAAA,SACPE,SAAKF,IAAA,OACL,eAAYA,IAAA,cACZ,aAAUA,IAAA;;;;;;AAWJ,4BAAc,oBAAuB;gBACzC;gBACA;gBACA;gBACA,gBAAgB,aAAa;eACH;AAExB,wBAAO,SAAA,EACT,QAAQ,OACR,QAAO,GACJ,YAAY;mBAEb;AAAA,uBAAA,CAAA,GAAA,CAAA;AACQ,qBAAA,CAAA,GAAM,QAAQ,QAAQ,WAAW,OAAO,CAAC,CAAC;;AAApD,wBAAU,GAAA,KAAA;;;AAEL,qBAAA,CAAA,GAAME,OAAS,MAAG,MAAI,aAAe,OAAO,CAAC;;AAApD,qBAAA,CAAA,GAAO,GAAA,KAAA,CAA6C;;;;;AAMtD,QAAA,gBAAA,WAAA;AACE,eAAAE,eAAoB,KAA8B,SAAgC;AAAhC,YAAA,YAAA,QAAA;AAAA,oBAAA,CAAA;QAAgC;AAA9D,aAAA,MAAA;AAA8B,aAAA,UAAA;MAAmC;AAW/E,MAAAA,eAAA,UAAA,aAAN,SACE,gBACA,WACA,gBAA2C;;;;AAErC,gCAAoB,YAAA,oBAAuB,gBAAgB,WAAW,cAAc;AAEtF,YAAAJ,MAOA,KAAK,SANP,UAAOA,IAAA,SACP,KAAAA,IAAA,OAAAE,SAAK,OAAA,SAAG,cAAA,UAAU,IAClB,KAAAF,IAAA,QAAA,SAAM,OAAA,SAAG,SAAM,IACf,oBAAiBA,IAAA,mBACjB,qBAAkBA,IAAA,oBACf,eAAY,OAAAA,KANb,CAAA,WAAA,SAAA,UAAA,qBAAA,oBAAA,CAOH;AACK,kBAAQ,KAAI;AAClB,gBAAI,kBAAkB,WAAW,QAAW;AAC1C,2BAAa,SAAS,kBAAkB;;AAGlC,4BAAkB,uBAAuB,kBAAkB,KAAK,EAAC;AAEzE,mBAAA,CAAA,GAAO,YAAkB;cACvB;cACA,OAAO,kBAAkB;cACzB,WAAW,kBAAkB;cAC7B,SAAO,SAAA,SAAA,CAAA,GACF,eAAe,eAAe,OAAO,CAAC,CAAC,GACvC,eAAe,kBAAkB,cAAc,CAAC;cAErD;cACA,OAAKE;cACL;cACA;cACA,YAAY;aACb,EACE,KAAK,SAAC,UAAQ;AACb,kBAAI,oBAAoB;AACtB,mCAAmB,QAAQ;;AAE7B,qBAAO;YACT,CAAC,EACA,MAAM,SAAC,OAAK;AACX,kBAAI,oBAAoB;AACtB,mCAAmB,KAAK;;AAE1B,oBAAM;YACR,CAAC,CAAC;;;;AAeN,MAAAE,eAAA,UAAA,UAAA,SACE,mBAAgF;AAChF,YAAA,6BAAA,CAAA;iBAAA,KAAA,GAAA,KAAA,UAAA,QAAA,MAI+D;AAJ/D,qCAAA,KAAA,KAAA,UAAA;;AAMO,YAAA,YAA6B,2BAA0B,IAA5C,iBAAkB,2BAA0B;AAC9D,YAAM,iBAAiB,YAAA,iBAAoB,mBAAmB,WAAW,cAAc;AAEvF,YAAIJ,MAOA,KAAK,SANP,UAAOA,IAAA,SACP,KAAAA,IAAA,OAAAE,SAAK,OAAA,SAAG,cAAA,UAAU,IAClB,KAAAF,IAAA,QAAA,SAAM,OAAA,SAAG,SAAM,IACf,oBAAiBA,IAAA,mBACjB,qBAAkBA,IAAA,oBACf,eAAY,OAAAA,KANb,CAAA,WAAA,SAAA,UAAA,qBAAA,oBAAA,CAOH;AACK,YAAA,MAAQ,KAAI;AAClB,YAAI,eAAe,WAAW,QAAW;AACvC,uBAAa,SAAS,eAAe;;AAGjC,YAAA,KAA2B,uBAAuB,eAAe,QAAQ,GAAvE,QAAK,GAAA,OAAE,gBAAa,GAAA;AAE5B,eAAO,YAAkB;UACvB;UACA;UACA,WAAW,eAAe;UAC1B,SAAO,SAAA,SAAA,CAAA,GACF,eAAe,eAAe,OAAO,CAAC,CAAC,GACvC,eAAe,eAAe,cAAc,CAAC;UAElD;UACA,OAAKE;UACL;UACA;UACA,YAAY;SACb,EACE,KAAK,SAAC,UAAQ;AACb,cAAI,oBAAoB;AACtB,+BAAmB,QAAQ;;AAE7B,iBAAO,SAAS;QAClB,CAAC,EACA,MAAM,SAAC,OAAK;AACX,cAAI,oBAAoB;AACtB,+BAAmB,KAAK;;AAE1B,gBAAM;QACR,CAAC;MACL;AAUA,MAAAE,eAAA,UAAA,gBAAA,SACE,oBACA,gBAA2C;AAE3C,YAAM,sBAAsB,YAAA,sBAAyB,oBAAoB,cAAc;AAEvF,YAAIJ,MAOA,KAAK,SANP,UAAOA,IAAA,SACP,KAAAA,IAAA,OAAAE,SAAK,OAAA,SAAG,cAAA,UAAU,IAClB,KAAAF,IAAA,QAAA,SAAM,OAAA,SAAG,SAAM,IACf,oBAAiBA,IAAA,mBACjB,qBAAkBA,IAAA,oBACf,eAAY,OAAAA,KANb,CAAA,WAAA,SAAA,UAAA,qBAAA,oBAAA,CAOH;AACK,YAAA,MAAQ,KAAI;AAClB,YAAI,oBAAoB,WAAW,QAAW;AAC5C,uBAAa,SAAS,oBAAoB;;AAG5C,YAAM,UAAU,oBAAoB,UAAU,IAC5C,SAACA,KAAY;cAAVK,YAAQL,IAAA;AAAO,iBAAA,uBAAuBK,SAAQ,EAAE;QAAjC,CAAsC;AAE1D,YAAM,YAAY,oBAAoB,UAAU,IAAI,SAACL,KAAa;cAAXM,aAASN,IAAA;AAAO,iBAAAM;QAAA,CAAS;AAEhF,eAAO,YAAkC;UACvC;UACA,OAAO;UACP;UACA,SAAO,SAAA,SAAA,CAAA,GACF,eAAe,eAAe,OAAO,CAAC,CAAC,GACvC,eAAe,oBAAoB,cAAc,CAAC;UAEvD,eAAe;UACf,OAAKJ;UACL;UACA;UACA,YAAY;SACb,EACE,KAAK,SAAC,UAAQ;AACb,cAAI,oBAAoB;AACtB,+BAAmB,QAAQ;;AAE7B,iBAAO,SAAS;QAClB,CAAC,EACA,MAAM,SAAC,OAAK;AACX,cAAI,oBAAoB;AACtB,+BAAmB,KAAK;;AAE1B,gBAAM;QACR,CAAC;MACL;AAEA,MAAAE,eAAA,UAAA,aAAA,SAAW,SAAmC;AAC5C,aAAK,QAAQ,UAAU;AACvB,eAAO;MACT;AAKA,MAAAA,eAAA,UAAA,YAAA,SAAU,KAAa,OAAa;;AAC1B,YAAA,UAAY,KAAK,QAAO;AAEhC,YAAI,SAAS;AAGX,kBAAQ,OAAO;eACV;AACL,eAAK,QAAQ,WAAOJ,MAAA,CAAA,GAAKA,IAAC,OAAM,OAAKA;;AAGvC,eAAO;MACT;AAKA,MAAAI,eAAA,UAAA,cAAA,SAAY,OAAa;AACvB,aAAK,MAAM;AACX,eAAO;MACT;AACF,aAAAA;IAAA,EAzNA;AAAa,YAAA,gBAAA;AA2Nb,aAAe,YAAoCJ,KAoBlD;UAnBC,MAAGA,IAAA,KACH,QAAKA,IAAA,OACL,YAASA,IAAA,WACT,UAAOA,IAAA,SACP,gBAAaA,IAAA,eACbE,SAAKF,IAAA,OACL,KAAAA,IAAA,QAAA,SAAM,OAAA,SAAG,SAAM,IACf,eAAYA,IAAA,cACZ,aAAUA,IAAA;;;;;;AAYJ,wBAAU,OAAO,YAAW,MAAO,SAASC,QAAOE;AACnD,iCAAmB,MAAM,QAAQ,KAAK;AAE3B,qBAAA,CAAA,GAAM,QAAQ;gBAC7B;gBACA;gBACA;gBACA;gBACA;gBACA,OAAKD;gBACL;gBACA;eACD,CAAC;;AATI,yBAAW,GAAA,KAAA;AAUF,qBAAA,CAAA,GAAM,UAAU,UAAU,aAAa,cAAc,CAAC;;AAA/D,uBAAS,GAAA,KAAA;AAET,yCACJ,oBAAoB,MAAM,QAAQ,MAAM,IAAI,CAAC,OAAO,KAAK,SAACF,KAAQ;oBAANO,QAAIP,IAAA;AAAO,uBAAA,CAACO;cAAD,CAAK,IAAI,CAAC,CAAC,OAAO;AAErF,8CACJ,CAAC,OAAO,UAAU,aAAa,gBAAgB,SAAS,aAAa,gBAAgB;AAEvF,kBAAI,SAAS,MAAM,iCAAiC,0BAA0B;AACpE,4BAAoB,SAAQ,SAAnB,WAAW,SAAQ;AAE5B,yBAAoB,OAAM,QAAf,OAAI,OAAK,QAAtB,CAAA,QAAA,CAAmB;AACnB,uBAAO,aAAa,gBAAgB,WAAW,OAAO;AAE5D,uBAAA,CAAA,GAAA,SAAA,SAAA,CAAA,GACM,mBAAmB,EAAE,KAAI,IAAK,IAAK,GAAA,EACvC,SAAO,WACP,QAAM,SAAA,CAAA,CAAA;qBAEH;AACC,8BAAc,OAAO,WAAW,WAAW,EAAE,OAAO,OAAM,IAAK;AACrE,sBAAM,IAAI,QAAA,YAAW,SAAA,SAAA,CAAA,GACd,WAAW,GAAA,EAAE,QAAQ,SAAS,QAAQ,SAAS,SAAS,QAAO,CAAA,GACpE,EAAE,OAAO,UAAS,CAAE;;;;;;;AAiB1B,aAAsB,WACpB,cACA,OACA,WACA,gBAA2C;;;;AAErC,2BAAiB,YAAA,4BAA+B,cAAc,OAAO,WAAW,cAAc;AAC9F,mBAAS,IAAI,cAAc,eAAe,GAAG;AACnD,iBAAA,CAAA,GAAO,OAAO,WAAU,SAAA,CAAA,GACnB,cAAc,CAAA,CACjB;;;;AAVJ,YAAA,aAAA;AAyDA,aAAsBC,SACpB,cACAH,WAAoD;AACpD,UAAA,6BAAA,CAAA;eAAA,KAAA,GAAA,KAAA,UAAA,QAAA,MAI+D;AAJ/D,mCAAA,KAAA,KAAA,UAAA;;;;;AAMO,sBAA6B,2BAA0B,IAA5C,iBAAkB,2BAA0B;AACxD,2BAAiB,YAAA,yBAA4B,cAAcA,WAAU,WAAW,cAAc;AAC9F,mBAAS,IAAI,cAAc,eAAe,GAAG;AACnD,iBAAA,CAAA,GAAO,OAAO,QAAO,SAAA,CAAA,GAChB,cAAc,CAAA,CACjB;;;;AAdJ,YAAA,UAAAG;AA2DA,aAAsB,cACpB,cACA,WACA,gBAA2C;;;;AAErC,2BAAiB,YAAA,+BAAkC,cAAc,WAAW,cAAc;AAC1F,mBAAS,IAAI,cAAc,eAAe,GAAG;AACnD,iBAAA,CAAA,GAAO,OAAO,cAAa,SAAA,CAAA,GAAY,cAAc,CAAA,CAAG;;;;AAP1D,YAAA,gBAAA;AAUA,YAAA,UAAeA;AAKf,aAAe,UAAU,UAAwB,gBAAsC;AAAtC,UAAA,mBAAA,QAAA;AAAA,yBAAiB,wBAAA;MAAqB;;;;;;AAGrF,uBAAS,QAAQ,QAAQ,SAAC,OAAO,KAAG;AAClC,oBAAI,IAAI,YAAW,MAAO,gBAAgB;AACxC,gCAAc;;cAElB,CAAC;oBAEG,eAAe,YAAY,YAAW,EAAG,WAAW,kBAAkB;AAAtE,uBAAA,CAAA,GAAA,CAAA;AACK,oBAAAR,MAAA,gBAAe;AAAM,qBAAA,CAAA,GAAM,SAAS,KAAI,CAAE;;AAAjD,qBAAA,CAAA,GAAO,GAAA,MAAAA,KAAA,CAAqB,GAAA,KAAA,CAAqB,CAAA,CAAC;;AAElD,qBAAA,CAAA,GAAO,SAAS,KAAI,CAAE;;;;;AAO1B,aAAS,qBAAqBK,WAAsB;;AAClD,UAAI,gBAAgB;AAEpB,UAAM,uBAAuBA,UAAS,YAAY,OAChD,SAAC,YAAU;AAAK,eAAA,WAAW,SAAS;MAApB,CAAyC;AAG3D,UAAI,qBAAqB,WAAW,GAAG;AACrC,yBAAgBL,MAAA,qBAAqB,GAAG,UAAI,QAAAA,QAAA,SAAA,SAAAA,IAAE;;AAGhD,aAAO;IACT;AAEA,aAAgB,uBAAuBK,WAAyB;AAC9D,UAAI,OAAOA,cAAa,UAAU;AAChC,YAAI,kBAAgB;AAEpB,YAAI;AACF,cAAM,iBAAiB,SAAA,MAAMA,SAAQ;AACrC,4BAAgB,qBAAqB,cAAc;iBAC5C,KAAP;;AAIF,eAAO,EAAE,OAAOA,WAAU,eAAa,gBAAA;;AAGzC,UAAM,gBAAgB,qBAAqBA,SAAQ;AAEnD,aAAO,EAAE,OAAO,UAAA,MAAMA,SAAQ,GAAG,cAAa;IAChD;AAjBA,YAAA,yBAAA;AAmBA,aAAS,eAAkB,OAAuB;AAChD,aAAO,OAAO,UAAU,aAAc,MAAiB,IAAK;IAC9D;AAeA,aAAgBI,KAAI,QAA4B;AAAE,UAAA,YAAA,CAAA;eAAA,KAAA,GAAA,KAAA,UAAA,QAAA,MAAmB;AAAnB,kBAAA,KAAA,KAAA,UAAA;;AAChD,aAAO,OAAO,OACZ,SAAC,aAAa,OAAO,OAAK;AAAK,eAAA,KAAG,cAAc,SAAQ,SAAS,YAAY,UAAU,SAAS;MAAjE,GAC/B,EAAE;IAEN;AALA,YAAA,MAAAA;AAUA,aAAS,6BAA6B,SAAgC;AACpE,UAAM,IAAS,CAAA;AACf,cAAQ,QAAQ,SAAC,GAAG,GAAC;AACnB,UAAE,KAAK;MACT,CAAC;AACD,aAAO;IACT;AAEA,QAAA,eAAA;AAAS,WAAA,eAAA,SAAA,0BAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,aAAA;IAAsB,EAAA,CAAA;;;;;AC7tB/B;AAAA;AAAA;AACA,WAAO,UAAU,SAAU,SAAS;AAClC,cAAQ,UAAU,OAAO,YAAY,aAAa;AAChD,iBAAS,SAAS,KAAK,MAAM,QAAQ,SAAS,OAAO,MAAM;AACzD,gBAAM,OAAO;AAAA,QACf;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;ACPA;AAAA;AAAA;AACA,WAAO,UAAU;AAEjB,YAAQ,OAAOC;AACf,YAAQ,SAAS;AAEjB,aAAS,QAAS,MAAM;AACtB,UAAIC,QAAO;AACX,UAAI,EAAEA,iBAAgB,UAAU;AAC9B,QAAAA,QAAO,IAAI,QAAQ;AAAA,MACrB;AAEA,MAAAA,MAAK,OAAO;AACZ,MAAAA,MAAK,OAAO;AACZ,MAAAA,MAAK,SAAS;AAEd,UAAI,QAAQ,OAAO,KAAK,YAAY,YAAY;AAC9C,aAAK,QAAQ,SAAU,MAAM;AAC3B,UAAAA,MAAK,KAAK,IAAI;AAAA,QAChB,CAAC;AAAA,MACH,WAAW,UAAU,SAAS,GAAG;AAC/B,iBAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,IAAI,GAAG,KAAK;AAChD,UAAAA,MAAK,KAAK,UAAU,EAAE;AAAA,QACxB;AAAA,MACF;AAEA,aAAOA;AAAA,IACT;AAEA,YAAQ,UAAU,aAAa,SAAU,MAAM;AAC7C,UAAI,KAAK,SAAS,MAAM;AACtB,cAAM,IAAI,MAAM,kDAAkD;AAAA,MACpE;AAEA,UAAI,OAAO,KAAK;AAChB,UAAI,OAAO,KAAK;AAEhB,UAAI,MAAM;AACR,aAAK,OAAO;AAAA,MACd;AAEA,UAAI,MAAM;AACR,aAAK,OAAO;AAAA,MACd;AAEA,UAAI,SAAS,KAAK,MAAM;AACtB,aAAK,OAAO;AAAA,MACd;AACA,UAAI,SAAS,KAAK,MAAM;AACtB,aAAK,OAAO;AAAA,MACd;AAEA,WAAK,KAAK;AACV,WAAK,OAAO;AACZ,WAAK,OAAO;AACZ,WAAK,OAAO;AAEZ,aAAO;AAAA,IACT;AAEA,YAAQ,UAAU,cAAc,SAAU,MAAM;AAC9C,UAAI,SAAS,KAAK,MAAM;AACtB;AAAA,MACF;AAEA,UAAI,KAAK,MAAM;AACb,aAAK,KAAK,WAAW,IAAI;AAAA,MAC3B;AAEA,UAAI,OAAO,KAAK;AAChB,WAAK,OAAO;AACZ,WAAK,OAAO;AACZ,UAAI,MAAM;AACR,aAAK,OAAO;AAAA,MACd;AAEA,WAAK,OAAO;AACZ,UAAI,CAAC,KAAK,MAAM;AACd,aAAK,OAAO;AAAA,MACd;AACA,WAAK;AAAA,IACP;AAEA,YAAQ,UAAU,WAAW,SAAU,MAAM;AAC3C,UAAI,SAAS,KAAK,MAAM;AACtB;AAAA,MACF;AAEA,UAAI,KAAK,MAAM;AACb,aAAK,KAAK,WAAW,IAAI;AAAA,MAC3B;AAEA,UAAI,OAAO,KAAK;AAChB,WAAK,OAAO;AACZ,WAAK,OAAO;AACZ,UAAI,MAAM;AACR,aAAK,OAAO;AAAA,MACd;AAEA,WAAK,OAAO;AACZ,UAAI,CAAC,KAAK,MAAM;AACd,aAAK,OAAO;AAAA,MACd;AACA,WAAK;AAAA,IACP;AAEA,YAAQ,UAAU,OAAO,WAAY;AACnC,eAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,IAAI,GAAG,KAAK;AAChD,QAAAC,MAAK,MAAM,UAAU,EAAE;AAAA,MACzB;AACA,aAAO,KAAK;AAAA,IACd;AAEA,YAAQ,UAAU,UAAU,WAAY;AACtC,eAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,IAAI,GAAG,KAAK;AAChD,gBAAQ,MAAM,UAAU,EAAE;AAAA,MAC5B;AACA,aAAO,KAAK;AAAA,IACd;AAEA,YAAQ,UAAU,MAAM,WAAY;AAClC,UAAI,CAAC,KAAK,MAAM;AACd,eAAO;AAAA,MACT;AAEA,UAAI,MAAM,KAAK,KAAK;AACpB,WAAK,OAAO,KAAK,KAAK;AACtB,UAAI,KAAK,MAAM;AACb,aAAK,KAAK,OAAO;AAAA,MACnB,OAAO;AACL,aAAK,OAAO;AAAA,MACd;AACA,WAAK;AACL,aAAO;AAAA,IACT;AAEA,YAAQ,UAAU,QAAQ,WAAY;AACpC,UAAI,CAAC,KAAK,MAAM;AACd,eAAO;AAAA,MACT;AAEA,UAAI,MAAM,KAAK,KAAK;AACpB,WAAK,OAAO,KAAK,KAAK;AACtB,UAAI,KAAK,MAAM;AACb,aAAK,KAAK,OAAO;AAAA,MACnB,OAAO;AACL,aAAK,OAAO;AAAA,MACd;AACA,WAAK;AACL,aAAO;AAAA,IACT;AAEA,YAAQ,UAAU,UAAU,SAAU,IAAI,OAAO;AAC/C,cAAQ,SAAS;AACjB,eAAS,SAAS,KAAK,MAAM,IAAI,GAAG,WAAW,MAAM,KAAK;AACxD,WAAG,KAAK,OAAO,OAAO,OAAO,GAAG,IAAI;AACpC,iBAAS,OAAO;AAAA,MAClB;AAAA,IACF;AAEA,YAAQ,UAAU,iBAAiB,SAAU,IAAI,OAAO;AACtD,cAAQ,SAAS;AACjB,eAAS,SAAS,KAAK,MAAM,IAAI,KAAK,SAAS,GAAG,WAAW,MAAM,KAAK;AACtE,WAAG,KAAK,OAAO,OAAO,OAAO,GAAG,IAAI;AACpC,iBAAS,OAAO;AAAA,MAClB;AAAA,IACF;AAEA,YAAQ,UAAU,MAAM,SAAU,GAAG;AACnC,eAAS,IAAI,GAAG,SAAS,KAAK,MAAM,WAAW,QAAQ,IAAI,GAAG,KAAK;AAEjE,iBAAS,OAAO;AAAA,MAClB;AACA,UAAI,MAAM,KAAK,WAAW,MAAM;AAC9B,eAAO,OAAO;AAAA,MAChB;AAAA,IACF;AAEA,YAAQ,UAAU,aAAa,SAAU,GAAG;AAC1C,eAAS,IAAI,GAAG,SAAS,KAAK,MAAM,WAAW,QAAQ,IAAI,GAAG,KAAK;AAEjE,iBAAS,OAAO;AAAA,MAClB;AACA,UAAI,MAAM,KAAK,WAAW,MAAM;AAC9B,eAAO,OAAO;AAAA,MAChB;AAAA,IACF;AAEA,YAAQ,UAAU,MAAM,SAAU,IAAI,OAAO;AAC3C,cAAQ,SAAS;AACjB,UAAI,MAAM,IAAI,QAAQ;AACtB,eAAS,SAAS,KAAK,MAAM,WAAW,QAAO;AAC7C,YAAI,KAAK,GAAG,KAAK,OAAO,OAAO,OAAO,IAAI,CAAC;AAC3C,iBAAS,OAAO;AAAA,MAClB;AACA,aAAO;AAAA,IACT;AAEA,YAAQ,UAAU,aAAa,SAAU,IAAI,OAAO;AAClD,cAAQ,SAAS;AACjB,UAAI,MAAM,IAAI,QAAQ;AACtB,eAAS,SAAS,KAAK,MAAM,WAAW,QAAO;AAC7C,YAAI,KAAK,GAAG,KAAK,OAAO,OAAO,OAAO,IAAI,CAAC;AAC3C,iBAAS,OAAO;AAAA,MAClB;AACA,aAAO;AAAA,IACT;AAEA,YAAQ,UAAU,SAAS,SAAU,IAAI,SAAS;AAChD,UAAI;AACJ,UAAI,SAAS,KAAK;AAClB,UAAI,UAAU,SAAS,GAAG;AACxB,cAAM;AAAA,MACR,WAAW,KAAK,MAAM;AACpB,iBAAS,KAAK,KAAK;AACnB,cAAM,KAAK,KAAK;AAAA,MAClB,OAAO;AACL,cAAM,IAAI,UAAU,4CAA4C;AAAA,MAClE;AAEA,eAAS,IAAI,GAAG,WAAW,MAAM,KAAK;AACpC,cAAM,GAAG,KAAK,OAAO,OAAO,CAAC;AAC7B,iBAAS,OAAO;AAAA,MAClB;AAEA,aAAO;AAAA,IACT;AAEA,YAAQ,UAAU,gBAAgB,SAAU,IAAI,SAAS;AACvD,UAAI;AACJ,UAAI,SAAS,KAAK;AAClB,UAAI,UAAU,SAAS,GAAG;AACxB,cAAM;AAAA,MACR,WAAW,KAAK,MAAM;AACpB,iBAAS,KAAK,KAAK;AACnB,cAAM,KAAK,KAAK;AAAA,MAClB,OAAO;AACL,cAAM,IAAI,UAAU,4CAA4C;AAAA,MAClE;AAEA,eAAS,IAAI,KAAK,SAAS,GAAG,WAAW,MAAM,KAAK;AAClD,cAAM,GAAG,KAAK,OAAO,OAAO,CAAC;AAC7B,iBAAS,OAAO;AAAA,MAClB;AAEA,aAAO;AAAA,IACT;AAEA,YAAQ,UAAU,UAAU,WAAY;AACtC,UAAI,MAAM,IAAI,MAAM,KAAK,MAAM;AAC/B,eAAS,IAAI,GAAG,SAAS,KAAK,MAAM,WAAW,MAAM,KAAK;AACxD,YAAI,KAAK,OAAO;AAChB,iBAAS,OAAO;AAAA,MAClB;AACA,aAAO;AAAA,IACT;AAEA,YAAQ,UAAU,iBAAiB,WAAY;AAC7C,UAAI,MAAM,IAAI,MAAM,KAAK,MAAM;AAC/B,eAAS,IAAI,GAAG,SAAS,KAAK,MAAM,WAAW,MAAM,KAAK;AACxD,YAAI,KAAK,OAAO;AAChB,iBAAS,OAAO;AAAA,MAClB;AACA,aAAO;AAAA,IACT;AAEA,YAAQ,UAAU,QAAQ,SAAU,MAAM,IAAI;AAC5C,WAAK,MAAM,KAAK;AAChB,UAAI,KAAK,GAAG;AACV,cAAM,KAAK;AAAA,MACb;AACA,aAAO,QAAQ;AACf,UAAI,OAAO,GAAG;AACZ,gBAAQ,KAAK;AAAA,MACf;AACA,UAAI,MAAM,IAAI,QAAQ;AACtB,UAAI,KAAK,QAAQ,KAAK,GAAG;AACvB,eAAO;AAAA,MACT;AACA,UAAI,OAAO,GAAG;AACZ,eAAO;AAAA,MACT;AACA,UAAI,KAAK,KAAK,QAAQ;AACpB,aAAK,KAAK;AAAA,MACZ;AACA,eAAS,IAAI,GAAG,SAAS,KAAK,MAAM,WAAW,QAAQ,IAAI,MAAM,KAAK;AACpE,iBAAS,OAAO;AAAA,MAClB;AACA,aAAO,WAAW,QAAQ,IAAI,IAAI,KAAK,SAAS,OAAO,MAAM;AAC3D,YAAI,KAAK,OAAO,KAAK;AAAA,MACvB;AACA,aAAO;AAAA,IACT;AAEA,YAAQ,UAAU,eAAe,SAAU,MAAM,IAAI;AACnD,WAAK,MAAM,KAAK;AAChB,UAAI,KAAK,GAAG;AACV,cAAM,KAAK;AAAA,MACb;AACA,aAAO,QAAQ;AACf,UAAI,OAAO,GAAG;AACZ,gBAAQ,KAAK;AAAA,MACf;AACA,UAAI,MAAM,IAAI,QAAQ;AACtB,UAAI,KAAK,QAAQ,KAAK,GAAG;AACvB,eAAO;AAAA,MACT;AACA,UAAI,OAAO,GAAG;AACZ,eAAO;AAAA,MACT;AACA,UAAI,KAAK,KAAK,QAAQ;AACpB,aAAK,KAAK;AAAA,MACZ;AACA,eAAS,IAAI,KAAK,QAAQ,SAAS,KAAK,MAAM,WAAW,QAAQ,IAAI,IAAI,KAAK;AAC5E,iBAAS,OAAO;AAAA,MAClB;AACA,aAAO,WAAW,QAAQ,IAAI,MAAM,KAAK,SAAS,OAAO,MAAM;AAC7D,YAAI,KAAK,OAAO,KAAK;AAAA,MACvB;AACA,aAAO;AAAA,IACT;AAEA,YAAQ,UAAU,SAAS,SAAU,OAAO,gBAAgB,OAAO;AACjE,UAAI,QAAQ,KAAK,QAAQ;AACvB,gBAAQ,KAAK,SAAS;AAAA,MACxB;AACA,UAAI,QAAQ,GAAG;AACb,gBAAQ,KAAK,SAAS;AAAA,MACxB;AAEA,eAAS,IAAI,GAAG,SAAS,KAAK,MAAM,WAAW,QAAQ,IAAI,OAAO,KAAK;AACrE,iBAAS,OAAO;AAAA,MAClB;AAEA,UAAI,MAAM,CAAC;AACX,eAAS,IAAI,GAAG,UAAU,IAAI,aAAa,KAAK;AAC9C,YAAI,KAAK,OAAO,KAAK;AACrB,iBAAS,KAAK,WAAW,MAAM;AAAA,MACjC;AACA,UAAI,WAAW,MAAM;AACnB,iBAAS,KAAK;AAAA,MAChB;AAEA,UAAI,WAAW,KAAK,QAAQ,WAAW,KAAK,MAAM;AAChD,iBAAS,OAAO;AAAA,MAClB;AAEA,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,iBAAS,OAAO,MAAM,QAAQ,MAAM,EAAE;AAAA,MACxC;AACA,aAAO;AAAA,IACT;AAEA,YAAQ,UAAU,UAAU,WAAY;AACtC,UAAI,OAAO,KAAK;AAChB,UAAI,OAAO,KAAK;AAChB,eAAS,SAAS,MAAM,WAAW,MAAM,SAAS,OAAO,MAAM;AAC7D,YAAI,IAAI,OAAO;AACf,eAAO,OAAO,OAAO;AACrB,eAAO,OAAO;AAAA,MAChB;AACA,WAAK,OAAO;AACZ,WAAK,OAAO;AACZ,aAAO;AAAA,IACT;AAEA,aAAS,OAAQD,OAAM,MAAM,OAAO;AAClC,UAAI,WAAW,SAASA,MAAK,OAC3B,IAAID,MAAK,OAAO,MAAM,MAAMC,KAAI,IAChC,IAAID,MAAK,OAAO,MAAM,KAAK,MAAMC,KAAI;AAEvC,UAAI,SAAS,SAAS,MAAM;AAC1B,QAAAA,MAAK,OAAO;AAAA,MACd;AACA,UAAI,SAAS,SAAS,MAAM;AAC1B,QAAAA,MAAK,OAAO;AAAA,MACd;AAEA,MAAAA,MAAK;AAEL,aAAO;AAAA,IACT;AAEA,aAASC,MAAMD,OAAM,MAAM;AACzB,MAAAA,MAAK,OAAO,IAAID,MAAK,MAAMC,MAAK,MAAM,MAAMA,KAAI;AAChD,UAAI,CAACA,MAAK,MAAM;AACd,QAAAA,MAAK,OAAOA,MAAK;AAAA,MACnB;AACA,MAAAA,MAAK;AAAA,IACP;AAEA,aAAS,QAASA,OAAM,MAAM;AAC5B,MAAAA,MAAK,OAAO,IAAID,MAAK,MAAM,MAAMC,MAAK,MAAMA,KAAI;AAChD,UAAI,CAACA,MAAK,MAAM;AACd,QAAAA,MAAK,OAAOA,MAAK;AAAA,MACnB;AACA,MAAAA,MAAK;AAAA,IACP;AAEA,aAASD,MAAM,OAAO,MAAM,MAAM,MAAM;AACtC,UAAI,EAAE,gBAAgBA,QAAO;AAC3B,eAAO,IAAIA,MAAK,OAAO,MAAM,MAAM,IAAI;AAAA,MACzC;AAEA,WAAK,OAAO;AACZ,WAAK,QAAQ;AAEb,UAAI,MAAM;AACR,aAAK,OAAO;AACZ,aAAK,OAAO;AAAA,MACd,OAAO;AACL,aAAK,OAAO;AAAA,MACd;AAEA,UAAI,MAAM;AACR,aAAK,OAAO;AACZ,aAAK,OAAO;AAAA,MACd,OAAO;AACL,aAAK,OAAO;AAAA,MACd;AAAA,IACF;AAEA,QAAI;AAEF,yBAAyB,OAAO;AAAA,IAClC,SAAS,IAAP;AAAA,IAAY;AAAA;AAAA;;;ACzad;AAAA;AAAA;AAGA,QAAM,UAAU;AAEhB,QAAM,MAAM,OAAO,KAAK;AACxB,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,oBAAoB,OAAO,kBAAkB;AACnD,QAAM,cAAc,OAAO,YAAY;AACvC,QAAM,UAAU,OAAO,QAAQ;AAC/B,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,oBAAoB,OAAO,gBAAgB;AACjD,QAAM,WAAW,OAAO,SAAS;AACjC,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,oBAAoB,OAAO,gBAAgB;AAEjD,QAAM,cAAc,MAAM;AAU1B,QAAM,WAAN,MAAe;AAAA,MACb,YAAa,SAAS;AACpB,YAAI,OAAO,YAAY;AACrB,oBAAU,EAAE,KAAK,QAAQ;AAE3B,YAAI,CAAC;AACH,oBAAU,CAAC;AAEb,YAAI,QAAQ,QAAQ,OAAO,QAAQ,QAAQ,YAAY,QAAQ,MAAM;AACnE,gBAAM,IAAI,UAAU,mCAAmC;AAEzD,cAAM,MAAM,KAAK,OAAO,QAAQ,OAAO;AAEvC,cAAM,KAAK,QAAQ,UAAU;AAC7B,aAAK,qBAAsB,OAAO,OAAO,aAAc,cAAc;AACrE,aAAK,eAAe,QAAQ,SAAS;AACrC,YAAI,QAAQ,UAAU,OAAO,QAAQ,WAAW;AAC9C,gBAAM,IAAI,UAAU,yBAAyB;AAC/C,aAAK,WAAW,QAAQ,UAAU;AAClC,aAAK,WAAW,QAAQ;AACxB,aAAK,qBAAqB,QAAQ,kBAAkB;AACpD,aAAK,qBAAqB,QAAQ,kBAAkB;AACpD,aAAK,MAAM;AAAA,MACb;AAAA,MAGA,IAAI,IAAK,IAAI;AACX,YAAI,OAAO,OAAO,YAAY,KAAK;AACjC,gBAAM,IAAI,UAAU,mCAAmC;AAEzD,aAAK,OAAO,MAAM;AAClB,aAAK,IAAI;AAAA,MACX;AAAA,MACA,IAAI,MAAO;AACT,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,IAAI,WAAY,YAAY;AAC1B,aAAK,eAAe,CAAC,CAAC;AAAA,MACxB;AAAA,MACA,IAAI,aAAc;AAChB,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,IAAI,OAAQ,IAAI;AACd,YAAI,OAAO,OAAO;AAChB,gBAAM,IAAI,UAAU,sCAAsC;AAE5D,aAAK,WAAW;AAChB,aAAK,IAAI;AAAA,MACX;AAAA,MACA,IAAI,SAAU;AACZ,eAAO,KAAK;AAAA,MACd;AAAA,MAGA,IAAI,iBAAkB,IAAI;AACxB,YAAI,OAAO,OAAO;AAChB,eAAK;AAEP,YAAI,OAAO,KAAK,oBAAoB;AAClC,eAAK,qBAAqB;AAC1B,eAAK,UAAU;AACf,eAAK,UAAU,QAAQ,SAAO;AAC5B,gBAAI,SAAS,KAAK,mBAAmB,IAAI,OAAO,IAAI,GAAG;AACvD,iBAAK,WAAW,IAAI;AAAA,UACtB,CAAC;AAAA,QACH;AACA,aAAK,IAAI;AAAA,MACX;AAAA,MACA,IAAI,mBAAoB;AAAE,eAAO,KAAK;AAAA,MAAmB;AAAA,MAEzD,IAAI,SAAU;AAAE,eAAO,KAAK;AAAA,MAAQ;AAAA,MACpC,IAAI,YAAa;AAAE,eAAO,KAAK,UAAU;AAAA,MAAO;AAAA,MAEhD,SAAU,IAAI,OAAO;AACnB,gBAAQ,SAAS;AACjB,iBAAS,SAAS,KAAK,UAAU,MAAM,WAAW,QAAO;AACvD,gBAAM,OAAO,OAAO;AACpB,sBAAY,MAAM,IAAI,QAAQ,KAAK;AACnC,mBAAS;AAAA,QACX;AAAA,MACF;AAAA,MAEA,QAAS,IAAI,OAAO;AAClB,gBAAQ,SAAS;AACjB,iBAAS,SAAS,KAAK,UAAU,MAAM,WAAW,QAAO;AACvD,gBAAM,OAAO,OAAO;AACpB,sBAAY,MAAM,IAAI,QAAQ,KAAK;AACnC,mBAAS;AAAA,QACX;AAAA,MACF;AAAA,MAEA,OAAQ;AACN,eAAO,KAAK,UAAU,QAAQ,EAAE,IAAI,OAAK,EAAE,GAAG;AAAA,MAChD;AAAA,MAEA,SAAU;AACR,eAAO,KAAK,UAAU,QAAQ,EAAE,IAAI,OAAK,EAAE,KAAK;AAAA,MAClD;AAAA,MAEA,QAAS;AACP,YAAI,KAAK,YACL,KAAK,aACL,KAAK,UAAU,QAAQ;AACzB,eAAK,UAAU,QAAQ,SAAO,KAAK,SAAS,IAAI,KAAK,IAAI,KAAK,CAAC;AAAA,QACjE;AAEA,aAAK,SAAS,oBAAI,IAAI;AACtB,aAAK,YAAY,IAAI,QAAQ;AAC7B,aAAK,UAAU;AAAA,MACjB;AAAA,MAEA,OAAQ;AACN,eAAO,KAAK,UAAU,IAAI,SACxB,QAAQ,MAAM,GAAG,IAAI,QAAQ;AAAA,UAC3B,GAAG,IAAI;AAAA,UACP,GAAG,IAAI;AAAA,UACP,GAAG,IAAI,OAAO,IAAI,UAAU;AAAA,QAC9B,CAAC,EAAE,QAAQ,EAAE,OAAO,OAAK,CAAC;AAAA,MAC9B;AAAA,MAEA,UAAW;AACT,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,IAAK,KAAK,OAAO,QAAQ;AACvB,iBAAS,UAAU,KAAK;AAExB,YAAI,UAAU,OAAO,WAAW;AAC9B,gBAAM,IAAI,UAAU,yBAAyB;AAE/C,cAAM,MAAM,SAAS,KAAK,IAAI,IAAI;AAClC,cAAM,MAAM,KAAK,mBAAmB,OAAO,GAAG;AAE9C,YAAI,KAAK,OAAO,IAAI,GAAG,GAAG;AACxB,cAAI,MAAM,KAAK,MAAM;AACnB,gBAAI,MAAM,KAAK,OAAO,IAAI,GAAG,CAAC;AAC9B,mBAAO;AAAA,UACT;AAEA,gBAAM,OAAO,KAAK,OAAO,IAAI,GAAG;AAChC,gBAAM,OAAO,KAAK;AAIlB,cAAI,KAAK,UAAU;AACjB,gBAAI,CAAC,KAAK;AACR,mBAAK,SAAS,KAAK,KAAK,KAAK;AAAA,UACjC;AAEA,eAAK,MAAM;AACX,eAAK,SAAS;AACd,eAAK,QAAQ;AACb,eAAK,WAAW,MAAM,KAAK;AAC3B,eAAK,SAAS;AACd,eAAK,IAAI,GAAG;AACZ,eAAK,IAAI;AACT,iBAAO;AAAA,QACT;AAEA,cAAM,MAAM,IAAI,MAAM,KAAK,OAAO,KAAK,KAAK,MAAM;AAGlD,YAAI,IAAI,SAAS,KAAK,MAAM;AAC1B,cAAI,KAAK;AACP,iBAAK,SAAS,KAAK,KAAK;AAE1B,iBAAO;AAAA,QACT;AAEA,aAAK,WAAW,IAAI;AACpB,aAAK,UAAU,QAAQ,GAAG;AAC1B,aAAK,OAAO,IAAI,KAAK,KAAK,UAAU,IAAI;AACxC,aAAK,IAAI;AACT,eAAO;AAAA,MACT;AAAA,MAEA,IAAK,KAAK;AACR,YAAI,CAAC,KAAK,OAAO,IAAI,GAAG;AAAG,iBAAO;AAClC,cAAM,MAAM,KAAK,OAAO,IAAI,GAAG,EAAE;AACjC,eAAO,CAAC,QAAQ,MAAM,GAAG;AAAA,MAC3B;AAAA,MAEA,IAAK,KAAK;AACR,eAAOG,KAAI,MAAM,KAAK,IAAI;AAAA,MAC5B;AAAA,MAEA,KAAM,KAAK;AACT,eAAOA,KAAI,MAAM,KAAK,KAAK;AAAA,MAC7B;AAAA,MAEA,MAAO;AACL,cAAM,OAAO,KAAK,UAAU;AAC5B,YAAI,CAAC;AACH,iBAAO;AAET,YAAI,MAAM,IAAI;AACd,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,IAAK,KAAK;AACR,YAAI,MAAM,KAAK,OAAO,IAAI,GAAG,CAAC;AAAA,MAChC;AAAA,MAEA,KAAM,KAAK;AAET,aAAK,MAAM;AAEX,cAAM,MAAM,KAAK,IAAI;AAErB,iBAAS,IAAI,IAAI,SAAS,GAAG,KAAK,GAAG,KAAK;AACxC,gBAAM,MAAM,IAAI;AAChB,gBAAM,YAAY,IAAI,KAAK;AAC3B,cAAI,cAAc;AAEhB,iBAAK,IAAI,IAAI,GAAG,IAAI,CAAC;AAAA,eAClB;AACH,kBAAM,SAAS,YAAY;AAE3B,gBAAI,SAAS,GAAG;AACd,mBAAK,IAAI,IAAI,GAAG,IAAI,GAAG,MAAM;AAAA,YAC/B;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MAEA,QAAS;AACP,aAAK,OAAO,QAAQ,CAAC,OAAO,QAAQA,KAAI,MAAM,KAAK,KAAK,CAAC;AAAA,MAC3D;AAAA,IACF;AAEA,QAAMA,OAAM,CAACC,OAAM,KAAK,UAAU;AAChC,YAAM,OAAOA,MAAK,OAAO,IAAI,GAAG;AAChC,UAAI,MAAM;AACR,cAAM,MAAM,KAAK;AACjB,YAAI,QAAQA,OAAM,GAAG,GAAG;AACtB,cAAIA,OAAM,IAAI;AACd,cAAI,CAACA,MAAK;AACR,mBAAO;AAAA,QACX,OAAO;AACL,cAAI,OAAO;AACT,gBAAIA,MAAK;AACP,mBAAK,MAAM,MAAM,KAAK,IAAI;AAC5B,YAAAA,MAAK,UAAU,YAAY,IAAI;AAAA,UACjC;AAAA,QACF;AACA,eAAO,IAAI;AAAA,MACb;AAAA,IACF;AAEA,QAAM,UAAU,CAACA,OAAM,QAAQ;AAC7B,UAAI,CAAC,OAAQ,CAAC,IAAI,UAAU,CAACA,MAAK;AAChC,eAAO;AAET,YAAM,OAAO,KAAK,IAAI,IAAI,IAAI;AAC9B,aAAO,IAAI,SAAS,OAAO,IAAI,SAC3BA,MAAK,YAAa,OAAOA,MAAK;AAAA,IACpC;AAEA,QAAM,OAAO,CAAAA,UAAQ;AACnB,UAAIA,MAAK,UAAUA,MAAK,MAAM;AAC5B,iBAAS,SAASA,MAAK,UAAU,MAC/BA,MAAK,UAAUA,MAAK,QAAQ,WAAW,QAAO;AAI9C,gBAAM,OAAO,OAAO;AACpB,cAAIA,OAAM,MAAM;AAChB,mBAAS;AAAA,QACX;AAAA,MACF;AAAA,IACF;AAEA,QAAM,MAAM,CAACA,OAAM,SAAS;AAC1B,UAAI,MAAM;AACR,cAAM,MAAM,KAAK;AACjB,YAAIA,MAAK;AACP,UAAAA,MAAK,SAAS,IAAI,KAAK,IAAI,KAAK;AAElC,QAAAA,MAAK,WAAW,IAAI;AACpB,QAAAA,MAAK,OAAO,OAAO,IAAI,GAAG;AAC1B,QAAAA,MAAK,UAAU,WAAW,IAAI;AAAA,MAChC;AAAA,IACF;AAEA,QAAM,QAAN,MAAY;AAAA,MACV,YAAa,KAAK,OAAO,QAAQ,KAAK,QAAQ;AAC5C,aAAK,MAAM;AACX,aAAK,QAAQ;AACb,aAAK,SAAS;AACd,aAAK,MAAM;AACX,aAAK,SAAS,UAAU;AAAA,MAC1B;AAAA,IACF;AAEA,QAAM,cAAc,CAACA,OAAM,IAAI,MAAM,UAAU;AAC7C,UAAI,MAAM,KAAK;AACf,UAAI,QAAQA,OAAM,GAAG,GAAG;AACtB,YAAIA,OAAM,IAAI;AACd,YAAI,CAACA,MAAK;AACR,gBAAM;AAAA,MACV;AACA,UAAI;AACF,WAAG,KAAK,OAAO,IAAI,OAAO,IAAI,KAAKA,KAAI;AAAA,IAC3C;AAEA,WAAO,UAAU;AAAA;AAAA;;;AC7UjB;AAAA;AAAA,WAAO,QAAQ,QAAQ,WAAW;AAClC,WAAO,QAAQ,UAAU,WAAW;AACpC,WAAO,QAAQ,UAAU,WAAW;AACpC,WAAO,QAAQ,WAAW,WAAW;AACrC,WAAO,QAAQ,WAAW,WAAW;AACrC,WAAO,QAAQ,kBAAkB,WAAW;AAC5C,WAAO,QAAQ,iBAAiB,WAAW;AAC3C,WAAO,QAAQ,iBAAiB,WAAW;AAC3C,WAAO,QAAQ,kBAAkB,WAAW;AAC5C,WAAO,QAAQ,OAAO,WAAW;AACjC,WAAO,QAAQ,OAAO,WAAW;AACjC,WAAO,QAAQ,SAAS,WAAW;AACnC,WAAO,QAAQ,OAAO,WAAW;AACjC,WAAO,QAAQ,cAAc,WAAW;AACxC,WAAO,QAAQ,cAAc,WAAW;AACxC,WAAO,QAAQ,QAAQ,WAAW;AAClC,WAAO,QAAQ,cAAc,WAAW;AACxC,WAAO,QAAQ,cAAc,MAAM;AAAA;AAAA;;;ACjBnC,8BAAqE;AACrE,OAAO,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAzB,IAAM,SAAS,OAAO,aAAa;AACnC,IAAM,SAAS,OAAO,aAAa;AACnC,IAAM,WAAW,OAAO,qBAAqB;AAE7C,IAAM,QAAQ,OAAO,OAAO;AAC5B,IAAM,SAAS,OAAO,QAAQ;AAC9B,SAAS,UAAU,KAAK;AACtB,MAAI,eAAe,SAAS,OAAO,QAAQ;AAAU,WAAO;AAC5D,SAAO,IAAI,MAAM,eAAe;AAClC;AACA,SAAS,YAAY,KAAK;AACxB,QAAM,UAAU,GAAG;AACnB,QAAM,MAAM,OAAO,OAAO,KAAK;AAC/B,MAAI,CAAC;AAAK,UAAM;AAChB,aAAW,KAAK;AAAK,MAAE,GAAG;AAC5B;AACA,IAAM,UAAU;AAAA,EACd,SAAS;AAAA,EACT,OAAO;AACT;AACA,IAAI,QAAQ;AACZ,SAAS,WAAW,IAAI,eAAe;AACrC,oBAAkB,QAAQ;AAC1B,QAAM,QAAQ,OACR,OAAO,GAAG,WAAW,IAAI,UAAU;AAAA,IACvC,SAAS;AAAA,IACT;AAAA,EACF;AACA,UAAQ;AACR,MAAI;AACJ,MAAI;AACF,aAAS,GAAG,MAAM;AAAA,IAAC,CAAC;AAAA,EACtB,SAAS,KAAP;AACA,gBAAY,GAAG;AAAA,EACjB,UAAE;AACA,YAAQ;AAAA,EACV;AACA,SAAO;AACT;AACA,SAAS,aAAa,OAAO,SAAS;AACpC,SAAO,CAAC,MAAM,OAAO,OAAK;AACxB,WAAO,QAAQ,OAAO,MAAM,aAAa,EAAE,KAAK,IAAI;AAAA,EACtD,CAAC;AACH;AACA,SAAS,eAAe,IAAI,OAAO;AACjC,UAAQ;AAAA,IACN,OAAO;AAAA,IACP,SAAS;AAAA,EACX;AACA,MAAI;AACF,OAAG,KAAK;AAAA,EACV,SAAS,KAAP;AACA,gBAAY,GAAG;AAAA,EACjB,UAAE;AACA,YAAQ,MAAM;AAAA,EAChB;AACF;AACA,IAAM,qBAAqB;AAC3B,SAAS,aAAa,IAAI,OAAO;AAAC;AAMlC,SAAS,WAAW,IAAI,OAAO;AAC7B,UAAQ;AAAA,IACN,OAAO;AAAA,IACP,SAAS;AAAA,EACX;AACA,MAAI;AACJ,MAAI;AACF,QAAI,GAAG,KAAK;AAAA,EACd,SAAS,KAAP;AACA,gBAAY,GAAG;AAAA,EACjB,UAAE;AACA,YAAQ,MAAM;AAAA,EAChB;AACA,SAAO,MAAM;AACf;AAOA,SAAS,MAAM,IAAI;AACjB,SAAO,GAAG;AACZ;AACA,IAAM,UAAU;AAChB,SAAS,GAAG,MAAM,IAAI,UAAU,CAAC,GAAG;AAClC,QAAM,UAAU,MAAM,QAAQ,IAAI;AAClC,QAAM,QAAQ,QAAQ;AACtB,SAAO,MAAM;AACX,QAAI;AAAO,aAAO;AAClB,QAAI;AACJ,QAAI,SAAS;AACX,cAAQ,CAAC;AACT,eAAS,IAAI,GAAG,IAAI,KAAK,QAAQ;AAAK,cAAM,KAAK,KAAK,GAAG,CAAC;AAAA,IAC5D;AAAO,cAAQ,KAAK;AACpB,WAAO,GAAG,KAAK;AAAA,EACjB;AACF;AACA,SAAS,QAAQ,IAAI;AAAC;AACtB,SAAS,UAAU,IAAI;AACrB,MAAI;AACJ,MAAI,UAAU,OAAO,OAAO,OAAO,MAAM,IAAI;AAC3C,QAAI,CAAC,KAAK;AAAU,WAAK,WAAW,CAAC,EAAE;AAAA;AAAO,WAAK,SAAS,KAAK,EAAE;AAAA,EACrE;AACA,SAAO;AACT;AACA,SAAS,UAAU,MAAM;AACvB,MAAI,KAAK,UAAU;AACjB,aAAS,IAAI,GAAG,IAAI,KAAK,SAAS,QAAQ;AAAK,WAAK,SAAS,GAAG;AAChE,SAAK,WAAW;AAAA,EAClB;AACF;AACA,SAAS,QAAQ,IAAI;AACnB,MAAI,OAAO;AACT,QAAI,MAAM,YAAY;AAAM,YAAM,UAAU;AAAA,QAC1C,CAAC,QAAQ,CAAC,EAAE;AAAA,MACd;AAAA,aAAW,CAAC,MAAM,QAAQ;AAAQ,YAAM,QAAQ,SAAS,CAAC,EAAE;AAAA;AAAO,YAAM,QAAQ,OAAO,KAAK,EAAE;AAAA,EACjG;AACF;AAIA,SAAS,cAAc,cAAc;AACnC,QAAM,KAAK,OAAO,SAAS;AAC3B,SAAO;AAAA,IACL;AAAA,IACA,UAAU,eAAe,EAAE;AAAA,IAC3B;AAAA,EACF;AACF;AACA,SAAS,WAAW,SAAS;AAC3B,MAAI;AACJ,UAAQ,MAAM,OAAO,OAAO,QAAQ,EAAE,OAAO,SAAY,MAAM,QAAQ;AACzE;AACA,SAAS,WAAW;AAClB,SAAO;AACT;AACA,SAAS,SAAS,IAAI;AACpB,QAAM,OAAO,WAAW,MAAM,gBAAgB,GAAG,CAAC,CAAC;AACnD,OAAK,UAAU,MAAM;AACnB,UAAM,IAAI,KAAK;AACf,WAAO,MAAM,QAAQ,CAAC,IAAI,IAAI,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC;AAAA,EACnD;AACA,SAAO;AACT;AACA,SAAS,aAAa,GAAG,IAAI;AAC3B,QAAM,OAAO;AACb,UAAQ;AACR,MAAI;AACF,WAAO,GAAG;AAAA,EACZ,SAAS,KAAP;AACA,gBAAY,GAAG;AAAA,EACjB,UAAE;AACA,YAAQ;AAAA,EACV;AACF;AACA,SAAS,OAAO,OAAO,KAAK;AAC1B,SAAO,QAAQ,MAAM,WAAW,MAAM,QAAQ,SAAS,SAAY,MAAM,QAAQ,OAAO,OAAO,MAAM,OAAO,GAAG,IAAI;AACrH;AACA,SAAS,gBAAgBC,WAAU;AACjC,MAAI,OAAOA,cAAa,cAAc,CAACA,UAAS;AAAQ,WAAO,gBAAgBA,UAAS,CAAC;AACzF,MAAI,MAAM,QAAQA,SAAQ,GAAG;AAC3B,UAAM,UAAU,CAAC;AACjB,aAAS,IAAI,GAAG,IAAIA,UAAS,QAAQ,KAAK;AACxC,YAAM,SAAS,gBAAgBA,UAAS,EAAE;AAC1C,YAAM,QAAQ,MAAM,IAAI,QAAQ,KAAK,MAAM,SAAS,MAAM,IAAI,QAAQ,KAAK,MAAM;AAAA,IACnF;AACA,WAAO;AAAA,EACT;AACA,SAAOA;AACT;AACA,SAAS,eAAe,IAAI;AAC1B,SAAO,SAAS,SAAS,OAAO;AAC9B,WAAO,WAAW,MAAM;AACtB,YAAM,UAAU;AAAA,QACd,CAAC,KAAK,MAAM;AAAA,MACd;AACA,aAAO,SAAS,MAAM,MAAM,QAAQ;AAAA,IACtC,CAAC;AAAA,EACH;AACF;AA6DA,SAAS,eAAe,MAAM;AAC5B,QAAM,IAAI,OAAO;AACjB,MAAI,MAAM;AAAU,WAAO;AAC3B,MAAI,QAAQ,QAAQ,MAAM;AAAW,WAAO;AAC5C,MAAI,MAAM,QAAQ,IAAI,GAAG;AACvB,QAAI,SAAS;AACb,aAAS,IAAI,GAAG,MAAM,KAAK,QAAQ,IAAI,KAAK;AAAK,gBAAU,eAAe,KAAK,EAAE;AACjF,WAAO;AAAA,EACT;AACA,MAAI,MAAM;AAAU,WAAO,KAAK;AAChC,MAAI,MAAM;AAAY,WAAO,eAAe,KAAK,CAAC;AAClD,SAAO,OAAO,IAAI;AACpB;AACA,IAAM,eAAe,CAAC;AACtB,SAAS,kBAAkB,SAAS;AAClC,eAAa,UAAU;AACzB;AACA,SAAS,qBAAqB;AAC5B,SAAO,aAAa,UAAU;AAAA,IAAE,GAAG,aAAa;AAAA,IAC9C,IAAI,GAAG,aAAa,QAAQ,KAAK,aAAa,QAAQ;AAAA,IACtD,OAAO;AAAA,EACT,IAAI;AACN;AACA,SAAS,iBAAiB;AACxB,QAAM,MAAM,aAAa;AACzB,MAAI,CAAC;AAAK,UAAM,IAAI,MAAM,2DAA2D;AACrF,SAAO,GAAG,IAAI,KAAK,IAAI;AACzB;AACA,SAAS,gBAAgB,MAAM,OAAO;AACpC,MAAI,aAAa,WAAW,CAAC,aAAa,QAAQ,WAAW;AAC3D,UAAM,IAAI,aAAa;AACvB,sBAAkB,mBAAmB,CAAC;AACtC,UAAM,IAAI,KAAK,SAAS,CAAC,CAAC;AAC1B,sBAAkB,CAAC;AACnB,WAAO;AAAA,EACT;AACA,SAAO,KAAK,SAAS,CAAC,CAAC;AACzB;AA0CA,SAAS,KAAK,OAAO;AACnB,MAAI;AACJ,SAAO,MAAM,OAAO,QAAQ,IAAI,MAAM,cAAc,aAAa,EAAE,MAAM,IAAI,IAAI,IAAI,MAAM,YAAY;AACzG;AAgBA,SAAS,uBAAuB;AAAC;AACjC,SAAS,cAAc,OAAO;AAC5B,MAAI,OACA,KACA,OACA,OAAO;AACX,QAAM,MAAM,aAAa;AACzB,QAAM,KAAK,IAAI,KAAK,IAAI;AACxB,WAAS,kBAAkB;AACzB,cAAU,KAAK;AACf,QAAI,cAAc,IAAI,OAAO,IAAI;AACjC,sBAAkB;AAAA,MAAE,GAAG;AAAA,MACrB,OAAO;AAAA,IACT,CAAC;AACD,UAAM,IAAI,MAAM;AAChB,WAAO,OAAO,MAAM,cAAc,EAAE,SAAS,EAAE,OAAO,MAAM;AAAA,IAAC,CAAC,IAAI;AAAA,EACpE;AACA,UAAQ,SAAO;AACb,YAAQ;AACR,KAAC,QAAQ,IAAI,QAAQ,MAAM,IAAI,eAAe;AAC9C,WAAO;AAAA,EACT,CAAC;AACD,YAAU,MAAM,UAAU,KAAK,CAAC;AAChC,aAAW,MAAM;AACf,UAAM,UAAU;AAAA,MACd,CAAC,SAAS,QAAQ,CAAC;AAAA,IACrB;AACA,WAAO,MAAM,MAAM;AAAA,EACrB,CAAC;AACD,MAAI;AAAO,WAAO,gBAAgB;AAClC,SAAO;AACP,SAAO;AAAA,IACL,GAAG,MAAM,MAAM,eAAe,GAAG,QAAQ;AAAA,EAC3C;AACF;AACA,IAAM,kBAAkB,cAAc;AACtC,IAAI,kBAAkB;AACtB,SAAS,eAAe,QAAQ,SAAS,UAAU,CAAC,GAAG;AACrD,MAAI,UAAU,WAAW,GAAG;AAC1B,QAAI,OAAO,YAAY,UAAU;AAC/B,gBAAU;AACV,gBAAU;AACV,eAAS;AAAA,IACX;AAAA,EACF,WAAW,UAAU,WAAW,GAAG;AACjC,cAAU;AACV,aAAS;AAAA,EACX;AACA,QAAM,WAAW,oBAAI,IAAI;AACzB,QAAM,KAAK,aAAa,QAAQ,KAAK,aAAa,QAAQ;AAC1D,MAAI,WAAW,CAAC;AAChB,MAAI,QAAQ,QAAQ,UAAU,QAAQ,QAAQ,QAAQ,YAAY,EAAE,GAAG,IAAI,QAAQ;AACnF,MAAI;AACJ,MAAI;AACJ,MAAI,aAAa,QAAQ,SAAS,QAAQ,gBAAgB,WAAW;AACnE,eAAW,aAAa,QAAQ,UAAU,QAAQ,aAAa,QAAQ,UAAU,MAAM,CAAC;AACxF,QAAI,SAAS,KAAK;AAChB,UAAI,CAAC,SAAS,QAAQ,CAAC,SAAS,IAAI,GAAG,WAAW,CAAC,SAAS,IAAI,GAAG;AAAO,iBAAS,IAAI,GAAG,QAAQ;AAClG,aAAO,SAAS;AAAA,IAClB;AAAA,EACF;AACA,QAAM,OAAO,MAAM;AACjB,QAAI;AAAO,YAAM;AACjB,QAAI,mBAAmB;AAAG,sBAAgB,KAAK,CAAC;AAChD,UAAM,WAAW,QAAQ,gBAAgB,aAAa,aAAa,QAAQ,SAAS,UAAU,aAAa,QAAQ,UAAU;AAC7H,QAAI,CAAC,YAAY,KAAK,SAAS;AAC7B,YAAM,MAAM,WAAW,eAAe;AACtC,UAAI,KAAK;AACP,YAAI,UAAU,IAAI,IAAI,IAAI;AAC1B,iBAAS,IAAI,GAAG;AAAA,MAClB;AAAA,IACF;AACA,WAAO,WAAW,aAAa,QAAQ,UAAU,IAAI,OAAO;AAAA,EAC9D;AACA,OAAK,UAAU;AACf,OAAK,QAAQ;AACb,OAAK,QAAQ,kBAAkB,UAAU,aAAa;AACtD,SAAO,eAAe,MAAM,UAAU;AAAA,IACpC,MAAM;AACJ,aAAO,KAAK;AAAA,IACd;AAAA,EACF,CAAC;AACD,WAAS,OAAO;AACd,UAAM,MAAM,aAAa;AACzB,QAAI,CAAC,IAAI;AAAO,aAAO,KAAK,UAAU,CAAC,EAAE,OAAO,WAAW,aAAa,OAAO,IAAI;AACnF,QAAI,IAAI,aAAa,MAAM,IAAI,aAAa,UAAU,IAAI,UAAU,KAAK;AACvE,cAAQ,IAAI,UAAU,IAAI;AAC1B;AAAA,IACF;AACA,sBAAkB,CAAC;AACnB,UAAMC,UAAS,OAAO,WAAW,aAAa,OAAO,IAAI;AACzD,QAAI,gBAAgB,QAAQ;AAC1B,UAAI,QAAQ,IAAI,eAAe,EAAE,KAAK,MAAM,QAAQ,OAAO,GAAG;AAAA,QAC5D;AAAA,MACF,CAAC,CAAC;AAAA,IACJ;AACA,sBAAkB;AAClB,QAAI,CAAC,GAAG;AACN,UAAIA,WAAU,QAAQA,YAAW;AAAO;AACxC,UAAI,QAAQA,SAAQ;AAAA,QAClB;AAAA,MACF,CAAC;AAAA,IACH;AACA,QAAI,KAAK,UAAa,OAAO,MAAM,YAAY,UAAU,GAAG;AAC1D,WAAK,UAAU;AACf,WAAK,QAAQ;AACb,UAAI,IAAI;AAAe,YAAI,cAAc,IAAI,GAAG,QAAW,QAAQ,WAAW;AAC9E,aAAO,EAAE,KAAK,SAAO;AACnB,aAAK,UAAU;AACf,aAAK,QAAQ;AACb,YAAI,UAAU,IAAI,OAAO;AACzB,YAAI;AACJ,uBAAe,QAAQ;AACvB,eAAO;AAAA,MACT,CAAC,EAAE,MAAM,SAAO;AACd,aAAK,UAAU;AACf,aAAK,QAAQ;AACb,aAAK,QAAQ,QAAQ,UAAU,GAAG;AAClC,YAAI;AACJ,uBAAe,QAAQ;AAAA,MACzB,CAAC;AAAA,IACH;AACA,QAAI,UAAU,IAAI,OAAO;AACzB,QAAI,IAAI;AAAe,UAAI,cAAc,IAAI,CAAC;AAC9C,QAAI;AACJ,WAAO,IAAI,UAAU,IAAI;AAAA,EAC3B;AACA,MAAI,QAAQ,gBAAgB;AAAW,SAAK;AAC5C,SAAO,SAAS,MAAM,CAAC,MAAM;AAAA,IAC3B,SAAS;AAAA,IACT,QAAQ,OAAK,QAAQ;AAAA,EACvB,CAAC;AACH;AAoCA,SAAS,iBAAiB,GAAG;AAC3B,aAAW,KAAK,EAAE,UAAU,OAAO,GAAG;AACpC,QAAI,EAAE;AAAS,aAAO;AAAA,EACxB;AACA,SAAO;AACT;AACA,SAAS,eAAe,UAAU;AAChC,aAAW,KAAK,UAAU;AACxB,QAAI,iBAAiB,CAAC;AAAG,QAAE,UAAU;AAAA,EACvC;AACA,WAAS,MAAM;AACjB;AAMA,SAAS,gBAAgB;AACvB,SAAO,CAAC,MAAM,OAAO,QAAM;AACzB,OAAG;AAAA,EACL,CAAC;AACH;AAIA,SAAS,SAAS,OAAO;AACvB,MAAI;AACJ,MAAI;AACJ,QAAM,MAAM,aAAa;AACzB,QAAM,KAAK,IAAI,KAAK,IAAI;AACxB,QAAM,IAAI;AACV,MAAI,GAAG;AACL,QAAI,EAAE;AAAS,QAAE,QAAQ,UAAU,QAAQ,CAAC;AAAA;AAAO,QAAE,UAAU;AAAA,QAC7D,CAAC,SAAS,QAAQ,CAAC;AAAA,MACrB;AAAA,EACF;AACA,QAAM,QAAQ,IAAI,SAAS,QAAQ,IAAI,SAAS,MAAM;AAAA,IACpD,WAAW,oBAAI,IAAI;AAAA,IACnB,WAAW,MAAM;AACf,YAAMC,OAAM,YAAY;AACxB,UAAI,iBAAiB,KAAK,GAAG;AAC3B,aAAK,eAAeA,IAAG,CAAC;AAAA,MAC1B;AAAA,IACF;AAAA,EACF;AACA,WAAS,cAAc;AACrB,sBAAkB;AAAA,MAAE,GAAG;AAAA,MACrB,OAAO;AAAA,IACT,CAAC;AACD,WAAO,aAAa,GAAG,MAAM;AAC3B,aAAO,gBAAgB,gBAAgB,UAAU;AAAA,QAC/C;AAAA,QACA,IAAI,WAAW;AACb,mBAAS,UAAU,KAAK;AACxB,iBAAO,MAAM;AAAA,QACf;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACA,QAAM,MAAM,YAAY;AACxB,MAAI,iBAAiB,KAAK;AAAG,WAAO;AACpC,UAAQ,SAAO;AACb,QAAI,CAAC,QAAQ,CAAC,KAAK,QAAW,GAAG,GAAG;AAClC,UAAI;AAAG,qBAAa,EAAE,OAAO,MAAM;AACjC,gBAAM;AAAA,QACR,CAAC;AAAA;AAAO,cAAM;AAAA,IAChB;AAAA,EACF,CAAC;AACD,SAAO,IAAI,QAAQ,IAAI,iBAAiB,EAAE,IAAI;AAC9C,MAAI,IAAI,OAAO;AACb,sBAAkB;AAAA,MAAE,GAAG;AAAA,MACrB,OAAO;AAAA,MACP,IAAI,IAAI,KAAK;AAAA,MACb,WAAW;AAAA,IACb,CAAC;AACD,UAAMA,OAAM;AAAA,MACV,GAAG,gBAAgB,OAAO,eAAe,MAAM,QAAQ;AAAA,IACzD;AACA,sBAAkB,GAAG;AACrB,WAAOA;AAAA,EACT;AACA,oBAAkB;AAAA,IAAE,GAAG;AAAA,IACrB,OAAO;AAAA,IACP,IAAI,IAAI,KAAK;AAAA,EACf,CAAC;AACD,MAAI,cAAc,IAAI,KAAK;AAC3B,SAAO,MAAM;AACf;;;ACplBA,IAAM,WAAW,CAAC,mBAAmB,SAAS,aAAa,YAAY,WAAW,YAAY,WAAW,YAAY,kBAAkB,UAAU,iBAAiB,SAAS,QAAQ,YAAY,SAAS,YAAY,cAAc,QAAQ,eAAe,YAAY,YAAY,YAAY,YAAY,UAAU;AACnT,IAAM,oBAAiC,oBAAI,IAAI,QAAQ;AAC1C,oBAAI,IAAI,CAAC,aAAa,SAAS,YAAY,kBAAkB,SAAS,YAAY,eAAe,GAAG,QAAQ,CAAC;AAC1H,IAAM,kBAA+B,oBAAI,IAAI,CAAC,aAAa,eAAe,aAAa,UAAU,CAAC;AAClG,IAAM,UAAU;AAAA,EACd,WAAW;AAAA,EACX,SAAS;AACX;AAEA,IAAM;AAAA,EACJ;AACF,IAAI,OAAO;AACX,IAAM,kBAAkB;AACxB,IAAM,sBAAsB,gBAAgB;AAC5C,IAAM,YAAY;AAClB,IAAM,gBAAgB,UAAU;AAChC,IAAM,QAAQ,CAAC;AACf,IAAM,SAAS,CAAC,EAAE;AAClB,IAAI,cAAc,oBAAI,IAAI;AAC1B,IAAI,eAAe,oBAAI,QAAQ;AAC/B,IAAI,YAAY;AAChB,OAAO,IAAI;AACX,SAAS,UAAU,MAAM;AACvB,MAAI,UAAU,MAAM,EAAE,GAAG;AACvB,QAAI,SAAS,OAAO;AACpB,aAAS,IAAI,GAAG,MAAM,OAAO,QAAQ,IAAI,KAAK,KAAK;AACjD,gBAAU,OAAO;AAAA,IACnB;AACA,QAAI,WAAW;AACb,UAAI,YAAY,MAAM;AACpB,YAAI,MAAM,aAAa,IAAI,IAAI;AAC/B,YAAI,OAAO,QAAQ,UAAU;AAC3B,gBAAM,WAAW,WAAW;AAC5B,mBAAS,MAAM,MAAM;AAAA,QACvB;AACA,mBAAW,CAAC,eAAe,WAAW,KAAK,aAAa;AACtD,oBAAU,MAAM,cAAc;AAAA,QAChC;AACA,kBAAU,aAAa;AACvB,sBAAc,oBAAI,IAAI;AAAA,MACxB,OAAO;AACL,iBAAS,YAAY;AAAA,MACvB;AACA,eAAS,eAAe,gBAAgB,IAAI,OAAO,SAAS;AAAA,IAC9D,WAAW,QAAQ,KAAK,gBAAgB,QAAQ;AAC9C,eAAS,MAAM,SAAS;AAAA,IAC1B;AACA,WAAO,SAAS;AAChB,mBAAe,oBAAI,QAAQ;AAC3B,WAAO;AAAA,EACT;AACA,SAAO;AACT;AACA,SAAS,UAAU,KAAK,UAAU;AAChC,UAAQ,OAAO;AAAA,SACR;AACH,aAAO,KAAK,MAAM,KAAK,CAAC,CAAC;AACzB;AAAA,SACG;AACH,aAAO,KAAK,MAAM,EAAE;AACpB;AAAA,SACG;AACH,aAAO,KAAK,MAAM,OAAO,IAAI;AAC7B;AAAA,SACG;AACH,UAAI,QAAQ,MAAM;AAChB,eAAO,KAAK,MAAM;AAAA,MACpB,OAAO;AACL,cAAM,MAAM,OAAO,KAAK,QAAQ;AAChC,gBAAQ;AAAA,eACD;AACH,mBAAO;AAAA,eACJ;AACH,oBAAQ,IAAI;AAAA,mBACL;AACH,4BAAY,GAAG;AACf;AAAA,mBACG;AACH,2BAAW,GAAG;AACd;AAAA,mBACG;AACH,uBAAO,KAAK,eAAe,IAAI,YAAY,IAAI,IAAI;AACnD;AAAA,mBACG;AACH,uBAAO,KAAK,MAAM,EAAE;AACpB;AAAA,mBACG;AACH,uBAAO,KAAK,UAAU;AACtB,2BAAW,MAAM,KAAK,GAAG,CAAC;AAC1B,uBAAO,KAAK,GAAG;AACf;AAAA,mBACG;AACH,uBAAO,KAAK,UAAU;AACtB,2BAAW,MAAM,KAAK,GAAG,CAAC;AAC1B,uBAAO,KAAK,GAAG;AACf;AAAA,mBACG;AACH,uBAAO,KAAK,oCAAoC;AAChD,4BAAY,GAAG;AACf,uBAAO,KAAK,IAAI;AAChB;AAAA;AAEA,uBAAO;AAAA;AAEX;AAAA;AAEA,mBAAO,KAAK,GAAG;AACf;AAAA;AAAA,MAEN;AACA;AAAA;AAEA,aAAO;AAAA;AAEX,SAAO;AACT;AACA,SAAS,YAAY,KAAK;AACxB,MAAI,MAAM;AACV,QAAM,KAAK,GAAG;AACd,aAAW,OAAO,KAAK;AACrB,QAAI,eAAe,KAAK,KAAK,GAAG,GAAG;AACjC,YAAM,MAAM,IAAI;AAChB,YAAM,aAAa,YAAY,GAAG;AAClC,aAAO,KAAK,MAAM,aAAa,GAAG;AAClC,UAAI,UAAU,KAAK,UAAU,GAAG;AAC9B,cAAM;AAAA,MACR,OAAO;AACL,eAAO,IAAI;AAAA,MACb;AAAA,IACF;AAAA,EACF;AACA,MAAI,QAAQ,KAAK;AACf,WAAO,KAAK,IAAI;AAAA,EAClB,OAAO;AACL,WAAO,KAAK,GAAG;AAAA,EACjB;AACA,QAAM,IAAI;AACZ;AACA,SAAS,WAAW,KAAK;AACvB,SAAO,KAAK,GAAG;AACf,QAAM,KAAK,GAAG;AACd,YAAU,IAAI,IAAI,CAAC;AACnB,WAAS,IAAI,GAAG,MAAM,IAAI,QAAQ,IAAI,KAAK,KAAK;AAC9C,WAAO,KAAK,GAAG;AACf,cAAU,IAAI,IAAI,CAAC;AAAA,EACrB;AACA,QAAM,IAAI;AACV,SAAO,KAAK,GAAG;AACjB;AACA,SAAS,OAAO,KAAK,UAAU;AAC7B,MAAI,MAAM,aAAa,IAAI,GAAG;AAC9B,MAAI,QAAQ,QAAW;AACrB,iBAAa,IAAI,KAAK,OAAO,MAAM;AACnC,WAAO;AAAA,EACT;AACA,MAAI,OAAO,QAAQ,UAAU;AAC3B,UAAM,gBAAgB,KAAK,GAAG;AAAA,EAChC;AACA,MAAI,MAAM,SAAS,GAAG,GAAG;AACvB,UAAM,SAAS,MAAM,MAAM,SAAS;AACpC,QAAI,YAAY,aAAa,IAAI,MAAM;AACvC,QAAI,OAAO,cAAc,UAAU;AACjC,kBAAY,gBAAgB,QAAQ,SAAS;AAAA,IAC/C;AACA,gBAAY,IAAI,MAAM,YAAY,IAAI,GAAG,KAAK,MAAM,aAAa,WAAW,QAAQ,IAAI,GAAG;AAC3F,WAAO;AAAA,EACT;AACA,SAAO;AACT;AACA,SAAS,YAAY,MAAM;AACzB,QAAM,uBAAuB,wBAAwB,IAAI;AACzD,SAAO,yBAAyB,KAAK,OAAO,MAAM,MAAM,oBAAoB;AAC9E;AACA,SAAS,aAAa,QAAQ,KAAK;AACjC,SAAO,UAAU,OAAO,QAAQ,YAAY,IAAI,OAAO,MAAM,MAAM,MAAM,MAAM,MAAM;AACvF;AACA,SAAS,wBAAwB,MAAM;AACrC,MAAI,OAAO,KAAK;AAChB,MAAI,EAAE,QAAQ,OAAO,QAAQ,OAAO,QAAQ,OAAO,QAAQ,OAAO,SAAS,OAAO,SAAS,MAAM;AAC/F,WAAO;AAAA,EACT;AACA,WAAS,IAAI,GAAG,MAAM,KAAK,QAAQ,IAAI,KAAK,KAAK;AAC/C,WAAO,KAAK;AACZ,QAAI,EAAE,QAAQ,OAAO,QAAQ,OAAO,QAAQ,OAAO,QAAQ,OAAO,QAAQ,OAAO,QAAQ,OAAO,SAAS,OAAO,SAAS,MAAM;AAC7H,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AACA,SAAS,MAAM,KAAK,UAAU;AAC5B,MAAI,SAAS;AACb,MAAI,UAAU;AACd,WAAS,IAAI,UAAU,MAAM,IAAI,QAAQ,IAAI,KAAK,KAAK;AACrD,QAAI;AACJ,YAAQ,IAAI;AAAA,WACL;AACH,sBAAc;AACd;AAAA,WACG;AACH,sBAAc;AACd;AAAA,WACG;AACH,sBAAc;AACd;AAAA,WACG;AACH,sBAAc;AACd;AAAA,WACG;AACH,sBAAc;AACd;AAAA,WACG;AACH,sBAAc;AACd;AAAA,WACG;AACH,sBAAc;AACd;AAAA;AAEA;AAAA;AAEJ,cAAU,IAAI,MAAM,SAAS,CAAC,IAAI;AAClC,cAAU,IAAI;AAAA,EAChB;AACA,MAAI,YAAY,UAAU;AACxB,aAAS;AAAA,EACX,OAAO;AACL,cAAU,IAAI,MAAM,OAAO;AAAA,EAC7B;AACA,SAAO,MAAM,SAAS;AACxB;AACA,SAAS,gBAAgB,KAAK,KAAK;AACjC,QAAM,MAAM,WAAW,WAAW;AAClC,eAAa,IAAI,KAAK,GAAG;AACzB,MAAI,KAAK;AACP,WAAO,MAAM,MAAM,MAAM;AAAA,EAC3B,OAAO;AACL,WAAO,OAAO,MAAM,MAAM,OAAO;AAAA,EACnC;AACA,SAAO;AACT;AACA,SAAS,kBAAkB;AACzB,MAAI,SAAS,gBAAgB;AAC7B,WAAS,IAAI,GAAG,IAAI,WAAW,KAAK;AAClC,cAAU,MAAM,WAAW,CAAC;AAAA,EAC9B;AACA,cAAY;AACZ,SAAO;AACT;AACA,SAAS,WAAW,OAAO;AACzB,MAAI,MAAM,QAAQ;AAClB,MAAI,MAAM,gBAAgB;AAC1B,WAAS,QAAQ,OAAO;AACxB,SAAO,QAAQ,GAAG;AAChB,UAAM,QAAQ;AACd,WAAO,UAAU;AACjB,aAAS,QAAQ,OAAO;AAAA,EAC1B;AACA,SAAO;AACT;AAEA,IAAM,iBAAiB;AAoBvB,SAAS,oBAAoB,MAAM,UAAU,CAAC,GAAG;AAC/C,QAAM;AAAA,IACJ,YAAY;AAAA,EACd,IAAI;AACJ,MAAI;AACJ,QAAM,UAAU,IAAI,QAAQ,CAAC,GAAGC,YAAW;AACzC,oBAAgB,WAAW,MAAMA,QAAO,0BAA0B,GAAG,SAAS;AAAA,EAChF,CAAC;AACD,SAAO,QAAQ,KAAK,CAAC,eAAe,MAAM,OAAO,GAAG,OAAO,CAAC,EAAE,KAAK,UAAQ;AACzE,iBAAa,aAAa;AAC1B,WAAO;AAAA,EACT,CAAC;AACH;AACA,SAAS,eAAe,MAAM,UAAU,CAAC,GAAG;AAC1C,MAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM,oBAAoB,CAAC;AAC3B,QAAM,WAAW,oBAAI,IAAI;AACzB,QAAM,SAAS,oBAAI,QAAQ;AAC3B,QAAM,WAAW,MAAM;AACrB,QAAI,CAAC,SAAS,QAAQ,CAAC,WAAW;AAChC,iBAAW;AACX,uBAAiB,cAAc;AAAA,QAC7B,MAAM,GAAG;AACP,WAAC,aAAa,OAAO,MAAM,CAAC;AAAA,QAC9B;AAAA,MACF,CAAC;AACD,kBAAY,SAAS,IAAI;AACzB,kBAAY;AAAA,IACd;AAAA,EACF;AACA,QAAM,WAAW,UAAQ;AACvB,aAAS,OAAO;AAChB,QAAI,CAAC,aAAa,cAAc;AAC9B,cAAQ,QAAQ,EAAE,KAAK,UAAU;AACjC,kBAAY;AAAA,IACd;AAAA,EACF;AACA,QAAM,aAAa,MAAM;AACvB,QAAI,MAAM,UAAU,CAAC,aAAa,cAAc;AAC9C,aAAO,MAAM,UAAU,QAAQ,WAAW,WAAW,MAAM,iBAAgB;AAC3E,cAAQ;AAAA,IACV;AACA,gBAAY;AAAA,EACd;AACA,MAAI;AACJ,MAAI;AACJ,MAAI,MAAM;AACV,MAAI,QAAQ;AACZ,MAAI,eAAe;AACnB,MAAI,YAAY;AAChB,MAAI,gBAAgB;AACpB,MAAI,YAAY;AAChB,MAAI,SAAS;AAAA,IACX,MAAM,SAAS;AACb,aAAO;AAAA,IACT;AAAA,EACF;AACA,eAAa,UAAU,UAAU;AAAA,IAC/B,IAAI,YAAY;AAAA,IAChB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,WAAW,CAAC;AAAA,IACZ,UAAU,CAAC;AAAA,IACX,QAAQ,CAAC;AAAA,IACT;AAAA,IACA,MAAM,GAAG;AACP,UAAI,CAAC;AAAc,0BAAkB,KAAK,CAAC;AAAA,IAC7C;AAAA,IACA,QAAQ,IAAI,WAAW;AACrB,UAAI;AAAc;AAClB,YAAM,cAAc,KAAK;AACzB,YAAM,QAAQ,KAAK,QAAQ,WAAW;AACtC,UAAI,UAAU;AAAI;AAClB,YAAM,OAAO,KAAK,QAAQ,MAAM,OAAO,QAAQ,YAAY,MAAM;AACjE,aAAO,KAAK,QAAQ,KAAK,MAAM,OAAO,OAAO,YAAY,SAAS,CAAC,GAAGC,gBAAe,UAAU,CAAC,CAAC;AAAA,IACnG;AAAA,IACA,cAAc,IAAI,GAAG,OAAO,MAAM;AAChC,UAAI;AAAO,eAAO,SAAS,aAAa,QAAQ,IAAI,GAAG,cAAc,CAAC;AACtE,UAAI,CAAC,KAAK,OAAO,MAAM,YAAY,EAAE,UAAU;AAAI,eAAO,SAAS,aAAa,QAAQ,IAAI,CAAC,CAAC;AAC9F,UAAI,CAAC;AAAc,gBAAQ,kBAAkB,KAAK,CAAC;AAAA;AAAO,iBAAS,cAAc,MAAM;AACvF,QAAE,KAAK,OAAK;AACV,SAAC,aAAa,SAAS,aAAa,QAAQ,IAAI,CAAC,CAAC;AAAA,MACpD,CAAC,EAAE,MAAM,MAAM;AACb,SAAC,aAAa,SAAS,aAAa,UAAU;AAAA,MAChD,CAAC;AAAA,IACH;AAAA,IACA,iBAAiB,KAAK;AACpB,UAAI,CAAC,SAAS,IAAI,GAAG,GAAG;AACtB,iBAAS,IAAI,KAAK,CAAC,CAAC;AACpB,wBAAgB,SAAS,cAAc,OAAO;AAAA,MAChD;AACA,aAAO,CAAC,OAAO,UAAU;AACvB,YAAI,SAAS,IAAI,GAAG,GAAG;AACrB,gBAAM,OAAO,SAAS,IAAI,GAAG;AAC7B,mBAAS,OAAO,GAAG;AACnB,cAAI,iBAAiB,UAAU,GAAG;AAAG;AACrC,eAAK,UAAU,UAAa,UAAU,CAAC,WAAW;AAChD,gBAAI,CAAC,cAAc;AACjB,sBAAQ,QAAQ,EAAE,KAAK,MAAM,OAAO,mBAAmB,MAAM,KAAK,UAAU,SAAY,QAAQ,EAAE,CAAC;AACnG,uBAAS,SAAS,aAAa,QAAQ,KAAK,OAAO,cAAc,CAAC;AAAA,YACpE,OAAO;AACL,qBAAO,MAAM,mBAAmB,QAAQ,UAAU,SAAY,QAAQ,WAAW;AACjF,uBAAS,GAAG,KAAK,SAAS,KAAK,IAAI,OAAK,eAAe,KAAK,EAAE,KAAK,GAAG,IAAI,MAAM,UAAU,OAAO,QAAQ,MAAM,eAAe,KAAK,IAAI,MAAM,CAAC,gBAAgB,MAAM,iBAAiB,IAAI;AACzL,8BAAgB;AAAA,YAClB;AAAA,UACF;AAAA,QACF;AACA,YAAI,CAAC,SAAS;AAAM,kBAAQ,QAAQ,EAAE,KAAK,QAAQ;AACnD,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACA,MAAI,OAAOA,gBAAe,OAAO,KAAK,CAAC,CAAC;AACxC,WAAS,UAAU;AACjB,iBAAa,UAAU;AACvB,YAAQ,YAAY;AACpB,WAAO,aAAa,QAAQ,QAAQ,IAAI;AACxC,eAAW,OAAO,QAAQ,WAAW;AACnC,UAAI,EAAE,UAAU,QAAQ,UAAU,QAAQ,QAAQ,UAAU,KAAK,IAAI,GAAG;AAAQ,iBAAS,cAAc,OAAO;AAAA,IAChH;AACA,eAAW,OAAO,SAAS,KAAK;AAAG,eAAS,cAAc,OAAO;AACjE,QAAI,MAAM;AAAQ,aAAO,cAAc,MAAM,OAAO,KAAK;AACzD,WAAO,MAAM,IAAI;AACjB,YAAQ;AACR,gBAAY;AACZ,uBAAmB,gBAAgB;AAAA,MACjC,MAAM,GAAG;AACP,SAAC,aAAa,OAAO,MAAM,CAAC;AAAA,MAC9B;AAAA,IACF,CAAC;AAAA,EACH;AACA,SAAO;AAAA,IACL,KAAK,IAAI;AACP,eAAS,WAAW;AAClB,gBAAQ;AACR,WAAG,GAAG;AAAA,MACR;AACA,UAAI,eAAe;AACjB,qBAAa;AACb,wBAAgB,CAAAC,aAAW;AACzB,qBAAWA,QAAO;AAClB,mBAAS;AAAA,QACX;AAAA,MACF;AAAO,wBAAgB;AACvB,UAAI,CAAC,SAAS;AAAM,gBAAQ,QAAQ,EAAE,KAAK,QAAQ;AAAA,IACrD;AAAA,IACA,KAAK,GAAG;AACN,cAAQ,WAAW,iBAAiB,EAAE,KAAK,MAAM;AAC/C,gBAAQ;AACR,iBAAS,WAAW;AACpB,eAAO,MAAM,GAAG;AAChB,uBAAe;AACf,YAAI;AAAW,mBAAS,IAAI;AAAA;AAAO,qBAAW,QAAQ;AAAA,MACxD,CAAC;AAAA,IACH;AAAA,IACA,OAAO,GAAG;AACR,cAAQ,WAAW,iBAAiB,EAAE,KAAK,MAAM;AAC/C,gBAAQ;AACR,cAAM,UAAU,IAAI,YAAY;AAChC,cAAM,SAAS,EAAE,UAAU;AAC3B,mBAAW;AAAA,UACT,MAAM;AACJ,mBAAO,YAAY;AACnB,cAAE,MAAM;AAAA,UACV;AAAA,QACF;AACA,iBAAS;AAAA,UACP,MAAM,SAAS;AACb,mBAAO,MAAM,QAAQ,OAAO,OAAO,CAAC;AAAA,UACtC;AAAA,QACF;AACA,eAAO,MAAM,GAAG;AAChB,uBAAe;AACf,YAAI;AAAW,mBAAS,IAAI;AAAA;AAAO,qBAAW,QAAQ;AAAA,MACxD,CAAC;AAAA,IACH;AAAA,EACF;AACF;AACA,SAAS,OAAO,OAAO;AACrB,YAAU,MAAM,MAAM,QAAQ;AAChC;AACA,SAAS,gBAAgB,OAAO;AAC9B,QAAM;AAAA,IACJ;AAAA,EACF,IAAI,aAAa;AACjB,SAAO,IAAI,wBAAwB;AAAA,IACjC;AAAA,IACA,GAAG;AAAA,EACL,CAAC,CAAC;AACJ;AACA,SAAS,YAAY,OAAO;AAC1B,QAAM,IAAI,aAAa;AACvB,IAAE,YAAY;AACd,QAAMC,YAAW,MAAM;AACvB,IAAE,YAAY;AACd,SAAOA;AACT;AACA,SAAS,IAAI,MAAM,OAAO;AACxB,MAAI,MAAM,QAAQ;AAChB,QAAI,SAAS;AACb,aAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,gBAAU,EAAE;AACZ,YAAM,OAAO,MAAM;AACnB,UAAI,SAAS;AAAW,kBAAUF,gBAAe,IAAI;AAAA,IACvD;AACA,QAAI,SAAS,EAAE,MAAM;AAAA,EACvB;AACA,SAAO;AAAA,IACL;AAAA,EACF;AACF;AACA,SAAS,aAAa,OAAO;AAC3B,MAAI,CAAC;AAAO,WAAO;AACnB,MAAI,YAAY,OAAO,KAAK,KAAK,GAC7B,SAAS;AACb,WAAS,IAAI,GAAG,MAAM,UAAU,QAAQ,IAAI,KAAK,KAAK;AACpD,UAAM,MAAM,UAAU,IAChB,aAAa,CAAC,CAAC,MAAM;AAC3B,QAAI,CAAC,OAAO,CAAC;AAAY;AACzB,UAAM,UAAU;AAChB,cAAU;AAAA,EACZ;AACA,SAAO;AACT;AACA,SAAS,SAAS,OAAO;AACvB,MAAI,CAAC;AAAO,WAAO;AACnB,MAAI,OAAO,UAAU;AAAU,WAAO;AACtC,MAAI,SAAS;AACb,QAAM,IAAI,OAAO,KAAK,KAAK;AAC3B,WAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AACjC,UAAM,IAAI,EAAE;AACZ,QAAI;AAAG,gBAAU;AACjB,cAAU,GAAG,KAAK,OAAO,MAAM,IAAI,IAAI;AAAA,EACzC;AACA,SAAO;AACT;AACA,SAAS,WAAW,KAAK,OAAOE,WAAU,SAAS;AACjD,MAAI,SAAS,IAAI,MAAM,UAAU,gBAAgB,IAAI;AACrD,MAAI,SAAS;AAAM,YAAQ,CAAC;AAAA,WAAW,OAAO,UAAU;AAAY,YAAQ,MAAM;AAClF,QAAM,OAAO,OAAO,KAAK,KAAK;AAC9B,MAAI;AACJ,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,UAAM,OAAO,KAAK;AAClB,QAAI,gBAAgB,IAAI,IAAI,GAAG;AAC7B,UAAIA,cAAa;AAAW,QAAAA,YAAW,SAAS,cAAc,MAAM,QAAQ,OAAO,MAAM,KAAK;AAC9F;AAAA,IACF;AACA,UAAM,QAAQ,MAAM;AACpB,QAAI,SAAS,SAAS;AACpB,gBAAU,UAAU,SAAS,KAAK;AAAA,IACpC,WAAW,SAAS,WAAW,SAAS,eAAe,SAAS,aAAa;AAC3E,UAAI;AAAe;AACnB,UAAI;AACJ,gBAAU,WAAW,IAAI,MAAM,SAAS,IAAI,MAAM,MAAM,IAAI,MAAM,aAAa,IAAI,MAAM,KAAK,aAAa,MAAM,SAAS;AAC1H,sBAAgB;AAAA,IAClB,WAAW,kBAAkB,IAAI,IAAI,GAAG;AACtC,UAAI;AAAO,kBAAU;AAAA;AAAU;AAAA,IACjC,WAAW,SAAS,UAAa,SAAS,SAAS,KAAK,MAAM,GAAG,CAAC,MAAM,MAAM;AAC5E;AAAA,IACF,OAAO;AACL,gBAAU,GAAG,QAAQ,SAAS,SAAS,OAAO,OAAO,IAAI;AAAA,IAC3D;AACA,QAAI,MAAM,KAAK,SAAS;AAAG,gBAAU;AAAA,EACvC;AACA,SAAO;AAAA,IACL,GAAG,SAAS,IAAIF,gBAAeE,SAAQ,MAAM;AAAA,EAC/C;AACF;AACA,SAAS,aAAa,KAAK,OAAO,WAAW;AAC3C,SAAO,YAAY,QAAQ,MAAM,MAAM,KAAK,SAAS,OAAO,IAAI,QAAQ,WAAW;AACrF;AACA,SAAS,kBAAkB;AACzB,QAAM,KAAK,gBAAgB;AAC3B,SAAO,KAAK,aAAa,QAAQ;AACnC;AACA,SAAS,OAAO,GAAG,MAAM;AACvB,QAAM,IAAI,OAAO;AACjB,MAAI,MAAM,UAAU;AAClB,QAAI,CAAC,QAAQ,MAAM;AAAY,aAAO,OAAO,EAAE,GAAG,IAAI;AACtD,QAAI,CAAC,QAAQ,MAAM,QAAQ,CAAC,GAAG;AAC7B,UAAI,IAAI;AACR,eAAS,IAAI,GAAG,IAAI,EAAE,QAAQ;AAAK,aAAKF,gBAAe,OAAO,EAAE,IAAI,IAAI,CAAC;AACzE,aAAO;AAAA,QACL,GAAG;AAAA,MACL;AAAA,IACF;AACA,QAAI,QAAQ,MAAM;AAAW,aAAO,OAAO,CAAC;AAC5C,WAAO;AAAA,EACT;AACA,QAAM,QAAQ,OAAO,MAAM;AAC3B,QAAM,WAAW,OAAO,WAAW;AACnC,MAAI,SAAS,EAAE,QAAQ,KAAK;AAC5B,MAAI,OAAO,EAAE,QAAQ,GAAG;AACxB,MAAI,SAAS,KAAK,OAAO;AAAG,WAAO;AACnC,MAAI,OAAO,GACP,MAAM;AACV,SAAO,UAAU,KAAK,QAAQ,GAAG;AAC/B,QAAI,SAAS,MAAM;AACjB,UAAI,OAAO;AAAQ,eAAO,EAAE,UAAU,MAAM,MAAM;AAClD,aAAO;AACP,aAAO,SAAS;AAChB,eAAS,EAAE,QAAQ,OAAO,IAAI;AAAA,IAChC,OAAO;AACL,UAAI,OAAO;AAAM,eAAO,EAAE,UAAU,MAAM,IAAI;AAC9C,aAAO;AACP,aAAO,OAAO;AACd,aAAO,EAAE,QAAQ,KAAK,IAAI;AAAA,IAC5B;AAAA,EACF;AACA,MAAI,UAAU,GAAG;AACf,OAAG;AACD,UAAI,OAAO;AAAQ,eAAO,EAAE,UAAU,MAAM,MAAM;AAClD,aAAO;AACP,aAAO,SAAS;AAChB,eAAS,EAAE,QAAQ,OAAO,IAAI;AAAA,IAChC,SAAS,UAAU;AAAA,EACrB;AAAO,WAAO,QAAQ,GAAG;AACvB,UAAI,OAAO;AAAM,eAAO,EAAE,UAAU,MAAM,IAAI;AAC9C,aAAO;AACP,aAAO,OAAO;AACd,aAAO,EAAE,QAAQ,KAAK,IAAI;AAAA,IAC5B;AACA,SAAO,OAAO,EAAE,SAAS,MAAM,EAAE,UAAU,IAAI,IAAI;AACrD;AACA,SAASA,gBAAe,MAAM;AAC5B,QAAM,IAAI,OAAO;AACjB,MAAI,MAAM;AAAU,WAAO;AAC3B,MAAI,QAAQ,QAAQ,MAAM;AAAW,WAAO;AAC5C,MAAI,MAAM,QAAQ,IAAI,GAAG;AACvB,QAAI,SAAS;AACb,aAAS,IAAI,GAAG,MAAM,KAAK,QAAQ,IAAI,KAAK;AAAK,gBAAUA,gBAAe,KAAK,EAAE;AACjF,WAAO;AAAA,EACT;AACA,MAAI,MAAM;AAAU,WAAO,KAAK;AAChC,MAAI,MAAM;AAAY,WAAOA,gBAAe,KAAK,CAAC;AAClD,SAAO,OAAO,IAAI;AACpB;AACA,SAAS,kBAAkB;AACzB,QAAM,UAAU,aAAa;AAC7B,SAAO,WAAW,CAAC,QAAQ,aAAa,GAAG,QAAQ,KAAK,QAAQ;AAClE;AACA,SAAS,UAAU,IAAI;AACrB,eAAa,QAAQ,OAAO,KAAK,MAAMA,gBAAe,GAAG,CAAC,CAAC;AAC7D;AAOA,SAAS,wBAAwB;AAAA,EAC/B,aAAa,CAAC,SAAS,OAAO;AAAA,EAC9B;AACF,IAAI,CAAC,GAAG;AACN,SAAO,UAAU,QAAQ,WAAW,WAAW,yLAAyL,WAAW,KAAK,KAAK;AAC/P;AACA,SAAS,aAAa,QAAQ,MAAM;AAClC,MAAI,CAAC,UAAU,CAAC,OAAO;AAAQ,WAAO;AACtC,MAAI,MAAM;AACV,WAAS,IAAI,GAAG,MAAM,OAAO,QAAQ,IAAI,KAAK;AAAK,WAAO,OAAO,GAAG;AACpE,SAAO,KAAK,QAAQ,WAAW,MAAM,SAAS;AAChD;AACA,SAAS,cAAc,MAAM,SAAS,OAAO;AAC3C,QAAM,MAAM,UAAU,QAAQ,WAAW,WAAW,MAAM;AAC1D,QAAM,QAAQ,KAAK,QAAQ,WAAW;AACtC,MAAI,QAAQ,IAAI;AACd,WAAO,KAAK,MAAM,GAAG,KAAK,IAAI,MAAM,KAAK,MAAM,KAAK;AAAA,EACtD;AACA,SAAO,OAAO;AAChB;AACA,SAAS,eAAe,OAAO;AAC7B,MAAI,MAAM,SAAS;AACjB,UAAM,SAAS,CAAC;AAChB,UAAM,OAAO,OAAO,oBAAoB,KAAK;AAC7C,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,YAAM,MAAM,KAAK;AACjB,YAAM,QAAQ,MAAM;AACpB,UAAI,CAAC,SAAS,QAAQ,aAAa,OAAO,UAAU,YAAY;AAC9D,eAAO,OAAO;AAAA,MAChB;AAAA,IACF;AACA,WAAO,2BAA2B,UAAU,MAAM,OAAO,OAAO,UAAU,MAAM;AAAA,EAClF;AACA,SAAO,UAAU,KAAK;AACxB;AACA,SAAS,iBAAiB,UAAU,KAAK;AACvC,aAAW,KAAK,CAAC,GAAG,SAAS,KAAK,CAAC,EAAE,QAAQ,GAAG;AAC9C,QAAI,IAAI,WAAW,CAAC,GAAG;AACrB,eAAS,IAAI,CAAC,EAAE,KAAK,GAAG;AACxB,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AACA,SAAS,aAAa,UAAU,KAAK,OAAO,aAAa,WAAW;AAClE,QAAM,QAAQ,SAAS,IAAI,KAAK;AAChC,MAAI;AAAO,WAAO,aAAa,iBAAiB;AAChD,YAAU,QAAQ,OAAO,UAAU,YAAY,SAAS,IAAI,OAAO,GAAG;AACtE,SAAO,aAAa,SAAS,WAAW,KAAK;AAC/C;AACA,SAAS,mBAAmB,MAAM,KAAK,OAAO;AAC5C,QAAM,YAAY;AAClB,QAAM,SAAS,gBAAgB;AAC/B,QAAM,QAAQ,KAAK,QAAQ,MAAM;AACjC,MAAI,UAAU;AAAI,WAAO;AACzB,YAAU,YAAY,QAAQ,OAAO;AACrC,MAAI;AACJ,MAAI,OAAO,GACP,QAAQ;AACZ,SAAO,QAAQ,UAAU,KAAK,IAAI,GAAG;AACnC,QAAI,MAAM,GAAG,OAAO,KAAK;AACvB;AACA,UAAI,QAAQ;AAAM;AAAA,IACpB;AAAO;AAAA,EACT;AACA,SAAO,KAAK,MAAM,GAAG,KAAK,IAAI,QAAQ,KAAK,MAAM,UAAU,SAAS;AACtE;AAiEA,IAAM,WAAW;AAEjB,SAAS,SAAS;AAAC;AACnB,SAAS,iBAAiB;AAAC;;;ACjwB3B,6BAAwB;;;ACCxB,IAAI;AAAA,CACH,SAAUG,kBAAiB;AACxB,EAAAA,iBAAgBA,iBAAgB,oBAAoB,KAAK;AAC7D,GAAG,oBAAoB,kBAAkB,CAAC,EAAE;AACrC,SAAS,gBAAgB,GAAG;AAC/B,SAAO,MAAM,gBAAgB,kBAAkB,MAAM;AACzD;AAIO,SAAS,SAAS,WAAW,QAAQ;AACxC,MAAI,WAAW;AACX,WAAO,OAAO,WAAW,aAAa,OAAO,IAAI;AAAA,EACrD;AACA,SAAO,gBAAgB;AAC3B;;;ACPO,IAAM,cAAc,OAAO,OAAO;AAAA,EACvC,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,eAAe;AACjB,CAAC;;;AChBM,SAAS,UAAU,WAAW,SAAS;AAC5C,QAAM,mBAAmB,QAAQ,SAAS;AAE1C,MAAI,CAAC,kBAAkB;AACrB,UAAM,IAAI,MAAM,OAAO;AAAA,EACzB;AACF;;;ACFO,SAAS,UAAU,OAAO;AAC/B,SACE,QAAQ,UAAU,QAAQ,UAAU,SAAS,SAAS,MAAM,UAC5D;AAEJ;;;ACLO,SAAS,aAAa,OAAO;AAClC,SAAO,OAAO,SAAS,YAAY,UAAU;AAC/C;;;ACNO,SAAS,UAAU,WAAW,SAAS;AAC5C,QAAM,mBAAmB,QAAQ,SAAS;AAE1C,MAAI,CAAC,kBAAkB;AACrB,UAAM,IAAI;AAAA,MACR,WAAW,OAAO,UAAU;AAAA,IAC9B;AAAA,EACF;AACF;;;ACPA,IAAM,aAAa;AASZ,SAAS,YAAY,QAAQ,UAAU;AAC5C,MAAI,gBAAgB;AACpB,MAAI,OAAO;AAEX,aAAW,SAAS,OAAO,KAAK,SAAS,UAAU,GAAG;AACpD,WAAO,MAAM,UAAU,YAAY,UAAU,KAAK;AAElD,QAAI,MAAM,SAAS,UAAU;AAC3B;AAAA,IACF;AAEA,oBAAgB,MAAM,QAAQ,MAAM,GAAG;AACvC,YAAQ;AAAA,EACV;AAEA,SAAO;AAAA,IACL;AAAA,IACA,QAAQ,WAAW,IAAI;AAAA,EACzB;AACF;;;ACxBO,SAAS,cAAc,UAAU;AACtC,SAAO;AAAA,IACL,SAAS;AAAA,IACT,YAAY,SAAS,QAAQ,SAAS,KAAK;AAAA,EAC7C;AACF;AAKO,SAAS,oBAAoB,QAAQ,gBAAgB;AAC1D,QAAM,wBAAwB,OAAO,eAAe,SAAS;AAC7D,QAAM,OAAO,GAAG,SAAS,qBAAqB,IAAI,OAAO;AACzD,QAAM,YAAY,eAAe,OAAO;AACxC,QAAM,aAAa,OAAO,eAAe,OAAO;AAChD,QAAM,UAAU,eAAe,OAAO;AACtC,QAAM,eAAe,eAAe,SAAS,IAAI,wBAAwB;AACzE,QAAM,YAAY,eAAe,SAAS;AAC1C,QAAM,cAAc,GAAG,OAAO,QAAQ,WAAW;AAAA;AACjD,QAAM,QAAQ,KAAK,MAAM,cAAc;AACvC,QAAM,eAAe,MAAM;AAE3B,MAAI,aAAa,SAAS,KAAK;AAC7B,UAAM,eAAe,KAAK,MAAM,YAAY,EAAE;AAC9C,UAAM,mBAAmB,YAAY;AACrC,UAAM,WAAW,CAAC;AAElB,aAAS,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK,IAAI;AAChD,eAAS,KAAK,aAAa,MAAM,GAAG,IAAI,EAAE,CAAC;AAAA,IAC7C;AAEA,WACE,cACA,mBAAmB;AAAA,MACjB,CAAC,GAAG,aAAa,SAAS,EAAE;AAAA,MAC5B,GAAG,SAAS,MAAM,GAAG,eAAe,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,OAAO,CAAC;AAAA,MACtE,CAAC,KAAK,IAAI,SAAS,gBAAgB,CAAC;AAAA,MACpC,CAAC,KAAK,SAAS,eAAe,EAAE;AAAA,IAClC,CAAC;AAAA,EAEL;AAEA,SACE,cACA,mBAAmB;AAAA,IAEjB,CAAC,GAAG,UAAU,OAAO,MAAM,YAAY,EAAE;AAAA,IACzC,CAAC,GAAG,aAAa,YAAY;AAAA,IAC7B,CAAC,KAAK,IAAI,SAAS,SAAS,CAAC;AAAA,IAC7B,CAAC,GAAG,UAAU,OAAO,MAAM,YAAY,EAAE;AAAA,EAC3C,CAAC;AAEL;AAEA,SAAS,mBAAmB,OAAO;AACjC,QAAM,gBAAgB,MAAM,OAAO,CAAC,CAAC,GAAG,IAAI,MAAM,SAAS,MAAS;AACpE,QAAM,SAAS,KAAK,IAAI,GAAG,cAAc,IAAI,CAAC,CAACC,OAAM,MAAMA,QAAO,MAAM,CAAC;AACzE,SAAO,cACJ,IAAI,CAAC,CAACA,SAAQ,IAAI,MAAMA,QAAO,SAAS,MAAM,KAAK,OAAO,MAAM,OAAO,GAAG,EAC1E,KAAK,IAAI;AACd;;;AC1DA,SAAS,oBAAoB,MAAM;AACjC,QAAM,WAAW,KAAK;AAEtB,MAAI,YAAY,QAAQ,UAAU,YAAY,YAAY,UAAU;AAClE,WAAO;AAAA,MACL,OAAO;AAAA,MACP,QAAQ,KAAK;AAAA,MACb,WAAW,KAAK;AAAA,MAChB,MAAM,KAAK;AAAA,MACX,eAAe,KAAK;AAAA,MACpB,YAAY,KAAK;AAAA,IACnB;AAAA,EACF;AAEA,SAAO;AACT;AAQO,IAAM,eAAN,cAA2B,MAAM;AAAA,EA8CtC,YAAY,YAAY,SAAS;AAC/B,QAAI,aAAa,iBAAiB;AAElC,UAAM,EAAE,OAAO,QAAQ,WAAW,MAAM,eAAe,WAAW,IAChE,oBAAoB,OAAO;AAC7B,UAAM,OAAO;AACb,SAAK,OAAO;AACZ,SAAK,OAAO,SAAS,QAAQ,SAAS,SAAS,OAAO;AACtD,SAAK,gBACH,kBAAkB,QAAQ,kBAAkB,SACxC,gBACA;AAEN,SAAK,QAAQ;AAAA,MACX,MAAM,QAAQ,KAAK,IAAI,QAAQ,QAAQ,CAAC,KAAK,IAAI;AAAA,IACnD;AACA,UAAM,gBAAgB;AAAA,OACnB,cAAc,KAAK,WAAW,QAAQ,gBAAgB,SACnD,SACA,YAAY,IAAI,CAAC,SAAS,KAAK,GAAG,EAAE,OAAO,CAAC,QAAQ,OAAO,IAAI;AAAA,IACrE;AAEA,SAAK,SACH,WAAW,QAAQ,WAAW,SAC1B,SACA,kBAAkB,QAAQ,kBAAkB,SAC5C,UACC,kBAAkB,cAAc,QAAQ,QACzC,oBAAoB,SACpB,SACA,gBAAgB;AACtB,SAAK,YACH,cAAc,QAAQ,cAAc,SAChC,YACA,kBAAkB,QAAQ,kBAAkB,SAC5C,SACA,cAAc,IAAI,CAAC,QAAQ,IAAI,KAAK;AAC1C,SAAK,YACH,aAAa,SACT,UAAU,IAAI,CAAC,QAAQ,YAAY,QAAQ,GAAG,CAAC,IAC/C,kBAAkB,QAAQ,kBAAkB,SAC5C,SACA,cAAc,IAAI,CAAC,QAAQ,YAAY,IAAI,QAAQ,IAAI,KAAK,CAAC;AACnE,UAAM,qBAAqB;AAAA,MACzB,kBAAkB,QAAQ,kBAAkB,SACxC,SACA,cAAc;AAAA,IACpB,IACI,kBAAkB,QAAQ,kBAAkB,SAC1C,SACA,cAAc,aAChB;AACJ,SAAK,cACF,OACC,eAAe,QAAQ,eAAe,SAClC,aACA,wBAAwB,QAAQ,SAAS,SAC3C,OACA,uBAAO,OAAO,IAAI;AAGxB,WAAO,iBAAiB,MAAM;AAAA,MAC5B,SAAS;AAAA,QACP,UAAU;AAAA,QACV,YAAY;AAAA,MACd;AAAA,MACA,MAAM;AAAA,QACJ,YAAY;AAAA,MACd;AAAA,MACA,OAAO;AAAA,QACL,YAAY;AAAA,MACd;AAAA,MACA,QAAQ;AAAA,QACN,YAAY;AAAA,MACd;AAAA,MACA,WAAW;AAAA,QACT,YAAY;AAAA,MACd;AAAA,MACA,eAAe;AAAA,QACb,YAAY;AAAA,MACd;AAAA,IACF,CAAC;AAKD,QACE,kBAAkB,QAClB,kBAAkB,UAClB,cAAc,OACd;AACA,aAAO,eAAe,MAAM,SAAS;AAAA,QACnC,OAAO,cAAc;AAAA,QACrB,UAAU;AAAA,QACV,cAAc;AAAA,MAChB,CAAC;AAAA,IACH,WAAW,MAAM,mBAAmB;AAClC,YAAM,kBAAkB,MAAM,YAAY;AAAA,IAC5C,OAAO;AACL,aAAO,eAAe,MAAM,SAAS;AAAA,QACnC,OAAO,MAAM,EAAE;AAAA,QACf,UAAU;AAAA,QACV,cAAc;AAAA,MAChB,CAAC;AAAA,IACH;AAAA,EAEF;AAAA,EAEA,KAAK,OAAO,eAAe;AACzB,WAAO;AAAA,EACT;AAAA,EAEA,WAAW;AACT,QAAI,SAAS,KAAK;AAElB,QAAI,KAAK,OAAO;AACd,iBAAW,QAAQ,KAAK,OAAO;AAC7B,YAAI,KAAK,KAAK;AACZ,oBAAU,SAAS,cAAc,KAAK,GAAG;AAAA,QAC3C;AAAA,MACF;AAAA,IACF,WAAW,KAAK,UAAU,KAAK,WAAW;AACxC,iBAAW,YAAY,KAAK,WAAW;AACrC,kBAAU,SAAS,oBAAoB,KAAK,QAAQ,QAAQ;AAAA,MAC9D;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,SAAS;AACP,UAAM,iBAAiB;AAAA,MACrB,SAAS,KAAK;AAAA,IAChB;AAEA,QAAI,KAAK,aAAa,MAAM;AAC1B,qBAAe,YAAY,KAAK;AAAA,IAClC;AAEA,QAAI,KAAK,QAAQ,MAAM;AACrB,qBAAe,OAAO,KAAK;AAAA,IAC7B;AAEA,QAAI,KAAK,cAAc,QAAQ,OAAO,KAAK,KAAK,UAAU,EAAE,SAAS,GAAG;AACtE,qBAAe,aAAa,KAAK;AAAA,IACnC;AAEA,WAAO;AAAA,EACT;AACF;AAEA,SAAS,iBAAiB,OAAO;AAC/B,SAAO,UAAU,UAAa,MAAM,WAAW,IAAI,SAAY;AACjE;;;AC/NO,SAAS,YAAY,QAAQ,UAAU,aAAa;AACzD,SAAO,IAAI,aAAa,iBAAiB,eAAe;AAAA,IACtD;AAAA,IACA,WAAW,CAAC,QAAQ;AAAA,EACtB,CAAC;AACH;;;ACPO,IAAM,WAAN,MAAe;AAAA,EAoBpB,YAAY,YAAY,UAAU,QAAQ;AACxC,SAAK,QAAQ,WAAW;AACxB,SAAK,MAAM,SAAS;AACpB,SAAK,aAAa;AAClB,SAAK,WAAW;AAChB,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,KAAK,OAAO,eAAe;AACzB,WAAO;AAAA,EACT;AAAA,EAEA,SAAS;AACP,WAAO;AAAA,MACL,OAAO,KAAK;AAAA,MACZ,KAAK,KAAK;AAAA,IACZ;AAAA,EACF;AACF;AAMO,IAAM,QAAN,MAAY;AAAA,EAiCjB,YAAY,MAAM,OAAO,KAAK,MAAM,QAAQ,OAAO;AACjD,SAAK,OAAO;AACZ,SAAK,QAAQ;AACb,SAAK,MAAM;AACX,SAAK,OAAO;AACZ,SAAK,SAAS;AAEd,SAAK,QAAQ;AACb,SAAK,OAAO;AACZ,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,KAAK,OAAO,eAAe;AACzB,WAAO;AAAA,EACT;AAAA,EAEA,SAAS;AACP,WAAO;AAAA,MACL,MAAM,KAAK;AAAA,MACX,OAAO,KAAK;AAAA,MACZ,MAAM,KAAK;AAAA,MACX,QAAQ,KAAK;AAAA,IACf;AAAA,EACF;AACF;AAQO,IAAM,oBAAoB;AAAA,EAC/B,MAAM,CAAC;AAAA,EACP,UAAU,CAAC,aAAa;AAAA,EACxB,qBAAqB;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,oBAAoB,CAAC,YAAY,QAAQ,gBAAgB,YAAY;AAAA,EACrE,UAAU,CAAC,MAAM;AAAA,EACjB,cAAc,CAAC,YAAY;AAAA,EAC3B,OAAO,CAAC,SAAS,QAAQ,aAAa,cAAc,cAAc;AAAA,EAClE,UAAU,CAAC,QAAQ,OAAO;AAAA,EAC1B,gBAAgB,CAAC,QAAQ,YAAY;AAAA,EACrC,gBAAgB,CAAC,iBAAiB,cAAc,cAAc;AAAA,EAC9D,oBAAoB;AAAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,UAAU,CAAC;AAAA,EACX,YAAY,CAAC;AAAA,EACb,aAAa,CAAC;AAAA,EACd,cAAc,CAAC;AAAA,EACf,WAAW,CAAC;AAAA,EACZ,WAAW,CAAC;AAAA,EACZ,WAAW,CAAC,QAAQ;AAAA,EACpB,aAAa,CAAC,QAAQ;AAAA,EACtB,aAAa,CAAC,QAAQ,OAAO;AAAA,EAC7B,WAAW,CAAC,QAAQ,WAAW;AAAA,EAC/B,WAAW,CAAC,MAAM;AAAA,EAClB,UAAU,CAAC,MAAM;AAAA,EACjB,aAAa,CAAC,MAAM;AAAA,EACpB,kBAAkB,CAAC,eAAe,cAAc,gBAAgB;AAAA,EAChE,yBAAyB,CAAC,MAAM;AAAA,EAChC,sBAAsB,CAAC,eAAe,QAAQ,YAAY;AAAA,EAC1D,sBAAsB;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,iBAAiB,CAAC,eAAe,QAAQ,aAAa,QAAQ,YAAY;AAAA,EAC1E,sBAAsB;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,yBAAyB;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,qBAAqB,CAAC,eAAe,QAAQ,cAAc,OAAO;AAAA,EAClE,oBAAoB,CAAC,eAAe,QAAQ,cAAc,QAAQ;AAAA,EAClE,qBAAqB,CAAC,eAAe,QAAQ,YAAY;AAAA,EACzD,2BAA2B,CAAC,eAAe,QAAQ,cAAc,QAAQ;AAAA,EACzE,qBAAqB,CAAC,eAAe,QAAQ,aAAa,WAAW;AAAA,EACrE,iBAAiB,CAAC,cAAc,gBAAgB;AAAA,EAChD,qBAAqB,CAAC,QAAQ,YAAY;AAAA,EAC1C,qBAAqB,CAAC,QAAQ,cAAc,cAAc,QAAQ;AAAA,EAClE,wBAAwB,CAAC,QAAQ,cAAc,cAAc,QAAQ;AAAA,EACrE,oBAAoB,CAAC,QAAQ,cAAc,OAAO;AAAA,EAClD,mBAAmB,CAAC,QAAQ,cAAc,QAAQ;AAAA,EAClD,0BAA0B,CAAC,QAAQ,cAAc,QAAQ;AAC3D;AACA,IAAM,aAAa,IAAI,IAAI,OAAO,KAAK,iBAAiB,CAAC;AAKlD,SAAS,OAAO,WAAW;AAChC,QAAM,YACJ,cAAc,QAAQ,cAAc,SAAS,SAAS,UAAU;AAClE,SAAO,OAAO,cAAc,YAAY,WAAW,IAAI,SAAS;AAClE;AAGA,IAAI;AAAA,CAEH,SAAUC,oBAAmB;AAC5B,EAAAA,mBAAkB,WAAW;AAC7B,EAAAA,mBAAkB,cAAc;AAChC,EAAAA,mBAAkB,kBAAkB;AACtC,GAAG,sBAAsB,oBAAoB,CAAC,EAAE;;;AC1MhD,IAAI;AAAA,CAEH,SAAUC,oBAAmB;AAC5B,EAAAA,mBAAkB,WAAW;AAC7B,EAAAA,mBAAkB,cAAc;AAChC,EAAAA,mBAAkB,kBAAkB;AACpC,EAAAA,mBAAkB,WAAW;AAC7B,EAAAA,mBAAkB,yBAAyB;AAC3C,EAAAA,mBAAkB,qBAAqB;AACvC,EAAAA,mBAAkB,qBAAqB;AACvC,EAAAA,mBAAkB,yBAAyB;AAC3C,EAAAA,mBAAkB,YAAY;AAC9B,EAAAA,mBAAkB,YAAY;AAC9B,EAAAA,mBAAkB,YAAY;AAC9B,EAAAA,mBAAkB,sBAAsB;AACxC,EAAAA,mBAAkB,yBAAyB;AAC3C,EAAAA,mBAAkB,eAAe;AACjC,EAAAA,mBAAkB,WAAW;AAC7B,EAAAA,mBAAkB,UAAU;AAC5B,EAAAA,mBAAkB,gBAAgB;AAClC,EAAAA,mBAAkB,kBAAkB;AACpC,EAAAA,mBAAkB,4BAA4B;AAChD,GAAG,sBAAsB,oBAAoB,CAAC,EAAE;;;ACtBhD,IAAI;AAAA,CAEH,SAAUC,OAAM;AACf,EAAAA,MAAK,UAAU;AACf,EAAAA,MAAK,cAAc;AACnB,EAAAA,MAAK,0BAA0B;AAC/B,EAAAA,MAAK,yBAAyB;AAC9B,EAAAA,MAAK,mBAAmB;AACxB,EAAAA,MAAK,WAAW;AAChB,EAAAA,MAAK,cAAc;AACnB,EAAAA,MAAK,qBAAqB;AAC1B,EAAAA,MAAK,qBAAqB;AAC1B,EAAAA,MAAK,yBAAyB;AAC9B,EAAAA,MAAK,cAAc;AACnB,EAAAA,MAAK,SAAS;AACd,EAAAA,MAAK,WAAW;AAChB,EAAAA,MAAK,YAAY;AACjB,EAAAA,MAAK,aAAa;AAClB,EAAAA,MAAK,UAAU;AACf,EAAAA,MAAK,UAAU;AACf,EAAAA,MAAK,UAAU;AACf,EAAAA,MAAK,YAAY;AACjB,EAAAA,MAAK,kBAAkB;AACvB,EAAAA,MAAK,eAAe;AACpB,EAAAA,MAAK,gBAAgB;AACrB,EAAAA,MAAK,eAAe;AACpB,EAAAA,MAAK,mBAAmB;AACxB,EAAAA,MAAK,uBAAuB;AAC5B,EAAAA,MAAK,+BAA+B;AACpC,EAAAA,MAAK,4BAA4B;AACjC,EAAAA,MAAK,4BAA4B;AACjC,EAAAA,MAAK,sBAAsB;AAC3B,EAAAA,MAAK,4BAA4B;AACjC,EAAAA,MAAK,+BAA+B;AACpC,EAAAA,MAAK,2BAA2B;AAChC,EAAAA,MAAK,0BAA0B;AAC/B,EAAAA,MAAK,2BAA2B;AAChC,EAAAA,MAAK,kCAAkC;AACvC,EAAAA,MAAK,0BAA0B;AAC/B,EAAAA,MAAK,sBAAsB;AAC3B,EAAAA,MAAK,2BAA2B;AAChC,EAAAA,MAAK,2BAA2B;AAChC,EAAAA,MAAK,8BAA8B;AACnC,EAAAA,MAAK,0BAA0B;AAC/B,EAAAA,MAAK,yBAAyB;AAC9B,EAAAA,MAAK,iCAAiC;AACxC,GAAG,SAAS,OAAO,CAAC,EAAE;;;ACzCf,SAAS,aAAa,MAAM;AACjC,SAAO,SAAS,KAAU,SAAS;AACrC;AASO,SAAS,QAAQ,MAAM;AAC5B,SAAO,QAAQ,MAAU,QAAQ;AACnC;AAYO,SAAS,SAAS,MAAM;AAC7B,SACG,QAAQ,MAAU,QAAQ,OAC1B,QAAQ,MAAU,QAAQ;AAE/B;AAUO,SAAS,YAAY,MAAM;AAChC,SAAO,SAAS,IAAI,KAAK,SAAS;AACpC;AAWO,SAAS,eAAe,MAAM;AACnC,SAAO,SAAS,IAAI,KAAK,QAAQ,IAAI,KAAK,SAAS;AACrD;;;ACrDO,SAAS,uBAAuB,OAAO;AAC5C,MAAI;AAEJ,MAAI,eAAe,OAAO;AAC1B,MAAI,oBAAoB;AACxB,MAAI,mBAAmB;AAEvB,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,EAAE,GAAG;AACrC,QAAI;AAEJ,UAAM,OAAO,MAAM;AACnB,UAAMC,UAAS,kBAAkB,IAAI;AAErC,QAAIA,YAAW,KAAK,QAAQ;AAC1B;AAAA,IACF;AAEA,yBACG,qBAAqB,uBAAuB,QAC7C,uBAAuB,SACnB,qBACA;AACN,uBAAmB;AAEnB,QAAI,MAAM,KAAKA,UAAS,cAAc;AACpC,qBAAeA;AAAA,IACjB;AAAA,EACF;AAEA,SAAO,MACJ,IAAI,CAAC,MAAM,MAAO,MAAM,IAAI,OAAO,KAAK,MAAM,YAAY,CAAE,EAC5D;AAAA,KACE,sBAAsB,uBAAuB,QAC5C,wBAAwB,SACtB,sBACA;AAAA,IACJ,mBAAmB;AAAA,EACrB;AACJ;AAEA,SAAS,kBAAkB,KAAK;AAC9B,MAAI,IAAI;AAER,SAAO,IAAI,IAAI,UAAU,aAAa,IAAI,WAAW,CAAC,CAAC,GAAG;AACxD,MAAE;AAAA,EACJ;AAEA,SAAO;AACT;AAgFO,SAAS,iBAAiB,OAAO,SAAS;AAC/C,QAAM,eAAe,MAAM,QAAQ,QAAQ,OAAO;AAElD,QAAM,QAAQ,aAAa,MAAM,cAAc;AAC/C,QAAM,eAAe,MAAM,WAAW;AAEtC,QAAM,sBACJ,MAAM,SAAS,KACf,MACG,MAAM,CAAC,EACP,MAAM,CAAC,SAAS,KAAK,WAAW,KAAK,aAAa,KAAK,WAAW,CAAC,CAAC,CAAC;AAE1E,QAAM,0BAA0B,aAAa,SAAS,OAAO;AAE7D,QAAM,mBAAmB,MAAM,SAAS,GAAG,KAAK,CAAC;AACjD,QAAM,mBAAmB,MAAM,SAAS,IAAI;AAC5C,QAAM,uBAAuB,oBAAoB;AACjD,QAAM,uBACJ,EAAE,YAAY,QAAQ,YAAY,UAAU,QAAQ,cACnD,CAAC,gBACA,MAAM,SAAS,MACf,wBACA,uBACA;AACJ,MAAI,SAAS;AAEb,QAAM,qBAAqB,gBAAgB,aAAa,MAAM,WAAW,CAAC,CAAC;AAE3E,MAAK,wBAAwB,CAAC,sBAAuB,qBAAqB;AACxE,cAAU;AAAA,EACZ;AAEA,YAAU;AAEV,MAAI,wBAAwB,sBAAsB;AAChD,cAAU;AAAA,EACZ;AAEA,SAAO,QAAQ,SAAS;AAC1B;;;AC7KA,IAAI;AAAA,CAEH,SAAUC,YAAW;AACpB,EAAAA,WAAU,SAAS;AACnB,EAAAA,WAAU,SAAS;AACnB,EAAAA,WAAU,UAAU;AACpB,EAAAA,WAAU,YAAY;AACtB,EAAAA,WAAU,SAAS;AACnB,EAAAA,WAAU,aAAa;AACvB,EAAAA,WAAU,aAAa;AACvB,EAAAA,WAAU,YAAY;AACtB,EAAAA,WAAU,WAAW;AACrB,EAAAA,WAAU,YAAY;AACtB,EAAAA,WAAU,QAAQ;AAClB,EAAAA,WAAU,eAAe;AACzB,EAAAA,WAAU,eAAe;AACzB,EAAAA,WAAU,aAAa;AACvB,EAAAA,WAAU,UAAU;AACpB,EAAAA,WAAU,aAAa;AACvB,EAAAA,WAAU,UAAU;AACpB,EAAAA,WAAU,SAAS;AACnB,EAAAA,WAAU,WAAW;AACrB,EAAAA,WAAU,YAAY;AACtB,EAAAA,WAAU,kBAAkB;AAC5B,EAAAA,WAAU,aAAa;AACzB,GAAG,cAAc,YAAY,CAAC,EAAE;;;ACfzB,IAAM,QAAN,MAAY;AAAA,EAgBjB,YAAY,QAAQ;AAClB,UAAM,mBAAmB,IAAI,MAAM,UAAU,KAAK,GAAG,GAAG,GAAG,CAAC;AAC5D,SAAK,SAAS;AACd,SAAK,YAAY;AACjB,SAAK,QAAQ;AACb,SAAK,OAAO;AACZ,SAAK,YAAY;AAAA,EACnB;AAAA,EAEA,KAAK,OAAO,eAAe;AACzB,WAAO;AAAA,EACT;AAAA,EAKA,UAAU;AACR,SAAK,YAAY,KAAK;AACtB,UAAM,QAAS,KAAK,QAAQ,KAAK,UAAU;AAC3C,WAAO;AAAA,EACT;AAAA,EAMA,YAAY;AACV,QAAI,QAAQ,KAAK;AAEjB,QAAI,MAAM,SAAS,UAAU,KAAK;AAChC,SAAG;AACD,YAAI,MAAM,MAAM;AACd,kBAAQ,MAAM;AAAA,QAChB,OAAO;AAEL,gBAAM,YAAY,cAAc,MAAM,MAAM,GAAG;AAE/C,gBAAM,OAAO;AAEb,oBAAU,OAAO;AACjB,kBAAQ;AAAA,QACV;AAAA,MACF,SAAS,MAAM,SAAS,UAAU;AAAA,IACpC;AAEA,WAAO;AAAA,EACT;AACF;AAKO,SAAS,sBAAsB,MAAM;AAC1C,SACE,SAAS,UAAU,QACnB,SAAS,UAAU,UACnB,SAAS,UAAU,OACnB,SAAS,UAAU,WACnB,SAAS,UAAU,WACnB,SAAS,UAAU,UACnB,SAAS,UAAU,SACnB,SAAS,UAAU,UACnB,SAAS,UAAU,MACnB,SAAS,UAAU,aACnB,SAAS,UAAU,aACnB,SAAS,UAAU,WACnB,SAAS,UAAU,QACnB,SAAS,UAAU;AAEvB;AAUA,SAAS,qBAAqB,MAAM;AAClC,SACG,QAAQ,KAAU,QAAQ,SAAY,QAAQ,SAAU,QAAQ;AAErE;AAUA,SAAS,yBAAyB,MAAM,UAAU;AAChD,SACE,mBAAmB,KAAK,WAAW,QAAQ,CAAC,KAC5C,oBAAoB,KAAK,WAAW,WAAW,CAAC,CAAC;AAErD;AAEA,SAAS,mBAAmB,MAAM;AAChC,SAAO,QAAQ,SAAU,QAAQ;AACnC;AAEA,SAAS,oBAAoB,MAAM;AACjC,SAAO,QAAQ,SAAU,QAAQ;AACnC;AASA,SAAS,iBAAiB,OAAO,UAAU;AACzC,QAAM,OAAO,MAAM,OAAO,KAAK,YAAY,QAAQ;AAEnD,MAAI,SAAS,QAAW;AACtB,WAAO,UAAU;AAAA,EACnB,WAAW,QAAQ,MAAU,QAAQ,KAAQ;AAE3C,UAAM,OAAO,OAAO,cAAc,IAAI;AACtC,WAAO,SAAS,MAAM,QAAS,IAAI;AAAA,EACrC;AAEA,SAAO,OAAO,KAAK,SAAS,EAAE,EAAE,YAAY,EAAE,SAAS,GAAG,GAAG;AAC/D;AAKA,SAAS,YAAY,OAAO,MAAM,OAAO,KAAK,OAAO;AACnD,QAAM,OAAO,MAAM;AACnB,QAAM,MAAM,IAAI,QAAQ,MAAM;AAC9B,SAAO,IAAI,MAAM,MAAM,OAAO,KAAK,MAAM,KAAK,KAAK;AACrD;AASA,SAAS,cAAc,OAAO,OAAO;AACnC,QAAM,OAAO,MAAM,OAAO;AAC1B,QAAM,aAAa,KAAK;AACxB,MAAI,WAAW;AAEf,SAAO,WAAW,YAAY;AAC5B,UAAM,OAAO,KAAK,WAAW,QAAQ;AAErC,YAAQ;AAAA,WAeD;AAAA,WAEA;AAAA,WAEA;AAAA,WAEA;AAEH,UAAE;AACF;AAAA,WAMG;AAEH,UAAE;AACF,UAAE,MAAM;AACR,cAAM,YAAY;AAClB;AAAA,WAEG;AAEH,YAAI,KAAK,WAAW,WAAW,CAAC,MAAM,IAAQ;AAC5C,sBAAY;AAAA,QACd,OAAO;AACL,YAAE;AAAA,QACJ;AAEA,UAAE,MAAM;AACR,cAAM,YAAY;AAClB;AAAA,WAGG;AAEH,eAAO,YAAY,OAAO,QAAQ;AAAA,WAU/B;AAEH,eAAO,YAAY,OAAO,UAAU,MAAM,UAAU,WAAW,CAAC;AAAA,WAE7D;AAEH,eAAO,YAAY,OAAO,UAAU,QAAQ,UAAU,WAAW,CAAC;AAAA,WAE/D;AAEH,eAAO,YAAY,OAAO,UAAU,KAAK,UAAU,WAAW,CAAC;AAAA,WAE5D;AAEH,eAAO,YAAY,OAAO,UAAU,SAAS,UAAU,WAAW,CAAC;AAAA,WAEhE;AAEH,eAAO,YAAY,OAAO,UAAU,SAAS,UAAU,WAAW,CAAC;AAAA,WAEhE;AAEH,YACE,KAAK,WAAW,WAAW,CAAC,MAAM,MAClC,KAAK,WAAW,WAAW,CAAC,MAAM,IAClC;AACA,iBAAO,YAAY,OAAO,UAAU,QAAQ,UAAU,WAAW,CAAC;AAAA,QACpE;AAEA;AAAA,WAEG;AAEH,eAAO,YAAY,OAAO,UAAU,OAAO,UAAU,WAAW,CAAC;AAAA,WAE9D;AAEH,eAAO,YAAY,OAAO,UAAU,QAAQ,UAAU,WAAW,CAAC;AAAA,WAE/D;AAEH,eAAO,YAAY,OAAO,UAAU,IAAI,UAAU,WAAW,CAAC;AAAA,WAE3D;AAEH,eAAO,YAAY,OAAO,UAAU,WAAW,UAAU,WAAW,CAAC;AAAA,WAElE;AAEH,eAAO,YAAY,OAAO,UAAU,WAAW,UAAU,WAAW,CAAC;AAAA,WAElE;AAEH,eAAO,YAAY,OAAO,UAAU,SAAS,UAAU,WAAW,CAAC;AAAA,WAEhE;AAEH,eAAO,YAAY,OAAO,UAAU,MAAM,UAAU,WAAW,CAAC;AAAA,WAE7D;AAEH,eAAO,YAAY,OAAO,UAAU,SAAS,UAAU,WAAW,CAAC;AAAA,WAGhE;AAEH,YACE,KAAK,WAAW,WAAW,CAAC,MAAM,MAClC,KAAK,WAAW,WAAW,CAAC,MAAM,IAClC;AACA,iBAAO,gBAAgB,OAAO,QAAQ;AAAA,QACxC;AAEA,eAAO,WAAW,OAAO,QAAQ;AAAA;AAGrC,QAAI,QAAQ,IAAI,KAAK,SAAS,IAAQ;AACpC,aAAO,WAAW,OAAO,UAAU,IAAI;AAAA,IACzC;AAEA,QAAI,YAAY,IAAI,GAAG;AACrB,aAAO,SAAS,OAAO,QAAQ;AAAA,IACjC;AAEA,UAAM;AAAA,MACJ,MAAM;AAAA,MACN;AAAA,MACA,SAAS,KACL,mFACA,qBAAqB,IAAI,KAAK,yBAAyB,MAAM,QAAQ,IACrE,yBAAyB,iBAAiB,OAAO,QAAQ,OACzD,sBAAsB,iBAAiB,OAAO,QAAQ;AAAA,IAC5D;AAAA,EACF;AAEA,SAAO,YAAY,OAAO,UAAU,KAAK,YAAY,UAAU;AACjE;AAWA,SAAS,YAAY,OAAO,OAAO;AACjC,QAAM,OAAO,MAAM,OAAO;AAC1B,QAAM,aAAa,KAAK;AACxB,MAAI,WAAW,QAAQ;AAEvB,SAAO,WAAW,YAAY;AAC5B,UAAM,OAAO,KAAK,WAAW,QAAQ;AAErC,QAAI,SAAS,MAAU,SAAS,IAAQ;AACtC;AAAA,IACF;AAEA,QAAI,qBAAqB,IAAI,GAAG;AAC9B,QAAE;AAAA,IACJ,WAAW,yBAAyB,MAAM,QAAQ,GAAG;AACnD,kBAAY;AAAA,IACd,OAAO;AACL;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA,KAAK,MAAM,QAAQ,GAAG,QAAQ;AAAA,EAChC;AACF;AA+BA,SAAS,WAAW,OAAO,OAAO,WAAW;AAC3C,QAAM,OAAO,MAAM,OAAO;AAC1B,MAAI,WAAW;AACf,MAAI,OAAO;AACX,MAAI,UAAU;AAEd,MAAI,SAAS,IAAQ;AACnB,WAAO,KAAK,WAAW,EAAE,QAAQ;AAAA,EACnC;AAEA,MAAI,SAAS,IAAQ;AACnB,WAAO,KAAK,WAAW,EAAE,QAAQ;AAEjC,QAAI,QAAQ,IAAI,GAAG;AACjB,YAAM;AAAA,QACJ,MAAM;AAAA,QACN;AAAA,QACA,6CAA6C;AAAA,UAC3C;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,OAAO;AACL,eAAW,WAAW,OAAO,UAAU,IAAI;AAC3C,WAAO,KAAK,WAAW,QAAQ;AAAA,EACjC;AAEA,MAAI,SAAS,IAAQ;AACnB,cAAU;AACV,WAAO,KAAK,WAAW,EAAE,QAAQ;AACjC,eAAW,WAAW,OAAO,UAAU,IAAI;AAC3C,WAAO,KAAK,WAAW,QAAQ;AAAA,EACjC;AAEA,MAAI,SAAS,MAAU,SAAS,KAAQ;AACtC,cAAU;AACV,WAAO,KAAK,WAAW,EAAE,QAAQ;AAEjC,QAAI,SAAS,MAAU,SAAS,IAAQ;AACtC,aAAO,KAAK,WAAW,EAAE,QAAQ;AAAA,IACnC;AAEA,eAAW,WAAW,OAAO,UAAU,IAAI;AAC3C,WAAO,KAAK,WAAW,QAAQ;AAAA,EACjC;AAEA,MAAI,SAAS,MAAU,YAAY,IAAI,GAAG;AACxC,UAAM;AAAA,MACJ,MAAM;AAAA,MACN;AAAA,MACA,2CAA2C;AAAA,QACzC;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA,UAAU,UAAU,QAAQ,UAAU;AAAA,IACtC;AAAA,IACA;AAAA,IACA,KAAK,MAAM,OAAO,QAAQ;AAAA,EAC5B;AACF;AAKA,SAAS,WAAW,OAAO,OAAO,WAAW;AAC3C,MAAI,CAAC,QAAQ,SAAS,GAAG;AACvB,UAAM;AAAA,MACJ,MAAM;AAAA,MACN;AAAA,MACA,2CAA2C;AAAA,QACzC;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,OAAO,MAAM,OAAO;AAC1B,MAAI,WAAW,QAAQ;AAEvB,SAAO,QAAQ,KAAK,WAAW,QAAQ,CAAC,GAAG;AACzC,MAAE;AAAA,EACJ;AAEA,SAAO;AACT;AAsBA,SAAS,WAAW,OAAO,OAAO;AAChC,QAAM,OAAO,MAAM,OAAO;AAC1B,QAAM,aAAa,KAAK;AACxB,MAAI,WAAW,QAAQ;AACvB,MAAI,aAAa;AACjB,MAAI,QAAQ;AAEZ,SAAO,WAAW,YAAY;AAC5B,UAAM,OAAO,KAAK,WAAW,QAAQ;AAErC,QAAI,SAAS,IAAQ;AACnB,eAAS,KAAK,MAAM,YAAY,QAAQ;AACxC,aAAO,YAAY,OAAO,UAAU,QAAQ,OAAO,WAAW,GAAG,KAAK;AAAA,IACxE;AAEA,QAAI,SAAS,IAAQ;AACnB,eAAS,KAAK,MAAM,YAAY,QAAQ;AACxC,YAAMC,UACJ,KAAK,WAAW,WAAW,CAAC,MAAM,MAC9B,KAAK,WAAW,WAAW,CAAC,MAAM,MAChC,gCAAgC,OAAO,QAAQ,IAC/C,6BAA6B,OAAO,QAAQ,IAC9C,qBAAqB,OAAO,QAAQ;AAC1C,eAASA,QAAO;AAChB,kBAAYA,QAAO;AACnB,mBAAa;AACb;AAAA,IACF;AAEA,QAAI,SAAS,MAAU,SAAS,IAAQ;AACtC;AAAA,IACF;AAEA,QAAI,qBAAqB,IAAI,GAAG;AAC9B,QAAE;AAAA,IACJ,WAAW,yBAAyB,MAAM,QAAQ,GAAG;AACnD,kBAAY;AAAA,IACd,OAAO;AACL,YAAM;AAAA,QACJ,MAAM;AAAA,QACN;AAAA,QACA,oCAAoC;AAAA,UAClC;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,YAAY,MAAM,QAAQ,UAAU,sBAAsB;AAClE;AAEA,SAAS,gCAAgC,OAAO,UAAU;AACxD,QAAM,OAAO,MAAM,OAAO;AAC1B,MAAI,QAAQ;AACZ,MAAI,OAAO;AAEX,SAAO,OAAO,IAAI;AAChB,UAAM,OAAO,KAAK,WAAW,WAAW,MAAM;AAE9C,QAAI,SAAS,KAAQ;AAEnB,UAAI,OAAO,KAAK,CAAC,qBAAqB,KAAK,GAAG;AAC5C;AAAA,MACF;AAEA,aAAO;AAAA,QACL,OAAO,OAAO,cAAc,KAAK;AAAA,QACjC;AAAA,MACF;AAAA,IACF;AAEA,YAAS,SAAS,IAAK,aAAa,IAAI;AAExC,QAAI,QAAQ,GAAG;AACb;AAAA,IACF;AAAA,EACF;AAEA,QAAM;AAAA,IACJ,MAAM;AAAA,IACN;AAAA,IACA,qCAAqC,KAAK;AAAA,MACxC;AAAA,MACA,WAAW;AAAA,IACb;AAAA,EACF;AACF;AAEA,SAAS,6BAA6B,OAAO,UAAU;AACrD,QAAM,OAAO,MAAM,OAAO;AAC1B,QAAM,OAAO,iBAAiB,MAAM,WAAW,CAAC;AAEhD,MAAI,qBAAqB,IAAI,GAAG;AAC9B,WAAO;AAAA,MACL,OAAO,OAAO,cAAc,IAAI;AAAA,MAChC,MAAM;AAAA,IACR;AAAA,EACF;AAGA,MAAI,mBAAmB,IAAI,GAAG;AAE5B,QACE,KAAK,WAAW,WAAW,CAAC,MAAM,MAClC,KAAK,WAAW,WAAW,CAAC,MAAM,KAClC;AACA,YAAM,eAAe,iBAAiB,MAAM,WAAW,CAAC;AAExD,UAAI,oBAAoB,YAAY,GAAG;AAOrC,eAAO;AAAA,UACL,OAAO,OAAO,cAAc,MAAM,YAAY;AAAA,UAC9C,MAAM;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM;AAAA,IACJ,MAAM;AAAA,IACN;AAAA,IACA,qCAAqC,KAAK,MAAM,UAAU,WAAW,CAAC;AAAA,EACxE;AACF;AASA,SAAS,iBAAiB,MAAM,UAAU;AAGxC,SACG,aAAa,KAAK,WAAW,QAAQ,CAAC,KAAK,KAC3C,aAAa,KAAK,WAAW,WAAW,CAAC,CAAC,KAAK,IAC/C,aAAa,KAAK,WAAW,WAAW,CAAC,CAAC,KAAK,IAChD,aAAa,KAAK,WAAW,WAAW,CAAC,CAAC;AAE9C;AAgBA,SAAS,aAAa,MAAM;AAC1B,SAAO,QAAQ,MAAU,QAAQ,KAC7B,OAAO,KACP,QAAQ,MAAU,QAAQ,KAC1B,OAAO,KACP,QAAQ,MAAU,QAAQ,MAC1B,OAAO,KACP;AACN;AAcA,SAAS,qBAAqB,OAAO,UAAU;AAC7C,QAAM,OAAO,MAAM,OAAO;AAC1B,QAAM,OAAO,KAAK,WAAW,WAAW,CAAC;AAEzC,UAAQ;AAAA,SACD;AAEH,aAAO;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AAAA,SAEG;AAEH,aAAO;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AAAA,SAEG;AAEH,aAAO;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AAAA,SAEG;AAEH,aAAO;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AAAA,SAEG;AAEH,aAAO;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AAAA,SAEG;AAEH,aAAO;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AAAA,SAEG;AAEH,aAAO;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AAAA,SAEG;AAEH,aAAO;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AAAA;AAGJ,QAAM;AAAA,IACJ,MAAM;AAAA,IACN;AAAA,IACA,uCAAuC,KAAK;AAAA,MAC1C;AAAA,MACA,WAAW;AAAA,IACb;AAAA,EACF;AACF;AAcA,SAAS,gBAAgB,OAAO,OAAO;AACrC,QAAM,OAAO,MAAM,OAAO;AAC1B,QAAM,aAAa,KAAK;AACxB,MAAI,YAAY,MAAM;AACtB,MAAI,WAAW,QAAQ;AACvB,MAAI,aAAa;AACjB,MAAI,cAAc;AAClB,QAAM,aAAa,CAAC;AAEpB,SAAO,WAAW,YAAY;AAC5B,UAAM,OAAO,KAAK,WAAW,QAAQ;AAErC,QACE,SAAS,MACT,KAAK,WAAW,WAAW,CAAC,MAAM,MAClC,KAAK,WAAW,WAAW,CAAC,MAAM,IAClC;AACA,qBAAe,KAAK,MAAM,YAAY,QAAQ;AAC9C,iBAAW,KAAK,WAAW;AAC3B,YAAM,QAAQ;AAAA,QACZ;AAAA,QACA,UAAU;AAAA,QACV;AAAA,QACA,WAAW;AAAA,QACX,uBAAuB,UAAU,EAAE,KAAK,IAAI;AAAA,MAC9C;AACA,YAAM,QAAQ,WAAW,SAAS;AAClC,YAAM,YAAY;AAClB,aAAO;AAAA,IACT;AAEA,QACE,SAAS,MACT,KAAK,WAAW,WAAW,CAAC,MAAM,MAClC,KAAK,WAAW,WAAW,CAAC,MAAM,MAClC,KAAK,WAAW,WAAW,CAAC,MAAM,IAClC;AACA,qBAAe,KAAK,MAAM,YAAY,QAAQ;AAC9C,mBAAa,WAAW;AAExB,kBAAY;AACZ;AAAA,IACF;AAEA,QAAI,SAAS,MAAU,SAAS,IAAQ;AACtC,qBAAe,KAAK,MAAM,YAAY,QAAQ;AAC9C,iBAAW,KAAK,WAAW;AAE3B,UAAI,SAAS,MAAU,KAAK,WAAW,WAAW,CAAC,MAAM,IAAQ;AAC/D,oBAAY;AAAA,MACd,OAAO;AACL,UAAE;AAAA,MACJ;AAEA,oBAAc;AACd,mBAAa;AACb,kBAAY;AACZ;AAAA,IACF;AAEA,QAAI,qBAAqB,IAAI,GAAG;AAC9B,QAAE;AAAA,IACJ,WAAW,yBAAyB,MAAM,QAAQ,GAAG;AACnD,kBAAY;AAAA,IACd,OAAO;AACL,YAAM;AAAA,QACJ,MAAM;AAAA,QACN;AAAA,QACA,oCAAoC;AAAA,UAClC;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,YAAY,MAAM,QAAQ,UAAU,sBAAsB;AAClE;AAUA,SAAS,SAAS,OAAO,OAAO;AAC9B,QAAM,OAAO,MAAM,OAAO;AAC1B,QAAM,aAAa,KAAK;AACxB,MAAI,WAAW,QAAQ;AAEvB,SAAO,WAAW,YAAY;AAC5B,UAAM,OAAO,KAAK,WAAW,QAAQ;AAErC,QAAI,eAAe,IAAI,GAAG;AACxB,QAAE;AAAA,IACJ,OAAO;AACL;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA,KAAK,MAAM,OAAO,QAAQ;AAAA,EAC5B;AACF;;;ACr4BA,IAAM,mBAAmB;AACzB,IAAM,sBAAsB;AAKrB,SAAS,QAAQ,OAAO;AAC7B,SAAO,YAAY,OAAO,CAAC,CAAC;AAC9B;AAEA,SAAS,YAAY,OAAO,YAAY;AACtC,UAAQ,OAAO;AAAA,SACR;AACH,aAAO,KAAK,UAAU,KAAK;AAAA,SAExB;AACH,aAAO,MAAM,OAAO,aAAa,MAAM,UAAU;AAAA,SAE9C;AACH,aAAO,kBAAkB,OAAO,UAAU;AAAA;AAG1C,aAAO,OAAO,KAAK;AAAA;AAEzB;AAEA,SAAS,kBAAkB,OAAO,sBAAsB;AACtD,MAAI,UAAU,MAAM;AAClB,WAAO;AAAA,EACT;AAEA,MAAI,qBAAqB,SAAS,KAAK,GAAG;AACxC,WAAO;AAAA,EACT;AAEA,QAAM,aAAa,CAAC,GAAG,sBAAsB,KAAK;AAElD,MAAI,WAAW,KAAK,GAAG;AACrB,UAAM,YAAY,MAAM,OAAO;AAE/B,QAAI,cAAc,OAAO;AACvB,aAAO,OAAO,cAAc,WACxB,YACA,YAAY,WAAW,UAAU;AAAA,IACvC;AAAA,EACF,WAAW,MAAM,QAAQ,KAAK,GAAG;AAC/B,WAAO,YAAY,OAAO,UAAU;AAAA,EACtC;AAEA,SAAO,aAAa,OAAO,UAAU;AACvC;AAEA,SAAS,WAAW,OAAO;AACzB,SAAO,OAAO,MAAM,WAAW;AACjC;AAEA,SAAS,aAAa,QAAQ,YAAY;AACxC,QAAM,UAAU,OAAO,QAAQ,MAAM;AAErC,MAAI,QAAQ,WAAW,GAAG;AACxB,WAAO;AAAA,EACT;AAEA,MAAI,WAAW,SAAS,qBAAqB;AAC3C,WAAO,MAAM,aAAa,MAAM,IAAI;AAAA,EACtC;AAEA,QAAM,aAAa,QAAQ;AAAA,IACzB,CAAC,CAAC,KAAK,KAAK,MAAM,MAAM,OAAO,YAAY,OAAO,UAAU;AAAA,EAC9D;AACA,SAAO,OAAO,WAAW,KAAK,IAAI,IAAI;AACxC;AAEA,SAAS,YAAY,OAAO,YAAY;AACtC,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO;AAAA,EACT;AAEA,MAAI,WAAW,SAAS,qBAAqB;AAC3C,WAAO;AAAA,EACT;AAEA,QAAM,MAAM,KAAK,IAAI,kBAAkB,MAAM,MAAM;AACnD,QAAM,YAAY,MAAM,SAAS;AACjC,QAAM,QAAQ,CAAC;AAEf,WAAS,IAAI,GAAG,IAAI,KAAK,EAAE,GAAG;AAC5B,UAAM,KAAK,YAAY,MAAM,IAAI,UAAU,CAAC;AAAA,EAC9C;AAEA,MAAI,cAAc,GAAG;AACnB,UAAM,KAAK,iBAAiB;AAAA,EAC9B,WAAW,YAAY,GAAG;AACxB,UAAM,KAAK,OAAO,sBAAsB;AAAA,EAC1C;AAEA,SAAO,MAAM,MAAM,KAAK,IAAI,IAAI;AAClC;AAEA,SAAS,aAAa,QAAQ;AAC5B,QAAM,MAAM,OAAO,UAAU,SAC1B,KAAK,MAAM,EACX,QAAQ,cAAc,EAAE,EACxB,QAAQ,MAAM,EAAE;AAEnB,MAAI,QAAQ,YAAY,OAAO,OAAO,gBAAgB,YAAY;AAChE,UAAM,OAAO,OAAO,YAAY;AAEhC,QAAI,OAAO,SAAS,YAAY,SAAS,IAAI;AAC3C,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO;AACT;;;AC1GO,IAAM,aAIX,QACI,SAASC,YAAW,OAAO,aAAa;AACtC,SAAO,iBAAiB;AAC1B,IACA,SAASA,YAAW,OAAO,aAAa;AACtC,MAAI,iBAAiB,aAAa;AAChC,WAAO;AAAA,EACT;AAEA,MAAI,OAAO,UAAU,YAAY,UAAU,MAAM;AAC/C,QAAI;AAGJ,UAAM,YAAY,YAAY,UAAU,OAAO;AAC/C,UAAM,iBACJ,OAAO,eAAe,QAClB,MAAM,OAAO,gBACZ,qBAAqB,MAAM,iBAAiB,QAC7C,uBAAuB,SACvB,SACA,mBAAmB;AAEzB,QAAI,cAAc,gBAAgB;AAChC,YAAM,mBAAmB,QAAQ,KAAK;AACtC,YAAM,IAAI,MAAM,cAAc,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAWtC;AAAA,IACR;AAAA,EACF;AAEA,SAAO;AACT;;;ACzCC,IAAM,SAAN,MAAa;AAAA,EAClB,YACE,MACA,OAAO,mBACP,iBAAiB;AAAA,IACf,MAAM;AAAA,IACN,QAAQ;AAAA,EACV,GACA;AACA,WAAO,SAAS,YACd,UAAU,OAAO,oCAAoC,QAAQ,IAAI,IAAI;AACvE,SAAK,OAAO;AACZ,SAAK,OAAO;AACZ,SAAK,iBAAiB;AACtB,SAAK,eAAe,OAAO,KACzB;AAAA,MACE;AAAA,MACA;AAAA,IACF;AACF,SAAK,eAAe,SAAS,KAC3B;AAAA,MACE;AAAA,MACA;AAAA,IACF;AAAA,EACJ;AAAA,EAEA,KAAK,OAAO,eAAe;AACzB,WAAO;AAAA,EACT;AACF;AAOO,SAAS,SAAS,QAAQ;AAC/B,SAAO,WAAW,QAAQ,MAAM;AAClC;;;AClCO,SAAS,MAAM,QAAQ,SAAS;AACrC,QAAM,SAAS,IAAI,OAAO,QAAQ,OAAO;AACzC,SAAO,OAAO,cAAc;AAC9B;AA6DO,IAAM,SAAN,MAAa;AAAA,EAClB,YAAY,QAAQ,UAAU,CAAC,GAAG;AAChC,UAAM,YAAY,SAAS,MAAM,IAAI,SAAS,IAAI,OAAO,MAAM;AAC/D,SAAK,SAAS,IAAI,MAAM,SAAS;AACjC,SAAK,WAAW;AAChB,SAAK,gBAAgB;AAAA,EACvB;AAAA,EAKA,YAAY;AACV,UAAM,QAAQ,KAAK,YAAY,UAAU,IAAI;AAC7C,WAAO,KAAK,KAAK,OAAO;AAAA,MACtB,MAAM,KAAK;AAAA,MACX,OAAO,MAAM;AAAA,IACf,CAAC;AAAA,EACH;AAAA,EAMA,gBAAgB;AACd,WAAO,KAAK,KAAK,KAAK,OAAO,OAAO;AAAA,MAClC,MAAM,KAAK;AAAA,MACX,aAAa,KAAK;AAAA,QAChB,UAAU;AAAA,QACV,KAAK;AAAA,QACL,UAAU;AAAA,MACZ;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAyBA,kBAAkB;AAChB,QAAI,KAAK,KAAK,UAAU,OAAO,GAAG;AAChC,aAAO,KAAK,yBAAyB;AAAA,IACvC;AAEA,UAAM,iBAAiB,KAAK,gBAAgB;AAC5C,UAAM,eAAe,iBACjB,KAAK,OAAO,UAAU,IACtB,KAAK,OAAO;AAEhB,QAAI,aAAa,SAAS,UAAU,MAAM;AACxC,cAAQ,aAAa;AAAA,aACd;AACH,iBAAO,KAAK,sBAAsB;AAAA,aAE/B;AACH,iBAAO,KAAK,0BAA0B;AAAA,aAEnC;AACH,iBAAO,KAAK,0BAA0B;AAAA,aAEnC;AACH,iBAAO,KAAK,6BAA6B;AAAA,aAEtC;AACH,iBAAO,KAAK,yBAAyB;AAAA,aAElC;AACH,iBAAO,KAAK,wBAAwB;AAAA,aAEjC;AACH,iBAAO,KAAK,+BAA+B;AAAA,aAExC;AACH,iBAAO,KAAK,yBAAyB;AAAA;AAGzC,UAAI,gBAAgB;AAClB,cAAM;AAAA,UACJ,KAAK,OAAO;AAAA,UACZ,KAAK,OAAO,MAAM;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AAEA,cAAQ,aAAa;AAAA,aACd;AAAA,aACA;AAAA,aACA;AACH,iBAAO,KAAK,yBAAyB;AAAA,aAElC;AACH,iBAAO,KAAK,wBAAwB;AAAA,aAEjC;AACH,iBAAO,KAAK,yBAAyB;AAAA;AAAA,IAE3C;AAEA,UAAM,KAAK,WAAW,YAAY;AAAA,EACpC;AAAA,EAQA,2BAA2B;AACzB,UAAM,QAAQ,KAAK,OAAO;AAE1B,QAAI,KAAK,KAAK,UAAU,OAAO,GAAG;AAChC,aAAO,KAAK,KAAK,OAAO;AAAA,QACtB,MAAM,KAAK;AAAA,QACX,WAAW,kBAAkB;AAAA,QAC7B,MAAM;AAAA,QACN,qBAAqB,CAAC;AAAA,QACtB,YAAY,CAAC;AAAA,QACb,cAAc,KAAK,kBAAkB;AAAA,MACvC,CAAC;AAAA,IACH;AAEA,UAAM,YAAY,KAAK,mBAAmB;AAC1C,QAAI;AAEJ,QAAI,KAAK,KAAK,UAAU,IAAI,GAAG;AAC7B,aAAO,KAAK,UAAU;AAAA,IACxB;AAEA,WAAO,KAAK,KAAK,OAAO;AAAA,MACtB,MAAM,KAAK;AAAA,MACX;AAAA,MACA;AAAA,MACA,qBAAqB,KAAK,yBAAyB;AAAA,MACnD,YAAY,KAAK,gBAAgB,KAAK;AAAA,MACtC,cAAc,KAAK,kBAAkB;AAAA,IACvC,CAAC;AAAA,EACH;AAAA,EAKA,qBAAqB;AACnB,UAAM,iBAAiB,KAAK,YAAY,UAAU,IAAI;AAEtD,YAAQ,eAAe;AAAA,WAChB;AACH,eAAO,kBAAkB;AAAA,WAEtB;AACH,eAAO,kBAAkB;AAAA,WAEtB;AACH,eAAO,kBAAkB;AAAA;AAG7B,UAAM,KAAK,WAAW,cAAc;AAAA,EACtC;AAAA,EAKA,2BAA2B;AACzB,WAAO,KAAK;AAAA,MACV,UAAU;AAAA,MACV,KAAK;AAAA,MACL,UAAU;AAAA,IACZ;AAAA,EACF;AAAA,EAKA,0BAA0B;AACxB,WAAO,KAAK,KAAK,KAAK,OAAO,OAAO;AAAA,MAClC,MAAM,KAAK;AAAA,MACX,UAAU,KAAK,cAAc;AAAA,MAC7B,OAAO,KAAK,YAAY,UAAU,KAAK,GAAG,KAAK,mBAAmB;AAAA,MAClE,cAAc,KAAK,oBAAoB,UAAU,MAAM,IACnD,KAAK,uBAAuB,IAC5B;AAAA,MACJ,YAAY,KAAK,qBAAqB;AAAA,IACxC,CAAC;AAAA,EACH;AAAA,EAKA,gBAAgB;AACd,UAAM,QAAQ,KAAK,OAAO;AAC1B,SAAK,YAAY,UAAU,MAAM;AACjC,WAAO,KAAK,KAAK,OAAO;AAAA,MACtB,MAAM,KAAK;AAAA,MACX,MAAM,KAAK,UAAU;AAAA,IACvB,CAAC;AAAA,EACH;AAAA,EAOA,oBAAoB;AAClB,WAAO,KAAK,KAAK,KAAK,OAAO,OAAO;AAAA,MAClC,MAAM,KAAK;AAAA,MACX,YAAY,KAAK;AAAA,QACf,UAAU;AAAA,QACV,KAAK;AAAA,QACL,UAAU;AAAA,MACZ;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAQA,iBAAiB;AACf,WAAO,KAAK,KAAK,UAAU,MAAM,IAC7B,KAAK,cAAc,IACnB,KAAK,WAAW;AAAA,EACtB;AAAA,EAOA,aAAa;AACX,UAAM,QAAQ,KAAK,OAAO;AAC1B,UAAM,cAAc,KAAK,UAAU;AACnC,QAAI;AACJ,QAAI;AAEJ,QAAI,KAAK,oBAAoB,UAAU,KAAK,GAAG;AAC7C,cAAQ;AACR,aAAO,KAAK,UAAU;AAAA,IACxB,OAAO;AACL,aAAO;AAAA,IACT;AAEA,WAAO,KAAK,KAAK,OAAO;AAAA,MACtB,MAAM,KAAK;AAAA,MACX;AAAA,MACA;AAAA,MACA,WAAW,KAAK,eAAe,KAAK;AAAA,MACpC,YAAY,KAAK,gBAAgB,KAAK;AAAA,MACtC,cAAc,KAAK,KAAK,UAAU,OAAO,IACrC,KAAK,kBAAkB,IACvB;AAAA,IACN,CAAC;AAAA,EACH;AAAA,EAKA,eAAe,SAAS;AACtB,UAAM,OAAO,UAAU,KAAK,qBAAqB,KAAK;AACtD,WAAO,KAAK,aAAa,UAAU,SAAS,MAAM,UAAU,OAAO;AAAA,EACrE;AAAA,EAKA,cAAc,UAAU,OAAO;AAC7B,UAAM,QAAQ,KAAK,OAAO;AAC1B,UAAM,OAAO,KAAK,UAAU;AAC5B,SAAK,YAAY,UAAU,KAAK;AAChC,WAAO,KAAK,KAAK,OAAO;AAAA,MACtB,MAAM,KAAK;AAAA,MACX;AAAA,MACA,OAAO,KAAK,kBAAkB,OAAO;AAAA,IACvC,CAAC;AAAA,EACH;AAAA,EAEA,qBAAqB;AACnB,WAAO,KAAK,cAAc,IAAI;AAAA,EAChC;AAAA,EAUA,gBAAgB;AACd,UAAM,QAAQ,KAAK,OAAO;AAC1B,SAAK,YAAY,UAAU,MAAM;AACjC,UAAM,mBAAmB,KAAK,sBAAsB,IAAI;AAExD,QAAI,CAAC,oBAAoB,KAAK,KAAK,UAAU,IAAI,GAAG;AAClD,aAAO,KAAK,KAAK,OAAO;AAAA,QACtB,MAAM,KAAK;AAAA,QACX,MAAM,KAAK,kBAAkB;AAAA,QAC7B,YAAY,KAAK,gBAAgB,KAAK;AAAA,MACxC,CAAC;AAAA,IACH;AAEA,WAAO,KAAK,KAAK,OAAO;AAAA,MACtB,MAAM,KAAK;AAAA,MACX,eAAe,mBAAmB,KAAK,eAAe,IAAI;AAAA,MAC1D,YAAY,KAAK,gBAAgB,KAAK;AAAA,MACtC,cAAc,KAAK,kBAAkB;AAAA,IACvC,CAAC;AAAA,EACH;AAAA,EAQA,0BAA0B;AACxB,UAAM,QAAQ,KAAK,OAAO;AAC1B,SAAK,cAAc,UAAU;AAI7B,QAAI,KAAK,SAAS,iCAAiC,MAAM;AACvD,aAAO,KAAK,KAAK,OAAO;AAAA,QACtB,MAAM,KAAK;AAAA,QACX,MAAM,KAAK,kBAAkB;AAAA,QAC7B,qBAAqB,KAAK,yBAAyB;AAAA,QACnD,gBAAgB,KAAK,cAAc,IAAI,GAAG,KAAK,eAAe;AAAA,QAC9D,YAAY,KAAK,gBAAgB,KAAK;AAAA,QACtC,cAAc,KAAK,kBAAkB;AAAA,MACvC,CAAC;AAAA,IACH;AAEA,WAAO,KAAK,KAAK,OAAO;AAAA,MACtB,MAAM,KAAK;AAAA,MACX,MAAM,KAAK,kBAAkB;AAAA,MAC7B,gBAAgB,KAAK,cAAc,IAAI,GAAG,KAAK,eAAe;AAAA,MAC9D,YAAY,KAAK,gBAAgB,KAAK;AAAA,MACtC,cAAc,KAAK,kBAAkB;AAAA,IACvC,CAAC;AAAA,EACH;AAAA,EAKA,oBAAoB;AAClB,QAAI,KAAK,OAAO,MAAM,UAAU,MAAM;AACpC,YAAM,KAAK,WAAW;AAAA,IACxB;AAEA,WAAO,KAAK,UAAU;AAAA,EACxB;AAAA,EAqBA,kBAAkB,SAAS;AACzB,UAAM,QAAQ,KAAK,OAAO;AAE1B,YAAQ,MAAM;AAAA,WACP,UAAU;AACb,eAAO,KAAK,UAAU,OAAO;AAAA,WAE1B,UAAU;AACb,eAAO,KAAK,YAAY,OAAO;AAAA,WAE5B,UAAU;AACb,aAAK,aAAa;AAClB,eAAO,KAAK,KAAK,OAAO;AAAA,UACtB,MAAM,KAAK;AAAA,UACX,OAAO,MAAM;AAAA,QACf,CAAC;AAAA,WAEE,UAAU;AACb,aAAK,aAAa;AAClB,eAAO,KAAK,KAAK,OAAO;AAAA,UACtB,MAAM,KAAK;AAAA,UACX,OAAO,MAAM;AAAA,QACf,CAAC;AAAA,WAEE,UAAU;AAAA,WACV,UAAU;AACb,eAAO,KAAK,mBAAmB;AAAA,WAE5B,UAAU;AACb,aAAK,aAAa;AAElB,gBAAQ,MAAM;AAAA,eACP;AACH,mBAAO,KAAK,KAAK,OAAO;AAAA,cACtB,MAAM,KAAK;AAAA,cACX,OAAO;AAAA,YACT,CAAC;AAAA,eAEE;AACH,mBAAO,KAAK,KAAK,OAAO;AAAA,cACtB,MAAM,KAAK;AAAA,cACX,OAAO;AAAA,YACT,CAAC;AAAA,eAEE;AACH,mBAAO,KAAK,KAAK,OAAO;AAAA,cACtB,MAAM,KAAK;AAAA,YACb,CAAC;AAAA;AAGD,mBAAO,KAAK,KAAK,OAAO;AAAA,cACtB,MAAM,KAAK;AAAA,cACX,OAAO,MAAM;AAAA,YACf,CAAC;AAAA;AAAA,WAGF,UAAU;AACb,YAAI,SAAS;AACX,eAAK,YAAY,UAAU,MAAM;AAEjC,cAAI,KAAK,OAAO,MAAM,SAAS,UAAU,MAAM;AAC7C,kBAAM,UAAU,KAAK,OAAO,MAAM;AAClC,kBAAM;AAAA,cACJ,KAAK,OAAO;AAAA,cACZ,MAAM;AAAA,cACN,yBAAyB;AAAA,YAC3B;AAAA,UACF,OAAO;AACL,kBAAM,KAAK,WAAW,KAAK;AAAA,UAC7B;AAAA,QACF;AAEA,eAAO,KAAK,cAAc;AAAA;AAG1B,cAAM,KAAK,WAAW;AAAA;AAAA,EAE5B;AAAA,EAEA,yBAAyB;AACvB,WAAO,KAAK,kBAAkB,IAAI;AAAA,EACpC;AAAA,EAEA,qBAAqB;AACnB,UAAM,QAAQ,KAAK,OAAO;AAC1B,SAAK,aAAa;AAClB,WAAO,KAAK,KAAK,OAAO;AAAA,MACtB,MAAM,KAAK;AAAA,MACX,OAAO,MAAM;AAAA,MACb,OAAO,MAAM,SAAS,UAAU;AAAA,IAClC,CAAC;AAAA,EACH;AAAA,EAOA,UAAU,SAAS;AACjB,UAAM,OAAO,MAAM,KAAK,kBAAkB,OAAO;AAEjD,WAAO,KAAK,KAAK,KAAK,OAAO,OAAO;AAAA,MAClC,MAAM,KAAK;AAAA,MACX,QAAQ,KAAK,IAAI,UAAU,WAAW,MAAM,UAAU,SAAS;AAAA,IACjE,CAAC;AAAA,EACH;AAAA,EASA,YAAY,SAAS;AACnB,UAAM,OAAO,MAAM,KAAK,iBAAiB,OAAO;AAEhD,WAAO,KAAK,KAAK,KAAK,OAAO,OAAO;AAAA,MAClC,MAAM,KAAK;AAAA,MACX,QAAQ,KAAK,IAAI,UAAU,SAAS,MAAM,UAAU,OAAO;AAAA,IAC7D,CAAC;AAAA,EACH;AAAA,EAKA,iBAAiB,SAAS;AACxB,UAAM,QAAQ,KAAK,OAAO;AAC1B,UAAM,OAAO,KAAK,UAAU;AAC5B,SAAK,YAAY,UAAU,KAAK;AAChC,WAAO,KAAK,KAAK,OAAO;AAAA,MACtB,MAAM,KAAK;AAAA,MACX;AAAA,MACA,OAAO,KAAK,kBAAkB,OAAO;AAAA,IACvC,CAAC;AAAA,EACH;AAAA,EAMA,gBAAgB,SAAS;AACvB,UAAM,aAAa,CAAC;AAEpB,WAAO,KAAK,KAAK,UAAU,EAAE,GAAG;AAC9B,iBAAW,KAAK,KAAK,eAAe,OAAO,CAAC;AAAA,IAC9C;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,uBAAuB;AACrB,WAAO,KAAK,gBAAgB,IAAI;AAAA,EAClC;AAAA,EAOA,eAAe,SAAS;AACtB,UAAM,QAAQ,KAAK,OAAO;AAC1B,SAAK,YAAY,UAAU,EAAE;AAC7B,WAAO,KAAK,KAAK,OAAO;AAAA,MACtB,MAAM,KAAK;AAAA,MACX,MAAM,KAAK,UAAU;AAAA,MACrB,WAAW,KAAK,eAAe,OAAO;AAAA,IACxC,CAAC;AAAA,EACH;AAAA,EASA,qBAAqB;AACnB,UAAM,QAAQ,KAAK,OAAO;AAC1B,QAAI;AAEJ,QAAI,KAAK,oBAAoB,UAAU,SAAS,GAAG;AACjD,YAAM,YAAY,KAAK,mBAAmB;AAC1C,WAAK,YAAY,UAAU,SAAS;AACpC,aAAO,KAAK,KAAK,OAAO;AAAA,QACtB,MAAM,KAAK;AAAA,QACX,MAAM;AAAA,MACR,CAAC;AAAA,IACH,OAAO;AACL,aAAO,KAAK,eAAe;AAAA,IAC7B;AAEA,QAAI,KAAK,oBAAoB,UAAU,IAAI,GAAG;AAC5C,aAAO,KAAK,KAAK,OAAO;AAAA,QACtB,MAAM,KAAK;AAAA,QACX;AAAA,MACF,CAAC;AAAA,IACH;AAEA,WAAO;AAAA,EACT;AAAA,EAKA,iBAAiB;AACf,WAAO,KAAK,KAAK,KAAK,OAAO,OAAO;AAAA,MAClC,MAAM,KAAK;AAAA,MACX,MAAM,KAAK,UAAU;AAAA,IACvB,CAAC;AAAA,EACH;AAAA,EAEA,kBAAkB;AAChB,WAAO,KAAK,KAAK,UAAU,MAAM,KAAK,KAAK,KAAK,UAAU,YAAY;AAAA,EACxE;AAAA,EAKA,mBAAmB;AACjB,QAAI,KAAK,gBAAgB,GAAG;AAC1B,aAAO,KAAK,mBAAmB;AAAA,IACjC;AAAA,EACF;AAAA,EAOA,wBAAwB;AACtB,UAAM,QAAQ,KAAK,OAAO;AAC1B,UAAM,cAAc,KAAK,iBAAiB;AAC1C,SAAK,cAAc,QAAQ;AAC3B,UAAM,aAAa,KAAK,qBAAqB;AAC7C,UAAM,iBAAiB,KAAK;AAAA,MAC1B,UAAU;AAAA,MACV,KAAK;AAAA,MACL,UAAU;AAAA,IACZ;AACA,WAAO,KAAK,KAAK,OAAO;AAAA,MACtB,MAAM,KAAK;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAKA,+BAA+B;AAC7B,UAAM,QAAQ,KAAK,OAAO;AAC1B,UAAM,YAAY,KAAK,mBAAmB;AAC1C,SAAK,YAAY,UAAU,KAAK;AAChC,UAAM,OAAO,KAAK,eAAe;AACjC,WAAO,KAAK,KAAK,OAAO;AAAA,MACtB,MAAM,KAAK;AAAA,MACX;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAKA,4BAA4B;AAC1B,UAAM,QAAQ,KAAK,OAAO;AAC1B,UAAM,cAAc,KAAK,iBAAiB;AAC1C,SAAK,cAAc,QAAQ;AAC3B,UAAM,OAAO,KAAK,UAAU;AAC5B,UAAM,aAAa,KAAK,qBAAqB;AAC7C,WAAO,KAAK,KAAK,OAAO;AAAA,MACtB,MAAM,KAAK;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAOA,4BAA4B;AAC1B,UAAM,QAAQ,KAAK,OAAO;AAC1B,UAAM,cAAc,KAAK,iBAAiB;AAC1C,SAAK,cAAc,MAAM;AACzB,UAAM,OAAO,KAAK,UAAU;AAC5B,UAAM,aAAa,KAAK,0BAA0B;AAClD,UAAM,aAAa,KAAK,qBAAqB;AAC7C,UAAM,SAAS,KAAK,sBAAsB;AAC1C,WAAO,KAAK,KAAK,OAAO;AAAA,MACtB,MAAM,KAAK;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAOA,4BAA4B;AAC1B,WAAO,KAAK,sBAAsB,YAAY,IAC1C,KAAK,cAAc,UAAU,KAAK,KAAK,cAAc,IACrD,CAAC;AAAA,EACP;AAAA,EAOA,wBAAwB;AACtB,WAAO,KAAK;AAAA,MACV,UAAU;AAAA,MACV,KAAK;AAAA,MACL,UAAU;AAAA,IACZ;AAAA,EACF;AAAA,EAMA,uBAAuB;AACrB,UAAM,QAAQ,KAAK,OAAO;AAC1B,UAAM,cAAc,KAAK,iBAAiB;AAC1C,UAAM,OAAO,KAAK,UAAU;AAC5B,UAAM,OAAO,KAAK,kBAAkB;AACpC,SAAK,YAAY,UAAU,KAAK;AAChC,UAAM,OAAO,KAAK,mBAAmB;AACrC,UAAM,aAAa,KAAK,qBAAqB;AAC7C,WAAO,KAAK,KAAK,OAAO;AAAA,MACtB,MAAM,KAAK;AAAA,MACX;AAAA,MACA;AAAA,MACA,WAAW;AAAA,MACX;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAKA,oBAAoB;AAClB,WAAO,KAAK;AAAA,MACV,UAAU;AAAA,MACV,KAAK;AAAA,MACL,UAAU;AAAA,IACZ;AAAA,EACF;AAAA,EAMA,qBAAqB;AACnB,UAAM,QAAQ,KAAK,OAAO;AAC1B,UAAM,cAAc,KAAK,iBAAiB;AAC1C,UAAM,OAAO,KAAK,UAAU;AAC5B,SAAK,YAAY,UAAU,KAAK;AAChC,UAAM,OAAO,KAAK,mBAAmB;AACrC,QAAI;AAEJ,QAAI,KAAK,oBAAoB,UAAU,MAAM,GAAG;AAC9C,qBAAe,KAAK,uBAAuB;AAAA,IAC7C;AAEA,UAAM,aAAa,KAAK,qBAAqB;AAC7C,WAAO,KAAK,KAAK,OAAO;AAAA,MACtB,MAAM,KAAK;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAMA,+BAA+B;AAC7B,UAAM,QAAQ,KAAK,OAAO;AAC1B,UAAM,cAAc,KAAK,iBAAiB;AAC1C,SAAK,cAAc,WAAW;AAC9B,UAAM,OAAO,KAAK,UAAU;AAC5B,UAAM,aAAa,KAAK,0BAA0B;AAClD,UAAM,aAAa,KAAK,qBAAqB;AAC7C,UAAM,SAAS,KAAK,sBAAsB;AAC1C,WAAO,KAAK,KAAK,OAAO;AAAA,MACtB,MAAM,KAAK;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAMA,2BAA2B;AACzB,UAAM,QAAQ,KAAK,OAAO;AAC1B,UAAM,cAAc,KAAK,iBAAiB;AAC1C,SAAK,cAAc,OAAO;AAC1B,UAAM,OAAO,KAAK,UAAU;AAC5B,UAAM,aAAa,KAAK,qBAAqB;AAC7C,UAAM,QAAQ,KAAK,sBAAsB;AACzC,WAAO,KAAK,KAAK,OAAO;AAAA,MACtB,MAAM,KAAK;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAOA,wBAAwB;AACtB,WAAO,KAAK,oBAAoB,UAAU,MAAM,IAC5C,KAAK,cAAc,UAAU,MAAM,KAAK,cAAc,IACtD,CAAC;AAAA,EACP;AAAA,EAMA,0BAA0B;AACxB,UAAM,QAAQ,KAAK,OAAO;AAC1B,UAAM,cAAc,KAAK,iBAAiB;AAC1C,SAAK,cAAc,MAAM;AACzB,UAAM,OAAO,KAAK,UAAU;AAC5B,UAAM,aAAa,KAAK,qBAAqB;AAC7C,UAAM,SAAS,KAAK,0BAA0B;AAC9C,WAAO,KAAK,KAAK,OAAO;AAAA,MACtB,MAAM,KAAK;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAOA,4BAA4B;AAC1B,WAAO,KAAK;AAAA,MACV,UAAU;AAAA,MACV,KAAK;AAAA,MACL,UAAU;AAAA,IACZ;AAAA,EACF;AAAA,EAKA,2BAA2B;AACzB,UAAM,QAAQ,KAAK,OAAO;AAC1B,UAAM,cAAc,KAAK,iBAAiB;AAC1C,UAAM,OAAO,KAAK,mBAAmB;AACrC,UAAM,aAAa,KAAK,qBAAqB;AAC7C,WAAO,KAAK,KAAK,OAAO;AAAA,MACtB,MAAM,KAAK;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAKA,qBAAqB;AACnB,QACE,KAAK,OAAO,MAAM,UAAU,UAC5B,KAAK,OAAO,MAAM,UAAU,WAC5B,KAAK,OAAO,MAAM,UAAU,QAC5B;AACA,YAAM;AAAA,QACJ,KAAK,OAAO;AAAA,QACZ,KAAK,OAAO,MAAM;AAAA,QAClB,GAAG;AAAA,UACD,KAAK,OAAO;AAAA,QACd;AAAA,MACF;AAAA,IACF;AAEA,WAAO,KAAK,UAAU;AAAA,EACxB;AAAA,EAMA,iCAAiC;AAC/B,UAAM,QAAQ,KAAK,OAAO;AAC1B,UAAM,cAAc,KAAK,iBAAiB;AAC1C,SAAK,cAAc,OAAO;AAC1B,UAAM,OAAO,KAAK,UAAU;AAC5B,UAAM,aAAa,KAAK,qBAAqB;AAC7C,UAAM,SAAS,KAAK,2BAA2B;AAC/C,WAAO,KAAK,KAAK,OAAO;AAAA,MACtB,MAAM,KAAK;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAOA,6BAA6B;AAC3B,WAAO,KAAK;AAAA,MACV,UAAU;AAAA,MACV,KAAK;AAAA,MACL,UAAU;AAAA,IACZ;AAAA,EACF;AAAA,EAeA,2BAA2B;AACzB,UAAM,eAAe,KAAK,OAAO,UAAU;AAE3C,QAAI,aAAa,SAAS,UAAU,MAAM;AACxC,cAAQ,aAAa;AAAA,aACd;AACH,iBAAO,KAAK,qBAAqB;AAAA,aAE9B;AACH,iBAAO,KAAK,yBAAyB;AAAA,aAElC;AACH,iBAAO,KAAK,yBAAyB;AAAA,aAElC;AACH,iBAAO,KAAK,4BAA4B;AAAA,aAErC;AACH,iBAAO,KAAK,wBAAwB;AAAA,aAEjC;AACH,iBAAO,KAAK,uBAAuB;AAAA,aAEhC;AACH,iBAAO,KAAK,8BAA8B;AAAA;AAAA,IAEhD;AAEA,UAAM,KAAK,WAAW,YAAY;AAAA,EACpC;AAAA,EASA,uBAAuB;AACrB,UAAM,QAAQ,KAAK,OAAO;AAC1B,SAAK,cAAc,QAAQ;AAC3B,SAAK,cAAc,QAAQ;AAC3B,UAAM,aAAa,KAAK,qBAAqB;AAC7C,UAAM,iBAAiB,KAAK;AAAA,MAC1B,UAAU;AAAA,MACV,KAAK;AAAA,MACL,UAAU;AAAA,IACZ;AAEA,QAAI,WAAW,WAAW,KAAK,eAAe,WAAW,GAAG;AAC1D,YAAM,KAAK,WAAW;AAAA,IACxB;AAEA,WAAO,KAAK,KAAK,OAAO;AAAA,MACtB,MAAM,KAAK;AAAA,MACX;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAMA,2BAA2B;AACzB,UAAM,QAAQ,KAAK,OAAO;AAC1B,SAAK,cAAc,QAAQ;AAC3B,SAAK,cAAc,QAAQ;AAC3B,UAAM,OAAO,KAAK,UAAU;AAC5B,UAAM,aAAa,KAAK,qBAAqB;AAE7C,QAAI,WAAW,WAAW,GAAG;AAC3B,YAAM,KAAK,WAAW;AAAA,IACxB;AAEA,WAAO,KAAK,KAAK,OAAO;AAAA,MACtB,MAAM,KAAK;AAAA,MACX;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAQA,2BAA2B;AACzB,UAAM,QAAQ,KAAK,OAAO;AAC1B,SAAK,cAAc,QAAQ;AAC3B,SAAK,cAAc,MAAM;AACzB,UAAM,OAAO,KAAK,UAAU;AAC5B,UAAM,aAAa,KAAK,0BAA0B;AAClD,UAAM,aAAa,KAAK,qBAAqB;AAC7C,UAAM,SAAS,KAAK,sBAAsB;AAE1C,QACE,WAAW,WAAW,KACtB,WAAW,WAAW,KACtB,OAAO,WAAW,GAClB;AACA,YAAM,KAAK,WAAW;AAAA,IACxB;AAEA,WAAO,KAAK,KAAK,OAAO;AAAA,MACtB,MAAM,KAAK;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAQA,8BAA8B;AAC5B,UAAM,QAAQ,KAAK,OAAO;AAC1B,SAAK,cAAc,QAAQ;AAC3B,SAAK,cAAc,WAAW;AAC9B,UAAM,OAAO,KAAK,UAAU;AAC5B,UAAM,aAAa,KAAK,0BAA0B;AAClD,UAAM,aAAa,KAAK,qBAAqB;AAC7C,UAAM,SAAS,KAAK,sBAAsB;AAE1C,QACE,WAAW,WAAW,KACtB,WAAW,WAAW,KACtB,OAAO,WAAW,GAClB;AACA,YAAM,KAAK,WAAW;AAAA,IACxB;AAEA,WAAO,KAAK,KAAK,OAAO;AAAA,MACtB,MAAM,KAAK;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAOA,0BAA0B;AACxB,UAAM,QAAQ,KAAK,OAAO;AAC1B,SAAK,cAAc,QAAQ;AAC3B,SAAK,cAAc,OAAO;AAC1B,UAAM,OAAO,KAAK,UAAU;AAC5B,UAAM,aAAa,KAAK,qBAAqB;AAC7C,UAAM,QAAQ,KAAK,sBAAsB;AAEzC,QAAI,WAAW,WAAW,KAAK,MAAM,WAAW,GAAG;AACjD,YAAM,KAAK,WAAW;AAAA,IACxB;AAEA,WAAO,KAAK,KAAK,OAAO;AAAA,MACtB,MAAM,KAAK;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAOA,yBAAyB;AACvB,UAAM,QAAQ,KAAK,OAAO;AAC1B,SAAK,cAAc,QAAQ;AAC3B,SAAK,cAAc,MAAM;AACzB,UAAM,OAAO,KAAK,UAAU;AAC5B,UAAM,aAAa,KAAK,qBAAqB;AAC7C,UAAM,SAAS,KAAK,0BAA0B;AAE9C,QAAI,WAAW,WAAW,KAAK,OAAO,WAAW,GAAG;AAClD,YAAM,KAAK,WAAW;AAAA,IACxB;AAEA,WAAO,KAAK,KAAK,OAAO;AAAA,MACtB,MAAM,KAAK;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAOA,gCAAgC;AAC9B,UAAM,QAAQ,KAAK,OAAO;AAC1B,SAAK,cAAc,QAAQ;AAC3B,SAAK,cAAc,OAAO;AAC1B,UAAM,OAAO,KAAK,UAAU;AAC5B,UAAM,aAAa,KAAK,qBAAqB;AAC7C,UAAM,SAAS,KAAK,2BAA2B;AAE/C,QAAI,WAAW,WAAW,KAAK,OAAO,WAAW,GAAG;AAClD,YAAM,KAAK,WAAW;AAAA,IACxB;AAEA,WAAO,KAAK,KAAK,OAAO;AAAA,MACtB,MAAM,KAAK;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAQA,2BAA2B;AACzB,UAAM,QAAQ,KAAK,OAAO;AAC1B,UAAM,cAAc,KAAK,iBAAiB;AAC1C,SAAK,cAAc,WAAW;AAC9B,SAAK,YAAY,UAAU,EAAE;AAC7B,UAAM,OAAO,KAAK,UAAU;AAC5B,UAAM,OAAO,KAAK,kBAAkB;AACpC,UAAM,aAAa,KAAK,sBAAsB,YAAY;AAC1D,SAAK,cAAc,IAAI;AACvB,UAAM,YAAY,KAAK,wBAAwB;AAC/C,WAAO,KAAK,KAAK,OAAO;AAAA,MACtB,MAAM,KAAK;AAAA,MACX;AAAA,MACA;AAAA,MACA,WAAW;AAAA,MACX;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAOA,0BAA0B;AACxB,WAAO,KAAK,cAAc,UAAU,MAAM,KAAK,sBAAsB;AAAA,EACvE;AAAA,EA6BA,yBAAyB;AACvB,UAAM,QAAQ,KAAK,OAAO;AAC1B,UAAM,OAAO,KAAK,UAAU;AAE5B,QAAI,OAAO,UAAU,eAAe,KAAK,mBAAmB,KAAK,KAAK,GAAG;AACvE,aAAO;AAAA,IACT;AAEA,UAAM,KAAK,WAAW,KAAK;AAAA,EAC7B;AAAA,EAQA,KAAK,YAAY,MAAM;AACrB,QAAI,KAAK,SAAS,eAAe,MAAM;AACrC,WAAK,MAAM,IAAI;AAAA,QACb;AAAA,QACA,KAAK,OAAO;AAAA,QACZ,KAAK,OAAO;AAAA,MACd;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAKA,KAAK,MAAM;AACT,WAAO,KAAK,OAAO,MAAM,SAAS;AAAA,EACpC;AAAA,EAMA,YAAY,MAAM;AAChB,UAAM,QAAQ,KAAK,OAAO;AAE1B,QAAI,MAAM,SAAS,MAAM;AACvB,WAAK,aAAa;AAClB,aAAO;AAAA,IACT;AAEA,UAAM;AAAA,MACJ,KAAK,OAAO;AAAA,MACZ,MAAM;AAAA,MACN,YAAY,iBAAiB,IAAI,YAAY,aAAa,KAAK;AAAA,IACjE;AAAA,EACF;AAAA,EAMA,oBAAoB,MAAM;AACxB,UAAM,QAAQ,KAAK,OAAO;AAE1B,QAAI,MAAM,SAAS,MAAM;AACvB,WAAK,aAAa;AAClB,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AAAA,EAMA,cAAc,OAAO;AACnB,UAAM,QAAQ,KAAK,OAAO;AAE1B,QAAI,MAAM,SAAS,UAAU,QAAQ,MAAM,UAAU,OAAO;AAC1D,WAAK,aAAa;AAAA,IACpB,OAAO;AACL,YAAM;AAAA,QACJ,KAAK,OAAO;AAAA,QACZ,MAAM;AAAA,QACN,aAAa,iBAAiB,aAAa,KAAK;AAAA,MAClD;AAAA,IACF;AAAA,EACF;AAAA,EAMA,sBAAsB,OAAO;AAC3B,UAAM,QAAQ,KAAK,OAAO;AAE1B,QAAI,MAAM,SAAS,UAAU,QAAQ,MAAM,UAAU,OAAO;AAC1D,WAAK,aAAa;AAClB,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AAAA,EAKA,WAAW,SAAS;AAClB,UAAM,QACJ,YAAY,QAAQ,YAAY,SAAS,UAAU,KAAK,OAAO;AACjE,WAAO;AAAA,MACL,KAAK,OAAO;AAAA,MACZ,MAAM;AAAA,MACN,cAAc,aAAa,KAAK;AAAA,IAClC;AAAA,EACF;AAAA,EAOA,IAAI,UAAU,SAAS,WAAW;AAChC,SAAK,YAAY,QAAQ;AACzB,UAAM,QAAQ,CAAC;AAEf,WAAO,CAAC,KAAK,oBAAoB,SAAS,GAAG;AAC3C,YAAM,KAAK,QAAQ,KAAK,IAAI,CAAC;AAAA,IAC/B;AAEA,WAAO;AAAA,EACT;AAAA,EAQA,aAAa,UAAU,SAAS,WAAW;AACzC,QAAI,KAAK,oBAAoB,QAAQ,GAAG;AACtC,YAAM,QAAQ,CAAC;AAEf,SAAG;AACD,cAAM,KAAK,QAAQ,KAAK,IAAI,CAAC;AAAA,MAC/B,SAAS,CAAC,KAAK,oBAAoB,SAAS;AAE5C,aAAO;AAAA,IACT;AAEA,WAAO,CAAC;AAAA,EACV;AAAA,EAOA,KAAK,UAAU,SAAS,WAAW;AACjC,SAAK,YAAY,QAAQ;AACzB,UAAM,QAAQ,CAAC;AAEf,OAAG;AACD,YAAM,KAAK,QAAQ,KAAK,IAAI,CAAC;AAAA,IAC/B,SAAS,CAAC,KAAK,oBAAoB,SAAS;AAE5C,WAAO;AAAA,EACT;AAAA,EAOA,cAAc,eAAe,SAAS;AACpC,SAAK,oBAAoB,aAAa;AACtC,UAAM,QAAQ,CAAC;AAEf,OAAG;AACD,YAAM,KAAK,QAAQ,KAAK,IAAI,CAAC;AAAA,IAC/B,SAAS,KAAK,oBAAoB,aAAa;AAE/C,WAAO;AAAA,EACT;AAAA,EAEA,eAAe;AACb,UAAM,EAAE,UAAU,IAAI,KAAK;AAE3B,UAAM,QAAQ,KAAK,OAAO,QAAQ;AAElC,QAAI,cAAc,UAAa,MAAM,SAAS,UAAU,KAAK;AAC3D,QAAE,KAAK;AAEP,UAAI,KAAK,gBAAgB,WAAW;AAClC,cAAM;AAAA,UACJ,KAAK,OAAO;AAAA,UACZ,MAAM;AAAA,UACN,+BAA+B;AAAA,QACjC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAKA,SAAS,aAAa,OAAO;AAC3B,QAAM,QAAQ,MAAM;AACpB,SAAO,iBAAiB,MAAM,IAAI,KAAK,SAAS,OAAO,KAAK,WAAW;AACzE;AAKA,SAAS,iBAAiB,MAAM;AAC9B,SAAO,sBAAsB,IAAI,IAAI,IAAI,UAAU;AACrD;;;ACn/CA,IAAM,kBAAkB;AAKjB,SAAS,WAAW,UAAU,WAAW;AAC9C,QAAM,CAAC,YAAY,cAAc,IAAI,YACjC,CAAC,UAAU,SAAS,IACpB,CAAC,QAAW,QAAQ;AACxB,MAAI,UAAU;AAEd,MAAI,YAAY;AACd,eAAW,aAAa;AAAA,EAC1B;AAEA,QAAM,cAAc,eAAe,IAAI,CAAC,MAAM,IAAI,IAAI;AAEtD,UAAQ,YAAY;AAAA,SACb;AACH,aAAO;AAAA,SAEJ;AACH,aAAO,UAAU,YAAY,KAAK;AAAA,SAE/B;AACH,aAAO,UAAU,YAAY,KAAK,SAAS,YAAY,KAAK;AAAA;AAGhE,QAAM,WAAW,YAAY,MAAM,GAAG,eAAe;AACrD,QAAM,WAAW,SAAS,IAAI;AAC9B,SAAO,UAAU,SAAS,KAAK,IAAI,IAAI,UAAU,WAAW;AAC9D;;;AC5BO,SAAS,aAAa,GAAG;AAC9B,SAAO;AACT;;;ACsBO,SAAS,OAAO,MAAM,OAAO;AAClC,QAAM,SAAS,uBAAO,OAAO,IAAI;AAEjC,aAAW,QAAQ,MAAM;AACvB,WAAO,MAAM,IAAI,KAAK;AAAA,EACxB;AAEA,SAAO;AACT;;;AClBO,SAAS,UAAU,MAAM,OAAO,OAAO;AAC5C,QAAM,SAAS,uBAAO,OAAO,IAAI;AAEjC,aAAW,QAAQ,MAAM;AACvB,WAAO,MAAM,IAAI,KAAK,MAAM,IAAI;AAAA,EAClC;AAEA,SAAO;AACT;;;ACrBO,SAAS,SAASC,MAAK,IAAI;AAChC,QAAM,SAAS,uBAAO,OAAO,IAAI;AAEjC,aAAW,OAAO,OAAO,KAAKA,IAAG,GAAG;AAClC,WAAO,OAAO,GAAGA,KAAI,MAAM,GAAG;AAAA,EAChC;AAEA,SAAO;AACT;;;ACLO,SAAS,eAAe,MAAM,MAAM;AACzC,MAAI,SAAS;AACb,MAAI,SAAS;AAEb,SAAO,SAAS,KAAK,UAAU,SAAS,KAAK,QAAQ;AACnD,QAAI,QAAQ,KAAK,WAAW,MAAM;AAClC,QAAI,QAAQ,KAAK,WAAW,MAAM;AAElC,QAAIC,SAAQ,KAAK,KAAKA,SAAQ,KAAK,GAAG;AACpC,UAAI,OAAO;AAEX,SAAG;AACD,UAAE;AACF,eAAO,OAAO,KAAK,QAAQ;AAC3B,gBAAQ,KAAK,WAAW,MAAM;AAAA,MAChC,SAASA,SAAQ,KAAK,KAAK,OAAO;AAElC,UAAI,OAAO;AAEX,SAAG;AACD,UAAE;AACF,eAAO,OAAO,KAAK,QAAQ;AAC3B,gBAAQ,KAAK,WAAW,MAAM;AAAA,MAChC,SAASA,SAAQ,KAAK,KAAK,OAAO;AAElC,UAAI,OAAO,MAAM;AACf,eAAO;AAAA,MACT;AAEA,UAAI,OAAO,MAAM;AACf,eAAO;AAAA,MACT;AAAA,IACF,OAAO;AACL,UAAI,QAAQ,OAAO;AACjB,eAAO;AAAA,MACT;AAEA,UAAI,QAAQ,OAAO;AACjB,eAAO;AAAA,MACT;AAEA,QAAE;AACF,QAAE;AAAA,IACJ;AAAA,EACF;AAEA,SAAO,KAAK,SAAS,KAAK;AAC5B;AACA,IAAM,UAAU;AAChB,IAAM,UAAU;AAEhB,SAASA,SAAQ,MAAM;AACrB,SAAO,CAAC,MAAM,IAAI,KAAK,WAAW,QAAQ,QAAQ;AACpD;;;ACtDO,SAAS,eAAe,OAAO,SAAS;AAC7C,QAAM,oBAAoB,uBAAO,OAAO,IAAI;AAC5C,QAAM,kBAAkB,IAAI,gBAAgB,KAAK;AACjD,QAAM,YAAY,KAAK,MAAM,MAAM,SAAS,GAAG,IAAI;AAEnD,aAAW,UAAU,SAAS;AAC5B,UAAM,WAAW,gBAAgB,QAAQ,QAAQ,SAAS;AAE1D,QAAI,aAAa,QAAW;AAC1B,wBAAkB,UAAU;AAAA,IAC9B;AAAA,EACF;AAEA,SAAO,OAAO,KAAK,iBAAiB,EAAE,KAAK,CAAC,GAAG,MAAM;AACnD,UAAM,eAAe,kBAAkB,KAAK,kBAAkB;AAC9D,WAAO,iBAAiB,IAAI,eAAe,eAAe,GAAG,CAAC;AAAA,EAChE,CAAC;AACH;AAgBA,IAAM,kBAAN,MAAsB;AAAA,EACpB,YAAY,OAAO;AACjB,SAAK,SAAS;AACd,SAAK,kBAAkB,MAAM,YAAY;AACzC,SAAK,cAAc,cAAc,KAAK,eAAe;AACrD,SAAK,QAAQ;AAAA,MACX,IAAI,MAAM,MAAM,SAAS,CAAC,EAAE,KAAK,CAAC;AAAA,MAClC,IAAI,MAAM,MAAM,SAAS,CAAC,EAAE,KAAK,CAAC;AAAA,MAClC,IAAI,MAAM,MAAM,SAAS,CAAC,EAAE,KAAK,CAAC;AAAA,IACpC;AAAA,EACF;AAAA,EAEA,QAAQ,QAAQ,WAAW;AACzB,QAAI,KAAK,WAAW,QAAQ;AAC1B,aAAO;AAAA,IACT;AAEA,UAAM,kBAAkB,OAAO,YAAY;AAE3C,QAAI,KAAK,oBAAoB,iBAAiB;AAC5C,aAAO;AAAA,IACT;AAEA,QAAI,IAAI,cAAc,eAAe;AACrC,QAAI,IAAI,KAAK;AAEb,QAAI,EAAE,SAAS,EAAE,QAAQ;AACvB,YAAM,MAAM;AACZ,UAAI;AACJ,UAAI;AAAA,IACN;AAEA,UAAM,UAAU,EAAE;AAClB,UAAM,UAAU,EAAE;AAElB,QAAI,UAAU,UAAU,WAAW;AACjC,aAAO;AAAA,IACT;AAEA,UAAM,OAAO,KAAK;AAElB,aAAS,IAAI,GAAG,KAAK,SAAS,KAAK;AACjC,WAAK,GAAG,KAAK;AAAA,IACf;AAEA,aAAS,IAAI,GAAG,KAAK,SAAS,KAAK;AACjC,YAAM,QAAQ,MAAM,IAAI,KAAK;AAC7B,YAAM,aAAa,KAAK,IAAI;AAC5B,UAAI,eAAgB,WAAW,KAAK;AAEpC,eAAS,IAAI,GAAG,KAAK,SAAS,KAAK;AACjC,cAAM,OAAO,EAAE,IAAI,OAAO,EAAE,IAAI,KAAK,IAAI;AACzC,YAAI,cAAc,KAAK;AAAA,UACrB,MAAM,KAAK;AAAA,UACX,WAAW,IAAI,KAAK;AAAA,UACpB,MAAM,IAAI,KAAK;AAAA,QACjB;AAEA,YAAI,IAAI,KAAK,IAAI,KAAK,EAAE,IAAI,OAAO,EAAE,IAAI,MAAM,EAAE,IAAI,OAAO,EAAE,IAAI,IAAI;AAEpE,gBAAM,qBAAqB,MAAM,IAAI,KAAK,GAAG,IAAI;AACjD,wBAAc,KAAK,IAAI,aAAa,qBAAqB,CAAC;AAAA,QAC5D;AAEA,YAAI,cAAc,cAAc;AAC9B,yBAAe;AAAA,QACjB;AAEA,mBAAW,KAAK;AAAA,MAClB;AAEA,UAAI,eAAe,WAAW;AAC5B,eAAO;AAAA,MACT;AAAA,IACF;AAEA,UAAM,WAAW,KAAK,UAAU,GAAG;AACnC,WAAO,YAAY,YAAY,WAAW;AAAA,EAC5C;AACF;AAEA,SAAS,cAAc,KAAK;AAC1B,QAAM,YAAY,IAAI;AACtB,QAAM,QAAQ,IAAI,MAAM,SAAS;AAEjC,WAAS,IAAI,GAAG,IAAI,WAAW,EAAE,GAAG;AAClC,UAAM,KAAK,IAAI,WAAW,CAAC;AAAA,EAC7B;AAEA,SAAO;AACT;;;ACjIO,SAAS,SAAS,KAAK;AAC5B,MAAI,OAAO,MAAM;AACf,WAAO,uBAAO,OAAO,IAAI;AAAA,EAC3B;AAEA,MAAI,OAAO,eAAe,GAAG,MAAM,MAAM;AACvC,WAAO;AAAA,EACT;AAEA,QAAMC,OAAM,uBAAO,OAAO,IAAI;AAE9B,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,GAAG,GAAG;AAC9C,IAAAA,KAAI,OAAO;AAAA,EACb;AAEA,SAAOA;AACT;;;ACZO,SAAS,YAAY,KAAK;AAC/B,SAAO,IAAI,IAAI,QAAQ,eAAe,eAAe;AACvD;AAEA,IAAM,gBAAgB;AAEtB,SAAS,gBAAgB,KAAK;AAC5B,SAAO,gBAAgB,IAAI,WAAW,CAAC;AACzC;AAEA,IAAM,kBAAkB;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;ACtKO,IAAM,QAAQ,OAAO,OAAO,CAAC,CAAC;AAgF9B,SAAS,MAAM,MAAM,SAAS,cAAc,mBAAmB;AACpE,QAAM,gBAAgB,oBAAI,IAAI;AAE9B,aAAW,QAAQ,OAAO,OAAO,IAAI,GAAG;AACtC,kBAAc,IAAI,MAAM,qBAAqB,SAAS,IAAI,CAAC;AAAA,EAC7D;AAGA,MAAI,QAAQ;AACZ,MAAI,UAAU,MAAM,QAAQ,IAAI;AAChC,MAAI,OAAO,CAAC,IAAI;AAChB,MAAI,QAAQ;AACZ,MAAI,QAAQ,CAAC;AACb,MAAI,OAAO;AACX,MAAI,MAAM;AACV,MAAI,SAAS;AACb,QAAM,OAAO,CAAC;AACd,QAAM,YAAY,CAAC;AAGnB,KAAG;AACD;AACA,UAAM,YAAY,UAAU,KAAK;AACjC,UAAM,WAAW,aAAa,MAAM,WAAW;AAE/C,QAAI,WAAW;AACb,YAAM,UAAU,WAAW,IAAI,SAAY,KAAK,KAAK,SAAS;AAC9D,aAAO;AACP,eAAS,UAAU,IAAI;AAEvB,UAAI,UAAU;AACZ,YAAI,SAAS;AACX,iBAAO,KAAK,MAAM;AAClB,cAAI,aAAa;AAEjB,qBAAW,CAAC,SAAS,SAAS,KAAK,OAAO;AACxC,kBAAM,WAAW,UAAU;AAE3B,gBAAI,cAAc,MAAM;AACtB,mBAAK,OAAO,UAAU,CAAC;AACvB;AAAA,YACF,OAAO;AACL,mBAAK,YAAY;AAAA,YACnB;AAAA,UACF;AAAA,QACF,OAAO;AACL,iBAAO,OAAO;AAAA,YACZ,CAAC;AAAA,YACD,OAAO,0BAA0B,IAAI;AAAA,UACvC;AAEA,qBAAW,CAAC,SAAS,SAAS,KAAK,OAAO;AACxC,iBAAK,WAAW;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AAEA,cAAQ,MAAM;AACd,aAAO,MAAM;AACb,cAAQ,MAAM;AACd,gBAAU,MAAM;AAChB,cAAQ,MAAM;AAAA,IAChB,WAAW,QAAQ;AACjB,YAAM,UAAU,QAAQ,KAAK;AAC7B,aAAO,OAAO;AAEd,UAAI,SAAS,QAAQ,SAAS,QAAW;AACvC;AAAA,MACF;AAEA,WAAK,KAAK,GAAG;AAAA,IACf;AAEA,QAAI;AAEJ,QAAI,CAAC,MAAM,QAAQ,IAAI,GAAG;AACxB,UAAI,oBAAoB;AAExB,aAAO,IAAI,KAAK,UAAU,OAAO,qBAAqB,QAAQ,IAAI,IAAI;AACtE,YAAM,UAAU,aACX,qBAAqB,cAAc,IAAI,KAAK,IAAI,OAAO,QACxD,uBAAuB,SACrB,SACA,mBAAmB,SACpB,sBAAsB,cAAc,IAAI,KAAK,IAAI,OAAO,QACzD,wBAAwB,SACxB,SACA,oBAAoB;AACxB,eACE,YAAY,QAAQ,YAAY,SAC5B,SACA,QAAQ,KAAK,SAAS,MAAM,KAAK,QAAQ,MAAM,SAAS;AAE9D,UAAI,WAAW,OAAO;AACpB;AAAA,MACF;AAEA,UAAI,WAAW,OAAO;AACpB,YAAI,CAAC,WAAW;AACd,eAAK,IAAI;AACT;AAAA,QACF;AAAA,MACF,WAAW,WAAW,QAAW;AAC/B,cAAM,KAAK,CAAC,KAAK,MAAM,CAAC;AAExB,YAAI,CAAC,WAAW;AACd,cAAI,OAAO,MAAM,GAAG;AAClB,mBAAO;AAAA,UACT,OAAO;AACL,iBAAK,IAAI;AACT;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,QAAI,WAAW,UAAa,UAAU;AACpC,YAAM,KAAK,CAAC,KAAK,IAAI,CAAC;AAAA,IACxB;AAEA,QAAI,WAAW;AACb,WAAK,IAAI;AAAA,IACX,OAAO;AACL,UAAI;AAEJ,cAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,MAAM;AAAA,MACR;AACA,gBAAU,MAAM,QAAQ,IAAI;AAC5B,aAAO,UACH,QACC,aAAa,YAAY,KAAK,WAAW,QAC1C,eAAe,SACf,aACA,CAAC;AACL,cAAQ;AACR,cAAQ,CAAC;AAET,UAAI,QAAQ;AACV,kBAAU,KAAK,MAAM;AAAA,MACvB;AAEA,eAAS;AAAA,IACX;AAAA,EACF,SAAS,UAAU;AAEnB,MAAI,MAAM,WAAW,GAAG;AAEtB,WAAO,MAAM,MAAM,SAAS,GAAG;AAAA,EACjC;AAEA,SAAO;AACT;AAQO,SAAS,gBAAgB,UAAU;AACxC,QAAM,WAAW,IAAI,MAAM,SAAS,MAAM,EAAE,KAAK,IAAI;AACrD,QAAM,gBAAgB,uBAAO,OAAO,IAAI;AAExC,aAAW,QAAQ,OAAO,OAAO,IAAI,GAAG;AACtC,QAAI,aAAa;AACjB,UAAM,YAAY,IAAI,MAAM,SAAS,MAAM,EAAE,KAAK,MAAS;AAC3D,UAAM,YAAY,IAAI,MAAM,SAAS,MAAM,EAAE,KAAK,MAAS;AAE3D,aAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,EAAE,GAAG;AACxC,YAAM,EAAE,OAAO,MAAM,IAAI,qBAAqB,SAAS,IAAI,IAAI;AAC/D,qBAAe,aAAa,SAAS,QAAQ,SAAS;AACtD,gBAAU,KAAK;AACf,gBAAU,KAAK;AAAA,IACjB;AAEA,QAAI,CAAC,YAAY;AACf;AAAA,IACF;AAEA,UAAM,mBAAmB;AAAA,MACvB,SAAS,MAAM;AACb,cAAM,OAAO,KAAK;AAElB,iBAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,cAAI,SAAS,OAAO,MAAM;AACxB,gBAAI;AAEJ,kBAAM,UACH,eAAe,UAAU,QAAQ,QAAQ,iBAAiB,SACvD,SACA,aAAa,MAAM,SAAS,IAAI,IAAI;AAE1C,gBAAI,WAAW,OAAO;AACpB,uBAAS,KAAK;AAAA,YAChB,WAAW,WAAW,OAAO;AAC3B,uBAAS,KAAK;AAAA,YAChB,WAAW,WAAW,QAAW;AAC/B,qBAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MAEA,SAAS,MAAM;AACb,cAAM,OAAO,KAAK;AAElB,iBAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,cAAI,SAAS,OAAO,MAAM;AACxB,gBAAI;AAEJ,kBAAM,UACH,eAAe,UAAU,QAAQ,QAAQ,iBAAiB,SACvD,SACA,aAAa,MAAM,SAAS,IAAI,IAAI;AAE1C,gBAAI,WAAW,OAAO;AACpB,uBAAS,KAAK;AAAA,YAChB,WAAW,WAAW,UAAa,WAAW,OAAO;AACnD,qBAAO;AAAA,YACT;AAAA,UACF,WAAW,SAAS,OAAO,MAAM;AAC/B,qBAAS,KAAK;AAAA,UAChB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,kBAAc,QAAQ;AAAA,EACxB;AAEA,SAAO;AACT;AAKO,SAAS,qBAAqB,SAAS,MAAM;AAClD,QAAM,cAAc,QAAQ;AAE5B,MAAI,OAAO,gBAAgB,UAAU;AAEnC,WAAO;AAAA,EACT,WAAW,OAAO,gBAAgB,YAAY;AAE5C,WAAO;AAAA,MACL,OAAO;AAAA,MACP,OAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO;AAAA,IACL,OAAO,QAAQ;AAAA,IACf,OAAO,QAAQ;AAAA,EACjB;AACF;;;ACnVO,SAAS,MAAM,KAAK;AACzB,SAAO,MAAM,KAAK,kBAAkB;AACtC;AACA,IAAM,kBAAkB;AACxB,IAAM,qBAAqB;AAAA,EACzB,MAAM;AAAA,IACJ,OAAO,CAAC,SAAS,KAAK;AAAA,EACxB;AAAA,EACA,UAAU;AAAA,IACR,OAAO,CAAC,SAAS,MAAM,KAAK;AAAA,EAC9B;AAAA,EAEA,UAAU;AAAA,IACR,OAAO,CAAC,SAAS,KAAK,KAAK,aAAa,MAAM;AAAA,EAChD;AAAA,EACA,qBAAqB;AAAA,IACnB,MAAM,MAAM;AACV,YAAM,UAAU,KAAK,KAAK,KAAK,KAAK,qBAAqB,IAAI,GAAG,GAAG;AACnE,YAAMC,UAAS;AAAA,QACb;AAAA,UACE,KAAK;AAAA,UACL,KAAK,CAAC,KAAK,MAAM,OAAO,CAAC;AAAA,UACzB,KAAK,KAAK,YAAY,GAAG;AAAA,QAC3B;AAAA,QACA;AAAA,MACF;AAGA,cAAQA,YAAW,UAAU,KAAKA,UAAS,OAAO,KAAK;AAAA,IACzD;AAAA,EACF;AAAA,EACA,oBAAoB;AAAA,IAClB,OAAO,CAAC,EAAE,UAAU,MAAM,cAAc,WAAW,MACjD,WACA,OACA,OACA,KAAK,OAAO,YAAY,IACxB,KAAK,KAAK,KAAK,YAAY,GAAG,CAAC;AAAA,EACnC;AAAA,EACA,cAAc;AAAA,IACZ,OAAO,CAAC,EAAE,WAAW,MAAM,MAAM,UAAU;AAAA,EAC7C;AAAA,EACA,OAAO;AAAA,IACL,MAAM,EAAE,OAAO,MAAM,WAAW,MAAM,YAAY,aAAa,GAAG;AAChE,YAAMA,UAAS,KAAK,IAAI,OAAO,IAAI,IAAI;AACvC,UAAI,WAAWA,UAAS,KAAK,KAAK,KAAK,MAAM,IAAI,GAAG,GAAG;AAEvD,UAAI,SAAS,SAAS,iBAAiB;AACrC,mBAAWA,UAAS,KAAK,OAAO,OAAO,KAAK,MAAM,IAAI,CAAC,GAAG,KAAK;AAAA,MACjE;AAEA,aAAO,KAAK,CAAC,UAAU,KAAK,YAAY,GAAG,GAAG,YAAY,GAAG,GAAG;AAAA,IAClE;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,OAAO,CAAC,EAAE,MAAM,MAAM,MAAM,OAAO,OAAO;AAAA,EAC5C;AAAA,EAEA,gBAAgB;AAAA,IACd,OAAO,CAAC,EAAE,MAAM,WAAW,MACzB,QAAQ,OAAO,KAAK,KAAK,KAAK,YAAY,GAAG,CAAC;AAAA,EAClD;AAAA,EACA,gBAAgB;AAAA,IACd,OAAO,CAAC,EAAE,eAAe,YAAY,aAAa,MAChD;AAAA,MACE;AAAA,QACE;AAAA,QACA,KAAK,OAAO,aAAa;AAAA,QACzB,KAAK,YAAY,GAAG;AAAA,QACpB;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACJ;AAAA,EACA,oBAAoB;AAAA,IAClB,OAAO,CACL,EAAE,MAAM,eAAe,qBAAqB,YAAY,aAAa,MAGrE,YAAY,OAAO,KAAK,KAAK,KAAK,qBAAqB,IAAI,GAAG,GAAG,QAC3D,iBAAiB,KAAK,IAAI,KAAK,YAAY,GAAG,GAAG,GAAG,MAC1D;AAAA,EACJ;AAAA,EAEA,UAAU;AAAA,IACR,OAAO,CAAC,EAAE,MAAM,MAAM;AAAA,EACxB;AAAA,EACA,YAAY;AAAA,IACV,OAAO,CAAC,EAAE,MAAM,MAAM;AAAA,EACxB;AAAA,EACA,aAAa;AAAA,IACX,OAAO,CAAC,EAAE,OAAO,OAAO,cAAc,MACpC,gBAAgB,iBAAiB,KAAK,IAAI,YAAY,KAAK;AAAA,EAC/D;AAAA,EACA,cAAc;AAAA,IACZ,OAAO,CAAC,EAAE,MAAM,MAAO,QAAQ,SAAS;AAAA,EAC1C;AAAA,EACA,WAAW;AAAA,IACT,OAAO,MAAM;AAAA,EACf;AAAA,EACA,WAAW;AAAA,IACT,OAAO,CAAC,EAAE,MAAM,MAAM;AAAA,EACxB;AAAA,EACA,WAAW;AAAA,IACT,OAAO,CAAC,EAAE,OAAO,MAAM,MAAM,KAAK,QAAQ,IAAI,IAAI;AAAA,EACpD;AAAA,EACA,aAAa;AAAA,IACX,OAAO,CAAC,EAAE,OAAO,MAAM,MAAM,KAAK,QAAQ,IAAI,IAAI;AAAA,EACpD;AAAA,EACA,aAAa;AAAA,IACX,OAAO,CAAC,EAAE,MAAM,MAAM,MAAM,OAAO,OAAO;AAAA,EAC5C;AAAA,EAEA,WAAW;AAAA,IACT,OAAO,CAAC,EAAE,MAAM,WAAW,KAAK,MAC9B,MAAM,OAAO,KAAK,KAAK,KAAK,MAAM,IAAI,GAAG,GAAG;AAAA,EAChD;AAAA,EAEA,WAAW;AAAA,IACT,OAAO,CAAC,EAAE,KAAK,MAAM;AAAA,EACvB;AAAA,EACA,UAAU;AAAA,IACR,OAAO,CAAC,EAAE,KAAK,MAAM,MAAM,OAAO;AAAA,EACpC;AAAA,EACA,aAAa;AAAA,IACX,OAAO,CAAC,EAAE,KAAK,MAAM,OAAO;AAAA,EAC9B;AAAA,EAEA,kBAAkB;AAAA,IAChB,OAAO,CAAC,EAAE,aAAa,YAAY,eAAe,MAChD,KAAK,IAAI,aAAa,IAAI,IAC1B,KAAK,CAAC,UAAU,KAAK,YAAY,GAAG,GAAG,MAAM,cAAc,CAAC,GAAG,GAAG;AAAA,EACtE;AAAA,EACA,yBAAyB;AAAA,IACvB,OAAO,CAAC,EAAE,WAAW,KAAK,MAAM,YAAY,OAAO;AAAA,EACrD;AAAA,EACA,sBAAsB;AAAA,IACpB,OAAO,CAAC,EAAE,aAAa,MAAM,WAAW,MACtC,KAAK,IAAI,aAAa,IAAI,IAC1B,KAAK,CAAC,UAAU,MAAM,KAAK,YAAY,GAAG,CAAC,GAAG,GAAG;AAAA,EACrD;AAAA,EACA,sBAAsB;AAAA,IACpB,OAAO,CAAC,EAAE,aAAa,MAAM,YAAY,YAAY,OAAO,MAC1D,KAAK,IAAI,aAAa,IAAI,IAC1B;AAAA,MACE;AAAA,QACE;AAAA,QACA;AAAA,QACA,KAAK,eAAe,KAAK,YAAY,KAAK,CAAC;AAAA,QAC3C,KAAK,YAAY,GAAG;AAAA,QACpB,MAAM,MAAM;AAAA,MACd;AAAA,MACA;AAAA,IACF;AAAA,EACJ;AAAA,EACA,iBAAiB;AAAA,IACf,OAAO,CAAC,EAAE,aAAa,MAAM,WAAW,MAAM,MAAM,WAAW,MAC7D,KAAK,IAAI,aAAa,IAAI,IAC1B,QACC,kBAAkB,IAAI,IACnB,KAAK,OAAO,OAAO,KAAK,MAAM,IAAI,CAAC,GAAG,KAAK,IAC3C,KAAK,KAAK,KAAK,MAAM,IAAI,GAAG,GAAG,KACnC,OACA,OACA,KAAK,KAAK,KAAK,YAAY,GAAG,CAAC;AAAA,EACnC;AAAA,EACA,sBAAsB;AAAA,IACpB,OAAO,CAAC,EAAE,aAAa,MAAM,MAAM,cAAc,WAAW,MAC1D,KAAK,IAAI,aAAa,IAAI,IAC1B;AAAA,MACE,CAAC,OAAO,OAAO,MAAM,KAAK,MAAM,YAAY,GAAG,KAAK,YAAY,GAAG,CAAC;AAAA,MACpE;AAAA,IACF;AAAA,EACJ;AAAA,EACA,yBAAyB;AAAA,IACvB,OAAO,CAAC,EAAE,aAAa,MAAM,YAAY,YAAY,OAAO,MAC1D,KAAK,IAAI,aAAa,IAAI,IAC1B;AAAA,MACE;AAAA,QACE;AAAA,QACA;AAAA,QACA,KAAK,eAAe,KAAK,YAAY,KAAK,CAAC;AAAA,QAC3C,KAAK,YAAY,GAAG;AAAA,QACpB,MAAM,MAAM;AAAA,MACd;AAAA,MACA;AAAA,IACF;AAAA,EACJ;AAAA,EACA,qBAAqB;AAAA,IACnB,OAAO,CAAC,EAAE,aAAa,MAAM,YAAY,MAAM,MAC7C,KAAK,IAAI,aAAa,IAAI,IAC1B;AAAA,MACE,CAAC,SAAS,MAAM,KAAK,YAAY,GAAG,GAAG,KAAK,MAAM,KAAK,OAAO,KAAK,CAAC,CAAC;AAAA,MACrE;AAAA,IACF;AAAA,EACJ;AAAA,EACA,oBAAoB;AAAA,IAClB,OAAO,CAAC,EAAE,aAAa,MAAM,YAAY,OAAO,MAC9C,KAAK,IAAI,aAAa,IAAI,IAC1B,KAAK,CAAC,QAAQ,MAAM,KAAK,YAAY,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,GAAG;AAAA,EAClE;AAAA,EACA,qBAAqB;AAAA,IACnB,OAAO,CAAC,EAAE,aAAa,MAAM,WAAW,MACtC,KAAK,IAAI,aAAa,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,YAAY,GAAG,CAAC,GAAG,GAAG;AAAA,EACzE;AAAA,EACA,2BAA2B;AAAA,IACzB,OAAO,CAAC,EAAE,aAAa,MAAM,YAAY,OAAO,MAC9C,KAAK,IAAI,aAAa,IAAI,IAC1B,KAAK,CAAC,SAAS,MAAM,KAAK,YAAY,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,GAAG;AAAA,EACnE;AAAA,EACA,qBAAqB;AAAA,IACnB,OAAO,CAAC,EAAE,aAAa,MAAM,WAAW,MAAM,YAAY,UAAU,MAClE,KAAK,IAAI,aAAa,IAAI,IAC1B,gBACA,QACC,kBAAkB,IAAI,IACnB,KAAK,OAAO,OAAO,KAAK,MAAM,IAAI,CAAC,GAAG,KAAK,IAC3C,KAAK,KAAK,KAAK,MAAM,IAAI,GAAG,GAAG,MAClC,aAAa,gBAAgB,MAC9B,SACA,KAAK,WAAW,KAAK;AAAA,EACzB;AAAA,EACA,iBAAiB;AAAA,IACf,OAAO,CAAC,EAAE,YAAY,eAAe,MACnC;AAAA,MACE,CAAC,iBAAiB,KAAK,YAAY,GAAG,GAAG,MAAM,cAAc,CAAC;AAAA,MAC9D;AAAA,IACF;AAAA,EACJ;AAAA,EACA,qBAAqB;AAAA,IACnB,OAAO,CAAC,EAAE,MAAM,WAAW,MACzB,KAAK,CAAC,iBAAiB,MAAM,KAAK,YAAY,GAAG,CAAC,GAAG,GAAG;AAAA,EAC5D;AAAA,EACA,qBAAqB;AAAA,IACnB,OAAO,CAAC,EAAE,MAAM,YAAY,YAAY,OAAO,MAC7C;AAAA,MACE;AAAA,QACE;AAAA,QACA;AAAA,QACA,KAAK,eAAe,KAAK,YAAY,KAAK,CAAC;AAAA,QAC3C,KAAK,YAAY,GAAG;AAAA,QACpB,MAAM,MAAM;AAAA,MACd;AAAA,MACA;AAAA,IACF;AAAA,EACJ;AAAA,EACA,wBAAwB;AAAA,IACtB,OAAO,CAAC,EAAE,MAAM,YAAY,YAAY,OAAO,MAC7C;AAAA,MACE;AAAA,QACE;AAAA,QACA;AAAA,QACA,KAAK,eAAe,KAAK,YAAY,KAAK,CAAC;AAAA,QAC3C,KAAK,YAAY,GAAG;AAAA,QACpB,MAAM,MAAM;AAAA,MACd;AAAA,MACA;AAAA,IACF;AAAA,EACJ;AAAA,EACA,oBAAoB;AAAA,IAClB,OAAO,CAAC,EAAE,MAAM,YAAY,MAAM,MAChC;AAAA,MACE;AAAA,QACE;AAAA,QACA;AAAA,QACA,KAAK,YAAY,GAAG;AAAA,QACpB,KAAK,MAAM,KAAK,OAAO,KAAK,CAAC;AAAA,MAC/B;AAAA,MACA;AAAA,IACF;AAAA,EACJ;AAAA,EACA,mBAAmB;AAAA,IACjB,OAAO,CAAC,EAAE,MAAM,YAAY,OAAO,MACjC,KAAK,CAAC,eAAe,MAAM,KAAK,YAAY,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,GAAG;AAAA,EACzE;AAAA,EACA,0BAA0B;AAAA,IACxB,OAAO,CAAC,EAAE,MAAM,YAAY,OAAO,MACjC,KAAK,CAAC,gBAAgB,MAAM,KAAK,YAAY,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,GAAG;AAAA,EAC1E;AACF;AAMA,SAAS,KAAK,YAAY,YAAY,IAAI;AACxC,MAAI;AAEJ,UAAQ,wBACN,eAAe,QAAQ,eAAe,SAClC,SACA,WAAW,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,SAAS,OAAO,QACrD,0BAA0B,SACxB,wBACA;AACN;AAKA,SAAS,MAAM,OAAO;AACpB,SAAO,KAAK,OAAO,OAAO,KAAK,OAAO,IAAI,CAAC,GAAG,KAAK;AACrD;AAKA,SAAS,KAAK,OAAO,aAAa,MAAM,IAAI;AAC1C,SAAO,eAAe,QAAQ,gBAAgB,KAC1C,QAAQ,cAAc,MACtB;AACN;AAEA,SAAS,OAAO,KAAK;AACnB,SAAO,KAAK,MAAM,IAAI,QAAQ,OAAO,MAAM,CAAC;AAC9C;AAEA,SAAS,kBAAkB,YAAY;AACrC,MAAI;AAKJ,UAAQ,mBACN,eAAe,QAAQ,eAAe,SAClC,SACA,WAAW,KAAK,CAAC,QAAQ,IAAI,SAAS,IAAI,CAAC,OAAO,QACtD,qBAAqB,SACnB,mBACA;AACN;;;AC/TO,SAAS,oBAAoB,WAAW,WAAW;AACxD,UAAQ,UAAU;AAAA,SACX,KAAK;AACR,aAAO;AAAA,SAEJ,KAAK;AACR,aAAO,SAAS,UAAU,OAAO,EAAE;AAAA,SAEhC,KAAK;AACR,aAAO,WAAW,UAAU,KAAK;AAAA,SAE9B,KAAK;AAAA,SACL,KAAK;AAAA,SACL,KAAK;AACR,aAAO,UAAU;AAAA,SAEd,KAAK;AACR,aAAO,UAAU,OAAO;AAAA,QAAI,CAAC,SAC3B,oBAAoB,MAAM,SAAS;AAAA,MACrC;AAAA,SAEG,KAAK;AACR,aAAO;AAAA,QACL,UAAU;AAAA,QACV,CAAC,UAAU,MAAM,KAAK;AAAA,QACtB,CAAC,UAAU,oBAAoB,MAAM,OAAO,SAAS;AAAA,MACvD;AAAA,SAEG,KAAK;AACR,aAAO,cAAc,QAAQ,cAAc,SACvC,SACA,UAAU,UAAU,KAAK;AAAA;AAEnC;;;AC7CO,SAAS,WAAW,MAAM;AAC/B,UAAQ,QAAQ,UAAU,OAAO,oBAAoB;AACrD,SAAO,SAAS,YAAY,UAAU,OAAO,+BAA+B;AAE5E,MAAI,KAAK,WAAW,GAAG;AACrB,UAAM,IAAI,aAAa,yCAAyC;AAAA,EAClE;AAEA,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,EAAE,GAAG;AACpC,QAAI,CAAC,eAAe,KAAK,WAAW,CAAC,CAAC,GAAG;AACvC,YAAM,IAAI;AAAA,QACR,6CAA6C;AAAA,MAC/C;AAAA,IACF;AAAA,EACF;AAEA,MAAI,CAAC,YAAY,KAAK,WAAW,CAAC,CAAC,GAAG;AACpC,UAAM,IAAI;AAAA,MACR,wCAAwC;AAAA,IAC1C;AAAA,EACF;AAEA,SAAO;AACT;AAOO,SAAS,oBAAoB,MAAM;AACxC,MAAI,SAAS,UAAU,SAAS,WAAW,SAAS,QAAQ;AAC1D,UAAM,IAAI,aAAa,gCAAgC,MAAM;AAAA,EAC/D;AAEA,SAAO,WAAW,IAAI;AACxB;;;AC3BO,SAAS,OAAO,MAAM;AAC3B,SACE,aAAa,IAAI,KACjB,aAAa,IAAI,KACjB,gBAAgB,IAAI,KACpB,YAAY,IAAI,KAChB,WAAW,IAAI,KACf,kBAAkB,IAAI,KACtB,WAAW,IAAI,KACf,cAAc,IAAI;AAEtB;AAYO,SAAS,aAAa,MAAM;AACjC,SAAO,WAAW,MAAM,iBAAiB;AAC3C;AAQO,SAAS,aAAa,MAAM;AACjC,SAAO,WAAW,MAAM,iBAAiB;AAC3C;AAQO,SAAS,gBAAgB,MAAM;AACpC,SAAO,WAAW,MAAM,oBAAoB;AAC9C;AAUO,SAAS,YAAY,MAAM;AAChC,SAAO,WAAW,MAAM,gBAAgB;AAC1C;AAQO,SAAS,WAAW,MAAM;AAC/B,SAAO,WAAW,MAAM,eAAe;AACzC;AAQO,SAAS,kBAAkB,MAAM;AACtC,SAAO,WAAW,MAAM,sBAAsB;AAChD;AAUO,SAAS,WAAW,MAAM;AAC/B,SAAO,WAAW,MAAM,WAAW;AACrC;AAQO,SAAS,cAAc,MAAM;AAClC,SAAO,WAAW,MAAM,cAAc;AACxC;AAYO,SAAS,YAAY,MAAM;AAChC,SACE,aAAa,IAAI,KACjB,WAAW,IAAI,KACf,kBAAkB,IAAI,KACrB,eAAe,IAAI,KAAK,YAAY,KAAK,MAAM;AAEpD;AAYO,SAAS,aAAa,MAAM;AACjC,SACE,aAAa,IAAI,KACjB,aAAa,IAAI,KACjB,gBAAgB,IAAI,KACpB,YAAY,IAAI,KAChB,WAAW,IAAI,KACd,eAAe,IAAI,KAAK,aAAa,KAAK,MAAM;AAErD;AAYO,SAAS,WAAW,MAAM;AAC/B,SAAO,aAAa,IAAI,KAAK,WAAW,IAAI;AAC9C;AAYO,SAAS,gBAAgB,MAAM;AACpC,SAAO,aAAa,IAAI,KAAK,gBAAgB,IAAI,KAAK,YAAY,IAAI;AACxE;AAcO,SAAS,eAAe,MAAM;AACnC,SAAO,gBAAgB,IAAI,KAAK,YAAY,IAAI;AAClD;AA4BO,IAAM,cAAN,MAAkB;AAAA,EACvB,YAAY,QAAQ;AAClB,WAAO,MAAM,KACX,UAAU,OAAO,YAAY,QAAQ,MAAM,yBAAyB;AACtE,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,KAAK,OAAO,eAAe;AACzB,WAAO;AAAA,EACT;AAAA,EAEA,WAAW;AACT,WAAO,MAAM,OAAO,KAAK,MAAM,IAAI;AAAA,EACrC;AAAA,EAEA,SAAS;AACP,WAAO,KAAK,SAAS;AAAA,EACvB;AACF;AAuBO,IAAM,iBAAN,MAAqB;AAAA,EAC1B,YAAY,QAAQ;AAClB,mBAAe,MAAM,KACnB;AAAA,MACE;AAAA,MACA,YAAY,QAAQ,MAAM;AAAA,IAC5B;AACF,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,KAAK,OAAO,eAAe;AACzB,WAAO;AAAA,EACT;AAAA,EAEA,WAAW;AACT,WAAO,OAAO,KAAK,MAAM,IAAI;AAAA,EAC/B;AAAA,EAEA,SAAS;AACP,WAAO,KAAK,SAAS;AAAA,EACvB;AACF;AAKO,SAAS,eAAe,MAAM;AACnC,SAAO,WAAW,IAAI,KAAK,cAAc,IAAI;AAC/C;AAYO,SAAS,eAAe,MAAM;AACnC,SAAO,OAAO,IAAI,KAAK,CAAC,cAAc,IAAI;AAC5C;AAQO,SAAS,gBAAgB,MAAM;AACpC,MAAI,MAAM;AACR,WAAO,cAAc,IAAI,IAAI,KAAK,SAAS;AAAA,EAC7C;AACF;AAKO,SAAS,YAAY,MAAM;AAChC,SACE,aAAa,IAAI,KACjB,aAAa,IAAI,KACjB,gBAAgB,IAAI,KACpB,YAAY,IAAI,KAChB,WAAW,IAAI,KACf,kBAAkB,IAAI;AAE1B;AAQO,SAAS,aAAa,MAAM;AACjC,MAAI,MAAM;AACR,QAAI,gBAAgB;AAEpB,WAAO,eAAe,aAAa,GAAG;AACpC,sBAAgB,cAAc;AAAA,IAChC;AAEA,WAAO;AAAA,EACT;AACF;AAMO,SAAS,0BAA0B,OAAO;AAC/C,SAAO,OAAO,UAAU,aAAa,MAAM,IAAI;AACjD;AACO,SAAS,mBAAmB,OAAO;AACxC,SAAO,OAAO,UAAU,aAAa,MAAM,IAAI;AACjD;AA0CO,IAAM,oBAAN,MAAwB;AAAA,EAC7B,YAAY,QAAQ;AAClB,QAAI,oBACF,mBACA,sBACA;AAEF,UAAMC,eACH,qBAAqB,OAAO,gBAAgB,QAC7C,uBAAuB,SACnB,qBACA;AACN,SAAK,OAAO,WAAW,OAAO,IAAI;AAClC,SAAK,cAAc,OAAO;AAC1B,SAAK,iBAAiB,OAAO;AAC7B,SAAK,aACF,oBAAoB,OAAO,eAAe,QAC3C,sBAAsB,SAClB,oBACA;AACN,SAAK,aAAaA;AAClB,SAAK,gBACF,uBAAuB,OAAO,kBAAkB,QACjD,yBAAyB,SACrB,uBACA,CAAC,MAAM,cAAcA,YAAW,oBAAoB,MAAM,SAAS,CAAC;AAC1E,SAAK,aAAa,SAAS,OAAO,UAAU;AAC5C,SAAK,UAAU,OAAO;AACtB,SAAK,qBACF,wBAAwB,OAAO,uBAAuB,QACvD,0BAA0B,SACtB,wBACA,CAAC;AACP,WAAO,kBAAkB,QACvB,OAAO,OAAO,mBAAmB,YACjC;AAAA,MACE;AAAA,MACA,GAAG,KAAK,4DACM,QAAQ,OAAO,cAAc;AAAA,IAC7C;AACF,WAAO,aAAa,QAClB,OAAO,OAAO,cAAc,cAC5B;AAAA,MACE;AAAA,MACA,GAAG,KAAK;AAAA,IACV;AAEF,QAAI,OAAO,cAAc;AACvB,MAAC,OAAO,OAAO,eAAe,cAC5B,OAAO,OAAO,iBAAiB,cAC/B;AAAA,QACE;AAAA,QACA,GAAG,KAAK;AAAA,MACV;AAAA,IACJ;AAAA,EACF;AAAA,EAEA,KAAK,OAAO,eAAe;AACzB,WAAO;AAAA,EACT;AAAA,EAEA,WAAW;AACT,WAAO;AAAA,MACL,MAAM,KAAK;AAAA,MACX,aAAa,KAAK;AAAA,MAClB,gBAAgB,KAAK;AAAA,MACrB,WAAW,KAAK;AAAA,MAChB,YAAY,KAAK;AAAA,MACjB,cAAc,KAAK;AAAA,MACnB,YAAY,KAAK;AAAA,MACjB,SAAS,KAAK;AAAA,MACd,mBAAmB,KAAK;AAAA,IAC1B;AAAA,EACF;AAAA,EAEA,WAAW;AACT,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,SAAS;AACP,WAAO,KAAK,SAAS;AAAA,EACvB;AACF;AA0CO,IAAM,oBAAN,MAAwB;AAAA,EAC7B,YAAY,QAAQ;AAClB,QAAI;AAEJ,SAAK,OAAO,WAAW,OAAO,IAAI;AAClC,SAAK,cAAc,OAAO;AAC1B,SAAK,WAAW,OAAO;AACvB,SAAK,aAAa,SAAS,OAAO,UAAU;AAC5C,SAAK,UAAU,OAAO;AACtB,SAAK,qBACF,yBAAyB,OAAO,uBAAuB,QACxD,2BAA2B,SACvB,yBACA,CAAC;AAEP,SAAK,UAAU,MAAM,eAAe,MAAM;AAE1C,SAAK,cAAc,MAAM,iBAAiB,MAAM;AAEhD,WAAO,YAAY,QACjB,OAAO,OAAO,aAAa,cAC3B;AAAA,MACE;AAAA,MACA,GAAG,KAAK,wDACM,QAAQ,OAAO,QAAQ;AAAA,IACvC;AAAA,EACJ;AAAA,EAEA,KAAK,OAAO,eAAe;AACzB,WAAO;AAAA,EACT;AAAA,EAEA,YAAY;AACV,QAAI,OAAO,KAAK,YAAY,YAAY;AACtC,WAAK,UAAU,KAAK,QAAQ;AAAA,IAC9B;AAEA,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,gBAAgB;AACd,QAAI,OAAO,KAAK,gBAAgB,YAAY;AAC1C,WAAK,cAAc,KAAK,YAAY;AAAA,IACtC;AAEA,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,WAAW;AACT,WAAO;AAAA,MACL,MAAM,KAAK;AAAA,MACX,aAAa,KAAK;AAAA,MAClB,YAAY,KAAK,cAAc;AAAA,MAC/B,QAAQ,qBAAqB,KAAK,UAAU,CAAC;AAAA,MAC7C,UAAU,KAAK;AAAA,MACf,YAAY,KAAK;AAAA,MACjB,SAAS,KAAK;AAAA,MACd,mBAAmB,KAAK;AAAA,IAC1B;AAAA,EACF;AAAA,EAEA,WAAW;AACT,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,SAAS;AACP,WAAO,KAAK,SAAS;AAAA,EACvB;AACF;AAEA,SAAS,iBAAiB,QAAQ;AAChC,MAAI;AAEJ,QAAM,aAAa;AAAA,KAChB,qBAAqB,OAAO,gBAAgB,QAC3C,uBAAuB,SACrB,qBACA,CAAC;AAAA,EACP;AACA,QAAM,QAAQ,UAAU,KACtB;AAAA,IACE;AAAA,IACA,GAAG,OAAO;AAAA,EACZ;AACF,SAAO;AACT;AAEA,SAAS,eAAe,QAAQ;AAC9B,QAAM,WAAW,mBAAmB,OAAO,MAAM;AACjD,aAAW,QAAQ,KACjB;AAAA,IACE;AAAA,IACA,GAAG,OAAO;AAAA,EACZ;AACF,SAAO,SAAS,UAAU,CAAC,aAAa,cAAc;AACpD,QAAI;AAEJ,eAAW,WAAW,KACpB;AAAA,MACE;AAAA,MACA,GAAG,OAAO,QAAQ;AAAA,IACpB;AACF,gBAAY,WAAW,QACrB,OAAO,YAAY,YAAY,cAC/B;AAAA,MACE;AAAA,MACA,GAAG,OAAO,QAAQ,qEACM,QAAQ,YAAY,OAAO;AAAA,IACrD;AACF,UAAM,cACH,oBAAoB,YAAY,UAAU,QAC3C,sBAAsB,SAClB,oBACA,CAAC;AACP,eAAW,UAAU,KACnB;AAAA,MACE;AAAA,MACA,GAAG,OAAO,QAAQ;AAAA,IACpB;AACF,WAAO;AAAA,MACL,MAAM,WAAW,SAAS;AAAA,MAC1B,aAAa,YAAY;AAAA,MACzB,MAAM,YAAY;AAAA,MAClB,MAAM,gBAAgB,UAAU;AAAA,MAChC,SAAS,YAAY;AAAA,MACrB,WAAW,YAAY;AAAA,MACvB,mBAAmB,YAAY;AAAA,MAC/B,YAAY,SAAS,YAAY,UAAU;AAAA,MAC3C,SAAS,YAAY;AAAA,IACvB;AAAA,EACF,CAAC;AACH;AAEO,SAAS,gBAAgB,QAAQ;AACtC,SAAO,OAAO,QAAQ,MAAM,EAAE,IAAI,CAAC,CAAC,SAAS,SAAS,OAAO;AAAA,IAC3D,MAAM,WAAW,OAAO;AAAA,IACxB,aAAa,UAAU;AAAA,IACvB,MAAM,UAAU;AAAA,IAChB,cAAc,UAAU;AAAA,IACxB,mBAAmB,UAAU;AAAA,IAC7B,YAAY,SAAS,UAAU,UAAU;AAAA,IACzC,SAAS,UAAU;AAAA,EACrB,EAAE;AACJ;AAEA,SAAS,WAAW,KAAK;AACvB,SAAO,aAAa,GAAG,KAAK,CAAC,MAAM,QAAQ,GAAG;AAChD;AAEA,SAAS,qBAAqB,QAAQ;AACpC,SAAO,SAAS,QAAQ,CAAC,WAAW;AAAA,IAClC,aAAa,MAAM;AAAA,IACnB,MAAM,MAAM;AAAA,IACZ,MAAM,iBAAiB,MAAM,IAAI;AAAA,IACjC,SAAS,MAAM;AAAA,IACf,WAAW,MAAM;AAAA,IACjB,mBAAmB,MAAM;AAAA,IACzB,YAAY,MAAM;AAAA,IAClB,SAAS,MAAM;AAAA,EACjB,EAAE;AACJ;AAKO,SAAS,iBAAiB,MAAM;AACrC,SAAO;AAAA,IACL;AAAA,IACA,CAAC,QAAQ,IAAI;AAAA,IACb,CAAC,SAAS;AAAA,MACR,aAAa,IAAI;AAAA,MACjB,MAAM,IAAI;AAAA,MACV,cAAc,IAAI;AAAA,MAClB,mBAAmB,IAAI;AAAA,MACvB,YAAY,IAAI;AAAA,MAChB,SAAS,IAAI;AAAA,IACf;AAAA,EACF;AACF;AACO,SAAS,mBAAmB,KAAK;AACtC,SAAO,cAAc,IAAI,IAAI,KAAK,IAAI,iBAAiB;AACzD;AAqBO,IAAM,uBAAN,MAA2B;AAAA,EAChC,YAAY,QAAQ;AAClB,QAAI;AAEJ,SAAK,OAAO,WAAW,OAAO,IAAI;AAClC,SAAK,cAAc,OAAO;AAC1B,SAAK,cAAc,OAAO;AAC1B,SAAK,aAAa,SAAS,OAAO,UAAU;AAC5C,SAAK,UAAU,OAAO;AACtB,SAAK,qBACF,yBAAyB,OAAO,uBAAuB,QACxD,2BAA2B,SACvB,yBACA,CAAC;AACP,SAAK,UAAU,eAAe,KAAK,QAAW,MAAM;AACpD,SAAK,cAAc,iBAAiB,KAAK,QAAW,MAAM;AAC1D,WAAO,eAAe,QACpB,OAAO,OAAO,gBAAgB,cAC9B;AAAA,MACE;AAAA,MACA,GAAG,KAAK,2DACM,QAAQ,OAAO,WAAW;AAAA,IAC1C;AAAA,EACJ;AAAA,EAEA,KAAK,OAAO,eAAe;AACzB,WAAO;AAAA,EACT;AAAA,EAEA,YAAY;AACV,QAAI,OAAO,KAAK,YAAY,YAAY;AACtC,WAAK,UAAU,KAAK,QAAQ;AAAA,IAC9B;AAEA,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,gBAAgB;AACd,QAAI,OAAO,KAAK,gBAAgB,YAAY;AAC1C,WAAK,cAAc,KAAK,YAAY;AAAA,IACtC;AAEA,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,WAAW;AACT,WAAO;AAAA,MACL,MAAM,KAAK;AAAA,MACX,aAAa,KAAK;AAAA,MAClB,YAAY,KAAK,cAAc;AAAA,MAC/B,QAAQ,qBAAqB,KAAK,UAAU,CAAC;AAAA,MAC7C,aAAa,KAAK;AAAA,MAClB,YAAY,KAAK;AAAA,MACjB,SAAS,KAAK;AAAA,MACd,mBAAmB,KAAK;AAAA,IAC1B;AAAA,EACF;AAAA,EAEA,WAAW;AACT,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,SAAS;AACP,WAAO,KAAK,SAAS;AAAA,EACvB;AACF;AA0BO,IAAM,mBAAN,MAAuB;AAAA,EAC5B,YAAY,QAAQ;AAClB,QAAI;AAEJ,SAAK,OAAO,WAAW,OAAO,IAAI;AAClC,SAAK,cAAc,OAAO;AAC1B,SAAK,cAAc,OAAO;AAC1B,SAAK,aAAa,SAAS,OAAO,UAAU;AAC5C,SAAK,UAAU,OAAO;AACtB,SAAK,qBACF,yBAAyB,OAAO,uBAAuB,QACxD,2BAA2B,SACvB,yBACA,CAAC;AACP,SAAK,SAAS,YAAY,KAAK,QAAW,MAAM;AAChD,WAAO,eAAe,QACpB,OAAO,OAAO,gBAAgB,cAC9B;AAAA,MACE;AAAA,MACA,GAAG,KAAK,2DACM,QAAQ,OAAO,WAAW;AAAA,IAC1C;AAAA,EACJ;AAAA,EAEA,KAAK,OAAO,eAAe;AACzB,WAAO;AAAA,EACT;AAAA,EAEA,WAAW;AACT,QAAI,OAAO,KAAK,WAAW,YAAY;AACrC,WAAK,SAAS,KAAK,OAAO;AAAA,IAC5B;AAEA,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,WAAW;AACT,WAAO;AAAA,MACL,MAAM,KAAK;AAAA,MACX,aAAa,KAAK;AAAA,MAClB,OAAO,KAAK,SAAS;AAAA,MACrB,aAAa,KAAK;AAAA,MAClB,YAAY,KAAK;AAAA,MACjB,SAAS,KAAK;AAAA,MACd,mBAAmB,KAAK;AAAA,IAC1B;AAAA,EACF;AAAA,EAEA,WAAW;AACT,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,SAAS;AACP,WAAO,KAAK,SAAS;AAAA,EACvB;AACF;AAEA,SAAS,YAAY,QAAQ;AAC3B,QAAM,QAAQ,0BAA0B,OAAO,KAAK;AACpD,QAAM,QAAQ,KAAK,KACjB;AAAA,IACE;AAAA,IACA,mFAAmF,OAAO;AAAA,EAC5F;AACF,SAAO;AACT;AAyBO,IAAM,kBAAN,MAAsB;AAAA,EAE3B,YAAY,QAAQ;AAClB,QAAI;AAEJ,SAAK,OAAO,WAAW,OAAO,IAAI;AAClC,SAAK,cAAc,OAAO;AAC1B,SAAK,aAAa,SAAS,OAAO,UAAU;AAC5C,SAAK,UAAU,OAAO;AACtB,SAAK,qBACF,yBAAyB,OAAO,uBAAuB,QACxD,2BAA2B,SACvB,yBACA,CAAC;AACP,SAAK,UAAU,iBAAiB,KAAK,MAAM,OAAO,MAAM;AACxD,SAAK,eAAe,IAAI;AAAA,MACtB,KAAK,QAAQ,IAAI,CAAC,cAAc,CAAC,UAAU,OAAO,SAAS,CAAC;AAAA,IAC9D;AACA,SAAK,cAAc,OAAO,KAAK,SAAS,CAAC,UAAU,MAAM,IAAI;AAAA,EAC/D;AAAA,EAEA,KAAK,OAAO,eAAe;AACzB,WAAO;AAAA,EACT;AAAA,EAEA,YAAY;AACV,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,SAAS,MAAM;AACb,WAAO,KAAK,YAAY;AAAA,EAC1B;AAAA,EAEA,UAAU,aAAa;AACrB,UAAM,YAAY,KAAK,aAAa,IAAI,WAAW;AAEnD,QAAI,cAAc,QAAW;AAC3B,YAAM,IAAI;AAAA,QACR,SAAS,KAAK,iCAAiC,QAAQ,WAAW;AAAA,MACpE;AAAA,IACF;AAEA,WAAO,UAAU;AAAA,EACnB;AAAA,EAEA,WAAW,YACX;AACE,QAAI,OAAO,eAAe,UAAU;AAClC,YAAM,WAAW,QAAQ,UAAU;AACnC,YAAM,IAAI;AAAA,QACR,SAAS,KAAK,4CAA4C,cACxD,oBAAoB,MAAM,QAAQ;AAAA,MACtC;AAAA,IACF;AAEA,UAAM,YAAY,KAAK,SAAS,UAAU;AAE1C,QAAI,aAAa,MAAM;AACrB,YAAM,IAAI;AAAA,QACR,UAAU,kCAAkC,KAAK,gBAC/C,oBAAoB,MAAM,UAAU;AAAA,MACxC;AAAA,IACF;AAEA,WAAO,UAAU;AAAA,EACnB;AAAA,EAEA,aAAa,WAAW,YACxB;AAEE,QAAI,UAAU,SAAS,KAAK,MAAM;AAChC,YAAM,WAAW,MAAM,SAAS;AAChC,YAAM,IAAI;AAAA,QACR,SAAS,KAAK,0CAA0C,cACtD,oBAAoB,MAAM,QAAQ;AAAA,QACpC;AAAA,UACE,OAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAEA,UAAM,YAAY,KAAK,SAAS,UAAU,KAAK;AAE/C,QAAI,aAAa,MAAM;AACrB,YAAM,WAAW,MAAM,SAAS;AAChC,YAAM,IAAI;AAAA,QACR,UAAU,gCAAgC,KAAK,gBAC7C,oBAAoB,MAAM,QAAQ;AAAA,QACpC;AAAA,UACE,OAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAEA,WAAO,UAAU;AAAA,EACnB;AAAA,EAEA,WAAW;AACT,UAAM,SAAS;AAAA,MACb,KAAK,UAAU;AAAA,MACf,CAAC,UAAU,MAAM;AAAA,MACjB,CAAC,WAAW;AAAA,QACV,aAAa,MAAM;AAAA,QACnB,OAAO,MAAM;AAAA,QACb,mBAAmB,MAAM;AAAA,QACzB,YAAY,MAAM;AAAA,QAClB,SAAS,MAAM;AAAA,MACjB;AAAA,IACF;AACA,WAAO;AAAA,MACL,MAAM,KAAK;AAAA,MACX,aAAa,KAAK;AAAA,MAClB;AAAA,MACA,YAAY,KAAK;AAAA,MACjB,SAAS,KAAK;AAAA,MACd,mBAAmB,KAAK;AAAA,IAC1B;AAAA,EACF;AAAA,EAEA,WAAW;AACT,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,SAAS;AACP,WAAO,KAAK,SAAS;AAAA,EACvB;AACF;AAEA,SAAS,oBAAoB,UAAU,iBAAiB;AACtD,QAAM,WAAW,SAAS,UAAU,EAAE,IAAI,CAAC,UAAU,MAAM,IAAI;AAC/D,QAAM,kBAAkB,eAAe,iBAAiB,QAAQ;AAChE,SAAO,WAAW,kBAAkB,eAAe;AACrD;AAEA,SAAS,iBAAiB,UAAU,UAAU;AAC5C,aAAW,QAAQ,KACjB;AAAA,IACE;AAAA,IACA,GAAG;AAAA,EACL;AACF,SAAO,OAAO,QAAQ,QAAQ,EAAE,IAAI,CAAC,CAAC,WAAW,WAAW,MAAM;AAChE,eAAW,WAAW,KACpB;AAAA,MACE;AAAA,MACA,GAAG,YAAY,gGAC8B,QAAQ,WAAW;AAAA,IAClE;AACF,WAAO;AAAA,MACL,MAAM,oBAAoB,SAAS;AAAA,MACnC,aAAa,YAAY;AAAA,MACzB,OAAO,YAAY,UAAU,SAAY,YAAY,QAAQ;AAAA,MAC7D,mBAAmB,YAAY;AAAA,MAC/B,YAAY,SAAS,YAAY,UAAU;AAAA,MAC3C,SAAS,YAAY;AAAA,IACvB;AAAA,EACF,CAAC;AACH;AAuBO,IAAM,yBAAN,MAA6B;AAAA,EAClC,YAAY,QAAQ;AAClB,QAAI;AAEJ,SAAK,OAAO,WAAW,OAAO,IAAI;AAClC,SAAK,cAAc,OAAO;AAC1B,SAAK,aAAa,SAAS,OAAO,UAAU;AAC5C,SAAK,UAAU,OAAO;AACtB,SAAK,qBACF,yBAAyB,OAAO,uBAAuB,QACxD,2BAA2B,SACvB,yBACA,CAAC;AACP,SAAK,UAAU,oBAAoB,KAAK,QAAW,MAAM;AAAA,EAC3D;AAAA,EAEA,KAAK,OAAO,eAAe;AACzB,WAAO;AAAA,EACT;AAAA,EAEA,YAAY;AACV,QAAI,OAAO,KAAK,YAAY,YAAY;AACtC,WAAK,UAAU,KAAK,QAAQ;AAAA,IAC9B;AAEA,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,WAAW;AACT,UAAM,SAAS,SAAS,KAAK,UAAU,GAAG,CAAC,WAAW;AAAA,MACpD,aAAa,MAAM;AAAA,MACnB,MAAM,MAAM;AAAA,MACZ,cAAc,MAAM;AAAA,MACpB,mBAAmB,MAAM;AAAA,MACzB,YAAY,MAAM;AAAA,MAClB,SAAS,MAAM;AAAA,IACjB,EAAE;AACF,WAAO;AAAA,MACL,MAAM,KAAK;AAAA,MACX,aAAa,KAAK;AAAA,MAClB;AAAA,MACA,YAAY,KAAK;AAAA,MACjB,SAAS,KAAK;AAAA,MACd,mBAAmB,KAAK;AAAA,IAC1B;AAAA,EACF;AAAA,EAEA,WAAW;AACT,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,SAAS;AACP,WAAO,KAAK,SAAS;AAAA,EACvB;AACF;AAEA,SAAS,oBAAoB,QAAQ;AACnC,QAAM,WAAW,mBAAmB,OAAO,MAAM;AACjD,aAAW,QAAQ,KACjB;AAAA,IACE;AAAA,IACA,GAAG,OAAO;AAAA,EACZ;AACF,SAAO,SAAS,UAAU,CAAC,aAAa,cAAc;AACpD,MAAE,aAAa,gBACb;AAAA,MACE;AAAA,MACA,GAAG,OAAO,QAAQ;AAAA,IACpB;AACF,WAAO;AAAA,MACL,MAAM,WAAW,SAAS;AAAA,MAC1B,aAAa,YAAY;AAAA,MACzB,MAAM,YAAY;AAAA,MAClB,cAAc,YAAY;AAAA,MAC1B,mBAAmB,YAAY;AAAA,MAC/B,YAAY,SAAS,YAAY,UAAU;AAAA,MAC3C,SAAS,YAAY;AAAA,IACvB;AAAA,EACF,CAAC;AACH;AAEO,SAAS,qBAAqB,OAAO;AAC1C,SAAO,cAAc,MAAM,IAAI,KAAK,MAAM,iBAAiB;AAC7D;;;AC7oCO,SAAS,YAAY,OAAO,OAAO;AAExC,MAAI,UAAU,OAAO;AACnB,WAAO;AAAA,EACT;AAEA,MAAI,cAAc,KAAK,KAAK,cAAc,KAAK,GAAG;AAChD,WAAO,YAAY,MAAM,QAAQ,MAAM,MAAM;AAAA,EAC/C;AAEA,MAAI,WAAW,KAAK,KAAK,WAAW,KAAK,GAAG;AAC1C,WAAO,YAAY,MAAM,QAAQ,MAAM,MAAM;AAAA,EAC/C;AAEA,SAAO;AACT;AAMO,SAAS,gBAAgB,QAAQ,cAAc,WAAW;AAE/D,MAAI,iBAAiB,WAAW;AAC9B,WAAO;AAAA,EACT;AAEA,MAAI,cAAc,SAAS,GAAG;AAC5B,QAAI,cAAc,YAAY,GAAG;AAC/B,aAAO,gBAAgB,QAAQ,aAAa,QAAQ,UAAU,MAAM;AAAA,IACtE;AAEA,WAAO;AAAA,EACT;AAEA,MAAI,cAAc,YAAY,GAAG;AAE/B,WAAO,gBAAgB,QAAQ,aAAa,QAAQ,SAAS;AAAA,EAC/D;AAEA,MAAI,WAAW,SAAS,GAAG;AACzB,QAAI,WAAW,YAAY,GAAG;AAC5B,aAAO,gBAAgB,QAAQ,aAAa,QAAQ,UAAU,MAAM;AAAA,IACtE;AAEA,WAAO;AAAA,EACT;AAEA,MAAI,WAAW,YAAY,GAAG;AAE5B,WAAO;AAAA,EACT;AAGA,SACE,eAAe,SAAS,MACvB,gBAAgB,YAAY,KAAK,aAAa,YAAY,MAC3D,OAAO,UAAU,WAAW,YAAY;AAE5C;AAWO,SAAS,eAAe,QAAQ,OAAO,OAAO;AAEnD,MAAI,UAAU,OAAO;AACnB,WAAO;AAAA,EACT;AAEA,MAAI,eAAe,KAAK,GAAG;AACzB,QAAI,eAAe,KAAK,GAAG;AAGzB,aAAO,OACJ,iBAAiB,KAAK,EACtB,KAAK,CAAC,SAAS,OAAO,UAAU,OAAO,IAAI,CAAC;AAAA,IACjD;AAEA,WAAO,OAAO,UAAU,OAAO,KAAK;AAAA,EACtC;AAEA,MAAI,eAAe,KAAK,GAAG;AAEzB,WAAO,OAAO,UAAU,OAAO,KAAK;AAAA,EACtC;AAEA,SAAO;AACT;;;AC9FO,IAAM,kBAAkB;AAMxB,IAAM,kBAAkB;AACxB,IAAM,aAAa,IAAI,kBAAkB;AAAA,EAC9C,MAAM;AAAA,EACN,aACE;AAAA,EAEF,UAAU,aAAa;AACrB,UAAM,eAAe,gBAAgB,WAAW;AAEhD,QAAI,OAAO,iBAAiB,WAAW;AACrC,aAAO,eAAe,IAAI;AAAA,IAC5B;AAEA,QAAI,MAAM;AAEV,QAAI,OAAO,iBAAiB,YAAY,iBAAiB,IAAI;AAC3D,YAAM,OAAO,YAAY;AAAA,IAC3B;AAEA,QAAI,OAAO,QAAQ,YAAY,CAAC,OAAO,UAAU,GAAG,GAAG;AACrD,YAAM,IAAI;AAAA,QACR,2CAA2C,QAAQ,YAAY;AAAA,MACjE;AAAA,IACF;AAEA,QAAI,MAAM,mBAAmB,MAAM,iBAAiB;AAClD,YAAM,IAAI;AAAA,QACR,2DACE,QAAQ,YAAY;AAAA,MACxB;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,WAAW,YAAY;AACrB,QAAI,OAAO,eAAe,YAAY,CAAC,OAAO,UAAU,UAAU,GAAG;AACnE,YAAM,IAAI;AAAA,QACR,2CAA2C,QAAQ,UAAU;AAAA,MAC/D;AAAA,IACF;AAEA,QAAI,aAAa,mBAAmB,aAAa,iBAAiB;AAChE,YAAM,IAAI;AAAA,QACR,yDAAyD;AAAA,MAC3D;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,aAAa,WAAW;AACtB,QAAI,UAAU,SAAS,KAAK,KAAK;AAC/B,YAAM,IAAI;AAAA,QACR,2CAA2C,MAAM,SAAS;AAAA,QAC1D;AAAA,UACE,OAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAEA,UAAM,MAAM,SAAS,UAAU,OAAO,EAAE;AAExC,QAAI,MAAM,mBAAmB,MAAM,iBAAiB;AAClD,YAAM,IAAI;AAAA,QACR,yDAAyD,UAAU;AAAA,QACnE;AAAA,UACE,OAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AACF,CAAC;AACM,IAAM,eAAe,IAAI,kBAAkB;AAAA,EAChD,MAAM;AAAA,EACN,aACE;AAAA,EAEF,UAAU,aAAa;AACrB,UAAM,eAAe,gBAAgB,WAAW;AAEhD,QAAI,OAAO,iBAAiB,WAAW;AACrC,aAAO,eAAe,IAAI;AAAA,IAC5B;AAEA,QAAI,MAAM;AAEV,QAAI,OAAO,iBAAiB,YAAY,iBAAiB,IAAI;AAC3D,YAAM,OAAO,YAAY;AAAA,IAC3B;AAEA,QAAI,OAAO,QAAQ,YAAY,CAAC,OAAO,SAAS,GAAG,GAAG;AACpD,YAAM,IAAI;AAAA,QACR,6CAA6C,QAAQ,YAAY;AAAA,MACnE;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,WAAW,YAAY;AACrB,QAAI,OAAO,eAAe,YAAY,CAAC,OAAO,SAAS,UAAU,GAAG;AAClE,YAAM,IAAI;AAAA,QACR,6CAA6C,QAAQ,UAAU;AAAA,MACjE;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,aAAa,WAAW;AACtB,QAAI,UAAU,SAAS,KAAK,SAAS,UAAU,SAAS,KAAK,KAAK;AAChE,YAAM,IAAI;AAAA,QACR,6CAA6C,MAAM,SAAS;AAAA,QAC5D;AAAA,MACF;AAAA,IACF;AAEA,WAAO,WAAW,UAAU,KAAK;AAAA,EACnC;AACF,CAAC;AACM,IAAM,gBAAgB,IAAI,kBAAkB;AAAA,EACjD,MAAM;AAAA,EACN,aACE;AAAA,EAEF,UAAU,aAAa;AACrB,UAAM,eAAe,gBAAgB,WAAW;AAGhD,QAAI,OAAO,iBAAiB,UAAU;AACpC,aAAO;AAAA,IACT;AAEA,QAAI,OAAO,iBAAiB,WAAW;AACrC,aAAO,eAAe,SAAS;AAAA,IACjC;AAEA,QAAI,OAAO,iBAAiB,YAAY,OAAO,SAAS,YAAY,GAAG;AACrE,aAAO,aAAa,SAAS;AAAA,IAC/B;AAEA,UAAM,IAAI;AAAA,MACR,kCAAkC,QAAQ,WAAW;AAAA,IACvD;AAAA,EACF;AAAA,EAEA,WAAW,YAAY;AACrB,QAAI,OAAO,eAAe,UAAU;AAClC,YAAM,IAAI;AAAA,QACR,+CAA+C,QAAQ,UAAU;AAAA,MACnE;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,aAAa,WAAW;AACtB,QAAI,UAAU,SAAS,KAAK,QAAQ;AAClC,YAAM,IAAI;AAAA,QACR,+CAA+C,MAAM,SAAS;AAAA,QAC9D;AAAA,UACE,OAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAEA,WAAO,UAAU;AAAA,EACnB;AACF,CAAC;AACM,IAAM,iBAAiB,IAAI,kBAAkB;AAAA,EAClD,MAAM;AAAA,EACN,aAAa;AAAA,EAEb,UAAU,aAAa;AACrB,UAAM,eAAe,gBAAgB,WAAW;AAEhD,QAAI,OAAO,iBAAiB,WAAW;AACrC,aAAO;AAAA,IACT;AAEA,QAAI,OAAO,SAAS,YAAY,GAAG;AACjC,aAAO,iBAAiB;AAAA,IAC1B;AAEA,UAAM,IAAI;AAAA,MACR,iDAAiD,QAAQ,YAAY;AAAA,IACvE;AAAA,EACF;AAAA,EAEA,WAAW,YAAY;AACrB,QAAI,OAAO,eAAe,WAAW;AACnC,YAAM,IAAI;AAAA,QACR,iDAAiD,QAAQ,UAAU;AAAA,MACrE;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,aAAa,WAAW;AACtB,QAAI,UAAU,SAAS,KAAK,SAAS;AACnC,YAAM,IAAI;AAAA,QACR,iDAAiD,MAAM,SAAS;AAAA,QAChE;AAAA,UACE,OAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAEA,WAAO,UAAU;AAAA,EACnB;AACF,CAAC;AACM,IAAM,YAAY,IAAI,kBAAkB;AAAA,EAC7C,MAAM;AAAA,EACN,aACE;AAAA,EAEF,UAAU,aAAa;AACrB,UAAM,eAAe,gBAAgB,WAAW;AAEhD,QAAI,OAAO,iBAAiB,UAAU;AACpC,aAAO;AAAA,IACT;AAEA,QAAI,OAAO,UAAU,YAAY,GAAG;AAClC,aAAO,OAAO,YAAY;AAAA,IAC5B;AAEA,UAAM,IAAI;AAAA,MACR,8BAA8B,QAAQ,WAAW;AAAA,IACnD;AAAA,EACF;AAAA,EAEA,WAAW,YAAY;AACrB,QAAI,OAAO,eAAe,UAAU;AAClC,aAAO;AAAA,IACT;AAEA,QAAI,OAAO,eAAe,YAAY,OAAO,UAAU,UAAU,GAAG;AAClE,aAAO,WAAW,SAAS;AAAA,IAC7B;AAEA,UAAM,IAAI,aAAa,8BAA8B,QAAQ,UAAU,GAAG;AAAA,EAC5E;AAAA,EAEA,aAAa,WAAW;AACtB,QAAI,UAAU,SAAS,KAAK,UAAU,UAAU,SAAS,KAAK,KAAK;AACjE,YAAM,IAAI;AAAA,QACR,6DACE,MAAM,SAAS;AAAA,QACjB;AAAA,UACE,OAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAEA,WAAO,UAAU;AAAA,EACnB;AACF,CAAC;AACM,IAAM,uBAAuB,OAAO,OAAO;AAAA,EAChD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AACM,SAAS,sBAAsB,MAAM;AAC1C,SAAO,qBAAqB,KAAK,CAAC,EAAE,KAAK,MAAM,KAAK,SAAS,IAAI;AACnE;AAIA,SAAS,gBAAgB,aAAa;AACpC,MAAI,aAAa,WAAW,GAAG;AAC7B,QAAI,OAAO,YAAY,YAAY,YAAY;AAC7C,YAAM,gBAAgB,YAAY,QAAQ;AAE1C,UAAI,CAAC,aAAa,aAAa,GAAG;AAChC,eAAO;AAAA,MACT;AAAA,IACF;AAEA,QAAI,OAAO,YAAY,WAAW,YAAY;AAC5C,aAAO,YAAY,OAAO;AAAA,IAC5B;AAAA,EACF;AAEA,SAAO;AACT;;;ACnSO,SAAS,YAAY,WAAW;AACrC,SAAO,WAAW,WAAW,gBAAgB;AAC/C;AAwBO,IAAM,mBAAN,MAAuB;AAAA,EAC5B,YAAY,QAAQ;AAClB,QAAI,sBAAsB;AAE1B,SAAK,OAAO,WAAW,OAAO,IAAI;AAClC,SAAK,cAAc,OAAO;AAC1B,SAAK,YAAY,OAAO;AACxB,SAAK,gBACF,uBAAuB,OAAO,kBAAkB,QACjD,yBAAyB,SACrB,uBACA;AACN,SAAK,aAAa,SAAS,OAAO,UAAU;AAC5C,SAAK,UAAU,OAAO;AACtB,UAAM,QAAQ,OAAO,SAAS,KAC5B,UAAU,OAAO,IAAI,OAAO,kCAAkC;AAChE,UAAM,QACH,eAAe,OAAO,UAAU,QAAQ,iBAAiB,SACtD,eACA,CAAC;AACP,IAAC,aAAa,IAAI,KAAK,CAAC,MAAM,QAAQ,IAAI,KACxC;AAAA,MACE;AAAA,MACA,IAAI,OAAO;AAAA,IACb;AACF,SAAK,OAAO,gBAAgB,IAAI;AAAA,EAClC;AAAA,EAEA,KAAK,OAAO,eAAe;AACzB,WAAO;AAAA,EACT;AAAA,EAEA,WAAW;AACT,WAAO;AAAA,MACL,MAAM,KAAK;AAAA,MACX,aAAa,KAAK;AAAA,MAClB,WAAW,KAAK;AAAA,MAChB,MAAM,iBAAiB,KAAK,IAAI;AAAA,MAChC,cAAc,KAAK;AAAA,MACnB,YAAY,KAAK;AAAA,MACjB,SAAS,KAAK;AAAA,IAChB;AAAA,EACF;AAAA,EAEA,WAAW;AACT,WAAO,MAAM,KAAK;AAAA,EACpB;AAAA,EAEA,SAAS;AACP,WAAO,KAAK,SAAS;AAAA,EACvB;AACF;AAKO,IAAM,0BAA0B,IAAI,iBAAiB;AAAA,EAC1D,MAAM;AAAA,EACN,aACE;AAAA,EACF,WAAW;AAAA,IACT,kBAAkB;AAAA,IAClB,kBAAkB;AAAA,IAClB,kBAAkB;AAAA,EACpB;AAAA,EACA,MAAM;AAAA,IACJ,IAAI;AAAA,MACF,MAAM,IAAI,eAAe,cAAc;AAAA,MACvC,aAAa;AAAA,IACf;AAAA,EACF;AACF,CAAC;AAKM,IAAM,uBAAuB,IAAI,iBAAiB;AAAA,EACvD,MAAM;AAAA,EACN,aACE;AAAA,EACF,WAAW;AAAA,IACT,kBAAkB;AAAA,IAClB,kBAAkB;AAAA,IAClB,kBAAkB;AAAA,EACpB;AAAA,EACA,MAAM;AAAA,IACJ,IAAI;AAAA,MACF,MAAM,IAAI,eAAe,cAAc;AAAA,MACvC,aAAa;AAAA,IACf;AAAA,EACF;AACF,CAAC;AAKM,IAAM,6BAA6B;AAKnC,IAAM,6BAA6B,IAAI,iBAAiB;AAAA,EAC7D,MAAM;AAAA,EACN,aAAa;AAAA,EACb,WAAW;AAAA,IACT,kBAAkB;AAAA,IAClB,kBAAkB;AAAA,IAClB,kBAAkB;AAAA,IAClB,kBAAkB;AAAA,EACpB;AAAA,EACA,MAAM;AAAA,IACJ,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,aACE;AAAA,MACF,cAAc;AAAA,IAChB;AAAA,EACF;AACF,CAAC;AAKM,IAAM,8BAA8B,IAAI,iBAAiB;AAAA,EAC9D,MAAM;AAAA,EACN,aAAa;AAAA,EACb,WAAW,CAAC,kBAAkB,MAAM;AAAA,EACpC,MAAM;AAAA,IACJ,KAAK;AAAA,MACH,MAAM,IAAI,eAAe,aAAa;AAAA,MACtC,aAAa;AAAA,IACf;AAAA,EACF;AACF,CAAC;AAKM,IAAM,sBAAsB,OAAO,OAAO;AAAA,EAC/C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AACM,SAAS,qBAAqB,WAAW;AAC9C,SAAO,oBAAoB,KAAK,CAAC,EAAE,KAAK,MAAM,SAAS,UAAU,IAAI;AACvE;;;AC5KO,SAAS,iBAAiB,eAAe;AAC9C,SACE,OAAO,kBAAkB,YACzB,QAAQ,kBAAkB,QAAQ,kBAAkB,SAChD,SACA,cAAc,OAAO,eAAe;AAE5C;;;ACWO,SAAS,aAAa,OAAO,MAAM;AACxC,MAAI,cAAc,IAAI,GAAG;AACvB,UAAM,WAAW,aAAa,OAAO,KAAK,MAAM;AAEhD,SACG,aAAa,QAAQ,aAAa,SAAS,SAAS,SAAS,UAC9D,KAAK,MACL;AACA,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AAEA,MAAI,UAAU,MAAM;AAClB,WAAO;AAAA,MACL,MAAM,KAAK;AAAA,IACb;AAAA,EACF;AAEA,MAAI,UAAU,QAAW;AACvB,WAAO;AAAA,EACT;AAGA,MAAI,WAAW,IAAI,GAAG;AACpB,UAAM,WAAW,KAAK;AAEtB,QAAI,iBAAiB,KAAK,GAAG;AAC3B,YAAM,cAAc,CAAC;AAErB,iBAAW,QAAQ,OAAO;AACxB,cAAM,WAAW,aAAa,MAAM,QAAQ;AAE5C,YAAI,YAAY,MAAM;AACpB,sBAAY,KAAK,QAAQ;AAAA,QAC3B;AAAA,MACF;AAEA,aAAO;AAAA,QACL,MAAM,KAAK;AAAA,QACX,QAAQ;AAAA,MACV;AAAA,IACF;AAEA,WAAO,aAAa,OAAO,QAAQ;AAAA,EACrC;AAGA,MAAI,kBAAkB,IAAI,GAAG;AAC3B,QAAI,CAAC,aAAa,KAAK,GAAG;AACxB,aAAO;AAAA,IACT;AAEA,UAAM,aAAa,CAAC;AAEpB,eAAW,SAAS,OAAO,OAAO,KAAK,UAAU,CAAC,GAAG;AACnD,YAAM,aAAa,aAAa,MAAM,MAAM,OAAO,MAAM,IAAI;AAE7D,UAAI,YAAY;AACd,mBAAW,KAAK;AAAA,UACd,MAAM,KAAK;AAAA,UACX,MAAM;AAAA,YACJ,MAAM,KAAK;AAAA,YACX,OAAO,MAAM;AAAA,UACf;AAAA,UACA,OAAO;AAAA,QACT,CAAC;AAAA,MACH;AAAA,IACF;AAEA,WAAO;AAAA,MACL,MAAM,KAAK;AAAA,MACX,QAAQ;AAAA,IACV;AAAA,EACF;AAEA,MAAI,WAAW,IAAI,GAAG;AAGpB,UAAM,aAAa,KAAK,UAAU,KAAK;AAEvC,QAAI,cAAc,MAAM;AACtB,aAAO;AAAA,IACT;AAEA,QAAI,OAAO,eAAe,WAAW;AACnC,aAAO;AAAA,QACL,MAAM,KAAK;AAAA,QACX,OAAO;AAAA,MACT;AAAA,IACF;AAEA,QAAI,OAAO,eAAe,YAAY,OAAO,SAAS,UAAU,GAAG;AACjE,YAAM,YAAY,OAAO,UAAU;AACnC,aAAO,oBAAoB,KAAK,SAAS,IACrC;AAAA,QACE,MAAM,KAAK;AAAA,QACX,OAAO;AAAA,MACT,IACA;AAAA,QACE,MAAM,KAAK;AAAA,QACX,OAAO;AAAA,MACT;AAAA,IACN;AAEA,QAAI,OAAO,eAAe,UAAU;AAElC,UAAI,WAAW,IAAI,GAAG;AACpB,eAAO;AAAA,UACL,MAAM,KAAK;AAAA,UACX,OAAO;AAAA,QACT;AAAA,MACF;AAEA,UAAI,SAAS,aAAa,oBAAoB,KAAK,UAAU,GAAG;AAC9D,eAAO;AAAA,UACL,MAAM,KAAK;AAAA,UACX,OAAO;AAAA,QACT;AAAA,MACF;AAEA,aAAO;AAAA,QACL,MAAM,KAAK;AAAA,QACX,OAAO;AAAA,MACT;AAAA,IACF;AAEA,UAAM,IAAI,UAAU,gCAAgC,QAAQ,UAAU,IAAI;AAAA,EAC5E;AAIA,EAAS,UAAU,OAAO,4BAA4B,QAAQ,IAAI,CAAC;AACrE;AAOA,IAAM,sBAAsB;;;AC3JrB,IAAM,WAAW,IAAI,kBAAkB;AAAA,EAC5C,MAAM;AAAA,EACN,aACE;AAAA,EACF,QAAQ,OAAO;AAAA,IACb,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS,CAAC,WAAW,OAAO;AAAA,IAC9B;AAAA,IACA,OAAO;AAAA,MACL,aAAa;AAAA,MACb,MAAM,IAAI,eAAe,IAAI,YAAY,IAAI,eAAe,MAAM,CAAC,CAAC;AAAA,MAEpE,QAAQ,QAAQ;AACd,eAAO,OAAO,OAAO,OAAO,WAAW,CAAC;AAAA,MAC1C;AAAA,IACF;AAAA,IACA,WAAW;AAAA,MACT,aAAa;AAAA,MACb,MAAM,IAAI,eAAe,MAAM;AAAA,MAC/B,SAAS,CAAC,WAAW,OAAO,aAAa;AAAA,IAC3C;AAAA,IACA,cAAc;AAAA,MACZ,aACE;AAAA,MACF,MAAM;AAAA,MACN,SAAS,CAAC,WAAW,OAAO,gBAAgB;AAAA,IAC9C;AAAA,IACA,kBAAkB;AAAA,MAChB,aACE;AAAA,MACF,MAAM;AAAA,MACN,SAAS,CAAC,WAAW,OAAO,oBAAoB;AAAA,IAClD;AAAA,IACA,YAAY;AAAA,MACV,aAAa;AAAA,MACb,MAAM,IAAI;AAAA,QACR,IAAI,YAAY,IAAI,eAAe,WAAW,CAAC;AAAA,MACjD;AAAA,MACA,SAAS,CAAC,WAAW,OAAO,cAAc;AAAA,IAC5C;AAAA,EACF;AACF,CAAC;AACM,IAAM,cAAc,IAAI,kBAAkB;AAAA,EAC/C,MAAM;AAAA,EACN,aACE;AAAA,EACF,QAAQ,OAAO;AAAA,IACb,MAAM;AAAA,MACJ,MAAM,IAAI,eAAe,aAAa;AAAA,MACtC,SAAS,CAAC,cAAc,UAAU;AAAA,IACpC;AAAA,IACA,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS,CAAC,cAAc,UAAU;AAAA,IACpC;AAAA,IACA,cAAc;AAAA,MACZ,MAAM,IAAI,eAAe,cAAc;AAAA,MACvC,SAAS,CAAC,cAAc,UAAU;AAAA,IACpC;AAAA,IACA,WAAW;AAAA,MACT,MAAM,IAAI;AAAA,QACR,IAAI,YAAY,IAAI,eAAe,mBAAmB,CAAC;AAAA,MACzD;AAAA,MACA,SAAS,CAAC,cAAc,UAAU;AAAA,IACpC;AAAA,IACA,MAAM;AAAA,MACJ,MAAM,IAAI;AAAA,QACR,IAAI,YAAY,IAAI,eAAe,YAAY,CAAC;AAAA,MAClD;AAAA,MACA,MAAM;AAAA,QACJ,mBAAmB;AAAA,UACjB,MAAM;AAAA,UACN,cAAc;AAAA,QAChB;AAAA,MACF;AAAA,MAEA,QAAQ,OAAO,EAAE,kBAAkB,GAAG;AACpC,eAAO,oBACH,MAAM,OACN,MAAM,KAAK,OAAO,CAAC,QAAQ,IAAI,qBAAqB,IAAI;AAAA,MAC9D;AAAA,IACF;AAAA,EACF;AACF,CAAC;AACM,IAAM,sBAAsB,IAAI,gBAAgB;AAAA,EACrD,MAAM;AAAA,EACN,aACE;AAAA,EACF,QAAQ;AAAA,IACN,OAAO;AAAA,MACL,OAAO,kBAAkB;AAAA,MACzB,aAAa;AAAA,IACf;AAAA,IACA,UAAU;AAAA,MACR,OAAO,kBAAkB;AAAA,MACzB,aAAa;AAAA,IACf;AAAA,IACA,cAAc;AAAA,MACZ,OAAO,kBAAkB;AAAA,MACzB,aAAa;AAAA,IACf;AAAA,IACA,OAAO;AAAA,MACL,OAAO,kBAAkB;AAAA,MACzB,aAAa;AAAA,IACf;AAAA,IACA,qBAAqB;AAAA,MACnB,OAAO,kBAAkB;AAAA,MACzB,aAAa;AAAA,IACf;AAAA,IACA,iBAAiB;AAAA,MACf,OAAO,kBAAkB;AAAA,MACzB,aAAa;AAAA,IACf;AAAA,IACA,iBAAiB;AAAA,MACf,OAAO,kBAAkB;AAAA,MACzB,aAAa;AAAA,IACf;AAAA,IACA,qBAAqB;AAAA,MACnB,OAAO,kBAAkB;AAAA,MACzB,aAAa;AAAA,IACf;AAAA,IACA,QAAQ;AAAA,MACN,OAAO,kBAAkB;AAAA,MACzB,aAAa;AAAA,IACf;AAAA,IACA,QAAQ;AAAA,MACN,OAAO,kBAAkB;AAAA,MACzB,aAAa;AAAA,IACf;AAAA,IACA,QAAQ;AAAA,MACN,OAAO,kBAAkB;AAAA,MACzB,aAAa;AAAA,IACf;AAAA,IACA,kBAAkB;AAAA,MAChB,OAAO,kBAAkB;AAAA,MACzB,aAAa;AAAA,IACf;AAAA,IACA,qBAAqB;AAAA,MACnB,OAAO,kBAAkB;AAAA,MACzB,aAAa;AAAA,IACf;AAAA,IACA,WAAW;AAAA,MACT,OAAO,kBAAkB;AAAA,MACzB,aAAa;AAAA,IACf;AAAA,IACA,OAAO;AAAA,MACL,OAAO,kBAAkB;AAAA,MACzB,aAAa;AAAA,IACf;AAAA,IACA,MAAM;AAAA,MACJ,OAAO,kBAAkB;AAAA,MACzB,aAAa;AAAA,IACf;AAAA,IACA,YAAY;AAAA,MACV,OAAO,kBAAkB;AAAA,MACzB,aAAa;AAAA,IACf;AAAA,IACA,cAAc;AAAA,MACZ,OAAO,kBAAkB;AAAA,MACzB,aAAa;AAAA,IACf;AAAA,IACA,wBAAwB;AAAA,MACtB,OAAO,kBAAkB;AAAA,MACzB,aAAa;AAAA,IACf;AAAA,EACF;AACF,CAAC;AACM,IAAM,SAAS,IAAI,kBAAkB;AAAA,EAC1C,MAAM;AAAA,EACN,aACE;AAAA,EACF,QAAQ,OAAO;AAAA,IACb,MAAM;AAAA,MACJ,MAAM,IAAI,eAAe,UAAU;AAAA,MAEnC,QAAQ,MAAM;AACZ,YAAI,aAAa,IAAI,GAAG;AACtB,iBAAO,SAAS;AAAA,QAClB;AAEA,YAAI,aAAa,IAAI,GAAG;AACtB,iBAAO,SAAS;AAAA,QAClB;AAEA,YAAI,gBAAgB,IAAI,GAAG;AACzB,iBAAO,SAAS;AAAA,QAClB;AAEA,YAAI,YAAY,IAAI,GAAG;AACrB,iBAAO,SAAS;AAAA,QAClB;AAEA,YAAI,WAAW,IAAI,GAAG;AACpB,iBAAO,SAAS;AAAA,QAClB;AAEA,YAAI,kBAAkB,IAAI,GAAG;AAC3B,iBAAO,SAAS;AAAA,QAClB;AAEA,YAAI,WAAW,IAAI,GAAG;AACpB,iBAAO,SAAS;AAAA,QAClB;AAEA,YAAI,cAAc,IAAI,GAAG;AACvB,iBAAO,SAAS;AAAA,QAClB;AAIA,QAAS,UAAU,OAAO,qBAAqB,QAAQ,IAAI,KAAK;AAAA,MAClE;AAAA,IACF;AAAA,IACA,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS,CAAC,SAAU,UAAU,OAAO,KAAK,OAAO;AAAA,IACnD;AAAA,IACA,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS,CACP,SAGA,iBAAiB,OAAO,KAAK,cAAc;AAAA,IAC/C;AAAA,IACA,gBAAgB;AAAA,MACd,MAAM;AAAA,MACN,SAAS,CAAC,QACR,oBAAoB,MAAM,IAAI,iBAAiB;AAAA,IACnD;AAAA,IACA,QAAQ;AAAA,MACN,MAAM,IAAI,YAAY,IAAI,eAAe,OAAO,CAAC;AAAA,MACjD,MAAM;AAAA,QACJ,mBAAmB;AAAA,UACjB,MAAM;AAAA,UACN,cAAc;AAAA,QAChB;AAAA,MACF;AAAA,MAEA,QAAQ,MAAM,EAAE,kBAAkB,GAAG;AACnC,YAAI,aAAa,IAAI,KAAK,gBAAgB,IAAI,GAAG;AAC/C,gBAAM,SAAS,OAAO,OAAO,KAAK,UAAU,CAAC;AAC7C,iBAAO,oBACH,SACA,OAAO,OAAO,CAAC,UAAU,MAAM,qBAAqB,IAAI;AAAA,QAC9D;AAAA,MACF;AAAA,IACF;AAAA,IACA,YAAY;AAAA,MACV,MAAM,IAAI,YAAY,IAAI,eAAe,MAAM,CAAC;AAAA,MAEhD,QAAQ,MAAM;AACZ,YAAI,aAAa,IAAI,KAAK,gBAAgB,IAAI,GAAG;AAC/C,iBAAO,KAAK,cAAc;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAAA,IACA,eAAe;AAAA,MACb,MAAM,IAAI,YAAY,IAAI,eAAe,MAAM,CAAC;AAAA,MAEhD,QAAQ,MAAM,OAAO,UAAU,EAAE,OAAO,GAAG;AACzC,YAAI,eAAe,IAAI,GAAG;AACxB,iBAAO,OAAO,iBAAiB,IAAI;AAAA,QACrC;AAAA,MACF;AAAA,IACF;AAAA,IACA,YAAY;AAAA,MACV,MAAM,IAAI,YAAY,IAAI,eAAe,WAAW,CAAC;AAAA,MACrD,MAAM;AAAA,QACJ,mBAAmB;AAAA,UACjB,MAAM;AAAA,UACN,cAAc;AAAA,QAChB;AAAA,MACF;AAAA,MAEA,QAAQ,MAAM,EAAE,kBAAkB,GAAG;AACnC,YAAI,WAAW,IAAI,GAAG;AACpB,gBAAM,SAAS,KAAK,UAAU;AAC9B,iBAAO,oBACH,SACA,OAAO,OAAO,CAAC,UAAU,MAAM,qBAAqB,IAAI;AAAA,QAC9D;AAAA,MACF;AAAA,IACF;AAAA,IACA,aAAa;AAAA,MACX,MAAM,IAAI,YAAY,IAAI,eAAe,YAAY,CAAC;AAAA,MACtD,MAAM;AAAA,QACJ,mBAAmB;AAAA,UACjB,MAAM;AAAA,UACN,cAAc;AAAA,QAChB;AAAA,MACF;AAAA,MAEA,QAAQ,MAAM,EAAE,kBAAkB,GAAG;AACnC,YAAI,kBAAkB,IAAI,GAAG;AAC3B,gBAAM,SAAS,OAAO,OAAO,KAAK,UAAU,CAAC;AAC7C,iBAAO,oBACH,SACA,OAAO,OAAO,CAAC,UAAU,MAAM,qBAAqB,IAAI;AAAA,QAC9D;AAAA,MACF;AAAA,IACF;AAAA,IACA,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,SAAS,CAAC,SAAU,YAAY,OAAO,KAAK,SAAS;AAAA,IACvD;AAAA,EACF;AACF,CAAC;AACM,IAAM,UAAU,IAAI,kBAAkB;AAAA,EAC3C,MAAM;AAAA,EACN,aACE;AAAA,EACF,QAAQ,OAAO;AAAA,IACb,MAAM;AAAA,MACJ,MAAM,IAAI,eAAe,aAAa;AAAA,MACtC,SAAS,CAAC,UAAU,MAAM;AAAA,IAC5B;AAAA,IACA,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS,CAAC,UAAU,MAAM;AAAA,IAC5B;AAAA,IACA,MAAM;AAAA,MACJ,MAAM,IAAI;AAAA,QACR,IAAI,YAAY,IAAI,eAAe,YAAY,CAAC;AAAA,MAClD;AAAA,MACA,MAAM;AAAA,QACJ,mBAAmB;AAAA,UACjB,MAAM;AAAA,UACN,cAAc;AAAA,QAChB;AAAA,MACF;AAAA,MAEA,QAAQ,OAAO,EAAE,kBAAkB,GAAG;AACpC,eAAO,oBACH,MAAM,OACN,MAAM,KAAK,OAAO,CAAC,QAAQ,IAAI,qBAAqB,IAAI;AAAA,MAC9D;AAAA,IACF;AAAA,IACA,MAAM;AAAA,MACJ,MAAM,IAAI,eAAe,MAAM;AAAA,MAC/B,SAAS,CAAC,UAAU,MAAM;AAAA,IAC5B;AAAA,IACA,cAAc;AAAA,MACZ,MAAM,IAAI,eAAe,cAAc;AAAA,MACvC,SAAS,CAAC,UAAU,MAAM,qBAAqB;AAAA,IACjD;AAAA,IACA,mBAAmB;AAAA,MACjB,MAAM;AAAA,MACN,SAAS,CAAC,UAAU,MAAM;AAAA,IAC5B;AAAA,EACF;AACF,CAAC;AACM,IAAM,eAAe,IAAI,kBAAkB;AAAA,EAChD,MAAM;AAAA,EACN,aACE;AAAA,EACF,QAAQ,OAAO;AAAA,IACb,MAAM;AAAA,MACJ,MAAM,IAAI,eAAe,aAAa;AAAA,MACtC,SAAS,CAAC,eAAe,WAAW;AAAA,IACtC;AAAA,IACA,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS,CAAC,eAAe,WAAW;AAAA,IACtC;AAAA,IACA,MAAM;AAAA,MACJ,MAAM,IAAI,eAAe,MAAM;AAAA,MAC/B,SAAS,CAAC,eAAe,WAAW;AAAA,IACtC;AAAA,IACA,cAAc;AAAA,MACZ,MAAM;AAAA,MACN,aACE;AAAA,MAEF,QAAQ,YAAY;AAClB,cAAM,EAAE,MAAM,aAAa,IAAI;AAC/B,cAAM,WAAW,aAAa,cAAc,IAAI;AAChD,eAAO,WAAW,MAAM,QAAQ,IAAI;AAAA,MACtC;AAAA,IACF;AAAA,IACA,cAAc;AAAA,MACZ,MAAM,IAAI,eAAe,cAAc;AAAA,MACvC,SAAS,CAAC,UAAU,MAAM,qBAAqB;AAAA,IACjD;AAAA,IACA,mBAAmB;AAAA,MACjB,MAAM;AAAA,MACN,SAAS,CAAC,QAAQ,IAAI;AAAA,IACxB;AAAA,EACF;AACF,CAAC;AACM,IAAM,cAAc,IAAI,kBAAkB;AAAA,EAC/C,MAAM;AAAA,EACN,aACE;AAAA,EACF,QAAQ,OAAO;AAAA,IACb,MAAM;AAAA,MACJ,MAAM,IAAI,eAAe,aAAa;AAAA,MACtC,SAAS,CAAC,cAAc,UAAU;AAAA,IACpC;AAAA,IACA,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS,CAAC,cAAc,UAAU;AAAA,IACpC;AAAA,IACA,cAAc;AAAA,MACZ,MAAM,IAAI,eAAe,cAAc;AAAA,MACvC,SAAS,CAAC,cAAc,UAAU,qBAAqB;AAAA,IACzD;AAAA,IACA,mBAAmB;AAAA,MACjB,MAAM;AAAA,MACN,SAAS,CAAC,cAAc,UAAU;AAAA,IACpC;AAAA,EACF;AACF,CAAC;AACD,IAAI;AAAA,CAEH,SAAUC,WAAU;AACnB,EAAAA,UAAS,YAAY;AACrB,EAAAA,UAAS,YAAY;AACrB,EAAAA,UAAS,eAAe;AACxB,EAAAA,UAAS,WAAW;AACpB,EAAAA,UAAS,UAAU;AACnB,EAAAA,UAAS,kBAAkB;AAC3B,EAAAA,UAAS,UAAU;AACnB,EAAAA,UAAS,cAAc;AACzB,GAAG,aAAa,WAAW,CAAC,EAAE;AAGvB,IAAM,aAAa,IAAI,gBAAgB;AAAA,EAC5C,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,IACN,QAAQ;AAAA,MACN,OAAO,SAAS;AAAA,MAChB,aAAa;AAAA,IACf;AAAA,IACA,QAAQ;AAAA,MACN,OAAO,SAAS;AAAA,MAChB,aACE;AAAA,IACJ;AAAA,IACA,WAAW;AAAA,MACT,OAAO,SAAS;AAAA,MAChB,aACE;AAAA,IACJ;AAAA,IACA,OAAO;AAAA,MACL,OAAO,SAAS;AAAA,MAChB,aACE;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACJ,OAAO,SAAS;AAAA,MAChB,aACE;AAAA,IACJ;AAAA,IACA,cAAc;AAAA,MACZ,OAAO,SAAS;AAAA,MAChB,aACE;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACJ,OAAO,SAAS;AAAA,MAChB,aAAa;AAAA,IACf;AAAA,IACA,UAAU;AAAA,MACR,OAAO,SAAS;AAAA,MAChB,aACE;AAAA,IACJ;AAAA,EACF;AACF,CAAC;AAMM,IAAM,qBAAqB;AAAA,EAChC,MAAM;AAAA,EACN,MAAM,IAAI,eAAe,QAAQ;AAAA,EACjC,aAAa;AAAA,EACb,MAAM,CAAC;AAAA,EACP,SAAS,CAAC,SAAS,OAAO,UAAU,EAAE,OAAO,MAAM;AAAA,EACnD,mBAAmB;AAAA,EACnB,YAAY,uBAAO,OAAO,IAAI;AAAA,EAC9B,SAAS;AACX;AACO,IAAM,mBAAmB;AAAA,EAC9B,MAAM;AAAA,EACN,MAAM;AAAA,EACN,aAAa;AAAA,EACb,MAAM;AAAA,IACJ;AAAA,MACE,MAAM;AAAA,MACN,aAAa;AAAA,MACb,MAAM,IAAI,eAAe,aAAa;AAAA,MACtC,cAAc;AAAA,MACd,mBAAmB;AAAA,MACnB,YAAY,uBAAO,OAAO,IAAI;AAAA,MAC9B,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EACA,SAAS,CAAC,SAAS,EAAE,KAAK,GAAG,UAAU,EAAE,OAAO,MAAM,OAAO,QAAQ,IAAI;AAAA,EACzE,mBAAmB;AAAA,EACnB,YAAY,uBAAO,OAAO,IAAI;AAAA,EAC9B,SAAS;AACX;AACO,IAAM,uBAAuB;AAAA,EAClC,MAAM;AAAA,EACN,MAAM,IAAI,eAAe,aAAa;AAAA,EACtC,aAAa;AAAA,EACb,MAAM,CAAC;AAAA,EACP,SAAS,CAAC,SAAS,OAAO,UAAU,EAAE,WAAW,MAAM,WAAW;AAAA,EAClE,mBAAmB;AAAA,EACnB,YAAY,uBAAO,OAAO,IAAI;AAAA,EAC9B,SAAS;AACX;AACO,IAAM,qBAAqB,OAAO,OAAO;AAAA,EAC9C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AACM,SAAS,oBAAoB,MAAM;AACxC,SAAO,mBAAmB,KAAK,CAAC,EAAE,KAAK,MAAM,KAAK,SAAS,IAAI;AACjE;;;ACnhBO,SAAS,SAAS,QAAQ;AAC/B,SAAO,WAAW,QAAQ,aAAa;AACzC;AACO,SAAS,aAAa,QAAQ;AACnC,MAAI,CAAC,SAAS,MAAM,GAAG;AACrB,UAAM,IAAI,MAAM,YAAY,QAAQ,MAAM,2BAA2B;AAAA,EACvE;AAEA,SAAO;AACT;AA+EO,IAAM,gBAAN,MAAoB;AAAA,EAEzB,YAAY,QAAQ;AAClB,QAAI,uBAAuB;AAI3B,SAAK,qBAAqB,OAAO,gBAAgB,OAAO,CAAC,IAAI;AAE7D,iBAAa,MAAM,KACjB,UAAU,OAAO,oCAAoC;AACvD,KAAC,OAAO,SACN,MAAM,QAAQ,OAAO,KAAK,KAC1B;AAAA,MACE;AAAA,MACA,8CAA8C,QAAQ,OAAO,KAAK;AAAA,IACpE;AACF,KAAC,OAAO,cACN,MAAM,QAAQ,OAAO,UAAU,KAC/B;AAAA,MACE;AAAA,MACA,mDACK,QAAQ,OAAO,UAAU;AAAA,IAChC;AACF,SAAK,cAAc,OAAO;AAC1B,SAAK,aAAa,SAAS,OAAO,UAAU;AAC5C,SAAK,UAAU,OAAO;AACtB,SAAK,qBACF,wBAAwB,OAAO,uBAAuB,QACvD,0BAA0B,SACtB,wBACA,CAAC;AACP,SAAK,aAAa,OAAO;AACzB,SAAK,gBAAgB,OAAO;AAC5B,SAAK,oBAAoB,OAAO;AAEhC,SAAK,eACF,qBAAqB,OAAO,gBAAgB,QAC7C,uBAAuB,SACnB,qBACA;AAGN,UAAM,qBAAqB,IAAI,IAAI,OAAO,KAAK;AAE/C,QAAI,OAAO,SAAS,MAAM;AACxB,iBAAW,QAAQ,OAAO,OAAO;AAG/B,2BAAmB,OAAO,IAAI;AAC9B,+BAAuB,MAAM,kBAAkB;AAAA,MACjD;AAAA,IACF;AAEA,QAAI,KAAK,cAAc,MAAM;AAC3B,6BAAuB,KAAK,YAAY,kBAAkB;AAAA,IAC5D;AAEA,QAAI,KAAK,iBAAiB,MAAM;AAC9B,6BAAuB,KAAK,eAAe,kBAAkB;AAAA,IAC/D;AAEA,QAAI,KAAK,qBAAqB,MAAM;AAClC,6BAAuB,KAAK,mBAAmB,kBAAkB;AAAA,IACnE;AAEA,eAAW,aAAa,KAAK,aAAa;AAExC,UAAI,YAAY,SAAS,GAAG;AAC1B,mBAAW,OAAO,UAAU,MAAM;AAChC,iCAAuB,IAAI,MAAM,kBAAkB;AAAA,QACrD;AAAA,MACF;AAAA,IACF;AAEA,2BAAuB,UAAU,kBAAkB;AAEnD,SAAK,WAAW,uBAAO,OAAO,IAAI;AAClC,SAAK,cAAc,uBAAO,OAAO,IAAI;AAErC,SAAK,sBAAsB,uBAAO,OAAO,IAAI;AAE7C,eAAW,aAAa,oBAAoB;AAC1C,UAAI,aAAa,MAAM;AACrB;AAAA,MACF;AAEA,YAAM,WAAW,UAAU;AAC3B,kBACE;AAAA,QACE;AAAA,QACA;AAAA,MACF;AAEF,UAAI,KAAK,SAAS,cAAc,QAAW;AACzC,cAAM,IAAI;AAAA,UACR,+EAA+E;AAAA,QACjF;AAAA,MACF;AAEA,WAAK,SAAS,YAAY;AAE1B,UAAI,gBAAgB,SAAS,GAAG;AAE9B,mBAAW,SAAS,UAAU,cAAc,GAAG;AAC7C,cAAI,gBAAgB,KAAK,GAAG;AAC1B,gBAAI,kBAAkB,KAAK,oBAAoB,MAAM;AAErD,gBAAI,oBAAoB,QAAW;AACjC,gCAAkB,KAAK,oBAAoB,MAAM,QAAQ;AAAA,gBACvD,SAAS,CAAC;AAAA,gBACV,YAAY,CAAC;AAAA,cACf;AAAA,YACF;AAEA,4BAAgB,WAAW,KAAK,SAAS;AAAA,UAC3C;AAAA,QACF;AAAA,MACF,WAAW,aAAa,SAAS,GAAG;AAElC,mBAAW,SAAS,UAAU,cAAc,GAAG;AAC7C,cAAI,gBAAgB,KAAK,GAAG;AAC1B,gBAAI,kBAAkB,KAAK,oBAAoB,MAAM;AAErD,gBAAI,oBAAoB,QAAW;AACjC,gCAAkB,KAAK,oBAAoB,MAAM,QAAQ;AAAA,gBACvD,SAAS,CAAC;AAAA,gBACV,YAAY,CAAC;AAAA,cACf;AAAA,YACF;AAEA,4BAAgB,QAAQ,KAAK,SAAS;AAAA,UACxC;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,KAAK,OAAO,eAAe;AACzB,WAAO;AAAA,EACT;AAAA,EAEA,eAAe;AACb,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,kBAAkB;AAChB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,sBAAsB;AACpB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,YAAY,WAAW;AACrB,YAAQ;AAAA,WACD,kBAAkB;AACrB,eAAO,KAAK,aAAa;AAAA,WAEtB,kBAAkB;AACrB,eAAO,KAAK,gBAAgB;AAAA,WAEzB,kBAAkB;AACrB,eAAO,KAAK,oBAAoB;AAAA;AAAA,EAEtC;AAAA,EAEA,aAAa;AACX,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,QAAQ,MAAM;AACZ,WAAO,KAAK,WAAW,EAAE;AAAA,EAC3B;AAAA,EAEA,iBAAiB,cAAc;AAC7B,WAAO,YAAY,YAAY,IAC3B,aAAa,SAAS,IACtB,KAAK,mBAAmB,YAAY,EAAE;AAAA,EAC5C;AAAA,EAEA,mBAAmB,eAAe;AAChC,UAAM,kBAAkB,KAAK,oBAAoB,cAAc;AAC/D,WAAO,oBAAoB,QAAQ,oBAAoB,SACnD,kBACA;AAAA,MACE,SAAS,CAAC;AAAA,MACV,YAAY,CAAC;AAAA,IACf;AAAA,EACN;AAAA,EAEA,UAAU,cAAc,cAAc;AACpC,QAAIC,OAAM,KAAK,YAAY,aAAa;AAExC,QAAIA,SAAQ,QAAW;AACrB,MAAAA,OAAM,uBAAO,OAAO,IAAI;AAExB,UAAI,YAAY,YAAY,GAAG;AAC7B,mBAAW,QAAQ,aAAa,SAAS,GAAG;AAC1C,UAAAA,KAAI,KAAK,QAAQ;AAAA,QACnB;AAAA,MACF,OAAO;AACL,cAAM,kBAAkB,KAAK,mBAAmB,YAAY;AAE5D,mBAAW,QAAQ,gBAAgB,SAAS;AAC1C,UAAAA,KAAI,KAAK,QAAQ;AAAA,QACnB;AAEA,mBAAW,QAAQ,gBAAgB,YAAY;AAC7C,UAAAA,KAAI,KAAK,QAAQ;AAAA,QACnB;AAAA,MACF;AAEA,WAAK,YAAY,aAAa,QAAQA;AAAA,IACxC;AAEA,WAAOA,KAAI,aAAa,UAAU;AAAA,EACpC;AAAA,EAEA,gBAAgB;AACd,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,aAAa,MAAM;AACjB,WAAO,KAAK,cAAc,EAAE,KAAK,CAAC,cAAc,UAAU,SAAS,IAAI;AAAA,EACzE;AAAA,EAEA,WAAW;AACT,WAAO;AAAA,MACL,aAAa,KAAK;AAAA,MAClB,OAAO,KAAK,aAAa;AAAA,MACzB,UAAU,KAAK,gBAAgB;AAAA,MAC/B,cAAc,KAAK,oBAAoB;AAAA,MACvC,OAAO,OAAO,OAAO,KAAK,WAAW,CAAC;AAAA,MACtC,YAAY,KAAK,cAAc;AAAA,MAC/B,YAAY,KAAK;AAAA,MACjB,SAAS,KAAK;AAAA,MACd,mBAAmB,KAAK;AAAA,MACxB,aAAa,KAAK,uBAAuB;AAAA,IAC3C;AAAA,EACF;AACF;AAEA,SAAS,uBAAuB,MAAM,SAAS;AAC7C,QAAM,YAAY,aAAa,IAAI;AAEnC,MAAI,CAAC,QAAQ,IAAI,SAAS,GAAG;AAC3B,YAAQ,IAAI,SAAS;AAErB,QAAI,YAAY,SAAS,GAAG;AAC1B,iBAAW,cAAc,UAAU,SAAS,GAAG;AAC7C,+BAAuB,YAAY,OAAO;AAAA,MAC5C;AAAA,IACF,WAAW,aAAa,SAAS,KAAK,gBAAgB,SAAS,GAAG;AAChE,iBAAW,iBAAiB,UAAU,cAAc,GAAG;AACrD,+BAAuB,eAAe,OAAO;AAAA,MAC/C;AAEA,iBAAW,SAAS,OAAO,OAAO,UAAU,UAAU,CAAC,GAAG;AACxD,+BAAuB,MAAM,MAAM,OAAO;AAE1C,mBAAW,OAAO,MAAM,MAAM;AAC5B,iCAAuB,IAAI,MAAM,OAAO;AAAA,QAC1C;AAAA,MACF;AAAA,IACF,WAAW,kBAAkB,SAAS,GAAG;AACvC,iBAAW,SAAS,OAAO,OAAO,UAAU,UAAU,CAAC,GAAG;AACxD,+BAAuB,MAAM,MAAM,OAAO;AAAA,MAC5C;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;;;AChWO,SAAS,eAAe,QAAQ;AAErC,eAAa,MAAM;AAEnB,MAAI,OAAO,oBAAoB;AAC7B,WAAO,OAAO;AAAA,EAChB;AAEA,QAAM,UAAU,IAAI,wBAAwB,MAAM;AAClD,oBAAkB,OAAO;AACzB,qBAAmB,OAAO;AAC1B,gBAAc,OAAO;AAGrB,QAAM,SAAS,QAAQ,UAAU;AACjC,SAAO,qBAAqB;AAC5B,SAAO;AACT;AAMO,SAAS,kBAAkB,QAAQ;AACxC,QAAM,SAAS,eAAe,MAAM;AAEpC,MAAI,OAAO,WAAW,GAAG;AACvB,UAAM,IAAI,MAAM,OAAO,IAAI,CAAC,UAAU,MAAM,OAAO,EAAE,KAAK,MAAM,CAAC;AAAA,EACnE;AACF;AAEA,IAAM,0BAAN,MAA8B;AAAA,EAC5B,YAAY,QAAQ;AAClB,SAAK,UAAU,CAAC;AAChB,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,YAAY,SAAS,OAAO;AAC1B,UAAM,SAAS,MAAM,QAAQ,KAAK,IAAI,MAAM,OAAO,OAAO,IAAI;AAE9D,SAAK,QAAQ;AAAA,MACX,IAAI,aAAa,SAAS;AAAA,QACxB,OAAO;AAAA,MACT,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,YAAY;AACV,WAAO,KAAK;AAAA,EACd;AACF;AAEA,SAAS,kBAAkB,SAAS;AAClC,QAAM,SAAS,QAAQ;AACvB,QAAM,YAAY,OAAO,aAAa;AAEtC,MAAI,CAAC,WAAW;AACd,YAAQ,YAAY,qCAAqC,OAAO,OAAO;AAAA,EACzE,WAAW,CAAC,aAAa,SAAS,GAAG;AACnC,QAAI;AAEJ,YAAQ;AAAA,MACN,qDAAqD;AAAA,QACnD;AAAA,MACF;AAAA,OACC,wBAAwB;AAAA,QACvB;AAAA,QACA,kBAAkB;AAAA,MACpB,OAAO,QAAQ,0BAA0B,SACrC,wBACA,UAAU;AAAA,IAChB;AAAA,EACF;AAEA,QAAM,eAAe,OAAO,gBAAgB;AAE5C,MAAI,gBAAgB,CAAC,aAAa,YAAY,GAAG;AAC/C,QAAI;AAEJ,YAAQ;AAAA,MACN,oEACK,QAAQ,YAAY;AAAA,OACxB,yBAAyB;AAAA,QACxB;AAAA,QACA,kBAAkB;AAAA,MACpB,OAAO,QAAQ,2BAA2B,SACtC,yBACA,aAAa;AAAA,IACnB;AAAA,EACF;AAEA,QAAM,mBAAmB,OAAO,oBAAoB;AAEpD,MAAI,oBAAoB,CAAC,aAAa,gBAAgB,GAAG;AACvD,QAAI;AAEJ,YAAQ;AAAA,MACN,wEACK,QAAQ,gBAAgB;AAAA,OAC5B,yBAAyB;AAAA,QACxB;AAAA,QACA,kBAAkB;AAAA,MACpB,OAAO,QAAQ,2BAA2B,SACtC,yBACA,iBAAiB;AAAA,IACvB;AAAA,EACF;AACF;AAEA,SAAS,qBAAqB,QAAQ,WAAW;AAC/C,MAAI;AAEJ,UAAQ,gBAAgB,CAAC,OAAO,SAAS,GAAG,OAAO,iBAAiB,EACjE;AAAA,IAEC,CAAC,eAAe;AACd,UAAI;AAEJ,cAEG,wBACC,eAAe,QAAQ,eAAe,SAClC,SACA,WAAW,oBAAoB,QACnC,0BAA0B,SACxB,wBACA,CAAC;AAAA,IAET;AAAA,EACF,EACC,KAAK,CAAC,kBAAkB,cAAc,cAAc,SAAS,OAAO,QACrE,kBAAkB,SAChB,SACA,cAAc;AACpB;AAEA,SAAS,mBAAmB,SAAS;AACnC,aAAW,aAAa,QAAQ,OAAO,cAAc,GAAG;AAEtD,QAAI,CAAC,YAAY,SAAS,GAAG;AAC3B,cAAQ;AAAA,QACN,+BAA+B,QAAQ,SAAS;AAAA,QAChD,cAAc,QAAQ,cAAc,SAAS,SAAS,UAAU;AAAA,MAClE;AACA;AAAA,IACF;AAEA,iBAAa,SAAS,SAAS;AAG/B,eAAW,OAAO,UAAU,MAAM;AAEhC,mBAAa,SAAS,GAAG;AAEzB,UAAI,CAAC,YAAY,IAAI,IAAI,GAAG;AAC1B,gBAAQ;AAAA,UACN,gBAAgB,UAAU,QAAQ,IAAI,sCACxB,QAAQ,IAAI,IAAI;AAAA,UAC9B,IAAI;AAAA,QACN;AAAA,MACF;AAEA,UAAI,mBAAmB,GAAG,KAAK,IAAI,qBAAqB,MAAM;AAC5D,YAAI;AAEJ,gBAAQ;AAAA,UACN,sBAAsB,UAAU,QAAQ,IAAI;AAAA,UAC5C;AAAA,YACE,2BAA2B,IAAI,OAAO;AAAA,aACrC,eAAe,IAAI,aAAa,QAAQ,iBAAiB,SACtD,SACA,aAAa;AAAA,UACnB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,aAAa,SAAS,MAAM;AAEnC,MAAI,KAAK,KAAK,WAAW,IAAI,GAAG;AAC9B,YAAQ;AAAA,MACN,SAAS,KAAK;AAAA,MACd,KAAK;AAAA,IACP;AAAA,EACF;AACF;AAEA,SAAS,cAAc,SAAS;AAC9B,QAAM,kCACJ,uCAAuC,OAAO;AAChD,QAAM,UAAU,QAAQ,OAAO,WAAW;AAE1C,aAAW,QAAQ,OAAO,OAAO,OAAO,GAAG;AAEzC,QAAI,CAAC,YAAY,IAAI,GAAG;AACtB,cAAQ;AAAA,QACN,wCAAwC,QAAQ,IAAI;AAAA,QACpD,KAAK;AAAA,MACP;AACA;AAAA,IACF;AAEA,QAAI,CAAC,oBAAoB,IAAI,GAAG;AAC9B,mBAAa,SAAS,IAAI;AAAA,IAC5B;AAEA,QAAI,aAAa,IAAI,GAAG;AAEtB,qBAAe,SAAS,IAAI;AAE5B,yBAAmB,SAAS,IAAI;AAAA,IAClC,WAAW,gBAAgB,IAAI,GAAG;AAEhC,qBAAe,SAAS,IAAI;AAE5B,yBAAmB,SAAS,IAAI;AAAA,IAClC,WAAW,YAAY,IAAI,GAAG;AAE5B,2BAAqB,SAAS,IAAI;AAAA,IACpC,WAAW,WAAW,IAAI,GAAG;AAE3B,yBAAmB,SAAS,IAAI;AAAA,IAClC,WAAW,kBAAkB,IAAI,GAAG;AAElC,0BAAoB,SAAS,IAAI;AAEjC,sCAAgC,IAAI;AAAA,IACtC;AAAA,EACF;AACF;AAEA,SAAS,eAAe,SAAS,MAAM;AACrC,QAAM,SAAS,OAAO,OAAO,KAAK,UAAU,CAAC;AAE7C,MAAI,OAAO,WAAW,GAAG;AACvB,YAAQ,YAAY,QAAQ,KAAK,wCAAwC;AAAA,MACvE,KAAK;AAAA,MACL,GAAG,KAAK;AAAA,IACV,CAAC;AAAA,EACH;AAEA,aAAW,SAAS,QAAQ;AAE1B,iBAAa,SAAS,KAAK;AAE3B,QAAI,CAAC,aAAa,MAAM,IAAI,GAAG;AAC7B,UAAI;AAEJ,cAAQ;AAAA,QACN,eAAe,KAAK,QAAQ,MAAM,qCACpB,QAAQ,MAAM,IAAI;AAAA,SAC/B,iBAAiB,MAAM,aAAa,QAAQ,mBAAmB,SAC5D,SACA,eAAe;AAAA,MACrB;AAAA,IACF;AAEA,eAAW,OAAO,MAAM,MAAM;AAC5B,YAAM,UAAU,IAAI;AAEpB,mBAAa,SAAS,GAAG;AAEzB,UAAI,CAAC,YAAY,IAAI,IAAI,GAAG;AAC1B,YAAI;AAEJ,gBAAQ;AAAA,UACN,eAAe,KAAK,QAAQ,MAAM,QAAQ,yCACvB,QAAQ,IAAI,IAAI;AAAA,WAClC,gBAAgB,IAAI,aAAa,QAAQ,kBAAkB,SACxD,SACA,cAAc;AAAA,QACpB;AAAA,MACF;AAEA,UAAI,mBAAmB,GAAG,KAAK,IAAI,qBAAqB,MAAM;AAC5D,YAAI;AAEJ,gBAAQ;AAAA,UACN,qBAAqB,KAAK,QAAQ,MAAM,QAAQ;AAAA,UAChD;AAAA,YACE,2BAA2B,IAAI,OAAO;AAAA,aACrC,gBAAgB,IAAI,aAAa,QAAQ,kBAAkB,SACxD,SACA,cAAc;AAAA,UACpB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,mBAAmB,SAAS,MAAM;AACzC,QAAM,iBAAiB,uBAAO,OAAO,IAAI;AAEzC,aAAW,SAAS,KAAK,cAAc,GAAG;AACxC,QAAI,CAAC,gBAAgB,KAAK,GAAG;AAC3B,cAAQ;AAAA,QACN,QAAQ,QAAQ,IAAI,8DACK,QAAQ,KAAK;AAAA,QACtC,+BAA+B,MAAM,KAAK;AAAA,MAC5C;AACA;AAAA,IACF;AAEA,QAAI,SAAS,OAAO;AAClB,cAAQ;AAAA,QACN,QAAQ,KAAK;AAAA,QACb,+BAA+B,MAAM,KAAK;AAAA,MAC5C;AACA;AAAA,IACF;AAEA,QAAI,eAAe,MAAM,OAAO;AAC9B,cAAQ;AAAA,QACN,QAAQ,KAAK,2BAA2B,MAAM;AAAA,QAC9C,+BAA+B,MAAM,KAAK;AAAA,MAC5C;AACA;AAAA,IACF;AAEA,mBAAe,MAAM,QAAQ;AAC7B,oCAAgC,SAAS,MAAM,KAAK;AACpD,oCAAgC,SAAS,MAAM,KAAK;AAAA,EACtD;AACF;AAEA,SAAS,gCAAgC,SAAS,MAAM,OAAO;AAC7D,QAAM,eAAe,KAAK,UAAU;AAEpC,aAAW,cAAc,OAAO,OAAO,MAAM,UAAU,CAAC,GAAG;AACzD,UAAM,YAAY,WAAW;AAC7B,UAAM,YAAY,aAAa;AAE/B,QAAI,CAAC,WAAW;AACd,cAAQ;AAAA,QACN,mBAAmB,MAAM,QAAQ,0BAA0B,KAAK;AAAA,QAChE,CAAC,WAAW,SAAS,KAAK,SAAS,GAAG,KAAK,iBAAiB;AAAA,MAC9D;AACA;AAAA,IACF;AAGA,QAAI,CAAC,gBAAgB,QAAQ,QAAQ,UAAU,MAAM,WAAW,IAAI,GAAG;AACrE,UAAI,qBAAqB;AAEzB,cAAQ;AAAA,QACN,mBAAmB,MAAM,QAAQ,0BAC5B,QAAQ,WAAW,IAAI,SAAS,KAAK,QAAQ,qBACrC,QAAQ,UAAU,IAAI;AAAA,QACnC;AAAA,WACG,sBAAsB,WAAW,aAAa,QAC/C,wBAAwB,SACpB,SACA,oBAAoB;AAAA,WACvB,qBAAqB,UAAU,aAAa,QAC7C,uBAAuB,SACnB,SACA,mBAAmB;AAAA,QACzB;AAAA,MACF;AAAA,IACF;AAEA,eAAW,YAAY,WAAW,MAAM;AACtC,YAAM,UAAU,SAAS;AACzB,YAAM,UAAU,UAAU,KAAK,KAAK,CAAC,QAAQ,IAAI,SAAS,OAAO;AAEjE,UAAI,CAAC,SAAS;AACZ,gBAAQ;AAAA,UACN,4BAA4B,MAAM,QAAQ,aAAa,0BAA0B,KAAK,QAAQ;AAAA,UAC9F,CAAC,SAAS,SAAS,UAAU,OAAO;AAAA,QACtC;AACA;AAAA,MACF;AAIA,UAAI,CAAC,YAAY,SAAS,MAAM,QAAQ,IAAI,GAAG;AAC7C,YAAI,mBAAmB;AAEvB,gBAAQ;AAAA,UACN,4BAA4B,MAAM,QAAQ,aAAa,0BACrC,QAAQ,SAAS,IAAI,SAClC,KAAK,QAAQ,aAAa,qBAC1B,QAAQ,QAAQ,IAAI;AAAA,UACzB;AAAA,aACG,oBAAoB,SAAS,aAAa,QAC3C,sBAAsB,SAClB,SACA,kBAAkB;AAAA,aACrB,mBAAmB,QAAQ,aAAa,QACzC,qBAAqB,SACjB,SACA,iBAAiB;AAAA,UACvB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,eAAW,WAAW,UAAU,MAAM;AACpC,YAAM,UAAU,QAAQ;AACxB,YAAM,WAAW,WAAW,KAAK,KAAK,CAAC,QAAQ,IAAI,SAAS,OAAO;AAEnE,UAAI,CAAC,YAAY,mBAAmB,OAAO,GAAG;AAC5C,gBAAQ;AAAA,UACN,gBAAgB,KAAK,QAAQ,wCAAwC,oDAAoD,MAAM,QAAQ;AAAA,UACvI,CAAC,QAAQ,SAAS,WAAW,OAAO;AAAA,QACtC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,gCAAgC,SAAS,MAAM,OAAO;AAC7D,QAAM,kBAAkB,KAAK,cAAc;AAE3C,aAAW,cAAc,MAAM,cAAc,GAAG;AAC9C,QAAI,CAAC,gBAAgB,SAAS,UAAU,GAAG;AACzC,cAAQ;AAAA,QACN,eAAe,OACX,QAAQ,KAAK,yBAAyB,MAAM,uDAC5C,QAAQ,KAAK,uBAAuB,WAAW,qCAAqC,MAAM;AAAA,QAC9F;AAAA,UACE,GAAG,+BAA+B,OAAO,UAAU;AAAA,UACnD,GAAG,+BAA+B,MAAM,KAAK;AAAA,QAC/C;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,qBAAqB,SAAS,OAAO;AAC5C,QAAM,cAAc,MAAM,SAAS;AAEnC,MAAI,YAAY,WAAW,GAAG;AAC5B,YAAQ;AAAA,MACN,cAAc,MAAM;AAAA,MACpB,CAAC,MAAM,SAAS,GAAG,MAAM,iBAAiB;AAAA,IAC5C;AAAA,EACF;AAEA,QAAM,oBAAoB,uBAAO,OAAO,IAAI;AAE5C,aAAW,cAAc,aAAa;AACpC,QAAI,kBAAkB,WAAW,OAAO;AACtC,cAAQ;AAAA,QACN,cAAc,MAAM,8BAA8B,WAAW;AAAA,QAC7D,wBAAwB,OAAO,WAAW,IAAI;AAAA,MAChD;AACA;AAAA,IACF;AAEA,sBAAkB,WAAW,QAAQ;AAErC,QAAI,CAAC,aAAa,UAAU,GAAG;AAC7B,cAAQ;AAAA,QACN,cAAc,MAAM,yDACG,QAAQ,UAAU;AAAA,QACzC,wBAAwB,OAAO,OAAO,UAAU,CAAC;AAAA,MACnD;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,mBAAmB,SAAS,UAAU;AAC7C,QAAM,aAAa,SAAS,UAAU;AAEtC,MAAI,WAAW,WAAW,GAAG;AAC3B,YAAQ;AAAA,MACN,aAAa,SAAS;AAAA,MACtB,CAAC,SAAS,SAAS,GAAG,SAAS,iBAAiB;AAAA,IAClD;AAAA,EACF;AAEA,aAAW,aAAa,YAAY;AAElC,iBAAa,SAAS,SAAS;AAAA,EACjC;AACF;AAEA,SAAS,oBAAoB,SAAS,UAAU;AAC9C,QAAM,SAAS,OAAO,OAAO,SAAS,UAAU,CAAC;AAEjD,MAAI,OAAO,WAAW,GAAG;AACvB,YAAQ;AAAA,MACN,qBAAqB,SAAS;AAAA,MAC9B,CAAC,SAAS,SAAS,GAAG,SAAS,iBAAiB;AAAA,IAClD;AAAA,EACF;AAEA,aAAW,SAAS,QAAQ;AAE1B,iBAAa,SAAS,KAAK;AAE3B,QAAI,CAAC,YAAY,MAAM,IAAI,GAAG;AAC5B,UAAI;AAEJ,cAAQ;AAAA,QACN,eAAe,SAAS,QAAQ,MAAM,oCACxB,QAAQ,MAAM,IAAI;AAAA,SAC/B,kBAAkB,MAAM,aAAa,QAAQ,oBAAoB,SAC9D,SACA,gBAAgB;AAAA,MACtB;AAAA,IACF;AAEA,QAAI,qBAAqB,KAAK,KAAK,MAAM,qBAAqB,MAAM;AAClE,UAAI;AAEJ,cAAQ;AAAA,QACN,wBAAwB,SAAS,QAAQ,MAAM;AAAA,QAC/C;AAAA,UACE,2BAA2B,MAAM,OAAO;AAAA,WACvC,kBAAkB,MAAM,aAAa,QACtC,oBAAoB,SAChB,SACA,gBAAgB;AAAA,QACtB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,uCAAuC,SAAS;AAIvD,QAAM,eAAe,uBAAO,OAAO,IAAI;AAEvC,QAAM,YAAY,CAAC;AAEnB,QAAM,2BAA2B,uBAAO,OAAO,IAAI;AACnD,SAAO;AAIP,WAAS,qBAAqB,UAAU;AACtC,QAAI,aAAa,SAAS,OAAO;AAC/B;AAAA,IACF;AAEA,iBAAa,SAAS,QAAQ;AAC9B,6BAAyB,SAAS,QAAQ,UAAU;AACpD,UAAM,SAAS,OAAO,OAAO,SAAS,UAAU,CAAC;AAEjD,eAAW,SAAS,QAAQ;AAC1B,UAAI,cAAc,MAAM,IAAI,KAAK,kBAAkB,MAAM,KAAK,MAAM,GAAG;AACrE,cAAM,YAAY,MAAM,KAAK;AAC7B,cAAM,aAAa,yBAAyB,UAAU;AACtD,kBAAU,KAAK,KAAK;AAEpB,YAAI,eAAe,QAAW;AAC5B,+BAAqB,SAAS;AAAA,QAChC,OAAO;AACL,gBAAM,YAAY,UAAU,MAAM,UAAU;AAC5C,gBAAM,UAAU,UAAU,IAAI,CAAC,aAAa,SAAS,IAAI,EAAE,KAAK,GAAG;AACnE,kBAAQ;AAAA,YACN,kCAAkC,UAAU,6DAA6D;AAAA,YACzG,UAAU,IAAI,CAAC,aAAa,SAAS,OAAO;AAAA,UAC9C;AAAA,QACF;AAEA,kBAAU,IAAI;AAAA,MAChB;AAAA,IACF;AAEA,6BAAyB,SAAS,QAAQ;AAAA,EAC5C;AACF;AAEA,SAAS,+BAA+B,MAAM,OAAO;AACnD,QAAM,EAAE,SAAS,kBAAkB,IAAI;AACvC,QAAM,QACJ,WAAW,OAAO,CAAC,SAAS,GAAG,iBAAiB,IAAI;AAEtD,SAAO,MACJ,QAAQ,CAAC,aAAa;AACrB,QAAI;AAEJ,YAEG,uBAAuB,SAAS,gBAAgB,QAC/C,yBAAyB,SACvB,uBACA,CAAC;AAAA,EAET,CAAC,EACA,OAAO,CAAC,cAAc,UAAU,KAAK,UAAU,MAAM,IAAI;AAC9D;AAEA,SAAS,wBAAwB,OAAO,UAAU;AAChD,QAAM,EAAE,SAAS,kBAAkB,IAAI;AACvC,QAAM,QACJ,WAAW,OAAO,CAAC,SAAS,GAAG,iBAAiB,IAAI;AAEtD,SAAO,MACJ,QAAQ,CAAC,cAAc;AACtB,QAAI;AAEJ,YAEG,mBAAmB,UAAU,WAAW,QACvC,qBAAqB,SACnB,mBACA,CAAC;AAAA,EAET,CAAC,EACA,OAAO,CAAC,aAAa,SAAS,KAAK,UAAU,QAAQ;AAC1D;AAEA,SAAS,2BAA2B,gBAAgB;AAClD,MAAI;AAEJ,SAAO,mBAAmB,QAAQ,mBAAmB,SACjD,UACC,wBAAwB,eAAe,gBAAgB,QACxD,0BAA0B,SAC1B,SACA,sBAAsB;AAAA,IACpB,CAAC,SAAS,KAAK,KAAK,UAAU,2BAA2B;AAAA,EAC3D;AACN;;;ACxoBO,SAAS,YAAY,QAAQ,UAAU;AAC5C,UAAQ,SAAS;AAAA,SACV,KAAK,WAAW;AACnB,YAAM,YAAY,YAAY,QAAQ,SAAS,IAAI;AACnD,aAAO,aAAa,IAAI,YAAY,SAAS;AAAA,IAC/C;AAAA,SAEK,KAAK,eAAe;AACvB,YAAM,YAAY,YAAY,QAAQ,SAAS,IAAI;AACnD,aAAO,aAAa,IAAI,eAAe,SAAS;AAAA,IAClD;AAAA,SAEK,KAAK;AACR,aAAO,OAAO,QAAQ,SAAS,KAAK,KAAK;AAAA;AAE/C;;;ACUO,IAAM,WAAN,MAAe;AAAA,EACpB,YACE,QAKA,aAEA,eACA;AACA,SAAK,UAAU;AACf,SAAK,aAAa,CAAC;AACnB,SAAK,mBAAmB,CAAC;AACzB,SAAK,kBAAkB,CAAC;AACxB,SAAK,iBAAiB,CAAC;AACvB,SAAK,qBAAqB,CAAC;AAC3B,SAAK,aAAa;AAClB,SAAK,YAAY;AACjB,SAAK,aAAa;AAClB,SAAK,eACH,kBAAkB,QAAQ,kBAAkB,SACxC,gBACA;AAEN,QAAI,aAAa;AACf,UAAI,YAAY,WAAW,GAAG;AAC5B,aAAK,gBAAgB,KAAK,WAAW;AAAA,MACvC;AAEA,UAAI,gBAAgB,WAAW,GAAG;AAChC,aAAK,iBAAiB,KAAK,WAAW;AAAA,MACxC;AAEA,UAAI,aAAa,WAAW,GAAG;AAC7B,aAAK,WAAW,KAAK,WAAW;AAAA,MAClC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,KAAK,OAAO,eAAe;AACzB,WAAO;AAAA,EACT;AAAA,EAEA,UAAU;AACR,QAAI,KAAK,WAAW,SAAS,GAAG;AAC9B,aAAO,KAAK,WAAW,KAAK,WAAW,SAAS;AAAA,IAClD;AAAA,EACF;AAAA,EAEA,gBAAgB;AACd,QAAI,KAAK,iBAAiB,SAAS,GAAG;AACpC,aAAO,KAAK,iBAAiB,KAAK,iBAAiB,SAAS;AAAA,IAC9D;AAAA,EACF;AAAA,EAEA,eAAe;AACb,QAAI,KAAK,gBAAgB,SAAS,GAAG;AACnC,aAAO,KAAK,gBAAgB,KAAK,gBAAgB,SAAS;AAAA,IAC5D;AAAA,EACF;AAAA,EAEA,qBAAqB;AACnB,QAAI,KAAK,gBAAgB,SAAS,GAAG;AACnC,aAAO,KAAK,gBAAgB,KAAK,gBAAgB,SAAS;AAAA,IAC5D;AAAA,EACF;AAAA,EAEA,cAAc;AACZ,QAAI,KAAK,eAAe,SAAS,GAAG;AAClC,aAAO,KAAK,eAAe,KAAK,eAAe,SAAS;AAAA,IAC1D;AAAA,EACF;AAAA,EAEA,kBAAkB;AAChB,QAAI,KAAK,mBAAmB,SAAS,GAAG;AACtC,aAAO,KAAK,mBAAmB,KAAK,mBAAmB,SAAS;AAAA,IAClE;AAAA,EACF;AAAA,EAEA,eAAe;AACb,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,cAAc;AACZ,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,eAAe;AACb,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAM,MAAM;AACV,UAAM,SAAS,KAAK;AAKpB,YAAQ,KAAK;AAAA,WACN,KAAK,eAAe;AACvB,cAAM,YAAY,aAAa,KAAK,QAAQ,CAAC;AAE7C,aAAK,iBAAiB;AAAA,UACpB,gBAAgB,SAAS,IAAI,YAAY;AAAA,QAC3C;AAEA;AAAA,MACF;AAAA,WAEK,KAAK,OAAO;AACf,cAAM,aAAa,KAAK,cAAc;AACtC,YAAI;AACJ,YAAI;AAEJ,YAAI,YAAY;AACd,qBAAW,KAAK,aAAa,QAAQ,YAAY,IAAI;AAErD,cAAI,UAAU;AACZ,wBAAY,SAAS;AAAA,UACvB;AAAA,QACF;AAEA,aAAK,eAAe,KAAK,QAAQ;AAEjC,aAAK,WAAW,KAAK,aAAa,SAAS,IAAI,YAAY,MAAS;AAEpE;AAAA,MACF;AAAA,WAEK,KAAK;AACR,aAAK,aAAa,OAAO,aAAa,KAAK,KAAK,KAAK;AACrD;AAAA,WAEG,KAAK,sBAAsB;AAC9B,cAAM,WAAW,OAAO,YAAY,KAAK,SAAS;AAElD,aAAK,WAAW,KAAK,aAAa,QAAQ,IAAI,WAAW,MAAS;AAElE;AAAA,MACF;AAAA,WAEK,KAAK;AAAA,WACL,KAAK,qBAAqB;AAC7B,cAAM,mBAAmB,KAAK;AAC9B,cAAM,aAAa,mBACf,YAAY,QAAQ,gBAAgB,IACpC,aAAa,KAAK,QAAQ,CAAC;AAE/B,aAAK,WAAW,KAAK,aAAa,UAAU,IAAI,aAAa,MAAS;AAEtE;AAAA,MACF;AAAA,WAEK,KAAK,qBAAqB;AAC7B,cAAM,YAAY,YAAY,QAAQ,KAAK,IAAI;AAE/C,aAAK,gBAAgB;AAAA,UACnB,YAAY,SAAS,IAAI,YAAY;AAAA,QACvC;AAEA;AAAA,MACF;AAAA,WAEK,KAAK,UAAU;AAClB,YAAI;AAEJ,YAAI;AACJ,YAAI;AACJ,cAAM,oBACH,qBAAqB,KAAK,aAAa,OAAO,QAC/C,uBAAuB,SACnB,qBACA,KAAK,YAAY;AAEvB,YAAI,kBAAkB;AACpB,mBAAS,iBAAiB,KAAK;AAAA,YAC7B,CAAC,QAAQ,IAAI,SAAS,KAAK,KAAK;AAAA,UAClC;AAEA,cAAI,QAAQ;AACV,sBAAU,OAAO;AAAA,UACnB;AAAA,QACF;AAEA,aAAK,YAAY;AAEjB,aAAK,mBAAmB,KAAK,SAAS,OAAO,eAAe,MAAS;AAErE,aAAK,gBAAgB,KAAK,YAAY,OAAO,IAAI,UAAU,MAAS;AAEpE;AAAA,MACF;AAAA,WAEK,KAAK,MAAM;AACd,cAAM,WAAW,gBAAgB,KAAK,aAAa,CAAC;AACpD,cAAM,WAAW,WAAW,QAAQ,IAAI,SAAS,SAAS;AAE1D,aAAK,mBAAmB,KAAK,MAAS;AAEtC,aAAK,gBAAgB,KAAK,YAAY,QAAQ,IAAI,WAAW,MAAS;AAEtE;AAAA,MACF;AAAA,WAEK,KAAK,cAAc;AACtB,cAAM,aAAa,aAAa,KAAK,aAAa,CAAC;AACnD,YAAI;AACJ,YAAI;AAEJ,YAAI,kBAAkB,UAAU,GAAG;AACjC,uBAAa,WAAW,UAAU,EAAE,KAAK,KAAK;AAE9C,cAAI,YAAY;AACd,6BAAiB,WAAW;AAAA,UAC9B;AAAA,QACF;AAEA,aAAK,mBAAmB;AAAA,UACtB,aAAa,WAAW,eAAe;AAAA,QACzC;AAEA,aAAK,gBAAgB;AAAA,UACnB,YAAY,cAAc,IAAI,iBAAiB;AAAA,QACjD;AAEA;AAAA,MACF;AAAA,WAEK,KAAK,MAAM;AACd,cAAM,WAAW,aAAa,KAAK,aAAa,CAAC;AACjD,YAAI;AAEJ,YAAI,WAAW,QAAQ,GAAG;AACxB,sBAAY,SAAS,SAAS,KAAK,KAAK;AAAA,QAC1C;AAEA,aAAK,aAAa;AAClB;AAAA,MACF;AAAA;AAAA;AAAA,EAIJ;AAAA,EAEA,MAAM,MAAM;AACV,YAAQ,KAAK;AAAA,WACN,KAAK;AACR,aAAK,iBAAiB,IAAI;AAE1B;AAAA,WAEG,KAAK;AACR,aAAK,eAAe,IAAI;AAExB,aAAK,WAAW,IAAI;AAEpB;AAAA,WAEG,KAAK;AACR,aAAK,aAAa;AAClB;AAAA,WAEG,KAAK;AAAA,WACL,KAAK;AAAA,WACL,KAAK;AACR,aAAK,WAAW,IAAI;AAEpB;AAAA,WAEG,KAAK;AACR,aAAK,gBAAgB,IAAI;AAEzB;AAAA,WAEG,KAAK;AACR,aAAK,YAAY;AAEjB,aAAK,mBAAmB,IAAI;AAE5B,aAAK,gBAAgB,IAAI;AAEzB;AAAA,WAEG,KAAK;AAAA,WACL,KAAK;AACR,aAAK,mBAAmB,IAAI;AAE5B,aAAK,gBAAgB,IAAI;AAEzB;AAAA,WAEG,KAAK;AACR,aAAK,aAAa;AAClB;AAAA;AAAA;AAAA,EAIN;AACF;AAOA,SAAS,YAAY,QAAQ,YAAY,WAAW;AAClD,QAAM,OAAO,UAAU,KAAK;AAE5B,MACE,SAAS,mBAAmB,QAC5B,OAAO,aAAa,MAAM,YAC1B;AACA,WAAO;AAAA,EACT;AAEA,MAAI,SAAS,iBAAiB,QAAQ,OAAO,aAAa,MAAM,YAAY;AAC1E,WAAO;AAAA,EACT;AAEA,MAAI,SAAS,qBAAqB,QAAQ,gBAAgB,UAAU,GAAG;AACrE,WAAO;AAAA,EACT;AAEA,MAAI,aAAa,UAAU,KAAK,gBAAgB,UAAU,GAAG;AAC3D,WAAO,WAAW,UAAU,EAAE;AAAA,EAChC;AACF;AAMO,SAAS,kBAAkB,UAAU,SAAS;AACnD,SAAO;AAAA,IACL,SAAS,MAAM;AACb,YAAM,OAAO,KAAK;AAClB,eAAS,MAAM,IAAI;AACnB,YAAM,KAAK,qBAAqB,SAAS,KAAK,IAAI,EAAE;AAEpD,UAAI,IAAI;AACN,cAAM,SAAS,GAAG,MAAM,SAAS,IAAI;AAErC,YAAI,WAAW,QAAW;AACxB,mBAAS,MAAM,IAAI;AAEnB,cAAI,OAAO,MAAM,GAAG;AAClB,qBAAS,MAAM,MAAM;AAAA,UACvB;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAAA,IACF;AAAA,IAEA,SAAS,MAAM;AACb,YAAM,OAAO,KAAK;AAClB,YAAM,KAAK,qBAAqB,SAAS,KAAK,IAAI,EAAE;AACpD,UAAI;AAEJ,UAAI,IAAI;AACN,iBAAS,GAAG,MAAM,SAAS,IAAI;AAAA,MACjC;AAEA,eAAS,MAAM,IAAI;AACnB,aAAO;AAAA,IACT;AAAA,EACF;AACF;;;ACzYO,SAAS,iBAAiB,MAAM;AACrC,SACE,2BAA2B,IAAI,KAC/B,2BAA2B,IAAI,KAC/B,0BAA0B,IAAI;AAElC;AACO,SAAS,2BAA2B,MAAM;AAC/C,SACE,KAAK,SAAS,KAAK,wBACnB,KAAK,SAAS,KAAK;AAEvB;AAsCO,SAAS,2BAA2B,MAAM;AAC/C,SACE,KAAK,SAAS,KAAK,qBACnB,qBAAqB,IAAI,KACzB,KAAK,SAAS,KAAK;AAEvB;AACO,SAAS,qBAAqB,MAAM;AACzC,SACE,KAAK,SAAS,KAAK,0BACnB,KAAK,SAAS,KAAK,0BACnB,KAAK,SAAS,KAAK,6BACnB,KAAK,SAAS,KAAK,yBACnB,KAAK,SAAS,KAAK,wBACnB,KAAK,SAAS,KAAK;AAEvB;AACO,SAAS,0BAA0B,MAAM;AAC9C,SAAO,KAAK,SAAS,KAAK,oBAAoB,oBAAoB,IAAI;AACxE;AACO,SAAS,oBAAoB,MAAM;AACxC,SACE,KAAK,SAAS,KAAK,yBACnB,KAAK,SAAS,KAAK,yBACnB,KAAK,SAAS,KAAK,4BACnB,KAAK,SAAS,KAAK,wBACnB,KAAK,SAAS,KAAK,uBACnB,KAAK,SAAS,KAAK;AAEvB;;;ACpEO,SAAS,0BAA0B,SAAS;AACjD,SAAO;AAAA,IACL,SAAS,MAAM;AACb,iBAAW,cAAc,KAAK,aAAa;AACzC,YAAI,CAAC,2BAA2B,UAAU,GAAG;AAC3C,gBAAM,UACJ,WAAW,SAAS,KAAK,qBACzB,WAAW,SAAS,KAAK,mBACrB,WACA,MAAM,WAAW,KAAK,QAAQ;AACpC,kBAAQ;AAAA,YACN,IAAI,aAAa,OAAO,yCAAyC;AAAA,cAC/D,OAAO;AAAA,YACT,CAAC;AAAA,UACH;AAAA,QACF;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA,EACF;AACF;;;ACfO,SAAS,wBAAwB,SAAS;AAC/C,SAAO;AAAA,IACL,MAAM,MAAM;AACV,YAAM,OAAO,QAAQ,cAAc;AAEnC,UAAI,MAAM;AACR,cAAM,WAAW,QAAQ,YAAY;AAErC,YAAI,CAAC,UAAU;AAEb,gBAAM,SAAS,QAAQ,UAAU;AACjC,gBAAM,YAAY,KAAK,KAAK;AAE5B,cAAI,aAAa;AAAA,YACf;AAAA,YACA,sBAAsB,QAAQ,MAAM,SAAS;AAAA,UAC/C;AAEA,cAAI,eAAe,IAAI;AACrB,yBAAa,WAAW,uBAAuB,MAAM,SAAS,CAAC;AAAA,UACjE;AAEA,kBAAQ;AAAA,YACN,IAAI;AAAA,cACF,uBAAuB,uBAAuB,KAAK,WACjD;AAAA,cACF;AAAA,gBACE,OAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAOA,SAAS,sBAAsB,QAAQ,MAAM,WAAW;AACtD,MAAI,CAAC,eAAe,IAAI,GAAG;AAEzB,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,iBAAiB,oBAAI,IAAI;AAC/B,QAAM,aAAa,uBAAO,OAAO,IAAI;AAErC,aAAW,gBAAgB,OAAO,iBAAiB,IAAI,GAAG;AACxD,QAAI,CAAC,aAAa,UAAU,EAAE,YAAY;AACxC;AAAA,IACF;AAEA,mBAAe,IAAI,YAAY;AAC/B,eAAW,aAAa,QAAQ;AAEhC,eAAW,qBAAqB,aAAa,cAAc,GAAG;AAC5D,UAAI;AAEJ,UAAI,CAAC,kBAAkB,UAAU,EAAE,YAAY;AAC7C;AAAA,MACF;AAEA,qBAAe,IAAI,iBAAiB;AACpC,iBAAW,kBAAkB,UACzB,wBAAwB,WAAW,kBAAkB,WACrD,QAAQ,0BAA0B,SAChC,wBACA,KAAK;AAAA,IACb;AAAA,EACF;AAEA,SAAO,CAAC,GAAG,cAAc,EACtB,KAAK,CAAC,OAAO,UAAU;AAEtB,UAAM,iBAAiB,WAAW,MAAM,QAAQ,WAAW,MAAM;AAEjE,QAAI,mBAAmB,GAAG;AACxB,aAAO;AAAA,IACT;AAEA,QAAI,gBAAgB,KAAK,KAAK,OAAO,UAAU,OAAO,KAAK,GAAG;AAC5D,aAAO;AAAA,IACT;AAEA,QAAI,gBAAgB,KAAK,KAAK,OAAO,UAAU,OAAO,KAAK,GAAG;AAC5D,aAAO;AAAA,IACT;AAEA,WAAO,eAAe,MAAM,MAAM,MAAM,IAAI;AAAA,EAC9C,CAAC,EACA,IAAI,CAAC,MAAM,EAAE,IAAI;AACtB;AAMA,SAAS,uBAAuB,MAAM,WAAW;AAC/C,MAAI,aAAa,IAAI,KAAK,gBAAgB,IAAI,GAAG;AAC/C,UAAM,qBAAqB,OAAO,KAAK,KAAK,UAAU,CAAC;AACvD,WAAO,eAAe,WAAW,kBAAkB;AAAA,EACrD;AAEA,SAAO,CAAC;AACV;;;AChHO,SAAS,8BAA8B,SAAS;AACrD,SAAO;AAAA,IACL,eAAe,MAAM;AACnB,YAAM,gBAAgB,KAAK;AAE3B,UAAI,eAAe;AACjB,cAAM,OAAO,YAAY,QAAQ,UAAU,GAAG,aAAa;AAE3D,YAAI,QAAQ,CAAC,gBAAgB,IAAI,GAAG;AAClC,gBAAM,UAAU,MAAM,aAAa;AACnC,kBAAQ;AAAA,YACN,IAAI;AAAA,cACF,oDAAoD;AAAA,cACpD;AAAA,gBACE,OAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IAEA,mBAAmB,MAAM;AACvB,YAAM,OAAO,YAAY,QAAQ,UAAU,GAAG,KAAK,aAAa;AAEhE,UAAI,QAAQ,CAAC,gBAAgB,IAAI,GAAG;AAClC,cAAM,UAAU,MAAM,KAAK,aAAa;AACxC,gBAAQ;AAAA,UACN,IAAI;AAAA,YACF,aAAa,KAAK,KAAK,kDAAkD;AAAA,YACzE;AAAA,cACE,OAAO,KAAK;AAAA,YACd;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ACrCO,SAAS,uBAAuB,SAAS;AAC9C,SAAO;AAAA,IAEL,GAAG,mCAAmC,OAAO;AAAA,IAE7C,SAAS,SAAS;AAChB,YAAM,SAAS,QAAQ,YAAY;AACnC,YAAM,WAAW,QAAQ,YAAY;AACrC,YAAM,aAAa,QAAQ,cAAc;AAEzC,UAAI,CAAC,UAAU,YAAY,YAAY;AACrC,cAAM,UAAU,QAAQ,KAAK;AAC7B,cAAM,iBAAiB,SAAS,KAAK,IAAI,CAAC,QAAQ,IAAI,IAAI;AAC1D,cAAM,cAAc,eAAe,SAAS,cAAc;AAC1D,gBAAQ;AAAA,UACN,IAAI;AAAA,YACF,qBAAqB,sBAAsB,WAAW,QAAQ,SAAS,WACrE,WAAW,WAAW;AAAA,YACxB;AAAA,cACE,OAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAKO,SAAS,mCAAmC,SAAS;AAC1D,QAAM,gBAAgB,uBAAO,OAAO,IAAI;AACxC,QAAM,SAAS,QAAQ,UAAU;AACjC,QAAM,oBAAoB,SACtB,OAAO,cAAc,IACrB;AAEJ,aAAW,aAAa,mBAAmB;AACzC,kBAAc,UAAU,QAAQ,UAAU,KAAK,IAAI,CAAC,QAAQ,IAAI,IAAI;AAAA,EACtE;AAEA,QAAM,iBAAiB,QAAQ,YAAY,EAAE;AAE7C,aAAW,OAAO,gBAAgB;AAChC,QAAI,IAAI,SAAS,KAAK,sBAAsB;AAC1C,UAAI;AAKJ,YAAM,aACH,iBAAiB,IAAI,eAAe,QAAQ,mBAAmB,SAC5D,iBACA,CAAC;AACP,oBAAc,IAAI,KAAK,SAAS,UAAU,IAAI,CAAC,QAAQ,IAAI,KAAK,KAAK;AAAA,IACvE;AAAA,EACF;AAEA,SAAO;AAAA,IACL,UAAU,eAAe;AACvB,YAAM,gBAAgB,cAAc,KAAK;AACzC,YAAM,YAAY,cAAc;AAEhC,UAAI,cAAc,aAAa,WAAW;AACxC,mBAAW,WAAW,cAAc,WAAW;AAC7C,gBAAM,UAAU,QAAQ,KAAK;AAE7B,cAAI,CAAC,UAAU,SAAS,OAAO,GAAG;AAChC,kBAAM,cAAc,eAAe,SAAS,SAAS;AACrD,oBAAQ;AAAA,cACN,IAAI;AAAA,gBACF,qBAAqB,2BAA2B,oBAC9C,WAAW,WAAW;AAAA,gBACxB;AAAA,kBACE,OAAO;AAAA,gBACT;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA,EACF;AACF;;;ACrFO,SAAS,oBAAoB,SAAS;AAC3C,QAAM,eAAe,uBAAO,OAAO,IAAI;AACvC,QAAM,SAAS,QAAQ,UAAU;AACjC,QAAM,oBAAoB,SACtB,OAAO,cAAc,IACrB;AAEJ,aAAW,aAAa,mBAAmB;AACzC,iBAAa,UAAU,QAAQ,UAAU;AAAA,EAC3C;AAEA,QAAM,iBAAiB,QAAQ,YAAY,EAAE;AAE7C,aAAW,OAAO,gBAAgB;AAChC,QAAI,IAAI,SAAS,KAAK,sBAAsB;AAC1C,mBAAa,IAAI,KAAK,SAAS,IAAI,UAAU,IAAI,CAAC,SAAS,KAAK,KAAK;AAAA,IACvE;AAAA,EACF;AAEA,SAAO;AAAA,IACL,UAAU,MAAM,MAAM,SAAS,OAAO,WAAW;AAC/C,YAAM,OAAO,KAAK,KAAK;AACvB,YAAM,YAAY,aAAa;AAE/B,UAAI,CAAC,WAAW;AACd,gBAAQ;AAAA,UACN,IAAI,aAAa,uBAAuB,UAAU;AAAA,YAChD,OAAO;AAAA,UACT,CAAC;AAAA,QACH;AACA;AAAA,MACF;AAEA,YAAM,oBAAoB,+BAA+B,SAAS;AAElE,UAAI,qBAAqB,CAAC,UAAU,SAAS,iBAAiB,GAAG;AAC/D,gBAAQ;AAAA,UACN,IAAI;AAAA,YACF,eAAe,4BAA4B;AAAA,YAC3C;AAAA,cACE,OAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,+BAA+B,WAAW;AACjD,QAAM,YAAY,UAAU,UAAU,SAAS;AAC/C,YAAU,aAAa,UAAU,KAAK;AAEtC,UAAQ,UAAU;AAAA,SACX,KAAK;AACR,aAAO,iCAAiC,UAAU,SAAS;AAAA,SAExD,KAAK;AACR,aAAO,kBAAkB;AAAA,SAEtB,KAAK;AACR,aAAO,kBAAkB;AAAA,SAEtB,KAAK;AACR,aAAO,kBAAkB;AAAA,SAEtB,KAAK;AACR,aAAO,kBAAkB;AAAA,SAEtB,KAAK;AACR,aAAO,kBAAkB;AAAA,SAEtB,KAAK;AAAA,SACL,KAAK;AACR,aAAO,kBAAkB;AAAA,SAEtB,KAAK;AAAA,SACL,KAAK;AACR,aAAO,kBAAkB;AAAA,SAEtB,KAAK;AAAA,SACL,KAAK;AACR,aAAO,kBAAkB;AAAA,SAEtB,KAAK;AACR,aAAO,kBAAkB;AAAA,SAEtB,KAAK;AAAA,SACL,KAAK;AACR,aAAO,kBAAkB;AAAA,SAEtB,KAAK;AAAA,SACL,KAAK;AACR,aAAO,kBAAkB;AAAA,SAEtB,KAAK;AAAA,SACL,KAAK;AACR,aAAO,kBAAkB;AAAA,SAEtB,KAAK;AACR,aAAO,kBAAkB;AAAA,SAEtB,KAAK;AAAA,SACL,KAAK;AACR,aAAO,kBAAkB;AAAA,SAEtB,KAAK,wBAAwB;AAChC,YAAM,aAAa,UAAU,UAAU,SAAS;AAChD,gBAAU,cAAc,UAAU,KAAK;AACvC,aAAO,WAAW,SAAS,KAAK,+BAC5B,kBAAkB,yBAClB,kBAAkB;AAAA,IACxB;AAAA;AAME,MAAS,UAAU,OAAO,sBAAsB,QAAQ,UAAU,IAAI,CAAC;AAAA;AAE7E;AAEA,SAAS,iCAAiC,WAAW;AACnD,UAAQ;AAAA,SACD,kBAAkB;AACrB,aAAO,kBAAkB;AAAA,SAEtB,kBAAkB;AACrB,aAAO,kBAAkB;AAAA,SAEtB,kBAAkB;AACrB,aAAO,kBAAkB;AAAA;AAE/B;;;AC3IO,SAAS,uBAAuB,SAAS;AAC9C,SAAO;AAAA,IACL,eAAe,MAAM;AACnB,YAAM,eAAe,KAAK,KAAK;AAC/B,YAAM,WAAW,QAAQ,YAAY,YAAY;AAEjD,UAAI,CAAC,UAAU;AACb,gBAAQ;AAAA,UACN,IAAI,aAAa,qBAAqB,kBAAkB;AAAA,YACtD,OAAO,KAAK;AAAA,UACd,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ACNO,SAAS,mBAAmB,SAAS;AAC1C,QAAM,SAAS,QAAQ,UAAU;AACjC,QAAM,mBAAmB,SAAS,OAAO,WAAW,IAAI,uBAAO,OAAO,IAAI;AAC1E,QAAM,eAAe,uBAAO,OAAO,IAAI;AAEvC,aAAW,OAAO,QAAQ,YAAY,EAAE,aAAa;AACnD,QAAI,qBAAqB,GAAG,GAAG;AAC7B,mBAAa,IAAI,KAAK,SAAS;AAAA,IACjC;AAAA,EACF;AAEA,QAAM,YAAY;AAAA,IAChB,GAAG,OAAO,KAAK,gBAAgB;AAAA,IAC/B,GAAG,OAAO,KAAK,YAAY;AAAA,EAC7B;AACA,SAAO;AAAA,IACL,UAAU,MAAM,IAAI,QAAQ,IAAI,WAAW;AACzC,YAAM,WAAW,KAAK,KAAK;AAE3B,UAAI,CAAC,iBAAiB,aAAa,CAAC,aAAa,WAAW;AAC1D,YAAI;AAEJ,cAAM,kBACH,cAAc,UAAU,QAAQ,QAAQ,gBAAgB,SACrD,cACA;AACN,cAAM,QAAQ,kBAAkB,QAAQ,UAAU,cAAc;AAEhE,YAAI,SAAS,kBAAkB,SAAS,QAAQ,GAAG;AACjD;AAAA,QACF;AAEA,cAAM,iBAAiB;AAAA,UACrB;AAAA,UACA,QAAQ,kBAAkB,OAAO,SAAS,IAAI;AAAA,QAChD;AACA,gBAAQ;AAAA,UACN,IAAI;AAAA,YACF,iBAAiB,eAAe,WAAW,cAAc;AAAA,YACzD;AAAA,cACE,OAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AACA,IAAM,oBAAoB,CAAC,GAAG,sBAAsB,GAAG,kBAAkB,EAAE;AAAA,EACzE,CAAC,SAAS,KAAK;AACjB;AAEA,SAAS,UAAU,OAAO;AACxB,SACE,UAAU,UACT,2BAA2B,KAAK,KAAK,0BAA0B,KAAK;AAEzE;;;ACjEO,SAAS,2BAA2B,SAAS;AAClD,MAAI,iBAAiB;AACrB,SAAO;AAAA,IACL,SAAS,MAAM;AACb,uBAAiB,KAAK,YAAY;AAAA,QAChC,CAAC,eAAe,WAAW,SAAS,KAAK;AAAA,MAC3C,EAAE;AAAA,IACJ;AAAA,IAEA,oBAAoB,MAAM;AACxB,UAAI,CAAC,KAAK,QAAQ,iBAAiB,GAAG;AACpC,gBAAQ;AAAA,UACN,IAAI;AAAA,YACF;AAAA,YACA;AAAA,cACE,OAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;AC1BO,SAAS,yBAAyB,SAAS;AAChD,MAAI,MAAM,OAAO;AAEjB,QAAM,YAAY,QAAQ,UAAU;AACpC,QAAM,kBACH,QACE,SACE,qBACC,cAAc,QAAQ,cAAc,SAChC,SACA,UAAU,aAAa,QAAQ,uBAAuB,SACxD,qBACA,cAAc,QAAQ,cAAc,SACpC,SACA,UAAU,aAAa,OAAO,QAAQ,UAAU,SAClD,QACA,cAAc,QAAQ,cAAc,SACpC,SACA,UAAU,gBAAgB,OAAO,QAAQ,SAAS,SACpD,OACA,cAAc,QAAQ,cAAc,SACpC,SACA,UAAU,oBAAoB;AACpC,MAAI,yBAAyB;AAC7B,SAAO;AAAA,IACL,iBAAiB,MAAM;AACrB,UAAI,gBAAgB;AAClB,gBAAQ;AAAA,UACN,IAAI;AAAA,YACF;AAAA,YACA;AAAA,cACE,OAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AACA;AAAA,MACF;AAEA,UAAI,yBAAyB,GAAG;AAC9B,gBAAQ;AAAA,UACN,IAAI,aAAa,4CAA4C;AAAA,YAC3D,OAAO;AAAA,UACT,CAAC;AAAA,QACH;AAAA,MACF;AAEA,QAAE;AAAA,IACJ;AAAA,EACF;AACF;;;AC9CO,SAAS,qBAAqB,SAAS;AAG5C,QAAM,eAAe,uBAAO,OAAO,IAAI;AAEvC,QAAM,aAAa,CAAC;AAEpB,QAAM,wBAAwB,uBAAO,OAAO,IAAI;AAChD,SAAO;AAAA,IACL,qBAAqB,MAAM;AAAA,IAE3B,mBAAmB,MAAM;AACvB,2BAAqB,IAAI;AACzB,aAAO;AAAA,IACT;AAAA,EACF;AAIA,WAAS,qBAAqB,UAAU;AACtC,QAAI,aAAa,SAAS,KAAK,QAAQ;AACrC;AAAA,IACF;AAEA,UAAM,eAAe,SAAS,KAAK;AACnC,iBAAa,gBAAgB;AAC7B,UAAM,cAAc,QAAQ,mBAAmB,SAAS,YAAY;AAEpE,QAAI,YAAY,WAAW,GAAG;AAC5B;AAAA,IACF;AAEA,0BAAsB,gBAAgB,WAAW;AAEjD,eAAW,cAAc,aAAa;AACpC,YAAM,aAAa,WAAW,KAAK;AACnC,YAAM,aAAa,sBAAsB;AACzC,iBAAW,KAAK,UAAU;AAE1B,UAAI,eAAe,QAAW;AAC5B,cAAM,iBAAiB,QAAQ,YAAY,UAAU;AAErD,YAAI,gBAAgB;AAClB,+BAAqB,cAAc;AAAA,QACrC;AAAA,MACF,OAAO;AACL,cAAM,YAAY,WAAW,MAAM,UAAU;AAC7C,cAAM,UAAU,UACb,MAAM,GAAG,EAAE,EACX,IAAI,CAAC,MAAM,MAAM,EAAE,KAAK,QAAQ,GAAG,EACnC,KAAK,IAAI;AACZ,gBAAQ;AAAA,UACN,IAAI;AAAA,YACF,2BAA2B,+BACxB,YAAY,KAAK,QAAQ,aAAa;AAAA,YACzC;AAAA,cACE,OAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,iBAAW,IAAI;AAAA,IACjB;AAEA,0BAAsB,gBAAgB;AAAA,EACxC;AACF;;;ACnEO,SAAS,yBAAyB,SAAS;AAChD,MAAI,sBAAsB,uBAAO,OAAO,IAAI;AAC5C,SAAO;AAAA,IACL,qBAAqB;AAAA,MACnB,QAAQ;AACN,8BAAsB,uBAAO,OAAO,IAAI;AAAA,MAC1C;AAAA,MAEA,MAAM,WAAW;AACf,cAAM,SAAS,QAAQ,2BAA2B,SAAS;AAE3D,mBAAW,EAAE,KAAK,KAAK,QAAQ;AAC7B,gBAAM,UAAU,KAAK,KAAK;AAE1B,cAAI,oBAAoB,aAAa,MAAM;AACzC,oBAAQ;AAAA,cACN,IAAI;AAAA,gBACF,UAAU,OACN,cAAc,yCAAyC,UAAU,KAAK,YACtE,cAAc;AAAA,gBAClB;AAAA,kBACE,OAAO,CAAC,MAAM,SAAS;AAAA,gBACzB;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IAEA,mBAAmB,MAAM;AACvB,0BAAoB,KAAK,SAAS,KAAK,SAAS;AAAA,IAClD;AAAA,EACF;AACF;;;AClCO,SAAS,sBAAsB,SAAS;AAC7C,QAAM,gBAAgB,CAAC;AACvB,QAAM,eAAe,CAAC;AACtB,SAAO;AAAA,IACL,oBAAoB,MAAM;AACxB,oBAAc,KAAK,IAAI;AACvB,aAAO;AAAA,IACT;AAAA,IAEA,mBAAmB,MAAM;AACvB,mBAAa,KAAK,IAAI;AACtB,aAAO;AAAA,IACT;AAAA,IAEA,UAAU;AAAA,MACR,QAAQ;AACN,cAAM,mBAAmB,uBAAO,OAAO,IAAI;AAE3C,mBAAW,aAAa,eAAe;AACrC,qBAAW,YAAY,QAAQ;AAAA,YAC7B;AAAA,UACF,GAAG;AACD,6BAAiB,SAAS,KAAK,SAAS;AAAA,UAC1C;AAAA,QACF;AAEA,mBAAW,eAAe,cAAc;AACtC,gBAAM,WAAW,YAAY,KAAK;AAElC,cAAI,iBAAiB,cAAc,MAAM;AACvC,oBAAQ;AAAA,cACN,IAAI,aAAa,aAAa,4BAA4B;AAAA,gBACxD,OAAO;AAAA,cACT,CAAC;AAAA,YACH;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ACxCO,SAAS,sBAAsB,SAAS;AAC7C,MAAI,eAAe,CAAC;AACpB,SAAO;AAAA,IACL,qBAAqB;AAAA,MACnB,QAAQ;AACN,uBAAe,CAAC;AAAA,MAClB;AAAA,MAEA,MAAM,WAAW;AACf,cAAM,mBAAmB,uBAAO,OAAO,IAAI;AAC3C,cAAM,SAAS,QAAQ,2BAA2B,SAAS;AAE3D,mBAAW,EAAE,KAAK,KAAK,QAAQ;AAC7B,2BAAiB,KAAK,KAAK,SAAS;AAAA,QACtC;AAEA,mBAAW,eAAe,cAAc;AACtC,gBAAM,eAAe,YAAY,SAAS,KAAK;AAE/C,cAAI,iBAAiB,kBAAkB,MAAM;AAC3C,oBAAQ;AAAA,cACN,IAAI;AAAA,gBACF,UAAU,OACN,cAAc,6CAA6C,UAAU,KAAK,YAC1E,cAAc;AAAA,gBAClB;AAAA,kBACE,OAAO;AAAA,gBACT;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IAEA,mBAAmB,KAAK;AACtB,mBAAa,KAAK,GAAG;AAAA,IACvB;AAAA,EACF;AACF;;;ACvCO,SAAS,cAAc,WAAW;AACvC,UAAQ,UAAU;AAAA,SACX,KAAK;AACR,aAAO,EAAE,GAAG,WAAW,QAAQ,WAAW,UAAU,MAAM,EAAE;AAAA,SAEzD,KAAK;AACR,aAAO,EAAE,GAAG,WAAW,QAAQ,UAAU,OAAO,IAAI,aAAa,EAAE;AAAA,SAEhE,KAAK;AAAA,SACL,KAAK;AAAA,SACL,KAAK;AAAA,SACL,KAAK;AAAA,SACL,KAAK;AAAA,SACL,KAAK;AAAA,SACL,KAAK;AACR,aAAO;AAAA;AAEb;AAEA,SAAS,WAAW,QAAQ;AAC1B,SAAO,OACJ,IAAI,CAAC,eAAe;AAAA,IACnB,GAAG;AAAA,IACH,OAAO,cAAc,UAAU,KAAK;AAAA,EACtC,EAAE,EACD;AAAA,IAAK,CAAC,QAAQ,WACb,eAAe,OAAO,KAAK,OAAO,OAAO,KAAK,KAAK;AAAA,EACrD;AACJ;;;ACvBA,SAAS,cAAc,QAAQ;AAC7B,MAAI,MAAM,QAAQ,MAAM,GAAG;AACzB,WAAO,OACJ;AAAA,MACC,CAAC,CAAC,cAAc,SAAS,MACvB,cAAc,oCACd,cAAc,SAAS;AAAA,IAC3B,EACC,KAAK,OAAO;AAAA,EACjB;AAEA,SAAO;AACT;AAWO,SAAS,iCAAiC,SAAS;AAIxD,QAAM,wBAAwB,IAAI,QAAQ;AAI1C,QAAM,+BAA+B,oBAAI,IAAI;AAC7C,SAAO;AAAA,IACL,aAAa,cAAc;AACzB,YAAM,YAAY;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,QACA,QAAQ,cAAc;AAAA,QACtB;AAAA,MACF;AAEA,iBAAW,CAAC,CAAC,cAAc,MAAM,GAAG,SAAS,OAAO,KAAK,WAAW;AAClE,cAAM,YAAY,cAAc,MAAM;AACtC,gBAAQ;AAAA,UACN,IAAI;AAAA,YACF,WAAW,kCAAkC;AAAA,YAC7C;AAAA,cACE,OAAO,QAAQ,OAAO,OAAO;AAAA,YAC/B;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AA2DA,SAAS,gCACP,SACA,8BACA,uBACA,YACA,cACA;AACA,QAAM,YAAY,CAAC;AACnB,QAAM,CAAC,UAAU,aAAa,IAAI;AAAA,IAChC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAGA;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,MAAI,cAAc,WAAW,GAAG;AAG9B,aAAS,IAAI,GAAG,IAAI,cAAc,QAAQ,KAAK;AAC7C;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,cAAc;AAAA,MAChB;AAKA,eAAS,IAAI,IAAI,GAAG,IAAI,cAAc,QAAQ,KAAK;AACjD;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,cAAc;AAAA,UACd,cAAc;AAAA,QAChB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAGA,SAAS,yCACP,SACA,WACA,8BACA,uBACA,sBACA,UACA,cACA;AACA,QAAM,WAAW,QAAQ,YAAY,YAAY;AAEjD,MAAI,CAAC,UAAU;AACb;AAAA,EACF;AAEA,QAAM,CAAC,WAAW,uBAAuB,IACvC;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEF,MAAI,aAAa,WAAW;AAC1B;AAAA,EACF;AAGA;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAGA,aAAW,0BAA0B,yBAAyB;AAE5D,QACE,sBAAsB;AAAA,MACpB;AAAA,MACA;AAAA,MACA;AAAA,IACF,GACA;AACA;AAAA,IACF;AAEA,0BAAsB;AAAA,MACpB;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;AAGA,SAAS,iCACP,SACA,WACA,8BACA,uBACA,sBACA,eACA,eACA;AAEA,MAAI,kBAAkB,eAAe;AACnC;AAAA,EACF;AAEA,MACE,sBAAsB;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,EACF,GACA;AACA;AAAA,EACF;AAEA,wBAAsB,IAAI,eAAe,eAAe,oBAAoB;AAC5E,QAAM,YAAY,QAAQ,YAAY,aAAa;AACnD,QAAM,YAAY,QAAQ,YAAY,aAAa;AAEnD,MAAI,CAAC,aAAa,CAAC,WAAW;AAC5B;AAAA,EACF;AAEA,QAAM,CAAC,WAAW,wBAAwB,IACxC;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF,QAAM,CAAC,WAAW,wBAAwB,IACxC;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAGF;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAGA,aAAW,2BAA2B,0BAA0B;AAC9D;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAGA,aAAW,2BAA2B,0BAA0B;AAC9D;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;AAIA,SAAS,qCACP,SACA,8BACA,uBACA,sBACA,aACA,eACA,aACA,eACA;AACA,QAAM,YAAY,CAAC;AACnB,QAAM,CAAC,WAAW,cAAc,IAAI;AAAA,IAClC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,QAAM,CAAC,WAAW,cAAc,IAAI;AAAA,IAClC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAGA,aAAW,iBAAiB,gBAAgB;AAC1C;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAGA,aAAW,iBAAiB,gBAAgB;AAC1C;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAIA,aAAW,iBAAiB,gBAAgB;AAC1C,eAAW,iBAAiB,gBAAgB;AAC1C;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,uBACP,SACA,WACA,8BACA,uBACA,UACA;AAKA,aAAW,CAAC,cAAc,MAAM,KAAK,OAAO,QAAQ,QAAQ,GAAG;AAI7D,QAAI,OAAO,SAAS,GAAG;AACrB,eAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,iBAAS,IAAI,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AAC1C,gBAAM,WAAW;AAAA,YACf;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,OAAO;AAAA,YACP,OAAO;AAAA,UACT;AAEA,cAAI,UAAU;AACZ,sBAAU,KAAK,QAAQ;AAAA,UACzB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAMA,SAAS,wBACP,SACA,WACA,8BACA,uBACA,kCACA,WACA,WACA;AAMA,aAAW,CAAC,cAAc,OAAO,KAAK,OAAO,QAAQ,SAAS,GAAG;AAC/D,UAAM,UAAU,UAAU;AAE1B,QAAI,SAAS;AACX,iBAAW,UAAU,SAAS;AAC5B,mBAAW,UAAU,SAAS;AAC5B,gBAAM,WAAW;AAAA,YACf;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAEA,cAAI,UAAU;AACZ,sBAAU,KAAK,QAAQ;AAAA,UACzB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAGA,SAAS,aACP,SACA,8BACA,uBACA,kCACA,cACA,QACA,QACA;AACA,QAAM,CAAC,aAAa,OAAO,IAAI,IAAI;AACnC,QAAM,CAAC,aAAa,OAAO,IAAI,IAAI;AASnC,QAAM,uBACJ,oCACC,gBAAgB,eACf,aAAa,WAAW,KACxB,aAAa,WAAW;AAE5B,MAAI,CAAC,sBAAsB;AAEzB,UAAM,QAAQ,MAAM,KAAK;AACzB,UAAM,QAAQ,MAAM,KAAK;AAEzB,QAAI,UAAU,OAAO;AACnB,aAAO;AAAA,QACL,CAAC,cAAc,IAAI,eAAe,6BAA6B;AAAA,QAC/D,CAAC,KAAK;AAAA,QACN,CAAC,KAAK;AAAA,MACR;AAAA,IACF;AAEA,QAAI,mBAAmB,KAAK,MAAM,mBAAmB,KAAK,GAAG;AAC3D,aAAO;AAAA,QACL,CAAC,cAAc,+BAA+B;AAAA,QAC9C,CAAC,KAAK;AAAA,QACN,CAAC,KAAK;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,QAAM,QAAQ,SAAS,QAAQ,SAAS,SAAS,SAAS,KAAK;AAC/D,QAAM,QAAQ,SAAS,QAAQ,SAAS,SAAS,SAAS,KAAK;AAE/D,MAAI,SAAS,SAAS,gBAAgB,OAAO,KAAK,GAAG;AACnD,WAAO;AAAA,MACL;AAAA,QACE;AAAA,QACA,kCAAkC,QAAQ,KAAK,WAAW;AAAA,UACxD;AAAA,QACF;AAAA,MACF;AAAA,MACA,CAAC,KAAK;AAAA,MACN,CAAC,KAAK;AAAA,IACR;AAAA,EACF;AAIA,QAAM,gBAAgB,MAAM;AAC5B,QAAM,gBAAgB,MAAM;AAE5B,MAAI,iBAAiB,eAAe;AAClC,UAAM,YAAY;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,aAAa,KAAK;AAAA,MAClB;AAAA,MACA,aAAa,KAAK;AAAA,MAClB;AAAA,IACF;AACA,WAAO,kBAAkB,WAAW,cAAc,OAAO,KAAK;AAAA,EAChE;AACF;AAEA,SAAS,mBAAmB,WAAW;AACrC,MAAI;AAGJ,QAAM,QAEH,uBAAuB,UAAU,eAAe,QACjD,yBAAyB,SACrB,uBACA,CAAC;AACP,QAAM,sBAAsB;AAAA,IAC1B,MAAM,KAAK;AAAA,IACX,QAAQ,KAAK,IAAI,CAAC,aAAa;AAAA,MAC7B,MAAM,KAAK;AAAA,MACX,MAAM,QAAQ;AAAA,MACd,OAAO,QAAQ;AAAA,IACjB,EAAE;AAAA,EACJ;AACA,SAAO,MAAM,cAAc,mBAAmB,CAAC;AACjD;AAIA,SAAS,gBAAgB,OAAO,OAAO;AACrC,MAAI,WAAW,KAAK,GAAG;AACrB,WAAO,WAAW,KAAK,IACnB,gBAAgB,MAAM,QAAQ,MAAM,MAAM,IAC1C;AAAA,EACN;AAEA,MAAI,WAAW,KAAK,GAAG;AACrB,WAAO;AAAA,EACT;AAEA,MAAI,cAAc,KAAK,GAAG;AACxB,WAAO,cAAc,KAAK,IACtB,gBAAgB,MAAM,QAAQ,MAAM,MAAM,IAC1C;AAAA,EACN;AAEA,MAAI,cAAc,KAAK,GAAG;AACxB,WAAO;AAAA,EACT;AAEA,MAAI,WAAW,KAAK,KAAK,WAAW,KAAK,GAAG;AAC1C,WAAO,UAAU;AAAA,EACnB;AAEA,SAAO;AACT;AAIA,SAAS,0BACP,SACA,8BACA,YACA,cACA;AACA,QAAM,SAAS,6BAA6B,IAAI,YAAY;AAE5D,MAAI,QAAQ;AACV,WAAO;AAAA,EACT;AAEA,QAAM,cAAc,uBAAO,OAAO,IAAI;AACtC,QAAM,gBAAgB,uBAAO,OAAO,IAAI;AAExC;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,QAAM,SAAS,CAAC,aAAa,OAAO,KAAK,aAAa,CAAC;AACvD,+BAA6B,IAAI,cAAc,MAAM;AACrD,SAAO;AACT;AAGA,SAAS,oCACP,SACA,8BACA,UACA;AAEA,QAAM,SAAS,6BAA6B,IAAI,SAAS,YAAY;AAErE,MAAI,QAAQ;AACV,WAAO;AAAA,EACT;AAEA,QAAM,eAAe,YAAY,QAAQ,UAAU,GAAG,SAAS,aAAa;AAC5E,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,EACX;AACF;AAEA,SAAS,+BACP,SACA,YACA,cACA,aACA,eACA;AACA,aAAW,aAAa,aAAa,YAAY;AAC/C,YAAQ,UAAU;AAAA,WACX,KAAK,OAAO;AACf,cAAM,YAAY,UAAU,KAAK;AACjC,YAAI;AAEJ,YAAI,aAAa,UAAU,KAAK,gBAAgB,UAAU,GAAG;AAC3D,qBAAW,WAAW,UAAU,EAAE;AAAA,QACpC;AAEA,cAAM,eAAe,UAAU,QAC3B,UAAU,MAAM,QAChB;AAEJ,YAAI,CAAC,YAAY,eAAe;AAC9B,sBAAY,gBAAgB,CAAC;AAAA,QAC/B;AAEA,oBAAY,cAAc,KAAK,CAAC,YAAY,WAAW,QAAQ,CAAC;AAChE;AAAA,MACF;AAAA,WAEK,KAAK;AACR,sBAAc,UAAU,KAAK,SAAS;AACtC;AAAA,WAEG,KAAK,iBAAiB;AACzB,cAAM,gBAAgB,UAAU;AAChC,cAAM,qBAAqB,gBACvB,YAAY,QAAQ,UAAU,GAAG,aAAa,IAC9C;AAEJ;AAAA,UACE;AAAA,UACA;AAAA,UACA,UAAU;AAAA,UACV;AAAA,UACA;AAAA,QACF;AAEA;AAAA,MACF;AAAA;AAAA,EAEJ;AACF;AAGA,SAAS,kBAAkB,WAAW,cAAc,OAAO,OAAO;AAChE,MAAI,UAAU,SAAS,GAAG;AACxB,WAAO;AAAA,MACL,CAAC,cAAc,UAAU,IAAI,CAAC,CAAC,MAAM,MAAM,MAAM,CAAC;AAAA,MAClD,CAAC,OAAO,GAAG,UAAU,IAAI,CAAC,CAAC,EAAE,OAAO,MAAM,OAAO,EAAE,KAAK,CAAC;AAAA,MACzD,CAAC,OAAO,GAAG,UAAU,IAAI,CAAC,CAAC,EAAE,EAAE,OAAO,MAAM,OAAO,EAAE,KAAK,CAAC;AAAA,IAC7D;AAAA,EACF;AACF;AAKA,IAAM,UAAN,MAAc;AAAA,EACZ,cAAc;AACZ,SAAK,QAAQ,oBAAI,IAAI;AAAA,EACvB;AAAA,EAEA,IAAI,GAAG,GAAG,sBAAsB;AAC9B,QAAI;AAEJ,UAAM,CAAC,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;AAC3C,UAAM,UACH,kBAAkB,KAAK,MAAM,IAAI,IAAI,OAAO,QAC7C,oBAAoB,SAChB,SACA,gBAAgB,IAAI,IAAI;AAE9B,QAAI,WAAW,QAAW;AACxB,aAAO;AAAA,IACT;AAIA,WAAO,uBAAuB,OAAO,yBAAyB;AAAA,EAChE;AAAA,EAEA,IAAI,GAAG,GAAG,sBAAsB;AAC9B,UAAM,CAAC,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;AAE3C,UAAMC,OAAM,KAAK,MAAM,IAAI,IAAI;AAE/B,QAAIA,SAAQ,QAAW;AACrB,WAAK,MAAM,IAAI,MAAM,oBAAI,IAAI,CAAC,CAAC,MAAM,oBAAoB,CAAC,CAAC,CAAC;AAAA,IAC9D,OAAO;AACL,MAAAA,KAAI,IAAI,MAAM,oBAAoB;AAAA,IACpC;AAAA,EACF;AACF;;;ACxwBO,SAAS,4BAA4B,SAAS;AACnD,SAAO;AAAA,IACL,eAAe,MAAM;AACnB,YAAM,WAAW,QAAQ,QAAQ;AACjC,YAAM,aAAa,QAAQ,cAAc;AAEzC,UACE,gBAAgB,QAAQ,KACxB,gBAAgB,UAAU,KAC1B,CAAC,eAAe,QAAQ,UAAU,GAAG,UAAU,UAAU,GACzD;AACA,cAAM,gBAAgB,QAAQ,UAAU;AACxC,cAAM,cAAc,QAAQ,QAAQ;AACpC,gBAAQ;AAAA,UACN,IAAI;AAAA,YACF,sDAAsD,wCAAwC;AAAA,YAC9F;AAAA,cACE,OAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IAEA,eAAe,MAAM;AACnB,YAAM,WAAW,KAAK,KAAK;AAC3B,YAAM,WAAW,gBAAgB,SAAS,QAAQ;AAClD,YAAM,aAAa,QAAQ,cAAc;AAEzC,UACE,YACA,cACA,CAAC,eAAe,QAAQ,UAAU,GAAG,UAAU,UAAU,GACzD;AACA,cAAM,gBAAgB,QAAQ,UAAU;AACxC,cAAM,cAAc,QAAQ,QAAQ;AACpC,gBAAQ;AAAA,UACN,IAAI;AAAA,YACF,aAAa,uDAAuD,wCAAwC;AAAA,YAC5G;AAAA,cACE,OAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,gBAAgB,SAAS,MAAM;AACtC,QAAM,OAAO,QAAQ,YAAY,IAAI;AAErC,MAAI,MAAM;AACR,UAAM,OAAO,YAAY,QAAQ,UAAU,GAAG,KAAK,aAAa;AAEhE,QAAI,gBAAgB,IAAI,GAAG;AACzB,aAAO;AAAA,IACT;AAAA,EACF;AACF;;;ACnDO,SAAS,2BAA2B,SAAS;AAClD,QAAM,SAAS,QAAQ,UAAU;AACjC,QAAM,eAAe,uBAAO,OAAO,IAAI;AAEvC,aAAW,OAAO,QAAQ,YAAY,EAAE,aAAa;AACnD,QAAI,qBAAqB,GAAG,GAAG;AAC7B,mBAAa,IAAI,KAAK,SAAS;AAAA,IACjC;AAAA,EACF;AAEA,SAAO;AAAA,IACL,qBAAqB;AAAA,IACrB,qBAAqB;AAAA,IACrB,wBAAwB;AAAA,IACxB,oBAAoB;AAAA,IACpB,mBAAmB;AAAA,IACnB,0BAA0B;AAAA,EAC5B;AAEA,WAAS,eAAe,MAAM;AAC5B,UAAM,WAAW,KAAK,KAAK;AAC3B,UAAM,UAAU,aAAa;AAC7B,UAAM,eACJ,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO,QAAQ,QAAQ;AACzE,QAAI;AAEJ,QAAI,SAAS;AACX,qBAAe,iBAAiB,QAAQ;AAAA,IAC1C,WAAW,cAAc;AACvB,qBAAe,cAAc,YAAY;AAAA,IAC3C;AAEA,QAAI,cAAc;AAChB,UAAI,iBAAiB,KAAK,MAAM;AAC9B,cAAM,UAAU,wBAAwB,KAAK,IAAI;AACjD,gBAAQ;AAAA,UACN,IAAI,aAAa,qBAAqB,iBAAiB,cAAc;AAAA,YACnE,OAAO,UAAU,CAAC,SAAS,IAAI,IAAI;AAAA,UACrC,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,OAAO;AACL,YAAM,eAAe,OAAO,KAAK;AAAA,QAC/B,GAAG;AAAA,QACH,GAAI,WAAW,QAAQ,WAAW,SAC9B,SACA,OAAO,WAAW;AAAA,MACxB,CAAC;AACD,YAAM,iBAAiB,eAAe,UAAU,YAAY;AAC5D,cAAQ;AAAA,QACN,IAAI;AAAA,UACF,uBAAuB,yCACrB,WAAW,cAAc;AAAA,UAC3B;AAAA,YACE,OAAO,KAAK;AAAA,UACd;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AACA,IAAM,mBAAmB;AAAA,EACvB,CAAC,KAAK,yBAAyB,KAAK;AAAA,EACpC,CAAC,KAAK,yBAAyB,KAAK;AAAA,EACpC,CAAC,KAAK,4BAA4B,KAAK;AAAA,EACvC,CAAC,KAAK,wBAAwB,KAAK;AAAA,EACnC,CAAC,KAAK,uBAAuB,KAAK;AAAA,EAClC,CAAC,KAAK,+BAA+B,KAAK;AAC5C;AAEA,SAAS,cAAc,MAAM;AAC3B,MAAI,aAAa,IAAI,GAAG;AACtB,WAAO,KAAK;AAAA,EACd;AAEA,MAAI,aAAa,IAAI,GAAG;AACtB,WAAO,KAAK;AAAA,EACd;AAEA,MAAI,gBAAgB,IAAI,GAAG;AACzB,WAAO,KAAK;AAAA,EACd;AAEA,MAAI,YAAY,IAAI,GAAG;AACrB,WAAO,KAAK;AAAA,EACd;AAEA,MAAI,WAAW,IAAI,GAAG;AACpB,WAAO,KAAK;AAAA,EACd;AAEA,MAAI,kBAAkB,IAAI,GAAG;AAC3B,WAAO,KAAK;AAAA,EACd;AAIA,EAAS,UAAU,OAAO,sBAAsB,QAAQ,IAAI,CAAC;AAC/D;AAEA,SAAS,wBAAwB,MAAM;AACrC,UAAQ;AAAA,SACD,KAAK;AACR,aAAO;AAAA,SAEJ,KAAK;AACR,aAAO;AAAA,SAEJ,KAAK;AACR,aAAO;AAAA,SAEJ,KAAK;AACR,aAAO;AAAA,SAEJ,KAAK;AACR,aAAO;AAAA,SAEJ,KAAK;AACR,aAAO;AAAA;AAMP,MAAS,UAAU,OAAO,sBAAsB,QAAQ,IAAI,CAAC;AAAA;AAEnE;;;ACrIO,SAAS,8BAA8B,SAAS;AACrD,SAAO;AAAA,IAEL,GAAG,0CAA0C,OAAO;AAAA,IACpD,OAAO;AAAA,MAEL,MAAM,WAAW;AACf,YAAI;AAEJ,cAAM,WAAW,QAAQ,YAAY;AAErC,YAAI,CAAC,UAAU;AACb,iBAAO;AAAA,QACT;AAEA,cAAM,eAAe,IAAI;AAAA,WAEtB,uBAAuB,UAAU,eAAe,QACjD,yBAAyB,SACrB,SACA,qBAAqB,IAAI,CAAC,QAAQ,IAAI,KAAK,KAAK;AAAA,QACtD;AAEA,mBAAW,UAAU,SAAS,MAAM;AAClC,cAAI,CAAC,aAAa,IAAI,OAAO,IAAI,KAAK,mBAAmB,MAAM,GAAG;AAChE,kBAAM,aAAa,QAAQ,OAAO,IAAI;AACtC,oBAAQ;AAAA,cACN,IAAI;AAAA,gBACF,UAAU,SAAS,mBAAmB,OAAO,kBAAkB;AAAA,gBAC/D;AAAA,kBACE,OAAO;AAAA,gBACT;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAKO,SAAS,0CAA0C,SAAS;AACjE,MAAI;AAEJ,QAAM,kBAAkB,uBAAO,OAAO,IAAI;AAC1C,QAAM,SAAS,QAAQ,UAAU;AACjC,QAAM,qBACH,wBACC,WAAW,QAAQ,WAAW,SAC1B,SACA,OAAO,cAAc,OAAO,QAAQ,0BAA0B,SAChE,wBACA;AAEN,aAAW,aAAa,mBAAmB;AACzC,oBAAgB,UAAU,QAAQ;AAAA,MAChC,UAAU,KAAK,OAAO,kBAAkB;AAAA,MACxC,CAAC,QAAQ,IAAI;AAAA,IACf;AAAA,EACF;AAEA,QAAM,iBAAiB,QAAQ,YAAY,EAAE;AAE7C,aAAW,OAAO,gBAAgB;AAChC,QAAI,IAAI,SAAS,KAAK,sBAAsB;AAC1C,UAAI;AAKJ,YAAM,YACH,iBAAiB,IAAI,eAAe,QAAQ,mBAAmB,SAC5D,iBACA,CAAC;AACP,sBAAgB,IAAI,KAAK,SAAS;AAAA,QAChC,SAAS,OAAO,sBAAsB;AAAA,QACtC,CAAC,QAAQ,IAAI,KAAK;AAAA,MACpB;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL,WAAW;AAAA,MAET,MAAM,eAAe;AACnB,cAAM,gBAAgB,cAAc,KAAK;AACzC,cAAM,eAAe,gBAAgB;AAErC,YAAI,cAAc;AAChB,cAAI;AAKJ,gBAAM,YACH,wBAAwB,cAAc,eAAe,QACtD,0BAA0B,SACtB,wBACA,CAAC;AACP,gBAAM,aAAa,IAAI,IAAI,SAAS,IAAI,CAAC,QAAQ,IAAI,KAAK,KAAK,CAAC;AAEhE,qBAAW,CAAC,SAAS,MAAM,KAAK,OAAO,QAAQ,YAAY,GAAG;AAC5D,gBAAI,CAAC,WAAW,IAAI,OAAO,GAAG;AAC5B,oBAAM,UAAU,OAAO,OAAO,IAAI,IAC9B,QAAQ,OAAO,IAAI,IACnB,MAAM,OAAO,IAAI;AACrB,sBAAQ;AAAA,gBACN,IAAI;AAAA,kBACF,eAAe,4BAA4B,qBAAqB;AAAA,kBAChE;AAAA,oBACE,OAAO;AAAA,kBACT;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,uBAAuB,KAAK;AACnC,SAAO,IAAI,KAAK,SAAS,KAAK,iBAAiB,IAAI,gBAAgB;AACrE;;;ACnIO,SAAS,gBAAgB,SAAS;AACvC,SAAO;AAAA,IACL,MAAM,MAAM;AACV,YAAM,OAAO,QAAQ,QAAQ;AAC7B,YAAM,eAAe,KAAK;AAE1B,UAAI,MAAM;AACR,YAAI,WAAW,aAAa,IAAI,CAAC,GAAG;AAClC,cAAI,cAAc;AAChB,kBAAM,YAAY,KAAK,KAAK;AAC5B,kBAAM,UAAU,QAAQ,IAAI;AAC5B,oBAAQ;AAAA,cACN,IAAI;AAAA,gBACF,UAAU,oDAAoD;AAAA,gBAC9D;AAAA,kBACE,OAAO;AAAA,gBACT;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF,WAAW,CAAC,cAAc;AACxB,gBAAM,YAAY,KAAK,KAAK;AAC5B,gBAAM,UAAU,QAAQ,IAAI;AAC5B,kBAAQ;AAAA,YACN,IAAI;AAAA,cACF,UAAU,uBAAuB,8DAA8D;AAAA,cAC/F;AAAA,gBACE,OAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;AC1CO,SAAS,eAAe,MAAM;AACnC,SAAO,KACJ;AAAA,IAAI,CAAC,QACJ,OAAO,QAAQ,WAAW,MAAM,IAAI,SAAS,IAAI,MAAM,MAAM;AAAA,EAC/D,EACC,KAAK,EAAE;AACZ;;;ACNO,SAAS,QAAQ,MAAM,KAAK,UAAU;AAC3C,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAKO,SAAS,YAAY,MAAM;AAChC,QAAM,YAAY,CAAC;AACnB,MAAI,OAAO;AAEX,SAAO,MAAM;AACX,cAAU,KAAK,KAAK,GAAG;AACvB,WAAO,KAAK;AAAA,EACd;AAEA,SAAO,UAAU,QAAQ;AAC3B;;;ACLO,SAAS,iBAAiB,YAAY,MAAMC,WAAU,gBAAgB;AAC3E,SAAO,qBAAqB,YAAY,MAAMA,UAAS,MAAS;AAClE;AAEA,SAAS,eAAe,MAAM,cAAc,OAAO;AACjD,MAAI,cAAc,mBAAmB,QAAQ,YAAY;AAEzD,MAAI,KAAK,SAAS,GAAG;AACnB,mBAAe,aAAa,eAAe,IAAI;AAAA,EACjD;AAEA,QAAM,UAAU,cAAc,OAAO,MAAM;AAC3C,QAAM;AACR;AAEA,SAAS,qBAAqB,YAAY,MAAMA,UAAS,MAAM;AAC7D,MAAI,cAAc,IAAI,GAAG;AACvB,QAAI,cAAc,MAAM;AACtB,aAAO,qBAAqB,YAAY,KAAK,QAAQA,UAAS,IAAI;AAAA,IACpE;AAEA,IAAAA;AAAA,MACE,YAAY,IAAI;AAAA,MAChB;AAAA,MACA,IAAI;AAAA,QACF,+BAA+B,QAAQ,IAAI;AAAA,MAC7C;AAAA,IACF;AACA;AAAA,EACF;AAEA,MAAI,cAAc,MAAM;AAEtB,WAAO;AAAA,EACT;AAEA,MAAI,WAAW,IAAI,GAAG;AACpB,UAAM,WAAW,KAAK;AAEtB,QAAI,iBAAiB,UAAU,GAAG;AAChC,aAAO,MAAM,KAAK,YAAY,CAAC,WAAW,UAAU;AAClD,cAAM,WAAW,QAAQ,MAAM,OAAO,MAAS;AAC/C,eAAO,qBAAqB,WAAW,UAAUA,UAAS,QAAQ;AAAA,MACpE,CAAC;AAAA,IACH;AAEA,WAAO,CAAC,qBAAqB,YAAY,UAAUA,UAAS,IAAI,CAAC;AAAA,EACnE;AAEA,MAAI,kBAAkB,IAAI,GAAG;AAC3B,QAAI,CAAC,aAAa,UAAU,GAAG;AAC7B,MAAAA;AAAA,QACE,YAAY,IAAI;AAAA,QAChB;AAAA,QACA,IAAI,aAAa,kBAAkB,KAAK,wBAAwB;AAAA,MAClE;AACA;AAAA,IACF;AAEA,UAAM,eAAe,CAAC;AACtB,UAAM,YAAY,KAAK,UAAU;AAEjC,eAAW,SAAS,OAAO,OAAO,SAAS,GAAG;AAC5C,YAAM,aAAa,WAAW,MAAM;AAEpC,UAAI,eAAe,QAAW;AAC5B,YAAI,MAAM,iBAAiB,QAAW;AACpC,uBAAa,MAAM,QAAQ,MAAM;AAAA,QACnC,WAAW,cAAc,MAAM,IAAI,GAAG;AACpC,gBAAM,UAAU,QAAQ,MAAM,IAAI;AAClC,UAAAA;AAAA,YACE,YAAY,IAAI;AAAA,YAChB;AAAA,YACA,IAAI;AAAA,cACF,UAAU,MAAM,2BAA2B;AAAA,YAC7C;AAAA,UACF;AAAA,QACF;AAEA;AAAA,MACF;AAEA,mBAAa,MAAM,QAAQ;AAAA,QACzB;AAAA,QACA,MAAM;AAAA,QACNA;AAAA,QACA,QAAQ,MAAM,MAAM,MAAM,KAAK,IAAI;AAAA,MACrC;AAAA,IACF;AAEA,eAAW,aAAa,OAAO,KAAK,UAAU,GAAG;AAC/C,UAAI,CAAC,UAAU,YAAY;AACzB,cAAM,cAAc;AAAA,UAClB;AAAA,UACA,OAAO,KAAK,KAAK,UAAU,CAAC;AAAA,QAC9B;AACA,QAAAA;AAAA,UACE,YAAY,IAAI;AAAA,UAChB;AAAA,UACA,IAAI;AAAA,YACF,UAAU,sCAAsC,KAAK,WACnD,WAAW,WAAW;AAAA,UAC1B;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAEA,MAAI,WAAW,IAAI,GAAG;AACpB,QAAI;AAIJ,QAAI;AACF,oBAAc,KAAK,WAAW,UAAU;AAAA,IAC1C,SAAS,OAAP;AACA,UAAI,iBAAiB,cAAc;AACjC,QAAAA,SAAQ,YAAY,IAAI,GAAG,YAAY,KAAK;AAAA,MAC9C,OAAO;AACL,QAAAA;AAAA,UACE,YAAY,IAAI;AAAA,UAChB;AAAA,UACA,IAAI,aAAa,kBAAkB,KAAK,YAAY,MAAM,SAAS;AAAA,YACjE,eAAe;AAAA,UACjB,CAAC;AAAA,QACH;AAAA,MACF;AAEA;AAAA,IACF;AAEA,QAAI,gBAAgB,QAAW;AAC7B,MAAAA;AAAA,QACE,YAAY,IAAI;AAAA,QAChB;AAAA,QACA,IAAI,aAAa,kBAAkB,KAAK,QAAQ;AAAA,MAClD;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAIA,EAAS,UAAU,OAAO,4BAA4B,QAAQ,IAAI,CAAC;AACrE;;;ACvIO,SAAS,aAAa,WAAW,MAAM,WAAW;AACvD,MAAI,CAAC,WAAW;AAGd;AAAA,EACF;AAEA,MAAI,UAAU,SAAS,KAAK,UAAU;AACpC,UAAM,eAAe,UAAU,KAAK;AAEpC,QAAI,aAAa,QAAQ,UAAU,kBAAkB,QAAW;AAE9D;AAAA,IACF;AAEA,UAAM,gBAAgB,UAAU;AAEhC,QAAI,kBAAkB,QAAQ,cAAc,IAAI,GAAG;AACjD;AAAA,IACF;AAIA,WAAO;AAAA,EACT;AAEA,MAAI,cAAc,IAAI,GAAG;AACvB,QAAI,UAAU,SAAS,KAAK,MAAM;AAChC;AAAA,IACF;AAEA,WAAO,aAAa,WAAW,KAAK,QAAQ,SAAS;AAAA,EACvD;AAEA,MAAI,UAAU,SAAS,KAAK,MAAM;AAEhC,WAAO;AAAA,EACT;AAEA,MAAI,WAAW,IAAI,GAAG;AACpB,UAAM,WAAW,KAAK;AAEtB,QAAI,UAAU,SAAS,KAAK,MAAM;AAChC,YAAM,gBAAgB,CAAC;AAEvB,iBAAW,YAAY,UAAU,QAAQ;AACvC,YAAI,kBAAkB,UAAU,SAAS,GAAG;AAG1C,cAAI,cAAc,QAAQ,GAAG;AAC3B;AAAA,UACF;AAEA,wBAAc,KAAK,IAAI;AAAA,QACzB,OAAO;AACL,gBAAM,YAAY,aAAa,UAAU,UAAU,SAAS;AAE5D,cAAI,cAAc,QAAW;AAC3B;AAAA,UACF;AAEA,wBAAc,KAAK,SAAS;AAAA,QAC9B;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAEA,UAAM,eAAe,aAAa,WAAW,UAAU,SAAS;AAEhE,QAAI,iBAAiB,QAAW;AAC9B;AAAA,IACF;AAEA,WAAO,CAAC,YAAY;AAAA,EACtB;AAEA,MAAI,kBAAkB,IAAI,GAAG;AAC3B,QAAI,UAAU,SAAS,KAAK,QAAQ;AAClC;AAAA,IACF;AAEA,UAAM,aAAa,uBAAO,OAAO,IAAI;AACrC,UAAM,aAAa,OAAO,UAAU,QAAQ,CAAC,UAAU,MAAM,KAAK,KAAK;AAEvE,eAAW,SAAS,OAAO,OAAO,KAAK,UAAU,CAAC,GAAG;AACnD,YAAM,YAAY,WAAW,MAAM;AAEnC,UAAI,CAAC,aAAa,kBAAkB,UAAU,OAAO,SAAS,GAAG;AAC/D,YAAI,MAAM,iBAAiB,QAAW;AACpC,qBAAW,MAAM,QAAQ,MAAM;AAAA,QACjC,WAAW,cAAc,MAAM,IAAI,GAAG;AACpC;AAAA,QACF;AAEA;AAAA,MACF;AAEA,YAAM,aAAa,aAAa,UAAU,OAAO,MAAM,MAAM,SAAS;AAEtE,UAAI,eAAe,QAAW;AAC5B;AAAA,MACF;AAEA,iBAAW,MAAM,QAAQ;AAAA,IAC3B;AAEA,WAAO;AAAA,EACT;AAEA,MAAI,WAAW,IAAI,GAAG;AAIpB,QAAI;AAEJ,QAAI;AACF,eAAS,KAAK,aAAa,WAAW,SAAS;AAAA,IACjD,SAAS,QAAP;AACA;AAAA,IACF;AAEA,QAAI,WAAW,QAAW;AACxB;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAIA,EAAS,UAAU,OAAO,4BAA4B,QAAQ,IAAI,CAAC;AACrE;AAGA,SAAS,kBAAkB,WAAW,WAAW;AAC/C,SACE,UAAU,SAAS,KAAK,aACvB,aAAa,QAAQ,UAAU,UAAU,KAAK,WAAW;AAE9D;;;ACvJO,SAAS,kBAAkB,QAAQ,aAAa,QAAQ,SAAS;AACtE,QAAM,SAAS,CAAC;AAChB,QAAM,YACJ,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ;AAE5D,MAAI;AACF,UAAM,UAAU;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,MACA,CAAC,UAAU;AACT,YAAI,aAAa,QAAQ,OAAO,UAAU,WAAW;AACnD,gBAAM,IAAI;AAAA,YACR;AAAA,UACF;AAAA,QACF;AAEA,eAAO,KAAK,KAAK;AAAA,MACnB;AAAA,IACF;AAEA,QAAI,OAAO,WAAW,GAAG;AACvB,aAAO;AAAA,QACL;AAAA,MACF;AAAA,IACF;AAAA,EACF,SAAS,OAAP;AACA,WAAO,KAAK,KAAK;AAAA,EACnB;AAEA,SAAO;AAAA,IACL;AAAA,EACF;AACF;AAEA,SAAS,qBAAqB,QAAQ,aAAa,QAAQC,UAAS;AAClE,QAAM,gBAAgB,CAAC;AAEvB,aAAW,cAAc,aAAa;AACpC,UAAM,UAAU,WAAW,SAAS,KAAK;AACzC,UAAM,UAAU,YAAY,QAAQ,WAAW,IAAI;AAEnD,QAAI,CAAC,YAAY,OAAO,GAAG;AAGzB,YAAM,aAAa,MAAM,WAAW,IAAI;AACxC,MAAAA;AAAA,QACE,IAAI;AAAA,UACF,cAAc,oCAAoC;AAAA,UAClD;AAAA,YACE,OAAO,WAAW;AAAA,UACpB;AAAA,QACF;AAAA,MACF;AACA;AAAA,IACF;AAEA,QAAI,CAACC,gBAAe,QAAQ,OAAO,GAAG;AACpC,UAAI,WAAW,cAAc;AAC3B,sBAAc,WAAW,aAAa,WAAW,cAAc,OAAO;AAAA,MACxE,WAAW,cAAc,OAAO,GAAG;AACjC,cAAM,aAAa,QAAQ,OAAO;AAClC,QAAAD;AAAA,UACE,IAAI;AAAA,YACF,cAAc,8BAA8B;AAAA,YAC5C;AAAA,cACE,OAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA;AAAA,IACF;AAEA,UAAM,QAAQ,OAAO;AAErB,QAAI,UAAU,QAAQ,cAAc,OAAO,GAAG;AAC5C,YAAM,aAAa,QAAQ,OAAO;AAClC,MAAAA;AAAA,QACE,IAAI;AAAA,UACF,cAAc,8BAA8B;AAAA,UAC5C;AAAA,YACE,OAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AACA;AAAA,IACF;AAEA,kBAAc,WAAW;AAAA,MACvB;AAAA,MACA;AAAA,MACA,CAAC,MAAM,cAAc,UAAU;AAC7B,YAAIE,UACF,cAAc,gCAAgC,QAAQ,YAAY;AAEpE,YAAI,KAAK,SAAS,GAAG;AACnB,UAAAA,WAAU,QAAQ,UAAU,eAAe,IAAI;AAAA,QACjD;AAEA,QAAAF;AAAA,UACE,IAAI,aAAaE,UAAS,OAAO,MAAM,SAAS;AAAA,YAC9C,OAAO;AAAA,YACP,eAAe,MAAM;AAAA,UACvB,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAUO,SAAS,kBAAkB,KAAK,MAAM,gBAAgB;AAC3D,MAAI;AAEJ,QAAM,gBAAgB,CAAC;AAIvB,QAAM,iBACH,kBAAkB,KAAK,eAAe,QAAQ,oBAAoB,SAC/D,kBACA,CAAC;AACP,QAAM,aAAa,OAAO,eAAe,CAAC,QAAQ,IAAI,KAAK,KAAK;AAEhE,aAAW,UAAU,IAAI,MAAM;AAC7B,UAAM,OAAO,OAAO;AACpB,UAAM,UAAU,OAAO;AACvB,UAAM,eAAe,WAAW;AAEhC,QAAI,CAAC,cAAc;AACjB,UAAI,OAAO,iBAAiB,QAAW;AACrC,sBAAc,QAAQ,OAAO;AAAA,MAC/B,WAAW,cAAc,OAAO,GAAG;AACjC,cAAM,IAAI;AAAA,UACR,aAAa,2BAA2B,QAAQ,OAAO;AAAA,UAEvD;AAAA,YACE,OAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAEA;AAAA,IACF;AAEA,UAAM,YAAY,aAAa;AAC/B,QAAI,SAAS,UAAU,SAAS,KAAK;AAErC,QAAI,UAAU,SAAS,KAAK,UAAU;AACpC,YAAM,eAAe,UAAU,KAAK;AAEpC,UACE,kBAAkB,QAClB,CAACD,gBAAe,gBAAgB,YAAY,GAC5C;AACA,YAAI,OAAO,iBAAiB,QAAW;AACrC,wBAAc,QAAQ,OAAO;AAAA,QAC/B,WAAW,cAAc,OAAO,GAAG;AACjC,gBAAM,IAAI;AAAA,YACR,aAAa,2BAA2B,QAAQ,OAAO,kCACtB;AAAA,YACjC;AAAA,cACE,OAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAEA;AAAA,MACF;AAEA,eAAS,eAAe,iBAAiB;AAAA,IAC3C;AAEA,QAAI,UAAU,cAAc,OAAO,GAAG;AACpC,YAAM,IAAI;AAAA,QACR,aAAa,2BAA2B,QAAQ,OAAO;AAAA,QAEvD;AAAA,UACE,OAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAEA,UAAM,eAAe,aAAa,WAAW,SAAS,cAAc;AAEpE,QAAI,iBAAiB,QAAW;AAI9B,YAAM,IAAI;AAAA,QACR,aAAa,2BAA2B,MAAM,SAAS;AAAA,QACvD;AAAA,UACE,OAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAEA,kBAAc,QAAQ;AAAA,EACxB;AAEA,SAAO;AACT;AAaO,SAAS,mBAAmB,cAAc,MAAM,gBAAgB;AACrE,MAAI;AAEJ,QAAM,iBACH,mBAAmB,KAAK,gBAAgB,QAAQ,qBAAqB,SAClE,SACA,iBAAiB;AAAA,IACf,CAAC,cAAc,UAAU,KAAK,UAAU,aAAa;AAAA,EACvD;AAEN,MAAI,eAAe;AACjB,WAAO,kBAAkB,cAAc,eAAe,cAAc;AAAA,EACtE;AACF;AAEA,SAASA,gBAAe,KAAK,MAAM;AACjC,SAAO,OAAO,UAAU,eAAe,KAAK,KAAK,IAAI;AACvD;;;ACpPO,SAAS,cACd,QACA,WACA,gBACA,aACA,cACA;AACA,QAAM,SAAS,oBAAI,IAAI;AACvB;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,oBAAI,IAAI;AAAA,EACV;AACA,SAAO;AACT;AAYO,SAAS,iBACd,QACA,WACA,gBACA,YACA,YACA;AACA,QAAM,gBAAgB,oBAAI,IAAI;AAC9B,QAAM,uBAAuB,oBAAI,IAAI;AAErC,aAAW,QAAQ,YAAY;AAC7B,QAAI,KAAK,cAAc;AACrB;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,KAAK;AAAA,QACL;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,kBACP,QACA,WACA,gBACA,aACA,cACA,QACA,sBACA;AACA,aAAW,aAAa,aAAa,YAAY;AAC/C,YAAQ,UAAU;AAAA,WACX,KAAK,OAAO;AACf,YAAI,CAAC,kBAAkB,gBAAgB,SAAS,GAAG;AACjD;AAAA,QACF;AAEA,cAAM,OAAO,iBAAiB,SAAS;AACvC,cAAM,YAAY,OAAO,IAAI,IAAI;AAEjC,YAAI,cAAc,QAAW;AAC3B,oBAAU,KAAK,SAAS;AAAA,QAC1B,OAAO;AACL,iBAAO,IAAI,MAAM,CAAC,SAAS,CAAC;AAAA,QAC9B;AAEA;AAAA,MACF;AAAA,WAEK,KAAK,iBAAiB;AACzB,YACE,CAAC,kBAAkB,gBAAgB,SAAS,KAC5C,CAAC,2BAA2B,QAAQ,WAAW,WAAW,GAC1D;AACA;AAAA,QACF;AAEA;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,UAAU;AAAA,UACV;AAAA,UACA;AAAA,QACF;AACA;AAAA,MACF;AAAA,WAEK,KAAK,iBAAiB;AACzB,cAAM,WAAW,UAAU,KAAK;AAEhC,YACE,qBAAqB,IAAI,QAAQ,KACjC,CAAC,kBAAkB,gBAAgB,SAAS,GAC5C;AACA;AAAA,QACF;AAEA,6BAAqB,IAAI,QAAQ;AACjC,cAAM,WAAW,UAAU;AAE3B,YACE,CAAC,YACD,CAAC,2BAA2B,QAAQ,UAAU,WAAW,GACzD;AACA;AAAA,QACF;AAEA;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,SAAS;AAAA,UACT;AAAA,UACA;AAAA,QACF;AACA;AAAA,MACF;AAAA;AAAA,EAEJ;AACF;AAMA,SAAS,kBAAkB,gBAAgB,MAAM;AAC/C,QAAM,OAAO,mBAAmB,sBAAsB,MAAM,cAAc;AAE1E,OAAK,SAAS,QAAQ,SAAS,SAAS,SAAS,KAAK,QAAQ,MAAM;AAClE,WAAO;AAAA,EACT;AAEA,QAAM,UAAU;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,OACG,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,QAAQ,OACnE;AACA,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAKA,SAAS,2BAA2B,QAAQ,UAAU,MAAM;AAC1D,QAAM,oBAAoB,SAAS;AAEnC,MAAI,CAAC,mBAAmB;AACtB,WAAO;AAAA,EACT;AAEA,QAAM,kBAAkB,YAAY,QAAQ,iBAAiB;AAE7D,MAAI,oBAAoB,MAAM;AAC5B,WAAO;AAAA,EACT;AAEA,MAAI,eAAe,eAAe,GAAG;AACnC,WAAO,OAAO,UAAU,iBAAiB,IAAI;AAAA,EAC/C;AAEA,SAAO;AACT;AAKA,SAAS,iBAAiB,MAAM;AAC9B,SAAO,KAAK,QAAQ,KAAK,MAAM,QAAQ,KAAK,KAAK;AACnD;;;ACxMO,SAAS,6BAA6B,SAAS;AACpD,SAAO;AAAA,IACL,oBAAoB,MAAM;AACxB,UAAI,KAAK,cAAc,gBAAgB;AACrC,cAAM,SAAS,QAAQ,UAAU;AACjC,cAAM,mBAAmB,OAAO,oBAAoB;AAEpD,YAAI,kBAAkB;AACpB,gBAAM,gBAAgB,KAAK,OAAO,KAAK,KAAK,QAAQ;AACpD,gBAAM,iBAAiB,uBAAO,OAAO,IAAI;AACzC,gBAAME,YAAW,QAAQ,YAAY;AACrC,gBAAM,YAAY,uBAAO,OAAO,IAAI;AAEpC,qBAAW,cAAcA,UAAS,aAAa;AAC7C,gBAAI,WAAW,SAAS,KAAK,qBAAqB;AAChD,wBAAU,WAAW,KAAK,SAAS;AAAA,YACrC;AAAA,UACF;AAEA,gBAAM,SAAS;AAAA,YACb;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,KAAK;AAAA,UACP;AAEA,cAAI,OAAO,OAAO,GAAG;AACnB,kBAAM,sBAAsB,CAAC,GAAG,OAAO,OAAO,CAAC;AAC/C,kBAAM,2BAA2B,oBAAoB,MAAM,CAAC;AAC5D,kBAAM,uBAAuB,yBAAyB,KAAK;AAC3D,oBAAQ;AAAA,cACN,IAAI;AAAA,gBACF,iBAAiB,OACb,iBAAiB,yDACjB;AAAA,gBACJ;AAAA,kBACE,OAAO;AAAA,gBACT;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,qBAAW,cAAc,OAAO,OAAO,GAAG;AACxC,kBAAM,QAAQ,WAAW;AACzB,kBAAM,YAAY,MAAM,KAAK;AAE7B,gBAAI,UAAU,WAAW,IAAI,GAAG;AAC9B,sBAAQ;AAAA,gBACN,IAAI;AAAA,kBACF,iBAAiB,OACb,iBAAiB,qEACjB;AAAA,kBACJ;AAAA,oBACE,OAAO;AAAA,kBACT;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ACzEO,SAAS,QAAQ,MAAM,OAAO;AACnC,QAAM,SAAS,oBAAI,IAAI;AAEvB,aAAW,QAAQ,MAAM;AACvB,UAAM,MAAM,MAAM,IAAI;AACtB,UAAM,QAAQ,OAAO,IAAI,GAAG;AAE5B,QAAI,UAAU,QAAW;AACvB,aAAO,IAAI,KAAK,CAAC,IAAI,CAAC;AAAA,IACxB,OAAO;AACL,YAAM,KAAK,IAAI;AAAA,IACjB;AAAA,EACF;AAEA,SAAO;AACT;;;ACTO,SAAS,kCAAkC,SAAS;AACzD,SAAO;AAAA,IACL,oBAAoB,eAAe;AACjC,UAAI;AAKJ,YAAM,iBACH,wBAAwB,cAAc,eAAe,QACtD,0BAA0B,SACtB,wBACA,CAAC;AACP,aAAO,mBAAmB,IAAI,cAAc,KAAK,SAAS,aAAa;AAAA,IACzE;AAAA,IAEA,yBAAyB;AAAA,IACzB,wBAAwB;AAAA,IACxB,sBAAsB;AAAA,IACtB,qBAAqB;AAAA,EACvB;AAEA,WAAS,2BAA2B,UAAU;AAC5C,QAAI;AAEJ,UAAM,WAAW,SAAS,KAAK;AAI/B,UAAM,cACH,mBAAmB,SAAS,YAAY,QACzC,qBAAqB,SACjB,mBACA,CAAC;AAEP,eAAW,YAAY,YAAY;AACjC,UAAI;AAEJ,YAAM,YAAY,SAAS,KAAK;AAIhC,YAAM,iBACH,sBAAsB,SAAS,eAAe,QAC/C,wBAAwB,SACpB,sBACA,CAAC;AACP,yBAAmB,GAAG,YAAY,aAAa,aAAa;AAAA,IAC9D;AAEA,WAAO;AAAA,EACT;AAEA,WAAS,mBAAmB,YAAY,eAAe;AACrD,UAAM,WAAW,QAAQ,eAAe,CAAC,QAAQ,IAAI,KAAK,KAAK;AAE/D,eAAW,CAAC,SAAS,QAAQ,KAAK,UAAU;AAC1C,UAAI,SAAS,SAAS,GAAG;AACvB,gBAAQ;AAAA,UACN,IAAI;AAAA,YACF,aAAa,cAAc;AAAA,YAC3B;AAAA,cACE,OAAO,SAAS,IAAI,CAAC,SAAS,KAAK,IAAI;AAAA,YACzC;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AACF;;;ACrEO,SAAS,wBAAwB,SAAS;AAC/C,SAAO;AAAA,IACL,OAAO;AAAA,IACP,WAAW;AAAA,EACb;AAEA,WAAS,mBAAmB,YAAY;AACtC,QAAI;AAKJ,UAAM,iBACH,wBAAwB,WAAW,eAAe,QACnD,0BAA0B,SACtB,wBACA,CAAC;AACP,UAAM,WAAW,QAAQ,eAAe,CAAC,QAAQ,IAAI,KAAK,KAAK;AAE/D,eAAW,CAAC,SAAS,QAAQ,KAAK,UAAU;AAC1C,UAAI,SAAS,SAAS,GAAG;AACvB,gBAAQ;AAAA,UACN,IAAI;AAAA,YACF,yCAAyC;AAAA,YACzC;AAAA,cACE,OAAO,SAAS,IAAI,CAAC,SAAS,KAAK,IAAI;AAAA,YACzC;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ACpCO,SAAS,yBAAyB,SAAS;AAChD,QAAM,sBAAsB,uBAAO,OAAO,IAAI;AAC9C,QAAM,SAAS,QAAQ,UAAU;AACjC,SAAO;AAAA,IACL,oBAAoB,MAAM;AACxB,YAAM,gBAAgB,KAAK,KAAK;AAEhC,UACE,WAAW,QACX,WAAW,UACX,OAAO,aAAa,aAAa,GACjC;AACA,gBAAQ;AAAA,UACN,IAAI;AAAA,YACF,eAAe;AAAA,YACf;AAAA,cACE,OAAO,KAAK;AAAA,YACd;AAAA,UACF;AAAA,QACF;AACA;AAAA,MACF;AAEA,UAAI,oBAAoB,gBAAgB;AACtC,gBAAQ;AAAA,UACN,IAAI;AAAA,YACF,2CAA2C;AAAA,YAC3C;AAAA,cACE,OAAO,CAAC,oBAAoB,gBAAgB,KAAK,IAAI;AAAA,YACvD;AAAA,UACF;AAAA,QACF;AAAA,MACF,OAAO;AACL,4BAAoB,iBAAiB,KAAK;AAAA,MAC5C;AAEA,aAAO;AAAA,IACT;AAAA,EACF;AACF;;;AC9BO,SAAS,gCAAgC,SAAS;AACvD,QAAM,qBAAqB,uBAAO,OAAO,IAAI;AAC7C,QAAM,SAAS,QAAQ,UAAU;AACjC,QAAM,oBAAoB,SACtB,OAAO,cAAc,IACrB;AAEJ,aAAW,aAAa,mBAAmB;AACzC,uBAAmB,UAAU,QAAQ,CAAC,UAAU;AAAA,EAClD;AAEA,QAAM,iBAAiB,QAAQ,YAAY,EAAE;AAE7C,aAAW,OAAO,gBAAgB;AAChC,QAAI,IAAI,SAAS,KAAK,sBAAsB;AAC1C,yBAAmB,IAAI,KAAK,SAAS,CAAC,IAAI;AAAA,IAC5C;AAAA,EACF;AAEA,QAAM,mBAAmB,uBAAO,OAAO,IAAI;AAC3C,QAAM,oBAAoB,uBAAO,OAAO,IAAI;AAC5C,SAAO;AAAA,IAIL,MAAM,MAAM;AACV,UAAI,EAAE,gBAAgB,SAAS,CAAC,KAAK,YAAY;AAC/C;AAAA,MACF;AAEA,UAAI;AAEJ,UACE,KAAK,SAAS,KAAK,qBACnB,KAAK,SAAS,KAAK,kBACnB;AACA,yBAAiB;AAAA,MACnB,WAAW,qBAAqB,IAAI,KAAK,oBAAoB,IAAI,GAAG;AAClE,cAAM,WAAW,KAAK,KAAK;AAC3B,yBAAiB,kBAAkB;AAEnC,YAAI,mBAAmB,QAAW;AAChC,4BAAkB,YAAY,iBAAiB,uBAAO,OAAO,IAAI;AAAA,QACnE;AAAA,MACF,OAAO;AACL,yBAAiB,uBAAO,OAAO,IAAI;AAAA,MACrC;AAEA,iBAAW,aAAa,KAAK,YAAY;AACvC,cAAM,gBAAgB,UAAU,KAAK;AAErC,YAAI,mBAAmB,gBAAgB;AACrC,cAAI,eAAe,gBAAgB;AACjC,oBAAQ;AAAA,cACN,IAAI;AAAA,gBACF,mBAAmB;AAAA,gBACnB;AAAA,kBACE,OAAO,CAAC,eAAe,gBAAgB,SAAS;AAAA,gBAClD;AAAA,cACF;AAAA,YACF;AAAA,UACF,OAAO;AACL,2BAAe,iBAAiB;AAAA,UAClC;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;AC5EO,SAAS,yBAAyB,SAAS;AAChD,QAAM,SAAS,QAAQ,UAAU;AACjC,QAAM,kBAAkB,SAAS,OAAO,WAAW,IAAI,uBAAO,OAAO,IAAI;AACzE,QAAM,kBAAkB,uBAAO,OAAO,IAAI;AAC1C,SAAO;AAAA,IACL,oBAAoB;AAAA,IACpB,mBAAmB;AAAA,EACrB;AAEA,WAAS,qBAAqB,MAAM;AAClC,QAAI;AAEJ,UAAM,WAAW,KAAK,KAAK;AAE3B,QAAI,CAAC,gBAAgB,WAAW;AAC9B,sBAAgB,YAAY,uBAAO,OAAO,IAAI;AAAA,IAChD;AAIA,UAAM,cACH,eAAe,KAAK,YAAY,QAAQ,iBAAiB,SACtD,eACA,CAAC;AACP,UAAM,aAAa,gBAAgB;AAEnC,eAAW,YAAY,YAAY;AACjC,YAAM,YAAY,SAAS,KAAK;AAChC,YAAM,eAAe,gBAAgB;AAErC,UAAI,WAAW,YAAY,KAAK,aAAa,SAAS,SAAS,GAAG;AAChE,gBAAQ;AAAA,UACN,IAAI;AAAA,YACF,eAAe,YAAY;AAAA,YAC3B;AAAA,cACE,OAAO,SAAS;AAAA,YAClB;AAAA,UACF;AAAA,QACF;AAAA,MACF,WAAW,WAAW,YAAY;AAChC,gBAAQ;AAAA,UACN,IAAI;AAAA,YACF,eAAe,YAAY;AAAA,YAC3B;AAAA,cACE,OAAO,CAAC,WAAW,YAAY,SAAS,IAAI;AAAA,YAC9C;AAAA,UACF;AAAA,QACF;AAAA,MACF,OAAO;AACL,mBAAW,aAAa,SAAS;AAAA,MACnC;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AACF;;;ACnDO,SAAS,+BAA+B,SAAS;AACtD,QAAM,SAAS,QAAQ,UAAU;AACjC,QAAM,kBAAkB,SAAS,OAAO,WAAW,IAAI,uBAAO,OAAO,IAAI;AACzE,QAAM,kBAAkB,uBAAO,OAAO,IAAI;AAC1C,SAAO;AAAA,IACL,2BAA2B;AAAA,IAC3B,0BAA0B;AAAA,IAC1B,yBAAyB;AAAA,IACzB,wBAAwB;AAAA,IACxB,sBAAsB;AAAA,IACtB,qBAAqB;AAAA,EACvB;AAEA,WAAS,qBAAqB,MAAM;AAClC,QAAI;AAEJ,UAAM,WAAW,KAAK,KAAK;AAE3B,QAAI,CAAC,gBAAgB,WAAW;AAC9B,sBAAgB,YAAY,uBAAO,OAAO,IAAI;AAAA,IAChD;AAIA,UAAM,cACH,eAAe,KAAK,YAAY,QAAQ,iBAAiB,SACtD,eACA,CAAC;AACP,UAAM,aAAa,gBAAgB;AAEnC,eAAW,YAAY,YAAY;AACjC,YAAM,YAAY,SAAS,KAAK;AAEhC,UAAI,SAAS,gBAAgB,WAAW,SAAS,GAAG;AAClD,gBAAQ;AAAA,UACN,IAAI;AAAA,YACF,UAAU,YAAY;AAAA,YACtB;AAAA,cACE,OAAO,SAAS;AAAA,YAClB;AAAA,UACF;AAAA,QACF;AAAA,MACF,WAAW,WAAW,YAAY;AAChC,gBAAQ;AAAA,UACN,IAAI;AAAA,YACF,UAAU,YAAY;AAAA,YACtB;AAAA,cACE,OAAO,CAAC,WAAW,YAAY,SAAS,IAAI;AAAA,YAC9C;AAAA,UACF;AAAA,QACF;AAAA,MACF,OAAO;AACL,mBAAW,aAAa,SAAS;AAAA,MACnC;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AACF;AAEA,SAAS,SAAS,MAAM,WAAW;AACjC,MAAI,aAAa,IAAI,KAAK,gBAAgB,IAAI,KAAK,kBAAkB,IAAI,GAAG;AAC1E,WAAO,KAAK,UAAU,EAAE,cAAc;AAAA,EACxC;AAEA,SAAO;AACT;;;ACrEO,SAAS,wBAAwB,SAAS;AAC/C,QAAM,qBAAqB,uBAAO,OAAO,IAAI;AAC7C,SAAO;AAAA,IACL,qBAAqB,MAAM;AAAA,IAE3B,mBAAmB,MAAM;AACvB,YAAM,eAAe,KAAK,KAAK;AAE/B,UAAI,mBAAmB,eAAe;AACpC,gBAAQ;AAAA,UACN,IAAI;AAAA,YACF,yCAAyC;AAAA,YACzC;AAAA,cACE,OAAO,CAAC,mBAAmB,eAAe,KAAK,IAAI;AAAA,YACrD;AAAA,UACF;AAAA,QACF;AAAA,MACF,OAAO;AACL,2BAAmB,gBAAgB,KAAK;AAAA,MAC1C;AAEA,aAAO;AAAA,IACT;AAAA,EACF;AACF;;;ACtBO,SAAS,0BAA0B,SAAS;AACjD,QAAM,iBAAiB,CAAC;AACxB,MAAI,aAAa,uBAAO,OAAO,IAAI;AACnC,SAAO;AAAA,IACL,aAAa;AAAA,MACX,QAAQ;AACN,uBAAe,KAAK,UAAU;AAC9B,qBAAa,uBAAO,OAAO,IAAI;AAAA,MACjC;AAAA,MAEA,QAAQ;AACN,cAAM,iBAAiB,eAAe,IAAI;AAC1C,0BAAkB,UAAU,KAAK;AACjC,qBAAa;AAAA,MACf;AAAA,IACF;AAAA,IAEA,YAAY,MAAM;AAChB,YAAM,YAAY,KAAK,KAAK;AAE5B,UAAI,WAAW,YAAY;AACzB,gBAAQ;AAAA,UACN,IAAI;AAAA,YACF,4CAA4C;AAAA,YAC5C;AAAA,cACE,OAAO,CAAC,WAAW,YAAY,KAAK,IAAI;AAAA,YAC1C;AAAA,UACF;AAAA,QACF;AAAA,MACF,OAAO;AACL,mBAAW,aAAa,KAAK;AAAA,MAC/B;AAAA,IACF;AAAA,EACF;AACF;;;ACpCO,SAAS,yBAAyB,SAAS;AAChD,QAAM,sBAAsB,uBAAO,OAAO,IAAI;AAC9C,SAAO;AAAA,IACL,oBAAoB,MAAM;AACxB,YAAM,gBAAgB,KAAK;AAE3B,UAAI,eAAe;AACjB,YAAI,oBAAoB,cAAc,QAAQ;AAC5C,kBAAQ;AAAA,YACN,IAAI;AAAA,cACF,0CAA0C,cAAc;AAAA,cACxD;AAAA,gBACE,OAAO;AAAA,kBACL,oBAAoB,cAAc;AAAA,kBAClC;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF,OAAO;AACL,8BAAoB,cAAc,SAAS;AAAA,QAC7C;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA,IAEA,oBAAoB,MAAM;AAAA,EAC5B;AACF;;;AC/BO,SAAS,yBAAyB,SAAS;AAChD,QAAM,SAAS,QAAQ,UAAU;AACjC,QAAM,wBAAwB,uBAAO,OAAO,IAAI;AAChD,QAAM,yBAAyB,SAC3B;AAAA,IACE,OAAO,OAAO,aAAa;AAAA,IAC3B,UAAU,OAAO,gBAAgB;AAAA,IACjC,cAAc,OAAO,oBAAoB;AAAA,EAC3C,IACA,CAAC;AACL,SAAO;AAAA,IACL,kBAAkB;AAAA,IAClB,iBAAiB;AAAA,EACnB;AAEA,WAAS,oBAAoB,MAAM;AACjC,QAAI;AAKJ,UAAM,uBACH,uBAAuB,KAAK,oBAAoB,QACjD,yBAAyB,SACrB,uBACA,CAAC;AAEP,eAAW,iBAAiB,qBAAqB;AAC/C,YAAM,YAAY,cAAc;AAChC,YAAM,8BAA8B,sBAAsB;AAE1D,UAAI,uBAAuB,YAAY;AACrC,gBAAQ;AAAA,UACN,IAAI;AAAA,YACF,YAAY;AAAA,YACZ;AAAA,cACE,OAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAAA,MACF,WAAW,6BAA6B;AACtC,gBAAQ;AAAA,UACN,IAAI;AAAA,YACF,yBAAyB;AAAA,YACzB;AAAA,cACE,OAAO,CAAC,6BAA6B,aAAa;AAAA,YACpD;AAAA,UACF;AAAA,QACF;AAAA,MACF,OAAO;AACL,8BAAsB,aAAa;AAAA,MACrC;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AACF;;;ACxDO,SAAS,oBAAoB,SAAS;AAC3C,QAAM,iBAAiB,uBAAO,OAAO,IAAI;AACzC,QAAM,SAAS,QAAQ,UAAU;AACjC,SAAO;AAAA,IACL,sBAAsB;AAAA,IACtB,sBAAsB;AAAA,IACtB,yBAAyB;AAAA,IACzB,qBAAqB;AAAA,IACrB,oBAAoB;AAAA,IACpB,2BAA2B;AAAA,EAC7B;AAEA,WAAS,cAAc,MAAM;AAC3B,UAAM,WAAW,KAAK,KAAK;AAE3B,QAAI,WAAW,QAAQ,WAAW,UAAU,OAAO,QAAQ,QAAQ,GAAG;AACpE,cAAQ;AAAA,QACN,IAAI;AAAA,UACF,SAAS;AAAA,UACT;AAAA,YACE,OAAO,KAAK;AAAA,UACd;AAAA,QACF;AAAA,MACF;AACA;AAAA,IACF;AAEA,QAAI,eAAe,WAAW;AAC5B,cAAQ;AAAA,QACN,IAAI,aAAa,qCAAqC,cAAc;AAAA,UAClE,OAAO,CAAC,eAAe,WAAW,KAAK,IAAI;AAAA,QAC7C,CAAC;AAAA,MACH;AAAA,IACF,OAAO;AACL,qBAAe,YAAY,KAAK;AAAA,IAClC;AAEA,WAAO;AAAA,EACT;AACF;;;ACtCO,SAAS,wBAAwB,SAAS;AAC/C,SAAO;AAAA,IACL,oBAAoB,eAAe;AACjC,UAAI;AAKJ,YAAM,uBACH,wBAAwB,cAAc,yBAAyB,QAChE,0BAA0B,SACtB,wBACA,CAAC;AACP,YAAM,0BAA0B;AAAA,QAC9B;AAAA,QACA,CAAC,SAAS,KAAK,SAAS,KAAK;AAAA,MAC/B;AAEA,iBAAW,CAAC,cAAc,aAAa,KAAK,yBAAyB;AACnE,YAAI,cAAc,SAAS,GAAG;AAC5B,kBAAQ;AAAA,YACN,IAAI;AAAA,cACF,0CAA0C;AAAA,cAC1C;AAAA,gBACE,OAAO,cAAc,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI;AAAA,cACvD;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;AChBO,SAAS,wBAAwB,SAAS;AAC/C,SAAO;AAAA,IACL,UAAU,MAAM;AAGd,YAAM,OAAO,gBAAgB,QAAQ,mBAAmB,CAAC;AAEzD,UAAI,CAAC,WAAW,IAAI,GAAG;AACrB,yBAAiB,SAAS,IAAI;AAC9B,eAAO;AAAA,MACT;AAAA,IACF;AAAA,IAEA,YAAY,MAAM;AAChB,YAAM,OAAO,aAAa,QAAQ,aAAa,CAAC;AAEhD,UAAI,CAAC,kBAAkB,IAAI,GAAG;AAC5B,yBAAiB,SAAS,IAAI;AAC9B,eAAO;AAAA,MACT;AAEA,YAAM,eAAe,OAAO,KAAK,QAAQ,CAAC,UAAU,MAAM,KAAK,KAAK;AAEpE,iBAAW,YAAY,OAAO,OAAO,KAAK,UAAU,CAAC,GAAG;AACtD,cAAM,YAAY,aAAa,SAAS;AAExC,YAAI,CAAC,aAAa,qBAAqB,QAAQ,GAAG;AAChD,gBAAM,UAAU,QAAQ,SAAS,IAAI;AACrC,kBAAQ;AAAA,YACN,IAAI;AAAA,cACF,UAAU,KAAK,QAAQ,SAAS,2BAA2B;AAAA,cAC3D;AAAA,gBACE,OAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IAEA,YAAY,MAAM;AAChB,YAAM,aAAa,aAAa,QAAQ,mBAAmB,CAAC;AAC5D,YAAM,YAAY,QAAQ,aAAa;AAEvC,UAAI,CAAC,aAAa,kBAAkB,UAAU,GAAG;AAC/C,cAAM,cAAc;AAAA,UAClB,KAAK,KAAK;AAAA,UACV,OAAO,KAAK,WAAW,UAAU,CAAC;AAAA,QACpC;AACA,gBAAQ;AAAA,UACN,IAAI;AAAA,YACF,UAAU,KAAK,KAAK,kCAAkC,WAAW,WAC/D,WAAW,WAAW;AAAA,YACxB;AAAA,cACE,OAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IAEA,UAAU,MAAM;AACd,YAAM,OAAO,QAAQ,aAAa;AAElC,UAAI,cAAc,IAAI,GAAG;AACvB,gBAAQ;AAAA,UACN,IAAI;AAAA,YACF,2BAA2B,QAAQ,IAAI,aAAa,MAAM,IAAI;AAAA,YAC9D;AAAA,cACE,OAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IAEA,WAAW,CAAC,SAAS,iBAAiB,SAAS,IAAI;AAAA,IACnD,UAAU,CAAC,SAAS,iBAAiB,SAAS,IAAI;AAAA,IAClD,YAAY,CAAC,SAAS,iBAAiB,SAAS,IAAI;AAAA,IACpD,aAAa,CAAC,SAAS,iBAAiB,SAAS,IAAI;AAAA,IACrD,cAAc,CAAC,SAAS,iBAAiB,SAAS,IAAI;AAAA,EACxD;AACF;AAMA,SAAS,iBAAiB,SAAS,MAAM;AAEvC,QAAM,eAAe,QAAQ,aAAa;AAE1C,MAAI,CAAC,cAAc;AACjB;AAAA,EACF;AAEA,QAAM,OAAO,aAAa,YAAY;AAEtC,MAAI,CAAC,WAAW,IAAI,GAAG;AACrB,UAAM,UAAU,QAAQ,YAAY;AACpC,YAAQ;AAAA,MACN,IAAI;AAAA,QACF,2BAA2B,mBAAmB,MAAM,IAAI;AAAA,QACxD;AAAA,UACE,OAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AACA;AAAA,EACF;AAGA,MAAI;AACF,UAAM,cAAc,KAAK;AAAA,MACvB;AAAA,MACA;AAAA,IAEF;AAEA,QAAI,gBAAgB,QAAW;AAC7B,YAAM,UAAU,QAAQ,YAAY;AACpC,cAAQ;AAAA,QACN,IAAI;AAAA,UACF,2BAA2B,mBAAmB,MAAM,IAAI;AAAA,UACxD;AAAA,YACE,OAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,SAAS,OAAP;AACA,UAAM,UAAU,QAAQ,YAAY;AAEpC,QAAI,iBAAiB,cAAc;AACjC,cAAQ,YAAY,KAAK;AAAA,IAC3B,OAAO;AACL,cAAQ;AAAA,QACN,IAAI;AAAA,UACF,2BAA2B,mBAAmB,MAAM,IAAI,QACtD,MAAM;AAAA,UACR;AAAA,YACE,OAAO;AAAA,YACP,eAAe;AAAA,UACjB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;AC/JO,SAAS,2BAA2B,SAAS;AAClD,SAAO;AAAA,IACL,mBAAmB,MAAM;AACvB,YAAM,OAAO,YAAY,QAAQ,UAAU,GAAG,KAAK,IAAI;AAEvD,UAAI,SAAS,UAAa,CAAC,YAAY,IAAI,GAAG;AAC5C,cAAM,eAAe,KAAK,SAAS,KAAK;AACxC,cAAM,WAAW,MAAM,KAAK,IAAI;AAChC,gBAAQ;AAAA,UACN,IAAI;AAAA,YACF,cAAc,2CAA2C;AAAA,YACzD;AAAA,cACE,OAAO,KAAK;AAAA,YACd;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;AClBO,SAAS,+BAA+B,SAAS;AACtD,MAAI,YAAY,uBAAO,OAAO,IAAI;AAClC,SAAO;AAAA,IACL,qBAAqB;AAAA,MACnB,QAAQ;AACN,oBAAY,uBAAO,OAAO,IAAI;AAAA,MAChC;AAAA,MAEA,MAAM,WAAW;AACf,cAAM,SAAS,QAAQ,2BAA2B,SAAS;AAE3D,mBAAW,EAAE,MAAM,MAAM,aAAa,KAAK,QAAQ;AACjD,gBAAM,UAAU,KAAK,KAAK;AAC1B,gBAAM,SAAS,UAAU;AAEzB,cAAI,UAAU,MAAM;AAMlB,kBAAM,SAAS,QAAQ,UAAU;AACjC,kBAAM,UAAU,YAAY,QAAQ,OAAO,IAAI;AAE/C,gBACE,WACA,CAAC;AAAA,cACC;AAAA,cACA;AAAA,cACA,OAAO;AAAA,cACP;AAAA,cACA;AAAA,YACF,GACA;AACA,oBAAM,aAAa,QAAQ,OAAO;AAClC,oBAAM,UAAU,QAAQ,IAAI;AAC5B,sBAAQ;AAAA,gBACN,IAAI;AAAA,kBACF,cAAc,qBAAqB,gDAAgD;AAAA,kBACnF;AAAA,oBACE,OAAO,CAAC,QAAQ,IAAI;AAAA,kBACtB;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IAEA,mBAAmB,MAAM;AACvB,gBAAU,KAAK,SAAS,KAAK,SAAS;AAAA,IACxC;AAAA,EACF;AACF;AAOA,SAAS,qBACP,QACA,SACA,iBACA,cACA,sBACA;AACA,MAAI,cAAc,YAAY,KAAK,CAAC,cAAc,OAAO,GAAG;AAC1D,UAAM,iCACJ,mBAAmB,QAAQ,gBAAgB,SAAS,KAAK;AAC3D,UAAM,0BAA0B,yBAAyB;AAEzD,QAAI,CAAC,kCAAkC,CAAC,yBAAyB;AAC/D,aAAO;AAAA,IACT;AAEA,UAAM,uBAAuB,aAAa;AAC1C,WAAO,gBAAgB,QAAQ,SAAS,oBAAoB;AAAA,EAC9D;AAEA,SAAO,gBAAgB,QAAQ,SAAS,YAAY;AACtD;;;ACtBO,IAAM,iBAAiB,OAAO,OAAO;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAKM,IAAM,oBAAoB,OAAO,OAAO;AAAA,EAC7C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;;;ACjHM,IAAM,uBAAN,MAA2B;AAAA,EAChC,YAAY,KAAKC,UAAS;AACxB,SAAK,OAAO;AACZ,SAAK,aAAa;AAClB,SAAK,mBAAmB,oBAAI,IAAI;AAChC,SAAK,kCAAkC,oBAAI,IAAI;AAC/C,SAAK,WAAWA;AAAA,EAClB;AAAA,EAEA,KAAK,OAAO,eAAe;AACzB,WAAO;AAAA,EACT;AAAA,EAEA,YAAY,OAAO;AACjB,SAAK,SAAS,KAAK;AAAA,EACrB;AAAA,EAEA,cAAc;AACZ,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,YAAY,MAAM;AAChB,QAAI;AAEJ,QAAI,KAAK,YAAY;AACnB,kBAAY,KAAK;AAAA,IACnB,OAAO;AACL,kBAAY,uBAAO,OAAO,IAAI;AAE9B,iBAAW,WAAW,KAAK,YAAY,EAAE,aAAa;AACpD,YAAI,QAAQ,SAAS,KAAK,qBAAqB;AAC7C,oBAAU,QAAQ,KAAK,SAAS;AAAA,QAClC;AAAA,MACF;AAEA,WAAK,aAAa;AAAA,IACpB;AAEA,WAAO,UAAU;AAAA,EACnB;AAAA,EAEA,mBAAmB,MAAM;AACvB,QAAI,UAAU,KAAK,iBAAiB,IAAI,IAAI;AAE5C,QAAI,CAAC,SAAS;AACZ,gBAAU,CAAC;AACX,YAAM,cAAc,CAAC,IAAI;AACzB,UAAI;AAEJ,aAAQ,MAAM,YAAY,IAAI,GAAI;AAChC,mBAAW,aAAa,IAAI,YAAY;AACtC,cAAI,UAAU,SAAS,KAAK,iBAAiB;AAC3C,oBAAQ,KAAK,SAAS;AAAA,UACxB,WAAW,UAAU,cAAc;AACjC,wBAAY,KAAK,UAAU,YAAY;AAAA,UACzC;AAAA,QACF;AAAA,MACF;AAEA,WAAK,iBAAiB,IAAI,MAAM,OAAO;AAAA,IACzC;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,kCAAkC,WAAW;AAC3C,QAAI,YAAY,KAAK,gCAAgC,IAAI,SAAS;AAElE,QAAI,CAAC,WAAW;AACd,kBAAY,CAAC;AACb,YAAM,iBAAiB,uBAAO,OAAO,IAAI;AACzC,YAAM,eAAe,CAAC,UAAU,YAAY;AAC5C,UAAI;AAEJ,aAAQ,OAAO,aAAa,IAAI,GAAI;AAClC,mBAAWC,WAAU,KAAK,mBAAmB,IAAI,GAAG;AAClD,gBAAM,WAAWA,QAAO,KAAK;AAE7B,cAAI,eAAe,cAAc,MAAM;AACrC,2BAAe,YAAY;AAC3B,kBAAM,WAAW,KAAK,YAAY,QAAQ;AAE1C,gBAAI,UAAU;AACZ,wBAAU,KAAK,QAAQ;AACvB,2BAAa,KAAK,SAAS,YAAY;AAAA,YACzC;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,WAAK,gCAAgC,IAAI,WAAW,SAAS;AAAA,IAC/D;AAEA,WAAO;AAAA,EACT;AACF;AACO,IAAM,uBAAN,cAAmC,qBAAqB;AAAA,EAC7D,YAAY,KAAK,QAAQD,UAAS;AAChC,UAAM,KAAKA,QAAO;AAClB,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,KAAK,OAAO,eAAe;AACzB,WAAO;AAAA,EACT;AAAA,EAEA,YAAY;AACV,WAAO,KAAK;AAAA,EACd;AACF;AACO,IAAM,oBAAN,cAAgC,qBAAqB;AAAA,EAC1D,YAAY,QAAQ,KAAK,UAAUA,UAAS;AAC1C,UAAM,KAAKA,QAAO;AAClB,SAAK,UAAU;AACf,SAAK,YAAY;AACjB,SAAK,kBAAkB,oBAAI,IAAI;AAC/B,SAAK,2BAA2B,oBAAI,IAAI;AAAA,EAC1C;AAAA,EAEA,KAAK,OAAO,eAAe;AACzB,WAAO;AAAA,EACT;AAAA,EAEA,YAAY;AACV,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,kBAAkB,MAAM;AACtB,QAAI,SAAS,KAAK,gBAAgB,IAAI,IAAI;AAE1C,QAAI,CAAC,QAAQ;AACX,YAAM,YAAY,CAAC;AACnB,YAAM,WAAW,IAAI,SAAS,KAAK,OAAO;AAC1C;AAAA,QACE;AAAA,QACA,kBAAkB,UAAU;AAAA,UAC1B,oBAAoB,MAAM;AAAA,UAE1B,SAAS,UAAU;AACjB,sBAAU,KAAK;AAAA,cACb,MAAM;AAAA,cACN,MAAM,SAAS,aAAa;AAAA,cAC5B,cAAc,SAAS,gBAAgB;AAAA,YACzC,CAAC;AAAA,UACH;AAAA,QACF,CAAC;AAAA,MACH;AACA,eAAS;AAET,WAAK,gBAAgB,IAAI,MAAM,MAAM;AAAA,IACvC;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,2BAA2B,WAAW;AACpC,QAAI,SAAS,KAAK,yBAAyB,IAAI,SAAS;AAExD,QAAI,CAAC,QAAQ;AACX,eAAS,KAAK,kBAAkB,SAAS;AAEzC,iBAAW,QAAQ,KAAK,kCAAkC,SAAS,GAAG;AACpE,iBAAS,OAAO,OAAO,KAAK,kBAAkB,IAAI,CAAC;AAAA,MACrD;AAEA,WAAK,yBAAyB,IAAI,WAAW,MAAM;AAAA,IACrD;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,UAAU;AACR,WAAO,KAAK,UAAU,QAAQ;AAAA,EAChC;AAAA,EAEA,gBAAgB;AACd,WAAO,KAAK,UAAU,cAAc;AAAA,EACtC;AAAA,EAEA,eAAe;AACb,WAAO,KAAK,UAAU,aAAa;AAAA,EACrC;AAAA,EAEA,qBAAqB;AACnB,WAAO,KAAK,UAAU,mBAAmB;AAAA,EAC3C;AAAA,EAEA,cAAc;AACZ,WAAO,KAAK,UAAU,YAAY;AAAA,EACpC;AAAA,EAEA,eAAe;AACb,WAAO,KAAK,UAAU,aAAa;AAAA,EACrC;AAAA,EAEA,cAAc;AACZ,WAAO,KAAK,UAAU,YAAY;AAAA,EACpC;AAAA,EAEA,eAAe;AACb,WAAO,KAAK,UAAU,aAAa;AAAA,EACrC;AACF;;;ACpLO,SAAS,SACd,QACA,aACA,QAAQ,gBACR,SAEA,WAAW,IAAI,SAAS,MAAM,GAC9B;AACA,MAAI;AAEJ,QAAM,aACH,qBACC,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,eAC1D,QAAQ,uBAAuB,SAC7B,qBACA;AACN,iBAAe,UAAU,OAAO,wBAAwB;AAExD,oBAAkB,MAAM;AACxB,QAAM,WAAW,OAAO,OAAO,CAAC,CAAC;AACjC,QAAM,SAAS,CAAC;AAChB,QAAM,UAAU,IAAI;AAAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,IACA,CAAC,UAAU;AACT,UAAI,OAAO,UAAU,WAAW;AAC9B,eAAO;AAAA,UACL,IAAI;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,cAAM;AAAA,MACR;AAEA,aAAO,KAAK,KAAK;AAAA,IACnB;AAAA,EACF;AAGA,QAAM,UAAU,gBAAgB,MAAM,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC;AAElE,MAAI;AACF,UAAM,aAAa,kBAAkB,UAAU,OAAO,CAAC;AAAA,EACzD,SAAS,GAAP;AACA,QAAI,MAAM,UAAU;AAClB,YAAM;AAAA,IACR;AAAA,EACF;AAEA,SAAO;AACT;AAKO,SAAS,YACd,aACA,gBACA,QAAQ,mBACR;AACA,QAAM,SAAS,CAAC;AAChB,QAAM,UAAU,IAAI;AAAA,IAClB;AAAA,IACA;AAAA,IACA,CAAC,UAAU;AACT,aAAO,KAAK,KAAK;AAAA,IACnB;AAAA,EACF;AACA,QAAM,WAAW,MAAM,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC;AAClD,QAAM,aAAa,gBAAgB,QAAQ,CAAC;AAC5C,SAAO;AACT;AAQO,SAAS,eAAe,aAAa;AAC1C,QAAM,SAAS,YAAY,WAAW;AAEtC,MAAI,OAAO,WAAW,GAAG;AACvB,UAAM,IAAI,MAAM,OAAO,IAAI,CAAC,UAAU,MAAM,OAAO,EAAE,KAAK,MAAM,CAAC;AAAA,EACnE;AACF;;;ACnHO,SAAS,SAAS,IAAI;AAC3B,MAAI;AACJ,SAAO,SAAS,SAAS,IAAI,IAAI,IAAI;AACnC,QAAI,WAAW,QAAW;AACxB,eAAS,oBAAI,QAAQ;AAAA,IACvB;AAEA,QAAI,SAAS,OAAO,IAAI,EAAE;AAE1B,QAAI,WAAW,QAAW;AACxB,eAAS,oBAAI,QAAQ;AACrB,aAAO,IAAI,IAAI,MAAM;AAAA,IACvB;AAEA,QAAI,SAAS,OAAO,IAAI,EAAE;AAE1B,QAAI,WAAW,QAAW;AACxB,eAAS,oBAAI,QAAQ;AACrB,aAAO,IAAI,IAAI,MAAM;AAAA,IACvB;AAEA,QAAI,WAAW,OAAO,IAAI,EAAE;AAE5B,QAAI,aAAa,QAAW;AAC1B,iBAAW,GAAG,IAAI,IAAI,EAAE;AACxB,aAAO,IAAI,IAAI,QAAQ;AAAA,IACzB;AAEA,WAAO;AAAA,EACT;AACF;;;AC1BO,SAAS,iBAAiB,QAAQ;AACvC,SAAO,QAAQ,IAAI,OAAO,OAAO,MAAM,CAAC,EAAE,KAAK,CAAC,mBAAmB;AACjE,UAAM,iBAAiB,uBAAO,OAAO,IAAI;AAEzC,eAAW,CAAC,GAAG,GAAG,KAAK,OAAO,KAAK,MAAM,EAAE,QAAQ,GAAG;AACpD,qBAAe,OAAO,eAAe;AAAA,IACvC;AAEA,WAAO;AAAA,EACT,CAAC;AACH;;;ACRO,SAAS,cAAc,QAAQ,YAAY,cAAc;AAC9D,MAAI,cAAc;AAElB,aAAW,SAAS,QAAQ;AAC1B,kBAAc,UAAU,WAAW,IAC/B,YAAY,KAAK,CAAC,aAAa,WAAW,UAAU,KAAK,CAAC,IAC1D,WAAW,aAAa,KAAK;AAAA,EACnC;AAEA,SAAO;AACT;;;ACdO,SAAS,QAAQ,aAAa;AACnC,SAAO,uBAAuB,QAC1B,cACA,IAAI,eAAe,WAAW;AACpC;AAEA,IAAM,iBAAN,cAA6B,MAAM;AAAA,EACjC,YAAY,aAAa;AACvB,UAAM,6BAA6B,QAAQ,WAAW,CAAC;AACvD,SAAK,OAAO;AACZ,SAAK,cAAc;AAAA,EACrB;AACF;;;ACTO,SAAS,aAAa,kBAAkB,OAAO,MAAM;AAC1D,MAAI;AAEJ,QAAM,gBAAgB,QAAQ,gBAAgB;AAE9C,MAAI,sBAAsB,aAAa,GAAG;AACxC,WAAO;AAAA,EACT;AAEA,SAAO,IAAI,aAAa,cAAc,SAAS;AAAA,IAC7C,QACG,SAAS,cAAc,WAAW,QAAQ,WAAW,SAClD,SACA;AAAA,IACN,QAAQ,cAAc;AAAA,IACtB,WAAW,cAAc;AAAA,IACzB;AAAA,IACA;AAAA,EACF,CAAC;AACH;AAEA,SAAS,sBAAsB,OAAO;AACpC,SAAO,MAAM,QAAQ,MAAM,IAAI;AACjC;;;ACOA,IAAME,oBAAmB;AAAA,EAAS,CAAC,YAAY,YAAY,eACzD;AAAA,IACE,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,IACX;AAAA,IACA;AAAA,EACF;AACF;AAsCO,SAAS,QAAQ,MAAM;AAE5B,YAAU,SAAS,KACjB;AAAA,IACE;AAAA,IACA;AAAA,EACF;AACF,QAAM,EAAE,QAAQ,UAAAC,WAAU,gBAAgB,UAAU,IAAI;AAExD,gCAA8B,QAAQA,WAAU,cAAc;AAG9D,QAAM,aAAa,sBAAsB,IAAI;AAE7C,MAAI,EAAE,YAAY,aAAa;AAC7B,WAAO;AAAA,MACL,QAAQ;AAAA,IACV;AAAA,EACF;AAYA,MAAI;AACF,UAAM,EAAE,UAAU,IAAI;AACtB,UAAM,SAAS,iBAAiB,YAAY,WAAW,SAAS;AAEhE,QAAI,UAAU,MAAM,GAAG;AACrB,aAAO,OAAO;AAAA,QACZ,CAAC,SAAS,cAAc,MAAM,WAAW,MAAM;AAAA,QAC/C,CAAC,UAAU;AACT,qBAAW,OAAO,KAAK,KAAK;AAC5B,iBAAO,cAAc,MAAM,WAAW,MAAM;AAAA,QAC9C;AAAA,MACF;AAAA,IACF;AAEA,WAAO,cAAc,QAAQ,WAAW,MAAM;AAAA,EAChD,SAAS,OAAP;AACA,eAAW,OAAO,KAAK,KAAK;AAC5B,WAAO,cAAc,MAAM,WAAW,MAAM;AAAA,EAC9C;AACF;AAqBA,SAAS,cAAc,MAAM,QAAQ;AACnC,SAAO,OAAO,WAAW,IACrB;AAAA,IACE;AAAA,EACF,IACA;AAAA,IACE;AAAA,IACA;AAAA,EACF;AACN;AAQO,SAAS,8BACd,QACAC,WACA,mBACA;AACA,EAAAA,aAAY,UAAU,OAAO,wBAAwB;AAErD,oBAAkB,MAAM;AAExB,uBAAqB,QACnB,aAAa,iBAAiB,KAC9B;AAAA,IACE;AAAA,IACA;AAAA,EACF;AACJ;AAUO,SAAS,sBAAsB,MAAM;AAC1C,MAAI,kBAAkB;AAEtB,QAAM;AAAA,IACJ;AAAA,IACA,UAAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA,gBAAgB;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,MAAI;AACJ,QAAM,YAAY,uBAAO,OAAO,IAAI;AAEpC,aAAW,cAAcA,UAAS,aAAa;AAC7C,YAAQ,WAAW;AAAA,WACZ,KAAK;AACR,YAAI,iBAAiB,MAAM;AACzB,cAAI,cAAc,QAAW;AAC3B,mBAAO;AAAA,cACL,IAAI;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,sBAAY;AAAA,QACd,aACI,mBAAmB,WAAW,UAAU,QAC1C,qBAAqB,SACjB,SACA,iBAAiB,WAAW,eAChC;AACA,sBAAY;AAAA,QACd;AAEA;AAAA,WAEG,KAAK;AACR,kBAAU,WAAW,KAAK,SAAS;AACnC;AAAA;AAAA;AAAA,EAIN;AAEA,MAAI,CAAC,WAAW;AACd,QAAI,iBAAiB,MAAM;AACzB,aAAO,CAAC,IAAI,aAAa,4BAA4B,iBAAiB,CAAC;AAAA,IACzE;AAEA,WAAO,CAAC,IAAI,aAAa,4BAA4B,CAAC;AAAA,EACxD;AAIA,QAAM,uBACH,wBAAwB,UAAU,yBAAyB,QAC5D,0BAA0B,SACtB,wBACA,CAAC;AACP,QAAM,wBAAwB;AAAA,IAC5B;AAAA,IACA;AAAA,IACA,sBAAsB,QAAQ,sBAAsB,SAChD,oBACA,CAAC;AAAA,IACL;AAAA,MACE,WAAW;AAAA,IACb;AAAA,EACF;AAEA,MAAI,sBAAsB,QAAQ;AAChC,WAAO,sBAAsB;AAAA,EAC/B;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,gBAAgB,sBAAsB;AAAA,IACtC,eACE,kBAAkB,QAAQ,kBAAkB,SACxC,gBACA;AAAA,IACN,cACE,iBAAiB,QAAQ,iBAAiB,SACtC,eACA;AAAA,IACN,wBACE,2BAA2B,QAAQ,2BAA2B,SAC1D,yBACA;AAAA,IACN,QAAQ,CAAC;AAAA,EACX;AACF;AAKA,SAAS,iBAAiB,YAAY,WAAW,WAAW;AAC1D,QAAM,WAAW,WAAW,OAAO,YAAY,UAAU,SAAS;AAElE,MAAI,YAAY,MAAM;AACpB,UAAM,IAAI;AAAA,MACR,uCAAuC,UAAU;AAAA,MACjD;AAAA,QACE,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAEA,QAAM,aAAa;AAAA,IACjB,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,IACX;AAAA,IACA,UAAU;AAAA,EACZ;AACA,QAAM,OAAO;AAEb,UAAQ,UAAU;AAAA,SACX,kBAAkB;AACrB,aAAO,cAAc,YAAY,UAAU,WAAW,MAAM,UAAU;AAAA,SAEnE,kBAAkB;AACrB,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,SAEG,kBAAkB;AAGrB,aAAO,cAAc,YAAY,UAAU,WAAW,MAAM,UAAU;AAAA;AAE5E;AAMA,SAAS,sBACP,YACA,YACA,aACA,MACA,QACA;AACA,SAAO;AAAA,IACL,OAAO,QAAQ;AAAA,IACf,CAAC,SAAS,CAAC,cAAc,UAAU,MAAM;AACvC,YAAM,YAAY,QAAQ,MAAM,cAAc,WAAW,IAAI;AAC7D,YAAM,SAAS;AAAA,QACb;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAEA,UAAI,WAAW,QAAW;AACxB,eAAO;AAAA,MACT;AAEA,UAAI,UAAU,MAAM,GAAG;AACrB,eAAO,OAAO,KAAK,CAAC,mBAAmB;AACrC,kBAAQ,gBAAgB;AACxB,iBAAO;AAAA,QACT,CAAC;AAAA,MACH;AAEA,cAAQ,gBAAgB;AACxB,aAAO;AAAA,IACT;AAAA,IACA,uBAAO,OAAO,IAAI;AAAA,EACpB;AACF;AAMA,SAAS,cAAc,YAAY,YAAY,aAAa,MAAM,QAAQ;AACxE,QAAM,UAAU,uBAAO,OAAO,IAAI;AAClC,MAAI,kBAAkB;AAEtB,aAAW,CAAC,cAAc,UAAU,KAAK,OAAO,QAAQ,GAAG;AACzD,UAAM,YAAY,QAAQ,MAAM,cAAc,WAAW,IAAI;AAC7D,UAAM,SAAS;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,QAAI,WAAW,QAAW;AACxB,cAAQ,gBAAgB;AAExB,UAAI,UAAU,MAAM,GAAG;AACrB,0BAAkB;AAAA,MACpB;AAAA,IACF;AAAA,EACF;AAEA,MAAI,CAAC,iBAAiB;AACpB,WAAO;AAAA,EACT;AAIA,SAAO,iBAAiB,OAAO;AACjC;AAQA,SAAS,aAAa,YAAY,YAAY,QAAQ,YAAY,MAAM;AACtE,MAAI;AAEJ,QAAM,WAAWC,aAAY,WAAW,QAAQ,YAAY,WAAW,EAAE;AAEzE,MAAI,CAAC,UAAU;AACb;AAAA,EACF;AAEA,QAAM,aAAa,SAAS;AAC5B,QAAM,aACH,oBAAoB,SAAS,aAAa,QAC3C,sBAAsB,SAClB,oBACA,WAAW;AACjB,QAAM,OAAO;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,MAAI;AAIF,UAAM,OAAO;AAAA,MACX;AAAA,MACA,WAAW;AAAA,MACX,WAAW;AAAA,IACb;AAIA,UAAM,eAAe,WAAW;AAChC,UAAM,SAAS,UAAU,QAAQ,MAAM,cAAc,IAAI;AACzD,QAAI;AAEJ,QAAI,UAAU,MAAM,GAAG;AACrB,kBAAY,OAAO;AAAA,QAAK,CAAC,aACvB,cAAc,YAAY,YAAY,YAAY,MAAM,MAAM,QAAQ;AAAA,MACxE;AAAA,IACF,OAAO;AACL,kBAAY;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAEA,QAAI,UAAU,SAAS,GAAG;AAGxB,aAAO,UAAU,KAAK,QAAW,CAAC,aAAa;AAC7C,cAAM,QAAQ,aAAa,UAAU,YAAY,YAAY,IAAI,CAAC;AAClE,eAAO,iBAAiB,OAAO,YAAY,UAAU;AAAA,MACvD,CAAC;AAAA,IACH;AAEA,WAAO;AAAA,EACT,SAAS,UAAP;AACA,UAAM,QAAQ,aAAa,UAAU,YAAY,YAAY,IAAI,CAAC;AAClE,WAAO,iBAAiB,OAAO,YAAY,UAAU;AAAA,EACvD;AACF;AAKO,SAAS,iBACd,YACA,UACA,YACA,YACA,MACA;AAGA,SAAO;AAAA,IACL,WAAW,SAAS;AAAA,IACpB;AAAA,IACA,YAAY,SAAS;AAAA,IACrB;AAAA,IACA;AAAA,IACA,QAAQ,WAAW;AAAA,IACnB,WAAW,WAAW;AAAA,IACtB,WAAW,WAAW;AAAA,IACtB,WAAW,WAAW;AAAA,IACtB,gBAAgB,WAAW;AAAA,EAC7B;AACF;AAEA,SAAS,iBAAiB,OAAO,YAAY,YAAY;AAGvD,MAAI,cAAc,UAAU,GAAG;AAC7B,UAAM;AAAA,EACR;AAGA,aAAW,OAAO,KAAK,KAAK;AAC5B,SAAO;AACT;AAuBA,SAAS,cAAc,YAAY,YAAY,YAAY,MAAM,MAAM,QAAQ;AAE7E,MAAI,kBAAkB,OAAO;AAC3B,UAAM;AAAA,EACR;AAGA,MAAI,cAAc,UAAU,GAAG;AAC7B,UAAM,YAAY;AAAA,MAChB;AAAA,MACA,WAAW;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,QAAI,cAAc,MAAM;AACtB,YAAM,IAAI;AAAA,QACR,6CAA6C,KAAK,WAAW,QAAQ,KAAK;AAAA,MAC5E;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAEA,MAAI,UAAU,MAAM;AAClB,WAAO;AAAA,EACT;AAEA,MAAI,WAAW,UAAU,GAAG;AAC1B,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAGA,MAAI,WAAW,UAAU,GAAG;AAC1B,WAAO,kBAAkB,YAAY,MAAM;AAAA,EAC7C;AAGA,MAAI,eAAe,UAAU,GAAG;AAC9B,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,MAAI,aAAa,UAAU,GAAG;AAC5B,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAIA,EACE;AAAA,IACE;AAAA,IACA,sDAAsD,QAAQ,UAAU;AAAA,EAC1E;AACJ;AAMA,SAAS,kBACP,YACA,YACA,YACA,MACA,MACA,QACA;AACA,MAAI,CAAC,iBAAiB,MAAM,GAAG;AAC7B,UAAM,IAAI;AAAA,MACR,sDAAsD,KAAK,WAAW,QAAQ,KAAK;AAAA,IACrF;AAAA,EACF;AAGA,QAAM,WAAW,WAAW;AAC5B,MAAI,kBAAkB;AACtB,QAAM,mBAAmB,MAAM,KAAK,QAAQ,CAAC,MAAM,UAAU;AAG3D,UAAM,WAAW,QAAQ,MAAM,OAAO,MAAS;AAE/C,QAAI;AACF,UAAI;AAEJ,UAAI,UAAU,IAAI,GAAG;AACnB,wBAAgB,KAAK;AAAA,UAAK,CAAC,aACzB;AAAA,YACE;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,QACF;AAAA,MACF,OAAO;AACL,wBAAgB;AAAA,UACd;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,UAAI,UAAU,aAAa,GAAG;AAC5B,0BAAkB;AAGlB,eAAO,cAAc,KAAK,QAAW,CAAC,aAAa;AACjD,gBAAM,QAAQ;AAAA,YACZ;AAAA,YACA;AAAA,YACA,YAAY,QAAQ;AAAA,UACtB;AACA,iBAAO,iBAAiB,OAAO,UAAU,UAAU;AAAA,QACrD,CAAC;AAAA,MACH;AAEA,aAAO;AAAA,IACT,SAAS,UAAP;AACA,YAAM,QAAQ,aAAa,UAAU,YAAY,YAAY,QAAQ,CAAC;AACtE,aAAO,iBAAiB,OAAO,UAAU,UAAU;AAAA,IACrD;AAAA,EACF,CAAC;AACD,SAAO,kBAAkB,QAAQ,IAAI,gBAAgB,IAAI;AAC3D;AAMA,SAAS,kBAAkB,YAAY,QAAQ;AAC7C,QAAM,mBAAmB,WAAW,UAAU,MAAM;AAEpD,MAAI,oBAAoB,MAAM;AAC5B,UAAM,IAAI;AAAA,MACR,cAAc,QAAQ,UAAU,eAAe,QAAQ,MAAM,gDACnB,QAAQ,gBAAgB;AAAA,IACpE;AAAA,EACF;AAEA,SAAO;AACT;AAMA,SAAS,sBACP,YACA,YACA,YACA,MACA,MACA,QACA;AACA,MAAI;AAEJ,QAAM,iBACH,wBAAwB,WAAW,iBAAiB,QACrD,0BAA0B,SACtB,wBACA,WAAW;AACjB,QAAM,eAAe,WAAW;AAChC,QAAM,cAAc,cAAc,QAAQ,cAAc,MAAM,UAAU;AAExE,MAAI,UAAU,WAAW,GAAG;AAC1B,WAAO,YAAY;AAAA,MAAK,CAAC,wBACvB;AAAA,QACE;AAAA,QACA;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,uBACP,iBACA,YACA,YACA,YACA,MACA,QACA;AACA,MAAI,mBAAmB,MAAM;AAC3B,UAAM,IAAI;AAAA,MACR,kBAAkB,WAAW,8DAA8D,KAAK,WAAW,QAAQ,KAAK,2BAA2B,WAAW;AAAA,MAC9J;AAAA,IACF;AAAA,EACF;AAGA,MAAI,aAAa,eAAe,GAAG;AACjC,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,MAAI,OAAO,oBAAoB,UAAU;AACvC,UAAM,IAAI;AAAA,MACR,kBAAkB,WAAW,8DAA8D,KAAK,WAAW,QAAQ,KAAK,yBAC7G,QAAQ,MAAM,gBAAgB,QAAQ,eAAe;AAAA,IAClE;AAAA,EACF;AAEA,QAAM,cAAc,WAAW,OAAO,QAAQ,eAAe;AAE7D,MAAI,eAAe,MAAM;AACvB,UAAM,IAAI;AAAA,MACR,kBAAkB,WAAW,iCAAiC;AAAA,MAC9D;AAAA,QACE,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAEA,MAAI,CAAC,aAAa,WAAW,GAAG;AAC9B,UAAM,IAAI;AAAA,MACR,kBAAkB,WAAW,4CAA4C;AAAA,MACzE;AAAA,QACE,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAEA,MAAI,CAAC,WAAW,OAAO,UAAU,YAAY,WAAW,GAAG;AACzD,UAAM,IAAI;AAAA,MACR,wBAAwB,YAAY,qCAAqC,WAAW;AAAA,MACpF;AAAA,QACE,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAKA,SAAS,oBACP,YACA,YACA,YACA,MACA,MACA,QACA;AAEA,QAAM,gBAAgBC,kBAAiB,YAAY,YAAY,UAAU;AAIzE,MAAI,WAAW,UAAU;AACvB,UAAM,WAAW,WAAW,SAAS,QAAQ,WAAW,cAAc,IAAI;AAE1E,QAAI,UAAU,QAAQ,GAAG;AACvB,aAAO,SAAS,KAAK,CAAC,qBAAqB;AACzC,YAAI,CAAC,kBAAkB;AACrB,gBAAM,uBAAuB,YAAY,QAAQ,UAAU;AAAA,QAC7D;AAEA,eAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAEA,QAAI,CAAC,UAAU;AACb,YAAM,uBAAuB,YAAY,QAAQ,UAAU;AAAA,IAC7D;AAAA,EACF;AAEA,SAAO,cAAc,YAAY,YAAY,QAAQ,MAAM,aAAa;AAC1E;AAEA,SAAS,uBAAuB,YAAY,QAAQ,YAAY;AAC9D,SAAO,IAAI;AAAA,IACT,2BAA2B,WAAW,kBAAkB,QAAQ,MAAM;AAAA,IACtE;AAAA,MACE,OAAO;AAAA,IACT;AAAA,EACF;AACF;AAYO,IAAM,sBAAsB,SACjC,OACA,cACA,MACA,cACA;AAEA,MAAI,aAAa,KAAK,KAAK,OAAO,MAAM,eAAe,UAAU;AAC/D,WAAO,MAAM;AAAA,EACf;AAEA,QAAM,gBAAgB,KAAK,OAAO,iBAAiB,YAAY;AAC/D,QAAM,0BAA0B,CAAC;AAEjC,WAAS,IAAI,GAAG,IAAI,cAAc,QAAQ,KAAK;AAC7C,UAAM,OAAO,cAAc;AAE3B,QAAI,KAAK,UAAU;AACjB,YAAM,iBAAiB,KAAK,SAAS,OAAO,cAAc,IAAI;AAE9D,UAAI,UAAU,cAAc,GAAG;AAC7B,gCAAwB,KAAK;AAAA,MAC/B,WAAW,gBAAgB;AACzB,eAAO,KAAK;AAAA,MACd;AAAA,IACF;AAAA,EACF;AAEA,MAAI,wBAAwB,QAAQ;AAClC,WAAO,QAAQ,IAAI,uBAAuB,EAAE,KAAK,CAAC,oBAAoB;AACpE,eAAS,IAAI,GAAG,IAAI,gBAAgB,QAAQ,KAAK;AAC/C,YAAI,gBAAgB,IAAI;AACtB,iBAAO,cAAc,GAAG;AAAA,QAC1B;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAQO,IAAM,uBAAuB,SAClC,QACA,MACA,cACA,MACA;AAEA,MAAI,aAAa,MAAM,KAAK,OAAO,WAAW,YAAY;AACxD,UAAM,WAAW,OAAO,KAAK;AAE7B,QAAI,OAAO,aAAa,YAAY;AAClC,aAAO,OAAO,KAAK,WAAW,MAAM,cAAc,IAAI;AAAA,IACxD;AAEA,WAAO;AAAA,EACT;AACF;AAaO,SAASD,aAAY,QAAQ,YAAY,WAAW;AACzD,QAAM,YAAY,UAAU,KAAK;AAEjC,MACE,cAAc,mBAAmB,QACjC,OAAO,aAAa,MAAM,YAC1B;AACA,WAAO;AAAA,EACT,WACE,cAAc,iBAAiB,QAC/B,OAAO,aAAa,MAAM,YAC1B;AACA,WAAO;AAAA,EACT,WAAW,cAAc,qBAAqB,MAAM;AAClD,WAAO;AAAA,EACT;AAEA,SAAO,WAAW,UAAU,EAAE;AAChC;;;ACj+BO,SAAS,gBAAgB,oBAAoB;AAClD,SACE,QAAQ,uBAAuB,QAAQ,uBAAuB,SAC1D,SACA,mBAAmB,OAAO,oBAAoB;AAEtD;;;ACNO,SAAS,iBAAiB,UAAU,UAAU;AACnD,QAAM,WAAW,SAAS,OAAO,eAAe;AAEhD,iBAAe,UAAU,QAAQ;AAC/B,QAAI,OAAO,MAAM;AACf,aAAO;AAAA,IACT;AAEA,QAAI;AACF,aAAO;AAAA,QACL,OAAO,MAAM,SAAS,OAAO,KAAK;AAAA,QAClC,MAAM;AAAA,MACR;AAAA,IACF,SAAS,OAAP;AAGA,UAAI,OAAO,SAAS,WAAW,YAAY;AACzC,YAAI;AACF,gBAAM,SAAS,OAAO;AAAA,QACxB,SAAS,IAAP;AAAA,QAEF;AAAA,MACF;AAEA,YAAM;AAAA,IAER;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM,OAAO;AACX,aAAO,UAAU,MAAM,SAAS,KAAK,CAAC;AAAA,IACxC;AAAA,IAEA,MAAM,SAAS;AAEb,aAAO,OAAO,SAAS,WAAW,aAC9B,UAAU,MAAM,SAAS,OAAO,CAAC,IACjC;AAAA,QACE,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AAAA,IACN;AAAA,IAEA,MAAM,MAAM,OAAO;AACjB,UAAI,OAAO,SAAS,UAAU,YAAY;AACxC,eAAO,UAAU,MAAM,SAAS,MAAM,KAAK,CAAC;AAAA,MAC9C;AAEA,YAAM;AAAA,IACR;AAAA,IAEA,CAAC,OAAO,iBAAiB;AACvB,aAAO;AAAA,IACT;AAAA,EACF;AACF;;;ACtBA,eAAsB,UAAU,MAAM;AAEpC,YAAU,SAAS,KACjB;AAAA,IACE;AAAA,IACA;AAAA,EACF;AACF,QAAM,iBAAiB,MAAM,wBAAwB,IAAI;AAEzD,MAAI,CAAC,gBAAgB,cAAc,GAAG;AACpC,WAAO;AAAA,EACT;AAOA,QAAM,sBAAsB,CAAC,YAC3B,QAAQ,EAAE,GAAG,MAAM,WAAW,QAAQ,CAAC;AAEzC,SAAO,iBAAiB,gBAAgB,mBAAmB;AAC7D;AAEA,SAAS,iBAAiB,MAAM;AAC9B,QAAM,WAAW,KAAK;AAEtB,MAAI,YAAY,cAAc,UAAU;AACtC,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,QAAQ;AAAA,IAER,UAAU,KAAK;AAAA,IACf,WAAW,KAAK;AAAA,IAChB,cAAc,KAAK;AAAA,IACnB,gBAAgB,KAAK;AAAA,IACrB,eAAe,KAAK;AAAA,IACpB,wBAAwB,KAAK;AAAA,EAC/B;AACF;AA8BA,eAAsB,2BAA2B,SAAS;AACxD,QAAM,OAAO,iBAAiB,OAAO;AACrC,QAAM,EAAE,QAAQ,UAAAE,WAAU,eAAe,IAAI;AAG7C,gCAA8B,QAAQA,WAAU,cAAc;AAG9D,QAAM,aAAa,sBAAsB,IAAI;AAE7C,MAAI,EAAE,YAAY,aAAa;AAC7B,WAAO;AAAA,MACL,QAAQ;AAAA,IACV;AAAA,EACF;AAEA,MAAI;AACF,UAAM,cAAc,MAAM,oBAAoB,UAAU;AAExD,QAAI,CAAC,gBAAgB,WAAW,GAAG;AACjC,YAAM,IAAI;AAAA,QACR,4DACe,QAAQ,WAAW;AAAA,MACpC;AAAA,IACF;AAEA,WAAO;AAAA,EACT,SAAS,OAAP;AAGA,QAAI,iBAAiB,cAAc;AACjC,aAAO;AAAA,QACL,QAAQ,CAAC,KAAK;AAAA,MAChB;AAAA,IACF;AAEA,UAAM;AAAA,EACR;AACF;AAEA,eAAe,oBAAoB,YAAY;AAC7C,QAAM,EAAE,QAAQ,WAAW,WAAW,gBAAgB,UAAU,IAC9D;AACF,QAAM,WAAW,OAAO,oBAAoB;AAE5C,MAAI,YAAY,MAAM;AACpB,UAAM,IAAI;AAAA,MACR;AAAA,MACA;AAAA,QACE,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAEA,QAAM,aAAa;AAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU;AAAA,EACZ;AACA,QAAM,CAAC,cAAc,UAAU,IAAI,CAAC,GAAG,WAAW,QAAQ,CAAC,EAAE;AAC7D,QAAM,WAAWC,aAAY,QAAQ,UAAU,WAAW,EAAE;AAE5D,MAAI,CAAC,UAAU;AACb,UAAM,YAAY,WAAW,GAAG,KAAK;AACrC,UAAM,IAAI;AAAA,MACR,2BAA2B;AAAA,MAC3B;AAAA,QACE,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAEA,QAAM,OAAO,QAAQ,QAAW,cAAc,SAAS,IAAI;AAC3D,QAAM,OAAO;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,MAAI;AACF,QAAI;AAMJ,UAAM,OAAO,kBAAkB,UAAU,WAAW,IAAI,cAAc;AAItE,UAAM,eAAe,WAAW;AAGhC,UAAM,aACH,sBAAsB,SAAS,eAAe,QAC/C,wBAAwB,SACpB,sBACA,WAAW;AACjB,UAAM,cAAc,MAAM,UAAU,WAAW,MAAM,cAAc,IAAI;AAEvE,QAAI,uBAAuB,OAAO;AAChC,YAAM;AAAA,IACR;AAEA,WAAO;AAAA,EACT,SAAS,OAAP;AACA,UAAM,aAAa,OAAO,YAAY,YAAY,IAAI,CAAC;AAAA,EACzD;AACF;;;ACtNO,SAAS,gBAAgB,aAAa,eAAe;AAC1D,MAAI,YAAY;AAEhB,aAAW,cAAc,YAAY,aAAa;AAChD,QAAI,WAAW,SAAS,KAAK,sBAAsB;AACjD,UAAI;AAEJ,UAAI,iBAAiB,MAAM;AAIzB,YAAI,WAAW;AACb,iBAAO;AAAA,QACT;AAEA,oBAAY;AAAA,MACd,aACI,mBAAmB,WAAW,UAAU,QAC1C,qBAAqB,SACjB,SACA,iBAAiB,WAAW,eAChC;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;;;ACgDO,SAAS,iBAAiB,cAAc,aAAa,SAAS;AACnE,MAAI,YAAY,uBAAuB,aAAa;AAGpD,QAAM,WAAW,CAAC;AAClB,QAAM,oBAAoB,uBAAO,OAAO,IAAI;AAG5C,QAAM,gBAAgB,CAAC;AACvB,MAAI;AAEJ,QAAM,mBAAmB,CAAC;AAE1B,aAAW,OAAO,YAAY,aAAa;AACzC,QAAI,IAAI,SAAS,KAAK,mBAAmB;AACvC,kBAAY;AAAA,IACd,WAAW,IAAI,SAAS,KAAK,kBAAkB;AAC7C,uBAAiB,KAAK,GAAG;AAAA,IAC3B,WAAW,qBAAqB,GAAG,GAAG;AACpC,eAAS,KAAK,GAAG;AAAA,IACnB,WAAW,oBAAoB,GAAG,GAAG;AACnC,YAAM,mBAAmB,IAAI,KAAK;AAClC,YAAM,yBAAyB,kBAAkB;AACjD,wBAAkB,oBAAoB,yBAClC,uBAAuB,OAAO,CAAC,GAAG,CAAC,IACnC,CAAC,GAAG;AAAA,IACV,WAAW,IAAI,SAAS,KAAK,sBAAsB;AACjD,oBAAc,KAAK,GAAG;AAAA,IACxB;AAAA,EACF;AAGA,MACE,OAAO,KAAK,iBAAiB,EAAE,WAAW,KAC1C,SAAS,WAAW,KACpB,cAAc,WAAW,KACzB,iBAAiB,WAAW,KAC5B,aAAa,MACb;AACA,WAAO;AAAA,EACT;AAEA,QAAM,UAAU,uBAAO,OAAO,IAAI;AAElC,aAAW,gBAAgB,aAAa,OAAO;AAC7C,YAAQ,aAAa,QAAQ,gBAAgB,YAAY;AAAA,EAC3D;AAEA,aAAW,YAAY,UAAU;AAC/B,QAAI;AAEJ,UAAM,OAAO,SAAS,KAAK;AAC3B,YAAQ,SACL,mBAAmB,WAAW,WAAW,QAC1C,qBAAqB,SACjB,mBACA,UAAU,QAAQ;AAAA,EAC1B;AAEA,QAAM,iBAAiB;AAAA,IAErB,OAAO,aAAa,SAAS,iBAAiB,aAAa,KAAK;AAAA,IAChE,UAAU,aAAa,YAAY,iBAAiB,aAAa,QAAQ;AAAA,IACzE,cACE,aAAa,gBAAgB,iBAAiB,aAAa,YAAY;AAAA,IAEzE,GAAI,aAAa,kBAAkB,CAAC,SAAS,CAAC;AAAA,IAC9C,GAAG,kBAAkB,gBAAgB;AAAA,EACvC;AAEA,SAAO;AAAA,IACL,cACG,aAAa,eAAe,QAAQ,eAAe,SAChD,UACC,wBAAwB,WAAW,iBAAiB,QACrD,0BAA0B,SAC1B,SACA,sBAAsB;AAAA,IAC5B,GAAG;AAAA,IACH,OAAO,OAAO,OAAO,OAAO;AAAA,IAC5B,YAAY;AAAA,MACV,GAAG,aAAa,WAAW,IAAI,gBAAgB;AAAA,MAC/C,GAAG,cAAc,IAAI,cAAc;AAAA,IACrC;AAAA,IACA,YAAY,uBAAO,OAAO,IAAI;AAAA,IAC9B,UACG,cAAc,eAAe,QAAQ,gBAAgB,SAClD,cACA,aAAa;AAAA,IACnB,mBAAmB,aAAa,kBAAkB,OAAO,gBAAgB;AAAA,IACzE,cACG,uBACC,YAAY,QAAQ,YAAY,SAC5B,SACA,QAAQ,iBAAiB,QAAQ,yBAAyB,SAC5D,uBACA;AAAA,EACR;AAGA,WAAS,YAAY,MAAM;AACzB,QAAI,WAAW,IAAI,GAAG;AAEpB,aAAO,IAAI,YAAY,YAAY,KAAK,MAAM,CAAC;AAAA,IACjD;AAEA,QAAI,cAAc,IAAI,GAAG;AAEvB,aAAO,IAAI,eAAe,YAAY,KAAK,MAAM,CAAC;AAAA,IACpD;AAEA,WAAO,iBAAiB,IAAI;AAAA,EAC9B;AAEA,WAAS,iBAAiB,MAAM;AAI9B,WAAO,QAAQ,KAAK;AAAA,EACtB;AAEA,WAAS,iBAAiB,WAAW;AACnC,UAAM,SAAS,UAAU,SAAS;AAClC,WAAO,IAAI,iBAAiB;AAAA,MAC1B,GAAG;AAAA,MACH,MAAM,SAAS,OAAO,MAAM,SAAS;AAAA,IACvC,CAAC;AAAA,EACH;AAEA,WAAS,gBAAgB,MAAM;AAC7B,QAAI,oBAAoB,IAAI,KAAK,sBAAsB,IAAI,GAAG;AAE5D,aAAO;AAAA,IACT;AAEA,QAAI,aAAa,IAAI,GAAG;AACtB,aAAO,iBAAiB,IAAI;AAAA,IAC9B;AAEA,QAAI,aAAa,IAAI,GAAG;AACtB,aAAO,iBAAiB,IAAI;AAAA,IAC9B;AAEA,QAAI,gBAAgB,IAAI,GAAG;AACzB,aAAO,oBAAoB,IAAI;AAAA,IACjC;AAEA,QAAI,YAAY,IAAI,GAAG;AACrB,aAAO,gBAAgB,IAAI;AAAA,IAC7B;AAEA,QAAI,WAAW,IAAI,GAAG;AACpB,aAAO,eAAe,IAAI;AAAA,IAC5B;AAEA,QAAI,kBAAkB,IAAI,GAAG;AAC3B,aAAO,sBAAsB,IAAI;AAAA,IACnC;AAIA,IAAS,UAAU,OAAO,sBAAsB,QAAQ,IAAI,CAAC;AAAA,EAC/D;AAEA,WAAS,sBAAsB,MAAM;AACnC,QAAI;AAEJ,UAAM,SAAS,KAAK,SAAS;AAC7B,UAAM,cACH,wBAAwB,kBAAkB,OAAO,WAAW,QAC7D,0BAA0B,SACtB,wBACA,CAAC;AACP,WAAO,IAAI,uBAAuB;AAAA,MAChC,GAAG;AAAA,MACH,QAAQ,OAAO;AAAA,QACb,GAAG,SAAS,OAAO,QAAQ,CAAC,WAAW;AAAA,UACrC,GAAG;AAAA,UACH,MAAM,YAAY,MAAM,IAAI;AAAA,QAC9B,EAAE;AAAA,QACF,GAAG,mBAAmB,UAAU;AAAA,MAClC;AAAA,MACA,mBAAmB,OAAO,kBAAkB,OAAO,UAAU;AAAA,IAC/D,CAAC;AAAA,EACH;AAEA,WAAS,eAAe,MAAM;AAC5B,QAAI;AAEJ,UAAM,SAAS,KAAK,SAAS;AAC7B,UAAM,cACH,wBAAwB,kBAAkB,KAAK,WAAW,QAC3D,0BAA0B,SACtB,wBACA,CAAC;AACP,WAAO,IAAI,gBAAgB;AAAA,MACzB,GAAG;AAAA,MACH,QAAQ,EAAE,GAAG,OAAO,QAAQ,GAAG,kBAAkB,UAAU,EAAE;AAAA,MAC7D,mBAAmB,OAAO,kBAAkB,OAAO,UAAU;AAAA,IAC/D,CAAC;AAAA,EACH;AAEA,WAAS,iBAAiB,MAAM;AAC9B,QAAI;AAEJ,UAAM,SAAS,KAAK,SAAS;AAC7B,UAAM,cACH,yBAAyB,kBAAkB,OAAO,WAAW,QAC9D,2BAA2B,SACvB,yBACA,CAAC;AACP,QAAI,iBAAiB,OAAO;AAE5B,eAAW,iBAAiB,YAAY;AACtC,UAAI;AAEJ,wBACG,qBAAqB,kBAAkB,aAAa,OAAO,QAC5D,uBAAuB,SACnB,qBACA;AAAA,IACR;AAEA,WAAO,IAAI,kBAAkB;AAAA,MAC3B,GAAG;AAAA,MACH;AAAA,MACA,mBAAmB,OAAO,kBAAkB,OAAO,UAAU;AAAA,IAC/D,CAAC;AAAA,EACH;AAEA,WAAS,iBAAiB,MAAM;AAC9B,QAAI;AAEJ,UAAM,SAAS,KAAK,SAAS;AAC7B,UAAM,cACH,yBAAyB,kBAAkB,OAAO,WAAW,QAC9D,2BAA2B,SACvB,yBACA,CAAC;AACP,WAAO,IAAI,kBAAkB;AAAA,MAC3B,GAAG;AAAA,MACH,YAAY,MAAM;AAAA,QAChB,GAAG,KAAK,cAAc,EAAE,IAAI,gBAAgB;AAAA,QAC5C,GAAG,gBAAgB,UAAU;AAAA,MAC/B;AAAA,MACA,QAAQ,OAAO;AAAA,QACb,GAAG,SAAS,OAAO,QAAQ,WAAW;AAAA,QACtC,GAAG,cAAc,UAAU;AAAA,MAC7B;AAAA,MACA,mBAAmB,OAAO,kBAAkB,OAAO,UAAU;AAAA,IAC/D,CAAC;AAAA,EACH;AAEA,WAAS,oBAAoB,MAAM;AACjC,QAAI;AAEJ,UAAM,SAAS,KAAK,SAAS;AAC7B,UAAM,cACH,yBAAyB,kBAAkB,OAAO,WAAW,QAC9D,2BAA2B,SACvB,yBACA,CAAC;AACP,WAAO,IAAI,qBAAqB;AAAA,MAC9B,GAAG;AAAA,MACH,YAAY,MAAM;AAAA,QAChB,GAAG,KAAK,cAAc,EAAE,IAAI,gBAAgB;AAAA,QAC5C,GAAG,gBAAgB,UAAU;AAAA,MAC/B;AAAA,MACA,QAAQ,OAAO;AAAA,QACb,GAAG,SAAS,OAAO,QAAQ,WAAW;AAAA,QACtC,GAAG,cAAc,UAAU;AAAA,MAC7B;AAAA,MACA,mBAAmB,OAAO,kBAAkB,OAAO,UAAU;AAAA,IAC/D,CAAC;AAAA,EACH;AAEA,WAAS,gBAAgB,MAAM;AAC7B,QAAI;AAEJ,UAAM,SAAS,KAAK,SAAS;AAC7B,UAAM,cACH,yBAAyB,kBAAkB,OAAO,WAAW,QAC9D,2BAA2B,SACvB,yBACA,CAAC;AACP,WAAO,IAAI,iBAAiB;AAAA,MAC1B,GAAG;AAAA,MACH,OAAO,MAAM;AAAA,QACX,GAAG,KAAK,SAAS,EAAE,IAAI,gBAAgB;AAAA,QACvC,GAAG,gBAAgB,UAAU;AAAA,MAC/B;AAAA,MACA,mBAAmB,OAAO,kBAAkB,OAAO,UAAU;AAAA,IAC/D,CAAC;AAAA,EACH;AAEA,WAAS,YAAY,OAAO;AAC1B,WAAO;AAAA,MACL,GAAG;AAAA,MACH,MAAM,YAAY,MAAM,IAAI;AAAA,MAC5B,MAAM,MAAM,QAAQ,SAAS,MAAM,MAAM,SAAS;AAAA,IACpD;AAAA,EACF;AAEA,WAAS,UAAU,KAAK;AACtB,WAAO,EAAE,GAAG,KAAK,MAAM,YAAY,IAAI,IAAI,EAAE;AAAA,EAC/C;AAEA,WAAS,kBAAkB,OAAO;AAChC,UAAM,UAAU,CAAC;AAEjB,eAAW,QAAQ,OAAO;AACxB,UAAI;AAGJ,YAAM,uBAEH,uBAAuB,KAAK,oBAAoB,QACjD,yBAAyB,SACrB,uBACA,CAAC;AAEP,iBAAW,iBAAiB,qBAAqB;AAK/C,gBAAQ,cAAc,aAAaC,cAAa,cAAc,IAAI;AAAA,MACpE;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAEA,WAASA,cAAa,MAAM;AAC1B,QAAI;AAEJ,UAAM,OAAO,KAAK,KAAK;AACvB,UAAM,QACH,oBAAoB,WAAW,WAAW,QAC3C,sBAAsB,SAClB,oBACA,QAAQ;AAEd,QAAI,SAAS,QAAW;AACtB,YAAM,IAAI,MAAM,kBAAkB,QAAQ;AAAA,IAC5C;AAEA,WAAO;AAAA,EACT;AAEA,WAAS,eAAe,MAAM;AAC5B,QAAI,KAAK,SAAS,KAAK,WAAW;AAChC,aAAO,IAAI,YAAY,eAAe,KAAK,IAAI,CAAC;AAAA,IAClD;AAEA,QAAI,KAAK,SAAS,KAAK,eAAe;AACpC,aAAO,IAAI,eAAe,eAAe,KAAK,IAAI,CAAC;AAAA,IACrD;AAEA,WAAOA,cAAa,IAAI;AAAA,EAC1B;AAEA,WAAS,eAAe,MAAM;AAC5B,QAAI;AAEJ,WAAO,IAAI,iBAAiB;AAAA,MAC1B,MAAM,KAAK,KAAK;AAAA,MAChB,cACG,oBAAoB,KAAK,iBAAiB,QAC3C,sBAAsB,SAClB,SACA,kBAAkB;AAAA,MAExB,WAAW,KAAK,UAAU,IAAI,CAAC,EAAE,MAAM,MAAM,KAAK;AAAA,MAClD,cAAc,KAAK;AAAA,MACnB,MAAM,iBAAiB,KAAK,SAAS;AAAA,MACrC,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AAEA,WAAS,cAAc,OAAO;AAC5B,UAAM,iBAAiB,uBAAO,OAAO,IAAI;AAEzC,eAAW,QAAQ,OAAO;AACxB,UAAI;AAGJ,YAAM,cAEH,eAAe,KAAK,YAAY,QAAQ,iBAAiB,SACtD,eACA,CAAC;AAEP,iBAAW,SAAS,YAAY;AAC9B,YAAI;AAEJ,uBAAe,MAAM,KAAK,SAAS;AAAA,UAIjC,MAAM,eAAe,MAAM,IAAI;AAAA,UAC/B,cACG,qBAAqB,MAAM,iBAAiB,QAC7C,uBAAuB,SACnB,SACA,mBAAmB;AAAA,UACzB,MAAM,iBAAiB,MAAM,SAAS;AAAA,UACtC,mBAAmB,qBAAqB,KAAK;AAAA,UAC7C,SAAS;AAAA,QACX;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAEA,WAAS,iBAAiB,MAAM;AAE9B,UAAM,YAEJ,SAAS,QAAQ,SAAS,SAAS,OAAO,CAAC;AAC7C,UAAM,eAAe,uBAAO,OAAO,IAAI;AAEvC,eAAW,OAAO,WAAW;AAC3B,UAAI;AAKJ,YAAM,OAAO,eAAe,IAAI,IAAI;AACpC,mBAAa,IAAI,KAAK,SAAS;AAAA,QAC7B;AAAA,QACA,cACG,mBAAmB,IAAI,iBAAiB,QACzC,qBAAqB,SACjB,SACA,iBAAiB;AAAA,QACvB,cAAc,aAAa,IAAI,cAAc,IAAI;AAAA,QACjD,mBAAmB,qBAAqB,GAAG;AAAA,QAC3C,SAAS;AAAA,MACX;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAEA,WAAS,mBAAmB,OAAO;AACjC,UAAM,gBAAgB,uBAAO,OAAO,IAAI;AAExC,eAAW,QAAQ,OAAO;AACxB,UAAI;AAGJ,YAAM,eAEH,gBAAgB,KAAK,YAAY,QAAQ,kBAAkB,SACxD,gBACA,CAAC;AAEP,iBAAW,SAAS,aAAa;AAC/B,YAAI;AAKJ,cAAM,OAAO,eAAe,MAAM,IAAI;AACtC,sBAAc,MAAM,KAAK,SAAS;AAAA,UAChC;AAAA,UACA,cACG,sBAAsB,MAAM,iBAAiB,QAC9C,wBAAwB,SACpB,SACA,oBAAoB;AAAA,UAC1B,cAAc,aAAa,MAAM,cAAc,IAAI;AAAA,UACnD,mBAAmB,qBAAqB,KAAK;AAAA,UAC7C,SAAS;AAAA,QACX;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAEA,WAAS,kBAAkB,OAAO;AAChC,UAAM,eAAe,uBAAO,OAAO,IAAI;AAEvC,eAAW,QAAQ,OAAO;AACxB,UAAI;AAGJ,YAAM,eAEH,eAAe,KAAK,YAAY,QAAQ,iBAAiB,SACtD,eACA,CAAC;AAEP,iBAAW,SAAS,aAAa;AAC/B,YAAI;AAEJ,qBAAa,MAAM,KAAK,SAAS;AAAA,UAC/B,cACG,qBAAqB,MAAM,iBAAiB,QAC7C,uBAAuB,SACnB,SACA,mBAAmB;AAAA,UACzB,mBAAmB,qBAAqB,KAAK;AAAA,UAC7C,SAAS;AAAA,QACX;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAEA,WAAS,gBAAgB,OAAO;AAK9B,WAAO,MAAM;AAAA,MAEX,CAAC,SAAS;AACR,YAAI,sBAAsB;AAE1B,gBAEG,wBACE,mBAAmB,KAAK,gBAAgB,QACzC,qBAAqB,SACjB,SACA,iBAAiB,IAAIA,aAAY,OAAO,QAC5C,yBAAyB,SACvB,uBACA,CAAC;AAAA,MAET;AAAA,IACF;AAAA,EACF;AAEA,WAAS,gBAAgB,OAAO;AAK9B,WAAO,MAAM;AAAA,MAEX,CAAC,SAAS;AACR,YAAI,iBAAiB;AAErB,gBAEG,mBACE,cAAc,KAAK,WAAW,QAAQ,gBAAgB,SACnD,SACA,YAAY,IAAIA,aAAY,OAAO,QACvC,oBAAoB,SAClB,kBACA,CAAC;AAAA,MAET;AAAA,IACF;AAAA,EACF;AAEA,WAAS,UAAU,SAAS;AAC1B,QAAI;AAEJ,UAAM,OAAO,QAAQ,KAAK;AAC1B,UAAM,qBACH,wBAAwB,kBAAkB,WAAW,QACtD,0BAA0B,SACtB,wBACA,CAAC;AAEP,YAAQ,QAAQ;AAAA,WACT,KAAK,wBAAwB;AAChC,YAAI;AAEJ,cAAM,WAAW,CAAC,SAAS,GAAG,iBAAiB;AAC/C,eAAO,IAAI,kBAAkB;AAAA,UAC3B;AAAA,UACA,cACG,uBAAuB,QAAQ,iBAAiB,QACjD,yBAAyB,SACrB,SACA,qBAAqB;AAAA,UAC3B,YAAY,MAAM,gBAAgB,QAAQ;AAAA,UAC1C,QAAQ,MAAM,cAAc,QAAQ;AAAA,UACpC;AAAA,UACA;AAAA,QACF,CAAC;AAAA,MACH;AAAA,WAEK,KAAK,2BAA2B;AACnC,YAAI;AAEJ,cAAM,WAAW,CAAC,SAAS,GAAG,iBAAiB;AAC/C,eAAO,IAAI,qBAAqB;AAAA,UAC9B;AAAA,UACA,cACG,wBAAwB,QAAQ,iBAAiB,QAClD,0BAA0B,SACtB,SACA,sBAAsB;AAAA,UAC5B,YAAY,MAAM,gBAAgB,QAAQ;AAAA,UAC1C,QAAQ,MAAM,cAAc,QAAQ;AAAA,UACpC;AAAA,UACA;AAAA,QACF,CAAC;AAAA,MACH;AAAA,WAEK,KAAK,sBAAsB;AAC9B,YAAI;AAEJ,cAAM,WAAW,CAAC,SAAS,GAAG,iBAAiB;AAC/C,eAAO,IAAI,gBAAgB;AAAA,UACzB;AAAA,UACA,cACG,wBAAwB,QAAQ,iBAAiB,QAClD,0BAA0B,SACtB,SACA,sBAAsB;AAAA,UAC5B,QAAQ,kBAAkB,QAAQ;AAAA,UAClC;AAAA,UACA;AAAA,QACF,CAAC;AAAA,MACH;AAAA,WAEK,KAAK,uBAAuB;AAC/B,YAAI;AAEJ,cAAM,WAAW,CAAC,SAAS,GAAG,iBAAiB;AAC/C,eAAO,IAAI,iBAAiB;AAAA,UAC1B;AAAA,UACA,cACG,wBAAwB,QAAQ,iBAAiB,QAClD,0BAA0B,SACtB,SACA,sBAAsB;AAAA,UAC5B,OAAO,MAAM,gBAAgB,QAAQ;AAAA,UACrC;AAAA,UACA;AAAA,QACF,CAAC;AAAA,MACH;AAAA,WAEK,KAAK,wBAAwB;AAChC,YAAI;AAEJ,eAAO,IAAI,kBAAkB;AAAA,UAC3B;AAAA,UACA,cACG,wBAAwB,QAAQ,iBAAiB,QAClD,0BAA0B,SACtB,SACA,sBAAsB;AAAA,UAC5B,gBAAgB,kBAAkB,OAAO;AAAA,UACzC;AAAA,UACA;AAAA,QACF,CAAC;AAAA,MACH;AAAA,WAEK,KAAK,8BAA8B;AACtC,YAAI;AAEJ,cAAM,WAAW,CAAC,SAAS,GAAG,iBAAiB;AAC/C,eAAO,IAAI,uBAAuB;AAAA,UAChC;AAAA,UACA,cACG,wBAAwB,QAAQ,iBAAiB,QAClD,0BAA0B,SACtB,SACA,sBAAsB;AAAA,UAC5B,QAAQ,MAAM,mBAAmB,QAAQ;AAAA,UACzC;AAAA,UACA;AAAA,QACF,CAAC;AAAA,MACH;AAAA;AAAA,EAEJ;AACF;AACA,IAAM,aAAa;AAAA,EACjB,CAAC,GAAG,sBAAsB,GAAG,kBAAkB;AAAA,EAC/C,CAAC,SAAS,KAAK;AACjB;AAMA,SAAS,qBAAqB,MAAM;AAClC,QAAM,aAAa,mBAAmB,4BAA4B,IAAI;AAEtE,SAAO,eAAe,QAAQ,eAAe,SACzC,SACA,WAAW;AACjB;AAKA,SAAS,kBAAkB,MAAM;AAC/B,QAAM,cAAc,mBAAmB,6BAA6B,IAAI;AAExE,SAAO,gBAAgB,QAAQ,gBAAgB,SAC3C,SACA,YAAY;AAClB;;;AClwBO,SAAS,eAAe,aAAa,SAAS;AACnD,EAAC,eAAe,QAAQ,YAAY,SAAS,KAAK,YAChD,UAAU,OAAO,kCAAkC;AAErD,OACG,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,iBACzD,SACD,YAAY,QAAQ,YAAY,SAC7B,SACA,QAAQ,oBAAoB,MAChC;AACA,mBAAe,WAAW;AAAA,EAC5B;AAEA,QAAM,oBAAoB;AAAA,IACxB,aAAa;AAAA,IACb,OAAO,CAAC;AAAA,IACR,YAAY,CAAC;AAAA,IACb,YAAY,uBAAO,OAAO,IAAI;AAAA,IAC9B,mBAAmB,CAAC;AAAA,IACpB,aAAa;AAAA,EACf;AACA,QAAM,SAAS,iBAAiB,mBAAmB,aAAa,OAAO;AAEvE,MAAI,OAAO,WAAW,MAAM;AAC1B,eAAW,QAAQ,OAAO,OAAO;AAC/B,cAAQ,KAAK;AAAA,aAIN;AAEH,iBAAO,QAAQ;AACf;AAAA,aAEG;AAEH,iBAAO,WAAW;AAClB;AAAA,aAEG;AAEH,iBAAO,eAAe;AACtB;AAAA;AAAA,IAEN;AAAA,EACF;AAEA,QAAM,aAAa;AAAA,IACjB,GAAG,OAAO;AAAA,IACV,GAAG,oBAAoB;AAAA,MAAO,CAAC,iBAC7B,OAAO,WAAW;AAAA,QAChB,CAAC,cAAc,UAAU,SAAS,aAAa;AAAA,MACjD;AAAA,IACF;AAAA,EACF;AACA,SAAO,IAAI,cAAc,EAAE,GAAG,QAAQ,WAAW,CAAC;AACpD;AAMO,SAAS,YAAY,QAAQ,SAAS;AAC3C,QAAMC,YAAW,MAAM,QAAQ;AAAA,IAC7B,YACE,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ;AAAA,IAC5D,8BACE,YAAY,QAAQ,YAAY,SAC5B,SACA,QAAQ;AAAA,EAChB,CAAC;AACD,SAAO,eAAeA,WAAU;AAAA,IAC9B,gBACE,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ;AAAA,IAC5D,aACE,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ;AAAA,EAC9D,CAAC;AACH;;;AC/FO,IAAM,sBAAsB,OAAO,gBAAgB;AACnD,IAAM,uBAAuB,OAAO,iBAAiB;AACrD,SAAS,oBAAoB,QAAQ;AACxC,MAAI,CAAC,UAAU,OAAO,sBAAsB;AACxC;AAAA,EACJ;AACA,SAAO,uBAAuB;AAC9B,QAAM,UAAU,OAAO,OAAO,OAAO,WAAW,CAAC;AACjD,aAAW,QAAQ,SAAS;AACxB,QAAI,CAAC,oBAAoB,IAAI,KAAK,aAAa,IAAI,GAAG;AAClD,YAAM,SAAS,OAAO,OAAO,KAAK,UAAU,CAAC;AAC7C,iBAAW,SAAS,QAAQ;AACxB,YAAI,aAAc,MAAM,WAAW;AACnC,cAAM,UAAU,OAAO,MAAM,MAAM,SAAS,SAAS;AACjD,cAAI,WAAW,QAAQ,uBAAuB;AAC1C,kBAAM,QAAQ,QAAQ;AACtB,kBAAM,aAAa,CAAC;AACpB,uBAAW,QAAQ,OAAO;AACtB,oBAAM,UAAU,MAAM,KAAK;AAAA,gBACvB;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA,mBAAmB,WAAS;AACxB,+BAAa;AAAA,gBACjB;AAAA,cACJ,CAAC;AACD,yBAAW,WAAW,KAAK,OAAO;AAAA,YACtC;AACA,gBAAI;AACA,kBAAI,SAAS,MAAM,WAAW,MAAM,MAAM,SAAS,IAAI;AACvD,yBAAW,WAAW,YAAY;AAC9B,wBAAQ;AAAA,kBACJ;AAAA,kBACA,WAAW,eAAa;AACpB,6BAAS;AAAA,kBACb;AAAA,gBACJ,CAAC;AAAA,cACL;AACA,qBAAO;AAAA,YACX,SACO,GAAP;AACI,kBAAI,YAAY;AAChB,yBAAW,WAAW,YAAY;AAC9B,wBAAQ;AAAA,kBACJ,QAAQ;AAAA,kBACR,WAAW,eAAa;AACpB,gCAAY;AAAA,kBAChB;AAAA,gBACJ,CAAC;AAAA,cACL;AACA,oBAAM;AAAA,YACV;AAAA,UACJ,OACK;AACD,mBAAO,WAAW,MAAM,MAAM,SAAS,IAAI;AAAA,UAC/C;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACJ;;;AC9DO,IAAM,+BAA+B,OAAO,0BAA0B;AAsBtE,SAAS,+BAA+B,WAAW;AACtD,UAAQ,OAAO,cAAc,WAAW,YAAY,UAAU,MAAM,QAAQ,UAAU,MAAM;AAChG;AACA,SAAS,iBAAiB,MAAM;AAC5B,SAAO,KAAK,WAAW,IACjB,KAAK,KACL;AAAA,IACE,QAAQ,KAAK;AAAA,IACb,UAAU,KAAK;AAAA,IACf,WAAW,KAAK;AAAA,IAChB,cAAc,KAAK;AAAA,IACnB,gBAAgB,KAAK;AAAA,IACrB,eAAe,KAAK;AAAA,IACpB,eAAe,KAAK;AAAA,IACpB,wBAAwB,KAAK;AAAA,EACjC;AACR;AAIO,IAAM,gBAAgB,CAAC,gBAAiB,IAAI,aAAa,YAAY,iBAAiB,QAAQ,CAAC;AAC/F,SAASC,kBAAiB,QAAQ,QAAQ;AAC7C,QAAM,WAAW,OAAO,OAAO,eAAe;AAC9C,iBAAe,UAAU,QAAQ;AAC7B,QAAIC;AACJ,QAAI,OAAO,MAAM;AACb,aAAO;AAAA,IACX;AACA,QAAI;AACA,aAAO,EAAE,OAAO,MAAM,OAAO,OAAO,KAAK,GAAG,MAAM,MAAM;AAAA,IAC5D,SACO,OAAP;AACI,UAAI;AACA,gBAAQA,MAAK,SAAS,YAAY,QAAQA,QAAO,SAAS,SAASA,IAAG,KAAK,QAAQ;AAAA,MACvF,SACO,QAAP;AAAA,MAEA;AACA,YAAM;AAAA,IACV;AAAA,EACJ;AACA,QAAM,SAAS;AAAA,IACX,CAAC,OAAO,iBAAiB;AACrB,aAAO;AAAA,IACX;AAAA,IACA,MAAM,OAAO;AACT,aAAO,MAAM,UAAU,MAAM,SAAS,KAAK,CAAC;AAAA,IAChD;AAAA,IACA,MAAM,SAAS;AACX,UAAIA;AACJ,YAAM,WAAWA,MAAK,SAAS,YAAY,QAAQA,QAAO,SAAS,SAASA,IAAG,KAAK,QAAQ;AAC5F,aAAO,UAAU,MAAM,UAAU,MAAM,OAAO,IAAI,EAAE,OAAO,QAAW,MAAM,KAAK;AAAA,IACrF;AAAA,IACA,MAAM,MAAM,OAAO;AACf,UAAIA;AACJ,YAAM,WAAWA,MAAK,SAAS,WAAW,QAAQA,QAAO,SAAS,SAASA,IAAG,KAAK,QAAQ;AAC3F,UAAI,SAAS;AACT,eAAO,MAAM,UAAU,MAAM,OAAO;AAAA,MACxC;AAGA,YAAM;AAAA,IACV;AAAA,EACJ;AACA,SAAO;AACX;AACA,SAAS,eAAe,MAAM;AAC1B,SAAO,KAAK,WAAW,IACjB,KAAK,KACL;AAAA,IACE,QAAQ,KAAK;AAAA,IACb,UAAU,KAAK;AAAA,IACf,WAAW,KAAK;AAAA,IAChB,cAAc,KAAK;AAAA,IACnB,gBAAgB,KAAK;AAAA,IACrB,eAAe,KAAK;AAAA,IACpB,eAAe,KAAK;AAAA,IACpB,cAAc,KAAK;AAAA,EACvB;AACR;AAIO,IAAM,cAAc,CAAC,cAAe,IAAI,aAAa,UAAU,eAAe,QAAQ,CAAC;AAOvF,SAASC,iBAAgB,oBAAoB;AAChD,SAAQ,OAAO,uBAAuB,YAClC,sBAAsB,QACtB,OAAO,mBAAmB,OAAO,mBAAmB;AAC5D;AAQO,SAAS,oCAAoC,SAAS,IAAI;AAC7D,MAAIA,iBAAgB,QAAQ,MAAM,GAAG;AACjC,WAAO,EAAE,QAAQ,GAAG;AAAA,EACxB;AACA,KAAG;AAAA,IACC,MAAM,QAAQ;AAAA,IACd,QAAQ,QAAQ;AAAA,IAChB,WAAW,QAAQ;AAAA,EACvB,CAAC;AACD,SAAO;AACX;AACO,SAAS,mBAAmB,QAAQ,SAAS;AAChD,QAAM,WAAW,OAAO,OAAO,eAAe;AAC9C,MAAI,SAAS;AACb,QAAM,SAAS;AAAA,IACX,CAAC,OAAO,iBAAiB;AACrB,aAAO;AAAA,IACX;AAAA,IACA,MAAM,OAAO;AACT,YAAM,SAAS,MAAM,SAAS,KAAK;AACnC,UAAI,OAAO,QAAQ,WAAW,OAAO;AACjC,iBAAS;AACT,gBAAQ;AAAA,MACZ;AACA,aAAO;AAAA,IACX;AAAA,IACA,MAAM,SAAS;AACX,UAAID;AACJ,YAAM,WAAWA,MAAK,SAAS,YAAY,QAAQA,QAAO,SAAS,SAASA,IAAG,KAAK,QAAQ;AAC5F,UAAI,WAAW,OAAO;AAClB,iBAAS;AACT,gBAAQ;AAAA,MACZ;AACA,aAAO,UAAU,MAAM,UAAU,EAAE,MAAM,MAAM,OAAO,OAAU;AAAA,IACpE;AAAA,IACA,MAAM,MAAM,OAAO;AACf,UAAIA;AACJ,YAAM,WAAWA,MAAK,SAAS,WAAW,QAAQA,QAAO,SAAS,SAASA,IAAG,KAAK,QAAQ;AAC3F,UAAI,SAAS;AACT,eAAO,MAAM;AAAA,MACjB;AAGA,YAAM;AAAA,IACV;AAAA,EACJ;AACA,SAAO;AACX;AACO,SAAS,mBAAmB,QAAQE,UAAS;AAChD,QAAM,WAAW,OAAO,OAAO,eAAe;AAC9C,QAAM,SAAS;AAAA,IACX,CAAC,OAAO,iBAAiB;AACrB,aAAO;AAAA,IACX;AAAA,IACA,MAAM,OAAO;AACT,UAAI;AACA,eAAO,MAAM,SAAS,KAAK;AAAA,MAC/B,SACO,OAAP;AACI,QAAAA,SAAQ,KAAK;AACb,eAAO,EAAE,MAAM,MAAM,OAAO,OAAU;AAAA,MAC1C;AAAA,IACJ;AAAA,IACA,MAAM,SAAS;AACX,UAAIF;AACJ,YAAM,WAAWA,MAAK,SAAS,YAAY,QAAQA,QAAO,SAAS,SAASA,IAAG,KAAK,QAAQ;AAC5F,aAAO,UAAU,MAAM,UAAU,EAAE,MAAM,MAAM,OAAO,OAAU;AAAA,IACpE;AAAA,IACA,MAAM,MAAM,OAAO;AACf,UAAIA;AACJ,YAAM,WAAWA,MAAK,SAAS,WAAW,QAAQA,QAAO,SAAS,SAASA,IAAG,KAAK,QAAQ;AAC3F,UAAI,SAAS;AACT,eAAO,MAAM;AAAA,MACjB;AAGA,YAAM;AAAA,IACV;AAAA,EACJ;AACA,SAAO;AACX;;;AC1MO,SAAS,0BAA0B,SAAS;AAC/C,MAAI,SAAS;AACb,MAAI,WAAW;AACf,QAAM,sBAAsB,CAAC;AAC7B,aAAW,UAAU,SAAS;AAC1B,QAAI,OAAO,kBAAkB;AACzB,0BAAoB,KAAK,OAAO,gBAAgB;AAAA,IACpD;AAAA,EACJ;AAIA,QAAM,gBAAgB,CAAC,WAAW,oBAAoB,OAAO;AACzD,QAAI,oBAAoB,QAAQ;AAC5B,0BAAoB,SAAS;AAAA,IACjC;AACA,aAAS;AACT,QAAI,UAAU;AACV,iBAAW,CAAC,GAAG,MAAM,KAAK,QAAQ,QAAQ,GAAG;AACzC,YAAI,MAAM,mBAAmB;AACzB,iBAAO,kBACH,OAAO,eAAe;AAAA,YAClB;AAAA,YACA,eAAe,iBAAe;AAC1B,4BAAc,aAAa,CAAC;AAAA,YAChC;AAAA,UACJ,CAAC;AAAA,QACT;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACA,QAAM,uBAAuB,CAAC;AAE9B,aAAW,CAAC,GAAG,MAAM,KAAK,QAAQ,QAAQ,GAAG;AACzC,WAAO,gBACH,OAAO,aAAa;AAAA,MAChB;AAAA,MACA,WAAW,eAAa;AACpB,gBAAQ,KAAK,SAAS;AAAA,MAC1B;AAAA,MACA,WAAW,oBAAkB,cAAc,gBAAgB,CAAC;AAAA,MAC5D,6BAA6B,CAAAG,aAAW,qBAAqB,KAAKA,QAAO;AAAA,IAC7E,CAAC;AAAA,EACT;AAEA,QAAM,kBAAkB;AAAA,IACpB,MAAM,CAAC;AAAA,IACP,OAAO,CAAC;AAAA,IACR,UAAU,CAAC;AAAA,IACX,WAAW,CAAC;AAAA,IACZ,SAAS,CAAC;AAAA,IACV,SAAS,CAAC;AAAA,EACd;AACA,aAAW,EAAE,mBAAmB,WAAW,SAAS,aAAa,YAAY,YAAY,KAAK,SAAS;AACnG,mBAAe,gBAAgB,KAAK,KAAK,WAAW;AACpD,yBAAqB,gBAAgB,QAAQ,KAAK,iBAAiB;AACnE,iBAAa,gBAAgB,QAAQ,KAAK,SAAS;AACnD,eAAW,gBAAgB,MAAM,KAAK,OAAO;AAC7C,mBAAe,gBAAgB,UAAU,KAAK,WAAW;AACzD,kBAAc,gBAAgB,SAAS,KAAK,UAAU;AAAA,EAC1D;AACA,QAAM,OAAO,oBAAkB;AAC3B,eAAW,CAAC,GAAG,WAAW,KAAK,gBAAgB,KAAK,QAAQ,GAAG;AAC3D,kBAAY;AAAA,QACR,SAAS;AAAA,QACT,eAAe,eAAa;AACxB,cAAI,CAAC,gBAAgB;AACjB;AAAA,UACJ;AACA,iBAAO,OAAO,gBAAgB,SAAS;AAAA,QAC3C;AAAA,QACA,WAAW,oBAAkB,cAAc,gBAAgB,CAAC;AAAA,MAChE,CAAC;AAAA,IACL;AAAA,EACJ;AACA,QAAM,cAAc,gBAAgB,MAAM,SACpC,oBAAkB,CAAC,QAAQ,iBAAiB;AAC1C,QAAI,SAAS;AACb,QAAI,UAAU;AACd,UAAM,UAAU;AAChB,UAAM,aAAa,CAAC;AACpB,eAAW,WAAW,gBAAgB,OAAO;AACzC,YAAM,UAAU,QAAQ;AAAA,QACpB;AAAA,QACA,eAAe,eAAa;AACxB,iBAAO,OAAO,SAAS,SAAS;AAAA,QACpC;AAAA,QACA,QAAQ,EAAE,QAAQ,SAAS,aAAa;AAAA,QACxC;AAAA,QACA,YAAY,WAAS;AACjB,oBAAU;AAAA,QACd;AAAA,QACA,mBAAmB,YAAU;AACzB,mBAAS;AAAA,QACb;AAAA,MACJ,CAAC;AACD,iBAAW,WAAW,KAAK,OAAO;AAAA,IACtC;AACA,QAAI,WAAW,MAAM;AACjB,UAAI;AACA,iBAAS,QAAQ,QAAQ,YAAY;AAAA,MACzC,SACO,GAAP;AACI,iBAAS;AAAA,MACb;AAAA,IACJ;AACA,eAAW,WAAW,YAAY;AAC9B,cAAQ;AAAA,QACJ;AAAA,QACA,eAAe,eAAa;AACxB,iBAAO,OAAO,SAAS,SAAS;AAAA,QACpC;AAAA,QACA,oBAAoB,eAAa;AAC7B,mBAAS;AAAA,QACb;AAAA,QACA;AAAA,MACJ,CAAC;AAAA,IACL;AACA,QAAI,WAAW,MAAM;AACjB,YAAM,IAAI,MAAM,2BAA2B;AAAA,IAC/C;AACA,QAAI,kBAAkB,OAAO;AACzB,YAAM;AAAA,IACV;AACA,WAAO;AAAA,EACX,IACE,MAAM;AACZ,QAAM,iBAAiB,gBAAgB,SAAS,SAC1C,oBAAkB,CAACC,SAAQ,aAAa,OAAO,UAAU,sBAAsB;AAC7E,QAAI,cAAc,QAAQ,CAAC,GAAG,KAAK,IAAI;AACvC,QAAI,aAAa;AACjB,QAAI,SAAS;AACb,UAAM,UAAU;AAChB,UAAM,aAAa,CAAC;AACpB,eAAW,cAAc,gBAAgB,UAAU;AAC/C,YAAM,UAAU,WAAW;AAAA,QACvB;AAAA,QACA,eAAe,eAAa;AACxB,iBAAO,OAAO,SAAS,SAAS;AAAA,QACpC;AAAA,QACA,QAAQ;AAAA,UACJ,QAAAA;AAAA,UACA;AAAA,UACA,OAAO;AAAA,UACP;AAAA,UACA,SAAS;AAAA,QACb;AAAA,QACA;AAAA,QACA,mBAAmB,UAAQ;AACvB,cAAI,CAAC,aAAa;AACd,0BAAc,CAAC,GAAG,cAAc;AAAA,UACpC;AACA,sBAAY,KAAK,IAAI;AAAA,QACzB;AAAA,QACA,iBAAiB,WAAS;AACtB,uBAAa;AAAA,QACjB;AAAA,QACA,WAAW,gBAAc;AACrB,mBAAS;AAAA,QACb;AAAA,MACJ,CAAC;AACD,iBAAW,WAAW,KAAK,OAAO;AAAA,IACtC;AACA,QAAI,CAAC,QAAQ;AACT,eAAS,WAAWA,SAAQ,aAAa,aAAa,UAAU,iBAAiB;AAAA,IACrF;AACA,UAAM,QAAQ,OAAO,WAAW;AAChC,eAAW,WAAW,YAAY;AAC9B,cAAQ;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA,eAAe,eAAa;AACxB,iBAAO,OAAO,SAAS,SAAS;AAAA,QACpC;AAAA,QACA,WAAW,eAAa;AACpB,mBAAS;AAAA,QACb;AAAA,MACJ,CAAC;AAAA,IACL;AACA,WAAO;AAAA,EACX,IACE,MAAM;AACZ,QAAM,uBAAuB,gBAAgB,QACxC,SACC,oBAAkB,OAAO,oBAAoB;AAC3C,UAAM,aAAa,CAAC;AAEpB,QAAI,UAAU,kBAAkB,EAAE,GAAG,gBAAgB,GAAG,gBAAgB,IAAI;AAC5E,QAAI;AACA,UAAI,4BAA4B;AAChC,iBAAW,aAAa,gBAAgB,SAAS;AAC7C,cAAM,kBAAkB,MAAM,UAAU;AAAA,UACpC;AAAA,UACA,eAAe,eAAa;AACxB,sBAAU,EAAE,GAAG,SAAS,GAAG,UAAU;AAAA,UACzC;AAAA,UACA,sBAAsB,MAAM;AACxB,wCAA4B;AAAA,UAChC;AAAA,QACJ,CAAC;AACD,YAAI,OAAO,oBAAoB,YAAY;AACvC,qBAAW,KAAK,eAAe;AAAA,QACnC;AACA,YAAI,8BAA8B,MAAM;AACpC;AAAA,QACJ;AAAA,MACJ;AACA,iBAAW,WAAW,YAAY;AAC9B,gBAAQ;AAAA,UACJ;AAAA,UACA,eAAe,eAAa;AACxB,sBAAU,EAAE,GAAG,SAAS,GAAG,UAAU;AAAA,UACzC;AAAA,QACJ,CAAC;AAAA,MACL;AACA,aAAO;AAAA,IACX,SACO,KAAP;AACI,UAAI,QAAQ;AACZ,iBAAW,WAAW,sBAAsB;AACxC,gBAAQ;AAAA,UACJ;AAAA,UACA;AAAA,UACA,UAAU,CAAAC,SAAO;AACb,oBAAQA;AAAA,UACZ;AAAA,QACJ,CAAC;AAAA,MACL;AACA,YAAM;AAAA,IACV;AAAA,EACJ,IACE,oBAAkB,qBAAmB,kBAAkB,EAAE,GAAG,gBAAgB,GAAG,gBAAgB,IAAI;AACzG,QAAM,qBAAqB,gBAAgB,UAAU,UAAU,oBAAoB;AACnF,QAAM,kBAAkB,qBAClB,cAAc,OAAO,SAAS;AAC5B,QAAI,cAAc;AAClB,UAAM,aAAa,CAAC;AACpB,UAAM,yBAAyB,CAAC;AAChC,QAAI,UAAU,KAAK,gBAAgB,CAAC;AACpC,QAAI;AACJ,eAAW,eAAe,gBAAgB,WAAW;AACjD,YAAM,QAAQ,MAAM,YAAY;AAAA,QAC5B;AAAA,QACA,gBAAgB,oBAAkB;AAC9B,wBAAc;AAAA,QAClB;AAAA,QACA,eAAe,eAAa;AACxB,oBAAU,EAAE,GAAG,SAAS,GAAG,UAAU;AAAA,QACzC;AAAA,QACA;AAAA,QACA,2BAA2B,gBAAc;AACrC,mBAAS;AAAA,QACb;AAAA,MACJ,CAAC;AACD,UAAI,OAAO;AACP,YAAI,MAAM,mBAAmB;AACzB,qBAAW,KAAK,MAAM,iBAAiB;AAAA,QAC3C;AACA,YAAI,MAAM,kBAAkB;AACxB,iCAAuB,KAAK,MAAM,gBAAgB;AAAA,QACtD;AAAA,MACJ;AACA,UAAI,WAAW,QAAW;AACtB;AAAA,MACJ;AAAA,IACJ;AACA,QAAI,oBAAoB,QAAQ;AAC5B,cAAQ,wBAAwB;AAAA,IACpC;AACA,QAAI,WAAW,QAAW;AACtB,eAAS,MAAM,YAAY;AAAA,QACvB,GAAG;AAAA,QACH,cAAc;AAAA,MAGlB,CAAC;AAAA,IACL;AACA,UAAM,gBAAgB,CAAC;AACvB,UAAM,eAAe,CAAC;AACtB,eAAW,WAAW,YAAY;AAC9B,YAAM,aAAa,QAAQ;AAAA,QACvB;AAAA,QACA;AAAA,QACA,WAAW,eAAa;AACpB,mBAAS;AAAA,QACb;AAAA,MACJ,CAAC;AACD,UAAI,YAAY;AACZ,YAAI,WAAW,QAAQ;AACnB,wBAAc,KAAK,WAAW,MAAM;AAAA,QACxC;AACA,YAAI,WAAW,OAAO;AAClB,uBAAa,KAAK,WAAW,KAAK;AAAA,QACtC;AAAA,MACJ;AAAA,IACJ;AACA,QAAI,cAAc,UAAUC,iBAAgB,MAAM,GAAG;AACjD,eAASC,kBAAiB,QAAQ,OAAOC,YAAW;AAChD,mBAAW,UAAU,eAAe;AAChC,gBAAM,OAAO;AAAA,YACT;AAAA,YACA,QAAAA;AAAA,YACA,WAAW,eAAcA,UAAS;AAAA,UACtC,CAAC;AAAA,QACL;AACA,eAAOA;AAAA,MACX,CAAC;AAAA,IACL;AACA,QAAI,aAAa,UAAUF,iBAAgB,MAAM,GAAG;AAChD,eAAS,mBAAmB,QAAQ,MAAM;AACtC,mBAAW,SAAS,cAAc;AAC9B,gBAAM;AAAA,QACV;AAAA,MACJ,CAAC;AAAA,IACL;AACA,QAAI,uBAAuB,UAAUA,iBAAgB,MAAM,GAAG;AAC1D,eAAS,mBAAmB,QAAQ,SAAO;AACvC,YAAI,QAAQ;AACZ,mBAAWH,YAAW,wBAAwB;AAC1C,UAAAA,SAAQ;AAAA,YACJ;AAAA,YACA,UAAU,CAAAE,SAAO;AACb,sBAAQA;AAAA,YACZ;AAAA,UACJ,CAAC;AAAA,QACL;AACA,cAAM;AAAA,MACV,CAAC;AAAA,IACL;AACA,WAAO;AAAA,EACX,CAAC,IACC,cAAc,SAAS;AAC7B,QAAM,mBAAmB,gBAAgB,QAAQ,UAAU,oBAAoB;AAC/E,QAAM,gBAAgB,mBAChB,YAAY,OAAO,SAAS;AAC1B,QAAI,YAAY;AAChB,QAAI;AACJ,UAAM,aAAa,CAAC;AACpB,QAAI,UAAU,KAAK,gBAAgB,CAAC;AACpC,eAAW,aAAa,gBAAgB,SAAS;AAC7C,YAAM,QAAQ,MAAM,UAAU;AAAA,QAC1B;AAAA,QACA,cAAc,kBAAgB;AAC1B,sBAAY;AAAA,QAChB;AAAA,QACA,2BAA2B,gBAAc;AACrC,mBAAS;AAAA,QACb;AAAA,QACA,eAAe,eAAa;AACxB,cAAI,OAAO,cAAc,UAAU;AAC/B,sBAAU;AAAA,cACN,GAAG;AAAA,cACH,GAAG;AAAA,YACP;AAAA,UACJ,OACK;AACD,kBAAM,IAAI,MAAM,gEAAgE,KAAK,UAAU,SAAS,OAAO,OAAO,YAAY;AAAA,UACtI;AAAA,QACJ;AAAA,QACA;AAAA,MACJ,CAAC;AACD,UAAI,UAAU,QAAQ,UAAU,SAAS,SAAS,MAAM,eAAe;AACnE,mBAAW,KAAK,MAAM,aAAa;AAAA,MACvC;AACA,UAAI,WAAW,QAAW;AACtB;AAAA,MACJ;AAAA,IACJ;AACA,QAAI,oBAAoB,QAAQ;AAC5B,cAAQ,wBAAwB;AAAA,IACpC;AACA,QAAI,WAAW,QAAW;AACtB,eAAU,MAAM,UAAU;AAAA,QACtB,GAAG;AAAA,QACH,cAAc;AAAA,MAClB,CAAC;AAAA,IACL;AACA,UAAM,gBAAgB,CAAC;AACvB,UAAM,eAAe,CAAC;AACtB,eAAW,WAAW,YAAY;AAC9B,YAAM,aAAa,MAAM,QAAQ;AAAA,QAC7B;AAAA,QACA;AAAA,QACA,WAAW,eAAa;AACpB,mBAAS;AAAA,QACb;AAAA,MACJ,CAAC;AACD,UAAI,YAAY;AACZ,YAAI,WAAW,QAAQ;AACnB,wBAAc,KAAK,WAAW,MAAM;AAAA,QACxC;AACA,YAAI,WAAW,OAAO;AAClB,uBAAa,KAAK,WAAW,KAAK;AAAA,QACtC;AAAA,MACJ;AAAA,IACJ;AACA,QAAI,cAAc,UAAUC,iBAAgB,MAAM,GAAG;AACjD,eAASC,kBAAiB,QAAQ,OAAOC,YAAW;AAChD,mBAAW,UAAU,eAAe;AAChC,gBAAM,OAAO;AAAA,YACT;AAAA,YACA,QAAAA;AAAA,YACA,WAAW,eAAa;AACpB,cAAAA,UAAS;AAAA,YACb;AAAA,UACJ,CAAC;AAAA,QACL;AACA,eAAOA;AAAA,MACX,CAAC;AAAA,IACL;AACA,QAAI,aAAa,UAAUF,iBAAgB,MAAM,GAAG;AAChD,eAAS,mBAAmB,QAAQ,MAAM;AACtC,mBAAW,SAAS,cAAc;AAC9B,gBAAM;AAAA,QACV;AAAA,MACJ,CAAC;AAAA,IACL;AACA,WAAO;AAAA,EACX,CAAC,IACC,YAAY,OAAO;AACzB,aAAW;AAGX,MAAI,QAAQ;AACR,eAAW,CAAC,GAAG,MAAM,KAAK,QAAQ,QAAQ,GAAG;AACzC,aAAO,kBACH,OAAO,eAAe;AAAA,QAClB;AAAA,QACA,eAAe,oBAAkB,cAAc,gBAAgB,CAAC;AAAA,MACpE,CAAC;AAAA,IACT;AAAA,EACJ;AACA,SAAO;AAAA,IACH,mBAAmB;AACf,aAAO;AAAA,IACX;AAAA,IACA;AAAA,IACA,OAAO;AAAA,IACP,UAAU;AAAA,IACV,SAAS;AAAA,IACT,WAAW;AAAA,IACX,gBAAgB;AAAA,EACpB;AACJ;;;AC/bA,IAAI;AAGJ,IAAM,eAAe,OAAO,eAAe,iBAAiB,KAAK,eAAe,QAAQ,eAAe,SAAS,SAAS,WAAW,iBAAiB,QAAQ,OAAO,SAAS,SAAS,GAAG,OACnL,MAAM,WAAW,YAAY,IAAI,IACjC,MAAM,KAAK,IAAI;AACrB,IAAM,UAAU,MAAM;AAClB,QAAM,QAAQ,aAAa;AAC3B,SAAO,MAAM;AACT,UAAM,MAAM,aAAa;AACzB,WAAO,MAAM;AAAA,EACjB;AACJ;AACA,IAAM,gBAAgB,OAAO,gBAAgB;AACtC,SAAS,kBAAkB,cAAc;AAC5C,QAAM,eAAe,CAAC,MAAM,QAAQ;AAChC,UAAM,MAAM,QAAQ;AACpB,WAAO,MAAM;AACT,UAAI,eAAe,QAAQ,IAAI;AAAA,IACnC;AAAA,EACJ;AACA,SAAO;AAAA,IACH,GAAG;AAAA,IACH,MAAM,CAAC,MAAM,CAAC,MAAM;AAChB,UAAI,iBAAiB,IAAI,kBAAkB,CAAC;AAC5C,YAAM,OAAO,aAAa,QAAQ,OAAO,CAAC,CAAC;AAC3C,UAAI;AACA,eAAO,aAAa,KAAK,GAAG;AAAA,MAChC,UACA;AACI,aAAK;AAAA,MACT;AAAA,IACJ;AAAA,IACA,OAAO,CAAC,MAAM,CAAC,MAAM;AACjB,UAAI,iBAAiB,IAAI,kBAAkB,CAAC;AAC5C,YAAM,WAAW,aAAa,MAAM,GAAG;AACvC,aAAO,IAAI,SAAS;AAChB,cAAM,OAAO,aAAa,SAAS,GAAG;AACtC,YAAI;AACA,iBAAO,SAAS,GAAG,IAAI;AAAA,QAC3B,UACA;AACI,eAAK;AAAA,QACT;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,UAAU,CAAC,MAAM,CAAC,MAAM;AACpB,UAAI,iBAAiB,IAAI,kBAAkB,CAAC;AAC5C,YAAM,WAAW,aAAa,SAAS,GAAG;AAC1C,aAAO,IAAI,SAAS;AAChB,cAAM,OAAO,aAAa,YAAY,GAAG;AACzC,YAAI;AACA,iBAAO,SAAS,GAAG,IAAI;AAAA,QAC3B,UACA;AACI,eAAK;AAAA,QACT;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,SAAS,OAAO,cAAcG,WAAU,WAAW,cAAc,gBAAgB,eAAe,eAAe,iBAAiB;AAC5H,YAAM,OAAO,wBAAwB,gBAC/B;AAAA,QACE,QAAQ;AAAA,QACR,UAAUA;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ,IACE;AAGN,YAAM,OAAO,aAAa,WAAW,KAAK,gBAAgB,CAAC,CAAC;AAC5D,UAAI;AACA,cAAM,SAAS,MAAM,aAAa,QAAQ,IAAI;AAC9C,aAAK;AACL,YAAI,CAACC,iBAAgB,MAAM,GAAG;AAC1B,iBAAO,aAAa,OAAO,cAAc,CAAC;AAG1C,iBAAO,WAAW,iBAAiB,KAAK,aAAa;AAAA,QACzD,OACK;AAED,kBAAQ,KAAK,iIAAiI;AAAA,QAClJ;AACA,eAAO;AAAA,MACX,SACO,GAAP;AACI,aAAK;AACL,cAAM;AAAA,MACV;AAAA,IACJ;AAAA,IACA,WAAW,OAAO,cAAcD,WAAU,WAAW,cAAc,gBAAgB,eAAe,eAAe,2BAA2B;AACxI,YAAM,OAAO,wBAAwB,gBAC/B;AAAA,QACE,QAAQ;AAAA,QACR,UAAUA;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ,IACE;AAGN,YAAM,OAAO,aAAa,aAAa,KAAK,gBAAgB,CAAC,CAAC;AAC9D,UAAI;AACA,eAAO,MAAM,aAAa,UAAU,IAAI;AAAA,MAC5C,UACA;AACI,aAAK;AAAA,MACT;AAAA,IACJ;AAAA,IACA,gBAAgB,CAAC,MAAM,CAAC,MAAM;AAC1B,YAAM,WAAW,aAAa,eAAe,GAAG;AAChD,aAAO,OAAO,aAAa;AACvB,cAAM,OAAO,aAAa,kBAAkB,GAAG;AAC/C,YAAI;AACA,iBAAO,MAAM,SAAS,QAAQ;AAAA,QAClC,UACA;AACI,eAAK;AAAA,QACT;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACJ;;;AChIO,SAAS,QAAQ,SAAS;AAC7B,QAAM,UAAU,QAAQ,QAAQ,OAAO,eAAe;AACtD,MAAI,eAAe,0BAA0B,OAAO;AACpD,MAAI,QAAQ,uBAAuB;AAC/B,mBAAe,kBAAkB,YAAY;AAAA,EACjD;AACA,QAAM,eAAe,CAAC,iBAAiB,CAAC,MAAM;AAC1C,UAAM,oBAAoB;AAC1B,sBAAkB,KAAK,cAAc;AACrC,WAAO;AAAA,MACH,OAAO,kBAAkB,MAAM,cAAc;AAAA,MAC7C,UAAU,kBAAkB,SAAS,cAAc;AAAA,MACnD,gBAAgB,kBAAkB,eAAe,cAAc;AAAA,MAC/D,SAAS,kBAAkB;AAAA,MAC3B,WAAW,kBAAkB;AAAA,MAC7B,QAAQ,kBAAkB,iBAAiB;AAAA,IAC/C;AAAA,EACJ;AACA,eAAa,WAAW;AACxB,SAAO;AACX;;;ACtBA,IAAM,kBAAkB;AAAA,EACpB,OAAO,QAAQ;AACnB;AACO,IAAM,YAAY,CAAC,aAAa,oBAAoB;AACvD,QAAM,UAAU;AAAA,IACZ;AAAA,IACA,GAAG;AAAA,EACP;AACA,SAAO;AAAA,IACH,QAAQ,EAAE,eAAe,OAAO,GAAG;AAC/B,UAAI,QAAQ,qBAAqB,+BAA+B,OAAO,MAAM,GAAG;AAC5E,sBAAc;AAAA,UACV,CAAC,+BAA+B;AAAA,QACpC,CAAC;AAAA,MACL;AAAA,IACJ;AAAA,IACA,UAAU,EAAE,KAAK,GAAG;AAChB,UAAI,KAAK,aAAa,+BAA+B;AACjD;AAAA,MACJ;AACA,cAAQ,MAAM,iBAAiB,EAAE,KAAK,CAAC;AACvC,aAAO;AAAA,QACH,eAAe,CAAC,EAAE,OAAO,MAAM;AAC3B,kBAAQ,MAAM,eAAe,EAAE,MAAM,OAAO,CAAC;AAAA,QACjD;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,YAAY,EAAE,KAAK,GAAG;AAClB,UAAI,KAAK,aAAa,+BAA+B;AACjD;AAAA,MACJ;AACA,cAAQ,MAAM,mBAAmB,EAAE,KAAK,CAAC;AACzC,aAAO;AAAA,QACH,mBAAmB,CAAC,EAAE,OAAO,MAAM;AAC/B,kBAAQ,MAAM,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAAA,QACnD;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACJ;;;ACxCO,IAAM,YAAY,CAAC,WAAW;AACjC,SAAO;AAAA,IACH,aAAa,EAAE,UAAU,GAAG;AACxB,gBAAU,MAAM;AAAA,IACpB;AAAA,EACJ;AACJ;;;ACNO,IAAM,mBAAmB,CAAC,oBAAoB;AAAA,EACjD,MAAM,kBAAkB,EAAE,SAAS,cAAc,GAAG;AAChD,kBAAe,MAAM,eAAe,OAAO,CAAE;AAAA,EACjD;AACJ;;;ACFO,IAAM,wBAAwB;AAC9B,IAAM,eAAN,cAA2B,aAAa;AAAA,EAC3C,YAAY,SAAS,YAAY;AAC7B,UAAM,SAAS,QAAW,QAAW,QAAW,QAAW,QAAW,UAAU;AAAA,EACpF;AACJ;AACO,IAAME,eAAc,CAAC,KAAK,SAASC,WAAU;AAChD,MAAIC,KAAI,IAAI,IAAI;AAChB,MAAI,eAAe,cAAc;AAC7B,QAEC,IAAI,iBAAiB,IAAI,yBAAyB,iBAAiB,SAE/D,IAAI,kBAAkB,UAAa,eAAe,iBAAiB,OAAQ;AAC5E,aAAO,IAAI,aAAa,SAAS,IAAI,OAAO,IAAI,QAAQ,IAAI,WAAW,IAAI,MAAM,QAAWD,SACtF;AAAA,QACE,eAAe;AAAA,UACX,UAAU,MAAMC,MAAK,IAAI,mBAAmB,QAAQA,QAAO,SAAS,SAASA,IAAG,aAAa,QAAQ,OAAO,SAAS,KAAK,IAAI;AAAA,UAC9H,QAAQ,MAAM,KAAK,IAAI,mBAAmB,QAAQ,OAAO,SAAS,SAAS,GAAG,WAAW,QAAQ,OAAO,SAAS,KAAK,IAAI;AAAA,QAC9H;AAAA,MACJ,IACE,MAAS;AAAA,IACnB;AACA,WAAO;AAAA,EACX;AACA,SAAO,IAAI,aAAa,OAAO;AACnC;AACA,IAAM,mBAAmB,CAAC,QAAQ,SAASD,WAAU,CAAC,EAAE,QAAQ,UAAU,MAAM;AAC5E,MAAI,OAAO,UAAU,MAAM;AACvB,cAAU,EAAE,GAAG,QAAQ,QAAQ,OAAO,OAAO,IAAI,WAAS,OAAO,OAAO,SAASA,MAAK,CAAC,EAAE,CAAC;AAAA,EAC9F;AACJ;AACO,IAAM,kBAAkB,CAAC,SAAS;AACrC,MAAIC,KAAI;AACR,QAAM,UAAUA,MAAK,SAAS,QAAQ,SAAS,SAAS,SAAS,KAAK,iBAAiB,QAAQA,QAAO,SAASA,MAAKF;AACpH,QAAM,WAAW,SAAS,QAAQ,SAAS,SAAS,SAAS,KAAK,iBAAiB;AAEnF,QAAMC,UAAS,KAAK,SAAS,QAAQ,SAAS,SAAS,SAAS,KAAK,WAAW,QAAQ,OAAO,SAAS,KAAM,OAAO,YAAY,cAAc,QAA4C;AAC3L,QAAM,eAAe,iBAAiB,QAAQ,SAASA,MAAK;AAC5D,SAAO;AAAA,IACH,UAAU,SAAS,QAAQ,SAAS,SAAS,SAAS,KAAK,uBAAuB,OAC5E,SAAS,UAAU;AACjB,aAAO,SAAS,WAAW,EAAE,QAAQ,mBAAmB,GAAG;AACvD,YAAI,kBAAkB,OAAO;AACzB,6BAAmB,OAAO,QAAQ,SAASA,MAAK,CAAC;AAAA,QACrD;AAAA,MACJ;AAAA,IACJ,IACE;AAAA,IACN,aAAa,SAAS,QAAQ,SAAS,SAAS,SAAS,KAAK,4BAA4B,OACpF,SAAS,aAAa;AACpB,aAAO,SAAS,cAAc,EAAE,OAAO,QAAQ,UAAU,GAAG;AACxD,YAAI,UAAU,OAAO;AACjB,oBAAU,OAAO,IAAI,WAAS,OAAO,OAAO,SAASA,MAAK,CAAC,CAAC;AAAA,QAChE;AAAA,MACJ;AAAA,IACJ,IACE;AAAA,IACN,aAAa,SAAS;AAClB,cAAQ,4BAA4B,CAAC,EAAE,OAAO,SAAS,MAAM;AACzD,YAAI,iBAAiB,iBAAiB,SAAS,iBAAiB,OAAO;AACnE,kBAAQ,IAAI,aAAa,MAAM,SAAS,QAAW,QAAW,QAAW,QAAW,KAAK;AAAA,QAC7F;AACA,iBAAS,OAAO,OAAO,SAASA,MAAK,CAAC;AAAA,MAC1C,CAAC;AAAA,IACL;AAAA,IACA,YAAY;AACR,aAAO;AAAA,QACH,cAAc,SAAS;AACnB,iBAAO,oCAAoC,SAAS,YAAY;AAAA,QACpE;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,cAAc;AACV,aAAO;AAAA,QACH,kBAAkB,SAAS;AACvB,iBAAO,oCAAoC,SAAS,YAAY;AAAA,QACpE;AAAA,QACA,iBAAiB,EAAE,OAAO,SAAS,GAAG;AAClC,mBAAS,OAAO,OAAO,SAASA,MAAK,CAAC;AAAA,QAC1C;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACJ;;;ACtFA,IAAM,aAAa;AAAA,EACf,OAAO;AAAA,EACP,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,SAAS;AAAA,EACT,MAAM;AAAA,EACN,OAAO;AAAA,EACP,OAAO;AAAA,EACP,MAAM;AAAA,EACN,QAAQ;AACZ;AAKO,IAAM,YAAY,CAAC,QAAQ,WAAW,OAAO,MAAM,WAAW;AACrE,IAAM,cAAc;AAAA,EAChB,MAAM,WAAW;AAAA,EACjB,MAAM,WAAW;AAAA,EACjB,OAAO,WAAW;AAAA,EAClB,OAAO,WAAW;AAAA,EAClB,OAAO,WAAW;AAAA,EAClB,OAAO,WAAW;AACtB;AACA,IAAM,UAAU,MAAM,OAAO,YAAY,WACnC,QAAQ,IAAI,QAEV,OAAO,UAAU,cACX,OACA;AACd,IAAM,SAAS,CAAC,YAAY,OAAO,oBAAa,YAAY,KAAK;AAC1D,IAAM,oBAAoB;AAAA,EAC7B,SAAS,MAAM;AACX,QAAI,QAAQ,GAAG;AACX,YAAM,cAAc;AAAA,QAChB;AAAA,QACA,GAAG;AAAA,QACH,YAAY;AAAA,QACZ,GAAG;AAAA,QACH,YAAY;AAAA,MAChB;AAEA,UAAI,QAAQ,OAAO;AACf,gBAAQ,MAAM,GAAG,WAAW;AAAA,MAChC,OACK;AACD,gBAAQ,IAAI,GAAG,WAAW;AAAA,MAC9B;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,QAAQ,MAAM;AACV,UAAM,cAAc;AAAA,MAChB;AAAA,MACA,GAAG;AAAA,MACH,YAAY;AAAA,MACZ,GAAG;AAAA,MACH,YAAY;AAAA,IAChB;AACA,QAAI,QAAQ,MAAM;AACd,cAAQ,KAAK,GAAG,WAAW;AAAA,IAC/B,OACK;AACD,cAAQ,IAAI,GAAG,WAAW;AAAA,IAC9B;AAAA,EACJ;AAAA,EACA,QAAQ,MAAM;AACV,UAAM,cAAc;AAAA,MAChB;AAAA,MACA,GAAG;AAAA,MACH,YAAY;AAAA,MACZ,GAAG;AAAA,MACH,YAAY;AAAA,IAChB;AACA,QAAI,QAAQ,MAAM;AACd,cAAQ,KAAK,GAAG,WAAW;AAAA,IAC/B,OACK;AACD,cAAQ,IAAI,GAAG,WAAW;AAAA,IAC9B;AAAA,EACJ;AAAA,EACA,SAAS,MAAM;AACX,UAAM,cAAc;AAAA,MAChB;AAAA,MACA,GAAG;AAAA,MACH,YAAY;AAAA,MACZ,GAAG;AAAA,MACH,YAAY;AAAA,IAChB;AACA,QAAI,QAAQ,OAAO;AACf,cAAQ,MAAM,GAAG,WAAW;AAAA,IAChC,OACK;AACD,cAAQ,IAAI,GAAG,WAAW;AAAA,IAC9B;AAAA,EACJ;AACJ;;;AChGA,uBAAgB;AAChB,IAAM,cAAc;AACpB,IAAM,cAAc;AACpB,IAAM,oBAAoB,OAAO,aAAa;AACvC,IAAM,qBAAqB,CAAC,gBAAgB,CAAC,MAAM;AACtD,QAAM,cAAc,OAAO,cAAc,UAAU,cAC7C,cAAc,QACd,IAAI,iBAAAE,QAAI;AAAA,IACN,KAAK;AAAA,IACL,QAAQ;AAAA,EACZ,CAAC;AACL,SAAO;AAAA,IACH,iBAAiB;AACb,UAAIC,KAAI;AACR,UAAI,YAAY,OAAO;AACnB,SAACA,MAAK,YAAY,WAAW,QAAQA,QAAO,SAAS,SAASA,IAAG,KAAK,WAAW;AAAA,MACrF,WACS,WAAW,aAAa;AAC7B,SAAC,KAAK,YAAY,WAAW,QAAQ,OAAO,SAAS,SAAS,GAAG,KAAK,WAAW;AAAA,MACrF;AAAA,IACJ;AAAA,IACA,QAAQ,EAAE,QAAQ,cAAc,GAAG;AAC/B,oBAAc,EAAE,CAAC,oBAAoB,OAAO,OAAO,SAAS,EAAE,CAAC;AAAA,IACnE;AAAA,IACA,WAAW,EAAE,QAAQ,SAAS,UAAU,GAAG;AACvC,UAAIA;AACJ,YAAM,OAAOA,MAAK,QAAQ,wBAAwB,QAAQA,QAAO,SAASA,MAAK,MAAM,OAAO,WAAW;AACvG,YAAM,eAAe,YAAY,IAAI,GAAG;AACxC,UAAI,iBAAiB,QAAW;AAC5B,kBAAU,YAAY;AAAA,MAC1B;AACA,aAAO,CAAC,EAAE,OAAO,MAAM;AACnB,oBAAY,IAAI,KAAK,MAAM;AAAA,MAC/B;AAAA,IACJ;AAAA,EACJ;AACJ;;;ACpCA,IAAAC,oBAAgB;AAChB,IAAMC,eAAc;AACpB,IAAMC,eAAc;AACb,IAAM,iBAAiB,CAAC,gBAAgB,CAAC,MAAM;AAClD,QAAM,gBAAgB,OAAO,cAAc,kBAAkB,cACvD,cAAc,gBACd,IAAI,kBAAAC,QAAI,EAAE,KAAKF,cAAa,QAAQC,aAAY,CAAC;AACvD,QAAM,aAAa,OAAO,cAAc,eAAe,cACjD,cAAc,aACd,IAAI,kBAAAC,QAAI,EAAE,KAAKF,cAAa,QAAQC,aAAY,CAAC;AACvD,SAAO;AAAA,IACH,QAAQ,EAAE,QAAQ,kBAAkB,GAAG;AACnC,YAAM,EAAE,OAAO,IAAI;AACnB,YAAM,MAAM,kBAAkB,SAAS,OAAO,OAAO;AACrD,YAAM,cAAc,WAAW,IAAI,GAAG;AACtC,UAAI,gBAAgB,QAAW;AAC3B,cAAM;AAAA,MACV;AACA,YAAM,iBAAiB,cAAc,IAAI,GAAG;AAC5C,UAAI,mBAAmB,QAAW;AAC9B,0BAAkB,cAAc;AAAA,MACpC;AACA,aAAO,CAAC,EAAE,OAAO,MAAM;AACnB,YAAI,kBAAkB,OAAO;AACzB,qBAAW,IAAI,KAAK,MAAM;AAAA,QAC9B,WACS,WAAW,MAAM;AACtB,wBAAc,IAAI,KAAK,MAAM;AAAA,QACjC;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACJ;;;AChCO,IAAM,UAAU,CAAC,QAAS,MAAM,QAAQ,GAAG,IAAI,MAAM,MAAM,CAAC,GAAG,IAAI,CAAC;AAyBpE,SAAS,eAAe,GAAG,GAAG;AACjC,MAAI,OAAO,CAAC,IAAI,OAAO,CAAC,GAAG;AACvB,WAAO;AAAA,EACX;AACA,MAAI,OAAO,CAAC,IAAI,OAAO,CAAC,GAAG;AACvB,WAAO;AAAA,EACX;AACA,SAAO;AACX;AACO,SAAS,aAAa,GAAG;AAC5B,MAAIE,KAAI;AACR,MAAI;AACJ,MAAI,WAAW,GAAG;AACd,YAAQA,MAAK,EAAE,WAAW,QAAQA,QAAO,SAAS,SAASA,IAAG;AAAA,EAClE;AACA,MAAI,QAAQ,QAAQ,UAAU,GAAG;AAC7B,YAAQ,KAAK,EAAE,UAAU,QAAQ,OAAO,SAAS,SAAS,GAAG;AAAA,EACjE;AACA,MAAI,QAAQ,MAAM;AACd,WAAO,EAAE;AAAA,EACb;AACA,SAAO;AACX;AACO,SAAS,aAAa,GAAG,GAAG,UAAU;AACzC,QAAM,OAAO,aAAa,CAAC;AAC3B,QAAM,OAAO,aAAa,CAAC;AAC3B,MAAI,OAAO,aAAa,YAAY;AAChC,WAAO,SAAS,MAAM,IAAI;AAAA,EAC9B;AACA,SAAO,eAAe,MAAM,IAAI;AACpC;AACO,SAAS,OAAO,OAAO;AAC1B,SAAO,SAAS;AACpB;;;AC1DO,SAAS,mBAAmB,SAAS,SAAS;AACjD,MAAI,YAAY,SAAS,IAAI;AACzB,WAAO,IAAI,aAAa,SAAS,OAAO;AAAA,EAC5C;AACA,SAAO,IAAI,aAAa,SAAS,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,OAAO,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,QAAQ,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,WAAW,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,MAAM,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,eAAe,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,UAAU;AAC1b;;;ACNA,IAAI;AACJ,IAAI,OAAO,mBAAmB,aAAa;AACvC,QAAM,4BAA4B,MAAM;AAAA,IACpC,YAAY,QAAQ,UAAU,IAAI;AAC9B,YAAM,OAAO;AACb,WAAK,SAAS;AACd,WAAK,OAAO;AACZ,YAAM,kBAAkB,MAAM,mBAAmB;AAAA,IACrD;AAAA,EACJ;AACA,uBAAqB,SAAU,QAAQ,SAAS;AAC5C,WAAO,IAAI,oBAAoB,QAAQ,OAAO;AAAA,EAClD;AACJ,OACK;AACD,uBAAqB;AACzB;AAEO,SAAS,iBAAiB,OAAO;AACpC,SAAO,YAAY,SAAS,MAAM,QAAQ,MAAM,SAAS;AAC7D;;;AChBA,IAAMC,uBAAsB;AAIrB,SAASC,SAAQ,OAAO;AAC3B,SAAOC,aAAY,OAAO,CAAC,CAAC;AAChC;AACA,SAASA,aAAY,OAAO,YAAY;AACpC,UAAQ,OAAO;AAAA,SACN;AACD,aAAO,KAAK,UAAU,KAAK;AAAA,SAC1B;AACD,aAAO,MAAM,OAAO,aAAa,MAAM,UAAU;AAAA,SAChD;AACD,aAAOC,mBAAkB,OAAO,UAAU;AAAA;AAE1C,aAAO,OAAO,KAAK;AAAA;AAE/B;AACA,SAASC,aAAY,OAAO;AACxB,MAAI,iBAAiB,cAAc;AAC/B,WAAO,MAAM,SAAS;AAAA,EAC1B;AACA,SAAO,GAAG,MAAM,SAAS,MAAM;AAAA,GAAc,MAAM;AACvD;AACA,SAASD,mBAAkB,OAAO,sBAAsB;AACpD,MAAI,UAAU,MAAM;AAChB,WAAO;AAAA,EACX;AACA,MAAI,iBAAiB,OAAO;AACxB,QAAI,iBAAiB,KAAK,GAAG;AACzB,aAAOC,aAAY,KAAK,IAAI,OAAOC,aAAY,MAAM,QAAQ,oBAAoB;AAAA,IACrF;AACA,WAAOD,aAAY,KAAK;AAAA,EAC5B;AACA,MAAI,qBAAqB,SAAS,KAAK,GAAG;AACtC,WAAO;AAAA,EACX;AACA,QAAM,aAAa,CAAC,GAAG,sBAAsB,KAAK;AAClD,MAAIE,YAAW,KAAK,GAAG;AACnB,UAAM,YAAY,MAAM,OAAO;AAE/B,QAAI,cAAc,OAAO;AACrB,aAAO,OAAO,cAAc,WAAW,YAAYJ,aAAY,WAAW,UAAU;AAAA,IACxF;AAAA,EACJ,WACS,MAAM,QAAQ,KAAK,GAAG;AAC3B,WAAOG,aAAY,OAAO,UAAU;AAAA,EACxC;AACA,SAAOE,cAAa,OAAO,UAAU;AACzC;AACA,SAASD,YAAW,OAAO;AACvB,SAAO,OAAO,MAAM,WAAW;AACnC;AACA,SAASC,cAAa,QAAQ,YAAY;AACtC,QAAM,UAAU,OAAO,QAAQ,MAAM;AACrC,MAAI,QAAQ,WAAW,GAAG;AACtB,WAAO;AAAA,EACX;AACA,MAAI,WAAW,SAASP,sBAAqB;AACzC,WAAO,MAAMQ,cAAa,MAAM,IAAI;AAAA,EACxC;AACA,QAAM,aAAa,QAAQ,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,MAAM,OAAON,aAAY,OAAO,UAAU,CAAC;AAC5F,SAAO,OAAO,WAAW,KAAK,IAAI,IAAI;AAC1C;AACA,SAASG,aAAY,OAAO,YAAY;AACpC,MAAI,MAAM,WAAW,GAAG;AACpB,WAAO;AAAA,EACX;AACA,MAAI,WAAW,SAASL,sBAAqB;AACzC,WAAO;AAAA,EACX;AACA,QAAM,MAAM,MAAM;AAClB,QAAM,YAAY,MAAM;AACxB,QAAM,QAAQ,CAAC;AACf,WAAS,IAAI,GAAG,IAAI,KAAK,EAAE,GAAG;AAC1B,UAAM,KAAKE,aAAY,MAAM,IAAI,UAAU,CAAC;AAAA,EAChD;AACA,MAAI,cAAc,GAAG;AACjB,UAAM,KAAK,iBAAiB;AAAA,EAChC,WACS,YAAY,GAAG;AACpB,UAAM,KAAK,OAAO,sBAAsB;AAAA,EAC5C;AACA,SAAO,MAAM,MAAM,KAAK,IAAI,IAAI;AACpC;AACA,SAASM,cAAa,QAAQ;AAC1B,QAAM,MAAM,OAAO,UAAU,SACxB,KAAK,MAAM,EACX,QAAQ,cAAc,EAAE,EACxB,QAAQ,MAAM,EAAE;AACrB,MAAI,QAAQ,YAAY,OAAO,OAAO,gBAAgB,YAAY;AAC9D,UAAM,OAAO,OAAO,YAAY;AAChC,QAAI,OAAO,SAAS,YAAY,SAAS,IAAI;AACzC,aAAO;AAAA,IACX;AAAA,EACJ;AACA,SAAO;AACX;;;ACrGO,SAAS,0BAA0B,MAAM,+BAA+B,CAAC,YAAY,GAAG;AAC3F,SAAO,6BAA6B,OAAO,CAAC,KAAK,gBAAiB,OAAO,OAAO,MAAM,IAAI,cAAe,SAAS,QAAQ,SAAS,SAAS,SAAS,KAAK,UAAU;AACxK;;;ACDO,SAAS,YAAY,MAAM;AAC9B,MAAI,cAAc,IAAI,GAAG;AACrB,UAAM,YAAY,YAAY,KAAK,MAAM;AACzC,QAAI,UAAU,SAAS,KAAK,eAAe;AACvC,YAAM,IAAI,MAAM,qBAAqBC,SAAQ,IAAI,2DAA2D;AAAA,IAChH;AACA,WAAO;AAAA,MACH,MAAM,KAAK;AAAA,MACX,MAAM;AAAA,IACV;AAAA,EACJ,WACS,WAAW,IAAI,GAAG;AACvB,WAAO;AAAA,MACH,MAAM,KAAK;AAAA,MACX,MAAM,YAAY,KAAK,MAAM;AAAA,IACjC;AAAA,EACJ;AACA,SAAO;AAAA,IACH,MAAM,KAAK;AAAA,IACX,MAAM;AAAA,MACF,MAAM,KAAK;AAAA,MACX,OAAO,KAAK;AAAA,IAChB;AAAA,EACJ;AACJ;;;ACVO,SAAS,oBAAoB,OAAO;AAEvC,MAAI,UAAU,MAAM;AAChB,WAAO,EAAE,MAAM,KAAK,KAAK;AAAA,EAC7B;AAEA,MAAI,UAAU,QAAW;AACrB,WAAO;AAAA,EACX;AAGA,MAAI,MAAM,QAAQ,KAAK,GAAG;AACtB,UAAM,cAAc,CAAC;AACrB,eAAW,QAAQ,OAAO;AACtB,YAAM,WAAW,oBAAoB,IAAI;AACzC,UAAI,YAAY,MAAM;AAClB,oBAAY,KAAK,QAAQ;AAAA,MAC7B;AAAA,IACJ;AACA,WAAO,EAAE,MAAM,KAAK,MAAM,QAAQ,YAAY;AAAA,EAClD;AACA,MAAI,OAAO,UAAU,UAAU;AAC3B,UAAM,aAAa,CAAC;AACpB,eAAW,aAAa,OAAO;AAC3B,YAAM,aAAa,MAAM;AACzB,YAAM,MAAM,oBAAoB,UAAU;AAC1C,UAAI,KAAK;AACL,mBAAW,KAAK;AAAA,UACZ,MAAM,KAAK;AAAA,UACX,MAAM,EAAE,MAAM,KAAK,MAAM,OAAO,UAAU;AAAA,UAC1C,OAAO;AAAA,QACX,CAAC;AAAA,MACL;AAAA,IACJ;AACA,WAAO,EAAE,MAAM,KAAK,QAAQ,QAAQ,WAAW;AAAA,EACnD;AAEA,MAAI,OAAO,UAAU,WAAW;AAC5B,WAAO,EAAE,MAAM,KAAK,SAAS,MAAM;AAAA,EACvC;AAEA,MAAI,OAAO,UAAU,YAAY,SAAS,KAAK,GAAG;AAC9C,UAAM,YAAY,OAAO,KAAK;AAC9B,WAAOC,qBAAoB,KAAK,SAAS,IACnC,EAAE,MAAM,KAAK,KAAK,OAAO,UAAU,IACnC,EAAE,MAAM,KAAK,OAAO,OAAO,UAAU;AAAA,EAC/C;AACA,MAAI,OAAO,UAAU,UAAU;AAC3B,WAAO,EAAE,MAAM,KAAK,QAAQ,MAAM;AAAA,EACtC;AACA,QAAM,IAAI,UAAU,gCAAgC,QAAQ;AAChE;AAMA,IAAMA,uBAAsB;;;ACzErB,SAAS,SAAS,IAAI;AACzB,QAAM,gBAAgB,oBAAI,QAAQ;AAClC,SAAO,SAAS,SAAS,IAAI;AACzB,UAAM,cAAc,cAAc,IAAI,EAAE;AACxC,QAAI,gBAAgB,QAAW;AAC3B,YAAM,WAAW,GAAG,EAAE;AACtB,oBAAc,IAAI,IAAI,QAAQ;AAC9B,aAAO;AAAA,IACX;AACA,WAAO;AAAA,EACX;AACJ;;;ACFO,IAAM,mBAAmB,SAAS,SAASC,kBAAiB,QAAQ;AACvE,QAAM,YAAY,aAAa,MAAM;AACrC,SAAO,IAAI,IAAI,CAAC,GAAG,SAAS,EAAE,IAAI,UAAQ,KAAK,IAAI,CAAC;AACxD,CAAC;AACM,IAAM,eAAe,SAAS,SAASC,cAAa,QAAQ;AAC/D,QAAM,cAAc,eAAe,MAAM;AACzC,SAAO,IAAI,IAAI,YAAY,OAAO,CAAC;AACvC,CAAC;AACM,IAAM,iBAAiB,SAAS,SAASC,gBAAe,QAAQ;AACnE,QAAM,cAAc,oBAAI,IAAI;AAC5B,QAAM,YAAY,OAAO,aAAa;AACtC,MAAI,WAAW;AACX,gBAAY,IAAI,SAAS,SAAS;AAAA,EACtC;AACA,QAAM,eAAe,OAAO,gBAAgB;AAC5C,MAAI,cAAc;AACd,gBAAY,IAAI,YAAY,YAAY;AAAA,EAC5C;AACA,QAAM,mBAAmB,OAAO,oBAAoB;AACpD,MAAI,kBAAkB;AAClB,gBAAY,IAAI,gBAAgB,gBAAgB;AAAA,EACpD;AACA,SAAO;AACX,CAAC;;;AC1BM,SAAS,0BAA0B,QAAQ,UAAU,CAAC,GAAG;AAC5D,QAAM,+BAA+B,QAAQ;AAC7C,QAAM,WAAW,OAAO,WAAW;AACnC,QAAM,aAAa,cAAc,QAAQ,4BAA4B;AACrE,QAAM,cAAc,cAAc,OAAO,CAAC,UAAU,IAAI,CAAC;AACzD,QAAM,aAAa,OAAO,cAAc;AACxC,aAAW,aAAa,YAAY;AAChC,QAAI,qBAAqB,SAAS,GAAG;AACjC;AAAA,IACJ;AACA,gBAAY,KAAK,iBAAiB,WAAW,QAAQ,4BAA4B,CAAC;AAAA,EACtF;AACA,aAAW,YAAY,UAAU;AAC7B,UAAM,OAAO,SAAS;AACtB,UAAM,qBAAqB,sBAAsB,IAAI;AACrD,UAAM,kBAAkB,oBAAoB,IAAI;AAChD,QAAI,sBAAsB,iBAAiB;AACvC;AAAA,IACJ;AACA,QAAI,aAAa,IAAI,GAAG;AACpB,kBAAY,KAAK,kBAAkB,MAAM,QAAQ,4BAA4B,CAAC;AAAA,IAClF,WACS,gBAAgB,IAAI,GAAG;AAC5B,kBAAY,KAAK,qBAAqB,MAAM,QAAQ,4BAA4B,CAAC;AAAA,IACrF,WACS,YAAY,IAAI,GAAG;AACxB,kBAAY,KAAK,iBAAiB,MAAM,QAAQ,4BAA4B,CAAC;AAAA,IACjF,WACS,kBAAkB,IAAI,GAAG;AAC9B,kBAAY,KAAK,uBAAuB,MAAM,QAAQ,4BAA4B,CAAC;AAAA,IACvF,WACS,WAAW,IAAI,GAAG;AACvB,kBAAY,KAAK,gBAAgB,MAAM,QAAQ,4BAA4B,CAAC;AAAA,IAChF,WACS,aAAa,IAAI,GAAG;AACzB,kBAAY,KAAK,kBAAkB,MAAM,QAAQ,4BAA4B,CAAC;AAAA,IAClF,OACK;AACD,YAAM,IAAI,MAAM,gBAAgB,OAAO;AAAA,IAC3C;AAAA,EACJ;AACA,SAAO;AAAA,IACH,MAAM,KAAK;AAAA,IACX;AAAA,EACJ;AACJ;AAOO,SAAS,cAAc,QAAQ,8BAA8B;AAChE,MAAIC,KAAI;AACR,QAAM,mBAAmB,oBAAI,IAAI;AAAA,IAC7B,CAAC,SAAS,MAAS;AAAA,IACnB,CAAC,YAAY,MAAS;AAAA,IACtB,CAAC,gBAAgB,MAAS;AAAA,EAC9B,CAAC;AACD,QAAM,QAAQ,CAAC;AACf,MAAI,OAAO,WAAW,MAAM;AACxB,UAAM,KAAK,OAAO,OAAO;AAAA,EAC7B;AACA,MAAI,OAAO,qBAAqB,MAAM;AAClC,eAAW,oBAAoB,OAAO,mBAAmB;AACrD,YAAM,KAAK,gBAAgB;AAAA,IAC/B;AAAA,EACJ;AACA,aAAW,QAAQ,OAAO;AACtB,QAAI,KAAK,gBAAgB;AACrB,iBAAW,+BAA+B,KAAK,gBAAgB;AAC3D,yBAAiB,IAAI,4BAA4B,WAAW,2BAA2B;AAAA,MAC3F;AAAA,IACJ;AAAA,EACJ;AACA,QAAM,cAAc,eAAe,MAAM;AACzC,aAAW,CAAC,mBAAmB,2BAA2B,KAAK,kBAAkB;AAC7E,UAAM,WAAW,YAAY,IAAI,iBAAiB;AAClD,QAAI,YAAY,MAAM;AAClB,YAAM,cAAc,YAAY,QAAQ;AACxC,UAAI,+BAA+B,MAAM;AACrC,oCAA4B,OAAO;AAAA,MACvC,OACK;AACD,yBAAiB,IAAI,mBAAmB;AAAA,UACpC,MAAM,KAAK;AAAA,UACX,WAAW;AAAA,UACX,MAAM;AAAA,QACV,CAAC;AAAA,MACL;AAAA,IACJ;AAAA,EACJ;AACA,QAAM,iBAAiB,CAAC,GAAG,iBAAiB,OAAO,CAAC,EAAE,OAAO,MAAM;AACnE,QAAM,aAAa,kBAAkB,QAAQ,QAAQ,4BAA4B;AACjF,MAAI,CAAC,eAAe,UAAU,CAAC,WAAW,QAAQ;AAC9C,WAAO;AAAA,EACX;AACA,QAAM,aAAa;AAAA,IACf,MAAM,kBAAkB,OAAO,KAAK,oBAAoB,KAAK;AAAA,IAC7D;AAAA,IAEA;AAAA,EACJ;AAGA,aAAW,gBACL,MAAMA,MAAK,OAAO,aAAa,QAAQA,QAAO,SAAS,SAASA,IAAG,iBAAiB,QAAQ,OAAO,SAAS,KAAK,OAAO,eAAe,QACnI;AAAA,IACE,MAAM,KAAK;AAAA,IACX,OAAO,OAAO;AAAA,IACd,OAAO;AAAA,EACX,IACE;AACV,SAAO;AACX;AACO,SAAS,iBAAiB,WAAW,QAAQ,8BAA8B;AAC9E,MAAIA,KAAI,IAAI,IAAI;AAChB,SAAO;AAAA,IACH,MAAM,KAAK;AAAA,IACX,cAAc,MAAMA,MAAK,UAAU,aAAa,QAAQA,QAAO,SAAS,SAASA,IAAG,iBAAiB,QAAQ,OAAO,SAAS,KAAM,UAAU,cACvI;AAAA,MACE,MAAM,KAAK;AAAA,MACX,OAAO,UAAU;AAAA,IACrB,IACE;AAAA,IACN,MAAM;AAAA,MACF,MAAM,KAAK;AAAA,MACX,OAAO,UAAU;AAAA,IACrB;AAAA,IACA,YAAY,KAAK,UAAU,UAAU,QAAQ,OAAO,SAAS,SAAS,GAAG,IAAI,SAAO,WAAW,KAAK,QAAQ,4BAA4B,CAAC;AAAA,IACzI,YAAY,UAAU;AAAA,IACtB,aAAa,KAAK,UAAU,eAAe,QAAQ,OAAO,SAAS,SAAS,GAAG,IAAI,eAAa;AAAA,MAC5F,MAAM,KAAK;AAAA,MACX,OAAO;AAAA,IACX,EAAE,MAAM,CAAC;AAAA,EACb;AACJ;AACO,SAAS,kBAAkB,QAAQ,QAAQ,8BAA8B;AAC5E,QAAM,yBAAyB,0BAA0B,QAAQ,4BAA4B;AAC7F,MAAI,QAAQ,CAAC;AACb,MAAI,OAAO,WAAW,MAAM;AACxB,UAAM,KAAK,OAAO,OAAO;AAAA,EAC7B;AACA,MAAI,uBAAuB,UAAU,OAAO,qBAAqB,MAAM;AACnE,YAAQ,MAAM,OAAO,OAAO,iBAAiB;AAAA,EACjD;AACA,MAAI;AACJ,MAAI,0BAA0B,MAAM;AAChC,iBAAa,mBAAmB,QAAQ,sBAAsB;AAAA,EAClE,OACK;AACD,iBAAa,CAAC;AACd,eAAW,QAAQ,OAAO;AACtB,UAAI,KAAK,YAAY;AACjB,mBAAW,KAAK,GAAG,KAAK,UAAU;AAAA,MACtC;AAAA,IACJ;AAAA,EACJ;AACA,SAAO;AACX;AACO,SAAS,8BAA8B,QAAQ,QAAQ,8BAA8B;AACxF,MAAIA,KAAI;AACR,MAAI,kCAAkC,CAAC;AACvC,MAAI,0BAA0B;AAC9B,QAAM,yBAAyB,0BAA0B,QAAQ,4BAA4B;AAC7F,MAAI;AACJ,MAAI,0BAA0B,MAAM;AAChC,iBAAa,mBAAmB,QAAQ,sBAAsB;AAAA,EAClE,OACK;AACD,kBAAcA,MAAK,OAAO,aAAa,QAAQA,QAAO,SAAS,SAASA,IAAG;AAAA,EAC/E;AACA,MAAI,cAAc,MAAM;AACpB,sCAAkC,WAAW,OAAO,eAAa,UAAU,KAAK,UAAU,YAAY;AACtG,QAAI,OAAO,qBAAqB,MAAM;AAClC,iCAA2B,KAAK,WAAW,OAAO,eAAa,UAAU,KAAK,UAAU,YAAY,OAAO,QAAQ,OAAO,SAAS,SAAS,GAAG;AAAA,IACnJ;AAAA,EACJ;AACA,MAAI,OAAO,qBAAqB,QAC5B,2BAA2B,MAAM;AACjC,8BAA0B,wBAAwB,OAAO,iBAAiB;AAAA,EAC9E;AACA,SAAO,2BAA2B,OAC5B,kCACA,CAAC,uBAAuB,EAAE,OAAO,+BAA+B;AAC1E;AACO,SAAS,WAAW,KAAK,QAAQ,8BAA8B;AAClE,MAAIA,KAAI,IAAI;AACZ,SAAO;AAAA,IACH,MAAM,KAAK;AAAA,IACX,cAAc,MAAMA,MAAK,IAAI,aAAa,QAAQA,QAAO,SAAS,SAASA,IAAG,iBAAiB,QAAQ,OAAO,SAAS,KAAM,IAAI,cAC3H;AAAA,MACE,MAAM,KAAK;AAAA,MACX,OAAO,IAAI;AAAA,MACX,OAAO;AAAA,IACX,IACE;AAAA,IACN,MAAM;AAAA,MACF,MAAM,KAAK;AAAA,MACX,OAAO,IAAI;AAAA,IACf;AAAA,IACA,MAAM,YAAY,IAAI,IAAI;AAAA,IAE1B,cAAc,IAAI,iBAAiB,UAAa,KAAK,aAAa,IAAI,cAAc,IAAI,IAAI,OAAO,QAAQ,OAAO,SAAS,KAAK,SAAY;AAAA,IAC5I,YAAY,8BAA8B,KAAK,QAAQ,4BAA4B;AAAA,EACvF;AACJ;AACO,SAAS,kBAAkB,MAAM,QAAQ,8BAA8B;AAC1E,MAAIA,KAAI;AACR,SAAO;AAAA,IACH,MAAM,KAAK;AAAA,IACX,cAAc,MAAMA,MAAK,KAAK,aAAa,QAAQA,QAAO,SAAS,SAASA,IAAG,iBAAiB,QAAQ,OAAO,SAAS,KAAM,KAAK,cAC7H;AAAA,MACE,MAAM,KAAK;AAAA,MACX,OAAO,KAAK;AAAA,MACZ,OAAO;AAAA,IACX,IACE;AAAA,IACN,MAAM;AAAA,MACF,MAAM,KAAK;AAAA,MACX,OAAO,KAAK;AAAA,IAChB;AAAA,IACA,QAAQ,OAAO,OAAO,KAAK,UAAU,CAAC,EAAE,IAAI,WAAS,aAAa,OAAO,QAAQ,4BAA4B,CAAC;AAAA,IAC9G,YAAY,OAAO,OAAO,KAAK,cAAc,CAAC,EAAE,IAAI,WAAS,YAAY,KAAK,CAAC;AAAA,IAC/E,YAAY,kBAAkB,MAAM,QAAQ,4BAA4B;AAAA,EAC5E;AACJ;AACO,SAAS,qBAAqB,MAAM,QAAQ,8BAA8B;AAC7E,MAAIA,KAAI;AACR,QAAM,OAAO;AAAA,IACT,MAAM,KAAK;AAAA,IACX,cAAc,MAAMA,MAAK,KAAK,aAAa,QAAQA,QAAO,SAAS,SAASA,IAAG,iBAAiB,QAAQ,OAAO,SAAS,KAAM,KAAK,cAC7H;AAAA,MACE,MAAM,KAAK;AAAA,MACX,OAAO,KAAK;AAAA,MACZ,OAAO;AAAA,IACX,IACE;AAAA,IACN,MAAM;AAAA,MACF,MAAM,KAAK;AAAA,MACX,OAAO,KAAK;AAAA,IAChB;AAAA,IACA,QAAQ,OAAO,OAAO,KAAK,UAAU,CAAC,EAAE,IAAI,WAAS,aAAa,OAAO,QAAQ,4BAA4B,CAAC;AAAA,IAC9G,YAAY,kBAAkB,MAAM,QAAQ,4BAA4B;AAAA,EAC5E;AACA,MAAI,mBAAmB,MAAM;AACzB,SAAK,aAAa,OAAO,OAAO,KAAK,cAAc,CAAC,EAAE,IAAI,WAAS,YAAY,KAAK,CAAC;AAAA,EACzF;AACA,SAAO;AACX;AACO,SAAS,iBAAiB,MAAM,QAAQ,8BAA8B;AACzE,MAAIA,KAAI;AACR,SAAO;AAAA,IACH,MAAM,KAAK;AAAA,IACX,cAAc,MAAMA,MAAK,KAAK,aAAa,QAAQA,QAAO,SAAS,SAASA,IAAG,iBAAiB,QAAQ,OAAO,SAAS,KAAM,KAAK,cAC7H;AAAA,MACE,MAAM,KAAK;AAAA,MACX,OAAO,KAAK;AAAA,MACZ,OAAO;AAAA,IACX,IACE;AAAA,IACN,MAAM;AAAA,MACF,MAAM,KAAK;AAAA,MACX,OAAO,KAAK;AAAA,IAChB;AAAA,IAEA,YAAY,kBAAkB,MAAM,QAAQ,4BAA4B;AAAA,IACxE,OAAO,KAAK,SAAS,EAAE,IAAI,CAAAC,UAAQ,YAAYA,KAAI,CAAC;AAAA,EACxD;AACJ;AACO,SAAS,uBAAuB,MAAM,QAAQ,8BAA8B;AAC/E,MAAID,KAAI;AACR,SAAO;AAAA,IACH,MAAM,KAAK;AAAA,IACX,cAAc,MAAMA,MAAK,KAAK,aAAa,QAAQA,QAAO,SAAS,SAASA,IAAG,iBAAiB,QAAQ,OAAO,SAAS,KAAM,KAAK,cAC7H;AAAA,MACE,MAAM,KAAK;AAAA,MACX,OAAO,KAAK;AAAA,MACZ,OAAO;AAAA,IACX,IACE;AAAA,IACN,MAAM;AAAA,MACF,MAAM,KAAK;AAAA,MACX,OAAO,KAAK;AAAA,IAChB;AAAA,IACA,QAAQ,OAAO,OAAO,KAAK,UAAU,CAAC,EAAE,IAAI,WAAS,kBAAkB,OAAO,QAAQ,4BAA4B,CAAC;AAAA,IAEnH,YAAY,kBAAkB,MAAM,QAAQ,4BAA4B;AAAA,EAC5E;AACJ;AACO,SAAS,gBAAgB,MAAM,QAAQ,8BAA8B;AACxE,MAAIA,KAAI;AACR,SAAO;AAAA,IACH,MAAM,KAAK;AAAA,IACX,cAAc,MAAMA,MAAK,KAAK,aAAa,QAAQA,QAAO,SAAS,SAASA,IAAG,iBAAiB,QAAQ,OAAO,SAAS,KAAM,KAAK,cAC7H;AAAA,MACE,MAAM,KAAK;AAAA,MACX,OAAO,KAAK;AAAA,MACZ,OAAO;AAAA,IACX,IACE;AAAA,IACN,MAAM;AAAA,MACF,MAAM,KAAK;AAAA,MACX,OAAO,KAAK;AAAA,IAChB;AAAA,IACA,QAAQ,OAAO,OAAO,KAAK,UAAU,CAAC,EAAE,IAAI,WAAS,iBAAiB,OAAO,QAAQ,4BAA4B,CAAC;AAAA,IAElH,YAAY,kBAAkB,MAAM,QAAQ,4BAA4B;AAAA,EAC5E;AACJ;AACO,SAAS,kBAAkB,MAAM,QAAQ,8BAA8B;AAC1E,MAAIA,KAAI,IAAI;AACZ,QAAM,yBAAyB,0BAA0B,MAAM,4BAA4B;AAC3F,QAAM,aAAa,yBACb,mBAAmB,QAAQ,sBAAsB,MAC/CA,MAAK,KAAK,aAAa,QAAQA,QAAO,SAAS,SAASA,IAAG,eAAe,CAAC;AACnF,QAAM,mBAAoB,KAAK,qBAAqB,KAAK;AACzD,MAAI,oBAAoB,CAAC,WAAW,KAAK,mBAAiB,cAAc,KAAK,UAAU,aAAa,GAAG;AACnG,UAAM,kBAAkB;AAAA,MACpB,KAAK;AAAA,IACT;AACA,eAAW,KAAK,kBAAkB,eAAe,eAAe,CAAC;AAAA,EACrE;AACA,SAAO;AAAA,IACH,MAAM,KAAK;AAAA,IACX,cAAc,MAAM,KAAK,KAAK,aAAa,QAAQ,OAAO,SAAS,SAAS,GAAG,iBAAiB,QAAQ,OAAO,SAAS,KAAM,KAAK,cAC7H;AAAA,MACE,MAAM,KAAK;AAAA,MACX,OAAO,KAAK;AAAA,MACZ,OAAO;AAAA,IACX,IACE;AAAA,IACN,MAAM;AAAA,MACF,MAAM,KAAK;AAAA,MACX,OAAO,KAAK;AAAA,IAChB;AAAA,IAEA;AAAA,EACJ;AACJ;AACO,SAAS,aAAa,OAAO,QAAQ,8BAA8B;AACtE,MAAIA,KAAI;AACR,SAAO;AAAA,IACH,MAAM,KAAK;AAAA,IACX,cAAc,MAAMA,MAAK,MAAM,aAAa,QAAQA,QAAO,SAAS,SAASA,IAAG,iBAAiB,QAAQ,OAAO,SAAS,KAAM,MAAM,cAC/H;AAAA,MACE,MAAM,KAAK;AAAA,MACX,OAAO,MAAM;AAAA,MACb,OAAO;AAAA,IACX,IACE;AAAA,IACN,MAAM;AAAA,MACF,MAAM,KAAK;AAAA,MACX,OAAO,MAAM;AAAA,IACjB;AAAA,IACA,WAAW,MAAM,KAAK,IAAI,SAAO,WAAW,KAAK,QAAQ,4BAA4B,CAAC;AAAA,IACtF,MAAM,YAAY,MAAM,IAAI;AAAA,IAE5B,YAAY,8BAA8B,OAAO,QAAQ,4BAA4B;AAAA,EACzF;AACJ;AACO,SAAS,kBAAkB,OAAO,QAAQ,8BAA8B;AAC3E,MAAIA,KAAI,IAAI;AACZ,SAAO;AAAA,IACH,MAAM,KAAK;AAAA,IACX,cAAc,MAAMA,MAAK,MAAM,aAAa,QAAQA,QAAO,SAAS,SAASA,IAAG,iBAAiB,QAAQ,OAAO,SAAS,KAAM,MAAM,cAC/H;AAAA,MACE,MAAM,KAAK;AAAA,MACX,OAAO,MAAM;AAAA,MACb,OAAO;AAAA,IACX,IACE;AAAA,IACN,MAAM;AAAA,MACF,MAAM,KAAK;AAAA,MACX,OAAO,MAAM;AAAA,IACjB;AAAA,IACA,MAAM,YAAY,MAAM,IAAI;AAAA,IAE5B,YAAY,8BAA8B,OAAO,QAAQ,4BAA4B;AAAA,IACrF,eAAe,KAAK,aAAa,MAAM,cAAc,MAAM,IAAI,OAAO,QAAQ,OAAO,SAAS,KAAK;AAAA,EACvG;AACJ;AACO,SAAS,iBAAiB,OAAO,QAAQ,8BAA8B;AAC1E,MAAIA,KAAI;AACR,SAAO;AAAA,IACH,MAAM,KAAK;AAAA,IACX,cAAc,MAAMA,MAAK,MAAM,aAAa,QAAQA,QAAO,SAAS,SAASA,IAAG,iBAAiB,QAAQ,OAAO,SAAS,KAAM,MAAM,cAC/H;AAAA,MACE,MAAM,KAAK;AAAA,MACX,OAAO,MAAM;AAAA,MACb,OAAO;AAAA,IACX,IACE;AAAA,IACN,MAAM;AAAA,MACF,MAAM,KAAK;AAAA,MACX,OAAO,MAAM;AAAA,IACjB;AAAA,IAEA,YAAY,8BAA8B,OAAO,QAAQ,4BAA4B;AAAA,EACzF;AACJ;AACO,SAAS,wBAAwB,mBAAmB;AACvD,SAAO,kBAAkB,cAAc,EAAE,QAAQ,kBAAkB,GAAG,0BAA0B;AACpG;AACO,SAAS,kBAAkB,MAAM,MAAM,WAAW;AACrD,QAAM,qBAAqB,CAAC;AAC5B,MAAI,aAAa,MAAM;AACnB,eAAW,OAAO,UAAU,MAAM;AAC9B,YAAM,UAAU,IAAI;AACpB,YAAM,WAAW,KAAK;AACtB,UAAI,aAAa,QAAW;AACxB,cAAM,QAAQ,aAAa,UAAU,IAAI,IAAI;AAC7C,YAAI,OAAO;AACP,6BAAmB,KAAK;AAAA,YACpB,MAAM,KAAK;AAAA,YACX,MAAM;AAAA,cACF,MAAM,KAAK;AAAA,cACX,OAAO;AAAA,YACX;AAAA,YACA;AAAA,UACJ,CAAC;AAAA,QACL;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ,OACK;AACD,eAAW,WAAW,MAAM;AACxB,YAAM,WAAW,KAAK;AACtB,YAAM,QAAQ,oBAAoB,QAAQ;AAC1C,UAAI,OAAO;AACP,2BAAmB,KAAK;AAAA,UACpB,MAAM,KAAK;AAAA,UACX,MAAM;AAAA,YACF,MAAM,KAAK;AAAA,YACX,OAAO;AAAA,UACX;AAAA,UACA;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,IACJ;AAAA,EACJ;AACA,SAAO;AAAA,IACH,MAAM,KAAK;AAAA,IACX,MAAM;AAAA,MACF,MAAM,KAAK;AAAA,MACX,OAAO;AAAA,IACX;AAAA,IACA,WAAW;AAAA,EACf;AACJ;AACO,SAAS,mBAAmB,QAAQ,iBAAiB;AACxD,QAAM,iBAAiB,CAAC;AACxB,aAAW,iBAAiB,iBAAiB;AACzC,UAAM,qBAAqB,gBAAgB;AAC3C,UAAM,YAAY,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO,aAAa,aAAa;AACnG,QAAI,MAAM,QAAQ,kBAAkB,GAAG;AACnC,iBAAW,SAAS,oBAAoB;AACpC,uBAAe,KAAK,kBAAkB,eAAe,OAAO,SAAS,CAAC;AAAA,MAC1E;AAAA,IACJ,OACK;AACD,qBAAe,KAAK,kBAAkB,eAAe,oBAAoB,SAAS,CAAC;AAAA,IACvF;AAAA,EACJ;AACA,SAAO;AACX;;;ACtdA,IAAME,mBAAkB;AACxB,IAAI,mBAAmB,CAAC;AACjB,SAAS,gBAAgB;AAC5B,qBAAmB,CAAC;AACxB;AACO,SAAS,eAAe,MAAM;AACjC,MAAIC;AACJ,QAAM,cAAcA,MAAK,KAAK,UAAU,QAAQA,QAAO,SAAS,SAASA,IAAG;AAC5E,MAAI,cAAc,MAAM;AACpB;AAAA,EACJ;AACA,cAAY,MAAM,UAAU;AAC5B,UAAQ,KAAK;AAAA,SACJ;AACD,UAAI,KAAK,QAAQ;AACb,mBAAW,SAAS,KAAK,QAAQ;AAC7B,sBAAY,OAAO,YAAY,MAAM,KAAK,KAAK;AAAA,QACnD;AAAA,MACJ;AACA;AAAA,SACC;AAAA,SACA;AAAA,SACA;AACD,UAAI,KAAK,QAAQ;AACb,mBAAW,SAAS,KAAK,QAAQ;AAC7B,sBAAY,OAAO,YAAY,MAAM,KAAK,KAAK;AAC/C,cAAI,sBAAsB,KAAK,KAAK,MAAM,WAAW;AACjD,uBAAW,OAAO,MAAM,WAAW;AAC/B,0BAAY,KAAK,YAAY,MAAM,KAAK,OAAO,IAAI,KAAK,KAAK;AAAA,YACjE;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AACA;AAAA;AAEZ;AACO,SAAS,YAAY,MAAM,QAAQ,OAAO,UAAU;AACvD,QAAM,UAAU,WAAW,IAAI;AAC/B,MAAI,OAAO,YAAY,YAAY,QAAQ,WAAW,GAAG;AACrD;AAAA,EACJ;AACA,QAAM,OAAO,CAAC,MAAM;AACpB,MAAI,OAAO;AACP,SAAK,KAAK,KAAK;AACf,QAAI,UAAU;AACV,WAAK,KAAK,QAAQ;AAAA,IACtB;AAAA,EACJ;AACA,QAAM,OAAO,KAAK,KAAK,GAAG;AAC1B,MAAI,CAAC,iBAAiB,OAAO;AACzB,qBAAiB,QAAQ,CAAC;AAAA,EAC9B;AACA,mBAAiB,MAAM,KAAK,OAAO;AACvC;AACO,SAAS,aAAa,SAAS;AAClC,SAAO,SAAS,QAAQ,QAAQ,OAAO,MAAM;AACjD;AAeA,SAASC,MAAK,YAAY,WAAW;AACjC,SAAO,aAAa,WAAW,OAAO,OAAK,CAAC,EAAE,KAAK,aAAa,EAAE,IAAI;AAC1E;AACA,SAASC,mBAAkB,YAAY;AACnC,MAAIF;AACJ,UAAQA,MAAK,eAAe,QAAQ,eAAe,SAAS,SAAS,WAAW,KAAK,SAAO,IAAI,SAAS,IAAI,CAAC,OAAO,QAAQA,QAAO,SAASA,MAAK;AACtJ;AACA,SAAS,eAAe,IAAI;AACxB,SAAO,CAAC,MAAM,MAAM,SAAS,MAAM,cAAc;AAC7C,QAAIA;AACJ,UAAM,OAAO,CAAC;AACd,UAAM,SAAS,KAAK,OAAO,CAAC,MAAMG,SAAQ;AACtC,UAAI,CAAC,UAAU,aAAa,QAAQ,EAAE,SAASA,IAAG,KAAK,KAAK,MAAM;AAC9D,aAAK,KAAK,KAAK,KAAK,KAAK;AAAA,MAC7B;AACA,aAAO,KAAKA;AAAA,IAChB,GAAG,UAAU,EAAE;AACf,UAAM,MAAM,CAAC,GAAG,OAAOH,MAAK,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO,UAAU,QAAQA,QAAO,SAAS,SAASA,IAAG,KAAK,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAChK,UAAM,QAAQ,CAAC;AACf,QAAI,KAAK,KAAK,SAAS,YAAY,KAAK,iBAAiB,MAAM;AAC3D,YAAM,KAAK,GAAG,iBAAiB,IAAI;AAAA,IACvC;AACA,WAAOC,MAAK,CAAC,GAAG,MAAM,IAAI,YAAY,GAAG,KAAK,aAAa,GAAG,MAAM,MAAM,SAAS,MAAM,SAAS,CAAC,GAAG,IAAI;AAAA,EAC9G;AACJ;AACA,SAASG,QAAO,aAAa;AACzB,SAAO,eAAe,KAAK,YAAY,QAAQ,OAAO,MAAM;AAChE;AAKA,SAASC,OAAM,OAAO;AAClB,SAAO,SAAS,MAAM,WAAW,IAAI;AAAA,EAAMD,QAAOH,MAAK,OAAO,IAAI,CAAC;AAAA,KAAS;AAChF;AAKA,SAASK,MAAK,OAAO,aAAa,KAAK;AACnC,SAAO,cAAc,QAAQ,eAAe,OAAO,MAAM;AAC7D;AAMA,SAASC,kBAAiB,OAAO,gBAAgB,OAAO;AACpD,QAAM,UAAU,MAAM,QAAQ,QAAQ,OAAO;AAC7C,UAAQ,MAAM,OAAO,OAAO,MAAM,OAAO,QAAS,MAAM,QAAQ,IAAI,MAAM,KACpE,MAAM,QAAQ,QAAQ,MAAM,KAAK,SACjC;AAAA,EAAQ,gBAAgB,UAAUH,QAAO,OAAO;AAAA;AAC1D;AACA,IAAMI,sBAAqB;AAAA,EACvB,MAAM,EAAE,OAAO,UAAQ,KAAK,MAAM;AAAA,EAClC,UAAU,EAAE,OAAO,UAAQ,MAAM,KAAK,KAAK;AAAA,EAE3C,UAAU;AAAA,IACN,OAAO,UAAQP,MAAK,KAAK,aAAa,MAAM;AAAA,EAChD;AAAA,EACA,qBAAqB;AAAA,IACjB,OAAO,UAAQ;AACX,YAAM,UAAUK,MAAK,KAAKL,MAAK,KAAK,qBAAqB,IAAI,GAAG,GAAG;AACnE,YAAMQ,UAASR,MAAK,CAAC,KAAK,WAAWA,MAAK,CAAC,KAAK,MAAM,OAAO,CAAC,GAAGA,MAAK,KAAK,YAAY,GAAG,CAAC,GAAG,GAAG;AAEjG,aAAOQ,UAAS,MAAM,KAAK;AAAA,IAC/B;AAAA,EACJ;AAAA,EACA,oBAAoB;AAAA,IAChB,OAAO,CAAC,EAAE,UAAU,MAAM,cAAc,WAAW,MAAM,WAAW,OAAO,OAAOH,MAAK,OAAO,YAAY,IAAIA,MAAK,KAAKL,MAAK,YAAY,GAAG,CAAC;AAAA,EACjJ;AAAA,EACA,cAAc,EAAE,OAAO,CAAC,EAAE,WAAW,MAAMI,OAAM,UAAU,EAAE;AAAA,EAC7D,OAAO;AAAA,IACH,MAAM,EAAE,OAAO,MAAM,WAAW,MAAM,YAAY,aAAa,GAAG;AAC9D,YAAMI,UAASH,MAAK,IAAI,OAAO,IAAI,IAAI;AACvC,UAAI,WAAWG,UAASH,MAAK,KAAKL,MAAK,MAAM,IAAI,GAAG,GAAG;AACvD,UAAI,SAAS,SAASF,kBAAiB;AACnC,mBAAWU,UAASH,MAAK,OAAOF,QAAOH,MAAK,MAAM,IAAI,CAAC,GAAG,KAAK;AAAA,MACnE;AACA,aAAOA,MAAK,CAAC,UAAUA,MAAK,YAAY,GAAG,GAAG,YAAY,GAAG,GAAG;AAAA,IACpE;AAAA,EACJ;AAAA,EACA,UAAU,EAAE,OAAO,CAAC,EAAE,MAAM,MAAM,MAAM,OAAO,OAAO,MAAM;AAAA,EAE5D,gBAAgB;AAAA,IACZ,OAAO,CAAC,EAAE,MAAM,WAAW,MAAM,QAAQ,OAAOK,MAAK,KAAKL,MAAK,YAAY,GAAG,CAAC;AAAA,EACnF;AAAA,EACA,gBAAgB;AAAA,IACZ,OAAO,CAAC,EAAE,eAAe,YAAY,aAAa,MAAMA,MAAK,CAAC,OAAOK,MAAK,OAAO,aAAa,GAAGL,MAAK,YAAY,GAAG,GAAG,YAAY,GAAG,GAAG;AAAA,EAC9I;AAAA,EACA,oBAAoB;AAAA,IAChB,OAAO,CAAC,EAAE,MAAM,eAAe,qBAAqB,YAAY,aAAa,MAG7E,YAAY,OAAOK,MAAK,KAAKL,MAAK,qBAAqB,IAAI,GAAG,GAAG,QACvD,iBAAiBK,MAAK,IAAIL,MAAK,YAAY,GAAG,GAAG,GAAG,MAC1D;AAAA,EACR;AAAA,EAEA,UAAU,EAAE,OAAO,CAAC,EAAE,MAAM,MAAM,MAAM;AAAA,EACxC,YAAY,EAAE,OAAO,CAAC,EAAE,MAAM,MAAM,MAAM;AAAA,EAC1C,aAAa;AAAA,IACT,OAAO,CAAC,EAAE,OAAO,OAAO,cAAc,MAAM;AACxC,UAAI,eAAe;AACf,eAAOM,kBAAiB,KAAK;AAAA,MACjC;AACA,aAAO,KAAK,UAAU,KAAK;AAAA,IAC/B;AAAA,EACJ;AAAA,EACA,cAAc,EAAE,OAAO,CAAC,EAAE,MAAM,MAAO,QAAQ,SAAS,QAAS;AAAA,EACjE,WAAW,EAAE,OAAO,MAAM,OAAO;AAAA,EACjC,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM,MAAM,MAAM;AAAA,EACzC,WAAW,EAAE,OAAO,CAAC,EAAE,OAAO,MAAM,MAAMN,MAAK,QAAQ,IAAI,IAAI,IAAI;AAAA,EACnE,aAAa,EAAE,OAAO,CAAC,EAAE,OAAO,MAAM,MAAMA,MAAK,QAAQ,IAAI,IAAI,IAAI;AAAA,EACrE,aAAa,EAAE,OAAO,CAAC,EAAE,MAAM,MAAM,MAAM,OAAO,OAAO,MAAM;AAAA,EAE/D,WAAW;AAAA,IACP,OAAO,CAAC,EAAE,MAAM,WAAW,KAAK,MAAM,MAAM,OAAOK,MAAK,KAAKL,MAAK,MAAM,IAAI,GAAG,GAAG;AAAA,EACtF;AAAA,EAEA,WAAW,EAAE,OAAO,CAAC,EAAE,KAAK,MAAM,KAAK;AAAA,EACvC,UAAU,EAAE,OAAO,CAAC,EAAE,KAAK,MAAM,MAAM,OAAO,IAAI;AAAA,EAClD,aAAa,EAAE,OAAO,CAAC,EAAE,KAAK,MAAM,OAAO,IAAI;AAAA,EAE/C,kBAAkB;AAAA,IACd,OAAO,CAAC,EAAE,YAAY,eAAe,MAAMA,MAAK,CAAC,UAAUA,MAAK,YAAY,GAAG,GAAGI,OAAM,cAAc,CAAC,GAAG,GAAG;AAAA,EACjH;AAAA,EACA,yBAAyB;AAAA,IACrB,OAAO,CAAC,EAAE,WAAW,KAAK,MAAM,YAAY,OAAO;AAAA,EACvD;AAAA,EACA,sBAAsB;AAAA,IAClB,OAAO,CAAC,EAAE,MAAM,WAAW,MAAMJ,MAAK,CAAC,UAAU,MAAMA,MAAK,YAAY,GAAG,CAAC,GAAG,GAAG;AAAA,EACtF;AAAA,EACA,sBAAsB;AAAA,IAClB,OAAO,CAAC,EAAE,MAAM,YAAY,YAAY,OAAO,MAAMA,MAAK,CAAC,QAAQ,MAAMK,MAAK,eAAeL,MAAK,YAAY,KAAK,CAAC,GAAGA,MAAK,YAAY,GAAG,GAAGI,OAAM,MAAM,CAAC,GAAG,GAAG;AAAA,EACrK;AAAA,EACA,iBAAiB;AAAA,IACb,OAAO,CAAC,EAAE,MAAM,WAAW,MAAM,MAAM,WAAW,MAAM,QACnDH,mBAAkB,IAAI,IACjBI,MAAK,OAAOF,QAAOH,MAAK,MAAM,IAAI,CAAC,GAAG,KAAK,IAC3CK,MAAK,KAAKL,MAAK,MAAM,IAAI,GAAG,GAAG,KACrC,OACA,OACAK,MAAK,KAAKL,MAAK,YAAY,GAAG,CAAC;AAAA,EACvC;AAAA,EACA,sBAAsB;AAAA,IAClB,OAAO,CAAC,EAAE,MAAM,MAAM,cAAc,WAAW,MAAMA,MAAK,CAAC,OAAO,OAAO,MAAMK,MAAK,MAAM,YAAY,GAAGL,MAAK,YAAY,GAAG,CAAC,GAAG,GAAG;AAAA,EACxI;AAAA,EACA,yBAAyB;AAAA,IACrB,OAAO,CAAC,EAAE,MAAM,YAAY,YAAY,OAAO,MAAMA,MAAK,CAAC,aAAa,MAAMK,MAAK,eAAeL,MAAK,YAAY,KAAK,CAAC,GAAGA,MAAK,YAAY,GAAG,GAAGI,OAAM,MAAM,CAAC,GAAG,GAAG;AAAA,EAC1K;AAAA,EACA,qBAAqB;AAAA,IACjB,OAAO,CAAC,EAAE,MAAM,YAAY,MAAM,MAAMJ,MAAK,CAAC,SAAS,MAAMA,MAAK,YAAY,GAAG,GAAGK,MAAK,MAAML,MAAK,OAAO,KAAK,CAAC,CAAC,GAAG,GAAG;AAAA,EAC5H;AAAA,EACA,oBAAoB;AAAA,IAChB,OAAO,CAAC,EAAE,MAAM,YAAY,OAAO,MAAMA,MAAK,CAAC,QAAQ,MAAMA,MAAK,YAAY,GAAG,GAAGI,OAAM,MAAM,CAAC,GAAG,GAAG;AAAA,EAC3G;AAAA,EACA,qBAAqB;AAAA,IACjB,OAAO,CAAC,EAAE,MAAM,WAAW,MAAMJ,MAAK,CAAC,MAAMA,MAAK,YAAY,GAAG,CAAC,GAAG,GAAG;AAAA,EAC5E;AAAA,EACA,2BAA2B;AAAA,IACvB,OAAO,CAAC,EAAE,MAAM,YAAY,OAAO,MAAMA,MAAK,CAAC,SAAS,MAAMA,MAAK,YAAY,GAAG,GAAGI,OAAM,MAAM,CAAC,GAAG,GAAG;AAAA,EAC5G;AAAA,EACA,qBAAqB;AAAA,IACjB,OAAO,CAAC,EAAE,MAAM,WAAW,MAAM,YAAY,UAAU,MAAM,gBACzD,QACCH,mBAAkB,IAAI,IACjBI,MAAK,OAAOF,QAAOH,MAAK,MAAM,IAAI,CAAC,GAAG,KAAK,IAC3CK,MAAK,KAAKL,MAAK,MAAM,IAAI,GAAG,GAAG,MACpC,aAAa,gBAAgB,MAC9B,SACAA,MAAK,WAAW,KAAK;AAAA,EAC7B;AAAA,EACA,iBAAiB;AAAA,IACb,OAAO,CAAC,EAAE,YAAY,eAAe,MAAMA,MAAK,CAAC,iBAAiBA,MAAK,YAAY,GAAG,GAAGI,OAAM,cAAc,CAAC,GAAG,GAAG;AAAA,EACxH;AAAA,EACA,qBAAqB;AAAA,IACjB,OAAO,CAAC,EAAE,MAAM,WAAW,MAAMJ,MAAK,CAAC,iBAAiB,MAAMA,MAAK,YAAY,GAAG,CAAC,GAAG,GAAG;AAAA,EAC7F;AAAA,EACA,qBAAqB;AAAA,IACjB,OAAO,CAAC,EAAE,MAAM,YAAY,YAAY,OAAO,MAAMA,MAAK,CAAC,eAAe,MAAMK,MAAK,eAAeL,MAAK,YAAY,KAAK,CAAC,GAAGA,MAAK,YAAY,GAAG,GAAGI,OAAM,MAAM,CAAC,GAAG,GAAG;AAAA,EAC5K;AAAA,EACA,wBAAwB;AAAA,IACpB,OAAO,CAAC,EAAE,MAAM,YAAY,YAAY,OAAO,MAAMJ,MAAK,CAAC,oBAAoB,MAAMK,MAAK,eAAeL,MAAK,YAAY,KAAK,CAAC,GAAGA,MAAK,YAAY,GAAG,GAAGI,OAAM,MAAM,CAAC,GAAG,GAAG;AAAA,EACjL;AAAA,EACA,oBAAoB;AAAA,IAChB,OAAO,CAAC,EAAE,MAAM,YAAY,MAAM,MAAMJ,MAAK,CAAC,gBAAgB,MAAMA,MAAK,YAAY,GAAG,GAAGK,MAAK,MAAML,MAAK,OAAO,KAAK,CAAC,CAAC,GAAG,GAAG;AAAA,EACnI;AAAA,EACA,mBAAmB;AAAA,IACf,OAAO,CAAC,EAAE,MAAM,YAAY,OAAO,MAAMA,MAAK,CAAC,eAAe,MAAMA,MAAK,YAAY,GAAG,GAAGI,OAAM,MAAM,CAAC,GAAG,GAAG;AAAA,EAClH;AAAA,EACA,0BAA0B;AAAA,IACtB,OAAO,CAAC,EAAE,MAAM,YAAY,OAAO,MAAMJ,MAAK,CAAC,gBAAgB,MAAMA,MAAK,YAAY,GAAG,GAAGI,OAAM,MAAM,CAAC,GAAG,GAAG;AAAA,EACnH;AACJ;AACA,IAAM,iCAAiC,OAAO,KAAKG,mBAAkB,EAAE,OAAO,CAAC,MAAM,SAAS;AAAA,EAC1F,GAAG;AAAA,EACH,CAAC,MAAM;AAAA,IACH,OAAO,eAAeA,oBAAmB,KAAK,KAAK;AAAA,EACvD;AACJ,IAAI,CAAC,CAAC;AAKC,SAAS,kBAAkB,KAAK;AACnC,SAAO,MAAM,KAAK,8BAA8B;AACpD;AACA,SAAS,sBAAsB,MAAM;AACjC,SAAO,KAAK,SAAS;AACzB;AAUO,SAAS,WAAW,MAAM;AAC7B,QAAM,WAAW,uBAAuB,IAAI;AAC5C,MAAI,aAAa,QAAW;AACxB,WAAO,uBAAuB;AAAA,EAAK,UAAU;AAAA,EACjD;AACJ;AACO,SAAS,uBAAuB,MAAM;AACzC,QAAM,MAAM,KAAK;AACjB,MAAI,CAAC,KAAK;AACN;AAAA,EACJ;AACA,QAAM,WAAW,CAAC;AAClB,MAAI,QAAQ,IAAI,WAAW;AAC3B,SAAO,SAAS,QACZ,MAAM,SAAS,UAAU,WACzB,MAAM,QAAQ,QACd,MAAM,QAAQ,QACd,MAAM,OAAO,MAAM,MAAM,KAAK,QAC9B,MAAM,SAAS,MAAM,KAAK,MAAM;AAChC,UAAM,QAAQ,OAAO,MAAM,KAAK;AAChC,aAAS,KAAK,KAAK;AACnB,YAAQ,MAAM;AAAA,EAClB;AACA,SAAO,SAAS,SAAS,IAAI,SAAS,QAAQ,EAAE,KAAK,IAAI,IAAI;AACjE;AACO,SAAS,uBAAuB,WAAW;AAE9C,QAAM,QAAQ,UAAU,MAAM,cAAc;AAE5C,QAAM,eAAe,0BAA0B,KAAK;AACpD,MAAI,iBAAiB,GAAG;AACpB,aAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACnC,YAAM,KAAK,MAAM,GAAG,MAAM,YAAY;AAAA,IAC1C;AAAA,EACJ;AAEA,SAAO,MAAM,SAAS,KAAK,QAAQ,MAAM,EAAE,GAAG;AAC1C,UAAM,MAAM;AAAA,EAChB;AACA,SAAO,MAAM,SAAS,KAAK,QAAQ,MAAM,MAAM,SAAS,EAAE,GAAG;AACzD,UAAM,IAAI;AAAA,EACd;AAEA,SAAO,MAAM,KAAK,IAAI;AAC1B;AAIO,SAAS,0BAA0B,OAAO;AAC7C,MAAI,eAAe;AACnB,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACnC,UAAM,OAAO,MAAM;AACnB,UAAME,UAASC,mBAAkB,IAAI;AACrC,QAAID,YAAW,KAAK,QAAQ;AACxB;AAAA,IACJ;AACA,QAAI,iBAAiB,QAAQA,UAAS,cAAc;AAChD,qBAAeA;AACf,UAAI,iBAAiB,GAAG;AACpB;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACA,SAAO,iBAAiB,OAAO,IAAI;AACvC;AACA,SAASC,mBAAkB,KAAK;AAC5B,MAAI,IAAI;AACR,SAAO,IAAI,IAAI,WAAW,IAAI,OAAO,OAAO,IAAI,OAAO,MAAO;AAC1D;AAAA,EACJ;AACA,SAAO;AACX;AACA,SAAS,QAAQ,KAAK;AAClB,SAAOA,mBAAkB,GAAG,MAAM,IAAI;AAC1C;;;AC9WO,IAAI;AAAA,CACV,SAAUC,aAAY;AACnB,EAAAA,YAAW,UAAU;AACrB,EAAAA,YAAW,iBAAiB;AAC5B,EAAAA,YAAW,eAAe;AAC1B,EAAAA,YAAW,oBAAoB;AAC/B,EAAAA,YAAW,iBAAiB;AAC5B,EAAAA,YAAW,uBAAuB;AAClC,EAAAA,YAAW,mBAAmB;AAC9B,EAAAA,YAAW,gBAAgB;AAC3B,EAAAA,YAAW,oBAAoB;AAC/B,EAAAA,YAAW,iBAAiB;AAC5B,EAAAA,YAAW,WAAW;AACtB,EAAAA,YAAW,cAAc;AACzB,EAAAA,YAAW,kBAAkB;AAC7B,EAAAA,YAAW,eAAe;AAC1B,EAAAA,YAAW,WAAW;AACtB,EAAAA,YAAW,qBAAqB;AAChC,EAAAA,YAAW,kBAAkB;AAC7B,EAAAA,YAAW,gBAAgB;AAC3B,EAAAA,YAAW,sBAAsB;AACjC,EAAAA,YAAW,yBAAyB;AACpC,EAAAA,YAAW,6BAA6B;AACxC,EAAAA,YAAW,qBAAqB;AAChC,EAAAA,YAAW,wBAAwB;AACnC,EAAAA,YAAW,cAAc;AACzB,EAAAA,YAAW,gBAAgB;AAC/B,GAAG,eAAe,aAAa,CAAC,EAAE;;;AC1B3B,SAAS,yBAAyB,SAAS,MAAM;AACpD,MAAI,MAAM;AACN,UAAM,kBAAkB,QAAQ,KAAK;AACrC,QAAI,aAAa,eAAe,GAAG;AAC/B,aAAO;AAAA,IACX;AAAA,EACJ;AACJ;;;AC0BO,SAAS,YAAY,MAAM;AAC9B,MAAI,eAAe,MAAM;AACrB,UAAM,SAAS,KAAK,UAAU;AAE9B,eAAW,aAAa,QAAQ;AAC5B,YAAM,QAAQ,OAAO;AACrB,aAAO,MAAM,SAAS;AAAA,IAC1B;AAAA,EACJ;AACA,SAAO;AACX;AACO,SAAS,kBAAkB,MAAM;AACpC,UAAQ,KAAK;AAAA,SACJ,WAAW;AACZ,aAAO;AAAA,SACN,aAAa;AACd,aAAO;AAAA,SACN,cAAc;AACf,aAAO;AAAA,SACN,eAAe;AAChB,aAAO;AAAA,SACN,UAAU;AACX,aAAO;AAAA;AAEP,aAAO;AAAA;AAEnB;;;AC1DO,SAAS,YAAY,iBAAiB,YAAY;AACrD,QAAM,mBAAmB,uBAAO,OAAO,IAAI;AAC3C,aAAW,YAAY,iBAAiB;AACpC,qBAAiB,YAAY,gBAAgB;AAAA,EACjD;AACA,QAAM,aAAa,uBAAO,OAAO,IAAI;AACrC,aAAW,YAAY,kBAAkB;AACrC,UAAM,YAAY,iBAAiB;AACnC,QAAI,aAAa,QAAQ,SAAS,WAAW,IAAI,GAAG;AAChD;AAAA,IACJ;AACA,UAAM,UAAU,UAAU;AAC1B,QAAI,QAAQ,WAAW,IAAI,GAAG;AAC1B;AAAA,IACJ;AACA,QAAI,WAAW,YAAY,MAAM;AAC7B,cAAQ,KAAK,8BAA8B,6DAA6D;AACxG;AAAA,IACJ;AACA,eAAW,WAAW;AAAA,EAC1B;AACA,aAAW,YAAY,YAAY;AAC/B,eAAW,YAAY,gBAAgB,WAAW,SAAS;AAAA,EAC/D;AACA,QAAM,gBAAgB,WAAW,IAAI,eAAa,gBAAgB,SAAS,CAAC;AAC5E,SAAO;AAAA,IACH,SAAS;AAAA,IACT,YAAY;AAAA,EAChB;AACA,WAAS,gBAAgB,WAAW;AAChC,QAAI,qBAAqB,SAAS,GAAG;AACjC,aAAO;AAAA,IACX;AACA,UAAM,kBAAkB,UAAU,SAAS;AAC3C,oBAAgB,OAAO,WAAW,gBAAgB,IAAI;AACtD,WAAO,IAAI,iBAAiB,eAAe;AAAA,EAC/C;AACA,WAAS,WAAW,MAAM;AACtB,UAAM,cAAc,CAAC;AACrB,eAAW,WAAW,MAAM;AACxB,YAAM,MAAM,KAAK;AACjB,YAAM,iBAAiB,WAAW,IAAI,IAAI;AAC1C,UAAI,kBAAkB,MAAM;AACxB,YAAI,OAAO;AACX,oBAAY,WAAW;AAAA,MAC3B;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AACA,WAAS,gBAAgB,MAAM;AAC3B,QAAI,aAAa,IAAI,GAAG;AACpB,YAAM,SAAS,KAAK,SAAS;AAC7B,YAAM,YAAY;AAAA,QACd,GAAG;AAAA,QACH,QAAQ,MAAM,aAAa,OAAO,MAAM;AAAA,QACxC,YAAY,MAAM,iBAAiB,OAAO,UAAU;AAAA,MACxD;AACA,aAAO,IAAI,kBAAkB,SAAS;AAAA,IAC1C,WACS,gBAAgB,IAAI,GAAG;AAC5B,YAAM,SAAS,KAAK,SAAS;AAC7B,YAAM,YAAY;AAAA,QACd,GAAG;AAAA,QACH,QAAQ,MAAM,aAAa,OAAO,MAAM;AAAA,MAC5C;AACA,UAAI,gBAAgB,WAAW;AAC3B,kBAAU,aAAa,MAAM,iBAAiB,OAAO,UAAU;AAAA,MACnE;AACA,aAAO,IAAI,qBAAqB,SAAS;AAAA,IAC7C,WACS,YAAY,IAAI,GAAG;AACxB,YAAM,SAAS,KAAK,SAAS;AAC7B,YAAM,YAAY;AAAA,QACd,GAAG;AAAA,QACH,OAAO,MAAM,iBAAiB,OAAO,KAAK;AAAA,MAC9C;AACA,aAAO,IAAI,iBAAiB,SAAS;AAAA,IACzC,WACS,kBAAkB,IAAI,GAAG;AAC9B,YAAM,SAAS,KAAK,SAAS;AAC7B,YAAM,YAAY;AAAA,QACd,GAAG;AAAA,QACH,QAAQ,MAAM,kBAAkB,OAAO,MAAM;AAAA,MACjD;AACA,aAAO,IAAI,uBAAuB,SAAS;AAAA,IAC/C,WACS,WAAW,IAAI,GAAG;AACvB,YAAM,aAAa,KAAK,SAAS;AACjC,aAAO,IAAI,gBAAgB,UAAU;AAAA,IACzC,WACS,aAAa,IAAI,GAAG;AACzB,UAAI,sBAAsB,IAAI,GAAG;AAC7B,eAAO;AAAA,MACX;AACA,YAAM,eAAe,KAAK,SAAS;AACnC,aAAO,IAAI,kBAAkB,YAAY;AAAA,IAC7C;AACA,UAAM,IAAI,MAAM,2BAA2B,MAAM;AAAA,EACrD;AACA,WAAS,aAAa,QAAQ;AAC1B,UAAM,gBAAgB,CAAC;AACvB,eAAW,aAAa,QAAQ;AAC5B,YAAM,QAAQ,OAAO;AACrB,YAAM,mBAAmB,WAAW,MAAM,IAAI;AAC9C,UAAI,oBAAoB,QAAQ,MAAM,MAAM;AACxC,cAAM,OAAO;AACb,cAAM,OAAO,WAAW,MAAM,IAAI;AAClC,sBAAc,aAAa;AAAA,MAC/B;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AACA,WAAS,kBAAkB,QAAQ;AAC/B,UAAM,gBAAgB,CAAC;AACvB,eAAW,aAAa,QAAQ;AAC5B,YAAM,QAAQ,OAAO;AACrB,YAAM,mBAAmB,WAAW,MAAM,IAAI;AAC9C,UAAI,oBAAoB,MAAM;AAC1B,cAAM,OAAO;AACb,sBAAc,aAAa;AAAA,MAC/B;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AACA,WAAS,iBAAiB,YAAY;AAClC,UAAM,eAAe,CAAC;AACtB,eAAW,aAAa,YAAY;AAChC,YAAM,cAAc,WAAW,SAAS;AACxC,UAAI,eAAe,MAAM;AACrB,qBAAa,KAAK,WAAW;AAAA,MACjC;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AACA,WAAS,WAAW,MAAM;AACtB,QAAI,WAAW,IAAI,GAAG;AAClB,YAAM,cAAc,WAAW,KAAK,MAAM;AAC1C,aAAO,eAAe,OAAO,IAAI,YAAY,WAAW,IAAI;AAAA,IAChE,WACS,cAAc,IAAI,GAAG;AAC1B,YAAM,cAAc,WAAW,KAAK,MAAM;AAC1C,aAAO,eAAe,OAAO,IAAI,eAAe,WAAW,IAAI;AAAA,IACnE,WACS,YAAY,IAAI,GAAG;AACxB,UAAI,cAAc,iBAAiB,KAAK;AACxC,UAAI,gBAAgB,QAAW;AAC3B,sBAAc,YAAY,IAAI,IAAI,kBAAkB,IAAI,IAAI,gBAAgB,IAAI;AAChF,mBAAW,YAAY,QAAQ,iBAAiB,KAAK,QAAQ;AAAA,MACjE;AACA,aAAO,eAAe,OAAO,WAAW,YAAY,QAAQ;AAAA,IAChE;AACA,WAAO;AAAA,EACX;AACJ;;;AC1JO,SAAS,oBAAoB,MAAM,OAAO,4BAA4B,MAAM,8BAA8B,MAAM;AACnH,MAAI,SAAS,MAAM;AACf,WAAO;AAAA,EACX;AACA,QAAM,eAAe,gBAAgB,IAAI;AACzC,MAAI,WAAW,YAAY,GAAG;AAC1B,WAAO,6BAA6B,OAAO,0BAA0B,cAAc,KAAK,IAAI;AAAA,EAChG,WACS,WAAW,YAAY,GAAG;AAC/B,WAAO,MAAM,IAAI,CAAC,eAAe,oBAAoB,aAAa,QAAQ,YAAY,2BAA2B,2BAA2B,CAAC;AAAA,EACjJ,WACS,kBAAkB,YAAY,GAAG;AACtC,UAAM,SAAS,aAAa,UAAU;AACtC,UAAM,WAAW,CAAC;AAClB,eAAW,OAAO,OAAO;AACrB,YAAM,QAAQ,OAAO;AACrB,UAAI,SAAS,MAAM;AACf,iBAAS,OAAO,oBAAoB,MAAM,MAAM,MAAM,MAAM,2BAA2B,2BAA2B;AAAA,MACtH;AAAA,IACJ;AACA,WAAO,+BAA+B,OAAO,4BAA4B,cAAc,QAAQ,IAAI;AAAA,EACvG;AAEJ;AACO,SAAS,oBAAoB,MAAM,OAAO;AAC7C,SAAO,oBAAoB,MAAM,OAAO,CAAC,GAAG,MAAM;AAC9C,QAAI;AACA,aAAO,EAAE,UAAU,CAAC;AAAA,IACxB,SACOC,KAAP;AACI,aAAO;AAAA,IACX;AAAA,EACJ,CAAC;AACL;AACO,SAAS,gBAAgB,MAAM,OAAO;AACzC,SAAO,oBAAoB,MAAM,OAAO,CAAC,GAAG,MAAM;AAC9C,QAAI;AACA,aAAO,EAAE,WAAW,CAAC;AAAA,IACzB,SACOA,KAAP;AACI,aAAO;AAAA,IACX;AAAA,EACJ,CAAC;AACL;;;ACvCO,SAAS,UAAU,QAAQ,eAAe,CAAC,GAAG;AACjD,QAAM,aAAa,aAAa,UAAU,SAAS,iBAAiB,cAAc,SAAS,iBAAiB,OAAO,WAAW,GAAG,QAAQ,mBAAmB,GAAG,QAAQ,cAAc,UAAQ,WAAW,IAAI,CAAC,GAAG,QAAQ,YAAY,GAAG,QAAQ,eAAe,GAAG,QAAQ,cAAc,UAAQ,CAAC,WAAW,IAAI,CAAC,GAAG,QAAQ,YAAY,GAAG,QAAQ,YAAY;AAC9V,QAAM,qBAAqB,OAAO,cAAc;AAChD,QAAM,gBAAgB,cAAc,oBAAoB,QAAQ,YAAY;AAC5E,QAAM,EAAE,SAAS,WAAW,IAAI,YAAY,YAAY,aAAa;AACrE,SAAO,IAAI,cAAc;AAAA,IACrB,GAAG,OAAO,SAAS;AAAA,IACnB,OAAO,yBAAyB,SAAS,yBAAyB,YAAY,OAAO,aAAa,CAAC,CAAC;AAAA,IACpG,UAAU,yBAAyB,SAAS,yBAAyB,YAAY,OAAO,gBAAgB,CAAC,CAAC;AAAA,IAC1G,cAAc,yBAAyB,SAAS,yBAAyB,YAAY,OAAO,oBAAoB,CAAC,CAAC;AAAA,IAClH,OAAO,OAAO,OAAO,OAAO;AAAA,IAC5B;AAAA,EACJ,CAAC;AACL;AACA,SAAS,SAAS,iBAAiB,QAAQ,cAAc,SAAS,MAAM,MAAM;AAC1E,QAAM,aAAa,CAAC;AACpB,aAAW,YAAY,iBAAiB;AACpC,QAAI,CAAC,SAAS,WAAW,IAAI,GAAG;AAC5B,YAAM,eAAe,gBAAgB;AACrC,UAAI,gBAAgB,QAAQ,CAAC,OAAO,YAAY,GAAG;AAC/C,mBAAW,YAAY;AACvB;AAAA,MACJ;AACA,YAAM,aAAa,cAAc,QAAQ,cAAc,QAAQ;AAC/D,UAAI,cAAc,MAAM;AACpB,mBAAW,YAAY;AACvB;AAAA,MACJ;AACA,YAAM,eAAe,WAAW,cAAc,MAAM;AACpD,UAAI,iBAAiB,QAAW;AAC5B,mBAAW,YAAY;AACvB;AAAA,MACJ;AACA,iBAAW,YAAY;AAAA,IAC3B;AAAA,EACJ;AACA,SAAO;AACX;AACA,SAAS,cAAc,iBAAiB,QAAQ,cAAc;AAC1D,QAAM,kBAAkB,mBAAmB,YAAY;AACvD,MAAI,CAAC,iBAAiB;AAClB,WAAO;AAAA,EACX;AACA,SAAO,SAAS,iBAAiB,QAAQ;AAAA,IACrC,CAAC,WAAW,YAAY,UAAQ;AAC5B,YAAM,SAAS,KAAK,SAAS;AAC7B,YAAM,6BAA6B,OAAO;AAC1C,YAAM,wBAAwB,CAAC;AAC/B,iBAAW,iBAAiB,4BAA4B;AACpD,cAAM,0BAA0B,2BAA2B;AAC3D,cAAM,kBAAkB,gBAAgB,yBAAyB,KAAK,MAAM,QAAQ,aAAa;AACjG,YAAI,oBAAoB,QAAW;AAC/B,gCAAsB,iBAAiB;AAAA,QAC3C,WACS,MAAM,QAAQ,eAAe,GAAG;AACrC,gBAAM,CAAC,kBAAkB,kBAAkB,IAAI;AAC/C,gCAAsB,oBAClB,uBAAuB,SAAY,0BAA0B;AAAA,QACrE,WACS,oBAAoB,MAAM;AAC/B,gCAAsB,iBAAiB;AAAA,QAC3C;AAAA,MACJ;AACA,aAAO,gBAAgB,IAAI,gBAAgB;AAAA,QACvC,GAAG;AAAA,QACH,QAAQ;AAAA,MACZ,CAAC,CAAC;AAAA,IACN;AAAA,EACJ,GAAG,UAAQ,WAAW,IAAI,CAAC;AAC/B;AACA,SAAS,iBAAiB,iBAAiB,QAAQ,IAAI;AACnD,QAAM,aAAa,aAAa,iBAAiB,QAAQ;AAAA,IACrD,CAAC,WAAW,WAAW,oBAAkB;AACrC,UAAI,eAAe,iBAAiB,QAAW;AAC3C,eAAO;AAAA,MACX;AACA,YAAM,eAAe,WAAW,iBAAiB,eAAe,IAAI;AACpE,UAAI,gBAAgB,MAAM;AACtB,eAAO;AAAA,UACH,GAAG;AAAA,UACH,cAAc,GAAG,cAAc,eAAe,YAAY;AAAA,QAC9D;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ,CAAC;AACD,SAAO,UAAU,YAAY,QAAQ;AAAA,IACjC,CAAC,WAAW,qBAAqB,sBAAoB;AACjD,UAAI,iBAAiB,iBAAiB,QAAW;AAC7C,eAAO;AAAA,MACX;AACA,YAAM,eAAe,WAAW,YAAY,iBAAiB,IAAI;AACjE,UAAI,gBAAgB,MAAM;AACtB,eAAO;AAAA,UACH,GAAG;AAAA,UACH,cAAc,GAAG,cAAc,iBAAiB,YAAY;AAAA,QAChE;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ,CAAC;AACL;AACA,SAAS,WAAW,YAAY,MAAM;AAClC,MAAI,WAAW,IAAI,GAAG;AAClB,UAAM,UAAU,WAAW,YAAY,KAAK,MAAM;AAClD,WAAO,WAAW,OAAO,IAAI,YAAY,OAAO,IAAI;AAAA,EACxD,WACS,cAAc,IAAI,GAAG;AAC1B,UAAM,UAAU,WAAW,YAAY,KAAK,MAAM;AAClD,WAAO,WAAW,OAAO,IAAI,eAAe,OAAO,IAAI;AAAA,EAC3D,WACS,YAAY,IAAI,GAAG;AACxB,UAAM,UAAU,WAAW,KAAK;AAChC,WAAO,WAAW,OAAO,UAAU;AAAA,EACvC;AACA,SAAO;AACX;AACA,SAAS,UAAU,iBAAiB,QAAQ,cAAc;AACtD,QAAM,aAAa,CAAC;AACpB,aAAW,YAAY,iBAAiB;AACpC,QAAI,CAAC,SAAS,WAAW,IAAI,GAAG;AAC5B,YAAM,eAAe,gBAAgB;AACrC,UAAI,CAAC,aAAa,YAAY,KAAK,CAAC,gBAAgB,YAAY,KAAK,CAAC,kBAAkB,YAAY,GAAG;AACnG,mBAAW,YAAY;AACvB;AAAA,MACJ;AACA,YAAM,cAAc,eAAe,QAAQ,cAAc,QAAQ;AACjE,UAAI,eAAe,MAAM;AACrB,mBAAW,YAAY;AACvB;AAAA,MACJ;AACA,YAAM,SAAS,aAAa,SAAS;AACrC,YAAM,yBAAyB,OAAO;AACtC,YAAM,oBAAoB,CAAC;AAC3B,iBAAW,aAAa,wBAAwB;AAC5C,cAAM,sBAAsB,uBAAuB;AACnD,cAAM,cAAc,YAAY,qBAAqB,WAAW,UAAU,MAAM;AAChF,YAAI,gBAAgB,QAAW;AAC3B,4BAAkB,aAAa;AAAA,QACnC,WACS,MAAM,QAAQ,WAAW,GAAG;AACjC,gBAAM,CAAC,cAAc,cAAc,IAAI;AACvC,cAAI,eAAe,WAAW,MAAM;AAChC,2BAAe,UAAU;AAAA,cACrB,GAAG,eAAe;AAAA,cAClB,MAAM;AAAA,gBACF,GAAG,eAAe,QAAQ;AAAA,gBAC1B,OAAO;AAAA,cACX;AAAA,YACJ;AAAA,UACJ;AACA,4BAAkB,gBAAgB,mBAAmB,SAAY,sBAAsB;AAAA,QAC3F,WACS,gBAAgB,MAAM;AAC3B,4BAAkB,aAAa;AAAA,QACnC;AAAA,MACJ;AACA,UAAI,aAAa,YAAY,GAAG;AAC5B,mBAAW,YAAY,gBAAgB,IAAI,kBAAkB;AAAA,UACzD,GAAG;AAAA,UACH,QAAQ;AAAA,QACZ,CAAC,CAAC;AAAA,MACN,WACS,gBAAgB,YAAY,GAAG;AACpC,mBAAW,YAAY,gBAAgB,IAAI,qBAAqB;AAAA,UAC5D,GAAG;AAAA,UACH,QAAQ;AAAA,QACZ,CAAC,CAAC;AAAA,MACN,OACK;AACD,mBAAW,YAAY,gBAAgB,IAAI,uBAAuB;AAAA,UAC9D,GAAG;AAAA,UACH,QAAQ;AAAA,QACZ,CAAC,CAAC;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AACA,SAAO;AACX;AACA,SAAS,aAAa,iBAAiB,QAAQ,cAAc;AACzD,QAAM,aAAa,CAAC;AACpB,aAAW,YAAY,iBAAiB;AACpC,QAAI,CAAC,SAAS,WAAW,IAAI,GAAG;AAC5B,YAAM,eAAe,gBAAgB;AACrC,UAAI,CAAC,aAAa,YAAY,KAAK,CAAC,gBAAgB,YAAY,GAAG;AAC/D,mBAAW,YAAY;AACvB;AAAA,MACJ;AACA,YAAM,iBAAiB,kBAAkB,YAAY;AACrD,UAAI,kBAAkB,MAAM;AACxB,mBAAW,YAAY;AACvB;AAAA,MACJ;AACA,YAAM,SAAS,aAAa,SAAS;AACrC,YAAM,yBAAyB,OAAO;AACtC,YAAM,oBAAoB,CAAC;AAC3B,iBAAW,aAAa,wBAAwB;AAC5C,cAAM,sBAAsB,uBAAuB;AACnD,cAAM,4BAA4B,oBAAoB;AACtD,YAAI,6BAA6B,MAAM;AACnC,4BAAkB,aAAa;AAC/B;AAAA,QACJ;AACA,cAAM,gBAAgB,OAAO,KAAK,yBAAyB;AAC3D,YAAI,CAAC,cAAc,QAAQ;AACvB,4BAAkB,aAAa;AAC/B;AAAA,QACJ;AACA,cAAM,uBAAuB,CAAC;AAC9B,mBAAW,gBAAgB,eAAe;AACtC,gBAAM,yBAAyB,0BAA0B;AACzD,gBAAM,iBAAiB,eAAe,wBAAwB,WAAW,UAAU,MAAM;AACzF,cAAI,mBAAmB,QAAW;AAC9B,iCAAqB,gBAAgB;AAAA,UACzC,WACS,MAAM,QAAQ,cAAc,GAAG;AACpC,kBAAM,CAAC,iBAAiB,iBAAiB,IAAI;AAC7C,iCAAqB,mBAAmB;AAAA,UAC5C,WACS,mBAAmB,MAAM;AAC9B,iCAAqB,gBAAgB;AAAA,UACzC;AAAA,QACJ;AACA,0BAAkB,aAAa;AAAA,UAC3B,GAAG;AAAA,UACH,MAAM;AAAA,QACV;AAAA,MACJ;AACA,UAAI,aAAa,YAAY,GAAG;AAC5B,mBAAW,YAAY,IAAI,kBAAkB;AAAA,UACzC,GAAG;AAAA,UACH,QAAQ;AAAA,QACZ,CAAC;AAAA,MACL,WACS,gBAAgB,YAAY,GAAG;AACpC,mBAAW,YAAY,IAAI,qBAAqB;AAAA,UAC5C,GAAG;AAAA,UACH,QAAQ;AAAA,QACZ,CAAC;AAAA,MACL,OACK;AACD,mBAAW,YAAY,IAAI,uBAAuB;AAAA,UAC9C,GAAG;AAAA,UACH,QAAQ;AAAA,QACZ,CAAC;AAAA,MACL;AAAA,IACJ;AAAA,EACJ;AACA,SAAO;AACX;AACA,SAAS,cAAc,oBAAoB,QAAQ,cAAc;AAC7D,QAAM,kBAAkB,mBAAmB,YAAY;AACvD,MAAI,mBAAmB,MAAM;AACzB,WAAO,mBAAmB,MAAM;AAAA,EACpC;AACA,QAAM,gBAAgB,CAAC;AACvB,aAAW,aAAa,oBAAoB;AACxC,UAAM,kBAAkB,gBAAgB,WAAW,MAAM;AACzD,QAAI,oBAAoB,QAAW;AAC/B,oBAAc,KAAK,SAAS;AAAA,IAChC,WACS,oBAAoB,MAAM;AAC/B,oBAAc,KAAK,eAAe;AAAA,IACtC;AAAA,EACJ;AACA,SAAO;AACX;AACA,SAAS,kBAAkB,QAAQ,UAAU;AACzC,MAAIC,KAAI,IAAI;AACZ,QAAM,OAAO,OAAO,QAAQ,QAAQ;AACpC,QAAM,aAAa,CAAC,WAAW,IAAI;AACnC,MAAI,aAAa,IAAI,GAAG;AACpB,eAAW,KAAK,WAAW,gBAAgB,WAAW,WAAW;AACjE,QAAI,eAAeA,MAAK,OAAO,aAAa,OAAO,QAAQA,QAAO,SAAS,SAASA,IAAG,OAAO;AAC1F,iBAAW,KAAK,WAAW,aAAa,WAAW,KAAK;AAAA,IAC5D,WACS,eAAe,KAAK,OAAO,gBAAgB,OAAO,QAAQ,OAAO,SAAS,SAAS,GAAG,OAAO;AAClG,iBAAW,KAAK,WAAW,aAAa,WAAW,QAAQ;AAAA,IAC/D,WACS,eAAe,KAAK,OAAO,oBAAoB,OAAO,QAAQ,OAAO,SAAS,SAAS,GAAG,OAAO;AACtG,iBAAW,KAAK,WAAW,aAAa,WAAW,YAAY;AAAA,IACnE;AAAA,EACJ,WACS,kBAAkB,IAAI,GAAG;AAC9B,eAAW,KAAK,WAAW,iBAAiB;AAAA,EAChD,WACS,gBAAgB,IAAI,GAAG;AAC5B,eAAW,KAAK,WAAW,gBAAgB,WAAW,eAAe,WAAW,cAAc;AAAA,EAClG,WACS,YAAY,IAAI,GAAG;AACxB,eAAW,KAAK,WAAW,gBAAgB,WAAW,eAAe,WAAW,UAAU;AAAA,EAC9F,WACS,WAAW,IAAI,GAAG;AACvB,eAAW,KAAK,WAAW,SAAS;AAAA,EACxC,WACS,aAAa,IAAI,GAAG;AACzB,eAAW,KAAK,WAAW,WAAW;AAAA,EAC1C;AACA,SAAO;AACX;AACA,SAAS,cAAc,QAAQ,cAAc,UAAU;AACnD,QAAM,aAAa,kBAAkB,QAAQ,QAAQ;AACrD,MAAI;AACJ,QAAM,QAAQ,CAAC,GAAG,UAAU;AAC5B,SAAO,CAAC,cAAc,MAAM,SAAS,GAAG;AAEpC,UAAM,OAAO,MAAM,IAAI;AACvB,iBAAa,aAAa;AAAA,EAC9B;AACA,SAAO,cAAc,OAAO,aAAa;AAC7C;AACA,SAAS,mBAAmB,QAAQ,UAAU;AAC1C,MAAIA,KAAI,IAAI;AACZ,QAAM,OAAO,OAAO,QAAQ,QAAQ;AACpC,QAAM,aAAa,CAAC,WAAW,KAAK;AACpC,MAAI,aAAa,IAAI,GAAG;AACpB,eAAW,KAAK,WAAW,iBAAiB,WAAW,YAAY;AACnE,QAAI,eAAeA,MAAK,OAAO,aAAa,OAAO,QAAQA,QAAO,SAAS,SAASA,IAAG,OAAO;AAC1F,iBAAW,KAAK,WAAW,YAAY,WAAW,gBAAgB;AAAA,IACtE,WACS,eAAe,KAAK,OAAO,gBAAgB,OAAO,QAAQ,OAAO,SAAS,SAAS,GAAG,OAAO;AAClG,iBAAW,KAAK,WAAW,YAAY,WAAW,mBAAmB;AAAA,IACzE,WACS,eAAe,KAAK,OAAO,oBAAoB,OAAO,QAAQ,OAAO,SAAS,SAAS,GAAG,OAAO;AACtG,iBAAW,KAAK,WAAW,YAAY,WAAW,uBAAuB;AAAA,IAC7E;AAAA,EACJ,WACS,gBAAgB,IAAI,GAAG;AAC5B,eAAW,KAAK,WAAW,iBAAiB,WAAW,eAAe;AAAA,EAC1E,WACS,kBAAkB,IAAI,GAAG;AAC9B,eAAW,KAAK,WAAW,kBAAkB;AAAA,EACjD;AACA,SAAO;AACX;AACA,SAAS,eAAe,QAAQ,cAAc,UAAU;AACpD,QAAM,aAAa,mBAAmB,QAAQ,QAAQ;AACtD,MAAI;AACJ,QAAM,QAAQ,CAAC,GAAG,UAAU;AAC5B,SAAO,CAAC,eAAe,MAAM,SAAS,GAAG;AAErC,UAAM,OAAO,MAAM,IAAI;AAEvB,kBAAc,aAAa;AAAA,EAC/B;AACA,SAAO,gBAAgB,QAAQ,gBAAgB,SAAS,cAAc;AAC1E;AACA,SAAS,kBAAkB,cAAc;AACrC,QAAM,iBAAiB,aAAa,WAAW;AAC/C,SAAO,kBAAkB,OAAO,iBAAiB;AACrD;AACA,SAAS,mBAAmB,cAAc;AACtC,QAAM,kBAAkB,aAAa,WAAW;AAChD,SAAO,mBAAmB,OAAO,kBAAkB;AACvD;AACA,SAAS,mBAAmB,cAAc;AACtC,QAAM,kBAAkB,aAAa,WAAW;AAChD,SAAO,mBAAmB,OAAO,kBAAkB;AACvD;AACO,SAAS,gBAAgB,MAAM;AAClC,MAAI,aAAa,IAAI,GAAG;AACpB,UAAM,SAAS,KAAK,SAAS;AAC7B,QAAI,OAAO,WAAW,MAAM;AACxB,YAAM,SAAS,CAAC;AAChB,iBAAW,aAAa,OAAO,QAAQ;AACnC,cAAM,cAAc,OAAO,OAAO;AAClC,YAAI,YAAY,WAAW,MAAM;AAC7B,iBAAO,KAAK,YAAY,OAAO;AAAA,QACnC;AAAA,MACJ;AACA,aAAO,UAAU;AAAA,QACb,GAAG,OAAO;AAAA,QACV,MAAM,KAAK;AAAA,QACX;AAAA,MACJ;AAAA,IACJ;AACA,QAAI,OAAO,qBAAqB,MAAM;AAClC,aAAO,oBAAoB,OAAO,kBAAkB,IAAI,WAAS;AAAA,QAC7D,GAAG;AAAA,QACH,MAAM,KAAK;AAAA,QACX,QAAQ;AAAA,MACZ,EAAE;AAAA,IACN;AACA,WAAO,IAAI,kBAAkB,MAAM;AAAA,EACvC,WACS,gBAAgB,IAAI,GAAG;AAC5B,UAAM,SAAS,KAAK,SAAS;AAC7B,QAAI,OAAO,WAAW,MAAM;AACxB,YAAM,SAAS,CAAC;AAChB,iBAAW,aAAa,OAAO,QAAQ;AACnC,cAAM,cAAc,OAAO,OAAO;AAClC,YAAI,YAAY,WAAW,MAAM;AAC7B,iBAAO,KAAK,YAAY,OAAO;AAAA,QACnC;AAAA,MACJ;AACA,aAAO,UAAU;AAAA,QACb,GAAG,OAAO;AAAA,QACV,MAAM,KAAK;AAAA,QACX;AAAA,MACJ;AAAA,IACJ;AACA,QAAI,OAAO,qBAAqB,MAAM;AAClC,aAAO,oBAAoB,OAAO,kBAAkB,IAAI,WAAS;AAAA,QAC7D,GAAG;AAAA,QACH,MAAM,KAAK;AAAA,QACX,QAAQ;AAAA,MACZ,EAAE;AAAA,IACN;AACA,WAAO,IAAI,qBAAqB,MAAM;AAAA,EAC1C,WACS,kBAAkB,IAAI,GAAG;AAC9B,UAAM,SAAS,KAAK,SAAS;AAC7B,QAAI,OAAO,WAAW,MAAM;AACxB,YAAM,SAAS,CAAC;AAChB,iBAAW,aAAa,OAAO,QAAQ;AACnC,cAAM,cAAc,OAAO,OAAO;AAClC,YAAI,YAAY,WAAW,MAAM;AAC7B,iBAAO,KAAK,YAAY,OAAO;AAAA,QACnC;AAAA,MACJ;AACA,aAAO,UAAU;AAAA,QACb,GAAG,OAAO;AAAA,QACV,MAAM,KAAK;AAAA,QACX;AAAA,MACJ;AAAA,IACJ;AACA,QAAI,OAAO,qBAAqB,MAAM;AAClC,aAAO,oBAAoB,OAAO,kBAAkB,IAAI,WAAS;AAAA,QAC7D,GAAG;AAAA,QACH,MAAM,KAAK;AAAA,QACX,QAAQ;AAAA,MACZ,EAAE;AAAA,IACN;AACA,WAAO,IAAI,uBAAuB,MAAM;AAAA,EAC5C,WACS,WAAW,IAAI,GAAG;AACvB,UAAM,SAAS,KAAK,SAAS;AAC7B,QAAI,OAAO,WAAW,MAAM;AACxB,YAAM,SAAS,CAAC;AAChB,iBAAW,WAAW,OAAO,QAAQ;AACjC,cAAM,kBAAkB,OAAO,OAAO;AACtC,YAAI,gBAAgB,WAAW,MAAM;AACjC,iBAAO,KAAK,gBAAgB,OAAO;AAAA,QACvC;AAAA,MACJ;AACA,aAAO,UAAU;AAAA,QACb,GAAG,OAAO;AAAA,QACV;AAAA,MACJ;AAAA,IACJ;AACA,QAAI,OAAO,qBAAqB,MAAM;AAClC,aAAO,oBAAoB,OAAO,kBAAkB,IAAI,WAAS;AAAA,QAC7D,GAAG;AAAA,QACH,QAAQ;AAAA,MACZ,EAAE;AAAA,IACN;AACA,WAAO,IAAI,gBAAgB,MAAM;AAAA,EACrC,OACK;AACD,WAAO;AAAA,EACX;AACJ;;;ACnbO,SAAS,WAAW,QAAQ;AAC/B,YAAU,OAAO,WAAW,GAAG,OAAO,cAAc,CAAC;AACrD,SAAO;AACX;AACO,SAAS,UAAU,iBAAiB,YAAY;AACnD,QAAM,qBAAqB,uBAAO,OAAO,IAAI;AAI7C,aAAW,YAAY,iBAAiB;AACpC,UAAM,YAAY,gBAAgB;AAClC,QAAI,aAAa,QAAQ,SAAS,WAAW,IAAI,GAAG;AAChD;AAAA,IACJ;AACA,UAAM,aAAa,UAAU;AAC7B,QAAI,WAAW,WAAW,IAAI,GAAG;AAC7B;AAAA,IACJ;AACA,QAAI,mBAAmB,eAAe,MAAM;AACxC,cAAQ,KAAK,8BAA8B,gEAAgE;AAC3G;AAAA,IACJ;AACA,uBAAmB,cAAc;AAAA,EAIrC;AAEA,aAAW,YAAY,oBAAoB;AACvC,UAAM,YAAY,mBAAmB;AACrC,oBAAgB,YAAY;AAAA,EAChC;AAEA,aAAW,QAAQ,YAAY;AAC3B,SAAK,OAAO,KAAK,KAAK,OAAO,SAAO;AAChC,UAAI,OAAO,SAAS,IAAI,IAAI;AAC5B,aAAO,IAAI,SAAS;AAAA,IACxB,CAAC;AAAA,EACL;AACA,aAAW,YAAY,iBAAiB;AACpC,UAAM,YAAY,gBAAgB;AAElC,QAAI,CAAC,SAAS,WAAW,IAAI,KAAK,YAAY,oBAAoB;AAC9D,UAAI,aAAa,MAAM;AACnB,sBAAc,SAAS;AAAA,MAC3B;AAAA,IACJ;AAAA,EACJ;AACA,aAAW,YAAY,iBAAiB;AACpC,QAAI,CAAC,SAAS,WAAW,IAAI,KAAK,EAAE,YAAY,qBAAqB;AACjE,aAAO,gBAAgB;AAAA,IAC3B;AAAA,EACJ;AACA,WAAS,cAAc,MAAM;AACzB,QAAI,aAAa,IAAI,GAAG;AACpB,iBAAW,IAAI;AACf,qBAAe,IAAI;AACnB;AAAA,IACJ,WACS,gBAAgB,IAAI,GAAG;AAC5B,iBAAW,IAAI;AACf,UAAI,mBAAmB,MAAM;AACzB,uBAAe,IAAI;AAAA,MACvB;AACA;AAAA,IACJ,WACS,YAAY,IAAI,GAAG;AACxB,0BAAoB,IAAI;AACxB;AAAA,IACJ,WACS,kBAAkB,IAAI,GAAG;AAC9B,sBAAgB,IAAI;AACpB;AAAA,IACJ,WACS,WAAW,IAAI,GAAG;AACvB;AAAA,IACJ;AACA,UAAM,IAAI,MAAM,2BAA2B,MAAM;AAAA,EACrD;AACA,WAAS,WAAW,MAAM;AACtB,UAAM,WAAW,KAAK,UAAU;AAChC,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,QAAQ,GAAG;AACjD,YAAM,KACD,IAAI,SAAO;AACZ,YAAI,OAAO,SAAS,IAAI,IAAI;AAC5B,eAAO,IAAI,SAAS,OAAO,OAAO;AAAA,MACtC,CAAC,EACI,OAAO,OAAO;AACnB,YAAM,OAAO,SAAS,MAAM,IAAI;AAChC,UAAI,MAAM,SAAS,MAAM;AACrB,eAAO,SAAS;AAAA,MACpB;AAAA,IACJ;AAAA,EACJ;AACA,WAAS,eAAe,MAAM;AAC1B,QAAI,mBAAmB,MAAM;AACzB,YAAM,aAAa,KAAK,cAAc;AACtC,iBAAW,KAAK,GAAG,WACd,OAAO,CAAC,EACR,IAAI,WAAS,SAAS,KAAK,CAAC,EAC5B,OAAO,OAAO,CAAC;AAAA,IACxB;AAAA,EACJ;AACA,WAAS,gBAAgB,MAAM;AAC3B,UAAM,WAAW,KAAK,UAAU;AAChC,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,QAAQ,GAAG;AACjD,YAAM,OAAO,SAAS,MAAM,IAAI;AAChC,UAAI,MAAM,SAAS,MAAM;AACrB,eAAO,SAAS;AAAA,MACpB;AAAA,IACJ;AAAA,EACJ;AACA,WAAS,oBAAoB,MAAM;AAC/B,UAAM,QAAQ,KAAK,SAAS;AAC5B,UAAM,KAAK,GAAG,MACT,OAAO,CAAC,EACR,IAAI,OAAK,SAAS,CAAC,CAAC,EACpB,OAAO,OAAO,CAAC;AAAA,EACxB;AACA,WAAS,SAAS,MAAM;AAEpB,QAAI,WAAW,IAAI,GAAG;AAClB,YAAM,aAAa,SAAS,KAAK,MAAM;AACvC,aAAO,cAAc,OAAO,IAAI,YAAY,UAAU,IAAI;AAAA,IAC9D,WACS,cAAc,IAAI,GAAG;AAC1B,YAAM,aAAa,SAAS,KAAK,MAAM;AACvC,aAAO,cAAc,OAAO,IAAI,eAAe,UAAU,IAAI;AAAA,IACjE,WACS,YAAY,IAAI,GAAG;AAOxB,YAAM,eAAe,gBAAgB,KAAK;AAC1C,UAAI,gBAAgB,SAAS,cAAc;AACvC,eAAO;AAAA,MACX;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AACJ;;;AC3KO,SAAS,aAAa,QAAQ,IAAI;AACrC,QAAM,UAAU,OAAO,WAAW;AAClC,aAAW,YAAY,SAAS;AAC5B,UAAM,OAAO,QAAQ;AAErB,QAAI,CAAC,aAAa,IAAI,EAAE,KAAK,WAAW,IAAI,KAAK,aAAa,IAAI,GAAG;AACjE,YAAM,SAAS,KAAK,UAAU;AAC9B,iBAAW,aAAa,QAAQ;AAC5B,cAAM,QAAQ,OAAO;AACrB,WAAG,OAAO,UAAU,SAAS;AAAA,MACjC;AAAA,IACJ;AAAA,EACJ;AACJ;;;ACbO,SAAS,oBAAoB,QAAQ,IAAI;AAC5C,QAAM,UAAU,OAAO,WAAW;AAClC,aAAW,YAAY,SAAS;AAC5B,UAAM,OAAO,QAAQ;AACrB,QAAI,CAAC,aAAa,IAAI,EAAE,KAAK,WAAW,IAAI,GAAG;AAC3C,UAAI,aAAa,IAAI,GAAG;AACpB,cAAM,SAAS,KAAK,UAAU;AAC9B,mBAAW,aAAa,QAAQ;AAC5B,gBAAM,QAAQ,OAAO;AACrB,qBAAW,OAAO,MAAM,MAAM;AAC1B,gBAAI,eAAe,GAAG,IAAI,MAAM,IAAI,YAAY;AAAA,UACpD;AAAA,QACJ;AAAA,MACJ,WACS,kBAAkB,IAAI,GAAG;AAC9B,cAAM,SAAS,KAAK,UAAU;AAC9B,mBAAW,aAAa,QAAQ;AAC5B,gBAAM,QAAQ,OAAO;AACrB,gBAAM,eAAe,GAAG,MAAM,MAAM,MAAM,YAAY;AAAA,QAC1D;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACJ;;;ACvBO,SAAS,UAAU,SAAS,mBAAmB,OAAO;AACzD,QAAM,SAAS,QAAQ,MAAM,CAAC;AAC9B,QAAM,SAAS,CAAC;AAChB,MAAI,kBAAkB;AAClB,WAAO,eAAe,QAAQ,OAAO,OAAO,OAAO,eAAe,MAAM,CAAC,CAAC;AAAA,EAC9E;AACA,aAAW,UAAU,SAAS;AAC1B,QAAI,SAAS,MAAM,KAAK,SAAS,MAAM,GAAG;AACtC,UAAI,kBAAkB;AAClB,cAAM,kBAAkB,OAAO,eAAe,MAAM;AACpD,cAAM,kBAAkB,OAAO,eAAe,MAAM;AACpD,YAAI,iBAAiB;AACjB,qBAAW,OAAO,OAAO,oBAAoB,eAAe,GAAG;AAC3D,kBAAM,aAAa,OAAO,yBAAyB,iBAAiB,GAAG;AACvE,gBAAI,OAAO,UAAU,GAAG;AACpB,qBAAO,eAAe,iBAAiB,KAAK,UAAU;AAAA,YAC1D;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AACA,iBAAW,OAAO,QAAQ;AACtB,YAAI,SAAS,OAAO,IAAI,GAAG;AACvB,cAAI,EAAE,OAAO,SAAS;AAClB,mBAAO,OAAO,QAAQ,EAAE,CAAC,MAAM,OAAO,KAAK,CAAC;AAAA,UAChD,OACK;AACD,mBAAO,OAAO,UAAU,CAAC,OAAO,MAAM,OAAO,IAAI,GAAG,gBAAgB;AAAA,UACxE;AAAA,QACJ,OACK;AACD,iBAAO,OAAO,QAAQ,EAAE,CAAC,MAAM,OAAO,KAAK,CAAC;AAAA,QAChD;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACA,SAAO;AACX;AACA,SAAS,SAAS,MAAM;AACpB,SAAO,QAAQ,OAAO,SAAS,YAAY,CAAC,MAAM,QAAQ,IAAI;AAClE;;;ACxCO,SAASC,iBAAgB,OAAO;AACnC,SAAQ,OAAO,UAAU,YACrB,SAAS,QACT,OAAO,iBAAiB,SACxB,OAAO,MAAM,OAAO,mBAAmB;AAC/C;;;ACJO,SAAS,eAAe,QAAQ;AACnC,SAAO,UAAU,OAAO,WAAW,YAAY,UAAU,UAAU,OAAO,SAAS,KAAK;AAC5F;;;ACDO,SAAS,uBAAuB,QAAQ,4BAA4B,CAAC,GAAG;AAC3E,QAAM,EAAE,yBAAyB,8BAA8B,6BAA6B,IAAI;AAChG,MAAI,iCAAiC,2BAA2B,+BAA+B;AAC3F,UAAM,IAAI,UAAU,iOAE8C;AAAA,EACtE;AACA,eAAa,QAAQ,CAAC,OAAO,UAAU,cAAc;AAEjD,QAAI,8BAA8B;AAC9B,qBAAe,gCAAgC,8BAA8B,OAAO,UAAU,SAAS;AAAA,IAC3G;AAEA,QAAI,2BAA2B,MAAM,KAAK,SAAS,GAAG;AAClD,qBAAe,2BAA2B,yBAAyB,OAAO,UAAU,SAAS;AAAA,IACjG;AAEA,QAAI,iCAAiC,YAAY,CAAC,aAAa,aAAa,MAAM,IAAI,CAAC,GAAG;AACtF,qBAAe,gCAAgC,8BAA8B,OAAO,UAAU,SAAS;AAAA,IAC3G;AAAA,EACJ,CAAC;AACL;AACA,SAAS,eAAe,WAAW,UAAU,OAAO,UAAU,WAAW;AACrE,MAAI,CAAC,MAAM,SAAS;AAChB,UAAM,UAAU,yBAAyB,YAAY;AAAA;AAAA;AAAA,MAGvD;AAAA;AAEE,QAAI,aAAa,SAAS;AACtB,YAAM,IAAI,MAAM,OAAO;AAAA,IAC3B;AACA,QAAI,aAAa,QAAQ;AACrB,cAAQ,KAAK,OAAO;AAAA,IACxB;AACA;AAAA,EACJ;AACA,MAAI,OAAO,MAAM,YAAY,YAAY;AACrC,UAAM,IAAI,MAAM,aAAa,YAAY,+BAA+B;AAAA,EAC5E;AACJ;;;ACxCO,SAAS,4BAA4B,QAAQ,gCAAgC;AAChF,YAAU,QAAQ;AAAA,IACd,CAAC,WAAW,gBAAgB,UAAQ;AAChC,UAAI,CAAC,KAAK,aAAa;AACnB,cAAM,UAAU,SAAS,KAAK;AAE9B,YAAI,mCAAmC,SAAS;AAC5C,gBAAM,IAAI,MAAM,OAAO;AAAA,QAC3B;AACA,YAAI,mCAAmC,QAAQ;AAC3C,kBAAQ,KAAK,OAAO;AAAA,QACxB;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AAAA,EACJ,CAAC;AACL;;;AClBO,SAAS,8BAA8B,QAAQ,WAAW;AAC7D,QAAM,oBAAoB,CAAC;AAC3B,QAAM,UAAU,OAAO,WAAW;AAClC,aAAW,YAAY,SAAS;AAC5B,UAAM,OAAO,QAAQ;AACrB,QAAI,mBAAmB,MAAM;AACzB,wBAAkB,YAAY,CAAC;AAC/B,iBAAW,SAAS,KAAK,cAAc,GAAG;AACtC,YAAI,UAAU,MAAM,OAAO;AACvB,qBAAW,aAAa,UAAU,MAAM,OAAO;AAC3C,gBAAI,cAAc,gBAAgB,CAAC,UAAU,WAAW,IAAI,GAAG;AAC3D,gCAAkB,UAAU,aAAa,UAAU,MAAM,MAAM;AAAA,YACnE;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AACA,YAAM,gBAAgB,UAAU;AAChC,wBAAkB,YAAY;AAAA,QAC1B,GAAG,kBAAkB;AAAA,QACrB,GAAG;AAAA,MACP;AAAA,IACJ,OACK;AACD,YAAM,gBAAgB,UAAU;AAChC,UAAI,iBAAiB,MAAM;AACvB,0BAAkB,YAAY;AAAA,MAClC;AAAA,IACJ;AAAA,EACJ;AACA,SAAO;AACX;;;AC1BO,SAAS,qBAAqB,EAAE,QAAQ,WAAW,gBAAgB,sBAAAC,uBAAsB,4BAA4B,CAAC,GAAG,iCAAiC,OAAO,yBAAyB,MAAO,GAAG;AACvM,QAAM,EAAE,gCAAgC,SAAS,+BAA+B,IAAI;AACpF,QAAM,YAAY,iCACZ,8BAA8B,QAAQ,cAAc,IACpD;AACN,aAAW,YAAY,WAAW;AAC9B,UAAM,gBAAgB,UAAU;AAChC,UAAM,eAAe,OAAO;AAC5B,QAAI,iBAAiB,UAAU;AAC3B,YAAM,IAAI,MAAM,IAAI,0DAA0D,8DAA8D;AAAA,IAChJ;AACA,UAAM,OAAO,OAAO,QAAQ,QAAQ;AACpC,QAAI,QAAQ,MAAM;AACd,UAAI,kCAAkC,UAAU;AAC5C;AAAA,MACJ;AACA,YAAM,IAAI,MAAM,IAAI,mDAAmD;AAAA,IAC3E,WACS,sBAAsB,IAAI,GAAG;AAElC,iBAAW,aAAa,eAAe;AACnC,YAAI,UAAU,WAAW,IAAI,GAAG;AAC5B,eAAK,UAAU,UAAU,CAAC,KAAK,cAAc;AAAA,QACjD,OACK;AACD,eAAK,aAAa,cAAc;AAAA,QACpC;AAAA,MACJ;AAAA,IACJ,WACS,WAAW,IAAI,GAAG;AACvB,YAAM,SAAS,KAAK,UAAU;AAC9B,iBAAW,aAAa,eAAe;AACnC,YAAI,CAAC,UAAU,WAAW,IAAI,KAC1B,CAAC,OAAO,KAAK,WAAS,MAAM,SAAS,SAAS,KAC9C,iCACA,kCAAkC,UAAU;AAC5C,gBAAM,IAAI,MAAM,GAAG,KAAK,QAAQ,8DAA8D,KAAK,MAAM;AAAA,QAC7G;AAAA,MACJ;AAAA,IACJ,WACS,YAAY,IAAI,GAAG;AACxB,iBAAW,aAAa,eAAe;AACnC,YAAI,CAAC,UAAU,WAAW,IAAI,KAC1B,iCACA,kCAAkC,UAAU;AAC5C,gBAAM,IAAI,MAAM,GAAG,KAAK,QAAQ,2CAA2C,KAAK,yCAAyC;AAAA,QAC7H;AAAA,MACJ;AAAA,IACJ,WACS,aAAa,IAAI,KAAK,gBAAgB,IAAI,GAAG;AAClD,iBAAW,aAAa,eAAe;AACnC,YAAI,CAAC,UAAU,WAAW,IAAI,GAAG;AAC7B,gBAAM,SAAS,KAAK,UAAU;AAC9B,gBAAM,QAAQ,OAAO;AACrB,cAAI,SAAS,MAAM;AAEf,gBAAI,iCAAiC,kCAAkC,UAAU;AAC7E,oBAAM,IAAI,MAAM,GAAG,YAAY,mDAAmD;AAAA,YACtF;AAAA,UACJ,OACK;AAED,kBAAM,eAAe,cAAc;AACnC,gBAAI,OAAO,iBAAiB,cAAc,OAAO,iBAAiB,UAAU;AACxE,oBAAM,IAAI,MAAM,YAAY,YAAY,sCAAsC;AAAA,YAClF;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACA,WAAS,yBACH,6BAA6B,QAAQ,WAAWA,qBAAoB,IACpE,6BAA6B,QAAQ,WAAWA,qBAAoB;AAC1E,MAAI,kCAAkC,mCAAmC,UAAU;AAC/E,gCAA4B,QAAQ,8BAA8B;AAAA,EACtE;AACA,SAAO;AACX;AACA,SAAS,6BAA6B,QAAQ,WAAWA,uBAAsB;AAC3E,MAAIC,KAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;AAChD,QAAM,UAAU,OAAO,WAAW;AAClC,aAAW,YAAY,WAAW;AAC9B,UAAM,OAAO,OAAO,QAAQ,QAAQ;AACpC,UAAM,gBAAgB,UAAU;AAChC,QAAI,aAAa,IAAI,GAAG;AACpB,iBAAW,aAAa,eAAe;AACnC,YAAI,UAAU,WAAW,IAAI,GAAG;AAC5B,eAAK,UAAU,UAAU,CAAC,KAAK,cAAc;AAAA,QACjD,WACS,cAAc,aAAa,KAAK,WAAW,MAAM;AACtD,eAAK,UAAU;AAAA,YACX,GAAG,KAAK;AAAA,YACR,cAAc,MAAMA,MAAK,kBAAkB,QAAQ,kBAAkB,SAAS,SAAS,cAAc,aAAa,QAAQA,QAAO,SAAS,SAASA,IAAG,iBAAiB,QAAQ,OAAO,SAAS,KAAK,KAAK,QAAQ;AAAA,YACjN,cAAc,KAAK,KAAK,QAAQ,gBAAgB,QAAQ,OAAO,SAAS,KAAK,CAAC,GAAG,QAAQ,MAAM,KAAK,kBAAkB,QAAQ,kBAAkB,SAAS,SAAS,cAAc,aAAa,QAAQ,OAAO,SAAS,SAAS,GAAG,gBAAgB,QAAQ,OAAO,SAAS,KAAK,CAAC,CAAC;AAAA,UACpR;AAAA,QACJ,WACS,cAAc,uBAAuB,KAAK,qBAAqB,MAAM;AAC1E,eAAK,oBAAoB,KAAK,kBAAkB,QAAQ,KAAK,kBAAkB,QAAQ,kBAAkB,SAAS,SAAS,cAAc,uBAAuB,QAAQ,OAAO,SAAS,KAAK,CAAC,CAAC;AAAA,QACnM,WACS,cAAc,gBACnB,KAAK,cAAc,QACnB,cAAc,cAAc,MAAM;AAClC,eAAK,aAAa,OAAO,OAAO,uBAAO,OAAO,IAAI,GAAG,KAAK,YAAY,cAAc,UAAU;AAAA,QAClG,OACK;AACD,eAAK,aAAa,cAAc;AAAA,QACpC;AAAA,MACJ;AAAA,IACJ,WACS,WAAW,IAAI,GAAG;AACvB,YAAM,SAAS,KAAK,SAAS;AAC7B,YAAM,qBAAqB,OAAO;AAClC,iBAAW,aAAa,eAAe;AACnC,YAAI,UAAU,WAAW,IAAI,GAAG;AAC5B,iBAAO,UAAU,UAAU,CAAC,KAAK,cAAc;AAAA,QACnD,WACS,cAAc,aAAa,OAAO,WAAW,MAAM;AACxD,iBAAO,UAAU;AAAA,YACb,GAAG,OAAO;AAAA,YACV,cAAc,MAAM,KAAK,kBAAkB,QAAQ,kBAAkB,SAAS,SAAS,cAAc,aAAa,QAAQ,OAAO,SAAS,SAAS,GAAG,iBAAiB,QAAQ,OAAO,SAAS,KAAK,OAAO,QAAQ;AAAA,YACnN,cAAc,KAAK,OAAO,QAAQ,gBAAgB,QAAQ,OAAO,SAAS,KAAK,CAAC,GAAG,QAAQ,MAAM,KAAK,kBAAkB,QAAQ,kBAAkB,SAAS,SAAS,cAAc,aAAa,QAAQ,OAAO,SAAS,SAAS,GAAG,gBAAgB,QAAQ,OAAO,SAAS,KAAK,CAAC,CAAC;AAAA,UACtR;AAAA,QACJ,WACS,cAAc,uBAAuB,OAAO,qBAAqB,MAAM;AAC5E,iBAAO,oBAAoB,OAAO,kBAAkB,QAAQ,KAAK,kBAAkB,QAAQ,kBAAkB,SAAS,SAAS,cAAc,uBAAuB,QAAQ,OAAO,SAAS,KAAK,CAAC,CAAC;AAAA,QACvM,WACS,cAAc,gBACnB,KAAK,cAAc,QACnB,cAAc,cAAc,MAAM;AAClC,eAAK,aAAa,OAAO,OAAO,uBAAO,OAAO,IAAI,GAAG,KAAK,YAAY,cAAc,UAAU;AAAA,QAClG,WACS,mBAAmB,YAAY;AACpC,6BAAmB,WAAW,QAAQ,cAAc;AAAA,QACxD;AAAA,MACJ;AACA,cAAQ,YAAY,IAAI,gBAAgB,MAAM;AAAA,IAClD,WACS,YAAY,IAAI,GAAG;AACxB,iBAAW,aAAa,eAAe;AACnC,YAAI,UAAU,WAAW,IAAI,GAAG;AAC5B,eAAK,UAAU,UAAU,CAAC,KAAK,cAAc;AAAA,QACjD;AAAA,MACJ;AAAA,IACJ,WACS,aAAa,IAAI,KAAK,gBAAgB,IAAI,GAAG;AAClD,iBAAW,aAAa,eAAe;AACnC,YAAI,UAAU,WAAW,IAAI,GAAG;AAE5B,eAAK,UAAU,UAAU,CAAC,KAAK,cAAc;AAC7C;AAAA,QACJ;AACA,cAAM,SAAS,KAAK,UAAU;AAC9B,cAAM,QAAQ,OAAO;AACrB,YAAI,SAAS,MAAM;AACf,gBAAM,eAAe,cAAc;AACnC,cAAI,OAAO,iBAAiB,YAAY;AAEpC,kBAAM,UAAU,aAAa,KAAK,aAAa;AAAA,UACnD,OACK;AACD,+BAAmB,OAAO,YAAY;AAAA,UAC1C;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAEA,sBAAoB,QAAQ,mBAAmB;AAE/C,aAAW,MAAM;AAEjB,sBAAoB,QAAQ,eAAe;AAC3C,MAAID,yBAAwB,MAAM;AAC9B,iBAAa,QAAQ,WAAS;AAC1B,UAAI,CAAC,MAAM,SAAS;AAChB,cAAM,UAAUA;AAAA,MACpB;AAAA,IACJ,CAAC;AAAA,EACL;AACA,SAAO;AACX;AACA,SAAS,6BAA6B,QAAQ,WAAWA,uBAAsB;AAC3E,WAAS,UAAU,QAAQ;AAAA,IACvB,CAAC,WAAW,cAAc,UAAQ;AAC9B,UAAIC,KAAI,IAAI,IAAI,IAAI,IAAI;AACxB,YAAM,SAAS,KAAK,SAAS;AAC7B,YAAM,gBAAgB,UAAU,KAAK;AACrC,UAAI,CAAC,sBAAsB,IAAI,KAAK,iBAAiB,MAAM;AACvD,mBAAW,aAAa,eAAe;AACnC,cAAI,UAAU,WAAW,IAAI,GAAG;AAC5B,mBAAO,UAAU,UAAU,CAAC,KAAK,cAAc;AAAA,UACnD,WACS,cAAc,aAAa,OAAO,WAAW,MAAM;AACxD,mBAAO,UAAU;AAAA,cACb,GAAG,OAAO;AAAA,cACV,cAAc,MAAMA,MAAK,kBAAkB,QAAQ,kBAAkB,SAAS,SAAS,cAAc,aAAa,QAAQA,QAAO,SAAS,SAASA,IAAG,iBAAiB,QAAQ,OAAO,SAAS,KAAK,OAAO,QAAQ;AAAA,cACnN,cAAc,KAAK,OAAO,QAAQ,gBAAgB,QAAQ,OAAO,SAAS,KAAK,CAAC,GAAG,QAAQ,MAAM,KAAK,kBAAkB,QAAQ,kBAAkB,SAAS,SAAS,cAAc,aAAa,QAAQ,OAAO,SAAS,SAAS,GAAG,gBAAgB,QAAQ,OAAO,SAAS,KAAK,CAAC,CAAC;AAAA,YACtR;AAAA,UACJ,WACS,cAAc,uBAAuB,OAAO,qBAAqB,MAAM;AAC5E,mBAAO,oBAAoB,OAAO,kBAAkB,QAAQ,KAAK,kBAAkB,QAAQ,kBAAkB,SAAS,SAAS,cAAc,uBAAuB,QAAQ,OAAO,SAAS,KAAK,CAAC,CAAC;AAAA,UACvM,WACS,cAAc,gBACnB,OAAO,cAAc,QACrB,cAAc,cAAc,MAAM;AAClC,mBAAO,aAAa,OAAO,OAAO,uBAAO,OAAO,IAAI,GAAG,KAAK,YAAY,cAAc,UAAU;AAAA,UACpG,OACK;AACD,mBAAO,aAAa,cAAc;AAAA,UACtC;AAAA,QACJ;AACA,eAAO,IAAI,kBAAkB,MAAM;AAAA,MACvC;AAAA,IACJ;AAAA,IACA,CAAC,WAAW,YAAY,UAAQ;AAC5B,UAAIA,KAAI,IAAI,IAAI,IAAI,IAAI;AACxB,YAAM,gBAAgB,UAAU,KAAK;AACrC,YAAM,SAAS,KAAK,SAAS;AAC7B,YAAM,qBAAqB,OAAO;AAClC,UAAI,iBAAiB,MAAM;AACvB,mBAAW,aAAa,eAAe;AACnC,cAAI,UAAU,WAAW,IAAI,GAAG;AAC5B,mBAAO,UAAU,UAAU,CAAC,KAAK,cAAc;AAAA,UACnD,WACS,cAAc,aAAa,OAAO,WAAW,MAAM;AACxD,mBAAO,UAAU;AAAA,cACb,GAAG,OAAO;AAAA,cACV,cAAc,MAAMA,MAAK,kBAAkB,QAAQ,kBAAkB,SAAS,SAAS,cAAc,aAAa,QAAQA,QAAO,SAAS,SAASA,IAAG,iBAAiB,QAAQ,OAAO,SAAS,KAAK,OAAO,QAAQ;AAAA,cACnN,cAAc,KAAK,OAAO,QAAQ,gBAAgB,QAAQ,OAAO,SAAS,KAAK,CAAC,GAAG,QAAQ,MAAM,KAAK,kBAAkB,QAAQ,kBAAkB,SAAS,SAAS,cAAc,aAAa,QAAQ,OAAO,SAAS,SAAS,GAAG,gBAAgB,QAAQ,OAAO,SAAS,KAAK,CAAC,CAAC;AAAA,YACtR;AAAA,UACJ,WACS,cAAc,uBAAuB,OAAO,qBAAqB,MAAM;AAC5E,mBAAO,oBAAoB,OAAO,kBAAkB,QAAQ,KAAK,kBAAkB,QAAQ,kBAAkB,SAAS,SAAS,cAAc,uBAAuB,QAAQ,OAAO,SAAS,KAAK,CAAC,CAAC;AAAA,UACvM,WACS,cAAc,gBACnB,OAAO,cAAc,QACrB,cAAc,cAAc,MAAM;AAClC,mBAAO,aAAa,OAAO,OAAO,uBAAO,OAAO,IAAI,GAAG,KAAK,YAAY,cAAc,UAAU;AAAA,UACpG,WACS,mBAAmB,YAAY;AACpC,+BAAmB,WAAW,QAAQ,cAAc;AAAA,UACxD;AAAA,QACJ;AACA,eAAO,IAAI,gBAAgB,MAAM;AAAA,MACrC;AAAA,IACJ;AAAA,IACA,CAAC,WAAW,aAAa,UAAQ;AAC7B,YAAM,gBAAgB,UAAU,KAAK;AACrC,UAAI,iBAAiB,MAAM;AACvB,cAAM,SAAS,KAAK,SAAS;AAC7B,YAAI,cAAc,kBAAkB;AAChC,iBAAO,cAAc,cAAc;AAAA,QACvC;AACA,eAAO,IAAI,iBAAiB,MAAM;AAAA,MACtC;AAAA,IACJ;AAAA,IACA,CAAC,WAAW,cAAc,UAAQ;AAC9B,YAAM,gBAAgB,UAAU,KAAK;AACrC,UAAI,iBAAiB,MAAM;AACvB,cAAM,SAAS,KAAK,SAAS;AAC7B,YAAI,cAAc,eAAe;AAC7B,iBAAO,WAAW,cAAc;AAAA,QACpC;AACA,eAAO,IAAI,kBAAkB,MAAM;AAAA,MACvC;AAAA,IACJ;AAAA,IACA,CAAC,WAAW,iBAAiB,UAAQ;AACjC,YAAM,gBAAgB,UAAU,KAAK;AACrC,UAAI,iBAAiB,MAAM;AACvB,cAAM,SAAS,KAAK,SAAS;AAC7B,YAAI,cAAc,kBAAkB;AAChC,iBAAO,cAAc,cAAc;AAAA,QACvC;AACA,eAAO,IAAI,qBAAqB,MAAM;AAAA,MAC1C;AAAA,IACJ;AAAA,IACA,CAAC,WAAW,kBAAkB,CAAC,aAAa,WAAW,aAAa;AAChE,YAAM,gBAAgB,UAAU;AAChC,UAAI,iBAAiB,MAAM;AACvB,cAAM,eAAe,cAAc;AACnC,YAAI,gBAAgB,MAAM;AACtB,gBAAM,iBAAiB,EAAE,GAAG,YAAY;AACxC,cAAI,OAAO,iBAAiB,YAAY;AAEpC,2BAAe,UAAU,aAAa,KAAK,aAAa;AAAA,UAC5D,OACK;AACD,+BAAmB,gBAAgB,YAAY;AAAA,UACnD;AACA,iBAAO;AAAA,QACX;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ,CAAC;AACD,MAAID,yBAAwB,MAAM;AAC9B,aAAS,UAAU,QAAQ;AAAA,MACvB,CAAC,WAAW,eAAe,kBAAgB;AAAA,QACvC,GAAG;AAAA,QACH,SAAS,YAAY,WAAW,OAAO,YAAY,UAAUA;AAAA,MACjE;AAAA,IACJ,CAAC;AAAA,EACL;AACA,SAAO;AACX;AACA,SAAS,mBAAmB,OAAO,eAAe;AAC9C,aAAW,gBAAgB,eAAe;AACtC,UAAM,gBAAgB,cAAc;AAAA,EACxC;AACJ;;;AC3RO,SAAS,eAAe,sBAAsB,SAAS;AAC1D,MAAI,CAAC,wBAAyB,MAAM,QAAQ,oBAAoB,KAAK,qBAAqB,WAAW,GAAI;AACrG,WAAO,CAAC;AAAA,EACZ;AACA,MAAI,CAAC,MAAM,QAAQ,oBAAoB,GAAG;AACtC,WAAO;AAAA,EACX;AACA,MAAI,qBAAqB,WAAW,GAAG;AACnC,WAAO,qBAAqB,MAAM,CAAC;AAAA,EACvC;AACA,QAAM,YAAY,IAAI,MAAM;AAC5B,WAAS,uBAAuB,sBAAsB;AAClD,QAAI,MAAM,QAAQ,mBAAmB,GAAG;AACpC,4BAAsB,eAAe,mBAAmB;AAAA,IAC5D;AACA,QAAI,OAAO,wBAAwB,YAAY,qBAAqB;AAChE,gBAAU,KAAK,mBAAmB;AAAA,IACtC;AAAA,EACJ;AACA,QAAM,SAAS,UAAU,WAAW,IAAI;AACxC,MAAI,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,YAAY;AACtE,eAAW,aAAa,QAAQ,YAAY;AACxC,YAAM,CAAC,UAAU,SAAS,IAAI,UAAU,MAAM,GAAG;AACjD,UAAI,CAAC,aAAa,cAAc,KAAK;AACjC,eAAO,OAAO;AAAA,MAClB,WACS,OAAO,WAAW;AACvB,eAAO,OAAO,UAAU;AAAA,MAC5B;AAAA,IACJ;AAAA,EACJ;AACA,SAAO;AACX;;;AC7DO,SAAS,eAAe,OAAO,OAAO,QAAQ;AACjD,QAAM,SAAS,qBAAqB,CAAC,GAAG,OAAO,GAAG,KAAK,EAAE,OAAO,MAAM,CAAC;AACvE,MAAI,UAAU,OAAO,MAAM;AACvB,WAAO,KAAK,YAAY;AAAA,EAC5B;AACA,SAAO;AACX;AACA,SAAS,qBAAqB,MAAM;AAChC,SAAO,KAAK,OAAO,CAAC,KAAK,YAAY;AACjC,UAAM,MAAM,IAAI,KAAK,SAAO,IAAI,KAAK,UAAU,QAAQ,KAAK,KAAK;AACjE,QAAI,CAAC,KAAK;AACN,aAAO,IAAI,OAAO,CAAC,OAAO,CAAC;AAAA,IAC/B;AACA,WAAO;AAAA,EACX,GAAG,CAAC,CAAC;AACT;;;ACdA,SAAS,uBAAuB,eAAe,gBAAgB;AAC3D,SAAO,CAAC,CAAC,cAAc,KAAK,eAAa,UAAU,KAAK,UAAU,eAAe,KAAK,KAAK;AAC/F;AACA,SAAS,kBAAkB,MAAM,UAAU;AACvC,SAAO,SAAS,KAAK,CAAC,EAAE,MAAM,MAAM,UAAU,KAAK,KAAK;AAC5D;AACA,SAASE,gBAAe,IAAI,IAAI;AAC5B,QAAM,SAAS,CAAC,GAAG,EAAE;AACrB,aAAW,YAAY,IAAI;AACvB,UAAM,gBAAgB,OAAO,UAAU,OAAK,EAAE,KAAK,UAAU,SAAS,KAAK,KAAK;AAChF,QAAI,gBAAgB,IAAI;AACpB,YAAM,cAAc,OAAO;AAC3B,UAAI,YAAY,MAAM,SAAS,aAAa;AACxC,cAAM,SAAS,YAAY,MAAM;AACjC,cAAM,SAAS,SAAS,MAAM;AAE9B,oBAAY,MAAM,SAAS,iBAAiB,QAAQ,QAAQ,CAAC,WAAWC,YAAW;AAC/E,gBAAM,QAAQ,UAAU;AACxB,iBAAO,CAAC,SAAS,CAACA,QAAO,KAAK,CAAC,cAAc,UAAU,UAAU,KAAK;AAAA,QAC1E,CAAC;AAAA,MACL,OACK;AACD,oBAAY,QAAQ,SAAS;AAAA,MACjC;AAAA,IACJ,OACK;AACD,aAAO,KAAK,QAAQ;AAAA,IACxB;AAAA,EACJ;AACA,SAAO;AACX;AACA,SAAS,sBAAsB,YAAY;AACvC,SAAO,WACF,IAAI,CAAC,WAAW,GAAG,QAAQ;AAC5B,UAAM,UAAU,IAAI,UAAU,OAAK,EAAE,KAAK,UAAU,UAAU,KAAK,KAAK;AACxE,QAAI,YAAY,GAAG;AACf,YAAM,MAAM,IAAI;AAChB,gBAAU,YAAYD,gBAAe,UAAU,WAAW,IAAI,SAAS;AACvE,aAAO;AAAA,IACX;AACA,WAAO;AAAA,EACX,CAAC,EACI,OAAO,MAAM;AACtB;AACO,SAAS,gBAAgB,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,QAAQ;AACtD,QAAM,eAAe,UAAU,OAAO;AACtC,QAAM,SAAS,eAAe,KAAK;AACnC,QAAM,UAAU,eAAe,KAAK;AACpC,QAAM,SAAS,sBAAsB,CAAC,GAAG,MAAM,CAAC;AAChD,aAAW,aAAa,SAAS;AAC7B,QAAI,uBAAuB,QAAQ,SAAS,GAAG;AAC3C,YAAM,yBAAyB,OAAO,UAAU,OAAK,EAAE,KAAK,UAAU,UAAU,KAAK,KAAK;AAC1F,YAAM,oBAAoB,OAAO;AACjC,aAAO,wBAAwB,YAAYA,gBAAe,UAAU,aAAa,CAAC,GAAG,kBAAkB,aAAa,CAAC,CAAC;AAAA,IAC1H,OACK;AACD,aAAO,KAAK,SAAS;AAAA,IACzB;AAAA,EACJ;AACA,SAAO;AACX;AACA,SAAS,eAAe,MAAM,cAAc;AACxC,QAAM,cAAc,MAAM;AAAA,IACtB,GAAG;AAAA,IACH,aAAa;AAAA,EACjB,CAAC;AACD,QAAM,sBAAsB,MAAM;AAAA,IAC9B,GAAG;AAAA,IACH,aAAa;AAAA,EACjB,CAAC;AAED,QAAM,cAAc,IAAI,OAAO,+BAA+B,GAAG;AACjE,QAAM,gBAAgB,YAAY,QAAQ,aAAa,EAAE,MAAM,oBAAoB,QAAQ,aAAa,EAAE;AAC1G,MAAI,CAAC,eAAe;AAChB,UAAM,IAAI,MAAM,sCAAsC,KAAK,KAAK;AAAA;AAAA,GAAsC;AAAA;AAAA,GAAiD,aAAa;AAAA,EACxK;AACJ;AACO,SAAS,eAAe,MAAM,cAAc;AAC/C,MAAI,cAAc;AACd,mBAAe,MAAM,YAAY;AACjC,WAAO;AAAA,MACH,GAAG;AAAA,MACH,WAAW;AAAA,QACP,GAAG,aAAa;AAAA,QAChB,GAAG,KAAK,UAAU,OAAO,UAAQ,CAAC,kBAAkB,MAAM,aAAa,SAAS,CAAC;AAAA,MACrF;AAAA,IACJ;AAAA,EACJ;AACA,SAAO;AACX;AACA,SAAS,iBAAiB,QAAQ,QAAQ,UAAU;AAChD,SAAO,OAAO,OAAO,OAAO,OAAO,SAAO,SAAS,KAAK,MAAM,CAAC,CAAC;AACpE;;;AC5FO,SAAS,gBAAgB,OAAO,QAAQ,QAAQ;AACnD,MAAI,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO,qBAAqB;AAC5E,UAAM,WAAW,CAAC;AAClB,QAAI,OAAO;AACP,eAAS,KAAK,GAAG,KAAK;AAAA,IAC1B;AACA,YAAQ;AACR,aAAS;AAAA,EACb;AACA,QAAM,eAAe,oBAAI,IAAI;AAC7B,MAAI,OAAO;AACP,eAAW,cAAc,OAAO;AAC5B,mBAAa,IAAI,WAAW,KAAK,OAAO,UAAU;AAAA,IACtD;AAAA,EACJ;AACA,MAAI,QAAQ;AACR,eAAW,eAAe,QAAQ;AAC9B,YAAM,YAAY,YAAY,KAAK;AACnC,UAAI,aAAa,IAAI,SAAS,GAAG;AAC7B,cAAM,aAAa,aAAa,IAAI,SAAS;AAC7C,mBAAW,cAAc,YAAY,eAAe,WAAW;AAC/D,mBAAW,aAAa,gBAAgB,YAAY,YAAY,WAAW,UAAU;AAAA,MACzF,OACK;AACD,qBAAa,IAAI,WAAW,WAAW;AAAA,MAC3C;AAAA,IACJ;AAAA,EACJ;AACA,QAAM,SAAS,CAAC,GAAG,aAAa,OAAO,CAAC;AACxC,MAAI,UAAU,OAAO,MAAM;AACvB,WAAO,KAAK,YAAY;AAAA,EAC5B;AACA,SAAO;AACX;;;AChCO,SAAS,UAAU,IAAI,IAAI,QAAQ;AACtC,MAAI,IAAI;AACJ,WAAO;AAAA,MACH,MAAM,GAAG;AAAA,MACT,aAAa,GAAG,kBAAkB,GAAG;AAAA,MACrC,OAAO,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO,sBAAsB,GAAG,SAAS,wBAAwB,GAAG,SAAS,uBAC9H,uBACA;AAAA,MACN,KAAK,GAAG;AAAA,MACR,YAAY,gBAAgB,GAAG,YAAY,GAAG,YAAY,MAAM;AAAA,MAChE,QAAQ,gBAAgB,GAAG,QAAQ,GAAG,QAAQ,MAAM;AAAA,IACxD;AAAA,EACJ;AACA,UAAQ,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO,qBACzD;AAAA,IACE,GAAG;AAAA,IACH,MAAM,KAAK;AAAA,EACf,IACE;AACV;;;ACrBO,SAAS,cAAc,OAAO;AACjC,SAAO,OAAO,UAAU;AAC5B;AACO,SAAS,cAAc,OAAO;AACjC,SAAO,iBAAiB;AAC5B;AACO,SAAS,YAAY,MAAM;AAC9B,MAAI,cAAc;AAClB,SAAO,YAAY,SAAS,KAAK,aAAa,YAAY,SAAS,eAAe;AAC9E,kBAAc,YAAY;AAAA,EAC9B;AACA,SAAO;AACX;AACO,SAAS,mBAAmB,MAAM;AACrC,SAAO,KAAK,SAAS,KAAK;AAC9B;AACO,SAAS,eAAe,MAAM;AACjC,SAAO,KAAK,SAAS,KAAK;AAC9B;AACO,SAAS,kBAAkB,MAAM;AACpC,SAAO,KAAK,SAAS,KAAK;AAC9B;AACO,SAAS,cAAc,MAAM;AAChC,MAAI,eAAe,IAAI,GAAG;AACtB,WAAO,IAAI,cAAc,KAAK,IAAI;AAAA,EACtC;AACA,MAAI,kBAAkB,IAAI,GAAG;AACzB,WAAO,GAAG,cAAc,KAAK,IAAI;AAAA,EACrC;AACA,SAAO,KAAK,KAAK;AACrB;AACO,IAAI;AAAA,CACV,SAAUE,aAAY;AACnB,EAAAA,YAAWA,YAAW,sBAAsB,MAAM;AAClD,EAAAA,YAAWA,YAAW,gBAAgB,KAAK;AAC3C,EAAAA,YAAWA,YAAW,sBAAsB,KAAK;AACrD,GAAG,eAAe,aAAa,CAAC,EAAE;AAC3B,SAAS,wBAAwB,GAAG,GAAG;AAC1C,MAAI,KAAK,QAAQ,KAAK,MAAM;AACxB,WAAO,WAAW;AAAA,EACtB;AACA,MAAI,KAAK,MAAM;AACX,WAAO,WAAW;AAAA,EACtB;AACA,MAAI,KAAK,MAAM;AACX,WAAO,WAAW;AAAA,EACtB;AACA,MAAI,IAAI;AACJ,WAAO,WAAW;AACtB,MAAI,IAAI;AACJ,WAAO,WAAW;AACtB,SAAO,WAAW;AACtB;;;ACjDA,SAAS,mBAAmB,WAAW,YAAY,QAAQ;AACvD,QAAM,SAAS,UAAU,KAAK,WAAS,MAAM,KAAK,UAAU,WAAW,KAAK,KAAK;AACjF,MAAI,UAAU,EAAE,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO,uBAAuB;AAC1F,UAAM,KAAK,YAAY,OAAO,IAAI;AAClC,UAAM,KAAK,YAAY,WAAW,IAAI;AACtC,QAAI,GAAG,KAAK,UAAU,GAAG,KAAK,OAAO;AACjC,YAAM,IAAI,MAAM,UAAU,WAAW,KAAK,8DAA8D,GAAG,KAAK,2CAA2C,GAAG,KAAK,QAAQ;AAAA,IAC/K;AAAA,EACJ;AACA,SAAO,CAAC,CAAC;AACb;AACO,SAAS,YAAY,MAAM,IAAI,IAAI,QAAQ;AAC9C,QAAM,SAAS,CAAC;AAChB,MAAI,MAAM,MAAM;AACZ,WAAO,KAAK,GAAG,EAAE;AAAA,EACrB;AACA,MAAI,MAAM,MAAM;AACZ,eAAW,SAAS,IAAI;AACpB,UAAI,mBAAmB,QAAQ,OAAO,MAAM,GAAG;AAC3C,cAAM,WAAW,OAAO,KAAK,CAAC,MAAM,EAAE,KAAK,UAAU,MAAM,KAAK,KAAK;AACrE,YAAI,EAAE,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO,uBAAuB;AAChF,cAAI,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO,iBAAiB;AACxE,6BAAiB,MAAM,UAAU,OAAO,KAAK;AAAA,UACjD,OACK;AACD,6BAAiB,MAAM,UAAU,OAAO,IAAI;AAAA,UAChD;AACA,cAAI,kBAAkB,MAAM,IAAI,KAAK,CAAC,kBAAkB,SAAS,IAAI,GAAG;AACpE,qBAAS,OAAO,MAAM;AAAA,UAC1B;AAAA,QACJ;AACA,iBAAS,YAAY,eAAe,MAAM,gBAAgB,CAAC,GAAG,SAAS,aAAa,CAAC,GAAG,MAAM;AAC9F,iBAAS,aAAa,gBAAgB,MAAM,YAAY,SAAS,YAAY,MAAM;AACnF,iBAAS,cAAc,MAAM,eAAe,SAAS;AAAA,MACzD,OACK;AACD,eAAO,KAAK,KAAK;AAAA,MACrB;AAAA,IACJ;AAAA,EACJ;AACA,MAAI,UAAU,OAAO,MAAM;AACvB,WAAO,KAAK,YAAY;AAAA,EAC5B;AACA,MAAI,UAAU,OAAO,YAAY;AAC7B,UAAM,aAAa,OAAO;AAC1B,WAAO,OAAO,OAAO,WAAS,CAAC,WAAW,SAAS,GAAG,KAAK,KAAK,SAAS,MAAM,KAAK,OAAO,CAAC;AAAA,EAChG;AACA,SAAO;AACX;AACA,SAAS,iBAAiB,MAAM,GAAG,GAAG,oBAAoB,OAAO;AAC7D,QAAM,QAAQ,cAAc,EAAE,IAAI;AAClC,QAAM,QAAQ,cAAc,EAAE,IAAI;AAClC,MAAI,UAAU,SAAS,CAAC,uBAAuB,EAAE,MAAM,EAAE,MAAM,iBAAiB,GAAG;AAC/E,UAAM,IAAI,MAAM,UAAU,KAAK,KAAK,SAAS,EAAE,KAAK,6BAA6B,cAAc,QAAQ;AAAA,EAC3G;AACJ;AACA,SAAS,uBAAuB,SAAS,SAAS,oBAAoB,OAAO;AAEzE,MAAI,CAAC,mBAAmB,OAAO,KAAK,CAAC,mBAAmB,OAAO,GAAG;AAC9D,WAAO,QAAQ,SAAS,MAAM,QAAQ,SAAS;AAAA,EACnD;AAEA,MAAI,kBAAkB,OAAO,GAAG;AAC5B,UAAM,SAAS,kBAAkB,OAAO,IAAI,QAAQ,OAAO;AAC3D,WAAO,uBAAuB,QAAQ,QAAQ,IAAI;AAAA,EACtD;AAEA,MAAI,kBAAkB,OAAO,GAAG;AAC5B,WAAO,uBAAuB,SAAS,SAAS,iBAAiB;AAAA,EACrE;AAEA,MAAI,eAAe,OAAO,GAAG;AACzB,WAAS,eAAe,OAAO,KAAK,uBAAuB,QAAQ,MAAM,QAAQ,IAAI,KAChF,kBAAkB,OAAO,KAAK,uBAAuB,SAAS,QAAQ,OAAO;AAAA,EACtF;AACA,SAAO;AACX;;;AC7EO,SAAS,eAAe,MAAM,cAAc,QAAQ;AACvD,MAAI,cAAc;AACd,QAAI;AACA,aAAO;AAAA,QACH,MAAM,KAAK;AAAA,QACX,aAAa,KAAK,kBAAkB,aAAa;AAAA,QACjD,OAAO,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO,sBAC1D,KAAK,SAAS,+BACd,aAAa,SAAS,8BACpB,8BACA;AAAA,QACN,KAAK,KAAK;AAAA,QACV,QAAQ,YAAY,MAAM,KAAK,QAAQ,aAAa,QAAQ,MAAM;AAAA,QAClE,YAAY,gBAAgB,KAAK,YAAY,aAAa,YAAY,MAAM;AAAA,MAChF;AAAA,IACJ,SACO,GAAP;AACI,YAAM,IAAI,MAAM,uCAAuC,KAAK,KAAK,WAAW,EAAE,SAAS;AAAA,IAC3F;AAAA,EACJ;AACA,UAAQ,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO,qBACzD;AAAA,IACE,GAAG;AAAA,IACH,MAAM,KAAK;AAAA,EACf,IACE;AACV;;;ACzBO,SAAS,eAAe,MAAM,cAAc,QAAQ;AACvD,MAAI,cAAc;AACd,QAAI;AACA,aAAO;AAAA,QACH,MAAM,KAAK;AAAA,QACX,aAAa,KAAK,kBAAkB,aAAa;AAAA,QACjD,OAAO,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO,sBAC1D,KAAK,SAAS,6BACd,aAAa,SAAS,4BACpB,4BACA;AAAA,QACN,KAAK,KAAK;AAAA,QACV,QAAQ,YAAY,MAAM,KAAK,QAAQ,aAAa,QAAQ,MAAM;AAAA,QAClE,YAAY,gBAAgB,KAAK,YAAY,aAAa,YAAY,MAAM;AAAA,QAC5E,YAAY,KAAK,gBACX,oBAAoB,KAAK,eAAe,aAAa,eAAe,MAAM,IAC1E;AAAA,MACV;AAAA,IACJ,SACO,GAAP;AACI,YAAM,IAAI,MAAM,sCAAsC,KAAK,KAAK,WAAW,EAAE,SAAS;AAAA,IAC1F;AAAA,EACJ;AACA,UAAQ,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO,qBACzD;AAAA,IACE,GAAG;AAAA,IACH,MAAM,KAAK;AAAA,EACf,IACE;AACV;;;AChCA,SAAS,cAAc,KAAK,OAAO;AAC/B,SAAO,CAAC,CAAC,IAAI,KAAK,OAAK,EAAE,KAAK,UAAU,MAAM,KAAK,KAAK;AAC5D;AACO,SAAS,oBAAoB,QAAQ,CAAC,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC,GAAG;AACtE,QAAM,SAAS,CAAC,GAAG,QAAQ,GAAG,MAAM,OAAO,OAAK,CAAC,cAAc,QAAQ,CAAC,CAAC,CAAC;AAC1E,MAAI,UAAU,OAAO,MAAM;AACvB,WAAO,KAAK,YAAY;AAAA,EAC5B;AACA,SAAO;AACX;;;ACNO,SAAS,UAAU,MAAM,cAAc,QAAQ;AAClD,MAAI,cAAc;AACd,QAAI;AACA,aAAO;AAAA,QACH,MAAM,KAAK;AAAA,QACX,aAAa,KAAK,kBAAkB,aAAa;AAAA,QACjD,OAAO,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO,sBAC1D,KAAK,SAAS,0BACd,aAAa,SAAS,yBACpB,yBACA;AAAA,QACN,KAAK,KAAK;AAAA,QACV,QAAQ,YAAY,MAAM,KAAK,QAAQ,aAAa,QAAQ,MAAM;AAAA,QAClE,YAAY,gBAAgB,KAAK,YAAY,aAAa,YAAY,MAAM;AAAA,QAC5E,YAAY,oBAAoB,KAAK,YAAY,aAAa,YAAY,MAAM;AAAA,MACpF;AAAA,IACJ,SACO,GAAP;AACI,YAAM,IAAI,MAAM,iCAAiC,KAAK,KAAK,WAAW,EAAE,SAAS;AAAA,IACrF;AAAA,EACJ;AACA,UAAQ,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO,qBACzD;AAAA,IACE,GAAG;AAAA,IACH,MAAM,KAAK;AAAA,EACf,IACE;AACV;;;AC7BO,SAAS,YAAY,MAAM,cAAc,QAAQ;AACpD,MAAI,cAAc;AACd,WAAO;AAAA,MACH,MAAM,KAAK;AAAA,MACX,aAAa,KAAK,kBAAkB,aAAa;AAAA,MACjD,OAAO,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO,sBAC1D,KAAK,SAAS,0BACd,aAAa,SAAS,yBACpB,yBACA;AAAA,MACN,KAAK,KAAK;AAAA,MACV,YAAY,gBAAgB,KAAK,YAAY,aAAa,YAAY,MAAM;AAAA,IAChF;AAAA,EACJ;AACA,UAAQ,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO,qBACzD;AAAA,IACE,GAAG;AAAA,IACH,MAAM,KAAK;AAAA,EACf,IACE;AACV;;;ACnBO,SAAS,WAAW,OAAO,QAAQ,QAAQ;AAC9C,MAAI,QAAQ;AACR,WAAO;AAAA,MACH,MAAM,MAAM;AAAA,MACZ,aAAa,MAAM,kBAAkB,OAAO;AAAA,MAE5C,YAAY,gBAAgB,MAAM,YAAY,OAAO,YAAY,MAAM;AAAA,MACvE,OAAO,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO,sBAAsB,MAAM,SAAS,yBAAyB,OAAO,SAAS,wBACtI,KAAK,wBACL,KAAK;AAAA,MACX,KAAK,MAAM;AAAA,MACX,OAAO,oBAAoB,MAAM,OAAO,OAAO,OAAO,MAAM;AAAA,IAChE;AAAA,EACJ;AACA,UAAQ,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO,qBACzD;AAAA,IACE,GAAG;AAAA,IACH,MAAM,KAAK;AAAA,EACf,IACE;AACV;;;ACrBO,IAAM,kCAAkC;AAAA,EAC3C,OAAO;AAAA,EACP,UAAU;AAAA,EACV,cAAc;AAClB;AACA,SAAS,oBAAoB,aAAa,CAAC,GAAG,qBAAqB,CAAC,GAAG;AACnE,QAAM,kBAAkB,CAAC;AACzB,aAAW,cAAc,iCAAiC;AACtD,UAAM,SAAS,WAAW,KAAK,OAAK,EAAE,cAAc,UAAU,KAAK,mBAAmB,KAAK,OAAK,EAAE,cAAc,UAAU;AAC1H,QAAI,QAAQ;AACR,sBAAgB,KAAK,MAAM;AAAA,IAC/B;AAAA,EACJ;AACA,SAAO;AACX;AACO,SAAS,gBAAgB,MAAM,cAAc,QAAQ;AACxD,MAAI,cAAc;AACd,WAAO;AAAA,MACH,MAAM,KAAK,SAAS,KAAK,qBAAqB,aAAa,SAAS,KAAK,oBACnE,KAAK,oBACL,KAAK;AAAA,MACX,aAAa,KAAK,kBAAkB,aAAa;AAAA,MACjD,YAAY,gBAAgB,KAAK,YAAY,aAAa,YAAY,MAAM;AAAA,MAC5E,gBAAgB,oBAAoB,KAAK,gBAAgB,aAAa,cAAc;AAAA,IACxF;AAAA,EACJ;AACA,UAAS,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO,qBAC1D;AAAA,IACE,GAAG;AAAA,IACH,MAAM,KAAK;AAAA,EACf,IACE;AACV;;;ACxBO,IAAM,kBAAkB;AACxB,SAAS,sBAAsB,gBAAgB;AAClD,SAAO,UAAU;AACrB;AACO,SAAS,kBAAkB,OAAO,QAAQ;AAC7C,MAAIC,KAAI,IAAI;AACZ,QAAM,kBAAkB,CAAC;AACzB,aAAW,kBAAkB,OAAO;AAChC,QAAI,sBAAsB,cAAc,GAAG;AACvC,YAAM,QAAQA,MAAK,eAAe,UAAU,QAAQA,QAAO,SAAS,SAASA,IAAG;AAChF,UAAI,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO,qBAAqB;AAC5E,uBAAe,cAAc;AAAA,MACjC;AACA,UAAI,QAAQ,MAAM;AACd;AAAA,MACJ;AACA,YAAM,KAAK,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO,gBAAgB,QAAQ,OAAO,SAAS,SAAS,GAAG,SAAS,OAAO,IAAI,QAAQ,KAAK,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO,gBAAgB,QAAQ,OAAO,SAAS,SAAS,GAAG,SAAS,IAAI,IAAI;AAC/Q,eAAO,gBAAgB;AAAA,MAC3B,OACK;AACD,gBAAQ,eAAe;AAAA,eACd,KAAK;AAAA,eACL,KAAK;AACN,4BAAgB,QAAQ,UAAU,gBAAgB,gBAAgB,OAAO,MAAM;AAC/E;AAAA,eACC,KAAK;AAAA,eACL,KAAK;AACN,4BAAgB,QAAQ,UAAU,gBAAgB,gBAAgB,OAAO,MAAM;AAC/E;AAAA,eACC,KAAK;AAAA,eACL,KAAK;AACN,4BAAgB,QAAQ,WAAW,gBAAgB,gBAAgB,OAAO,MAAM;AAChF;AAAA,eACC,KAAK;AAAA,eACL,KAAK;AACN,4BAAgB,QAAQ,YAAY,gBAAgB,gBAAgB,OAAO,MAAM;AACjF;AAAA,eACC,KAAK;AAAA,eACL,KAAK;AACN,4BAAgB,QAAQ,eAAe,gBAAgB,gBAAgB,OAAO,MAAM;AACpF;AAAA,eACC,KAAK;AAAA,eACL,KAAK;AACN,4BAAgB,QAAQ,eAAe,gBAAgB,gBAAgB,OAAO,MAAM;AACpF;AAAA,eACC,KAAK;AACN,4BAAgB,QAAQ,eAAe,gBAAgB,gBAAgB,KAAK;AAC5E;AAAA;AAAA,MAEZ;AAAA,IACJ,WACS,eAAe,SAAS,KAAK,qBAAqB,eAAe,SAAS,KAAK,kBAAkB;AACtG,sBAAgB,mBAAmB,gBAAgB,gBAAgB,gBAAgB,kBAAkB,MAAM;AAAA,IAC/G;AAAA,EACJ;AACA,SAAO;AACX;;;AC7DO,SAAS,cAAc,YAAY,QAAQ;AAC9C,gBAAc;AACd,QAAM,MAAM;AAAA,IACR,MAAM,KAAK;AAAA,IACX,aAAa,kBAAkB,YAAY;AAAA,MACvC,qBAAqB;AAAA,MACrB,uBAAuB;AAAA,MACvB,iBAAiB;AAAA,MACjB,qBAAqB;AAAA,MACrB,GAAG;AAAA,IACP,CAAC;AAAA,EACL;AACA,MAAI;AACJ,MAAI,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO,qBAAqB;AAC5E,aAAS,kBAAkB,GAAG;AAAA,EAClC,OACK;AACD,aAAS;AAAA,EACb;AACA,gBAAc;AACd,SAAO;AACX;AACA,SAAS,iBAAiB,YAAY,SAAS,WAAW,CAAC,GAAG,qBAAqB,oBAAI,IAAI,GAAG;AAC1F,MAAI,cAAc,CAAC,mBAAmB,IAAI,UAAU,GAAG;AACnD,uBAAmB,IAAI,UAAU;AACjC,QAAI,OAAO,eAAe,YAAY;AAClC,uBAAiB,WAAW,GAAG,SAAS,UAAU,kBAAkB;AAAA,IACxE,WACS,MAAM,QAAQ,UAAU,GAAG;AAChC,iBAAW,QAAQ,YAAY;AAC3B,yBAAiB,MAAM,SAAS,UAAU,kBAAkB;AAAA,MAChE;AAAA,IACJ,WACS,SAAS,UAAU,GAAG;AAC3B,YAAM,eAAe,0BAA0B,YAAY,OAAO;AAClE,uBAAiB,aAAa,aAAa,SAAS,UAAU,kBAAkB;AAAA,IACpF,WACS,cAAc,UAAU,KAAK,cAAc,UAAU,GAAG;AAC7D,YAAM,eAAe,MAAM,YAAY,OAAO;AAC9C,uBAAiB,aAAa,aAAa,SAAS,UAAU,kBAAkB;AAAA,IACpF,WACS,OAAO,eAAe,YAAY,iBAAiB,UAAU,GAAG;AACrE,eAAS,KAAK,UAAU;AAAA,IAC5B,WACS,eAAe,UAAU,GAAG;AACjC,uBAAiB,WAAW,aAAa,SAAS,UAAU,kBAAkB;AAAA,IAClF,OACK;AACD,YAAM,IAAI,MAAM,6EAA6E,OAAO,YAAY;AAAA,IACpH;AAAA,EACJ;AACA,SAAO;AACX;AACO,SAAS,kBAAkB,YAAY,QAAQ;AAClD,MAAIC,KAAI,IAAI;AACZ,gBAAc;AACd,QAAM,WAAW,iBAAiB,YAAY,MAAM;AACpD,QAAM,cAAc,kBAAkB,UAAU,MAAM;AACtD,MAAI,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO,qBAAqB;AAE5E,UAAM,YAAY,YAAY,oBAAoB;AAAA,MAC9C,MAAM,KAAK;AAAA,MACX,gBAAgB,CAAC;AAAA,IACrB;AACA,UAAM,iBAAiB,UAAU;AACjC,eAAW,qBAAqB,iCAAiC;AAC7D,YAAM,gBAAgB,eAAe,KAAK,mBAAiB,cAAc,cAAc,iBAAiB;AACxG,UAAI,CAAC,eAAe;AAChB,cAAM,uBAAuB,gCAAgC;AAC7D,cAAM,2BAA2B,YAAY;AAC7C,YAAI,4BAA4B,QAAQ,yBAAyB,QAAQ,MAAM;AAC3E,yBAAe,KAAK;AAAA,YAChB,MAAM,KAAK;AAAA,YACX,MAAM;AAAA,cACF,MAAM,KAAK;AAAA,cACX,MAAM,yBAAyB;AAAA,YACnC;AAAA,YACA,WAAW;AAAA,UACf,CAAC;AAAA,QACL;AAAA,MACJ;AAAA,IACJ;AACA,UAAMA,MAAK,cAAc,QAAQ,cAAc,SAAS,SAAS,UAAU,oBAAoB,QAAQA,QAAO,SAAS,SAASA,IAAG,WAAW,QAAQ,UAAU,eAAe,SAAS,GAAG;AACvL,kBAAY,mBAAmB;AAAA,IACnC;AAAA,EACJ;AACA,OAAK,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO,0BAA0B,GAAG,MAAM,KAAK,YAAY,sBAAsB,QAAQ,OAAO,SAAS,SAAS,GAAG,oBAAoB,QAAQ,OAAO,SAAS,SAAS,GAAG,SAAS;AACvO,gBAAY,mBAAmB;AAAA,MAC3B,MAAM,KAAK;AAAA,MACX,gBAAgB;AAAA,QACZ;AAAA,UACI,MAAM,KAAK;AAAA,UACX,WAAW;AAAA,UACX,MAAM;AAAA,YACF,MAAM,KAAK;AAAA,YACX,MAAM;AAAA,cACF,MAAM,KAAK;AAAA,cACX,OAAO;AAAA,YACX;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACA,QAAM,wBAAwB,OAAO,OAAO,WAAW;AACvD,MAAI,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO,MAAM;AAC7D,UAAM,SAAS,OAAO,OAAO,SAAS,aAAa,OAAO,OAAO;AACjE,0BAAsB,KAAK,CAAC,GAAG,MAAM;AAAE,UAAIA,KAAIC;AAAI,aAAO,QAAQD,MAAK,EAAE,UAAU,QAAQA,QAAO,SAAS,SAASA,IAAG,QAAQC,MAAK,EAAE,UAAU,QAAQA,QAAO,SAAS,SAASA,IAAG,KAAK;AAAA,IAAG,CAAC;AAAA,EACjM;AACA,SAAO;AACX;;;ACjHO,SAAS,gBAAgB,YAAY;AACxC,SAAO,UAAU,UAAU;AAC/B;AACA,SAAS,qBAAqB,KAAK,YAAY;AAC3C,MAAI,CAAC,KAAK;AACN;AAAA,EACJ;AACA,MAAI,aAAa,UAAU,CAAC,IAAI,cAAc,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;AACvE;AACO,SAAS,gBAAgB,QAAQ,YAAY;AAChD,uBAAqB,QAAQ,WAAW,gBAAgB;AACxD,aAAW,CAAC,UAAU,IAAI,KAAK,OAAO,QAAQ,WAAW,SAAS,CAAC,CAAC,GAAG;AACnE,UAAM,OAAO,OAAO,QAAQ,QAAQ;AACpC,QAAI,MAAM;AACN,2BAAqB,MAAM,KAAK,UAAU;AAC1C,UAAI,KAAK,SAAS,YAAY,KAAK,SAAS,aAAa;AACrD,mBAAW,CAAC,WAAW,SAAS,KAAK,OAAO,QAAQ,KAAK,MAAM,GAAG;AAC9D,gBAAM,QAAQ,KAAK,UAAU,EAAE;AAC/B,cAAI,OAAO;AACP,iCAAqB,OAAO,UAAU,UAAU;AAChD,uBAAW,CAAC,KAAK,OAAO,KAAK,OAAO,QAAQ,UAAU,SAAS,GAAG;AAC9D,mCAAqB,MAAM,KAAK,KAAK,OAAK,EAAE,SAAS,GAAG,GAAG,OAAO;AAAA,YACtE;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ,WACS,KAAK,SAAS,SAAS;AAC5B,mBAAW,CAAC,WAAW,SAAS,KAAK,OAAO,QAAQ,KAAK,MAAM,GAAG;AAC9D,gBAAM,QAAQ,KAAK,UAAU,EAAE;AAC/B,+BAAqB,OAAO,UAAU,UAAU;AAAA,QACpD;AAAA,MACJ,WACS,KAAK,SAAS,QAAQ;AAC3B,mBAAW,CAAC,WAAW,SAAS,KAAK,OAAO,QAAQ,KAAK,MAAM,GAAG;AAC9D,gBAAM,QAAQ,KAAK,SAAS,SAAS;AACrC,+BAAqB,OAAO,SAAS;AAAA,QACzC;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACA,SAAO;AACX;;;ACKO,SAAS,qBAAqB,EAAE,UAAU,YAAY,CAAC,GAAG,4BAA4B,CAAC,GAAG,iCAAiC,OAAO,yBAAyB,OAAO,qBAAqB,aAAa,GAAG;AAE1M,MAAI,OAAO,8BAA8B,UAAU;AAC/C,UAAM,IAAI,MAAM,sDAAsD;AAAA,EAC1E;AACA,MAAI,CAAC,UAAU;AACX,UAAM,IAAI,MAAM,uBAAuB;AAAA,EAC3C;AACA,MAAI;AACJ,MAAI,SAAS,QAAQ,GAAG;AACpB,aAAS;AAAA,EACb,WACS,iBAAiB,QAAQ,iBAAiB,SAAS,SAAS,aAAa,qBAAqB;AACnG,UAAM,iBAAiB,cAAc,UAAU;AAAA,MAC3C,GAAG;AAAA,MACH,qBAAqB;AAAA,IACzB,CAAC;AACD,aAAS,YAAY,gBAAgB,YAAY;AAAA,EACrD,OACK;AACD,UAAM,iBAAiB,cAAc,UAAU,YAAY;AAC3D,aAAS,eAAe,gBAAgB,YAAY;AAAA,EACxD;AAEA,WAAS,qBAAqB;AAAA,IAC1B;AAAA,IACA,WAAW,eAAe,SAAS;AAAA,IACnC;AAAA,IACA;AAAA,IACA;AAAA,EACJ,CAAC;AACD,MAAI,OAAO,KAAK,yBAAyB,EAAE,SAAS,GAAG;AACnD,2BAAuB,QAAQ,yBAAyB;AAAA,EAC5D;AACA,MAAI,kBAAkB;AAClB,uBAAmB,gBAAgB,QAAQ,gBAAgB,CAAC;AAC5D,oBAAgB,QAAQ,gBAAgB;AAAA,EAC5C;AACA,SAAO;AACX;;;AClFA,uBAAkC;;;ACJlC,eAAsB,eAAe,EAAE,SAAAC,UAAS,QAAQ,WAAW,UAAU,qBAAsB,GAAG;AAElG,QAAMC,YAAW,UAAU,MAAM,OAAO,KAAK;AAE7C,YAAU,SAAS,UAAU,QAAQA,SAAQ;AAE7C,QAAM,eAAgB,MAAM,UAAU,eAAe;AACrD,QAAM,gBAAgB;AAAA,IAClB,QAAQ,UAAU;AAAA,IAClB,UAAAA;AAAA,IACA;AAAA,IACA,gBAAgB,OAAO;AAAA,IACvB,eAAe,OAAO;AAAA,EAC1B;AAEA,QAAM,YAAY,gBAAgBA,WAAU,OAAO,aAAa;AAEhE,QAAM,aAAa,cAAc,QAAQ,cAAc,SAAS,SAAS,UAAU,eAAe,iBAC5F,UAAU,YACV,UAAU;AAEhB,QAAM,SAAS,MAAM,UAAU,aAAa;AAC5C,MAAI;AACJ,aAAW,uBAAuB,sBAAsB;AACpD,UAAM,oBAAoB;AAAA,MACtB,SAAAD;AAAA,MACA;AAAA,MACA;AAAA,MACA,mBAAmB,oBAAoB;AACnC,0BAAkB;AAAA,MACtB;AAAA,IACJ,CAAC;AAAA,EACL;AAEA,MAAI,CAAC,iBAAiB;AAClB,WAAO,IAAI,SAAS,SAAS,MAAM;AAAA,MAC/B,QAAQ;AAAA,MACR,YAAY;AAAA,IAChB,CAAC;AAAA,EACL;AACA,SAAO,gBAAgB,QAAQ,QAAQ;AAC3C;;;AC1CO,SAAS,kCAAkCE,UAAS,aAAa;AACpE,MAAIC,KAAI;AACR,QAAM,UAAU,CAAC;AACjB,MAAI,gBAAgB,OAAO;AACvB,WAAO;AAAA,EACX;AAEA,MAAI,YAAY,UAAU,QACtB,YAAY,OAAO,WAAW,KAC9B,YAAY,OAAO,SAAS,GAAG,GAAG;AAClC,UAAM,gBAAgBD,SAAQ,QAAQ,IAAI,QAAQ;AAElD,QAAI,iBAAiB,MAAM;AACvB,cAAQ,iCAAiC;AAEzC,cAAQ,UAAU;AAAA,IACtB,OACK;AACD,cAAQ,iCAAiC;AAAA,IAC7C;AAAA,EACJ,WACS,OAAO,YAAY,WAAW,UAAU;AAE7C,YAAQ,iCAAiC,YAAY;AAAA,EACzD,WACS,MAAM,QAAQ,YAAY,MAAM,GAAG;AAExC,QAAI,YAAY,OAAO,WAAW,GAAG;AACjC,cAAQ,iCAAiC,YAAY,OAAO;AAAA,IAChE,OACK;AACD,YAAM,gBAAgBA,SAAQ,QAAQ,IAAI,QAAQ;AAClD,UAAI,iBAAiB,QAAQ,YAAY,OAAO,SAAS,aAAa,GAAG;AAErE,gBAAQ,iCAAiC;AAEzC,gBAAQ,UAAU;AAAA,MACtB,OACK;AAED,gBAAQ,iCAAiC;AAAA,MAC7C;AAAA,IACJ;AAAA,EACJ;AACA,OAAKC,MAAK,YAAY,aAAa,QAAQA,QAAO,SAAS,SAASA,IAAG,QAAQ;AAC3E,YAAQ,kCAAkC,YAAY,QAAQ,KAAK,IAAI;AAAA,EAC3E,OACK;AACD,UAAM,gBAAgBD,SAAQ,QAAQ,IAAI,+BAA+B;AACzE,QAAI,eAAe;AACf,cAAQ,kCAAkC;AAAA,IAC9C;AAAA,EACJ;AACA,OAAK,KAAK,YAAY,oBAAoB,QAAQ,OAAO,SAAS,SAAS,GAAG,QAAQ;AAClF,YAAQ,kCACJ,YAAY,eAAe,KAAK,IAAI;AAAA,EAC5C,OACK;AACD,UAAM,iBAAiBA,SAAQ,QAAQ,IAAI,gCAAgC;AAC3E,QAAI,gBAAgB;AAChB,cAAQ,kCAAkC;AAC1C,UAAI,QAAQ,SAAS;AACjB,gBAAQ,WAAW;AAAA,MACvB;AACA,cAAQ,UAAU;AAAA,IACtB;AAAA,EACJ;AACA,MAAI,YAAY,eAAe,MAAM;AACjC,QAAI,YAAY,gBAAgB,MAAM;AAClC,cAAQ,sCAAsC;AAAA,IAClD;AAAA,EACJ,WACS,QAAQ,mCAAmC,KAAK;AACrD,YAAQ,sCAAsC;AAAA,EAClD;AACA,MAAI,YAAY,gBAAgB;AAC5B,YAAQ,mCACJ,YAAY,eAAe,KAAK,IAAI;AAAA,EAC5C;AACA,MAAI,YAAY,QAAQ;AACpB,YAAQ,4BAA4B,YAAY,OAAO,SAAS;AAAA,EACpE;AACA,SAAO;AACX;AACA,eAAe,uBAAuBA,UAAS,oBAAoB,eAAe;AAC9E,QAAM,cAAc,MAAM,mBAAmBA,UAAS,aAAa;AACnE,SAAO,kCAAkCA,UAAS,WAAW;AACjE;AACO,SAAS,QAAQ,SAAS;AAC7B,MAAI,qBAAqB,OAAO,CAAC;AACjC,MAAI,WAAW,MAAM;AACjB,QAAI,OAAO,YAAY,YAAY;AAC/B,2BAAqB;AAAA,IACzB,WACS,OAAO,YAAY,UAAU;AAClC,YAAM,cAAc;AAAA,QAChB,GAAG;AAAA,MACP;AACA,2BAAqB,MAAM;AAAA,IAC/B,WACS,YAAY,OAAO;AACxB,2BAAqB,MAAM;AAAA,IAC/B;AAAA,EACJ;AACA,SAAO;AAAA,IACH,MAAM,UAAU,EAAE,SAAAA,UAAS,eAAe,UAAU,YAAY,GAAG;AAC/D,UAAIA,SAAQ,OAAO,YAAY,MAAM,WAAW;AAC5C,cAAM,UAAU,MAAM,uBAAuBA,UAAS,oBAAoB,aAAa;AACvF,cAAM,WAAW,IAAI,SAAS,SAAS,MAAM;AAAA,UACzC,QAAQ;AAAA,UACR,SAAS;AAAA,YACL,GAAG;AAAA,YACH,kBAAkB;AAAA,UACtB;AAAA,QACJ,CAAC;AACD,oBAAY,QAAQ;AAAA,MACxB;AAAA,IACJ;AAAA,IACA,MAAM,WAAW,EAAE,SAAAA,UAAS,eAAe,SAAS,GAAG;AACnD,YAAM,UAAU,MAAM,uBAAuBA,UAAS,oBAAoB,aAAa;AACvF,iBAAW,cAAc,SAAS;AAC9B,iBAAS,QAAQ,IAAI,YAAY,QAAQ,WAAW;AAAA,MACxD;AAAA,IACJ;AAAA,EACJ;AACJ;;;AC5HO,SAAS,eAAe,SAAS;AACpC,QAAM,MAAM,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,OAAO,KAAK,IAAI,EAAE,SAAS;AACjG,QAAM,UAAU,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,WAAW;AACrF,SAAO;AAAA,IACH,MAAM,UAAU,EAAE,SAAAE,UAAS,aAAa,SAAS,GAAG;AAChD,YAAM,cAAcA,SAAQ,IAAI,MAAM,GAAG,EAAE;AAC3C,UAAI,YAAY,SAAS,SAAS,GAAG;AACjC,eAAO,MAAM,yBAAyB;AACtC,cAAM,WAAW,IAAI,SAAS,SAAS,KAAK,UAAU;AAAA,UAClD,SAAS;AAAA,QACb,CAAC,GAAG;AAAA,UACA,QAAQ;AAAA,UACR,SAAS;AAAA,YACL,gBAAgB;AAAA,YAChB,aAAa;AAAA,UACjB;AAAA,QACJ,CAAC;AACD,oBAAY,QAAQ;AAAA,MACxB,WACS,YAAY,SAAS,YAAY,GAAG;AACzC,eAAO,MAAM,4BAA4B;AACzC,cAAM,oBAAoB,MAAM,SAAS,MAAMA,SAAQ,IAAI,QAAQ,cAAc,SAAS,CAAC;AAC3F,cAAM,EAAE,QAAQ,IAAI,MAAM,kBAAkB,KAAK;AACjD,YAAI,kBAAkB,WAAW,OAC7B,kBAAkB,QAAQ,IAAI,WAAW,MAAM,MAC/C,YAAY,SAAS;AACrB,gBAAM,WAAW,IAAI,SAAS,SAAS,KAAK,UAAU;AAAA,YAClD,SAAS;AAAA,UACb,CAAC,GAAG;AAAA,YACA,QAAQ;AAAA,YACR,SAAS;AAAA,cACL,gBAAgB;AAAA,YACpB;AAAA,UACJ,CAAC;AACD,sBAAY,QAAQ;AAAA,QACxB,OACK;AACD,gBAAM,mBAAmB,sCAAsC,kBAAkB,QAAQ;AAAA,QAC7F;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACJ;;;AC3CA,IAAO,uBAAQ;;;ACCR,SAAS,qBAAqB,EAAE,SAAS,OAAO,GAAG;AACtD,MAAIC;AACJ,SAAO,WAAW,SAAS,CAAC,GAAGA,MAAK,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,IAAI,QAAQ,OAAO,QAAQA,QAAO,SAAS,SAASA,IAAG,SAAS,WAAW;AAC7K;AACO,IAAM,iBAAiB,CAAC,SAAS,qBACnC,QAAQ,cAAc,SAAS,QAAQ,SAAS,SAAS,SAAS,KAAK,UAAU,eAAe,EAChG,QAAQ,YAAY,KAAK,UAAU,SAAS,QAAQ,SAAS,SAAS,OAAO,CAAC,CAAC,CAAC;AAC9E,SAAS,YAAY,QAAQ;AAChC,MAAIA,KAAI;AACR,QAAM,UAAUA,MAAK,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO,YAAY,QAAQA,QAAO,SAASA,MAAK;AACrH,MAAI;AACJ,MAAI,QAAQ,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO,aAAa,YAAY;AACxF,6BAAyB,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO;AAAA,EACpF,WACS,QAAQ,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO,aAAa,UAAU;AAC3F,6BAAyB,MAAM,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO;AAAA,EAC1F,YACU,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO,aAAa,OAAO;AACjF,6BAAyB,MAAM;AAAA,EACnC,OACK;AACD,6BAAyB,OAAO,CAAC;AAAA,EACrC;AACA,QAAM,YAAY,KAAK,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO,YAAY,QAAQ,OAAO,SAAS,KAAK;AACvH,SAAO;AAAA,IACH,MAAM,UAAU,EAAE,SAAAC,UAAS,eAAe,UAAU,YAAY,GAAG;AAC/D,YAAM,cAAcA,SAAQ,IAAI,MAAM,GAAG,EAAE;AAC3C,WAAK,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO,aAAa,QAAQ,CAAC,YAAY,SAAS,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO,QAAQ,GAAG;AACrK,eAAO,MAAM,0BAA0B;AACvC,cAAM,WAAW,IAAI,SAAS,SAAS,aAAaA,SAAQ,UAAU,eAAe;AAAA,UACjF,QAAQ;AAAA,UACR,YAAY;AAAA,QAChB,CAAC;AACD,oBAAY,QAAQ;AAAA,MACxB,WACS,qBAAqBA,QAAO,GAAG;AACpC,eAAO,MAAM,oBAAoB;AACjC,cAAM,kBAAkB,uBAAuBA,UAAS,aAAa;AACrE,YAAI,iBAAiB;AACjB,gBAAM,eAAe,MAAM,SAAS;AAAA,YAChC,UAAU,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO;AAAA,YACjE,GAAI,oBAAoB,OAAO,CAAC,IAAI;AAAA,UACxC,CAAC;AACD,gBAAM,WAAW,IAAI,SAAS,SAAS,cAAc;AAAA,YACjD,SAAS;AAAA,cACL,gBAAgB;AAAA,YACpB;AAAA,YACA,QAAQ;AAAA,UACZ,CAAC;AACD,sBAAY,QAAQ;AAAA,QACxB;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACJ;;;ACvDA,IAAM,kBAAkB,MAAM;AACvB,SAAS,iBAAiB,SAAS;AACtC,QAAM,UAAU,QAAQ,SAAS;AACjC,SAAO;AAAA,IACH,eAAe,EAAE,SAAAC,UAAS,iBAAiB,GAAG;AAC1C,UAAI,QAAQA,QAAO,GAAG;AAClB,yBAAiB,SAAS,mBAAmBA,UAAS;AAClD,iBAAO,QAAQ,MAAMA,QAAO;AAAA,QAChC,CAAC;AAAA,MACL;AAAA,IACJ;AAAA,EACJ;AACJ;;;ACZO,SAAS,qBAAqB,aAAa;AAC9C,QAAM,eAAe,IAAI,gBAAgB,WAAW;AACpD,QAAM,gBAAgB,aAAa,IAAI,eAAe,KAAK;AAC3D,QAAM,QAAQ,aAAa,IAAI,OAAO,KAAK;AAC3C,QAAM,eAAe,aAAa,IAAI,WAAW,KAAK;AACtD,QAAM,gBAAgB,aAAa,IAAI,YAAY,KAAK;AACxD,SAAO;AAAA,IACH;AAAA,IACA;AAAA,IACA,WAAW,eAAe,KAAK,MAAM,YAAY,IAAI;AAAA,IACrD,YAAY,gBAAgB,KAAK,MAAM,aAAa,IAAI;AAAA,EAC5D;AACJ;AACO,SAAS,mBAAmBC,UAAS,qBAAqB;AAC7D,QAAM,cAAcA,SAAQ,QAAQ,IAAI,cAAc;AACtD,SAAQ,gBAAgB,uBACpB,CAAC,EAAE,gBAAgB,QAAQ,gBAAgB,SAAS,SAAS,YAAY,WAAW,GAAG,sBAAsB;AACrH;;;AChBO,SAAS,aAAaC,UAAS;AAClC,SAAOA,SAAQ,WAAW;AAC9B;AACO,SAAS,gBAAgBA,UAAS;AACrC,QAAM,CAAC,EAAE,eAAe,IAAIA,SAAQ,IAAI,MAAM,GAAG;AACjD,SAAO,qBAAqB,eAAe;AAC/C;;;ACPO,SAAS,kBAAkBC,UAAS;AACvC,SAAOA,SAAQ,WAAW;AAC9B;AACA,eAAsB,qBAAqBA,UAAS;AAChD,QAAM,cAAc,MAAMA,SAAQ,KAAK;AACvC,SAAO;AAAA,IACH,eAAe,YAAY;AAAA,IAC3B,OAAO,YAAY;AAAA,IACnB,WAAW,YAAY;AAAA,IACvB,YAAY,YAAY;AAAA,EAC5B;AACJ;;;ACXO,SAAS,KAAK,KAAK,MAAM,KAAK;AACpC,OAAK,UAAU,OAAK,KAAK,MAAM,GAAG;AAClC,MAAI,IAAE,GAAG,IAAE,KAAK,QAAQ,IAAE,KAAK,GAAG;AAClC,SAAO,IAAI,GAAG;AACb,QAAI,KAAK;AACT,QAAI,MAAM,eAAe,MAAM,iBAAiB,MAAM;AAAa;AACnE,QAAI,EAAE,KAAM,MAAM,IAAK,MAAO,QAAO,IAAE,EAAE,QAAM,OAAO,OAAS,IAAK,KAAK,KAAG,MAAM,KAAK,CAAC,CAAC,EAAE,KAAG,KAAK,IAAI,QAAQ,GAAG,IAAK,CAAC,IAAI,CAAC;AAAA,EAC9H;AACD;;;ACLO,SAAS,uBAAuBC,UAAS;AAC5C,SAAQA,SAAQ,WAAW,UACvB,mBAAmBA,UAAS,qBAAqB;AACzD;AACA,eAAsB,0BAA0BA,UAAS;AACrD,MAAIC,KAAI;AACR,MAAI;AACJ,MAAI;AACA,kBAAc,MAAMD,SAAQ,SAAS;AAAA,EACzC,SACO,GAAP;AAGI,QAAI,aAAa,SACb,EAAE,QAAQ,WAAW,4BAA4B,GAAG;AACpD,YAAM,mBAAmB,EAAE,SAAS;AAAA,QAChC,YAAY;AAAA,UACR,MAAM;AAAA,YACF,QAAQ;AAAA,UACZ;AAAA,QACJ;AAAA,MACJ,CAAC;AAAA,IACL;AACA,UAAM;AAAA,EACV;AACA,QAAM,kBAAkBC,MAAK,YAAY,IAAI,YAAY,OAAO,QAAQA,QAAO,SAAS,SAASA,IAAG,SAAS,MAAM;AACnH,QAAM,aAAa,KAAK,MAAM,aAAa;AAC3C,QAAM,WAAW,KAAK,YAAY,IAAI,KAAK,OAAO,QAAQ,OAAO,SAAS,SAAS,GAAG,SAAS,MAAM;AACrG,QAAMC,OAAM,KAAK,MAAM,MAAM;AAC7B,aAAW,aAAaA,MAAK;AACzB,UAAM,OAAO,YAAY,IAAI,SAAS;AACtC,UAAM,OAAOA,KAAI;AACjB,eAAW,OAAO,MAAM;AACpB,WAAK,YAAY,KAAK,IAAI;AAAA,IAC9B;AAAA,EACJ;AACA,SAAO;AAAA,IACH,eAAe,WAAW;AAAA,IAC1B,OAAO,WAAW;AAAA,IAClB,WAAW,WAAW;AAAA,IACtB,YAAY,WAAW;AAAA,EAC3B;AACJ;;;AC5CO,SAAS,2BAA2BC,UAAS;AAChD,SAAQA,SAAQ,WAAW,UACvB,mBAAmBA,UAAS,qBAAqB;AACzD;AACA,eAAsB,8BAA8BA,UAAS;AACzD,QAAM,cAAc,MAAMA,SAAQ,KAAK;AACvC,SAAO;AAAA,IACH,OAAO;AAAA,EACX;AACJ;;;ACVO,SAAS,mBAAmB,SAAS;AACxC,QAAM,UAAU,QAAQ,UAAU,MAAM;AACxC,SAAO;AAAA,IACH,gBAAgB,EAAE,SAAAC,UAAS,QAAQ,mBAAmB,GAAG;AACrD,UAAI,QAAQA,UAAS,MAAM,GAAG;AAC1B,2BAAmB,QAAQ,aAAa;AAAA,MAC5C;AAAA,IACJ;AAAA,EACJ;AACJ;;;ACTA,IAAI;AACJ,IAAI,WAAW,QAAQ;AACnB,iBAAe,SAAS,uBAAuB,KAAK;AAChD,WAAO,WAAW,OAAO,KAAK,KAAK,MAAM;AAAA,EAC7C;AACJ,OACK;AACD,QAAM,cAAc,IAAI,YAAY;AACpC,iBAAe,SAAS,4BAA4B,KAAK;AACrD,WAAO,YAAY,OAAO,GAAG;AAAA,EACjC;AACJ;;;ACTO,SAAS,gBAAgBC,UAAS,QAAQ;AAC7C,SAAO,CAACC,iBAAgB,MAAM;AAClC;AACO,SAAS,qBAAqB,iBAAiB,UAAU;AAC5D,QAAM,eAAe,KAAK,UAAU,eAAe;AACnD,QAAM,gBAAgB,aAAa,YAAY;AAC/C,QAAM,cAAc;AAAA,IAChB,gBAAgB;AAAA,IAChB,kBAAkB,cAAc,WAAW,SAAS;AAAA,EACxD;AACA,QAAM,eAAe;AAAA,IACjB,SAAS;AAAA,IACT,QAAQ;AAAA,EACZ;AACA,SAAO,IAAI,SAAS,SAAS,eAAe,YAAY;AAC5D;;;ACfO,SAAS,aAAaC,UAAS,QAAQ;AAC1C,MAAIC;AACJ,SAAQC,iBAAgB,MAAM,KAC1B,CAAC,GAAGD,MAAKD,SAAQ,QAAQ,IAAI,QAAQ,OAAO,QAAQC,QAAO,SAAS,SAASA,IAAG,SAAS,mBAAmB;AACpH;AACO,SAAS,kBAAkB,QAAQ,UAAU;AAChD,QAAM,cAAc;AAAA,IAChB,gBAAgB;AAAA,IAChB,YAAY;AAAA,IACZ,iBAAiB;AAAA,IACjB,oBAAoB;AAAA,EACxB;AACA,QAAM,eAAe;AAAA,IACjB,SAAS;AAAA,IACT,QAAQ;AAAA,EACZ;AACA,MAAI;AACJ,QAAM,iBAAiB,IAAI,SAAS,eAAe;AAAA,IAC/C,QAAQ;AACJ,iBAAW,OAAO,OAAO,eAAe;AAAA,IAC5C;AAAA,IACA,MAAM,KAAK,YAAY;AACnB,YAAM,EAAE,MAAM,MAAM,IAAI,MAAM,SAAS,KAAK;AAC5C,UAAI,SAAS,MAAM;AACf,cAAM,QAAQ,KAAK,UAAU,KAAK;AAClC,mBAAW,QAAQ,aAAa,SAAS;AAAA;AAAA,CAAW,CAAC;AAAA,MACzD;AACA,UAAI,MAAM;AACN,mBAAW,MAAM;AAAA,MACrB;AAAA,IACJ;AAAA,IACA,MAAM,OAAO,GAAG;AACZ,UAAIA;AACJ,cAAQA,MAAK,SAAS,YAAY,QAAQA,QAAO,SAAS,SAASA,IAAG,KAAK,UAAU,CAAC;AAAA,IAC1F;AAAA,EACJ,CAAC;AACD,SAAO,IAAI,SAAS,SAAS,gBAAgB,YAAY;AAC7D;;;ACrCO,SAAS,kBAAkBE,UAAS,QAAQ;AAC/C,MAAIC;AACJ,SAAQC,iBAAgB,MAAM,KAC1B,CAAC,GAAGD,MAAKD,SAAQ,QAAQ,IAAI,QAAQ,OAAO,QAAQC,QAAO,SAAS,SAASA,IAAG,SAAS,iBAAiB;AAClH;AACO,SAAS,uBAAuB,8BAA8B,UAAU;AAC3E,QAAM,cAAc;AAAA,IAChB,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,EACzB;AACA,QAAM,eAAe;AAAA,IACjB,SAAS;AAAA,IACT,QAAQ;AAAA,EACZ;AACA,MAAI;AACJ,QAAM,iBAAiB,IAAI,SAAS,eAAe;AAAA,IAC/C,MAAM,YAAY;AACd,iBAAW,6BAA6B,OAAO,eAAe;AAC9D,iBAAW,QAAQ,aAAa,KAAK,CAAC;AAAA,IAC1C;AAAA,IACA,MAAM,KAAK,YAAY;AACnB,YAAM,EAAE,MAAM,MAAM,IAAI,MAAM,SAAS,KAAK;AAC5C,UAAI,SAAS,MAAM;AACf,mBAAW,QAAQ,aAAa,MAAM,CAAC;AACvC,mBAAW,QAAQ,aAAa,+CAA+C,CAAC;AAChF,mBAAW,QAAQ,aAAa,MAAM,CAAC;AACvC,cAAM,QAAQ,KAAK,UAAU,KAAK;AAClC,cAAM,eAAe,aAAa,KAAK;AACvC,mBAAW,QAAQ,aAAa,qBAAqB,aAAa,UAAU,CAAC;AAC7E,mBAAW,QAAQ,aAAa,MAAM,CAAC;AACvC,mBAAW,QAAQ,aAAa,MAAM,CAAC;AACvC,mBAAW,QAAQ,YAAY;AAC/B,mBAAW,QAAQ,aAAa,MAAM,CAAC;AACvC,mBAAW,QAAQ,aAAa,KAAK,CAAC;AAAA,MAC1C;AACA,UAAI,MAAM;AACN,mBAAW,QAAQ,aAAa,eAAe,CAAC;AAChD,mBAAW,MAAM;AAAA,MACrB;AAAA,IACJ;AAAA,IACA,MAAM,OAAO,GAAG;AACZ,UAAIA;AACJ,cAAQA,MAAK,SAAS,YAAY,QAAQA,QAAO,SAAS,SAASA,IAAG,KAAK,UAAU,CAAC;AAAA,IAC1F;AAAA,EACJ,CAAC;AACD,SAAO,IAAI,SAAS,SAAS,gBAAgB,YAAY;AAC7D;;;AChDO,SAAS,4BAA4BE,UAAS;AACjD,SAAQA,SAAQ,WAAW,UACvB,mBAAmBA,UAAS,mCAAmC;AACvE;AACA,eAAsB,+BAA+BA,UAAS;AAC1D,QAAM,cAAc,MAAMA,SAAQ,KAAK;AACvC,SAAO,qBAAqB,WAAW;AAC3C;;;ACJA,SAASC,kBAAiB,KAAK;AAC3B,SAAO,OAAO,QAAQ,OAAO,QAAQ,YAAY,YAAY;AACjE;AACA,SAAS,YAAY,KAAK;AACtB,SAAO,OAAO,QAAQ,OAAO,IAAI,aAAa;AAClD;AACO,SAASC,aAAY,OAAO,SAAS,CAAC,GAAG;AAC5C,MAAID,kBAAiB,KAAK,GAAG;AACzB,eAAW,eAAe,MAAM,QAAQ;AACpC,aAAO,KAAK,GAAGC,aAAY,WAAW,CAAC;AAAA,IAC3C;AAAA,EACJ,WACS,iBAAiB,cAAc;AACpC,WAAO,KAAK,KAAK;AAAA,EACrB,WACS,iBAAiB,OAAO;AAC7B,WAAO,KAAK,mBAAmB,MAAM,OAAO,CAAC;AAAA,EACjD,WACS,OAAO,UAAU,UAAU;AAChC,WAAO,KAAK,mBAAmB,KAAK,CAAC;AAAA,EACzC,WACS,YAAY,KAAK,GAAG;AACzB,WAAO,KAAK,mBAAmB,MAAM,SAAS,CAAC,CAAC;AAAA,EACpD,OACK;AACD,WAAO,KAAK,mBAAmB,mBAAmB,CAAC;AAAA,EACvD;AACA,SAAO;AACX;;;AC/BO,SAAS,2BAA2B;AACvC,SAAO;AAAA,IACH,UAAU,EAAE,SAAAC,SAAQ,GAAG;AACnB,UAAIA,SAAQ,WAAW,SAASA,SAAQ,WAAW,QAAQ;AACvD,cAAM,mBAAmB,gDAAgD;AAAA,UACrE,YAAY;AAAA,YACR,MAAM;AAAA,cACF,QAAQ;AAAA,cACR,SAAS;AAAA,gBACL,OAAO;AAAA,cACX;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,IACJ;AAAA,EACJ;AACJ;;;ACjBO,SAAS,4BAA4B;AACxC,SAAO;AAAA,IACH,iBAAiB;AACb,aAAO;AAAA,QACH,mBAAmB,EAAE,OAAO,GAAG;AAC3B,cAAI,OAAO,SAAS,MAAM;AACtB,kBAAM,mBAAmB,8BAA8B;AAAA,cACnD,YAAY;AAAA,gBACR,MAAM;AAAA,kBACF,QAAQ;AAAA,kBACR,SAAS;AAAA,oBACL,OAAO;AAAA,kBACX;AAAA,gBACJ;AAAA,cACJ;AAAA,YACJ,CAAC;AAAA,UACL;AACA,gBAAM,iBAAiB,OAAO,OAAO;AACrC,cAAI,mBAAmB,UAAU;AAC7B,kBAAM,mBAAmB,8CAA8C,oBAAoB;AAAA,cACvF,YAAY;AAAA,gBACR,MAAM;AAAA,kBACF,QAAQ;AAAA,kBACR,SAAS;AAAA,oBACL,OAAO;AAAA,kBACX;AAAA,gBACJ;AAAA,cACJ;AAAA,YACJ,CAAC;AAAA,UACL;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACJ;;;AClCO,SAAS,yBAAyB;AACrC,SAAO;AAAA,IACH,aAAa;AACT,aAAO,CAAC,EAAE,OAAO,OAAO,MAAM;AAC1B,YAAI,CAAC,OAAO;AACR,iBAAO,QAAQ,CAAC,UAAU;AACtB,kBAAM,WAAW,OAAO;AAAA,cACpB,QAAQ;AAAA,YACZ;AAAA,UACJ,CAAC;AACD,gBAAM,IAAI,mBAAe,MAAM;AAAA,QACnC;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACJ;;;ACdO,SAAS,2BAA2B;AACvC,SAAO;AAAA,IACH,UAAU;AAEN,aAAO,CAAC,EAAE,QAAQ,SAAS,EAAE,SAAAC,UAAS,cAAc,EAAE,MAAM;AACxD,YAAIC;AACJ,YAAI,kBAAkB,OAAO;AACzB,cAAI,kBAAkB,cAAc;AAChC,mBAAO,WAAW,OAAO;AAAA,cACrB,QAAQ;AAAA,YACZ;AAAA,UACJ;AACA,gBAAM;AAAA,QACV;AACA,cAAM,YAAY,UACXA,MAAK,gBAAgB,QAAQ,aAAa,OAAO,QAAQA,QAAO,SAASA,MAAK,SAC/E;AACN,YAAI,CAAC,WAAW;AACZ,gBAAM,mBAAmB,kDAAkD;AAAA,YACvE,YAAY;AAAA,cACR,MAAM;AAAA,gBACF,QAAQ;AAAA,cACZ;AAAA,YACJ;AAAA,UACJ,CAAC;AAAA,QACL;AACA,YAAI,UAAU,cAAc,cAAcD,SAAQ,WAAW,OAAO;AAChE,gBAAM,mBAAmB,8DAA8D;AAAA,YACnF,YAAY;AAAA,cACR,MAAM;AAAA,gBACF,QAAQ;AAAA,gBACR,SAAS;AAAA,kBACL,OAAO;AAAA,gBACX;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ,CAAC;AAAA,QACL;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACJ;;;AvBhBO,SAAS,mBAAmB;AAC/B,SAAO,qBAAqB;AAAA,IACxB,UAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAcxB,WAAW;AAAA,MACP,OAAO;AAAA,QACH,WAAW,MAAM;AAAA,MACrB;AAAA,MACA,cAAc;AAAA,QACV,MAAM;AAAA,UACF,OAAO,YAAY;AACf,mBAAO,MAAM;AACT,oBAAM,EAAE,MAAM,IAAI,KAAK,EAAE,YAAY,EAAE;AACvC,oBAAM,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,GAAI,CAAC;AAAA,YAC5D;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ,CAAC;AACL;AAKO,IAAM,aAAN,MAAiB;AAAA,EACpB,YAAY,SAAS;AACjB,QAAIE,KAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;AAC5C,SAAK,gBAAgB,OAAOC,aAAY,SAAS;AAC7C,YAAM,WAAW,MAAM,KAAK,YAAYA,UAAS,GAAG,IAAI;AACxD,iBAAW,kBAAkB,KAAK,iBAAiB;AAC/C,cAAM,eAAe;AAAA,UACjB,SAAAA;AAAA,UACA;AAAA,UACA,eAAe,KAAK;AAAA,QACxB,CAAC;AAAA,MACL;AACA,aAAO;AAAA,IACX;AACA,SAAK,QAAQ,CAAC,OAAO,SAAS;AAC1B,UAAIA;AACJ,UAAI,OAAO,UAAU,UAAU;AAC3B,QAAAA,WAAU,IAAI,KAAK,SAAS,QAAQ,OAAO,IAAI;AAAA,MACnD,OACK;AACD,QAAAA,WAAU;AAAA,MACd;AACA,aAAO,KAAK,cAAcA,UAAS,IAAI;AAAA,IAC3C;AAEA,SAAK,qBAAqB,CAAC,UAAU,MAAM,YAAY,KAAK,cAAc,MAAM,SAAS,KAAK,CAAC;AAC/F,SAAK,MAAMD,MAAK,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,QAAQ,QAAQA,QAAO,SAASA,MAAK;AAC/G,SAAK,WAAW;AAAA,MACZ,UAAU,MAAM,KAAK,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,cAAc,QAAQ,OAAO,SAAS,SAAS,GAAG,aAAa,QAAQ,OAAO,SAAS,KAAsB;AAAA,MAC5L,WAAW,MAAM,KAAK,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,cAAc,QAAQ,OAAO,SAAS,SAAS,GAAG,cAAc,QAAQ,OAAO,SAAS,KAAsB;AAAA,MAC9L,QAAQ,MAAM,KAAK,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,cAAc,QAAQ,OAAO,SAAS,SAAS,GAAG,WAAW,QAAQ,OAAO,SAAS,KAAsB;AAAA,MACxL,iBAAiB,MAAM,KAAK,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,cAAc,QAAQ,OAAO,SAAS,SAAS,GAAG,oBAAoB,QAAQ,OAAO,SAAS,KAAsB;AAAA,IAC9M;AACA,UAAM,UAAU,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,UACpE,SAAS,QAAQ,MAAM,IACnB,QAAQ,SACR,qBAAqB;AAAA,MACnB,UAAU,QAAQ,OAAO;AAAA,MACzB,WAAW,QAAQ,OAAO;AAAA,IAC9B,CAAC,IACH,iBAAiB;AACvB,UAAM,UAAU,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,YAAY,OAAO,QAAQ,UAAU;AAC/G,SAAK,SACD,OAAO,WAAW,YACZ,WAAW,OACP,oBACA;AAAA,MACE,OAAO,MAAM;AAAA,MAAE;AAAA,MACf,OAAO,MAAM;AAAA,MAAE;AAAA,MACf,MAAM,MAAM;AAAA,MAAE;AAAA,MACd,MAAM,MAAM;AAAA,MAAE;AAAA,IAClB,IACF;AACV,UAAM,gBAAgB,KAAK,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,kBAAkB,QAAQ,OAAO,SAAS,KAAK;AACpI,UAAME,UAAS;AACf,SAAK,WAAW,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ;AAC1E,SAAK,UAAU;AAAA,MAEX,SAAS,UAAU,MAAM,UAAU,MAAM,CAAC;AAAA,MAE1C,UAAU,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,iBAAiB,OAAO,MAAM,eAAe,QAAQ,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,iBAAiB,WAC9L,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,cAC1D,MAAS,CAAC;AAAA,MAChB,UAAU,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,qBAAqB,OAAO,MAAM,mBAAmB;AAAA,QACrH,OAAO,QAAQ,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,qBAAqB,WACxF,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,kBAC1D;AAAA,MACV,CAAC,CAAC;AAAA,MAEF,SAAS,WAAW,OAAO,UAAU;AAAA,QACjC,mBAAmB;AAAA,QACnB,OAAO,CAAC,WAAW,WAAW;AAC1B,kBAAQ;AAAA,iBACC;AAAA,iBACA;AACD,mBAAK,OAAO,MAAM,UAAU,iBAAiB,CAAC;AAC9C,oBAAM,EAAE,OAAO,eAAe,WAAW,WAAY,IAAI,OAAO,KAAK;AACrE,mBAAK,OAAO,MAAM,UAAU,6BAA6B,CAAC;AAC1D,mBAAK,OAAO,MAAM;AAAA,gBACd;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,cACJ,CAAC;AACD;AAAA,iBACC;AAAA,iBACA;AACD,mBAAK,OAAO,MAAM,UAAU,eAAe,CAAC;AAC5C,mBAAK,OAAO,MAAM;AAAA,gBACd,QAAQ,OAAO;AAAA,cACnB,CAAC;AACD;AAAA;AAAA,QAEZ;AAAA,MACJ,CAAC,CAAC;AAAA,MACF,UAAU,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,YAAY,MAAM,iBAAiB,OAAO,mBAAmB;AAC7H,YAAI,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,SAAS;AACnE,cAAI,OAAO,QAAQ,YAAY,YAAY;AACvC,mBAAO,QAAQ,QAAQ,cAAc;AAAA,UACzC;AACA,iBAAO,QAAQ;AAAA,QACnB;AAAA,MACJ,CAAC,CAAC;AAAA,MAEF,eAAe;AAAA,QACX,IAAI,KAAK;AAAA,QACT,QAAQ,KAAK;AAAA,MACjB,CAAC;AAAA,MACD,UAAU,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,cAAc,OAAO,MAAM,YAAY;AAAA,QACvG,IAAI,WAAW;AACX,iBAAOA,QAAO;AAAA,QAClB;AAAA,QACA,SAAS,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ;AAAA,QACnE,QAAQ,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ;AAAA,QAClE,QAAQ,KAAK;AAAA,MACjB,CAAC,CAAC;AAAA,MACF,UAAU,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,UAAU,OAAO,MAAM,QAAQ,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,IAAI,CAAC;AAAA,MAElK,yBAAyB;AAAA,MACzB,iBAAiB;AAAA,QACb,OAAO;AAAA,QACP,OAAO;AAAA,MACX,CAAC;AAAA,MACD,iBAAiB;AAAA,QACb,OAAO;AAAA,QACP,OAAO;AAAA,MACX,CAAC;AAAA,MACD,UAAU,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,eAAe,OAAO,MAAM,iBAAiB;AAAA,QAC7G,OAAO;AAAA,QACP,OAAO;AAAA,MACX,CAAC,CAAC;AAAA,MACF,iBAAiB;AAAA,QACb,OAAO;AAAA,QACP,OAAO;AAAA,MACX,CAAC;AAAA,MACD,iBAAiB;AAAA,QACb,OAAO;AAAA,QACP,OAAO;AAAA,MACX,CAAC;AAAA,MAED,mBAAmB;AAAA,QACf,OAAO;AAAA,QACP,eAAe;AAAA,MACnB,CAAC;AAAA,MACD,mBAAmB;AAAA,QACf,OAAO;AAAA,QACP,eAAe;AAAA,MACnB,CAAC;AAAA,MACD,mBAAmB;AAAA,QACf,OAAO;AAAA,QACP,eAAe;AAAA,MACnB,CAAC;AAAA,MACD,IAAK,KAAK,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,aAAa,QAAQ,OAAO,SAAS,KAAK,CAAC;AAAA,MAC/G,0BAA0B;AAAA,MAE1B;AAAA,QACI,aAAa,EAAE,UAAU,GAAG;AACxB;AAAA,YAEA,yBAAyB;AAAA,UAAC;AAC1B,cAAI,CAAC,CAAC,cAAc;AAChB,sBAAU,gBAAgB,OAAO,iBAAiB,WAAW,eAAe,MAAS,CAAC;AAAA,UAC1F;AACA;AAAA,YAEA,uBAAuB;AAAA,UAAC;AAAA,QAC5B;AAAA,MACJ;AAAA,IACJ;AACA,SAAK,eAAe,QAAQ;AAAA,MACxB,SAAS,KAAK;AAAA,IAClB,CAAC;AACD,SAAK,iBAAiB,CAAC;AACvB,SAAK,sBAAsB,CAAC;AAC5B,SAAK,uBAAuB,CAAC;AAC7B,SAAK,kBAAkB,CAAC;AACxB,eAAW,UAAU,KAAK,SAAS;AAC/B,UAAI,QAAQ;AACR,YAAI,OAAO,gBAAgB;AACvB,eAAK,oBAAoB,KAAK,OAAO,cAAc;AAAA,QACvD;AACA,YAAI,OAAO,WAAW;AAClB,eAAK,eAAe,KAAK,OAAO,SAAS;AAAA,QAC7C;AACA,YAAI,OAAO,iBAAiB;AACxB,eAAK,qBAAqB,KAAK,OAAO,eAAe;AAAA,QACzD;AACA,YAAI,OAAO,YAAY;AACnB,eAAK,gBAAgB,KAAK,OAAO,UAAU;AAAA,QAC/C;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,MAAM,YAAYD,aAAY,MAAM;AAChC,QAAID,KAAI;AACR,UAAM,gBAAgB,KAAK;AAC3B,QAAI;AACA,iBAAW,iBAAiB,KAAK,gBAAgB;AAC7C,YAAI;AACJ,cAAM,cAAc;AAAA,UAChB,SAAAC;AAAA,UACA;AAAA,UACA,UAAU,KAAK;AAAA,UACf,YAAY,aAAa;AACrB,uBAAW;AAAA,UACf;AAAA,QACJ,CAAC;AACD,YAAI,UAAU;AACV,iBAAO;AAAA,QACX;AAAA,MACJ;AACA,UAAI;AACJ,YAAM,yBAAyB,CAAC;AAChC,iBAAW,kBAAkB,KAAK,qBAAqB;AACnD,cAAM,uBAAuB,MAAM,eAAe;AAAA,UAC9C,SAAAA;AAAA,UACA;AAAA,UACA,iBAAiB,QAAQ;AACrB,4BAAgB;AAAA,UACpB;AAAA,QACJ,CAAC;AACD,aAAK,yBAAyB,QAAQ,yBAAyB,SAAS,SAAS,qBAAqB,uBAAuB,MAAM;AAC/H,iCAAuB,KAAK,qBAAqB,kBAAkB;AAAA,QACvE;AAAA,MACJ;AACA,WAAK,OAAO,MAAM,+CAA+C;AACjE,UAAI,CAAC,eAAe;AAChB,eAAO,IAAI,KAAK,SAAS,SAAS,wBAAwB;AAAA,UACtD,QAAQ;AAAA,UACR,YAAY;AAAA,QAChB,CAAC;AAAA,MACL;AACA,UAAI,SAAS,MAAM,cAAcA,QAAO;AACxC,iBAAW,sBAAsB,wBAAwB;AACrD,cAAM,mBAAmB;AAAA,UACrB;AAAA,UACA,UAAU,WAAW;AACjB,qBAAS;AAAA,UACb;AAAA,QACJ,CAAC;AAAA,MACL;AACA,YAAM,iBAAiB;AAAA,QACnB,SAAAA;AAAA,QACA,GAAG;AAAA,QACH,GAAG;AAAA,MACP;AACA,YAAM,YAAY,KAAK,aAAa,cAAc;AAClD,WAAK,OAAO,MAAM,+BAA+B;AACjD,YAAM,SAAS,MAAM,eAAqB;AAAA,QACtC,SAAAA;AAAA,QACA;AAAA,QACA;AAAA,QACA,UAAU,KAAK;AAAA,QACf,sBAAsB,KAAK;AAAA,MAC/B,CAAC;AACD,aAAO;AAAA,IACX,SACO,OAAP;AACI,YAAM,oBAAoB;AAAA,QACtB,QAAQ;AAAA,QACR,SAAS;AAAA,UACL,gBAAgB;AAAA,QACpB;AAAA,MACJ;AACA,YAAM,SAASE,aAAY,KAAK;AAChC,iBAAWC,UAAS,QAAQ;AACxB,aAAKJ,MAAKI,OAAM,gBAAgB,QAAQJ,QAAO,SAAS,SAASA,IAAG,MAAM;AACtE,cAAII,OAAM,WAAW,KAAK,YACpB,KAAKA,OAAM,gBAAgB,QAAQ,OAAO,SAAS,SAAS,GAAG,KAAK,UAAU,kBAAkB,QAAQ;AAC1G,8BAAkB,SAASA,OAAM,WAAW,KAAK;AAAA,UACrD;AACA,cAAIA,OAAM,WAAW,KAAK,SAAS;AAC/B,mBAAO,OAAO,kBAAkB,SAASA,OAAM,WAAW,KAAK,OAAO;AAAA,UAC1E;AAEA,UAAAA,OAAM,WAAW,OAAO;AAAA,QAC5B;AAAA,MACJ;AACA,YAAM,UAAU;AAAA,QACZ,MAAM;AAAA,QACN;AAAA,MACJ;AACA,YAAM,gBAAgB,aAAa,KAAK,UAAU,OAAO,CAAC;AAC1D,wBAAkB,QAAQ,oBACtB,cAAc,WAAW,SAAS;AACtC,aAAO,IAAI,KAAK,SAAS,SAAS,eAAe,iBAAiB;AAAA,IACtE;AAAA,EACJ;AAAA,EAcA,MAAM,OAAO,EAAE,UAAAC,WAAU,WAAW,eAAe,SAAS,cAAe,GAAG;AAC1E,UAAMJ,WAAU,IAAI,KAAK,SAAS,QAAQ,4BAA4B;AAAA,MAClE,QAAQ;AAAA,MACR,SAAS;AAAA,QACL,gBAAgB;AAAA,QAChB,GAAG;AAAA,MACP;AAAA,MACA,MAAM,KAAK,UAAU;AAAA,QACjB,OAAOI,cACF,OAAOA,cAAa,WAAWA,YAAW,MAAMA,SAAQ;AAAA,QAC7D;AAAA,QACA;AAAA,MACJ,CAAC;AAAA,IACL,CAAC;AACD,UAAM,WAAW,MAAM,KAAK,cAAcJ,UAAS,aAAa;AAChE,QAAI,kBAAkB;AACtB,QAAI,SAAS,QAAQ,IAAI,cAAc,MAAM,oBAAoB;AAC7D,wBAAkB,MAAM,SAAS,KAAK;AAAA,IAC1C;AACA,WAAO;AAAA,MACH;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,QAAQ;AACJ,SAAK,iBAAiB,SAAS,KAAK,kBAAkB;AAAA,EAC1D;AAAA,EACA,OAAO;AACH,SAAK,oBAAoB,SAAS,KAAK,kBAAkB;AAAA,EAC7D;AACJ;AACO,SAAS,aAAa,SAAS;AAClC,QAAMC,UAAS,IAAI,WAAW,OAAO;AAErC,QAAM,YAAY,CAAC,OAAO,QAAQ;AAE9B,QAAI,MAAM,SAAS;AAEf,aAAOA,QAAO,cAAc,MAAM,SAAS,KAAK;AAAA,IACpD;AAGA,WAAOA,QAAO,cAAc,OAAO,GAAG;AAAA,EAC1C;AACA,SAAO,IAAI,MAAMA,SAAQ;AAAA,IAErB,KAAK,CAAC,GAAG,SAAS;AACd,aAAO,QAAQ,aAAa,QAAQA;AAAA,IACxC;AAAA,IACA,KAAK,CAAC,GAAG,SAAS;AACd,UAAIA,QAAO,OAAO;AACd,YAAIA,QAAO,MAAM,MAAM;AACnB,iBAAOA,QAAO,MAAM,KAAKA,OAAM;AAAA,QACnC;AACA,eAAOA,QAAO;AAAA,MAClB;AACA,UAAI,UAAU,OAAO;AACjB,YAAI,UAAU,MAAM,MAAM;AACtB,iBAAO,UAAU,MAAM,KAAK,SAAS;AAAA,QACzC;AACA,eAAO,UAAU;AAAA,MACrB;AAAA,IACJ;AAAA,IACA,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,GAAG;AACvB,aAAO,UAAU,OAAO,GAAG;AAAA,IAC/B;AAAA,EACJ,CAAC;AACL;;;AwB/ZA,IAAI,gBAAgB,SAAS,GAAG,GAAG;AAC/B,kBAAgB,OAAO,kBAClB,EAAE,WAAW,CAAC,EAAE,aAAa,SAAS,SAAUI,IAAGC,IAAG;AAAE,IAAAD,GAAE,YAAYC;AAAA,EAAG,KAC1E,SAAUD,IAAGC,IAAG;AAAE,aAAS,KAAKA;AAAG,UAAIA,GAAE,eAAe,CAAC;AAAG,QAAAD,GAAE,KAAKC,GAAE;AAAA,EAAI;AAC7E,SAAO,cAAc,GAAG,CAAC;AAC7B;AAEA,SAAS,UAAU,GAAG,GAAG;AACrB,gBAAc,GAAG,CAAC;AAClB,WAAS,KAAK;AAAE,SAAK,cAAc;AAAA,EAAG;AACtC,IAAE,YAAY,MAAM,OAAO,OAAO,OAAO,CAAC,KAAK,GAAG,YAAY,EAAE,WAAW,IAAI,GAAG;AACtF;AAEA,SAAS,UAAU,SAAS,YAAY,GAAG,WAAW;AAClD,WAAS,MAAM,OAAO;AAAE,WAAO,iBAAiB,IAAI,QAAQ,IAAI,EAAE,SAAU,SAAS;AAAE,cAAQ,KAAK;AAAA,IAAG,CAAC;AAAA,EAAG;AAC3G,SAAO,KAAK,MAAM,IAAI,UAAU,SAAU,SAASC,SAAQ;AACvD,aAAS,UAAU,OAAO;AAAE,UAAI;AAAE,aAAK,UAAU,KAAK,KAAK,CAAC;AAAA,MAAG,SAAS,GAAP;AAAY,QAAAA,QAAO,CAAC;AAAA,MAAG;AAAA,IAAE;AAC1F,aAAS,SAAS,OAAO;AAAE,UAAI;AAAE,aAAK,UAAU,SAAS,KAAK,CAAC;AAAA,MAAG,SAAS,GAAP;AAAY,QAAAA,QAAO,CAAC;AAAA,MAAG;AAAA,IAAE;AAC7F,aAAS,KAAK,QAAQ;AAAE,aAAO,OAAO,QAAQ,OAAO,KAAK,IAAI,MAAM,OAAO,KAAK,EAAE,KAAK,WAAW,QAAQ;AAAA,IAAG;AAC7G,UAAM,YAAY,UAAU,MAAM,SAAS,cAAc,CAAC,CAAC,GAAG,KAAK,CAAC;AAAA,EACxE,CAAC;AACL;AAEA,SAAS,YAAY,SAAS,MAAM;AAChC,MAAI,IAAI,EAAE,OAAO,GAAG,MAAM,WAAW;AAAE,QAAI,EAAE,KAAK;AAAG,YAAM,EAAE;AAAI,WAAO,EAAE;AAAA,EAAI,GAAG,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG;AAC/G,SAAO,IAAI,EAAE,MAAM,KAAK,CAAC,GAAG,SAAS,KAAK,CAAC,GAAG,UAAU,KAAK,CAAC,EAAE,GAAG,OAAO,WAAW,eAAe,EAAE,OAAO,YAAY,WAAW;AAAE,WAAO;AAAA,EAAM,IAAI;AACvJ,WAAS,KAAK,GAAG;AAAE,WAAO,SAAU,GAAG;AAAE,aAAO,KAAK,CAAC,GAAG,CAAC,CAAC;AAAA,IAAG;AAAA,EAAG;AACjE,WAAS,KAAK,IAAI;AACd,QAAI;AAAG,YAAM,IAAI,UAAU,iCAAiC;AAC5D,WAAO;AAAG,UAAI;AACV,YAAI,IAAI,GAAG,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE,YAAY,GAAG,KAAK,EAAE,cAAc,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,GAAG,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,GAAG,GAAG,EAAE,GAAG;AAAM,iBAAO;AAC3J,YAAI,IAAI,GAAG;AAAG,eAAK,CAAC,GAAG,KAAK,GAAG,EAAE,KAAK;AACtC,gBAAQ,GAAG;AAAA,eACF;AAAA,eAAQ;AAAG,gBAAI;AAAI;AAAA,eACnB;AAAG,cAAE;AAAS,mBAAO,EAAE,OAAO,GAAG,IAAI,MAAM,MAAM;AAAA,eACjD;AAAG,cAAE;AAAS,gBAAI,GAAG;AAAI,iBAAK,CAAC,CAAC;AAAG;AAAA,eACnC;AAAG,iBAAK,EAAE,IAAI,IAAI;AAAG,cAAE,KAAK,IAAI;AAAG;AAAA;AAEpC,gBAAI,EAAE,IAAI,EAAE,MAAM,IAAI,EAAE,SAAS,KAAK,EAAE,EAAE,SAAS,QAAQ,GAAG,OAAO,KAAK,GAAG,OAAO,IAAI;AAAE,kBAAI;AAAG;AAAA,YAAU;AAC3G,gBAAI,GAAG,OAAO,MAAM,CAAC,KAAM,GAAG,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,KAAM;AAAE,gBAAE,QAAQ,GAAG;AAAI;AAAA,YAAO;AACrF,gBAAI,GAAG,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI;AAAE,gBAAE,QAAQ,EAAE;AAAI,kBAAI;AAAI;AAAA,YAAO;AACpE,gBAAI,KAAK,EAAE,QAAQ,EAAE,IAAI;AAAE,gBAAE,QAAQ,EAAE;AAAI,gBAAE,IAAI,KAAK,EAAE;AAAG;AAAA,YAAO;AAClE,gBAAI,EAAE;AAAI,gBAAE,IAAI,IAAI;AACpB,cAAE,KAAK,IAAI;AAAG;AAAA;AAEtB,aAAK,KAAK,KAAK,SAAS,CAAC;AAAA,MAC7B,SAAS,GAAP;AAAY,aAAK,CAAC,GAAG,CAAC;AAAG,YAAI;AAAA,MAAG,UAAE;AAAU,YAAI,IAAI;AAAA,MAAG;AACzD,QAAI,GAAG,KAAK;AAAG,YAAM,GAAG;AAAI,WAAO,EAAE,OAAO,GAAG,KAAK,GAAG,KAAK,QAAQ,MAAM,KAAK;AAAA,EACnF;AACJ;AAEA,SAAS,SAAS,GAAG;AACjB,MAAI,IAAI,OAAO,WAAW,cAAc,OAAO,UAAU,IAAI,KAAK,EAAE,IAAI,IAAI;AAC5E,MAAI;AAAG,WAAO,EAAE,KAAK,CAAC;AACtB,MAAI,KAAK,OAAO,EAAE,WAAW;AAAU,WAAO;AAAA,MAC1C,MAAM,WAAY;AACd,YAAI,KAAK,KAAK,EAAE;AAAQ,cAAI;AAC5B,eAAO,EAAE,OAAO,KAAK,EAAE,MAAM,MAAM,CAAC,EAAE;AAAA,MAC1C;AAAA,IACJ;AACA,QAAM,IAAI,UAAU,IAAI,4BAA4B,iCAAiC;AACzF;AAEA,SAAS,QAAQ,GAAG;AAChB,SAAO,gBAAgB,WAAW,KAAK,IAAI,GAAG,QAAQ,IAAI,QAAQ,CAAC;AACvE;AAEA,SAAS,iBAAiB,SAAS,YAAY,WAAW;AACtD,MAAI,CAAC,OAAO;AAAe,UAAM,IAAI,UAAU,sCAAsC;AACrF,MAAI,IAAI,UAAU,MAAM,SAAS,cAAc,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC;AAC5D,SAAO,IAAI,CAAC,GAAG,KAAK,MAAM,GAAG,KAAK,OAAO,GAAG,KAAK,QAAQ,GAAG,EAAE,OAAO,iBAAiB,WAAY;AAAE,WAAO;AAAA,EAAM,GAAG;AACpH,WAAS,KAAK,GAAG;AAAE,QAAI,EAAE;AAAI,QAAE,KAAK,SAAU,GAAG;AAAE,eAAO,IAAI,QAAQ,SAAU,GAAG,GAAG;AAAE,YAAE,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,KAAK,OAAO,GAAG,CAAC;AAAA,QAAG,CAAC;AAAA,MAAG;AAAA,EAAG;AACzI,WAAS,OAAO,GAAG,GAAG;AAAE,QAAI;AAAE,WAAK,EAAE,GAAG,CAAC,CAAC;AAAA,IAAG,SAAS,GAAP;AAAY,aAAO,EAAE,GAAG,IAAI,CAAC;AAAA,IAAG;AAAA,EAAE;AACjF,WAAS,KAAK,GAAG;AAAE,MAAE,iBAAiB,UAAU,QAAQ,QAAQ,EAAE,MAAM,CAAC,EAAE,KAAK,SAASA,OAAM,IAAI,OAAO,EAAE,GAAG,IAAI,CAAC;AAAA,EAAG;AACvH,WAAS,QAAQ,OAAO;AAAE,WAAO,QAAQ,KAAK;AAAA,EAAG;AACjD,WAASA,QAAO,OAAO;AAAE,WAAO,SAAS,KAAK;AAAA,EAAG;AACjD,WAAS,OAAO,GAAG,GAAG;AAAE,QAAI,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE;AAAQ,aAAO,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE;AAAA,EAAG;AACrF;AAGA,IAAI,wBAAuC,SAAU,QAAQ;AACzD,YAAUC,wBAAuB,MAAM;AACvC,WAASA,uBAAsB,SAAS;AACpC,QAAI,QAAQ,OAAO,KAAK,MAAM,OAAO,KAAK;AAC1C,WAAO,eAAe,OAAO,QAAQ;AAAA,MACjC,OAAO;AAAA,MACP,YAAY;AAAA,IAChB,CAAC;AACD,QAAI,OAAO,OAAO,mBAAmB,YAAY;AAC7C,aAAO,eAAe,OAAO,MAAM,YAAY,SAAS;AAAA,IAC5D,OACK;AACD,YAAM,YAAY,MAAM,YAAY;AAAA,IACxC;AACA,QAAI,OAAO,MAAM,sBAAsB,YAAY;AAC/C,YAAM,kBAAkB,OAAO,MAAM,WAAW;AAAA,IACpD;AACA,WAAO;AAAA,EACX;AACA,SAAOA;AACX,EAAE,KAAK;AAEP,IAAI,cAA6B,WAAY;AACzC,WAASC,aAAY,UAAU;AAC3B,QAAI,WAAW,GAAG;AACd,YAAM,IAAI,WAAW,iCAAiC;AAAA,IAC1D;AACA,SAAK,KAAK;AACV,SAAK,KAAK,CAAC;AAAA,EACf;AACA,SAAO,eAAeA,aAAY,WAAW,SAAS;AAAA,IAClD,KAAK,WAAY;AACb,aAAO,KAAK,GAAG,WAAW;AAAA,IAC9B;AAAA,IACA,YAAY;AAAA,IACZ,cAAc;AAAA,EAClB,CAAC;AACD,SAAO,eAAeA,aAAY,WAAW,QAAQ;AAAA,IACjD,KAAK,WAAY;AACb,aAAO,KAAK,GAAG,UAAU,KAAK;AAAA,IAClC;AAAA,IACA,YAAY;AAAA,IACZ,cAAc;AAAA,EAClB,CAAC;AACD,EAAAA,aAAY,UAAU,MAAM,SAAU,OAAO;AACzC,QAAI,KAAK,MAAM;AACX,YAAM,IAAI,MAAM,aAAa;AAAA,IACjC,OACK;AACD,WAAK,GAAG,KAAK,KAAK;AAAA,IACtB;AAAA,EACJ;AACA,EAAAA,aAAY,UAAU,SAAS,WAAY;AACvC,QAAI,KAAK,OAAO;AACZ,YAAM,IAAI,MAAM,cAAc;AAAA,IAClC;AACA,WAAO,KAAK,GAAG,MAAM;AAAA,EACzB;AACA,SAAOA;AACX,EAAE;AAGF,IAAI,gBAA+B,WAAY;AAC3C,WAASC,eAAc,UAAU;AAC7B,QAAI,WAAW,GAAG;AACd,YAAM,IAAI,WAAW,iCAAiC;AAAA,IAC1D;AACA,SAAK,KAAK;AACV,SAAK,KAAK,CAAC;AAAA,EACf;AACA,SAAO,eAAeA,eAAc,WAAW,SAAS;AAAA,IACpD,KAAK,WAAY;AACb,aAAO,KAAK,GAAG,WAAW;AAAA,IAC9B;AAAA,IACA,YAAY;AAAA,IACZ,cAAc;AAAA,EAClB,CAAC;AACD,SAAO,eAAeA,eAAc,WAAW,QAAQ;AAAA,IACnD,KAAK,WAAY;AACb,aAAO;AAAA,IACX;AAAA,IACA,YAAY;AAAA,IACZ,cAAc;AAAA,EAClB,CAAC;AACD,EAAAA,eAAc,UAAU,MAAM,SAAU,OAAO;AAC3C,WAAO,KAAK,GAAG,UAAU,KAAK,IAAI;AAC9B,WAAK,GAAG,MAAM;AAAA,IAClB;AACA,SAAK,GAAG,KAAK,KAAK;AAAA,EACtB;AACA,EAAAA,eAAc,UAAU,SAAS,WAAY;AACzC,QAAI,KAAK,OAAO;AACZ,YAAM,IAAI,MAAM,cAAc;AAAA,IAClC;AACA,WAAO,KAAK,GAAG,MAAM;AAAA,EACzB;AACA,SAAOA;AACX,EAAE;AAEF,IAAI,iBAAgC,WAAY;AAC5C,WAASC,gBAAe,UAAU;AAC9B,QAAI,WAAW,GAAG;AACd,YAAM,IAAI,WAAW,iCAAiC;AAAA,IAC1D;AACA,SAAK,KAAK;AACV,SAAK,KAAK,CAAC;AAAA,EACf;AACA,SAAO,eAAeA,gBAAe,WAAW,SAAS;AAAA,IACrD,KAAK,WAAY;AACb,aAAO,KAAK,GAAG,WAAW;AAAA,IAC9B;AAAA,IACA,YAAY;AAAA,IACZ,cAAc;AAAA,EAClB,CAAC;AACD,SAAO,eAAeA,gBAAe,WAAW,QAAQ;AAAA,IACpD,KAAK,WAAY;AACb,aAAO;AAAA,IACX;AAAA,IACA,YAAY;AAAA,IACZ,cAAc;AAAA,EAClB,CAAC;AACD,EAAAA,gBAAe,UAAU,MAAM,SAAU,OAAO;AAC5C,QAAI,KAAK,GAAG,SAAS,KAAK,IAAI;AAC1B,WAAK,GAAG,KAAK,KAAK;AAAA,IACtB;AAAA,EACJ;AACA,EAAAA,gBAAe,UAAU,SAAS,WAAY;AAC1C,QAAI,KAAK,OAAO;AACZ,YAAM,IAAI,MAAM,cAAc;AAAA,IAClC;AACA,WAAO,KAAK,GAAG,MAAM;AAAA,EACzB;AACA,SAAOA;AACX,EAAE;AAEF,SAAS,QAAQ,OAAO;AACpB,MAAI,SAAS,QAAQ,OAAO,MAAM,SAAS,YAAY;AACnD,UAAM,KAAK,MAAM,IAAI;AAAA,EACzB;AACJ;AAIA,IAAI,UAAU;AAEd,IAAI,UAAU;AAEd,IAAI,UAAU;AAEd,IAAI,OAAO;AAEX,IAAI,WAAW;AAEf,IAAI,mBAAmB;AACvB,IAAI,OAAO,WAAY;AAAE;AAEzB,SAAS,iBAAiB,GAAG;AACzB,MAAI,MAAM,EAAE;AACZ,MAAI,YAAY,QAAQ,QAAQ,EAAE,SAAS,EAAE,KAAK,SAAU,OAAO;AAC/D,QAAI,OAAO,MAAM;AACb,YAAM;AAAA,IACV;AACA,WAAO;AAAA,EACX,CAAC;AACD,IAAE,MAAM;AACR,IAAE,YAAY,UAAU,KAAK,WAAY;AAAE,WAAO;AAAA,EAAW,GAAG,WAAY;AAAE,WAAO;AAAA,EAAW,CAAC;AACjG,SAAO,EAAE,YAAY,SAAY,YAAY,EAAE,QAAQ,KAAK,WAAY;AAAE,WAAO;AAAA,EAAW,CAAC;AACjG;AAEA,SAAS,gBAAgB,GAAG,OAAO;AAC/B,MAAI,OAAO,EAAE,SAAS;AACtB,SAAO,QAAQ,QAAQ,KAAK,EAAE,KAAK,SAAUC,QAAO;AAChD,QAAI,CAAC,QAAQ,EAAE,SAAS,UAAU;AAC9B,aAAO,iBAAiB,CAAC,EAAE,KAAK,SAAUA,QAAO;AAAE,eAAQ;AAAA,UACvD,OAAOA;AAAA,UACP,MAAM;AAAA,QACV;AAAA,MAAI,CAAC;AAAA,IACT;AACA,WAAO,EAAE,OAAOA,QAAO,KAAW;AAAA,EACtC,CAAC;AACL;AAMA,SAAS,KAAK,GAAG,KAAK;AAClB,MAAI,KAAKC;AACT,MAAI,EAAE,SAAS,SAAS;AACpB;AAAA,EACJ;AACA,IAAE,QAAQ;AACV,IAAE,OAAO;AACT,IAAE,OAAO;AACT,MAAI,EAAE,OAAO,MAAM;AACf,MAAE,MAAM;AAAA,EACZ;AACA,MAAI,EAAE,OAAO,WAAW,MACnB,OAAO,EAAE,WAAW,eAAe,EAAE,OAAO,QAAQ;AACrD,WAAO,CAAC;AAAA,EACZ,OACK;AACD,QAAI;AACA,eAAS,KAAK,SAAS,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,CAAC,GAAG,MAAM,KAAK,GAAG,KAAK,GAAG;AACxE,YAAI,SAAS,GAAG;AAChB,eAAO,QAAQ;AAAA,MACnB;AAAA,IACJ,SACO,OAAP;AAAgB,YAAM,EAAE,OAAO,MAAM;AAAA,IAAG,UACxC;AACI,UAAI;AACA,YAAI,MAAM,CAAC,GAAG,SAASA,MAAK,GAAG;AAAS,UAAAA,IAAG,KAAK,EAAE;AAAA,MACtD,UACA;AAAU,YAAI;AAAK,gBAAM,IAAI;AAAA,MAAO;AAAA,IACxC;AAAA,EACJ;AACJ;AAMA,SAAS,OAAO,GAAG;AACf,MAAI,KAAKA;AACT,MAAI,EAAE,SAAS,MAAM;AACjB;AAAA,EACJ;AACA,MAAI,EAAE,QAAQ,SAAS;AACnB,SAAK,CAAC;AAAA,EACV;AACA,IAAE,QAAQ;AACV,IAAE,SAAS;AACX,MAAI;AACA,aAAS,KAAK,SAAS,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,CAAC,GAAG,MAAM,KAAK,GAAG,KAAK,GAAG;AACvE,UAAI,OAAO,GAAG;AACd,UAAI,YAAY,EAAE,YAAY,SACxB,iBAAiB,CAAC,IAClB,EAAE,QAAQ,KAAK,WAAY;AAAE,eAAO,iBAAiB,CAAC;AAAA,MAAG,CAAC;AAChE,WAAK,QAAQ,gBAAgB,GAAG,SAAS,CAAC;AAAA,IAC9C;AAAA,EACJ,SACO,OAAP;AAAgB,UAAM,EAAE,OAAO,MAAM;AAAA,EAAG,UACxC;AACI,QAAI;AACA,UAAI,MAAM,CAAC,GAAG,SAASA,MAAK,GAAG;AAAS,QAAAA,IAAG,KAAK,EAAE;AAAA,IACtD,UACA;AAAU,UAAI;AAAK,cAAM,IAAI;AAAA,IAAO;AAAA,EACxC;AACA,IAAE,SAAS,CAAC;AACZ,IAAE,QAAQ,CAAC;AACf;AAMA,SAAS,OAAO,GAAG;AACf,MAAI,EAAE,SAAS,UAAU;AACrB;AAAA,EACJ;AACA,MAAI,EAAE,QAAQ,MAAM;AAChB,WAAO,CAAC;AAAA,EACZ;AACA,IAAE,QAAQ;AACd;AAEA,SAAS,KAAK,GAAG,OAAO;AACpB,UAAQ,KAAK;AACb,MAAI,EAAE,OAAO,UAAU,kBAAkB;AACrC,UAAM,IAAI,sBAAsB,kBAAkB,mBAAmB,0DAA0D;AAAA,EACnI,WACS,EAAE,SAAS,SAAS;AACzB,WAAO,QAAQ,QAAQ,MAAS;AAAA,EACpC;AACA,MAAI,SAAS,EAAE,YAAY,SACrB,QAAQ,QAAQ,KAAK,IACrB,EAAE,QAAQ,KAAK,WAAY;AAAE,WAAO;AAAA,EAAO,CAAC;AAClD,WAAS,OAAO,MAAM,SAAU,KAAK;AACjC,QAAI,EAAE,QAAQ,SAAS;AACnB,QAAE,MAAM;AAAA,IACZ;AACA,WAAO,CAAC;AACR,WAAO;AAAA,EACX,CAAC;AACD,MAAI;AACJ,MAAI,EAAE,MAAM,QAAQ;AAChB,QAAI,SAAS,EAAE,MAAM,MAAM;AAC3B,WAAO,QAAQ,gBAAgB,GAAG,MAAM,CAAC;AACzC,QAAI,EAAE,MAAM,QAAQ;AAChB,cAAQ,QAAQ,QAAQ,EAAE,MAAM,GAAG,KAAK;AAAA,IAC5C,OACK;AACD,cAAQ,IAAI,QAAQ,SAAU,SAAS;AAAE,eAAQ,EAAE,SAAS;AAAA,MAAU,CAAC;AAAA,IAC3E;AAAA,EACJ,WACS,OAAO,EAAE,WAAW,eAAe,CAAC,EAAE,OAAO,MAAM;AACxD,MAAE,OAAO,IAAI,MAAM;AACnB,YAAQ,QAAQ,QAAQ,MAAS;AAAA,EACrC,OACK;AACD,YAAQ,IAAI,QAAQ,SAAU,SAAS;AAAE,aAAO,EAAE,OAAO,KAAK,EAAE,SAAkB,OAAO,OAAO,CAAC;AAAA,IAAG,CAAC;AAAA,EACzG;AAGA,MAAI,WAAW;AACf,MAAI,OAAO,CAAC;AACZ,MAAI,YAAY,MAAM,MAAM,SAAU,KAAK;AACvC,QAAI,UAAU;AACV,YAAM;AAAA,IACV;AACA,WAAO;AAAA,EACX,CAAC;AACD,OAAK,OAAO,SAAU,aAAa,YAAY;AAC3C,eAAW;AACX,WAAO,QAAQ,UAAU,KAAK,KAAK,OAAO,aAAa,UAAU;AAAA,EACrE;AACA,OAAK,QAAQ,SAAU,YAAY;AAC/B,eAAW;AACX,WAAO,QAAQ,UAAU,MAAM,KAAK,OAAO,UAAU;AAAA,EACzD;AACA,OAAK,UAAU,MAAM,QAAQ,KAAK,KAAK;AACvC,IAAE,UAAU,OACP,KAAK,WAAY;AAAE,WAAO;AAAA,EAAW,CAAC,EACtC,MAAM,SAAU,KAAK;AACtB,MAAE,MAAM;AACR,WAAO,CAAC;AAAA,EACZ,CAAC;AACD,SAAO;AACX;AAIA,SAAS,WAAW,GAAG;AACnB,MAAI,QAAQ,KAAK,KAAK,MAAM,CAAC;AAC7B,MAAI,QAAQ,IAAI,QAAQ,SAAU,SAAS;AAAE,WAAQ,EAAE,SAAS;AAAA,EAAU,CAAC;AAC3E,QAAM,OAAO,MAAM,KAAK,KAAK,KAAK;AAClC,QAAM,QAAQ,MAAM,MAAM,KAAK,KAAK;AACpC,QAAM,UAAU,MAAM,QAAQ,KAAK,KAAK;AACxC,SAAO;AACX;AAMA,SAASC,SAAQ,GAAG;AAChB,MAAI,EAAE,SAAS,SAAS;AACpB;AAAA,EACJ;AACA,IAAE,QAAQ;AACV,MAAI,QAAQ,KAAK,KAAK,MAAM,CAAC;AAC7B,MAAI,QAAQ,WAAW,CAAC;AACxB,IAAE,YAAY,IAAI,QAAQ,SAAU,SAAS;AAAE,WAAO,QAAQ,EAAE,SAAS,OAAO,KAAK,CAAC;AAAA,EAAG,CAAC;AAE1F,IAAE,UAAU,MAAM,WAAY;AAAE,WAAO,KAAK,CAAC;AAAA,EAAG,CAAC;AACrD;AACA,IAAI,UAAU,oBAAI,QAAQ;AAE1B,IAAI,WAA0B,WAAY;AACtC,WAASC,UAAS,UAAU,QAAQ;AAChC,YAAQ,IAAI,MAAM;AAAA,MACd;AAAA,MACA;AAAA,MACA,KAAK;AAAA,MACL,OAAO;AAAA,MACP,QAAQ,CAAC;AAAA,MACT,OAAO,CAAC;AAAA,MACR,SAAS;AAAA,MACT,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,QAAQ;AAAA,IACZ,CAAC;AAAA,EACL;AACA,EAAAA,UAAS,UAAU,OAAO,SAAU,OAAO;AACvC,YAAQ,KAAK;AACb,QAAI,IAAI,QAAQ,IAAI,IAAI;AACxB,QAAI,MAAM,QAAW;AACjB,YAAM,IAAI,MAAM,eAAe;AAAA,IACnC;AACA,QAAI,EAAE,MAAM,UAAU,kBAAkB;AACpC,YAAM,IAAI,sBAAsB,kBAAkB,mBAAmB,0DAA0D;AAAA,IACnI;AACA,QAAI,EAAE,SAAS,SAAS;AACpB,MAAAD,SAAQ,CAAC;AAAA,IACb;AACA,MAAE,OAAO,KAAK;AACd,QAAI,OAAO,EAAE,WAAW,eAAe,CAAC,EAAE,OAAO,OAAO;AACpD,UAAI,SAAS,gBAAgB,GAAG,EAAE,OAAO,OAAO,CAAC;AACjD,UAAI,EAAE,OAAO,QAAQ;AACjB,YAAI,SAAS,EAAE,OAAO,MAAM;AAC5B,UAAE,OAAO,IAAI,OAAO,KAAK;AACzB,UAAE,SAAS,OAAO;AAAA,MACtB;AACA,aAAO;AAAA,IACX,WACS,EAAE,OAAO,QAAQ;AACtB,UAAI,SAAS,EAAE,OAAO,MAAM;AAC5B,QAAE,SAAS,OAAO;AAClB,aAAO,gBAAgB,GAAG,OAAO,KAAK;AAAA,IAC1C,WACS,EAAE,SAAS,SAAS;AACzB,aAAO,CAAC;AACR,aAAO,gBAAgB,GAAG,iBAAiB,CAAC,CAAC;AAAA,IACjD;AACA,WAAO,IAAI,QAAQ,SAAU,SAAS;AAAE,aAAO,EAAE,MAAM,KAAK,EAAE,SAAkB,MAAa,CAAC;AAAA,IAAG,CAAC;AAAA,EACtG;AACA,EAAAC,UAAS,UAAU,SAAS,SAAU,OAAO;AACzC,YAAQ,KAAK;AACb,QAAI,IAAI,QAAQ,IAAI,IAAI;AACxB,QAAI,MAAM,QAAW;AACjB,YAAM,IAAI,MAAM,eAAe;AAAA,IACnC;AACA,WAAO,CAAC;AAER,MAAE,YAAY,QAAQ,QAAQ,EAAE,SAAS,EAAE,KAAK,WAAY;AAAE,aAAO;AAAA,IAAO,CAAC;AAC7E,WAAO,gBAAgB,GAAG,iBAAiB,CAAC,CAAC;AAAA,EACjD;AACA,EAAAA,UAAS,UAAU,QAAQ,SAAU,KAAK;AACtC,QAAI,IAAI,QAAQ,IAAI,IAAI;AACxB,QAAI,MAAM,QAAW;AACjB,YAAM,IAAI,MAAM,eAAe;AAAA,IACnC;AACA,QAAI,EAAE,SAAS,WACX,EAAE,SAAS,WACV,OAAO,EAAE,WAAW,eAAe,CAAC,EAAE,OAAO,OAAQ;AACtD,aAAO,CAAC;AAER,UAAI,EAAE,OAAO,MAAM;AACf,UAAE,MAAM;AAAA,MACZ;AACA,aAAO,gBAAgB,GAAG,iBAAiB,CAAC,CAAC;AAAA,IACjD;AACA,WAAO,KAAK,KAAK,QAAQ,OAAO,GAAG,CAAC;AAAA,EACxC;AACA,EAAAA,UAAS,UAAU,OAAO,iBAAiB,WAAY;AACnD,WAAO;AAAA,EACX;AAEA,EAAAA,UAAS,OAAO;AAChB,EAAAA,UAAS,QAAQ;AACjB,EAAAA,UAAS,MAAM;AACf,EAAAA,UAAS,SAAS;AAClB,SAAOA;AACX,EAAE;AAGF,SAAS,aAAa,QAAQ,SAAS;AACnC,MAAI,KAAKF;AACT,MAAI,QAAQ,CAAC;AACb,MAAI,UAAU,SAAUD,QAAO;AAC3B,QAAIA,UAAS,QAAQ,OAAOA,OAAM,OAAO,mBAAmB,YAAY;AACpE,YAAM,KAAKA,OAAM,OAAO,eAAe,CAAC;AAAA,IAC5C,WACSA,UAAS,QAAQ,OAAOA,OAAM,OAAO,cAAc,YAAY;AACpE,YAAM,KAAKA,OAAM,OAAO,UAAU,CAAC;AAAA,IACvC,OACK;AACD,YAAM,KAAM,SAAS,uBAAuB;AACxC,eAAO,iBAAiB,MAAM,WAAW,SAAS,yBAAyB;AACvE,iBAAO,YAAY,MAAM,SAAUC,KAAI;AACnC,oBAAQA,IAAG;AAAA,mBACF;AACD,oBAAI,CAAC,QAAQ;AAAa,yBAAO,CAAC,GAAa,CAAC;AAChD,uBAAO,CAAC,GAAa,QAAQD,MAAK,CAAC;AAAA,mBAClC;AAAG,uBAAO,CAAC,GAAaC,IAAG,KAAK,CAAC;AAAA,mBACjC;AACD,gBAAAA,IAAG,KAAK;AACR,gBAAAA,IAAG,QAAQ;AAAA,mBACV;AACD,oBAAI,CAAC,QAAQ;AAAc,yBAAO,CAAC,GAAa,CAAC;AACjD,uBAAO,CAAC,GAAa,QAAQD,MAAK,CAAC;AAAA,mBAClC;AAAG,uBAAO,CAAC,GAAcC,IAAG,KAAK,CAAC;AAAA,mBAClC;AAAG,uBAAO,CAAC,CAAY;AAAA;AAAA,UAEpC,CAAC;AAAA,QACL,CAAC;AAAA,MACL,EAAG,CAAC;AAAA,IACR;AAAA,EACJ;AACA,MAAI;AACA,aAAS,WAAW,SAAS,MAAM,GAAG,aAAa,SAAS,KAAK,GAAG,CAAC,WAAW,MAAM,aAAa,SAAS,KAAK,GAAG;AAChH,UAAI,QAAQ,WAAW;AACvB,cAAQ,KAAK;AAAA,IACjB;AAAA,EACJ,SACO,OAAP;AAAgB,UAAM,EAAE,OAAO,MAAM;AAAA,EAAG,UACxC;AACI,QAAI;AACA,UAAI,cAAc,CAAC,WAAW,SAASA,MAAK,SAAS;AAAS,QAAAA,IAAG,KAAK,QAAQ;AAAA,IAClF,UACA;AAAU,UAAI;AAAK,cAAM,IAAI;AAAA,IAAO;AAAA,EACxC;AACA,SAAO;AACX;AAEA,SAAS,KAAK,YAAY;AACtB,MAAI,QAAQ;AACZ,MAAI,QAAQ,aAAa,YAAY,EAAE,cAAc,KAAK,CAAC;AAC3D,SAAO,IAAI,SAAS,SAAUG,OAAMC,OAAM;AAAE,WAAO,UAAU,OAAO,QAAQ,QAAQ,WAAY;AAC5F,UAAI,SAAS,SAAS,gBAAgB,WAAW,KAAK;AACtD,aAAO,YAAY,MAAM,SAAUJ,KAAI;AACnC,gBAAQA,IAAG;AAAA,eACF;AACD,gBAAI,CAAC,MAAM,QAAQ;AACf,cAAAI,MAAK;AACL,qBAAO,CAAC,CAAY;AAAA,YACxB;AACA,sBAAU;AACV,YAAAA,MAAK,KAAK,WAAY;AAClB,sBAAQ;AACR,wBAAU;AAAA,YACd,CAAC;AACD,YAAAJ,IAAG,QAAQ;AAAA,eACV;AACD,YAAAA,IAAG,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACxB,wBAAY;AACZ,kBAAM;AACN,sBAAU,WAAY;AAClB,kBAAI,GAAG,SAAS,WAAW;AAC3B,kBAAI,KAAKA;AACT,qBAAO,YAAY,MAAM,SAAU,IAAI;AACnC,wBAAQ,GAAG;AAAA,uBACF;AACD,wBAAI;AACJ,wBAAI;AACA,2BAAK,WAAW,MAAM,QAAQ,SAAS,KAAK,IAAI,YAAY,QAAQ,KAAK,GAAG,CAAC,UAAU,MAAM,YAAY,QAAQ,KAAK,GAAG;AACrH,+BAAO,UAAU;AACjB,gCAAQ,QAAQ,KAAK,KAAK,CAAC,EAAE,KAAK,SAAUK,YAAW;AACnD,8BAAIA,WAAU,MAAM;AAChB,4BAAAD,MAAK;AACL,gCAAI,mBAAmB,QAAW;AAC9B,+CAAiBC;AAAA,4BACrB;AAAA,0BACJ,WACS,QAAQ,GAAG;AAEhB;AACA,oCAAQA,UAAS;AAAA,0BACrB;AAAA,wBACJ,GAAG,SAAU,KAAK;AAAE,iCAAOD,MAAK,GAAG;AAAA,wBAAG,CAAC;AAAA,sBAC3C;AAAA,oBACJ,SACO,OAAP;AAAgB,4BAAM,EAAE,OAAO,MAAM;AAAA,oBAAG,UACxC;AACI,0BAAI;AACA,4BAAI,aAAa,CAAC,UAAU,SAASJ,MAAK,QAAQ;AAAS,0BAAAA,IAAG,KAAK,OAAO;AAAA,sBAC9E,UACA;AAAU,4BAAI;AAAK,gCAAM,IAAI;AAAA,sBAAO;AAAA,oBACxC;AACA,2BAAO,CAAC,GAAa,IAAI,QAAQ,SAAU,SAAS;AAAE,6BAAQ,UAAU;AAAA,oBAAU,CAAC,CAAC;AAAA,uBACnF;AACD,gCAAY,GAAG,KAAK;AACpB,wBAAI,EAAE,cAAc;AAAY,6BAAO,CAAC,GAAa,CAAC;AACtD,2BAAO,CAAC,GAAaG,MAAK,UAAU,KAAK,CAAC;AAAA,uBACzC;AACD,uBAAG,KAAK;AACR,uBAAG,QAAQ;AAAA,uBACV;AAAG,2BAAO,CAAC,CAAY;AAAA;AAAA,cAEpC,CAAC;AAAA,YACL;AACA,YAAAH,IAAG,QAAQ;AAAA,eACV;AACD,gBAAI,CAAC,CAAC;AAAS,qBAAO,CAAC,GAAa,CAAC;AACrC,mBAAO,CAAC,GAAc,QAAQ,CAAC;AAAA,eAC9B;AACD,YAAAA,IAAG,KAAK;AACR,mBAAO,CAAC,GAAa,CAAC;AAAA,eACrB;AAAG,mBAAO,CAAC,GAAc,kBAAkB,eAAe,KAAK;AAAA,eAC/D;AACD,YAAAI,MAAK;AACL,mBAAO,CAAC,GAAa,QAAQ,KAAK,MAAM,IAAI,SAAU,MAAM;AAAE,qBAAO,KAAK,UAAU,KAAK,OAAO;AAAA,YAAG,CAAC,CAAC,CAAC;AAAA,eACrG;AACD,YAAAJ,IAAG,KAAK;AACR,mBAAO,CAAC,CAAgB;AAAA,eACvB;AAAG,mBAAO,CAAC,CAAY;AAAA;AAAA,MAEpC,CAAC;AAAA,IACL,CAAC;AAAA,EAAG,CAAC;AACT;AACA,SAAS,MAAM,YAAY;AACvB,MAAI,QAAQ;AACZ,MAAI,QAAQ,aAAa,YAAY,EAAE,aAAa,KAAK,CAAC;AAC1D,SAAO,IAAI,SAAS,SAAUG,OAAMC,OAAM;AAAE,WAAO,UAAU,OAAO,QAAQ,QAAQ,WAAY;AAC5F,UAAI,UAAU,SAAS;AACvB,UAAIE,SAAQ;AACZ,aAAO,YAAY,MAAM,SAAUN,KAAI;AACnC,gBAAQA,IAAG;AAAA,eACF;AACD,gBAAI,CAAC,MAAM,QAAQ;AACf,cAAAI,MAAK;AACL,qBAAO,CAAC,CAAY;AAAA,YACxB;AACA,uBAAW,CAAC;AACZ,sBAAU;AACV,YAAAA,MAAK,KAAK,WAAY;AAClB,kBAAI,KAAKJ;AACT,wBAAU;AACV,kBAAI;AACA,yBAAS,aAAa,SAAS,QAAQ,GAAG,eAAe,WAAW,KAAK,GAAG,CAAC,aAAa,MAAM,eAAe,WAAW,KAAK,GAAG;AAC9H,sBAAI,UAAU,aAAa;AAC3B,0BAAQ;AAAA,gBACZ;AAAA,cACJ,SACO,OAAP;AAAgB,sBAAM,EAAE,OAAO,MAAM;AAAA,cAAG,UACxC;AACI,oBAAI;AACA,sBAAI,gBAAgB,CAAC,aAAa,SAASA,MAAK,WAAW;AAAS,oBAAAA,IAAG,KAAK,UAAU;AAAA,gBAC1F,UACA;AAAU,sBAAI;AAAK,0BAAM,IAAI;AAAA,gBAAO;AAAA,cACxC;AAAA,YACJ,CAAC;AACD,YAAAA,IAAG,QAAQ;AAAA,eACV;AACD,YAAAA,IAAG,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACxB,mBAAO,CAAC,GAAa,QAAQ,IAAI,MAAM,IAAI,SAAU,MAAM,GAAG;AAAE,qBAAO,UAAUM,QAAO,QAAQ,QAAQ,WAAY;AAC5G,oBAAI,WAAWN;AACf,uBAAO,YAAY,MAAM,SAAU,IAAI;AACnC,0BAAQ,GAAG;AAAA,yBACF;AACD,yBAAG,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACxB,yBAAG,QAAQ;AAAA,yBACV;AACD,0BAAI,CAAC,CAAC;AAAS,+BAAO,CAAC,GAAa,CAAC;AACrC,8BAAQ,QAAQ,KAAK,KAAK,CAAC,EAAE,KAAK,SAAUK,YAAW;AAAE,+BAAO,SAAS,GAAGA,UAAS;AAAA,sBAAG,GAAG,SAAU,KAAK;AAAE,+BAAOD,MAAK,GAAG;AAAA,sBAAG,CAAC;AAC/H,6BAAO,CAAC,GAAa,IAAI,QAAQ,SAAU,SAAS;AAC5C,iCAAS,KAAK;AAAA,sBAClB,CAAC,CAAC;AAAA,yBACL;AACD,kCAAY,GAAG,KAAK;AACpB,0BAAI,EAAE,cAAc;AAAY,+BAAO,CAAC,GAAa,CAAC;AACtD,0BAAI,UAAU,MAAM;AAChB,yCAAiB;AACjB,+BAAO,CAAC,CAAY;AAAA,sBACxB;AACA,6BAAO,CAAC,GAAaD,MAAK,UAAU,KAAK,CAAC;AAAA,yBACzC;AACD,yBAAG,KAAK;AACR,yBAAG,QAAQ;AAAA,yBACV;AAAG,6BAAO,CAAC,GAAa,CAAC;AAAA,yBACzB;AAAG,6BAAO,CAAC,GAAa,CAAC;AAAA,yBACzB;AACD,sBAAAH,MAAK,KAAK;AACV,0BAAI,CAACA;AAAI,+BAAO,CAAC,GAAa,CAAC;AAC/B,6BAAO,CAAC,GAAa,KAAK,OAAO,CAAC;AAAA,yBACjC;AACD,sBAAAA,MAAM,GAAG,KAAK;AACd,yBAAG,QAAQ;AAAA,yBACV;AACD,6BAAO,CAAC,CAAgB;AAAA,yBACvB;AAAG,6BAAO,CAAC,CAAY;AAAA;AAAA,gBAEpC,CAAC;AAAA,cACL,CAAC;AAAA,YAAG,CAAC,CAAC,CAAC;AAAA,eACV;AACD,YAAAA,IAAG,KAAK;AACR,mBAAO,CAAC,GAAc,kBAAkB,eAAe,KAAK;AAAA,eAC3D;AACD,YAAAI,MAAK;AACL,mBAAO,CAAC,CAAgB;AAAA,eACvB;AAAG,mBAAO,CAAC,CAAY;AAAA;AAAA,MAEpC,CAAC;AAAA,IACL,CAAC;AAAA,EAAG,CAAC;AACT;AACA,SAAS,IAAI,YAAY;AACrB,MAAI,QAAQ;AACZ,MAAI,QAAQ,aAAa,YAAY,EAAE,cAAc,KAAK,CAAC;AAC3D,SAAO,IAAI,SAAS,SAAUD,OAAMC,OAAM;AAAE,WAAO,UAAU,OAAO,QAAQ,QAAQ,WAAY;AAC5F,UAAI,SAAS,SAAS,YAAY;AAClC,aAAO,YAAY,MAAM,SAAUJ,KAAI;AACnC,gBAAQA,IAAG;AAAA,eACF;AACD,gBAAI,CAAC,MAAM,QAAQ;AACf,cAAAI,MAAK;AACL,qBAAO,CAAC,GAAc,CAAC,CAAC;AAAA,YAC5B;AACA,sBAAU;AACV,YAAAA,MAAK,KAAK,WAAY;AAClB,sBAAQ;AACR,wBAAU;AAAA,YACd,CAAC;AACD,YAAAJ,IAAG,QAAQ;AAAA,eACV;AACD,YAAAA,IAAG,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACxB,YAAAA,IAAG,QAAQ;AAAA,eACV;AACD,gBAAI,CAAC,CAAC;AAAS,qBAAO,CAAC,GAAa,CAAC;AACrC,oBAAQ,IAAI,MAAM,IAAI,SAAU,MAAM;AAAE,qBAAO,KAAK,KAAK;AAAA,YAAG,CAAC,CAAC,EAAE,KAAK,SAAUO,aAAY;AAAE,qBAAO,QAAQA,WAAU;AAAA,YAAG,GAAG,SAAU,KAAK;AAAE,qBAAOH,MAAK,GAAG;AAAA,YAAG,CAAC;AAChK,mBAAO,CAAC,GAAa,IAAI,QAAQ,SAAU,SAAS;AAAE,qBAAQ,UAAU;AAAA,YAAU,CAAC,CAAC;AAAA,eACnF;AACD,yBAAaJ,IAAG,KAAK;AACrB,gBAAI,eAAe,QAAW;AAC1B,qBAAO,CAAC,CAAY;AAAA,YACxB;AACA,qBAAS,WAAW,IAAI,SAAU,WAAW;AAAE,qBAAO,UAAU;AAAA,YAAO,CAAC;AACxE,gBAAI,WAAW,KAAK,SAAU,WAAW;AAAE,qBAAO,UAAU;AAAA,YAAM,CAAC,GAAG;AAClE,qBAAO,CAAC,GAAc,MAAM;AAAA,YAChC;AACA,mBAAO,CAAC,GAAaG,MAAK,MAAM,CAAC;AAAA,eAChC;AACD,YAAAH,IAAG,KAAK;AACR,mBAAO,CAAC,GAAa,CAAC;AAAA,eACrB;AAAG,mBAAO,CAAC,GAAa,CAAC;AAAA,eACzB;AACD,YAAAI,MAAK;AACL,mBAAO,CAAC,GAAa,QAAQ,IAAI,MAAM,IAAI,SAAU,MAAM;AAAE,qBAAO,KAAK,UAAU,KAAK,OAAO;AAAA,YAAG,CAAC,CAAC,CAAC;AAAA,eACpG;AACD,YAAAJ,IAAG,KAAK;AACR,mBAAO,CAAC,CAAgB;AAAA,eACvB;AAAG,mBAAO,CAAC,CAAY;AAAA;AAAA,MAEpC,CAAC;AAAA,IACL,CAAC;AAAA,EAAG,CAAC;AACT;AACA,SAAS,OAAO,YAAY;AACxB,MAAI,QAAQ;AACZ,MAAI,QAAQ,aAAa,YAAY;AAAA,IACjC,aAAa;AAAA,IACb,cAAc;AAAA,EAClB,CAAC;AACD,SAAO,IAAI,SAAS,SAAUG,OAAMC,OAAM;AAAE,WAAO,UAAU,OAAO,QAAQ,QAAQ,WAAY;AAC5F,UAAI,SAAS,UAAU,SAAS,cAAc;AAC9C,UAAIE,SAAQ;AACZ,aAAO,YAAY,MAAM,SAAUN,KAAI;AACnC,gBAAQA,IAAG;AAAA,eACF;AACD,gBAAI,CAAC,MAAM,QAAQ;AACf,cAAAI,MAAK;AACL,qBAAO,CAAC,GAAc,CAAC,CAAC;AAAA,YAC5B;AACA,uBAAW,CAAC;AACZ,sBAAU;AACV,YAAAA,MAAK,KAAK,WAAY;AAClB,kBAAI,KAAKJ;AACT,sBAAQ;AACR,kBAAI;AACA,yBAAS,aAAa,SAAS,QAAQ,GAAG,eAAe,WAAW,KAAK,GAAG,CAAC,aAAa,MAAM,eAAe,WAAW,KAAK,GAAG;AAC9H,sBAAI,WAAW,aAAa;AAC5B,2BAAS;AAAA,gBACb;AAAA,cACJ,SACO,OAAP;AAAgB,sBAAM,EAAE,OAAO,MAAM;AAAA,cAAG,UACxC;AACI,oBAAI;AACA,sBAAI,gBAAgB,CAAC,aAAa,SAASA,MAAK,WAAW;AAAS,oBAAAA,IAAG,KAAK,UAAU;AAAA,gBAC1F,UACA;AAAU,sBAAI;AAAK,0BAAM,IAAI;AAAA,gBAAO;AAAA,cACxC;AACA,wBAAU;AAAA,YACd,CAAC;AACD,YAAAA,IAAG,QAAQ;AAAA,eACV;AACD,YAAAA,IAAG,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACxB,oBAAQ,IAAI,MAAM,IAAI,SAAU,MAAM;AAAE,qBAAO,KAAK,KAAK;AAAA,YAAG,CAAC,CAAC,EAAE,KAAK,SAAU,YAAY;AAAE,qBAAO,QAAQ,UAAU;AAAA,YAAG,GAAG,SAAU,KAAK;AAAE,qBAAOI,MAAK,GAAG;AAAA,YAAG,CAAC;AAChK,mBAAO,CAAC,GAAa,IAAI,QAAQ,SAAU,SAAS;AAAE,qBAAQ,UAAU;AAAA,YAAU,CAAC,CAAC;AAAA,eACnF;AACD,2BAAeJ,IAAG,KAAK;AACvB,gBAAI,iBAAiB,QAAW;AAC5B,qBAAO,CAAC,CAAY;AAAA,YACxB;AACA,uBAAW,aAAa,IAAI,SAAU,WAAW;AAAE,qBAAO,UAAU;AAAA,YAAO,CAAC;AAC5E,gBAAI,aAAa,MAAM,SAAU,WAAW;AAAE,qBAAO,UAAU;AAAA,YAAM,CAAC,GAAG;AACrE,qBAAO,CAAC,GAAc,QAAQ;AAAA,YAClC;AAEA,mBAAO,CAAC,GAAaG,MAAK,SAAS,MAAM,CAAC,CAAC;AAAA,eAC1C;AAED,YAAAH,IAAG,KAAK;AACR,mBAAO,CAAC,GAAa,QAAQ,IAAI,MAAM,IAAI,SAAU,MAAM,GAAG;AAAE,qBAAO,UAAUM,QAAO,QAAQ,QAAQ,WAAY;AAC5G,oBAAI;AACJ,uBAAO,YAAY,MAAM,SAAUN,KAAI;AACnC,0BAAQA,IAAG;AAAA,yBACF;AACD,0BAAI,aAAa,GAAG,MAAM;AACtB,+BAAO,CAAC,GAAc,aAAa,GAAG,KAAK;AAAA,sBAC/C;AACA,sBAAAA,IAAG,QAAQ;AAAA,yBACV;AACD,0BAAI,CAAC,CAAC;AAAS,+BAAO,CAAC,GAAa,CAAC;AACrC,8BAAQ,QAAQ,KAAK,KAAK,CAAC,EAAE,KAAK,SAAUK,YAAW;AAAE,+BAAO,SAAS,GAAGA,UAAS;AAAA,sBAAG,GAAG,SAAU,KAAK;AAAE,+BAAOD,MAAK,GAAG;AAAA,sBAAG,CAAC;AAC/H,6BAAO,CAAC,GAAa,IAAI,QAAQ,SAAU,SAAS;AAAE,+BAAQ,SAAS,KAAK;AAAA,sBAAU,CAAC,CAAC;AAAA,yBACvF;AACD,kCAAYJ,IAAG,KAAK;AACpB,0BAAI,cAAc,QAAW;AACzB,+BAAO,CAAC,GAAc,aAAa,GAAG,KAAK;AAAA,sBAC/C,WACS,UAAU,MAAM;AACrB,+BAAO,CAAC,GAAc,UAAU,KAAK;AAAA,sBACzC;AACA,+BAAS,KAAK,UAAU;AACxB,6BAAO,CAAC,GAAaG,MAAK,SAAS,MAAM,CAAC,CAAC;AAAA,yBAC1C;AACD,sBAAAH,IAAG,KAAK;AACR,6BAAO,CAAC,GAAa,CAAC;AAAA,yBACrB;AAAG,6BAAO,CAAC,CAAY;AAAA;AAAA,gBAEpC,CAAC;AAAA,cACL,CAAC;AAAA,YAAG,CAAC,CAAC,CAAC;AAAA,eACV;AAAG,mBAAO,CAAC,GAAcA,IAAG,KAAK,CAAC;AAAA,eAClC;AACD,YAAAI,MAAK;AACL,mBAAO,CAAC,GAAa,QAAQ,IAAI,MAAM,IAAI,SAAU,MAAM;AAAE,qBAAO,KAAK,UAAU,KAAK,OAAO;AAAA,YAAG,CAAC,CAAC,CAAC;AAAA,eACpG;AACD,YAAAJ,IAAG,KAAK;AACR,mBAAO,CAAC,CAAgB;AAAA,eACvB;AAAG,mBAAO,CAAC,CAAY;AAAA;AAAA,MAEpC,CAAC;AAAA,IACL,CAAC;AAAA,EAAG,CAAC;AACT;;;AzLv4BA,IAAM,cAAc;AAEpB,SAAS,kBAAkB,QAAQ,MAAM,QAAQ;AAC/C,QAAM,WAAW,KAAK,MAAM,GAAG,EAAE,OAAO,OAAO;AAC/C;AACE,eAAW,SAAS,QAAQ;AAC1B,YAAM,gBAAgB,MAAM;AAC5B,UAAI,SAAS,SAAS,cAAc,UAAU,CAAC,MAAM,YAAY,SAAS,SAAS,cAAc,QAAQ;AACvG;AAAA,MACF;AACA,eAAS,QAAQ,GAAG,QAAQ,cAAc,QAAQ,SAAS;AACzD,cAAM,QAAQ,cAAc;AAC5B,YAAI,CAAC,OAAO;AACV;AAAA,QACF;AACA,YAAI,SAAS,WAAW,OAAO;AAC7B,mBAAS;AAAA,QACX;AAAA,MACF;AACA,YAAMQ,WAAU,MAAM;AACtB,UAAIA,aAAY,UAAUA,aAAY,QAAQ;AAC5C;AAAA,MACF;AACA,YAAM,SAAS,CAAC;AAChB,iBAAW,EAAE,MAAM,MAAM,MAAM,KAAK,MAAM,QAAQ;AAChD,YAAI,SAAS,KAAK;AAChB,iBAAO,QAAQ,SAAS;AAAA,QAC1B,OAAO;AACL,iBAAO,QAAQ,SAAS,MAAM,KAAK,EAAE,KAAK,GAAG;AAAA,QAC/C;AAAA,MACF;AACA,aAAO,EAAE,SAAAA,UAAS,OAAO;AAAA,IAC3B;AACJ;AAEA,IAAI;AACJ,IAAM,oBAAoB,CAAC,WAAW;AACpC,gBAAc;AAChB;AACA,eAAe,cAAc,OAAO,MAAM;AACxC,MAAI,MAAM,WAAW,MAAM,GAAG;AAC5B,WAAO,MAAM,MAAM,OAAO,IAAI;AAAA,EAChC;AACA,MAAI,MAAM,IAAI,IAAI,OAAO,iBAAiB;AAC1C,QAAMC,WAAU,IAAI,QAAQ,IAAI,MAAM,IAAI;AAC1C,QAAMD,WAAU,kBAAkB,aAAa,IAAI,UAAUC,SAAQ,OAAO,YAAY,CAAC;AACzF,MAAI,WAAW,OAAO,OAAO;AAAA,IAC3B,SAAAA;AAAA,IACA,QAAQD,SAAQ;AAAA,IAChB,KAAK,CAAC;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,EACT,CAAC;AACD,QAAM,WAAW,MAAMA,SAAQ,QAAQ,QAAQ;AAC/C,SAAO;AACT;AAEA,IAAM,4BAA4B;AAClC,IAAM,iBAAiB;AACvB,IAAM,oBAAoB;AAC1B,IAAM,gCAAgC;AACtC,IAAM,+BAA+B;AACrC,IAAM,oBAAoB;AAC1B,IAAM,mBAAmB;AACzB,SAAS,SAAS,KAAK,OAAO,KAAK;AACjC,MAAI,eAAe;AACnB,MAAI,OAAO,iBAAiB,UAAU;AACpC,mBAAe,EAAE,QAAQ,aAAa;AAAA,EACxC,WAAW,OAAO,aAAa,WAAW,aAAa;AACrD,iBAAa,SAAS;AAAA,EACxB;AACA,MAAI,QAAQ,IAAI;AACd,UAAM;AAAA,EACR;AACA,MAAI,UAAU,IAAI,QAAQ,aAAa,OAAO;AAC9C,UAAQ,IAAI,gBAAgB,GAAG;AAC/B,QAAM,WAAW,IAAI,SAAS,MAAM;AAAA,IAClC,GAAG;AAAA,IACH;AAAA,EACF,CAAC;AACD,SAAO;AACT;AACA,IAAM,sBAAsC,oBAAI,IAAI,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAClF,SAAS,mBAAmB,UAAU;AACpC,SAAO,YAAY,oBAAoB,YAAY,oBAAoB,IAAI,SAAS,MAAM;AAC5F;AACA,IAAM,gBAAN,cAA4B,MAAM;AAAA,EAQhC,YAAY,UAAU;AACpB,QAAI,UAAU,KAAK,UAAU;AAAA,MAC3B,OAAO;AAAA,MACP,QAAQ,SAAS;AAAA,MACjB,SAAS,SAAS;AAAA,MAClB,SAAS,CAAC,GAAG,SAAS,QAAQ,QAAQ,CAAC;AAAA,IACzC,CAAC;AACD,UAAM,OAAO;AAdf;AACA;AACA,gCAAO;AACP;AACA;AACA;AACA;AAmBA;AACA;AAOA;AAlBE,SAAK,SAAS,SAAS;AACvB,SAAK,UAAU,IAAI,IAAI,CAAC,GAAG,SAAS,QAAQ,QAAQ,CAAC,CAAC;AACtD,SAAK,MAAM,SAAS;AACpB,SAAK,KAAK,SAAS;AACnB,SAAK,aAAa,SAAS;AAC3B,SAAK,aAAa,SAAS;AAC3B,SAAK,WAAW;AAChB,SAAK,OAAO,SAAS;AACrB,SAAK,WAAW,MAAM;AAAA,EACxB;AAAA,EAGA,QAAQ;AACN,WAAO,KAAK,SAAS;AAAA,EACvB;AAAA,EACA,IAAI,OAAO;AACT,WAAO,KAAK,SAAS,EAAE;AAAA,EACzB;AAAA,EAEA,MAAM,cAAc;AAClB,WAAO,MAAM,KAAK,SAAS,EAAE,YAAY;AAAA,EAC3C;AAAA,EACA,MAAM,OAAO;AACX,WAAO,MAAM,KAAK,SAAS,EAAE,KAAK;AAAA,EACpC;AAAA,EACA,MAAM,WAAW;AACf,WAAO,MAAM,KAAK,SAAS,EAAE,SAAS;AAAA,EACxC;AAAA,EACA,MAAM,OAAO;AACX,WAAO,MAAM,KAAK,SAAS,EAAE,KAAK;AAAA,EACpC;AAAA,EACA,MAAM,OAAO;AACX,WAAO,MAAM,KAAK,SAAS,EAAE,KAAK;AAAA,EACpC;AACF;AAEA,SAAS,YAAY,IAAI,SAAS;AAChC,SAAO,MAAM,OAAO,UAAU;AAC5B,QAAI,YAAY,gBAAgB,KAAK;AACrC,QAAI,SAAS,MAAM,oBAAoB,MAAM,GAAG,SAAS,GAAG,OAAO;AACnE,QAAI,UAAU,cAAc,KAAK;AAC/B,aAAO,SAAS,UAAU,cAAc,KAAK;AAAA,QAC3C,SAAS,UAAU;AAAA,MACrB,CAAC;AAAA,IACH;AACA,aAAS,qBAAqB,WAAW,MAAM;AAC/C,WAAO,IAAI,SAAS,QAAQ;AAAA,MAC1B,QAAQ,UAAU,cAAc;AAAA,MAChC,SAAS,UAAU;AAAA,IACrB,CAAC;AAAA,EACH;AACF;AACA,SAAS,gBAAgB,OAAO;AAC9B,MAAI,kBAAkB,IAAI,QAAQ;AAAA,IAChC,gBAAgB;AAAA,EAClB,CAAC;AACD,QAAM,WAAW,MAAM,QAAQ,QAAQ,IAAI,kBAAkB;AAC7D,MAAI,aAAa;AACjB,WAAS,cAAc,MAAM;AAC3B,iBAAa;AAAA,EACf;AACA,WAAS,gBAAgB;AACvB,WAAO;AAAA,EACT;AACA,QAAM,YAAY,OAAO,OAAO;AAAA,IAC9B,SAAS,MAAM;AAAA,IACf,SAAS;AAAA,IACT,eAAe,CAAC;AAAA,IAChB,MAAM,CAAC;AAAA,IACP,KAAK,MAAM;AAAA,IACX,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO;AAAA,EACT,CAAC;AACD,SAAO;AACT;AACA,SAAS,qBAAqB,WAAW,QAAQ;AAC/C,SAAO;AACT;AAEA,IAAM,cAAc,cAAc;AAClC,IAAM,gBAAgB,CAAC,SAAS,MAAM;AAEtC,IAAM,aAAa,SAAO,IAAI,OAAO,IAAI,OAAO,IAAI,IAAI,UAAU;AAElE,IAAM,eAAe,WAAS;AAC5B,QAAM,uBAAuB,oBAAI,IAAI;AAGrC,WAAS,WAAW,KAAK;AACvB,QAAI,IAAI,KAAK;AACX,aAAO,IAAI;AAAA,IACb;AAEA,QAAI,KAAK,SAAS,cAAc,aAAa,IAAI,MAAM;AAEvD,QAAI,IAAI;AACN,UAAI,GAAG,QAAQ,YAAY,MAAM,IAAI,KAAK;AACxC,YAAI,GAAG,YAAY;AAEjB,aAAG,WAAW,YAAY,EAAE;AAAA,QAC9B;AAGA,aAAK,SAAS,cAAc,IAAI,GAAG;AAAA,MACrC;AAGA,SAAG,gBAAgB,SAAS;AAAA,IAC9B,OAAO;AAEL,WAAK,SAAS,cAAc,IAAI,GAAG;AAAA,IACrC;AAEA,WAAO;AAAA,EACT;AAEA,QAAM,UAAU;AAAA,IACd,cAAc,SAAO;AACnB,UAAI,UAAU,WAAW,GAAG;AAE5B,UAAI,cAAc,QAAQ,IAAI,GAAG,MAAM,IAAI;AAEzC,YAAI,CAAC,qBAAqB,IAAI,OAAO,GAAG;AACtC,+BAAqB,IAAI,SAAS,CAAC,CAAC;AAAA,QACtC;AAEA,YAAI,YAAY,qBAAqB,IAAI,OAAO;AAChD,YAAI,QAAQ,UAAU;AACtB,oBAAY,CAAC,GAAG,WAAW,GAAG;AAE9B,6BAAqB,IAAI,SAAS,SAAS;AAE3C,YAAI,CAAC,UAAU;AACb,cAAI,UAAU,WAAW,GAAG;AAC5B,cAAI,MAAM;AACV,iBAAO,SAAS,MAAM,IAAI,KAAK;AAC/B,cAAI,cAAc;AAElB,mBAAS,IAAI,QAAQ,GAAG,KAAK,GAAG,KAAK;AACnC,gBAAI,UAAU,MAAM,MAAM;AACxB,4BAAc,UAAU;AACxB;AAAA,YACF;AAAA,UACF;AAEA,cAAI,QAAQ,cAAc,SAAS,MAAM;AACvC,qBAAS,KAAK,YAAY,OAAO;AAAA,UACnC;AAEA,cAAI,eAAe,YAAY,KAAK;AAClC,qBAAS,KAAK,YAAY,YAAY,GAAG;AAAA,UAC3C;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAEA,UAAI,CAAC,UAAU;AACb,YAAI,UAAU,WAAW,GAAG;AAC5B,YAAI,MAAM;AACV,eAAO,SAAS,MAAM,IAAI,KAAK;AAE/B,YAAI,QAAQ,cAAc,SAAS,MAAM;AACvC,mBAAS,KAAK,YAAY,OAAO;AAAA,QACnC;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA,IACA,iBAAiB,CAAC,KAAK,UAAU;AAC/B,YAAM,UAAU,WAAW,GAAG;AAE9B,UAAI,IAAI,KAAK;AACX,cAAM,IAAI,qBAAqB,IAAI,OAAO;AAE1C,YAAI,GAAG;AACL,cAAI,IAAI,IAAI,YAAY;AACtB,gBAAI,IAAI,WAAW,YAAY,IAAI,GAAG;AAEtC,qBAAS,IAAI,QAAQ,GAAG,KAAK,GAAG,KAAK;AACnC,kBAAI,EAAE,MAAM,MAAM;AAChB,yBAAS,KAAK,YAAY,EAAE,GAAG,GAAG;AAAA,cACpC;AAAA,YACF;AAAA,UACF;AAEA,YAAE,SAAS;AACX,+BAAqB,IAAI,SAAS,CAAC;AAAA,QACrC,OAAO;AACL,cAAI,IAAI,IAAI,YAAY;AACtB,gBAAI,IAAI,WAAW,YAAY,IAAI,GAAG;AAAA,UACxC;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,MAAI,UAAU;AACZ,YAAQ,eAAe,aAAW;AAChC,YAAM;AAAA,QACJ,OAAO,CAAC;AAAA,MACV,IAAI;AAEJ,UAAI,cAAc,QAAQ,QAAQ,GAAG,MAAM,IAAI;AAC7C,cAAM,QAAQ,KAAK,UAAU,UAAQ;AACnC,gBAAM,WAAW,KAAK,MAAM,QAAQ,KAAK,MAAM;AAC/C,gBAAM,WAAW,QAAQ,MAAM,QAAQ,QAAQ,MAAM;AACrD,iBAAO,KAAK,QAAQ,QAAQ,OAAO,aAAa;AAAA,QAClD,CAAC;AAED,YAAI,UAAU,IAAI;AAChB,eAAK,OAAO,OAAO,CAAC;AAAA,QACtB;AAAA,MACF;AAEA,WAAK,KAAK,OAAO;AAAA,IACnB;AAEA,QAAI,MAAM,QAAQ,MAAM,IAAI,MAAM,OAAO;AACvC,YAAM,MAAM,yDAAyD;AAAA,IACvE;AAAA,EACF;AAEA,SAAO,gBAAgB,YAAY,UAAU;AAAA,IAC3C,OAAO;AAAA,IAEP,IAAI,WAAW;AACb,aAAO,MAAM;AAAA,IACf;AAAA,EAEF,CAAC;AACH;AAEA,IAAM,UAAU,CAAC,KAAK,UAAU;AAC9B,QAAM,KAAK,eAAe;AAC1B,QAAM,IAAI,WAAW,WAAW;AAChC,MAAI,CAAC;AAAG,UAAM,IAAI,MAAM,wCAAwC;AAChE,UAAQ;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IAEA,IAAI,OAAO;AACT,aAAO,MAAM,QAAQ,MAAM;AAAA,IAC7B;AAAA,EAEF,CAAC;AACD,SAAO;AACT;AACA,SAAS,QAAQ,SAAS;AACxB,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,WAAW,WAAW;AAC1B,qBAAmB,MAAM;AACvB,QAAI,CAAC,UAAU;AACb,UAAI,QAAQ,aAAa,OAAO;AAChC,gBAAU,MAAM,gBAAgB,SAAS,KAAK,CAAC;AAAA,IACjD;AAAA,EACF,CAAC;AAED,MAAI,UAAU;AACZ,iBAAa,OAAO;AACpB,WAAO;AAAA,EACT;AACF;AACA,SAAS,WAAW,MAAM;AACxB,SAAO,KAAK,IAAI,SAAO;AACrB,UAAM,OAAO,OAAO,KAAK,IAAI,KAAK;AAClC,UAAM,QAAQ,KAAK,IAAI,OAAK,MAAM,aAAa,KAAK,IAAI,MAAM,IAAI,MAAM,KAAK,EAAE,KAAK,EAAE;AACtF,WAAO,IAAI,MAAM,WAAW,IAAI,IAAI,gBAAgB,IAAI,MAAM,SAE9D,MAAM,QAAQ,IAAI,MAAM,QAAQ,IAAI,IAAI,MAAM,SAAS,KAAK,EAAE,IAAI,IAAI,MAAM,aAAa,IAAI,SAAS,IAAI,IAAI,gBAAgB,IAAI,MAAM;AAAA,EAC1I,CAAC,EAAE,KAAK,EAAE;AACZ;AACA,IAAM,QAAQ,WAAS,QAAQ,SAAS,KAAK;AAC7C,IAAM,SAAS,WAAS,QAAQ,QAAQ,KAAK;AAE7C,SAAS,UAAU,QAAQ,MAAMA,UAAS;AACtC,SAAO,iBAAiB,MAAMA,QAAO;AACrC,SAAO,MAAM,OAAO,oBAAoB,MAAMA,QAAO;AACzD;AACA,SAAS,UAAU,CAAC,OAAO,QAAQ,GAAGE,MAAK,KAAK;AAC5C,SAAO,CAACA,OAAM,MAAMA,KAAI,MAAM,CAAC,IAAI,OAAO,MAAM,CAAC,MAAM,SAAS,IAAI,CAAC,CAAC,IAAI,QAAQ;AACtF;AACA,SAAS,cAAc,UAAU;AAE7B,MAAI;AACA,WAAO,SAAS,cAAc,QAAQ;AAAA,EAC1C,SACO,GAAP;AACI,WAAO;AAAA,EACX;AACJ;AACA,SAAS,aAAa,MAAM,aAAa;AACrC,QAAM,KAAK,cAAc,IAAI,MAAM;AACnC,MAAI,IAAI;AACJ,OAAG,eAAe;AAAA,EACtB,WACS,aAAa;AAClB,WAAO,SAAS,GAAG,CAAC;AAAA,EACxB;AACJ;AACA,SAAS,kBAAkBA,MAAK,KAAK,MAAM,OAAO;AAC9C,MAAI,SAAS;AACb,QAAMC,QAAO,CAAC,UAAW,OAAO,UAAU,WAAW,EAAE,MAAM,IAAI;AACjE,QAAM,SAAS,UAAU,aAAaA,MAAKD,KAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,GAAG,QAAW,UAAQ;AAC9G,KAAC,UAAU,IAAI,IAAI;AACnB,WAAO;AAAA,EACX,CAAC;AACD,UACI,UAAU,KAAK,CAAC,QAAQA,KAAI,MAAM;AAC9B,aAAS;AACT,WAAO,GAAGC,MAAK,KAAK,CAAC;AACrB,aAAS;AAAA,EACb,CAAC,CAAC;AACN,SAAO;AAAA,IACH;AAAA,IACA;AAAA,EACJ;AACJ;AACA,SAAS,qBAAqB,aAAa;AACvC,MAAI,CAAC,aAAa;AACd,WAAO;AAAA,MACH,QAAQ,aAAa,EAAE,OAAO,GAAG,CAAC;AAAA,IACtC;AAAA,EACJ,WACS,MAAM,QAAQ,WAAW,GAAG;AACjC,WAAO;AAAA,MACH,QAAQ;AAAA,IACZ;AAAA,EACJ;AACA,SAAO;AACX;AACA,SAAS,kBAAkB,KAAK;AAC5B,SAAO;AAAA,IACH,QAAQ,CAAC,MAAM,KAAK,UAAQ,OAAO,OAAO,KAAK,IAAI,CAAC;AAAA,EACxD;AACJ;AACA,SAAS,kBAAkB;AACvB,SAAO,kBAAkB,OAAO;AAAA,IAC5B,OAAO,OAAO,SAAS,WAAW,OAAO,SAAS,SAAS,OAAO,SAAS;AAAA,IAC3E,OAAO,QAAQ;AAAA,EACnB,IAAI,CAAC,EAAE,OAAO,SAAS,QAAQ,MAAM,MAAM;AACvC,QAAI,SAAS;AACT,aAAO,QAAQ,aAAa,OAAO,IAAI,KAAK;AAAA,IAChD,OACK;AACD,aAAO,QAAQ,UAAU,OAAO,IAAI,KAAK;AAAA,IAC7C;AACA,iBAAa,OAAO,SAAS,KAAK,MAAM,CAAC,GAAG,MAAM;AAAA,EACtD,GAAG,YAAU,UAAU,QAAQ,YAAY,MAAM,OAAO,CAAC,GAAG;AAAA,IACxD,IAAI,WAAS,OAAO,QAAQ,GAAG,KAAK;AAAA,EACxC,CAAC;AACL;AAEA,IAAM,iBAAiB;AACvB,IAAM,gBAAgB;AACtB,SAAS,UAAU,MAAM,YAAY,OAAO;AACxC,QAAM,IAAI,KAAK,QAAQ,eAAe,EAAE;AACxC,SAAO,IAAK,aAAa,QAAQ,KAAK,CAAC,IAAI,IAAI,MAAM,IAAK;AAC9D;AACA,SAAS,YAAY,MAAM,MAAM,MAAM;AACnC,MAAI,eAAe,KAAK,IAAI,GAAG;AAC3B,WAAO;AAAA,EACX;AACA,QAAM,WAAW,UAAU,IAAI;AAC/B,QAAM,WAAW,QAAQ,UAAU,IAAI;AACvC,MAAI,SAAS;AACb,MAAI,CAAC,YAAY,KAAK,WAAW,GAAG,GAAG;AACnC,aAAS;AAAA,EACb,WACS,SAAS,YAAY,EAAE,QAAQ,SAAS,YAAY,CAAC,MAAM,GAAG;AACnE,aAAS,WAAW;AAAA,EACxB,OACK;AACD,aAAS;AAAA,EACb;AACA,UAAQ,UAAU,OAAO,UAAU,MAAM,CAAC,MAAM;AACpD;AACA,SAASC,WAAU,OAAO,SAAS;AAC/B,MAAI,SAAS,MAAM;AACf,UAAM,IAAI,MAAM,OAAO;AAAA,EAC3B;AACA,SAAO;AACX;AACA,SAAS,UAAU,MAAM,IAAI;AACzB,SAAO,UAAU,IAAI,EAAE,QAAQ,gBAAgB,EAAE,IAAI,UAAU,EAAE;AACrE;AACA,SAAS,oBAAoB,KAAK;AAC9B,QAAM,SAAS,CAAC;AAChB,MAAI,aAAa,QAAQ,CAAC,OAAO,QAAQ;AACrC,WAAO,OAAO;AAAA,EAClB,CAAC;AACD,SAAO;AACX;AACA,SAAS,UAAU,KAAK,SAAS;AAC7B,SAAO,mBAAmB,UAAU,IAAI,QAAQ,OAAO,GAAG,IAAI,GAAG;AACrE;AACA,SAAS,cAAc,MAAM,SAAS;AAClC,QAAM,CAAC,SAAS,KAAK,IAAI,KAAK,MAAM,MAAM,CAAC;AAC3C,QAAM,WAAW,QAAQ,MAAM,GAAG,EAAE,OAAO,OAAO;AAClD,QAAM,MAAM,SAAS;AACrB,SAAO,CAAC,aAAa;AACjB,UAAM,cAAc,SAAS,MAAM,GAAG,EAAE,OAAO,OAAO;AACtD,UAAM,UAAU,YAAY,SAAS;AACrC,QAAI,UAAU,KAAM,UAAU,KAAK,UAAU,UAAa,CAAC,SAAU;AACjE,aAAO;AAAA,IACX;AACA,UAAM,QAAQ;AAAA,MACV,MAAM,MAAM,KAAK;AAAA,MACjB,QAAQ,CAAC;AAAA,IACb;AACA,aAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AAC1B,YAAM,UAAU,SAAS;AACzB,YAAM,aAAa,YAAY;AAC/B,UAAI,QAAQ,OAAO,KAAK;AACpB,cAAM,OAAO,QAAQ,MAAM,CAAC,KAAK;AAAA,MACrC,WACS,QAAQ,cAAc,YAAY,QAAW,EAAE,aAAa,OAAO,CAAC,MAAM,GAAG;AAClF,eAAO;AAAA,MACX;AACA,YAAM,QAAQ,IAAI;AAAA,IACtB;AACA,QAAI,OAAO;AACP,YAAM,OAAO,SAAS,UAAU,YAAY,MAAM,CAAC,OAAO,EAAE,KAAK,GAAG,IAAI;AAAA,IAC5E;AACA,WAAO;AAAA,EACX;AACJ;AACA,SAAS,WAAW,OAAO;AACvB,QAAM,CAAC,SAAS,KAAK,IAAI,MAAM,QAAQ,MAAM,MAAM,CAAC;AACpD,QAAM,WAAW,QAAQ,MAAM,GAAG,EAAE,OAAO,OAAO;AAClD,SAAO,SAAS,OAAO,CAAC,OAAO,YAAY,SAAS,QAAQ,WAAW,GAAG,IAAI,IAAI,IAAI,SAAS,UAAU,UAAU,SAAY,IAAI,EAAE;AACzI;AACA,SAAS,iBAAiB,IAAI;AAC1B,QAAMC,OAAM,oBAAI,IAAI;AACpB,QAAM,QAAQ,SAAS;AACvB,SAAO,IAAI,MAAM,CAAC,GAAG;AAAA,IACjB,IAAI,GAAG,UAAU;AACb,UAAI,CAACA,KAAI,IAAI,QAAQ,GAAG;AACpB,qBAAa,OAAO,MAAMA,KAAI,IAAI,UAAU,WAAW,MAAM,GAAG,EAAE,SAAS,CAAC,CAAC;AAAA,MACjF;AACA,aAAOA,KAAI,IAAI,QAAQ,EAAE;AAAA,IAC7B;AAAA,IACA,2BAA2B;AACvB,aAAO;AAAA,QACH,YAAY;AAAA,QACZ,cAAc;AAAA,MAClB;AAAA,IACJ;AAAA,IACA,UAAU;AACN,aAAO,QAAQ,QAAQ,GAAG,CAAC;AAAA,IAC/B;AAAA,EACJ,CAAC;AACL;AACA,SAAS,gBAAgB,SAAS;AAC9B,MAAI,QAAQ,kBAAkB,KAAK,OAAO;AAC1C,MAAI,CAAC;AACD,WAAO,CAAC,OAAO;AACnB,MAAIC,UAAS,QAAQ,MAAM,GAAG,MAAM,KAAK;AACzC,MAAI,SAAS,QAAQ,MAAM,MAAM,QAAQ,MAAM,GAAG,MAAM;AACxD,QAAM,WAAW,CAACA,SAASA,WAAU,MAAM,EAAG;AAM9C,SAAQ,QAAQ,kBAAkB,KAAK,MAAM,GAAI;AAC7C,aAAS,KAAMA,WAAU,MAAM,EAAG;AAClC,aAAS,OAAO,MAAM,MAAM,GAAG,MAAM;AAAA,EACzC;AACA,SAAO,gBAAgB,MAAM,EAAE,OAAO,CAAC,SAAS,cAAc,CAAC,GAAG,SAAS,GAAG,SAAS,IAAI,OAAK,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;AACvH;AAEA,IAAM,gBAAgB;AACtB,IAAM,mBAAmB,cAAc;AACvC,IAAM,kBAAkB,cAAc;AACtC,IAAM,YAAY,MAAMF,WAAU,WAAW,gBAAgB,GAAG,+CAA+C;AAC/G,IAAI;AACJ,IAAM,WAAW,MAAM,aAAa,WAAW,eAAe,KAAK,UAAU,EAAE;AAC/E,SAAS,aAAa,UAAU,OAAO,IAAI,UAAU;AACjD,QAAM,EAAE,WAAW,MAAM,UAAAG,UAAS,IAAI;AACtC,QAAM,SAAS,CAACA,aAAa,MAAM,QAAQA,SAAQ,KAAK,CAACA,UAAS;AAClE,QAAM,SAAS;AAAA,IACX,KAAK;AAAA,IACL,SAAS,YACH,MAAM,gBAAkB,WAAW,CAAC,CAAC,IACrC,MAAM;AACJ,YAAM,EAAE,QAAQ,IAAI;AACpB,aAAO,YAAY,UAAa,WAC1B,gBAAkB,UAAU,CAAC,CAAC,IAC9B;AAAA,IACV;AAAA,IACJ,SAAS,SAAS,YACZ,UAAU,UACV,SAAS;AAAA,IACf;AAAA,EACJ;AACA,SAAOC,SAAQ,SAAS,IAAI,EAAE,OAAO,CAAC,KAAK,SAAS;AAChD,eAAW,gBAAgB,gBAAgB,IAAI,GAAG;AAC9C,YAAMC,QAAO,UAAU,MAAM,YAAY;AACzC,YAAM,UAAU,SAASA,QAAOA,MAAK,MAAM,MAAM,CAAC,EAAE;AACpD,UAAI,KAAK;AAAA,QACL,GAAG;AAAA,QACH;AAAA,QACA;AAAA,QACA,SAAS,cAAc,SAAS,CAAC,MAAM;AAAA,MAC3C,CAAC;AAAA,IACL;AACA,WAAO;AAAA,EACX,GAAG,CAAC,CAAC;AACT;AACA,SAAS,aAAa,QAAQ,QAAQ,GAAG;AACrC,SAAO;AAAA,IACH;AAAA,IACA,OAAO,WAAW,OAAO,OAAO,SAAS,EAAE,IAAI,MAAQ;AAAA,IACvD,QAAQ,UAAU;AACd,YAAM,UAAU,CAAC;AACjB,eAAS,IAAI,OAAO,SAAS,GAAG,KAAK,GAAG,KAAK;AACzC,cAAM,QAAQ,OAAO;AACrB,cAAM,QAAQ,MAAM,QAAQ,QAAQ;AACpC,YAAI,CAAC,OAAO;AACR,iBAAO;AAAA,QACX;AACA,gBAAQ,QAAQ;AAAA,UACZ,GAAG;AAAA,UACH;AAAA,QACJ,CAAC;AAAA,MACL;AACA,aAAO;AAAA,IACX;AAAA,EACJ;AACJ;AACA,SAASD,SAAQ,OAAO;AACpB,SAAO,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAChD;AACA,SAAS,eAAe,UAAU,OAAO,IAAI,UAAU,QAAQ,CAAC,GAAG,WAAW,CAAC,GAAG;AAC9E,QAAM,YAAYA,SAAQ,QAAQ;AAClC,WAAS,IAAI,GAAG,MAAM,UAAU,QAAQ,IAAI,KAAK,KAAK;AAClD,UAAM,MAAM,UAAU;AACtB,QAAI,OAAO,OAAO,QAAQ,YAAY,IAAI,eAAe,MAAM,GAAG;AAC9D,YAAM,SAAS,aAAa,KAAK,MAAM,QAAQ;AAC/C,iBAAW,SAAS,QAAQ;AACxB,cAAM,KAAK,KAAK;AAChB,YAAI,IAAI,UAAU;AACd,yBAAe,IAAI,UAAU,MAAM,SAAS,UAAU,OAAO,QAAQ;AAAA,QACzE,OACK;AACD,gBAAM,SAAS,aAAa,CAAC,GAAG,KAAK,GAAG,SAAS,MAAM;AACvD,mBAAS,KAAK,MAAM;AAAA,QACxB;AACA,cAAM,IAAI;AAAA,MACd;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO,MAAM,SAAS,WAAW,SAAS,KAAK,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,KAAK;AAC9E;AACA,SAAS,gBAAgB,UAAU,UAAU;AACzC,WAAS,IAAI,GAAG,MAAM,SAAS,QAAQ,IAAI,KAAK,KAAK;AACjD,UAAM,QAAQ,SAAS,GAAG,QAAQ,QAAQ;AAC1C,QAAI,OAAO;AACP,aAAO;AAAA,IACX;AAAA,EACJ;AACA,SAAO,CAAC;AACZ;AACA,SAAS,eAAe,MAAM,OAAO;AACjC,QAAM,SAAS,IAAI,IAAI,YAAY;AACnC,QAAM,MAAM,WAAW,UAAQ;AAC3B,UAAM,QAAQ,KAAK;AACnB,QAAI;AACA,aAAO,IAAI,IAAI,OAAO,MAAM;AAAA,IAChC,SACO,KAAP;AACI,cAAQ,MAAM,gBAAgB,OAAO;AACrC,aAAO;AAAA,IACX;AAAA,EACJ,GAAG,QAAQ;AAAA,IACP,QAAQ,CAAC,GAAG,MAAM,EAAE,SAAS,EAAE;AAAA,EACnC,CAAC;AACD,QAAM,WAAW,WAAW,MAAM,UAAU,IAAI,EAAE,QAAQ,CAAC;AAC3D,QAAM,SAAS,WAAW,MAAM,UAAU,IAAI,EAAE,QAAQ,IAAI,CAAC;AAC7D,QAAM,OAAO,WAAW,MAAM,UAAU,IAAI,EAAE,IAAI,CAAC;AACnD,QAAM,MAAM,WAAW,MAAM,EAAE;AAC/B,SAAO;AAAA,IACH,IAAI,WAAW;AACX,aAAO,SAAS;AAAA,IACpB;AAAA,IACA,IAAI,SAAS;AACT,aAAO,OAAO;AAAA,IAClB;AAAA,IACA,IAAI,OAAO;AACP,aAAO,KAAK;AAAA,IAChB;AAAA,IACA,IAAI,QAAQ;AACR,aAAO,MAAM;AAAA,IACjB;AAAA,IACA,IAAI,MAAM;AACN,aAAO,IAAI;AAAA,IACf;AAAA,IACA,OAAO,iBAAiB,GAAG,QAAQ,MAAM,oBAAoB,IAAI,CAAC,CAAC,CAAC;AAAA,EACxE;AACJ;AACA,SAAS,oBAAoB,aAAa,OAAO,IAAI,MAAM,KAAK;AAC5D,QAAM,EAAE,QAAQ,CAAC,QAAQ,SAAS,GAAG,QAAQ,CAAC,EAAE,IAAI,qBAAqB,WAAW;AACpF,QAAM,YAAY,MAAM,cAAc,OAAK;AAC3C,QAAM,aAAa,MAAM,eAAe,OAAK;AAC7C,QAAM,WAAW,YAAY,IAAI,IAAI;AACrC,QAAM,SAAS,YAAY,MACrB,OAAO,OAAO,KAAK;AAAA,IACjB,SAAS,CAAC;AAAA,IACV,KAAK;AAAA,EACT,CAAC,IACC;AACN,MAAI,aAAa,QAAW;AACxB,UAAM,IAAI,MAAM,GAAG,mCAAmC;AAAA,EAC1D,WACS,YAAY,CAAC,OAAO,EAAE,OAAO;AAClC,cAAU,EAAE,OAAO,UAAU,SAAS,MAAM,QAAQ,MAAM,CAAC;AAAA,EAC/D;AACA,QAAM,CAAC,WAAW,KAAK,IAAI,cAAc;AACzC,QAAM,CAAC,WAAW,YAAY,IAAI,aAAa,OAAO,EAAE,KAAK;AAC7D,QAAM,CAAC,OAAO,QAAQ,IAAI,aAAa,OAAO,EAAE,KAAK;AACrD,QAAM,WAAW,eAAe,WAAW,KAAK;AAChD,QAAM,YAAY,CAAC;AACnB,QAAM,YAAY;AAAA,IACd,SAAS;AAAA,IACT,QAAQ,CAAC;AAAA,IACT,MAAM,MAAM;AAAA,IACZ,QAAQ,MAAM;AAAA,IACd,YAAY,IAAI;AACZ,aAAO,YAAY,UAAU,EAAE;AAAA,IACnC;AAAA,EACJ;AACA,MAAI,MAAM;AACN,QAAI;AACA,kBAAY;AACZ,gBAAU,OAAO,KAAK;AAAA,QAClB,MAAM;AAAA,QACN,QAAQ,CAAC;AAAA,QACT;AAAA,QACA,UAAU,iBAAiB,SAAS;AAAA,MACxC,CAAC;AAAA,IACL,UACA;AACI,kBAAY;AAAA,IAChB;AAAA,EACJ;AACA,WAAS,kBAAkB,OAAO,IAAI,SAAS;AAE3C,YAAQ,MAAM;AACV,UAAI,OAAO,OAAO,UAAU;AACxB,YAAI,CAAC;AAAI;AAAA,iBACA,MAAM,IAAI;AACf,gBAAM,GAAG,EAAE;AAAA,QACf,OACK;AACD,kBAAQ,KAAK,sDAAsD;AAAA,QACvE;AACA;AAAA,MACJ;AACA,YAAM,EAAE,SAAS,SAAS,QAAQ,OAAO,UAAU,IAAI;AAAA,QACnD,SAAS;AAAA,QACT,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,GAAG;AAAA,MACP;AACA,YAAM,aAAa,UAAU,MAAM,YAAY,EAAE,IAAI,YAAY,IAAI,EAAE;AACvE,UAAI,eAAe,QAAW;AAC1B,cAAM,IAAI,MAAM,SAAS,4BAA4B;AAAA,MACzD,WACS,UAAU,UAAU,eAAe;AACxC,cAAM,IAAI,MAAM,oBAAoB;AAAA,MACxC;AACA,YAAM,UAAU,UAAU;AAC1B,UAAI,eAAe,WAAW,cAAc,MAAM,GAAG;AACjD,YAAI,UAAU;AACV,cAAI,QAAQ;AACR,mBAAO,MAAM;AAAA,UACjB;AACA,oBAAU,EAAE,OAAO,YAAY,SAAS,QAAQ,OAAO,UAAU,CAAC;AAAA,QACtE,OACK;AACD,gBAAM,MAAM,UAAU,KAAK,EAAE,OAAO,SAAS,SAAS,QAAQ,OAAO,MAAM,EAAE,CAAC;AAC9E,gBAAM,MAAM;AACR,yBAAa,UAAU;AACvB,qBAAS,SAAS;AAClB,iCAAqB;AAAA,UACzB,CAAC,EAAE,KAAK,MAAM;AACV,gBAAI,UAAU,WAAW,KAAK;AAC1B,0BAAY;AAAA,gBACR,OAAO;AAAA,gBACP,OAAO;AAAA,cACX,CAAC;AAAA,YACL;AAAA,UACJ,CAAC;AAAA,QACL;AAAA,MACJ;AAAA,IACJ,CAAC;AAAA,EACL;AACA,WAAS,iBAAiB,OAAO;AAE7B,YAAQ,SAAS,WAAW,eAAe,KAAK;AAChD,WAAO,CAAC,IAAI,YAAY,kBAAkB,OAAO,IAAI,OAAO;AAAA,EAChE;AACA,WAAS,YAAY,MAAM;AACvB,UAAM,QAAQ,UAAU;AACxB,QAAI,OAAO;AACP,UAAI,KAAK,UAAU,MAAM,SAAS,KAAK,UAAU,MAAM,OAAO;AAC1D,kBAAU;AAAA,UACN,GAAG;AAAA,UACH,SAAS,MAAM;AAAA,UACf,QAAQ,MAAM;AAAA,QAClB,CAAC;AAAA,MACL;AACA,gBAAU,SAAS;AAAA,IACvB;AAAA,EACJ;AACA,qBAAmB,MAAM;AACrB,UAAM,EAAE,OAAO,OAAAE,OAAM,IAAI,OAAO;AAEhC,YAAQ,MAAM;AACV,UAAI,UAAU,UAAU,GAAG;AACvB,cAAM,MAAM;AACR,uBAAa,KAAK;AAClB,mBAASA,MAAK;AAAA,QAClB,CAAC;AAAA,MACL;AAAA,IACJ,CAAC;AAAA,EACL,CAAC;AACD,MAAI,CAAC,UAAU;AACX,QAAS,QAAT,SAAe,IAAI;AACf,aAAO,GAAG,iBAAiB;AAAA,IAC/B,GACS,oBAAT,SAA2B,KAAK;AAC5B,UAAI,IAAI,oBACJ,IAAI,WAAW,KACf,IAAI,WACJ,IAAI,UACJ,IAAI,WACJ,IAAI;AACJ;AACJ,YAAM,IAAI,IACL,aAAa,EACb,KAAK,QAAM,cAAc,QAAQ,GAAG,SAAS,YAAY,MAAM,GAAG;AACvE,UAAI,CAAC;AACD;AACJ,YAAM,MAAM,MAAM,CAAC;AACnB,YAAM,OAAO,MAAM,EAAE,KAAK,UAAU,EAAE;AACtC,YAAM,SAAS,MAAM,EAAE,OAAO,UAAU,EAAE;AAC1C,UAAI,UAAW,CAAC,QAAQ,CAAC,EAAE,aAAa,OAAO;AAC3C;AACJ,YAAM,OAAO,EAAE,aAAa,KAAK,KAAK,IAAI,MAAM,KAAK;AACrD,UAAI,EAAE,aAAa,UAAU,KAAM,OAAO,IAAI,SAAS,UAAU;AAC7D;AACJ,YAAM,MAAM,MAAM,IAAI,IAAI,MAAM,SAAS,OAAO,IAAI,IAAI,IAAI,IAAI;AAChE,YAAM,WAAW,UAAU,IAAI,QAAQ;AACvC,UAAI,IAAI,WAAW,OAAO,SAAS,UAC9B,YAAY,YAAY,CAAC,SAAS,YAAY,EAAE,WAAW,SAAS,YAAY,CAAC;AAClF;AACJ,YAAM,KAAK,UAAU,WAAW,UAAU,IAAI,QAAQ,IAAI,IAAI,UAAU,IAAI,IAAI,CAAC;AACjF,YAAMA,SAAQ,EAAE,aAAa,OAAO;AACpC,UAAI,eAAe;AACnB,wBAAkB,WAAW,IAAI;AAAA,QAC7B,SAAS;AAAA,QACT,SAAS,EAAE,aAAa,SAAS;AAAA,QACjC,QAAQ,CAAC,EAAE,aAAa,UAAU;AAAA,QAClC,OAAOA,UAAS,KAAK,MAAMA,MAAK;AAAA,MACpC,CAAC;AAAA,IACL;AAEA,mBAAe,CAAC,OAAO,CAAC;AACxB,aAAS,iBAAiB,SAAS,iBAAiB;AACpD,cAAU,MAAM,SAAS,oBAAoB,SAAS,iBAAiB,CAAC;AAAA,EAC5E;AACA,SAAO;AAAA,IACH,MAAM;AAAA,IACN,KAAK;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACJ;AACA,SAAS,mBAAmB,QAAQ,QAAQ,OAAO,OAAO;AACtD,QAAM,EAAE,MAAM,UAAU,iBAAiB,IAAI;AAC7C,QAAM,EAAE,SAAS,SAAS,QAAQ,SAAS,KAAK,IAAI,MAAM,EAAE;AAC5D,QAAM,OAAO,WAAW,MAAM,MAAM,EAAE,IAAI;AAC1C,QAAM,SAAS,iBAAiB,MAAM,MAAM,EAAE,MAAM;AACpD,aAAW,QAAQ;AACnB,QAAM,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,IACA,IAAI,QAAQ;AACR,aAAO,MAAM;AAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAM,OAAO;AAAA,IACb;AAAA,IACA,YAAY,IAAI;AACZ,aAAO,YAAY,KAAK,KAAK,GAAG,IAAI,KAAK,CAAC;AAAA,IAC9C;AAAA,EACJ;AACA,MAAI,MAAM;AACN,QAAI;AACA,kBAAY;AACZ,YAAM,OAAO,KAAK,EAAE,MAAM,OAAO,MAAM,QAAQ,UAAU,UAAU,iBAAiB,KAAK,EAAE,CAAC;AAAA,IAChG,UACA;AACI,kBAAY;AAAA,IAChB;AAAA,EACJ;AACA,SAAO;AACX;AAEA,IAAM,SAAS,WAAS;AACtB,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM,cAAc,WAAW,WAAW,kBAAkB;AAAA,IAC1D,OAAO,OAAO;AAAA,EAChB,CAAC,IAAI,gBAAgB;AACrB,QAAM,cAAc,oBAAoB,aAAa,MAAM,MAAM,GAAG;AACpE,SAAO,gBAAgB,iBAAiB,UAAU;AAAA,IAChD,OAAO;AAAA,IAEP,IAAI,WAAW;AACb,aAAO,MAAM;AAAA,IACf;AAAA,EAEF,CAAC;AACH;AACA,IAAM,WAAW,WAAS;AACxB,QAAM,SAAS,UAAU;AACzB,QAAM,cAAc,SAAS;AAC7B,QAAM,YAAY,SAAS,MAAM,MAAM,QAAQ;AAC/C,QAAM,WAAW,WAAW,MAAM,eAAe,UAAU,GAAG,UAAU,YAAY,SAAS,MAAM,QAAQ,EAAE,GAAG,MAAM,CAAC;AACvH,QAAM,UAAU,WAAW,MAAM,gBAAgB,SAAS,GAAG,OAAO,SAAS,QAAQ,CAAC;AAEtF,MAAI,OAAO,KAAK;AACd,WAAO,IAAI,QAAQ,KAAK,QAAQ,EAAE,IAAI,CAAC;AAAA,MACrC;AAAA,MACA;AAAA,MACA;AAAA,IACF,OAAO;AAAA,MACL,cAAc,MAAM;AAAA,MACpB,SAAS,MAAM;AAAA,MACf;AAAA,MACA;AAAA,IACF,EAAE,CAAC;AAAA,EACL;AAEA,QAAM,YAAY,CAAC;AACnB,MAAI;AACJ,QAAM,cAAc,WAAW,GAAG,SAAS,CAAC,aAAa,aAAa,SAAS;AAC7E,QAAI,QAAQ,eAAe,YAAY,WAAW,YAAY;AAC9D,UAAM,OAAO,CAAC;AAEd,aAAS,IAAI,GAAG,MAAM,YAAY,QAAQ,IAAI,KAAK,KAAK;AACtD,YAAM,YAAY,eAAe,YAAY;AAC7C,YAAM,YAAY,YAAY;AAE9B,UAAI,QAAQ,aAAa,UAAU,MAAM,QAAQ,UAAU,MAAM,KAAK;AACpE,aAAK,KAAK,KAAK;AAAA,MACjB,OAAO;AACL,gBAAQ;AAER,YAAI,UAAU,IAAI;AAChB,oBAAU,GAAG;AAAA,QACf;AAEA,mBAAW,aAAW;AACpB,oBAAU,KAAK;AACf,eAAK,KAAK,mBAAmB,QAAQ,KAAK,IAAI,MAAM,aAAa,MAAM,YAAY,EAAE,IAAI,IAAI,MAAM,QAAQ,EAAE,EAAE;AAAA,QACjH,CAAC;AAAA,MACH;AAAA,IACF;AAEA,cAAU,OAAO,YAAY,MAAM,EAAE,QAAQ,aAAW,QAAQ,CAAC;AAEjE,QAAI,QAAQ,OAAO;AACjB,aAAO;AAAA,IACT;AAEA,WAAO,KAAK;AACZ,WAAO;AAAA,EACT,CAAC,CAAC;AACF,SAAO,gBAAgB,MAAM;AAAA,IAC3B,IAAI,OAAO;AACT,aAAO,YAAY,KAAK;AAAA,IAC1B;AAAA,IAEA,UAAU,WAAS,gBAAgB,gBAAgB,UAAU;AAAA,MAC3D,OAAO;AAAA,MAEP,IAAI,WAAW;AACb,eAAO,MAAM,OAAO;AAAA,MACtB;AAAA,IAEF,CAAC;AAAA,EACH,CAAC;AACH;AACA,IAAM,SAAS,MAAM;AACnB,QAAM,QAAQ,SAAS;AACvB,SAAO,gBAAgB,MAAM;AAAA,IAC3B,IAAI,OAAO;AACT,aAAO,MAAM;AAAA,IACf;AAAA,IAEA,UAAU,WAAS,gBAAgB,gBAAgB,UAAU;AAAA,MAC3D,OAAO;AAAA,MAEP,IAAI,WAAW;AACb,eAAO,MAAM,OAAO;AAAA,MACtB;AAAA,IAEF,CAAC;AAAA,EACH,CAAC;AACH;AAEA,IAAM,cAAN,cAA0B,MAAM;AAAA,EAC9B,YAAY,SAAS;AAAA,IACnB;AAAA,EACF,IAAI,CAAC,GAAG;AACN,UAAM,OAAO;AACb,SAAK,OAAO;AAEZ,QAAI,OAAO;AACT,WAAK,QAAQ;AAAA,IACf;AAAA,EACF;AAEF;AACA,IAAM,YAAN,cAAwB,YAAY;AAAA,EAClC,YAAY,SAAS;AAAA,IACnB,cAAc,CAAC;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,CAAC,GAAG;AACN,UAAM,SAAS;AAAA,MACb;AAAA,IACF,CAAC;AACD,SAAK,YAAY;AACjB,SAAK,OAAO;AACZ,SAAK,SAAS,UAAU,OAAO,YAAY,OAAO,SAAS,cAAc,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC;AAClG,SAAK,cAAc;AAAA,EACrB;AAEF;AAEA,IAAM,gBAAgB,cAAc,CAAC,CAAC;AAEtC,cAAc;AACd,cAAc;AAEd,SAAS,OAAO,OAAO;AAErB,SAAO,gBAAgB,UAAU;AAAA,IAC/B,IAAI,WAAW;AACb,aAAO,MAAM;AAAA,IACf;AAAA,EAEF,CAAC;AACH;AAEA,IAAM,WAAW,CAAC,QAAQ,YAAa,kBAAoB,gBAAkB,yBAA4B,yCAA4C,iDAAmD,MAAO,oBAAoB;AACnO,SAASC,eAAc,OAAO;AAC5B,SAAO,gBAAgB,eAAiB;AAAA,IACtC,UAAU,OAAK;AACb,aAAO,gBAAgB,MAAM;AAAA,QAC3B,IAAI,OAAO;AACT,iBAAO,CAAC,MAAM;AAAA,QAChB;AAAA,QAEA,IAAI,WAAW;AACb,iBAAO,MAAM,SAAS,CAAC;AAAA,QACzB;AAAA,QAEA,IAAI,WAAW;AACb,iBAAO,gBAAgB,cAAc;AAAA,YACnC,OAAO;AAAA,UACT,CAAC;AAAA,QACH;AAAA,MAEF,CAAC;AAAA,IACH;AAAA,IAEA,IAAI,WAAW;AACb,aAAO,MAAM;AAAA,IACf;AAAA,EAEF,CAAC;AACH;AAEA,SAAS,aAAa,OAAO;AAC3B,eAAa,MAAM,QAAQ,MAAM,MAAM,KAAK,CAAC;AAC7C,SAAO,IAAI,UAAU,gBAAgB,GAAG,gBAAqB,gIAAiM,oBAAyB,OAAO,MAAM,MAAM,OAAO,GAAG,iGAA0I,6BAA8C,OAAO,MAAM,MAAM,KAAK,CAAC;AACvgB;AAEA,IAAM,WAAW,CAAC,QAAQ,2BAA2B,gBAAgB;AAArE,IACM,YAAY,CAAC,QAAQ,KAAK,QAAQ;AACxC,IAAM,MAAM,OAAO;AACnB,SAAS,OAAO;AACd,QAAM,CAAC,SAAS,QAAQ,IAAI,aAAa,KAAK;AAC9C,UAAQ,MAAM;AACZ,aAAS,IAAI;AAAA,EACf,CAAC;AACD,SAAO,IAAI,UAAU,gBAAgB,GAAG,OAAO,gBAAgB,MAAM;AAAA,IACnE,IAAI,OAAO;AACT,aAAO,QAAQ;AAAA,IACjB;AAAA,IAEA,IAAI,WAAW;AACb,aAAO,gBAAgB,cAAc,CAAC,CAAC;AAAA,IACzC;AAAA,EAEF,CAAC,CAAC,CAAC;AACL;AACA,IAAM,eAAe,WAAS;AAC5B,QAAM,CAAC,QAAQ,MAAM,IAAI,eAAe,UAAM,gCAAQ,YAAY;AAAA;AAAA;AAAA;AAAA,OAI7D,CAAC;AAEN,QAAM,OAAO,MAAM,OAAO,SAAS,KAAK,UAAU,OAAO,MAAM,IAAI;AAEnE,SAAO,IAAI,WAAW,gBAAgB,GAAG,OAAO,IAAI,CAAC;AACvD;AAGA,IAAM,eAAe;AAAA,EACnB,QAAQ,CAAC;AAAA,IACP,WAAW;AAAA,IACX,MAAM;AAAA,EACR,CAAC;AAAA,EACD,cAAc;AAAA,IACZ,KAAK;AAAA,MACH,MAAM;AAAA,MACN,WAAW,CAAC;AAAA,IACd;AAAA,EACF;AACF;AAKA,IAAM,aAAa,MAAM;AACvB,SAAO,aAAa;AACtB;AAEA,IAAM,SAAS,CAAC,SAAS,qBAAuB,GAAG;AAAnD,IACM,UAAU,CAAC,SAAS,wBAA0B,GAAG;AAEvD,SAAS,sBAAsB,UAAU,eAAe;AACtD,QAAM,QAAQ,cAAc,QAAQ,OAAO,CAAC,MAAM,MAAM;AACtD,QAAI,EAAE,QAAQ;AACZ,YAAM,WAAW,EAAE,OAAO,CAAC,UAAUC,WAAU,WAAWA,OAAM,cAAc,EAAE;AAChF,YAAM,QAAQ,aAAa,aAAa;AAExC,UAAI,OAAO;AACT,aAAK,KAAK,GAAI,SAAS,MAAM,OAAO,CAAC,CAAE;AACvC,cAAM,yBAAyB,MAAM,QAAQ,QAAQ,iBAAe,SAAS,gBAAgB,CAAC,CAAC;AAC/F,aAAK,KAAK,GAAG,sBAAsB;AAAA,MACrC;AAAA,IACF;AAEA,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AACL,QAAM,KAAK,GAAI,SAAS,mBAAmB,CAAC,CAAE;AAC9C,QAAM,QAAQ,MAAM,OAAO,CAAC,GAAG,QAAQ;AACrC,MAAE,IAAI,QAAQ,IAAI,SAAS,UAAU,IAAI,QAAQ,gBAAgB,GAAG,aAAa,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,SAAS,WAAW,IAAI,SAAS,gBAAgB,GAAG,aAAa,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI;AAC1O,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AACL,SAAO,OAAO,OAAO,KAAK;AAC5B;AAOA,SAAS,QAAQ;AACf,QAAM,UAAU,WAAW,aAAa;AACxC,SAAO,gBAAgB,QAAQ;AAAA,IAC7B,IAAI,WAAW;AACb,aAAO,sBAAsB,QAAQ,IAAI,UAAU,QAAQ,aAAa;AAAA,IAC1E;AAAA,EAEF,CAAC;AACH;AAEA,SAAS,OAAO;AACd,QAAM,UAAU,WAAW,aAAa;AAExC,SAAO,gBAAgB,QAAQ;AAAA,IAC7B,IAAI,WAAW;AACb,aAAO,IAAI,WAAW,QAAQ,IAAI,CAAC;AAAA,IACrC;AAAA,EAEF,CAAC;AACH;AAEA,IAAM,UAAU,CAAC,WAAW,wBAA0B,aAAY;AAClE,IAAM,QAAQ;AACd,IAAM,YAAY;AAClB,SAAS,UAAU;AACjB,QAAM,UAAU,WAAW,aAAa;AACxC,SAAO,CAAC,gBAAgB,iBAAiB,CAAC,CAAC,GAAG,WAAY,gBAAgB,aAAa;AAAA,IACrF,IAAI,WAAW;AACb,aAAO,YAAa,IAAI,SAAS,gBAAgB,GAAG,aAAa,OAAO,OAAO,QAAQ,IAAI,SAAS,gBAAgB,GAAG,MAAM,IAAI,GAAG,KAAK,CAAC;AAAA,IAC5I;AAAA,EAEF,CAAC,GAAG,KAAM;AACZ;AAEA,SAAS,KAAK,OAAO;AAEnB;AACE,WAAO,WAAW,QAAQ,OAAO,QAAW,KAAK;AAAA,EACnD;AACF;AACA,SAAS,KAAK,OAAO;AACnB;AACE,WAAO,WAAW,QAAQ,OAAO,MAAM,CAAC,MAAM,UAAU,gBAAgB,MAAM,CAAC,CAAC,GAAG,gBAAgB,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK;AAAA,EACvH;AACF;AACA,SAAS,KAAK,OAAO;AACnB;AACE,WAAO,WAAW,QAAQ,OAAO,MAAM,MAAM,UAAW,KAAK;AAAA,EAC/D;AACF;AAIA,SAAS,OAAO;AACd,SAAO,gBAAgB,MAAM;AAAA,IAC3B,MAAM;AAAA,IAEN,IAAI,WAAW;AACb,aAAO,CAAC,gBAAgB,MAAM;AAAA,QAC5B,IAAI,WAAW;AACb,iBAAO,CAAC,gBAAgB,OAAO;AAAA,YAC7B,UAAU;AAAA,UACZ,CAAC,GAAG,gBAAgB,QAAQ;AAAA,YAC1B,SAAS;AAAA,UACX,CAAC,GAAG,gBAAgB,QAAQ;AAAA,YAC1B,MAAM;AAAA,YACN,SAAS;AAAA,UACX,CAAC,CAAC;AAAA,QACJ;AAAA,MAEF,CAAC,GAAG,gBAAgB,MAAM;AAAA,QACxB,IAAI,WAAW;AACb,iBAAO,CAAC,gBAAgB,UAAU;AAAA,YAChC,IAAI,WAAW;AACb,qBAAO,gBAAgBC,gBAAe;AAAA,gBACpC,IAAI,WAAW;AACb,yBAAO,gBAAgB,QAAQ;AAAA,oBAC7B,IAAI,WAAW;AACb,6BAAO,gBAAgB,YAAY,CAAC,CAAC;AAAA,oBACvC;AAAA,kBAEF,CAAC;AAAA,gBACH;AAAA,cAEF,CAAC;AAAA,YACH;AAAA,UAEF,CAAC,GAAG,gBAAgB,SAAS,CAAC,CAAC,CAAC;AAAA,QAClC;AAAA,MAEF,CAAC,CAAC;AAAA,IACJ;AAAA,EAEF,CAAC;AACH;AAEA,IAAM,SAAS,aAAa;AAAA,EAC1B,QAAQ;AAAA,IACN,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,IAKV,WAAW;AAAA,MACT,OAAO;AAAA,QACL,OAAO,MAAM;AAAA,MACf;AAAA,IACF;AAAA,EACF;AACF,CAAC;AACD,IAAM,UAAU,CAAC,EAAE,SAAAC,SAAQ,MAAM;AAC/B,SAAO,OAAO,cAAcA,QAAO;AACrC;AACA,IAAM,MAAM;AACZ,IAAM,OAAO;AAEb,IAAM,MAAM;AAAA,EACV;AAAA,IACE;AAAA,IACA;AAAA,IACA,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,MAAM;AAAA,EACR;AACF;AACA,SAAS,kBAAkB,OAAO;AAChC,QAAM,WAAW,MAAM,KAAK,MAAM,GAAG,EAAE,OAAO,OAAO;AACrD,QAAM,SAAS,CAAC;AAChB,QAAM,gBAAgB,CAAC;AACvB,MAAI,QAAQ,MAAM,KAAK,SAAS,GAAG,IAAI,IAAI;AAC3C,MAAI,WAAW;AACf,aAAW,CAAC,OAAO,OAAO,KAAK,SAAS,QAAQ,GAAG;AACjD,QAAI,QAAQ,OAAO,KAAK;AACtB,YAAM,OAAO,QAAQ,MAAM,CAAC;AAC5B,eAAS;AACT,aAAO,KAAK;AAAA,QACV,MAAM;AAAA,QACN;AAAA,QACA;AAAA,MACF,CAAC;AACD,oBAAc,KAAK,IAAI;AAAA,IACzB,WAAW,QAAQ,OAAO,KAAK;AAC7B,aAAO,KAAK;AAAA,QACV,MAAM;AAAA,QACN,MAAM,QAAQ,MAAM,CAAC;AAAA,QACrB;AAAA,MACF,CAAC;AACD,iBAAW;AAAA,IACb,OAAO;AACL,eAAS;AACT,oBAAc,KAAK,OAAO;AAAA,IAC5B;AAAA,EACF;AACA,SAAO;AAAA,IACL,GAAG;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AACA,IAAM,YAAY,IAAI,IAAI,iBAAiB,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,KAAK;AAC7E,kBAAkB,SAAS;AAC3B,SAAS,cAAc,KAAK,QAAQ;AAClC,SAAO,kBAAkB,WAAW,IAAI,UAAU,OAAO,YAAY,CAAC;AACxE;AAEA,IAAM,YAAY,CAAC,EAAE,QAAQ,MAAM;AACjC,SAAO,OAAO,UAAU;AACtB,QAAI,aAAa,cAAc,IAAI,IAAI,MAAM,QAAQ,GAAG,GAAG,MAAM,QAAQ,MAAM;AAC/E,QAAI,YAAY;AACd,UAAI,WAAW,OAAO,OAAO;AAAA,QAC3B,SAAS,MAAM;AAAA,QACf,QAAQ,WAAW;AAAA,QACnB,KAAK,MAAM;AAAA,QACX,OAAO;AAAA,QACP,OAAO;AAAA,MACT,CAAC;AACD,UAAI;AACF,eAAO,MAAM,WAAW,QAAQ,QAAQ;AAAA,MAC1C,SAAS,OAAP;AACA,YAAI,iBAAiB,UAAU;AAC7B,iBAAO;AAAA,QACT;AACA,eAAO,IAAI,SAAS,KAAK,UAAU,KAAK,GAAG;AAAA,UACzC,QAAQ;AAAA,QACV,CAAC;AAAA,MACH;AAAA,IACF;AACA,WAAO,MAAM,QAAQ,KAAK;AAAA,EAC5B;AACF;AAEA,IAAM,UAAU,CAAC,OAAO;AACtB,QAAM,IAAI,MAAM,yBAAyB;AAC3C;AACA,eAAe,aAAa,OAAO;AACjC,MAAIA,WAAU,MAAM;AACpB,MAAI,cAAcA,SAAQ,QAAQ,IAAI,iBAAiB;AACvD,MAAI,OAAO,IAAI,IAAIA,SAAQ,GAAG,EAAE,UAAU,OAAO,CAAC;AAClD,MAAI,aAAa;AACf,QAAI,gBAAgB,kBAAkB;AACpC,UAAI,OAAO,MAAMA,SAAQ,KAAK;AAC9B,UAAI;AACF,eAAO,KAAK,MAAM,MAAM,CAAC,KAAK,UAAU;AACtC,cAAI,CAAC,OAAO;AACV,mBAAO;AAAA,UACT;AACA,cAAI,MAAM,UAAU,eAAe;AACjC,mBAAO;AAAA,UACT;AACA,cAAI,MAAM,UAAU,WAAW;AAC7B,gBAAI,UAAU,IAAI,QAAQ;AAC1B,YAAAA,SAAQ,QAAQ,QAAQ,CAAC,QAAQ,SAAS,QAAQ,IAAI,MAAM,MAAM,CAAC;AACnE,kBAAM,OAAO,QAAQ,CAAC,CAAC,MAAM,MAAM,MAAM,QAAQ,IAAI,MAAM,MAAM,CAAC;AAClE,mBAAO;AAAA,UACT;AACA,cAAI,MAAM,UAAU,WAAW;AAC7B,mBAAO,IAAI,QAAQ,MAAM,KAAK;AAAA,cAC5B,QAAQ,MAAM;AAAA,cACd,SAAS,MAAM;AAAA,YACjB,CAAC;AAAA,UACH;AACA,iBAAO;AAAA,QACT,CAAC;AAAA,MACH,SAAS,GAAP;AACA,cAAM,IAAI,MAAM,+BAA+B,MAAM;AAAA,MACvD;AAAA,IACF,WAAW,YAAY,SAAS,MAAM,GAAG;AACvC,UAAI,WAAW,MAAMA,SAAQ,MAAM,EAAE,SAAS;AAC9C,aAAO,CAAC,UAAU,KAAK;AAAA,IACzB;AAAA,EACF;AACA,SAAO,CAAC,MAAM,IAAI;AACpB;AACA,SAAS,YAAYA,UAAS,MAAM,cAAc;AAChD,MAAI,gBAAgB,eAAe;AACjC,WAAO,KAAK,MAAM;AAAA,EACpB;AACA,MAAI,gBAAgB,UAAU;AAC5B,QAAI,mBAAmB,IAAI,KAAKA,SAAQ,QAAQ,IAAI,iBAAiB,MAAM,UAAU;AACnF,UAAI,UAAU,IAAI,QAAQ,KAAK,OAAO;AACtC,cAAQ,IAAI,mBAAmB,QAAQ;AACvC,cAAQ,IAAI,2BAA2B,KAAK,QAAQ,IAAI,cAAc,CAAC;AACvE,cAAQ,IAAI,+BAA+B,YAAY;AACvD,cAAQ,IAAI,8BAA8B,UAAU;AACpD,aAAO,IAAI,SAAS,MAAM;AAAA,QACxB,QAAQ;AAAA,QACR,YAAY;AAAA,QACZ;AAAA,MACF,CAAC;AAAA,IACH,WAAW,KAAK,WAAW,KAAK;AAC9B,aAAO;AAAA,IACT,OAAO;AACL,UAAI,UAAU,IAAI,QAAQ,KAAK,OAAO;AACtC,cAAQ,IAAI,mBAAmB,QAAQ;AACvC,cAAQ,IAAI,+BAA+B,YAAY;AACvD,cAAQ,IAAI,8BAA8B,UAAU;AACpD,aAAO,IAAI,SAAS,KAAK,MAAM;AAAA,QAC7B,QAAQ,KAAK;AAAA,QACb,YAAY,KAAK;AAAA,QACjB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,WAAW,gBAAgB,WAAW;AACpC,WAAO,IAAI;AAAA,MACT,KAAK,UAAU;AAAA,QACb,OAAO;AAAA,UACL,SAAS,KAAK;AAAA,UACd,OAAO;AAAA,UACP,WAAW,KAAK;AAAA,UAChB,QAAQ,KAAK;AAAA,UACb,aAAa,KAAK;AAAA,QACpB;AAAA,MACF,CAAC;AAAA,MACD;AAAA,QACE,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,CAAC,gCAAgC;AAAA,UACjC,CAAC,+BAA+B;AAAA,QAClC;AAAA,MACF;AAAA,IACF;AAAA,EACF,WAAW,gBAAgB,aAAa;AACtC,WAAO,IAAI;AAAA,MACT,KAAK,UAAU;AAAA,QACb,OAAO;AAAA,UACL,SAAS,KAAK;AAAA,UACd,OAAO;AAAA,QACT;AAAA,MACF,CAAC;AAAA,MACD;AAAA,QACE,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,CAAC,gCAAgC;AAAA,UACjC,CAAC,+BAA+B;AAAA,QAClC;AAAA,MACF;AAAA,IACF;AAAA,EACF,WAAW,gBAAgB,OAAO;AAChC,YAAQ,MAAM,IAAI;AAClB,WAAO,IAAI;AAAA,MACT,KAAK,UAAU;AAAA,QACb,OAAO;AAAA,UACL,SAAS;AAAA,UACT,OAAO;AAAA,UACP,QAAQ,KAAK;AAAA,QACf;AAAA,MACF,CAAC;AAAA,MACD;AAAA,QACE,QAAQ,KAAK,UAAU;AAAA,QACvB,SAAS;AAAA,UACP,CAAC,gCAAgC;AAAA,UACjC,CAAC,+BAA+B;AAAA,QAClC;AAAA,MACF;AAAA,IACF;AAAA,EACF,WAAW,OAAO,SAAS,YAAY,OAAO,SAAS,YAAY,OAAO,SAAS,YAAY,OAAO,SAAS,WAAW;AACxH,WAAO,IAAI,SAAS,KAAK,UAAU,IAAI,GAAG;AAAA,MACxC,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,CAAC,oBAAoB;AAAA,QACrB,CAAC,gCAAgC;AAAA,QACjC,CAAC,+BAA+B;AAAA,MAClC;AAAA,IACF,CAAC;AAAA,EACH;AACA,SAAO,IAAI,SAAS,QAAQ;AAAA,IAC1B,QAAQ;AAAA,IACR,SAAS;AAAA,MACP,CAAC,oBAAoB;AAAA,MACrB,CAAC,+BAA+B;AAAA,MAChC,CAAC,gCAAgC;AAAA,IACnC;AAAA,EACF,CAAC;AACH;AACA,eAAe,oBAAoB,OAAO;AACxC,QAAM,MAAM,IAAI,IAAI,MAAM,QAAQ,GAAG;AACrC,MAAI,QAAQ,WAAW,IAAI,QAAQ,GAAG;AACpC,QAAI;AACF,UAAI,CAAC,MAAM,IAAI,IAAI,MAAM,aAAa,KAAK;AAC3C,UAAIC,WAAU,QAAQ,WAAW,IAAI;AACrC,UAAI,CAACA,UAAS;AACZ,cAAM;AAAA,UACJ,QAAQ;AAAA,UACR,SAAS,2BAA2B;AAAA,QACtC;AAAA,MACF;AACA,YAAM,OAAO,MAAMA,SAAQ,KAAK,OAAO,GAAG,MAAM,QAAQ,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;AAC7E,aAAO,YAAY,MAAM,SAAS,MAAM,QAAQ;AAAA,IAClD,SAAS,OAAP;AACA,aAAO,YAAY,MAAM,SAAS,OAAO,OAAO;AAAA,IAClD;AAAA,EACF;AACA,SAAO;AACT;AACA,IAAM,WAA2B,oBAAI,IAAI;AACzC,QAAQ,gBAAgB,CAAC,KAAK,SAAS;AACrC,MAAI,KAAK,YAAY,MAAM;AACzB,QAAI;AACJ,QAAI,OAAO,SAAS,UAAU;AAC5B,YAAM;AAAA,IACR,WAAW,aAAa,WAAW,aAAa,QAAQ,gBAAgB;AACtE,YAAM,aAAa,QAAQ;AAAA,IAC7B,OAAO;AACL,YAAM;AAAA,QACJ,SAAS,IAAI,IAAI,MAAM,uBAAuB,EAAE;AAAA,QAChD,iBAAiB,IAAI,QAAQ;AAAA,MAC/B;AAAA,IACF;AACA,UAAMC,WAAU,YAAY;AAC1B,UAAI;AACF,YAAI,IAAI,MAAM,IAAI,KAAK,KAAK,GAAG,IAAI;AACnC,eAAO;AAAA,MACT,SAAS,GAAP;AACA,YAAI,2BAA2B,KAAK,EAAE,OAAO,GAAG;AAC9C,gBAAM,QAAQ,IAAI;AAAA,YAChB,EAAE,UAAU;AAAA,UACd;AACA,gBAAM,QAAQ,EAAE;AAChB,gBAAM;AAAA,QACR;AACA,cAAM;AAAA,MACR;AAAA,IACF;AACA,WAAOA,SAAQ;AAAA,EACjB;AACA,KAAG,MAAM;AACT,KAAG,SAAS,YAAY,MAAM;AAC5B,WAAO,GAAG,KAAK,MAAM,GAAG,IAAI;AAAA,EAC9B;AACA,SAAO;AACT;AACA,QAAQ,kBAAkB,SAAS,OAAOD,UAAS;AACjD,WAAS,IAAI,OAAOA,QAAO;AAC7B;AACA,QAAQ,aAAa,SAAS,OAAO;AACnC,SAAO,SAAS,IAAI,KAAK;AAC3B;AACA,QAAQ,aAAa,SAAS,OAAO;AACnC,SAAO,SAAS,IAAI,KAAK;AAC3B;AACA,QAAQ,QAAQ;AAEhB,IAAM,wBAAwB,CAAC,EAAE,QAAQ,MAAM;AAC7C,SAAO,OAAO,UAAU;AACtB,UAAM,MAAM,IAAI,IAAI,MAAM,QAAQ,GAAG;AACrC,QAAI,QAAQ,WAAW,IAAI,QAAQ,GAAG;AACpC,UAAI,cAAc,MAAM,QAAQ,QAAQ,IAAI,iBAAiB;AAC7D,UAAI,SAAS,MAAM,QAAQ,QAAQ,IAAI,iBAAiB;AACxD,UAAI;AACJ,UAAI,eAAe,QAAQ,YAAY,SAAS,MAAM,KAAK,EAAE,UAAU,QAAQ,OAAO,SAAS,QAAQ,IAAI;AACzG,YAAI,CAAC,OAAO,KAAK,IAAI,MAAM,QAAQ,KAAK,IAAI;AAC5C,0BAAkB,IAAI,QAAQ,MAAM,QAAQ,KAAK;AAAA,UAC/C,MAAM;AAAA,UACN,SAAS,MAAM,QAAQ;AAAA,UACvB,QAAQ,MAAM,QAAQ;AAAA,QACxB,CAAC;AACD,cAAM,UAAU,IAAI,QAAQ,MAAM,QAAQ,KAAK;AAAA,UAC7C,MAAM;AAAA,UACN,SAAS,MAAM,QAAQ;AAAA,UACvB,QAAQ,MAAM,QAAQ;AAAA,QACxB,CAAC;AAAA,MACH;AACA,UAAI,sBAAsB,OAAO,OAAO;AAAA,QACtC,SAAS,MAAM;AAAA,QACf,OAAO;AAAA,QACP,OAAO;AAAA,QACP,KAAK,MAAM;AAAA,MACb,CAAC;AACD,YAAM,iBAAiB,MAAM,oBAAoB,mBAAmB;AACpE,UAAI,sBAAsB,eAAe,QAAQ,IAAI,4BAA4B;AACjF,UAAI,mBAAmB,wBAAwB,QAAQ,oBAAoB,SAAS,OAAO,GAAG;AAC5F,cAAM,WAAW,MAAM,gBAAgB,SAAS;AAChD,YAAI,UAAU,CAAC,GAAG,SAAS,QAAQ,CAAC;AACpC,eAAO,IAAI,SAAS,MAAM;AAAA,UACxB,QAAQ;AAAA,UACR,SAAS;AAAA,YACP,UAAU,IAAI,IAAI,MAAM,QAAQ,QAAQ,IAAI,SAAS,CAAC,EAAE,WAAW,WAAW;AAAA,cAC5E,KAAK,UAAU;AAAA,gBACb,KAAK,IAAI;AAAA,gBACT;AAAA,gBACA,GAAG,MAAM,eAAe,KAAK;AAAA,cAC/B,CAAC;AAAA,YACH;AAAA,UACF;AAAA,QACF,CAAC;AAAA,MACH;AACA,aAAO;AAAA,IACT;AACA,UAAM,WAAW,MAAM,QAAQ,KAAK;AACpC,WAAO;AAAA,EACT;AACF;AAEA,IAAM,WAAW,OAAO,OAAuB,uBAAO,OAAO,CAAC,CAAC,CAAC,EAAE;AAClE,IAAM,SAAS,WAAW,SAAS,UAAU;AAI7C,IAAM,oBAAoB,eAAa,CAAC;AAAA,EACtC;AACF,MAAM,UAAU,YAAY,CAACE,UAAS,aAAa,SAAS;AAAA,EAC1D,SAAAA;AACF,CAAC,GAAG,OAAO;AACX,SAAS,iBAAiB,WAAW;AACnC,QAAM,WAAW,kBAAkB,CAAC,WAAW,uBAAuB,GAAG,SAAS,CAAC;AACnF,SAAO,OAAM,UAAS;AACpB,WAAO,MAAM,SAAS;AAAA,MACpB,SAAS,OAAM,OAAM;AACnB,eAAO,IAAI,SAAS,MAAM;AAAA,UACxB,QAAQ;AAAA,QACV,CAAC;AAAA,MACH;AAAA,IACF,CAAC,EAAE,KAAK;AAAA,EACV;AACF;AACA,SAAS,YAAY,OAAO;AAE1B,SAAO,gBAAgB,QAAQ,KAAK;AACtC;AACA,IAAM,UAAU,IAAI,iBAAiB;AACrC,SAAS,YAAY;AAAA,EACnB;AACF,GAAG;AACD,QAAM,SAAS,IAAI,IAAI,MAAM,QAAQ,GAAG;AACxC,QAAM,OAAO,OAAO,WAAW,OAAO;AACtC,eAAa,QAAQ,iBAAiB;AACtC,SAAO,gBAAgB,cAAc,UAAU;AAAA,IAC7C,OAAO;AAAA,IAEP,IAAI,WAAW;AACb,aAAO,gBAAgB,cAAc;AAAA,QACnC,IAAI,OAAO;AACT,iBAAO,MAAM;AAAA,QACf;AAAA,QAEA,IAAI,WAAW;AACb,iBAAO,gBAAgB,aAAa;AAAA,YAClC,KAAK;AAAA,YAEL,IAAI,MAAM;AACR,qBAAO,MAAM;AAAA,YACf;AAAA,YAEA,UAAU;AAAA,YAEV,IAAI,eAAe;AACjB,qBAAO,MAAM;AAAA,YACf;AAAA,YAEA,MAAM;AAAA,YAEN,IAAI,SAAS;AACX,qBAAO,aAAa;AAAA,YACtB;AAAA,YAEA,IAAI,WAAW;AACb,qBAAO,CAAC,SAAS,gBAAgB,MAAM,CAAC,CAAC,CAAC;AAAA,YAC5C;AAAA,UAEF,CAAC;AAAA,QACH;AAAA,MAEF,CAAC;AAAA,IACH;AAAA,EAEF,CAAC;AACH;AAEA,IAAM,cAAc,cAAc,YAAY,WAAS,gBAAgB,aAAa;AAAA,EAClF;AACF,CAAC,CAAC,CAAC;;;AHnsDH,IAAM,gBAAgB,KAAK,MAAM,YAAY;AAE7C,IAAO,iBAAQ;AAAA,EACb,MAAM,MAAMC,UAAS,KAAK,KAAK;AAC7B,QAAIA,SAAQ,QAAQ,IAAI,SAAS,MAAM,aAAa;AAClD,YAAM,MAAM,IAAI,IAAIA,SAAQ,GAAG;AAC/B,YAAM,kBAAkB,IAAI,aAAa,WAAW,IAAI,WAAW,IAAI,MAAM;AAC7E,YAAM,oBAAoB,IAAI,aAAa,IAAI,eAAe;AAC9D,YAAM,WAAW,MAAM,kBAAkB,MAAMA,QAAO;AACtD,aAAO;AAAA,IACT;AAEA,QAAI,WAAW;AACf,QAAI,iBAAiB,OAAMA,aAAW;AACpC,aAAO,UAAM;AAAA,QACX;AAAA,UACE,SAAAA;AAAA,UACA,UAAU,SAAS;AACjB,mBAAO,IAAI,UAAU,OAAO;AAAA,UAC9B;AAAA,QACF;AAAA,QACA;AAAA,UACE,iBAAiB,IAAI;AAAA,UACrB,gBAAgB;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAEA,QAAI,gBAAgB,OAAM,SAAQ;AAChC,aAAO,MAAM,IAAI,eAAe,IAAI,QAAQ,IAAI,IAAI,OAAO,SAASA,SAAQ,IAAI,SAAS,CAAC,CAAC,CAAC;AAAA,IAC9F;AAEA,QAAI;AACF,aAAO,MAAM,IAAI,eAAeA,QAAO;AAAA,IACzC,SAAS,GAAP;AACA,UAAI,EAAE,aAAa,yCAAiB,aAAa,gDAAwB;AACvE,eAAO,IAAI,SAAS,gCAAgC,EAAE,QAAQ,IAAI,CAAC;AAAA,MACrE;AAAA,IACF;AACA,WAAO,YAAQ;AAAA,MACb,SAASA;AAAA,MACT;AAAA,IACF,CAAC;AAAA,EACH;AACF;", - "names": ["MethodNotAllowedError", "NotFoundError", "request", "getAssetFromKV", "self", "exports", "Headers", "reject", "Body", "Request", "Response", "fetch", "request", "isObjectLike", "invariant", "getLocation", "LineRegExp", "printLocation", "printSourceLocation", "printPrefixedLines", "prefix", "formatError", "printError", "toNormalizedOptions", "GraphQLError", "undefinedIfEmpty", "syntaxError", "isNode", "Location", "Token", "QueryDocumentKeys", "kindValues", "OperationTypeNode", "DirectiveLocation", "Kind", "isDigit", "isLetter", "isNameContinue", "isNameStart", "isWhiteSpace", "dedentBlockStringLines", "printBlockString", "indent", "leadingWhitespace", "TokenKind", "isPunctuatorTokenKind", "Lexer", "readNextToken", "isUnicodeScalarValue", "isSupplementaryCodePoint", "isLeadingSurrogate", "isTrailingSurrogate", "printCodePointAt", "createToken", "readComment", "readBlockString", "readString", "readNumber", "readName", "readDigits", "escape", "readEscapedUnicodeVariableWidth", "readEscapedUnicodeFixedWidth", "readEscapedCharacter", "readHexDigit", "read16BitHexCode", "devAssert", "inspect", "MAX_ARRAY_LENGTH", "MAX_RECURSIVE_DEPTH", "formatValue", "formatObjectValue", "isJSONable", "formatArray", "formatObject", "getObjectTag", "instanceOf", "isSource", "Source", "parse", "parseConstValue", "parseType", "parseValue", "Parser", "getTokenDesc", "getTokenKindDesc", "printString", "escapedRegExp", "escapedReplacer", "escapeSequences", "getEnterLeaveForKind", "getVisitFn", "visit", "visitInParallel", "BREAK", "print", "printDocASTReducer", "MAX_LINE_LENGTH", "join", "wrap", "prefix", "block", "indent", "hasMultilineItems", "prefix", "i", "result", "_a", "map", "document", "__extends", "ClientError", "request", "ERROR", "GraphQLWebSocketMessage", "_a", "GraphQLWebSocketClient", "__awaiter", "e", "reject", "document", "_a", "post", "fetch", "get", "GraphQLClient", "document", "variables", "data", "request", "gql", "Node", "self", "push", "get", "self", "children", "lookup", "res", "reject", "resolveSSRNode", "options", "children", "EnableIfBranded", "prefix", "OperationTypeNode", "DirectiveLocation", "Kind", "indent", "TokenKind", "escape", "instanceOf", "map", "isDigit", "map", "prefix", "parseValue", "TypeKind", "map", "map", "onError", "onError", "hasOwnProperty", "prefix", "document", "onError", "spread", "collectSubfields", "document", "document", "getFieldDef", "collectSubfields", "document", "getFieldDef", "getNamedType", "document", "mapAsyncIterator", "_a", "isAsyncIterable", "onError", "handler", "schema", "err", "isAsyncIterable", "mapAsyncIterator", "result", "document", "isAsyncIterable", "formatError", "isDev", "_a", "LRU", "_a", "import_lru_cache", "DEFAULT_MAX", "DEFAULT_TTL", "LRU", "_a", "MAX_RECURSIVE_DEPTH", "inspect", "formatValue", "formatObjectValue", "formatError", "formatArray", "isJSONable", "formatObject", "getObjectTag", "inspect", "integerStringRegExp", "getRootTypeNames", "getRootTypes", "getRootTypeMap", "_a", "type", "MAX_LINE_LENGTH", "_a", "join", "hasMultilineItems", "key", "indent", "block", "wrap", "printBlockString", "printDocASTReducer", "prefix", "indent", "leadingWhitespace", "MapperKind", "_a", "_a", "isAsyncIterable", "defaultFieldResolver", "_a", "mergeArguments", "source", "CompareVal", "_a", "_a", "_b", "request", "document", "request", "_a", "request", "_a", "request", "request", "request", "request", "request", "request", "_a", "map", "request", "request", "request", "isAsyncIterable", "request", "_a", "isAsyncIterable", "request", "_a", "isAsyncIterable", "request", "isAggregateError", "handleError", "request", "request", "_a", "_a", "request", "server", "handleError", "error", "document", "d", "b", "reject", "RepeaterOverflowError", "FixedBuffer", "SlidingBuffer", "DroppingBuffer", "value", "_a", "execute", "Repeater", "push", "stop", "iteration", "_this", "iterations", "handler", "request", "get", "wrap", "invariant", "map", "prefix", "children", "asArray", "path", "state", "ErrorBoundary", "match", "ErrorBoundary", "request", "handler", "execute", "forward", "request"] + "sourcesContent": ["import manifestJSON from '__STATIC_CONTENT_MANIFEST';\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getAugmentedNamespace(n) {\n var f = n.default;\n\tif (typeof f == \"function\") {\n\t\tvar a = function () {\n\t\t\treturn f.apply(this, arguments);\n\t\t};\n\t\ta.prototype = f.prototype;\n } else a = {};\n Object.defineProperty(a, '__esModule', {value: true});\n\tObject.keys(n).forEach(function (k) {\n\t\tvar d = Object.getOwnPropertyDescriptor(n, k);\n\t\tObject.defineProperty(a, k, d.get ? d : {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn n[k];\n\t\t\t}\n\t\t});\n\t});\n\treturn a;\n}\n\nvar dist$1 = {};\n\n/**\n * @param typeMap [Object] Map of MIME type -> Array[extensions]\n * @param ...\n */\nfunction Mime$1() {\n this._types = Object.create(null);\n this._extensions = Object.create(null);\n\n for (let i = 0; i < arguments.length; i++) {\n this.define(arguments[i]);\n }\n\n this.define = this.define.bind(this);\n this.getType = this.getType.bind(this);\n this.getExtension = this.getExtension.bind(this);\n}\n\n/**\n * Define mimetype -> extension mappings. Each key is a mime-type that maps\n * to an array of extensions associated with the type. The first extension is\n * used as the default extension for the type.\n *\n * e.g. mime.define({'audio/ogg', ['oga', 'ogg', 'spx']});\n *\n * If a type declares an extension that has already been defined, an error will\n * be thrown. To suppress this error and force the extension to be associated\n * with the new type, pass `force`=true. Alternatively, you may prefix the\n * extension with \"*\" to map the type to extension, without mapping the\n * extension to the type.\n *\n * e.g. mime.define({'audio/wav', ['wav']}, {'audio/x-wav', ['*wav']});\n *\n *\n * @param map (Object) type definitions\n * @param force (Boolean) if true, force overriding of existing definitions\n */\nMime$1.prototype.define = function(typeMap, force) {\n for (let type in typeMap) {\n let extensions = typeMap[type].map(function(t) {\n return t.toLowerCase();\n });\n type = type.toLowerCase();\n\n for (let i = 0; i < extensions.length; i++) {\n const ext = extensions[i];\n\n // '*' prefix = not the preferred type for this extension. So fixup the\n // extension, and skip it.\n if (ext[0] === '*') {\n continue;\n }\n\n if (!force && (ext in this._types)) {\n throw new Error(\n 'Attempt to change mapping for \"' + ext +\n '\" extension from \"' + this._types[ext] + '\" to \"' + type +\n '\". Pass `force=true` to allow this, otherwise remove \"' + ext +\n '\" from the list of extensions for \"' + type + '\".'\n );\n }\n\n this._types[ext] = type;\n }\n\n // Use first extension as default\n if (force || !this._extensions[type]) {\n const ext = extensions[0];\n this._extensions[type] = (ext[0] !== '*') ? ext : ext.substr(1);\n }\n }\n};\n\n/**\n * Lookup a mime type based on extension\n */\nMime$1.prototype.getType = function(path) {\n path = String(path);\n let last = path.replace(/^.*[/\\\\]/, '').toLowerCase();\n let ext = last.replace(/^.*\\./, '').toLowerCase();\n\n let hasPath = last.length < path.length;\n let hasDot = ext.length < last.length - 1;\n\n return (hasDot || !hasPath) && this._types[ext] || null;\n};\n\n/**\n * Return file extension associated with a mime type\n */\nMime$1.prototype.getExtension = function(type) {\n type = /^\\s*([^;\\s]*)/.test(type) && RegExp.$1;\n return type && this._extensions[type.toLowerCase()] || null;\n};\n\nvar Mime_1 = Mime$1;\n\nvar standard = {\"application/andrew-inset\":[\"ez\"],\"application/applixware\":[\"aw\"],\"application/atom+xml\":[\"atom\"],\"application/atomcat+xml\":[\"atomcat\"],\"application/atomdeleted+xml\":[\"atomdeleted\"],\"application/atomsvc+xml\":[\"atomsvc\"],\"application/atsc-dwd+xml\":[\"dwd\"],\"application/atsc-held+xml\":[\"held\"],\"application/atsc-rsat+xml\":[\"rsat\"],\"application/bdoc\":[\"bdoc\"],\"application/calendar+xml\":[\"xcs\"],\"application/ccxml+xml\":[\"ccxml\"],\"application/cdfx+xml\":[\"cdfx\"],\"application/cdmi-capability\":[\"cdmia\"],\"application/cdmi-container\":[\"cdmic\"],\"application/cdmi-domain\":[\"cdmid\"],\"application/cdmi-object\":[\"cdmio\"],\"application/cdmi-queue\":[\"cdmiq\"],\"application/cu-seeme\":[\"cu\"],\"application/dash+xml\":[\"mpd\"],\"application/davmount+xml\":[\"davmount\"],\"application/docbook+xml\":[\"dbk\"],\"application/dssc+der\":[\"dssc\"],\"application/dssc+xml\":[\"xdssc\"],\"application/ecmascript\":[\"es\",\"ecma\"],\"application/emma+xml\":[\"emma\"],\"application/emotionml+xml\":[\"emotionml\"],\"application/epub+zip\":[\"epub\"],\"application/exi\":[\"exi\"],\"application/express\":[\"exp\"],\"application/fdt+xml\":[\"fdt\"],\"application/font-tdpfr\":[\"pfr\"],\"application/geo+json\":[\"geojson\"],\"application/gml+xml\":[\"gml\"],\"application/gpx+xml\":[\"gpx\"],\"application/gxf\":[\"gxf\"],\"application/gzip\":[\"gz\"],\"application/hjson\":[\"hjson\"],\"application/hyperstudio\":[\"stk\"],\"application/inkml+xml\":[\"ink\",\"inkml\"],\"application/ipfix\":[\"ipfix\"],\"application/its+xml\":[\"its\"],\"application/java-archive\":[\"jar\",\"war\",\"ear\"],\"application/java-serialized-object\":[\"ser\"],\"application/java-vm\":[\"class\"],\"application/javascript\":[\"js\",\"mjs\"],\"application/json\":[\"json\",\"map\"],\"application/json5\":[\"json5\"],\"application/jsonml+json\":[\"jsonml\"],\"application/ld+json\":[\"jsonld\"],\"application/lgr+xml\":[\"lgr\"],\"application/lost+xml\":[\"lostxml\"],\"application/mac-binhex40\":[\"hqx\"],\"application/mac-compactpro\":[\"cpt\"],\"application/mads+xml\":[\"mads\"],\"application/manifest+json\":[\"webmanifest\"],\"application/marc\":[\"mrc\"],\"application/marcxml+xml\":[\"mrcx\"],\"application/mathematica\":[\"ma\",\"nb\",\"mb\"],\"application/mathml+xml\":[\"mathml\"],\"application/mbox\":[\"mbox\"],\"application/mediaservercontrol+xml\":[\"mscml\"],\"application/metalink+xml\":[\"metalink\"],\"application/metalink4+xml\":[\"meta4\"],\"application/mets+xml\":[\"mets\"],\"application/mmt-aei+xml\":[\"maei\"],\"application/mmt-usd+xml\":[\"musd\"],\"application/mods+xml\":[\"mods\"],\"application/mp21\":[\"m21\",\"mp21\"],\"application/mp4\":[\"mp4s\",\"m4p\"],\"application/msword\":[\"doc\",\"dot\"],\"application/mxf\":[\"mxf\"],\"application/n-quads\":[\"nq\"],\"application/n-triples\":[\"nt\"],\"application/node\":[\"cjs\"],\"application/octet-stream\":[\"bin\",\"dms\",\"lrf\",\"mar\",\"so\",\"dist\",\"distz\",\"pkg\",\"bpk\",\"dump\",\"elc\",\"deploy\",\"exe\",\"dll\",\"deb\",\"dmg\",\"iso\",\"img\",\"msi\",\"msp\",\"msm\",\"buffer\"],\"application/oda\":[\"oda\"],\"application/oebps-package+xml\":[\"opf\"],\"application/ogg\":[\"ogx\"],\"application/omdoc+xml\":[\"omdoc\"],\"application/onenote\":[\"onetoc\",\"onetoc2\",\"onetmp\",\"onepkg\"],\"application/oxps\":[\"oxps\"],\"application/p2p-overlay+xml\":[\"relo\"],\"application/patch-ops-error+xml\":[\"xer\"],\"application/pdf\":[\"pdf\"],\"application/pgp-encrypted\":[\"pgp\"],\"application/pgp-signature\":[\"asc\",\"sig\"],\"application/pics-rules\":[\"prf\"],\"application/pkcs10\":[\"p10\"],\"application/pkcs7-mime\":[\"p7m\",\"p7c\"],\"application/pkcs7-signature\":[\"p7s\"],\"application/pkcs8\":[\"p8\"],\"application/pkix-attr-cert\":[\"ac\"],\"application/pkix-cert\":[\"cer\"],\"application/pkix-crl\":[\"crl\"],\"application/pkix-pkipath\":[\"pkipath\"],\"application/pkixcmp\":[\"pki\"],\"application/pls+xml\":[\"pls\"],\"application/postscript\":[\"ai\",\"eps\",\"ps\"],\"application/provenance+xml\":[\"provx\"],\"application/pskc+xml\":[\"pskcxml\"],\"application/raml+yaml\":[\"raml\"],\"application/rdf+xml\":[\"rdf\",\"owl\"],\"application/reginfo+xml\":[\"rif\"],\"application/relax-ng-compact-syntax\":[\"rnc\"],\"application/resource-lists+xml\":[\"rl\"],\"application/resource-lists-diff+xml\":[\"rld\"],\"application/rls-services+xml\":[\"rs\"],\"application/route-apd+xml\":[\"rapd\"],\"application/route-s-tsid+xml\":[\"sls\"],\"application/route-usd+xml\":[\"rusd\"],\"application/rpki-ghostbusters\":[\"gbr\"],\"application/rpki-manifest\":[\"mft\"],\"application/rpki-roa\":[\"roa\"],\"application/rsd+xml\":[\"rsd\"],\"application/rss+xml\":[\"rss\"],\"application/rtf\":[\"rtf\"],\"application/sbml+xml\":[\"sbml\"],\"application/scvp-cv-request\":[\"scq\"],\"application/scvp-cv-response\":[\"scs\"],\"application/scvp-vp-request\":[\"spq\"],\"application/scvp-vp-response\":[\"spp\"],\"application/sdp\":[\"sdp\"],\"application/senml+xml\":[\"senmlx\"],\"application/sensml+xml\":[\"sensmlx\"],\"application/set-payment-initiation\":[\"setpay\"],\"application/set-registration-initiation\":[\"setreg\"],\"application/shf+xml\":[\"shf\"],\"application/sieve\":[\"siv\",\"sieve\"],\"application/smil+xml\":[\"smi\",\"smil\"],\"application/sparql-query\":[\"rq\"],\"application/sparql-results+xml\":[\"srx\"],\"application/srgs\":[\"gram\"],\"application/srgs+xml\":[\"grxml\"],\"application/sru+xml\":[\"sru\"],\"application/ssdl+xml\":[\"ssdl\"],\"application/ssml+xml\":[\"ssml\"],\"application/swid+xml\":[\"swidtag\"],\"application/tei+xml\":[\"tei\",\"teicorpus\"],\"application/thraud+xml\":[\"tfi\"],\"application/timestamped-data\":[\"tsd\"],\"application/toml\":[\"toml\"],\"application/trig\":[\"trig\"],\"application/ttml+xml\":[\"ttml\"],\"application/ubjson\":[\"ubj\"],\"application/urc-ressheet+xml\":[\"rsheet\"],\"application/urc-targetdesc+xml\":[\"td\"],\"application/voicexml+xml\":[\"vxml\"],\"application/wasm\":[\"wasm\"],\"application/widget\":[\"wgt\"],\"application/winhlp\":[\"hlp\"],\"application/wsdl+xml\":[\"wsdl\"],\"application/wspolicy+xml\":[\"wspolicy\"],\"application/xaml+xml\":[\"xaml\"],\"application/xcap-att+xml\":[\"xav\"],\"application/xcap-caps+xml\":[\"xca\"],\"application/xcap-diff+xml\":[\"xdf\"],\"application/xcap-el+xml\":[\"xel\"],\"application/xcap-ns+xml\":[\"xns\"],\"application/xenc+xml\":[\"xenc\"],\"application/xhtml+xml\":[\"xhtml\",\"xht\"],\"application/xliff+xml\":[\"xlf\"],\"application/xml\":[\"xml\",\"xsl\",\"xsd\",\"rng\"],\"application/xml-dtd\":[\"dtd\"],\"application/xop+xml\":[\"xop\"],\"application/xproc+xml\":[\"xpl\"],\"application/xslt+xml\":[\"*xsl\",\"xslt\"],\"application/xspf+xml\":[\"xspf\"],\"application/xv+xml\":[\"mxml\",\"xhvml\",\"xvml\",\"xvm\"],\"application/yang\":[\"yang\"],\"application/yin+xml\":[\"yin\"],\"application/zip\":[\"zip\"],\"audio/3gpp\":[\"*3gpp\"],\"audio/adpcm\":[\"adp\"],\"audio/amr\":[\"amr\"],\"audio/basic\":[\"au\",\"snd\"],\"audio/midi\":[\"mid\",\"midi\",\"kar\",\"rmi\"],\"audio/mobile-xmf\":[\"mxmf\"],\"audio/mp3\":[\"*mp3\"],\"audio/mp4\":[\"m4a\",\"mp4a\"],\"audio/mpeg\":[\"mpga\",\"mp2\",\"mp2a\",\"mp3\",\"m2a\",\"m3a\"],\"audio/ogg\":[\"oga\",\"ogg\",\"spx\",\"opus\"],\"audio/s3m\":[\"s3m\"],\"audio/silk\":[\"sil\"],\"audio/wav\":[\"wav\"],\"audio/wave\":[\"*wav\"],\"audio/webm\":[\"weba\"],\"audio/xm\":[\"xm\"],\"font/collection\":[\"ttc\"],\"font/otf\":[\"otf\"],\"font/ttf\":[\"ttf\"],\"font/woff\":[\"woff\"],\"font/woff2\":[\"woff2\"],\"image/aces\":[\"exr\"],\"image/apng\":[\"apng\"],\"image/avif\":[\"avif\"],\"image/bmp\":[\"bmp\"],\"image/cgm\":[\"cgm\"],\"image/dicom-rle\":[\"drle\"],\"image/emf\":[\"emf\"],\"image/fits\":[\"fits\"],\"image/g3fax\":[\"g3\"],\"image/gif\":[\"gif\"],\"image/heic\":[\"heic\"],\"image/heic-sequence\":[\"heics\"],\"image/heif\":[\"heif\"],\"image/heif-sequence\":[\"heifs\"],\"image/hej2k\":[\"hej2\"],\"image/hsj2\":[\"hsj2\"],\"image/ief\":[\"ief\"],\"image/jls\":[\"jls\"],\"image/jp2\":[\"jp2\",\"jpg2\"],\"image/jpeg\":[\"jpeg\",\"jpg\",\"jpe\"],\"image/jph\":[\"jph\"],\"image/jphc\":[\"jhc\"],\"image/jpm\":[\"jpm\"],\"image/jpx\":[\"jpx\",\"jpf\"],\"image/jxr\":[\"jxr\"],\"image/jxra\":[\"jxra\"],\"image/jxrs\":[\"jxrs\"],\"image/jxs\":[\"jxs\"],\"image/jxsc\":[\"jxsc\"],\"image/jxsi\":[\"jxsi\"],\"image/jxss\":[\"jxss\"],\"image/ktx\":[\"ktx\"],\"image/ktx2\":[\"ktx2\"],\"image/png\":[\"png\"],\"image/sgi\":[\"sgi\"],\"image/svg+xml\":[\"svg\",\"svgz\"],\"image/t38\":[\"t38\"],\"image/tiff\":[\"tif\",\"tiff\"],\"image/tiff-fx\":[\"tfx\"],\"image/webp\":[\"webp\"],\"image/wmf\":[\"wmf\"],\"message/disposition-notification\":[\"disposition-notification\"],\"message/global\":[\"u8msg\"],\"message/global-delivery-status\":[\"u8dsn\"],\"message/global-disposition-notification\":[\"u8mdn\"],\"message/global-headers\":[\"u8hdr\"],\"message/rfc822\":[\"eml\",\"mime\"],\"model/3mf\":[\"3mf\"],\"model/gltf+json\":[\"gltf\"],\"model/gltf-binary\":[\"glb\"],\"model/iges\":[\"igs\",\"iges\"],\"model/mesh\":[\"msh\",\"mesh\",\"silo\"],\"model/mtl\":[\"mtl\"],\"model/obj\":[\"obj\"],\"model/step+xml\":[\"stpx\"],\"model/step+zip\":[\"stpz\"],\"model/step-xml+zip\":[\"stpxz\"],\"model/stl\":[\"stl\"],\"model/vrml\":[\"wrl\",\"vrml\"],\"model/x3d+binary\":[\"*x3db\",\"x3dbz\"],\"model/x3d+fastinfoset\":[\"x3db\"],\"model/x3d+vrml\":[\"*x3dv\",\"x3dvz\"],\"model/x3d+xml\":[\"x3d\",\"x3dz\"],\"model/x3d-vrml\":[\"x3dv\"],\"text/cache-manifest\":[\"appcache\",\"manifest\"],\"text/calendar\":[\"ics\",\"ifb\"],\"text/coffeescript\":[\"coffee\",\"litcoffee\"],\"text/css\":[\"css\"],\"text/csv\":[\"csv\"],\"text/html\":[\"html\",\"htm\",\"shtml\"],\"text/jade\":[\"jade\"],\"text/jsx\":[\"jsx\"],\"text/less\":[\"less\"],\"text/markdown\":[\"markdown\",\"md\"],\"text/mathml\":[\"mml\"],\"text/mdx\":[\"mdx\"],\"text/n3\":[\"n3\"],\"text/plain\":[\"txt\",\"text\",\"conf\",\"def\",\"list\",\"log\",\"in\",\"ini\"],\"text/richtext\":[\"rtx\"],\"text/rtf\":[\"*rtf\"],\"text/sgml\":[\"sgml\",\"sgm\"],\"text/shex\":[\"shex\"],\"text/slim\":[\"slim\",\"slm\"],\"text/spdx\":[\"spdx\"],\"text/stylus\":[\"stylus\",\"styl\"],\"text/tab-separated-values\":[\"tsv\"],\"text/troff\":[\"t\",\"tr\",\"roff\",\"man\",\"me\",\"ms\"],\"text/turtle\":[\"ttl\"],\"text/uri-list\":[\"uri\",\"uris\",\"urls\"],\"text/vcard\":[\"vcard\"],\"text/vtt\":[\"vtt\"],\"text/xml\":[\"*xml\"],\"text/yaml\":[\"yaml\",\"yml\"],\"video/3gpp\":[\"3gp\",\"3gpp\"],\"video/3gpp2\":[\"3g2\"],\"video/h261\":[\"h261\"],\"video/h263\":[\"h263\"],\"video/h264\":[\"h264\"],\"video/iso.segment\":[\"m4s\"],\"video/jpeg\":[\"jpgv\"],\"video/jpm\":[\"*jpm\",\"jpgm\"],\"video/mj2\":[\"mj2\",\"mjp2\"],\"video/mp2t\":[\"ts\"],\"video/mp4\":[\"mp4\",\"mp4v\",\"mpg4\"],\"video/mpeg\":[\"mpeg\",\"mpg\",\"mpe\",\"m1v\",\"m2v\"],\"video/ogg\":[\"ogv\"],\"video/quicktime\":[\"qt\",\"mov\"],\"video/webm\":[\"webm\"]};\n\nvar other = {\"application/prs.cww\":[\"cww\"],\"application/vnd.1000minds.decision-model+xml\":[\"1km\"],\"application/vnd.3gpp.pic-bw-large\":[\"plb\"],\"application/vnd.3gpp.pic-bw-small\":[\"psb\"],\"application/vnd.3gpp.pic-bw-var\":[\"pvb\"],\"application/vnd.3gpp2.tcap\":[\"tcap\"],\"application/vnd.3m.post-it-notes\":[\"pwn\"],\"application/vnd.accpac.simply.aso\":[\"aso\"],\"application/vnd.accpac.simply.imp\":[\"imp\"],\"application/vnd.acucobol\":[\"acu\"],\"application/vnd.acucorp\":[\"atc\",\"acutc\"],\"application/vnd.adobe.air-application-installer-package+zip\":[\"air\"],\"application/vnd.adobe.formscentral.fcdt\":[\"fcdt\"],\"application/vnd.adobe.fxp\":[\"fxp\",\"fxpl\"],\"application/vnd.adobe.xdp+xml\":[\"xdp\"],\"application/vnd.adobe.xfdf\":[\"xfdf\"],\"application/vnd.ahead.space\":[\"ahead\"],\"application/vnd.airzip.filesecure.azf\":[\"azf\"],\"application/vnd.airzip.filesecure.azs\":[\"azs\"],\"application/vnd.amazon.ebook\":[\"azw\"],\"application/vnd.americandynamics.acc\":[\"acc\"],\"application/vnd.amiga.ami\":[\"ami\"],\"application/vnd.android.package-archive\":[\"apk\"],\"application/vnd.anser-web-certificate-issue-initiation\":[\"cii\"],\"application/vnd.anser-web-funds-transfer-initiation\":[\"fti\"],\"application/vnd.antix.game-component\":[\"atx\"],\"application/vnd.apple.installer+xml\":[\"mpkg\"],\"application/vnd.apple.keynote\":[\"key\"],\"application/vnd.apple.mpegurl\":[\"m3u8\"],\"application/vnd.apple.numbers\":[\"numbers\"],\"application/vnd.apple.pages\":[\"pages\"],\"application/vnd.apple.pkpass\":[\"pkpass\"],\"application/vnd.aristanetworks.swi\":[\"swi\"],\"application/vnd.astraea-software.iota\":[\"iota\"],\"application/vnd.audiograph\":[\"aep\"],\"application/vnd.balsamiq.bmml+xml\":[\"bmml\"],\"application/vnd.blueice.multipass\":[\"mpm\"],\"application/vnd.bmi\":[\"bmi\"],\"application/vnd.businessobjects\":[\"rep\"],\"application/vnd.chemdraw+xml\":[\"cdxml\"],\"application/vnd.chipnuts.karaoke-mmd\":[\"mmd\"],\"application/vnd.cinderella\":[\"cdy\"],\"application/vnd.citationstyles.style+xml\":[\"csl\"],\"application/vnd.claymore\":[\"cla\"],\"application/vnd.cloanto.rp9\":[\"rp9\"],\"application/vnd.clonk.c4group\":[\"c4g\",\"c4d\",\"c4f\",\"c4p\",\"c4u\"],\"application/vnd.cluetrust.cartomobile-config\":[\"c11amc\"],\"application/vnd.cluetrust.cartomobile-config-pkg\":[\"c11amz\"],\"application/vnd.commonspace\":[\"csp\"],\"application/vnd.contact.cmsg\":[\"cdbcmsg\"],\"application/vnd.cosmocaller\":[\"cmc\"],\"application/vnd.crick.clicker\":[\"clkx\"],\"application/vnd.crick.clicker.keyboard\":[\"clkk\"],\"application/vnd.crick.clicker.palette\":[\"clkp\"],\"application/vnd.crick.clicker.template\":[\"clkt\"],\"application/vnd.crick.clicker.wordbank\":[\"clkw\"],\"application/vnd.criticaltools.wbs+xml\":[\"wbs\"],\"application/vnd.ctc-posml\":[\"pml\"],\"application/vnd.cups-ppd\":[\"ppd\"],\"application/vnd.curl.car\":[\"car\"],\"application/vnd.curl.pcurl\":[\"pcurl\"],\"application/vnd.dart\":[\"dart\"],\"application/vnd.data-vision.rdz\":[\"rdz\"],\"application/vnd.dbf\":[\"dbf\"],\"application/vnd.dece.data\":[\"uvf\",\"uvvf\",\"uvd\",\"uvvd\"],\"application/vnd.dece.ttml+xml\":[\"uvt\",\"uvvt\"],\"application/vnd.dece.unspecified\":[\"uvx\",\"uvvx\"],\"application/vnd.dece.zip\":[\"uvz\",\"uvvz\"],\"application/vnd.denovo.fcselayout-link\":[\"fe_launch\"],\"application/vnd.dna\":[\"dna\"],\"application/vnd.dolby.mlp\":[\"mlp\"],\"application/vnd.dpgraph\":[\"dpg\"],\"application/vnd.dreamfactory\":[\"dfac\"],\"application/vnd.ds-keypoint\":[\"kpxx\"],\"application/vnd.dvb.ait\":[\"ait\"],\"application/vnd.dvb.service\":[\"svc\"],\"application/vnd.dynageo\":[\"geo\"],\"application/vnd.ecowin.chart\":[\"mag\"],\"application/vnd.enliven\":[\"nml\"],\"application/vnd.epson.esf\":[\"esf\"],\"application/vnd.epson.msf\":[\"msf\"],\"application/vnd.epson.quickanime\":[\"qam\"],\"application/vnd.epson.salt\":[\"slt\"],\"application/vnd.epson.ssf\":[\"ssf\"],\"application/vnd.eszigno3+xml\":[\"es3\",\"et3\"],\"application/vnd.ezpix-album\":[\"ez2\"],\"application/vnd.ezpix-package\":[\"ez3\"],\"application/vnd.fdf\":[\"fdf\"],\"application/vnd.fdsn.mseed\":[\"mseed\"],\"application/vnd.fdsn.seed\":[\"seed\",\"dataless\"],\"application/vnd.flographit\":[\"gph\"],\"application/vnd.fluxtime.clip\":[\"ftc\"],\"application/vnd.framemaker\":[\"fm\",\"frame\",\"maker\",\"book\"],\"application/vnd.frogans.fnc\":[\"fnc\"],\"application/vnd.frogans.ltf\":[\"ltf\"],\"application/vnd.fsc.weblaunch\":[\"fsc\"],\"application/vnd.fujitsu.oasys\":[\"oas\"],\"application/vnd.fujitsu.oasys2\":[\"oa2\"],\"application/vnd.fujitsu.oasys3\":[\"oa3\"],\"application/vnd.fujitsu.oasysgp\":[\"fg5\"],\"application/vnd.fujitsu.oasysprs\":[\"bh2\"],\"application/vnd.fujixerox.ddd\":[\"ddd\"],\"application/vnd.fujixerox.docuworks\":[\"xdw\"],\"application/vnd.fujixerox.docuworks.binder\":[\"xbd\"],\"application/vnd.fuzzysheet\":[\"fzs\"],\"application/vnd.genomatix.tuxedo\":[\"txd\"],\"application/vnd.geogebra.file\":[\"ggb\"],\"application/vnd.geogebra.tool\":[\"ggt\"],\"application/vnd.geometry-explorer\":[\"gex\",\"gre\"],\"application/vnd.geonext\":[\"gxt\"],\"application/vnd.geoplan\":[\"g2w\"],\"application/vnd.geospace\":[\"g3w\"],\"application/vnd.gmx\":[\"gmx\"],\"application/vnd.google-apps.document\":[\"gdoc\"],\"application/vnd.google-apps.presentation\":[\"gslides\"],\"application/vnd.google-apps.spreadsheet\":[\"gsheet\"],\"application/vnd.google-earth.kml+xml\":[\"kml\"],\"application/vnd.google-earth.kmz\":[\"kmz\"],\"application/vnd.grafeq\":[\"gqf\",\"gqs\"],\"application/vnd.groove-account\":[\"gac\"],\"application/vnd.groove-help\":[\"ghf\"],\"application/vnd.groove-identity-message\":[\"gim\"],\"application/vnd.groove-injector\":[\"grv\"],\"application/vnd.groove-tool-message\":[\"gtm\"],\"application/vnd.groove-tool-template\":[\"tpl\"],\"application/vnd.groove-vcard\":[\"vcg\"],\"application/vnd.hal+xml\":[\"hal\"],\"application/vnd.handheld-entertainment+xml\":[\"zmm\"],\"application/vnd.hbci\":[\"hbci\"],\"application/vnd.hhe.lesson-player\":[\"les\"],\"application/vnd.hp-hpgl\":[\"hpgl\"],\"application/vnd.hp-hpid\":[\"hpid\"],\"application/vnd.hp-hps\":[\"hps\"],\"application/vnd.hp-jlyt\":[\"jlt\"],\"application/vnd.hp-pcl\":[\"pcl\"],\"application/vnd.hp-pclxl\":[\"pclxl\"],\"application/vnd.hydrostatix.sof-data\":[\"sfd-hdstx\"],\"application/vnd.ibm.minipay\":[\"mpy\"],\"application/vnd.ibm.modcap\":[\"afp\",\"listafp\",\"list3820\"],\"application/vnd.ibm.rights-management\":[\"irm\"],\"application/vnd.ibm.secure-container\":[\"sc\"],\"application/vnd.iccprofile\":[\"icc\",\"icm\"],\"application/vnd.igloader\":[\"igl\"],\"application/vnd.immervision-ivp\":[\"ivp\"],\"application/vnd.immervision-ivu\":[\"ivu\"],\"application/vnd.insors.igm\":[\"igm\"],\"application/vnd.intercon.formnet\":[\"xpw\",\"xpx\"],\"application/vnd.intergeo\":[\"i2g\"],\"application/vnd.intu.qbo\":[\"qbo\"],\"application/vnd.intu.qfx\":[\"qfx\"],\"application/vnd.ipunplugged.rcprofile\":[\"rcprofile\"],\"application/vnd.irepository.package+xml\":[\"irp\"],\"application/vnd.is-xpr\":[\"xpr\"],\"application/vnd.isac.fcs\":[\"fcs\"],\"application/vnd.jam\":[\"jam\"],\"application/vnd.jcp.javame.midlet-rms\":[\"rms\"],\"application/vnd.jisp\":[\"jisp\"],\"application/vnd.joost.joda-archive\":[\"joda\"],\"application/vnd.kahootz\":[\"ktz\",\"ktr\"],\"application/vnd.kde.karbon\":[\"karbon\"],\"application/vnd.kde.kchart\":[\"chrt\"],\"application/vnd.kde.kformula\":[\"kfo\"],\"application/vnd.kde.kivio\":[\"flw\"],\"application/vnd.kde.kontour\":[\"kon\"],\"application/vnd.kde.kpresenter\":[\"kpr\",\"kpt\"],\"application/vnd.kde.kspread\":[\"ksp\"],\"application/vnd.kde.kword\":[\"kwd\",\"kwt\"],\"application/vnd.kenameaapp\":[\"htke\"],\"application/vnd.kidspiration\":[\"kia\"],\"application/vnd.kinar\":[\"kne\",\"knp\"],\"application/vnd.koan\":[\"skp\",\"skd\",\"skt\",\"skm\"],\"application/vnd.kodak-descriptor\":[\"sse\"],\"application/vnd.las.las+xml\":[\"lasxml\"],\"application/vnd.llamagraphics.life-balance.desktop\":[\"lbd\"],\"application/vnd.llamagraphics.life-balance.exchange+xml\":[\"lbe\"],\"application/vnd.lotus-1-2-3\":[\"123\"],\"application/vnd.lotus-approach\":[\"apr\"],\"application/vnd.lotus-freelance\":[\"pre\"],\"application/vnd.lotus-notes\":[\"nsf\"],\"application/vnd.lotus-organizer\":[\"org\"],\"application/vnd.lotus-screencam\":[\"scm\"],\"application/vnd.lotus-wordpro\":[\"lwp\"],\"application/vnd.macports.portpkg\":[\"portpkg\"],\"application/vnd.mapbox-vector-tile\":[\"mvt\"],\"application/vnd.mcd\":[\"mcd\"],\"application/vnd.medcalcdata\":[\"mc1\"],\"application/vnd.mediastation.cdkey\":[\"cdkey\"],\"application/vnd.mfer\":[\"mwf\"],\"application/vnd.mfmp\":[\"mfm\"],\"application/vnd.micrografx.flo\":[\"flo\"],\"application/vnd.micrografx.igx\":[\"igx\"],\"application/vnd.mif\":[\"mif\"],\"application/vnd.mobius.daf\":[\"daf\"],\"application/vnd.mobius.dis\":[\"dis\"],\"application/vnd.mobius.mbk\":[\"mbk\"],\"application/vnd.mobius.mqy\":[\"mqy\"],\"application/vnd.mobius.msl\":[\"msl\"],\"application/vnd.mobius.plc\":[\"plc\"],\"application/vnd.mobius.txf\":[\"txf\"],\"application/vnd.mophun.application\":[\"mpn\"],\"application/vnd.mophun.certificate\":[\"mpc\"],\"application/vnd.mozilla.xul+xml\":[\"xul\"],\"application/vnd.ms-artgalry\":[\"cil\"],\"application/vnd.ms-cab-compressed\":[\"cab\"],\"application/vnd.ms-excel\":[\"xls\",\"xlm\",\"xla\",\"xlc\",\"xlt\",\"xlw\"],\"application/vnd.ms-excel.addin.macroenabled.12\":[\"xlam\"],\"application/vnd.ms-excel.sheet.binary.macroenabled.12\":[\"xlsb\"],\"application/vnd.ms-excel.sheet.macroenabled.12\":[\"xlsm\"],\"application/vnd.ms-excel.template.macroenabled.12\":[\"xltm\"],\"application/vnd.ms-fontobject\":[\"eot\"],\"application/vnd.ms-htmlhelp\":[\"chm\"],\"application/vnd.ms-ims\":[\"ims\"],\"application/vnd.ms-lrm\":[\"lrm\"],\"application/vnd.ms-officetheme\":[\"thmx\"],\"application/vnd.ms-outlook\":[\"msg\"],\"application/vnd.ms-pki.seccat\":[\"cat\"],\"application/vnd.ms-pki.stl\":[\"*stl\"],\"application/vnd.ms-powerpoint\":[\"ppt\",\"pps\",\"pot\"],\"application/vnd.ms-powerpoint.addin.macroenabled.12\":[\"ppam\"],\"application/vnd.ms-powerpoint.presentation.macroenabled.12\":[\"pptm\"],\"application/vnd.ms-powerpoint.slide.macroenabled.12\":[\"sldm\"],\"application/vnd.ms-powerpoint.slideshow.macroenabled.12\":[\"ppsm\"],\"application/vnd.ms-powerpoint.template.macroenabled.12\":[\"potm\"],\"application/vnd.ms-project\":[\"mpp\",\"mpt\"],\"application/vnd.ms-word.document.macroenabled.12\":[\"docm\"],\"application/vnd.ms-word.template.macroenabled.12\":[\"dotm\"],\"application/vnd.ms-works\":[\"wps\",\"wks\",\"wcm\",\"wdb\"],\"application/vnd.ms-wpl\":[\"wpl\"],\"application/vnd.ms-xpsdocument\":[\"xps\"],\"application/vnd.mseq\":[\"mseq\"],\"application/vnd.musician\":[\"mus\"],\"application/vnd.muvee.style\":[\"msty\"],\"application/vnd.mynfc\":[\"taglet\"],\"application/vnd.neurolanguage.nlu\":[\"nlu\"],\"application/vnd.nitf\":[\"ntf\",\"nitf\"],\"application/vnd.noblenet-directory\":[\"nnd\"],\"application/vnd.noblenet-sealer\":[\"nns\"],\"application/vnd.noblenet-web\":[\"nnw\"],\"application/vnd.nokia.n-gage.ac+xml\":[\"*ac\"],\"application/vnd.nokia.n-gage.data\":[\"ngdat\"],\"application/vnd.nokia.n-gage.symbian.install\":[\"n-gage\"],\"application/vnd.nokia.radio-preset\":[\"rpst\"],\"application/vnd.nokia.radio-presets\":[\"rpss\"],\"application/vnd.novadigm.edm\":[\"edm\"],\"application/vnd.novadigm.edx\":[\"edx\"],\"application/vnd.novadigm.ext\":[\"ext\"],\"application/vnd.oasis.opendocument.chart\":[\"odc\"],\"application/vnd.oasis.opendocument.chart-template\":[\"otc\"],\"application/vnd.oasis.opendocument.database\":[\"odb\"],\"application/vnd.oasis.opendocument.formula\":[\"odf\"],\"application/vnd.oasis.opendocument.formula-template\":[\"odft\"],\"application/vnd.oasis.opendocument.graphics\":[\"odg\"],\"application/vnd.oasis.opendocument.graphics-template\":[\"otg\"],\"application/vnd.oasis.opendocument.image\":[\"odi\"],\"application/vnd.oasis.opendocument.image-template\":[\"oti\"],\"application/vnd.oasis.opendocument.presentation\":[\"odp\"],\"application/vnd.oasis.opendocument.presentation-template\":[\"otp\"],\"application/vnd.oasis.opendocument.spreadsheet\":[\"ods\"],\"application/vnd.oasis.opendocument.spreadsheet-template\":[\"ots\"],\"application/vnd.oasis.opendocument.text\":[\"odt\"],\"application/vnd.oasis.opendocument.text-master\":[\"odm\"],\"application/vnd.oasis.opendocument.text-template\":[\"ott\"],\"application/vnd.oasis.opendocument.text-web\":[\"oth\"],\"application/vnd.olpc-sugar\":[\"xo\"],\"application/vnd.oma.dd2+xml\":[\"dd2\"],\"application/vnd.openblox.game+xml\":[\"obgx\"],\"application/vnd.openofficeorg.extension\":[\"oxt\"],\"application/vnd.openstreetmap.data+xml\":[\"osm\"],\"application/vnd.openxmlformats-officedocument.presentationml.presentation\":[\"pptx\"],\"application/vnd.openxmlformats-officedocument.presentationml.slide\":[\"sldx\"],\"application/vnd.openxmlformats-officedocument.presentationml.slideshow\":[\"ppsx\"],\"application/vnd.openxmlformats-officedocument.presentationml.template\":[\"potx\"],\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\":[\"xlsx\"],\"application/vnd.openxmlformats-officedocument.spreadsheetml.template\":[\"xltx\"],\"application/vnd.openxmlformats-officedocument.wordprocessingml.document\":[\"docx\"],\"application/vnd.openxmlformats-officedocument.wordprocessingml.template\":[\"dotx\"],\"application/vnd.osgeo.mapguide.package\":[\"mgp\"],\"application/vnd.osgi.dp\":[\"dp\"],\"application/vnd.osgi.subsystem\":[\"esa\"],\"application/vnd.palm\":[\"pdb\",\"pqa\",\"oprc\"],\"application/vnd.pawaafile\":[\"paw\"],\"application/vnd.pg.format\":[\"str\"],\"application/vnd.pg.osasli\":[\"ei6\"],\"application/vnd.picsel\":[\"efif\"],\"application/vnd.pmi.widget\":[\"wg\"],\"application/vnd.pocketlearn\":[\"plf\"],\"application/vnd.powerbuilder6\":[\"pbd\"],\"application/vnd.previewsystems.box\":[\"box\"],\"application/vnd.proteus.magazine\":[\"mgz\"],\"application/vnd.publishare-delta-tree\":[\"qps\"],\"application/vnd.pvi.ptid1\":[\"ptid\"],\"application/vnd.quark.quarkxpress\":[\"qxd\",\"qxt\",\"qwd\",\"qwt\",\"qxl\",\"qxb\"],\"application/vnd.rar\":[\"rar\"],\"application/vnd.realvnc.bed\":[\"bed\"],\"application/vnd.recordare.musicxml\":[\"mxl\"],\"application/vnd.recordare.musicxml+xml\":[\"musicxml\"],\"application/vnd.rig.cryptonote\":[\"cryptonote\"],\"application/vnd.rim.cod\":[\"cod\"],\"application/vnd.rn-realmedia\":[\"rm\"],\"application/vnd.rn-realmedia-vbr\":[\"rmvb\"],\"application/vnd.route66.link66+xml\":[\"link66\"],\"application/vnd.sailingtracker.track\":[\"st\"],\"application/vnd.seemail\":[\"see\"],\"application/vnd.sema\":[\"sema\"],\"application/vnd.semd\":[\"semd\"],\"application/vnd.semf\":[\"semf\"],\"application/vnd.shana.informed.formdata\":[\"ifm\"],\"application/vnd.shana.informed.formtemplate\":[\"itp\"],\"application/vnd.shana.informed.interchange\":[\"iif\"],\"application/vnd.shana.informed.package\":[\"ipk\"],\"application/vnd.simtech-mindmapper\":[\"twd\",\"twds\"],\"application/vnd.smaf\":[\"mmf\"],\"application/vnd.smart.teacher\":[\"teacher\"],\"application/vnd.software602.filler.form+xml\":[\"fo\"],\"application/vnd.solent.sdkm+xml\":[\"sdkm\",\"sdkd\"],\"application/vnd.spotfire.dxp\":[\"dxp\"],\"application/vnd.spotfire.sfs\":[\"sfs\"],\"application/vnd.stardivision.calc\":[\"sdc\"],\"application/vnd.stardivision.draw\":[\"sda\"],\"application/vnd.stardivision.impress\":[\"sdd\"],\"application/vnd.stardivision.math\":[\"smf\"],\"application/vnd.stardivision.writer\":[\"sdw\",\"vor\"],\"application/vnd.stardivision.writer-global\":[\"sgl\"],\"application/vnd.stepmania.package\":[\"smzip\"],\"application/vnd.stepmania.stepchart\":[\"sm\"],\"application/vnd.sun.wadl+xml\":[\"wadl\"],\"application/vnd.sun.xml.calc\":[\"sxc\"],\"application/vnd.sun.xml.calc.template\":[\"stc\"],\"application/vnd.sun.xml.draw\":[\"sxd\"],\"application/vnd.sun.xml.draw.template\":[\"std\"],\"application/vnd.sun.xml.impress\":[\"sxi\"],\"application/vnd.sun.xml.impress.template\":[\"sti\"],\"application/vnd.sun.xml.math\":[\"sxm\"],\"application/vnd.sun.xml.writer\":[\"sxw\"],\"application/vnd.sun.xml.writer.global\":[\"sxg\"],\"application/vnd.sun.xml.writer.template\":[\"stw\"],\"application/vnd.sus-calendar\":[\"sus\",\"susp\"],\"application/vnd.svd\":[\"svd\"],\"application/vnd.symbian.install\":[\"sis\",\"sisx\"],\"application/vnd.syncml+xml\":[\"xsm\"],\"application/vnd.syncml.dm+wbxml\":[\"bdm\"],\"application/vnd.syncml.dm+xml\":[\"xdm\"],\"application/vnd.syncml.dmddf+xml\":[\"ddf\"],\"application/vnd.tao.intent-module-archive\":[\"tao\"],\"application/vnd.tcpdump.pcap\":[\"pcap\",\"cap\",\"dmp\"],\"application/vnd.tmobile-livetv\":[\"tmo\"],\"application/vnd.trid.tpt\":[\"tpt\"],\"application/vnd.triscape.mxs\":[\"mxs\"],\"application/vnd.trueapp\":[\"tra\"],\"application/vnd.ufdl\":[\"ufd\",\"ufdl\"],\"application/vnd.uiq.theme\":[\"utz\"],\"application/vnd.umajin\":[\"umj\"],\"application/vnd.unity\":[\"unityweb\"],\"application/vnd.uoml+xml\":[\"uoml\"],\"application/vnd.vcx\":[\"vcx\"],\"application/vnd.visio\":[\"vsd\",\"vst\",\"vss\",\"vsw\"],\"application/vnd.visionary\":[\"vis\"],\"application/vnd.vsf\":[\"vsf\"],\"application/vnd.wap.wbxml\":[\"wbxml\"],\"application/vnd.wap.wmlc\":[\"wmlc\"],\"application/vnd.wap.wmlscriptc\":[\"wmlsc\"],\"application/vnd.webturbo\":[\"wtb\"],\"application/vnd.wolfram.player\":[\"nbp\"],\"application/vnd.wordperfect\":[\"wpd\"],\"application/vnd.wqd\":[\"wqd\"],\"application/vnd.wt.stf\":[\"stf\"],\"application/vnd.xara\":[\"xar\"],\"application/vnd.xfdl\":[\"xfdl\"],\"application/vnd.yamaha.hv-dic\":[\"hvd\"],\"application/vnd.yamaha.hv-script\":[\"hvs\"],\"application/vnd.yamaha.hv-voice\":[\"hvp\"],\"application/vnd.yamaha.openscoreformat\":[\"osf\"],\"application/vnd.yamaha.openscoreformat.osfpvg+xml\":[\"osfpvg\"],\"application/vnd.yamaha.smaf-audio\":[\"saf\"],\"application/vnd.yamaha.smaf-phrase\":[\"spf\"],\"application/vnd.yellowriver-custom-menu\":[\"cmp\"],\"application/vnd.zul\":[\"zir\",\"zirz\"],\"application/vnd.zzazz.deck+xml\":[\"zaz\"],\"application/x-7z-compressed\":[\"7z\"],\"application/x-abiword\":[\"abw\"],\"application/x-ace-compressed\":[\"ace\"],\"application/x-apple-diskimage\":[\"*dmg\"],\"application/x-arj\":[\"arj\"],\"application/x-authorware-bin\":[\"aab\",\"x32\",\"u32\",\"vox\"],\"application/x-authorware-map\":[\"aam\"],\"application/x-authorware-seg\":[\"aas\"],\"application/x-bcpio\":[\"bcpio\"],\"application/x-bdoc\":[\"*bdoc\"],\"application/x-bittorrent\":[\"torrent\"],\"application/x-blorb\":[\"blb\",\"blorb\"],\"application/x-bzip\":[\"bz\"],\"application/x-bzip2\":[\"bz2\",\"boz\"],\"application/x-cbr\":[\"cbr\",\"cba\",\"cbt\",\"cbz\",\"cb7\"],\"application/x-cdlink\":[\"vcd\"],\"application/x-cfs-compressed\":[\"cfs\"],\"application/x-chat\":[\"chat\"],\"application/x-chess-pgn\":[\"pgn\"],\"application/x-chrome-extension\":[\"crx\"],\"application/x-cocoa\":[\"cco\"],\"application/x-conference\":[\"nsc\"],\"application/x-cpio\":[\"cpio\"],\"application/x-csh\":[\"csh\"],\"application/x-debian-package\":[\"*deb\",\"udeb\"],\"application/x-dgc-compressed\":[\"dgc\"],\"application/x-director\":[\"dir\",\"dcr\",\"dxr\",\"cst\",\"cct\",\"cxt\",\"w3d\",\"fgd\",\"swa\"],\"application/x-doom\":[\"wad\"],\"application/x-dtbncx+xml\":[\"ncx\"],\"application/x-dtbook+xml\":[\"dtb\"],\"application/x-dtbresource+xml\":[\"res\"],\"application/x-dvi\":[\"dvi\"],\"application/x-envoy\":[\"evy\"],\"application/x-eva\":[\"eva\"],\"application/x-font-bdf\":[\"bdf\"],\"application/x-font-ghostscript\":[\"gsf\"],\"application/x-font-linux-psf\":[\"psf\"],\"application/x-font-pcf\":[\"pcf\"],\"application/x-font-snf\":[\"snf\"],\"application/x-font-type1\":[\"pfa\",\"pfb\",\"pfm\",\"afm\"],\"application/x-freearc\":[\"arc\"],\"application/x-futuresplash\":[\"spl\"],\"application/x-gca-compressed\":[\"gca\"],\"application/x-glulx\":[\"ulx\"],\"application/x-gnumeric\":[\"gnumeric\"],\"application/x-gramps-xml\":[\"gramps\"],\"application/x-gtar\":[\"gtar\"],\"application/x-hdf\":[\"hdf\"],\"application/x-httpd-php\":[\"php\"],\"application/x-install-instructions\":[\"install\"],\"application/x-iso9660-image\":[\"*iso\"],\"application/x-iwork-keynote-sffkey\":[\"*key\"],\"application/x-iwork-numbers-sffnumbers\":[\"*numbers\"],\"application/x-iwork-pages-sffpages\":[\"*pages\"],\"application/x-java-archive-diff\":[\"jardiff\"],\"application/x-java-jnlp-file\":[\"jnlp\"],\"application/x-keepass2\":[\"kdbx\"],\"application/x-latex\":[\"latex\"],\"application/x-lua-bytecode\":[\"luac\"],\"application/x-lzh-compressed\":[\"lzh\",\"lha\"],\"application/x-makeself\":[\"run\"],\"application/x-mie\":[\"mie\"],\"application/x-mobipocket-ebook\":[\"prc\",\"mobi\"],\"application/x-ms-application\":[\"application\"],\"application/x-ms-shortcut\":[\"lnk\"],\"application/x-ms-wmd\":[\"wmd\"],\"application/x-ms-wmz\":[\"wmz\"],\"application/x-ms-xbap\":[\"xbap\"],\"application/x-msaccess\":[\"mdb\"],\"application/x-msbinder\":[\"obd\"],\"application/x-mscardfile\":[\"crd\"],\"application/x-msclip\":[\"clp\"],\"application/x-msdos-program\":[\"*exe\"],\"application/x-msdownload\":[\"*exe\",\"*dll\",\"com\",\"bat\",\"*msi\"],\"application/x-msmediaview\":[\"mvb\",\"m13\",\"m14\"],\"application/x-msmetafile\":[\"*wmf\",\"*wmz\",\"*emf\",\"emz\"],\"application/x-msmoney\":[\"mny\"],\"application/x-mspublisher\":[\"pub\"],\"application/x-msschedule\":[\"scd\"],\"application/x-msterminal\":[\"trm\"],\"application/x-mswrite\":[\"wri\"],\"application/x-netcdf\":[\"nc\",\"cdf\"],\"application/x-ns-proxy-autoconfig\":[\"pac\"],\"application/x-nzb\":[\"nzb\"],\"application/x-perl\":[\"pl\",\"pm\"],\"application/x-pilot\":[\"*prc\",\"*pdb\"],\"application/x-pkcs12\":[\"p12\",\"pfx\"],\"application/x-pkcs7-certificates\":[\"p7b\",\"spc\"],\"application/x-pkcs7-certreqresp\":[\"p7r\"],\"application/x-rar-compressed\":[\"*rar\"],\"application/x-redhat-package-manager\":[\"rpm\"],\"application/x-research-info-systems\":[\"ris\"],\"application/x-sea\":[\"sea\"],\"application/x-sh\":[\"sh\"],\"application/x-shar\":[\"shar\"],\"application/x-shockwave-flash\":[\"swf\"],\"application/x-silverlight-app\":[\"xap\"],\"application/x-sql\":[\"sql\"],\"application/x-stuffit\":[\"sit\"],\"application/x-stuffitx\":[\"sitx\"],\"application/x-subrip\":[\"srt\"],\"application/x-sv4cpio\":[\"sv4cpio\"],\"application/x-sv4crc\":[\"sv4crc\"],\"application/x-t3vm-image\":[\"t3\"],\"application/x-tads\":[\"gam\"],\"application/x-tar\":[\"tar\"],\"application/x-tcl\":[\"tcl\",\"tk\"],\"application/x-tex\":[\"tex\"],\"application/x-tex-tfm\":[\"tfm\"],\"application/x-texinfo\":[\"texinfo\",\"texi\"],\"application/x-tgif\":[\"*obj\"],\"application/x-ustar\":[\"ustar\"],\"application/x-virtualbox-hdd\":[\"hdd\"],\"application/x-virtualbox-ova\":[\"ova\"],\"application/x-virtualbox-ovf\":[\"ovf\"],\"application/x-virtualbox-vbox\":[\"vbox\"],\"application/x-virtualbox-vbox-extpack\":[\"vbox-extpack\"],\"application/x-virtualbox-vdi\":[\"vdi\"],\"application/x-virtualbox-vhd\":[\"vhd\"],\"application/x-virtualbox-vmdk\":[\"vmdk\"],\"application/x-wais-source\":[\"src\"],\"application/x-web-app-manifest+json\":[\"webapp\"],\"application/x-x509-ca-cert\":[\"der\",\"crt\",\"pem\"],\"application/x-xfig\":[\"fig\"],\"application/x-xliff+xml\":[\"*xlf\"],\"application/x-xpinstall\":[\"xpi\"],\"application/x-xz\":[\"xz\"],\"application/x-zmachine\":[\"z1\",\"z2\",\"z3\",\"z4\",\"z5\",\"z6\",\"z7\",\"z8\"],\"audio/vnd.dece.audio\":[\"uva\",\"uvva\"],\"audio/vnd.digital-winds\":[\"eol\"],\"audio/vnd.dra\":[\"dra\"],\"audio/vnd.dts\":[\"dts\"],\"audio/vnd.dts.hd\":[\"dtshd\"],\"audio/vnd.lucent.voice\":[\"lvp\"],\"audio/vnd.ms-playready.media.pya\":[\"pya\"],\"audio/vnd.nuera.ecelp4800\":[\"ecelp4800\"],\"audio/vnd.nuera.ecelp7470\":[\"ecelp7470\"],\"audio/vnd.nuera.ecelp9600\":[\"ecelp9600\"],\"audio/vnd.rip\":[\"rip\"],\"audio/x-aac\":[\"aac\"],\"audio/x-aiff\":[\"aif\",\"aiff\",\"aifc\"],\"audio/x-caf\":[\"caf\"],\"audio/x-flac\":[\"flac\"],\"audio/x-m4a\":[\"*m4a\"],\"audio/x-matroska\":[\"mka\"],\"audio/x-mpegurl\":[\"m3u\"],\"audio/x-ms-wax\":[\"wax\"],\"audio/x-ms-wma\":[\"wma\"],\"audio/x-pn-realaudio\":[\"ram\",\"ra\"],\"audio/x-pn-realaudio-plugin\":[\"rmp\"],\"audio/x-realaudio\":[\"*ra\"],\"audio/x-wav\":[\"*wav\"],\"chemical/x-cdx\":[\"cdx\"],\"chemical/x-cif\":[\"cif\"],\"chemical/x-cmdf\":[\"cmdf\"],\"chemical/x-cml\":[\"cml\"],\"chemical/x-csml\":[\"csml\"],\"chemical/x-xyz\":[\"xyz\"],\"image/prs.btif\":[\"btif\"],\"image/prs.pti\":[\"pti\"],\"image/vnd.adobe.photoshop\":[\"psd\"],\"image/vnd.airzip.accelerator.azv\":[\"azv\"],\"image/vnd.dece.graphic\":[\"uvi\",\"uvvi\",\"uvg\",\"uvvg\"],\"image/vnd.djvu\":[\"djvu\",\"djv\"],\"image/vnd.dvb.subtitle\":[\"*sub\"],\"image/vnd.dwg\":[\"dwg\"],\"image/vnd.dxf\":[\"dxf\"],\"image/vnd.fastbidsheet\":[\"fbs\"],\"image/vnd.fpx\":[\"fpx\"],\"image/vnd.fst\":[\"fst\"],\"image/vnd.fujixerox.edmics-mmr\":[\"mmr\"],\"image/vnd.fujixerox.edmics-rlc\":[\"rlc\"],\"image/vnd.microsoft.icon\":[\"ico\"],\"image/vnd.ms-dds\":[\"dds\"],\"image/vnd.ms-modi\":[\"mdi\"],\"image/vnd.ms-photo\":[\"wdp\"],\"image/vnd.net-fpx\":[\"npx\"],\"image/vnd.pco.b16\":[\"b16\"],\"image/vnd.tencent.tap\":[\"tap\"],\"image/vnd.valve.source.texture\":[\"vtf\"],\"image/vnd.wap.wbmp\":[\"wbmp\"],\"image/vnd.xiff\":[\"xif\"],\"image/vnd.zbrush.pcx\":[\"pcx\"],\"image/x-3ds\":[\"3ds\"],\"image/x-cmu-raster\":[\"ras\"],\"image/x-cmx\":[\"cmx\"],\"image/x-freehand\":[\"fh\",\"fhc\",\"fh4\",\"fh5\",\"fh7\"],\"image/x-icon\":[\"*ico\"],\"image/x-jng\":[\"jng\"],\"image/x-mrsid-image\":[\"sid\"],\"image/x-ms-bmp\":[\"*bmp\"],\"image/x-pcx\":[\"*pcx\"],\"image/x-pict\":[\"pic\",\"pct\"],\"image/x-portable-anymap\":[\"pnm\"],\"image/x-portable-bitmap\":[\"pbm\"],\"image/x-portable-graymap\":[\"pgm\"],\"image/x-portable-pixmap\":[\"ppm\"],\"image/x-rgb\":[\"rgb\"],\"image/x-tga\":[\"tga\"],\"image/x-xbitmap\":[\"xbm\"],\"image/x-xpixmap\":[\"xpm\"],\"image/x-xwindowdump\":[\"xwd\"],\"message/vnd.wfa.wsc\":[\"wsc\"],\"model/vnd.collada+xml\":[\"dae\"],\"model/vnd.dwf\":[\"dwf\"],\"model/vnd.gdl\":[\"gdl\"],\"model/vnd.gtw\":[\"gtw\"],\"model/vnd.mts\":[\"mts\"],\"model/vnd.opengex\":[\"ogex\"],\"model/vnd.parasolid.transmit.binary\":[\"x_b\"],\"model/vnd.parasolid.transmit.text\":[\"x_t\"],\"model/vnd.sap.vds\":[\"vds\"],\"model/vnd.usdz+zip\":[\"usdz\"],\"model/vnd.valve.source.compiled-map\":[\"bsp\"],\"model/vnd.vtu\":[\"vtu\"],\"text/prs.lines.tag\":[\"dsc\"],\"text/vnd.curl\":[\"curl\"],\"text/vnd.curl.dcurl\":[\"dcurl\"],\"text/vnd.curl.mcurl\":[\"mcurl\"],\"text/vnd.curl.scurl\":[\"scurl\"],\"text/vnd.dvb.subtitle\":[\"sub\"],\"text/vnd.fly\":[\"fly\"],\"text/vnd.fmi.flexstor\":[\"flx\"],\"text/vnd.graphviz\":[\"gv\"],\"text/vnd.in3d.3dml\":[\"3dml\"],\"text/vnd.in3d.spot\":[\"spot\"],\"text/vnd.sun.j2me.app-descriptor\":[\"jad\"],\"text/vnd.wap.wml\":[\"wml\"],\"text/vnd.wap.wmlscript\":[\"wmls\"],\"text/x-asm\":[\"s\",\"asm\"],\"text/x-c\":[\"c\",\"cc\",\"cxx\",\"cpp\",\"h\",\"hh\",\"dic\"],\"text/x-component\":[\"htc\"],\"text/x-fortran\":[\"f\",\"for\",\"f77\",\"f90\"],\"text/x-handlebars-template\":[\"hbs\"],\"text/x-java-source\":[\"java\"],\"text/x-lua\":[\"lua\"],\"text/x-markdown\":[\"mkd\"],\"text/x-nfo\":[\"nfo\"],\"text/x-opml\":[\"opml\"],\"text/x-org\":[\"*org\"],\"text/x-pascal\":[\"p\",\"pas\"],\"text/x-processing\":[\"pde\"],\"text/x-sass\":[\"sass\"],\"text/x-scss\":[\"scss\"],\"text/x-setext\":[\"etx\"],\"text/x-sfv\":[\"sfv\"],\"text/x-suse-ymp\":[\"ymp\"],\"text/x-uuencode\":[\"uu\"],\"text/x-vcalendar\":[\"vcs\"],\"text/x-vcard\":[\"vcf\"],\"video/vnd.dece.hd\":[\"uvh\",\"uvvh\"],\"video/vnd.dece.mobile\":[\"uvm\",\"uvvm\"],\"video/vnd.dece.pd\":[\"uvp\",\"uvvp\"],\"video/vnd.dece.sd\":[\"uvs\",\"uvvs\"],\"video/vnd.dece.video\":[\"uvv\",\"uvvv\"],\"video/vnd.dvb.file\":[\"dvb\"],\"video/vnd.fvt\":[\"fvt\"],\"video/vnd.mpegurl\":[\"mxu\",\"m4u\"],\"video/vnd.ms-playready.media.pyv\":[\"pyv\"],\"video/vnd.uvvu.mp4\":[\"uvu\",\"uvvu\"],\"video/vnd.vivo\":[\"viv\"],\"video/x-f4v\":[\"f4v\"],\"video/x-fli\":[\"fli\"],\"video/x-flv\":[\"flv\"],\"video/x-m4v\":[\"m4v\"],\"video/x-matroska\":[\"mkv\",\"mk3d\",\"mks\"],\"video/x-mng\":[\"mng\"],\"video/x-ms-asf\":[\"asf\",\"asx\"],\"video/x-ms-vob\":[\"vob\"],\"video/x-ms-wm\":[\"wm\"],\"video/x-ms-wmv\":[\"wmv\"],\"video/x-ms-wmx\":[\"wmx\"],\"video/x-ms-wvx\":[\"wvx\"],\"video/x-msvideo\":[\"avi\"],\"video/x-sgi-movie\":[\"movie\"],\"video/x-smv\":[\"smv\"],\"x-conference/x-cooltalk\":[\"ice\"]};\n\nlet Mime = Mime_1;\nvar mime = new Mime(standard, other);\n\nvar types$1 = {};\n\nObject.defineProperty(types$1, \"__esModule\", { value: true });\ntypes$1.InternalError = types$1.NotFoundError = types$1.MethodNotAllowedError = types$1.KVError = void 0;\nclass KVError extends Error {\n constructor(message, status = 500) {\n super(message);\n // see: typescriptlang.org/docs/handbook/release-notes/typescript-2-2.html\n Object.setPrototypeOf(this, new.target.prototype); // restore prototype chain\n this.name = KVError.name; // stack traces display correctly now\n this.status = status;\n }\n}\ntypes$1.KVError = KVError;\nclass MethodNotAllowedError extends KVError {\n constructor(message = `Not a valid request method`, status = 405) {\n super(message, status);\n }\n}\ntypes$1.MethodNotAllowedError = MethodNotAllowedError;\nclass NotFoundError extends KVError {\n constructor(message = `Not Found`, status = 404) {\n super(message, status);\n }\n}\ntypes$1.NotFoundError = NotFoundError;\nclass InternalError extends KVError {\n constructor(message = `Internal Error in KV Asset Handler`, status = 500) {\n super(message, status);\n }\n}\ntypes$1.InternalError = InternalError;\n\n(function (exports) {\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.InternalError = exports.NotFoundError = exports.MethodNotAllowedError = exports.serveSinglePageApp = exports.mapRequestToAsset = exports.getAssetFromKV = void 0;\n\tconst mime$1 = mime;\n\tconst types_1 = types$1;\n\tObject.defineProperty(exports, \"MethodNotAllowedError\", { enumerable: true, get: function () { return types_1.MethodNotAllowedError; } });\n\tObject.defineProperty(exports, \"NotFoundError\", { enumerable: true, get: function () { return types_1.NotFoundError; } });\n\tObject.defineProperty(exports, \"InternalError\", { enumerable: true, get: function () { return types_1.InternalError; } });\n\tconst defaultCacheControl = {\n\t browserTTL: null,\n\t edgeTTL: 2 * 60 * 60 * 24,\n\t bypassCache: false, // do not bypass Cloudflare's cache\n\t};\n\tconst parseStringAsObject = (maybeString) => typeof maybeString === 'string' ? JSON.parse(maybeString) : maybeString;\n\tconst getAssetFromKVDefaultOptions = {\n\t ASSET_NAMESPACE: typeof __STATIC_CONTENT !== 'undefined' ? __STATIC_CONTENT : undefined,\n\t ASSET_MANIFEST: typeof __STATIC_CONTENT_MANIFEST !== 'undefined'\n\t ? parseStringAsObject(__STATIC_CONTENT_MANIFEST)\n\t : {},\n\t cacheControl: defaultCacheControl,\n\t defaultMimeType: 'text/plain',\n\t defaultDocument: 'index.html',\n\t pathIsEncoded: false,\n\t};\n\tfunction assignOptions(options) {\n\t // Assign any missing options passed in to the default\n\t // options.mapRequestToAsset is handled manually later\n\t return Object.assign({}, getAssetFromKVDefaultOptions, options);\n\t}\n\t/**\n\t * maps the path of incoming request to the request pathKey to look up\n\t * in bucket and in cache\n\t * e.g. for a path '/' returns '/index.html' which serves\n\t * the content of bucket/index.html\n\t * @param {Request} request incoming request\n\t */\n\tconst mapRequestToAsset = (request, options) => {\n\t options = assignOptions(options);\n\t const parsedUrl = new URL(request.url);\n\t let pathname = parsedUrl.pathname;\n\t if (pathname.endsWith('/')) {\n\t // If path looks like a directory append options.defaultDocument\n\t // e.g. If path is /about/ -> /about/index.html\n\t pathname = pathname.concat(options.defaultDocument);\n\t }\n\t else if (!mime$1.getType(pathname)) {\n\t // If path doesn't look like valid content\n\t // e.g. /about.me -> /about.me/index.html\n\t pathname = pathname.concat('/' + options.defaultDocument);\n\t }\n\t parsedUrl.pathname = pathname;\n\t return new Request(parsedUrl.toString(), request);\n\t};\n\texports.mapRequestToAsset = mapRequestToAsset;\n\t/**\n\t * maps the path of incoming request to /index.html if it evaluates to\n\t * any HTML file.\n\t * @param {Request} request incoming request\n\t */\n\tfunction serveSinglePageApp(request, options) {\n\t options = assignOptions(options);\n\t // First apply the default handler, which already has logic to detect\n\t // paths that should map to HTML files.\n\t request = mapRequestToAsset(request, options);\n\t const parsedUrl = new URL(request.url);\n\t // Detect if the default handler decided to map to\n\t // a HTML file in some specific directory.\n\t if (parsedUrl.pathname.endsWith('.html')) {\n\t // If expected HTML file was missing, just return the root index.html (or options.defaultDocument)\n\t return new Request(`${parsedUrl.origin}/${options.defaultDocument}`, request);\n\t }\n\t else {\n\t // The default handler decided this is not an HTML page. It's probably\n\t // an image, CSS, or JS file. Leave it as-is.\n\t return request;\n\t }\n\t}\n\texports.serveSinglePageApp = serveSinglePageApp;\n\tconst getAssetFromKV = async (event, options) => {\n\t options = assignOptions(options);\n\t const request = event.request;\n\t const ASSET_NAMESPACE = options.ASSET_NAMESPACE;\n\t const ASSET_MANIFEST = parseStringAsObject(options.ASSET_MANIFEST);\n\t if (typeof ASSET_NAMESPACE === 'undefined') {\n\t throw new types_1.InternalError(`there is no KV namespace bound to the script`);\n\t }\n\t const rawPathKey = new URL(request.url).pathname.replace(/^\\/+/, ''); // strip any preceding /'s\n\t let pathIsEncoded = options.pathIsEncoded;\n\t let requestKey;\n\t // if options.mapRequestToAsset is explicitly passed in, always use it and assume user has own intentions\n\t // otherwise handle request as normal, with default mapRequestToAsset below\n\t if (options.mapRequestToAsset) {\n\t requestKey = options.mapRequestToAsset(request);\n\t }\n\t else if (ASSET_MANIFEST[rawPathKey]) {\n\t requestKey = request;\n\t }\n\t else if (ASSET_MANIFEST[decodeURIComponent(rawPathKey)]) {\n\t pathIsEncoded = true;\n\t requestKey = request;\n\t }\n\t else {\n\t const mappedRequest = mapRequestToAsset(request);\n\t const mappedRawPathKey = new URL(mappedRequest.url).pathname.replace(/^\\/+/, '');\n\t if (ASSET_MANIFEST[decodeURIComponent(mappedRawPathKey)]) {\n\t pathIsEncoded = true;\n\t requestKey = mappedRequest;\n\t }\n\t else {\n\t // use default mapRequestToAsset\n\t requestKey = mapRequestToAsset(request, options);\n\t }\n\t }\n\t const SUPPORTED_METHODS = ['GET', 'HEAD'];\n\t if (!SUPPORTED_METHODS.includes(requestKey.method)) {\n\t throw new types_1.MethodNotAllowedError(`${requestKey.method} is not a valid request method`);\n\t }\n\t const parsedUrl = new URL(requestKey.url);\n\t const pathname = pathIsEncoded ? decodeURIComponent(parsedUrl.pathname) : parsedUrl.pathname; // decode percentage encoded path only when necessary\n\t // pathKey is the file path to look up in the manifest\n\t let pathKey = pathname.replace(/^\\/+/, ''); // remove prepended /\n\t // @ts-ignore\n\t const cache = caches.default;\n\t let mimeType = mime$1.getType(pathKey) || options.defaultMimeType;\n\t if (mimeType.startsWith('text') || mimeType === 'application/javascript') {\n\t mimeType += '; charset=utf-8';\n\t }\n\t let shouldEdgeCache = false; // false if storing in KV by raw file path i.e. no hash\n\t // check manifest for map from file path to hash\n\t if (typeof ASSET_MANIFEST !== 'undefined') {\n\t if (ASSET_MANIFEST[pathKey]) {\n\t pathKey = ASSET_MANIFEST[pathKey];\n\t // if path key is in asset manifest, we can assume it contains a content hash and can be cached\n\t shouldEdgeCache = true;\n\t }\n\t }\n\t // TODO this excludes search params from cache, investigate ideal behavior\n\t let cacheKey = new Request(`${parsedUrl.origin}/${pathKey}`, request);\n\t // if argument passed in for cacheControl is a function then\n\t // evaluate that function. otherwise return the Object passed in\n\t // or default Object\n\t const evalCacheOpts = (() => {\n\t switch (typeof options.cacheControl) {\n\t case 'function':\n\t return options.cacheControl(request);\n\t case 'object':\n\t return options.cacheControl;\n\t default:\n\t return defaultCacheControl;\n\t }\n\t })();\n\t // formats the etag depending on the response context. if the entityId\n\t // is invalid, returns an empty string (instead of null) to prevent the\n\t // the potentially disastrous scenario where the value of the Etag resp\n\t // header is \"null\". Could be modified in future to base64 encode etc\n\t const formatETag = (entityId = pathKey, validatorType = 'strong') => {\n\t if (!entityId) {\n\t return '';\n\t }\n\t switch (validatorType) {\n\t case 'weak':\n\t if (!entityId.startsWith('W/')) {\n\t return `W/${entityId}`;\n\t }\n\t return entityId;\n\t case 'strong':\n\t if (entityId.startsWith(`W/\"`)) {\n\t entityId = entityId.replace('W/', '');\n\t }\n\t if (!entityId.endsWith(`\"`)) {\n\t entityId = `\"${entityId}\"`;\n\t }\n\t return entityId;\n\t default:\n\t return '';\n\t }\n\t };\n\t options.cacheControl = Object.assign({}, defaultCacheControl, evalCacheOpts);\n\t // override shouldEdgeCache if options say to bypassCache\n\t if (options.cacheControl.bypassCache ||\n\t options.cacheControl.edgeTTL === null ||\n\t request.method == 'HEAD') {\n\t shouldEdgeCache = false;\n\t }\n\t // only set max-age if explicitly passed in a number as an arg\n\t const shouldSetBrowserCache = typeof options.cacheControl.browserTTL === 'number';\n\t let response = null;\n\t if (shouldEdgeCache) {\n\t response = await cache.match(cacheKey);\n\t }\n\t if (response) {\n\t if (response.status > 300 && response.status < 400) {\n\t if (response.body && 'cancel' in Object.getPrototypeOf(response.body)) {\n\t // Body exists and environment supports readable streams\n\t response.body.cancel();\n\t }\n\t response = new Response(null, response);\n\t }\n\t else {\n\t // fixes #165\n\t let opts = {\n\t headers: new Headers(response.headers),\n\t status: 0,\n\t statusText: '',\n\t };\n\t opts.headers.set('cf-cache-status', 'HIT');\n\t if (response.status) {\n\t opts.status = response.status;\n\t opts.statusText = response.statusText;\n\t }\n\t else if (opts.headers.has('Content-Range')) {\n\t opts.status = 206;\n\t opts.statusText = 'Partial Content';\n\t }\n\t else {\n\t opts.status = 200;\n\t opts.statusText = 'OK';\n\t }\n\t response = new Response(response.body, opts);\n\t }\n\t }\n\t else {\n\t const body = await ASSET_NAMESPACE.get(pathKey, 'arrayBuffer');\n\t if (body === null) {\n\t throw new types_1.NotFoundError(`could not find ${pathKey} in your content namespace`);\n\t }\n\t response = new Response(body);\n\t if (shouldEdgeCache) {\n\t response.headers.set('Accept-Ranges', 'bytes');\n\t response.headers.set('Content-Length', body.length);\n\t // set etag before cache insertion\n\t if (!response.headers.has('etag')) {\n\t response.headers.set('etag', formatETag(pathKey, 'strong'));\n\t }\n\t // determine Cloudflare cache behavior\n\t response.headers.set('Cache-Control', `max-age=${options.cacheControl.edgeTTL}`);\n\t event.waitUntil(cache.put(cacheKey, response.clone()));\n\t response.headers.set('CF-Cache-Status', 'MISS');\n\t }\n\t }\n\t response.headers.set('Content-Type', mimeType);\n\t if (response.status === 304) {\n\t let etag = formatETag(response.headers.get('etag'), 'strong');\n\t let ifNoneMatch = cacheKey.headers.get('if-none-match');\n\t let proxyCacheStatus = response.headers.get('CF-Cache-Status');\n\t if (etag) {\n\t if (ifNoneMatch && ifNoneMatch === etag && proxyCacheStatus === 'MISS') {\n\t response.headers.set('CF-Cache-Status', 'EXPIRED');\n\t }\n\t else {\n\t response.headers.set('CF-Cache-Status', 'REVALIDATED');\n\t }\n\t response.headers.set('etag', formatETag(etag, 'weak'));\n\t }\n\t }\n\t if (shouldSetBrowserCache) {\n\t response.headers.set('Cache-Control', `max-age=${options.cacheControl.browserTTL}`);\n\t }\n\t else {\n\t response.headers.delete('Cache-Control');\n\t }\n\t return response;\n\t};\n\texports.getAssetFromKV = getAssetFromKV;\n} (dist$1));\n\nvar manifest = {\n\t\"/\": [\n\t{\n\t\ttype: \"script\",\n\t\thref: \"/assets/index.f572890e.js\"\n\t},\n\t{\n\t\ttype: \"script\",\n\t\thref: \"/assets/entry-client.0e635511.js\"\n\t},\n\t{\n\t\ttype: \"style\",\n\t\thref: \"/assets/entry-client.17ea8755.css\"\n\t}\n],\n\t\"entry-client\": [\n\t{\n\t\ttype: \"script\",\n\t\thref: \"/assets/entry-client.0e635511.js\"\n\t},\n\t{\n\t\ttype: \"style\",\n\t\thref: \"/assets/entry-client.17ea8755.css\"\n\t}\n],\n\t\"index.html\": [\n]\n};\n\nconst ERROR = Symbol(\"error\");\nconst BRANCH = Symbol(\"branch\");\nfunction castError(err) {\n if (err instanceof Error || typeof err === \"string\") return err;\n return new Error(\"Unknown error\");\n}\nfunction handleError$1(err) {\n err = castError(err);\n const fns = lookup(Owner, ERROR);\n if (!fns) throw err;\n for (const f of fns) f(err);\n}\nconst UNOWNED = {\n context: null,\n owner: null\n};\nlet Owner = null;\nfunction createRoot(fn, detachedOwner) {\n detachedOwner && (Owner = detachedOwner);\n const owner = Owner,\n root = fn.length === 0 ? UNOWNED : {\n context: null,\n owner\n };\n Owner = root;\n let result;\n try {\n result = fn(() => {});\n } catch (err) {\n handleError$1(err);\n } finally {\n Owner = owner;\n }\n return result;\n}\nfunction createSignal(value, options) {\n return [() => value, v => {\n return value = typeof v === \"function\" ? v(value) : v;\n }];\n}\nfunction createComputed(fn, value) {\n Owner = {\n owner: Owner,\n context: null\n };\n try {\n fn(value);\n } catch (err) {\n handleError$1(err);\n } finally {\n Owner = Owner.owner;\n }\n}\nconst createRenderEffect = createComputed;\nfunction createMemo(fn, value) {\n Owner = {\n owner: Owner,\n context: null\n };\n let v;\n try {\n v = fn(value);\n } catch (err) {\n handleError$1(err);\n } finally {\n Owner = Owner.owner;\n }\n return () => v;\n}\nfunction batch(fn) {\n return fn();\n}\nconst untrack = batch;\nfunction on(deps, fn, options = {}) {\n const isArray = Array.isArray(deps);\n const defer = options.defer;\n return () => {\n if (defer) return undefined;\n let value;\n if (isArray) {\n value = [];\n for (let i = 0; i < deps.length; i++) value.push(deps[i]());\n } else value = deps();\n return fn(value);\n };\n}\nfunction onCleanup(fn) {\n let node;\n if (Owner && (node = lookup(Owner, BRANCH))) {\n if (!node.cleanups) node.cleanups = [fn];else node.cleanups.push(fn);\n }\n return fn;\n}\nfunction cleanNode(node) {\n if (node.cleanups) {\n for (let i = 0; i < node.cleanups.length; i++) node.cleanups[i]();\n node.cleanups = undefined;\n }\n}\nfunction onError(fn) {\n if (Owner) {\n if (Owner.context === null) Owner.context = {\n [ERROR]: [fn]\n };else if (!Owner.context[ERROR]) Owner.context[ERROR] = [fn];else Owner.context[ERROR].push(fn);\n }\n}\nfunction createContext(defaultValue) {\n const id = Symbol(\"context\");\n return {\n id,\n Provider: createProvider(id),\n defaultValue\n };\n}\nfunction useContext(context) {\n let ctx;\n return (ctx = lookup(Owner, context.id)) !== undefined ? ctx : context.defaultValue;\n}\nfunction getOwner() {\n return Owner;\n}\nfunction children(fn) {\n const memo = createMemo(() => resolveChildren(fn()));\n memo.toArray = () => {\n const c = memo();\n return Array.isArray(c) ? c : c != null ? [c] : [];\n };\n return memo;\n}\nfunction runWithOwner(o, fn) {\n const prev = Owner;\n Owner = o;\n try {\n return fn();\n } catch (err) {\n handleError$1(err);\n } finally {\n Owner = prev;\n }\n}\nfunction lookup(owner, key) {\n return owner ? owner.context && owner.context[key] !== undefined ? owner.context[key] : lookup(owner.owner, key) : undefined;\n}\nfunction resolveChildren(children) {\n if (typeof children === \"function\" && !children.length) return resolveChildren(children());\n if (Array.isArray(children)) {\n const results = [];\n for (let i = 0; i < children.length; i++) {\n const result = resolveChildren(children[i]);\n Array.isArray(result) ? results.push.apply(results, result) : results.push(result);\n }\n return results;\n }\n return children;\n}\nfunction createProvider(id) {\n return function provider(props) {\n return createMemo(() => {\n Owner.context = {\n [id]: props.value\n };\n return children(() => props.children);\n });\n };\n}\n\nfunction resolveSSRNode$1(node) {\n const t = typeof node;\n if (t === \"string\") return node;\n if (node == null || t === \"boolean\") return \"\";\n if (Array.isArray(node)) {\n let mapped = \"\";\n for (let i = 0, len = node.length; i < len; i++) mapped += resolveSSRNode$1(node[i]);\n return mapped;\n }\n if (t === \"object\") return node.t;\n if (t === \"function\") return resolveSSRNode$1(node());\n return String(node);\n}\nconst sharedConfig = {};\nfunction setHydrateContext(context) {\n sharedConfig.context = context;\n}\nfunction nextHydrateContext() {\n return sharedConfig.context ? { ...sharedConfig.context,\n id: `${sharedConfig.context.id}${sharedConfig.context.count++}-`,\n count: 0\n } : undefined;\n}\nfunction createUniqueId() {\n const ctx = sharedConfig.context;\n if (!ctx) throw new Error(`createUniqueId cannot be used under non-hydrating context`);\n return `${ctx.id}${ctx.count++}`;\n}\nfunction createComponent(Comp, props) {\n if (sharedConfig.context && !sharedConfig.context.noHydrate) {\n const c = sharedConfig.context;\n setHydrateContext(nextHydrateContext());\n const r = Comp(props || {});\n setHydrateContext(c);\n return r;\n }\n return Comp(props || {});\n}\nfunction Show(props) {\n let c;\n return props.when ? typeof (c = props.children) === \"function\" ? c(props.when) : c : props.fallback || \"\";\n}\nfunction ErrorBoundary$1(props) {\n let error,\n res,\n clean,\n sync = true;\n const ctx = sharedConfig.context;\n const id = ctx.id + ctx.count;\n function displayFallback() {\n cleanNode(clean);\n ctx.writeResource(id, error, true);\n setHydrateContext({ ...ctx,\n count: 0\n });\n const f = props.fallback;\n return typeof f === \"function\" && f.length ? f(error, () => {}) : f;\n }\n onError(err => {\n error = err;\n !sync && ctx.replace(\"e\" + id, displayFallback);\n sync = true;\n });\n onCleanup(() => cleanNode(clean));\n createMemo(() => {\n Owner.context = {\n [BRANCH]: clean = {}\n };\n return res = props.children;\n });\n if (error) return displayFallback();\n sync = false;\n return {\n t: `${resolveSSRNode$1(res)}`\n };\n}\nconst SuspenseContext = createContext();\nlet resourceContext = null;\nfunction createResource(source, fetcher, options = {}) {\n if (arguments.length === 2) {\n if (typeof fetcher === \"object\") {\n options = fetcher;\n fetcher = source;\n source = true;\n }\n } else if (arguments.length === 1) {\n fetcher = source;\n source = true;\n }\n const contexts = new Set();\n const id = sharedConfig.context.id + sharedConfig.context.count++;\n let resource = {};\n let value = options.storage ? options.storage(options.initialValue)[0]() : options.initialValue;\n let p;\n let error;\n if (sharedConfig.context.async && options.ssrLoadFrom !== \"initial\") {\n resource = sharedConfig.context.resources[id] || (sharedConfig.context.resources[id] = {});\n if (resource.ref) {\n if (!resource.data && !resource.ref[0].loading && !resource.ref[0].error) resource.ref[1].refetch();\n return resource.ref;\n }\n }\n const read = () => {\n if (error) throw error;\n if (resourceContext && p) resourceContext.push(p);\n const resolved = options.ssrLoadFrom !== \"initial\" && sharedConfig.context.async && \"data\" in sharedConfig.context.resources[id];\n if (!resolved && read.loading) {\n const ctx = useContext(SuspenseContext);\n if (ctx) {\n ctx.resources.set(id, read);\n contexts.add(ctx);\n }\n }\n return resolved ? sharedConfig.context.resources[id].data : value;\n };\n read.loading = false;\n read.error = undefined;\n read.state = \"initialValue\" in options ? \"resolved\" : \"unresolved\";\n Object.defineProperty(read, \"latest\", {\n get() {\n return read();\n }\n });\n function load() {\n const ctx = sharedConfig.context;\n if (!ctx.async) return read.loading = !!(typeof source === \"function\" ? source() : source);\n if (ctx.resources && id in ctx.resources && \"data\" in ctx.resources[id]) {\n value = ctx.resources[id].data;\n return;\n }\n resourceContext = [];\n const lookup = typeof source === \"function\" ? source() : source;\n if (resourceContext.length) {\n p = Promise.all(resourceContext).then(() => fetcher(source(), {\n value\n }));\n }\n resourceContext = null;\n if (!p) {\n if (lookup == null || lookup === false) return;\n p = fetcher(lookup, {\n value\n });\n }\n if (p != undefined && typeof p === \"object\" && \"then\" in p) {\n read.loading = true;\n read.state = \"pending\";\n if (ctx.writeResource) ctx.writeResource(id, p, undefined, options.deferStream);\n return p.then(res => {\n read.loading = false;\n read.state = \"resolved\";\n ctx.resources[id].data = res;\n p = null;\n notifySuspense(contexts);\n return res;\n }).catch(err => {\n read.loading = false;\n read.state = \"errored\";\n read.error = error = castError(err);\n p = null;\n notifySuspense(contexts);\n });\n }\n ctx.resources[id].data = p;\n if (ctx.writeResource) ctx.writeResource(id, p);\n p = null;\n return ctx.resources[id].data;\n }\n if (options.ssrLoadFrom !== \"initial\") load();\n return resource.ref = [read, {\n refetch: load,\n mutate: v => value = v\n }];\n}\nfunction suspenseComplete(c) {\n for (const r of c.resources.values()) {\n if (r.loading) return false;\n }\n return true;\n}\nfunction notifySuspense(contexts) {\n for (const c of contexts) {\n if (suspenseComplete(c)) c.completed();\n }\n contexts.clear();\n}\nfunction useTransition() {\n return [() => false, fn => {\n fn();\n }];\n}\nfunction Suspense(props) {\n let done;\n let clean;\n const ctx = sharedConfig.context;\n const id = ctx.id + ctx.count;\n const o = Owner;\n if (o) {\n if (o.context) o.context[BRANCH] = clean = {};else o.context = {\n [BRANCH]: clean = {}\n };\n }\n const value = ctx.suspense[id] || (ctx.suspense[id] = {\n resources: new Map(),\n completed: () => {\n const res = runSuspense();\n if (suspenseComplete(value)) {\n done(resolveSSRNode$1(res));\n }\n }\n });\n function runSuspense() {\n setHydrateContext({ ...ctx,\n count: 0\n });\n return runWithOwner(o, () => {\n return createComponent(SuspenseContext.Provider, {\n value,\n get children() {\n clean && cleanNode(clean);\n return props.children;\n }\n });\n });\n }\n const res = runSuspense();\n if (suspenseComplete(value)) return res;\n onError(err => {\n if (!done || !done(undefined, err)) {\n if (o) runWithOwner(o.owner, () => {\n throw err;\n });else throw err;\n }\n });\n done = ctx.async ? ctx.registerFragment(id) : undefined;\n if (ctx.async) {\n setHydrateContext({ ...ctx,\n count: 0,\n id: ctx.id + \"0.f\",\n noHydrate: true\n });\n const res = {\n t: `${resolveSSRNode$1(props.fallback)}`\n };\n setHydrateContext(ctx);\n return res;\n }\n setHydrateContext({ ...ctx,\n count: 0,\n id: ctx.id + \"0.f\"\n });\n ctx.writeResource(id, \"$$f\");\n return props.fallback;\n}\n\nconst booleans = [\"allowfullscreen\", \"async\", \"autofocus\", \"autoplay\", \"checked\", \"controls\", \"default\", \"disabled\", \"formnovalidate\", \"hidden\", \"indeterminate\", \"ismap\", \"loop\", \"multiple\", \"muted\", \"nomodule\", \"novalidate\", \"open\", \"playsinline\", \"readonly\", \"required\", \"reversed\", \"seamless\", \"selected\"];\nconst BooleanAttributes = /*#__PURE__*/new Set(booleans);\n/*#__PURE__*/new Set([\"className\", \"value\", \"readOnly\", \"formNoValidate\", \"isMap\", \"noModule\", \"playsInline\", ...booleans]);\nconst ChildProperties = /*#__PURE__*/new Set([\"innerHTML\", \"textContent\", \"innerText\", \"children\"]);\nconst Aliases = {\n className: \"class\",\n htmlFor: \"for\"\n};\n\nconst {\n hasOwnProperty: hasOwnProperty$1\n} = Object.prototype;\nconst REF_START_CHARS = \"hjkmoquxzABCDEFGHIJKLNPQRTUVWXYZ$_\";\nconst REF_START_CHARS_LEN = REF_START_CHARS.length;\nconst REF_CHARS = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$_\";\nconst REF_CHARS_LEN = REF_CHARS.length;\nconst STACK = [];\nconst BUFFER = [\"\"];\nlet ASSIGNMENTS = new Map();\nlet INDEX_OR_REF = new WeakMap();\nlet REF_COUNT = 0;\nBUFFER.pop();\nfunction stringify(root) {\n if (writeProp(root, \"\")) {\n let result = BUFFER[0];\n for (let i = 1, len = BUFFER.length; i < len; i++) {\n result += BUFFER[i];\n }\n if (REF_COUNT) {\n if (ASSIGNMENTS.size) {\n let ref = INDEX_OR_REF.get(root);\n if (typeof ref === \"number\") {\n ref = toRefParam(REF_COUNT++);\n result = ref + \"=\" + result;\n }\n for (const [assignmentRef, assignments] of ASSIGNMENTS) {\n result += \";\" + assignments + assignmentRef;\n }\n result += \";return \" + ref;\n ASSIGNMENTS = new Map();\n } else {\n result = \"return \" + result;\n }\n result = \"(function(\" + refParamsString() + \"){\" + result + \"}())\";\n } else if (root && root.constructor === Object) {\n result = \"(\" + result + \")\";\n }\n BUFFER.length = 0;\n INDEX_OR_REF = new WeakMap();\n return result;\n }\n return \"void 0\";\n}\nfunction writeProp(cur, accessor) {\n switch (typeof cur) {\n case \"string\":\n BUFFER.push(quote(cur, 0));\n break;\n case \"number\":\n BUFFER.push(cur + \"\");\n break;\n case \"boolean\":\n BUFFER.push(cur ? \"!0\" : \"!1\");\n break;\n case \"object\":\n if (cur === null) {\n BUFFER.push(\"null\");\n } else {\n const ref = getRef(cur, accessor);\n switch (ref) {\n case true:\n return false;\n case false:\n switch (cur.constructor) {\n case Object:\n writeObject(cur);\n break;\n case Array:\n writeArray(cur);\n break;\n case Date:\n BUFFER.push('new Date(\"' + cur.toISOString() + '\")');\n break;\n case RegExp:\n BUFFER.push(cur + \"\");\n break;\n case Map:\n BUFFER.push(\"new Map(\");\n writeArray(Array.from(cur));\n BUFFER.push(\")\");\n break;\n case Set:\n BUFFER.push(\"new Set(\");\n writeArray(Array.from(cur));\n BUFFER.push(\")\");\n break;\n case undefined:\n BUFFER.push(\"Object.assign(Object.create(null),\");\n writeObject(cur);\n BUFFER.push(\"))\");\n break;\n default:\n return false;\n }\n break;\n default:\n BUFFER.push(ref);\n break;\n }\n }\n break;\n default:\n return false;\n }\n return true;\n}\nfunction writeObject(obj) {\n let sep = \"{\";\n STACK.push(obj);\n for (const key in obj) {\n if (hasOwnProperty$1.call(obj, key)) {\n const val = obj[key];\n const escapedKey = toObjectKey(key);\n BUFFER.push(sep + escapedKey + \":\");\n if (writeProp(val, escapedKey)) {\n sep = \",\";\n } else {\n BUFFER.pop();\n }\n }\n }\n if (sep === \"{\") {\n BUFFER.push(\"{}\");\n } else {\n BUFFER.push(\"}\");\n }\n STACK.pop();\n}\nfunction writeArray(arr) {\n BUFFER.push(\"[\");\n STACK.push(arr);\n writeProp(arr[0], 0);\n for (let i = 1, len = arr.length; i < len; i++) {\n BUFFER.push(\",\");\n writeProp(arr[i], i);\n }\n STACK.pop();\n BUFFER.push(\"]\");\n}\nfunction getRef(cur, accessor) {\n let ref = INDEX_OR_REF.get(cur);\n if (ref === undefined) {\n INDEX_OR_REF.set(cur, BUFFER.length);\n return false;\n }\n if (typeof ref === \"number\") {\n ref = insertAndGetRef(cur, ref);\n }\n if (STACK.includes(cur)) {\n const parent = STACK[STACK.length - 1];\n let parentRef = INDEX_OR_REF.get(parent);\n if (typeof parentRef === \"number\") {\n parentRef = insertAndGetRef(parent, parentRef);\n }\n ASSIGNMENTS.set(ref, (ASSIGNMENTS.get(ref) || \"\") + toAssignment(parentRef, accessor) + \"=\");\n return true;\n }\n return ref;\n}\nfunction toObjectKey(name) {\n const invalidIdentifierPos = getInvalidIdentifierPos(name);\n return invalidIdentifierPos === -1 ? name : quote(name, invalidIdentifierPos);\n}\nfunction toAssignment(parent, key) {\n return parent + (typeof key === \"number\" || key[0] === '\"' ? \"[\" + key + \"]\" : \".\" + key);\n}\nfunction getInvalidIdentifierPos(name) {\n let char = name[0];\n if (!(char >= \"a\" && char <= \"z\" || char >= \"A\" && char <= \"Z\" || char === \"$\" || char === \"_\")) {\n return 0;\n }\n for (let i = 1, len = name.length; i < len; i++) {\n char = name[i];\n if (!(char >= \"a\" && char <= \"z\" || char >= \"A\" && char <= \"Z\" || char >= \"0\" && char <= \"9\" || char === \"$\" || char === \"_\")) {\n return i;\n }\n }\n return -1;\n}\nfunction quote(str, startPos) {\n let result = \"\";\n let lastPos = 0;\n for (let i = startPos, len = str.length; i < len; i++) {\n let replacement;\n switch (str[i]) {\n case '\"':\n replacement = '\\\\\"';\n break;\n case \"\\\\\":\n replacement = \"\\\\\\\\\";\n break;\n case \"<\":\n replacement = \"\\\\x3C\";\n break;\n case \"\\n\":\n replacement = \"\\\\n\";\n break;\n case \"\\r\":\n replacement = \"\\\\r\";\n break;\n case \"\\u2028\":\n replacement = \"\\\\u2028\";\n break;\n case \"\\u2029\":\n replacement = \"\\\\u2029\";\n break;\n default:\n continue;\n }\n result += str.slice(lastPos, i) + replacement;\n lastPos = i + 1;\n }\n if (lastPos === startPos) {\n result = str;\n } else {\n result += str.slice(lastPos);\n }\n return '\"' + result + '\"';\n}\nfunction insertAndGetRef(obj, pos) {\n const ref = toRefParam(REF_COUNT++);\n INDEX_OR_REF.set(obj, ref);\n if (pos) {\n BUFFER[pos - 1] += ref + \"=\";\n } else {\n BUFFER[pos] = ref + \"=\" + BUFFER[pos];\n }\n return ref;\n}\nfunction refParamsString() {\n let result = REF_START_CHARS[0];\n for (let i = 1; i < REF_COUNT; i++) {\n result += \",\" + toRefParam(i);\n }\n REF_COUNT = 0;\n return result;\n}\nfunction toRefParam(index) {\n let mod = index % REF_START_CHARS_LEN;\n let ref = REF_START_CHARS[mod];\n index = (index - mod) / REF_START_CHARS_LEN;\n while (index > 0) {\n mod = index % REF_CHARS_LEN;\n ref += REF_CHARS[mod];\n index = (index - mod) / REF_CHARS_LEN;\n }\n return ref;\n}\n\nconst REPLACE_SCRIPT = `function $df(e,t,d,l){d=document.getElementById(e),(l=document.getElementById(\"pl-\"+e))&&l.replaceWith(...d.childNodes),d.remove(),_$HY.set(e,t)}`;\nfunction renderToStringAsync(code, options = {}) {\n const {\n timeoutMs = 30000\n } = options;\n let timeoutHandle;\n const timeout = new Promise((_, reject) => {\n timeoutHandle = setTimeout(() => reject(\"renderToString timed out\"), timeoutMs);\n });\n return Promise.race([renderToStream(code, options), timeout]).then(html => {\n clearTimeout(timeoutHandle);\n return html;\n });\n}\nfunction renderToStream(code, options = {}) {\n let {\n nonce,\n onCompleteShell,\n onCompleteAll,\n renderId\n } = options;\n const blockingResources = [];\n const registry = new Map();\n const dedupe = new WeakMap();\n const checkEnd = () => {\n if (!registry.size && !completed) {\n writeTasks();\n onCompleteAll && onCompleteAll({\n write(v) {\n !completed && buffer.write(v);\n }\n });\n writable && writable.end();\n completed = true;\n }\n };\n const pushTask = task => {\n tasks += task + \";\";\n if (!scheduled && firstFlushed) {\n Promise.resolve().then(writeTasks);\n scheduled = true;\n }\n };\n const writeTasks = () => {\n if (tasks.length && !completed && firstFlushed) {\n buffer.write(`${tasks}`);\n tasks = \"\";\n }\n scheduled = false;\n };\n let context;\n let writable;\n let tmp = \"\";\n let tasks = \"\";\n let firstFlushed = false;\n let completed = false;\n let scriptFlushed = false;\n let scheduled = true;\n let buffer = {\n write(payload) {\n tmp += payload;\n }\n };\n sharedConfig.context = context = {\n id: renderId || \"\",\n count: 0,\n async: true,\n resources: {},\n suspense: {},\n assets: [],\n nonce,\n block(p) {\n if (!firstFlushed) blockingResources.push(p);\n },\n replace(id, payloadFn) {\n if (firstFlushed) return;\n const placeholder = ``;\n const first = html.indexOf(placeholder);\n if (first === -1) return;\n const last = html.indexOf(``, first + placeholder.length);\n html = html.replace(html.slice(first, last + placeholder.length + 1), resolveSSRNode(payloadFn()));\n },\n writeResource(id, p, error, wait) {\n if (error) return pushTask(serializeSet(dedupe, id, p, serializeError));\n if (!p || typeof p !== \"object\" || !(\"then\" in p)) return pushTask(serializeSet(dedupe, id, p));\n if (!firstFlushed) wait && blockingResources.push(p);else pushTask(`_$HY.init(\"${id}\")`);\n p.then(d => {\n !completed && pushTask(serializeSet(dedupe, id, d));\n }).catch(() => {\n !completed && pushTask(`_$HY.set(\"${id}\", {})`);\n });\n },\n registerFragment(key) {\n if (!registry.has(key)) {\n registry.set(key, []);\n firstFlushed && pushTask(`_$HY.init(\"${key}\")`);\n }\n return (value, error) => {\n if (registry.has(key)) {\n const keys = registry.get(key);\n registry.delete(key);\n if (waitForFragments(registry, key)) return;\n if ((value !== undefined || error) && !completed) {\n if (!firstFlushed) {\n Promise.resolve().then(() => html = replacePlaceholder(html, key, value !== undefined ? value : \"\"));\n error && pushTask(serializeSet(dedupe, key, error, serializeError));\n } else {\n buffer.write(``);\n pushTask(`${keys.length ? keys.map(k => `_$HY.unset(\"${k}\")`).join(\";\") + \";\" : \"\"}$df(\"${key}\"${error ? \",\" + serializeError(error) : \"\"})${!scriptFlushed ? \";\" + REPLACE_SCRIPT : \"\"}`);\n scriptFlushed = true;\n }\n }\n }\n if (!registry.size) Promise.resolve().then(checkEnd);\n return firstFlushed;\n };\n }\n };\n let html = resolveSSRNode(escape(code()));\n function doShell() {\n sharedConfig.context = context;\n context.noHydrate = true;\n html = injectAssets(context.assets, html);\n for (const key in context.resources) {\n if (!(\"data\" in context.resources[key] || context.resources[key].ref[0].error)) pushTask(`_$HY.init(\"${key}\")`);\n }\n for (const key of registry.keys()) pushTask(`_$HY.init(\"${key}\")`);\n if (tasks.length) html = injectScripts(html, tasks, nonce);\n buffer.write(html);\n tasks = \"\";\n scheduled = false;\n onCompleteShell && onCompleteShell({\n write(v) {\n !completed && buffer.write(v);\n }\n });\n }\n return {\n then(fn) {\n function complete() {\n doShell();\n fn(tmp);\n }\n if (onCompleteAll) {\n ogComplete = onCompleteAll;\n onCompleteAll = options => {\n ogComplete(options);\n complete();\n };\n } else onCompleteAll = complete;\n if (!registry.size) Promise.resolve().then(checkEnd);\n },\n pipe(w) {\n Promise.allSettled(blockingResources).then(() => {\n doShell();\n buffer = writable = w;\n buffer.write(tmp);\n firstFlushed = true;\n if (completed) writable.end();else setTimeout(checkEnd);\n });\n },\n pipeTo(w) {\n Promise.allSettled(blockingResources).then(() => {\n doShell();\n const encoder = new TextEncoder();\n const writer = w.getWriter();\n writable = {\n end() {\n writer.releaseLock();\n w.close();\n }\n };\n buffer = {\n write(payload) {\n writer.write(encoder.encode(payload));\n }\n };\n buffer.write(tmp);\n firstFlushed = true;\n if (completed) writable.end();else setTimeout(checkEnd);\n });\n }\n };\n}\nfunction Assets(props) {\n useAssets(() => props.children);\n}\nfunction HydrationScript(props) {\n const {\n nonce\n } = sharedConfig.context;\n return ssr(generateHydrationScript({\n nonce,\n ...props\n }));\n}\nfunction NoHydration(props) {\n const c = sharedConfig.context;\n c.noHydrate = true;\n const children = props.children;\n c.noHydrate = false;\n return children;\n}\nfunction ssr(t, ...nodes) {\n if (nodes.length) {\n let result = \"\";\n for (let i = 0; i < nodes.length; i++) {\n result += t[i];\n const node = nodes[i];\n if (node !== undefined) result += resolveSSRNode(node);\n }\n t = result + t[nodes.length];\n }\n return {\n t\n };\n}\nfunction ssrClassList(value) {\n if (!value) return \"\";\n let classKeys = Object.keys(value),\n result = \"\";\n for (let i = 0, len = classKeys.length; i < len; i++) {\n const key = classKeys[i],\n classValue = !!value[key];\n if (!key || !classValue) continue;\n i && (result += \" \");\n result += key;\n }\n return result;\n}\nfunction ssrStyle(value) {\n if (!value) return \"\";\n if (typeof value === \"string\") return value;\n let result = \"\";\n const k = Object.keys(value);\n for (let i = 0; i < k.length; i++) {\n const s = k[i];\n if (i) result += \";\";\n result += `${s}:${escape(value[s], true)}`;\n }\n return result;\n}\nfunction ssrElement(tag, props, children, needsId) {\n let result = `<${tag}${needsId ? ssrHydrationKey() : \"\"} `;\n if (props == null) props = {};else if (typeof props === \"function\") props = props();\n const keys = Object.keys(props);\n let classResolved;\n for (let i = 0; i < keys.length; i++) {\n const prop = keys[i];\n if (ChildProperties.has(prop)) {\n if (children === undefined) children = prop === \"innerHTML\" ? props[prop] : escape(props[prop]);\n continue;\n }\n const value = props[prop];\n if (prop === \"style\") {\n result += `style=\"${ssrStyle(value)}\"`;\n } else if (prop === \"class\" || prop === \"className\" || prop === \"classList\") {\n if (classResolved) continue;\n let n;\n result += `class=\"${(n = props.class) ? n + \" \" : \"\"}${(n = props.className) ? n + \" \" : \"\"}${ssrClassList(props.classList)}\"`;\n classResolved = true;\n } else if (BooleanAttributes.has(prop)) {\n if (value) result += prop;else continue;\n } else if (value == undefined || prop === \"ref\" || prop.slice(0, 2) === \"on\") {\n continue;\n } else {\n result += `${Aliases[prop] || prop}=\"${escape(value, true)}\"`;\n }\n if (i !== keys.length - 1) result += \" \";\n }\n return {\n t: result + `>${resolveSSRNode(children)}`\n };\n}\nfunction ssrAttribute(key, value, isBoolean) {\n return isBoolean ? value ? \" \" + key : \"\" : value != null ? ` ${key}=\"${value}\"` : \"\";\n}\nfunction ssrHydrationKey() {\n const hk = getHydrationKey();\n return hk ? ` data-hk=\"${hk}\"` : \"\";\n}\nfunction escape(s, attr) {\n const t = typeof s;\n if (t !== \"string\") {\n if (!attr && t === \"function\") return escape(s(), attr);\n if (!attr && Array.isArray(s)) {\n let r = \"\";\n for (let i = 0; i < s.length; i++) r += resolveSSRNode(escape(s[i], attr));\n return {\n t: r\n };\n }\n if (attr && t === \"boolean\") return String(s);\n return s;\n }\n const delim = attr ? '\"' : \"<\";\n const escDelim = attr ? \""\" : \"<\";\n let iDelim = s.indexOf(delim);\n let iAmp = s.indexOf(\"&\");\n if (iDelim < 0 && iAmp < 0) return s;\n let left = 0,\n out = \"\";\n while (iDelim >= 0 && iAmp >= 0) {\n if (iDelim < iAmp) {\n if (left < iDelim) out += s.substring(left, iDelim);\n out += escDelim;\n left = iDelim + 1;\n iDelim = s.indexOf(delim, left);\n } else {\n if (left < iAmp) out += s.substring(left, iAmp);\n out += \"&\";\n left = iAmp + 1;\n iAmp = s.indexOf(\"&\", left);\n }\n }\n if (iDelim >= 0) {\n do {\n if (left < iDelim) out += s.substring(left, iDelim);\n out += escDelim;\n left = iDelim + 1;\n iDelim = s.indexOf(delim, left);\n } while (iDelim >= 0);\n } else while (iAmp >= 0) {\n if (left < iAmp) out += s.substring(left, iAmp);\n out += \"&\";\n left = iAmp + 1;\n iAmp = s.indexOf(\"&\", left);\n }\n return left < s.length ? out + s.substring(left) : out;\n}\nfunction resolveSSRNode(node) {\n const t = typeof node;\n if (t === \"string\") return node;\n if (node == null || t === \"boolean\") return \"\";\n if (Array.isArray(node)) {\n let mapped = \"\";\n for (let i = 0, len = node.length; i < len; i++) mapped += resolveSSRNode(node[i]);\n return mapped;\n }\n if (t === \"object\") return node.t;\n if (t === \"function\") return resolveSSRNode(node());\n return String(node);\n}\nfunction getHydrationKey() {\n const hydrate = sharedConfig.context;\n return hydrate && !hydrate.noHydrate && `${hydrate.id}${hydrate.count++}`;\n}\nfunction useAssets(fn) {\n sharedConfig.context.assets.push(() => resolveSSRNode(fn()));\n}\nfunction generateHydrationScript({\n eventNames = [\"click\", \"input\"],\n nonce\n} = {}) {\n return `var e,t;e=window._$HY||(_$HY={events:[],completed:new WeakSet,r:{}}),t=e=>e&&e.hasAttribute&&(e.hasAttribute(\"data-hk\")?e:t(e.host&&e.host instanceof Node?e.host:e.parentNode)),[\"${eventNames.join('\",\"')}\"].forEach((o=>document.addEventListener(o,(o=>{let s=o.composedPath&&o.composedPath()[0]||o.target,a=t(s);a&&!e.completed.has(a)&&e.events.push([a,o])})))),e.init=(t,o)=>{e.r[t]=[new Promise(((e,t)=>o=e)),o]},e.set=(t,o,s)=>{(s=e.r[t])&&s[1](o),e.r[t]=[o]},e.unset=t=>{delete e.r[t]},e.load=t=>e.r[t];`;\n}\nfunction injectAssets(assets, html) {\n if (!assets || !assets.length) return html;\n let out = \"\";\n for (let i = 0, len = assets.length; i < len; i++) out += assets[i]();\n return html.replace(``, out + ``);\n}\nfunction injectScripts(html, scripts, nonce) {\n const tag = `${scripts}`;\n const index = html.indexOf(\"\");\n if (index > -1) {\n return html.slice(0, index) + tag + html.slice(index);\n }\n return html + tag;\n}\nfunction serializeError(error) {\n if (error.message) {\n const fields = {};\n const keys = Object.getOwnPropertyNames(error);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const value = error[key];\n if (!value || key !== \"message\" && typeof value !== \"function\") {\n fields[key] = value;\n }\n }\n return `Object.assign(new Error(${stringify(error.message)}), ${stringify(fields)})`;\n }\n return stringify(error);\n}\nfunction waitForFragments(registry, key) {\n for (const k of [...registry.keys()].reverse()) {\n if (key.startsWith(k)) {\n registry.get(k).push(key);\n return true;\n }\n }\n return false;\n}\nfunction serializeSet(registry, key, value, serializer = stringify) {\n const exist = registry.get(value);\n if (exist) return `_$HY.set(\"${key}\", _$HY.r[\"${exist}\"][0])`;\n value !== null && typeof value === \"object\" && registry.set(value, key);\n return `_$HY.set(\"${key}\", ${serializer(value)})`;\n}\nfunction replacePlaceholder(html, key, value) {\n const nextRegex = /(<[/]?span[^>]*>)/g;\n const marker = ``;\n const first = html.indexOf(marker);\n if (first === -1) return html;\n nextRegex.lastIndex = first + marker.length;\n let match;\n let open = 0,\n close = 0;\n while (match = nextRegex.exec(html)) {\n if (match[0][1] === \"/\") {\n close++;\n if (close > open) break;\n } else open++;\n }\n return html.slice(0, first) + value + html.slice(nextRegex.lastIndex);\n}\n\nconst isServer = true;\n\nvar dist = {};\n\nvar browserPonyfill = {exports: {}};\n\n(function (module, exports) {\n\tvar global = typeof self !== 'undefined' ? self : commonjsGlobal;\n\tvar __self__ = (function () {\n\tfunction F() {\n\tthis.fetch = false;\n\tthis.DOMException = global.DOMException;\n\t}\n\tF.prototype = global;\n\treturn new F();\n\t})();\n\t(function(self) {\n\n\t((function (exports) {\n\n\t var support = {\n\t searchParams: 'URLSearchParams' in self,\n\t iterable: 'Symbol' in self && 'iterator' in Symbol,\n\t blob:\n\t 'FileReader' in self &&\n\t 'Blob' in self &&\n\t (function() {\n\t try {\n\t new Blob();\n\t return true\n\t } catch (e) {\n\t return false\n\t }\n\t })(),\n\t formData: 'FormData' in self,\n\t arrayBuffer: 'ArrayBuffer' in self\n\t };\n\n\t function isDataView(obj) {\n\t return obj && DataView.prototype.isPrototypeOf(obj)\n\t }\n\n\t if (support.arrayBuffer) {\n\t var viewClasses = [\n\t '[object Int8Array]',\n\t '[object Uint8Array]',\n\t '[object Uint8ClampedArray]',\n\t '[object Int16Array]',\n\t '[object Uint16Array]',\n\t '[object Int32Array]',\n\t '[object Uint32Array]',\n\t '[object Float32Array]',\n\t '[object Float64Array]'\n\t ];\n\n\t var isArrayBufferView =\n\t ArrayBuffer.isView ||\n\t function(obj) {\n\t return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n\t };\n\t }\n\n\t function normalizeName(name) {\n\t if (typeof name !== 'string') {\n\t name = String(name);\n\t }\n\t if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n\t throw new TypeError('Invalid character in header field name')\n\t }\n\t return name.toLowerCase()\n\t }\n\n\t function normalizeValue(value) {\n\t if (typeof value !== 'string') {\n\t value = String(value);\n\t }\n\t return value\n\t }\n\n\t // Build a destructive iterator for the value list\n\t function iteratorFor(items) {\n\t var iterator = {\n\t next: function() {\n\t var value = items.shift();\n\t return {done: value === undefined, value: value}\n\t }\n\t };\n\n\t if (support.iterable) {\n\t iterator[Symbol.iterator] = function() {\n\t return iterator\n\t };\n\t }\n\n\t return iterator\n\t }\n\n\t function Headers(headers) {\n\t this.map = {};\n\n\t if (headers instanceof Headers) {\n\t headers.forEach(function(value, name) {\n\t this.append(name, value);\n\t }, this);\n\t } else if (Array.isArray(headers)) {\n\t headers.forEach(function(header) {\n\t this.append(header[0], header[1]);\n\t }, this);\n\t } else if (headers) {\n\t Object.getOwnPropertyNames(headers).forEach(function(name) {\n\t this.append(name, headers[name]);\n\t }, this);\n\t }\n\t }\n\n\t Headers.prototype.append = function(name, value) {\n\t name = normalizeName(name);\n\t value = normalizeValue(value);\n\t var oldValue = this.map[name];\n\t this.map[name] = oldValue ? oldValue + ', ' + value : value;\n\t };\n\n\t Headers.prototype['delete'] = function(name) {\n\t delete this.map[normalizeName(name)];\n\t };\n\n\t Headers.prototype.get = function(name) {\n\t name = normalizeName(name);\n\t return this.has(name) ? this.map[name] : null\n\t };\n\n\t Headers.prototype.has = function(name) {\n\t return this.map.hasOwnProperty(normalizeName(name))\n\t };\n\n\t Headers.prototype.set = function(name, value) {\n\t this.map[normalizeName(name)] = normalizeValue(value);\n\t };\n\n\t Headers.prototype.forEach = function(callback, thisArg) {\n\t for (var name in this.map) {\n\t if (this.map.hasOwnProperty(name)) {\n\t callback.call(thisArg, this.map[name], name, this);\n\t }\n\t }\n\t };\n\n\t Headers.prototype.keys = function() {\n\t var items = [];\n\t this.forEach(function(value, name) {\n\t items.push(name);\n\t });\n\t return iteratorFor(items)\n\t };\n\n\t Headers.prototype.values = function() {\n\t var items = [];\n\t this.forEach(function(value) {\n\t items.push(value);\n\t });\n\t return iteratorFor(items)\n\t };\n\n\t Headers.prototype.entries = function() {\n\t var items = [];\n\t this.forEach(function(value, name) {\n\t items.push([name, value]);\n\t });\n\t return iteratorFor(items)\n\t };\n\n\t if (support.iterable) {\n\t Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n\t }\n\n\t function consumed(body) {\n\t if (body.bodyUsed) {\n\t return Promise.reject(new TypeError('Already read'))\n\t }\n\t body.bodyUsed = true;\n\t }\n\n\t function fileReaderReady(reader) {\n\t return new Promise(function(resolve, reject) {\n\t reader.onload = function() {\n\t resolve(reader.result);\n\t };\n\t reader.onerror = function() {\n\t reject(reader.error);\n\t };\n\t })\n\t }\n\n\t function readBlobAsArrayBuffer(blob) {\n\t var reader = new FileReader();\n\t var promise = fileReaderReady(reader);\n\t reader.readAsArrayBuffer(blob);\n\t return promise\n\t }\n\n\t function readBlobAsText(blob) {\n\t var reader = new FileReader();\n\t var promise = fileReaderReady(reader);\n\t reader.readAsText(blob);\n\t return promise\n\t }\n\n\t function readArrayBufferAsText(buf) {\n\t var view = new Uint8Array(buf);\n\t var chars = new Array(view.length);\n\n\t for (var i = 0; i < view.length; i++) {\n\t chars[i] = String.fromCharCode(view[i]);\n\t }\n\t return chars.join('')\n\t }\n\n\t function bufferClone(buf) {\n\t if (buf.slice) {\n\t return buf.slice(0)\n\t } else {\n\t var view = new Uint8Array(buf.byteLength);\n\t view.set(new Uint8Array(buf));\n\t return view.buffer\n\t }\n\t }\n\n\t function Body() {\n\t this.bodyUsed = false;\n\n\t this._initBody = function(body) {\n\t this._bodyInit = body;\n\t if (!body) {\n\t this._bodyText = '';\n\t } else if (typeof body === 'string') {\n\t this._bodyText = body;\n\t } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n\t this._bodyBlob = body;\n\t } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n\t this._bodyFormData = body;\n\t } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n\t this._bodyText = body.toString();\n\t } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n\t this._bodyArrayBuffer = bufferClone(body.buffer);\n\t // IE 10-11 can't handle a DataView body.\n\t this._bodyInit = new Blob([this._bodyArrayBuffer]);\n\t } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n\t this._bodyArrayBuffer = bufferClone(body);\n\t } else {\n\t this._bodyText = body = Object.prototype.toString.call(body);\n\t }\n\n\t if (!this.headers.get('content-type')) {\n\t if (typeof body === 'string') {\n\t this.headers.set('content-type', 'text/plain;charset=UTF-8');\n\t } else if (this._bodyBlob && this._bodyBlob.type) {\n\t this.headers.set('content-type', this._bodyBlob.type);\n\t } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n\t this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n\t }\n\t }\n\t };\n\n\t if (support.blob) {\n\t this.blob = function() {\n\t var rejected = consumed(this);\n\t if (rejected) {\n\t return rejected\n\t }\n\n\t if (this._bodyBlob) {\n\t return Promise.resolve(this._bodyBlob)\n\t } else if (this._bodyArrayBuffer) {\n\t return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n\t } else if (this._bodyFormData) {\n\t throw new Error('could not read FormData body as blob')\n\t } else {\n\t return Promise.resolve(new Blob([this._bodyText]))\n\t }\n\t };\n\n\t this.arrayBuffer = function() {\n\t if (this._bodyArrayBuffer) {\n\t return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n\t } else {\n\t return this.blob().then(readBlobAsArrayBuffer)\n\t }\n\t };\n\t }\n\n\t this.text = function() {\n\t var rejected = consumed(this);\n\t if (rejected) {\n\t return rejected\n\t }\n\n\t if (this._bodyBlob) {\n\t return readBlobAsText(this._bodyBlob)\n\t } else if (this._bodyArrayBuffer) {\n\t return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n\t } else if (this._bodyFormData) {\n\t throw new Error('could not read FormData body as text')\n\t } else {\n\t return Promise.resolve(this._bodyText)\n\t }\n\t };\n\n\t if (support.formData) {\n\t this.formData = function() {\n\t return this.text().then(decode)\n\t };\n\t }\n\n\t this.json = function() {\n\t return this.text().then(JSON.parse)\n\t };\n\n\t return this\n\t }\n\n\t // HTTP methods whose capitalization should be normalized\n\t var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n\t function normalizeMethod(method) {\n\t var upcased = method.toUpperCase();\n\t return methods.indexOf(upcased) > -1 ? upcased : method\n\t }\n\n\t function Request(input, options) {\n\t options = options || {};\n\t var body = options.body;\n\n\t if (input instanceof Request) {\n\t if (input.bodyUsed) {\n\t throw new TypeError('Already read')\n\t }\n\t this.url = input.url;\n\t this.credentials = input.credentials;\n\t if (!options.headers) {\n\t this.headers = new Headers(input.headers);\n\t }\n\t this.method = input.method;\n\t this.mode = input.mode;\n\t this.signal = input.signal;\n\t if (!body && input._bodyInit != null) {\n\t body = input._bodyInit;\n\t input.bodyUsed = true;\n\t }\n\t } else {\n\t this.url = String(input);\n\t }\n\n\t this.credentials = options.credentials || this.credentials || 'same-origin';\n\t if (options.headers || !this.headers) {\n\t this.headers = new Headers(options.headers);\n\t }\n\t this.method = normalizeMethod(options.method || this.method || 'GET');\n\t this.mode = options.mode || this.mode || null;\n\t this.signal = options.signal || this.signal;\n\t this.referrer = null;\n\n\t if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n\t throw new TypeError('Body not allowed for GET or HEAD requests')\n\t }\n\t this._initBody(body);\n\t }\n\n\t Request.prototype.clone = function() {\n\t return new Request(this, {body: this._bodyInit})\n\t };\n\n\t function decode(body) {\n\t var form = new FormData();\n\t body\n\t .trim()\n\t .split('&')\n\t .forEach(function(bytes) {\n\t if (bytes) {\n\t var split = bytes.split('=');\n\t var name = split.shift().replace(/\\+/g, ' ');\n\t var value = split.join('=').replace(/\\+/g, ' ');\n\t form.append(decodeURIComponent(name), decodeURIComponent(value));\n\t }\n\t });\n\t return form\n\t }\n\n\t function parseHeaders(rawHeaders) {\n\t var headers = new Headers();\n\t // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n\t // https://tools.ietf.org/html/rfc7230#section-3.2\n\t var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n\t preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n\t var parts = line.split(':');\n\t var key = parts.shift().trim();\n\t if (key) {\n\t var value = parts.join(':').trim();\n\t headers.append(key, value);\n\t }\n\t });\n\t return headers\n\t }\n\n\t Body.call(Request.prototype);\n\n\t function Response(bodyInit, options) {\n\t if (!options) {\n\t options = {};\n\t }\n\n\t this.type = 'default';\n\t this.status = options.status === undefined ? 200 : options.status;\n\t this.ok = this.status >= 200 && this.status < 300;\n\t this.statusText = 'statusText' in options ? options.statusText : 'OK';\n\t this.headers = new Headers(options.headers);\n\t this.url = options.url || '';\n\t this._initBody(bodyInit);\n\t }\n\n\t Body.call(Response.prototype);\n\n\t Response.prototype.clone = function() {\n\t return new Response(this._bodyInit, {\n\t status: this.status,\n\t statusText: this.statusText,\n\t headers: new Headers(this.headers),\n\t url: this.url\n\t })\n\t };\n\n\t Response.error = function() {\n\t var response = new Response(null, {status: 0, statusText: ''});\n\t response.type = 'error';\n\t return response\n\t };\n\n\t var redirectStatuses = [301, 302, 303, 307, 308];\n\n\t Response.redirect = function(url, status) {\n\t if (redirectStatuses.indexOf(status) === -1) {\n\t throw new RangeError('Invalid status code')\n\t }\n\n\t return new Response(null, {status: status, headers: {location: url}})\n\t };\n\n\t exports.DOMException = self.DOMException;\n\t try {\n\t new exports.DOMException();\n\t } catch (err) {\n\t exports.DOMException = function(message, name) {\n\t this.message = message;\n\t this.name = name;\n\t var error = Error(message);\n\t this.stack = error.stack;\n\t };\n\t exports.DOMException.prototype = Object.create(Error.prototype);\n\t exports.DOMException.prototype.constructor = exports.DOMException;\n\t }\n\n\t function fetch(input, init) {\n\t return new Promise(function(resolve, reject) {\n\t var request = new Request(input, init);\n\n\t if (request.signal && request.signal.aborted) {\n\t return reject(new exports.DOMException('Aborted', 'AbortError'))\n\t }\n\n\t var xhr = new XMLHttpRequest();\n\n\t function abortXhr() {\n\t xhr.abort();\n\t }\n\n\t xhr.onload = function() {\n\t var options = {\n\t status: xhr.status,\n\t statusText: xhr.statusText,\n\t headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n\t };\n\t options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n\t var body = 'response' in xhr ? xhr.response : xhr.responseText;\n\t resolve(new Response(body, options));\n\t };\n\n\t xhr.onerror = function() {\n\t reject(new TypeError('Network request failed'));\n\t };\n\n\t xhr.ontimeout = function() {\n\t reject(new TypeError('Network request failed'));\n\t };\n\n\t xhr.onabort = function() {\n\t reject(new exports.DOMException('Aborted', 'AbortError'));\n\t };\n\n\t xhr.open(request.method, request.url, true);\n\n\t if (request.credentials === 'include') {\n\t xhr.withCredentials = true;\n\t } else if (request.credentials === 'omit') {\n\t xhr.withCredentials = false;\n\t }\n\n\t if ('responseType' in xhr && support.blob) {\n\t xhr.responseType = 'blob';\n\t }\n\n\t request.headers.forEach(function(value, name) {\n\t xhr.setRequestHeader(name, value);\n\t });\n\n\t if (request.signal) {\n\t request.signal.addEventListener('abort', abortXhr);\n\n\t xhr.onreadystatechange = function() {\n\t // DONE (success or failure)\n\t if (xhr.readyState === 4) {\n\t request.signal.removeEventListener('abort', abortXhr);\n\t }\n\t };\n\t }\n\n\t xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n\t })\n\t }\n\n\t fetch.polyfill = true;\n\n\t if (!self.fetch) {\n\t self.fetch = fetch;\n\t self.Headers = Headers;\n\t self.Request = Request;\n\t self.Response = Response;\n\t }\n\n\t exports.Headers = Headers;\n\t exports.Request = Request;\n\t exports.Response = Response;\n\t exports.fetch = fetch;\n\n\t Object.defineProperty(exports, '__esModule', { value: true });\n\n\t return exports;\n\n\t}))({});\n\t})(__self__);\n\t__self__.fetch.ponyfill = true;\n\t// Remove \"polyfill\" property added by whatwg-fetch\n\tdelete __self__.fetch.polyfill;\n\t// Choose between native implementation (global) or custom implementation (__self__)\n\t// var ctx = global.fetch ? global : __self__;\n\tvar ctx = __self__; // this line disable service worker support temporarily\n\texports = ctx.fetch; // To enable: import fetch from 'cross-fetch'\n\texports.default = ctx.fetch; // For TypeScript consumers without esModuleInterop.\n\texports.fetch = ctx.fetch; // To enable: import {fetch} from 'cross-fetch'\n\texports.Headers = ctx.Headers;\n\texports.Request = ctx.Request;\n\texports.Response = ctx.Response;\n\tmodule.exports = exports;\n} (browserPonyfill, browserPonyfill.exports));\n\n/**\n * Return true if `value` is object-like. A value is object-like if it's not\n * `null` and has a `typeof` result of \"object\".\n */\nfunction isObjectLike(value) {\n return typeof value == 'object' && value !== null;\n}\n\nfunction invariant$1(condition, message) {\n const booleanCondition = Boolean(condition);\n\n if (!booleanCondition) {\n throw new Error(\n message != null ? message : 'Unexpected invariant triggered.',\n );\n }\n}\n\nconst LineRegExp = /\\r\\n|[\\n\\r]/g;\n/**\n * Represents a location in a Source.\n */\n\n/**\n * Takes a Source and a UTF-8 character offset, and returns the corresponding\n * line and column as a SourceLocation.\n */\nfunction getLocation(source, position) {\n let lastLineStart = 0;\n let line = 1;\n\n for (const match of source.body.matchAll(LineRegExp)) {\n typeof match.index === 'number' || invariant$1(false);\n\n if (match.index >= position) {\n break;\n }\n\n lastLineStart = match.index + match[0].length;\n line += 1;\n }\n\n return {\n line,\n column: position + 1 - lastLineStart,\n };\n}\n\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\nfunction printLocation(location) {\n return printSourceLocation(\n location.source,\n getLocation(location.source, location.start),\n );\n}\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\n\nfunction printSourceLocation(source, sourceLocation) {\n const firstLineColumnOffset = source.locationOffset.column - 1;\n const body = ''.padStart(firstLineColumnOffset) + source.body;\n const lineIndex = sourceLocation.line - 1;\n const lineOffset = source.locationOffset.line - 1;\n const lineNum = sourceLocation.line + lineOffset;\n const columnOffset = sourceLocation.line === 1 ? firstLineColumnOffset : 0;\n const columnNum = sourceLocation.column + columnOffset;\n const locationStr = `${source.name}:${lineNum}:${columnNum}\\n`;\n const lines = body.split(/\\r\\n|[\\n\\r]/g);\n const locationLine = lines[lineIndex]; // Special case for minified documents\n\n if (locationLine.length > 120) {\n const subLineIndex = Math.floor(columnNum / 80);\n const subLineColumnNum = columnNum % 80;\n const subLines = [];\n\n for (let i = 0; i < locationLine.length; i += 80) {\n subLines.push(locationLine.slice(i, i + 80));\n }\n\n return (\n locationStr +\n printPrefixedLines([\n [`${lineNum} |`, subLines[0]],\n ...subLines.slice(1, subLineIndex + 1).map((subLine) => ['|', subLine]),\n ['|', '^'.padStart(subLineColumnNum)],\n ['|', subLines[subLineIndex + 1]],\n ])\n );\n }\n\n return (\n locationStr +\n printPrefixedLines([\n // Lines specified like this: [\"prefix\", \"string\"],\n [`${lineNum - 1} |`, lines[lineIndex - 1]],\n [`${lineNum} |`, locationLine],\n ['|', '^'.padStart(columnNum)],\n [`${lineNum + 1} |`, lines[lineIndex + 1]],\n ])\n );\n}\n\nfunction printPrefixedLines(lines) {\n const existingLines = lines.filter(([_, line]) => line !== undefined);\n const padLen = Math.max(...existingLines.map(([prefix]) => prefix.length));\n return existingLines\n .map(([prefix, line]) => prefix.padStart(padLen) + (line ? ' ' + line : ''))\n .join('\\n');\n}\n\nfunction toNormalizedOptions(args) {\n const firstArg = args[0];\n\n if (firstArg == null || 'kind' in firstArg || 'length' in firstArg) {\n return {\n nodes: firstArg,\n source: args[1],\n positions: args[2],\n path: args[3],\n originalError: args[4],\n extensions: args[5],\n };\n }\n\n return firstArg;\n}\n/**\n * A GraphQLError describes an Error found during the parse, validate, or\n * execute phases of performing a GraphQL operation. In addition to a message\n * and stack trace, it also includes information about the locations in a\n * GraphQL document and/or execution result that correspond to the Error.\n */\n\nclass GraphQLError extends Error {\n /**\n * An array of `{ line, column }` locations within the source GraphQL document\n * which correspond to this error.\n *\n * Errors during validation often contain multiple locations, for example to\n * point out two things with the same name. Errors during execution include a\n * single location, the field which produced the error.\n *\n * Enumerable, and appears in the result of JSON.stringify().\n */\n\n /**\n * An array describing the JSON-path into the execution response which\n * corresponds to this error. Only included for errors during execution.\n *\n * Enumerable, and appears in the result of JSON.stringify().\n */\n\n /**\n * An array of GraphQL AST Nodes corresponding to this error.\n */\n\n /**\n * The source GraphQL document for the first location of this error.\n *\n * Note that if this Error represents more than one node, the source may not\n * represent nodes after the first node.\n */\n\n /**\n * An array of character offsets within the source GraphQL document\n * which correspond to this error.\n */\n\n /**\n * The original error thrown from a field resolver during execution.\n */\n\n /**\n * Extension fields to add to the formatted error.\n */\n\n /**\n * @deprecated Please use the `GraphQLErrorOptions` constructor overload instead.\n */\n constructor(message, ...rawArgs) {\n var _this$nodes, _nodeLocations$, _ref;\n\n const { nodes, source, positions, path, originalError, extensions } =\n toNormalizedOptions(rawArgs);\n super(message);\n this.name = 'GraphQLError';\n this.path = path !== null && path !== void 0 ? path : undefined;\n this.originalError =\n originalError !== null && originalError !== void 0\n ? originalError\n : undefined; // Compute list of blame nodes.\n\n this.nodes = undefinedIfEmpty(\n Array.isArray(nodes) ? nodes : nodes ? [nodes] : undefined,\n );\n const nodeLocations = undefinedIfEmpty(\n (_this$nodes = this.nodes) === null || _this$nodes === void 0\n ? void 0\n : _this$nodes.map((node) => node.loc).filter((loc) => loc != null),\n ); // Compute locations in the source for the given nodes/positions.\n\n this.source =\n source !== null && source !== void 0\n ? source\n : nodeLocations === null || nodeLocations === void 0\n ? void 0\n : (_nodeLocations$ = nodeLocations[0]) === null ||\n _nodeLocations$ === void 0\n ? void 0\n : _nodeLocations$.source;\n this.positions =\n positions !== null && positions !== void 0\n ? positions\n : nodeLocations === null || nodeLocations === void 0\n ? void 0\n : nodeLocations.map((loc) => loc.start);\n this.locations =\n positions && source\n ? positions.map((pos) => getLocation(source, pos))\n : nodeLocations === null || nodeLocations === void 0\n ? void 0\n : nodeLocations.map((loc) => getLocation(loc.source, loc.start));\n const originalExtensions = isObjectLike(\n originalError === null || originalError === void 0\n ? void 0\n : originalError.extensions,\n )\n ? originalError === null || originalError === void 0\n ? void 0\n : originalError.extensions\n : undefined;\n this.extensions =\n (_ref =\n extensions !== null && extensions !== void 0\n ? extensions\n : originalExtensions) !== null && _ref !== void 0\n ? _ref\n : Object.create(null); // Only properties prescribed by the spec should be enumerable.\n // Keep the rest as non-enumerable.\n\n Object.defineProperties(this, {\n message: {\n writable: true,\n enumerable: true,\n },\n name: {\n enumerable: false,\n },\n nodes: {\n enumerable: false,\n },\n source: {\n enumerable: false,\n },\n positions: {\n enumerable: false,\n },\n originalError: {\n enumerable: false,\n },\n }); // Include (non-enumerable) stack trace.\n\n /* c8 ignore start */\n // FIXME: https://github.com/graphql/graphql-js/issues/2317\n\n if (\n originalError !== null &&\n originalError !== void 0 &&\n originalError.stack\n ) {\n Object.defineProperty(this, 'stack', {\n value: originalError.stack,\n writable: true,\n configurable: true,\n });\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, GraphQLError);\n } else {\n Object.defineProperty(this, 'stack', {\n value: Error().stack,\n writable: true,\n configurable: true,\n });\n }\n /* c8 ignore stop */\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLError';\n }\n\n toString() {\n let output = this.message;\n\n if (this.nodes) {\n for (const node of this.nodes) {\n if (node.loc) {\n output += '\\n\\n' + printLocation(node.loc);\n }\n }\n } else if (this.source && this.locations) {\n for (const location of this.locations) {\n output += '\\n\\n' + printSourceLocation(this.source, location);\n }\n }\n\n return output;\n }\n\n toJSON() {\n const formattedError = {\n message: this.message,\n };\n\n if (this.locations != null) {\n formattedError.locations = this.locations;\n }\n\n if (this.path != null) {\n formattedError.path = this.path;\n }\n\n if (this.extensions != null && Object.keys(this.extensions).length > 0) {\n formattedError.extensions = this.extensions;\n }\n\n return formattedError;\n }\n}\n\nfunction undefinedIfEmpty(array) {\n return array === undefined || array.length === 0 ? undefined : array;\n}\n\n/**\n * Produces a GraphQLError representing a syntax error, containing useful\n * descriptive information about the syntax error's position in the source.\n */\n\nfunction syntaxError(source, position, description) {\n return new GraphQLError(`Syntax Error: ${description}`, {\n source,\n positions: [position],\n });\n}\n\n/**\n * Contains a range of UTF-8 character offsets and token references that\n * identify the region of the source from which the AST derived.\n */\nclass Location {\n /**\n * The character offset at which this Node begins.\n */\n\n /**\n * The character offset at which this Node ends.\n */\n\n /**\n * The Token at which this Node begins.\n */\n\n /**\n * The Token at which this Node ends.\n */\n\n /**\n * The Source document the AST represents.\n */\n constructor(startToken, endToken, source) {\n this.start = startToken.start;\n this.end = endToken.end;\n this.startToken = startToken;\n this.endToken = endToken;\n this.source = source;\n }\n\n get [Symbol.toStringTag]() {\n return 'Location';\n }\n\n toJSON() {\n return {\n start: this.start,\n end: this.end,\n };\n }\n}\n/**\n * Represents a range of characters represented by a lexical token\n * within a Source.\n */\n\nclass Token {\n /**\n * The kind of Token.\n */\n\n /**\n * The character offset at which this Node begins.\n */\n\n /**\n * The character offset at which this Node ends.\n */\n\n /**\n * The 1-indexed line number on which this Token appears.\n */\n\n /**\n * The 1-indexed column number at which this Token begins.\n */\n\n /**\n * For non-punctuation tokens, represents the interpreted value of the token.\n *\n * Note: is undefined for punctuation tokens, but typed as string for\n * convenience in the parser.\n */\n\n /**\n * Tokens exist as nodes in a double-linked-list amongst all tokens\n * including ignored tokens. is always the first node and \n * the last.\n */\n constructor(kind, start, end, line, column, value) {\n this.kind = kind;\n this.start = start;\n this.end = end;\n this.line = line;\n this.column = column; // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\n this.value = value;\n this.prev = null;\n this.next = null;\n }\n\n get [Symbol.toStringTag]() {\n return 'Token';\n }\n\n toJSON() {\n return {\n kind: this.kind,\n value: this.value,\n line: this.line,\n column: this.column,\n };\n }\n}\n/**\n * The list of all possible AST node types.\n */\n\n/**\n * @internal\n */\nconst QueryDocumentKeys = {\n Name: [],\n Document: ['definitions'],\n OperationDefinition: [\n 'name',\n 'variableDefinitions',\n 'directives',\n 'selectionSet',\n ],\n VariableDefinition: ['variable', 'type', 'defaultValue', 'directives'],\n Variable: ['name'],\n SelectionSet: ['selections'],\n Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet'],\n Argument: ['name', 'value'],\n FragmentSpread: ['name', 'directives'],\n InlineFragment: ['typeCondition', 'directives', 'selectionSet'],\n FragmentDefinition: [\n 'name', // Note: fragment variable definitions are deprecated and will removed in v17.0.0\n 'variableDefinitions',\n 'typeCondition',\n 'directives',\n 'selectionSet',\n ],\n IntValue: [],\n FloatValue: [],\n StringValue: [],\n BooleanValue: [],\n NullValue: [],\n EnumValue: [],\n ListValue: ['values'],\n ObjectValue: ['fields'],\n ObjectField: ['name', 'value'],\n Directive: ['name', 'arguments'],\n NamedType: ['name'],\n ListType: ['type'],\n NonNullType: ['type'],\n SchemaDefinition: ['description', 'directives', 'operationTypes'],\n OperationTypeDefinition: ['type'],\n ScalarTypeDefinition: ['description', 'name', 'directives'],\n ObjectTypeDefinition: [\n 'description',\n 'name',\n 'interfaces',\n 'directives',\n 'fields',\n ],\n FieldDefinition: ['description', 'name', 'arguments', 'type', 'directives'],\n InputValueDefinition: [\n 'description',\n 'name',\n 'type',\n 'defaultValue',\n 'directives',\n ],\n InterfaceTypeDefinition: [\n 'description',\n 'name',\n 'interfaces',\n 'directives',\n 'fields',\n ],\n UnionTypeDefinition: ['description', 'name', 'directives', 'types'],\n EnumTypeDefinition: ['description', 'name', 'directives', 'values'],\n EnumValueDefinition: ['description', 'name', 'directives'],\n InputObjectTypeDefinition: ['description', 'name', 'directives', 'fields'],\n DirectiveDefinition: ['description', 'name', 'arguments', 'locations'],\n SchemaExtension: ['directives', 'operationTypes'],\n ScalarTypeExtension: ['name', 'directives'],\n ObjectTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n InterfaceTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n UnionTypeExtension: ['name', 'directives', 'types'],\n EnumTypeExtension: ['name', 'directives', 'values'],\n InputObjectTypeExtension: ['name', 'directives', 'fields'],\n};\nconst kindValues = new Set(Object.keys(QueryDocumentKeys));\n/**\n * @internal\n */\n\nfunction isNode(maybeNode) {\n const maybeKind =\n maybeNode === null || maybeNode === void 0 ? void 0 : maybeNode.kind;\n return typeof maybeKind === 'string' && kindValues.has(maybeKind);\n}\n/** Name */\n\nvar OperationTypeNode;\n\n(function (OperationTypeNode) {\n OperationTypeNode['QUERY'] = 'query';\n OperationTypeNode['MUTATION'] = 'mutation';\n OperationTypeNode['SUBSCRIPTION'] = 'subscription';\n})(OperationTypeNode || (OperationTypeNode = {}));\n\n/**\n * The set of allowed directive location values.\n */\nvar DirectiveLocation$1;\n\n(function (DirectiveLocation) {\n DirectiveLocation['QUERY'] = 'QUERY';\n DirectiveLocation['MUTATION'] = 'MUTATION';\n DirectiveLocation['SUBSCRIPTION'] = 'SUBSCRIPTION';\n DirectiveLocation['FIELD'] = 'FIELD';\n DirectiveLocation['FRAGMENT_DEFINITION'] = 'FRAGMENT_DEFINITION';\n DirectiveLocation['FRAGMENT_SPREAD'] = 'FRAGMENT_SPREAD';\n DirectiveLocation['INLINE_FRAGMENT'] = 'INLINE_FRAGMENT';\n DirectiveLocation['VARIABLE_DEFINITION'] = 'VARIABLE_DEFINITION';\n DirectiveLocation['SCHEMA'] = 'SCHEMA';\n DirectiveLocation['SCALAR'] = 'SCALAR';\n DirectiveLocation['OBJECT'] = 'OBJECT';\n DirectiveLocation['FIELD_DEFINITION'] = 'FIELD_DEFINITION';\n DirectiveLocation['ARGUMENT_DEFINITION'] = 'ARGUMENT_DEFINITION';\n DirectiveLocation['INTERFACE'] = 'INTERFACE';\n DirectiveLocation['UNION'] = 'UNION';\n DirectiveLocation['ENUM'] = 'ENUM';\n DirectiveLocation['ENUM_VALUE'] = 'ENUM_VALUE';\n DirectiveLocation['INPUT_OBJECT'] = 'INPUT_OBJECT';\n DirectiveLocation['INPUT_FIELD_DEFINITION'] = 'INPUT_FIELD_DEFINITION';\n})(DirectiveLocation$1 || (DirectiveLocation$1 = {}));\n/**\n * The enum type representing the directive location values.\n *\n * @deprecated Please use `DirectiveLocation`. Will be remove in v17.\n */\n\n/**\n * The set of allowed kind values for AST nodes.\n */\nvar Kind;\n\n(function (Kind) {\n Kind['NAME'] = 'Name';\n Kind['DOCUMENT'] = 'Document';\n Kind['OPERATION_DEFINITION'] = 'OperationDefinition';\n Kind['VARIABLE_DEFINITION'] = 'VariableDefinition';\n Kind['SELECTION_SET'] = 'SelectionSet';\n Kind['FIELD'] = 'Field';\n Kind['ARGUMENT'] = 'Argument';\n Kind['FRAGMENT_SPREAD'] = 'FragmentSpread';\n Kind['INLINE_FRAGMENT'] = 'InlineFragment';\n Kind['FRAGMENT_DEFINITION'] = 'FragmentDefinition';\n Kind['VARIABLE'] = 'Variable';\n Kind['INT'] = 'IntValue';\n Kind['FLOAT'] = 'FloatValue';\n Kind['STRING'] = 'StringValue';\n Kind['BOOLEAN'] = 'BooleanValue';\n Kind['NULL'] = 'NullValue';\n Kind['ENUM'] = 'EnumValue';\n Kind['LIST'] = 'ListValue';\n Kind['OBJECT'] = 'ObjectValue';\n Kind['OBJECT_FIELD'] = 'ObjectField';\n Kind['DIRECTIVE'] = 'Directive';\n Kind['NAMED_TYPE'] = 'NamedType';\n Kind['LIST_TYPE'] = 'ListType';\n Kind['NON_NULL_TYPE'] = 'NonNullType';\n Kind['SCHEMA_DEFINITION'] = 'SchemaDefinition';\n Kind['OPERATION_TYPE_DEFINITION'] = 'OperationTypeDefinition';\n Kind['SCALAR_TYPE_DEFINITION'] = 'ScalarTypeDefinition';\n Kind['OBJECT_TYPE_DEFINITION'] = 'ObjectTypeDefinition';\n Kind['FIELD_DEFINITION'] = 'FieldDefinition';\n Kind['INPUT_VALUE_DEFINITION'] = 'InputValueDefinition';\n Kind['INTERFACE_TYPE_DEFINITION'] = 'InterfaceTypeDefinition';\n Kind['UNION_TYPE_DEFINITION'] = 'UnionTypeDefinition';\n Kind['ENUM_TYPE_DEFINITION'] = 'EnumTypeDefinition';\n Kind['ENUM_VALUE_DEFINITION'] = 'EnumValueDefinition';\n Kind['INPUT_OBJECT_TYPE_DEFINITION'] = 'InputObjectTypeDefinition';\n Kind['DIRECTIVE_DEFINITION'] = 'DirectiveDefinition';\n Kind['SCHEMA_EXTENSION'] = 'SchemaExtension';\n Kind['SCALAR_TYPE_EXTENSION'] = 'ScalarTypeExtension';\n Kind['OBJECT_TYPE_EXTENSION'] = 'ObjectTypeExtension';\n Kind['INTERFACE_TYPE_EXTENSION'] = 'InterfaceTypeExtension';\n Kind['UNION_TYPE_EXTENSION'] = 'UnionTypeExtension';\n Kind['ENUM_TYPE_EXTENSION'] = 'EnumTypeExtension';\n Kind['INPUT_OBJECT_TYPE_EXTENSION'] = 'InputObjectTypeExtension';\n})(Kind || (Kind = {}));\n/**\n * The enum type representing the possible kind values of AST nodes.\n *\n * @deprecated Please use `Kind`. Will be remove in v17.\n */\n\n/**\n * ```\n * WhiteSpace ::\n * - \"Horizontal Tab (U+0009)\"\n * - \"Space (U+0020)\"\n * ```\n * @internal\n */\nfunction isWhiteSpace(code) {\n return code === 0x0009 || code === 0x0020;\n}\n/**\n * ```\n * Digit :: one of\n * - `0` `1` `2` `3` `4` `5` `6` `7` `8` `9`\n * ```\n * @internal\n */\n\nfunction isDigit$1(code) {\n return code >= 0x0030 && code <= 0x0039;\n}\n/**\n * ```\n * Letter :: one of\n * - `A` `B` `C` `D` `E` `F` `G` `H` `I` `J` `K` `L` `M`\n * - `N` `O` `P` `Q` `R` `S` `T` `U` `V` `W` `X` `Y` `Z`\n * - `a` `b` `c` `d` `e` `f` `g` `h` `i` `j` `k` `l` `m`\n * - `n` `o` `p` `q` `r` `s` `t` `u` `v` `w` `x` `y` `z`\n * ```\n * @internal\n */\n\nfunction isLetter(code) {\n return (\n (code >= 0x0061 && code <= 0x007a) || // A-Z\n (code >= 0x0041 && code <= 0x005a) // a-z\n );\n}\n/**\n * ```\n * NameStart ::\n * - Letter\n * - `_`\n * ```\n * @internal\n */\n\nfunction isNameStart(code) {\n return isLetter(code) || code === 0x005f;\n}\n/**\n * ```\n * NameContinue ::\n * - Letter\n * - Digit\n * - `_`\n * ```\n * @internal\n */\n\nfunction isNameContinue(code) {\n return isLetter(code) || isDigit$1(code) || code === 0x005f;\n}\n\n/**\n * Produces the value of a block string from its parsed raw value, similar to\n * CoffeeScript's block string, Python's docstring trim or Ruby's strip_heredoc.\n *\n * This implements the GraphQL spec's BlockStringValue() static algorithm.\n *\n * @internal\n */\n\nfunction dedentBlockStringLines(lines) {\n var _firstNonEmptyLine2;\n\n let commonIndent = Number.MAX_SAFE_INTEGER;\n let firstNonEmptyLine = null;\n let lastNonEmptyLine = -1;\n\n for (let i = 0; i < lines.length; ++i) {\n var _firstNonEmptyLine;\n\n const line = lines[i];\n const indent = leadingWhitespace$1(line);\n\n if (indent === line.length) {\n continue; // skip empty lines\n }\n\n firstNonEmptyLine =\n (_firstNonEmptyLine = firstNonEmptyLine) !== null &&\n _firstNonEmptyLine !== void 0\n ? _firstNonEmptyLine\n : i;\n lastNonEmptyLine = i;\n\n if (i !== 0 && indent < commonIndent) {\n commonIndent = indent;\n }\n }\n\n return lines // Remove common indentation from all lines but first.\n .map((line, i) => (i === 0 ? line : line.slice(commonIndent))) // Remove leading and trailing blank lines.\n .slice(\n (_firstNonEmptyLine2 = firstNonEmptyLine) !== null &&\n _firstNonEmptyLine2 !== void 0\n ? _firstNonEmptyLine2\n : 0,\n lastNonEmptyLine + 1,\n );\n}\n\nfunction leadingWhitespace$1(str) {\n let i = 0;\n\n while (i < str.length && isWhiteSpace(str.charCodeAt(i))) {\n ++i;\n }\n\n return i;\n}\n/**\n * Print a block string in the indented block form by adding a leading and\n * trailing blank line. However, if a block string starts with whitespace and is\n * a single-line, adding a leading blank line would strip that whitespace.\n *\n * @internal\n */\n\nfunction printBlockString$1(value, options) {\n const escapedValue = value.replace(/\"\"\"/g, '\\\\\"\"\"'); // Expand a block string's raw value into independent lines.\n\n const lines = escapedValue.split(/\\r\\n|[\\n\\r]/g);\n const isSingleLine = lines.length === 1; // If common indentation is found we can fix some of those cases by adding leading new line\n\n const forceLeadingNewLine =\n lines.length > 1 &&\n lines\n .slice(1)\n .every((line) => line.length === 0 || isWhiteSpace(line.charCodeAt(0))); // Trailing triple quotes just looks confusing but doesn't force trailing new line\n\n const hasTrailingTripleQuotes = escapedValue.endsWith('\\\\\"\"\"'); // Trailing quote (single or double) or slash forces trailing new line\n\n const hasTrailingQuote = value.endsWith('\"') && !hasTrailingTripleQuotes;\n const hasTrailingSlash = value.endsWith('\\\\');\n const forceTrailingNewline = hasTrailingQuote || hasTrailingSlash;\n const printAsMultipleLines =\n !(options !== null && options !== void 0 && options.minimize) && // add leading and trailing new lines only if it improves readability\n (!isSingleLine ||\n value.length > 70 ||\n forceTrailingNewline ||\n forceLeadingNewLine ||\n hasTrailingTripleQuotes);\n let result = ''; // Format a multi-line block quote to account for leading space.\n\n const skipLeadingNewLine = isSingleLine && isWhiteSpace(value.charCodeAt(0));\n\n if ((printAsMultipleLines && !skipLeadingNewLine) || forceLeadingNewLine) {\n result += '\\n';\n }\n\n result += escapedValue;\n\n if (printAsMultipleLines || forceTrailingNewline) {\n result += '\\n';\n }\n\n return '\"\"\"' + result + '\"\"\"';\n}\n\n/**\n * An exported enum describing the different kinds of tokens that the\n * lexer emits.\n */\nvar TokenKind;\n\n(function (TokenKind) {\n TokenKind['SOF'] = '';\n TokenKind['EOF'] = '';\n TokenKind['BANG'] = '!';\n TokenKind['DOLLAR'] = '$';\n TokenKind['AMP'] = '&';\n TokenKind['PAREN_L'] = '(';\n TokenKind['PAREN_R'] = ')';\n TokenKind['SPREAD'] = '...';\n TokenKind['COLON'] = ':';\n TokenKind['EQUALS'] = '=';\n TokenKind['AT'] = '@';\n TokenKind['BRACKET_L'] = '[';\n TokenKind['BRACKET_R'] = ']';\n TokenKind['BRACE_L'] = '{';\n TokenKind['PIPE'] = '|';\n TokenKind['BRACE_R'] = '}';\n TokenKind['NAME'] = 'Name';\n TokenKind['INT'] = 'Int';\n TokenKind['FLOAT'] = 'Float';\n TokenKind['STRING'] = 'String';\n TokenKind['BLOCK_STRING'] = 'BlockString';\n TokenKind['COMMENT'] = 'Comment';\n})(TokenKind || (TokenKind = {}));\n/**\n * The enum type representing the token kinds values.\n *\n * @deprecated Please use `TokenKind`. Will be remove in v17.\n */\n\n/**\n * Given a Source object, creates a Lexer for that source.\n * A Lexer is a stateful stream generator in that every time\n * it is advanced, it returns the next token in the Source. Assuming the\n * source lexes, the final Token emitted by the lexer will be of kind\n * EOF, after which the lexer will repeatedly return the same EOF token\n * whenever called.\n */\n\nclass Lexer {\n /**\n * The previously focused non-ignored token.\n */\n\n /**\n * The currently focused non-ignored token.\n */\n\n /**\n * The (1-indexed) line containing the current token.\n */\n\n /**\n * The character offset at which the current line begins.\n */\n constructor(source) {\n const startOfFileToken = new Token(TokenKind.SOF, 0, 0, 0, 0);\n this.source = source;\n this.lastToken = startOfFileToken;\n this.token = startOfFileToken;\n this.line = 1;\n this.lineStart = 0;\n }\n\n get [Symbol.toStringTag]() {\n return 'Lexer';\n }\n /**\n * Advances the token stream to the next non-ignored token.\n */\n\n advance() {\n this.lastToken = this.token;\n const token = (this.token = this.lookahead());\n return token;\n }\n /**\n * Looks ahead and returns the next non-ignored token, but does not change\n * the state of Lexer.\n */\n\n lookahead() {\n let token = this.token;\n\n if (token.kind !== TokenKind.EOF) {\n do {\n if (token.next) {\n token = token.next;\n } else {\n // Read the next token and form a link in the token linked-list.\n const nextToken = readNextToken(this, token.end); // @ts-expect-error next is only mutable during parsing.\n\n token.next = nextToken; // @ts-expect-error prev is only mutable during parsing.\n\n nextToken.prev = token;\n token = nextToken;\n }\n } while (token.kind === TokenKind.COMMENT);\n }\n\n return token;\n }\n}\n/**\n * @internal\n */\n\nfunction isPunctuatorTokenKind(kind) {\n return (\n kind === TokenKind.BANG ||\n kind === TokenKind.DOLLAR ||\n kind === TokenKind.AMP ||\n kind === TokenKind.PAREN_L ||\n kind === TokenKind.PAREN_R ||\n kind === TokenKind.SPREAD ||\n kind === TokenKind.COLON ||\n kind === TokenKind.EQUALS ||\n kind === TokenKind.AT ||\n kind === TokenKind.BRACKET_L ||\n kind === TokenKind.BRACKET_R ||\n kind === TokenKind.BRACE_L ||\n kind === TokenKind.PIPE ||\n kind === TokenKind.BRACE_R\n );\n}\n/**\n * A Unicode scalar value is any Unicode code point except surrogate code\n * points. In other words, the inclusive ranges of values 0x0000 to 0xD7FF and\n * 0xE000 to 0x10FFFF.\n *\n * SourceCharacter ::\n * - \"Any Unicode scalar value\"\n */\n\nfunction isUnicodeScalarValue(code) {\n return (\n (code >= 0x0000 && code <= 0xd7ff) || (code >= 0xe000 && code <= 0x10ffff)\n );\n}\n/**\n * The GraphQL specification defines source text as a sequence of unicode scalar\n * values (which Unicode defines to exclude surrogate code points). However\n * JavaScript defines strings as a sequence of UTF-16 code units which may\n * include surrogates. A surrogate pair is a valid source character as it\n * encodes a supplementary code point (above U+FFFF), but unpaired surrogate\n * code points are not valid source characters.\n */\n\nfunction isSupplementaryCodePoint(body, location) {\n return (\n isLeadingSurrogate(body.charCodeAt(location)) &&\n isTrailingSurrogate(body.charCodeAt(location + 1))\n );\n}\n\nfunction isLeadingSurrogate(code) {\n return code >= 0xd800 && code <= 0xdbff;\n}\n\nfunction isTrailingSurrogate(code) {\n return code >= 0xdc00 && code <= 0xdfff;\n}\n/**\n * Prints the code point (or end of file reference) at a given location in a\n * source for use in error messages.\n *\n * Printable ASCII is printed quoted, while other points are printed in Unicode\n * code point form (ie. U+1234).\n */\n\nfunction printCodePointAt(lexer, location) {\n const code = lexer.source.body.codePointAt(location);\n\n if (code === undefined) {\n return TokenKind.EOF;\n } else if (code >= 0x0020 && code <= 0x007e) {\n // Printable ASCII\n const char = String.fromCodePoint(code);\n return char === '\"' ? \"'\\\"'\" : `\"${char}\"`;\n } // Unicode code point\n\n return 'U+' + code.toString(16).toUpperCase().padStart(4, '0');\n}\n/**\n * Create a token with line and column location information.\n */\n\nfunction createToken(lexer, kind, start, end, value) {\n const line = lexer.line;\n const col = 1 + start - lexer.lineStart;\n return new Token(kind, start, end, line, col, value);\n}\n/**\n * Gets the next token from the source starting at the given position.\n *\n * This skips over whitespace until it finds the next lexable token, then lexes\n * punctuators immediately or calls the appropriate helper function for more\n * complicated tokens.\n */\n\nfunction readNextToken(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let position = start;\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position); // SourceCharacter\n\n switch (code) {\n // Ignored ::\n // - UnicodeBOM\n // - WhiteSpace\n // - LineTerminator\n // - Comment\n // - Comma\n //\n // UnicodeBOM :: \"Byte Order Mark (U+FEFF)\"\n //\n // WhiteSpace ::\n // - \"Horizontal Tab (U+0009)\"\n // - \"Space (U+0020)\"\n //\n // Comma :: ,\n case 0xfeff: // \n\n case 0x0009: // \\t\n\n case 0x0020: // \n\n case 0x002c:\n // ,\n ++position;\n continue;\n // LineTerminator ::\n // - \"New Line (U+000A)\"\n // - \"Carriage Return (U+000D)\" [lookahead != \"New Line (U+000A)\"]\n // - \"Carriage Return (U+000D)\" \"New Line (U+000A)\"\n\n case 0x000a:\n // \\n\n ++position;\n ++lexer.line;\n lexer.lineStart = position;\n continue;\n\n case 0x000d:\n // \\r\n if (body.charCodeAt(position + 1) === 0x000a) {\n position += 2;\n } else {\n ++position;\n }\n\n ++lexer.line;\n lexer.lineStart = position;\n continue;\n // Comment\n\n case 0x0023:\n // #\n return readComment(lexer, position);\n // Token ::\n // - Punctuator\n // - Name\n // - IntValue\n // - FloatValue\n // - StringValue\n //\n // Punctuator :: one of ! $ & ( ) ... : = @ [ ] { | }\n\n case 0x0021:\n // !\n return createToken(lexer, TokenKind.BANG, position, position + 1);\n\n case 0x0024:\n // $\n return createToken(lexer, TokenKind.DOLLAR, position, position + 1);\n\n case 0x0026:\n // &\n return createToken(lexer, TokenKind.AMP, position, position + 1);\n\n case 0x0028:\n // (\n return createToken(lexer, TokenKind.PAREN_L, position, position + 1);\n\n case 0x0029:\n // )\n return createToken(lexer, TokenKind.PAREN_R, position, position + 1);\n\n case 0x002e:\n // .\n if (\n body.charCodeAt(position + 1) === 0x002e &&\n body.charCodeAt(position + 2) === 0x002e\n ) {\n return createToken(lexer, TokenKind.SPREAD, position, position + 3);\n }\n\n break;\n\n case 0x003a:\n // :\n return createToken(lexer, TokenKind.COLON, position, position + 1);\n\n case 0x003d:\n // =\n return createToken(lexer, TokenKind.EQUALS, position, position + 1);\n\n case 0x0040:\n // @\n return createToken(lexer, TokenKind.AT, position, position + 1);\n\n case 0x005b:\n // [\n return createToken(lexer, TokenKind.BRACKET_L, position, position + 1);\n\n case 0x005d:\n // ]\n return createToken(lexer, TokenKind.BRACKET_R, position, position + 1);\n\n case 0x007b:\n // {\n return createToken(lexer, TokenKind.BRACE_L, position, position + 1);\n\n case 0x007c:\n // |\n return createToken(lexer, TokenKind.PIPE, position, position + 1);\n\n case 0x007d:\n // }\n return createToken(lexer, TokenKind.BRACE_R, position, position + 1);\n // StringValue\n\n case 0x0022:\n // \"\n if (\n body.charCodeAt(position + 1) === 0x0022 &&\n body.charCodeAt(position + 2) === 0x0022\n ) {\n return readBlockString(lexer, position);\n }\n\n return readString(lexer, position);\n } // IntValue | FloatValue (Digit | -)\n\n if (isDigit$1(code) || code === 0x002d) {\n return readNumber(lexer, position, code);\n } // Name\n\n if (isNameStart(code)) {\n return readName(lexer, position);\n }\n\n throw syntaxError(\n lexer.source,\n position,\n code === 0x0027\n ? 'Unexpected single quote character (\\'), did you mean to use a double quote (\")?'\n : isUnicodeScalarValue(code) || isSupplementaryCodePoint(body, position)\n ? `Unexpected character: ${printCodePointAt(lexer, position)}.`\n : `Invalid character: ${printCodePointAt(lexer, position)}.`,\n );\n }\n\n return createToken(lexer, TokenKind.EOF, bodyLength, bodyLength);\n}\n/**\n * Reads a comment token from the source file.\n *\n * ```\n * Comment :: # CommentChar* [lookahead != CommentChar]\n *\n * CommentChar :: SourceCharacter but not LineTerminator\n * ```\n */\n\nfunction readComment(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let position = start + 1;\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position); // LineTerminator (\\n | \\r)\n\n if (code === 0x000a || code === 0x000d) {\n break;\n } // SourceCharacter\n\n if (isUnicodeScalarValue(code)) {\n ++position;\n } else if (isSupplementaryCodePoint(body, position)) {\n position += 2;\n } else {\n break;\n }\n }\n\n return createToken(\n lexer,\n TokenKind.COMMENT,\n start,\n position,\n body.slice(start + 1, position),\n );\n}\n/**\n * Reads a number token from the source file, either a FloatValue or an IntValue\n * depending on whether a FractionalPart or ExponentPart is encountered.\n *\n * ```\n * IntValue :: IntegerPart [lookahead != {Digit, `.`, NameStart}]\n *\n * IntegerPart ::\n * - NegativeSign? 0\n * - NegativeSign? NonZeroDigit Digit*\n *\n * NegativeSign :: -\n *\n * NonZeroDigit :: Digit but not `0`\n *\n * FloatValue ::\n * - IntegerPart FractionalPart ExponentPart [lookahead != {Digit, `.`, NameStart}]\n * - IntegerPart FractionalPart [lookahead != {Digit, `.`, NameStart}]\n * - IntegerPart ExponentPart [lookahead != {Digit, `.`, NameStart}]\n *\n * FractionalPart :: . Digit+\n *\n * ExponentPart :: ExponentIndicator Sign? Digit+\n *\n * ExponentIndicator :: one of `e` `E`\n *\n * Sign :: one of + -\n * ```\n */\n\nfunction readNumber(lexer, start, firstCode) {\n const body = lexer.source.body;\n let position = start;\n let code = firstCode;\n let isFloat = false; // NegativeSign (-)\n\n if (code === 0x002d) {\n code = body.charCodeAt(++position);\n } // Zero (0)\n\n if (code === 0x0030) {\n code = body.charCodeAt(++position);\n\n if (isDigit$1(code)) {\n throw syntaxError(\n lexer.source,\n position,\n `Invalid number, unexpected digit after 0: ${printCodePointAt(\n lexer,\n position,\n )}.`,\n );\n }\n } else {\n position = readDigits(lexer, position, code);\n code = body.charCodeAt(position);\n } // Full stop (.)\n\n if (code === 0x002e) {\n isFloat = true;\n code = body.charCodeAt(++position);\n position = readDigits(lexer, position, code);\n code = body.charCodeAt(position);\n } // E e\n\n if (code === 0x0045 || code === 0x0065) {\n isFloat = true;\n code = body.charCodeAt(++position); // + -\n\n if (code === 0x002b || code === 0x002d) {\n code = body.charCodeAt(++position);\n }\n\n position = readDigits(lexer, position, code);\n code = body.charCodeAt(position);\n } // Numbers cannot be followed by . or NameStart\n\n if (code === 0x002e || isNameStart(code)) {\n throw syntaxError(\n lexer.source,\n position,\n `Invalid number, expected digit but got: ${printCodePointAt(\n lexer,\n position,\n )}.`,\n );\n }\n\n return createToken(\n lexer,\n isFloat ? TokenKind.FLOAT : TokenKind.INT,\n start,\n position,\n body.slice(start, position),\n );\n}\n/**\n * Returns the new position in the source after reading one or more digits.\n */\n\nfunction readDigits(lexer, start, firstCode) {\n if (!isDigit$1(firstCode)) {\n throw syntaxError(\n lexer.source,\n start,\n `Invalid number, expected digit but got: ${printCodePointAt(\n lexer,\n start,\n )}.`,\n );\n }\n\n const body = lexer.source.body;\n let position = start + 1; // +1 to skip first firstCode\n\n while (isDigit$1(body.charCodeAt(position))) {\n ++position;\n }\n\n return position;\n}\n/**\n * Reads a single-quote string token from the source file.\n *\n * ```\n * StringValue ::\n * - `\"\"` [lookahead != `\"`]\n * - `\"` StringCharacter+ `\"`\n *\n * StringCharacter ::\n * - SourceCharacter but not `\"` or `\\` or LineTerminator\n * - `\\u` EscapedUnicode\n * - `\\` EscapedCharacter\n *\n * EscapedUnicode ::\n * - `{` HexDigit+ `}`\n * - HexDigit HexDigit HexDigit HexDigit\n *\n * EscapedCharacter :: one of `\"` `\\` `/` `b` `f` `n` `r` `t`\n * ```\n */\n\nfunction readString(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let position = start + 1;\n let chunkStart = position;\n let value = '';\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position); // Closing Quote (\")\n\n if (code === 0x0022) {\n value += body.slice(chunkStart, position);\n return createToken(lexer, TokenKind.STRING, start, position + 1, value);\n } // Escape Sequence (\\)\n\n if (code === 0x005c) {\n value += body.slice(chunkStart, position);\n const escape =\n body.charCodeAt(position + 1) === 0x0075 // u\n ? body.charCodeAt(position + 2) === 0x007b // {\n ? readEscapedUnicodeVariableWidth(lexer, position)\n : readEscapedUnicodeFixedWidth(lexer, position)\n : readEscapedCharacter(lexer, position);\n value += escape.value;\n position += escape.size;\n chunkStart = position;\n continue;\n } // LineTerminator (\\n | \\r)\n\n if (code === 0x000a || code === 0x000d) {\n break;\n } // SourceCharacter\n\n if (isUnicodeScalarValue(code)) {\n ++position;\n } else if (isSupplementaryCodePoint(body, position)) {\n position += 2;\n } else {\n throw syntaxError(\n lexer.source,\n position,\n `Invalid character within String: ${printCodePointAt(\n lexer,\n position,\n )}.`,\n );\n }\n }\n\n throw syntaxError(lexer.source, position, 'Unterminated string.');\n} // The string value and lexed size of an escape sequence.\n\nfunction readEscapedUnicodeVariableWidth(lexer, position) {\n const body = lexer.source.body;\n let point = 0;\n let size = 3; // Cannot be larger than 12 chars (\\u{00000000}).\n\n while (size < 12) {\n const code = body.charCodeAt(position + size++); // Closing Brace (})\n\n if (code === 0x007d) {\n // Must be at least 5 chars (\\u{0}) and encode a Unicode scalar value.\n if (size < 5 || !isUnicodeScalarValue(point)) {\n break;\n }\n\n return {\n value: String.fromCodePoint(point),\n size,\n };\n } // Append this hex digit to the code point.\n\n point = (point << 4) | readHexDigit(code);\n\n if (point < 0) {\n break;\n }\n }\n\n throw syntaxError(\n lexer.source,\n position,\n `Invalid Unicode escape sequence: \"${body.slice(\n position,\n position + size,\n )}\".`,\n );\n}\n\nfunction readEscapedUnicodeFixedWidth(lexer, position) {\n const body = lexer.source.body;\n const code = read16BitHexCode(body, position + 2);\n\n if (isUnicodeScalarValue(code)) {\n return {\n value: String.fromCodePoint(code),\n size: 6,\n };\n } // GraphQL allows JSON-style surrogate pair escape sequences, but only when\n // a valid pair is formed.\n\n if (isLeadingSurrogate(code)) {\n // \\u\n if (\n body.charCodeAt(position + 6) === 0x005c &&\n body.charCodeAt(position + 7) === 0x0075\n ) {\n const trailingCode = read16BitHexCode(body, position + 8);\n\n if (isTrailingSurrogate(trailingCode)) {\n // JavaScript defines strings as a sequence of UTF-16 code units and\n // encodes Unicode code points above U+FFFF using a surrogate pair of\n // code units. Since this is a surrogate pair escape sequence, just\n // include both codes into the JavaScript string value. Had JavaScript\n // not been internally based on UTF-16, then this surrogate pair would\n // be decoded to retrieve the supplementary code point.\n return {\n value: String.fromCodePoint(code, trailingCode),\n size: 12,\n };\n }\n }\n }\n\n throw syntaxError(\n lexer.source,\n position,\n `Invalid Unicode escape sequence: \"${body.slice(position, position + 6)}\".`,\n );\n}\n/**\n * Reads four hexadecimal characters and returns the positive integer that 16bit\n * hexadecimal string represents. For example, \"000f\" will return 15, and \"dead\"\n * will return 57005.\n *\n * Returns a negative number if any char was not a valid hexadecimal digit.\n */\n\nfunction read16BitHexCode(body, position) {\n // readHexDigit() returns -1 on error. ORing a negative value with any other\n // value always produces a negative value.\n return (\n (readHexDigit(body.charCodeAt(position)) << 12) |\n (readHexDigit(body.charCodeAt(position + 1)) << 8) |\n (readHexDigit(body.charCodeAt(position + 2)) << 4) |\n readHexDigit(body.charCodeAt(position + 3))\n );\n}\n/**\n * Reads a hexadecimal character and returns its positive integer value (0-15).\n *\n * '0' becomes 0, '9' becomes 9\n * 'A' becomes 10, 'F' becomes 15\n * 'a' becomes 10, 'f' becomes 15\n *\n * Returns -1 if the provided character code was not a valid hexadecimal digit.\n *\n * HexDigit :: one of\n * - `0` `1` `2` `3` `4` `5` `6` `7` `8` `9`\n * - `A` `B` `C` `D` `E` `F`\n * - `a` `b` `c` `d` `e` `f`\n */\n\nfunction readHexDigit(code) {\n return code >= 0x0030 && code <= 0x0039 // 0-9\n ? code - 0x0030\n : code >= 0x0041 && code <= 0x0046 // A-F\n ? code - 0x0037\n : code >= 0x0061 && code <= 0x0066 // a-f\n ? code - 0x0057\n : -1;\n}\n/**\n * | Escaped Character | Code Point | Character Name |\n * | ----------------- | ---------- | ---------------------------- |\n * | `\"` | U+0022 | double quote |\n * | `\\` | U+005C | reverse solidus (back slash) |\n * | `/` | U+002F | solidus (forward slash) |\n * | `b` | U+0008 | backspace |\n * | `f` | U+000C | form feed |\n * | `n` | U+000A | line feed (new line) |\n * | `r` | U+000D | carriage return |\n * | `t` | U+0009 | horizontal tab |\n */\n\nfunction readEscapedCharacter(lexer, position) {\n const body = lexer.source.body;\n const code = body.charCodeAt(position + 1);\n\n switch (code) {\n case 0x0022:\n // \"\n return {\n value: '\\u0022',\n size: 2,\n };\n\n case 0x005c:\n // \\\n return {\n value: '\\u005c',\n size: 2,\n };\n\n case 0x002f:\n // /\n return {\n value: '\\u002f',\n size: 2,\n };\n\n case 0x0062:\n // b\n return {\n value: '\\u0008',\n size: 2,\n };\n\n case 0x0066:\n // f\n return {\n value: '\\u000c',\n size: 2,\n };\n\n case 0x006e:\n // n\n return {\n value: '\\u000a',\n size: 2,\n };\n\n case 0x0072:\n // r\n return {\n value: '\\u000d',\n size: 2,\n };\n\n case 0x0074:\n // t\n return {\n value: '\\u0009',\n size: 2,\n };\n }\n\n throw syntaxError(\n lexer.source,\n position,\n `Invalid character escape sequence: \"${body.slice(\n position,\n position + 2,\n )}\".`,\n );\n}\n/**\n * Reads a block string token from the source file.\n *\n * ```\n * StringValue ::\n * - `\"\"\"` BlockStringCharacter* `\"\"\"`\n *\n * BlockStringCharacter ::\n * - SourceCharacter but not `\"\"\"` or `\\\"\"\"`\n * - `\\\"\"\"`\n * ```\n */\n\nfunction readBlockString(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let lineStart = lexer.lineStart;\n let position = start + 3;\n let chunkStart = position;\n let currentLine = '';\n const blockLines = [];\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position); // Closing Triple-Quote (\"\"\")\n\n if (\n code === 0x0022 &&\n body.charCodeAt(position + 1) === 0x0022 &&\n body.charCodeAt(position + 2) === 0x0022\n ) {\n currentLine += body.slice(chunkStart, position);\n blockLines.push(currentLine);\n const token = createToken(\n lexer,\n TokenKind.BLOCK_STRING,\n start,\n position + 3, // Return a string of the lines joined with U+000A.\n dedentBlockStringLines(blockLines).join('\\n'),\n );\n lexer.line += blockLines.length - 1;\n lexer.lineStart = lineStart;\n return token;\n } // Escaped Triple-Quote (\\\"\"\")\n\n if (\n code === 0x005c &&\n body.charCodeAt(position + 1) === 0x0022 &&\n body.charCodeAt(position + 2) === 0x0022 &&\n body.charCodeAt(position + 3) === 0x0022\n ) {\n currentLine += body.slice(chunkStart, position);\n chunkStart = position + 1; // skip only slash\n\n position += 4;\n continue;\n } // LineTerminator\n\n if (code === 0x000a || code === 0x000d) {\n currentLine += body.slice(chunkStart, position);\n blockLines.push(currentLine);\n\n if (code === 0x000d && body.charCodeAt(position + 1) === 0x000a) {\n position += 2;\n } else {\n ++position;\n }\n\n currentLine = '';\n chunkStart = position;\n lineStart = position;\n continue;\n } // SourceCharacter\n\n if (isUnicodeScalarValue(code)) {\n ++position;\n } else if (isSupplementaryCodePoint(body, position)) {\n position += 2;\n } else {\n throw syntaxError(\n lexer.source,\n position,\n `Invalid character within String: ${printCodePointAt(\n lexer,\n position,\n )}.`,\n );\n }\n }\n\n throw syntaxError(lexer.source, position, 'Unterminated string.');\n}\n/**\n * Reads an alphanumeric + underscore name from the source.\n *\n * ```\n * Name ::\n * - NameStart NameContinue* [lookahead != NameContinue]\n * ```\n */\n\nfunction readName(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let position = start + 1;\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position);\n\n if (isNameContinue(code)) {\n ++position;\n } else {\n break;\n }\n }\n\n return createToken(\n lexer,\n TokenKind.NAME,\n start,\n position,\n body.slice(start, position),\n );\n}\n\nfunction devAssert(condition, message) {\n const booleanCondition = Boolean(condition);\n\n if (!booleanCondition) {\n throw new Error(message);\n }\n}\n\nconst MAX_ARRAY_LENGTH = 10;\nconst MAX_RECURSIVE_DEPTH$1 = 2;\n/**\n * Used to print values in error messages.\n */\n\nfunction inspect$1(value) {\n return formatValue$1(value, []);\n}\n\nfunction formatValue$1(value, seenValues) {\n switch (typeof value) {\n case 'string':\n return JSON.stringify(value);\n\n case 'function':\n return value.name ? `[function ${value.name}]` : '[function]';\n\n case 'object':\n return formatObjectValue$1(value, seenValues);\n\n default:\n return String(value);\n }\n}\n\nfunction formatObjectValue$1(value, previouslySeenValues) {\n if (value === null) {\n return 'null';\n }\n\n if (previouslySeenValues.includes(value)) {\n return '[Circular]';\n }\n\n const seenValues = [...previouslySeenValues, value];\n\n if (isJSONable$1(value)) {\n const jsonValue = value.toJSON(); // check for infinite recursion\n\n if (jsonValue !== value) {\n return typeof jsonValue === 'string'\n ? jsonValue\n : formatValue$1(jsonValue, seenValues);\n }\n } else if (Array.isArray(value)) {\n return formatArray$1(value, seenValues);\n }\n\n return formatObject$1(value, seenValues);\n}\n\nfunction isJSONable$1(value) {\n return typeof value.toJSON === 'function';\n}\n\nfunction formatObject$1(object, seenValues) {\n const entries = Object.entries(object);\n\n if (entries.length === 0) {\n return '{}';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH$1) {\n return '[' + getObjectTag$1(object) + ']';\n }\n\n const properties = entries.map(\n ([key, value]) => key + ': ' + formatValue$1(value, seenValues),\n );\n return '{ ' + properties.join(', ') + ' }';\n}\n\nfunction formatArray$1(array, seenValues) {\n if (array.length === 0) {\n return '[]';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH$1) {\n return '[Array]';\n }\n\n const len = Math.min(MAX_ARRAY_LENGTH, array.length);\n const remaining = array.length - len;\n const items = [];\n\n for (let i = 0; i < len; ++i) {\n items.push(formatValue$1(array[i], seenValues));\n }\n\n if (remaining === 1) {\n items.push('... 1 more item');\n } else if (remaining > 1) {\n items.push(`... ${remaining} more items`);\n }\n\n return '[' + items.join(', ') + ']';\n}\n\nfunction getObjectTag$1(object) {\n const tag = Object.prototype.toString\n .call(object)\n .replace(/^\\[object /, '')\n .replace(/]$/, '');\n\n if (tag === 'Object' && typeof object.constructor === 'function') {\n const name = object.constructor.name;\n\n if (typeof name === 'string' && name !== '') {\n return name;\n }\n }\n\n return tag;\n}\n\n/**\n * A replacement for instanceof which includes an error warning when multi-realm\n * constructors are detected.\n * See: https://expressjs.com/en/advanced/best-practice-performance.html#set-node_env-to-production\n * See: https://webpack.js.org/guides/production/\n */\n\nconst instanceOf =\n /* c8 ignore next 6 */\n // FIXME: https://github.com/graphql/graphql-js/issues/2317\n // eslint-disable-next-line no-undef\n process.env.NODE_ENV === 'production'\n ? function instanceOf(value, constructor) {\n return value instanceof constructor;\n }\n : function instanceOf(value, constructor) {\n if (value instanceof constructor) {\n return true;\n }\n\n if (typeof value === 'object' && value !== null) {\n var _value$constructor;\n\n // Prefer Symbol.toStringTag since it is immune to minification.\n const className = constructor.prototype[Symbol.toStringTag];\n const valueClassName = // We still need to support constructor's name to detect conflicts with older versions of this library.\n Symbol.toStringTag in value // @ts-expect-error TS bug see, https://github.com/microsoft/TypeScript/issues/38009\n ? value[Symbol.toStringTag]\n : (_value$constructor = value.constructor) === null ||\n _value$constructor === void 0\n ? void 0\n : _value$constructor.name;\n\n if (className === valueClassName) {\n const stringifiedValue = inspect$1(value);\n throw new Error(`Cannot use ${className} \"${stringifiedValue}\" from another module or realm.\n\nEnsure that there is only one instance of \"graphql\" in the node_modules\ndirectory. If different versions of \"graphql\" are the dependencies of other\nrelied on modules, use \"resolutions\" to ensure only one version is installed.\n\nhttps://yarnpkg.com/en/docs/selective-version-resolutions\n\nDuplicate \"graphql\" modules cannot be used at the same time since different\nversions may have different capabilities and behavior. The data from one\nversion used in the function from another could produce confusing and\nspurious results.`);\n }\n }\n\n return false;\n };\n\n/**\n * A representation of source input to GraphQL. The `name` and `locationOffset` parameters are\n * optional, but they are useful for clients who store GraphQL documents in source files.\n * For example, if the GraphQL input starts at line 40 in a file named `Foo.graphql`, it might\n * be useful for `name` to be `\"Foo.graphql\"` and location to be `{ line: 40, column: 1 }`.\n * The `line` and `column` properties in `locationOffset` are 1-indexed.\n */\nclass Source {\n constructor(\n body,\n name = 'GraphQL request',\n locationOffset = {\n line: 1,\n column: 1,\n },\n ) {\n typeof body === 'string' ||\n devAssert(false, `Body must be a string. Received: ${inspect$1(body)}.`);\n this.body = body;\n this.name = name;\n this.locationOffset = locationOffset;\n this.locationOffset.line > 0 ||\n devAssert(\n false,\n 'line in locationOffset is 1-indexed and must be positive.',\n );\n this.locationOffset.column > 0 ||\n devAssert(\n false,\n 'column in locationOffset is 1-indexed and must be positive.',\n );\n }\n\n get [Symbol.toStringTag]() {\n return 'Source';\n }\n}\n/**\n * Test if the given value is a Source object.\n *\n * @internal\n */\n\nfunction isSource(source) {\n return instanceOf(source, Source);\n}\n\n/**\n * Configuration options to control parser behavior\n */\n\n/**\n * Given a GraphQL source, parses it into a Document.\n * Throws GraphQLError if a syntax error is encountered.\n */\nfunction parse(source, options) {\n const parser = new Parser(source, options);\n return parser.parseDocument();\n}\n/**\n * Given a string containing a GraphQL value (ex. `[42]`), parse the AST for\n * that value.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Values directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: valueFromAST().\n */\n\nfunction parseValue(source, options) {\n const parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n const value = parser.parseValueLiteral(false);\n parser.expectToken(TokenKind.EOF);\n return value;\n}\n/**\n * Similar to parseValue(), but raises a parse error if it encounters a\n * variable. The return type will be a constant value.\n */\n\nfunction parseConstValue(source, options) {\n const parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n const value = parser.parseConstValueLiteral();\n parser.expectToken(TokenKind.EOF);\n return value;\n}\n/**\n * Given a string containing a GraphQL Type (ex. `[Int!]`), parse the AST for\n * that type.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Types directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: typeFromAST().\n */\n\nfunction parseType(source, options) {\n const parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n const type = parser.parseTypeReference();\n parser.expectToken(TokenKind.EOF);\n return type;\n}\n/**\n * This class is exported only to assist people in implementing their own parsers\n * without duplicating too much code and should be used only as last resort for cases\n * such as experimental syntax or if certain features could not be contributed upstream.\n *\n * It is still part of the internal API and is versioned, so any changes to it are never\n * considered breaking changes. If you still need to support multiple versions of the\n * library, please use the `versionInfo` variable for version detection.\n *\n * @internal\n */\n\nclass Parser {\n constructor(source, options = {}) {\n const sourceObj = isSource(source) ? source : new Source(source);\n this._lexer = new Lexer(sourceObj);\n this._options = options;\n this._tokenCounter = 0;\n }\n /**\n * Converts a name lex token into a name parse node.\n */\n\n parseName() {\n const token = this.expectToken(TokenKind.NAME);\n return this.node(token, {\n kind: Kind.NAME,\n value: token.value,\n });\n } // Implements the parsing rules in the Document section.\n\n /**\n * Document : Definition+\n */\n\n parseDocument() {\n return this.node(this._lexer.token, {\n kind: Kind.DOCUMENT,\n definitions: this.many(\n TokenKind.SOF,\n this.parseDefinition,\n TokenKind.EOF,\n ),\n });\n }\n /**\n * Definition :\n * - ExecutableDefinition\n * - TypeSystemDefinition\n * - TypeSystemExtension\n *\n * ExecutableDefinition :\n * - OperationDefinition\n * - FragmentDefinition\n *\n * TypeSystemDefinition :\n * - SchemaDefinition\n * - TypeDefinition\n * - DirectiveDefinition\n *\n * TypeDefinition :\n * - ScalarTypeDefinition\n * - ObjectTypeDefinition\n * - InterfaceTypeDefinition\n * - UnionTypeDefinition\n * - EnumTypeDefinition\n * - InputObjectTypeDefinition\n */\n\n parseDefinition() {\n if (this.peek(TokenKind.BRACE_L)) {\n return this.parseOperationDefinition();\n } // Many definitions begin with a description and require a lookahead.\n\n const hasDescription = this.peekDescription();\n const keywordToken = hasDescription\n ? this._lexer.lookahead()\n : this._lexer.token;\n\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaDefinition();\n\n case 'scalar':\n return this.parseScalarTypeDefinition();\n\n case 'type':\n return this.parseObjectTypeDefinition();\n\n case 'interface':\n return this.parseInterfaceTypeDefinition();\n\n case 'union':\n return this.parseUnionTypeDefinition();\n\n case 'enum':\n return this.parseEnumTypeDefinition();\n\n case 'input':\n return this.parseInputObjectTypeDefinition();\n\n case 'directive':\n return this.parseDirectiveDefinition();\n }\n\n if (hasDescription) {\n throw syntaxError(\n this._lexer.source,\n this._lexer.token.start,\n 'Unexpected description, descriptions are supported only on type definitions.',\n );\n }\n\n switch (keywordToken.value) {\n case 'query':\n case 'mutation':\n case 'subscription':\n return this.parseOperationDefinition();\n\n case 'fragment':\n return this.parseFragmentDefinition();\n\n case 'extend':\n return this.parseTypeSystemExtension();\n }\n }\n\n throw this.unexpected(keywordToken);\n } // Implements the parsing rules in the Operations section.\n\n /**\n * OperationDefinition :\n * - SelectionSet\n * - OperationType Name? VariableDefinitions? Directives? SelectionSet\n */\n\n parseOperationDefinition() {\n const start = this._lexer.token;\n\n if (this.peek(TokenKind.BRACE_L)) {\n return this.node(start, {\n kind: Kind.OPERATION_DEFINITION,\n operation: OperationTypeNode.QUERY,\n name: undefined,\n variableDefinitions: [],\n directives: [],\n selectionSet: this.parseSelectionSet(),\n });\n }\n\n const operation = this.parseOperationType();\n let name;\n\n if (this.peek(TokenKind.NAME)) {\n name = this.parseName();\n }\n\n return this.node(start, {\n kind: Kind.OPERATION_DEFINITION,\n operation,\n name,\n variableDefinitions: this.parseVariableDefinitions(),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n /**\n * OperationType : one of query mutation subscription\n */\n\n parseOperationType() {\n const operationToken = this.expectToken(TokenKind.NAME);\n\n switch (operationToken.value) {\n case 'query':\n return OperationTypeNode.QUERY;\n\n case 'mutation':\n return OperationTypeNode.MUTATION;\n\n case 'subscription':\n return OperationTypeNode.SUBSCRIPTION;\n }\n\n throw this.unexpected(operationToken);\n }\n /**\n * VariableDefinitions : ( VariableDefinition+ )\n */\n\n parseVariableDefinitions() {\n return this.optionalMany(\n TokenKind.PAREN_L,\n this.parseVariableDefinition,\n TokenKind.PAREN_R,\n );\n }\n /**\n * VariableDefinition : Variable : Type DefaultValue? Directives[Const]?\n */\n\n parseVariableDefinition() {\n return this.node(this._lexer.token, {\n kind: Kind.VARIABLE_DEFINITION,\n variable: this.parseVariable(),\n type: (this.expectToken(TokenKind.COLON), this.parseTypeReference()),\n defaultValue: this.expectOptionalToken(TokenKind.EQUALS)\n ? this.parseConstValueLiteral()\n : undefined,\n directives: this.parseConstDirectives(),\n });\n }\n /**\n * Variable : $ Name\n */\n\n parseVariable() {\n const start = this._lexer.token;\n this.expectToken(TokenKind.DOLLAR);\n return this.node(start, {\n kind: Kind.VARIABLE,\n name: this.parseName(),\n });\n }\n /**\n * ```\n * SelectionSet : { Selection+ }\n * ```\n */\n\n parseSelectionSet() {\n return this.node(this._lexer.token, {\n kind: Kind.SELECTION_SET,\n selections: this.many(\n TokenKind.BRACE_L,\n this.parseSelection,\n TokenKind.BRACE_R,\n ),\n });\n }\n /**\n * Selection :\n * - Field\n * - FragmentSpread\n * - InlineFragment\n */\n\n parseSelection() {\n return this.peek(TokenKind.SPREAD)\n ? this.parseFragment()\n : this.parseField();\n }\n /**\n * Field : Alias? Name Arguments? Directives? SelectionSet?\n *\n * Alias : Name :\n */\n\n parseField() {\n const start = this._lexer.token;\n const nameOrAlias = this.parseName();\n let alias;\n let name;\n\n if (this.expectOptionalToken(TokenKind.COLON)) {\n alias = nameOrAlias;\n name = this.parseName();\n } else {\n name = nameOrAlias;\n }\n\n return this.node(start, {\n kind: Kind.FIELD,\n alias,\n name,\n arguments: this.parseArguments(false),\n directives: this.parseDirectives(false),\n selectionSet: this.peek(TokenKind.BRACE_L)\n ? this.parseSelectionSet()\n : undefined,\n });\n }\n /**\n * Arguments[Const] : ( Argument[?Const]+ )\n */\n\n parseArguments(isConst) {\n const item = isConst ? this.parseConstArgument : this.parseArgument;\n return this.optionalMany(TokenKind.PAREN_L, item, TokenKind.PAREN_R);\n }\n /**\n * Argument[Const] : Name : Value[?Const]\n */\n\n parseArgument(isConst = false) {\n const start = this._lexer.token;\n const name = this.parseName();\n this.expectToken(TokenKind.COLON);\n return this.node(start, {\n kind: Kind.ARGUMENT,\n name,\n value: this.parseValueLiteral(isConst),\n });\n }\n\n parseConstArgument() {\n return this.parseArgument(true);\n } // Implements the parsing rules in the Fragments section.\n\n /**\n * Corresponds to both FragmentSpread and InlineFragment in the spec.\n *\n * FragmentSpread : ... FragmentName Directives?\n *\n * InlineFragment : ... TypeCondition? Directives? SelectionSet\n */\n\n parseFragment() {\n const start = this._lexer.token;\n this.expectToken(TokenKind.SPREAD);\n const hasTypeCondition = this.expectOptionalKeyword('on');\n\n if (!hasTypeCondition && this.peek(TokenKind.NAME)) {\n return this.node(start, {\n kind: Kind.FRAGMENT_SPREAD,\n name: this.parseFragmentName(),\n directives: this.parseDirectives(false),\n });\n }\n\n return this.node(start, {\n kind: Kind.INLINE_FRAGMENT,\n typeCondition: hasTypeCondition ? this.parseNamedType() : undefined,\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n /**\n * FragmentDefinition :\n * - fragment FragmentName on TypeCondition Directives? SelectionSet\n *\n * TypeCondition : NamedType\n */\n\n parseFragmentDefinition() {\n const start = this._lexer.token;\n this.expectKeyword('fragment'); // Legacy support for defining variables within fragments changes\n // the grammar of FragmentDefinition:\n // - fragment FragmentName VariableDefinitions? on TypeCondition Directives? SelectionSet\n\n if (this._options.allowLegacyFragmentVariables === true) {\n return this.node(start, {\n kind: Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n variableDefinitions: this.parseVariableDefinitions(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n\n return this.node(start, {\n kind: Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n /**\n * FragmentName : Name but not `on`\n */\n\n parseFragmentName() {\n if (this._lexer.token.value === 'on') {\n throw this.unexpected();\n }\n\n return this.parseName();\n } // Implements the parsing rules in the Values section.\n\n /**\n * Value[Const] :\n * - [~Const] Variable\n * - IntValue\n * - FloatValue\n * - StringValue\n * - BooleanValue\n * - NullValue\n * - EnumValue\n * - ListValue[?Const]\n * - ObjectValue[?Const]\n *\n * BooleanValue : one of `true` `false`\n *\n * NullValue : `null`\n *\n * EnumValue : Name but not `true`, `false` or `null`\n */\n\n parseValueLiteral(isConst) {\n const token = this._lexer.token;\n\n switch (token.kind) {\n case TokenKind.BRACKET_L:\n return this.parseList(isConst);\n\n case TokenKind.BRACE_L:\n return this.parseObject(isConst);\n\n case TokenKind.INT:\n this.advanceLexer();\n return this.node(token, {\n kind: Kind.INT,\n value: token.value,\n });\n\n case TokenKind.FLOAT:\n this.advanceLexer();\n return this.node(token, {\n kind: Kind.FLOAT,\n value: token.value,\n });\n\n case TokenKind.STRING:\n case TokenKind.BLOCK_STRING:\n return this.parseStringLiteral();\n\n case TokenKind.NAME:\n this.advanceLexer();\n\n switch (token.value) {\n case 'true':\n return this.node(token, {\n kind: Kind.BOOLEAN,\n value: true,\n });\n\n case 'false':\n return this.node(token, {\n kind: Kind.BOOLEAN,\n value: false,\n });\n\n case 'null':\n return this.node(token, {\n kind: Kind.NULL,\n });\n\n default:\n return this.node(token, {\n kind: Kind.ENUM,\n value: token.value,\n });\n }\n\n case TokenKind.DOLLAR:\n if (isConst) {\n this.expectToken(TokenKind.DOLLAR);\n\n if (this._lexer.token.kind === TokenKind.NAME) {\n const varName = this._lexer.token.value;\n throw syntaxError(\n this._lexer.source,\n token.start,\n `Unexpected variable \"$${varName}\" in constant value.`,\n );\n } else {\n throw this.unexpected(token);\n }\n }\n\n return this.parseVariable();\n\n default:\n throw this.unexpected();\n }\n }\n\n parseConstValueLiteral() {\n return this.parseValueLiteral(true);\n }\n\n parseStringLiteral() {\n const token = this._lexer.token;\n this.advanceLexer();\n return this.node(token, {\n kind: Kind.STRING,\n value: token.value,\n block: token.kind === TokenKind.BLOCK_STRING,\n });\n }\n /**\n * ListValue[Const] :\n * - [ ]\n * - [ Value[?Const]+ ]\n */\n\n parseList(isConst) {\n const item = () => this.parseValueLiteral(isConst);\n\n return this.node(this._lexer.token, {\n kind: Kind.LIST,\n values: this.any(TokenKind.BRACKET_L, item, TokenKind.BRACKET_R),\n });\n }\n /**\n * ```\n * ObjectValue[Const] :\n * - { }\n * - { ObjectField[?Const]+ }\n * ```\n */\n\n parseObject(isConst) {\n const item = () => this.parseObjectField(isConst);\n\n return this.node(this._lexer.token, {\n kind: Kind.OBJECT,\n fields: this.any(TokenKind.BRACE_L, item, TokenKind.BRACE_R),\n });\n }\n /**\n * ObjectField[Const] : Name : Value[?Const]\n */\n\n parseObjectField(isConst) {\n const start = this._lexer.token;\n const name = this.parseName();\n this.expectToken(TokenKind.COLON);\n return this.node(start, {\n kind: Kind.OBJECT_FIELD,\n name,\n value: this.parseValueLiteral(isConst),\n });\n } // Implements the parsing rules in the Directives section.\n\n /**\n * Directives[Const] : Directive[?Const]+\n */\n\n parseDirectives(isConst) {\n const directives = [];\n\n while (this.peek(TokenKind.AT)) {\n directives.push(this.parseDirective(isConst));\n }\n\n return directives;\n }\n\n parseConstDirectives() {\n return this.parseDirectives(true);\n }\n /**\n * ```\n * Directive[Const] : @ Name Arguments[?Const]?\n * ```\n */\n\n parseDirective(isConst) {\n const start = this._lexer.token;\n this.expectToken(TokenKind.AT);\n return this.node(start, {\n kind: Kind.DIRECTIVE,\n name: this.parseName(),\n arguments: this.parseArguments(isConst),\n });\n } // Implements the parsing rules in the Types section.\n\n /**\n * Type :\n * - NamedType\n * - ListType\n * - NonNullType\n */\n\n parseTypeReference() {\n const start = this._lexer.token;\n let type;\n\n if (this.expectOptionalToken(TokenKind.BRACKET_L)) {\n const innerType = this.parseTypeReference();\n this.expectToken(TokenKind.BRACKET_R);\n type = this.node(start, {\n kind: Kind.LIST_TYPE,\n type: innerType,\n });\n } else {\n type = this.parseNamedType();\n }\n\n if (this.expectOptionalToken(TokenKind.BANG)) {\n return this.node(start, {\n kind: Kind.NON_NULL_TYPE,\n type,\n });\n }\n\n return type;\n }\n /**\n * NamedType : Name\n */\n\n parseNamedType() {\n return this.node(this._lexer.token, {\n kind: Kind.NAMED_TYPE,\n name: this.parseName(),\n });\n } // Implements the parsing rules in the Type Definition section.\n\n peekDescription() {\n return this.peek(TokenKind.STRING) || this.peek(TokenKind.BLOCK_STRING);\n }\n /**\n * Description : StringValue\n */\n\n parseDescription() {\n if (this.peekDescription()) {\n return this.parseStringLiteral();\n }\n }\n /**\n * ```\n * SchemaDefinition : Description? schema Directives[Const]? { OperationTypeDefinition+ }\n * ```\n */\n\n parseSchemaDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('schema');\n const directives = this.parseConstDirectives();\n const operationTypes = this.many(\n TokenKind.BRACE_L,\n this.parseOperationTypeDefinition,\n TokenKind.BRACE_R,\n );\n return this.node(start, {\n kind: Kind.SCHEMA_DEFINITION,\n description,\n directives,\n operationTypes,\n });\n }\n /**\n * OperationTypeDefinition : OperationType : NamedType\n */\n\n parseOperationTypeDefinition() {\n const start = this._lexer.token;\n const operation = this.parseOperationType();\n this.expectToken(TokenKind.COLON);\n const type = this.parseNamedType();\n return this.node(start, {\n kind: Kind.OPERATION_TYPE_DEFINITION,\n operation,\n type,\n });\n }\n /**\n * ScalarTypeDefinition : Description? scalar Name Directives[Const]?\n */\n\n parseScalarTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('scalar');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n return this.node(start, {\n kind: Kind.SCALAR_TYPE_DEFINITION,\n description,\n name,\n directives,\n });\n }\n /**\n * ObjectTypeDefinition :\n * Description?\n * type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition?\n */\n\n parseObjectTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('type');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n return this.node(start, {\n kind: Kind.OBJECT_TYPE_DEFINITION,\n description,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n /**\n * ImplementsInterfaces :\n * - implements `&`? NamedType\n * - ImplementsInterfaces & NamedType\n */\n\n parseImplementsInterfaces() {\n return this.expectOptionalKeyword('implements')\n ? this.delimitedMany(TokenKind.AMP, this.parseNamedType)\n : [];\n }\n /**\n * ```\n * FieldsDefinition : { FieldDefinition+ }\n * ```\n */\n\n parseFieldsDefinition() {\n return this.optionalMany(\n TokenKind.BRACE_L,\n this.parseFieldDefinition,\n TokenKind.BRACE_R,\n );\n }\n /**\n * FieldDefinition :\n * - Description? Name ArgumentsDefinition? : Type Directives[Const]?\n */\n\n parseFieldDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n const name = this.parseName();\n const args = this.parseArgumentDefs();\n this.expectToken(TokenKind.COLON);\n const type = this.parseTypeReference();\n const directives = this.parseConstDirectives();\n return this.node(start, {\n kind: Kind.FIELD_DEFINITION,\n description,\n name,\n arguments: args,\n type,\n directives,\n });\n }\n /**\n * ArgumentsDefinition : ( InputValueDefinition+ )\n */\n\n parseArgumentDefs() {\n return this.optionalMany(\n TokenKind.PAREN_L,\n this.parseInputValueDef,\n TokenKind.PAREN_R,\n );\n }\n /**\n * InputValueDefinition :\n * - Description? Name : Type DefaultValue? Directives[Const]?\n */\n\n parseInputValueDef() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n const name = this.parseName();\n this.expectToken(TokenKind.COLON);\n const type = this.parseTypeReference();\n let defaultValue;\n\n if (this.expectOptionalToken(TokenKind.EQUALS)) {\n defaultValue = this.parseConstValueLiteral();\n }\n\n const directives = this.parseConstDirectives();\n return this.node(start, {\n kind: Kind.INPUT_VALUE_DEFINITION,\n description,\n name,\n type,\n defaultValue,\n directives,\n });\n }\n /**\n * InterfaceTypeDefinition :\n * - Description? interface Name Directives[Const]? FieldsDefinition?\n */\n\n parseInterfaceTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('interface');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n return this.node(start, {\n kind: Kind.INTERFACE_TYPE_DEFINITION,\n description,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n /**\n * UnionTypeDefinition :\n * - Description? union Name Directives[Const]? UnionMemberTypes?\n */\n\n parseUnionTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('union');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const types = this.parseUnionMemberTypes();\n return this.node(start, {\n kind: Kind.UNION_TYPE_DEFINITION,\n description,\n name,\n directives,\n types,\n });\n }\n /**\n * UnionMemberTypes :\n * - = `|`? NamedType\n * - UnionMemberTypes | NamedType\n */\n\n parseUnionMemberTypes() {\n return this.expectOptionalToken(TokenKind.EQUALS)\n ? this.delimitedMany(TokenKind.PIPE, this.parseNamedType)\n : [];\n }\n /**\n * EnumTypeDefinition :\n * - Description? enum Name Directives[Const]? EnumValuesDefinition?\n */\n\n parseEnumTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('enum');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const values = this.parseEnumValuesDefinition();\n return this.node(start, {\n kind: Kind.ENUM_TYPE_DEFINITION,\n description,\n name,\n directives,\n values,\n });\n }\n /**\n * ```\n * EnumValuesDefinition : { EnumValueDefinition+ }\n * ```\n */\n\n parseEnumValuesDefinition() {\n return this.optionalMany(\n TokenKind.BRACE_L,\n this.parseEnumValueDefinition,\n TokenKind.BRACE_R,\n );\n }\n /**\n * EnumValueDefinition : Description? EnumValue Directives[Const]?\n */\n\n parseEnumValueDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n const name = this.parseEnumValueName();\n const directives = this.parseConstDirectives();\n return this.node(start, {\n kind: Kind.ENUM_VALUE_DEFINITION,\n description,\n name,\n directives,\n });\n }\n /**\n * EnumValue : Name but not `true`, `false` or `null`\n */\n\n parseEnumValueName() {\n if (\n this._lexer.token.value === 'true' ||\n this._lexer.token.value === 'false' ||\n this._lexer.token.value === 'null'\n ) {\n throw syntaxError(\n this._lexer.source,\n this._lexer.token.start,\n `${getTokenDesc(\n this._lexer.token,\n )} is reserved and cannot be used for an enum value.`,\n );\n }\n\n return this.parseName();\n }\n /**\n * InputObjectTypeDefinition :\n * - Description? input Name Directives[Const]? InputFieldsDefinition?\n */\n\n parseInputObjectTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('input');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const fields = this.parseInputFieldsDefinition();\n return this.node(start, {\n kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,\n description,\n name,\n directives,\n fields,\n });\n }\n /**\n * ```\n * InputFieldsDefinition : { InputValueDefinition+ }\n * ```\n */\n\n parseInputFieldsDefinition() {\n return this.optionalMany(\n TokenKind.BRACE_L,\n this.parseInputValueDef,\n TokenKind.BRACE_R,\n );\n }\n /**\n * TypeSystemExtension :\n * - SchemaExtension\n * - TypeExtension\n *\n * TypeExtension :\n * - ScalarTypeExtension\n * - ObjectTypeExtension\n * - InterfaceTypeExtension\n * - UnionTypeExtension\n * - EnumTypeExtension\n * - InputObjectTypeDefinition\n */\n\n parseTypeSystemExtension() {\n const keywordToken = this._lexer.lookahead();\n\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaExtension();\n\n case 'scalar':\n return this.parseScalarTypeExtension();\n\n case 'type':\n return this.parseObjectTypeExtension();\n\n case 'interface':\n return this.parseInterfaceTypeExtension();\n\n case 'union':\n return this.parseUnionTypeExtension();\n\n case 'enum':\n return this.parseEnumTypeExtension();\n\n case 'input':\n return this.parseInputObjectTypeExtension();\n }\n }\n\n throw this.unexpected(keywordToken);\n }\n /**\n * ```\n * SchemaExtension :\n * - extend schema Directives[Const]? { OperationTypeDefinition+ }\n * - extend schema Directives[Const]\n * ```\n */\n\n parseSchemaExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('schema');\n const directives = this.parseConstDirectives();\n const operationTypes = this.optionalMany(\n TokenKind.BRACE_L,\n this.parseOperationTypeDefinition,\n TokenKind.BRACE_R,\n );\n\n if (directives.length === 0 && operationTypes.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.SCHEMA_EXTENSION,\n directives,\n operationTypes,\n });\n }\n /**\n * ScalarTypeExtension :\n * - extend scalar Name Directives[Const]\n */\n\n parseScalarTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('scalar');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n\n if (directives.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.SCALAR_TYPE_EXTENSION,\n name,\n directives,\n });\n }\n /**\n * ObjectTypeExtension :\n * - extend type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend type Name ImplementsInterfaces? Directives[Const]\n * - extend type Name ImplementsInterfaces\n */\n\n parseObjectTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('type');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n\n if (\n interfaces.length === 0 &&\n directives.length === 0 &&\n fields.length === 0\n ) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.OBJECT_TYPE_EXTENSION,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n /**\n * InterfaceTypeExtension :\n * - extend interface Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend interface Name ImplementsInterfaces? Directives[Const]\n * - extend interface Name ImplementsInterfaces\n */\n\n parseInterfaceTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('interface');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n\n if (\n interfaces.length === 0 &&\n directives.length === 0 &&\n fields.length === 0\n ) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.INTERFACE_TYPE_EXTENSION,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n /**\n * UnionTypeExtension :\n * - extend union Name Directives[Const]? UnionMemberTypes\n * - extend union Name Directives[Const]\n */\n\n parseUnionTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('union');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const types = this.parseUnionMemberTypes();\n\n if (directives.length === 0 && types.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.UNION_TYPE_EXTENSION,\n name,\n directives,\n types,\n });\n }\n /**\n * EnumTypeExtension :\n * - extend enum Name Directives[Const]? EnumValuesDefinition\n * - extend enum Name Directives[Const]\n */\n\n parseEnumTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('enum');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const values = this.parseEnumValuesDefinition();\n\n if (directives.length === 0 && values.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.ENUM_TYPE_EXTENSION,\n name,\n directives,\n values,\n });\n }\n /**\n * InputObjectTypeExtension :\n * - extend input Name Directives[Const]? InputFieldsDefinition\n * - extend input Name Directives[Const]\n */\n\n parseInputObjectTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('input');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const fields = this.parseInputFieldsDefinition();\n\n if (directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.INPUT_OBJECT_TYPE_EXTENSION,\n name,\n directives,\n fields,\n });\n }\n /**\n * ```\n * DirectiveDefinition :\n * - Description? directive @ Name ArgumentsDefinition? `repeatable`? on DirectiveLocations\n * ```\n */\n\n parseDirectiveDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('directive');\n this.expectToken(TokenKind.AT);\n const name = this.parseName();\n const args = this.parseArgumentDefs();\n const repeatable = this.expectOptionalKeyword('repeatable');\n this.expectKeyword('on');\n const locations = this.parseDirectiveLocations();\n return this.node(start, {\n kind: Kind.DIRECTIVE_DEFINITION,\n description,\n name,\n arguments: args,\n repeatable,\n locations,\n });\n }\n /**\n * DirectiveLocations :\n * - `|`? DirectiveLocation\n * - DirectiveLocations | DirectiveLocation\n */\n\n parseDirectiveLocations() {\n return this.delimitedMany(TokenKind.PIPE, this.parseDirectiveLocation);\n }\n /*\n * DirectiveLocation :\n * - ExecutableDirectiveLocation\n * - TypeSystemDirectiveLocation\n *\n * ExecutableDirectiveLocation : one of\n * `QUERY`\n * `MUTATION`\n * `SUBSCRIPTION`\n * `FIELD`\n * `FRAGMENT_DEFINITION`\n * `FRAGMENT_SPREAD`\n * `INLINE_FRAGMENT`\n *\n * TypeSystemDirectiveLocation : one of\n * `SCHEMA`\n * `SCALAR`\n * `OBJECT`\n * `FIELD_DEFINITION`\n * `ARGUMENT_DEFINITION`\n * `INTERFACE`\n * `UNION`\n * `ENUM`\n * `ENUM_VALUE`\n * `INPUT_OBJECT`\n * `INPUT_FIELD_DEFINITION`\n */\n\n parseDirectiveLocation() {\n const start = this._lexer.token;\n const name = this.parseName();\n\n if (Object.prototype.hasOwnProperty.call(DirectiveLocation$1, name.value)) {\n return name;\n }\n\n throw this.unexpected(start);\n } // Core parsing utility functions\n\n /**\n * Returns a node that, if configured to do so, sets a \"loc\" field as a\n * location object, used to identify the place in the source that created a\n * given parsed object.\n */\n\n node(startToken, node) {\n if (this._options.noLocation !== true) {\n node.loc = new Location(\n startToken,\n this._lexer.lastToken,\n this._lexer.source,\n );\n }\n\n return node;\n }\n /**\n * Determines if the next token is of a given kind\n */\n\n peek(kind) {\n return this._lexer.token.kind === kind;\n }\n /**\n * If the next token is of the given kind, return that token after advancing the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */\n\n expectToken(kind) {\n const token = this._lexer.token;\n\n if (token.kind === kind) {\n this.advanceLexer();\n return token;\n }\n\n throw syntaxError(\n this._lexer.source,\n token.start,\n `Expected ${getTokenKindDesc(kind)}, found ${getTokenDesc(token)}.`,\n );\n }\n /**\n * If the next token is of the given kind, return \"true\" after advancing the lexer.\n * Otherwise, do not change the parser state and return \"false\".\n */\n\n expectOptionalToken(kind) {\n const token = this._lexer.token;\n\n if (token.kind === kind) {\n this.advanceLexer();\n return true;\n }\n\n return false;\n }\n /**\n * If the next token is a given keyword, advance the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */\n\n expectKeyword(value) {\n const token = this._lexer.token;\n\n if (token.kind === TokenKind.NAME && token.value === value) {\n this.advanceLexer();\n } else {\n throw syntaxError(\n this._lexer.source,\n token.start,\n `Expected \"${value}\", found ${getTokenDesc(token)}.`,\n );\n }\n }\n /**\n * If the next token is a given keyword, return \"true\" after advancing the lexer.\n * Otherwise, do not change the parser state and return \"false\".\n */\n\n expectOptionalKeyword(value) {\n const token = this._lexer.token;\n\n if (token.kind === TokenKind.NAME && token.value === value) {\n this.advanceLexer();\n return true;\n }\n\n return false;\n }\n /**\n * Helper function for creating an error when an unexpected lexed token is encountered.\n */\n\n unexpected(atToken) {\n const token =\n atToken !== null && atToken !== void 0 ? atToken : this._lexer.token;\n return syntaxError(\n this._lexer.source,\n token.start,\n `Unexpected ${getTokenDesc(token)}.`,\n );\n }\n /**\n * Returns a possibly empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n\n any(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n const nodes = [];\n\n while (!this.expectOptionalToken(closeKind)) {\n nodes.push(parseFn.call(this));\n }\n\n return nodes;\n }\n /**\n * Returns a list of parse nodes, determined by the parseFn.\n * It can be empty only if open token is missing otherwise it will always return non-empty list\n * that begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n\n optionalMany(openKind, parseFn, closeKind) {\n if (this.expectOptionalToken(openKind)) {\n const nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n }\n\n return [];\n }\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n\n many(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n const nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n }\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list may begin with a lex token of delimiterKind followed by items separated by lex tokens of tokenKind.\n * Advances the parser to the next lex token after last item in the list.\n */\n\n delimitedMany(delimiterKind, parseFn) {\n this.expectOptionalToken(delimiterKind);\n const nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (this.expectOptionalToken(delimiterKind));\n\n return nodes;\n }\n\n advanceLexer() {\n const { maxTokens } = this._options;\n\n const token = this._lexer.advance();\n\n if (maxTokens !== undefined && token.kind !== TokenKind.EOF) {\n ++this._tokenCounter;\n\n if (this._tokenCounter > maxTokens) {\n throw syntaxError(\n this._lexer.source,\n token.start,\n `Document contains more that ${maxTokens} tokens. Parsing aborted.`,\n );\n }\n }\n }\n}\n/**\n * A helper function to describe a token as a string for debugging.\n */\n\nfunction getTokenDesc(token) {\n const value = token.value;\n return getTokenKindDesc(token.kind) + (value != null ? ` \"${value}\"` : '');\n}\n/**\n * A helper function to describe a token kind as a string for debugging.\n */\n\nfunction getTokenKindDesc(kind) {\n return isPunctuatorTokenKind(kind) ? `\"${kind}\"` : kind;\n}\n\nvar parser = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tparse: parse,\n\tparseValue: parseValue,\n\tparseConstValue: parseConstValue,\n\tparseType: parseType,\n\tParser: Parser\n});\n\nvar require$$1 = /*@__PURE__*/getAugmentedNamespace(parser);\n\n/**\n * Prints a string as a GraphQL StringValue literal. Replaces control characters\n * and excluded characters (\" U+0022 and \\\\ U+005C) with escape sequences.\n */\nfunction printString(str) {\n return `\"${str.replace(escapedRegExp, escapedReplacer)}\"`;\n} // eslint-disable-next-line no-control-regex\n\nconst escapedRegExp = /[\\x00-\\x1f\\x22\\x5c\\x7f-\\x9f]/g;\n\nfunction escapedReplacer(str) {\n return escapeSequences[str.charCodeAt(0)];\n} // prettier-ignore\n\nconst escapeSequences = [\n '\\\\u0000',\n '\\\\u0001',\n '\\\\u0002',\n '\\\\u0003',\n '\\\\u0004',\n '\\\\u0005',\n '\\\\u0006',\n '\\\\u0007',\n '\\\\b',\n '\\\\t',\n '\\\\n',\n '\\\\u000B',\n '\\\\f',\n '\\\\r',\n '\\\\u000E',\n '\\\\u000F',\n '\\\\u0010',\n '\\\\u0011',\n '\\\\u0012',\n '\\\\u0013',\n '\\\\u0014',\n '\\\\u0015',\n '\\\\u0016',\n '\\\\u0017',\n '\\\\u0018',\n '\\\\u0019',\n '\\\\u001A',\n '\\\\u001B',\n '\\\\u001C',\n '\\\\u001D',\n '\\\\u001E',\n '\\\\u001F',\n '',\n '',\n '\\\\\"',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '', // 2F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '', // 3F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '', // 4F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '\\\\\\\\',\n '',\n '',\n '', // 5F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '', // 6F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '\\\\u007F',\n '\\\\u0080',\n '\\\\u0081',\n '\\\\u0082',\n '\\\\u0083',\n '\\\\u0084',\n '\\\\u0085',\n '\\\\u0086',\n '\\\\u0087',\n '\\\\u0088',\n '\\\\u0089',\n '\\\\u008A',\n '\\\\u008B',\n '\\\\u008C',\n '\\\\u008D',\n '\\\\u008E',\n '\\\\u008F',\n '\\\\u0090',\n '\\\\u0091',\n '\\\\u0092',\n '\\\\u0093',\n '\\\\u0094',\n '\\\\u0095',\n '\\\\u0096',\n '\\\\u0097',\n '\\\\u0098',\n '\\\\u0099',\n '\\\\u009A',\n '\\\\u009B',\n '\\\\u009C',\n '\\\\u009D',\n '\\\\u009E',\n '\\\\u009F',\n];\n\n/**\n * A visitor is provided to visit, it contains the collection of\n * relevant functions to be called during the visitor's traversal.\n */\n\nconst BREAK = Object.freeze({});\n/**\n * visit() will walk through an AST using a depth-first traversal, calling\n * the visitor's enter function at each node in the traversal, and calling the\n * leave function after visiting that node and all of its child nodes.\n *\n * By returning different values from the enter and leave functions, the\n * behavior of the visitor can be altered, including skipping over a sub-tree of\n * the AST (by returning false), editing the AST by returning a value or null\n * to remove the value, or to stop the whole traversal by returning BREAK.\n *\n * When using visit() to edit an AST, the original AST will not be modified, and\n * a new version of the AST with the changes applied will be returned from the\n * visit function.\n *\n * ```ts\n * const editedAST = visit(ast, {\n * enter(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: skip visiting this node\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * },\n * leave(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: no action\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * }\n * });\n * ```\n *\n * Alternatively to providing enter() and leave() functions, a visitor can\n * instead provide functions named the same as the kinds of AST nodes, or\n * enter/leave visitors at a named key, leading to three permutations of the\n * visitor API:\n *\n * 1) Named visitors triggered when entering a node of a specific kind.\n *\n * ```ts\n * visit(ast, {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * })\n * ```\n *\n * 2) Named visitors that trigger upon entering and leaving a node of a specific kind.\n *\n * ```ts\n * visit(ast, {\n * Kind: {\n * enter(node) {\n * // enter the \"Kind\" node\n * }\n * leave(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n * ```\n *\n * 3) Generic visitors that trigger upon entering and leaving any node.\n *\n * ```ts\n * visit(ast, {\n * enter(node) {\n * // enter any node\n * },\n * leave(node) {\n * // leave any node\n * }\n * })\n * ```\n */\n\nfunction visit(root, visitor, visitorKeys = QueryDocumentKeys) {\n const enterLeaveMap = new Map();\n\n for (const kind of Object.values(Kind)) {\n enterLeaveMap.set(kind, getEnterLeaveForKind(visitor, kind));\n }\n /* eslint-disable no-undef-init */\n\n let stack = undefined;\n let inArray = Array.isArray(root);\n let keys = [root];\n let index = -1;\n let edits = [];\n let node = root;\n let key = undefined;\n let parent = undefined;\n const path = [];\n const ancestors = [];\n /* eslint-enable no-undef-init */\n\n do {\n index++;\n const isLeaving = index === keys.length;\n const isEdited = isLeaving && edits.length !== 0;\n\n if (isLeaving) {\n key = ancestors.length === 0 ? undefined : path[path.length - 1];\n node = parent;\n parent = ancestors.pop();\n\n if (isEdited) {\n if (inArray) {\n node = node.slice();\n let editOffset = 0;\n\n for (const [editKey, editValue] of edits) {\n const arrayKey = editKey - editOffset;\n\n if (editValue === null) {\n node.splice(arrayKey, 1);\n editOffset++;\n } else {\n node[arrayKey] = editValue;\n }\n }\n } else {\n node = Object.defineProperties(\n {},\n Object.getOwnPropertyDescriptors(node),\n );\n\n for (const [editKey, editValue] of edits) {\n node[editKey] = editValue;\n }\n }\n }\n\n index = stack.index;\n keys = stack.keys;\n edits = stack.edits;\n inArray = stack.inArray;\n stack = stack.prev;\n } else if (parent) {\n key = inArray ? index : keys[index];\n node = parent[key];\n\n if (node === null || node === undefined) {\n continue;\n }\n\n path.push(key);\n }\n\n let result;\n\n if (!Array.isArray(node)) {\n var _enterLeaveMap$get, _enterLeaveMap$get2;\n\n isNode(node) || devAssert(false, `Invalid AST Node: ${inspect$1(node)}.`);\n const visitFn = isLeaving\n ? (_enterLeaveMap$get = enterLeaveMap.get(node.kind)) === null ||\n _enterLeaveMap$get === void 0\n ? void 0\n : _enterLeaveMap$get.leave\n : (_enterLeaveMap$get2 = enterLeaveMap.get(node.kind)) === null ||\n _enterLeaveMap$get2 === void 0\n ? void 0\n : _enterLeaveMap$get2.enter;\n result =\n visitFn === null || visitFn === void 0\n ? void 0\n : visitFn.call(visitor, node, key, parent, path, ancestors);\n\n if (result === BREAK) {\n break;\n }\n\n if (result === false) {\n if (!isLeaving) {\n path.pop();\n continue;\n }\n } else if (result !== undefined) {\n edits.push([key, result]);\n\n if (!isLeaving) {\n if (isNode(result)) {\n node = result;\n } else {\n path.pop();\n continue;\n }\n }\n }\n }\n\n if (result === undefined && isEdited) {\n edits.push([key, node]);\n }\n\n if (isLeaving) {\n path.pop();\n } else {\n var _node$kind;\n\n stack = {\n inArray,\n index,\n keys,\n edits,\n prev: stack,\n };\n inArray = Array.isArray(node);\n keys = inArray\n ? node\n : (_node$kind = visitorKeys[node.kind]) !== null &&\n _node$kind !== void 0\n ? _node$kind\n : [];\n index = -1;\n edits = [];\n\n if (parent) {\n ancestors.push(parent);\n }\n\n parent = node;\n }\n } while (stack !== undefined);\n\n if (edits.length !== 0) {\n // New root\n return edits[edits.length - 1][1];\n }\n\n return root;\n}\n/**\n * Creates a new visitor instance which delegates to many visitors to run in\n * parallel. Each visitor will be visited for each node before moving on.\n *\n * If a prior visitor edits a node, no following visitors will see that node.\n */\n\nfunction visitInParallel(visitors) {\n const skipping = new Array(visitors.length).fill(null);\n const mergedVisitor = Object.create(null);\n\n for (const kind of Object.values(Kind)) {\n let hasVisitor = false;\n const enterList = new Array(visitors.length).fill(undefined);\n const leaveList = new Array(visitors.length).fill(undefined);\n\n for (let i = 0; i < visitors.length; ++i) {\n const { enter, leave } = getEnterLeaveForKind(visitors[i], kind);\n hasVisitor || (hasVisitor = enter != null || leave != null);\n enterList[i] = enter;\n leaveList[i] = leave;\n }\n\n if (!hasVisitor) {\n continue;\n }\n\n const mergedEnterLeave = {\n enter(...args) {\n const node = args[0];\n\n for (let i = 0; i < visitors.length; i++) {\n if (skipping[i] === null) {\n var _enterList$i;\n\n const result =\n (_enterList$i = enterList[i]) === null || _enterList$i === void 0\n ? void 0\n : _enterList$i.apply(visitors[i], args);\n\n if (result === false) {\n skipping[i] = node;\n } else if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined) {\n return result;\n }\n }\n }\n },\n\n leave(...args) {\n const node = args[0];\n\n for (let i = 0; i < visitors.length; i++) {\n if (skipping[i] === null) {\n var _leaveList$i;\n\n const result =\n (_leaveList$i = leaveList[i]) === null || _leaveList$i === void 0\n ? void 0\n : _leaveList$i.apply(visitors[i], args);\n\n if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined && result !== false) {\n return result;\n }\n } else if (skipping[i] === node) {\n skipping[i] = null;\n }\n }\n },\n };\n mergedVisitor[kind] = mergedEnterLeave;\n }\n\n return mergedVisitor;\n}\n/**\n * Given a visitor instance and a node kind, return EnterLeaveVisitor for that kind.\n */\n\nfunction getEnterLeaveForKind(visitor, kind) {\n const kindVisitor = visitor[kind];\n\n if (typeof kindVisitor === 'object') {\n // { Kind: { enter() {}, leave() {} } }\n return kindVisitor;\n } else if (typeof kindVisitor === 'function') {\n // { Kind() {} }\n return {\n enter: kindVisitor,\n leave: undefined,\n };\n } // { enter() {}, leave() {} }\n\n return {\n enter: visitor.enter,\n leave: visitor.leave,\n };\n}\n\n/**\n * Converts an AST into a string, using one set of reasonable\n * formatting rules.\n */\n\nfunction print(ast) {\n return visit(ast, printDocASTReducer$1);\n}\nconst MAX_LINE_LENGTH$1 = 80;\nconst printDocASTReducer$1 = {\n Name: {\n leave: (node) => node.value,\n },\n Variable: {\n leave: (node) => '$' + node.name,\n },\n // Document\n Document: {\n leave: (node) => join$1(node.definitions, '\\n\\n'),\n },\n OperationDefinition: {\n leave(node) {\n const varDefs = wrap$1('(', join$1(node.variableDefinitions, ', '), ')');\n const prefix = join$1(\n [\n node.operation,\n join$1([node.name, varDefs]),\n join$1(node.directives, ' '),\n ],\n ' ',\n ); // Anonymous queries with no directives or variable definitions can use\n // the query short form.\n\n return (prefix === 'query' ? '' : prefix + ' ') + node.selectionSet;\n },\n },\n VariableDefinition: {\n leave: ({ variable, type, defaultValue, directives }) =>\n variable +\n ': ' +\n type +\n wrap$1(' = ', defaultValue) +\n wrap$1(' ', join$1(directives, ' ')),\n },\n SelectionSet: {\n leave: ({ selections }) => block$1(selections),\n },\n Field: {\n leave({ alias, name, arguments: args, directives, selectionSet }) {\n const prefix = wrap$1('', alias, ': ') + name;\n let argsLine = prefix + wrap$1('(', join$1(args, ', '), ')');\n\n if (argsLine.length > MAX_LINE_LENGTH$1) {\n argsLine = prefix + wrap$1('(\\n', indent$1(join$1(args, '\\n')), '\\n)');\n }\n\n return join$1([argsLine, join$1(directives, ' '), selectionSet], ' ');\n },\n },\n Argument: {\n leave: ({ name, value }) => name + ': ' + value,\n },\n // Fragments\n FragmentSpread: {\n leave: ({ name, directives }) =>\n '...' + name + wrap$1(' ', join$1(directives, ' ')),\n },\n InlineFragment: {\n leave: ({ typeCondition, directives, selectionSet }) =>\n join$1(\n [\n '...',\n wrap$1('on ', typeCondition),\n join$1(directives, ' '),\n selectionSet,\n ],\n ' ',\n ),\n },\n FragmentDefinition: {\n leave: (\n { name, typeCondition, variableDefinitions, directives, selectionSet }, // Note: fragment variable definitions are experimental and may be changed\n ) =>\n // or removed in the future.\n `fragment ${name}${wrap$1('(', join$1(variableDefinitions, ', '), ')')} ` +\n `on ${typeCondition} ${wrap$1('', join$1(directives, ' '), ' ')}` +\n selectionSet,\n },\n // Value\n IntValue: {\n leave: ({ value }) => value,\n },\n FloatValue: {\n leave: ({ value }) => value,\n },\n StringValue: {\n leave: ({ value, block: isBlockString }) =>\n isBlockString ? printBlockString$1(value) : printString(value),\n },\n BooleanValue: {\n leave: ({ value }) => (value ? 'true' : 'false'),\n },\n NullValue: {\n leave: () => 'null',\n },\n EnumValue: {\n leave: ({ value }) => value,\n },\n ListValue: {\n leave: ({ values }) => '[' + join$1(values, ', ') + ']',\n },\n ObjectValue: {\n leave: ({ fields }) => '{' + join$1(fields, ', ') + '}',\n },\n ObjectField: {\n leave: ({ name, value }) => name + ': ' + value,\n },\n // Directive\n Directive: {\n leave: ({ name, arguments: args }) =>\n '@' + name + wrap$1('(', join$1(args, ', '), ')'),\n },\n // Type\n NamedType: {\n leave: ({ name }) => name,\n },\n ListType: {\n leave: ({ type }) => '[' + type + ']',\n },\n NonNullType: {\n leave: ({ type }) => type + '!',\n },\n // Type System Definitions\n SchemaDefinition: {\n leave: ({ description, directives, operationTypes }) =>\n wrap$1('', description, '\\n') +\n join$1(['schema', join$1(directives, ' '), block$1(operationTypes)], ' '),\n },\n OperationTypeDefinition: {\n leave: ({ operation, type }) => operation + ': ' + type,\n },\n ScalarTypeDefinition: {\n leave: ({ description, name, directives }) =>\n wrap$1('', description, '\\n') +\n join$1(['scalar', name, join$1(directives, ' ')], ' '),\n },\n ObjectTypeDefinition: {\n leave: ({ description, name, interfaces, directives, fields }) =>\n wrap$1('', description, '\\n') +\n join$1(\n [\n 'type',\n name,\n wrap$1('implements ', join$1(interfaces, ' & ')),\n join$1(directives, ' '),\n block$1(fields),\n ],\n ' ',\n ),\n },\n FieldDefinition: {\n leave: ({ description, name, arguments: args, type, directives }) =>\n wrap$1('', description, '\\n') +\n name +\n (hasMultilineItems$1(args)\n ? wrap$1('(\\n', indent$1(join$1(args, '\\n')), '\\n)')\n : wrap$1('(', join$1(args, ', '), ')')) +\n ': ' +\n type +\n wrap$1(' ', join$1(directives, ' ')),\n },\n InputValueDefinition: {\n leave: ({ description, name, type, defaultValue, directives }) =>\n wrap$1('', description, '\\n') +\n join$1(\n [name + ': ' + type, wrap$1('= ', defaultValue), join$1(directives, ' ')],\n ' ',\n ),\n },\n InterfaceTypeDefinition: {\n leave: ({ description, name, interfaces, directives, fields }) =>\n wrap$1('', description, '\\n') +\n join$1(\n [\n 'interface',\n name,\n wrap$1('implements ', join$1(interfaces, ' & ')),\n join$1(directives, ' '),\n block$1(fields),\n ],\n ' ',\n ),\n },\n UnionTypeDefinition: {\n leave: ({ description, name, directives, types }) =>\n wrap$1('', description, '\\n') +\n join$1(\n ['union', name, join$1(directives, ' '), wrap$1('= ', join$1(types, ' | '))],\n ' ',\n ),\n },\n EnumTypeDefinition: {\n leave: ({ description, name, directives, values }) =>\n wrap$1('', description, '\\n') +\n join$1(['enum', name, join$1(directives, ' '), block$1(values)], ' '),\n },\n EnumValueDefinition: {\n leave: ({ description, name, directives }) =>\n wrap$1('', description, '\\n') + join$1([name, join$1(directives, ' ')], ' '),\n },\n InputObjectTypeDefinition: {\n leave: ({ description, name, directives, fields }) =>\n wrap$1('', description, '\\n') +\n join$1(['input', name, join$1(directives, ' '), block$1(fields)], ' '),\n },\n DirectiveDefinition: {\n leave: ({ description, name, arguments: args, repeatable, locations }) =>\n wrap$1('', description, '\\n') +\n 'directive @' +\n name +\n (hasMultilineItems$1(args)\n ? wrap$1('(\\n', indent$1(join$1(args, '\\n')), '\\n)')\n : wrap$1('(', join$1(args, ', '), ')')) +\n (repeatable ? ' repeatable' : '') +\n ' on ' +\n join$1(locations, ' | '),\n },\n SchemaExtension: {\n leave: ({ directives, operationTypes }) =>\n join$1(\n ['extend schema', join$1(directives, ' '), block$1(operationTypes)],\n ' ',\n ),\n },\n ScalarTypeExtension: {\n leave: ({ name, directives }) =>\n join$1(['extend scalar', name, join$1(directives, ' ')], ' '),\n },\n ObjectTypeExtension: {\n leave: ({ name, interfaces, directives, fields }) =>\n join$1(\n [\n 'extend type',\n name,\n wrap$1('implements ', join$1(interfaces, ' & ')),\n join$1(directives, ' '),\n block$1(fields),\n ],\n ' ',\n ),\n },\n InterfaceTypeExtension: {\n leave: ({ name, interfaces, directives, fields }) =>\n join$1(\n [\n 'extend interface',\n name,\n wrap$1('implements ', join$1(interfaces, ' & ')),\n join$1(directives, ' '),\n block$1(fields),\n ],\n ' ',\n ),\n },\n UnionTypeExtension: {\n leave: ({ name, directives, types }) =>\n join$1(\n [\n 'extend union',\n name,\n join$1(directives, ' '),\n wrap$1('= ', join$1(types, ' | ')),\n ],\n ' ',\n ),\n },\n EnumTypeExtension: {\n leave: ({ name, directives, values }) =>\n join$1(['extend enum', name, join$1(directives, ' '), block$1(values)], ' '),\n },\n InputObjectTypeExtension: {\n leave: ({ name, directives, fields }) =>\n join$1(['extend input', name, join$1(directives, ' '), block$1(fields)], ' '),\n },\n};\n/**\n * Given maybeArray, print an empty string if it is null or empty, otherwise\n * print all items together separated by separator if provided\n */\n\nfunction join$1(maybeArray, separator = '') {\n var _maybeArray$filter$jo;\n\n return (_maybeArray$filter$jo =\n maybeArray === null || maybeArray === void 0\n ? void 0\n : maybeArray.filter((x) => x).join(separator)) !== null &&\n _maybeArray$filter$jo !== void 0\n ? _maybeArray$filter$jo\n : '';\n}\n/**\n * Given array, print each item on its own line, wrapped in an indented `{ }` block.\n */\n\nfunction block$1(array) {\n return wrap$1('{\\n', indent$1(join$1(array, '\\n')), '\\n}');\n}\n/**\n * If maybeString is not null or empty, then wrap with start and end, otherwise print an empty string.\n */\n\nfunction wrap$1(start, maybeString, end = '') {\n return maybeString != null && maybeString !== ''\n ? start + maybeString + end\n : '';\n}\n\nfunction indent$1(str) {\n return wrap$1(' ', str.replace(/\\n/g, '\\n '));\n}\n\nfunction hasMultilineItems$1(maybeArray) {\n var _maybeArray$some;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n return (_maybeArray$some =\n maybeArray === null || maybeArray === void 0\n ? void 0\n : maybeArray.some((str) => str.includes('\\n'))) !== null &&\n _maybeArray$some !== void 0\n ? _maybeArray$some\n : false;\n}\n\nvar printer = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tprint: print\n});\n\nvar require$$2 = /*@__PURE__*/getAugmentedNamespace(printer);\n\nvar createRequestBody$1 = {};\n\nvar _public = {};\n\nvar ReactNativeFile$1 = function ReactNativeFile(_ref) {\n var uri = _ref.uri,\n name = _ref.name,\n type = _ref.type;\n this.uri = uri;\n this.name = name;\n this.type = type;\n};\n\nvar ReactNativeFile = ReactNativeFile$1;\n\nvar isExtractableFile = function isExtractableFile(value) {\n return (\n (typeof File !== 'undefined' && value instanceof File) ||\n (typeof Blob !== 'undefined' && value instanceof Blob) ||\n value instanceof ReactNativeFile\n );\n};\n\nvar defaultIsExtractableFile = isExtractableFile;\n\nvar extractFiles = function extractFiles(value, path, isExtractableFile) {\n if (path === void 0) {\n path = '';\n }\n\n if (isExtractableFile === void 0) {\n isExtractableFile = defaultIsExtractableFile;\n }\n\n var clone;\n var files = new Map();\n\n function addFile(paths, file) {\n var storedPaths = files.get(file);\n if (storedPaths) storedPaths.push.apply(storedPaths, paths);\n else files.set(file, paths);\n }\n\n if (isExtractableFile(value)) {\n clone = null;\n addFile([path], value);\n } else {\n var prefix = path ? path + '.' : '';\n if (typeof FileList !== 'undefined' && value instanceof FileList)\n clone = Array.prototype.map.call(value, function (file, i) {\n addFile(['' + prefix + i], file);\n return null;\n });\n else if (Array.isArray(value))\n clone = value.map(function (child, i) {\n var result = extractFiles(child, '' + prefix + i, isExtractableFile);\n result.files.forEach(addFile);\n return result.clone;\n });\n else if (value && value.constructor === Object) {\n clone = {};\n\n for (var i in value) {\n var result = extractFiles(value[i], '' + prefix + i, isExtractableFile);\n result.files.forEach(addFile);\n clone[i] = result.clone;\n }\n } else clone = value;\n }\n\n return {\n clone: clone,\n files: files,\n };\n};\n\n_public.ReactNativeFile = ReactNativeFile$1;\n_public.extractFiles = extractFiles;\n_public.isExtractableFile = isExtractableFile;\n\n/* eslint-env browser */\n\nvar browser = typeof self == 'object' ? self.FormData : window.FormData;\n\nvar defaultJsonSerializer = {};\n\nObject.defineProperty(defaultJsonSerializer, \"__esModule\", { value: true });\ndefaultJsonSerializer.defaultJsonSerializer = void 0;\ndefaultJsonSerializer.defaultJsonSerializer = {\n parse: JSON.parse,\n stringify: JSON.stringify,\n};\n\nvar __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(createRequestBody$1, \"__esModule\", { value: true });\nvar extract_files_1 = _public;\nvar form_data_1 = __importDefault(browser);\nvar defaultJsonSerializer_1 = defaultJsonSerializer;\n/**\n * Duck type if NodeJS stream\n * https://github.com/sindresorhus/is-stream/blob/3750505b0727f6df54324784fe369365ef78841e/index.js#L3\n */\nvar isExtractableFileEnhanced = function (value) {\n return extract_files_1.isExtractableFile(value) ||\n (value !== null && typeof value === 'object' && typeof value.pipe === 'function');\n};\n/**\n * Returns Multipart Form if body contains files\n * (https://github.com/jaydenseric/graphql-multipart-request-spec)\n * Otherwise returns JSON\n */\nfunction createRequestBody(query, variables, operationName, jsonSerializer) {\n if (jsonSerializer === void 0) { jsonSerializer = defaultJsonSerializer_1.defaultJsonSerializer; }\n var _a = extract_files_1.extractFiles({ query: query, variables: variables, operationName: operationName }, '', isExtractableFileEnhanced), clone = _a.clone, files = _a.files;\n if (files.size === 0) {\n if (!Array.isArray(query)) {\n return jsonSerializer.stringify(clone);\n }\n if (typeof variables !== 'undefined' && !Array.isArray(variables)) {\n throw new Error('Cannot create request body with given variable type, array expected');\n }\n // Batch support\n var payload = query.reduce(function (accu, currentQuery, index) {\n accu.push({ query: currentQuery, variables: variables ? variables[index] : undefined });\n return accu;\n }, []);\n return jsonSerializer.stringify(payload);\n }\n var Form = typeof FormData === 'undefined' ? form_data_1.default : FormData;\n var form = new Form();\n form.append('operations', jsonSerializer.stringify(clone));\n var map = {};\n var i = 0;\n files.forEach(function (paths) {\n map[++i] = paths;\n });\n form.append('map', jsonSerializer.stringify(map));\n i = 0;\n files.forEach(function (paths, file) {\n form.append(\"\" + ++i, file);\n });\n return form;\n}\ncreateRequestBody$1.default = createRequestBody;\n\nvar parseArgs = {};\n\nObject.defineProperty(parseArgs, \"__esModule\", { value: true });\nparseArgs.parseBatchRequestsExtendedArgs = parseArgs.parseRawRequestExtendedArgs = parseArgs.parseRequestExtendedArgs = parseArgs.parseBatchRequestArgs = parseArgs.parseRawRequestArgs = parseArgs.parseRequestArgs = void 0;\nfunction parseRequestArgs(documentOrOptions, variables, requestHeaders) {\n return documentOrOptions.document\n ? documentOrOptions\n : {\n document: documentOrOptions,\n variables: variables,\n requestHeaders: requestHeaders,\n signal: undefined,\n };\n}\nparseArgs.parseRequestArgs = parseRequestArgs;\nfunction parseRawRequestArgs(queryOrOptions, variables, requestHeaders) {\n return queryOrOptions.query\n ? queryOrOptions\n : {\n query: queryOrOptions,\n variables: variables,\n requestHeaders: requestHeaders,\n signal: undefined,\n };\n}\nparseArgs.parseRawRequestArgs = parseRawRequestArgs;\nfunction parseBatchRequestArgs(documentsOrOptions, requestHeaders) {\n return documentsOrOptions.documents\n ? documentsOrOptions\n : {\n documents: documentsOrOptions,\n requestHeaders: requestHeaders,\n signal: undefined,\n };\n}\nparseArgs.parseBatchRequestArgs = parseBatchRequestArgs;\nfunction parseRequestExtendedArgs(urlOrOptions, document, variables, requestHeaders) {\n return urlOrOptions.document\n ? urlOrOptions\n : {\n url: urlOrOptions,\n document: document,\n variables: variables,\n requestHeaders: requestHeaders,\n signal: undefined,\n };\n}\nparseArgs.parseRequestExtendedArgs = parseRequestExtendedArgs;\nfunction parseRawRequestExtendedArgs(urlOrOptions, query, variables, requestHeaders) {\n return urlOrOptions.query\n ? urlOrOptions\n : {\n url: urlOrOptions,\n query: query,\n variables: variables,\n requestHeaders: requestHeaders,\n signal: undefined,\n };\n}\nparseArgs.parseRawRequestExtendedArgs = parseRawRequestExtendedArgs;\nfunction parseBatchRequestsExtendedArgs(urlOrOptions, documents, requestHeaders) {\n return urlOrOptions.documents\n ? urlOrOptions\n : {\n url: urlOrOptions,\n documents: documents,\n requestHeaders: requestHeaders,\n signal: undefined,\n };\n}\nparseArgs.parseBatchRequestsExtendedArgs = parseBatchRequestsExtendedArgs;\n\nvar types = {};\n\nvar __extends$1 = (commonjsGlobal && commonjsGlobal.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(types, \"__esModule\", { value: true });\ntypes.ClientError = void 0;\nvar ClientError = /** @class */ (function (_super) {\n __extends$1(ClientError, _super);\n function ClientError(response, request) {\n var _this = this;\n var message = ClientError.extractMessage(response) + \": \" + JSON.stringify({\n response: response,\n request: request,\n });\n _this = _super.call(this, message) || this;\n Object.setPrototypeOf(_this, ClientError.prototype);\n _this.response = response;\n _this.request = request;\n // this is needed as Safari doesn't support .captureStackTrace\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(_this, ClientError);\n }\n return _this;\n }\n ClientError.extractMessage = function (response) {\n try {\n return response.errors[0].message;\n }\n catch (e) {\n return \"GraphQL Error (Code: \" + response.status + \")\";\n }\n };\n return ClientError;\n}(Error));\ntypes.ClientError = ClientError;\n\nvar graphqlWs = {};\n\nvar hasRequiredGraphqlWs;\n\nfunction requireGraphqlWs () {\n\tif (hasRequiredGraphqlWs) return graphqlWs;\n\thasRequiredGraphqlWs = 1;\n\tvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n\t __assign = Object.assign || function(t) {\n\t for (var s, i = 1, n = arguments.length; i < n; i++) {\n\t s = arguments[i];\n\t for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n\t t[p] = s[p];\n\t }\n\t return t;\n\t };\n\t return __assign.apply(this, arguments);\n\t};\n\tvar __awaiter = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {\n\t function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n\t return new (P || (P = Promise))(function (resolve, reject) {\n\t function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n\t function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n\t function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n\t step((generator = generator.apply(thisArg, _arguments || [])).next());\n\t });\n\t};\n\tvar __generator = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {\n\t var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n\t return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n\t function verb(n) { return function (v) { return step([n, v]); }; }\n\t function step(op) {\n\t if (f) throw new TypeError(\"Generator is already executing.\");\n\t while (_) try {\n\t if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n\t if (y = 0, t) op = [op[0] & 2, t.value];\n\t switch (op[0]) {\n\t case 0: case 1: t = op; break;\n\t case 4: _.label++; return { value: op[1], done: false };\n\t case 5: _.label++; y = op[1]; op = [0]; continue;\n\t case 7: op = _.ops.pop(); _.trys.pop(); continue;\n\t default:\n\t if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n\t if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n\t if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n\t if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n\t if (t[2]) _.ops.pop();\n\t _.trys.pop(); continue;\n\t }\n\t op = body.call(thisArg, _);\n\t } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n\t if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n\t }\n\t};\n\tObject.defineProperty(graphqlWs, \"__esModule\", { value: true });\n\tgraphqlWs.GraphQLWebSocketClient = void 0;\n\tvar types_1 = types;\n\tvar _1 = requireDist();\n\tvar CONNECTION_INIT = 'connection_init';\n\tvar CONNECTION_ACK = 'connection_ack';\n\tvar PING = 'ping';\n\tvar PONG = 'pong';\n\tvar SUBSCRIBE = 'subscribe';\n\tvar NEXT = 'next';\n\tvar ERROR = 'error';\n\tvar COMPLETE = 'complete';\n\tvar GraphQLWebSocketMessage = /** @class */ (function () {\n\t function GraphQLWebSocketMessage(type, payload, id) {\n\t this._type = type;\n\t this._payload = payload;\n\t this._id = id;\n\t }\n\t Object.defineProperty(GraphQLWebSocketMessage.prototype, \"type\", {\n\t get: function () {\n\t return this._type;\n\t },\n\t enumerable: false,\n\t configurable: true\n\t });\n\t Object.defineProperty(GraphQLWebSocketMessage.prototype, \"id\", {\n\t get: function () {\n\t return this._id;\n\t },\n\t enumerable: false,\n\t configurable: true\n\t });\n\t Object.defineProperty(GraphQLWebSocketMessage.prototype, \"payload\", {\n\t get: function () {\n\t return this._payload;\n\t },\n\t enumerable: false,\n\t configurable: true\n\t });\n\t Object.defineProperty(GraphQLWebSocketMessage.prototype, \"text\", {\n\t get: function () {\n\t var result = { type: this.type };\n\t if (this.id != null && this.id != undefined)\n\t result.id = this.id;\n\t if (this.payload != null && this.payload != undefined)\n\t result.payload = this.payload;\n\t return JSON.stringify(result);\n\t },\n\t enumerable: false,\n\t configurable: true\n\t });\n\t GraphQLWebSocketMessage.parse = function (data, f) {\n\t var _a = JSON.parse(data), type = _a.type, payload = _a.payload, id = _a.id;\n\t return new GraphQLWebSocketMessage(type, f(payload), id);\n\t };\n\t return GraphQLWebSocketMessage;\n\t}());\n\tvar GraphQLWebSocketClient = /** @class */ (function () {\n\t function GraphQLWebSocketClient(socket, _a) {\n\t var _this = this;\n\t var onInit = _a.onInit, onAcknowledged = _a.onAcknowledged, onPing = _a.onPing, onPong = _a.onPong;\n\t this.socketState = { acknowledged: false, lastRequestId: 0, subscriptions: {} };\n\t this.socket = socket;\n\t socket.onopen = function (e) { return __awaiter(_this, void 0, void 0, function () {\n\t var _a, _b, _c, _d;\n\t return __generator(this, function (_e) {\n\t switch (_e.label) {\n\t case 0:\n\t this.socketState.acknowledged = false;\n\t this.socketState.subscriptions = {};\n\t _b = (_a = socket).send;\n\t _c = ConnectionInit;\n\t if (!onInit) return [3 /*break*/, 2];\n\t return [4 /*yield*/, onInit()];\n\t case 1:\n\t _d = _e.sent();\n\t return [3 /*break*/, 3];\n\t case 2:\n\t _d = null;\n\t _e.label = 3;\n\t case 3:\n\t _b.apply(_a, [_c.apply(void 0, [_d]).text]);\n\t return [2 /*return*/];\n\t }\n\t });\n\t }); };\n\t socket.onclose = function (e) {\n\t _this.socketState.acknowledged = false;\n\t _this.socketState.subscriptions = {};\n\t };\n\t socket.onerror = function (e) {\n\t console.error(e);\n\t };\n\t socket.onmessage = function (e) {\n\t try {\n\t var message = parseMessage(e.data);\n\t switch (message.type) {\n\t case CONNECTION_ACK: {\n\t if (_this.socketState.acknowledged) {\n\t console.warn('Duplicate CONNECTION_ACK message ignored');\n\t }\n\t else {\n\t _this.socketState.acknowledged = true;\n\t if (onAcknowledged)\n\t onAcknowledged(message.payload);\n\t }\n\t return;\n\t }\n\t case PING: {\n\t if (onPing)\n\t onPing(message.payload).then(function (r) { return socket.send(Pong(r).text); });\n\t else\n\t socket.send(Pong(null).text);\n\t return;\n\t }\n\t case PONG: {\n\t if (onPong)\n\t onPong(message.payload);\n\t return;\n\t }\n\t }\n\t if (!_this.socketState.acknowledged) {\n\t // Web-socket connection not acknowledged\n\t return;\n\t }\n\t if (message.id === undefined || message.id === null || !_this.socketState.subscriptions[message.id]) {\n\t // No subscription identifer or subscription indentifier is not found\n\t return;\n\t }\n\t var _a = _this.socketState.subscriptions[message.id], query = _a.query, variables = _a.variables, subscriber = _a.subscriber;\n\t switch (message.type) {\n\t case NEXT: {\n\t if (!message.payload.errors && message.payload.data) {\n\t subscriber.next && subscriber.next(message.payload.data);\n\t }\n\t if (message.payload.errors) {\n\t subscriber.error &&\n\t subscriber.error(new types_1.ClientError(__assign(__assign({}, message.payload), { status: 200 }), { query: query, variables: variables }));\n\t }\n\t else {\n\t }\n\t return;\n\t }\n\t case ERROR: {\n\t subscriber.error &&\n\t subscriber.error(new types_1.ClientError({ errors: message.payload, status: 200 }, { query: query, variables: variables }));\n\t return;\n\t }\n\t case COMPLETE: {\n\t subscriber.complete && subscriber.complete();\n\t delete _this.socketState.subscriptions[message.id];\n\t return;\n\t }\n\t }\n\t }\n\t catch (e) {\n\t // Unexpected errors while handling graphql-ws message\n\t console.error(e);\n\t socket.close(1006);\n\t }\n\t socket.close(4400, 'Unknown graphql-ws message.');\n\t };\n\t }\n\t GraphQLWebSocketClient.prototype.makeSubscribe = function (query, operationName, variables, subscriber) {\n\t var _this = this;\n\t var subscriptionId = (this.socketState.lastRequestId++).toString();\n\t this.socketState.subscriptions[subscriptionId] = { query: query, variables: variables, subscriber: subscriber };\n\t this.socket.send(Subscribe(subscriptionId, { query: query, operationName: operationName, variables: variables }).text);\n\t return function () {\n\t _this.socket.send(Complete(subscriptionId).text);\n\t delete _this.socketState.subscriptions[subscriptionId];\n\t };\n\t };\n\t GraphQLWebSocketClient.prototype.rawRequest = function (query, variables) {\n\t var _this = this;\n\t return new Promise(function (resolve, reject) {\n\t var result;\n\t _this.rawSubscribe(query, {\n\t next: function (data, extensions) { return (result = { data: data, extensions: extensions }); },\n\t error: reject,\n\t complete: function () { return resolve(result); },\n\t }, variables);\n\t });\n\t };\n\t GraphQLWebSocketClient.prototype.request = function (document, variables) {\n\t var _this = this;\n\t return new Promise(function (resolve, reject) {\n\t var result;\n\t _this.subscribe(document, {\n\t next: function (data) { return (result = data); },\n\t error: reject,\n\t complete: function () { return resolve(result); },\n\t }, variables);\n\t });\n\t };\n\t GraphQLWebSocketClient.prototype.subscribe = function (document, subscriber, variables) {\n\t var _a = _1.resolveRequestDocument(document), query = _a.query, operationName = _a.operationName;\n\t return this.makeSubscribe(query, operationName, variables, subscriber);\n\t };\n\t GraphQLWebSocketClient.prototype.rawSubscribe = function (query, subscriber, variables) {\n\t return this.makeSubscribe(query, undefined, variables, subscriber);\n\t };\n\t GraphQLWebSocketClient.prototype.ping = function (payload) {\n\t this.socket.send(Ping(payload).text);\n\t };\n\t GraphQLWebSocketClient.prototype.close = function () {\n\t this.socket.close(1000);\n\t };\n\t GraphQLWebSocketClient.PROTOCOL = 'graphql-transport-ws';\n\t return GraphQLWebSocketClient;\n\t}());\n\tgraphqlWs.GraphQLWebSocketClient = GraphQLWebSocketClient;\n\t// Helper functions\n\tfunction parseMessage(data, f) {\n\t if (f === void 0) { f = function (a) { return a; }; }\n\t var m = GraphQLWebSocketMessage.parse(data, f);\n\t return m;\n\t}\n\tfunction ConnectionInit(payload) {\n\t return new GraphQLWebSocketMessage(CONNECTION_INIT, payload);\n\t}\n\tfunction Ping(payload) {\n\t return new GraphQLWebSocketMessage(PING, payload, undefined);\n\t}\n\tfunction Pong(payload) {\n\t return new GraphQLWebSocketMessage(PONG, payload, undefined);\n\t}\n\tfunction Subscribe(id, payload) {\n\t return new GraphQLWebSocketMessage(SUBSCRIBE, payload, id);\n\t}\n\tfunction Complete(id) {\n\t return new GraphQLWebSocketMessage(COMPLETE, undefined, id);\n\t}\n\t\n\treturn graphqlWs;\n}\n\nvar hasRequiredDist;\n\nfunction requireDist () {\n\tif (hasRequiredDist) return dist;\n\thasRequiredDist = 1;\n\t(function (exports) {\n\t\tvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n\t\t __assign = Object.assign || function(t) {\n\t\t for (var s, i = 1, n = arguments.length; i < n; i++) {\n\t\t s = arguments[i];\n\t\t for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n\t\t t[p] = s[p];\n\t\t }\n\t\t return t;\n\t\t };\n\t\t return __assign.apply(this, arguments);\n\t\t};\n\t\tvar __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n\t\t if (k2 === undefined) k2 = k;\n\t\t Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n\t\t}) : (function(o, m, k, k2) {\n\t\t if (k2 === undefined) k2 = k;\n\t\t o[k2] = m[k];\n\t\t}));\n\t\tvar __setModuleDefault = (commonjsGlobal && commonjsGlobal.__setModuleDefault) || (Object.create ? (function(o, v) {\n\t\t Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n\t\t}) : function(o, v) {\n\t\t o[\"default\"] = v;\n\t\t});\n\t\tvar __importStar = (commonjsGlobal && commonjsGlobal.__importStar) || function (mod) {\n\t\t if (mod && mod.__esModule) return mod;\n\t\t var result = {};\n\t\t if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n\t\t __setModuleDefault(result, mod);\n\t\t return result;\n\t\t};\n\t\tvar __awaiter = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {\n\t\t function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n\t\t return new (P || (P = Promise))(function (resolve, reject) {\n\t\t function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n\t\t function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n\t\t function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n\t\t step((generator = generator.apply(thisArg, _arguments || [])).next());\n\t\t });\n\t\t};\n\t\tvar __generator = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {\n\t\t var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n\t\t return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n\t\t function verb(n) { return function (v) { return step([n, v]); }; }\n\t\t function step(op) {\n\t\t if (f) throw new TypeError(\"Generator is already executing.\");\n\t\t while (_) try {\n\t\t if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n\t\t if (y = 0, t) op = [op[0] & 2, t.value];\n\t\t switch (op[0]) {\n\t\t case 0: case 1: t = op; break;\n\t\t case 4: _.label++; return { value: op[1], done: false };\n\t\t case 5: _.label++; y = op[1]; op = [0]; continue;\n\t\t case 7: op = _.ops.pop(); _.trys.pop(); continue;\n\t\t default:\n\t\t if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n\t\t if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n\t\t if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n\t\t if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n\t\t if (t[2]) _.ops.pop();\n\t\t _.trys.pop(); continue;\n\t\t }\n\t\t op = body.call(thisArg, _);\n\t\t } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n\t\t if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n\t\t }\n\t\t};\n\t\tvar __rest = (commonjsGlobal && commonjsGlobal.__rest) || function (s, e) {\n\t\t var t = {};\n\t\t for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n\t\t t[p] = s[p];\n\t\t if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n\t\t for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n\t\t if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n\t\t t[p[i]] = s[p[i]];\n\t\t }\n\t\t return t;\n\t\t};\n\t\tvar __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {\n\t\t return (mod && mod.__esModule) ? mod : { \"default\": mod };\n\t\t};\n\t\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t\texports.GraphQLWebSocketClient = exports.gql = exports.resolveRequestDocument = exports.batchRequests = exports.request = exports.rawRequest = exports.GraphQLClient = exports.ClientError = void 0;\n\t\tvar cross_fetch_1 = __importStar(browserPonyfill.exports), CrossFetch = cross_fetch_1;\n\t\tvar parser_1 = require$$1;\n\t\tvar printer_1 = require$$2;\n\t\tvar createRequestBody_1 = __importDefault(createRequestBody$1);\n\t\tvar defaultJsonSerializer_1 = defaultJsonSerializer;\n\t\tvar parseArgs_1 = parseArgs;\n\t\tvar types_1 = types;\n\t\tObject.defineProperty(exports, \"ClientError\", { enumerable: true, get: function () { return types_1.ClientError; } });\n\t\t/**\n\t\t * Convert the given headers configuration into a plain object.\n\t\t */\n\t\tvar resolveHeaders = function (headers) {\n\t\t var oHeaders = {};\n\t\t if (headers) {\n\t\t if ((typeof Headers !== 'undefined' && headers instanceof Headers) ||\n\t\t (CrossFetch && CrossFetch.Headers && headers instanceof CrossFetch.Headers)) {\n\t\t oHeaders = HeadersInstanceToPlainObject(headers);\n\t\t }\n\t\t else if (Array.isArray(headers)) {\n\t\t headers.forEach(function (_a) {\n\t\t var name = _a[0], value = _a[1];\n\t\t oHeaders[name] = value;\n\t\t });\n\t\t }\n\t\t else {\n\t\t oHeaders = headers;\n\t\t }\n\t\t }\n\t\t return oHeaders;\n\t\t};\n\t\t/**\n\t\t * Clean a GraphQL document to send it via a GET query\n\t\t *\n\t\t * @param {string} str GraphQL query\n\t\t * @returns {string} Cleaned query\n\t\t */\n\t\tvar queryCleanner = function (str) { return str.replace(/([\\s,]|#[^\\n\\r]+)+/g, ' ').trim(); };\n\t\t/**\n\t\t * Create query string for GraphQL request\n\t\t *\n\t\t * @param {object} param0 -\n\t\t *\n\t\t * @param {string|string[]} param0.query the GraphQL document or array of document if it's a batch request\n\t\t * @param {string|undefined} param0.operationName the GraphQL operation name\n\t\t * @param {any|any[]} param0.variables the GraphQL variables to use\n\t\t */\n\t\tvar buildGetQueryParams = function (_a) {\n\t\t var query = _a.query, variables = _a.variables, operationName = _a.operationName, jsonSerializer = _a.jsonSerializer;\n\t\t if (!Array.isArray(query)) {\n\t\t var search = [\"query=\" + encodeURIComponent(queryCleanner(query))];\n\t\t if (variables) {\n\t\t search.push(\"variables=\" + encodeURIComponent(jsonSerializer.stringify(variables)));\n\t\t }\n\t\t if (operationName) {\n\t\t search.push(\"operationName=\" + encodeURIComponent(operationName));\n\t\t }\n\t\t return search.join('&');\n\t\t }\n\t\t if (typeof variables !== 'undefined' && !Array.isArray(variables)) {\n\t\t throw new Error('Cannot create query with given variable type, array expected');\n\t\t }\n\t\t // Batch support\n\t\t var payload = query.reduce(function (accu, currentQuery, index) {\n\t\t accu.push({\n\t\t query: queryCleanner(currentQuery),\n\t\t variables: variables ? jsonSerializer.stringify(variables[index]) : undefined,\n\t\t });\n\t\t return accu;\n\t\t }, []);\n\t\t return \"query=\" + encodeURIComponent(jsonSerializer.stringify(payload));\n\t\t};\n\t\t/**\n\t\t * Fetch data using POST method\n\t\t */\n\t\tvar post = function (_a) {\n\t\t var url = _a.url, query = _a.query, variables = _a.variables, operationName = _a.operationName, headers = _a.headers, fetch = _a.fetch, fetchOptions = _a.fetchOptions, middleware = _a.middleware;\n\t\t return __awaiter(void 0, void 0, void 0, function () {\n\t\t var body, options;\n\t\t return __generator(this, function (_b) {\n\t\t switch (_b.label) {\n\t\t case 0:\n\t\t body = createRequestBody_1.default(query, variables, operationName, fetchOptions.jsonSerializer);\n\t\t options = __assign({ method: 'POST', headers: __assign(__assign({}, (typeof body === 'string' ? { 'Content-Type': 'application/json' } : {})), headers), body: body }, fetchOptions);\n\t\t if (!middleware) return [3 /*break*/, 2];\n\t\t return [4 /*yield*/, Promise.resolve(middleware(options))];\n\t\t case 1:\n\t\t options = _b.sent();\n\t\t _b.label = 2;\n\t\t case 2: return [4 /*yield*/, fetch(url, options)];\n\t\t case 3: return [2 /*return*/, _b.sent()];\n\t\t }\n\t\t });\n\t\t });\n\t\t};\n\t\t/**\n\t\t * Fetch data using GET method\n\t\t */\n\t\tvar get = function (_a) {\n\t\t var url = _a.url, query = _a.query, variables = _a.variables, operationName = _a.operationName, headers = _a.headers, fetch = _a.fetch, fetchOptions = _a.fetchOptions, middleware = _a.middleware;\n\t\t return __awaiter(void 0, void 0, void 0, function () {\n\t\t var queryParams, options;\n\t\t return __generator(this, function (_b) {\n\t\t switch (_b.label) {\n\t\t case 0:\n\t\t queryParams = buildGetQueryParams({\n\t\t query: query,\n\t\t variables: variables,\n\t\t operationName: operationName,\n\t\t jsonSerializer: fetchOptions.jsonSerializer,\n\t\t });\n\t\t options = __assign({ method: 'GET', headers: headers }, fetchOptions);\n\t\t if (!middleware) return [3 /*break*/, 2];\n\t\t return [4 /*yield*/, Promise.resolve(middleware(options))];\n\t\t case 1:\n\t\t options = _b.sent();\n\t\t _b.label = 2;\n\t\t case 2: return [4 /*yield*/, fetch(url + \"?\" + queryParams, options)];\n\t\t case 3: return [2 /*return*/, _b.sent()];\n\t\t }\n\t\t });\n\t\t });\n\t\t};\n\t\t/**\n\t\t * GraphQL Client.\n\t\t */\n\t\tvar GraphQLClient = /** @class */ (function () {\n\t\t function GraphQLClient(url, options) {\n\t\t if (options === void 0) { options = {}; }\n\t\t this.url = url;\n\t\t this.options = options;\n\t\t }\n\t\t GraphQLClient.prototype.rawRequest = function (queryOrOptions, variables, requestHeaders) {\n\t\t return __awaiter(this, void 0, void 0, function () {\n\t\t var rawRequestOptions, _a, headers, _b, fetch, _c, method, requestMiddleware, responseMiddleware, fetchOptions, url, operationName;\n\t\t return __generator(this, function (_d) {\n\t\t rawRequestOptions = parseArgs_1.parseRawRequestArgs(queryOrOptions, variables, requestHeaders);\n\t\t _a = this.options, headers = _a.headers, _b = _a.fetch, fetch = _b === void 0 ? cross_fetch_1.default : _b, _c = _a.method, method = _c === void 0 ? 'POST' : _c, requestMiddleware = _a.requestMiddleware, responseMiddleware = _a.responseMiddleware, fetchOptions = __rest(_a, [\"headers\", \"fetch\", \"method\", \"requestMiddleware\", \"responseMiddleware\"]);\n\t\t url = this.url;\n\t\t if (rawRequestOptions.signal !== undefined) {\n\t\t fetchOptions.signal = rawRequestOptions.signal;\n\t\t }\n\t\t operationName = resolveRequestDocument(rawRequestOptions.query).operationName;\n\t\t return [2 /*return*/, makeRequest({\n\t\t url: url,\n\t\t query: rawRequestOptions.query,\n\t\t variables: rawRequestOptions.variables,\n\t\t headers: __assign(__assign({}, resolveHeaders(callOrIdentity(headers))), resolveHeaders(rawRequestOptions.requestHeaders)),\n\t\t operationName: operationName,\n\t\t fetch: fetch,\n\t\t method: method,\n\t\t fetchOptions: fetchOptions,\n\t\t middleware: requestMiddleware,\n\t\t })\n\t\t .then(function (response) {\n\t\t if (responseMiddleware) {\n\t\t responseMiddleware(response);\n\t\t }\n\t\t return response;\n\t\t })\n\t\t .catch(function (error) {\n\t\t if (responseMiddleware) {\n\t\t responseMiddleware(error);\n\t\t }\n\t\t throw error;\n\t\t })];\n\t\t });\n\t\t });\n\t\t };\n\t\t GraphQLClient.prototype.request = function (documentOrOptions) {\n\t\t var variablesAndRequestHeaders = [];\n\t\t for (var _i = 1; _i < arguments.length; _i++) {\n\t\t variablesAndRequestHeaders[_i - 1] = arguments[_i];\n\t\t }\n\t\t var variables = variablesAndRequestHeaders[0], requestHeaders = variablesAndRequestHeaders[1];\n\t\t var requestOptions = parseArgs_1.parseRequestArgs(documentOrOptions, variables, requestHeaders);\n\t\t var _a = this.options, headers = _a.headers, _b = _a.fetch, fetch = _b === void 0 ? cross_fetch_1.default : _b, _c = _a.method, method = _c === void 0 ? 'POST' : _c, requestMiddleware = _a.requestMiddleware, responseMiddleware = _a.responseMiddleware, fetchOptions = __rest(_a, [\"headers\", \"fetch\", \"method\", \"requestMiddleware\", \"responseMiddleware\"]);\n\t\t var url = this.url;\n\t\t if (requestOptions.signal !== undefined) {\n\t\t fetchOptions.signal = requestOptions.signal;\n\t\t }\n\t\t var _d = resolveRequestDocument(requestOptions.document), query = _d.query, operationName = _d.operationName;\n\t\t return makeRequest({\n\t\t url: url,\n\t\t query: query,\n\t\t variables: requestOptions.variables,\n\t\t headers: __assign(__assign({}, resolveHeaders(callOrIdentity(headers))), resolveHeaders(requestOptions.requestHeaders)),\n\t\t operationName: operationName,\n\t\t fetch: fetch,\n\t\t method: method,\n\t\t fetchOptions: fetchOptions,\n\t\t middleware: requestMiddleware,\n\t\t })\n\t\t .then(function (response) {\n\t\t if (responseMiddleware) {\n\t\t responseMiddleware(response);\n\t\t }\n\t\t return response.data;\n\t\t })\n\t\t .catch(function (error) {\n\t\t if (responseMiddleware) {\n\t\t responseMiddleware(error);\n\t\t }\n\t\t throw error;\n\t\t });\n\t\t };\n\t\t GraphQLClient.prototype.batchRequests = function (documentsOrOptions, requestHeaders) {\n\t\t var batchRequestOptions = parseArgs_1.parseBatchRequestArgs(documentsOrOptions, requestHeaders);\n\t\t var _a = this.options, headers = _a.headers, _b = _a.fetch, fetch = _b === void 0 ? cross_fetch_1.default : _b, _c = _a.method, method = _c === void 0 ? 'POST' : _c, requestMiddleware = _a.requestMiddleware, responseMiddleware = _a.responseMiddleware, fetchOptions = __rest(_a, [\"headers\", \"fetch\", \"method\", \"requestMiddleware\", \"responseMiddleware\"]);\n\t\t var url = this.url;\n\t\t if (batchRequestOptions.signal !== undefined) {\n\t\t fetchOptions.signal = batchRequestOptions.signal;\n\t\t }\n\t\t var queries = batchRequestOptions.documents.map(function (_a) {\n\t\t var document = _a.document;\n\t\t return resolveRequestDocument(document).query;\n\t\t });\n\t\t var variables = batchRequestOptions.documents.map(function (_a) {\n\t\t var variables = _a.variables;\n\t\t return variables;\n\t\t });\n\t\t return makeRequest({\n\t\t url: url,\n\t\t query: queries,\n\t\t variables: variables,\n\t\t headers: __assign(__assign({}, resolveHeaders(callOrIdentity(headers))), resolveHeaders(batchRequestOptions.requestHeaders)),\n\t\t operationName: undefined,\n\t\t fetch: fetch,\n\t\t method: method,\n\t\t fetchOptions: fetchOptions,\n\t\t middleware: requestMiddleware,\n\t\t })\n\t\t .then(function (response) {\n\t\t if (responseMiddleware) {\n\t\t responseMiddleware(response);\n\t\t }\n\t\t return response.data;\n\t\t })\n\t\t .catch(function (error) {\n\t\t if (responseMiddleware) {\n\t\t responseMiddleware(error);\n\t\t }\n\t\t throw error;\n\t\t });\n\t\t };\n\t\t GraphQLClient.prototype.setHeaders = function (headers) {\n\t\t this.options.headers = headers;\n\t\t return this;\n\t\t };\n\t\t /**\n\t\t * Attach a header to the client. All subsequent requests will have this header.\n\t\t */\n\t\t GraphQLClient.prototype.setHeader = function (key, value) {\n\t\t var _a;\n\t\t var headers = this.options.headers;\n\t\t if (headers) {\n\t\t // todo what if headers is in nested array form... ?\n\t\t //@ts-ignore\n\t\t headers[key] = value;\n\t\t }\n\t\t else {\n\t\t this.options.headers = (_a = {}, _a[key] = value, _a);\n\t\t }\n\t\t return this;\n\t\t };\n\t\t /**\n\t\t * Change the client endpoint. All subsequent requests will send to this endpoint.\n\t\t */\n\t\t GraphQLClient.prototype.setEndpoint = function (value) {\n\t\t this.url = value;\n\t\t return this;\n\t\t };\n\t\t return GraphQLClient;\n\t\t}());\n\t\texports.GraphQLClient = GraphQLClient;\n\t\tfunction makeRequest(_a) {\n\t\t var url = _a.url, query = _a.query, variables = _a.variables, headers = _a.headers, operationName = _a.operationName, fetch = _a.fetch, _b = _a.method, method = _b === void 0 ? 'POST' : _b, fetchOptions = _a.fetchOptions, middleware = _a.middleware;\n\t\t return __awaiter(this, void 0, void 0, function () {\n\t\t var fetcher, isBathchingQuery, response, result, successfullyReceivedData, successfullyPassedErrorPolicy, headers_1, status_1, rest, data, errorResult;\n\t\t return __generator(this, function (_c) {\n\t\t switch (_c.label) {\n\t\t case 0:\n\t\t fetcher = method.toUpperCase() === 'POST' ? post : get;\n\t\t isBathchingQuery = Array.isArray(query);\n\t\t return [4 /*yield*/, fetcher({\n\t\t url: url,\n\t\t query: query,\n\t\t variables: variables,\n\t\t operationName: operationName,\n\t\t headers: headers,\n\t\t fetch: fetch,\n\t\t fetchOptions: fetchOptions,\n\t\t middleware: middleware,\n\t\t })];\n\t\t case 1:\n\t\t response = _c.sent();\n\t\t return [4 /*yield*/, getResult(response, fetchOptions.jsonSerializer)];\n\t\t case 2:\n\t\t result = _c.sent();\n\t\t successfullyReceivedData = isBathchingQuery && Array.isArray(result) ? !result.some(function (_a) {\n\t\t var data = _a.data;\n\t\t return !data;\n\t\t }) : !!result.data;\n\t\t successfullyPassedErrorPolicy = !result.errors || fetchOptions.errorPolicy === 'all' || fetchOptions.errorPolicy === 'ignore';\n\t\t if (response.ok && successfullyPassedErrorPolicy && successfullyReceivedData) {\n\t\t headers_1 = response.headers, status_1 = response.status;\n\t\t result.errors, rest = __rest(result, [\"errors\"]);\n\t\t data = fetchOptions.errorPolicy === 'ignore' ? rest : result;\n\t\t return [2 /*return*/, __assign(__assign({}, (isBathchingQuery ? { data: data } : data)), { headers: headers_1, status: status_1 })];\n\t\t }\n\t\t else {\n\t\t errorResult = typeof result === 'string' ? { error: result } : result;\n\t\t throw new types_1.ClientError(__assign(__assign({}, errorResult), { status: response.status, headers: response.headers }), { query: query, variables: variables });\n\t\t }\n\t\t }\n\t\t });\n\t\t });\n\t\t}\n\t\tfunction rawRequest(urlOrOptions, query, variables, requestHeaders) {\n\t\t return __awaiter(this, void 0, void 0, function () {\n\t\t var requestOptions, client;\n\t\t return __generator(this, function (_a) {\n\t\t requestOptions = parseArgs_1.parseRawRequestExtendedArgs(urlOrOptions, query, variables, requestHeaders);\n\t\t client = new GraphQLClient(requestOptions.url);\n\t\t return [2 /*return*/, client.rawRequest(__assign({}, requestOptions))];\n\t\t });\n\t\t });\n\t\t}\n\t\texports.rawRequest = rawRequest;\n\t\tfunction request(urlOrOptions, document) {\n\t\t var variablesAndRequestHeaders = [];\n\t\t for (var _i = 2; _i < arguments.length; _i++) {\n\t\t variablesAndRequestHeaders[_i - 2] = arguments[_i];\n\t\t }\n\t\t return __awaiter(this, void 0, void 0, function () {\n\t\t var variables, requestHeaders, requestOptions, client;\n\t\t return __generator(this, function (_a) {\n\t\t variables = variablesAndRequestHeaders[0], requestHeaders = variablesAndRequestHeaders[1];\n\t\t requestOptions = parseArgs_1.parseRequestExtendedArgs(urlOrOptions, document, variables, requestHeaders);\n\t\t client = new GraphQLClient(requestOptions.url);\n\t\t return [2 /*return*/, client.request(__assign({}, requestOptions))];\n\t\t });\n\t\t });\n\t\t}\n\t\texports.request = request;\n\t\tfunction batchRequests(urlOrOptions, documents, requestHeaders) {\n\t\t return __awaiter(this, void 0, void 0, function () {\n\t\t var requestOptions, client;\n\t\t return __generator(this, function (_a) {\n\t\t requestOptions = parseArgs_1.parseBatchRequestsExtendedArgs(urlOrOptions, documents, requestHeaders);\n\t\t client = new GraphQLClient(requestOptions.url);\n\t\t return [2 /*return*/, client.batchRequests(__assign({}, requestOptions))];\n\t\t });\n\t\t });\n\t\t}\n\t\texports.batchRequests = batchRequests;\n\t\texports.default = request;\n\t\t/**\n\t\t * todo\n\t\t */\n\t\tfunction getResult(response, jsonSerializer) {\n\t\t if (jsonSerializer === void 0) { jsonSerializer = defaultJsonSerializer_1.defaultJsonSerializer; }\n\t\t return __awaiter(this, void 0, void 0, function () {\n\t\t var contentType, _a, _b;\n\t\t return __generator(this, function (_c) {\n\t\t switch (_c.label) {\n\t\t case 0:\n\t\t response.headers.forEach(function (value, key) {\n\t\t if (key.toLowerCase() === 'content-type') {\n\t\t contentType = value;\n\t\t }\n\t\t });\n\t\t if (!(contentType && contentType.toLowerCase().startsWith('application/json'))) return [3 /*break*/, 2];\n\t\t _b = (_a = jsonSerializer).parse;\n\t\t return [4 /*yield*/, response.text()];\n\t\t case 1: return [2 /*return*/, _b.apply(_a, [_c.sent()])];\n\t\t case 2: return [2 /*return*/, response.text()];\n\t\t }\n\t\t });\n\t\t });\n\t\t}\n\t\t/**\n\t\t * helpers\n\t\t */\n\t\tfunction extractOperationName(document) {\n\t\t var _a;\n\t\t var operationName = undefined;\n\t\t var operationDefinitions = document.definitions.filter(function (definition) { return definition.kind === 'OperationDefinition'; });\n\t\t if (operationDefinitions.length === 1) {\n\t\t operationName = (_a = operationDefinitions[0].name) === null || _a === void 0 ? void 0 : _a.value;\n\t\t }\n\t\t return operationName;\n\t\t}\n\t\tfunction resolveRequestDocument(document) {\n\t\t if (typeof document === 'string') {\n\t\t var operationName_1 = undefined;\n\t\t try {\n\t\t var parsedDocument = parser_1.parse(document);\n\t\t operationName_1 = extractOperationName(parsedDocument);\n\t\t }\n\t\t catch (err) {\n\t\t // Failed parsing the document, the operationName will be undefined\n\t\t }\n\t\t return { query: document, operationName: operationName_1 };\n\t\t }\n\t\t var operationName = extractOperationName(document);\n\t\t return { query: printer_1.print(document), operationName: operationName };\n\t\t}\n\t\texports.resolveRequestDocument = resolveRequestDocument;\n\t\tfunction callOrIdentity(value) {\n\t\t return typeof value === 'function' ? value() : value;\n\t\t}\n\t\t/**\n\t\t * Convenience passthrough template tag to get the benefits of tooling for the gql template tag. This does not actually parse the input into a GraphQL DocumentNode like graphql-tag package does. It just returns the string with any variables given interpolated. Can save you a bit of performance and having to install another package.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * import { gql } from 'graphql-request'\n\t\t *\n\t\t * await request('https://foo.bar/graphql', gql`...`)\n\t\t *\n\t\t * @remarks\n\t\t *\n\t\t * Several tools in the Node GraphQL ecosystem are hardcoded to specially treat any template tag named \"gql\". For example see this prettier issue: https://github.com/prettier/prettier/issues/4360. Using this template tag has no runtime effect beyond variable interpolation.\n\t\t */\n\t\tfunction gql(chunks) {\n\t\t var variables = [];\n\t\t for (var _i = 1; _i < arguments.length; _i++) {\n\t\t variables[_i - 1] = arguments[_i];\n\t\t }\n\t\t return chunks.reduce(function (accumulator, chunk, index) { return \"\" + accumulator + chunk + (index in variables ? variables[index] : ''); }, '');\n\t\t}\n\t\texports.gql = gql;\n\t\t/**\n\t\t * Convert Headers instance into regular object\n\t\t */\n\t\tfunction HeadersInstanceToPlainObject(headers) {\n\t\t var o = {};\n\t\t headers.forEach(function (v, k) {\n\t\t o[k] = v;\n\t\t });\n\t\t return o;\n\t\t}\n\t\tvar graphql_ws_1 = requireGraphqlWs();\n\t\tObject.defineProperty(exports, \"GraphQLWebSocketClient\", { enumerable: true, get: function () { return graphql_ws_1.GraphQLWebSocketClient; } });\n\t\t\n} (dist));\n\treturn dist;\n}\n\nvar distExports = requireDist();\n\n/**\n * This enum is used only internally in order to create nominal type for the disabled plugin\n */\nvar EnableIfBranded;\n(function (EnableIfBranded) {\n EnableIfBranded[EnableIfBranded[\"DisabledPlugin\"] = 0] = \"DisabledPlugin\";\n})(EnableIfBranded || (EnableIfBranded = {}));\nfunction isPluginEnabled(t) {\n return t !== EnableIfBranded.DisabledPlugin && t !== null;\n}\n/**\n * Utility function to enable a plugin.\n */\nfunction enableIf(condition, plugin) {\n if (condition) {\n return typeof plugin === 'function' ? plugin() : plugin;\n }\n return EnableIfBranded.DisabledPlugin;\n}\n\n// Note: This file is autogenerated using \"resources/gen-version.js\" script and\n/**\n * An object containing the components of the GraphQL.js version string\n */\n\nconst versionInfo = Object.freeze({\n major: 16,\n minor: 6,\n patch: 0,\n preReleaseTag: null,\n});\n\n/**\n * Returns true if the value acts like a Promise, i.e. has a \"then\" function,\n * otherwise returns false.\n */\nfunction isPromise(value) {\n return (\n typeof (value === null || value === void 0 ? void 0 : value.then) ===\n 'function'\n );\n}\n\nconst MAX_SUGGESTIONS = 5;\n/**\n * Given [ A, B, C ] return ' Did you mean A, B, or C?'.\n */\n\nfunction didYouMean(firstArg, secondArg) {\n const [subMessage, suggestionsArg] = secondArg\n ? [firstArg, secondArg]\n : [undefined, firstArg];\n let message = ' Did you mean ';\n\n if (subMessage) {\n message += subMessage + ' ';\n }\n\n const suggestions = suggestionsArg.map((x) => `\"${x}\"`);\n\n switch (suggestions.length) {\n case 0:\n return '';\n\n case 1:\n return message + suggestions[0] + '?';\n\n case 2:\n return message + suggestions[0] + ' or ' + suggestions[1] + '?';\n }\n\n const selected = suggestions.slice(0, MAX_SUGGESTIONS);\n const lastItem = selected.pop();\n return message + selected.join(', ') + ', or ' + lastItem + '?';\n}\n\n/**\n * Returns the first argument it receives.\n */\nfunction identityFunc(x) {\n return x;\n}\n\n/**\n * Creates a keyed JS object from an array, given a function to produce the keys\n * for each value in the array.\n *\n * This provides a convenient lookup for the array items if the key function\n * produces unique results.\n * ```ts\n * const phoneBook = [\n * { name: 'Jon', num: '555-1234' },\n * { name: 'Jenny', num: '867-5309' }\n * ]\n *\n * const entriesByName = keyMap(\n * phoneBook,\n * entry => entry.name\n * )\n *\n * // {\n * // Jon: { name: 'Jon', num: '555-1234' },\n * // Jenny: { name: 'Jenny', num: '867-5309' }\n * // }\n *\n * const jennyEntry = entriesByName['Jenny']\n *\n * // { name: 'Jenny', num: '857-6309' }\n * ```\n */\nfunction keyMap(list, keyFn) {\n const result = Object.create(null);\n\n for (const item of list) {\n result[keyFn(item)] = item;\n }\n\n return result;\n}\n\n/**\n * Creates a keyed JS object from an array, given a function to produce the keys\n * and a function to produce the values from each item in the array.\n * ```ts\n * const phoneBook = [\n * { name: 'Jon', num: '555-1234' },\n * { name: 'Jenny', num: '867-5309' }\n * ]\n *\n * // { Jon: '555-1234', Jenny: '867-5309' }\n * const phonesByName = keyValMap(\n * phoneBook,\n * entry => entry.name,\n * entry => entry.num\n * )\n * ```\n */\nfunction keyValMap(list, keyFn, valFn) {\n const result = Object.create(null);\n\n for (const item of list) {\n result[keyFn(item)] = valFn(item);\n }\n\n return result;\n}\n\n/**\n * Creates an object map with the same keys as `map` and values generated by\n * running each value of `map` thru `fn`.\n */\nfunction mapValue(map, fn) {\n const result = Object.create(null);\n\n for (const key of Object.keys(map)) {\n result[key] = fn(map[key], key);\n }\n\n return result;\n}\n\n/**\n * Returns a number indicating whether a reference string comes before, or after,\n * or is the same as the given string in natural sort order.\n *\n * See: https://en.wikipedia.org/wiki/Natural_sort_order\n *\n */\nfunction naturalCompare(aStr, bStr) {\n let aIndex = 0;\n let bIndex = 0;\n\n while (aIndex < aStr.length && bIndex < bStr.length) {\n let aChar = aStr.charCodeAt(aIndex);\n let bChar = bStr.charCodeAt(bIndex);\n\n if (isDigit(aChar) && isDigit(bChar)) {\n let aNum = 0;\n\n do {\n ++aIndex;\n aNum = aNum * 10 + aChar - DIGIT_0;\n aChar = aStr.charCodeAt(aIndex);\n } while (isDigit(aChar) && aNum > 0);\n\n let bNum = 0;\n\n do {\n ++bIndex;\n bNum = bNum * 10 + bChar - DIGIT_0;\n bChar = bStr.charCodeAt(bIndex);\n } while (isDigit(bChar) && bNum > 0);\n\n if (aNum < bNum) {\n return -1;\n }\n\n if (aNum > bNum) {\n return 1;\n }\n } else {\n if (aChar < bChar) {\n return -1;\n }\n\n if (aChar > bChar) {\n return 1;\n }\n\n ++aIndex;\n ++bIndex;\n }\n }\n\n return aStr.length - bStr.length;\n}\nconst DIGIT_0 = 48;\nconst DIGIT_9 = 57;\n\nfunction isDigit(code) {\n return !isNaN(code) && DIGIT_0 <= code && code <= DIGIT_9;\n}\n\n/**\n * Given an invalid input string and a list of valid options, returns a filtered\n * list of valid options sorted based on their similarity with the input.\n */\n\nfunction suggestionList(input, options) {\n const optionsByDistance = Object.create(null);\n const lexicalDistance = new LexicalDistance(input);\n const threshold = Math.floor(input.length * 0.4) + 1;\n\n for (const option of options) {\n const distance = lexicalDistance.measure(option, threshold);\n\n if (distance !== undefined) {\n optionsByDistance[option] = distance;\n }\n }\n\n return Object.keys(optionsByDistance).sort((a, b) => {\n const distanceDiff = optionsByDistance[a] - optionsByDistance[b];\n return distanceDiff !== 0 ? distanceDiff : naturalCompare(a, b);\n });\n}\n/**\n * Computes the lexical distance between strings A and B.\n *\n * The \"distance\" between two strings is given by counting the minimum number\n * of edits needed to transform string A into string B. An edit can be an\n * insertion, deletion, or substitution of a single character, or a swap of two\n * adjacent characters.\n *\n * Includes a custom alteration from Damerau-Levenshtein to treat case changes\n * as a single edit which helps identify mis-cased values with an edit distance\n * of 1.\n *\n * This distance can be useful for detecting typos in input or sorting\n */\n\nclass LexicalDistance {\n constructor(input) {\n this._input = input;\n this._inputLowerCase = input.toLowerCase();\n this._inputArray = stringToArray(this._inputLowerCase);\n this._rows = [\n new Array(input.length + 1).fill(0),\n new Array(input.length + 1).fill(0),\n new Array(input.length + 1).fill(0),\n ];\n }\n\n measure(option, threshold) {\n if (this._input === option) {\n return 0;\n }\n\n const optionLowerCase = option.toLowerCase(); // Any case change counts as a single edit\n\n if (this._inputLowerCase === optionLowerCase) {\n return 1;\n }\n\n let a = stringToArray(optionLowerCase);\n let b = this._inputArray;\n\n if (a.length < b.length) {\n const tmp = a;\n a = b;\n b = tmp;\n }\n\n const aLength = a.length;\n const bLength = b.length;\n\n if (aLength - bLength > threshold) {\n return undefined;\n }\n\n const rows = this._rows;\n\n for (let j = 0; j <= bLength; j++) {\n rows[0][j] = j;\n }\n\n for (let i = 1; i <= aLength; i++) {\n const upRow = rows[(i - 1) % 3];\n const currentRow = rows[i % 3];\n let smallestCell = (currentRow[0] = i);\n\n for (let j = 1; j <= bLength; j++) {\n const cost = a[i - 1] === b[j - 1] ? 0 : 1;\n let currentCell = Math.min(\n upRow[j] + 1, // delete\n currentRow[j - 1] + 1, // insert\n upRow[j - 1] + cost, // substitute\n );\n\n if (i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b[j - 1]) {\n // transposition\n const doubleDiagonalCell = rows[(i - 2) % 3][j - 2];\n currentCell = Math.min(currentCell, doubleDiagonalCell + 1);\n }\n\n if (currentCell < smallestCell) {\n smallestCell = currentCell;\n }\n\n currentRow[j] = currentCell;\n } // Early exit, since distance can't go smaller than smallest element of the previous row.\n\n if (smallestCell > threshold) {\n return undefined;\n }\n }\n\n const distance = rows[aLength % 3][bLength];\n return distance <= threshold ? distance : undefined;\n }\n}\n\nfunction stringToArray(str) {\n const strLength = str.length;\n const array = new Array(strLength);\n\n for (let i = 0; i < strLength; ++i) {\n array[i] = str.charCodeAt(i);\n }\n\n return array;\n}\n\nfunction toObjMap(obj) {\n if (obj == null) {\n return Object.create(null);\n }\n\n if (Object.getPrototypeOf(obj) === null) {\n return obj;\n }\n\n const map = Object.create(null);\n\n for (const [key, value] of Object.entries(obj)) {\n map[key] = value;\n }\n\n return map;\n}\n\n/**\n * Produces a JavaScript value given a GraphQL Value AST.\n *\n * Unlike `valueFromAST()`, no type is provided. The resulting JavaScript value\n * will reflect the provided GraphQL value AST.\n *\n * | GraphQL Value | JavaScript Value |\n * | -------------------- | ---------------- |\n * | Input Object | Object |\n * | List | Array |\n * | Boolean | Boolean |\n * | String / Enum | String |\n * | Int / Float | Number |\n * | Null | null |\n *\n */\n\nfunction valueFromASTUntyped(valueNode, variables) {\n switch (valueNode.kind) {\n case Kind.NULL:\n return null;\n\n case Kind.INT:\n return parseInt(valueNode.value, 10);\n\n case Kind.FLOAT:\n return parseFloat(valueNode.value);\n\n case Kind.STRING:\n case Kind.ENUM:\n case Kind.BOOLEAN:\n return valueNode.value;\n\n case Kind.LIST:\n return valueNode.values.map((node) =>\n valueFromASTUntyped(node, variables),\n );\n\n case Kind.OBJECT:\n return keyValMap(\n valueNode.fields,\n (field) => field.name.value,\n (field) => valueFromASTUntyped(field.value, variables),\n );\n\n case Kind.VARIABLE:\n return variables === null || variables === void 0\n ? void 0\n : variables[valueNode.name.value];\n }\n}\n\n/**\n * Upholds the spec rules about naming.\n */\n\nfunction assertName(name) {\n name != null || devAssert(false, 'Must provide name.');\n typeof name === 'string' || devAssert(false, 'Expected name to be a string.');\n\n if (name.length === 0) {\n throw new GraphQLError('Expected name to be a non-empty string.');\n }\n\n for (let i = 1; i < name.length; ++i) {\n if (!isNameContinue(name.charCodeAt(i))) {\n throw new GraphQLError(\n `Names must only contain [_a-zA-Z0-9] but \"${name}\" does not.`,\n );\n }\n }\n\n if (!isNameStart(name.charCodeAt(0))) {\n throw new GraphQLError(\n `Names must start with [_a-zA-Z] but \"${name}\" does not.`,\n );\n }\n\n return name;\n}\n/**\n * Upholds the spec rules about naming enum values.\n *\n * @internal\n */\n\nfunction assertEnumValueName(name) {\n if (name === 'true' || name === 'false' || name === 'null') {\n throw new GraphQLError(`Enum values cannot be named: ${name}`);\n }\n\n return assertName(name);\n}\n\nfunction isType(type) {\n return (\n isScalarType(type) ||\n isObjectType(type) ||\n isInterfaceType(type) ||\n isUnionType(type) ||\n isEnumType(type) ||\n isInputObjectType(type) ||\n isListType(type) ||\n isNonNullType(type)\n );\n}\n/**\n * There are predicates for each kind of GraphQL type.\n */\n\nfunction isScalarType(type) {\n return instanceOf(type, GraphQLScalarType);\n}\nfunction isObjectType(type) {\n return instanceOf(type, GraphQLObjectType);\n}\nfunction isInterfaceType(type) {\n return instanceOf(type, GraphQLInterfaceType);\n}\nfunction isUnionType(type) {\n return instanceOf(type, GraphQLUnionType);\n}\nfunction isEnumType(type) {\n return instanceOf(type, GraphQLEnumType);\n}\nfunction isInputObjectType(type) {\n return instanceOf(type, GraphQLInputObjectType);\n}\nfunction isListType(type) {\n return instanceOf(type, GraphQLList);\n}\nfunction isNonNullType(type) {\n return instanceOf(type, GraphQLNonNull);\n}\n/**\n * These types may be used as input types for arguments and directives.\n */\n\nfunction isInputType(type) {\n return (\n isScalarType(type) ||\n isEnumType(type) ||\n isInputObjectType(type) ||\n (isWrappingType(type) && isInputType(type.ofType))\n );\n}\n/**\n * These types may be used as output types as the result of fields.\n */\n\nfunction isOutputType(type) {\n return (\n isScalarType(type) ||\n isObjectType(type) ||\n isInterfaceType(type) ||\n isUnionType(type) ||\n isEnumType(type) ||\n (isWrappingType(type) && isOutputType(type.ofType))\n );\n}\n/**\n * These types may describe types which may be leaf values.\n */\n\nfunction isLeafType(type) {\n return isScalarType(type) || isEnumType(type);\n}\n/**\n * These types may describe the parent context of a selection set.\n */\n\nfunction isCompositeType(type) {\n return isObjectType(type) || isInterfaceType(type) || isUnionType(type);\n}\n/**\n * These types may describe the parent context of a selection set.\n */\n\nfunction isAbstractType(type) {\n return isInterfaceType(type) || isUnionType(type);\n}\n/**\n * List Type Wrapper\n *\n * A list is a wrapping type which points to another type.\n * Lists are often created within the context of defining the fields of\n * an object type.\n *\n * Example:\n *\n * ```ts\n * const PersonType = new GraphQLObjectType({\n * name: 'Person',\n * fields: () => ({\n * parents: { type: new GraphQLList(PersonType) },\n * children: { type: new GraphQLList(PersonType) },\n * })\n * })\n * ```\n */\n\nclass GraphQLList {\n constructor(ofType) {\n isType(ofType) ||\n devAssert(false, `Expected ${inspect$1(ofType)} to be a GraphQL type.`);\n this.ofType = ofType;\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLList';\n }\n\n toString() {\n return '[' + String(this.ofType) + ']';\n }\n\n toJSON() {\n return this.toString();\n }\n}\n/**\n * Non-Null Type Wrapper\n *\n * A non-null is a wrapping type which points to another type.\n * Non-null types enforce that their values are never null and can ensure\n * an error is raised if this ever occurs during a request. It is useful for\n * fields which you can make a strong guarantee on non-nullability, for example\n * usually the id field of a database row will never be null.\n *\n * Example:\n *\n * ```ts\n * const RowType = new GraphQLObjectType({\n * name: 'Row',\n * fields: () => ({\n * id: { type: new GraphQLNonNull(GraphQLString) },\n * })\n * })\n * ```\n * Note: the enforcement of non-nullability occurs within the executor.\n */\n\nclass GraphQLNonNull {\n constructor(ofType) {\n isNullableType(ofType) ||\n devAssert(\n false,\n `Expected ${inspect$1(ofType)} to be a GraphQL nullable type.`,\n );\n this.ofType = ofType;\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLNonNull';\n }\n\n toString() {\n return String(this.ofType) + '!';\n }\n\n toJSON() {\n return this.toString();\n }\n}\n/**\n * These types wrap and modify other types\n */\n\nfunction isWrappingType(type) {\n return isListType(type) || isNonNullType(type);\n}\n/**\n * These types can all accept null as a value.\n */\n\nfunction isNullableType(type) {\n return isType(type) && !isNonNullType(type);\n}\nfunction getNullableType(type) {\n if (type) {\n return isNonNullType(type) ? type.ofType : type;\n }\n}\n/**\n * These named types do not include modifiers like List or NonNull.\n */\n\nfunction isNamedType(type) {\n return (\n isScalarType(type) ||\n isObjectType(type) ||\n isInterfaceType(type) ||\n isUnionType(type) ||\n isEnumType(type) ||\n isInputObjectType(type)\n );\n}\nfunction getNamedType(type) {\n if (type) {\n let unwrappedType = type;\n\n while (isWrappingType(unwrappedType)) {\n unwrappedType = unwrappedType.ofType;\n }\n\n return unwrappedType;\n }\n}\n/**\n * Used while defining GraphQL types to allow for circular references in\n * otherwise immutable type definitions.\n */\n\nfunction resolveReadonlyArrayThunk(thunk) {\n return typeof thunk === 'function' ? thunk() : thunk;\n}\nfunction resolveObjMapThunk(thunk) {\n return typeof thunk === 'function' ? thunk() : thunk;\n}\n/**\n * Custom extensions\n *\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n */\n\n/**\n * Scalar Type Definition\n *\n * The leaf values of any request and input values to arguments are\n * Scalars (or Enums) and are defined with a name and a series of functions\n * used to parse input from ast or variables and to ensure validity.\n *\n * If a type's serialize function returns `null` or does not return a value\n * (i.e. it returns `undefined`) then an error will be raised and a `null`\n * value will be returned in the response. It is always better to validate\n *\n * Example:\n *\n * ```ts\n * const OddType = new GraphQLScalarType({\n * name: 'Odd',\n * serialize(value) {\n * if (!Number.isFinite(value)) {\n * throw new Error(\n * `Scalar \"Odd\" cannot represent \"${value}\" since it is not a finite number.`,\n * );\n * }\n *\n * if (value % 2 === 0) {\n * throw new Error(`Scalar \"Odd\" cannot represent \"${value}\" since it is even.`);\n * }\n * return value;\n * }\n * });\n * ```\n */\nclass GraphQLScalarType {\n constructor(config) {\n var _config$parseValue,\n _config$serialize,\n _config$parseLiteral,\n _config$extensionASTN;\n\n const parseValue =\n (_config$parseValue = config.parseValue) !== null &&\n _config$parseValue !== void 0\n ? _config$parseValue\n : identityFunc;\n this.name = assertName(config.name);\n this.description = config.description;\n this.specifiedByURL = config.specifiedByURL;\n this.serialize =\n (_config$serialize = config.serialize) !== null &&\n _config$serialize !== void 0\n ? _config$serialize\n : identityFunc;\n this.parseValue = parseValue;\n this.parseLiteral =\n (_config$parseLiteral = config.parseLiteral) !== null &&\n _config$parseLiteral !== void 0\n ? _config$parseLiteral\n : (node, variables) => parseValue(valueFromASTUntyped(node, variables));\n this.extensions = toObjMap(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes =\n (_config$extensionASTN = config.extensionASTNodes) !== null &&\n _config$extensionASTN !== void 0\n ? _config$extensionASTN\n : [];\n config.specifiedByURL == null ||\n typeof config.specifiedByURL === 'string' ||\n devAssert(\n false,\n `${this.name} must provide \"specifiedByURL\" as a string, ` +\n `but got: ${inspect$1(config.specifiedByURL)}.`,\n );\n config.serialize == null ||\n typeof config.serialize === 'function' ||\n devAssert(\n false,\n `${this.name} must provide \"serialize\" function. If this custom Scalar is also used as an input type, ensure \"parseValue\" and \"parseLiteral\" functions are also provided.`,\n );\n\n if (config.parseLiteral) {\n (typeof config.parseValue === 'function' &&\n typeof config.parseLiteral === 'function') ||\n devAssert(\n false,\n `${this.name} must provide both \"parseValue\" and \"parseLiteral\" functions.`,\n );\n }\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLScalarType';\n }\n\n toConfig() {\n return {\n name: this.name,\n description: this.description,\n specifiedByURL: this.specifiedByURL,\n serialize: this.serialize,\n parseValue: this.parseValue,\n parseLiteral: this.parseLiteral,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes,\n };\n }\n\n toString() {\n return this.name;\n }\n\n toJSON() {\n return this.toString();\n }\n}\n\n/**\n * Object Type Definition\n *\n * Almost all of the GraphQL types you define will be object types. Object types\n * have a name, but most importantly describe their fields.\n *\n * Example:\n *\n * ```ts\n * const AddressType = new GraphQLObjectType({\n * name: 'Address',\n * fields: {\n * street: { type: GraphQLString },\n * number: { type: GraphQLInt },\n * formatted: {\n * type: GraphQLString,\n * resolve(obj) {\n * return obj.number + ' ' + obj.street\n * }\n * }\n * }\n * });\n * ```\n *\n * When two types need to refer to each other, or a type needs to refer to\n * itself in a field, you can use a function expression (aka a closure or a\n * thunk) to supply the fields lazily.\n *\n * Example:\n *\n * ```ts\n * const PersonType = new GraphQLObjectType({\n * name: 'Person',\n * fields: () => ({\n * name: { type: GraphQLString },\n * bestFriend: { type: PersonType },\n * })\n * });\n * ```\n */\nclass GraphQLObjectType {\n constructor(config) {\n var _config$extensionASTN2;\n\n this.name = assertName(config.name);\n this.description = config.description;\n this.isTypeOf = config.isTypeOf;\n this.extensions = toObjMap(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes =\n (_config$extensionASTN2 = config.extensionASTNodes) !== null &&\n _config$extensionASTN2 !== void 0\n ? _config$extensionASTN2\n : [];\n\n this._fields = () => defineFieldMap(config);\n\n this._interfaces = () => defineInterfaces(config);\n\n config.isTypeOf == null ||\n typeof config.isTypeOf === 'function' ||\n devAssert(\n false,\n `${this.name} must provide \"isTypeOf\" as a function, ` +\n `but got: ${inspect$1(config.isTypeOf)}.`,\n );\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLObjectType';\n }\n\n getFields() {\n if (typeof this._fields === 'function') {\n this._fields = this._fields();\n }\n\n return this._fields;\n }\n\n getInterfaces() {\n if (typeof this._interfaces === 'function') {\n this._interfaces = this._interfaces();\n }\n\n return this._interfaces;\n }\n\n toConfig() {\n return {\n name: this.name,\n description: this.description,\n interfaces: this.getInterfaces(),\n fields: fieldsToFieldsConfig(this.getFields()),\n isTypeOf: this.isTypeOf,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes,\n };\n }\n\n toString() {\n return this.name;\n }\n\n toJSON() {\n return this.toString();\n }\n}\n\nfunction defineInterfaces(config) {\n var _config$interfaces;\n\n const interfaces = resolveReadonlyArrayThunk(\n (_config$interfaces = config.interfaces) !== null &&\n _config$interfaces !== void 0\n ? _config$interfaces\n : [],\n );\n Array.isArray(interfaces) ||\n devAssert(\n false,\n `${config.name} interfaces must be an Array or a function which returns an Array.`,\n );\n return interfaces;\n}\n\nfunction defineFieldMap(config) {\n const fieldMap = resolveObjMapThunk(config.fields);\n isPlainObj(fieldMap) ||\n devAssert(\n false,\n `${config.name} fields must be an object with field names as keys or a function which returns such an object.`,\n );\n return mapValue(fieldMap, (fieldConfig, fieldName) => {\n var _fieldConfig$args;\n\n isPlainObj(fieldConfig) ||\n devAssert(\n false,\n `${config.name}.${fieldName} field config must be an object.`,\n );\n fieldConfig.resolve == null ||\n typeof fieldConfig.resolve === 'function' ||\n devAssert(\n false,\n `${config.name}.${fieldName} field resolver must be a function if ` +\n `provided, but got: ${inspect$1(fieldConfig.resolve)}.`,\n );\n const argsConfig =\n (_fieldConfig$args = fieldConfig.args) !== null &&\n _fieldConfig$args !== void 0\n ? _fieldConfig$args\n : {};\n isPlainObj(argsConfig) ||\n devAssert(\n false,\n `${config.name}.${fieldName} args must be an object with argument names as keys.`,\n );\n return {\n name: assertName(fieldName),\n description: fieldConfig.description,\n type: fieldConfig.type,\n args: defineArguments(argsConfig),\n resolve: fieldConfig.resolve,\n subscribe: fieldConfig.subscribe,\n deprecationReason: fieldConfig.deprecationReason,\n extensions: toObjMap(fieldConfig.extensions),\n astNode: fieldConfig.astNode,\n };\n });\n}\n\nfunction defineArguments(config) {\n return Object.entries(config).map(([argName, argConfig]) => ({\n name: assertName(argName),\n description: argConfig.description,\n type: argConfig.type,\n defaultValue: argConfig.defaultValue,\n deprecationReason: argConfig.deprecationReason,\n extensions: toObjMap(argConfig.extensions),\n astNode: argConfig.astNode,\n }));\n}\n\nfunction isPlainObj(obj) {\n return isObjectLike(obj) && !Array.isArray(obj);\n}\n\nfunction fieldsToFieldsConfig(fields) {\n return mapValue(fields, (field) => ({\n description: field.description,\n type: field.type,\n args: argsToArgsConfig(field.args),\n resolve: field.resolve,\n subscribe: field.subscribe,\n deprecationReason: field.deprecationReason,\n extensions: field.extensions,\n astNode: field.astNode,\n }));\n}\n/**\n * @internal\n */\n\nfunction argsToArgsConfig(args) {\n return keyValMap(\n args,\n (arg) => arg.name,\n (arg) => ({\n description: arg.description,\n type: arg.type,\n defaultValue: arg.defaultValue,\n deprecationReason: arg.deprecationReason,\n extensions: arg.extensions,\n astNode: arg.astNode,\n }),\n );\n}\nfunction isRequiredArgument(arg) {\n return isNonNullType(arg.type) && arg.defaultValue === undefined;\n}\n\n/**\n * Interface Type Definition\n *\n * When a field can return one of a heterogeneous set of types, a Interface type\n * is used to describe what types are possible, what fields are in common across\n * all types, as well as a function to determine which type is actually used\n * when the field is resolved.\n *\n * Example:\n *\n * ```ts\n * const EntityType = new GraphQLInterfaceType({\n * name: 'Entity',\n * fields: {\n * name: { type: GraphQLString }\n * }\n * });\n * ```\n */\nclass GraphQLInterfaceType {\n constructor(config) {\n var _config$extensionASTN3;\n\n this.name = assertName(config.name);\n this.description = config.description;\n this.resolveType = config.resolveType;\n this.extensions = toObjMap(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes =\n (_config$extensionASTN3 = config.extensionASTNodes) !== null &&\n _config$extensionASTN3 !== void 0\n ? _config$extensionASTN3\n : [];\n this._fields = defineFieldMap.bind(undefined, config);\n this._interfaces = defineInterfaces.bind(undefined, config);\n config.resolveType == null ||\n typeof config.resolveType === 'function' ||\n devAssert(\n false,\n `${this.name} must provide \"resolveType\" as a function, ` +\n `but got: ${inspect$1(config.resolveType)}.`,\n );\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLInterfaceType';\n }\n\n getFields() {\n if (typeof this._fields === 'function') {\n this._fields = this._fields();\n }\n\n return this._fields;\n }\n\n getInterfaces() {\n if (typeof this._interfaces === 'function') {\n this._interfaces = this._interfaces();\n }\n\n return this._interfaces;\n }\n\n toConfig() {\n return {\n name: this.name,\n description: this.description,\n interfaces: this.getInterfaces(),\n fields: fieldsToFieldsConfig(this.getFields()),\n resolveType: this.resolveType,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes,\n };\n }\n\n toString() {\n return this.name;\n }\n\n toJSON() {\n return this.toString();\n }\n}\n\n/**\n * Union Type Definition\n *\n * When a field can return one of a heterogeneous set of types, a Union type\n * is used to describe what types are possible as well as providing a function\n * to determine which type is actually used when the field is resolved.\n *\n * Example:\n *\n * ```ts\n * const PetType = new GraphQLUnionType({\n * name: 'Pet',\n * types: [ DogType, CatType ],\n * resolveType(value) {\n * if (value instanceof Dog) {\n * return DogType;\n * }\n * if (value instanceof Cat) {\n * return CatType;\n * }\n * }\n * });\n * ```\n */\nclass GraphQLUnionType {\n constructor(config) {\n var _config$extensionASTN4;\n\n this.name = assertName(config.name);\n this.description = config.description;\n this.resolveType = config.resolveType;\n this.extensions = toObjMap(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes =\n (_config$extensionASTN4 = config.extensionASTNodes) !== null &&\n _config$extensionASTN4 !== void 0\n ? _config$extensionASTN4\n : [];\n this._types = defineTypes.bind(undefined, config);\n config.resolveType == null ||\n typeof config.resolveType === 'function' ||\n devAssert(\n false,\n `${this.name} must provide \"resolveType\" as a function, ` +\n `but got: ${inspect$1(config.resolveType)}.`,\n );\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLUnionType';\n }\n\n getTypes() {\n if (typeof this._types === 'function') {\n this._types = this._types();\n }\n\n return this._types;\n }\n\n toConfig() {\n return {\n name: this.name,\n description: this.description,\n types: this.getTypes(),\n resolveType: this.resolveType,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes,\n };\n }\n\n toString() {\n return this.name;\n }\n\n toJSON() {\n return this.toString();\n }\n}\n\nfunction defineTypes(config) {\n const types = resolveReadonlyArrayThunk(config.types);\n Array.isArray(types) ||\n devAssert(\n false,\n `Must provide Array of types or a function which returns such an array for Union ${config.name}.`,\n );\n return types;\n}\n\n/**\n * Enum Type Definition\n *\n * Some leaf values of requests and input values are Enums. GraphQL serializes\n * Enum values as strings, however internally Enums can be represented by any\n * kind of type, often integers.\n *\n * Example:\n *\n * ```ts\n * const RGBType = new GraphQLEnumType({\n * name: 'RGB',\n * values: {\n * RED: { value: 0 },\n * GREEN: { value: 1 },\n * BLUE: { value: 2 }\n * }\n * });\n * ```\n *\n * Note: If a value is not provided in a definition, the name of the enum value\n * will be used as its internal value.\n */\nclass GraphQLEnumType {\n /* */\n constructor(config) {\n var _config$extensionASTN5;\n\n this.name = assertName(config.name);\n this.description = config.description;\n this.extensions = toObjMap(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes =\n (_config$extensionASTN5 = config.extensionASTNodes) !== null &&\n _config$extensionASTN5 !== void 0\n ? _config$extensionASTN5\n : [];\n this._values = defineEnumValues(this.name, config.values);\n this._valueLookup = new Map(\n this._values.map((enumValue) => [enumValue.value, enumValue]),\n );\n this._nameLookup = keyMap(this._values, (value) => value.name);\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLEnumType';\n }\n\n getValues() {\n return this._values;\n }\n\n getValue(name) {\n return this._nameLookup[name];\n }\n\n serialize(outputValue) {\n const enumValue = this._valueLookup.get(outputValue);\n\n if (enumValue === undefined) {\n throw new GraphQLError(\n `Enum \"${this.name}\" cannot represent value: ${inspect$1(outputValue)}`,\n );\n }\n\n return enumValue.name;\n }\n\n parseValue(inputValue) /* T */\n {\n if (typeof inputValue !== 'string') {\n const valueStr = inspect$1(inputValue);\n throw new GraphQLError(\n `Enum \"${this.name}\" cannot represent non-string value: ${valueStr}.` +\n didYouMeanEnumValue(this, valueStr),\n );\n }\n\n const enumValue = this.getValue(inputValue);\n\n if (enumValue == null) {\n throw new GraphQLError(\n `Value \"${inputValue}\" does not exist in \"${this.name}\" enum.` +\n didYouMeanEnumValue(this, inputValue),\n );\n }\n\n return enumValue.value;\n }\n\n parseLiteral(valueNode, _variables) /* T */\n {\n // Note: variables will be resolved to a value before calling this function.\n if (valueNode.kind !== Kind.ENUM) {\n const valueStr = print(valueNode);\n throw new GraphQLError(\n `Enum \"${this.name}\" cannot represent non-enum value: ${valueStr}.` +\n didYouMeanEnumValue(this, valueStr),\n {\n nodes: valueNode,\n },\n );\n }\n\n const enumValue = this.getValue(valueNode.value);\n\n if (enumValue == null) {\n const valueStr = print(valueNode);\n throw new GraphQLError(\n `Value \"${valueStr}\" does not exist in \"${this.name}\" enum.` +\n didYouMeanEnumValue(this, valueStr),\n {\n nodes: valueNode,\n },\n );\n }\n\n return enumValue.value;\n }\n\n toConfig() {\n const values = keyValMap(\n this.getValues(),\n (value) => value.name,\n (value) => ({\n description: value.description,\n value: value.value,\n deprecationReason: value.deprecationReason,\n extensions: value.extensions,\n astNode: value.astNode,\n }),\n );\n return {\n name: this.name,\n description: this.description,\n values,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes,\n };\n }\n\n toString() {\n return this.name;\n }\n\n toJSON() {\n return this.toString();\n }\n}\n\nfunction didYouMeanEnumValue(enumType, unknownValueStr) {\n const allNames = enumType.getValues().map((value) => value.name);\n const suggestedValues = suggestionList(unknownValueStr, allNames);\n return didYouMean('the enum value', suggestedValues);\n}\n\nfunction defineEnumValues(typeName, valueMap) {\n isPlainObj(valueMap) ||\n devAssert(\n false,\n `${typeName} values must be an object with value names as keys.`,\n );\n return Object.entries(valueMap).map(([valueName, valueConfig]) => {\n isPlainObj(valueConfig) ||\n devAssert(\n false,\n `${typeName}.${valueName} must refer to an object with a \"value\" key ` +\n `representing an internal value but got: ${inspect$1(valueConfig)}.`,\n );\n return {\n name: assertEnumValueName(valueName),\n description: valueConfig.description,\n value: valueConfig.value !== undefined ? valueConfig.value : valueName,\n deprecationReason: valueConfig.deprecationReason,\n extensions: toObjMap(valueConfig.extensions),\n astNode: valueConfig.astNode,\n };\n });\n}\n\n/**\n * Input Object Type Definition\n *\n * An input object defines a structured collection of fields which may be\n * supplied to a field argument.\n *\n * Using `NonNull` will ensure that a value must be provided by the query\n *\n * Example:\n *\n * ```ts\n * const GeoPoint = new GraphQLInputObjectType({\n * name: 'GeoPoint',\n * fields: {\n * lat: { type: new GraphQLNonNull(GraphQLFloat) },\n * lon: { type: new GraphQLNonNull(GraphQLFloat) },\n * alt: { type: GraphQLFloat, defaultValue: 0 },\n * }\n * });\n * ```\n */\nclass GraphQLInputObjectType {\n constructor(config) {\n var _config$extensionASTN6;\n\n this.name = assertName(config.name);\n this.description = config.description;\n this.extensions = toObjMap(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes =\n (_config$extensionASTN6 = config.extensionASTNodes) !== null &&\n _config$extensionASTN6 !== void 0\n ? _config$extensionASTN6\n : [];\n this._fields = defineInputFieldMap.bind(undefined, config);\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLInputObjectType';\n }\n\n getFields() {\n if (typeof this._fields === 'function') {\n this._fields = this._fields();\n }\n\n return this._fields;\n }\n\n toConfig() {\n const fields = mapValue(this.getFields(), (field) => ({\n description: field.description,\n type: field.type,\n defaultValue: field.defaultValue,\n deprecationReason: field.deprecationReason,\n extensions: field.extensions,\n astNode: field.astNode,\n }));\n return {\n name: this.name,\n description: this.description,\n fields,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes,\n };\n }\n\n toString() {\n return this.name;\n }\n\n toJSON() {\n return this.toString();\n }\n}\n\nfunction defineInputFieldMap(config) {\n const fieldMap = resolveObjMapThunk(config.fields);\n isPlainObj(fieldMap) ||\n devAssert(\n false,\n `${config.name} fields must be an object with field names as keys or a function which returns such an object.`,\n );\n return mapValue(fieldMap, (fieldConfig, fieldName) => {\n !('resolve' in fieldConfig) ||\n devAssert(\n false,\n `${config.name}.${fieldName} field has a resolve property, but Input Types cannot define resolvers.`,\n );\n return {\n name: assertName(fieldName),\n description: fieldConfig.description,\n type: fieldConfig.type,\n defaultValue: fieldConfig.defaultValue,\n deprecationReason: fieldConfig.deprecationReason,\n extensions: toObjMap(fieldConfig.extensions),\n astNode: fieldConfig.astNode,\n };\n });\n}\n\nfunction isRequiredInputField(field) {\n return isNonNullType(field.type) && field.defaultValue === undefined;\n}\n\n/**\n * Provided two types, return true if the types are equal (invariant).\n */\nfunction isEqualType(typeA, typeB) {\n // Equivalent types are equal.\n if (typeA === typeB) {\n return true;\n } // If either type is non-null, the other must also be non-null.\n\n if (isNonNullType(typeA) && isNonNullType(typeB)) {\n return isEqualType(typeA.ofType, typeB.ofType);\n } // If either type is a list, the other must also be a list.\n\n if (isListType(typeA) && isListType(typeB)) {\n return isEqualType(typeA.ofType, typeB.ofType);\n } // Otherwise the types are not equal.\n\n return false;\n}\n/**\n * Provided a type and a super type, return true if the first type is either\n * equal or a subset of the second super type (covariant).\n */\n\nfunction isTypeSubTypeOf(schema, maybeSubType, superType) {\n // Equivalent type is a valid subtype\n if (maybeSubType === superType) {\n return true;\n } // If superType is non-null, maybeSubType must also be non-null.\n\n if (isNonNullType(superType)) {\n if (isNonNullType(maybeSubType)) {\n return isTypeSubTypeOf(schema, maybeSubType.ofType, superType.ofType);\n }\n\n return false;\n }\n\n if (isNonNullType(maybeSubType)) {\n // If superType is nullable, maybeSubType may be non-null or nullable.\n return isTypeSubTypeOf(schema, maybeSubType.ofType, superType);\n } // If superType type is a list, maybeSubType type must also be a list.\n\n if (isListType(superType)) {\n if (isListType(maybeSubType)) {\n return isTypeSubTypeOf(schema, maybeSubType.ofType, superType.ofType);\n }\n\n return false;\n }\n\n if (isListType(maybeSubType)) {\n // If superType is not a list, maybeSubType must also be not a list.\n return false;\n } // If superType type is an abstract type, check if it is super type of maybeSubType.\n // Otherwise, the child type is not a valid subtype of the parent type.\n\n return (\n isAbstractType(superType) &&\n (isInterfaceType(maybeSubType) || isObjectType(maybeSubType)) &&\n schema.isSubType(superType, maybeSubType)\n );\n}\n/**\n * Provided two composite types, determine if they \"overlap\". Two composite\n * types overlap when the Sets of possible concrete types for each intersect.\n *\n * This is often used to determine if a fragment of a given type could possibly\n * be visited in a context of another type.\n *\n * This function is commutative.\n */\n\nfunction doTypesOverlap(schema, typeA, typeB) {\n // Equivalent types overlap\n if (typeA === typeB) {\n return true;\n }\n\n if (isAbstractType(typeA)) {\n if (isAbstractType(typeB)) {\n // If both types are abstract, then determine if there is any intersection\n // between possible concrete types of each.\n return schema\n .getPossibleTypes(typeA)\n .some((type) => schema.isSubType(typeB, type));\n } // Determine if the latter type is a possible concrete type of the former.\n\n return schema.isSubType(typeA, typeB);\n }\n\n if (isAbstractType(typeB)) {\n // Determine if the former type is a possible concrete type of the latter.\n return schema.isSubType(typeB, typeA);\n } // Otherwise the types do not overlap.\n\n return false;\n}\n\n/**\n * Maximum possible Int value as per GraphQL Spec (32-bit signed integer).\n * n.b. This differs from JavaScript's numbers that are IEEE 754 doubles safe up-to 2^53 - 1\n * */\n\nconst GRAPHQL_MAX_INT = 2147483647;\n/**\n * Minimum possible Int value as per GraphQL Spec (32-bit signed integer).\n * n.b. This differs from JavaScript's numbers that are IEEE 754 doubles safe starting at -(2^53 - 1)\n * */\n\nconst GRAPHQL_MIN_INT = -2147483648;\nconst GraphQLInt = new GraphQLScalarType({\n name: 'Int',\n description:\n 'The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.',\n\n serialize(outputValue) {\n const coercedValue = serializeObject(outputValue);\n\n if (typeof coercedValue === 'boolean') {\n return coercedValue ? 1 : 0;\n }\n\n let num = coercedValue;\n\n if (typeof coercedValue === 'string' && coercedValue !== '') {\n num = Number(coercedValue);\n }\n\n if (typeof num !== 'number' || !Number.isInteger(num)) {\n throw new GraphQLError(\n `Int cannot represent non-integer value: ${inspect$1(coercedValue)}`,\n );\n }\n\n if (num > GRAPHQL_MAX_INT || num < GRAPHQL_MIN_INT) {\n throw new GraphQLError(\n 'Int cannot represent non 32-bit signed integer value: ' +\n inspect$1(coercedValue),\n );\n }\n\n return num;\n },\n\n parseValue(inputValue) {\n if (typeof inputValue !== 'number' || !Number.isInteger(inputValue)) {\n throw new GraphQLError(\n `Int cannot represent non-integer value: ${inspect$1(inputValue)}`,\n );\n }\n\n if (inputValue > GRAPHQL_MAX_INT || inputValue < GRAPHQL_MIN_INT) {\n throw new GraphQLError(\n `Int cannot represent non 32-bit signed integer value: ${inputValue}`,\n );\n }\n\n return inputValue;\n },\n\n parseLiteral(valueNode) {\n if (valueNode.kind !== Kind.INT) {\n throw new GraphQLError(\n `Int cannot represent non-integer value: ${print(valueNode)}`,\n {\n nodes: valueNode,\n },\n );\n }\n\n const num = parseInt(valueNode.value, 10);\n\n if (num > GRAPHQL_MAX_INT || num < GRAPHQL_MIN_INT) {\n throw new GraphQLError(\n `Int cannot represent non 32-bit signed integer value: ${valueNode.value}`,\n {\n nodes: valueNode,\n },\n );\n }\n\n return num;\n },\n});\nconst GraphQLFloat = new GraphQLScalarType({\n name: 'Float',\n description:\n 'The `Float` scalar type represents signed double-precision fractional values as specified by [IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point).',\n\n serialize(outputValue) {\n const coercedValue = serializeObject(outputValue);\n\n if (typeof coercedValue === 'boolean') {\n return coercedValue ? 1 : 0;\n }\n\n let num = coercedValue;\n\n if (typeof coercedValue === 'string' && coercedValue !== '') {\n num = Number(coercedValue);\n }\n\n if (typeof num !== 'number' || !Number.isFinite(num)) {\n throw new GraphQLError(\n `Float cannot represent non numeric value: ${inspect$1(coercedValue)}`,\n );\n }\n\n return num;\n },\n\n parseValue(inputValue) {\n if (typeof inputValue !== 'number' || !Number.isFinite(inputValue)) {\n throw new GraphQLError(\n `Float cannot represent non numeric value: ${inspect$1(inputValue)}`,\n );\n }\n\n return inputValue;\n },\n\n parseLiteral(valueNode) {\n if (valueNode.kind !== Kind.FLOAT && valueNode.kind !== Kind.INT) {\n throw new GraphQLError(\n `Float cannot represent non numeric value: ${print(valueNode)}`,\n valueNode,\n );\n }\n\n return parseFloat(valueNode.value);\n },\n});\nconst GraphQLString = new GraphQLScalarType({\n name: 'String',\n description:\n 'The `String` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.',\n\n serialize(outputValue) {\n const coercedValue = serializeObject(outputValue); // Serialize string, boolean and number values to a string, but do not\n // attempt to coerce object, function, symbol, or other types as strings.\n\n if (typeof coercedValue === 'string') {\n return coercedValue;\n }\n\n if (typeof coercedValue === 'boolean') {\n return coercedValue ? 'true' : 'false';\n }\n\n if (typeof coercedValue === 'number' && Number.isFinite(coercedValue)) {\n return coercedValue.toString();\n }\n\n throw new GraphQLError(\n `String cannot represent value: ${inspect$1(outputValue)}`,\n );\n },\n\n parseValue(inputValue) {\n if (typeof inputValue !== 'string') {\n throw new GraphQLError(\n `String cannot represent a non string value: ${inspect$1(inputValue)}`,\n );\n }\n\n return inputValue;\n },\n\n parseLiteral(valueNode) {\n if (valueNode.kind !== Kind.STRING) {\n throw new GraphQLError(\n `String cannot represent a non string value: ${print(valueNode)}`,\n {\n nodes: valueNode,\n },\n );\n }\n\n return valueNode.value;\n },\n});\nconst GraphQLBoolean = new GraphQLScalarType({\n name: 'Boolean',\n description: 'The `Boolean` scalar type represents `true` or `false`.',\n\n serialize(outputValue) {\n const coercedValue = serializeObject(outputValue);\n\n if (typeof coercedValue === 'boolean') {\n return coercedValue;\n }\n\n if (Number.isFinite(coercedValue)) {\n return coercedValue !== 0;\n }\n\n throw new GraphQLError(\n `Boolean cannot represent a non boolean value: ${inspect$1(coercedValue)}`,\n );\n },\n\n parseValue(inputValue) {\n if (typeof inputValue !== 'boolean') {\n throw new GraphQLError(\n `Boolean cannot represent a non boolean value: ${inspect$1(inputValue)}`,\n );\n }\n\n return inputValue;\n },\n\n parseLiteral(valueNode) {\n if (valueNode.kind !== Kind.BOOLEAN) {\n throw new GraphQLError(\n `Boolean cannot represent a non boolean value: ${print(valueNode)}`,\n {\n nodes: valueNode,\n },\n );\n }\n\n return valueNode.value;\n },\n});\nconst GraphQLID = new GraphQLScalarType({\n name: 'ID',\n description:\n 'The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `\"4\"`) or integer (such as `4`) input value will be accepted as an ID.',\n\n serialize(outputValue) {\n const coercedValue = serializeObject(outputValue);\n\n if (typeof coercedValue === 'string') {\n return coercedValue;\n }\n\n if (Number.isInteger(coercedValue)) {\n return String(coercedValue);\n }\n\n throw new GraphQLError(\n `ID cannot represent value: ${inspect$1(outputValue)}`,\n );\n },\n\n parseValue(inputValue) {\n if (typeof inputValue === 'string') {\n return inputValue;\n }\n\n if (typeof inputValue === 'number' && Number.isInteger(inputValue)) {\n return inputValue.toString();\n }\n\n throw new GraphQLError(`ID cannot represent value: ${inspect$1(inputValue)}`);\n },\n\n parseLiteral(valueNode) {\n if (valueNode.kind !== Kind.STRING && valueNode.kind !== Kind.INT) {\n throw new GraphQLError(\n 'ID cannot represent a non-string and non-integer value: ' +\n print(valueNode),\n {\n nodes: valueNode,\n },\n );\n }\n\n return valueNode.value;\n },\n});\nconst specifiedScalarTypes = Object.freeze([\n GraphQLString,\n GraphQLInt,\n GraphQLFloat,\n GraphQLBoolean,\n GraphQLID,\n]);\nfunction isSpecifiedScalarType(type) {\n return specifiedScalarTypes.some(({ name }) => type.name === name);\n} // Support serializing objects with custom valueOf() or toJSON() functions -\n// a common way to represent a complex value which can be represented as\n// a string (ex: MongoDB id objects).\n\nfunction serializeObject(outputValue) {\n if (isObjectLike(outputValue)) {\n if (typeof outputValue.valueOf === 'function') {\n const valueOfResult = outputValue.valueOf();\n\n if (!isObjectLike(valueOfResult)) {\n return valueOfResult;\n }\n }\n\n if (typeof outputValue.toJSON === 'function') {\n return outputValue.toJSON();\n }\n }\n\n return outputValue;\n}\n\n/**\n * Test if the given value is a GraphQL directive.\n */\n\nfunction isDirective(directive) {\n return instanceOf(directive, GraphQLDirective);\n}\n/**\n * Custom extensions\n *\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n */\n\n/**\n * Directives are used by the GraphQL runtime as a way of modifying execution\n * behavior. Type system creators will usually not create these directly.\n */\nclass GraphQLDirective {\n constructor(config) {\n var _config$isRepeatable, _config$args;\n\n this.name = assertName(config.name);\n this.description = config.description;\n this.locations = config.locations;\n this.isRepeatable =\n (_config$isRepeatable = config.isRepeatable) !== null &&\n _config$isRepeatable !== void 0\n ? _config$isRepeatable\n : false;\n this.extensions = toObjMap(config.extensions);\n this.astNode = config.astNode;\n Array.isArray(config.locations) ||\n devAssert(false, `@${config.name} locations must be an Array.`);\n const args =\n (_config$args = config.args) !== null && _config$args !== void 0\n ? _config$args\n : {};\n (isObjectLike(args) && !Array.isArray(args)) ||\n devAssert(\n false,\n `@${config.name} args must be an object with argument names as keys.`,\n );\n this.args = defineArguments(args);\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLDirective';\n }\n\n toConfig() {\n return {\n name: this.name,\n description: this.description,\n locations: this.locations,\n args: argsToArgsConfig(this.args),\n isRepeatable: this.isRepeatable,\n extensions: this.extensions,\n astNode: this.astNode,\n };\n }\n\n toString() {\n return '@' + this.name;\n }\n\n toJSON() {\n return this.toString();\n }\n}\n\n/**\n * Used to conditionally include fields or fragments.\n */\nconst GraphQLIncludeDirective = new GraphQLDirective({\n name: 'include',\n description:\n 'Directs the executor to include this field or fragment only when the `if` argument is true.',\n locations: [\n DirectiveLocation$1.FIELD,\n DirectiveLocation$1.FRAGMENT_SPREAD,\n DirectiveLocation$1.INLINE_FRAGMENT,\n ],\n args: {\n if: {\n type: new GraphQLNonNull(GraphQLBoolean),\n description: 'Included when true.',\n },\n },\n});\n/**\n * Used to conditionally skip (exclude) fields or fragments.\n */\n\nconst GraphQLSkipDirective = new GraphQLDirective({\n name: 'skip',\n description:\n 'Directs the executor to skip this field or fragment when the `if` argument is true.',\n locations: [\n DirectiveLocation$1.FIELD,\n DirectiveLocation$1.FRAGMENT_SPREAD,\n DirectiveLocation$1.INLINE_FRAGMENT,\n ],\n args: {\n if: {\n type: new GraphQLNonNull(GraphQLBoolean),\n description: 'Skipped when true.',\n },\n },\n});\n/**\n * Constant string used for default reason for a deprecation.\n */\n\nconst DEFAULT_DEPRECATION_REASON = 'No longer supported';\n/**\n * Used to declare element of a GraphQL schema as deprecated.\n */\n\nconst GraphQLDeprecatedDirective = new GraphQLDirective({\n name: 'deprecated',\n description: 'Marks an element of a GraphQL schema as no longer supported.',\n locations: [\n DirectiveLocation$1.FIELD_DEFINITION,\n DirectiveLocation$1.ARGUMENT_DEFINITION,\n DirectiveLocation$1.INPUT_FIELD_DEFINITION,\n DirectiveLocation$1.ENUM_VALUE,\n ],\n args: {\n reason: {\n type: GraphQLString,\n description:\n 'Explains why this element was deprecated, usually also including a suggestion for how to access supported similar data. Formatted using the Markdown syntax, as specified by [CommonMark](https://commonmark.org/).',\n defaultValue: DEFAULT_DEPRECATION_REASON,\n },\n },\n});\n/**\n * Used to provide a URL for specifying the behavior of custom scalar definitions.\n */\n\nconst GraphQLSpecifiedByDirective = new GraphQLDirective({\n name: 'specifiedBy',\n description: 'Exposes a URL that specifies the behavior of this scalar.',\n locations: [DirectiveLocation$1.SCALAR],\n args: {\n url: {\n type: new GraphQLNonNull(GraphQLString),\n description: 'The URL that specifies the behavior of this scalar.',\n },\n },\n});\n/**\n * The full list of specified directives.\n */\n\nconst specifiedDirectives = Object.freeze([\n GraphQLIncludeDirective,\n GraphQLSkipDirective,\n GraphQLDeprecatedDirective,\n GraphQLSpecifiedByDirective,\n]);\nfunction isSpecifiedDirective(directive) {\n return specifiedDirectives.some(({ name }) => name === directive.name);\n}\n\n/**\n * Returns true if the provided object is an Object (i.e. not a string literal)\n * and implements the Iterator protocol.\n *\n * This may be used in place of [Array.isArray()][isArray] to determine if\n * an object should be iterated-over e.g. Array, Map, Set, Int8Array,\n * TypedArray, etc. but excludes string literals.\n *\n * @example\n * ```ts\n * isIterableObject([ 1, 2, 3 ]) // true\n * isIterableObject(new Map()) // true\n * isIterableObject('ABC') // false\n * isIterableObject({ key: 'value' }) // false\n * isIterableObject({ length: 1, 0: 'Alpha' }) // false\n * ```\n */\nfunction isIterableObject(maybeIterable) {\n return (\n typeof maybeIterable === 'object' &&\n typeof (maybeIterable === null || maybeIterable === void 0\n ? void 0\n : maybeIterable[Symbol.iterator]) === 'function'\n );\n}\n\n/**\n * Produces a GraphQL Value AST given a JavaScript object.\n * Function will match JavaScript/JSON values to GraphQL AST schema format\n * by using suggested GraphQLInputType. For example:\n *\n * astFromValue(\"value\", GraphQLString)\n *\n * A GraphQL type must be provided, which will be used to interpret different\n * JavaScript values.\n *\n * | JSON Value | GraphQL Value |\n * | ------------- | -------------------- |\n * | Object | Input Object |\n * | Array | List |\n * | Boolean | Boolean |\n * | String | String / Enum Value |\n * | Number | Int / Float |\n * | Unknown | Enum Value |\n * | null | NullValue |\n *\n */\n\nfunction astFromValue(value, type) {\n if (isNonNullType(type)) {\n const astValue = astFromValue(value, type.ofType);\n\n if (\n (astValue === null || astValue === void 0 ? void 0 : astValue.kind) ===\n Kind.NULL\n ) {\n return null;\n }\n\n return astValue;\n } // only explicit null, not undefined, NaN\n\n if (value === null) {\n return {\n kind: Kind.NULL,\n };\n } // undefined\n\n if (value === undefined) {\n return null;\n } // Convert JavaScript array to GraphQL list. If the GraphQLType is a list, but\n // the value is not an array, convert the value using the list's item type.\n\n if (isListType(type)) {\n const itemType = type.ofType;\n\n if (isIterableObject(value)) {\n const valuesNodes = [];\n\n for (const item of value) {\n const itemNode = astFromValue(item, itemType);\n\n if (itemNode != null) {\n valuesNodes.push(itemNode);\n }\n }\n\n return {\n kind: Kind.LIST,\n values: valuesNodes,\n };\n }\n\n return astFromValue(value, itemType);\n } // Populate the fields of the input object by creating ASTs from each value\n // in the JavaScript object according to the fields in the input type.\n\n if (isInputObjectType(type)) {\n if (!isObjectLike(value)) {\n return null;\n }\n\n const fieldNodes = [];\n\n for (const field of Object.values(type.getFields())) {\n const fieldValue = astFromValue(value[field.name], field.type);\n\n if (fieldValue) {\n fieldNodes.push({\n kind: Kind.OBJECT_FIELD,\n name: {\n kind: Kind.NAME,\n value: field.name,\n },\n value: fieldValue,\n });\n }\n }\n\n return {\n kind: Kind.OBJECT,\n fields: fieldNodes,\n };\n }\n\n if (isLeafType(type)) {\n // Since value is an internally represented value, it must be serialized\n // to an externally represented value before converting into an AST.\n const serialized = type.serialize(value);\n\n if (serialized == null) {\n return null;\n } // Others serialize based on their corresponding JavaScript scalar types.\n\n if (typeof serialized === 'boolean') {\n return {\n kind: Kind.BOOLEAN,\n value: serialized,\n };\n } // JavaScript numbers can be Int or Float values.\n\n if (typeof serialized === 'number' && Number.isFinite(serialized)) {\n const stringNum = String(serialized);\n return integerStringRegExp$1.test(stringNum)\n ? {\n kind: Kind.INT,\n value: stringNum,\n }\n : {\n kind: Kind.FLOAT,\n value: stringNum,\n };\n }\n\n if (typeof serialized === 'string') {\n // Enum types use Enum literals.\n if (isEnumType(type)) {\n return {\n kind: Kind.ENUM,\n value: serialized,\n };\n } // ID types can use Int literals.\n\n if (type === GraphQLID && integerStringRegExp$1.test(serialized)) {\n return {\n kind: Kind.INT,\n value: serialized,\n };\n }\n\n return {\n kind: Kind.STRING,\n value: serialized,\n };\n }\n\n throw new TypeError(`Cannot convert value to AST: ${inspect$1(serialized)}.`);\n }\n /* c8 ignore next 3 */\n // Not reachable, all possible types have been considered.\n\n invariant$1(false, 'Unexpected input type: ' + inspect$1(type));\n}\n/**\n * IntValue:\n * - NegativeSign? 0\n * - NegativeSign? NonZeroDigit ( Digit+ )?\n */\n\nconst integerStringRegExp$1 = /^-?(?:0|[1-9][0-9]*)$/;\n\nconst __Schema = new GraphQLObjectType({\n name: '__Schema',\n description:\n 'A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, as well as the entry points for query, mutation, and subscription operations.',\n fields: () => ({\n description: {\n type: GraphQLString,\n resolve: (schema) => schema.description,\n },\n types: {\n description: 'A list of all types supported by this server.',\n type: new GraphQLNonNull(new GraphQLList(new GraphQLNonNull(__Type))),\n\n resolve(schema) {\n return Object.values(schema.getTypeMap());\n },\n },\n queryType: {\n description: 'The type that query operations will be rooted at.',\n type: new GraphQLNonNull(__Type),\n resolve: (schema) => schema.getQueryType(),\n },\n mutationType: {\n description:\n 'If this server supports mutation, the type that mutation operations will be rooted at.',\n type: __Type,\n resolve: (schema) => schema.getMutationType(),\n },\n subscriptionType: {\n description:\n 'If this server support subscription, the type that subscription operations will be rooted at.',\n type: __Type,\n resolve: (schema) => schema.getSubscriptionType(),\n },\n directives: {\n description: 'A list of all directives supported by this server.',\n type: new GraphQLNonNull(\n new GraphQLList(new GraphQLNonNull(__Directive)),\n ),\n resolve: (schema) => schema.getDirectives(),\n },\n }),\n});\nconst __Directive = new GraphQLObjectType({\n name: '__Directive',\n description:\n \"A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document.\\n\\nIn some cases, you need to provide options to alter GraphQL's execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to the executor.\",\n fields: () => ({\n name: {\n type: new GraphQLNonNull(GraphQLString),\n resolve: (directive) => directive.name,\n },\n description: {\n type: GraphQLString,\n resolve: (directive) => directive.description,\n },\n isRepeatable: {\n type: new GraphQLNonNull(GraphQLBoolean),\n resolve: (directive) => directive.isRepeatable,\n },\n locations: {\n type: new GraphQLNonNull(\n new GraphQLList(new GraphQLNonNull(__DirectiveLocation)),\n ),\n resolve: (directive) => directive.locations,\n },\n args: {\n type: new GraphQLNonNull(\n new GraphQLList(new GraphQLNonNull(__InputValue)),\n ),\n args: {\n includeDeprecated: {\n type: GraphQLBoolean,\n defaultValue: false,\n },\n },\n\n resolve(field, { includeDeprecated }) {\n return includeDeprecated\n ? field.args\n : field.args.filter((arg) => arg.deprecationReason == null);\n },\n },\n }),\n});\nconst __DirectiveLocation = new GraphQLEnumType({\n name: '__DirectiveLocation',\n description:\n 'A Directive can be adjacent to many parts of the GraphQL language, a __DirectiveLocation describes one such possible adjacencies.',\n values: {\n QUERY: {\n value: DirectiveLocation$1.QUERY,\n description: 'Location adjacent to a query operation.',\n },\n MUTATION: {\n value: DirectiveLocation$1.MUTATION,\n description: 'Location adjacent to a mutation operation.',\n },\n SUBSCRIPTION: {\n value: DirectiveLocation$1.SUBSCRIPTION,\n description: 'Location adjacent to a subscription operation.',\n },\n FIELD: {\n value: DirectiveLocation$1.FIELD,\n description: 'Location adjacent to a field.',\n },\n FRAGMENT_DEFINITION: {\n value: DirectiveLocation$1.FRAGMENT_DEFINITION,\n description: 'Location adjacent to a fragment definition.',\n },\n FRAGMENT_SPREAD: {\n value: DirectiveLocation$1.FRAGMENT_SPREAD,\n description: 'Location adjacent to a fragment spread.',\n },\n INLINE_FRAGMENT: {\n value: DirectiveLocation$1.INLINE_FRAGMENT,\n description: 'Location adjacent to an inline fragment.',\n },\n VARIABLE_DEFINITION: {\n value: DirectiveLocation$1.VARIABLE_DEFINITION,\n description: 'Location adjacent to a variable definition.',\n },\n SCHEMA: {\n value: DirectiveLocation$1.SCHEMA,\n description: 'Location adjacent to a schema definition.',\n },\n SCALAR: {\n value: DirectiveLocation$1.SCALAR,\n description: 'Location adjacent to a scalar definition.',\n },\n OBJECT: {\n value: DirectiveLocation$1.OBJECT,\n description: 'Location adjacent to an object type definition.',\n },\n FIELD_DEFINITION: {\n value: DirectiveLocation$1.FIELD_DEFINITION,\n description: 'Location adjacent to a field definition.',\n },\n ARGUMENT_DEFINITION: {\n value: DirectiveLocation$1.ARGUMENT_DEFINITION,\n description: 'Location adjacent to an argument definition.',\n },\n INTERFACE: {\n value: DirectiveLocation$1.INTERFACE,\n description: 'Location adjacent to an interface definition.',\n },\n UNION: {\n value: DirectiveLocation$1.UNION,\n description: 'Location adjacent to a union definition.',\n },\n ENUM: {\n value: DirectiveLocation$1.ENUM,\n description: 'Location adjacent to an enum definition.',\n },\n ENUM_VALUE: {\n value: DirectiveLocation$1.ENUM_VALUE,\n description: 'Location adjacent to an enum value definition.',\n },\n INPUT_OBJECT: {\n value: DirectiveLocation$1.INPUT_OBJECT,\n description: 'Location adjacent to an input object type definition.',\n },\n INPUT_FIELD_DEFINITION: {\n value: DirectiveLocation$1.INPUT_FIELD_DEFINITION,\n description: 'Location adjacent to an input object field definition.',\n },\n },\n});\nconst __Type = new GraphQLObjectType({\n name: '__Type',\n description:\n 'The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.\\n\\nDepending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name, description and optional `specifiedByURL`, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.',\n fields: () => ({\n kind: {\n type: new GraphQLNonNull(__TypeKind),\n\n resolve(type) {\n if (isScalarType(type)) {\n return TypeKind.SCALAR;\n }\n\n if (isObjectType(type)) {\n return TypeKind.OBJECT;\n }\n\n if (isInterfaceType(type)) {\n return TypeKind.INTERFACE;\n }\n\n if (isUnionType(type)) {\n return TypeKind.UNION;\n }\n\n if (isEnumType(type)) {\n return TypeKind.ENUM;\n }\n\n if (isInputObjectType(type)) {\n return TypeKind.INPUT_OBJECT;\n }\n\n if (isListType(type)) {\n return TypeKind.LIST;\n }\n\n if (isNonNullType(type)) {\n return TypeKind.NON_NULL;\n }\n /* c8 ignore next 3 */\n // Not reachable, all possible types have been considered)\n\n invariant$1(false, `Unexpected type: \"${inspect$1(type)}\".`);\n },\n },\n name: {\n type: GraphQLString,\n resolve: (type) => ('name' in type ? type.name : undefined),\n },\n description: {\n type: GraphQLString,\n resolve: (\n type, // FIXME: add test case\n ) =>\n /* c8 ignore next */\n 'description' in type ? type.description : undefined,\n },\n specifiedByURL: {\n type: GraphQLString,\n resolve: (obj) =>\n 'specifiedByURL' in obj ? obj.specifiedByURL : undefined,\n },\n fields: {\n type: new GraphQLList(new GraphQLNonNull(__Field)),\n args: {\n includeDeprecated: {\n type: GraphQLBoolean,\n defaultValue: false,\n },\n },\n\n resolve(type, { includeDeprecated }) {\n if (isObjectType(type) || isInterfaceType(type)) {\n const fields = Object.values(type.getFields());\n return includeDeprecated\n ? fields\n : fields.filter((field) => field.deprecationReason == null);\n }\n },\n },\n interfaces: {\n type: new GraphQLList(new GraphQLNonNull(__Type)),\n\n resolve(type) {\n if (isObjectType(type) || isInterfaceType(type)) {\n return type.getInterfaces();\n }\n },\n },\n possibleTypes: {\n type: new GraphQLList(new GraphQLNonNull(__Type)),\n\n resolve(type, _args, _context, { schema }) {\n if (isAbstractType(type)) {\n return schema.getPossibleTypes(type);\n }\n },\n },\n enumValues: {\n type: new GraphQLList(new GraphQLNonNull(__EnumValue)),\n args: {\n includeDeprecated: {\n type: GraphQLBoolean,\n defaultValue: false,\n },\n },\n\n resolve(type, { includeDeprecated }) {\n if (isEnumType(type)) {\n const values = type.getValues();\n return includeDeprecated\n ? values\n : values.filter((field) => field.deprecationReason == null);\n }\n },\n },\n inputFields: {\n type: new GraphQLList(new GraphQLNonNull(__InputValue)),\n args: {\n includeDeprecated: {\n type: GraphQLBoolean,\n defaultValue: false,\n },\n },\n\n resolve(type, { includeDeprecated }) {\n if (isInputObjectType(type)) {\n const values = Object.values(type.getFields());\n return includeDeprecated\n ? values\n : values.filter((field) => field.deprecationReason == null);\n }\n },\n },\n ofType: {\n type: __Type,\n resolve: (type) => ('ofType' in type ? type.ofType : undefined),\n },\n }),\n});\nconst __Field = new GraphQLObjectType({\n name: '__Field',\n description:\n 'Object and Interface types are described by a list of Fields, each of which has a name, potentially a list of arguments, and a return type.',\n fields: () => ({\n name: {\n type: new GraphQLNonNull(GraphQLString),\n resolve: (field) => field.name,\n },\n description: {\n type: GraphQLString,\n resolve: (field) => field.description,\n },\n args: {\n type: new GraphQLNonNull(\n new GraphQLList(new GraphQLNonNull(__InputValue)),\n ),\n args: {\n includeDeprecated: {\n type: GraphQLBoolean,\n defaultValue: false,\n },\n },\n\n resolve(field, { includeDeprecated }) {\n return includeDeprecated\n ? field.args\n : field.args.filter((arg) => arg.deprecationReason == null);\n },\n },\n type: {\n type: new GraphQLNonNull(__Type),\n resolve: (field) => field.type,\n },\n isDeprecated: {\n type: new GraphQLNonNull(GraphQLBoolean),\n resolve: (field) => field.deprecationReason != null,\n },\n deprecationReason: {\n type: GraphQLString,\n resolve: (field) => field.deprecationReason,\n },\n }),\n});\nconst __InputValue = new GraphQLObjectType({\n name: '__InputValue',\n description:\n 'Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.',\n fields: () => ({\n name: {\n type: new GraphQLNonNull(GraphQLString),\n resolve: (inputValue) => inputValue.name,\n },\n description: {\n type: GraphQLString,\n resolve: (inputValue) => inputValue.description,\n },\n type: {\n type: new GraphQLNonNull(__Type),\n resolve: (inputValue) => inputValue.type,\n },\n defaultValue: {\n type: GraphQLString,\n description:\n 'A GraphQL-formatted string representing the default value for this input value.',\n\n resolve(inputValue) {\n const { type, defaultValue } = inputValue;\n const valueAST = astFromValue(defaultValue, type);\n return valueAST ? print(valueAST) : null;\n },\n },\n isDeprecated: {\n type: new GraphQLNonNull(GraphQLBoolean),\n resolve: (field) => field.deprecationReason != null,\n },\n deprecationReason: {\n type: GraphQLString,\n resolve: (obj) => obj.deprecationReason,\n },\n }),\n});\nconst __EnumValue = new GraphQLObjectType({\n name: '__EnumValue',\n description:\n 'One possible value for a given Enum. Enum values are unique values, not a placeholder for a string or numeric value. However an Enum value is returned in a JSON response as a string.',\n fields: () => ({\n name: {\n type: new GraphQLNonNull(GraphQLString),\n resolve: (enumValue) => enumValue.name,\n },\n description: {\n type: GraphQLString,\n resolve: (enumValue) => enumValue.description,\n },\n isDeprecated: {\n type: new GraphQLNonNull(GraphQLBoolean),\n resolve: (enumValue) => enumValue.deprecationReason != null,\n },\n deprecationReason: {\n type: GraphQLString,\n resolve: (enumValue) => enumValue.deprecationReason,\n },\n }),\n});\nvar TypeKind;\n\n(function (TypeKind) {\n TypeKind['SCALAR'] = 'SCALAR';\n TypeKind['OBJECT'] = 'OBJECT';\n TypeKind['INTERFACE'] = 'INTERFACE';\n TypeKind['UNION'] = 'UNION';\n TypeKind['ENUM'] = 'ENUM';\n TypeKind['INPUT_OBJECT'] = 'INPUT_OBJECT';\n TypeKind['LIST'] = 'LIST';\n TypeKind['NON_NULL'] = 'NON_NULL';\n})(TypeKind || (TypeKind = {}));\nconst __TypeKind = new GraphQLEnumType({\n name: '__TypeKind',\n description: 'An enum describing what kind of type a given `__Type` is.',\n values: {\n SCALAR: {\n value: TypeKind.SCALAR,\n description: 'Indicates this type is a scalar.',\n },\n OBJECT: {\n value: TypeKind.OBJECT,\n description:\n 'Indicates this type is an object. `fields` and `interfaces` are valid fields.',\n },\n INTERFACE: {\n value: TypeKind.INTERFACE,\n description:\n 'Indicates this type is an interface. `fields`, `interfaces`, and `possibleTypes` are valid fields.',\n },\n UNION: {\n value: TypeKind.UNION,\n description:\n 'Indicates this type is a union. `possibleTypes` is a valid field.',\n },\n ENUM: {\n value: TypeKind.ENUM,\n description:\n 'Indicates this type is an enum. `enumValues` is a valid field.',\n },\n INPUT_OBJECT: {\n value: TypeKind.INPUT_OBJECT,\n description:\n 'Indicates this type is an input object. `inputFields` is a valid field.',\n },\n LIST: {\n value: TypeKind.LIST,\n description: 'Indicates this type is a list. `ofType` is a valid field.',\n },\n NON_NULL: {\n value: TypeKind.NON_NULL,\n description:\n 'Indicates this type is a non-null. `ofType` is a valid field.',\n },\n },\n});\n/**\n * Note that these are GraphQLField and not GraphQLFieldConfig,\n * so the format for args is different.\n */\n\nconst SchemaMetaFieldDef = {\n name: '__schema',\n type: new GraphQLNonNull(__Schema),\n description: 'Access the current type schema of this server.',\n args: [],\n resolve: (_source, _args, _context, { schema }) => schema,\n deprecationReason: undefined,\n extensions: Object.create(null),\n astNode: undefined,\n};\nconst TypeMetaFieldDef = {\n name: '__type',\n type: __Type,\n description: 'Request the type information of a single type.',\n args: [\n {\n name: 'name',\n description: undefined,\n type: new GraphQLNonNull(GraphQLString),\n defaultValue: undefined,\n deprecationReason: undefined,\n extensions: Object.create(null),\n astNode: undefined,\n },\n ],\n resolve: (_source, { name }, _context, { schema }) => schema.getType(name),\n deprecationReason: undefined,\n extensions: Object.create(null),\n astNode: undefined,\n};\nconst TypeNameMetaFieldDef = {\n name: '__typename',\n type: new GraphQLNonNull(GraphQLString),\n description: 'The name of the current Object type at runtime.',\n args: [],\n resolve: (_source, _args, _context, { parentType }) => parentType.name,\n deprecationReason: undefined,\n extensions: Object.create(null),\n astNode: undefined,\n};\nconst introspectionTypes = Object.freeze([\n __Schema,\n __Directive,\n __DirectiveLocation,\n __Type,\n __Field,\n __InputValue,\n __EnumValue,\n __TypeKind,\n]);\nfunction isIntrospectionType(type) {\n return introspectionTypes.some(({ name }) => type.name === name);\n}\n\n/**\n * Test if the given value is a GraphQL schema.\n */\n\nfunction isSchema(schema) {\n return instanceOf(schema, GraphQLSchema);\n}\nfunction assertSchema(schema) {\n if (!isSchema(schema)) {\n throw new Error(`Expected ${inspect$1(schema)} to be a GraphQL schema.`);\n }\n\n return schema;\n}\n/**\n * Custom extensions\n *\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n */\n\n/**\n * Schema Definition\n *\n * A Schema is created by supplying the root types of each type of operation,\n * query and mutation (optional). A schema definition is then supplied to the\n * validator and executor.\n *\n * Example:\n *\n * ```ts\n * const MyAppSchema = new GraphQLSchema({\n * query: MyAppQueryRootType,\n * mutation: MyAppMutationRootType,\n * })\n * ```\n *\n * Note: When the schema is constructed, by default only the types that are\n * reachable by traversing the root types are included, other types must be\n * explicitly referenced.\n *\n * Example:\n *\n * ```ts\n * const characterInterface = new GraphQLInterfaceType({\n * name: 'Character',\n * ...\n * });\n *\n * const humanType = new GraphQLObjectType({\n * name: 'Human',\n * interfaces: [characterInterface],\n * ...\n * });\n *\n * const droidType = new GraphQLObjectType({\n * name: 'Droid',\n * interfaces: [characterInterface],\n * ...\n * });\n *\n * const schema = new GraphQLSchema({\n * query: new GraphQLObjectType({\n * name: 'Query',\n * fields: {\n * hero: { type: characterInterface, ... },\n * }\n * }),\n * ...\n * // Since this schema references only the `Character` interface it's\n * // necessary to explicitly list the types that implement it if\n * // you want them to be included in the final schema.\n * types: [humanType, droidType],\n * })\n * ```\n *\n * Note: If an array of `directives` are provided to GraphQLSchema, that will be\n * the exact list of directives represented and allowed. If `directives` is not\n * provided then a default set of the specified directives (e.g. `@include` and\n * `@skip`) will be used. If you wish to provide *additional* directives to these\n * specified directives, you must explicitly declare them. Example:\n *\n * ```ts\n * const MyAppSchema = new GraphQLSchema({\n * ...\n * directives: specifiedDirectives.concat([ myCustomDirective ]),\n * })\n * ```\n */\nclass GraphQLSchema {\n // Used as a cache for validateSchema().\n constructor(config) {\n var _config$extensionASTN, _config$directives;\n\n // If this schema was built from a source known to be valid, then it may be\n // marked with assumeValid to avoid an additional type system validation.\n this.__validationErrors = config.assumeValid === true ? [] : undefined; // Check for common mistakes during construction to produce early errors.\n\n isObjectLike(config) ||\n devAssert(false, 'Must provide configuration object.');\n !config.types ||\n Array.isArray(config.types) ||\n devAssert(\n false,\n `\"types\" must be Array if provided but got: ${inspect$1(config.types)}.`,\n );\n !config.directives ||\n Array.isArray(config.directives) ||\n devAssert(\n false,\n '\"directives\" must be Array if provided but got: ' +\n `${inspect$1(config.directives)}.`,\n );\n this.description = config.description;\n this.extensions = toObjMap(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes =\n (_config$extensionASTN = config.extensionASTNodes) !== null &&\n _config$extensionASTN !== void 0\n ? _config$extensionASTN\n : [];\n this._queryType = config.query;\n this._mutationType = config.mutation;\n this._subscriptionType = config.subscription; // Provide specified directives (e.g. @include and @skip) by default.\n\n this._directives =\n (_config$directives = config.directives) !== null &&\n _config$directives !== void 0\n ? _config$directives\n : specifiedDirectives; // To preserve order of user-provided types, we add first to add them to\n // the set of \"collected\" types, so `collectReferencedTypes` ignore them.\n\n const allReferencedTypes = new Set(config.types);\n\n if (config.types != null) {\n for (const type of config.types) {\n // When we ready to process this type, we remove it from \"collected\" types\n // and then add it together with all dependent types in the correct position.\n allReferencedTypes.delete(type);\n collectReferencedTypes(type, allReferencedTypes);\n }\n }\n\n if (this._queryType != null) {\n collectReferencedTypes(this._queryType, allReferencedTypes);\n }\n\n if (this._mutationType != null) {\n collectReferencedTypes(this._mutationType, allReferencedTypes);\n }\n\n if (this._subscriptionType != null) {\n collectReferencedTypes(this._subscriptionType, allReferencedTypes);\n }\n\n for (const directive of this._directives) {\n // Directives are not validated until validateSchema() is called.\n if (isDirective(directive)) {\n for (const arg of directive.args) {\n collectReferencedTypes(arg.type, allReferencedTypes);\n }\n }\n }\n\n collectReferencedTypes(__Schema, allReferencedTypes); // Storing the resulting map for reference by the schema.\n\n this._typeMap = Object.create(null);\n this._subTypeMap = Object.create(null); // Keep track of all implementations by interface name.\n\n this._implementationsMap = Object.create(null);\n\n for (const namedType of allReferencedTypes) {\n if (namedType == null) {\n continue;\n }\n\n const typeName = namedType.name;\n typeName ||\n devAssert(\n false,\n 'One of the provided types for building the Schema is missing a name.',\n );\n\n if (this._typeMap[typeName] !== undefined) {\n throw new Error(\n `Schema must contain uniquely named types but contains multiple types named \"${typeName}\".`,\n );\n }\n\n this._typeMap[typeName] = namedType;\n\n if (isInterfaceType(namedType)) {\n // Store implementations by interface.\n for (const iface of namedType.getInterfaces()) {\n if (isInterfaceType(iface)) {\n let implementations = this._implementationsMap[iface.name];\n\n if (implementations === undefined) {\n implementations = this._implementationsMap[iface.name] = {\n objects: [],\n interfaces: [],\n };\n }\n\n implementations.interfaces.push(namedType);\n }\n }\n } else if (isObjectType(namedType)) {\n // Store implementations by objects.\n for (const iface of namedType.getInterfaces()) {\n if (isInterfaceType(iface)) {\n let implementations = this._implementationsMap[iface.name];\n\n if (implementations === undefined) {\n implementations = this._implementationsMap[iface.name] = {\n objects: [],\n interfaces: [],\n };\n }\n\n implementations.objects.push(namedType);\n }\n }\n }\n }\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLSchema';\n }\n\n getQueryType() {\n return this._queryType;\n }\n\n getMutationType() {\n return this._mutationType;\n }\n\n getSubscriptionType() {\n return this._subscriptionType;\n }\n\n getRootType(operation) {\n switch (operation) {\n case OperationTypeNode.QUERY:\n return this.getQueryType();\n\n case OperationTypeNode.MUTATION:\n return this.getMutationType();\n\n case OperationTypeNode.SUBSCRIPTION:\n return this.getSubscriptionType();\n }\n }\n\n getTypeMap() {\n return this._typeMap;\n }\n\n getType(name) {\n return this.getTypeMap()[name];\n }\n\n getPossibleTypes(abstractType) {\n return isUnionType(abstractType)\n ? abstractType.getTypes()\n : this.getImplementations(abstractType).objects;\n }\n\n getImplementations(interfaceType) {\n const implementations = this._implementationsMap[interfaceType.name];\n return implementations !== null && implementations !== void 0\n ? implementations\n : {\n objects: [],\n interfaces: [],\n };\n }\n\n isSubType(abstractType, maybeSubType) {\n let map = this._subTypeMap[abstractType.name];\n\n if (map === undefined) {\n map = Object.create(null);\n\n if (isUnionType(abstractType)) {\n for (const type of abstractType.getTypes()) {\n map[type.name] = true;\n }\n } else {\n const implementations = this.getImplementations(abstractType);\n\n for (const type of implementations.objects) {\n map[type.name] = true;\n }\n\n for (const type of implementations.interfaces) {\n map[type.name] = true;\n }\n }\n\n this._subTypeMap[abstractType.name] = map;\n }\n\n return map[maybeSubType.name] !== undefined;\n }\n\n getDirectives() {\n return this._directives;\n }\n\n getDirective(name) {\n return this.getDirectives().find((directive) => directive.name === name);\n }\n\n toConfig() {\n return {\n description: this.description,\n query: this.getQueryType(),\n mutation: this.getMutationType(),\n subscription: this.getSubscriptionType(),\n types: Object.values(this.getTypeMap()),\n directives: this.getDirectives(),\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes,\n assumeValid: this.__validationErrors !== undefined,\n };\n }\n}\n\nfunction collectReferencedTypes(type, typeSet) {\n const namedType = getNamedType(type);\n\n if (!typeSet.has(namedType)) {\n typeSet.add(namedType);\n\n if (isUnionType(namedType)) {\n for (const memberType of namedType.getTypes()) {\n collectReferencedTypes(memberType, typeSet);\n }\n } else if (isObjectType(namedType) || isInterfaceType(namedType)) {\n for (const interfaceType of namedType.getInterfaces()) {\n collectReferencedTypes(interfaceType, typeSet);\n }\n\n for (const field of Object.values(namedType.getFields())) {\n collectReferencedTypes(field.type, typeSet);\n\n for (const arg of field.args) {\n collectReferencedTypes(arg.type, typeSet);\n }\n }\n } else if (isInputObjectType(namedType)) {\n for (const field of Object.values(namedType.getFields())) {\n collectReferencedTypes(field.type, typeSet);\n }\n }\n }\n\n return typeSet;\n}\n\n/**\n * Implements the \"Type Validation\" sub-sections of the specification's\n * \"Type System\" section.\n *\n * Validation runs synchronously, returning an array of encountered errors, or\n * an empty array if no errors were encountered and the Schema is valid.\n */\n\nfunction validateSchema(schema) {\n // First check to ensure the provided value is in fact a GraphQLSchema.\n assertSchema(schema); // If this Schema has already been validated, return the previous results.\n\n if (schema.__validationErrors) {\n return schema.__validationErrors;\n } // Validate the schema, producing a list of errors.\n\n const context = new SchemaValidationContext(schema);\n validateRootTypes(context);\n validateDirectives(context);\n validateTypes(context); // Persist the results of validation before returning to ensure validation\n // does not run multiple times for this schema.\n\n const errors = context.getErrors();\n schema.__validationErrors = errors;\n return errors;\n}\n/**\n * Utility function which asserts a schema is valid by throwing an error if\n * it is invalid.\n */\n\nfunction assertValidSchema(schema) {\n const errors = validateSchema(schema);\n\n if (errors.length !== 0) {\n throw new Error(errors.map((error) => error.message).join('\\n\\n'));\n }\n}\n\nclass SchemaValidationContext {\n constructor(schema) {\n this._errors = [];\n this.schema = schema;\n }\n\n reportError(message, nodes) {\n const _nodes = Array.isArray(nodes) ? nodes.filter(Boolean) : nodes;\n\n this._errors.push(\n new GraphQLError(message, {\n nodes: _nodes,\n }),\n );\n }\n\n getErrors() {\n return this._errors;\n }\n}\n\nfunction validateRootTypes(context) {\n const schema = context.schema;\n const queryType = schema.getQueryType();\n\n if (!queryType) {\n context.reportError('Query root type must be provided.', schema.astNode);\n } else if (!isObjectType(queryType)) {\n var _getOperationTypeNode;\n\n context.reportError(\n `Query root type must be Object type, it cannot be ${inspect$1(\n queryType,\n )}.`,\n (_getOperationTypeNode = getOperationTypeNode(\n schema,\n OperationTypeNode.QUERY,\n )) !== null && _getOperationTypeNode !== void 0\n ? _getOperationTypeNode\n : queryType.astNode,\n );\n }\n\n const mutationType = schema.getMutationType();\n\n if (mutationType && !isObjectType(mutationType)) {\n var _getOperationTypeNode2;\n\n context.reportError(\n 'Mutation root type must be Object type if provided, it cannot be ' +\n `${inspect$1(mutationType)}.`,\n (_getOperationTypeNode2 = getOperationTypeNode(\n schema,\n OperationTypeNode.MUTATION,\n )) !== null && _getOperationTypeNode2 !== void 0\n ? _getOperationTypeNode2\n : mutationType.astNode,\n );\n }\n\n const subscriptionType = schema.getSubscriptionType();\n\n if (subscriptionType && !isObjectType(subscriptionType)) {\n var _getOperationTypeNode3;\n\n context.reportError(\n 'Subscription root type must be Object type if provided, it cannot be ' +\n `${inspect$1(subscriptionType)}.`,\n (_getOperationTypeNode3 = getOperationTypeNode(\n schema,\n OperationTypeNode.SUBSCRIPTION,\n )) !== null && _getOperationTypeNode3 !== void 0\n ? _getOperationTypeNode3\n : subscriptionType.astNode,\n );\n }\n}\n\nfunction getOperationTypeNode(schema, operation) {\n var _flatMap$find;\n\n return (_flatMap$find = [schema.astNode, ...schema.extensionASTNodes]\n .flatMap(\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n (schemaNode) => {\n var _schemaNode$operation;\n\n return (\n /* c8 ignore next */\n (_schemaNode$operation =\n schemaNode === null || schemaNode === void 0\n ? void 0\n : schemaNode.operationTypes) !== null &&\n _schemaNode$operation !== void 0\n ? _schemaNode$operation\n : []\n );\n },\n )\n .find((operationNode) => operationNode.operation === operation)) === null ||\n _flatMap$find === void 0\n ? void 0\n : _flatMap$find.type;\n}\n\nfunction validateDirectives(context) {\n for (const directive of context.schema.getDirectives()) {\n // Ensure all directives are in fact GraphQL directives.\n if (!isDirective(directive)) {\n context.reportError(\n `Expected directive but got: ${inspect$1(directive)}.`,\n directive === null || directive === void 0 ? void 0 : directive.astNode,\n );\n continue;\n } // Ensure they are named correctly.\n\n validateName(context, directive); // TODO: Ensure proper locations.\n // Ensure the arguments are valid.\n\n for (const arg of directive.args) {\n // Ensure they are named correctly.\n validateName(context, arg); // Ensure the type is an input type.\n\n if (!isInputType(arg.type)) {\n context.reportError(\n `The type of @${directive.name}(${arg.name}:) must be Input Type ` +\n `but got: ${inspect$1(arg.type)}.`,\n arg.astNode,\n );\n }\n\n if (isRequiredArgument(arg) && arg.deprecationReason != null) {\n var _arg$astNode;\n\n context.reportError(\n `Required argument @${directive.name}(${arg.name}:) cannot be deprecated.`,\n [\n getDeprecatedDirectiveNode(arg.astNode),\n (_arg$astNode = arg.astNode) === null || _arg$astNode === void 0\n ? void 0\n : _arg$astNode.type,\n ],\n );\n }\n }\n }\n}\n\nfunction validateName(context, node) {\n // Ensure names are valid, however introspection types opt out.\n if (node.name.startsWith('__')) {\n context.reportError(\n `Name \"${node.name}\" must not begin with \"__\", which is reserved by GraphQL introspection.`,\n node.astNode,\n );\n }\n}\n\nfunction validateTypes(context) {\n const validateInputObjectCircularRefs =\n createInputObjectCircularRefsValidator(context);\n const typeMap = context.schema.getTypeMap();\n\n for (const type of Object.values(typeMap)) {\n // Ensure all provided types are in fact GraphQL type.\n if (!isNamedType(type)) {\n context.reportError(\n `Expected GraphQL named type but got: ${inspect$1(type)}.`,\n type.astNode,\n );\n continue;\n } // Ensure it is named correctly (excluding introspection types).\n\n if (!isIntrospectionType(type)) {\n validateName(context, type);\n }\n\n if (isObjectType(type)) {\n // Ensure fields are valid\n validateFields(context, type); // Ensure objects implement the interfaces they claim to.\n\n validateInterfaces(context, type);\n } else if (isInterfaceType(type)) {\n // Ensure fields are valid.\n validateFields(context, type); // Ensure interfaces implement the interfaces they claim to.\n\n validateInterfaces(context, type);\n } else if (isUnionType(type)) {\n // Ensure Unions include valid member types.\n validateUnionMembers(context, type);\n } else if (isEnumType(type)) {\n // Ensure Enums have valid values.\n validateEnumValues(context, type);\n } else if (isInputObjectType(type)) {\n // Ensure Input Object fields are valid.\n validateInputFields(context, type); // Ensure Input Objects do not contain non-nullable circular references\n\n validateInputObjectCircularRefs(type);\n }\n }\n}\n\nfunction validateFields(context, type) {\n const fields = Object.values(type.getFields()); // Objects and Interfaces both must define one or more fields.\n\n if (fields.length === 0) {\n context.reportError(`Type ${type.name} must define one or more fields.`, [\n type.astNode,\n ...type.extensionASTNodes,\n ]);\n }\n\n for (const field of fields) {\n // Ensure they are named correctly.\n validateName(context, field); // Ensure the type is an output type\n\n if (!isOutputType(field.type)) {\n var _field$astNode;\n\n context.reportError(\n `The type of ${type.name}.${field.name} must be Output Type ` +\n `but got: ${inspect$1(field.type)}.`,\n (_field$astNode = field.astNode) === null || _field$astNode === void 0\n ? void 0\n : _field$astNode.type,\n );\n } // Ensure the arguments are valid\n\n for (const arg of field.args) {\n const argName = arg.name; // Ensure they are named correctly.\n\n validateName(context, arg); // Ensure the type is an input type\n\n if (!isInputType(arg.type)) {\n var _arg$astNode2;\n\n context.reportError(\n `The type of ${type.name}.${field.name}(${argName}:) must be Input ` +\n `Type but got: ${inspect$1(arg.type)}.`,\n (_arg$astNode2 = arg.astNode) === null || _arg$astNode2 === void 0\n ? void 0\n : _arg$astNode2.type,\n );\n }\n\n if (isRequiredArgument(arg) && arg.deprecationReason != null) {\n var _arg$astNode3;\n\n context.reportError(\n `Required argument ${type.name}.${field.name}(${argName}:) cannot be deprecated.`,\n [\n getDeprecatedDirectiveNode(arg.astNode),\n (_arg$astNode3 = arg.astNode) === null || _arg$astNode3 === void 0\n ? void 0\n : _arg$astNode3.type,\n ],\n );\n }\n }\n }\n}\n\nfunction validateInterfaces(context, type) {\n const ifaceTypeNames = Object.create(null);\n\n for (const iface of type.getInterfaces()) {\n if (!isInterfaceType(iface)) {\n context.reportError(\n `Type ${inspect$1(type)} must only implement Interface types, ` +\n `it cannot implement ${inspect$1(iface)}.`,\n getAllImplementsInterfaceNodes(type, iface),\n );\n continue;\n }\n\n if (type === iface) {\n context.reportError(\n `Type ${type.name} cannot implement itself because it would create a circular reference.`,\n getAllImplementsInterfaceNodes(type, iface),\n );\n continue;\n }\n\n if (ifaceTypeNames[iface.name]) {\n context.reportError(\n `Type ${type.name} can only implement ${iface.name} once.`,\n getAllImplementsInterfaceNodes(type, iface),\n );\n continue;\n }\n\n ifaceTypeNames[iface.name] = true;\n validateTypeImplementsAncestors(context, type, iface);\n validateTypeImplementsInterface(context, type, iface);\n }\n}\n\nfunction validateTypeImplementsInterface(context, type, iface) {\n const typeFieldMap = type.getFields(); // Assert each interface field is implemented.\n\n for (const ifaceField of Object.values(iface.getFields())) {\n const fieldName = ifaceField.name;\n const typeField = typeFieldMap[fieldName]; // Assert interface field exists on type.\n\n if (!typeField) {\n context.reportError(\n `Interface field ${iface.name}.${fieldName} expected but ${type.name} does not provide it.`,\n [ifaceField.astNode, type.astNode, ...type.extensionASTNodes],\n );\n continue;\n } // Assert interface field type is satisfied by type field type, by being\n // a valid subtype. (covariant)\n\n if (!isTypeSubTypeOf(context.schema, typeField.type, ifaceField.type)) {\n var _ifaceField$astNode, _typeField$astNode;\n\n context.reportError(\n `Interface field ${iface.name}.${fieldName} expects type ` +\n `${inspect$1(ifaceField.type)} but ${type.name}.${fieldName} ` +\n `is type ${inspect$1(typeField.type)}.`,\n [\n (_ifaceField$astNode = ifaceField.astNode) === null ||\n _ifaceField$astNode === void 0\n ? void 0\n : _ifaceField$astNode.type,\n (_typeField$astNode = typeField.astNode) === null ||\n _typeField$astNode === void 0\n ? void 0\n : _typeField$astNode.type,\n ],\n );\n } // Assert each interface field arg is implemented.\n\n for (const ifaceArg of ifaceField.args) {\n const argName = ifaceArg.name;\n const typeArg = typeField.args.find((arg) => arg.name === argName); // Assert interface field arg exists on object field.\n\n if (!typeArg) {\n context.reportError(\n `Interface field argument ${iface.name}.${fieldName}(${argName}:) expected but ${type.name}.${fieldName} does not provide it.`,\n [ifaceArg.astNode, typeField.astNode],\n );\n continue;\n } // Assert interface field arg type matches object field arg type.\n // (invariant)\n // TODO: change to contravariant?\n\n if (!isEqualType(ifaceArg.type, typeArg.type)) {\n var _ifaceArg$astNode, _typeArg$astNode;\n\n context.reportError(\n `Interface field argument ${iface.name}.${fieldName}(${argName}:) ` +\n `expects type ${inspect$1(ifaceArg.type)} but ` +\n `${type.name}.${fieldName}(${argName}:) is type ` +\n `${inspect$1(typeArg.type)}.`,\n [\n (_ifaceArg$astNode = ifaceArg.astNode) === null ||\n _ifaceArg$astNode === void 0\n ? void 0\n : _ifaceArg$astNode.type,\n (_typeArg$astNode = typeArg.astNode) === null ||\n _typeArg$astNode === void 0\n ? void 0\n : _typeArg$astNode.type,\n ],\n );\n } // TODO: validate default values?\n } // Assert additional arguments must not be required.\n\n for (const typeArg of typeField.args) {\n const argName = typeArg.name;\n const ifaceArg = ifaceField.args.find((arg) => arg.name === argName);\n\n if (!ifaceArg && isRequiredArgument(typeArg)) {\n context.reportError(\n `Object field ${type.name}.${fieldName} includes required argument ${argName} that is missing from the Interface field ${iface.name}.${fieldName}.`,\n [typeArg.astNode, ifaceField.astNode],\n );\n }\n }\n }\n}\n\nfunction validateTypeImplementsAncestors(context, type, iface) {\n const ifaceInterfaces = type.getInterfaces();\n\n for (const transitive of iface.getInterfaces()) {\n if (!ifaceInterfaces.includes(transitive)) {\n context.reportError(\n transitive === type\n ? `Type ${type.name} cannot implement ${iface.name} because it would create a circular reference.`\n : `Type ${type.name} must implement ${transitive.name} because it is implemented by ${iface.name}.`,\n [\n ...getAllImplementsInterfaceNodes(iface, transitive),\n ...getAllImplementsInterfaceNodes(type, iface),\n ],\n );\n }\n }\n}\n\nfunction validateUnionMembers(context, union) {\n const memberTypes = union.getTypes();\n\n if (memberTypes.length === 0) {\n context.reportError(\n `Union type ${union.name} must define one or more member types.`,\n [union.astNode, ...union.extensionASTNodes],\n );\n }\n\n const includedTypeNames = Object.create(null);\n\n for (const memberType of memberTypes) {\n if (includedTypeNames[memberType.name]) {\n context.reportError(\n `Union type ${union.name} can only include type ${memberType.name} once.`,\n getUnionMemberTypeNodes(union, memberType.name),\n );\n continue;\n }\n\n includedTypeNames[memberType.name] = true;\n\n if (!isObjectType(memberType)) {\n context.reportError(\n `Union type ${union.name} can only include Object types, ` +\n `it cannot include ${inspect$1(memberType)}.`,\n getUnionMemberTypeNodes(union, String(memberType)),\n );\n }\n }\n}\n\nfunction validateEnumValues(context, enumType) {\n const enumValues = enumType.getValues();\n\n if (enumValues.length === 0) {\n context.reportError(\n `Enum type ${enumType.name} must define one or more values.`,\n [enumType.astNode, ...enumType.extensionASTNodes],\n );\n }\n\n for (const enumValue of enumValues) {\n // Ensure valid name.\n validateName(context, enumValue);\n }\n}\n\nfunction validateInputFields(context, inputObj) {\n const fields = Object.values(inputObj.getFields());\n\n if (fields.length === 0) {\n context.reportError(\n `Input Object type ${inputObj.name} must define one or more fields.`,\n [inputObj.astNode, ...inputObj.extensionASTNodes],\n );\n } // Ensure the arguments are valid\n\n for (const field of fields) {\n // Ensure they are named correctly.\n validateName(context, field); // Ensure the type is an input type\n\n if (!isInputType(field.type)) {\n var _field$astNode2;\n\n context.reportError(\n `The type of ${inputObj.name}.${field.name} must be Input Type ` +\n `but got: ${inspect$1(field.type)}.`,\n (_field$astNode2 = field.astNode) === null || _field$astNode2 === void 0\n ? void 0\n : _field$astNode2.type,\n );\n }\n\n if (isRequiredInputField(field) && field.deprecationReason != null) {\n var _field$astNode3;\n\n context.reportError(\n `Required input field ${inputObj.name}.${field.name} cannot be deprecated.`,\n [\n getDeprecatedDirectiveNode(field.astNode),\n (_field$astNode3 = field.astNode) === null ||\n _field$astNode3 === void 0\n ? void 0\n : _field$astNode3.type,\n ],\n );\n }\n }\n}\n\nfunction createInputObjectCircularRefsValidator(context) {\n // Modified copy of algorithm from 'src/validation/rules/NoFragmentCycles.js'.\n // Tracks already visited types to maintain O(N) and to ensure that cycles\n // are not redundantly reported.\n const visitedTypes = Object.create(null); // Array of types nodes used to produce meaningful errors\n\n const fieldPath = []; // Position in the type path\n\n const fieldPathIndexByTypeName = Object.create(null);\n return detectCycleRecursive; // This does a straight-forward DFS to find cycles.\n // It does not terminate when a cycle was found but continues to explore\n // the graph to find all possible cycles.\n\n function detectCycleRecursive(inputObj) {\n if (visitedTypes[inputObj.name]) {\n return;\n }\n\n visitedTypes[inputObj.name] = true;\n fieldPathIndexByTypeName[inputObj.name] = fieldPath.length;\n const fields = Object.values(inputObj.getFields());\n\n for (const field of fields) {\n if (isNonNullType(field.type) && isInputObjectType(field.type.ofType)) {\n const fieldType = field.type.ofType;\n const cycleIndex = fieldPathIndexByTypeName[fieldType.name];\n fieldPath.push(field);\n\n if (cycleIndex === undefined) {\n detectCycleRecursive(fieldType);\n } else {\n const cyclePath = fieldPath.slice(cycleIndex);\n const pathStr = cyclePath.map((fieldObj) => fieldObj.name).join('.');\n context.reportError(\n `Cannot reference Input Object \"${fieldType.name}\" within itself through a series of non-null fields: \"${pathStr}\".`,\n cyclePath.map((fieldObj) => fieldObj.astNode),\n );\n }\n\n fieldPath.pop();\n }\n }\n\n fieldPathIndexByTypeName[inputObj.name] = undefined;\n }\n}\n\nfunction getAllImplementsInterfaceNodes(type, iface) {\n const { astNode, extensionASTNodes } = type;\n const nodes =\n astNode != null ? [astNode, ...extensionASTNodes] : extensionASTNodes; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n return nodes\n .flatMap((typeNode) => {\n var _typeNode$interfaces;\n\n return (\n /* c8 ignore next */\n (_typeNode$interfaces = typeNode.interfaces) !== null &&\n _typeNode$interfaces !== void 0\n ? _typeNode$interfaces\n : []\n );\n })\n .filter((ifaceNode) => ifaceNode.name.value === iface.name);\n}\n\nfunction getUnionMemberTypeNodes(union, typeName) {\n const { astNode, extensionASTNodes } = union;\n const nodes =\n astNode != null ? [astNode, ...extensionASTNodes] : extensionASTNodes; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n return nodes\n .flatMap((unionNode) => {\n var _unionNode$types;\n\n return (\n /* c8 ignore next */\n (_unionNode$types = unionNode.types) !== null &&\n _unionNode$types !== void 0\n ? _unionNode$types\n : []\n );\n })\n .filter((typeNode) => typeNode.name.value === typeName);\n}\n\nfunction getDeprecatedDirectiveNode(definitionNode) {\n var _definitionNode$direc;\n\n return definitionNode === null || definitionNode === void 0\n ? void 0\n : (_definitionNode$direc = definitionNode.directives) === null ||\n _definitionNode$direc === void 0\n ? void 0\n : _definitionNode$direc.find(\n (node) => node.name.value === GraphQLDeprecatedDirective.name,\n );\n}\n\nfunction typeFromAST(schema, typeNode) {\n switch (typeNode.kind) {\n case Kind.LIST_TYPE: {\n const innerType = typeFromAST(schema, typeNode.type);\n return innerType && new GraphQLList(innerType);\n }\n\n case Kind.NON_NULL_TYPE: {\n const innerType = typeFromAST(schema, typeNode.type);\n return innerType && new GraphQLNonNull(innerType);\n }\n\n case Kind.NAMED_TYPE:\n return schema.getType(typeNode.name.value);\n }\n}\n\n/**\n * TypeInfo is a utility class which, given a GraphQL schema, can keep track\n * of the current field and type definitions at any point in a GraphQL document\n * AST during a recursive descent by calling `enter(node)` and `leave(node)`.\n */\n\nclass TypeInfo {\n constructor(\n schema,\n /**\n * Initial type may be provided in rare cases to facilitate traversals\n * beginning somewhere other than documents.\n */\n initialType,\n /** @deprecated will be removed in 17.0.0 */\n getFieldDefFn,\n ) {\n this._schema = schema;\n this._typeStack = [];\n this._parentTypeStack = [];\n this._inputTypeStack = [];\n this._fieldDefStack = [];\n this._defaultValueStack = [];\n this._directive = null;\n this._argument = null;\n this._enumValue = null;\n this._getFieldDef =\n getFieldDefFn !== null && getFieldDefFn !== void 0\n ? getFieldDefFn\n : getFieldDef$1;\n\n if (initialType) {\n if (isInputType(initialType)) {\n this._inputTypeStack.push(initialType);\n }\n\n if (isCompositeType(initialType)) {\n this._parentTypeStack.push(initialType);\n }\n\n if (isOutputType(initialType)) {\n this._typeStack.push(initialType);\n }\n }\n }\n\n get [Symbol.toStringTag]() {\n return 'TypeInfo';\n }\n\n getType() {\n if (this._typeStack.length > 0) {\n return this._typeStack[this._typeStack.length - 1];\n }\n }\n\n getParentType() {\n if (this._parentTypeStack.length > 0) {\n return this._parentTypeStack[this._parentTypeStack.length - 1];\n }\n }\n\n getInputType() {\n if (this._inputTypeStack.length > 0) {\n return this._inputTypeStack[this._inputTypeStack.length - 1];\n }\n }\n\n getParentInputType() {\n if (this._inputTypeStack.length > 1) {\n return this._inputTypeStack[this._inputTypeStack.length - 2];\n }\n }\n\n getFieldDef() {\n if (this._fieldDefStack.length > 0) {\n return this._fieldDefStack[this._fieldDefStack.length - 1];\n }\n }\n\n getDefaultValue() {\n if (this._defaultValueStack.length > 0) {\n return this._defaultValueStack[this._defaultValueStack.length - 1];\n }\n }\n\n getDirective() {\n return this._directive;\n }\n\n getArgument() {\n return this._argument;\n }\n\n getEnumValue() {\n return this._enumValue;\n }\n\n enter(node) {\n const schema = this._schema; // Note: many of the types below are explicitly typed as \"unknown\" to drop\n // any assumptions of a valid schema to ensure runtime types are properly\n // checked before continuing since TypeInfo is used as part of validation\n // which occurs before guarantees of schema and document validity.\n\n switch (node.kind) {\n case Kind.SELECTION_SET: {\n const namedType = getNamedType(this.getType());\n\n this._parentTypeStack.push(\n isCompositeType(namedType) ? namedType : undefined,\n );\n\n break;\n }\n\n case Kind.FIELD: {\n const parentType = this.getParentType();\n let fieldDef;\n let fieldType;\n\n if (parentType) {\n fieldDef = this._getFieldDef(schema, parentType, node);\n\n if (fieldDef) {\n fieldType = fieldDef.type;\n }\n }\n\n this._fieldDefStack.push(fieldDef);\n\n this._typeStack.push(isOutputType(fieldType) ? fieldType : undefined);\n\n break;\n }\n\n case Kind.DIRECTIVE:\n this._directive = schema.getDirective(node.name.value);\n break;\n\n case Kind.OPERATION_DEFINITION: {\n const rootType = schema.getRootType(node.operation);\n\n this._typeStack.push(isObjectType(rootType) ? rootType : undefined);\n\n break;\n }\n\n case Kind.INLINE_FRAGMENT:\n case Kind.FRAGMENT_DEFINITION: {\n const typeConditionAST = node.typeCondition;\n const outputType = typeConditionAST\n ? typeFromAST(schema, typeConditionAST)\n : getNamedType(this.getType());\n\n this._typeStack.push(isOutputType(outputType) ? outputType : undefined);\n\n break;\n }\n\n case Kind.VARIABLE_DEFINITION: {\n const inputType = typeFromAST(schema, node.type);\n\n this._inputTypeStack.push(\n isInputType(inputType) ? inputType : undefined,\n );\n\n break;\n }\n\n case Kind.ARGUMENT: {\n var _this$getDirective;\n\n let argDef;\n let argType;\n const fieldOrDirective =\n (_this$getDirective = this.getDirective()) !== null &&\n _this$getDirective !== void 0\n ? _this$getDirective\n : this.getFieldDef();\n\n if (fieldOrDirective) {\n argDef = fieldOrDirective.args.find(\n (arg) => arg.name === node.name.value,\n );\n\n if (argDef) {\n argType = argDef.type;\n }\n }\n\n this._argument = argDef;\n\n this._defaultValueStack.push(argDef ? argDef.defaultValue : undefined);\n\n this._inputTypeStack.push(isInputType(argType) ? argType : undefined);\n\n break;\n }\n\n case Kind.LIST: {\n const listType = getNullableType(this.getInputType());\n const itemType = isListType(listType) ? listType.ofType : listType; // List positions never have a default value.\n\n this._defaultValueStack.push(undefined);\n\n this._inputTypeStack.push(isInputType(itemType) ? itemType : undefined);\n\n break;\n }\n\n case Kind.OBJECT_FIELD: {\n const objectType = getNamedType(this.getInputType());\n let inputFieldType;\n let inputField;\n\n if (isInputObjectType(objectType)) {\n inputField = objectType.getFields()[node.name.value];\n\n if (inputField) {\n inputFieldType = inputField.type;\n }\n }\n\n this._defaultValueStack.push(\n inputField ? inputField.defaultValue : undefined,\n );\n\n this._inputTypeStack.push(\n isInputType(inputFieldType) ? inputFieldType : undefined,\n );\n\n break;\n }\n\n case Kind.ENUM: {\n const enumType = getNamedType(this.getInputType());\n let enumValue;\n\n if (isEnumType(enumType)) {\n enumValue = enumType.getValue(node.value);\n }\n\n this._enumValue = enumValue;\n break;\n }\n }\n }\n\n leave(node) {\n switch (node.kind) {\n case Kind.SELECTION_SET:\n this._parentTypeStack.pop();\n\n break;\n\n case Kind.FIELD:\n this._fieldDefStack.pop();\n\n this._typeStack.pop();\n\n break;\n\n case Kind.DIRECTIVE:\n this._directive = null;\n break;\n\n case Kind.OPERATION_DEFINITION:\n case Kind.INLINE_FRAGMENT:\n case Kind.FRAGMENT_DEFINITION:\n this._typeStack.pop();\n\n break;\n\n case Kind.VARIABLE_DEFINITION:\n this._inputTypeStack.pop();\n\n break;\n\n case Kind.ARGUMENT:\n this._argument = null;\n\n this._defaultValueStack.pop();\n\n this._inputTypeStack.pop();\n\n break;\n\n case Kind.LIST:\n case Kind.OBJECT_FIELD:\n this._defaultValueStack.pop();\n\n this._inputTypeStack.pop();\n\n break;\n\n case Kind.ENUM:\n this._enumValue = null;\n break;\n }\n }\n}\n\n/**\n * Not exactly the same as the executor's definition of getFieldDef, in this\n * statically evaluated environment we do not always have an Object type,\n * and need to handle Interface and Union types.\n */\nfunction getFieldDef$1(schema, parentType, fieldNode) {\n const name = fieldNode.name.value;\n\n if (\n name === SchemaMetaFieldDef.name &&\n schema.getQueryType() === parentType\n ) {\n return SchemaMetaFieldDef;\n }\n\n if (name === TypeMetaFieldDef.name && schema.getQueryType() === parentType) {\n return TypeMetaFieldDef;\n }\n\n if (name === TypeNameMetaFieldDef.name && isCompositeType(parentType)) {\n return TypeNameMetaFieldDef;\n }\n\n if (isObjectType(parentType) || isInterfaceType(parentType)) {\n return parentType.getFields()[name];\n }\n}\n/**\n * Creates a new visitor instance which maintains a provided TypeInfo instance\n * along with visiting visitor.\n */\n\nfunction visitWithTypeInfo(typeInfo, visitor) {\n return {\n enter(...args) {\n const node = args[0];\n typeInfo.enter(node);\n const fn = getEnterLeaveForKind(visitor, node.kind).enter;\n\n if (fn) {\n const result = fn.apply(visitor, args);\n\n if (result !== undefined) {\n typeInfo.leave(node);\n\n if (isNode(result)) {\n typeInfo.enter(result);\n }\n }\n\n return result;\n }\n },\n\n leave(...args) {\n const node = args[0];\n const fn = getEnterLeaveForKind(visitor, node.kind).leave;\n let result;\n\n if (fn) {\n result = fn.apply(visitor, args);\n }\n\n typeInfo.leave(node);\n return result;\n },\n };\n}\n\nfunction isDefinitionNode(node) {\n return (\n isExecutableDefinitionNode(node) ||\n isTypeSystemDefinitionNode(node) ||\n isTypeSystemExtensionNode(node)\n );\n}\nfunction isExecutableDefinitionNode(node) {\n return (\n node.kind === Kind.OPERATION_DEFINITION ||\n node.kind === Kind.FRAGMENT_DEFINITION\n );\n}\nfunction isTypeSystemDefinitionNode(node) {\n return (\n node.kind === Kind.SCHEMA_DEFINITION ||\n isTypeDefinitionNode(node) ||\n node.kind === Kind.DIRECTIVE_DEFINITION\n );\n}\nfunction isTypeDefinitionNode(node) {\n return (\n node.kind === Kind.SCALAR_TYPE_DEFINITION ||\n node.kind === Kind.OBJECT_TYPE_DEFINITION ||\n node.kind === Kind.INTERFACE_TYPE_DEFINITION ||\n node.kind === Kind.UNION_TYPE_DEFINITION ||\n node.kind === Kind.ENUM_TYPE_DEFINITION ||\n node.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION\n );\n}\nfunction isTypeSystemExtensionNode(node) {\n return node.kind === Kind.SCHEMA_EXTENSION || isTypeExtensionNode(node);\n}\nfunction isTypeExtensionNode(node) {\n return (\n node.kind === Kind.SCALAR_TYPE_EXTENSION ||\n node.kind === Kind.OBJECT_TYPE_EXTENSION ||\n node.kind === Kind.INTERFACE_TYPE_EXTENSION ||\n node.kind === Kind.UNION_TYPE_EXTENSION ||\n node.kind === Kind.ENUM_TYPE_EXTENSION ||\n node.kind === Kind.INPUT_OBJECT_TYPE_EXTENSION\n );\n}\n\n/**\n * Executable definitions\n *\n * A GraphQL document is only valid for execution if all definitions are either\n * operation or fragment definitions.\n *\n * See https://spec.graphql.org/draft/#sec-Executable-Definitions\n */\nfunction ExecutableDefinitionsRule(context) {\n return {\n Document(node) {\n for (const definition of node.definitions) {\n if (!isExecutableDefinitionNode(definition)) {\n const defName =\n definition.kind === Kind.SCHEMA_DEFINITION ||\n definition.kind === Kind.SCHEMA_EXTENSION\n ? 'schema'\n : '\"' + definition.name.value + '\"';\n context.reportError(\n new GraphQLError(`The ${defName} definition is not executable.`, {\n nodes: definition,\n }),\n );\n }\n }\n\n return false;\n },\n };\n}\n\n/**\n * Fields on correct type\n *\n * A GraphQL document is only valid if all fields selected are defined by the\n * parent type, or are an allowed meta field such as __typename.\n *\n * See https://spec.graphql.org/draft/#sec-Field-Selections\n */\nfunction FieldsOnCorrectTypeRule(context) {\n return {\n Field(node) {\n const type = context.getParentType();\n\n if (type) {\n const fieldDef = context.getFieldDef();\n\n if (!fieldDef) {\n // This field doesn't exist, lets look for suggestions.\n const schema = context.getSchema();\n const fieldName = node.name.value; // First determine if there are any suggested types to condition on.\n\n let suggestion = didYouMean(\n 'to use an inline fragment on',\n getSuggestedTypeNames(schema, type, fieldName),\n ); // If there are no suggested types, then perhaps this was a typo?\n\n if (suggestion === '') {\n suggestion = didYouMean(getSuggestedFieldNames(type, fieldName));\n } // Report an error, including helpful suggestions.\n\n context.reportError(\n new GraphQLError(\n `Cannot query field \"${fieldName}\" on type \"${type.name}\".` +\n suggestion,\n {\n nodes: node,\n },\n ),\n );\n }\n }\n },\n };\n}\n/**\n * Go through all of the implementations of type, as well as the interfaces that\n * they implement. If any of those types include the provided field, suggest them,\n * sorted by how often the type is referenced.\n */\n\nfunction getSuggestedTypeNames(schema, type, fieldName) {\n if (!isAbstractType(type)) {\n // Must be an Object type, which does not have possible fields.\n return [];\n }\n\n const suggestedTypes = new Set();\n const usageCount = Object.create(null);\n\n for (const possibleType of schema.getPossibleTypes(type)) {\n if (!possibleType.getFields()[fieldName]) {\n continue;\n } // This object type defines this field.\n\n suggestedTypes.add(possibleType);\n usageCount[possibleType.name] = 1;\n\n for (const possibleInterface of possibleType.getInterfaces()) {\n var _usageCount$possibleI;\n\n if (!possibleInterface.getFields()[fieldName]) {\n continue;\n } // This interface type defines this field.\n\n suggestedTypes.add(possibleInterface);\n usageCount[possibleInterface.name] =\n ((_usageCount$possibleI = usageCount[possibleInterface.name]) !==\n null && _usageCount$possibleI !== void 0\n ? _usageCount$possibleI\n : 0) + 1;\n }\n }\n\n return [...suggestedTypes]\n .sort((typeA, typeB) => {\n // Suggest both interface and object types based on how common they are.\n const usageCountDiff = usageCount[typeB.name] - usageCount[typeA.name];\n\n if (usageCountDiff !== 0) {\n return usageCountDiff;\n } // Suggest super types first followed by subtypes\n\n if (isInterfaceType(typeA) && schema.isSubType(typeA, typeB)) {\n return -1;\n }\n\n if (isInterfaceType(typeB) && schema.isSubType(typeB, typeA)) {\n return 1;\n }\n\n return naturalCompare(typeA.name, typeB.name);\n })\n .map((x) => x.name);\n}\n/**\n * For the field name provided, determine if there are any similar field names\n * that may be the result of a typo.\n */\n\nfunction getSuggestedFieldNames(type, fieldName) {\n if (isObjectType(type) || isInterfaceType(type)) {\n const possibleFieldNames = Object.keys(type.getFields());\n return suggestionList(fieldName, possibleFieldNames);\n } // Otherwise, must be a Union type, which does not define fields.\n\n return [];\n}\n\n/**\n * Fragments on composite type\n *\n * Fragments use a type condition to determine if they apply, since fragments\n * can only be spread into a composite type (object, interface, or union), the\n * type condition must also be a composite type.\n *\n * See https://spec.graphql.org/draft/#sec-Fragments-On-Composite-Types\n */\nfunction FragmentsOnCompositeTypesRule(context) {\n return {\n InlineFragment(node) {\n const typeCondition = node.typeCondition;\n\n if (typeCondition) {\n const type = typeFromAST(context.getSchema(), typeCondition);\n\n if (type && !isCompositeType(type)) {\n const typeStr = print(typeCondition);\n context.reportError(\n new GraphQLError(\n `Fragment cannot condition on non composite type \"${typeStr}\".`,\n {\n nodes: typeCondition,\n },\n ),\n );\n }\n }\n },\n\n FragmentDefinition(node) {\n const type = typeFromAST(context.getSchema(), node.typeCondition);\n\n if (type && !isCompositeType(type)) {\n const typeStr = print(node.typeCondition);\n context.reportError(\n new GraphQLError(\n `Fragment \"${node.name.value}\" cannot condition on non composite type \"${typeStr}\".`,\n {\n nodes: node.typeCondition,\n },\n ),\n );\n }\n },\n };\n}\n\n/**\n * Known argument names\n *\n * A GraphQL field is only valid if all supplied arguments are defined by\n * that field.\n *\n * See https://spec.graphql.org/draft/#sec-Argument-Names\n * See https://spec.graphql.org/draft/#sec-Directives-Are-In-Valid-Locations\n */\nfunction KnownArgumentNamesRule(context) {\n return {\n // eslint-disable-next-line new-cap\n ...KnownArgumentNamesOnDirectivesRule(context),\n\n Argument(argNode) {\n const argDef = context.getArgument();\n const fieldDef = context.getFieldDef();\n const parentType = context.getParentType();\n\n if (!argDef && fieldDef && parentType) {\n const argName = argNode.name.value;\n const knownArgsNames = fieldDef.args.map((arg) => arg.name);\n const suggestions = suggestionList(argName, knownArgsNames);\n context.reportError(\n new GraphQLError(\n `Unknown argument \"${argName}\" on field \"${parentType.name}.${fieldDef.name}\".` +\n didYouMean(suggestions),\n {\n nodes: argNode,\n },\n ),\n );\n }\n },\n };\n}\n/**\n * @internal\n */\n\nfunction KnownArgumentNamesOnDirectivesRule(context) {\n const directiveArgs = Object.create(null);\n const schema = context.getSchema();\n const definedDirectives = schema\n ? schema.getDirectives()\n : specifiedDirectives;\n\n for (const directive of definedDirectives) {\n directiveArgs[directive.name] = directive.args.map((arg) => arg.name);\n }\n\n const astDefinitions = context.getDocument().definitions;\n\n for (const def of astDefinitions) {\n if (def.kind === Kind.DIRECTIVE_DEFINITION) {\n var _def$arguments;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n const argsNodes =\n (_def$arguments = def.arguments) !== null && _def$arguments !== void 0\n ? _def$arguments\n : [];\n directiveArgs[def.name.value] = argsNodes.map((arg) => arg.name.value);\n }\n }\n\n return {\n Directive(directiveNode) {\n const directiveName = directiveNode.name.value;\n const knownArgs = directiveArgs[directiveName];\n\n if (directiveNode.arguments && knownArgs) {\n for (const argNode of directiveNode.arguments) {\n const argName = argNode.name.value;\n\n if (!knownArgs.includes(argName)) {\n const suggestions = suggestionList(argName, knownArgs);\n context.reportError(\n new GraphQLError(\n `Unknown argument \"${argName}\" on directive \"@${directiveName}\".` +\n didYouMean(suggestions),\n {\n nodes: argNode,\n },\n ),\n );\n }\n }\n }\n\n return false;\n },\n };\n}\n\n/**\n * Known directives\n *\n * A GraphQL document is only valid if all `@directives` are known by the\n * schema and legally positioned.\n *\n * See https://spec.graphql.org/draft/#sec-Directives-Are-Defined\n */\nfunction KnownDirectivesRule(context) {\n const locationsMap = Object.create(null);\n const schema = context.getSchema();\n const definedDirectives = schema\n ? schema.getDirectives()\n : specifiedDirectives;\n\n for (const directive of definedDirectives) {\n locationsMap[directive.name] = directive.locations;\n }\n\n const astDefinitions = context.getDocument().definitions;\n\n for (const def of astDefinitions) {\n if (def.kind === Kind.DIRECTIVE_DEFINITION) {\n locationsMap[def.name.value] = def.locations.map((name) => name.value);\n }\n }\n\n return {\n Directive(node, _key, _parent, _path, ancestors) {\n const name = node.name.value;\n const locations = locationsMap[name];\n\n if (!locations) {\n context.reportError(\n new GraphQLError(`Unknown directive \"@${name}\".`, {\n nodes: node,\n }),\n );\n return;\n }\n\n const candidateLocation = getDirectiveLocationForASTPath(ancestors);\n\n if (candidateLocation && !locations.includes(candidateLocation)) {\n context.reportError(\n new GraphQLError(\n `Directive \"@${name}\" may not be used on ${candidateLocation}.`,\n {\n nodes: node,\n },\n ),\n );\n }\n },\n };\n}\n\nfunction getDirectiveLocationForASTPath(ancestors) {\n const appliedTo = ancestors[ancestors.length - 1];\n 'kind' in appliedTo || invariant$1(false);\n\n switch (appliedTo.kind) {\n case Kind.OPERATION_DEFINITION:\n return getDirectiveLocationForOperation(appliedTo.operation);\n\n case Kind.FIELD:\n return DirectiveLocation$1.FIELD;\n\n case Kind.FRAGMENT_SPREAD:\n return DirectiveLocation$1.FRAGMENT_SPREAD;\n\n case Kind.INLINE_FRAGMENT:\n return DirectiveLocation$1.INLINE_FRAGMENT;\n\n case Kind.FRAGMENT_DEFINITION:\n return DirectiveLocation$1.FRAGMENT_DEFINITION;\n\n case Kind.VARIABLE_DEFINITION:\n return DirectiveLocation$1.VARIABLE_DEFINITION;\n\n case Kind.SCHEMA_DEFINITION:\n case Kind.SCHEMA_EXTENSION:\n return DirectiveLocation$1.SCHEMA;\n\n case Kind.SCALAR_TYPE_DEFINITION:\n case Kind.SCALAR_TYPE_EXTENSION:\n return DirectiveLocation$1.SCALAR;\n\n case Kind.OBJECT_TYPE_DEFINITION:\n case Kind.OBJECT_TYPE_EXTENSION:\n return DirectiveLocation$1.OBJECT;\n\n case Kind.FIELD_DEFINITION:\n return DirectiveLocation$1.FIELD_DEFINITION;\n\n case Kind.INTERFACE_TYPE_DEFINITION:\n case Kind.INTERFACE_TYPE_EXTENSION:\n return DirectiveLocation$1.INTERFACE;\n\n case Kind.UNION_TYPE_DEFINITION:\n case Kind.UNION_TYPE_EXTENSION:\n return DirectiveLocation$1.UNION;\n\n case Kind.ENUM_TYPE_DEFINITION:\n case Kind.ENUM_TYPE_EXTENSION:\n return DirectiveLocation$1.ENUM;\n\n case Kind.ENUM_VALUE_DEFINITION:\n return DirectiveLocation$1.ENUM_VALUE;\n\n case Kind.INPUT_OBJECT_TYPE_DEFINITION:\n case Kind.INPUT_OBJECT_TYPE_EXTENSION:\n return DirectiveLocation$1.INPUT_OBJECT;\n\n case Kind.INPUT_VALUE_DEFINITION: {\n const parentNode = ancestors[ancestors.length - 3];\n 'kind' in parentNode || invariant$1(false);\n return parentNode.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION\n ? DirectiveLocation$1.INPUT_FIELD_DEFINITION\n : DirectiveLocation$1.ARGUMENT_DEFINITION;\n }\n // Not reachable, all possible types have been considered.\n\n /* c8 ignore next */\n\n default:\n invariant$1(false, 'Unexpected kind: ' + inspect$1(appliedTo.kind));\n }\n}\n\nfunction getDirectiveLocationForOperation(operation) {\n switch (operation) {\n case OperationTypeNode.QUERY:\n return DirectiveLocation$1.QUERY;\n\n case OperationTypeNode.MUTATION:\n return DirectiveLocation$1.MUTATION;\n\n case OperationTypeNode.SUBSCRIPTION:\n return DirectiveLocation$1.SUBSCRIPTION;\n }\n}\n\n/**\n * Known fragment names\n *\n * A GraphQL document is only valid if all `...Fragment` fragment spreads refer\n * to fragments defined in the same document.\n *\n * See https://spec.graphql.org/draft/#sec-Fragment-spread-target-defined\n */\nfunction KnownFragmentNamesRule(context) {\n return {\n FragmentSpread(node) {\n const fragmentName = node.name.value;\n const fragment = context.getFragment(fragmentName);\n\n if (!fragment) {\n context.reportError(\n new GraphQLError(`Unknown fragment \"${fragmentName}\".`, {\n nodes: node.name,\n }),\n );\n }\n },\n };\n}\n\n/**\n * Known type names\n *\n * A GraphQL document is only valid if referenced types (specifically\n * variable definitions and fragment conditions) are defined by the type schema.\n *\n * See https://spec.graphql.org/draft/#sec-Fragment-Spread-Type-Existence\n */\nfunction KnownTypeNamesRule(context) {\n const schema = context.getSchema();\n const existingTypesMap = schema ? schema.getTypeMap() : Object.create(null);\n const definedTypes = Object.create(null);\n\n for (const def of context.getDocument().definitions) {\n if (isTypeDefinitionNode(def)) {\n definedTypes[def.name.value] = true;\n }\n }\n\n const typeNames = [\n ...Object.keys(existingTypesMap),\n ...Object.keys(definedTypes),\n ];\n return {\n NamedType(node, _1, parent, _2, ancestors) {\n const typeName = node.name.value;\n\n if (!existingTypesMap[typeName] && !definedTypes[typeName]) {\n var _ancestors$;\n\n const definitionNode =\n (_ancestors$ = ancestors[2]) !== null && _ancestors$ !== void 0\n ? _ancestors$\n : parent;\n const isSDL = definitionNode != null && isSDLNode(definitionNode);\n\n if (isSDL && standardTypeNames.includes(typeName)) {\n return;\n }\n\n const suggestedTypes = suggestionList(\n typeName,\n isSDL ? standardTypeNames.concat(typeNames) : typeNames,\n );\n context.reportError(\n new GraphQLError(\n `Unknown type \"${typeName}\".` + didYouMean(suggestedTypes),\n {\n nodes: node,\n },\n ),\n );\n }\n },\n };\n}\nconst standardTypeNames = [...specifiedScalarTypes, ...introspectionTypes].map(\n (type) => type.name,\n);\n\nfunction isSDLNode(value) {\n return (\n 'kind' in value &&\n (isTypeSystemDefinitionNode(value) || isTypeSystemExtensionNode(value))\n );\n}\n\n/**\n * Lone anonymous operation\n *\n * A GraphQL document is only valid if when it contains an anonymous operation\n * (the query short-hand) that it contains only that one operation definition.\n *\n * See https://spec.graphql.org/draft/#sec-Lone-Anonymous-Operation\n */\nfunction LoneAnonymousOperationRule(context) {\n let operationCount = 0;\n return {\n Document(node) {\n operationCount = node.definitions.filter(\n (definition) => definition.kind === Kind.OPERATION_DEFINITION,\n ).length;\n },\n\n OperationDefinition(node) {\n if (!node.name && operationCount > 1) {\n context.reportError(\n new GraphQLError(\n 'This anonymous operation must be the only defined operation.',\n {\n nodes: node,\n },\n ),\n );\n }\n },\n };\n}\n\n/**\n * Lone Schema definition\n *\n * A GraphQL document is only valid if it contains only one schema definition.\n */\nfunction LoneSchemaDefinitionRule(context) {\n var _ref, _ref2, _oldSchema$astNode;\n\n const oldSchema = context.getSchema();\n const alreadyDefined =\n (_ref =\n (_ref2 =\n (_oldSchema$astNode =\n oldSchema === null || oldSchema === void 0\n ? void 0\n : oldSchema.astNode) !== null && _oldSchema$astNode !== void 0\n ? _oldSchema$astNode\n : oldSchema === null || oldSchema === void 0\n ? void 0\n : oldSchema.getQueryType()) !== null && _ref2 !== void 0\n ? _ref2\n : oldSchema === null || oldSchema === void 0\n ? void 0\n : oldSchema.getMutationType()) !== null && _ref !== void 0\n ? _ref\n : oldSchema === null || oldSchema === void 0\n ? void 0\n : oldSchema.getSubscriptionType();\n let schemaDefinitionsCount = 0;\n return {\n SchemaDefinition(node) {\n if (alreadyDefined) {\n context.reportError(\n new GraphQLError(\n 'Cannot define a new schema within a schema extension.',\n {\n nodes: node,\n },\n ),\n );\n return;\n }\n\n if (schemaDefinitionsCount > 0) {\n context.reportError(\n new GraphQLError('Must provide only one schema definition.', {\n nodes: node,\n }),\n );\n }\n\n ++schemaDefinitionsCount;\n },\n };\n}\n\n/**\n * No fragment cycles\n *\n * The graph of fragment spreads must not form any cycles including spreading itself.\n * Otherwise an operation could infinitely spread or infinitely execute on cycles in the underlying data.\n *\n * See https://spec.graphql.org/draft/#sec-Fragment-spreads-must-not-form-cycles\n */\nfunction NoFragmentCyclesRule(context) {\n // Tracks already visited fragments to maintain O(N) and to ensure that cycles\n // are not redundantly reported.\n const visitedFrags = Object.create(null); // Array of AST nodes used to produce meaningful errors\n\n const spreadPath = []; // Position in the spread path\n\n const spreadPathIndexByName = Object.create(null);\n return {\n OperationDefinition: () => false,\n\n FragmentDefinition(node) {\n detectCycleRecursive(node);\n return false;\n },\n }; // This does a straight-forward DFS to find cycles.\n // It does not terminate when a cycle was found but continues to explore\n // the graph to find all possible cycles.\n\n function detectCycleRecursive(fragment) {\n if (visitedFrags[fragment.name.value]) {\n return;\n }\n\n const fragmentName = fragment.name.value;\n visitedFrags[fragmentName] = true;\n const spreadNodes = context.getFragmentSpreads(fragment.selectionSet);\n\n if (spreadNodes.length === 0) {\n return;\n }\n\n spreadPathIndexByName[fragmentName] = spreadPath.length;\n\n for (const spreadNode of spreadNodes) {\n const spreadName = spreadNode.name.value;\n const cycleIndex = spreadPathIndexByName[spreadName];\n spreadPath.push(spreadNode);\n\n if (cycleIndex === undefined) {\n const spreadFragment = context.getFragment(spreadName);\n\n if (spreadFragment) {\n detectCycleRecursive(spreadFragment);\n }\n } else {\n const cyclePath = spreadPath.slice(cycleIndex);\n const viaPath = cyclePath\n .slice(0, -1)\n .map((s) => '\"' + s.name.value + '\"')\n .join(', ');\n context.reportError(\n new GraphQLError(\n `Cannot spread fragment \"${spreadName}\" within itself` +\n (viaPath !== '' ? ` via ${viaPath}.` : '.'),\n {\n nodes: cyclePath,\n },\n ),\n );\n }\n\n spreadPath.pop();\n }\n\n spreadPathIndexByName[fragmentName] = undefined;\n }\n}\n\n/**\n * No undefined variables\n *\n * A GraphQL operation is only valid if all variables encountered, both directly\n * and via fragment spreads, are defined by that operation.\n *\n * See https://spec.graphql.org/draft/#sec-All-Variable-Uses-Defined\n */\nfunction NoUndefinedVariablesRule(context) {\n let variableNameDefined = Object.create(null);\n return {\n OperationDefinition: {\n enter() {\n variableNameDefined = Object.create(null);\n },\n\n leave(operation) {\n const usages = context.getRecursiveVariableUsages(operation);\n\n for (const { node } of usages) {\n const varName = node.name.value;\n\n if (variableNameDefined[varName] !== true) {\n context.reportError(\n new GraphQLError(\n operation.name\n ? `Variable \"$${varName}\" is not defined by operation \"${operation.name.value}\".`\n : `Variable \"$${varName}\" is not defined.`,\n {\n nodes: [node, operation],\n },\n ),\n );\n }\n }\n },\n },\n\n VariableDefinition(node) {\n variableNameDefined[node.variable.name.value] = true;\n },\n };\n}\n\n/**\n * No unused fragments\n *\n * A GraphQL document is only valid if all fragment definitions are spread\n * within operations, or spread within other fragments spread within operations.\n *\n * See https://spec.graphql.org/draft/#sec-Fragments-Must-Be-Used\n */\nfunction NoUnusedFragmentsRule(context) {\n const operationDefs = [];\n const fragmentDefs = [];\n return {\n OperationDefinition(node) {\n operationDefs.push(node);\n return false;\n },\n\n FragmentDefinition(node) {\n fragmentDefs.push(node);\n return false;\n },\n\n Document: {\n leave() {\n const fragmentNameUsed = Object.create(null);\n\n for (const operation of operationDefs) {\n for (const fragment of context.getRecursivelyReferencedFragments(\n operation,\n )) {\n fragmentNameUsed[fragment.name.value] = true;\n }\n }\n\n for (const fragmentDef of fragmentDefs) {\n const fragName = fragmentDef.name.value;\n\n if (fragmentNameUsed[fragName] !== true) {\n context.reportError(\n new GraphQLError(`Fragment \"${fragName}\" is never used.`, {\n nodes: fragmentDef,\n }),\n );\n }\n }\n },\n },\n };\n}\n\n/**\n * No unused variables\n *\n * A GraphQL operation is only valid if all variables defined by an operation\n * are used, either directly or within a spread fragment.\n *\n * See https://spec.graphql.org/draft/#sec-All-Variables-Used\n */\nfunction NoUnusedVariablesRule(context) {\n let variableDefs = [];\n return {\n OperationDefinition: {\n enter() {\n variableDefs = [];\n },\n\n leave(operation) {\n const variableNameUsed = Object.create(null);\n const usages = context.getRecursiveVariableUsages(operation);\n\n for (const { node } of usages) {\n variableNameUsed[node.name.value] = true;\n }\n\n for (const variableDef of variableDefs) {\n const variableName = variableDef.variable.name.value;\n\n if (variableNameUsed[variableName] !== true) {\n context.reportError(\n new GraphQLError(\n operation.name\n ? `Variable \"$${variableName}\" is never used in operation \"${operation.name.value}\".`\n : `Variable \"$${variableName}\" is never used.`,\n {\n nodes: variableDef,\n },\n ),\n );\n }\n }\n },\n },\n\n VariableDefinition(def) {\n variableDefs.push(def);\n },\n };\n}\n\n/**\n * Sort ValueNode.\n *\n * This function returns a sorted copy of the given ValueNode.\n *\n * @internal\n */\n\nfunction sortValueNode(valueNode) {\n switch (valueNode.kind) {\n case Kind.OBJECT:\n return { ...valueNode, fields: sortFields(valueNode.fields) };\n\n case Kind.LIST:\n return { ...valueNode, values: valueNode.values.map(sortValueNode) };\n\n case Kind.INT:\n case Kind.FLOAT:\n case Kind.STRING:\n case Kind.BOOLEAN:\n case Kind.NULL:\n case Kind.ENUM:\n case Kind.VARIABLE:\n return valueNode;\n }\n}\n\nfunction sortFields(fields) {\n return fields\n .map((fieldNode) => ({\n ...fieldNode,\n value: sortValueNode(fieldNode.value),\n }))\n .sort((fieldA, fieldB) =>\n naturalCompare(fieldA.name.value, fieldB.name.value),\n );\n}\n\nfunction reasonMessage(reason) {\n if (Array.isArray(reason)) {\n return reason\n .map(\n ([responseName, subReason]) =>\n `subfields \"${responseName}\" conflict because ` +\n reasonMessage(subReason),\n )\n .join(' and ');\n }\n\n return reason;\n}\n/**\n * Overlapping fields can be merged\n *\n * A selection set is only valid if all fields (including spreading any\n * fragments) either correspond to distinct response names or can be merged\n * without ambiguity.\n *\n * See https://spec.graphql.org/draft/#sec-Field-Selection-Merging\n */\n\nfunction OverlappingFieldsCanBeMergedRule(context) {\n // A memoization for when two fragments are compared \"between\" each other for\n // conflicts. Two fragments may be compared many times, so memoizing this can\n // dramatically improve the performance of this validator.\n const comparedFragmentPairs = new PairSet(); // A cache for the \"field map\" and list of fragment names found in any given\n // selection set. Selection sets may be asked for this information multiple\n // times, so this improves the performance of this validator.\n\n const cachedFieldsAndFragmentNames = new Map();\n return {\n SelectionSet(selectionSet) {\n const conflicts = findConflictsWithinSelectionSet(\n context,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n context.getParentType(),\n selectionSet,\n );\n\n for (const [[responseName, reason], fields1, fields2] of conflicts) {\n const reasonMsg = reasonMessage(reason);\n context.reportError(\n new GraphQLError(\n `Fields \"${responseName}\" conflict because ${reasonMsg}. Use different aliases on the fields to fetch both if this was intentional.`,\n {\n nodes: fields1.concat(fields2),\n },\n ),\n );\n }\n },\n };\n}\n\n/**\n * Algorithm:\n *\n * Conflicts occur when two fields exist in a query which will produce the same\n * response name, but represent differing values, thus creating a conflict.\n * The algorithm below finds all conflicts via making a series of comparisons\n * between fields. In order to compare as few fields as possible, this makes\n * a series of comparisons \"within\" sets of fields and \"between\" sets of fields.\n *\n * Given any selection set, a collection produces both a set of fields by\n * also including all inline fragments, as well as a list of fragments\n * referenced by fragment spreads.\n *\n * A) Each selection set represented in the document first compares \"within\" its\n * collected set of fields, finding any conflicts between every pair of\n * overlapping fields.\n * Note: This is the *only time* that a the fields \"within\" a set are compared\n * to each other. After this only fields \"between\" sets are compared.\n *\n * B) Also, if any fragment is referenced in a selection set, then a\n * comparison is made \"between\" the original set of fields and the\n * referenced fragment.\n *\n * C) Also, if multiple fragments are referenced, then comparisons\n * are made \"between\" each referenced fragment.\n *\n * D) When comparing \"between\" a set of fields and a referenced fragment, first\n * a comparison is made between each field in the original set of fields and\n * each field in the the referenced set of fields.\n *\n * E) Also, if any fragment is referenced in the referenced selection set,\n * then a comparison is made \"between\" the original set of fields and the\n * referenced fragment (recursively referring to step D).\n *\n * F) When comparing \"between\" two fragments, first a comparison is made between\n * each field in the first referenced set of fields and each field in the the\n * second referenced set of fields.\n *\n * G) Also, any fragments referenced by the first must be compared to the\n * second, and any fragments referenced by the second must be compared to the\n * first (recursively referring to step F).\n *\n * H) When comparing two fields, if both have selection sets, then a comparison\n * is made \"between\" both selection sets, first comparing the set of fields in\n * the first selection set with the set of fields in the second.\n *\n * I) Also, if any fragment is referenced in either selection set, then a\n * comparison is made \"between\" the other set of fields and the\n * referenced fragment.\n *\n * J) Also, if two fragments are referenced in both selection sets, then a\n * comparison is made \"between\" the two fragments.\n *\n */\n// Find all conflicts found \"within\" a selection set, including those found\n// via spreading in fragments. Called when visiting each SelectionSet in the\n// GraphQL Document.\nfunction findConflictsWithinSelectionSet(\n context,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n parentType,\n selectionSet,\n) {\n const conflicts = [];\n const [fieldMap, fragmentNames] = getFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n parentType,\n selectionSet,\n ); // (A) Find find all conflicts \"within\" the fields of this selection set.\n // Note: this is the *only place* `collectConflictsWithin` is called.\n\n collectConflictsWithin(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n fieldMap,\n );\n\n if (fragmentNames.length !== 0) {\n // (B) Then collect conflicts between these fields and those represented by\n // each spread fragment name found.\n for (let i = 0; i < fragmentNames.length; i++) {\n collectConflictsBetweenFieldsAndFragment(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n false,\n fieldMap,\n fragmentNames[i],\n ); // (C) Then compare this fragment with all other fragments found in this\n // selection set to collect conflicts between fragments spread together.\n // This compares each item in the list of fragment names to every other\n // item in that same list (except for itself).\n\n for (let j = i + 1; j < fragmentNames.length; j++) {\n collectConflictsBetweenFragments(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n false,\n fragmentNames[i],\n fragmentNames[j],\n );\n }\n }\n }\n\n return conflicts;\n} // Collect all conflicts found between a set of fields and a fragment reference\n// including via spreading in any nested fragments.\n\nfunction collectConflictsBetweenFieldsAndFragment(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fieldMap,\n fragmentName,\n) {\n const fragment = context.getFragment(fragmentName);\n\n if (!fragment) {\n return;\n }\n\n const [fieldMap2, referencedFragmentNames] =\n getReferencedFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n fragment,\n ); // Do not compare a fragment's fieldMap to itself.\n\n if (fieldMap === fieldMap2) {\n return;\n } // (D) First collect any conflicts between the provided collection of fields\n // and the collection of fields represented by the given fragment.\n\n collectConflictsBetween(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fieldMap,\n fieldMap2,\n ); // (E) Then collect any conflicts between the provided collection of fields\n // and any fragment names found in the given fragment.\n\n for (const referencedFragmentName of referencedFragmentNames) {\n // Memoize so two fragments are not compared for conflicts more than once.\n if (\n comparedFragmentPairs.has(\n referencedFragmentName,\n fragmentName,\n areMutuallyExclusive,\n )\n ) {\n continue;\n }\n\n comparedFragmentPairs.add(\n referencedFragmentName,\n fragmentName,\n areMutuallyExclusive,\n );\n collectConflictsBetweenFieldsAndFragment(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fieldMap,\n referencedFragmentName,\n );\n }\n} // Collect all conflicts found between two fragments, including via spreading in\n// any nested fragments.\n\nfunction collectConflictsBetweenFragments(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fragmentName1,\n fragmentName2,\n) {\n // No need to compare a fragment to itself.\n if (fragmentName1 === fragmentName2) {\n return;\n } // Memoize so two fragments are not compared for conflicts more than once.\n\n if (\n comparedFragmentPairs.has(\n fragmentName1,\n fragmentName2,\n areMutuallyExclusive,\n )\n ) {\n return;\n }\n\n comparedFragmentPairs.add(fragmentName1, fragmentName2, areMutuallyExclusive);\n const fragment1 = context.getFragment(fragmentName1);\n const fragment2 = context.getFragment(fragmentName2);\n\n if (!fragment1 || !fragment2) {\n return;\n }\n\n const [fieldMap1, referencedFragmentNames1] =\n getReferencedFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n fragment1,\n );\n const [fieldMap2, referencedFragmentNames2] =\n getReferencedFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n fragment2,\n ); // (F) First, collect all conflicts between these two collections of fields\n // (not including any nested fragments).\n\n collectConflictsBetween(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fieldMap1,\n fieldMap2,\n ); // (G) Then collect conflicts between the first fragment and any nested\n // fragments spread in the second fragment.\n\n for (const referencedFragmentName2 of referencedFragmentNames2) {\n collectConflictsBetweenFragments(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fragmentName1,\n referencedFragmentName2,\n );\n } // (G) Then collect conflicts between the second fragment and any nested\n // fragments spread in the first fragment.\n\n for (const referencedFragmentName1 of referencedFragmentNames1) {\n collectConflictsBetweenFragments(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n referencedFragmentName1,\n fragmentName2,\n );\n }\n} // Find all conflicts found between two selection sets, including those found\n// via spreading in fragments. Called when determining if conflicts exist\n// between the sub-fields of two overlapping fields.\n\nfunction findConflictsBetweenSubSelectionSets(\n context,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n parentType1,\n selectionSet1,\n parentType2,\n selectionSet2,\n) {\n const conflicts = [];\n const [fieldMap1, fragmentNames1] = getFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n parentType1,\n selectionSet1,\n );\n const [fieldMap2, fragmentNames2] = getFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n parentType2,\n selectionSet2,\n ); // (H) First, collect all conflicts between these two collections of field.\n\n collectConflictsBetween(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fieldMap1,\n fieldMap2,\n ); // (I) Then collect conflicts between the first collection of fields and\n // those referenced by each fragment name associated with the second.\n\n for (const fragmentName2 of fragmentNames2) {\n collectConflictsBetweenFieldsAndFragment(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fieldMap1,\n fragmentName2,\n );\n } // (I) Then collect conflicts between the second collection of fields and\n // those referenced by each fragment name associated with the first.\n\n for (const fragmentName1 of fragmentNames1) {\n collectConflictsBetweenFieldsAndFragment(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fieldMap2,\n fragmentName1,\n );\n } // (J) Also collect conflicts between any fragment names by the first and\n // fragment names by the second. This compares each item in the first set of\n // names to each item in the second set of names.\n\n for (const fragmentName1 of fragmentNames1) {\n for (const fragmentName2 of fragmentNames2) {\n collectConflictsBetweenFragments(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fragmentName1,\n fragmentName2,\n );\n }\n }\n\n return conflicts;\n} // Collect all Conflicts \"within\" one collection of fields.\n\nfunction collectConflictsWithin(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n fieldMap,\n) {\n // A field map is a keyed collection, where each key represents a response\n // name and the value at that key is a list of all fields which provide that\n // response name. For every response name, if there are multiple fields, they\n // must be compared to find a potential conflict.\n for (const [responseName, fields] of Object.entries(fieldMap)) {\n // This compares every field in the list to every other field in this list\n // (except to itself). If the list only has one item, nothing needs to\n // be compared.\n if (fields.length > 1) {\n for (let i = 0; i < fields.length; i++) {\n for (let j = i + 1; j < fields.length; j++) {\n const conflict = findConflict(\n context,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n false, // within one collection is never mutually exclusive\n responseName,\n fields[i],\n fields[j],\n );\n\n if (conflict) {\n conflicts.push(conflict);\n }\n }\n }\n }\n }\n} // Collect all Conflicts between two collections of fields. This is similar to,\n// but different from the `collectConflictsWithin` function above. This check\n// assumes that `collectConflictsWithin` has already been called on each\n// provided collection of fields. This is true because this validator traverses\n// each individual selection set.\n\nfunction collectConflictsBetween(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n parentFieldsAreMutuallyExclusive,\n fieldMap1,\n fieldMap2,\n) {\n // A field map is a keyed collection, where each key represents a response\n // name and the value at that key is a list of all fields which provide that\n // response name. For any response name which appears in both provided field\n // maps, each field from the first field map must be compared to every field\n // in the second field map to find potential conflicts.\n for (const [responseName, fields1] of Object.entries(fieldMap1)) {\n const fields2 = fieldMap2[responseName];\n\n if (fields2) {\n for (const field1 of fields1) {\n for (const field2 of fields2) {\n const conflict = findConflict(\n context,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n parentFieldsAreMutuallyExclusive,\n responseName,\n field1,\n field2,\n );\n\n if (conflict) {\n conflicts.push(conflict);\n }\n }\n }\n }\n }\n} // Determines if there is a conflict between two particular fields, including\n// comparing their sub-fields.\n\nfunction findConflict(\n context,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n parentFieldsAreMutuallyExclusive,\n responseName,\n field1,\n field2,\n) {\n const [parentType1, node1, def1] = field1;\n const [parentType2, node2, def2] = field2; // If it is known that two fields could not possibly apply at the same\n // time, due to the parent types, then it is safe to permit them to diverge\n // in aliased field or arguments used as they will not present any ambiguity\n // by differing.\n // It is known that two parent types could never overlap if they are\n // different Object types. Interface or Union types might overlap - if not\n // in the current state of the schema, then perhaps in some future version,\n // thus may not safely diverge.\n\n const areMutuallyExclusive =\n parentFieldsAreMutuallyExclusive ||\n (parentType1 !== parentType2 &&\n isObjectType(parentType1) &&\n isObjectType(parentType2));\n\n if (!areMutuallyExclusive) {\n // Two aliases must refer to the same field.\n const name1 = node1.name.value;\n const name2 = node2.name.value;\n\n if (name1 !== name2) {\n return [\n [responseName, `\"${name1}\" and \"${name2}\" are different fields`],\n [node1],\n [node2],\n ];\n } // Two field calls must have the same arguments.\n\n if (stringifyArguments(node1) !== stringifyArguments(node2)) {\n return [\n [responseName, 'they have differing arguments'],\n [node1],\n [node2],\n ];\n }\n } // The return type for each field.\n\n const type1 = def1 === null || def1 === void 0 ? void 0 : def1.type;\n const type2 = def2 === null || def2 === void 0 ? void 0 : def2.type;\n\n if (type1 && type2 && doTypesConflict(type1, type2)) {\n return [\n [\n responseName,\n `they return conflicting types \"${inspect$1(type1)}\" and \"${inspect$1(\n type2,\n )}\"`,\n ],\n [node1],\n [node2],\n ];\n } // Collect and compare sub-fields. Use the same \"visited fragment names\" list\n // for both collections so fields in a fragment reference are never\n // compared to themselves.\n\n const selectionSet1 = node1.selectionSet;\n const selectionSet2 = node2.selectionSet;\n\n if (selectionSet1 && selectionSet2) {\n const conflicts = findConflictsBetweenSubSelectionSets(\n context,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n getNamedType(type1),\n selectionSet1,\n getNamedType(type2),\n selectionSet2,\n );\n return subfieldConflicts(conflicts, responseName, node1, node2);\n }\n}\n\nfunction stringifyArguments(fieldNode) {\n var _fieldNode$arguments;\n\n // FIXME https://github.com/graphql/graphql-js/issues/2203\n const args =\n /* c8 ignore next */\n (_fieldNode$arguments = fieldNode.arguments) !== null &&\n _fieldNode$arguments !== void 0\n ? _fieldNode$arguments\n : [];\n const inputObjectWithArgs = {\n kind: Kind.OBJECT,\n fields: args.map((argNode) => ({\n kind: Kind.OBJECT_FIELD,\n name: argNode.name,\n value: argNode.value,\n })),\n };\n return print(sortValueNode(inputObjectWithArgs));\n} // Two types conflict if both types could not apply to a value simultaneously.\n// Composite types are ignored as their individual field types will be compared\n// later recursively. However List and Non-Null types must match.\n\nfunction doTypesConflict(type1, type2) {\n if (isListType(type1)) {\n return isListType(type2)\n ? doTypesConflict(type1.ofType, type2.ofType)\n : true;\n }\n\n if (isListType(type2)) {\n return true;\n }\n\n if (isNonNullType(type1)) {\n return isNonNullType(type2)\n ? doTypesConflict(type1.ofType, type2.ofType)\n : true;\n }\n\n if (isNonNullType(type2)) {\n return true;\n }\n\n if (isLeafType(type1) || isLeafType(type2)) {\n return type1 !== type2;\n }\n\n return false;\n} // Given a selection set, return the collection of fields (a mapping of response\n// name to field nodes and definitions) as well as a list of fragment names\n// referenced via fragment spreads.\n\nfunction getFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n parentType,\n selectionSet,\n) {\n const cached = cachedFieldsAndFragmentNames.get(selectionSet);\n\n if (cached) {\n return cached;\n }\n\n const nodeAndDefs = Object.create(null);\n const fragmentNames = Object.create(null);\n\n _collectFieldsAndFragmentNames(\n context,\n parentType,\n selectionSet,\n nodeAndDefs,\n fragmentNames,\n );\n\n const result = [nodeAndDefs, Object.keys(fragmentNames)];\n cachedFieldsAndFragmentNames.set(selectionSet, result);\n return result;\n} // Given a reference to a fragment, return the represented collection of fields\n// as well as a list of nested fragment names referenced via fragment spreads.\n\nfunction getReferencedFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n fragment,\n) {\n // Short-circuit building a type from the node if possible.\n const cached = cachedFieldsAndFragmentNames.get(fragment.selectionSet);\n\n if (cached) {\n return cached;\n }\n\n const fragmentType = typeFromAST(context.getSchema(), fragment.typeCondition);\n return getFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n fragmentType,\n fragment.selectionSet,\n );\n}\n\nfunction _collectFieldsAndFragmentNames(\n context,\n parentType,\n selectionSet,\n nodeAndDefs,\n fragmentNames,\n) {\n for (const selection of selectionSet.selections) {\n switch (selection.kind) {\n case Kind.FIELD: {\n const fieldName = selection.name.value;\n let fieldDef;\n\n if (isObjectType(parentType) || isInterfaceType(parentType)) {\n fieldDef = parentType.getFields()[fieldName];\n }\n\n const responseName = selection.alias\n ? selection.alias.value\n : fieldName;\n\n if (!nodeAndDefs[responseName]) {\n nodeAndDefs[responseName] = [];\n }\n\n nodeAndDefs[responseName].push([parentType, selection, fieldDef]);\n break;\n }\n\n case Kind.FRAGMENT_SPREAD:\n fragmentNames[selection.name.value] = true;\n break;\n\n case Kind.INLINE_FRAGMENT: {\n const typeCondition = selection.typeCondition;\n const inlineFragmentType = typeCondition\n ? typeFromAST(context.getSchema(), typeCondition)\n : parentType;\n\n _collectFieldsAndFragmentNames(\n context,\n inlineFragmentType,\n selection.selectionSet,\n nodeAndDefs,\n fragmentNames,\n );\n\n break;\n }\n }\n }\n} // Given a series of Conflicts which occurred between two sub-fields, generate\n// a single Conflict.\n\nfunction subfieldConflicts(conflicts, responseName, node1, node2) {\n if (conflicts.length > 0) {\n return [\n [responseName, conflicts.map(([reason]) => reason)],\n [node1, ...conflicts.map(([, fields1]) => fields1).flat()],\n [node2, ...conflicts.map(([, , fields2]) => fields2).flat()],\n ];\n }\n}\n/**\n * A way to keep track of pairs of things when the ordering of the pair does not matter.\n */\n\nclass PairSet {\n constructor() {\n this._data = new Map();\n }\n\n has(a, b, areMutuallyExclusive) {\n var _this$_data$get;\n\n const [key1, key2] = a < b ? [a, b] : [b, a];\n const result =\n (_this$_data$get = this._data.get(key1)) === null ||\n _this$_data$get === void 0\n ? void 0\n : _this$_data$get.get(key2);\n\n if (result === undefined) {\n return false;\n } // areMutuallyExclusive being false is a superset of being true, hence if\n // we want to know if this PairSet \"has\" these two with no exclusivity,\n // we have to ensure it was added as such.\n\n return areMutuallyExclusive ? true : areMutuallyExclusive === result;\n }\n\n add(a, b, areMutuallyExclusive) {\n const [key1, key2] = a < b ? [a, b] : [b, a];\n\n const map = this._data.get(key1);\n\n if (map === undefined) {\n this._data.set(key1, new Map([[key2, areMutuallyExclusive]]));\n } else {\n map.set(key2, areMutuallyExclusive);\n }\n }\n}\n\n/**\n * Possible fragment spread\n *\n * A fragment spread is only valid if the type condition could ever possibly\n * be true: if there is a non-empty intersection of the possible parent types,\n * and possible types which pass the type condition.\n */\nfunction PossibleFragmentSpreadsRule(context) {\n return {\n InlineFragment(node) {\n const fragType = context.getType();\n const parentType = context.getParentType();\n\n if (\n isCompositeType(fragType) &&\n isCompositeType(parentType) &&\n !doTypesOverlap(context.getSchema(), fragType, parentType)\n ) {\n const parentTypeStr = inspect$1(parentType);\n const fragTypeStr = inspect$1(fragType);\n context.reportError(\n new GraphQLError(\n `Fragment cannot be spread here as objects of type \"${parentTypeStr}\" can never be of type \"${fragTypeStr}\".`,\n {\n nodes: node,\n },\n ),\n );\n }\n },\n\n FragmentSpread(node) {\n const fragName = node.name.value;\n const fragType = getFragmentType(context, fragName);\n const parentType = context.getParentType();\n\n if (\n fragType &&\n parentType &&\n !doTypesOverlap(context.getSchema(), fragType, parentType)\n ) {\n const parentTypeStr = inspect$1(parentType);\n const fragTypeStr = inspect$1(fragType);\n context.reportError(\n new GraphQLError(\n `Fragment \"${fragName}\" cannot be spread here as objects of type \"${parentTypeStr}\" can never be of type \"${fragTypeStr}\".`,\n {\n nodes: node,\n },\n ),\n );\n }\n },\n };\n}\n\nfunction getFragmentType(context, name) {\n const frag = context.getFragment(name);\n\n if (frag) {\n const type = typeFromAST(context.getSchema(), frag.typeCondition);\n\n if (isCompositeType(type)) {\n return type;\n }\n }\n}\n\n/**\n * Possible type extension\n *\n * A type extension is only valid if the type is defined and has the same kind.\n */\nfunction PossibleTypeExtensionsRule(context) {\n const schema = context.getSchema();\n const definedTypes = Object.create(null);\n\n for (const def of context.getDocument().definitions) {\n if (isTypeDefinitionNode(def)) {\n definedTypes[def.name.value] = def;\n }\n }\n\n return {\n ScalarTypeExtension: checkExtension,\n ObjectTypeExtension: checkExtension,\n InterfaceTypeExtension: checkExtension,\n UnionTypeExtension: checkExtension,\n EnumTypeExtension: checkExtension,\n InputObjectTypeExtension: checkExtension,\n };\n\n function checkExtension(node) {\n const typeName = node.name.value;\n const defNode = definedTypes[typeName];\n const existingType =\n schema === null || schema === void 0 ? void 0 : schema.getType(typeName);\n let expectedKind;\n\n if (defNode) {\n expectedKind = defKindToExtKind[defNode.kind];\n } else if (existingType) {\n expectedKind = typeToExtKind(existingType);\n }\n\n if (expectedKind) {\n if (expectedKind !== node.kind) {\n const kindStr = extensionKindToTypeName(node.kind);\n context.reportError(\n new GraphQLError(`Cannot extend non-${kindStr} type \"${typeName}\".`, {\n nodes: defNode ? [defNode, node] : node,\n }),\n );\n }\n } else {\n const allTypeNames = Object.keys({\n ...definedTypes,\n ...(schema === null || schema === void 0\n ? void 0\n : schema.getTypeMap()),\n });\n const suggestedTypes = suggestionList(typeName, allTypeNames);\n context.reportError(\n new GraphQLError(\n `Cannot extend type \"${typeName}\" because it is not defined.` +\n didYouMean(suggestedTypes),\n {\n nodes: node.name,\n },\n ),\n );\n }\n }\n}\nconst defKindToExtKind = {\n [Kind.SCALAR_TYPE_DEFINITION]: Kind.SCALAR_TYPE_EXTENSION,\n [Kind.OBJECT_TYPE_DEFINITION]: Kind.OBJECT_TYPE_EXTENSION,\n [Kind.INTERFACE_TYPE_DEFINITION]: Kind.INTERFACE_TYPE_EXTENSION,\n [Kind.UNION_TYPE_DEFINITION]: Kind.UNION_TYPE_EXTENSION,\n [Kind.ENUM_TYPE_DEFINITION]: Kind.ENUM_TYPE_EXTENSION,\n [Kind.INPUT_OBJECT_TYPE_DEFINITION]: Kind.INPUT_OBJECT_TYPE_EXTENSION,\n};\n\nfunction typeToExtKind(type) {\n if (isScalarType(type)) {\n return Kind.SCALAR_TYPE_EXTENSION;\n }\n\n if (isObjectType(type)) {\n return Kind.OBJECT_TYPE_EXTENSION;\n }\n\n if (isInterfaceType(type)) {\n return Kind.INTERFACE_TYPE_EXTENSION;\n }\n\n if (isUnionType(type)) {\n return Kind.UNION_TYPE_EXTENSION;\n }\n\n if (isEnumType(type)) {\n return Kind.ENUM_TYPE_EXTENSION;\n }\n\n if (isInputObjectType(type)) {\n return Kind.INPUT_OBJECT_TYPE_EXTENSION;\n }\n /* c8 ignore next 3 */\n // Not reachable. All possible types have been considered\n\n invariant$1(false, 'Unexpected type: ' + inspect$1(type));\n}\n\nfunction extensionKindToTypeName(kind) {\n switch (kind) {\n case Kind.SCALAR_TYPE_EXTENSION:\n return 'scalar';\n\n case Kind.OBJECT_TYPE_EXTENSION:\n return 'object';\n\n case Kind.INTERFACE_TYPE_EXTENSION:\n return 'interface';\n\n case Kind.UNION_TYPE_EXTENSION:\n return 'union';\n\n case Kind.ENUM_TYPE_EXTENSION:\n return 'enum';\n\n case Kind.INPUT_OBJECT_TYPE_EXTENSION:\n return 'input object';\n // Not reachable. All possible types have been considered\n\n /* c8 ignore next */\n\n default:\n invariant$1(false, 'Unexpected kind: ' + inspect$1(kind));\n }\n}\n\n/**\n * Provided required arguments\n *\n * A field or directive is only valid if all required (non-null without a\n * default value) field arguments have been provided.\n */\nfunction ProvidedRequiredArgumentsRule(context) {\n return {\n // eslint-disable-next-line new-cap\n ...ProvidedRequiredArgumentsOnDirectivesRule(context),\n Field: {\n // Validate on leave to allow for deeper errors to appear first.\n leave(fieldNode) {\n var _fieldNode$arguments;\n\n const fieldDef = context.getFieldDef();\n\n if (!fieldDef) {\n return false;\n }\n\n const providedArgs = new Set( // FIXME: https://github.com/graphql/graphql-js/issues/2203\n /* c8 ignore next */\n (_fieldNode$arguments = fieldNode.arguments) === null ||\n _fieldNode$arguments === void 0\n ? void 0\n : _fieldNode$arguments.map((arg) => arg.name.value),\n );\n\n for (const argDef of fieldDef.args) {\n if (!providedArgs.has(argDef.name) && isRequiredArgument(argDef)) {\n const argTypeStr = inspect$1(argDef.type);\n context.reportError(\n new GraphQLError(\n `Field \"${fieldDef.name}\" argument \"${argDef.name}\" of type \"${argTypeStr}\" is required, but it was not provided.`,\n {\n nodes: fieldNode,\n },\n ),\n );\n }\n }\n },\n },\n };\n}\n/**\n * @internal\n */\n\nfunction ProvidedRequiredArgumentsOnDirectivesRule(context) {\n var _schema$getDirectives;\n\n const requiredArgsMap = Object.create(null);\n const schema = context.getSchema();\n const definedDirectives =\n (_schema$getDirectives =\n schema === null || schema === void 0\n ? void 0\n : schema.getDirectives()) !== null && _schema$getDirectives !== void 0\n ? _schema$getDirectives\n : specifiedDirectives;\n\n for (const directive of definedDirectives) {\n requiredArgsMap[directive.name] = keyMap(\n directive.args.filter(isRequiredArgument),\n (arg) => arg.name,\n );\n }\n\n const astDefinitions = context.getDocument().definitions;\n\n for (const def of astDefinitions) {\n if (def.kind === Kind.DIRECTIVE_DEFINITION) {\n var _def$arguments;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n const argNodes =\n (_def$arguments = def.arguments) !== null && _def$arguments !== void 0\n ? _def$arguments\n : [];\n requiredArgsMap[def.name.value] = keyMap(\n argNodes.filter(isRequiredArgumentNode),\n (arg) => arg.name.value,\n );\n }\n }\n\n return {\n Directive: {\n // Validate on leave to allow for deeper errors to appear first.\n leave(directiveNode) {\n const directiveName = directiveNode.name.value;\n const requiredArgs = requiredArgsMap[directiveName];\n\n if (requiredArgs) {\n var _directiveNode$argume;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n const argNodes =\n (_directiveNode$argume = directiveNode.arguments) !== null &&\n _directiveNode$argume !== void 0\n ? _directiveNode$argume\n : [];\n const argNodeMap = new Set(argNodes.map((arg) => arg.name.value));\n\n for (const [argName, argDef] of Object.entries(requiredArgs)) {\n if (!argNodeMap.has(argName)) {\n const argType = isType(argDef.type)\n ? inspect$1(argDef.type)\n : print(argDef.type);\n context.reportError(\n new GraphQLError(\n `Directive \"@${directiveName}\" argument \"${argName}\" of type \"${argType}\" is required, but it was not provided.`,\n {\n nodes: directiveNode,\n },\n ),\n );\n }\n }\n }\n },\n },\n };\n}\n\nfunction isRequiredArgumentNode(arg) {\n return arg.type.kind === Kind.NON_NULL_TYPE && arg.defaultValue == null;\n}\n\n/**\n * Scalar leafs\n *\n * A GraphQL document is valid only if all leaf fields (fields without\n * sub selections) are of scalar or enum types.\n */\nfunction ScalarLeafsRule(context) {\n return {\n Field(node) {\n const type = context.getType();\n const selectionSet = node.selectionSet;\n\n if (type) {\n if (isLeafType(getNamedType(type))) {\n if (selectionSet) {\n const fieldName = node.name.value;\n const typeStr = inspect$1(type);\n context.reportError(\n new GraphQLError(\n `Field \"${fieldName}\" must not have a selection since type \"${typeStr}\" has no subfields.`,\n {\n nodes: selectionSet,\n },\n ),\n );\n }\n } else if (!selectionSet) {\n const fieldName = node.name.value;\n const typeStr = inspect$1(type);\n context.reportError(\n new GraphQLError(\n `Field \"${fieldName}\" of type \"${typeStr}\" must have a selection of subfields. Did you mean \"${fieldName} { ... }\"?`,\n {\n nodes: node,\n },\n ),\n );\n }\n }\n },\n };\n}\n\n/**\n * Build a string describing the path.\n */\nfunction printPathArray(path) {\n return path\n .map((key) =>\n typeof key === 'number' ? '[' + key.toString() + ']' : '.' + key,\n )\n .join('');\n}\n\n/**\n * Given a Path and a key, return a new Path containing the new key.\n */\nfunction addPath(prev, key, typename) {\n return {\n prev,\n key,\n typename,\n };\n}\n/**\n * Given a Path, return an Array of the path keys.\n */\n\nfunction pathToArray(path) {\n const flattened = [];\n let curr = path;\n\n while (curr) {\n flattened.push(curr.key);\n curr = curr.prev;\n }\n\n return flattened.reverse();\n}\n\n/**\n * Coerces a JavaScript value given a GraphQL Input Type.\n */\nfunction coerceInputValue(inputValue, type, onError = defaultOnError) {\n return coerceInputValueImpl(inputValue, type, onError, undefined);\n}\n\nfunction defaultOnError(path, invalidValue, error) {\n let errorPrefix = 'Invalid value ' + inspect$1(invalidValue);\n\n if (path.length > 0) {\n errorPrefix += ` at \"value${printPathArray(path)}\"`;\n }\n\n error.message = errorPrefix + ': ' + error.message;\n throw error;\n}\n\nfunction coerceInputValueImpl(inputValue, type, onError, path) {\n if (isNonNullType(type)) {\n if (inputValue != null) {\n return coerceInputValueImpl(inputValue, type.ofType, onError, path);\n }\n\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(\n `Expected non-nullable type \"${inspect$1(type)}\" not to be null.`,\n ),\n );\n return;\n }\n\n if (inputValue == null) {\n // Explicitly return the value null.\n return null;\n }\n\n if (isListType(type)) {\n const itemType = type.ofType;\n\n if (isIterableObject(inputValue)) {\n return Array.from(inputValue, (itemValue, index) => {\n const itemPath = addPath(path, index, undefined);\n return coerceInputValueImpl(itemValue, itemType, onError, itemPath);\n });\n } // Lists accept a non-list value as a list of one.\n\n return [coerceInputValueImpl(inputValue, itemType, onError, path)];\n }\n\n if (isInputObjectType(type)) {\n if (!isObjectLike(inputValue)) {\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(`Expected type \"${type.name}\" to be an object.`),\n );\n return;\n }\n\n const coercedValue = {};\n const fieldDefs = type.getFields();\n\n for (const field of Object.values(fieldDefs)) {\n const fieldValue = inputValue[field.name];\n\n if (fieldValue === undefined) {\n if (field.defaultValue !== undefined) {\n coercedValue[field.name] = field.defaultValue;\n } else if (isNonNullType(field.type)) {\n const typeStr = inspect$1(field.type);\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(\n `Field \"${field.name}\" of required type \"${typeStr}\" was not provided.`,\n ),\n );\n }\n\n continue;\n }\n\n coercedValue[field.name] = coerceInputValueImpl(\n fieldValue,\n field.type,\n onError,\n addPath(path, field.name, type.name),\n );\n } // Ensure every provided field is defined.\n\n for (const fieldName of Object.keys(inputValue)) {\n if (!fieldDefs[fieldName]) {\n const suggestions = suggestionList(\n fieldName,\n Object.keys(type.getFields()),\n );\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(\n `Field \"${fieldName}\" is not defined by type \"${type.name}\".` +\n didYouMean(suggestions),\n ),\n );\n }\n }\n\n return coercedValue;\n }\n\n if (isLeafType(type)) {\n let parseResult; // Scalars and Enums determine if a input value is valid via parseValue(),\n // which can throw to indicate failure. If it throws, maintain a reference\n // to the original error.\n\n try {\n parseResult = type.parseValue(inputValue);\n } catch (error) {\n if (error instanceof GraphQLError) {\n onError(pathToArray(path), inputValue, error);\n } else {\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(`Expected type \"${type.name}\". ` + error.message, {\n originalError: error,\n }),\n );\n }\n\n return;\n }\n\n if (parseResult === undefined) {\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(`Expected type \"${type.name}\".`),\n );\n }\n\n return parseResult;\n }\n /* c8 ignore next 3 */\n // Not reachable, all possible types have been considered.\n\n invariant$1(false, 'Unexpected input type: ' + inspect$1(type));\n}\n\n/**\n * Produces a JavaScript value given a GraphQL Value AST.\n *\n * A GraphQL type must be provided, which will be used to interpret different\n * GraphQL Value literals.\n *\n * Returns `undefined` when the value could not be validly coerced according to\n * the provided type.\n *\n * | GraphQL Value | JSON Value |\n * | -------------------- | ------------- |\n * | Input Object | Object |\n * | List | Array |\n * | Boolean | Boolean |\n * | String | String |\n * | Int / Float | Number |\n * | Enum Value | Unknown |\n * | NullValue | null |\n *\n */\n\nfunction valueFromAST(valueNode, type, variables) {\n if (!valueNode) {\n // When there is no node, then there is also no value.\n // Importantly, this is different from returning the value null.\n return;\n }\n\n if (valueNode.kind === Kind.VARIABLE) {\n const variableName = valueNode.name.value;\n\n if (variables == null || variables[variableName] === undefined) {\n // No valid return value.\n return;\n }\n\n const variableValue = variables[variableName];\n\n if (variableValue === null && isNonNullType(type)) {\n return; // Invalid: intentionally return no value.\n } // Note: This does no further checking that this variable is correct.\n // This assumes that this query has been validated and the variable\n // usage here is of the correct type.\n\n return variableValue;\n }\n\n if (isNonNullType(type)) {\n if (valueNode.kind === Kind.NULL) {\n return; // Invalid: intentionally return no value.\n }\n\n return valueFromAST(valueNode, type.ofType, variables);\n }\n\n if (valueNode.kind === Kind.NULL) {\n // This is explicitly returning the value null.\n return null;\n }\n\n if (isListType(type)) {\n const itemType = type.ofType;\n\n if (valueNode.kind === Kind.LIST) {\n const coercedValues = [];\n\n for (const itemNode of valueNode.values) {\n if (isMissingVariable(itemNode, variables)) {\n // If an array contains a missing variable, it is either coerced to\n // null or if the item type is non-null, it considered invalid.\n if (isNonNullType(itemType)) {\n return; // Invalid: intentionally return no value.\n }\n\n coercedValues.push(null);\n } else {\n const itemValue = valueFromAST(itemNode, itemType, variables);\n\n if (itemValue === undefined) {\n return; // Invalid: intentionally return no value.\n }\n\n coercedValues.push(itemValue);\n }\n }\n\n return coercedValues;\n }\n\n const coercedValue = valueFromAST(valueNode, itemType, variables);\n\n if (coercedValue === undefined) {\n return; // Invalid: intentionally return no value.\n }\n\n return [coercedValue];\n }\n\n if (isInputObjectType(type)) {\n if (valueNode.kind !== Kind.OBJECT) {\n return; // Invalid: intentionally return no value.\n }\n\n const coercedObj = Object.create(null);\n const fieldNodes = keyMap(valueNode.fields, (field) => field.name.value);\n\n for (const field of Object.values(type.getFields())) {\n const fieldNode = fieldNodes[field.name];\n\n if (!fieldNode || isMissingVariable(fieldNode.value, variables)) {\n if (field.defaultValue !== undefined) {\n coercedObj[field.name] = field.defaultValue;\n } else if (isNonNullType(field.type)) {\n return; // Invalid: intentionally return no value.\n }\n\n continue;\n }\n\n const fieldValue = valueFromAST(fieldNode.value, field.type, variables);\n\n if (fieldValue === undefined) {\n return; // Invalid: intentionally return no value.\n }\n\n coercedObj[field.name] = fieldValue;\n }\n\n return coercedObj;\n }\n\n if (isLeafType(type)) {\n // Scalars and Enums fulfill parsing a literal value via parseLiteral().\n // Invalid values represent a failure to parse correctly, in which case\n // no value is returned.\n let result;\n\n try {\n result = type.parseLiteral(valueNode, variables);\n } catch (_error) {\n return; // Invalid: intentionally return no value.\n }\n\n if (result === undefined) {\n return; // Invalid: intentionally return no value.\n }\n\n return result;\n }\n /* c8 ignore next 3 */\n // Not reachable, all possible input types have been considered.\n\n invariant$1(false, 'Unexpected input type: ' + inspect$1(type));\n} // Returns true if the provided valueNode is a variable which is not defined\n// in the set of variables.\n\nfunction isMissingVariable(valueNode, variables) {\n return (\n valueNode.kind === Kind.VARIABLE &&\n (variables == null || variables[valueNode.name.value] === undefined)\n );\n}\n\n/**\n * Prepares an object map of variableValues of the correct type based on the\n * provided variable definitions and arbitrary input. If the input cannot be\n * parsed to match the variable definitions, a GraphQLError will be thrown.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n */\nfunction getVariableValues(schema, varDefNodes, inputs, options) {\n const errors = [];\n const maxErrors =\n options === null || options === void 0 ? void 0 : options.maxErrors;\n\n try {\n const coerced = coerceVariableValues(\n schema,\n varDefNodes,\n inputs,\n (error) => {\n if (maxErrors != null && errors.length >= maxErrors) {\n throw new GraphQLError(\n 'Too many errors processing variables, error limit reached. Execution aborted.',\n );\n }\n\n errors.push(error);\n },\n );\n\n if (errors.length === 0) {\n return {\n coerced,\n };\n }\n } catch (error) {\n errors.push(error);\n }\n\n return {\n errors,\n };\n}\n\nfunction coerceVariableValues(schema, varDefNodes, inputs, onError) {\n const coercedValues = {};\n\n for (const varDefNode of varDefNodes) {\n const varName = varDefNode.variable.name.value;\n const varType = typeFromAST(schema, varDefNode.type);\n\n if (!isInputType(varType)) {\n // Must use input types for variables. This should be caught during\n // validation, however is checked again here for safety.\n const varTypeStr = print(varDefNode.type);\n onError(\n new GraphQLError(\n `Variable \"$${varName}\" expected value of type \"${varTypeStr}\" which cannot be used as an input type.`,\n {\n nodes: varDefNode.type,\n },\n ),\n );\n continue;\n }\n\n if (!hasOwnProperty(inputs, varName)) {\n if (varDefNode.defaultValue) {\n coercedValues[varName] = valueFromAST(varDefNode.defaultValue, varType);\n } else if (isNonNullType(varType)) {\n const varTypeStr = inspect$1(varType);\n onError(\n new GraphQLError(\n `Variable \"$${varName}\" of required type \"${varTypeStr}\" was not provided.`,\n {\n nodes: varDefNode,\n },\n ),\n );\n }\n\n continue;\n }\n\n const value = inputs[varName];\n\n if (value === null && isNonNullType(varType)) {\n const varTypeStr = inspect$1(varType);\n onError(\n new GraphQLError(\n `Variable \"$${varName}\" of non-null type \"${varTypeStr}\" must not be null.`,\n {\n nodes: varDefNode,\n },\n ),\n );\n continue;\n }\n\n coercedValues[varName] = coerceInputValue(\n value,\n varType,\n (path, invalidValue, error) => {\n let prefix =\n `Variable \"$${varName}\" got invalid value ` + inspect$1(invalidValue);\n\n if (path.length > 0) {\n prefix += ` at \"${varName}${printPathArray(path)}\"`;\n }\n\n onError(\n new GraphQLError(prefix + '; ' + error.message, {\n nodes: varDefNode,\n originalError: error.originalError,\n }),\n );\n },\n );\n }\n\n return coercedValues;\n}\n/**\n * Prepares an object map of argument values given a list of argument\n * definitions and list of argument AST nodes.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n */\n\nfunction getArgumentValues(def, node, variableValues) {\n var _node$arguments;\n\n const coercedValues = {}; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n\n const argumentNodes =\n (_node$arguments = node.arguments) !== null && _node$arguments !== void 0\n ? _node$arguments\n : [];\n const argNodeMap = keyMap(argumentNodes, (arg) => arg.name.value);\n\n for (const argDef of def.args) {\n const name = argDef.name;\n const argType = argDef.type;\n const argumentNode = argNodeMap[name];\n\n if (!argumentNode) {\n if (argDef.defaultValue !== undefined) {\n coercedValues[name] = argDef.defaultValue;\n } else if (isNonNullType(argType)) {\n throw new GraphQLError(\n `Argument \"${name}\" of required type \"${inspect$1(argType)}\" ` +\n 'was not provided.',\n {\n nodes: node,\n },\n );\n }\n\n continue;\n }\n\n const valueNode = argumentNode.value;\n let isNull = valueNode.kind === Kind.NULL;\n\n if (valueNode.kind === Kind.VARIABLE) {\n const variableName = valueNode.name.value;\n\n if (\n variableValues == null ||\n !hasOwnProperty(variableValues, variableName)\n ) {\n if (argDef.defaultValue !== undefined) {\n coercedValues[name] = argDef.defaultValue;\n } else if (isNonNullType(argType)) {\n throw new GraphQLError(\n `Argument \"${name}\" of required type \"${inspect$1(argType)}\" ` +\n `was provided the variable \"$${variableName}\" which was not provided a runtime value.`,\n {\n nodes: valueNode,\n },\n );\n }\n\n continue;\n }\n\n isNull = variableValues[variableName] == null;\n }\n\n if (isNull && isNonNullType(argType)) {\n throw new GraphQLError(\n `Argument \"${name}\" of non-null type \"${inspect$1(argType)}\" ` +\n 'must not be null.',\n {\n nodes: valueNode,\n },\n );\n }\n\n const coercedValue = valueFromAST(valueNode, argType, variableValues);\n\n if (coercedValue === undefined) {\n // Note: ValuesOfCorrectTypeRule validation should catch this before\n // execution. This is a runtime check to ensure execution does not\n // continue with an invalid argument value.\n throw new GraphQLError(\n `Argument \"${name}\" has invalid value ${print(valueNode)}.`,\n {\n nodes: valueNode,\n },\n );\n }\n\n coercedValues[name] = coercedValue;\n }\n\n return coercedValues;\n}\n/**\n * Prepares an object map of argument values given a directive definition\n * and a AST node which may contain directives. Optionally also accepts a map\n * of variable values.\n *\n * If the directive does not exist on the node, returns undefined.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n */\n\nfunction getDirectiveValues(directiveDef, node, variableValues) {\n var _node$directives;\n\n const directiveNode =\n (_node$directives = node.directives) === null || _node$directives === void 0\n ? void 0\n : _node$directives.find(\n (directive) => directive.name.value === directiveDef.name,\n );\n\n if (directiveNode) {\n return getArgumentValues(directiveDef, directiveNode, variableValues);\n }\n}\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\n/**\n * Given a selectionSet, collects all of the fields and returns them.\n *\n * CollectFields requires the \"runtime type\" of an object. For a field that\n * returns an Interface or Union type, the \"runtime type\" will be the actual\n * object type returned by that field.\n *\n * @internal\n */\n\nfunction collectFields(\n schema,\n fragments,\n variableValues,\n runtimeType,\n selectionSet,\n) {\n const fields = new Map();\n collectFieldsImpl(\n schema,\n fragments,\n variableValues,\n runtimeType,\n selectionSet,\n fields,\n new Set(),\n );\n return fields;\n}\n/**\n * Given an array of field nodes, collects all of the subfields of the passed\n * in fields, and returns them at the end.\n *\n * CollectSubFields requires the \"return type\" of an object. For a field that\n * returns an Interface or Union type, the \"return type\" will be the actual\n * object type returned by that field.\n *\n * @internal\n */\n\nfunction collectSubfields$1(\n schema,\n fragments,\n variableValues,\n returnType,\n fieldNodes,\n) {\n const subFieldNodes = new Map();\n const visitedFragmentNames = new Set();\n\n for (const node of fieldNodes) {\n if (node.selectionSet) {\n collectFieldsImpl(\n schema,\n fragments,\n variableValues,\n returnType,\n node.selectionSet,\n subFieldNodes,\n visitedFragmentNames,\n );\n }\n }\n\n return subFieldNodes;\n}\n\nfunction collectFieldsImpl(\n schema,\n fragments,\n variableValues,\n runtimeType,\n selectionSet,\n fields,\n visitedFragmentNames,\n) {\n for (const selection of selectionSet.selections) {\n switch (selection.kind) {\n case Kind.FIELD: {\n if (!shouldIncludeNode(variableValues, selection)) {\n continue;\n }\n\n const name = getFieldEntryKey(selection);\n const fieldList = fields.get(name);\n\n if (fieldList !== undefined) {\n fieldList.push(selection);\n } else {\n fields.set(name, [selection]);\n }\n\n break;\n }\n\n case Kind.INLINE_FRAGMENT: {\n if (\n !shouldIncludeNode(variableValues, selection) ||\n !doesFragmentConditionMatch(schema, selection, runtimeType)\n ) {\n continue;\n }\n\n collectFieldsImpl(\n schema,\n fragments,\n variableValues,\n runtimeType,\n selection.selectionSet,\n fields,\n visitedFragmentNames,\n );\n break;\n }\n\n case Kind.FRAGMENT_SPREAD: {\n const fragName = selection.name.value;\n\n if (\n visitedFragmentNames.has(fragName) ||\n !shouldIncludeNode(variableValues, selection)\n ) {\n continue;\n }\n\n visitedFragmentNames.add(fragName);\n const fragment = fragments[fragName];\n\n if (\n !fragment ||\n !doesFragmentConditionMatch(schema, fragment, runtimeType)\n ) {\n continue;\n }\n\n collectFieldsImpl(\n schema,\n fragments,\n variableValues,\n runtimeType,\n fragment.selectionSet,\n fields,\n visitedFragmentNames,\n );\n break;\n }\n }\n }\n}\n/**\n * Determines if a field should be included based on the `@include` and `@skip`\n * directives, where `@skip` has higher precedence than `@include`.\n */\n\nfunction shouldIncludeNode(variableValues, node) {\n const skip = getDirectiveValues(GraphQLSkipDirective, node, variableValues);\n\n if ((skip === null || skip === void 0 ? void 0 : skip.if) === true) {\n return false;\n }\n\n const include = getDirectiveValues(\n GraphQLIncludeDirective,\n node,\n variableValues,\n );\n\n if (\n (include === null || include === void 0 ? void 0 : include.if) === false\n ) {\n return false;\n }\n\n return true;\n}\n/**\n * Determines if a fragment is applicable to the given type.\n */\n\nfunction doesFragmentConditionMatch(schema, fragment, type) {\n const typeConditionNode = fragment.typeCondition;\n\n if (!typeConditionNode) {\n return true;\n }\n\n const conditionalType = typeFromAST(schema, typeConditionNode);\n\n if (conditionalType === type) {\n return true;\n }\n\n if (isAbstractType(conditionalType)) {\n return schema.isSubType(conditionalType, type);\n }\n\n return false;\n}\n/**\n * Implements the logic to compute the key of a given field's entry\n */\n\nfunction getFieldEntryKey(node) {\n return node.alias ? node.alias.value : node.name.value;\n}\n\n/**\n * Subscriptions must only include a non-introspection field.\n *\n * A GraphQL subscription is valid only if it contains a single root field and\n * that root field is not an introspection field.\n *\n * See https://spec.graphql.org/draft/#sec-Single-root-field\n */\nfunction SingleFieldSubscriptionsRule(context) {\n return {\n OperationDefinition(node) {\n if (node.operation === 'subscription') {\n const schema = context.getSchema();\n const subscriptionType = schema.getSubscriptionType();\n\n if (subscriptionType) {\n const operationName = node.name ? node.name.value : null;\n const variableValues = Object.create(null);\n const document = context.getDocument();\n const fragments = Object.create(null);\n\n for (const definition of document.definitions) {\n if (definition.kind === Kind.FRAGMENT_DEFINITION) {\n fragments[definition.name.value] = definition;\n }\n }\n\n const fields = collectFields(\n schema,\n fragments,\n variableValues,\n subscriptionType,\n node.selectionSet,\n );\n\n if (fields.size > 1) {\n const fieldSelectionLists = [...fields.values()];\n const extraFieldSelectionLists = fieldSelectionLists.slice(1);\n const extraFieldSelections = extraFieldSelectionLists.flat();\n context.reportError(\n new GraphQLError(\n operationName != null\n ? `Subscription \"${operationName}\" must select only one top level field.`\n : 'Anonymous Subscription must select only one top level field.',\n {\n nodes: extraFieldSelections,\n },\n ),\n );\n }\n\n for (const fieldNodes of fields.values()) {\n const field = fieldNodes[0];\n const fieldName = field.name.value;\n\n if (fieldName.startsWith('__')) {\n context.reportError(\n new GraphQLError(\n operationName != null\n ? `Subscription \"${operationName}\" must not select an introspection top level field.`\n : 'Anonymous Subscription must not select an introspection top level field.',\n {\n nodes: fieldNodes,\n },\n ),\n );\n }\n }\n }\n }\n },\n };\n}\n\n/**\n * Groups array items into a Map, given a function to produce grouping key.\n */\nfunction groupBy(list, keyFn) {\n const result = new Map();\n\n for (const item of list) {\n const key = keyFn(item);\n const group = result.get(key);\n\n if (group === undefined) {\n result.set(key, [item]);\n } else {\n group.push(item);\n }\n }\n\n return result;\n}\n\n/**\n * Unique argument definition names\n *\n * A GraphQL Object or Interface type is only valid if all its fields have uniquely named arguments.\n * A GraphQL Directive is only valid if all its arguments are uniquely named.\n */\nfunction UniqueArgumentDefinitionNamesRule(context) {\n return {\n DirectiveDefinition(directiveNode) {\n var _directiveNode$argume;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n const argumentNodes =\n (_directiveNode$argume = directiveNode.arguments) !== null &&\n _directiveNode$argume !== void 0\n ? _directiveNode$argume\n : [];\n return checkArgUniqueness(`@${directiveNode.name.value}`, argumentNodes);\n },\n\n InterfaceTypeDefinition: checkArgUniquenessPerField,\n InterfaceTypeExtension: checkArgUniquenessPerField,\n ObjectTypeDefinition: checkArgUniquenessPerField,\n ObjectTypeExtension: checkArgUniquenessPerField,\n };\n\n function checkArgUniquenessPerField(typeNode) {\n var _typeNode$fields;\n\n const typeName = typeNode.name.value; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n\n const fieldNodes =\n (_typeNode$fields = typeNode.fields) !== null &&\n _typeNode$fields !== void 0\n ? _typeNode$fields\n : [];\n\n for (const fieldDef of fieldNodes) {\n var _fieldDef$arguments;\n\n const fieldName = fieldDef.name.value; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n\n const argumentNodes =\n (_fieldDef$arguments = fieldDef.arguments) !== null &&\n _fieldDef$arguments !== void 0\n ? _fieldDef$arguments\n : [];\n checkArgUniqueness(`${typeName}.${fieldName}`, argumentNodes);\n }\n\n return false;\n }\n\n function checkArgUniqueness(parentName, argumentNodes) {\n const seenArgs = groupBy(argumentNodes, (arg) => arg.name.value);\n\n for (const [argName, argNodes] of seenArgs) {\n if (argNodes.length > 1) {\n context.reportError(\n new GraphQLError(\n `Argument \"${parentName}(${argName}:)\" can only be defined once.`,\n {\n nodes: argNodes.map((node) => node.name),\n },\n ),\n );\n }\n }\n\n return false;\n }\n}\n\n/**\n * Unique argument names\n *\n * A GraphQL field or directive is only valid if all supplied arguments are\n * uniquely named.\n *\n * See https://spec.graphql.org/draft/#sec-Argument-Names\n */\nfunction UniqueArgumentNamesRule(context) {\n return {\n Field: checkArgUniqueness,\n Directive: checkArgUniqueness,\n };\n\n function checkArgUniqueness(parentNode) {\n var _parentNode$arguments;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n const argumentNodes =\n (_parentNode$arguments = parentNode.arguments) !== null &&\n _parentNode$arguments !== void 0\n ? _parentNode$arguments\n : [];\n const seenArgs = groupBy(argumentNodes, (arg) => arg.name.value);\n\n for (const [argName, argNodes] of seenArgs) {\n if (argNodes.length > 1) {\n context.reportError(\n new GraphQLError(\n `There can be only one argument named \"${argName}\".`,\n {\n nodes: argNodes.map((node) => node.name),\n },\n ),\n );\n }\n }\n }\n}\n\n/**\n * Unique directive names\n *\n * A GraphQL document is only valid if all defined directives have unique names.\n */\nfunction UniqueDirectiveNamesRule(context) {\n const knownDirectiveNames = Object.create(null);\n const schema = context.getSchema();\n return {\n DirectiveDefinition(node) {\n const directiveName = node.name.value;\n\n if (\n schema !== null &&\n schema !== void 0 &&\n schema.getDirective(directiveName)\n ) {\n context.reportError(\n new GraphQLError(\n `Directive \"@${directiveName}\" already exists in the schema. It cannot be redefined.`,\n {\n nodes: node.name,\n },\n ),\n );\n return;\n }\n\n if (knownDirectiveNames[directiveName]) {\n context.reportError(\n new GraphQLError(\n `There can be only one directive named \"@${directiveName}\".`,\n {\n nodes: [knownDirectiveNames[directiveName], node.name],\n },\n ),\n );\n } else {\n knownDirectiveNames[directiveName] = node.name;\n }\n\n return false;\n },\n };\n}\n\n/**\n * Unique directive names per location\n *\n * A GraphQL document is only valid if all non-repeatable directives at\n * a given location are uniquely named.\n *\n * See https://spec.graphql.org/draft/#sec-Directives-Are-Unique-Per-Location\n */\nfunction UniqueDirectivesPerLocationRule(context) {\n const uniqueDirectiveMap = Object.create(null);\n const schema = context.getSchema();\n const definedDirectives = schema\n ? schema.getDirectives()\n : specifiedDirectives;\n\n for (const directive of definedDirectives) {\n uniqueDirectiveMap[directive.name] = !directive.isRepeatable;\n }\n\n const astDefinitions = context.getDocument().definitions;\n\n for (const def of astDefinitions) {\n if (def.kind === Kind.DIRECTIVE_DEFINITION) {\n uniqueDirectiveMap[def.name.value] = !def.repeatable;\n }\n }\n\n const schemaDirectives = Object.create(null);\n const typeDirectivesMap = Object.create(null);\n return {\n // Many different AST nodes may contain directives. Rather than listing\n // them all, just listen for entering any node, and check to see if it\n // defines any directives.\n enter(node) {\n if (!('directives' in node) || !node.directives) {\n return;\n }\n\n let seenDirectives;\n\n if (\n node.kind === Kind.SCHEMA_DEFINITION ||\n node.kind === Kind.SCHEMA_EXTENSION\n ) {\n seenDirectives = schemaDirectives;\n } else if (isTypeDefinitionNode(node) || isTypeExtensionNode(node)) {\n const typeName = node.name.value;\n seenDirectives = typeDirectivesMap[typeName];\n\n if (seenDirectives === undefined) {\n typeDirectivesMap[typeName] = seenDirectives = Object.create(null);\n }\n } else {\n seenDirectives = Object.create(null);\n }\n\n for (const directive of node.directives) {\n const directiveName = directive.name.value;\n\n if (uniqueDirectiveMap[directiveName]) {\n if (seenDirectives[directiveName]) {\n context.reportError(\n new GraphQLError(\n `The directive \"@${directiveName}\" can only be used once at this location.`,\n {\n nodes: [seenDirectives[directiveName], directive],\n },\n ),\n );\n } else {\n seenDirectives[directiveName] = directive;\n }\n }\n }\n },\n };\n}\n\n/**\n * Unique enum value names\n *\n * A GraphQL enum type is only valid if all its values are uniquely named.\n */\nfunction UniqueEnumValueNamesRule(context) {\n const schema = context.getSchema();\n const existingTypeMap = schema ? schema.getTypeMap() : Object.create(null);\n const knownValueNames = Object.create(null);\n return {\n EnumTypeDefinition: checkValueUniqueness,\n EnumTypeExtension: checkValueUniqueness,\n };\n\n function checkValueUniqueness(node) {\n var _node$values;\n\n const typeName = node.name.value;\n\n if (!knownValueNames[typeName]) {\n knownValueNames[typeName] = Object.create(null);\n } // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n\n const valueNodes =\n (_node$values = node.values) !== null && _node$values !== void 0\n ? _node$values\n : [];\n const valueNames = knownValueNames[typeName];\n\n for (const valueDef of valueNodes) {\n const valueName = valueDef.name.value;\n const existingType = existingTypeMap[typeName];\n\n if (isEnumType(existingType) && existingType.getValue(valueName)) {\n context.reportError(\n new GraphQLError(\n `Enum value \"${typeName}.${valueName}\" already exists in the schema. It cannot also be defined in this type extension.`,\n {\n nodes: valueDef.name,\n },\n ),\n );\n } else if (valueNames[valueName]) {\n context.reportError(\n new GraphQLError(\n `Enum value \"${typeName}.${valueName}\" can only be defined once.`,\n {\n nodes: [valueNames[valueName], valueDef.name],\n },\n ),\n );\n } else {\n valueNames[valueName] = valueDef.name;\n }\n }\n\n return false;\n }\n}\n\n/**\n * Unique field definition names\n *\n * A GraphQL complex type is only valid if all its fields are uniquely named.\n */\nfunction UniqueFieldDefinitionNamesRule(context) {\n const schema = context.getSchema();\n const existingTypeMap = schema ? schema.getTypeMap() : Object.create(null);\n const knownFieldNames = Object.create(null);\n return {\n InputObjectTypeDefinition: checkFieldUniqueness,\n InputObjectTypeExtension: checkFieldUniqueness,\n InterfaceTypeDefinition: checkFieldUniqueness,\n InterfaceTypeExtension: checkFieldUniqueness,\n ObjectTypeDefinition: checkFieldUniqueness,\n ObjectTypeExtension: checkFieldUniqueness,\n };\n\n function checkFieldUniqueness(node) {\n var _node$fields;\n\n const typeName = node.name.value;\n\n if (!knownFieldNames[typeName]) {\n knownFieldNames[typeName] = Object.create(null);\n } // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n\n const fieldNodes =\n (_node$fields = node.fields) !== null && _node$fields !== void 0\n ? _node$fields\n : [];\n const fieldNames = knownFieldNames[typeName];\n\n for (const fieldDef of fieldNodes) {\n const fieldName = fieldDef.name.value;\n\n if (hasField(existingTypeMap[typeName], fieldName)) {\n context.reportError(\n new GraphQLError(\n `Field \"${typeName}.${fieldName}\" already exists in the schema. It cannot also be defined in this type extension.`,\n {\n nodes: fieldDef.name,\n },\n ),\n );\n } else if (fieldNames[fieldName]) {\n context.reportError(\n new GraphQLError(\n `Field \"${typeName}.${fieldName}\" can only be defined once.`,\n {\n nodes: [fieldNames[fieldName], fieldDef.name],\n },\n ),\n );\n } else {\n fieldNames[fieldName] = fieldDef.name;\n }\n }\n\n return false;\n }\n}\n\nfunction hasField(type, fieldName) {\n if (isObjectType(type) || isInterfaceType(type) || isInputObjectType(type)) {\n return type.getFields()[fieldName] != null;\n }\n\n return false;\n}\n\n/**\n * Unique fragment names\n *\n * A GraphQL document is only valid if all defined fragments have unique names.\n *\n * See https://spec.graphql.org/draft/#sec-Fragment-Name-Uniqueness\n */\nfunction UniqueFragmentNamesRule(context) {\n const knownFragmentNames = Object.create(null);\n return {\n OperationDefinition: () => false,\n\n FragmentDefinition(node) {\n const fragmentName = node.name.value;\n\n if (knownFragmentNames[fragmentName]) {\n context.reportError(\n new GraphQLError(\n `There can be only one fragment named \"${fragmentName}\".`,\n {\n nodes: [knownFragmentNames[fragmentName], node.name],\n },\n ),\n );\n } else {\n knownFragmentNames[fragmentName] = node.name;\n }\n\n return false;\n },\n };\n}\n\n/**\n * Unique input field names\n *\n * A GraphQL input object value is only valid if all supplied fields are\n * uniquely named.\n *\n * See https://spec.graphql.org/draft/#sec-Input-Object-Field-Uniqueness\n */\nfunction UniqueInputFieldNamesRule(context) {\n const knownNameStack = [];\n let knownNames = Object.create(null);\n return {\n ObjectValue: {\n enter() {\n knownNameStack.push(knownNames);\n knownNames = Object.create(null);\n },\n\n leave() {\n const prevKnownNames = knownNameStack.pop();\n prevKnownNames || invariant$1(false);\n knownNames = prevKnownNames;\n },\n },\n\n ObjectField(node) {\n const fieldName = node.name.value;\n\n if (knownNames[fieldName]) {\n context.reportError(\n new GraphQLError(\n `There can be only one input field named \"${fieldName}\".`,\n {\n nodes: [knownNames[fieldName], node.name],\n },\n ),\n );\n } else {\n knownNames[fieldName] = node.name;\n }\n },\n };\n}\n\n/**\n * Unique operation names\n *\n * A GraphQL document is only valid if all defined operations have unique names.\n *\n * See https://spec.graphql.org/draft/#sec-Operation-Name-Uniqueness\n */\nfunction UniqueOperationNamesRule(context) {\n const knownOperationNames = Object.create(null);\n return {\n OperationDefinition(node) {\n const operationName = node.name;\n\n if (operationName) {\n if (knownOperationNames[operationName.value]) {\n context.reportError(\n new GraphQLError(\n `There can be only one operation named \"${operationName.value}\".`,\n {\n nodes: [\n knownOperationNames[operationName.value],\n operationName,\n ],\n },\n ),\n );\n } else {\n knownOperationNames[operationName.value] = operationName;\n }\n }\n\n return false;\n },\n\n FragmentDefinition: () => false,\n };\n}\n\n/**\n * Unique operation types\n *\n * A GraphQL document is only valid if it has only one type per operation.\n */\nfunction UniqueOperationTypesRule(context) {\n const schema = context.getSchema();\n const definedOperationTypes = Object.create(null);\n const existingOperationTypes = schema\n ? {\n query: schema.getQueryType(),\n mutation: schema.getMutationType(),\n subscription: schema.getSubscriptionType(),\n }\n : {};\n return {\n SchemaDefinition: checkOperationTypes,\n SchemaExtension: checkOperationTypes,\n };\n\n function checkOperationTypes(node) {\n var _node$operationTypes;\n\n // See: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n const operationTypesNodes =\n (_node$operationTypes = node.operationTypes) !== null &&\n _node$operationTypes !== void 0\n ? _node$operationTypes\n : [];\n\n for (const operationType of operationTypesNodes) {\n const operation = operationType.operation;\n const alreadyDefinedOperationType = definedOperationTypes[operation];\n\n if (existingOperationTypes[operation]) {\n context.reportError(\n new GraphQLError(\n `Type for ${operation} already defined in the schema. It cannot be redefined.`,\n {\n nodes: operationType,\n },\n ),\n );\n } else if (alreadyDefinedOperationType) {\n context.reportError(\n new GraphQLError(\n `There can be only one ${operation} type in schema.`,\n {\n nodes: [alreadyDefinedOperationType, operationType],\n },\n ),\n );\n } else {\n definedOperationTypes[operation] = operationType;\n }\n }\n\n return false;\n }\n}\n\n/**\n * Unique type names\n *\n * A GraphQL document is only valid if all defined types have unique names.\n */\nfunction UniqueTypeNamesRule(context) {\n const knownTypeNames = Object.create(null);\n const schema = context.getSchema();\n return {\n ScalarTypeDefinition: checkTypeName,\n ObjectTypeDefinition: checkTypeName,\n InterfaceTypeDefinition: checkTypeName,\n UnionTypeDefinition: checkTypeName,\n EnumTypeDefinition: checkTypeName,\n InputObjectTypeDefinition: checkTypeName,\n };\n\n function checkTypeName(node) {\n const typeName = node.name.value;\n\n if (schema !== null && schema !== void 0 && schema.getType(typeName)) {\n context.reportError(\n new GraphQLError(\n `Type \"${typeName}\" already exists in the schema. It cannot also be defined in this type definition.`,\n {\n nodes: node.name,\n },\n ),\n );\n return;\n }\n\n if (knownTypeNames[typeName]) {\n context.reportError(\n new GraphQLError(`There can be only one type named \"${typeName}\".`, {\n nodes: [knownTypeNames[typeName], node.name],\n }),\n );\n } else {\n knownTypeNames[typeName] = node.name;\n }\n\n return false;\n }\n}\n\n/**\n * Unique variable names\n *\n * A GraphQL operation is only valid if all its variables are uniquely named.\n */\nfunction UniqueVariableNamesRule(context) {\n return {\n OperationDefinition(operationNode) {\n var _operationNode$variab;\n\n // See: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n const variableDefinitions =\n (_operationNode$variab = operationNode.variableDefinitions) !== null &&\n _operationNode$variab !== void 0\n ? _operationNode$variab\n : [];\n const seenVariableDefinitions = groupBy(\n variableDefinitions,\n (node) => node.variable.name.value,\n );\n\n for (const [variableName, variableNodes] of seenVariableDefinitions) {\n if (variableNodes.length > 1) {\n context.reportError(\n new GraphQLError(\n `There can be only one variable named \"$${variableName}\".`,\n {\n nodes: variableNodes.map((node) => node.variable.name),\n },\n ),\n );\n }\n }\n },\n };\n}\n\n/**\n * Value literals of correct type\n *\n * A GraphQL document is only valid if all value literals are of the type\n * expected at their position.\n *\n * See https://spec.graphql.org/draft/#sec-Values-of-Correct-Type\n */\nfunction ValuesOfCorrectTypeRule(context) {\n return {\n ListValue(node) {\n // Note: TypeInfo will traverse into a list's item type, so look to the\n // parent input type to check if it is a list.\n const type = getNullableType(context.getParentInputType());\n\n if (!isListType(type)) {\n isValidValueNode(context, node);\n return false; // Don't traverse further.\n }\n },\n\n ObjectValue(node) {\n const type = getNamedType(context.getInputType());\n\n if (!isInputObjectType(type)) {\n isValidValueNode(context, node);\n return false; // Don't traverse further.\n } // Ensure every required field exists.\n\n const fieldNodeMap = keyMap(node.fields, (field) => field.name.value);\n\n for (const fieldDef of Object.values(type.getFields())) {\n const fieldNode = fieldNodeMap[fieldDef.name];\n\n if (!fieldNode && isRequiredInputField(fieldDef)) {\n const typeStr = inspect$1(fieldDef.type);\n context.reportError(\n new GraphQLError(\n `Field \"${type.name}.${fieldDef.name}\" of required type \"${typeStr}\" was not provided.`,\n {\n nodes: node,\n },\n ),\n );\n }\n }\n },\n\n ObjectField(node) {\n const parentType = getNamedType(context.getParentInputType());\n const fieldType = context.getInputType();\n\n if (!fieldType && isInputObjectType(parentType)) {\n const suggestions = suggestionList(\n node.name.value,\n Object.keys(parentType.getFields()),\n );\n context.reportError(\n new GraphQLError(\n `Field \"${node.name.value}\" is not defined by type \"${parentType.name}\".` +\n didYouMean(suggestions),\n {\n nodes: node,\n },\n ),\n );\n }\n },\n\n NullValue(node) {\n const type = context.getInputType();\n\n if (isNonNullType(type)) {\n context.reportError(\n new GraphQLError(\n `Expected value of type \"${inspect$1(type)}\", found ${print(node)}.`,\n {\n nodes: node,\n },\n ),\n );\n }\n },\n\n EnumValue: (node) => isValidValueNode(context, node),\n IntValue: (node) => isValidValueNode(context, node),\n FloatValue: (node) => isValidValueNode(context, node),\n StringValue: (node) => isValidValueNode(context, node),\n BooleanValue: (node) => isValidValueNode(context, node),\n };\n}\n/**\n * Any value literal may be a valid representation of a Scalar, depending on\n * that scalar type.\n */\n\nfunction isValidValueNode(context, node) {\n // Report any error at the full type expected by the location.\n const locationType = context.getInputType();\n\n if (!locationType) {\n return;\n }\n\n const type = getNamedType(locationType);\n\n if (!isLeafType(type)) {\n const typeStr = inspect$1(locationType);\n context.reportError(\n new GraphQLError(\n `Expected value of type \"${typeStr}\", found ${print(node)}.`,\n {\n nodes: node,\n },\n ),\n );\n return;\n } // Scalars and Enums determine if a literal value is valid via parseLiteral(),\n // which may throw or return an invalid value to indicate failure.\n\n try {\n const parseResult = type.parseLiteral(\n node,\n undefined,\n /* variables */\n );\n\n if (parseResult === undefined) {\n const typeStr = inspect$1(locationType);\n context.reportError(\n new GraphQLError(\n `Expected value of type \"${typeStr}\", found ${print(node)}.`,\n {\n nodes: node,\n },\n ),\n );\n }\n } catch (error) {\n const typeStr = inspect$1(locationType);\n\n if (error instanceof GraphQLError) {\n context.reportError(error);\n } else {\n context.reportError(\n new GraphQLError(\n `Expected value of type \"${typeStr}\", found ${print(node)}; ` +\n error.message,\n {\n nodes: node,\n originalError: error,\n },\n ),\n );\n }\n }\n}\n\n/**\n * Variables are input types\n *\n * A GraphQL operation is only valid if all the variables it defines are of\n * input types (scalar, enum, or input object).\n *\n * See https://spec.graphql.org/draft/#sec-Variables-Are-Input-Types\n */\nfunction VariablesAreInputTypesRule(context) {\n return {\n VariableDefinition(node) {\n const type = typeFromAST(context.getSchema(), node.type);\n\n if (type !== undefined && !isInputType(type)) {\n const variableName = node.variable.name.value;\n const typeName = print(node.type);\n context.reportError(\n new GraphQLError(\n `Variable \"$${variableName}\" cannot be non-input type \"${typeName}\".`,\n {\n nodes: node.type,\n },\n ),\n );\n }\n },\n };\n}\n\n/**\n * Variables in allowed position\n *\n * Variable usages must be compatible with the arguments they are passed to.\n *\n * See https://spec.graphql.org/draft/#sec-All-Variable-Usages-are-Allowed\n */\nfunction VariablesInAllowedPositionRule(context) {\n let varDefMap = Object.create(null);\n return {\n OperationDefinition: {\n enter() {\n varDefMap = Object.create(null);\n },\n\n leave(operation) {\n const usages = context.getRecursiveVariableUsages(operation);\n\n for (const { node, type, defaultValue } of usages) {\n const varName = node.name.value;\n const varDef = varDefMap[varName];\n\n if (varDef && type) {\n // A var type is allowed if it is the same or more strict (e.g. is\n // a subtype of) than the expected type. It can be more strict if\n // the variable type is non-null when the expected type is nullable.\n // If both are list types, the variable item type can be more strict\n // than the expected item type (contravariant).\n const schema = context.getSchema();\n const varType = typeFromAST(schema, varDef.type);\n\n if (\n varType &&\n !allowedVariableUsage(\n schema,\n varType,\n varDef.defaultValue,\n type,\n defaultValue,\n )\n ) {\n const varTypeStr = inspect$1(varType);\n const typeStr = inspect$1(type);\n context.reportError(\n new GraphQLError(\n `Variable \"$${varName}\" of type \"${varTypeStr}\" used in position expecting type \"${typeStr}\".`,\n {\n nodes: [varDef, node],\n },\n ),\n );\n }\n }\n }\n },\n },\n\n VariableDefinition(node) {\n varDefMap[node.variable.name.value] = node;\n },\n };\n}\n/**\n * Returns true if the variable is allowed in the location it was found,\n * which includes considering if default values exist for either the variable\n * or the location at which it is located.\n */\n\nfunction allowedVariableUsage(\n schema,\n varType,\n varDefaultValue,\n locationType,\n locationDefaultValue,\n) {\n if (isNonNullType(locationType) && !isNonNullType(varType)) {\n const hasNonNullVariableDefaultValue =\n varDefaultValue != null && varDefaultValue.kind !== Kind.NULL;\n const hasLocationDefaultValue = locationDefaultValue !== undefined;\n\n if (!hasNonNullVariableDefaultValue && !hasLocationDefaultValue) {\n return false;\n }\n\n const nullableLocationType = locationType.ofType;\n return isTypeSubTypeOf(schema, varType, nullableLocationType);\n }\n\n return isTypeSubTypeOf(schema, varType, locationType);\n}\n\n// Spec Section: \"Executable Definitions\"\n\n/**\n * This set includes all validation rules defined by the GraphQL spec.\n *\n * The order of the rules in this list has been adjusted to lead to the\n * most clear output when encountering multiple validation errors.\n */\nconst specifiedRules = Object.freeze([\n ExecutableDefinitionsRule,\n UniqueOperationNamesRule,\n LoneAnonymousOperationRule,\n SingleFieldSubscriptionsRule,\n KnownTypeNamesRule,\n FragmentsOnCompositeTypesRule,\n VariablesAreInputTypesRule,\n ScalarLeafsRule,\n FieldsOnCorrectTypeRule,\n UniqueFragmentNamesRule,\n KnownFragmentNamesRule,\n NoUnusedFragmentsRule,\n PossibleFragmentSpreadsRule,\n NoFragmentCyclesRule,\n UniqueVariableNamesRule,\n NoUndefinedVariablesRule,\n NoUnusedVariablesRule,\n KnownDirectivesRule,\n UniqueDirectivesPerLocationRule,\n KnownArgumentNamesRule,\n UniqueArgumentNamesRule,\n ValuesOfCorrectTypeRule,\n ProvidedRequiredArgumentsRule,\n VariablesInAllowedPositionRule,\n OverlappingFieldsCanBeMergedRule,\n UniqueInputFieldNamesRule,\n]);\n/**\n * @internal\n */\n\nconst specifiedSDLRules = Object.freeze([\n LoneSchemaDefinitionRule,\n UniqueOperationTypesRule,\n UniqueTypeNamesRule,\n UniqueEnumValueNamesRule,\n UniqueFieldDefinitionNamesRule,\n UniqueArgumentDefinitionNamesRule,\n UniqueDirectiveNamesRule,\n KnownTypeNamesRule,\n KnownDirectivesRule,\n UniqueDirectivesPerLocationRule,\n PossibleTypeExtensionsRule,\n KnownArgumentNamesOnDirectivesRule,\n UniqueArgumentNamesRule,\n UniqueInputFieldNamesRule,\n ProvidedRequiredArgumentsOnDirectivesRule,\n]);\n\n/**\n * An instance of this class is passed as the \"this\" context to all validators,\n * allowing access to commonly useful contextual information from within a\n * validation rule.\n */\nclass ASTValidationContext {\n constructor(ast, onError) {\n this._ast = ast;\n this._fragments = undefined;\n this._fragmentSpreads = new Map();\n this._recursivelyReferencedFragments = new Map();\n this._onError = onError;\n }\n\n get [Symbol.toStringTag]() {\n return 'ASTValidationContext';\n }\n\n reportError(error) {\n this._onError(error);\n }\n\n getDocument() {\n return this._ast;\n }\n\n getFragment(name) {\n let fragments;\n\n if (this._fragments) {\n fragments = this._fragments;\n } else {\n fragments = Object.create(null);\n\n for (const defNode of this.getDocument().definitions) {\n if (defNode.kind === Kind.FRAGMENT_DEFINITION) {\n fragments[defNode.name.value] = defNode;\n }\n }\n\n this._fragments = fragments;\n }\n\n return fragments[name];\n }\n\n getFragmentSpreads(node) {\n let spreads = this._fragmentSpreads.get(node);\n\n if (!spreads) {\n spreads = [];\n const setsToVisit = [node];\n let set;\n\n while ((set = setsToVisit.pop())) {\n for (const selection of set.selections) {\n if (selection.kind === Kind.FRAGMENT_SPREAD) {\n spreads.push(selection);\n } else if (selection.selectionSet) {\n setsToVisit.push(selection.selectionSet);\n }\n }\n }\n\n this._fragmentSpreads.set(node, spreads);\n }\n\n return spreads;\n }\n\n getRecursivelyReferencedFragments(operation) {\n let fragments = this._recursivelyReferencedFragments.get(operation);\n\n if (!fragments) {\n fragments = [];\n const collectedNames = Object.create(null);\n const nodesToVisit = [operation.selectionSet];\n let node;\n\n while ((node = nodesToVisit.pop())) {\n for (const spread of this.getFragmentSpreads(node)) {\n const fragName = spread.name.value;\n\n if (collectedNames[fragName] !== true) {\n collectedNames[fragName] = true;\n const fragment = this.getFragment(fragName);\n\n if (fragment) {\n fragments.push(fragment);\n nodesToVisit.push(fragment.selectionSet);\n }\n }\n }\n }\n\n this._recursivelyReferencedFragments.set(operation, fragments);\n }\n\n return fragments;\n }\n}\nclass SDLValidationContext extends ASTValidationContext {\n constructor(ast, schema, onError) {\n super(ast, onError);\n this._schema = schema;\n }\n\n get [Symbol.toStringTag]() {\n return 'SDLValidationContext';\n }\n\n getSchema() {\n return this._schema;\n }\n}\nclass ValidationContext extends ASTValidationContext {\n constructor(schema, ast, typeInfo, onError) {\n super(ast, onError);\n this._schema = schema;\n this._typeInfo = typeInfo;\n this._variableUsages = new Map();\n this._recursiveVariableUsages = new Map();\n }\n\n get [Symbol.toStringTag]() {\n return 'ValidationContext';\n }\n\n getSchema() {\n return this._schema;\n }\n\n getVariableUsages(node) {\n let usages = this._variableUsages.get(node);\n\n if (!usages) {\n const newUsages = [];\n const typeInfo = new TypeInfo(this._schema);\n visit(\n node,\n visitWithTypeInfo(typeInfo, {\n VariableDefinition: () => false,\n\n Variable(variable) {\n newUsages.push({\n node: variable,\n type: typeInfo.getInputType(),\n defaultValue: typeInfo.getDefaultValue(),\n });\n },\n }),\n );\n usages = newUsages;\n\n this._variableUsages.set(node, usages);\n }\n\n return usages;\n }\n\n getRecursiveVariableUsages(operation) {\n let usages = this._recursiveVariableUsages.get(operation);\n\n if (!usages) {\n usages = this.getVariableUsages(operation);\n\n for (const frag of this.getRecursivelyReferencedFragments(operation)) {\n usages = usages.concat(this.getVariableUsages(frag));\n }\n\n this._recursiveVariableUsages.set(operation, usages);\n }\n\n return usages;\n }\n\n getType() {\n return this._typeInfo.getType();\n }\n\n getParentType() {\n return this._typeInfo.getParentType();\n }\n\n getInputType() {\n return this._typeInfo.getInputType();\n }\n\n getParentInputType() {\n return this._typeInfo.getParentInputType();\n }\n\n getFieldDef() {\n return this._typeInfo.getFieldDef();\n }\n\n getDirective() {\n return this._typeInfo.getDirective();\n }\n\n getArgument() {\n return this._typeInfo.getArgument();\n }\n\n getEnumValue() {\n return this._typeInfo.getEnumValue();\n }\n}\n\n/**\n * Implements the \"Validation\" section of the spec.\n *\n * Validation runs synchronously, returning an array of encountered errors, or\n * an empty array if no errors were encountered and the document is valid.\n *\n * A list of specific validation rules may be provided. If not provided, the\n * default list of rules defined by the GraphQL specification will be used.\n *\n * Each validation rules is a function which returns a visitor\n * (see the language/visitor API). Visitor methods are expected to return\n * GraphQLErrors, or Arrays of GraphQLErrors when invalid.\n *\n * Validate will stop validation after a `maxErrors` limit has been reached.\n * Attackers can send pathologically invalid queries to induce a DoS attack,\n * so by default `maxErrors` set to 100 errors.\n *\n * Optionally a custom TypeInfo instance may be provided. If not provided, one\n * will be created from the provided schema.\n */\n\nfunction validate(\n schema,\n documentAST,\n rules = specifiedRules,\n options,\n /** @deprecated will be removed in 17.0.0 */\n typeInfo = new TypeInfo(schema),\n) {\n var _options$maxErrors;\n\n const maxErrors =\n (_options$maxErrors =\n options === null || options === void 0 ? void 0 : options.maxErrors) !==\n null && _options$maxErrors !== void 0\n ? _options$maxErrors\n : 100;\n documentAST || devAssert(false, 'Must provide document.'); // If the schema used for validation is invalid, throw an error.\n\n assertValidSchema(schema);\n const abortObj = Object.freeze({});\n const errors = [];\n const context = new ValidationContext(\n schema,\n documentAST,\n typeInfo,\n (error) => {\n if (errors.length >= maxErrors) {\n errors.push(\n new GraphQLError(\n 'Too many validation errors, error limit reached. Validation aborted.',\n ),\n ); // eslint-disable-next-line @typescript-eslint/no-throw-literal\n\n throw abortObj;\n }\n\n errors.push(error);\n },\n ); // This uses a specialized visitor which runs multiple visitors in parallel,\n // while maintaining the visitor skip and break API.\n\n const visitor = visitInParallel(rules.map((rule) => rule(context))); // Visit the whole document with each instance of all provided rules.\n\n try {\n visit(documentAST, visitWithTypeInfo(typeInfo, visitor));\n } catch (e) {\n if (e !== abortObj) {\n throw e;\n }\n }\n\n return errors;\n}\n/**\n * @internal\n */\n\nfunction validateSDL(\n documentAST,\n schemaToExtend,\n rules = specifiedSDLRules,\n) {\n const errors = [];\n const context = new SDLValidationContext(\n documentAST,\n schemaToExtend,\n (error) => {\n errors.push(error);\n },\n );\n const visitors = rules.map((rule) => rule(context));\n visit(documentAST, visitInParallel(visitors));\n return errors;\n}\n/**\n * Utility function which asserts a SDL document is valid by throwing an error\n * if it is invalid.\n *\n * @internal\n */\n\nfunction assertValidSDL(documentAST) {\n const errors = validateSDL(documentAST);\n\n if (errors.length !== 0) {\n throw new Error(errors.map((error) => error.message).join('\\n\\n'));\n }\n}\n\n/**\n * Memoizes the provided three-argument function.\n */\nfunction memoize3(fn) {\n let cache0;\n return function memoized(a1, a2, a3) {\n if (cache0 === undefined) {\n cache0 = new WeakMap();\n }\n\n let cache1 = cache0.get(a1);\n\n if (cache1 === undefined) {\n cache1 = new WeakMap();\n cache0.set(a1, cache1);\n }\n\n let cache2 = cache1.get(a2);\n\n if (cache2 === undefined) {\n cache2 = new WeakMap();\n cache1.set(a2, cache2);\n }\n\n let fnResult = cache2.get(a3);\n\n if (fnResult === undefined) {\n fnResult = fn(a1, a2, a3);\n cache2.set(a3, fnResult);\n }\n\n return fnResult;\n };\n}\n\n/**\n * This function transforms a JS object `ObjMap>` into\n * a `Promise>`\n *\n * This is akin to bluebird's `Promise.props`, but implemented only using\n * `Promise.all` so it will work with any implementation of ES6 promises.\n */\nfunction promiseForObject(object) {\n return Promise.all(Object.values(object)).then((resolvedValues) => {\n const resolvedObject = Object.create(null);\n\n for (const [i, key] of Object.keys(object).entries()) {\n resolvedObject[key] = resolvedValues[i];\n }\n\n return resolvedObject;\n });\n}\n\n/**\n * Similar to Array.prototype.reduce(), however the reducing callback may return\n * a Promise, in which case reduction will continue after each promise resolves.\n *\n * If the callback does not return a Promise, then this function will also not\n * return a Promise.\n */\nfunction promiseReduce(values, callbackFn, initialValue) {\n let accumulator = initialValue;\n\n for (const value of values) {\n accumulator = isPromise(accumulator)\n ? accumulator.then((resolved) => callbackFn(resolved, value))\n : callbackFn(accumulator, value);\n }\n\n return accumulator;\n}\n\n/**\n * Sometimes a non-error is thrown, wrap it as an Error instance to ensure a consistent Error interface.\n */\n\nfunction toError(thrownValue) {\n return thrownValue instanceof Error\n ? thrownValue\n : new NonErrorThrown(thrownValue);\n}\n\nclass NonErrorThrown extends Error {\n constructor(thrownValue) {\n super('Unexpected error value: ' + inspect$1(thrownValue));\n this.name = 'NonErrorThrown';\n this.thrownValue = thrownValue;\n }\n}\n\n/**\n * Given an arbitrary value, presumably thrown while attempting to execute a\n * GraphQL operation, produce a new GraphQLError aware of the location in the\n * document responsible for the original Error.\n */\n\nfunction locatedError(rawOriginalError, nodes, path) {\n var _nodes;\n\n const originalError = toError(rawOriginalError); // Note: this uses a brand-check to support GraphQL errors originating from other contexts.\n\n if (isLocatedGraphQLError(originalError)) {\n return originalError;\n }\n\n return new GraphQLError(originalError.message, {\n nodes:\n (_nodes = originalError.nodes) !== null && _nodes !== void 0\n ? _nodes\n : nodes,\n source: originalError.source,\n positions: originalError.positions,\n path,\n originalError,\n });\n}\n\nfunction isLocatedGraphQLError(error) {\n return Array.isArray(error.path);\n}\n\n/**\n * A memoized collection of relevant subfields with regard to the return\n * type. Memoizing ensures the subfields are not repeatedly calculated, which\n * saves overhead when resolving lists of values.\n */\n\nconst collectSubfields = memoize3((exeContext, returnType, fieldNodes) =>\n collectSubfields$1(\n exeContext.schema,\n exeContext.fragments,\n exeContext.variableValues,\n returnType,\n fieldNodes,\n ),\n);\n/**\n * Terminology\n *\n * \"Definitions\" are the generic name for top-level statements in the document.\n * Examples of this include:\n * 1) Operations (such as a query)\n * 2) Fragments\n *\n * \"Operations\" are a generic name for requests in the document.\n * Examples of this include:\n * 1) query,\n * 2) mutation\n *\n * \"Selections\" are the definitions that can appear legally and at\n * single level of the query. These include:\n * 1) field references e.g `a`\n * 2) fragment \"spreads\" e.g. `...c`\n * 3) inline fragment \"spreads\" e.g. `...on Type { a }`\n */\n\n/**\n * Data that must be available at all points during query execution.\n *\n * Namely, schema of the type system that is currently executing,\n * and the fragments defined in the query document\n */\n\n/**\n * Implements the \"Executing requests\" section of the GraphQL specification.\n *\n * Returns either a synchronous ExecutionResult (if all encountered resolvers\n * are synchronous), or a Promise of an ExecutionResult that will eventually be\n * resolved and never rejected.\n *\n * If the arguments to this function do not result in a legal execution context,\n * a GraphQLError will be thrown immediately explaining the invalid input.\n */\nfunction execute$1(args) {\n // Temporary for v15 to v16 migration. Remove in v17\n arguments.length < 2 ||\n devAssert(\n false,\n 'graphql@16 dropped long-deprecated support for positional arguments, please pass an object instead.',\n );\n const { schema, document, variableValues, rootValue } = args; // If arguments are missing or incorrect, throw an error.\n\n assertValidExecutionArguments(schema, document, variableValues); // If a valid execution context cannot be created due to incorrect arguments,\n // a \"Response\" with only errors is returned.\n\n const exeContext = buildExecutionContext(args); // Return early errors if execution context failed.\n\n if (!('schema' in exeContext)) {\n return {\n errors: exeContext,\n };\n } // Return a Promise that will eventually resolve to the data described by\n // The \"Response\" section of the GraphQL specification.\n //\n // If errors are encountered while executing a GraphQL field, only that\n // field and its descendants will be omitted, and sibling fields will still\n // be executed. An execution which encounters errors will still result in a\n // resolved Promise.\n //\n // Errors from sub-fields of a NonNull type may propagate to the top level,\n // at which point we still log the error and null the parent field, which\n // in this case is the entire response.\n\n try {\n const { operation } = exeContext;\n const result = executeOperation(exeContext, operation, rootValue);\n\n if (isPromise(result)) {\n return result.then(\n (data) => buildResponse(data, exeContext.errors),\n (error) => {\n exeContext.errors.push(error);\n return buildResponse(null, exeContext.errors);\n },\n );\n }\n\n return buildResponse(result, exeContext.errors);\n } catch (error) {\n exeContext.errors.push(error);\n return buildResponse(null, exeContext.errors);\n }\n}\n/**\n * Given a completed execution context and data, build the `{ errors, data }`\n * response defined by the \"Response\" section of the GraphQL specification.\n */\n\nfunction buildResponse(data, errors) {\n return errors.length === 0\n ? {\n data,\n }\n : {\n errors,\n data,\n };\n}\n/**\n * Essential assertions before executing to provide developer feedback for\n * improper use of the GraphQL library.\n *\n * @internal\n */\n\nfunction assertValidExecutionArguments(\n schema,\n document,\n rawVariableValues,\n) {\n document || devAssert(false, 'Must provide document.'); // If the schema used for execution is invalid, throw an error.\n\n assertValidSchema(schema); // Variables, if provided, must be an object.\n\n rawVariableValues == null ||\n isObjectLike(rawVariableValues) ||\n devAssert(\n false,\n 'Variables must be provided as an Object where each property is a variable value. Perhaps look to see if an unparsed JSON string was provided.',\n );\n}\n/**\n * Constructs a ExecutionContext object from the arguments passed to\n * execute, which we will pass throughout the other execution methods.\n *\n * Throws a GraphQLError if a valid execution context cannot be created.\n *\n * @internal\n */\n\nfunction buildExecutionContext(args) {\n var _definition$name, _operation$variableDe;\n\n const {\n schema,\n document,\n rootValue,\n contextValue,\n variableValues: rawVariableValues,\n operationName,\n fieldResolver,\n typeResolver,\n subscribeFieldResolver,\n } = args;\n let operation;\n const fragments = Object.create(null);\n\n for (const definition of document.definitions) {\n switch (definition.kind) {\n case Kind.OPERATION_DEFINITION:\n if (operationName == null) {\n if (operation !== undefined) {\n return [\n new GraphQLError(\n 'Must provide operation name if query contains multiple operations.',\n ),\n ];\n }\n\n operation = definition;\n } else if (\n ((_definition$name = definition.name) === null ||\n _definition$name === void 0\n ? void 0\n : _definition$name.value) === operationName\n ) {\n operation = definition;\n }\n\n break;\n\n case Kind.FRAGMENT_DEFINITION:\n fragments[definition.name.value] = definition;\n break;\n }\n }\n\n if (!operation) {\n if (operationName != null) {\n return [new GraphQLError(`Unknown operation named \"${operationName}\".`)];\n }\n\n return [new GraphQLError('Must provide an operation.')];\n } // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n\n const variableDefinitions =\n (_operation$variableDe = operation.variableDefinitions) !== null &&\n _operation$variableDe !== void 0\n ? _operation$variableDe\n : [];\n const coercedVariableValues = getVariableValues(\n schema,\n variableDefinitions,\n rawVariableValues !== null && rawVariableValues !== void 0\n ? rawVariableValues\n : {},\n {\n maxErrors: 50,\n },\n );\n\n if (coercedVariableValues.errors) {\n return coercedVariableValues.errors;\n }\n\n return {\n schema,\n fragments,\n rootValue,\n contextValue,\n operation,\n variableValues: coercedVariableValues.coerced,\n fieldResolver:\n fieldResolver !== null && fieldResolver !== void 0\n ? fieldResolver\n : defaultFieldResolver,\n typeResolver:\n typeResolver !== null && typeResolver !== void 0\n ? typeResolver\n : defaultTypeResolver,\n subscribeFieldResolver:\n subscribeFieldResolver !== null && subscribeFieldResolver !== void 0\n ? subscribeFieldResolver\n : defaultFieldResolver,\n errors: [],\n };\n}\n/**\n * Implements the \"Executing operations\" section of the spec.\n */\n\nfunction executeOperation(exeContext, operation, rootValue) {\n const rootType = exeContext.schema.getRootType(operation.operation);\n\n if (rootType == null) {\n throw new GraphQLError(\n `Schema is not configured to execute ${operation.operation} operation.`,\n {\n nodes: operation,\n },\n );\n }\n\n const rootFields = collectFields(\n exeContext.schema,\n exeContext.fragments,\n exeContext.variableValues,\n rootType,\n operation.selectionSet,\n );\n const path = undefined;\n\n switch (operation.operation) {\n case OperationTypeNode.QUERY:\n return executeFields(exeContext, rootType, rootValue, path, rootFields);\n\n case OperationTypeNode.MUTATION:\n return executeFieldsSerially(\n exeContext,\n rootType,\n rootValue,\n path,\n rootFields,\n );\n\n case OperationTypeNode.SUBSCRIPTION:\n // TODO: deprecate `subscribe` and move all logic here\n // Temporary solution until we finish merging execute and subscribe together\n return executeFields(exeContext, rootType, rootValue, path, rootFields);\n }\n}\n/**\n * Implements the \"Executing selection sets\" section of the spec\n * for fields that must be executed serially.\n */\n\nfunction executeFieldsSerially(\n exeContext,\n parentType,\n sourceValue,\n path,\n fields,\n) {\n return promiseReduce(\n fields.entries(),\n (results, [responseName, fieldNodes]) => {\n const fieldPath = addPath(path, responseName, parentType.name);\n const result = executeField(\n exeContext,\n parentType,\n sourceValue,\n fieldNodes,\n fieldPath,\n );\n\n if (result === undefined) {\n return results;\n }\n\n if (isPromise(result)) {\n return result.then((resolvedResult) => {\n results[responseName] = resolvedResult;\n return results;\n });\n }\n\n results[responseName] = result;\n return results;\n },\n Object.create(null),\n );\n}\n/**\n * Implements the \"Executing selection sets\" section of the spec\n * for fields that may be executed in parallel.\n */\n\nfunction executeFields(exeContext, parentType, sourceValue, path, fields) {\n const results = Object.create(null);\n let containsPromise = false;\n\n for (const [responseName, fieldNodes] of fields.entries()) {\n const fieldPath = addPath(path, responseName, parentType.name);\n const result = executeField(\n exeContext,\n parentType,\n sourceValue,\n fieldNodes,\n fieldPath,\n );\n\n if (result !== undefined) {\n results[responseName] = result;\n\n if (isPromise(result)) {\n containsPromise = true;\n }\n }\n } // If there are no promises, we can just return the object\n\n if (!containsPromise) {\n return results;\n } // Otherwise, results is a map from field name to the result of resolving that\n // field, which is possibly a promise. Return a promise that will return this\n // same map, but with any promises replaced with the values they resolved to.\n\n return promiseForObject(results);\n}\n/**\n * Implements the \"Executing fields\" section of the spec\n * In particular, this function figures out the value that the field returns by\n * calling its resolve function, then calls completeValue to complete promises,\n * serialize scalars, or execute the sub-selection-set for objects.\n */\n\nfunction executeField(exeContext, parentType, source, fieldNodes, path) {\n var _fieldDef$resolve;\n\n const fieldDef = getFieldDef(exeContext.schema, parentType, fieldNodes[0]);\n\n if (!fieldDef) {\n return;\n }\n\n const returnType = fieldDef.type;\n const resolveFn =\n (_fieldDef$resolve = fieldDef.resolve) !== null &&\n _fieldDef$resolve !== void 0\n ? _fieldDef$resolve\n : exeContext.fieldResolver;\n const info = buildResolveInfo(\n exeContext,\n fieldDef,\n fieldNodes,\n parentType,\n path,\n ); // Get the resolve function, regardless of if its result is normal or abrupt (error).\n\n try {\n // Build a JS object of arguments from the field.arguments AST, using the\n // variables scope to fulfill any variable references.\n // TODO: find a way to memoize, in case this field is within a List type.\n const args = getArgumentValues(\n fieldDef,\n fieldNodes[0],\n exeContext.variableValues,\n ); // The resolve function's optional third argument is a context value that\n // is provided to every resolve function within an execution. It is commonly\n // used to represent an authenticated user, or request-specific caches.\n\n const contextValue = exeContext.contextValue;\n const result = resolveFn(source, args, contextValue, info);\n let completed;\n\n if (isPromise(result)) {\n completed = result.then((resolved) =>\n completeValue(exeContext, returnType, fieldNodes, info, path, resolved),\n );\n } else {\n completed = completeValue(\n exeContext,\n returnType,\n fieldNodes,\n info,\n path,\n result,\n );\n }\n\n if (isPromise(completed)) {\n // Note: we don't rely on a `catch` method, but we do expect \"thenable\"\n // to take a second callback for the error case.\n return completed.then(undefined, (rawError) => {\n const error = locatedError(rawError, fieldNodes, pathToArray(path));\n return handleFieldError(error, returnType, exeContext);\n });\n }\n\n return completed;\n } catch (rawError) {\n const error = locatedError(rawError, fieldNodes, pathToArray(path));\n return handleFieldError(error, returnType, exeContext);\n }\n}\n/**\n * @internal\n */\n\nfunction buildResolveInfo(\n exeContext,\n fieldDef,\n fieldNodes,\n parentType,\n path,\n) {\n // The resolve function's optional fourth argument is a collection of\n // information about the current execution state.\n return {\n fieldName: fieldDef.name,\n fieldNodes,\n returnType: fieldDef.type,\n parentType,\n path,\n schema: exeContext.schema,\n fragments: exeContext.fragments,\n rootValue: exeContext.rootValue,\n operation: exeContext.operation,\n variableValues: exeContext.variableValues,\n };\n}\n\nfunction handleFieldError(error, returnType, exeContext) {\n // If the field type is non-nullable, then it is resolved without any\n // protection from errors, however it still properly locates the error.\n if (isNonNullType(returnType)) {\n throw error;\n } // Otherwise, error protection is applied, logging the error and resolving\n // a null value for this field if one is encountered.\n\n exeContext.errors.push(error);\n return null;\n}\n/**\n * Implements the instructions for completeValue as defined in the\n * \"Value Completion\" section of the spec.\n *\n * If the field type is Non-Null, then this recursively completes the value\n * for the inner type. It throws a field error if that completion returns null,\n * as per the \"Nullability\" section of the spec.\n *\n * If the field type is a List, then this recursively completes the value\n * for the inner type on each item in the list.\n *\n * If the field type is a Scalar or Enum, ensures the completed value is a legal\n * value of the type by calling the `serialize` method of GraphQL type\n * definition.\n *\n * If the field is an abstract type, determine the runtime type of the value\n * and then complete based on that type\n *\n * Otherwise, the field type expects a sub-selection set, and will complete the\n * value by executing all sub-selections.\n */\n\nfunction completeValue(exeContext, returnType, fieldNodes, info, path, result) {\n // If result is an Error, throw a located error.\n if (result instanceof Error) {\n throw result;\n } // If field type is NonNull, complete for inner type, and throw field error\n // if result is null.\n\n if (isNonNullType(returnType)) {\n const completed = completeValue(\n exeContext,\n returnType.ofType,\n fieldNodes,\n info,\n path,\n result,\n );\n\n if (completed === null) {\n throw new Error(\n `Cannot return null for non-nullable field ${info.parentType.name}.${info.fieldName}.`,\n );\n }\n\n return completed;\n } // If result value is null or undefined then return null.\n\n if (result == null) {\n return null;\n } // If field type is List, complete each item in the list with the inner type\n\n if (isListType(returnType)) {\n return completeListValue(\n exeContext,\n returnType,\n fieldNodes,\n info,\n path,\n result,\n );\n } // If field type is a leaf type, Scalar or Enum, serialize to a valid value,\n // returning null if serialization is not possible.\n\n if (isLeafType(returnType)) {\n return completeLeafValue(returnType, result);\n } // If field type is an abstract type, Interface or Union, determine the\n // runtime Object type and complete for that type.\n\n if (isAbstractType(returnType)) {\n return completeAbstractValue(\n exeContext,\n returnType,\n fieldNodes,\n info,\n path,\n result,\n );\n } // If field type is Object, execute and complete all sub-selections.\n\n if (isObjectType(returnType)) {\n return completeObjectValue(\n exeContext,\n returnType,\n fieldNodes,\n info,\n path,\n result,\n );\n }\n /* c8 ignore next 6 */\n // Not reachable, all possible output types have been considered.\n\n invariant$1(\n false,\n 'Cannot complete value of unexpected output type: ' + inspect$1(returnType),\n );\n}\n/**\n * Complete a list value by completing each item in the list with the\n * inner type\n */\n\nfunction completeListValue(\n exeContext,\n returnType,\n fieldNodes,\n info,\n path,\n result,\n) {\n if (!isIterableObject(result)) {\n throw new GraphQLError(\n `Expected Iterable, but did not find one for field \"${info.parentType.name}.${info.fieldName}\".`,\n );\n } // This is specified as a simple map, however we're optimizing the path\n // where the list contains no Promises by avoiding creating another Promise.\n\n const itemType = returnType.ofType;\n let containsPromise = false;\n const completedResults = Array.from(result, (item, index) => {\n // No need to modify the info object containing the path,\n // since from here on it is not ever accessed by resolver functions.\n const itemPath = addPath(path, index, undefined);\n\n try {\n let completedItem;\n\n if (isPromise(item)) {\n completedItem = item.then((resolved) =>\n completeValue(\n exeContext,\n itemType,\n fieldNodes,\n info,\n itemPath,\n resolved,\n ),\n );\n } else {\n completedItem = completeValue(\n exeContext,\n itemType,\n fieldNodes,\n info,\n itemPath,\n item,\n );\n }\n\n if (isPromise(completedItem)) {\n containsPromise = true; // Note: we don't rely on a `catch` method, but we do expect \"thenable\"\n // to take a second callback for the error case.\n\n return completedItem.then(undefined, (rawError) => {\n const error = locatedError(\n rawError,\n fieldNodes,\n pathToArray(itemPath),\n );\n return handleFieldError(error, itemType, exeContext);\n });\n }\n\n return completedItem;\n } catch (rawError) {\n const error = locatedError(rawError, fieldNodes, pathToArray(itemPath));\n return handleFieldError(error, itemType, exeContext);\n }\n });\n return containsPromise ? Promise.all(completedResults) : completedResults;\n}\n/**\n * Complete a Scalar or Enum by serializing to a valid value, returning\n * null if serialization is not possible.\n */\n\nfunction completeLeafValue(returnType, result) {\n const serializedResult = returnType.serialize(result);\n\n if (serializedResult == null) {\n throw new Error(\n `Expected \\`${inspect$1(returnType)}.serialize(${inspect$1(result)})\\` to ` +\n `return non-nullable value, returned: ${inspect$1(serializedResult)}`,\n );\n }\n\n return serializedResult;\n}\n/**\n * Complete a value of an abstract type by determining the runtime object type\n * of that value, then complete the value for that type.\n */\n\nfunction completeAbstractValue(\n exeContext,\n returnType,\n fieldNodes,\n info,\n path,\n result,\n) {\n var _returnType$resolveTy;\n\n const resolveTypeFn =\n (_returnType$resolveTy = returnType.resolveType) !== null &&\n _returnType$resolveTy !== void 0\n ? _returnType$resolveTy\n : exeContext.typeResolver;\n const contextValue = exeContext.contextValue;\n const runtimeType = resolveTypeFn(result, contextValue, info, returnType);\n\n if (isPromise(runtimeType)) {\n return runtimeType.then((resolvedRuntimeType) =>\n completeObjectValue(\n exeContext,\n ensureValidRuntimeType(\n resolvedRuntimeType,\n exeContext,\n returnType,\n fieldNodes,\n info,\n result,\n ),\n fieldNodes,\n info,\n path,\n result,\n ),\n );\n }\n\n return completeObjectValue(\n exeContext,\n ensureValidRuntimeType(\n runtimeType,\n exeContext,\n returnType,\n fieldNodes,\n info,\n result,\n ),\n fieldNodes,\n info,\n path,\n result,\n );\n}\n\nfunction ensureValidRuntimeType(\n runtimeTypeName,\n exeContext,\n returnType,\n fieldNodes,\n info,\n result,\n) {\n if (runtimeTypeName == null) {\n throw new GraphQLError(\n `Abstract type \"${returnType.name}\" must resolve to an Object type at runtime for field \"${info.parentType.name}.${info.fieldName}\". Either the \"${returnType.name}\" type should provide a \"resolveType\" function or each possible type should provide an \"isTypeOf\" function.`,\n fieldNodes,\n );\n } // releases before 16.0.0 supported returning `GraphQLObjectType` from `resolveType`\n // TODO: remove in 17.0.0 release\n\n if (isObjectType(runtimeTypeName)) {\n throw new GraphQLError(\n 'Support for returning GraphQLObjectType from resolveType was removed in graphql-js@16.0.0 please return type name instead.',\n );\n }\n\n if (typeof runtimeTypeName !== 'string') {\n throw new GraphQLError(\n `Abstract type \"${returnType.name}\" must resolve to an Object type at runtime for field \"${info.parentType.name}.${info.fieldName}\" with ` +\n `value ${inspect$1(result)}, received \"${inspect$1(runtimeTypeName)}\".`,\n );\n }\n\n const runtimeType = exeContext.schema.getType(runtimeTypeName);\n\n if (runtimeType == null) {\n throw new GraphQLError(\n `Abstract type \"${returnType.name}\" was resolved to a type \"${runtimeTypeName}\" that does not exist inside the schema.`,\n {\n nodes: fieldNodes,\n },\n );\n }\n\n if (!isObjectType(runtimeType)) {\n throw new GraphQLError(\n `Abstract type \"${returnType.name}\" was resolved to a non-object type \"${runtimeTypeName}\".`,\n {\n nodes: fieldNodes,\n },\n );\n }\n\n if (!exeContext.schema.isSubType(returnType, runtimeType)) {\n throw new GraphQLError(\n `Runtime Object type \"${runtimeType.name}\" is not a possible type for \"${returnType.name}\".`,\n {\n nodes: fieldNodes,\n },\n );\n }\n\n return runtimeType;\n}\n/**\n * Complete an Object value by executing all sub-selections.\n */\n\nfunction completeObjectValue(\n exeContext,\n returnType,\n fieldNodes,\n info,\n path,\n result,\n) {\n // Collect sub-fields to execute to complete this value.\n const subFieldNodes = collectSubfields(exeContext, returnType, fieldNodes); // If there is an isTypeOf predicate function, call it with the\n // current result. If isTypeOf returns false, then raise an error rather\n // than continuing execution.\n\n if (returnType.isTypeOf) {\n const isTypeOf = returnType.isTypeOf(result, exeContext.contextValue, info);\n\n if (isPromise(isTypeOf)) {\n return isTypeOf.then((resolvedIsTypeOf) => {\n if (!resolvedIsTypeOf) {\n throw invalidReturnTypeError(returnType, result, fieldNodes);\n }\n\n return executeFields(\n exeContext,\n returnType,\n result,\n path,\n subFieldNodes,\n );\n });\n }\n\n if (!isTypeOf) {\n throw invalidReturnTypeError(returnType, result, fieldNodes);\n }\n }\n\n return executeFields(exeContext, returnType, result, path, subFieldNodes);\n}\n\nfunction invalidReturnTypeError(returnType, result, fieldNodes) {\n return new GraphQLError(\n `Expected value of type \"${returnType.name}\" but got: ${inspect$1(result)}.`,\n {\n nodes: fieldNodes,\n },\n );\n}\n/**\n * If a resolveType function is not given, then a default resolve behavior is\n * used which attempts two strategies:\n *\n * First, See if the provided value has a `__typename` field defined, if so, use\n * that value as name of the resolved type.\n *\n * Otherwise, test each possible type for the abstract type by calling\n * isTypeOf for the object being coerced, returning the first type that matches.\n */\n\nconst defaultTypeResolver = function (\n value,\n contextValue,\n info,\n abstractType,\n) {\n // First, look for `__typename`.\n if (isObjectLike(value) && typeof value.__typename === 'string') {\n return value.__typename;\n } // Otherwise, test each possible type.\n\n const possibleTypes = info.schema.getPossibleTypes(abstractType);\n const promisedIsTypeOfResults = [];\n\n for (let i = 0; i < possibleTypes.length; i++) {\n const type = possibleTypes[i];\n\n if (type.isTypeOf) {\n const isTypeOfResult = type.isTypeOf(value, contextValue, info);\n\n if (isPromise(isTypeOfResult)) {\n promisedIsTypeOfResults[i] = isTypeOfResult;\n } else if (isTypeOfResult) {\n return type.name;\n }\n }\n }\n\n if (promisedIsTypeOfResults.length) {\n return Promise.all(promisedIsTypeOfResults).then((isTypeOfResults) => {\n for (let i = 0; i < isTypeOfResults.length; i++) {\n if (isTypeOfResults[i]) {\n return possibleTypes[i].name;\n }\n }\n });\n }\n};\n/**\n * If a resolve function is not given, then a default resolve behavior is used\n * which takes the property of the source object of the same name as the field\n * and returns it as the result, or if it's a function, returns the result\n * of calling that function while passing along args and context value.\n */\n\nconst defaultFieldResolver = function (\n source,\n args,\n contextValue,\n info,\n) {\n // ensure source is a value for which property access is acceptable.\n if (isObjectLike(source) || typeof source === 'function') {\n const property = source[info.fieldName];\n\n if (typeof property === 'function') {\n return source[info.fieldName](args, contextValue, info);\n }\n\n return property;\n }\n};\n/**\n * This method looks up the field on the given type definition.\n * It has special casing for the three introspection fields,\n * __schema, __type and __typename. __typename is special because\n * it can always be queried as a field, even in situations where no\n * other fields are allowed, like on a Union. __schema and __type\n * could get automatically added to the query type, but that would\n * require mutating type definitions, which would cause issues.\n *\n * @internal\n */\n\nfunction getFieldDef(schema, parentType, fieldNode) {\n const fieldName = fieldNode.name.value;\n\n if (\n fieldName === SchemaMetaFieldDef.name &&\n schema.getQueryType() === parentType\n ) {\n return SchemaMetaFieldDef;\n } else if (\n fieldName === TypeMetaFieldDef.name &&\n schema.getQueryType() === parentType\n ) {\n return TypeMetaFieldDef;\n } else if (fieldName === TypeNameMetaFieldDef.name) {\n return TypeNameMetaFieldDef;\n }\n\n return parentType.getFields()[fieldName];\n}\n\n/**\n * Returns true if the provided object implements the AsyncIterator protocol via\n * implementing a `Symbol.asyncIterator` method.\n */\nfunction isAsyncIterable$2(maybeAsyncIterable) {\n return (\n typeof (maybeAsyncIterable === null || maybeAsyncIterable === void 0\n ? void 0\n : maybeAsyncIterable[Symbol.asyncIterator]) === 'function'\n );\n}\n\n/**\n * Given an AsyncIterable and a callback function, return an AsyncIterator\n * which produces values mapped via calling the callback function.\n */\nfunction mapAsyncIterator$1(iterable, callback) {\n const iterator = iterable[Symbol.asyncIterator]();\n\n async function mapResult(result) {\n if (result.done) {\n return result;\n }\n\n try {\n return {\n value: await callback(result.value),\n done: false,\n };\n } catch (error) {\n /* c8 ignore start */\n // FIXME: add test case\n if (typeof iterator.return === 'function') {\n try {\n await iterator.return();\n } catch (_e) {\n /* ignore error */\n }\n }\n\n throw error;\n /* c8 ignore stop */\n }\n }\n\n return {\n async next() {\n return mapResult(await iterator.next());\n },\n\n async return() {\n // If iterator.return() does not exist, then type R must be undefined.\n return typeof iterator.return === 'function'\n ? mapResult(await iterator.return())\n : {\n value: undefined,\n done: true,\n };\n },\n\n async throw(error) {\n if (typeof iterator.throw === 'function') {\n return mapResult(await iterator.throw(error));\n }\n\n throw error;\n },\n\n [Symbol.asyncIterator]() {\n return this;\n },\n };\n}\n\n/**\n * Implements the \"Subscribe\" algorithm described in the GraphQL specification.\n *\n * Returns a Promise which resolves to either an AsyncIterator (if successful)\n * or an ExecutionResult (error). The promise will be rejected if the schema or\n * other arguments to this function are invalid, or if the resolved event stream\n * is not an async iterable.\n *\n * If the client-provided arguments to this function do not result in a\n * compliant subscription, a GraphQL Response (ExecutionResult) with\n * descriptive errors and no data will be returned.\n *\n * If the source stream could not be created due to faulty subscription\n * resolver logic or underlying systems, the promise will resolve to a single\n * ExecutionResult containing `errors` and no `data`.\n *\n * If the operation succeeded, the promise resolves to an AsyncIterator, which\n * yields a stream of ExecutionResults representing the response stream.\n *\n * Accepts either an object with named arguments, or individual arguments.\n */\n\nasync function subscribe(args) {\n // Temporary for v15 to v16 migration. Remove in v17\n arguments.length < 2 ||\n devAssert(\n false,\n 'graphql@16 dropped long-deprecated support for positional arguments, please pass an object instead.',\n );\n const resultOrStream = await createSourceEventStream(args);\n\n if (!isAsyncIterable$2(resultOrStream)) {\n return resultOrStream;\n } // For each payload yielded from a subscription, map it over the normal\n // GraphQL `execute` function, with `payload` as the rootValue.\n // This implements the \"MapSourceToResponseEvent\" algorithm described in\n // the GraphQL specification. The `execute` function provides the\n // \"ExecuteSubscriptionEvent\" algorithm, as it is nearly identical to the\n // \"ExecuteQuery\" algorithm, for which `execute` is also used.\n\n const mapSourceToResponse = (payload) =>\n execute$1({ ...args, rootValue: payload }); // Map every source value to a ExecutionResult value as described above.\n\n return mapAsyncIterator$1(resultOrStream, mapSourceToResponse);\n}\n\nfunction toNormalizedArgs(args) {\n const firstArg = args[0];\n\n if (firstArg && 'document' in firstArg) {\n return firstArg;\n }\n\n return {\n schema: firstArg,\n // FIXME: when underlying TS bug fixed, see https://github.com/microsoft/TypeScript/issues/31613\n document: args[1],\n rootValue: args[2],\n contextValue: args[3],\n variableValues: args[4],\n operationName: args[5],\n subscribeFieldResolver: args[6],\n };\n}\n/**\n * Implements the \"CreateSourceEventStream\" algorithm described in the\n * GraphQL specification, resolving the subscription source event stream.\n *\n * Returns a Promise which resolves to either an AsyncIterable (if successful)\n * or an ExecutionResult (error). The promise will be rejected if the schema or\n * other arguments to this function are invalid, or if the resolved event stream\n * is not an async iterable.\n *\n * If the client-provided arguments to this function do not result in a\n * compliant subscription, a GraphQL Response (ExecutionResult) with\n * descriptive errors and no data will be returned.\n *\n * If the the source stream could not be created due to faulty subscription\n * resolver logic or underlying systems, the promise will resolve to a single\n * ExecutionResult containing `errors` and no `data`.\n *\n * If the operation succeeded, the promise resolves to the AsyncIterable for the\n * event stream returned by the resolver.\n *\n * A Source Event Stream represents a sequence of events, each of which triggers\n * a GraphQL execution for that event.\n *\n * This may be useful when hosting the stateful subscription service in a\n * different process or machine than the stateless GraphQL execution engine,\n * or otherwise separating these two steps. For more on this, see the\n * \"Supporting Subscriptions at Scale\" information in the GraphQL specification.\n */\n\nasync function createSourceEventStream(...rawArgs) {\n const args = toNormalizedArgs(rawArgs);\n const { schema, document, variableValues } = args; // If arguments are missing or incorrectly typed, this is an internal\n // developer mistake which should throw an early error.\n\n assertValidExecutionArguments(schema, document, variableValues); // If a valid execution context cannot be created due to incorrect arguments,\n // a \"Response\" with only errors is returned.\n\n const exeContext = buildExecutionContext(args); // Return early errors if execution context failed.\n\n if (!('schema' in exeContext)) {\n return {\n errors: exeContext,\n };\n }\n\n try {\n const eventStream = await executeSubscription(exeContext); // Assert field returned an event stream, otherwise yield an error.\n\n if (!isAsyncIterable$2(eventStream)) {\n throw new Error(\n 'Subscription field must return Async Iterable. ' +\n `Received: ${inspect$1(eventStream)}.`,\n );\n }\n\n return eventStream;\n } catch (error) {\n // If it GraphQLError, report it as an ExecutionResult, containing only errors and no data.\n // Otherwise treat the error as a system-class error and re-throw it.\n if (error instanceof GraphQLError) {\n return {\n errors: [error],\n };\n }\n\n throw error;\n }\n}\n\nasync function executeSubscription(exeContext) {\n const { schema, fragments, operation, variableValues, rootValue } =\n exeContext;\n const rootType = schema.getSubscriptionType();\n\n if (rootType == null) {\n throw new GraphQLError(\n 'Schema is not configured to execute subscription operation.',\n {\n nodes: operation,\n },\n );\n }\n\n const rootFields = collectFields(\n schema,\n fragments,\n variableValues,\n rootType,\n operation.selectionSet,\n );\n const [responseName, fieldNodes] = [...rootFields.entries()][0];\n const fieldDef = getFieldDef(schema, rootType, fieldNodes[0]);\n\n if (!fieldDef) {\n const fieldName = fieldNodes[0].name.value;\n throw new GraphQLError(\n `The subscription field \"${fieldName}\" is not defined.`,\n {\n nodes: fieldNodes,\n },\n );\n }\n\n const path = addPath(undefined, responseName, rootType.name);\n const info = buildResolveInfo(\n exeContext,\n fieldDef,\n fieldNodes,\n rootType,\n path,\n );\n\n try {\n var _fieldDef$subscribe;\n\n // Implements the \"ResolveFieldEventStream\" algorithm from GraphQL specification.\n // It differs from \"ResolveFieldValue\" due to providing a different `resolveFn`.\n // Build a JS object of arguments from the field.arguments AST, using the\n // variables scope to fulfill any variable references.\n const args = getArgumentValues(fieldDef, fieldNodes[0], variableValues); // The resolve function's optional third argument is a context value that\n // is provided to every resolve function within an execution. It is commonly\n // used to represent an authenticated user, or request-specific caches.\n\n const contextValue = exeContext.contextValue; // Call the `subscribe()` resolver or the default resolver to produce an\n // AsyncIterable yielding raw payloads.\n\n const resolveFn =\n (_fieldDef$subscribe = fieldDef.subscribe) !== null &&\n _fieldDef$subscribe !== void 0\n ? _fieldDef$subscribe\n : exeContext.subscribeFieldResolver;\n const eventStream = await resolveFn(rootValue, args, contextValue, info);\n\n if (eventStream instanceof Error) {\n throw eventStream;\n }\n\n return eventStream;\n } catch (error) {\n throw locatedError(error, fieldNodes, pathToArray(path));\n }\n}\n\n/**\n * Returns an operation AST given a document AST and optionally an operation\n * name. If a name is not provided, an operation is only returned if only one is\n * provided in the document.\n */\n\nfunction getOperationAST(documentAST, operationName) {\n let operation = null;\n\n for (const definition of documentAST.definitions) {\n if (definition.kind === Kind.OPERATION_DEFINITION) {\n var _definition$name;\n\n if (operationName == null) {\n // If no operation name was provided, only return an Operation if there\n // is one defined in the document. Upon encountering the second, return\n // null.\n if (operation) {\n return null;\n }\n\n operation = definition;\n } else if (\n ((_definition$name = definition.name) === null ||\n _definition$name === void 0\n ? void 0\n : _definition$name.value) === operationName\n ) {\n return definition;\n }\n }\n }\n\n return operation;\n}\n\n/**\n * @internal\n */\n\nfunction extendSchemaImpl(schemaConfig, documentAST, options) {\n var _schemaDef, _schemaDef$descriptio, _schemaDef2, _options$assumeValid;\n\n // Collect the type definitions and extensions found in the document.\n const typeDefs = [];\n const typeExtensionsMap = Object.create(null); // New directives and types are separate because a directives and types can\n // have the same name. For example, a type named \"skip\".\n\n const directiveDefs = [];\n let schemaDef; // Schema extensions are collected which may add additional operation types.\n\n const schemaExtensions = [];\n\n for (const def of documentAST.definitions) {\n if (def.kind === Kind.SCHEMA_DEFINITION) {\n schemaDef = def;\n } else if (def.kind === Kind.SCHEMA_EXTENSION) {\n schemaExtensions.push(def);\n } else if (isTypeDefinitionNode(def)) {\n typeDefs.push(def);\n } else if (isTypeExtensionNode(def)) {\n const extendedTypeName = def.name.value;\n const existingTypeExtensions = typeExtensionsMap[extendedTypeName];\n typeExtensionsMap[extendedTypeName] = existingTypeExtensions\n ? existingTypeExtensions.concat([def])\n : [def];\n } else if (def.kind === Kind.DIRECTIVE_DEFINITION) {\n directiveDefs.push(def);\n }\n } // If this document contains no new types, extensions, or directives then\n // return the same unmodified GraphQLSchema instance.\n\n if (\n Object.keys(typeExtensionsMap).length === 0 &&\n typeDefs.length === 0 &&\n directiveDefs.length === 0 &&\n schemaExtensions.length === 0 &&\n schemaDef == null\n ) {\n return schemaConfig;\n }\n\n const typeMap = Object.create(null);\n\n for (const existingType of schemaConfig.types) {\n typeMap[existingType.name] = extendNamedType(existingType);\n }\n\n for (const typeNode of typeDefs) {\n var _stdTypeMap$name;\n\n const name = typeNode.name.value;\n typeMap[name] =\n (_stdTypeMap$name = stdTypeMap[name]) !== null &&\n _stdTypeMap$name !== void 0\n ? _stdTypeMap$name\n : buildType(typeNode);\n }\n\n const operationTypes = {\n // Get the extended root operation types.\n query: schemaConfig.query && replaceNamedType(schemaConfig.query),\n mutation: schemaConfig.mutation && replaceNamedType(schemaConfig.mutation),\n subscription:\n schemaConfig.subscription && replaceNamedType(schemaConfig.subscription),\n // Then, incorporate schema definition and all schema extensions.\n ...(schemaDef && getOperationTypes([schemaDef])),\n ...getOperationTypes(schemaExtensions),\n }; // Then produce and return a Schema config with these types.\n\n return {\n description:\n (_schemaDef = schemaDef) === null || _schemaDef === void 0\n ? void 0\n : (_schemaDef$descriptio = _schemaDef.description) === null ||\n _schemaDef$descriptio === void 0\n ? void 0\n : _schemaDef$descriptio.value,\n ...operationTypes,\n types: Object.values(typeMap),\n directives: [\n ...schemaConfig.directives.map(replaceDirective),\n ...directiveDefs.map(buildDirective),\n ],\n extensions: Object.create(null),\n astNode:\n (_schemaDef2 = schemaDef) !== null && _schemaDef2 !== void 0\n ? _schemaDef2\n : schemaConfig.astNode,\n extensionASTNodes: schemaConfig.extensionASTNodes.concat(schemaExtensions),\n assumeValid:\n (_options$assumeValid =\n options === null || options === void 0\n ? void 0\n : options.assumeValid) !== null && _options$assumeValid !== void 0\n ? _options$assumeValid\n : false,\n }; // Below are functions used for producing this schema that have closed over\n // this scope and have access to the schema, cache, and newly defined types.\n\n function replaceType(type) {\n if (isListType(type)) {\n // @ts-expect-error\n return new GraphQLList(replaceType(type.ofType));\n }\n\n if (isNonNullType(type)) {\n // @ts-expect-error\n return new GraphQLNonNull(replaceType(type.ofType));\n } // @ts-expect-error FIXME\n\n return replaceNamedType(type);\n }\n\n function replaceNamedType(type) {\n // Note: While this could make early assertions to get the correctly\n // typed values, that would throw immediately while type system\n // validation with validateSchema() will produce more actionable results.\n return typeMap[type.name];\n }\n\n function replaceDirective(directive) {\n const config = directive.toConfig();\n return new GraphQLDirective({\n ...config,\n args: mapValue(config.args, extendArg),\n });\n }\n\n function extendNamedType(type) {\n if (isIntrospectionType(type) || isSpecifiedScalarType(type)) {\n // Builtin types are not extended.\n return type;\n }\n\n if (isScalarType(type)) {\n return extendScalarType(type);\n }\n\n if (isObjectType(type)) {\n return extendObjectType(type);\n }\n\n if (isInterfaceType(type)) {\n return extendInterfaceType(type);\n }\n\n if (isUnionType(type)) {\n return extendUnionType(type);\n }\n\n if (isEnumType(type)) {\n return extendEnumType(type);\n }\n\n if (isInputObjectType(type)) {\n return extendInputObjectType(type);\n }\n /* c8 ignore next 3 */\n // Not reachable, all possible type definition nodes have been considered.\n\n invariant$1(false, 'Unexpected type: ' + inspect$1(type));\n }\n\n function extendInputObjectType(type) {\n var _typeExtensionsMap$co;\n\n const config = type.toConfig();\n const extensions =\n (_typeExtensionsMap$co = typeExtensionsMap[config.name]) !== null &&\n _typeExtensionsMap$co !== void 0\n ? _typeExtensionsMap$co\n : [];\n return new GraphQLInputObjectType({\n ...config,\n fields: () => ({\n ...mapValue(config.fields, (field) => ({\n ...field,\n type: replaceType(field.type),\n })),\n ...buildInputFieldMap(extensions),\n }),\n extensionASTNodes: config.extensionASTNodes.concat(extensions),\n });\n }\n\n function extendEnumType(type) {\n var _typeExtensionsMap$ty;\n\n const config = type.toConfig();\n const extensions =\n (_typeExtensionsMap$ty = typeExtensionsMap[type.name]) !== null &&\n _typeExtensionsMap$ty !== void 0\n ? _typeExtensionsMap$ty\n : [];\n return new GraphQLEnumType({\n ...config,\n values: { ...config.values, ...buildEnumValueMap(extensions) },\n extensionASTNodes: config.extensionASTNodes.concat(extensions),\n });\n }\n\n function extendScalarType(type) {\n var _typeExtensionsMap$co2;\n\n const config = type.toConfig();\n const extensions =\n (_typeExtensionsMap$co2 = typeExtensionsMap[config.name]) !== null &&\n _typeExtensionsMap$co2 !== void 0\n ? _typeExtensionsMap$co2\n : [];\n let specifiedByURL = config.specifiedByURL;\n\n for (const extensionNode of extensions) {\n var _getSpecifiedByURL;\n\n specifiedByURL =\n (_getSpecifiedByURL = getSpecifiedByURL(extensionNode)) !== null &&\n _getSpecifiedByURL !== void 0\n ? _getSpecifiedByURL\n : specifiedByURL;\n }\n\n return new GraphQLScalarType({\n ...config,\n specifiedByURL,\n extensionASTNodes: config.extensionASTNodes.concat(extensions),\n });\n }\n\n function extendObjectType(type) {\n var _typeExtensionsMap$co3;\n\n const config = type.toConfig();\n const extensions =\n (_typeExtensionsMap$co3 = typeExtensionsMap[config.name]) !== null &&\n _typeExtensionsMap$co3 !== void 0\n ? _typeExtensionsMap$co3\n : [];\n return new GraphQLObjectType({\n ...config,\n interfaces: () => [\n ...type.getInterfaces().map(replaceNamedType),\n ...buildInterfaces(extensions),\n ],\n fields: () => ({\n ...mapValue(config.fields, extendField),\n ...buildFieldMap(extensions),\n }),\n extensionASTNodes: config.extensionASTNodes.concat(extensions),\n });\n }\n\n function extendInterfaceType(type) {\n var _typeExtensionsMap$co4;\n\n const config = type.toConfig();\n const extensions =\n (_typeExtensionsMap$co4 = typeExtensionsMap[config.name]) !== null &&\n _typeExtensionsMap$co4 !== void 0\n ? _typeExtensionsMap$co4\n : [];\n return new GraphQLInterfaceType({\n ...config,\n interfaces: () => [\n ...type.getInterfaces().map(replaceNamedType),\n ...buildInterfaces(extensions),\n ],\n fields: () => ({\n ...mapValue(config.fields, extendField),\n ...buildFieldMap(extensions),\n }),\n extensionASTNodes: config.extensionASTNodes.concat(extensions),\n });\n }\n\n function extendUnionType(type) {\n var _typeExtensionsMap$co5;\n\n const config = type.toConfig();\n const extensions =\n (_typeExtensionsMap$co5 = typeExtensionsMap[config.name]) !== null &&\n _typeExtensionsMap$co5 !== void 0\n ? _typeExtensionsMap$co5\n : [];\n return new GraphQLUnionType({\n ...config,\n types: () => [\n ...type.getTypes().map(replaceNamedType),\n ...buildUnionTypes(extensions),\n ],\n extensionASTNodes: config.extensionASTNodes.concat(extensions),\n });\n }\n\n function extendField(field) {\n return {\n ...field,\n type: replaceType(field.type),\n args: field.args && mapValue(field.args, extendArg),\n };\n }\n\n function extendArg(arg) {\n return { ...arg, type: replaceType(arg.type) };\n }\n\n function getOperationTypes(nodes) {\n const opTypes = {};\n\n for (const node of nodes) {\n var _node$operationTypes;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n const operationTypesNodes =\n /* c8 ignore next */\n (_node$operationTypes = node.operationTypes) !== null &&\n _node$operationTypes !== void 0\n ? _node$operationTypes\n : [];\n\n for (const operationType of operationTypesNodes) {\n // Note: While this could make early assertions to get the correctly\n // typed values below, that would throw immediately while type system\n // validation with validateSchema() will produce more actionable results.\n // @ts-expect-error\n opTypes[operationType.operation] = getNamedType(operationType.type);\n }\n }\n\n return opTypes;\n }\n\n function getNamedType(node) {\n var _stdTypeMap$name2;\n\n const name = node.name.value;\n const type =\n (_stdTypeMap$name2 = stdTypeMap[name]) !== null &&\n _stdTypeMap$name2 !== void 0\n ? _stdTypeMap$name2\n : typeMap[name];\n\n if (type === undefined) {\n throw new Error(`Unknown type: \"${name}\".`);\n }\n\n return type;\n }\n\n function getWrappedType(node) {\n if (node.kind === Kind.LIST_TYPE) {\n return new GraphQLList(getWrappedType(node.type));\n }\n\n if (node.kind === Kind.NON_NULL_TYPE) {\n return new GraphQLNonNull(getWrappedType(node.type));\n }\n\n return getNamedType(node);\n }\n\n function buildDirective(node) {\n var _node$description;\n\n return new GraphQLDirective({\n name: node.name.value,\n description:\n (_node$description = node.description) === null ||\n _node$description === void 0\n ? void 0\n : _node$description.value,\n // @ts-expect-error\n locations: node.locations.map(({ value }) => value),\n isRepeatable: node.repeatable,\n args: buildArgumentMap(node.arguments),\n astNode: node,\n });\n }\n\n function buildFieldMap(nodes) {\n const fieldConfigMap = Object.create(null);\n\n for (const node of nodes) {\n var _node$fields;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n const nodeFields =\n /* c8 ignore next */\n (_node$fields = node.fields) !== null && _node$fields !== void 0\n ? _node$fields\n : [];\n\n for (const field of nodeFields) {\n var _field$description;\n\n fieldConfigMap[field.name.value] = {\n // Note: While this could make assertions to get the correctly typed\n // value, that would throw immediately while type system validation\n // with validateSchema() will produce more actionable results.\n type: getWrappedType(field.type),\n description:\n (_field$description = field.description) === null ||\n _field$description === void 0\n ? void 0\n : _field$description.value,\n args: buildArgumentMap(field.arguments),\n deprecationReason: getDeprecationReason(field),\n astNode: field,\n };\n }\n }\n\n return fieldConfigMap;\n }\n\n function buildArgumentMap(args) {\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n const argsNodes =\n /* c8 ignore next */\n args !== null && args !== void 0 ? args : [];\n const argConfigMap = Object.create(null);\n\n for (const arg of argsNodes) {\n var _arg$description;\n\n // Note: While this could make assertions to get the correctly typed\n // value, that would throw immediately while type system validation\n // with validateSchema() will produce more actionable results.\n const type = getWrappedType(arg.type);\n argConfigMap[arg.name.value] = {\n type,\n description:\n (_arg$description = arg.description) === null ||\n _arg$description === void 0\n ? void 0\n : _arg$description.value,\n defaultValue: valueFromAST(arg.defaultValue, type),\n deprecationReason: getDeprecationReason(arg),\n astNode: arg,\n };\n }\n\n return argConfigMap;\n }\n\n function buildInputFieldMap(nodes) {\n const inputFieldMap = Object.create(null);\n\n for (const node of nodes) {\n var _node$fields2;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n const fieldsNodes =\n /* c8 ignore next */\n (_node$fields2 = node.fields) !== null && _node$fields2 !== void 0\n ? _node$fields2\n : [];\n\n for (const field of fieldsNodes) {\n var _field$description2;\n\n // Note: While this could make assertions to get the correctly typed\n // value, that would throw immediately while type system validation\n // with validateSchema() will produce more actionable results.\n const type = getWrappedType(field.type);\n inputFieldMap[field.name.value] = {\n type,\n description:\n (_field$description2 = field.description) === null ||\n _field$description2 === void 0\n ? void 0\n : _field$description2.value,\n defaultValue: valueFromAST(field.defaultValue, type),\n deprecationReason: getDeprecationReason(field),\n astNode: field,\n };\n }\n }\n\n return inputFieldMap;\n }\n\n function buildEnumValueMap(nodes) {\n const enumValueMap = Object.create(null);\n\n for (const node of nodes) {\n var _node$values;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n const valuesNodes =\n /* c8 ignore next */\n (_node$values = node.values) !== null && _node$values !== void 0\n ? _node$values\n : [];\n\n for (const value of valuesNodes) {\n var _value$description;\n\n enumValueMap[value.name.value] = {\n description:\n (_value$description = value.description) === null ||\n _value$description === void 0\n ? void 0\n : _value$description.value,\n deprecationReason: getDeprecationReason(value),\n astNode: value,\n };\n }\n }\n\n return enumValueMap;\n }\n\n function buildInterfaces(nodes) {\n // Note: While this could make assertions to get the correctly typed\n // values below, that would throw immediately while type system\n // validation with validateSchema() will produce more actionable results.\n // @ts-expect-error\n return nodes.flatMap(\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n (node) => {\n var _node$interfaces$map, _node$interfaces;\n\n return (\n /* c8 ignore next */\n (_node$interfaces$map =\n (_node$interfaces = node.interfaces) === null ||\n _node$interfaces === void 0\n ? void 0\n : _node$interfaces.map(getNamedType)) !== null &&\n _node$interfaces$map !== void 0\n ? _node$interfaces$map\n : []\n );\n },\n );\n }\n\n function buildUnionTypes(nodes) {\n // Note: While this could make assertions to get the correctly typed\n // values below, that would throw immediately while type system\n // validation with validateSchema() will produce more actionable results.\n // @ts-expect-error\n return nodes.flatMap(\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n (node) => {\n var _node$types$map, _node$types;\n\n return (\n /* c8 ignore next */\n (_node$types$map =\n (_node$types = node.types) === null || _node$types === void 0\n ? void 0\n : _node$types.map(getNamedType)) !== null &&\n _node$types$map !== void 0\n ? _node$types$map\n : []\n );\n },\n );\n }\n\n function buildType(astNode) {\n var _typeExtensionsMap$na;\n\n const name = astNode.name.value;\n const extensionASTNodes =\n (_typeExtensionsMap$na = typeExtensionsMap[name]) !== null &&\n _typeExtensionsMap$na !== void 0\n ? _typeExtensionsMap$na\n : [];\n\n switch (astNode.kind) {\n case Kind.OBJECT_TYPE_DEFINITION: {\n var _astNode$description;\n\n const allNodes = [astNode, ...extensionASTNodes];\n return new GraphQLObjectType({\n name,\n description:\n (_astNode$description = astNode.description) === null ||\n _astNode$description === void 0\n ? void 0\n : _astNode$description.value,\n interfaces: () => buildInterfaces(allNodes),\n fields: () => buildFieldMap(allNodes),\n astNode,\n extensionASTNodes,\n });\n }\n\n case Kind.INTERFACE_TYPE_DEFINITION: {\n var _astNode$description2;\n\n const allNodes = [astNode, ...extensionASTNodes];\n return new GraphQLInterfaceType({\n name,\n description:\n (_astNode$description2 = astNode.description) === null ||\n _astNode$description2 === void 0\n ? void 0\n : _astNode$description2.value,\n interfaces: () => buildInterfaces(allNodes),\n fields: () => buildFieldMap(allNodes),\n astNode,\n extensionASTNodes,\n });\n }\n\n case Kind.ENUM_TYPE_DEFINITION: {\n var _astNode$description3;\n\n const allNodes = [astNode, ...extensionASTNodes];\n return new GraphQLEnumType({\n name,\n description:\n (_astNode$description3 = astNode.description) === null ||\n _astNode$description3 === void 0\n ? void 0\n : _astNode$description3.value,\n values: buildEnumValueMap(allNodes),\n astNode,\n extensionASTNodes,\n });\n }\n\n case Kind.UNION_TYPE_DEFINITION: {\n var _astNode$description4;\n\n const allNodes = [astNode, ...extensionASTNodes];\n return new GraphQLUnionType({\n name,\n description:\n (_astNode$description4 = astNode.description) === null ||\n _astNode$description4 === void 0\n ? void 0\n : _astNode$description4.value,\n types: () => buildUnionTypes(allNodes),\n astNode,\n extensionASTNodes,\n });\n }\n\n case Kind.SCALAR_TYPE_DEFINITION: {\n var _astNode$description5;\n\n return new GraphQLScalarType({\n name,\n description:\n (_astNode$description5 = astNode.description) === null ||\n _astNode$description5 === void 0\n ? void 0\n : _astNode$description5.value,\n specifiedByURL: getSpecifiedByURL(astNode),\n astNode,\n extensionASTNodes,\n });\n }\n\n case Kind.INPUT_OBJECT_TYPE_DEFINITION: {\n var _astNode$description6;\n\n const allNodes = [astNode, ...extensionASTNodes];\n return new GraphQLInputObjectType({\n name,\n description:\n (_astNode$description6 = astNode.description) === null ||\n _astNode$description6 === void 0\n ? void 0\n : _astNode$description6.value,\n fields: () => buildInputFieldMap(allNodes),\n astNode,\n extensionASTNodes,\n });\n }\n }\n }\n}\nconst stdTypeMap = keyMap(\n [...specifiedScalarTypes, ...introspectionTypes],\n (type) => type.name,\n);\n/**\n * Given a field or enum value node, returns the string value for the\n * deprecation reason.\n */\n\nfunction getDeprecationReason(node) {\n const deprecated = getDirectiveValues(GraphQLDeprecatedDirective, node); // @ts-expect-error validated by `getDirectiveValues`\n\n return deprecated === null || deprecated === void 0\n ? void 0\n : deprecated.reason;\n}\n/**\n * Given a scalar node, returns the string value for the specifiedByURL.\n */\n\nfunction getSpecifiedByURL(node) {\n const specifiedBy = getDirectiveValues(GraphQLSpecifiedByDirective, node); // @ts-expect-error validated by `getDirectiveValues`\n\n return specifiedBy === null || specifiedBy === void 0\n ? void 0\n : specifiedBy.url;\n}\n\n/**\n * This takes the ast of a schema document produced by the parse function in\n * src/language/parser.js.\n *\n * If no schema definition is provided, then it will look for types named Query,\n * Mutation and Subscription.\n *\n * Given that AST it constructs a GraphQLSchema. The resulting schema\n * has no resolve methods, so execution will use default resolvers.\n */\nfunction buildASTSchema(documentAST, options) {\n (documentAST != null && documentAST.kind === Kind.DOCUMENT) ||\n devAssert(false, 'Must provide valid Document AST.');\n\n if (\n (options === null || options === void 0 ? void 0 : options.assumeValid) !==\n true &&\n (options === null || options === void 0\n ? void 0\n : options.assumeValidSDL) !== true\n ) {\n assertValidSDL(documentAST);\n }\n\n const emptySchemaConfig = {\n description: undefined,\n types: [],\n directives: [],\n extensions: Object.create(null),\n extensionASTNodes: [],\n assumeValid: false,\n };\n const config = extendSchemaImpl(emptySchemaConfig, documentAST, options);\n\n if (config.astNode == null) {\n for (const type of config.types) {\n switch (type.name) {\n // Note: While this could make early assertions to get the correctly\n // typed values below, that would throw immediately while type system\n // validation with validateSchema() will produce more actionable results.\n case 'Query':\n // @ts-expect-error validated in `validateSchema`\n config.query = type;\n break;\n\n case 'Mutation':\n // @ts-expect-error validated in `validateSchema`\n config.mutation = type;\n break;\n\n case 'Subscription':\n // @ts-expect-error validated in `validateSchema`\n config.subscription = type;\n break;\n }\n }\n }\n\n const directives = [\n ...config.directives, // If specified directives were not explicitly declared, add them.\n ...specifiedDirectives.filter((stdDirective) =>\n config.directives.every(\n (directive) => directive.name !== stdDirective.name,\n ),\n ),\n ];\n return new GraphQLSchema({ ...config, directives });\n}\n/**\n * A helper function to build a GraphQLSchema directly from a source\n * document.\n */\n\nfunction buildSchema(source, options) {\n const document = parse(source, {\n noLocation:\n options === null || options === void 0 ? void 0 : options.noLocation,\n allowLegacyFragmentVariables:\n options === null || options === void 0\n ? void 0\n : options.allowLegacyFragmentVariables,\n });\n return buildASTSchema(document, {\n assumeValidSDL:\n options === null || options === void 0 ? void 0 : options.assumeValidSDL,\n assumeValid:\n options === null || options === void 0 ? void 0 : options.assumeValid,\n });\n}\n\nconst trackedSchemaSymbol = Symbol('TRACKED_SCHEMA');\nconst resolversHooksSymbol = Symbol('RESOLVERS_HOOKS');\nfunction prepareTracedSchema(schema) {\n if (!schema || schema[trackedSchemaSymbol]) {\n return;\n }\n schema[trackedSchemaSymbol] = true;\n const entries = Object.values(schema.getTypeMap());\n for (const type of entries) {\n if (!isIntrospectionType(type) && isObjectType(type)) {\n const fields = Object.values(type.getFields());\n for (const field of fields) {\n let resolverFn = (field.resolve || defaultFieldResolver);\n field.resolve = async (root, args, context, info) => {\n if (context && context[resolversHooksSymbol]) {\n const hooks = context[resolversHooksSymbol];\n const afterCalls = [];\n for (const hook of hooks) {\n const afterFn = await hook({\n root,\n args,\n context,\n info,\n resolverFn,\n replaceResolverFn: newFn => {\n resolverFn = newFn;\n },\n });\n afterFn && afterCalls.push(afterFn);\n }\n try {\n let result = await resolverFn(root, args, context, info);\n for (const afterFn of afterCalls) {\n afterFn({\n result,\n setResult: newResult => {\n result = newResult;\n },\n });\n }\n return result;\n }\n catch (e) {\n let resultErr = e;\n for (const afterFn of afterCalls) {\n afterFn({\n result: resultErr,\n setResult: newResult => {\n resultErr = newResult;\n },\n });\n }\n throw resultErr;\n }\n }\n else {\n return resolverFn(root, args, context, info);\n }\n };\n }\n }\n }\n}\n\nconst envelopIsIntrospectionSymbol = Symbol('ENVELOP_IS_INTROSPECTION');\nfunction isIntrospectionOperationString(operation) {\n return (typeof operation === 'string' ? operation : operation.body).indexOf('__schema') !== -1;\n}\nfunction getSubscribeArgs(args) {\n return args.length === 1\n ? args[0]\n : {\n schema: args[0],\n document: args[1],\n rootValue: args[2],\n contextValue: args[3],\n variableValues: args[4],\n operationName: args[5],\n fieldResolver: args[6],\n subscribeFieldResolver: args[7],\n };\n}\n/**\n * Utility function for making a subscribe function that handles polymorphic arguments.\n */\nconst makeSubscribe = (subscribeFn) => ((...polyArgs) => subscribeFn(getSubscribeArgs(polyArgs)));\nfunction mapAsyncIterator(source, mapper) {\n const iterator = source[Symbol.asyncIterator]();\n async function mapResult(result) {\n var _a;\n if (result.done) {\n return result;\n }\n try {\n return { value: await mapper(result.value), done: false };\n }\n catch (error) {\n try {\n await ((_a = iterator.return) === null || _a === void 0 ? void 0 : _a.call(iterator));\n }\n catch (_error) {\n /* ignore error */\n }\n throw error;\n }\n }\n const stream = {\n [Symbol.asyncIterator]() {\n return stream;\n },\n async next() {\n return await mapResult(await iterator.next());\n },\n async return() {\n var _a;\n const promise = (_a = iterator.return) === null || _a === void 0 ? void 0 : _a.call(iterator);\n return promise ? await mapResult(await promise) : { value: undefined, done: true };\n },\n async throw(error) {\n var _a;\n const promise = (_a = iterator.throw) === null || _a === void 0 ? void 0 : _a.call(iterator);\n if (promise) {\n return await mapResult(await promise);\n }\n // if the source has no throw method we just re-throw error\n // usually throw is not called anyways\n throw error;\n },\n };\n return stream;\n}\nfunction getExecuteArgs(args) {\n return args.length === 1\n ? args[0]\n : {\n schema: args[0],\n document: args[1],\n rootValue: args[2],\n contextValue: args[3],\n variableValues: args[4],\n operationName: args[5],\n fieldResolver: args[6],\n typeResolver: args[7],\n };\n}\n/**\n * Utility function for making a execute function that handles polymorphic arguments.\n */\nconst makeExecute = (executeFn) => ((...polyArgs) => executeFn(getExecuteArgs(polyArgs)));\n/**\n * Returns true if the provided object implements the AsyncIterator protocol via\n * implementing a `Symbol.asyncIterator` method.\n *\n * Source: https://github.com/graphql/graphql-js/blob/main/src/jsutils/isAsyncIterable.ts\n */\nfunction isAsyncIterable$1(maybeAsyncIterable) {\n return (typeof maybeAsyncIterable === 'object' &&\n maybeAsyncIterable != null &&\n typeof maybeAsyncIterable[Symbol.asyncIterator] === 'function');\n}\n/**\n * A utility function for handling `onExecuteDone` hook result, for simplifying the handling of AsyncIterable returned from `execute`.\n *\n * @param payload The payload send to `onExecuteDone` hook function\n * @param fn The handler to be executed on each result\n * @returns a subscription for streamed results, or undefined in case of an non-async\n */\nfunction handleStreamOrSingleExecutionResult(payload, fn) {\n if (isAsyncIterable$1(payload.result)) {\n return { onNext: fn };\n }\n fn({\n args: payload.args,\n result: payload.result,\n setResult: payload.setResult,\n });\n return undefined;\n}\nfunction finalAsyncIterator(source, onFinal) {\n const iterator = source[Symbol.asyncIterator]();\n let isDone = false;\n const stream = {\n [Symbol.asyncIterator]() {\n return stream;\n },\n async next() {\n const result = await iterator.next();\n if (result.done && isDone === false) {\n isDone = true;\n onFinal();\n }\n return result;\n },\n async return() {\n var _a;\n const promise = (_a = iterator.return) === null || _a === void 0 ? void 0 : _a.call(iterator);\n if (isDone === false) {\n isDone = true;\n onFinal();\n }\n return promise ? await promise : { done: true, value: undefined };\n },\n async throw(error) {\n var _a;\n const promise = (_a = iterator.throw) === null || _a === void 0 ? void 0 : _a.call(iterator);\n if (promise) {\n return await promise;\n }\n // if the source has no throw method we just re-throw error\n // usually throw is not called anyways\n throw error;\n },\n };\n return stream;\n}\nfunction errorAsyncIterator(source, onError) {\n const iterator = source[Symbol.asyncIterator]();\n const stream = {\n [Symbol.asyncIterator]() {\n return stream;\n },\n async next() {\n try {\n return await iterator.next();\n }\n catch (error) {\n onError(error);\n return { done: true, value: undefined };\n }\n },\n async return() {\n var _a;\n const promise = (_a = iterator.return) === null || _a === void 0 ? void 0 : _a.call(iterator);\n return promise ? await promise : { done: true, value: undefined };\n },\n async throw(error) {\n var _a;\n const promise = (_a = iterator.throw) === null || _a === void 0 ? void 0 : _a.call(iterator);\n if (promise) {\n return await promise;\n }\n // if the source has no throw method we just re-throw error\n // usually throw is not called anyways\n throw error;\n },\n };\n return stream;\n}\n\nfunction createEnvelopOrchestrator(plugins) {\n let schema = null;\n let initDone = false;\n const onResolversHandlers = [];\n for (const plugin of plugins) {\n if (plugin.onResolverCalled) {\n onResolversHandlers.push(plugin.onResolverCalled);\n }\n }\n // Define the initial method for replacing the GraphQL schema, this is needed in order\n // to allow setting the schema from the onPluginInit callback. We also need to make sure\n // here not to call the same plugin that initiated the schema switch.\n const replaceSchema = (newSchema, ignorePluginIndex = -1) => {\n if (onResolversHandlers.length) {\n prepareTracedSchema(newSchema);\n }\n schema = newSchema;\n if (initDone) {\n for (const [i, plugin] of plugins.entries()) {\n if (i !== ignorePluginIndex) {\n plugin.onSchemaChange &&\n plugin.onSchemaChange({\n schema,\n replaceSchema: schemaToSet => {\n replaceSchema(schemaToSet, i);\n },\n });\n }\n }\n }\n };\n const contextErrorHandlers = [];\n // Iterate all plugins and trigger onPluginInit\n for (const [i, plugin] of plugins.entries()) {\n plugin.onPluginInit &&\n plugin.onPluginInit({\n plugins,\n addPlugin: newPlugin => {\n plugins.push(newPlugin);\n },\n setSchema: modifiedSchema => replaceSchema(modifiedSchema, i),\n registerContextErrorHandler: handler => contextErrorHandlers.push(handler),\n });\n }\n // A set of before callbacks defined here in order to allow it to be used later\n const beforeCallbacks = {\n init: [],\n parse: [],\n validate: [],\n subscribe: [],\n execute: [],\n context: [],\n };\n for (const { onContextBuilding, onExecute, onParse, onSubscribe, onValidate, onEnveloped } of plugins) {\n onEnveloped && beforeCallbacks.init.push(onEnveloped);\n onContextBuilding && beforeCallbacks.context.push(onContextBuilding);\n onExecute && beforeCallbacks.execute.push(onExecute);\n onParse && beforeCallbacks.parse.push(onParse);\n onSubscribe && beforeCallbacks.subscribe.push(onSubscribe);\n onValidate && beforeCallbacks.validate.push(onValidate);\n }\n const init = initialContext => {\n for (const [i, onEnveloped] of beforeCallbacks.init.entries()) {\n onEnveloped({\n context: initialContext,\n extendContext: extension => {\n if (!initialContext) {\n return;\n }\n Object.assign(initialContext, extension);\n },\n setSchema: modifiedSchema => replaceSchema(modifiedSchema, i),\n });\n }\n };\n const customParse = beforeCallbacks.parse.length\n ? initialContext => (source, parseOptions) => {\n let result = null;\n let parseFn = parse;\n const context = initialContext;\n const afterCalls = [];\n for (const onParse of beforeCallbacks.parse) {\n const afterFn = onParse({\n context,\n extendContext: extension => {\n Object.assign(context, extension);\n },\n params: { source, options: parseOptions },\n parseFn,\n setParseFn: newFn => {\n parseFn = newFn;\n },\n setParsedDocument: newDoc => {\n result = newDoc;\n },\n });\n afterFn && afterCalls.push(afterFn);\n }\n if (result === null) {\n try {\n result = parseFn(source, parseOptions);\n }\n catch (e) {\n result = e;\n }\n }\n for (const afterCb of afterCalls) {\n afterCb({\n context,\n extendContext: extension => {\n Object.assign(context, extension);\n },\n replaceParseResult: newResult => {\n result = newResult;\n },\n result,\n });\n }\n if (result === null) {\n throw new Error(`Failed to parse document.`);\n }\n if (result instanceof Error) {\n throw result;\n }\n return result;\n }\n : () => parse;\n const customValidate = beforeCallbacks.validate.length\n ? initialContext => (schema, documentAST, rules, typeInfo, validationOptions) => {\n let actualRules = rules ? [...rules] : undefined;\n let validateFn = validate;\n let result = null;\n const context = initialContext;\n const afterCalls = [];\n for (const onValidate of beforeCallbacks.validate) {\n const afterFn = onValidate({\n context,\n extendContext: extension => {\n Object.assign(context, extension);\n },\n params: {\n schema,\n documentAST,\n rules: actualRules,\n typeInfo,\n options: validationOptions,\n },\n validateFn,\n addValidationRule: rule => {\n if (!actualRules) {\n actualRules = [...specifiedRules];\n }\n actualRules.push(rule);\n },\n setValidationFn: newFn => {\n validateFn = newFn;\n },\n setResult: newResults => {\n result = newResults;\n },\n });\n afterFn && afterCalls.push(afterFn);\n }\n if (!result) {\n result = validateFn(schema, documentAST, actualRules, typeInfo, validationOptions);\n }\n const valid = result.length === 0;\n for (const afterCb of afterCalls) {\n afterCb({\n valid,\n result,\n context,\n extendContext: extension => {\n Object.assign(context, extension);\n },\n setResult: newResult => {\n result = newResult;\n },\n });\n }\n return result;\n }\n : () => validate;\n const customContextFactory = beforeCallbacks.context\n .length\n ? initialContext => async (orchestratorCtx) => {\n const afterCalls = [];\n // In order to have access to the \"last working\" context object we keep this outside of the try block:\n let context = orchestratorCtx ? { ...initialContext, ...orchestratorCtx } : initialContext;\n try {\n let isBreakingContextBuilding = false;\n for (const onContext of beforeCallbacks.context) {\n const afterHookResult = await onContext({\n context,\n extendContext: extension => {\n context = { ...context, ...extension };\n },\n breakContextBuilding: () => {\n isBreakingContextBuilding = true;\n },\n });\n if (typeof afterHookResult === 'function') {\n afterCalls.push(afterHookResult);\n }\n if (isBreakingContextBuilding === true) {\n break;\n }\n }\n for (const afterCb of afterCalls) {\n afterCb({\n context,\n extendContext: extension => {\n context = { ...context, ...extension };\n },\n });\n }\n return context;\n }\n catch (err) {\n let error = err;\n for (const errorCb of contextErrorHandlers) {\n errorCb({\n context,\n error,\n setError: err => {\n error = err;\n },\n });\n }\n throw error;\n }\n }\n : initialContext => orchestratorCtx => orchestratorCtx ? { ...initialContext, ...orchestratorCtx } : initialContext;\n const useCustomSubscribe = beforeCallbacks.subscribe.length || onResolversHandlers.length;\n const customSubscribe = useCustomSubscribe\n ? makeSubscribe(async (args) => {\n let subscribeFn = subscribe;\n const afterCalls = [];\n const subscribeErrorHandlers = [];\n let context = args.contextValue || {};\n let result;\n for (const onSubscribe of beforeCallbacks.subscribe) {\n const after = await onSubscribe({\n subscribeFn,\n setSubscribeFn: newSubscribeFn => {\n subscribeFn = newSubscribeFn;\n },\n extendContext: extension => {\n context = { ...context, ...extension };\n },\n args: args,\n setResultAndStopExecution: stopResult => {\n result = stopResult;\n },\n });\n if (after) {\n if (after.onSubscribeResult) {\n afterCalls.push(after.onSubscribeResult);\n }\n if (after.onSubscribeError) {\n subscribeErrorHandlers.push(after.onSubscribeError);\n }\n }\n if (result !== undefined) {\n break;\n }\n }\n if (onResolversHandlers.length) {\n context[resolversHooksSymbol] = onResolversHandlers;\n }\n if (result === undefined) {\n result = await subscribeFn({\n ...args,\n contextValue: context,\n // Casted for GraphQL.js 15 compatibility\n // Can be removed once we drop support for GraphQL.js 15\n });\n }\n const onNextHandler = [];\n const onEndHandler = [];\n for (const afterCb of afterCalls) {\n const hookResult = afterCb({\n args: args,\n result,\n setResult: newResult => {\n result = newResult;\n },\n });\n if (hookResult) {\n if (hookResult.onNext) {\n onNextHandler.push(hookResult.onNext);\n }\n if (hookResult.onEnd) {\n onEndHandler.push(hookResult.onEnd);\n }\n }\n }\n if (onNextHandler.length && isAsyncIterable$1(result)) {\n result = mapAsyncIterator(result, async (result) => {\n for (const onNext of onNextHandler) {\n await onNext({\n args: args,\n result,\n setResult: newResult => (result = newResult),\n });\n }\n return result;\n });\n }\n if (onEndHandler.length && isAsyncIterable$1(result)) {\n result = finalAsyncIterator(result, () => {\n for (const onEnd of onEndHandler) {\n onEnd();\n }\n });\n }\n if (subscribeErrorHandlers.length && isAsyncIterable$1(result)) {\n result = errorAsyncIterator(result, err => {\n let error = err;\n for (const handler of subscribeErrorHandlers) {\n handler({\n error,\n setError: err => {\n error = err;\n },\n });\n }\n throw error;\n });\n }\n return result;\n })\n : makeSubscribe(subscribe);\n const useCustomExecute = beforeCallbacks.execute.length || onResolversHandlers.length;\n const customExecute = useCustomExecute\n ? makeExecute(async (args) => {\n let executeFn = execute$1;\n let result;\n const afterCalls = [];\n let context = args.contextValue || {};\n for (const onExecute of beforeCallbacks.execute) {\n const after = await onExecute({\n executeFn,\n setExecuteFn: newExecuteFn => {\n executeFn = newExecuteFn;\n },\n setResultAndStopExecution: stopResult => {\n result = stopResult;\n },\n extendContext: extension => {\n if (typeof extension === 'object') {\n context = {\n ...context,\n ...extension,\n };\n }\n else {\n throw new Error(`Invalid context extension provided! Expected \"object\", got: \"${JSON.stringify(extension)}\" (${typeof extension})`);\n }\n },\n args: args,\n });\n if (after === null || after === void 0 ? void 0 : after.onExecuteDone) {\n afterCalls.push(after.onExecuteDone);\n }\n if (result !== undefined) {\n break;\n }\n }\n if (onResolversHandlers.length) {\n context[resolversHooksSymbol] = onResolversHandlers;\n }\n if (result === undefined) {\n result = (await executeFn({\n ...args,\n contextValue: context,\n }));\n }\n const onNextHandler = [];\n const onEndHandler = [];\n for (const afterCb of afterCalls) {\n const hookResult = await afterCb({\n args: args,\n result,\n setResult: newResult => {\n result = newResult;\n },\n });\n if (hookResult) {\n if (hookResult.onNext) {\n onNextHandler.push(hookResult.onNext);\n }\n if (hookResult.onEnd) {\n onEndHandler.push(hookResult.onEnd);\n }\n }\n }\n if (onNextHandler.length && isAsyncIterable$1(result)) {\n result = mapAsyncIterator(result, async (result) => {\n for (const onNext of onNextHandler) {\n await onNext({\n args: args,\n result,\n setResult: newResult => {\n result = newResult;\n },\n });\n }\n return result;\n });\n }\n if (onEndHandler.length && isAsyncIterable$1(result)) {\n result = finalAsyncIterator(result, () => {\n for (const onEnd of onEndHandler) {\n onEnd();\n }\n });\n }\n return result;\n })\n : makeExecute(execute$1);\n initDone = true;\n // This is done in order to trigger the first schema available, to allow plugins that needs the schema\n // eagerly to have it.\n if (schema) {\n for (const [i, plugin] of plugins.entries()) {\n plugin.onSchemaChange &&\n plugin.onSchemaChange({\n schema,\n replaceSchema: modifiedSchema => replaceSchema(modifiedSchema, i),\n });\n }\n }\n return {\n getCurrentSchema() {\n return schema;\n },\n init,\n parse: customParse,\n validate: customValidate,\n execute: customExecute,\n subscribe: customSubscribe,\n contextFactory: customContextFactory,\n };\n}\n\nvar _a;\nconst getTimestamp = typeof globalThis !== 'undefined' && ((_a = globalThis === null || globalThis === void 0 ? void 0 : globalThis.performance) === null || _a === void 0 ? void 0 : _a.now)\n ? () => globalThis.performance.now()\n : () => Date.now();\nconst measure = () => {\n const start = getTimestamp();\n return () => {\n const end = getTimestamp();\n return end - start;\n };\n};\nconst tracingSymbol = Symbol('envelopTracing');\nfunction traceOrchestrator(orchestrator) {\n const createTracer = (name, ctx) => {\n const end = measure();\n return () => {\n ctx[tracingSymbol][name] = end();\n };\n };\n return {\n ...orchestrator,\n init: (ctx = {}) => {\n ctx[tracingSymbol] = ctx[tracingSymbol] || {};\n const done = createTracer('init', ctx || {});\n try {\n return orchestrator.init(ctx);\n }\n finally {\n done();\n }\n },\n parse: (ctx = {}) => {\n ctx[tracingSymbol] = ctx[tracingSymbol] || {};\n const actualFn = orchestrator.parse(ctx);\n return (...args) => {\n const done = createTracer('parse', ctx);\n try {\n return actualFn(...args);\n }\n finally {\n done();\n }\n };\n },\n validate: (ctx = {}) => {\n ctx[tracingSymbol] = ctx[tracingSymbol] || {};\n const actualFn = orchestrator.validate(ctx);\n return (...args) => {\n const done = createTracer('validate', ctx);\n try {\n return actualFn(...args);\n }\n finally {\n done();\n }\n };\n },\n execute: async (argsOrSchema, document, rootValue, contextValue, variableValues, operationName, fieldResolver, typeResolver) => {\n const args = argsOrSchema instanceof GraphQLSchema\n ? {\n schema: argsOrSchema,\n document: document,\n rootValue,\n contextValue,\n variableValues,\n operationName,\n fieldResolver,\n typeResolver,\n }\n : argsOrSchema;\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore GraphQL.js types contextValue as unknown\n const done = createTracer('execute', args.contextValue || {});\n try {\n const result = await orchestrator.execute(args);\n done();\n if (!isAsyncIterable$1(result)) {\n result.extensions = result.extensions || {};\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore GraphQL.js types contextValue as unknown\n result.extensions.envelopTracing = args.contextValue[tracingSymbol];\n }\n else {\n // eslint-disable-next-line no-console\n console.warn(`\"traceOrchestrator\" encountered a AsyncIterator which is not supported yet, so tracing data is not available for the operation.`);\n }\n return result;\n }\n catch (e) {\n done();\n throw e;\n }\n },\n subscribe: async (argsOrSchema, document, rootValue, contextValue, variableValues, operationName, fieldResolver, subscribeFieldResolver) => {\n const args = argsOrSchema instanceof GraphQLSchema\n ? {\n schema: argsOrSchema,\n document: document,\n rootValue,\n contextValue,\n variableValues,\n operationName,\n fieldResolver,\n subscribeFieldResolver,\n }\n : argsOrSchema;\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore GraphQL.js types contextValue as unknown\n const done = createTracer('subscribe', args.contextValue || {});\n try {\n return await orchestrator.subscribe(args);\n }\n finally {\n done();\n }\n },\n contextFactory: (ctx = {}) => {\n const actualFn = orchestrator.contextFactory(ctx);\n return async (childCtx) => {\n const done = createTracer('contextFactory', ctx);\n try {\n return await actualFn(childCtx);\n }\n finally {\n done();\n }\n };\n },\n };\n}\n\nfunction envelop(options) {\n const plugins = options.plugins.filter(isPluginEnabled);\n let orchestrator = createEnvelopOrchestrator(plugins);\n if (options.enableInternalTracing) {\n orchestrator = traceOrchestrator(orchestrator);\n }\n const getEnveloped = (initialContext = {}) => {\n const typedOrchestrator = orchestrator;\n typedOrchestrator.init(initialContext);\n return {\n parse: typedOrchestrator.parse(initialContext),\n validate: typedOrchestrator.validate(initialContext),\n contextFactory: typedOrchestrator.contextFactory(initialContext),\n execute: typedOrchestrator.execute,\n subscribe: typedOrchestrator.subscribe,\n schema: typedOrchestrator.getCurrentSchema(),\n };\n };\n getEnveloped._plugins = plugins;\n return getEnveloped;\n}\n\nconst DEFAULT_OPTIONS = {\n logFn: console.log,\n};\nconst useLogger = (rawOptions = DEFAULT_OPTIONS) => {\n const options = {\n DEFAULT_OPTIONS,\n ...rawOptions,\n };\n return {\n onParse({ extendContext, params }) {\n if (options.skipIntrospection && isIntrospectionOperationString(params.source)) {\n extendContext({\n [envelopIsIntrospectionSymbol]: true,\n });\n }\n },\n onExecute({ args }) {\n if (args.contextValue[envelopIsIntrospectionSymbol]) {\n return;\n }\n options.logFn('execute-start', { args });\n return {\n onExecuteDone: ({ result }) => {\n options.logFn('execute-end', { args, result });\n },\n };\n },\n onSubscribe({ args }) {\n if (args.contextValue[envelopIsIntrospectionSymbol]) {\n return;\n }\n options.logFn('subscribe-start', { args });\n return {\n onSubscribeResult: ({ result }) => {\n options.logFn('subscribe-end', { args, result });\n },\n };\n },\n };\n};\n\nconst useSchema = (schema) => {\n return {\n onPluginInit({ setSchema }) {\n setSchema(schema);\n },\n };\n};\n\nconst useExtendContext = (contextFactory) => ({\n async onContextBuilding({ context, extendContext }) {\n extendContext((await contextFactory(context)));\n },\n});\n\nconst DEFAULT_ERROR_MESSAGE = 'Unexpected error.';\nclass EnvelopError extends GraphQLError {\n constructor(message, extensions) {\n super(message, undefined, undefined, undefined, undefined, undefined, extensions);\n }\n}\nconst formatError$1 = (err, message, isDev) => {\n var _a, _b, _c, _d;\n if (err instanceof GraphQLError) {\n if (\n /** execution error */\n (err.originalError && err.originalError instanceof EnvelopError === false) ||\n /** validate and parse errors */\n (err.originalError === undefined && err instanceof EnvelopError === false)) {\n return new GraphQLError(message, err.nodes, err.source, err.positions, err.path, undefined, isDev\n ? {\n originalError: {\n message: (_b = (_a = err.originalError) === null || _a === void 0 ? void 0 : _a.message) !== null && _b !== void 0 ? _b : err.message,\n stack: (_d = (_c = err.originalError) === null || _c === void 0 ? void 0 : _c.stack) !== null && _d !== void 0 ? _d : err.stack,\n },\n }\n : undefined);\n }\n return err;\n }\n return new GraphQLError(message);\n};\nconst makeHandleResult = (format, message, isDev) => ({ result, setResult }) => {\n if (result.errors != null) {\n setResult({ ...result, errors: result.errors.map(error => format(error, message, isDev)) });\n }\n};\nconst useMaskedErrors = (opts) => {\n var _a, _b;\n const format = (_a = opts === null || opts === void 0 ? void 0 : opts.formatError) !== null && _a !== void 0 ? _a : formatError$1;\n const message = (opts === null || opts === void 0 ? void 0 : opts.errorMessage) || DEFAULT_ERROR_MESSAGE;\n // eslint-disable-next-line dot-notation\n const isDev = (_b = opts === null || opts === void 0 ? void 0 : opts.isDev) !== null && _b !== void 0 ? _b : (typeof process !== 'undefined' ? process.env['NODE_ENV'] === 'development' : false);\n const handleResult = makeHandleResult(format, message, isDev);\n return {\n onParse: (opts === null || opts === void 0 ? void 0 : opts.handleParseErrors) === true\n ? function onParse() {\n return function onParseEnd({ result, replaceParseResult }) {\n if (result instanceof Error) {\n replaceParseResult(format(result, message, isDev));\n }\n };\n }\n : undefined,\n onValidate: (opts === null || opts === void 0 ? void 0 : opts.handleValidationErrors) === true\n ? function onValidate() {\n return function onValidateEnd({ valid, result, setResult }) {\n if (valid === false) {\n setResult(result.map(error => format(error, message, isDev)));\n }\n };\n }\n : undefined,\n onPluginInit(context) {\n context.registerContextErrorHandler(({ error, setError }) => {\n if (error instanceof GraphQLError === false && error instanceof Error) {\n error = new GraphQLError(error.message, undefined, undefined, undefined, undefined, error);\n }\n setError(format(error, message, isDev));\n });\n },\n onExecute() {\n return {\n onExecuteDone(payload) {\n return handleStreamOrSingleExecutionResult(payload, handleResult);\n },\n };\n },\n onSubscribe() {\n return {\n onSubscribeResult(payload) {\n return handleStreamOrSingleExecutionResult(payload, handleResult);\n },\n onSubscribeError({ error, setError }) {\n setError(format(error, message, isDev));\n },\n };\n },\n };\n};\n\nconst ANSI_CODES = {\n black: '\\x1b[30m',\n red: '\\x1b[31m',\n green: '\\x1b[32m',\n yellow: '\\x1b[33m',\n blue: '\\x1b[34m',\n magenta: '\\x1b[35m',\n cyan: '\\x1b[36m',\n white: '\\x1b[37m',\n reset: '\\x1b[0m',\n bold: '\\x1b[1m',\n orange: '\\x1b[48:5:166m',\n};\nconst titleBold = (msg) => ANSI_CODES.bold + msg + ANSI_CODES.reset;\nconst LEVEL_COLOR = {\n warn: ANSI_CODES.orange,\n info: ANSI_CODES.cyan,\n error: ANSI_CODES.red,\n debug: ANSI_CODES.magenta,\n title: ANSI_CODES.bold,\n reset: ANSI_CODES.reset,\n};\nconst isDebug = () => typeof process === 'object'\n ? process.env.DEBUG\n : // @ts-expect-error\n typeof DEBUG !== 'undefined'\n ? true\n : false;\nconst prefix = [LEVEL_COLOR.title, `\uD83E\uDDD8 Yoga -`, LEVEL_COLOR.reset];\nconst defaultYogaLogger = {\n debug(...args) {\n if (isDebug()) {\n const fullMessage = [\n `\uD83D\uDC1B `,\n ...prefix,\n LEVEL_COLOR.debug,\n ...args,\n LEVEL_COLOR.reset,\n ];\n // Some environments don't have other console methods\n if (console.debug) {\n console.debug(...fullMessage);\n }\n else {\n console.log(...fullMessage);\n }\n }\n },\n info(...args) {\n const fullMessage = [\n `\uD83D\uDCA1 `,\n ...prefix,\n LEVEL_COLOR.info,\n ...args,\n LEVEL_COLOR.reset,\n ];\n if (console.info) {\n console.info(...fullMessage);\n }\n else {\n console.log(...fullMessage);\n }\n },\n warn(...args) {\n const fullMessage = [\n `\u26A0\uFE0F `,\n ...prefix,\n LEVEL_COLOR.warn,\n ...args,\n LEVEL_COLOR.reset,\n ];\n if (console.warn) {\n console.warn(...fullMessage);\n }\n else {\n console.log(...fullMessage);\n }\n },\n error(...args) {\n const fullMessage = [\n `\u274C `,\n ...prefix,\n LEVEL_COLOR.error,\n ...args,\n LEVEL_COLOR.reset,\n ];\n if (console.error) {\n console.error(...fullMessage);\n }\n else {\n console.log(...fullMessage);\n }\n },\n};\n\nvar iterator;\nvar hasRequiredIterator;\n\nfunction requireIterator () {\n\tif (hasRequiredIterator) return iterator;\n\thasRequiredIterator = 1;\n\titerator = function (Yallist) {\n\t Yallist.prototype[Symbol.iterator] = function* () {\n\t for (let walker = this.head; walker; walker = walker.next) {\n\t yield walker.value;\n\t }\n\t };\n\t};\n\treturn iterator;\n}\n\nvar yallist = Yallist$1;\n\nYallist$1.Node = Node;\nYallist$1.create = Yallist$1;\n\nfunction Yallist$1 (list) {\n var self = this;\n if (!(self instanceof Yallist$1)) {\n self = new Yallist$1();\n }\n\n self.tail = null;\n self.head = null;\n self.length = 0;\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item);\n });\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i]);\n }\n }\n\n return self\n}\n\nYallist$1.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next;\n var prev = node.prev;\n\n if (next) {\n next.prev = prev;\n }\n\n if (prev) {\n prev.next = next;\n }\n\n if (node === this.head) {\n this.head = next;\n }\n if (node === this.tail) {\n this.tail = prev;\n }\n\n node.list.length--;\n node.next = null;\n node.prev = null;\n node.list = null;\n\n return next\n};\n\nYallist$1.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node);\n }\n\n var head = this.head;\n node.list = this;\n node.next = head;\n if (head) {\n head.prev = node;\n }\n\n this.head = node;\n if (!this.tail) {\n this.tail = node;\n }\n this.length++;\n};\n\nYallist$1.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node);\n }\n\n var tail = this.tail;\n node.list = this;\n node.prev = tail;\n if (tail) {\n tail.next = node;\n }\n\n this.tail = node;\n if (!this.head) {\n this.head = node;\n }\n this.length++;\n};\n\nYallist$1.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push$1(this, arguments[i]);\n }\n return this.length\n};\n\nYallist$1.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i]);\n }\n return this.length\n};\n\nYallist$1.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value;\n this.tail = this.tail.prev;\n if (this.tail) {\n this.tail.next = null;\n } else {\n this.head = null;\n }\n this.length--;\n return res\n};\n\nYallist$1.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value;\n this.head = this.head.next;\n if (this.head) {\n this.head.prev = null;\n } else {\n this.tail = null;\n }\n this.length--;\n return res\n};\n\nYallist$1.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this;\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this);\n walker = walker.next;\n }\n};\n\nYallist$1.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this;\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this);\n walker = walker.prev;\n }\n};\n\nYallist$1.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next;\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n};\n\nYallist$1.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev;\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n};\n\nYallist$1.prototype.map = function (fn, thisp) {\n thisp = thisp || this;\n var res = new Yallist$1();\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this));\n walker = walker.next;\n }\n return res\n};\n\nYallist$1.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this;\n var res = new Yallist$1();\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this));\n walker = walker.prev;\n }\n return res\n};\n\nYallist$1.prototype.reduce = function (fn, initial) {\n var acc;\n var walker = this.head;\n if (arguments.length > 1) {\n acc = initial;\n } else if (this.head) {\n walker = this.head.next;\n acc = this.head.value;\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i);\n walker = walker.next;\n }\n\n return acc\n};\n\nYallist$1.prototype.reduceReverse = function (fn, initial) {\n var acc;\n var walker = this.tail;\n if (arguments.length > 1) {\n acc = initial;\n } else if (this.tail) {\n walker = this.tail.prev;\n acc = this.tail.value;\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i);\n walker = walker.prev;\n }\n\n return acc\n};\n\nYallist$1.prototype.toArray = function () {\n var arr = new Array(this.length);\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value;\n walker = walker.next;\n }\n return arr\n};\n\nYallist$1.prototype.toArrayReverse = function () {\n var arr = new Array(this.length);\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value;\n walker = walker.prev;\n }\n return arr\n};\n\nYallist$1.prototype.slice = function (from, to) {\n to = to || this.length;\n if (to < 0) {\n to += this.length;\n }\n from = from || 0;\n if (from < 0) {\n from += this.length;\n }\n var ret = new Yallist$1();\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0;\n }\n if (to > this.length) {\n to = this.length;\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next;\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value);\n }\n return ret\n};\n\nYallist$1.prototype.sliceReverse = function (from, to) {\n to = to || this.length;\n if (to < 0) {\n to += this.length;\n }\n from = from || 0;\n if (from < 0) {\n from += this.length;\n }\n var ret = new Yallist$1();\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0;\n }\n if (to > this.length) {\n to = this.length;\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev;\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value);\n }\n return ret\n};\n\nYallist$1.prototype.splice = function (start, deleteCount, ...nodes) {\n if (start > this.length) {\n start = this.length - 1;\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next;\n }\n\n var ret = [];\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value);\n walker = this.removeNode(walker);\n }\n if (walker === null) {\n walker = this.tail;\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev;\n }\n\n for (var i = 0; i < nodes.length; i++) {\n walker = insert(this, walker, nodes[i]);\n }\n return ret;\n};\n\nYallist$1.prototype.reverse = function () {\n var head = this.head;\n var tail = this.tail;\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev;\n walker.prev = walker.next;\n walker.next = p;\n }\n this.head = tail;\n this.tail = head;\n return this\n};\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self);\n\n if (inserted.next === null) {\n self.tail = inserted;\n }\n if (inserted.prev === null) {\n self.head = inserted;\n }\n\n self.length++;\n\n return inserted\n}\n\nfunction push$1 (self, item) {\n self.tail = new Node(item, self.tail, null, self);\n if (!self.head) {\n self.head = self.tail;\n }\n self.length++;\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self);\n if (!self.tail) {\n self.tail = self.head;\n }\n self.length++;\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list;\n this.value = value;\n\n if (prev) {\n prev.next = this;\n this.prev = prev;\n } else {\n this.prev = null;\n }\n\n if (next) {\n next.prev = this;\n this.next = next;\n } else {\n this.next = null;\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n requireIterator()(Yallist$1);\n} catch (er) {}\n\n// A linked list to keep track of recently-used-ness\nconst Yallist = yallist;\n\nconst MAX = Symbol('max');\nconst LENGTH = Symbol('length');\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator');\nconst ALLOW_STALE = Symbol('allowStale');\nconst MAX_AGE = Symbol('maxAge');\nconst DISPOSE = Symbol('dispose');\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet');\nconst LRU_LIST = Symbol('lruList');\nconst CACHE = Symbol('cache');\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet');\n\nconst naiveLength = () => 1;\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest. the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node. This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n constructor (options) {\n if (typeof options === 'number')\n options = { max: options };\n\n if (!options)\n options = {};\n\n if (options.max && (typeof options.max !== 'number' || options.max < 0))\n throw new TypeError('max must be a non-negative number')\n // Kind of weird to have a default max of Infinity, but oh well.\n this[MAX] = options.max || Infinity;\n\n const lc = options.length || naiveLength;\n this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc;\n this[ALLOW_STALE] = options.stale || false;\n if (options.maxAge && typeof options.maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n this[MAX_AGE] = options.maxAge || 0;\n this[DISPOSE] = options.dispose;\n this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false;\n this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false;\n this.reset();\n }\n\n // resize the cache when the max changes.\n set max (mL) {\n if (typeof mL !== 'number' || mL < 0)\n throw new TypeError('max must be a non-negative number')\n\n this[MAX] = mL || Infinity;\n trim(this);\n }\n get max () {\n return this[MAX]\n }\n\n set allowStale (allowStale) {\n this[ALLOW_STALE] = !!allowStale;\n }\n get allowStale () {\n return this[ALLOW_STALE]\n }\n\n set maxAge (mA) {\n if (typeof mA !== 'number')\n throw new TypeError('maxAge must be a non-negative number')\n\n this[MAX_AGE] = mA;\n trim(this);\n }\n get maxAge () {\n return this[MAX_AGE]\n }\n\n // resize the cache when the lengthCalculator changes.\n set lengthCalculator (lC) {\n if (typeof lC !== 'function')\n lC = naiveLength;\n\n if (lC !== this[LENGTH_CALCULATOR]) {\n this[LENGTH_CALCULATOR] = lC;\n this[LENGTH] = 0;\n this[LRU_LIST].forEach(hit => {\n hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key);\n this[LENGTH] += hit.length;\n });\n }\n trim(this);\n }\n get lengthCalculator () { return this[LENGTH_CALCULATOR] }\n\n get length () { return this[LENGTH] }\n get itemCount () { return this[LRU_LIST].length }\n\n rforEach (fn, thisp) {\n thisp = thisp || this;\n for (let walker = this[LRU_LIST].tail; walker !== null;) {\n const prev = walker.prev;\n forEachStep(this, fn, walker, thisp);\n walker = prev;\n }\n }\n\n forEach (fn, thisp) {\n thisp = thisp || this;\n for (let walker = this[LRU_LIST].head; walker !== null;) {\n const next = walker.next;\n forEachStep(this, fn, walker, thisp);\n walker = next;\n }\n }\n\n keys () {\n return this[LRU_LIST].toArray().map(k => k.key)\n }\n\n values () {\n return this[LRU_LIST].toArray().map(k => k.value)\n }\n\n reset () {\n if (this[DISPOSE] &&\n this[LRU_LIST] &&\n this[LRU_LIST].length) {\n this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value));\n }\n\n this[CACHE] = new Map(); // hash of items by key\n this[LRU_LIST] = new Yallist(); // list of items in order of use recency\n this[LENGTH] = 0; // length of items in the list\n }\n\n dump () {\n return this[LRU_LIST].map(hit =>\n isStale(this, hit) ? false : {\n k: hit.key,\n v: hit.value,\n e: hit.now + (hit.maxAge || 0)\n }).toArray().filter(h => h)\n }\n\n dumpLru () {\n return this[LRU_LIST]\n }\n\n set (key, value, maxAge) {\n maxAge = maxAge || this[MAX_AGE];\n\n if (maxAge && typeof maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n\n const now = maxAge ? Date.now() : 0;\n const len = this[LENGTH_CALCULATOR](value, key);\n\n if (this[CACHE].has(key)) {\n if (len > this[MAX]) {\n del(this, this[CACHE].get(key));\n return false\n }\n\n const node = this[CACHE].get(key);\n const item = node.value;\n\n // dispose of the old one before overwriting\n // split out into 2 ifs for better coverage tracking\n if (this[DISPOSE]) {\n if (!this[NO_DISPOSE_ON_SET])\n this[DISPOSE](key, item.value);\n }\n\n item.now = now;\n item.maxAge = maxAge;\n item.value = value;\n this[LENGTH] += len - item.length;\n item.length = len;\n this.get(key);\n trim(this);\n return true\n }\n\n const hit = new Entry(key, value, len, now, maxAge);\n\n // oversized objects fall out of cache automatically.\n if (hit.length > this[MAX]) {\n if (this[DISPOSE])\n this[DISPOSE](key, value);\n\n return false\n }\n\n this[LENGTH] += hit.length;\n this[LRU_LIST].unshift(hit);\n this[CACHE].set(key, this[LRU_LIST].head);\n trim(this);\n return true\n }\n\n has (key) {\n if (!this[CACHE].has(key)) return false\n const hit = this[CACHE].get(key).value;\n return !isStale(this, hit)\n }\n\n get (key) {\n return get$1(this, key, true)\n }\n\n peek (key) {\n return get$1(this, key, false)\n }\n\n pop () {\n const node = this[LRU_LIST].tail;\n if (!node)\n return null\n\n del(this, node);\n return node.value\n }\n\n del (key) {\n del(this, this[CACHE].get(key));\n }\n\n load (arr) {\n // reset the cache\n this.reset();\n\n const now = Date.now();\n // A previous serialized cache has the most recent items first\n for (let l = arr.length - 1; l >= 0; l--) {\n const hit = arr[l];\n const expiresAt = hit.e || 0;\n if (expiresAt === 0)\n // the item was created without expiration in a non aged cache\n this.set(hit.k, hit.v);\n else {\n const maxAge = expiresAt - now;\n // dont add already expired items\n if (maxAge > 0) {\n this.set(hit.k, hit.v, maxAge);\n }\n }\n }\n }\n\n prune () {\n this[CACHE].forEach((value, key) => get$1(this, key, false));\n }\n}\n\nconst get$1 = (self, key, doUse) => {\n const node = self[CACHE].get(key);\n if (node) {\n const hit = node.value;\n if (isStale(self, hit)) {\n del(self, node);\n if (!self[ALLOW_STALE])\n return undefined\n } else {\n if (doUse) {\n if (self[UPDATE_AGE_ON_GET])\n node.value.now = Date.now();\n self[LRU_LIST].unshiftNode(node);\n }\n }\n return hit.value\n }\n};\n\nconst isStale = (self, hit) => {\n if (!hit || (!hit.maxAge && !self[MAX_AGE]))\n return false\n\n const diff = Date.now() - hit.now;\n return hit.maxAge ? diff > hit.maxAge\n : self[MAX_AGE] && (diff > self[MAX_AGE])\n};\n\nconst trim = self => {\n if (self[LENGTH] > self[MAX]) {\n for (let walker = self[LRU_LIST].tail;\n self[LENGTH] > self[MAX] && walker !== null;) {\n // We know that we're about to delete this one, and also\n // what the next least recently used key will be, so just\n // go ahead and set it now.\n const prev = walker.prev;\n del(self, walker);\n walker = prev;\n }\n }\n};\n\nconst del = (self, node) => {\n if (node) {\n const hit = node.value;\n if (self[DISPOSE])\n self[DISPOSE](hit.key, hit.value);\n\n self[LENGTH] -= hit.length;\n self[CACHE].delete(hit.key);\n self[LRU_LIST].removeNode(node);\n }\n};\n\nclass Entry {\n constructor (key, value, length, now, maxAge) {\n this.key = key;\n this.value = value;\n this.length = length;\n this.now = now;\n this.maxAge = maxAge || 0;\n }\n}\n\nconst forEachStep = (self, fn, node, thisp) => {\n let hit = node.value;\n if (isStale(self, hit)) {\n del(self, node);\n if (!self[ALLOW_STALE])\n hit = undefined;\n }\n if (hit)\n fn.call(thisp, hit.value, hit.key, self);\n};\n\nvar lruCache = LRUCache;\n\nconst DEFAULT_MAX$1 = 1000;\nconst DEFAULT_TTL$1 = 3600000;\nconst rawDocumentSymbol = Symbol('rawDocument');\nconst useValidationCache = (pluginOptions = {}) => {\n const resultCache = typeof pluginOptions.cache !== 'undefined'\n ? pluginOptions.cache\n : new lruCache({\n max: DEFAULT_MAX$1,\n maxAge: DEFAULT_TTL$1,\n });\n return {\n onSchemaChange() {\n var _a, _b;\n if (resultCache.reset) {\n (_a = resultCache.reset) === null || _a === void 0 ? void 0 : _a.call(resultCache);\n }\n else if ('clear' in resultCache) {\n (_b = resultCache.clear) === null || _b === void 0 ? void 0 : _b.call(resultCache);\n }\n },\n onParse({ params, extendContext }) {\n extendContext({ [rawDocumentSymbol]: params.source.toString() });\n },\n onValidate({ params, context, setResult }) {\n var _a;\n const key = (_a = context[rawDocumentSymbol]) !== null && _a !== void 0 ? _a : print(params.documentAST);\n const cachedResult = resultCache.get(key);\n if (cachedResult !== undefined) {\n setResult(cachedResult);\n }\n return ({ result }) => {\n resultCache.set(key, result);\n };\n },\n };\n};\n\nconst DEFAULT_MAX = 1000;\nconst DEFAULT_TTL = 3600000;\nconst useParserCache = (pluginOptions = {}) => {\n const documentCache = typeof pluginOptions.documentCache !== 'undefined'\n ? pluginOptions.documentCache\n : new lruCache({ max: DEFAULT_MAX, maxAge: DEFAULT_TTL });\n const errorCache = typeof pluginOptions.errorCache !== 'undefined'\n ? pluginOptions.errorCache\n : new lruCache({ max: DEFAULT_MAX, maxAge: DEFAULT_TTL });\n return {\n onParse({ params, setParsedDocument }) {\n const { source } = params;\n const key = source instanceof Source ? source.body : source;\n const cachedError = errorCache.get(key);\n if (cachedError !== undefined) {\n throw cachedError;\n }\n const cachedDocument = documentCache.get(key);\n if (cachedDocument !== undefined) {\n setParsedDocument(cachedDocument);\n }\n return ({ result }) => {\n if (result instanceof Error) {\n errorCache.set(key, result);\n }\n else if (result !== null) {\n documentCache.set(key, result);\n }\n };\n },\n };\n};\n\nconst asArray$1 = (fns) => (Array.isArray(fns) ? fns : fns ? [fns] : []);\nfunction compareStrings(a, b) {\n if (String(a) < String(b)) {\n return -1;\n }\n if (String(a) > String(b)) {\n return 1;\n }\n return 0;\n}\nfunction nodeToString(a) {\n var _a, _b;\n let name;\n if ('alias' in a) {\n name = (_a = a.alias) === null || _a === void 0 ? void 0 : _a.value;\n }\n if (name == null && 'name' in a) {\n name = (_b = a.name) === null || _b === void 0 ? void 0 : _b.value;\n }\n if (name == null) {\n name = a.kind;\n }\n return name;\n}\nfunction compareNodes(a, b, customFn) {\n const aStr = nodeToString(a);\n const bStr = nodeToString(b);\n if (typeof customFn === 'function') {\n return customFn(aStr, bStr);\n }\n return compareStrings(aStr, bStr);\n}\nfunction isSome(input) {\n return input != null;\n}\n\nfunction createGraphQLError(message, options) {\n if (versionInfo.major >= 17) {\n return new GraphQLError(message, options);\n }\n return new GraphQLError(message, options === null || options === void 0 ? void 0 : options.nodes, options === null || options === void 0 ? void 0 : options.source, options === null || options === void 0 ? void 0 : options.positions, options === null || options === void 0 ? void 0 : options.path, options === null || options === void 0 ? void 0 : options.originalError, options === null || options === void 0 ? void 0 : options.extensions);\n}\n\nlet AggregateErrorImpl;\nif (typeof AggregateError === 'undefined') {\n class AggregateErrorClass extends Error {\n constructor(errors, message = '') {\n super(message);\n this.errors = errors;\n this.name = 'AggregateError';\n Error.captureStackTrace(this, AggregateErrorClass);\n }\n }\n AggregateErrorImpl = function (errors, message) {\n return new AggregateErrorClass(errors, message);\n };\n}\nelse {\n AggregateErrorImpl = AggregateError;\n}\nfunction isAggregateError$1(error) {\n return 'errors' in error && Array.isArray(error['errors']);\n}\n\n// Taken from graphql-js\nconst MAX_RECURSIVE_DEPTH = 3;\n/**\n * Used to print values in error messages.\n */\nfunction inspect(value) {\n return formatValue(value, []);\n}\nfunction formatValue(value, seenValues) {\n switch (typeof value) {\n case 'string':\n return JSON.stringify(value);\n case 'function':\n return value.name ? `[function ${value.name}]` : '[function]';\n case 'object':\n return formatObjectValue(value, seenValues);\n default:\n return String(value);\n }\n}\nfunction formatError(value) {\n if (value instanceof GraphQLError) {\n return value.toString();\n }\n return `${value.name}: ${value.message};\\n ${value.stack}`;\n}\nfunction formatObjectValue(value, previouslySeenValues) {\n if (value === null) {\n return 'null';\n }\n if (value instanceof Error) {\n if (isAggregateError$1(value)) {\n return formatError(value) + '\\n' + formatArray(value.errors, previouslySeenValues);\n }\n return formatError(value);\n }\n if (previouslySeenValues.includes(value)) {\n return '[Circular]';\n }\n const seenValues = [...previouslySeenValues, value];\n if (isJSONable(value)) {\n const jsonValue = value.toJSON();\n // check for infinite recursion\n if (jsonValue !== value) {\n return typeof jsonValue === 'string' ? jsonValue : formatValue(jsonValue, seenValues);\n }\n }\n else if (Array.isArray(value)) {\n return formatArray(value, seenValues);\n }\n return formatObject(value, seenValues);\n}\nfunction isJSONable(value) {\n return typeof value.toJSON === 'function';\n}\nfunction formatObject(object, seenValues) {\n const entries = Object.entries(object);\n if (entries.length === 0) {\n return '{}';\n }\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[' + getObjectTag(object) + ']';\n }\n const properties = entries.map(([key, value]) => key + ': ' + formatValue(value, seenValues));\n return '{ ' + properties.join(', ') + ' }';\n}\nfunction formatArray(array, seenValues) {\n if (array.length === 0) {\n return '[]';\n }\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[Array]';\n }\n const len = array.length;\n const remaining = array.length;\n const items = [];\n for (let i = 0; i < len; ++i) {\n items.push(formatValue(array[i], seenValues));\n }\n if (remaining === 1) {\n items.push('... 1 more item');\n }\n else if (remaining > 1) {\n items.push(`... ${remaining} more items`);\n }\n return '[' + items.join(', ') + ']';\n}\nfunction getObjectTag(object) {\n const tag = Object.prototype.toString\n .call(object)\n .replace(/^\\[object /, '')\n .replace(/]$/, '');\n if (tag === 'Object' && typeof object.constructor === 'function') {\n const name = object.constructor.name;\n if (typeof name === 'string' && name !== '') {\n return name;\n }\n }\n return tag;\n}\n\nfunction getDirectivesInExtensions(node, pathToDirectivesInExtensions = ['directives']) {\n return pathToDirectivesInExtensions.reduce((acc, pathSegment) => (acc == null ? acc : acc[pathSegment]), node === null || node === void 0 ? void 0 : node.extensions);\n}\n\nfunction astFromType(type) {\n if (isNonNullType(type)) {\n const innerType = astFromType(type.ofType);\n if (innerType.kind === Kind.NON_NULL_TYPE) {\n throw new Error(`Invalid type node ${inspect(type)}. Inner type of non-null type cannot be a non-null type.`);\n }\n return {\n kind: Kind.NON_NULL_TYPE,\n type: innerType,\n };\n }\n else if (isListType(type)) {\n return {\n kind: Kind.LIST_TYPE,\n type: astFromType(type.ofType),\n };\n }\n return {\n kind: Kind.NAMED_TYPE,\n name: {\n kind: Kind.NAME,\n value: type.name,\n },\n };\n}\n\n/**\n * Produces a GraphQL Value AST given a JavaScript object.\n * Function will match JavaScript/JSON values to GraphQL AST schema format\n * by using the following mapping.\n *\n * | JSON Value | GraphQL Value |\n * | ------------- | -------------------- |\n * | Object | Input Object |\n * | Array | List |\n * | Boolean | Boolean |\n * | String | String |\n * | Number | Int / Float |\n * | null | NullValue |\n *\n */\nfunction astFromValueUntyped(value) {\n // only explicit null, not undefined, NaN\n if (value === null) {\n return { kind: Kind.NULL };\n }\n // undefined\n if (value === undefined) {\n return null;\n }\n // Convert JavaScript array to GraphQL list. If the GraphQLType is a list, but\n // the value is not an array, convert the value using the list's item type.\n if (Array.isArray(value)) {\n const valuesNodes = [];\n for (const item of value) {\n const itemNode = astFromValueUntyped(item);\n if (itemNode != null) {\n valuesNodes.push(itemNode);\n }\n }\n return { kind: Kind.LIST, values: valuesNodes };\n }\n if (typeof value === 'object') {\n const fieldNodes = [];\n for (const fieldName in value) {\n const fieldValue = value[fieldName];\n const ast = astFromValueUntyped(fieldValue);\n if (ast) {\n fieldNodes.push({\n kind: Kind.OBJECT_FIELD,\n name: { kind: Kind.NAME, value: fieldName },\n value: ast,\n });\n }\n }\n return { kind: Kind.OBJECT, fields: fieldNodes };\n }\n // Others serialize based on their corresponding JavaScript scalar types.\n if (typeof value === 'boolean') {\n return { kind: Kind.BOOLEAN, value };\n }\n // JavaScript numbers can be Int or Float values.\n if (typeof value === 'number' && isFinite(value)) {\n const stringNum = String(value);\n return integerStringRegExp.test(stringNum)\n ? { kind: Kind.INT, value: stringNum }\n : { kind: Kind.FLOAT, value: stringNum };\n }\n if (typeof value === 'string') {\n return { kind: Kind.STRING, value };\n }\n throw new TypeError(`Cannot convert value to AST: ${value}.`);\n}\n/**\n * IntValue:\n * - NegativeSign? 0\n * - NegativeSign? NonZeroDigit ( Digit+ )?\n */\nconst integerStringRegExp = /^-?(?:0|[1-9][0-9]*)$/;\n\nfunction memoize1(fn) {\n const memoize1cache = new WeakMap();\n return function memoized(a1) {\n const cachedValue = memoize1cache.get(a1);\n if (cachedValue === undefined) {\n const newValue = fn(a1);\n memoize1cache.set(a1, newValue);\n return newValue;\n }\n return cachedValue;\n };\n}\n\nconst getRootTypeMap = memoize1(function getRootTypeMap(schema) {\n const rootTypeMap = new Map();\n const queryType = schema.getQueryType();\n if (queryType) {\n rootTypeMap.set('query', queryType);\n }\n const mutationType = schema.getMutationType();\n if (mutationType) {\n rootTypeMap.set('mutation', mutationType);\n }\n const subscriptionType = schema.getSubscriptionType();\n if (subscriptionType) {\n rootTypeMap.set('subscription', subscriptionType);\n }\n return rootTypeMap;\n});\n\nfunction getDocumentNodeFromSchema(schema, options = {}) {\n const pathToDirectivesInExtensions = options.pathToDirectivesInExtensions;\n const typesMap = schema.getTypeMap();\n const schemaNode = astFromSchema(schema, pathToDirectivesInExtensions);\n const definitions = schemaNode != null ? [schemaNode] : [];\n const directives = schema.getDirectives();\n for (const directive of directives) {\n if (isSpecifiedDirective(directive)) {\n continue;\n }\n definitions.push(astFromDirective(directive, schema, pathToDirectivesInExtensions));\n }\n for (const typeName in typesMap) {\n const type = typesMap[typeName];\n const isPredefinedScalar = isSpecifiedScalarType(type);\n const isIntrospection = isIntrospectionType(type);\n if (isPredefinedScalar || isIntrospection) {\n continue;\n }\n if (isObjectType(type)) {\n definitions.push(astFromObjectType(type, schema, pathToDirectivesInExtensions));\n }\n else if (isInterfaceType(type)) {\n definitions.push(astFromInterfaceType(type, schema, pathToDirectivesInExtensions));\n }\n else if (isUnionType(type)) {\n definitions.push(astFromUnionType(type, schema, pathToDirectivesInExtensions));\n }\n else if (isInputObjectType(type)) {\n definitions.push(astFromInputObjectType(type, schema, pathToDirectivesInExtensions));\n }\n else if (isEnumType(type)) {\n definitions.push(astFromEnumType(type, schema, pathToDirectivesInExtensions));\n }\n else if (isScalarType(type)) {\n definitions.push(astFromScalarType(type, schema, pathToDirectivesInExtensions));\n }\n else {\n throw new Error(`Unknown type ${type}.`);\n }\n }\n return {\n kind: Kind.DOCUMENT,\n definitions,\n };\n}\nfunction astFromSchema(schema, pathToDirectivesInExtensions) {\n var _a, _b;\n const operationTypeMap = new Map([\n ['query', undefined],\n ['mutation', undefined],\n ['subscription', undefined],\n ]);\n const nodes = [];\n if (schema.astNode != null) {\n nodes.push(schema.astNode);\n }\n if (schema.extensionASTNodes != null) {\n for (const extensionASTNode of schema.extensionASTNodes) {\n nodes.push(extensionASTNode);\n }\n }\n for (const node of nodes) {\n if (node.operationTypes) {\n for (const operationTypeDefinitionNode of node.operationTypes) {\n operationTypeMap.set(operationTypeDefinitionNode.operation, operationTypeDefinitionNode);\n }\n }\n }\n const rootTypeMap = getRootTypeMap(schema);\n for (const [operationTypeNode, operationTypeDefinitionNode] of operationTypeMap) {\n const rootType = rootTypeMap.get(operationTypeNode);\n if (rootType != null) {\n const rootTypeAST = astFromType(rootType);\n if (operationTypeDefinitionNode != null) {\n operationTypeDefinitionNode.type = rootTypeAST;\n }\n else {\n operationTypeMap.set(operationTypeNode, {\n kind: Kind.OPERATION_TYPE_DEFINITION,\n operation: operationTypeNode,\n type: rootTypeAST,\n });\n }\n }\n }\n const operationTypes = [...operationTypeMap.values()].filter(isSome);\n const directives = getDirectiveNodes(schema, schema, pathToDirectivesInExtensions);\n if (!operationTypes.length && !directives.length) {\n return null;\n }\n const schemaNode = {\n kind: operationTypes != null ? Kind.SCHEMA_DEFINITION : Kind.SCHEMA_EXTENSION,\n operationTypes,\n // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility\n directives: directives,\n };\n // This code is so weird because it needs to support GraphQL.js 14\n // In GraphQL.js 14 there is no `description` value on schemaNode\n schemaNode.description =\n ((_b = (_a = schema.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : schema.description != null)\n ? {\n kind: Kind.STRING,\n value: schema.description,\n block: true,\n }\n : undefined;\n return schemaNode;\n}\nfunction astFromDirective(directive, schema, pathToDirectivesInExtensions) {\n var _a, _b, _c, _d;\n return {\n kind: Kind.DIRECTIVE_DEFINITION,\n description: (_b = (_a = directive.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (directive.description\n ? {\n kind: Kind.STRING,\n value: directive.description,\n }\n : undefined),\n name: {\n kind: Kind.NAME,\n value: directive.name,\n },\n arguments: (_c = directive.args) === null || _c === void 0 ? void 0 : _c.map(arg => astFromArg(arg, schema, pathToDirectivesInExtensions)),\n repeatable: directive.isRepeatable,\n locations: ((_d = directive.locations) === null || _d === void 0 ? void 0 : _d.map(location => ({\n kind: Kind.NAME,\n value: location,\n }))) || [],\n };\n}\nfunction getDirectiveNodes(entity, schema, pathToDirectivesInExtensions) {\n const directivesInExtensions = getDirectivesInExtensions(entity, pathToDirectivesInExtensions);\n let nodes = [];\n if (entity.astNode != null) {\n nodes.push(entity.astNode);\n }\n if ('extensionASTNodes' in entity && entity.extensionASTNodes != null) {\n nodes = nodes.concat(entity.extensionASTNodes);\n }\n let directives;\n if (directivesInExtensions != null) {\n directives = makeDirectiveNodes(schema, directivesInExtensions);\n }\n else {\n directives = [];\n for (const node of nodes) {\n if (node.directives) {\n directives.push(...node.directives);\n }\n }\n }\n return directives;\n}\nfunction getDeprecatableDirectiveNodes(entity, schema, pathToDirectivesInExtensions) {\n var _a, _b;\n let directiveNodesBesidesDeprecated = [];\n let deprecatedDirectiveNode = null;\n const directivesInExtensions = getDirectivesInExtensions(entity, pathToDirectivesInExtensions);\n let directives;\n if (directivesInExtensions != null) {\n directives = makeDirectiveNodes(schema, directivesInExtensions);\n }\n else {\n directives = (_a = entity.astNode) === null || _a === void 0 ? void 0 : _a.directives;\n }\n if (directives != null) {\n directiveNodesBesidesDeprecated = directives.filter(directive => directive.name.value !== 'deprecated');\n if (entity.deprecationReason != null) {\n deprecatedDirectiveNode = (_b = directives.filter(directive => directive.name.value === 'deprecated')) === null || _b === void 0 ? void 0 : _b[0];\n }\n }\n if (entity.deprecationReason != null &&\n deprecatedDirectiveNode == null) {\n deprecatedDirectiveNode = makeDeprecatedDirective(entity.deprecationReason);\n }\n return deprecatedDirectiveNode == null\n ? directiveNodesBesidesDeprecated\n : [deprecatedDirectiveNode].concat(directiveNodesBesidesDeprecated);\n}\nfunction astFromArg(arg, schema, pathToDirectivesInExtensions) {\n var _a, _b, _c;\n return {\n kind: Kind.INPUT_VALUE_DEFINITION,\n description: (_b = (_a = arg.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (arg.description\n ? {\n kind: Kind.STRING,\n value: arg.description,\n block: true,\n }\n : undefined),\n name: {\n kind: Kind.NAME,\n value: arg.name,\n },\n type: astFromType(arg.type),\n // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility\n defaultValue: arg.defaultValue !== undefined ? (_c = astFromValue(arg.defaultValue, arg.type)) !== null && _c !== void 0 ? _c : undefined : undefined,\n directives: getDeprecatableDirectiveNodes(arg, schema, pathToDirectivesInExtensions),\n };\n}\nfunction astFromObjectType(type, schema, pathToDirectivesInExtensions) {\n var _a, _b;\n return {\n kind: Kind.OBJECT_TYPE_DEFINITION,\n description: (_b = (_a = type.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (type.description\n ? {\n kind: Kind.STRING,\n value: type.description,\n block: true,\n }\n : undefined),\n name: {\n kind: Kind.NAME,\n value: type.name,\n },\n fields: Object.values(type.getFields()).map(field => astFromField(field, schema, pathToDirectivesInExtensions)),\n interfaces: Object.values(type.getInterfaces()).map(iFace => astFromType(iFace)),\n directives: getDirectiveNodes(type, schema, pathToDirectivesInExtensions),\n };\n}\nfunction astFromInterfaceType(type, schema, pathToDirectivesInExtensions) {\n var _a, _b;\n const node = {\n kind: Kind.INTERFACE_TYPE_DEFINITION,\n description: (_b = (_a = type.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (type.description\n ? {\n kind: Kind.STRING,\n value: type.description,\n block: true,\n }\n : undefined),\n name: {\n kind: Kind.NAME,\n value: type.name,\n },\n fields: Object.values(type.getFields()).map(field => astFromField(field, schema, pathToDirectivesInExtensions)),\n directives: getDirectiveNodes(type, schema, pathToDirectivesInExtensions),\n };\n if ('getInterfaces' in type) {\n node.interfaces = Object.values(type.getInterfaces()).map(iFace => astFromType(iFace));\n }\n return node;\n}\nfunction astFromUnionType(type, schema, pathToDirectivesInExtensions) {\n var _a, _b;\n return {\n kind: Kind.UNION_TYPE_DEFINITION,\n description: (_b = (_a = type.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (type.description\n ? {\n kind: Kind.STRING,\n value: type.description,\n block: true,\n }\n : undefined),\n name: {\n kind: Kind.NAME,\n value: type.name,\n },\n // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility\n directives: getDirectiveNodes(type, schema, pathToDirectivesInExtensions),\n types: type.getTypes().map(type => astFromType(type)),\n };\n}\nfunction astFromInputObjectType(type, schema, pathToDirectivesInExtensions) {\n var _a, _b;\n return {\n kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,\n description: (_b = (_a = type.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (type.description\n ? {\n kind: Kind.STRING,\n value: type.description,\n block: true,\n }\n : undefined),\n name: {\n kind: Kind.NAME,\n value: type.name,\n },\n fields: Object.values(type.getFields()).map(field => astFromInputField(field, schema, pathToDirectivesInExtensions)),\n // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility\n directives: getDirectiveNodes(type, schema, pathToDirectivesInExtensions),\n };\n}\nfunction astFromEnumType(type, schema, pathToDirectivesInExtensions) {\n var _a, _b;\n return {\n kind: Kind.ENUM_TYPE_DEFINITION,\n description: (_b = (_a = type.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (type.description\n ? {\n kind: Kind.STRING,\n value: type.description,\n block: true,\n }\n : undefined),\n name: {\n kind: Kind.NAME,\n value: type.name,\n },\n values: Object.values(type.getValues()).map(value => astFromEnumValue(value, schema, pathToDirectivesInExtensions)),\n // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility\n directives: getDirectiveNodes(type, schema, pathToDirectivesInExtensions),\n };\n}\nfunction astFromScalarType(type, schema, pathToDirectivesInExtensions) {\n var _a, _b, _c;\n const directivesInExtensions = getDirectivesInExtensions(type, pathToDirectivesInExtensions);\n const directives = directivesInExtensions\n ? makeDirectiveNodes(schema, directivesInExtensions)\n : ((_a = type.astNode) === null || _a === void 0 ? void 0 : _a.directives) || [];\n const specifiedByValue = (type['specifiedByUrl'] || type['specifiedByURL']);\n if (specifiedByValue && !directives.some(directiveNode => directiveNode.name.value === 'specifiedBy')) {\n const specifiedByArgs = {\n url: specifiedByValue,\n };\n directives.push(makeDirectiveNode('specifiedBy', specifiedByArgs));\n }\n return {\n kind: Kind.SCALAR_TYPE_DEFINITION,\n description: (_c = (_b = type.astNode) === null || _b === void 0 ? void 0 : _b.description) !== null && _c !== void 0 ? _c : (type.description\n ? {\n kind: Kind.STRING,\n value: type.description,\n block: true,\n }\n : undefined),\n name: {\n kind: Kind.NAME,\n value: type.name,\n },\n // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility\n directives: directives,\n };\n}\nfunction astFromField(field, schema, pathToDirectivesInExtensions) {\n var _a, _b;\n return {\n kind: Kind.FIELD_DEFINITION,\n description: (_b = (_a = field.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (field.description\n ? {\n kind: Kind.STRING,\n value: field.description,\n block: true,\n }\n : undefined),\n name: {\n kind: Kind.NAME,\n value: field.name,\n },\n arguments: field.args.map(arg => astFromArg(arg, schema, pathToDirectivesInExtensions)),\n type: astFromType(field.type),\n // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility\n directives: getDeprecatableDirectiveNodes(field, schema, pathToDirectivesInExtensions),\n };\n}\nfunction astFromInputField(field, schema, pathToDirectivesInExtensions) {\n var _a, _b, _c;\n return {\n kind: Kind.INPUT_VALUE_DEFINITION,\n description: (_b = (_a = field.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (field.description\n ? {\n kind: Kind.STRING,\n value: field.description,\n block: true,\n }\n : undefined),\n name: {\n kind: Kind.NAME,\n value: field.name,\n },\n type: astFromType(field.type),\n // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility\n directives: getDeprecatableDirectiveNodes(field, schema, pathToDirectivesInExtensions),\n defaultValue: (_c = astFromValue(field.defaultValue, field.type)) !== null && _c !== void 0 ? _c : undefined,\n };\n}\nfunction astFromEnumValue(value, schema, pathToDirectivesInExtensions) {\n var _a, _b;\n return {\n kind: Kind.ENUM_VALUE_DEFINITION,\n description: (_b = (_a = value.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (value.description\n ? {\n kind: Kind.STRING,\n value: value.description,\n block: true,\n }\n : undefined),\n name: {\n kind: Kind.NAME,\n value: value.name,\n },\n // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility\n directives: getDeprecatableDirectiveNodes(value, schema, pathToDirectivesInExtensions),\n };\n}\nfunction makeDeprecatedDirective(deprecationReason) {\n return makeDirectiveNode('deprecated', { reason: deprecationReason }, GraphQLDeprecatedDirective);\n}\nfunction makeDirectiveNode(name, args, directive) {\n const directiveArguments = [];\n if (directive != null) {\n for (const arg of directive.args) {\n const argName = arg.name;\n const argValue = args[argName];\n if (argValue !== undefined) {\n const value = astFromValue(argValue, arg.type);\n if (value) {\n directiveArguments.push({\n kind: Kind.ARGUMENT,\n name: {\n kind: Kind.NAME,\n value: argName,\n },\n value,\n });\n }\n }\n }\n }\n else {\n for (const argName in args) {\n const argValue = args[argName];\n const value = astFromValueUntyped(argValue);\n if (value) {\n directiveArguments.push({\n kind: Kind.ARGUMENT,\n name: {\n kind: Kind.NAME,\n value: argName,\n },\n value,\n });\n }\n }\n }\n return {\n kind: Kind.DIRECTIVE,\n name: {\n kind: Kind.NAME,\n value: name,\n },\n arguments: directiveArguments,\n };\n}\nfunction makeDirectiveNodes(schema, directiveValues) {\n const directiveNodes = [];\n for (const directiveName in directiveValues) {\n const arrayOrSingleValue = directiveValues[directiveName];\n const directive = schema === null || schema === void 0 ? void 0 : schema.getDirective(directiveName);\n if (Array.isArray(arrayOrSingleValue)) {\n for (const value of arrayOrSingleValue) {\n directiveNodes.push(makeDirectiveNode(directiveName, value, directive));\n }\n }\n else {\n directiveNodes.push(makeDirectiveNode(directiveName, arrayOrSingleValue, directive));\n }\n }\n return directiveNodes;\n}\n\nconst MAX_LINE_LENGTH = 80;\nlet commentsRegistry = {};\nfunction resetComments() {\n commentsRegistry = {};\n}\nfunction collectComment(node) {\n var _a;\n const entityName = (_a = node.name) === null || _a === void 0 ? void 0 : _a.value;\n if (entityName == null) {\n return;\n }\n pushComment(node, entityName);\n switch (node.kind) {\n case 'EnumTypeDefinition':\n if (node.values) {\n for (const value of node.values) {\n pushComment(value, entityName, value.name.value);\n }\n }\n break;\n case 'ObjectTypeDefinition':\n case 'InputObjectTypeDefinition':\n case 'InterfaceTypeDefinition':\n if (node.fields) {\n for (const field of node.fields) {\n pushComment(field, entityName, field.name.value);\n if (isFieldDefinitionNode(field) && field.arguments) {\n for (const arg of field.arguments) {\n pushComment(arg, entityName, field.name.value, arg.name.value);\n }\n }\n }\n }\n break;\n }\n}\nfunction pushComment(node, entity, field, argument) {\n const comment = getComment(node);\n if (typeof comment !== 'string' || comment.length === 0) {\n return;\n }\n const keys = [entity];\n if (field) {\n keys.push(field);\n if (argument) {\n keys.push(argument);\n }\n }\n const path = keys.join('.');\n if (!commentsRegistry[path]) {\n commentsRegistry[path] = [];\n }\n commentsRegistry[path].push(comment);\n}\nfunction printComment(comment) {\n return '\\n# ' + comment.replace(/\\n/g, '\\n# ');\n}\n/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/**\n * NOTE: ==> This file has been modified just to add comments to the printed AST\n * This is a temp measure, we will move to using the original non modified printer.js ASAP.\n */\n/**\n * Given maybeArray, print an empty string if it is null or empty, otherwise\n * print all items together separated by separator if provided\n */\nfunction join(maybeArray, separator) {\n return maybeArray ? maybeArray.filter(x => x).join(separator || '') : '';\n}\nfunction hasMultilineItems(maybeArray) {\n var _a;\n return (_a = maybeArray === null || maybeArray === void 0 ? void 0 : maybeArray.some(str => str.includes('\\n'))) !== null && _a !== void 0 ? _a : false;\n}\nfunction addDescription(cb) {\n return (node, _key, _parent, path, ancestors) => {\n var _a;\n const keys = [];\n const parent = path.reduce((prev, key) => {\n if (['fields', 'arguments', 'values'].includes(key) && prev.name) {\n keys.push(prev.name.value);\n }\n return prev[key];\n }, ancestors[0]);\n const key = [...keys, (_a = parent === null || parent === void 0 ? void 0 : parent.name) === null || _a === void 0 ? void 0 : _a.value].filter(Boolean).join('.');\n const items = [];\n if (node.kind.includes('Definition') && commentsRegistry[key]) {\n items.push(...commentsRegistry[key]);\n }\n return join([...items.map(printComment), node.description, cb(node, _key, _parent, path, ancestors)], '\\n');\n };\n}\nfunction indent(maybeString) {\n return maybeString && ` ${maybeString.replace(/\\n/g, '\\n ')}`;\n}\n/**\n * Given array, print each item on its own line, wrapped in an\n * indented \"{ }\" block.\n */\nfunction block(array) {\n return array && array.length !== 0 ? `{\\n${indent(join(array, '\\n'))}\\n}` : '';\n}\n/**\n * If maybeString is not null or empty, then wrap with start and end, otherwise\n * print an empty string.\n */\nfunction wrap(start, maybeString, end) {\n return maybeString ? start + maybeString + (end || '') : '';\n}\n/**\n * Print a block string in the indented block form by adding a leading and\n * trailing blank line. However, if a block string starts with whitespace and is\n * a single-line, adding a leading blank line would strip that whitespace.\n */\nfunction printBlockString(value, isDescription = false) {\n const escaped = value.replace(/\"\"\"/g, '\\\\\"\"\"');\n return (value[0] === ' ' || value[0] === '\\t') && value.indexOf('\\n') === -1\n ? `\"\"\"${escaped.replace(/\"$/, '\"\\n')}\"\"\"`\n : `\"\"\"\\n${isDescription ? escaped : indent(escaped)}\\n\"\"\"`;\n}\nconst printDocASTReducer = {\n Name: { leave: node => node.value },\n Variable: { leave: node => '$' + node.name },\n // Document\n Document: {\n leave: node => join(node.definitions, '\\n\\n'),\n },\n OperationDefinition: {\n leave: node => {\n const varDefs = wrap('(', join(node.variableDefinitions, ', '), ')');\n const prefix = join([node.operation, join([node.name, varDefs]), join(node.directives, ' ')], ' ');\n // the query short form.\n return prefix + ' ' + node.selectionSet;\n },\n },\n VariableDefinition: {\n leave: ({ variable, type, defaultValue, directives }) => variable + ': ' + type + wrap(' = ', defaultValue) + wrap(' ', join(directives, ' ')),\n },\n SelectionSet: { leave: ({ selections }) => block(selections) },\n Field: {\n leave({ alias, name, arguments: args, directives, selectionSet }) {\n const prefix = wrap('', alias, ': ') + name;\n let argsLine = prefix + wrap('(', join(args, ', '), ')');\n if (argsLine.length > MAX_LINE_LENGTH) {\n argsLine = prefix + wrap('(\\n', indent(join(args, '\\n')), '\\n)');\n }\n return join([argsLine, join(directives, ' '), selectionSet], ' ');\n },\n },\n Argument: { leave: ({ name, value }) => name + ': ' + value },\n // Fragments\n FragmentSpread: {\n leave: ({ name, directives }) => '...' + name + wrap(' ', join(directives, ' ')),\n },\n InlineFragment: {\n leave: ({ typeCondition, directives, selectionSet }) => join(['...', wrap('on ', typeCondition), join(directives, ' '), selectionSet], ' '),\n },\n FragmentDefinition: {\n leave: ({ name, typeCondition, variableDefinitions, directives, selectionSet }) => \n // Note: fragment variable definitions are experimental and may be changed\n // or removed in the future.\n `fragment ${name}${wrap('(', join(variableDefinitions, ', '), ')')} ` +\n `on ${typeCondition} ${wrap('', join(directives, ' '), ' ')}` +\n selectionSet,\n },\n // Value\n IntValue: { leave: ({ value }) => value },\n FloatValue: { leave: ({ value }) => value },\n StringValue: {\n leave: ({ value, block: isBlockString }) => {\n if (isBlockString) {\n return printBlockString(value);\n }\n return JSON.stringify(value);\n },\n },\n BooleanValue: { leave: ({ value }) => (value ? 'true' : 'false') },\n NullValue: { leave: () => 'null' },\n EnumValue: { leave: ({ value }) => value },\n ListValue: { leave: ({ values }) => '[' + join(values, ', ') + ']' },\n ObjectValue: { leave: ({ fields }) => '{' + join(fields, ', ') + '}' },\n ObjectField: { leave: ({ name, value }) => name + ': ' + value },\n // Directive\n Directive: {\n leave: ({ name, arguments: args }) => '@' + name + wrap('(', join(args, ', '), ')'),\n },\n // Type\n NamedType: { leave: ({ name }) => name },\n ListType: { leave: ({ type }) => '[' + type + ']' },\n NonNullType: { leave: ({ type }) => type + '!' },\n // Type System Definitions\n SchemaDefinition: {\n leave: ({ directives, operationTypes }) => join(['schema', join(directives, ' '), block(operationTypes)], ' '),\n },\n OperationTypeDefinition: {\n leave: ({ operation, type }) => operation + ': ' + type,\n },\n ScalarTypeDefinition: {\n leave: ({ name, directives }) => join(['scalar', name, join(directives, ' ')], ' '),\n },\n ObjectTypeDefinition: {\n leave: ({ name, interfaces, directives, fields }) => join(['type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' '),\n },\n FieldDefinition: {\n leave: ({ name, arguments: args, type, directives }) => name +\n (hasMultilineItems(args)\n ? wrap('(\\n', indent(join(args, '\\n')), '\\n)')\n : wrap('(', join(args, ', '), ')')) +\n ': ' +\n type +\n wrap(' ', join(directives, ' ')),\n },\n InputValueDefinition: {\n leave: ({ name, type, defaultValue, directives }) => join([name + ': ' + type, wrap('= ', defaultValue), join(directives, ' ')], ' '),\n },\n InterfaceTypeDefinition: {\n leave: ({ name, interfaces, directives, fields }) => join(['interface', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' '),\n },\n UnionTypeDefinition: {\n leave: ({ name, directives, types }) => join(['union', name, join(directives, ' '), wrap('= ', join(types, ' | '))], ' '),\n },\n EnumTypeDefinition: {\n leave: ({ name, directives, values }) => join(['enum', name, join(directives, ' '), block(values)], ' '),\n },\n EnumValueDefinition: {\n leave: ({ name, directives }) => join([name, join(directives, ' ')], ' '),\n },\n InputObjectTypeDefinition: {\n leave: ({ name, directives, fields }) => join(['input', name, join(directives, ' '), block(fields)], ' '),\n },\n DirectiveDefinition: {\n leave: ({ name, arguments: args, repeatable, locations }) => 'directive @' +\n name +\n (hasMultilineItems(args)\n ? wrap('(\\n', indent(join(args, '\\n')), '\\n)')\n : wrap('(', join(args, ', '), ')')) +\n (repeatable ? ' repeatable' : '') +\n ' on ' +\n join(locations, ' | '),\n },\n SchemaExtension: {\n leave: ({ directives, operationTypes }) => join(['extend schema', join(directives, ' '), block(operationTypes)], ' '),\n },\n ScalarTypeExtension: {\n leave: ({ name, directives }) => join(['extend scalar', name, join(directives, ' ')], ' '),\n },\n ObjectTypeExtension: {\n leave: ({ name, interfaces, directives, fields }) => join(['extend type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' '),\n },\n InterfaceTypeExtension: {\n leave: ({ name, interfaces, directives, fields }) => join(['extend interface', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' '),\n },\n UnionTypeExtension: {\n leave: ({ name, directives, types }) => join(['extend union', name, join(directives, ' '), wrap('= ', join(types, ' | '))], ' '),\n },\n EnumTypeExtension: {\n leave: ({ name, directives, values }) => join(['extend enum', name, join(directives, ' '), block(values)], ' '),\n },\n InputObjectTypeExtension: {\n leave: ({ name, directives, fields }) => join(['extend input', name, join(directives, ' '), block(fields)], ' '),\n },\n};\nconst printDocASTReducerWithComments = Object.keys(printDocASTReducer).reduce((prev, key) => ({\n ...prev,\n [key]: {\n leave: addDescription(printDocASTReducer[key].leave),\n },\n}), {});\n/**\n * Converts an AST into a string, using one set of reasonable\n * formatting rules.\n */\nfunction printWithComments(ast) {\n return visit(ast, printDocASTReducerWithComments);\n}\nfunction isFieldDefinitionNode(node) {\n return node.kind === 'FieldDefinition';\n}\nfunction getComment(node) {\n const rawValue = getLeadingCommentBlock(node);\n if (rawValue !== undefined) {\n return dedentBlockStringValue(`\\n${rawValue}`);\n }\n}\nfunction getLeadingCommentBlock(node) {\n const loc = node.loc;\n if (!loc) {\n return;\n }\n const comments = [];\n let token = loc.startToken.prev;\n while (token != null &&\n token.kind === TokenKind.COMMENT &&\n token.next != null &&\n token.prev != null &&\n token.line + 1 === token.next.line &&\n token.line !== token.prev.line) {\n const value = String(token.value);\n comments.push(value);\n token = token.prev;\n }\n return comments.length > 0 ? comments.reverse().join('\\n') : undefined;\n}\nfunction dedentBlockStringValue(rawString) {\n // Expand a block string's raw value into independent lines.\n const lines = rawString.split(/\\r\\n|[\\n\\r]/g);\n // Remove common indentation from all lines but first.\n const commonIndent = getBlockStringIndentation(lines);\n if (commonIndent !== 0) {\n for (let i = 1; i < lines.length; i++) {\n lines[i] = lines[i].slice(commonIndent);\n }\n }\n // Remove leading and trailing blank lines.\n while (lines.length > 0 && isBlank(lines[0])) {\n lines.shift();\n }\n while (lines.length > 0 && isBlank(lines[lines.length - 1])) {\n lines.pop();\n }\n // Return a string of the lines joined with U+000A.\n return lines.join('\\n');\n}\n/**\n * @internal\n */\nfunction getBlockStringIndentation(lines) {\n let commonIndent = null;\n for (let i = 1; i < lines.length; i++) {\n const line = lines[i];\n const indent = leadingWhitespace(line);\n if (indent === line.length) {\n continue; // skip empty lines\n }\n if (commonIndent === null || indent < commonIndent) {\n commonIndent = indent;\n if (commonIndent === 0) {\n break;\n }\n }\n }\n return commonIndent === null ? 0 : commonIndent;\n}\nfunction leadingWhitespace(str) {\n let i = 0;\n while (i < str.length && (str[i] === ' ' || str[i] === '\\t')) {\n i++;\n }\n return i;\n}\nfunction isBlank(str) {\n return leadingWhitespace(str) === str.length;\n}\n\nvar DirectiveLocation;\n(function (DirectiveLocation) {\n /** Request Definitions */\n DirectiveLocation[\"QUERY\"] = \"QUERY\";\n DirectiveLocation[\"MUTATION\"] = \"MUTATION\";\n DirectiveLocation[\"SUBSCRIPTION\"] = \"SUBSCRIPTION\";\n DirectiveLocation[\"FIELD\"] = \"FIELD\";\n DirectiveLocation[\"FRAGMENT_DEFINITION\"] = \"FRAGMENT_DEFINITION\";\n DirectiveLocation[\"FRAGMENT_SPREAD\"] = \"FRAGMENT_SPREAD\";\n DirectiveLocation[\"INLINE_FRAGMENT\"] = \"INLINE_FRAGMENT\";\n DirectiveLocation[\"VARIABLE_DEFINITION\"] = \"VARIABLE_DEFINITION\";\n /** Type System Definitions */\n DirectiveLocation[\"SCHEMA\"] = \"SCHEMA\";\n DirectiveLocation[\"SCALAR\"] = \"SCALAR\";\n DirectiveLocation[\"OBJECT\"] = \"OBJECT\";\n DirectiveLocation[\"FIELD_DEFINITION\"] = \"FIELD_DEFINITION\";\n DirectiveLocation[\"ARGUMENT_DEFINITION\"] = \"ARGUMENT_DEFINITION\";\n DirectiveLocation[\"INTERFACE\"] = \"INTERFACE\";\n DirectiveLocation[\"UNION\"] = \"UNION\";\n DirectiveLocation[\"ENUM\"] = \"ENUM\";\n DirectiveLocation[\"ENUM_VALUE\"] = \"ENUM_VALUE\";\n DirectiveLocation[\"INPUT_OBJECT\"] = \"INPUT_OBJECT\";\n DirectiveLocation[\"INPUT_FIELD_DEFINITION\"] = \"INPUT_FIELD_DEFINITION\";\n})(DirectiveLocation || (DirectiveLocation = {}));\n\nvar MapperKind;\n(function (MapperKind) {\n MapperKind[\"TYPE\"] = \"MapperKind.TYPE\";\n MapperKind[\"SCALAR_TYPE\"] = \"MapperKind.SCALAR_TYPE\";\n MapperKind[\"ENUM_TYPE\"] = \"MapperKind.ENUM_TYPE\";\n MapperKind[\"COMPOSITE_TYPE\"] = \"MapperKind.COMPOSITE_TYPE\";\n MapperKind[\"OBJECT_TYPE\"] = \"MapperKind.OBJECT_TYPE\";\n MapperKind[\"INPUT_OBJECT_TYPE\"] = \"MapperKind.INPUT_OBJECT_TYPE\";\n MapperKind[\"ABSTRACT_TYPE\"] = \"MapperKind.ABSTRACT_TYPE\";\n MapperKind[\"UNION_TYPE\"] = \"MapperKind.UNION_TYPE\";\n MapperKind[\"INTERFACE_TYPE\"] = \"MapperKind.INTERFACE_TYPE\";\n MapperKind[\"ROOT_OBJECT\"] = \"MapperKind.ROOT_OBJECT\";\n MapperKind[\"QUERY\"] = \"MapperKind.QUERY\";\n MapperKind[\"MUTATION\"] = \"MapperKind.MUTATION\";\n MapperKind[\"SUBSCRIPTION\"] = \"MapperKind.SUBSCRIPTION\";\n MapperKind[\"DIRECTIVE\"] = \"MapperKind.DIRECTIVE\";\n MapperKind[\"FIELD\"] = \"MapperKind.FIELD\";\n MapperKind[\"COMPOSITE_FIELD\"] = \"MapperKind.COMPOSITE_FIELD\";\n MapperKind[\"OBJECT_FIELD\"] = \"MapperKind.OBJECT_FIELD\";\n MapperKind[\"ROOT_FIELD\"] = \"MapperKind.ROOT_FIELD\";\n MapperKind[\"QUERY_ROOT_FIELD\"] = \"MapperKind.QUERY_ROOT_FIELD\";\n MapperKind[\"MUTATION_ROOT_FIELD\"] = \"MapperKind.MUTATION_ROOT_FIELD\";\n MapperKind[\"SUBSCRIPTION_ROOT_FIELD\"] = \"MapperKind.SUBSCRIPTION_ROOT_FIELD\";\n MapperKind[\"INTERFACE_FIELD\"] = \"MapperKind.INTERFACE_FIELD\";\n MapperKind[\"INPUT_OBJECT_FIELD\"] = \"MapperKind.INPUT_OBJECT_FIELD\";\n MapperKind[\"ARGUMENT\"] = \"MapperKind.ARGUMENT\";\n MapperKind[\"ENUM_VALUE\"] = \"MapperKind.ENUM_VALUE\";\n})(MapperKind || (MapperKind = {}));\n\nfunction getObjectTypeFromTypeMap(typeMap, type) {\n if (type) {\n const maybeObjectType = typeMap[type.name];\n if (isObjectType(maybeObjectType)) {\n return maybeObjectType;\n }\n }\n}\n\nfunction isNamedStub(type) {\n if ('getFields' in type) {\n const fields = type.getFields();\n // eslint-disable-next-line no-unreachable-loop\n for (const fieldName in fields) {\n const field = fields[fieldName];\n return field.name === '_fake';\n }\n }\n return false;\n}\nfunction getBuiltInForStub(type) {\n switch (type.name) {\n case GraphQLInt.name:\n return GraphQLInt;\n case GraphQLFloat.name:\n return GraphQLFloat;\n case GraphQLString.name:\n return GraphQLString;\n case GraphQLBoolean.name:\n return GraphQLBoolean;\n case GraphQLID.name:\n return GraphQLID;\n default:\n return type;\n }\n}\n\nfunction rewireTypes(originalTypeMap, directives) {\n const referenceTypeMap = Object.create(null);\n for (const typeName in originalTypeMap) {\n referenceTypeMap[typeName] = originalTypeMap[typeName];\n }\n const newTypeMap = Object.create(null);\n for (const typeName in referenceTypeMap) {\n const namedType = referenceTypeMap[typeName];\n if (namedType == null || typeName.startsWith('__')) {\n continue;\n }\n const newName = namedType.name;\n if (newName.startsWith('__')) {\n continue;\n }\n if (newTypeMap[newName] != null) {\n console.warn(`Duplicate schema type name ${newName} found; keeping the existing one found in the schema`);\n continue;\n }\n newTypeMap[newName] = namedType;\n }\n for (const typeName in newTypeMap) {\n newTypeMap[typeName] = rewireNamedType(newTypeMap[typeName]);\n }\n const newDirectives = directives.map(directive => rewireDirective(directive));\n return {\n typeMap: newTypeMap,\n directives: newDirectives,\n };\n function rewireDirective(directive) {\n if (isSpecifiedDirective(directive)) {\n return directive;\n }\n const directiveConfig = directive.toConfig();\n directiveConfig.args = rewireArgs(directiveConfig.args);\n return new GraphQLDirective(directiveConfig);\n }\n function rewireArgs(args) {\n const rewiredArgs = {};\n for (const argName in args) {\n const arg = args[argName];\n const rewiredArgType = rewireType(arg.type);\n if (rewiredArgType != null) {\n arg.type = rewiredArgType;\n rewiredArgs[argName] = arg;\n }\n }\n return rewiredArgs;\n }\n function rewireNamedType(type) {\n if (isObjectType(type)) {\n const config = type.toConfig();\n const newConfig = {\n ...config,\n fields: () => rewireFields(config.fields),\n interfaces: () => rewireNamedTypes(config.interfaces),\n };\n return new GraphQLObjectType(newConfig);\n }\n else if (isInterfaceType(type)) {\n const config = type.toConfig();\n const newConfig = {\n ...config,\n fields: () => rewireFields(config.fields),\n };\n if ('interfaces' in newConfig) {\n newConfig.interfaces = () => rewireNamedTypes(config.interfaces);\n }\n return new GraphQLInterfaceType(newConfig);\n }\n else if (isUnionType(type)) {\n const config = type.toConfig();\n const newConfig = {\n ...config,\n types: () => rewireNamedTypes(config.types),\n };\n return new GraphQLUnionType(newConfig);\n }\n else if (isInputObjectType(type)) {\n const config = type.toConfig();\n const newConfig = {\n ...config,\n fields: () => rewireInputFields(config.fields),\n };\n return new GraphQLInputObjectType(newConfig);\n }\n else if (isEnumType(type)) {\n const enumConfig = type.toConfig();\n return new GraphQLEnumType(enumConfig);\n }\n else if (isScalarType(type)) {\n if (isSpecifiedScalarType(type)) {\n return type;\n }\n const scalarConfig = type.toConfig();\n return new GraphQLScalarType(scalarConfig);\n }\n throw new Error(`Unexpected schema type: ${type}`);\n }\n function rewireFields(fields) {\n const rewiredFields = {};\n for (const fieldName in fields) {\n const field = fields[fieldName];\n const rewiredFieldType = rewireType(field.type);\n if (rewiredFieldType != null && field.args) {\n field.type = rewiredFieldType;\n field.args = rewireArgs(field.args);\n rewiredFields[fieldName] = field;\n }\n }\n return rewiredFields;\n }\n function rewireInputFields(fields) {\n const rewiredFields = {};\n for (const fieldName in fields) {\n const field = fields[fieldName];\n const rewiredFieldType = rewireType(field.type);\n if (rewiredFieldType != null) {\n field.type = rewiredFieldType;\n rewiredFields[fieldName] = field;\n }\n }\n return rewiredFields;\n }\n function rewireNamedTypes(namedTypes) {\n const rewiredTypes = [];\n for (const namedType of namedTypes) {\n const rewiredType = rewireType(namedType);\n if (rewiredType != null) {\n rewiredTypes.push(rewiredType);\n }\n }\n return rewiredTypes;\n }\n function rewireType(type) {\n if (isListType(type)) {\n const rewiredType = rewireType(type.ofType);\n return rewiredType != null ? new GraphQLList(rewiredType) : null;\n }\n else if (isNonNullType(type)) {\n const rewiredType = rewireType(type.ofType);\n return rewiredType != null ? new GraphQLNonNull(rewiredType) : null;\n }\n else if (isNamedType(type)) {\n let rewiredType = referenceTypeMap[type.name];\n if (rewiredType === undefined) {\n rewiredType = isNamedStub(type) ? getBuiltInForStub(type) : rewireNamedType(type);\n newTypeMap[rewiredType.name] = referenceTypeMap[type.name] = rewiredType;\n }\n return rewiredType != null ? newTypeMap[rewiredType.name] : null;\n }\n return null;\n }\n}\n\nfunction transformInputValue(type, value, inputLeafValueTransformer = null, inputObjectValueTransformer = null) {\n if (value == null) {\n return value;\n }\n const nullableType = getNullableType(type);\n if (isLeafType(nullableType)) {\n return inputLeafValueTransformer != null ? inputLeafValueTransformer(nullableType, value) : value;\n }\n else if (isListType(nullableType)) {\n return value.map((listMember) => transformInputValue(nullableType.ofType, listMember, inputLeafValueTransformer, inputObjectValueTransformer));\n }\n else if (isInputObjectType(nullableType)) {\n const fields = nullableType.getFields();\n const newValue = {};\n for (const key in value) {\n const field = fields[key];\n if (field != null) {\n newValue[key] = transformInputValue(field.type, value[key], inputLeafValueTransformer, inputObjectValueTransformer);\n }\n }\n return inputObjectValueTransformer != null ? inputObjectValueTransformer(nullableType, newValue) : newValue;\n }\n // unreachable, no other possible return value\n}\nfunction serializeInputValue(type, value) {\n return transformInputValue(type, value, (t, v) => {\n try {\n return t.serialize(v);\n }\n catch (_a) {\n return v;\n }\n });\n}\nfunction parseInputValue(type, value) {\n return transformInputValue(type, value, (t, v) => {\n try {\n return t.parseValue(v);\n }\n catch (_a) {\n return v;\n }\n });\n}\n\nfunction mapSchema(schema, schemaMapper = {}) {\n const newTypeMap = mapArguments(mapFields(mapTypes(mapDefaultValues(mapEnumValues(mapTypes(mapDefaultValues(schema.getTypeMap(), schema, serializeInputValue), schema, schemaMapper, type => isLeafType(type)), schema, schemaMapper), schema, parseInputValue), schema, schemaMapper, type => !isLeafType(type)), schema, schemaMapper), schema, schemaMapper);\n const originalDirectives = schema.getDirectives();\n const newDirectives = mapDirectives(originalDirectives, schema, schemaMapper);\n const { typeMap, directives } = rewireTypes(newTypeMap, newDirectives);\n return new GraphQLSchema({\n ...schema.toConfig(),\n query: getObjectTypeFromTypeMap(typeMap, getObjectTypeFromTypeMap(newTypeMap, schema.getQueryType())),\n mutation: getObjectTypeFromTypeMap(typeMap, getObjectTypeFromTypeMap(newTypeMap, schema.getMutationType())),\n subscription: getObjectTypeFromTypeMap(typeMap, getObjectTypeFromTypeMap(newTypeMap, schema.getSubscriptionType())),\n types: Object.values(typeMap),\n directives,\n });\n}\nfunction mapTypes(originalTypeMap, schema, schemaMapper, testFn = () => true) {\n const newTypeMap = {};\n for (const typeName in originalTypeMap) {\n if (!typeName.startsWith('__')) {\n const originalType = originalTypeMap[typeName];\n if (originalType == null || !testFn(originalType)) {\n newTypeMap[typeName] = originalType;\n continue;\n }\n const typeMapper = getTypeMapper(schema, schemaMapper, typeName);\n if (typeMapper == null) {\n newTypeMap[typeName] = originalType;\n continue;\n }\n const maybeNewType = typeMapper(originalType, schema);\n if (maybeNewType === undefined) {\n newTypeMap[typeName] = originalType;\n continue;\n }\n newTypeMap[typeName] = maybeNewType;\n }\n }\n return newTypeMap;\n}\nfunction mapEnumValues(originalTypeMap, schema, schemaMapper) {\n const enumValueMapper = getEnumValueMapper(schemaMapper);\n if (!enumValueMapper) {\n return originalTypeMap;\n }\n return mapTypes(originalTypeMap, schema, {\n [MapperKind.ENUM_TYPE]: type => {\n const config = type.toConfig();\n const originalEnumValueConfigMap = config.values;\n const newEnumValueConfigMap = {};\n for (const externalValue in originalEnumValueConfigMap) {\n const originalEnumValueConfig = originalEnumValueConfigMap[externalValue];\n const mappedEnumValue = enumValueMapper(originalEnumValueConfig, type.name, schema, externalValue);\n if (mappedEnumValue === undefined) {\n newEnumValueConfigMap[externalValue] = originalEnumValueConfig;\n }\n else if (Array.isArray(mappedEnumValue)) {\n const [newExternalValue, newEnumValueConfig] = mappedEnumValue;\n newEnumValueConfigMap[newExternalValue] =\n newEnumValueConfig === undefined ? originalEnumValueConfig : newEnumValueConfig;\n }\n else if (mappedEnumValue !== null) {\n newEnumValueConfigMap[externalValue] = mappedEnumValue;\n }\n }\n return correctASTNodes(new GraphQLEnumType({\n ...config,\n values: newEnumValueConfigMap,\n }));\n },\n }, type => isEnumType(type));\n}\nfunction mapDefaultValues(originalTypeMap, schema, fn) {\n const newTypeMap = mapArguments(originalTypeMap, schema, {\n [MapperKind.ARGUMENT]: argumentConfig => {\n if (argumentConfig.defaultValue === undefined) {\n return argumentConfig;\n }\n const maybeNewType = getNewType(originalTypeMap, argumentConfig.type);\n if (maybeNewType != null) {\n return {\n ...argumentConfig,\n defaultValue: fn(maybeNewType, argumentConfig.defaultValue),\n };\n }\n },\n });\n return mapFields(newTypeMap, schema, {\n [MapperKind.INPUT_OBJECT_FIELD]: inputFieldConfig => {\n if (inputFieldConfig.defaultValue === undefined) {\n return inputFieldConfig;\n }\n const maybeNewType = getNewType(newTypeMap, inputFieldConfig.type);\n if (maybeNewType != null) {\n return {\n ...inputFieldConfig,\n defaultValue: fn(maybeNewType, inputFieldConfig.defaultValue),\n };\n }\n },\n });\n}\nfunction getNewType(newTypeMap, type) {\n if (isListType(type)) {\n const newType = getNewType(newTypeMap, type.ofType);\n return newType != null ? new GraphQLList(newType) : null;\n }\n else if (isNonNullType(type)) {\n const newType = getNewType(newTypeMap, type.ofType);\n return newType != null ? new GraphQLNonNull(newType) : null;\n }\n else if (isNamedType(type)) {\n const newType = newTypeMap[type.name];\n return newType != null ? newType : null;\n }\n return null;\n}\nfunction mapFields(originalTypeMap, schema, schemaMapper) {\n const newTypeMap = {};\n for (const typeName in originalTypeMap) {\n if (!typeName.startsWith('__')) {\n const originalType = originalTypeMap[typeName];\n if (!isObjectType(originalType) && !isInterfaceType(originalType) && !isInputObjectType(originalType)) {\n newTypeMap[typeName] = originalType;\n continue;\n }\n const fieldMapper = getFieldMapper(schema, schemaMapper, typeName);\n if (fieldMapper == null) {\n newTypeMap[typeName] = originalType;\n continue;\n }\n const config = originalType.toConfig();\n const originalFieldConfigMap = config.fields;\n const newFieldConfigMap = {};\n for (const fieldName in originalFieldConfigMap) {\n const originalFieldConfig = originalFieldConfigMap[fieldName];\n const mappedField = fieldMapper(originalFieldConfig, fieldName, typeName, schema);\n if (mappedField === undefined) {\n newFieldConfigMap[fieldName] = originalFieldConfig;\n }\n else if (Array.isArray(mappedField)) {\n const [newFieldName, newFieldConfig] = mappedField;\n if (newFieldConfig.astNode != null) {\n newFieldConfig.astNode = {\n ...newFieldConfig.astNode,\n name: {\n ...newFieldConfig.astNode.name,\n value: newFieldName,\n },\n };\n }\n newFieldConfigMap[newFieldName] = newFieldConfig === undefined ? originalFieldConfig : newFieldConfig;\n }\n else if (mappedField !== null) {\n newFieldConfigMap[fieldName] = mappedField;\n }\n }\n if (isObjectType(originalType)) {\n newTypeMap[typeName] = correctASTNodes(new GraphQLObjectType({\n ...config,\n fields: newFieldConfigMap,\n }));\n }\n else if (isInterfaceType(originalType)) {\n newTypeMap[typeName] = correctASTNodes(new GraphQLInterfaceType({\n ...config,\n fields: newFieldConfigMap,\n }));\n }\n else {\n newTypeMap[typeName] = correctASTNodes(new GraphQLInputObjectType({\n ...config,\n fields: newFieldConfigMap,\n }));\n }\n }\n }\n return newTypeMap;\n}\nfunction mapArguments(originalTypeMap, schema, schemaMapper) {\n const newTypeMap = {};\n for (const typeName in originalTypeMap) {\n if (!typeName.startsWith('__')) {\n const originalType = originalTypeMap[typeName];\n if (!isObjectType(originalType) && !isInterfaceType(originalType)) {\n newTypeMap[typeName] = originalType;\n continue;\n }\n const argumentMapper = getArgumentMapper(schemaMapper);\n if (argumentMapper == null) {\n newTypeMap[typeName] = originalType;\n continue;\n }\n const config = originalType.toConfig();\n const originalFieldConfigMap = config.fields;\n const newFieldConfigMap = {};\n for (const fieldName in originalFieldConfigMap) {\n const originalFieldConfig = originalFieldConfigMap[fieldName];\n const originalArgumentConfigMap = originalFieldConfig.args;\n if (originalArgumentConfigMap == null) {\n newFieldConfigMap[fieldName] = originalFieldConfig;\n continue;\n }\n const argumentNames = Object.keys(originalArgumentConfigMap);\n if (!argumentNames.length) {\n newFieldConfigMap[fieldName] = originalFieldConfig;\n continue;\n }\n const newArgumentConfigMap = {};\n for (const argumentName of argumentNames) {\n const originalArgumentConfig = originalArgumentConfigMap[argumentName];\n const mappedArgument = argumentMapper(originalArgumentConfig, fieldName, typeName, schema);\n if (mappedArgument === undefined) {\n newArgumentConfigMap[argumentName] = originalArgumentConfig;\n }\n else if (Array.isArray(mappedArgument)) {\n const [newArgumentName, newArgumentConfig] = mappedArgument;\n newArgumentConfigMap[newArgumentName] = newArgumentConfig;\n }\n else if (mappedArgument !== null) {\n newArgumentConfigMap[argumentName] = mappedArgument;\n }\n }\n newFieldConfigMap[fieldName] = {\n ...originalFieldConfig,\n args: newArgumentConfigMap,\n };\n }\n if (isObjectType(originalType)) {\n newTypeMap[typeName] = new GraphQLObjectType({\n ...config,\n fields: newFieldConfigMap,\n });\n }\n else if (isInterfaceType(originalType)) {\n newTypeMap[typeName] = new GraphQLInterfaceType({\n ...config,\n fields: newFieldConfigMap,\n });\n }\n else {\n newTypeMap[typeName] = new GraphQLInputObjectType({\n ...config,\n fields: newFieldConfigMap,\n });\n }\n }\n }\n return newTypeMap;\n}\nfunction mapDirectives(originalDirectives, schema, schemaMapper) {\n const directiveMapper = getDirectiveMapper(schemaMapper);\n if (directiveMapper == null) {\n return originalDirectives.slice();\n }\n const newDirectives = [];\n for (const directive of originalDirectives) {\n const mappedDirective = directiveMapper(directive, schema);\n if (mappedDirective === undefined) {\n newDirectives.push(directive);\n }\n else if (mappedDirective !== null) {\n newDirectives.push(mappedDirective);\n }\n }\n return newDirectives;\n}\nfunction getTypeSpecifiers(schema, typeName) {\n var _a, _b, _c;\n const type = schema.getType(typeName);\n const specifiers = [MapperKind.TYPE];\n if (isObjectType(type)) {\n specifiers.push(MapperKind.COMPOSITE_TYPE, MapperKind.OBJECT_TYPE);\n if (typeName === ((_a = schema.getQueryType()) === null || _a === void 0 ? void 0 : _a.name)) {\n specifiers.push(MapperKind.ROOT_OBJECT, MapperKind.QUERY);\n }\n else if (typeName === ((_b = schema.getMutationType()) === null || _b === void 0 ? void 0 : _b.name)) {\n specifiers.push(MapperKind.ROOT_OBJECT, MapperKind.MUTATION);\n }\n else if (typeName === ((_c = schema.getSubscriptionType()) === null || _c === void 0 ? void 0 : _c.name)) {\n specifiers.push(MapperKind.ROOT_OBJECT, MapperKind.SUBSCRIPTION);\n }\n }\n else if (isInputObjectType(type)) {\n specifiers.push(MapperKind.INPUT_OBJECT_TYPE);\n }\n else if (isInterfaceType(type)) {\n specifiers.push(MapperKind.COMPOSITE_TYPE, MapperKind.ABSTRACT_TYPE, MapperKind.INTERFACE_TYPE);\n }\n else if (isUnionType(type)) {\n specifiers.push(MapperKind.COMPOSITE_TYPE, MapperKind.ABSTRACT_TYPE, MapperKind.UNION_TYPE);\n }\n else if (isEnumType(type)) {\n specifiers.push(MapperKind.ENUM_TYPE);\n }\n else if (isScalarType(type)) {\n specifiers.push(MapperKind.SCALAR_TYPE);\n }\n return specifiers;\n}\nfunction getTypeMapper(schema, schemaMapper, typeName) {\n const specifiers = getTypeSpecifiers(schema, typeName);\n let typeMapper;\n const stack = [...specifiers];\n while (!typeMapper && stack.length > 0) {\n // It is safe to use the ! operator here as we check the length.\n const next = stack.pop();\n typeMapper = schemaMapper[next];\n }\n return typeMapper != null ? typeMapper : null;\n}\nfunction getFieldSpecifiers(schema, typeName) {\n var _a, _b, _c;\n const type = schema.getType(typeName);\n const specifiers = [MapperKind.FIELD];\n if (isObjectType(type)) {\n specifiers.push(MapperKind.COMPOSITE_FIELD, MapperKind.OBJECT_FIELD);\n if (typeName === ((_a = schema.getQueryType()) === null || _a === void 0 ? void 0 : _a.name)) {\n specifiers.push(MapperKind.ROOT_FIELD, MapperKind.QUERY_ROOT_FIELD);\n }\n else if (typeName === ((_b = schema.getMutationType()) === null || _b === void 0 ? void 0 : _b.name)) {\n specifiers.push(MapperKind.ROOT_FIELD, MapperKind.MUTATION_ROOT_FIELD);\n }\n else if (typeName === ((_c = schema.getSubscriptionType()) === null || _c === void 0 ? void 0 : _c.name)) {\n specifiers.push(MapperKind.ROOT_FIELD, MapperKind.SUBSCRIPTION_ROOT_FIELD);\n }\n }\n else if (isInterfaceType(type)) {\n specifiers.push(MapperKind.COMPOSITE_FIELD, MapperKind.INTERFACE_FIELD);\n }\n else if (isInputObjectType(type)) {\n specifiers.push(MapperKind.INPUT_OBJECT_FIELD);\n }\n return specifiers;\n}\nfunction getFieldMapper(schema, schemaMapper, typeName) {\n const specifiers = getFieldSpecifiers(schema, typeName);\n let fieldMapper;\n const stack = [...specifiers];\n while (!fieldMapper && stack.length > 0) {\n // It is safe to use the ! operator here as we check the length.\n const next = stack.pop();\n // TODO: fix this as unknown cast\n fieldMapper = schemaMapper[next];\n }\n return fieldMapper !== null && fieldMapper !== void 0 ? fieldMapper : null;\n}\nfunction getArgumentMapper(schemaMapper) {\n const argumentMapper = schemaMapper[MapperKind.ARGUMENT];\n return argumentMapper != null ? argumentMapper : null;\n}\nfunction getDirectiveMapper(schemaMapper) {\n const directiveMapper = schemaMapper[MapperKind.DIRECTIVE];\n return directiveMapper != null ? directiveMapper : null;\n}\nfunction getEnumValueMapper(schemaMapper) {\n const enumValueMapper = schemaMapper[MapperKind.ENUM_VALUE];\n return enumValueMapper != null ? enumValueMapper : null;\n}\nfunction correctASTNodes(type) {\n if (isObjectType(type)) {\n const config = type.toConfig();\n if (config.astNode != null) {\n const fields = [];\n for (const fieldName in config.fields) {\n const fieldConfig = config.fields[fieldName];\n if (fieldConfig.astNode != null) {\n fields.push(fieldConfig.astNode);\n }\n }\n config.astNode = {\n ...config.astNode,\n kind: Kind.OBJECT_TYPE_DEFINITION,\n fields,\n };\n }\n if (config.extensionASTNodes != null) {\n config.extensionASTNodes = config.extensionASTNodes.map(node => ({\n ...node,\n kind: Kind.OBJECT_TYPE_EXTENSION,\n fields: undefined,\n }));\n }\n return new GraphQLObjectType(config);\n }\n else if (isInterfaceType(type)) {\n const config = type.toConfig();\n if (config.astNode != null) {\n const fields = [];\n for (const fieldName in config.fields) {\n const fieldConfig = config.fields[fieldName];\n if (fieldConfig.astNode != null) {\n fields.push(fieldConfig.astNode);\n }\n }\n config.astNode = {\n ...config.astNode,\n kind: Kind.INTERFACE_TYPE_DEFINITION,\n fields,\n };\n }\n if (config.extensionASTNodes != null) {\n config.extensionASTNodes = config.extensionASTNodes.map(node => ({\n ...node,\n kind: Kind.INTERFACE_TYPE_EXTENSION,\n fields: undefined,\n }));\n }\n return new GraphQLInterfaceType(config);\n }\n else if (isInputObjectType(type)) {\n const config = type.toConfig();\n if (config.astNode != null) {\n const fields = [];\n for (const fieldName in config.fields) {\n const fieldConfig = config.fields[fieldName];\n if (fieldConfig.astNode != null) {\n fields.push(fieldConfig.astNode);\n }\n }\n config.astNode = {\n ...config.astNode,\n kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,\n fields,\n };\n }\n if (config.extensionASTNodes != null) {\n config.extensionASTNodes = config.extensionASTNodes.map(node => ({\n ...node,\n kind: Kind.INPUT_OBJECT_TYPE_EXTENSION,\n fields: undefined,\n }));\n }\n return new GraphQLInputObjectType(config);\n }\n else if (isEnumType(type)) {\n const config = type.toConfig();\n if (config.astNode != null) {\n const values = [];\n for (const enumKey in config.values) {\n const enumValueConfig = config.values[enumKey];\n if (enumValueConfig.astNode != null) {\n values.push(enumValueConfig.astNode);\n }\n }\n config.astNode = {\n ...config.astNode,\n values,\n };\n }\n if (config.extensionASTNodes != null) {\n config.extensionASTNodes = config.extensionASTNodes.map(node => ({\n ...node,\n values: undefined,\n }));\n }\n return new GraphQLEnumType(config);\n }\n else {\n return type;\n }\n}\n\n// Update any references to named schema types that disagree with the named\n// types found in schema.getTypeMap().\n//\n// healSchema and its callers (visitSchema/visitSchemaDirectives) all modify the schema in place.\n// Therefore, private variables (such as the stored implementation map and the proper root types)\n// are not updated.\n//\n// If this causes issues, the schema could be more aggressively healed as follows:\n//\n// healSchema(schema);\n// const config = schema.toConfig()\n// const healedSchema = new GraphQLSchema({\n// ...config,\n// query: schema.getType(''),\n// mutation: schema.getType(''),\n// subscription: schema.getType(''),\n// });\n//\n// One can then also -- if necessary -- assign the correct private variables to the initial schema\n// as follows:\n// Object.assign(schema, healedSchema);\n//\n// These steps are not taken automatically to preserve backwards compatibility with graphql-tools v4.\n// See https://github.com/ardatan/graphql-tools/issues/1462\n//\n// They were briefly taken in v5, but can now be phased out as they were only required when other\n// areas of the codebase were using healSchema and visitSchema more extensively.\n//\nfunction healSchema(schema) {\n healTypes(schema.getTypeMap(), schema.getDirectives());\n return schema;\n}\nfunction healTypes(originalTypeMap, directives) {\n const actualNamedTypeMap = Object.create(null);\n // If any of the .name properties of the GraphQLNamedType objects in\n // schema.getTypeMap() have changed, the keys of the type map need to\n // be updated accordingly.\n for (const typeName in originalTypeMap) {\n const namedType = originalTypeMap[typeName];\n if (namedType == null || typeName.startsWith('__')) {\n continue;\n }\n const actualName = namedType.name;\n if (actualName.startsWith('__')) {\n continue;\n }\n if (actualNamedTypeMap[actualName] != null) {\n console.warn(`Duplicate schema type name ${actualName} found; keeping the existing one found in the schema`);\n continue;\n }\n actualNamedTypeMap[actualName] = namedType;\n // Note: we are deliberately leaving namedType in the schema by its\n // original name (which might be different from actualName), so that\n // references by that name can be healed.\n }\n // Now add back every named type by its actual name.\n for (const typeName in actualNamedTypeMap) {\n const namedType = actualNamedTypeMap[typeName];\n originalTypeMap[typeName] = namedType;\n }\n // Directive declaration argument types can refer to named types.\n for (const decl of directives) {\n decl.args = decl.args.filter(arg => {\n arg.type = healType(arg.type);\n return arg.type !== null;\n });\n }\n for (const typeName in originalTypeMap) {\n const namedType = originalTypeMap[typeName];\n // Heal all named types, except for dangling references, kept only to redirect.\n if (!typeName.startsWith('__') && typeName in actualNamedTypeMap) {\n if (namedType != null) {\n healNamedType(namedType);\n }\n }\n }\n for (const typeName in originalTypeMap) {\n if (!typeName.startsWith('__') && !(typeName in actualNamedTypeMap)) {\n delete originalTypeMap[typeName];\n }\n }\n function healNamedType(type) {\n if (isObjectType(type)) {\n healFields(type);\n healInterfaces(type);\n return;\n }\n else if (isInterfaceType(type)) {\n healFields(type);\n if ('getInterfaces' in type) {\n healInterfaces(type);\n }\n return;\n }\n else if (isUnionType(type)) {\n healUnderlyingTypes(type);\n return;\n }\n else if (isInputObjectType(type)) {\n healInputFields(type);\n return;\n }\n else if (isLeafType(type)) {\n return;\n }\n throw new Error(`Unexpected schema type: ${type}`);\n }\n function healFields(type) {\n const fieldMap = type.getFields();\n for (const [key, field] of Object.entries(fieldMap)) {\n field.args\n .map(arg => {\n arg.type = healType(arg.type);\n return arg.type === null ? null : arg;\n })\n .filter(Boolean);\n field.type = healType(field.type);\n if (field.type === null) {\n delete fieldMap[key];\n }\n }\n }\n function healInterfaces(type) {\n if ('getInterfaces' in type) {\n const interfaces = type.getInterfaces();\n interfaces.push(...interfaces\n .splice(0)\n .map(iface => healType(iface))\n .filter(Boolean));\n }\n }\n function healInputFields(type) {\n const fieldMap = type.getFields();\n for (const [key, field] of Object.entries(fieldMap)) {\n field.type = healType(field.type);\n if (field.type === null) {\n delete fieldMap[key];\n }\n }\n }\n function healUnderlyingTypes(type) {\n const types = type.getTypes();\n types.push(...types\n .splice(0)\n .map(t => healType(t))\n .filter(Boolean));\n }\n function healType(type) {\n // Unwrap the two known wrapper types\n if (isListType(type)) {\n const healedType = healType(type.ofType);\n return healedType != null ? new GraphQLList(healedType) : null;\n }\n else if (isNonNullType(type)) {\n const healedType = healType(type.ofType);\n return healedType != null ? new GraphQLNonNull(healedType) : null;\n }\n else if (isNamedType(type)) {\n // If a type annotation on a field or an argument or a union member is\n // any `GraphQLNamedType` with a `name`, then it must end up identical\n // to `schema.getType(name)`, since `schema.getTypeMap()` is the source\n // of truth for all named schema types.\n // Note that new types can still be simply added by adding a field, as\n // the official type will be undefined, not null.\n const officialType = originalTypeMap[type.name];\n if (officialType && type !== officialType) {\n return officialType;\n }\n }\n return type;\n }\n}\n\nfunction forEachField(schema, fn) {\n const typeMap = schema.getTypeMap();\n for (const typeName in typeMap) {\n const type = typeMap[typeName];\n // TODO: maybe have an option to include these?\n if (!getNamedType(type).name.startsWith('__') && isObjectType(type)) {\n const fields = type.getFields();\n for (const fieldName in fields) {\n const field = fields[fieldName];\n fn(field, typeName, fieldName);\n }\n }\n }\n}\n\nfunction forEachDefaultValue(schema, fn) {\n const typeMap = schema.getTypeMap();\n for (const typeName in typeMap) {\n const type = typeMap[typeName];\n if (!getNamedType(type).name.startsWith('__')) {\n if (isObjectType(type)) {\n const fields = type.getFields();\n for (const fieldName in fields) {\n const field = fields[fieldName];\n for (const arg of field.args) {\n arg.defaultValue = fn(arg.type, arg.defaultValue);\n }\n }\n }\n else if (isInputObjectType(type)) {\n const fields = type.getFields();\n for (const fieldName in fields) {\n const field = fields[fieldName];\n field.defaultValue = fn(field.type, field.defaultValue);\n }\n }\n }\n }\n}\n\nfunction mergeDeep(sources, respectPrototype = false) {\n const target = sources[0] || {};\n const output = {};\n if (respectPrototype) {\n Object.setPrototypeOf(output, Object.create(Object.getPrototypeOf(target)));\n }\n for (const source of sources) {\n if (isObject(target) && isObject(source)) {\n if (respectPrototype) {\n const outputPrototype = Object.getPrototypeOf(output);\n const sourcePrototype = Object.getPrototypeOf(source);\n if (sourcePrototype) {\n for (const key of Object.getOwnPropertyNames(sourcePrototype)) {\n const descriptor = Object.getOwnPropertyDescriptor(sourcePrototype, key);\n if (isSome(descriptor)) {\n Object.defineProperty(outputPrototype, key, descriptor);\n }\n }\n }\n }\n for (const key in source) {\n if (isObject(source[key])) {\n if (!(key in output)) {\n Object.assign(output, { [key]: source[key] });\n }\n else {\n output[key] = mergeDeep([output[key], source[key]], respectPrototype);\n }\n }\n else {\n Object.assign(output, { [key]: source[key] });\n }\n }\n }\n }\n return output;\n}\nfunction isObject(item) {\n return item && typeof item === 'object' && !Array.isArray(item);\n}\n\nfunction isAsyncIterable(value) {\n return (typeof value === 'object' &&\n value != null &&\n Symbol.asyncIterator in value &&\n typeof value[Symbol.asyncIterator] === 'function');\n}\n\nfunction isDocumentNode(object) {\n return object && typeof object === 'object' && 'kind' in object && object.kind === Kind.DOCUMENT;\n}\n\nfunction assertResolversPresent(schema, resolverValidationOptions = {}) {\n const { requireResolversForArgs, requireResolversForNonScalar, requireResolversForAllFields } = resolverValidationOptions;\n if (requireResolversForAllFields && (requireResolversForArgs || requireResolversForNonScalar)) {\n throw new TypeError('requireResolversForAllFields takes precedence over the more specific assertions. ' +\n 'Please configure either requireResolversForAllFields or requireResolversForArgs / ' +\n 'requireResolversForNonScalar, but not a combination of them.');\n }\n forEachField(schema, (field, typeName, fieldName) => {\n // requires a resolver for *every* field.\n if (requireResolversForAllFields) {\n expectResolver('requireResolversForAllFields', requireResolversForAllFields, field, typeName, fieldName);\n }\n // requires a resolver on every field that has arguments\n if (requireResolversForArgs && field.args.length > 0) {\n expectResolver('requireResolversForArgs', requireResolversForArgs, field, typeName, fieldName);\n }\n // requires a resolver on every field that returns a non-scalar type\n if (requireResolversForNonScalar !== 'ignore' && !isScalarType(getNamedType(field.type))) {\n expectResolver('requireResolversForNonScalar', requireResolversForNonScalar, field, typeName, fieldName);\n }\n });\n}\nfunction expectResolver(validator, behavior, field, typeName, fieldName) {\n if (!field.resolve) {\n const message = `Resolver missing for \"${typeName}.${fieldName}\".\nTo disable this validator, use:\n resolverValidationOptions: {\n ${validator}: 'ignore'\n }`;\n if (behavior === 'error') {\n throw new Error(message);\n }\n if (behavior === 'warn') {\n console.warn(message);\n }\n return;\n }\n if (typeof field.resolve !== 'function') {\n throw new Error(`Resolver \"${typeName}.${fieldName}\" must be a function`);\n }\n}\n\n// If we have any union or interface types throw if no there is no resolveType resolver\nfunction checkForResolveTypeResolver(schema, requireResolversForResolveType) {\n mapSchema(schema, {\n [MapperKind.ABSTRACT_TYPE]: type => {\n if (!type.resolveType) {\n const message = `Type \"${type.name}\" is missing a \"__resolveType\" resolver. Pass 'ignore' into ` +\n '\"resolverValidationOptions.requireResolversForResolveType\" to disable this error.';\n if (requireResolversForResolveType === 'error') {\n throw new Error(message);\n }\n if (requireResolversForResolveType === 'warn') {\n console.warn(message);\n }\n }\n return undefined;\n },\n });\n}\n\nfunction extendResolversFromInterfaces(schema, resolvers) {\n const extendedResolvers = {};\n const typeMap = schema.getTypeMap();\n for (const typeName in typeMap) {\n const type = typeMap[typeName];\n if ('getInterfaces' in type) {\n extendedResolvers[typeName] = {};\n for (const iFace of type.getInterfaces()) {\n if (resolvers[iFace.name]) {\n for (const fieldName in resolvers[iFace.name]) {\n if (fieldName === '__isTypeOf' || !fieldName.startsWith('__')) {\n extendedResolvers[typeName][fieldName] = resolvers[iFace.name][fieldName];\n }\n }\n }\n }\n const typeResolvers = resolvers[typeName];\n extendedResolvers[typeName] = {\n ...extendedResolvers[typeName],\n ...typeResolvers,\n };\n }\n else {\n const typeResolvers = resolvers[typeName];\n if (typeResolvers != null) {\n extendedResolvers[typeName] = typeResolvers;\n }\n }\n }\n return extendedResolvers;\n}\n\nfunction addResolversToSchema({ schema, resolvers: inputResolvers, defaultFieldResolver, resolverValidationOptions = {}, inheritResolversFromInterfaces = false, updateResolversInPlace = false, }) {\n const { requireResolversToMatchSchema = 'error', requireResolversForResolveType } = resolverValidationOptions;\n const resolvers = inheritResolversFromInterfaces\n ? extendResolversFromInterfaces(schema, inputResolvers)\n : inputResolvers;\n for (const typeName in resolvers) {\n const resolverValue = resolvers[typeName];\n const resolverType = typeof resolverValue;\n if (resolverType !== 'object') {\n throw new Error(`\"${typeName}\" defined in resolvers, but has invalid value \"${resolverValue}\". The resolver's value must be of type object.`);\n }\n const type = schema.getType(typeName);\n if (type == null) {\n if (requireResolversToMatchSchema === 'ignore') {\n continue;\n }\n throw new Error(`\"${typeName}\" defined in resolvers, but not in schema`);\n }\n else if (isSpecifiedScalarType(type)) {\n // allow -- without recommending -- overriding of specified scalar types\n for (const fieldName in resolverValue) {\n if (fieldName.startsWith('__')) {\n type[fieldName.substring(2)] = resolverValue[fieldName];\n }\n else {\n type[fieldName] = resolverValue[fieldName];\n }\n }\n }\n else if (isEnumType(type)) {\n const values = type.getValues();\n for (const fieldName in resolverValue) {\n if (!fieldName.startsWith('__') &&\n !values.some(value => value.name === fieldName) &&\n requireResolversToMatchSchema &&\n requireResolversToMatchSchema !== 'ignore') {\n throw new Error(`${type.name}.${fieldName} was defined in resolvers, but not present within ${type.name}`);\n }\n }\n }\n else if (isUnionType(type)) {\n for (const fieldName in resolverValue) {\n if (!fieldName.startsWith('__') &&\n requireResolversToMatchSchema &&\n requireResolversToMatchSchema !== 'ignore') {\n throw new Error(`${type.name}.${fieldName} was defined in resolvers, but ${type.name} is not an object or interface type`);\n }\n }\n }\n else if (isObjectType(type) || isInterfaceType(type)) {\n for (const fieldName in resolverValue) {\n if (!fieldName.startsWith('__')) {\n const fields = type.getFields();\n const field = fields[fieldName];\n if (field == null) {\n // Field present in resolver but not in schema\n if (requireResolversToMatchSchema && requireResolversToMatchSchema !== 'ignore') {\n throw new Error(`${typeName}.${fieldName} defined in resolvers, but not in schema`);\n }\n }\n else {\n // Field present in both the resolver and schema\n const fieldResolve = resolverValue[fieldName];\n if (typeof fieldResolve !== 'function' && typeof fieldResolve !== 'object') {\n throw new Error(`Resolver ${typeName}.${fieldName} must be object or function`);\n }\n }\n }\n }\n }\n }\n schema = updateResolversInPlace\n ? addResolversToExistingSchema(schema, resolvers, defaultFieldResolver)\n : createNewSchemaWithResolvers(schema, resolvers, defaultFieldResolver);\n if (requireResolversForResolveType && requireResolversForResolveType !== 'ignore') {\n checkForResolveTypeResolver(schema, requireResolversForResolveType);\n }\n return schema;\n}\nfunction addResolversToExistingSchema(schema, resolvers, defaultFieldResolver) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\n const typeMap = schema.getTypeMap();\n for (const typeName in resolvers) {\n const type = schema.getType(typeName);\n const resolverValue = resolvers[typeName];\n if (isScalarType(type)) {\n for (const fieldName in resolverValue) {\n if (fieldName.startsWith('__')) {\n type[fieldName.substring(2)] = resolverValue[fieldName];\n }\n else if (fieldName === 'astNode' && type.astNode != null) {\n type.astNode = {\n ...type.astNode,\n description: (_b = (_a = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : type.astNode.description,\n directives: ((_c = type.astNode.directives) !== null && _c !== void 0 ? _c : []).concat((_e = (_d = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _d === void 0 ? void 0 : _d.directives) !== null && _e !== void 0 ? _e : []),\n };\n }\n else if (fieldName === 'extensionASTNodes' && type.extensionASTNodes != null) {\n type.extensionASTNodes = type.extensionASTNodes.concat((_f = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.extensionASTNodes) !== null && _f !== void 0 ? _f : []);\n }\n else if (fieldName === 'extensions' &&\n type.extensions != null &&\n resolverValue.extensions != null) {\n type.extensions = Object.assign(Object.create(null), type.extensions, resolverValue.extensions);\n }\n else {\n type[fieldName] = resolverValue[fieldName];\n }\n }\n }\n else if (isEnumType(type)) {\n const config = type.toConfig();\n const enumValueConfigMap = config.values;\n for (const fieldName in resolverValue) {\n if (fieldName.startsWith('__')) {\n config[fieldName.substring(2)] = resolverValue[fieldName];\n }\n else if (fieldName === 'astNode' && config.astNode != null) {\n config.astNode = {\n ...config.astNode,\n description: (_h = (_g = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _g === void 0 ? void 0 : _g.description) !== null && _h !== void 0 ? _h : config.astNode.description,\n directives: ((_j = config.astNode.directives) !== null && _j !== void 0 ? _j : []).concat((_l = (_k = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _k === void 0 ? void 0 : _k.directives) !== null && _l !== void 0 ? _l : []),\n };\n }\n else if (fieldName === 'extensionASTNodes' && config.extensionASTNodes != null) {\n config.extensionASTNodes = config.extensionASTNodes.concat((_m = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.extensionASTNodes) !== null && _m !== void 0 ? _m : []);\n }\n else if (fieldName === 'extensions' &&\n type.extensions != null &&\n resolverValue.extensions != null) {\n type.extensions = Object.assign(Object.create(null), type.extensions, resolverValue.extensions);\n }\n else if (enumValueConfigMap[fieldName]) {\n enumValueConfigMap[fieldName].value = resolverValue[fieldName];\n }\n }\n typeMap[typeName] = new GraphQLEnumType(config);\n }\n else if (isUnionType(type)) {\n for (const fieldName in resolverValue) {\n if (fieldName.startsWith('__')) {\n type[fieldName.substring(2)] = resolverValue[fieldName];\n }\n }\n }\n else if (isObjectType(type) || isInterfaceType(type)) {\n for (const fieldName in resolverValue) {\n if (fieldName.startsWith('__')) {\n // this is for isTypeOf and resolveType and all the other stuff.\n type[fieldName.substring(2)] = resolverValue[fieldName];\n continue;\n }\n const fields = type.getFields();\n const field = fields[fieldName];\n if (field != null) {\n const fieldResolve = resolverValue[fieldName];\n if (typeof fieldResolve === 'function') {\n // for convenience. Allows shorter syntax in resolver definition file\n field.resolve = fieldResolve.bind(resolverValue);\n }\n else {\n setFieldProperties(field, fieldResolve);\n }\n }\n }\n }\n }\n // serialize all default values prior to healing fields with new scalar/enum types.\n forEachDefaultValue(schema, serializeInputValue);\n // schema may have new scalar/enum types that require healing\n healSchema(schema);\n // reparse all default values with new parsing functions.\n forEachDefaultValue(schema, parseInputValue);\n if (defaultFieldResolver != null) {\n forEachField(schema, field => {\n if (!field.resolve) {\n field.resolve = defaultFieldResolver;\n }\n });\n }\n return schema;\n}\nfunction createNewSchemaWithResolvers(schema, resolvers, defaultFieldResolver) {\n schema = mapSchema(schema, {\n [MapperKind.SCALAR_TYPE]: type => {\n var _a, _b, _c, _d, _e, _f;\n const config = type.toConfig();\n const resolverValue = resolvers[type.name];\n if (!isSpecifiedScalarType(type) && resolverValue != null) {\n for (const fieldName in resolverValue) {\n if (fieldName.startsWith('__')) {\n config[fieldName.substring(2)] = resolverValue[fieldName];\n }\n else if (fieldName === 'astNode' && config.astNode != null) {\n config.astNode = {\n ...config.astNode,\n description: (_b = (_a = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : config.astNode.description,\n directives: ((_c = config.astNode.directives) !== null && _c !== void 0 ? _c : []).concat((_e = (_d = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _d === void 0 ? void 0 : _d.directives) !== null && _e !== void 0 ? _e : []),\n };\n }\n else if (fieldName === 'extensionASTNodes' && config.extensionASTNodes != null) {\n config.extensionASTNodes = config.extensionASTNodes.concat((_f = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.extensionASTNodes) !== null && _f !== void 0 ? _f : []);\n }\n else if (fieldName === 'extensions' &&\n config.extensions != null &&\n resolverValue.extensions != null) {\n config.extensions = Object.assign(Object.create(null), type.extensions, resolverValue.extensions);\n }\n else {\n config[fieldName] = resolverValue[fieldName];\n }\n }\n return new GraphQLScalarType(config);\n }\n },\n [MapperKind.ENUM_TYPE]: type => {\n var _a, _b, _c, _d, _e, _f;\n const resolverValue = resolvers[type.name];\n const config = type.toConfig();\n const enumValueConfigMap = config.values;\n if (resolverValue != null) {\n for (const fieldName in resolverValue) {\n if (fieldName.startsWith('__')) {\n config[fieldName.substring(2)] = resolverValue[fieldName];\n }\n else if (fieldName === 'astNode' && config.astNode != null) {\n config.astNode = {\n ...config.astNode,\n description: (_b = (_a = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : config.astNode.description,\n directives: ((_c = config.astNode.directives) !== null && _c !== void 0 ? _c : []).concat((_e = (_d = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _d === void 0 ? void 0 : _d.directives) !== null && _e !== void 0 ? _e : []),\n };\n }\n else if (fieldName === 'extensionASTNodes' && config.extensionASTNodes != null) {\n config.extensionASTNodes = config.extensionASTNodes.concat((_f = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.extensionASTNodes) !== null && _f !== void 0 ? _f : []);\n }\n else if (fieldName === 'extensions' &&\n config.extensions != null &&\n resolverValue.extensions != null) {\n config.extensions = Object.assign(Object.create(null), type.extensions, resolverValue.extensions);\n }\n else if (enumValueConfigMap[fieldName]) {\n enumValueConfigMap[fieldName].value = resolverValue[fieldName];\n }\n }\n return new GraphQLEnumType(config);\n }\n },\n [MapperKind.UNION_TYPE]: type => {\n const resolverValue = resolvers[type.name];\n if (resolverValue != null) {\n const config = type.toConfig();\n if (resolverValue['__resolveType']) {\n config.resolveType = resolverValue['__resolveType'];\n }\n return new GraphQLUnionType(config);\n }\n },\n [MapperKind.OBJECT_TYPE]: type => {\n const resolverValue = resolvers[type.name];\n if (resolverValue != null) {\n const config = type.toConfig();\n if (resolverValue['__isTypeOf']) {\n config.isTypeOf = resolverValue['__isTypeOf'];\n }\n return new GraphQLObjectType(config);\n }\n },\n [MapperKind.INTERFACE_TYPE]: type => {\n const resolverValue = resolvers[type.name];\n if (resolverValue != null) {\n const config = type.toConfig();\n if (resolverValue['__resolveType']) {\n config.resolveType = resolverValue['__resolveType'];\n }\n return new GraphQLInterfaceType(config);\n }\n },\n [MapperKind.COMPOSITE_FIELD]: (fieldConfig, fieldName, typeName) => {\n const resolverValue = resolvers[typeName];\n if (resolverValue != null) {\n const fieldResolve = resolverValue[fieldName];\n if (fieldResolve != null) {\n const newFieldConfig = { ...fieldConfig };\n if (typeof fieldResolve === 'function') {\n // for convenience. Allows shorter syntax in resolver definition file\n newFieldConfig.resolve = fieldResolve.bind(resolverValue);\n }\n else {\n setFieldProperties(newFieldConfig, fieldResolve);\n }\n return newFieldConfig;\n }\n }\n },\n });\n if (defaultFieldResolver != null) {\n schema = mapSchema(schema, {\n [MapperKind.OBJECT_FIELD]: fieldConfig => ({\n ...fieldConfig,\n resolve: fieldConfig.resolve != null ? fieldConfig.resolve : defaultFieldResolver,\n }),\n });\n }\n return schema;\n}\nfunction setFieldProperties(field, propertiesObj) {\n for (const propertyName in propertiesObj) {\n field[propertyName] = propertiesObj[propertyName];\n }\n}\n\n/**\n * Deep merges multiple resolver definition objects into a single definition.\n * @param resolversDefinitions Resolver definitions to be merged\n * @param options Additional options\n *\n * ```js\n * const { mergeResolvers } = require('@graphql-tools/merge');\n * const clientResolver = require('./clientResolver');\n * const productResolver = require('./productResolver');\n *\n * const resolvers = mergeResolvers([\n * clientResolver,\n * productResolver,\n * ]);\n * ```\n *\n * If you don't want to manually create the array of resolver objects, you can\n * also use this function along with loadFiles:\n *\n * ```js\n * const path = require('path');\n * const { mergeResolvers } = require('@graphql-tools/merge');\n * const { loadFilesSync } = require('@graphql-tools/load-files');\n *\n * const resolversArray = loadFilesSync(path.join(__dirname, './resolvers'));\n *\n * const resolvers = mergeResolvers(resolversArray)\n * ```\n */\nfunction mergeResolvers(resolversDefinitions, options) {\n if (!resolversDefinitions || (Array.isArray(resolversDefinitions) && resolversDefinitions.length === 0)) {\n return {};\n }\n if (!Array.isArray(resolversDefinitions)) {\n return resolversDefinitions;\n }\n if (resolversDefinitions.length === 1) {\n return resolversDefinitions[0] || {};\n }\n const resolvers = new Array();\n for (let resolversDefinition of resolversDefinitions) {\n if (Array.isArray(resolversDefinition)) {\n resolversDefinition = mergeResolvers(resolversDefinition);\n }\n if (typeof resolversDefinition === 'object' && resolversDefinition) {\n resolvers.push(resolversDefinition);\n }\n }\n const result = mergeDeep(resolvers, true);\n if (options === null || options === void 0 ? void 0 : options.exclusions) {\n for (const exclusion of options.exclusions) {\n const [typeName, fieldName] = exclusion.split('.');\n if (!fieldName || fieldName === '*') {\n delete result[typeName];\n }\n else if (result[typeName]) {\n delete result[typeName][fieldName];\n }\n }\n }\n return result;\n}\n\nfunction mergeArguments$1(args1, args2, config) {\n const result = deduplicateArguments([...args2, ...args1].filter(isSome));\n if (config && config.sort) {\n result.sort(compareNodes);\n }\n return result;\n}\nfunction deduplicateArguments(args) {\n return args.reduce((acc, current) => {\n const dup = acc.find(arg => arg.name.value === current.name.value);\n if (!dup) {\n return acc.concat([current]);\n }\n return acc;\n }, []);\n}\n\nfunction directiveAlreadyExists(directivesArr, otherDirective) {\n return !!directivesArr.find(directive => directive.name.value === otherDirective.name.value);\n}\nfunction nameAlreadyExists(name, namesArr) {\n return namesArr.some(({ value }) => value === name.value);\n}\nfunction mergeArguments(a1, a2) {\n const result = [...a2];\n for (const argument of a1) {\n const existingIndex = result.findIndex(a => a.name.value === argument.name.value);\n if (existingIndex > -1) {\n const existingArg = result[existingIndex];\n if (existingArg.value.kind === 'ListValue') {\n const source = existingArg.value.values;\n const target = argument.value.values;\n // merge values of two lists\n existingArg.value.values = deduplicateLists(source, target, (targetVal, source) => {\n const value = targetVal.value;\n return !value || !source.some((sourceVal) => sourceVal.value === value);\n });\n }\n else {\n existingArg.value = argument.value;\n }\n }\n else {\n result.push(argument);\n }\n }\n return result;\n}\nfunction deduplicateDirectives(directives) {\n return directives\n .map((directive, i, all) => {\n const firstAt = all.findIndex(d => d.name.value === directive.name.value);\n if (firstAt !== i) {\n const dup = all[firstAt];\n directive.arguments = mergeArguments(directive.arguments, dup.arguments);\n return null;\n }\n return directive;\n })\n .filter(isSome);\n}\nfunction mergeDirectives(d1 = [], d2 = [], config) {\n const reverseOrder = config && config.reverseDirectives;\n const asNext = reverseOrder ? d1 : d2;\n const asFirst = reverseOrder ? d2 : d1;\n const result = deduplicateDirectives([...asNext]);\n for (const directive of asFirst) {\n if (directiveAlreadyExists(result, directive)) {\n const existingDirectiveIndex = result.findIndex(d => d.name.value === directive.name.value);\n const existingDirective = result[existingDirectiveIndex];\n result[existingDirectiveIndex].arguments = mergeArguments(directive.arguments || [], existingDirective.arguments || []);\n }\n else {\n result.push(directive);\n }\n }\n return result;\n}\nfunction validateInputs(node, existingNode) {\n const printedNode = print({\n ...node,\n description: undefined,\n });\n const printedExistingNode = print({\n ...existingNode,\n description: undefined,\n });\n // eslint-disable-next-line\n const leaveInputs = new RegExp('(directive @w*d*)|( on .*$)', 'g');\n const sameArguments = printedNode.replace(leaveInputs, '') === printedExistingNode.replace(leaveInputs, '');\n if (!sameArguments) {\n throw new Error(`Unable to merge GraphQL directive \"${node.name.value}\". \\nExisting directive: \\n\\t${printedExistingNode} \\nReceived directive: \\n\\t${printedNode}`);\n }\n}\nfunction mergeDirective(node, existingNode) {\n if (existingNode) {\n validateInputs(node, existingNode);\n return {\n ...node,\n locations: [\n ...existingNode.locations,\n ...node.locations.filter(name => !nameAlreadyExists(name, existingNode.locations)),\n ],\n };\n }\n return node;\n}\nfunction deduplicateLists(source, target, filterFn) {\n return source.concat(target.filter(val => filterFn(val, source)));\n}\n\nfunction mergeEnumValues(first, second, config) {\n if (config === null || config === void 0 ? void 0 : config.consistentEnumMerge) {\n const reversed = [];\n if (first) {\n reversed.push(...first);\n }\n first = second;\n second = reversed;\n }\n const enumValueMap = new Map();\n if (first) {\n for (const firstValue of first) {\n enumValueMap.set(firstValue.name.value, firstValue);\n }\n }\n if (second) {\n for (const secondValue of second) {\n const enumValue = secondValue.name.value;\n if (enumValueMap.has(enumValue)) {\n const firstValue = enumValueMap.get(enumValue);\n firstValue.description = secondValue.description || firstValue.description;\n firstValue.directives = mergeDirectives(secondValue.directives, firstValue.directives);\n }\n else {\n enumValueMap.set(enumValue, secondValue);\n }\n }\n }\n const result = [...enumValueMap.values()];\n if (config && config.sort) {\n result.sort(compareNodes);\n }\n return result;\n}\n\nfunction mergeEnum(e1, e2, config) {\n if (e2) {\n return {\n name: e1.name,\n description: e1['description'] || e2['description'],\n kind: (config === null || config === void 0 ? void 0 : config.convertExtensions) || e1.kind === 'EnumTypeDefinition' || e2.kind === 'EnumTypeDefinition'\n ? 'EnumTypeDefinition'\n : 'EnumTypeExtension',\n loc: e1.loc,\n directives: mergeDirectives(e1.directives, e2.directives, config),\n values: mergeEnumValues(e1.values, e2.values, config),\n };\n }\n return (config === null || config === void 0 ? void 0 : config.convertExtensions)\n ? {\n ...e1,\n kind: Kind.ENUM_TYPE_DEFINITION,\n }\n : e1;\n}\n\nfunction isStringTypes(types) {\n return typeof types === 'string';\n}\nfunction isSourceTypes(types) {\n return types instanceof Source;\n}\nfunction extractType(type) {\n let visitedType = type;\n while (visitedType.kind === Kind.LIST_TYPE || visitedType.kind === 'NonNullType') {\n visitedType = visitedType.type;\n }\n return visitedType;\n}\nfunction isWrappingTypeNode(type) {\n return type.kind !== Kind.NAMED_TYPE;\n}\nfunction isListTypeNode(type) {\n return type.kind === Kind.LIST_TYPE;\n}\nfunction isNonNullTypeNode(type) {\n return type.kind === Kind.NON_NULL_TYPE;\n}\nfunction printTypeNode(type) {\n if (isListTypeNode(type)) {\n return `[${printTypeNode(type.type)}]`;\n }\n if (isNonNullTypeNode(type)) {\n return `${printTypeNode(type.type)}!`;\n }\n return type.name.value;\n}\nvar CompareVal;\n(function (CompareVal) {\n CompareVal[CompareVal[\"A_SMALLER_THAN_B\"] = -1] = \"A_SMALLER_THAN_B\";\n CompareVal[CompareVal[\"A_EQUALS_B\"] = 0] = \"A_EQUALS_B\";\n CompareVal[CompareVal[\"A_GREATER_THAN_B\"] = 1] = \"A_GREATER_THAN_B\";\n})(CompareVal || (CompareVal = {}));\nfunction defaultStringComparator(a, b) {\n if (a == null && b == null) {\n return CompareVal.A_EQUALS_B;\n }\n if (a == null) {\n return CompareVal.A_SMALLER_THAN_B;\n }\n if (b == null) {\n return CompareVal.A_GREATER_THAN_B;\n }\n if (a < b)\n return CompareVal.A_SMALLER_THAN_B;\n if (a > b)\n return CompareVal.A_GREATER_THAN_B;\n return CompareVal.A_EQUALS_B;\n}\n\nfunction fieldAlreadyExists(fieldsArr, otherField, config) {\n const result = fieldsArr.find(field => field.name.value === otherField.name.value);\n if (result && !(config === null || config === void 0 ? void 0 : config.ignoreFieldConflicts)) {\n const t1 = extractType(result.type);\n const t2 = extractType(otherField.type);\n if (t1.name.value !== t2.name.value) {\n throw new Error(`Field \"${otherField.name.value}\" already defined with a different type. Declared as \"${t1.name.value}\", but you tried to override with \"${t2.name.value}\"`);\n }\n }\n return !!result;\n}\nfunction mergeFields(type, f1, f2, config) {\n const result = [];\n if (f2 != null) {\n result.push(...f2);\n }\n if (f1 != null) {\n for (const field of f1) {\n if (fieldAlreadyExists(result, field, config)) {\n const existing = result.find((f) => f.name.value === field.name.value);\n if (!(config === null || config === void 0 ? void 0 : config.ignoreFieldConflicts)) {\n if (config === null || config === void 0 ? void 0 : config.throwOnConflict) {\n preventConflicts(type, existing, field, false);\n }\n else {\n preventConflicts(type, existing, field, true);\n }\n if (isNonNullTypeNode(field.type) && !isNonNullTypeNode(existing.type)) {\n existing.type = field.type;\n }\n }\n existing.arguments = mergeArguments$1(field['arguments'] || [], existing.arguments || [], config);\n existing.directives = mergeDirectives(field.directives, existing.directives, config);\n existing.description = field.description || existing.description;\n }\n else {\n result.push(field);\n }\n }\n }\n if (config && config.sort) {\n result.sort(compareNodes);\n }\n if (config && config.exclusions) {\n const exclusions = config.exclusions;\n return result.filter(field => !exclusions.includes(`${type.name.value}.${field.name.value}`));\n }\n return result;\n}\nfunction preventConflicts(type, a, b, ignoreNullability = false) {\n const aType = printTypeNode(a.type);\n const bType = printTypeNode(b.type);\n if (aType !== bType && !safeChangeForFieldType(a.type, b.type, ignoreNullability)) {\n throw new Error(`Field '${type.name.value}.${a.name.value}' changed type from '${aType}' to '${bType}'`);\n }\n}\nfunction safeChangeForFieldType(oldType, newType, ignoreNullability = false) {\n // both are named\n if (!isWrappingTypeNode(oldType) && !isWrappingTypeNode(newType)) {\n return oldType.toString() === newType.toString();\n }\n // new is non-null\n if (isNonNullTypeNode(newType)) {\n const ofType = isNonNullTypeNode(oldType) ? oldType.type : oldType;\n return safeChangeForFieldType(ofType, newType.type);\n }\n // old is non-null\n if (isNonNullTypeNode(oldType)) {\n return safeChangeForFieldType(newType, oldType, ignoreNullability);\n }\n // old is list\n if (isListTypeNode(oldType)) {\n return ((isListTypeNode(newType) && safeChangeForFieldType(oldType.type, newType.type)) ||\n (isNonNullTypeNode(newType) && safeChangeForFieldType(oldType, newType['type'])));\n }\n return false;\n}\n\nfunction mergeInputType(node, existingNode, config) {\n if (existingNode) {\n try {\n return {\n name: node.name,\n description: node['description'] || existingNode['description'],\n kind: (config === null || config === void 0 ? void 0 : config.convertExtensions) ||\n node.kind === 'InputObjectTypeDefinition' ||\n existingNode.kind === 'InputObjectTypeDefinition'\n ? 'InputObjectTypeDefinition'\n : 'InputObjectTypeExtension',\n loc: node.loc,\n fields: mergeFields(node, node.fields, existingNode.fields, config),\n directives: mergeDirectives(node.directives, existingNode.directives, config),\n };\n }\n catch (e) {\n throw new Error(`Unable to merge GraphQL input type \"${node.name.value}\": ${e.message}`);\n }\n }\n return (config === null || config === void 0 ? void 0 : config.convertExtensions)\n ? {\n ...node,\n kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,\n }\n : node;\n}\n\nfunction mergeInterface(node, existingNode, config) {\n if (existingNode) {\n try {\n return {\n name: node.name,\n description: node['description'] || existingNode['description'],\n kind: (config === null || config === void 0 ? void 0 : config.convertExtensions) ||\n node.kind === 'InterfaceTypeDefinition' ||\n existingNode.kind === 'InterfaceTypeDefinition'\n ? 'InterfaceTypeDefinition'\n : 'InterfaceTypeExtension',\n loc: node.loc,\n fields: mergeFields(node, node.fields, existingNode.fields, config),\n directives: mergeDirectives(node.directives, existingNode.directives, config),\n interfaces: node['interfaces']\n ? mergeNamedTypeArray(node['interfaces'], existingNode['interfaces'], config)\n : undefined,\n };\n }\n catch (e) {\n throw new Error(`Unable to merge GraphQL interface \"${node.name.value}\": ${e.message}`);\n }\n }\n return (config === null || config === void 0 ? void 0 : config.convertExtensions)\n ? {\n ...node,\n kind: Kind.INTERFACE_TYPE_DEFINITION,\n }\n : node;\n}\n\nfunction alreadyExists(arr, other) {\n return !!arr.find(i => i.name.value === other.name.value);\n}\nfunction mergeNamedTypeArray(first = [], second = [], config = {}) {\n const result = [...second, ...first.filter(d => !alreadyExists(second, d))];\n if (config && config.sort) {\n result.sort(compareNodes);\n }\n return result;\n}\n\nfunction mergeType(node, existingNode, config) {\n if (existingNode) {\n try {\n return {\n name: node.name,\n description: node['description'] || existingNode['description'],\n kind: (config === null || config === void 0 ? void 0 : config.convertExtensions) ||\n node.kind === 'ObjectTypeDefinition' ||\n existingNode.kind === 'ObjectTypeDefinition'\n ? 'ObjectTypeDefinition'\n : 'ObjectTypeExtension',\n loc: node.loc,\n fields: mergeFields(node, node.fields, existingNode.fields, config),\n directives: mergeDirectives(node.directives, existingNode.directives, config),\n interfaces: mergeNamedTypeArray(node.interfaces, existingNode.interfaces, config),\n };\n }\n catch (e) {\n throw new Error(`Unable to merge GraphQL type \"${node.name.value}\": ${e.message}`);\n }\n }\n return (config === null || config === void 0 ? void 0 : config.convertExtensions)\n ? {\n ...node,\n kind: Kind.OBJECT_TYPE_DEFINITION,\n }\n : node;\n}\n\nfunction mergeScalar(node, existingNode, config) {\n if (existingNode) {\n return {\n name: node.name,\n description: node['description'] || existingNode['description'],\n kind: (config === null || config === void 0 ? void 0 : config.convertExtensions) ||\n node.kind === 'ScalarTypeDefinition' ||\n existingNode.kind === 'ScalarTypeDefinition'\n ? 'ScalarTypeDefinition'\n : 'ScalarTypeExtension',\n loc: node.loc,\n directives: mergeDirectives(node.directives, existingNode.directives, config),\n };\n }\n return (config === null || config === void 0 ? void 0 : config.convertExtensions)\n ? {\n ...node,\n kind: Kind.SCALAR_TYPE_DEFINITION,\n }\n : node;\n}\n\nfunction mergeUnion(first, second, config) {\n if (second) {\n return {\n name: first.name,\n description: first['description'] || second['description'],\n // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility\n directives: mergeDirectives(first.directives, second.directives, config),\n kind: (config === null || config === void 0 ? void 0 : config.convertExtensions) || first.kind === 'UnionTypeDefinition' || second.kind === 'UnionTypeDefinition'\n ? Kind.UNION_TYPE_DEFINITION\n : Kind.UNION_TYPE_EXTENSION,\n loc: first.loc,\n types: mergeNamedTypeArray(first.types, second.types, config),\n };\n }\n return (config === null || config === void 0 ? void 0 : config.convertExtensions)\n ? {\n ...first,\n kind: Kind.UNION_TYPE_DEFINITION,\n }\n : first;\n}\n\nconst DEFAULT_OPERATION_TYPE_NAME_MAP = {\n query: 'Query',\n mutation: 'Mutation',\n subscription: 'Subscription',\n};\nfunction mergeOperationTypes(opNodeList = [], existingOpNodeList = []) {\n const finalOpNodeList = [];\n for (const opNodeType in DEFAULT_OPERATION_TYPE_NAME_MAP) {\n const opNode = opNodeList.find(n => n.operation === opNodeType) || existingOpNodeList.find(n => n.operation === opNodeType);\n if (opNode) {\n finalOpNodeList.push(opNode);\n }\n }\n return finalOpNodeList;\n}\nfunction mergeSchemaDefs(node, existingNode, config) {\n if (existingNode) {\n return {\n kind: node.kind === Kind.SCHEMA_DEFINITION || existingNode.kind === Kind.SCHEMA_DEFINITION\n ? Kind.SCHEMA_DEFINITION\n : Kind.SCHEMA_EXTENSION,\n description: node['description'] || existingNode['description'],\n directives: mergeDirectives(node.directives, existingNode.directives, config),\n operationTypes: mergeOperationTypes(node.operationTypes, existingNode.operationTypes),\n };\n }\n return ((config === null || config === void 0 ? void 0 : config.convertExtensions)\n ? {\n ...node,\n kind: Kind.SCHEMA_DEFINITION,\n }\n : node);\n}\n\nconst schemaDefSymbol = 'SCHEMA_DEF_SYMBOL';\nfunction isNamedDefinitionNode(definitionNode) {\n return 'name' in definitionNode;\n}\nfunction mergeGraphQLNodes(nodes, config) {\n var _a, _b, _c;\n const mergedResultMap = {};\n for (const nodeDefinition of nodes) {\n if (isNamedDefinitionNode(nodeDefinition)) {\n const name = (_a = nodeDefinition.name) === null || _a === void 0 ? void 0 : _a.value;\n if (config === null || config === void 0 ? void 0 : config.commentDescriptions) {\n collectComment(nodeDefinition);\n }\n if (name == null) {\n continue;\n }\n if (((_b = config === null || config === void 0 ? void 0 : config.exclusions) === null || _b === void 0 ? void 0 : _b.includes(name + '.*')) || ((_c = config === null || config === void 0 ? void 0 : config.exclusions) === null || _c === void 0 ? void 0 : _c.includes(name))) {\n delete mergedResultMap[name];\n }\n else {\n switch (nodeDefinition.kind) {\n case Kind.OBJECT_TYPE_DEFINITION:\n case Kind.OBJECT_TYPE_EXTENSION:\n mergedResultMap[name] = mergeType(nodeDefinition, mergedResultMap[name], config);\n break;\n case Kind.ENUM_TYPE_DEFINITION:\n case Kind.ENUM_TYPE_EXTENSION:\n mergedResultMap[name] = mergeEnum(nodeDefinition, mergedResultMap[name], config);\n break;\n case Kind.UNION_TYPE_DEFINITION:\n case Kind.UNION_TYPE_EXTENSION:\n mergedResultMap[name] = mergeUnion(nodeDefinition, mergedResultMap[name], config);\n break;\n case Kind.SCALAR_TYPE_DEFINITION:\n case Kind.SCALAR_TYPE_EXTENSION:\n mergedResultMap[name] = mergeScalar(nodeDefinition, mergedResultMap[name], config);\n break;\n case Kind.INPUT_OBJECT_TYPE_DEFINITION:\n case Kind.INPUT_OBJECT_TYPE_EXTENSION:\n mergedResultMap[name] = mergeInputType(nodeDefinition, mergedResultMap[name], config);\n break;\n case Kind.INTERFACE_TYPE_DEFINITION:\n case Kind.INTERFACE_TYPE_EXTENSION:\n mergedResultMap[name] = mergeInterface(nodeDefinition, mergedResultMap[name], config);\n break;\n case Kind.DIRECTIVE_DEFINITION:\n mergedResultMap[name] = mergeDirective(nodeDefinition, mergedResultMap[name]);\n break;\n }\n }\n }\n else if (nodeDefinition.kind === Kind.SCHEMA_DEFINITION || nodeDefinition.kind === Kind.SCHEMA_EXTENSION) {\n mergedResultMap[schemaDefSymbol] = mergeSchemaDefs(nodeDefinition, mergedResultMap[schemaDefSymbol], config);\n }\n }\n return mergedResultMap;\n}\n\nfunction mergeTypeDefs(typeSource, config) {\n resetComments();\n const doc = {\n kind: Kind.DOCUMENT,\n definitions: mergeGraphQLTypes(typeSource, {\n useSchemaDefinition: true,\n forceSchemaDefinition: false,\n throwOnConflict: false,\n commentDescriptions: false,\n ...config,\n }),\n };\n let result;\n if (config === null || config === void 0 ? void 0 : config.commentDescriptions) {\n result = printWithComments(doc);\n }\n else {\n result = doc;\n }\n resetComments();\n return result;\n}\nfunction visitTypeSources(typeSource, options, allNodes = [], visitedTypeSources = new Set()) {\n if (typeSource && !visitedTypeSources.has(typeSource)) {\n visitedTypeSources.add(typeSource);\n if (typeof typeSource === 'function') {\n visitTypeSources(typeSource(), options, allNodes, visitedTypeSources);\n }\n else if (Array.isArray(typeSource)) {\n for (const type of typeSource) {\n visitTypeSources(type, options, allNodes, visitedTypeSources);\n }\n }\n else if (isSchema(typeSource)) {\n const documentNode = getDocumentNodeFromSchema(typeSource, options);\n visitTypeSources(documentNode.definitions, options, allNodes, visitedTypeSources);\n }\n else if (isStringTypes(typeSource) || isSourceTypes(typeSource)) {\n const documentNode = parse(typeSource, options);\n visitTypeSources(documentNode.definitions, options, allNodes, visitedTypeSources);\n }\n else if (typeof typeSource === 'object' && isDefinitionNode(typeSource)) {\n allNodes.push(typeSource);\n }\n else if (isDocumentNode(typeSource)) {\n visitTypeSources(typeSource.definitions, options, allNodes, visitedTypeSources);\n }\n else {\n throw new Error(`typeDefs must contain only strings, documents, schemas, or functions, got ${typeof typeSource}`);\n }\n }\n return allNodes;\n}\nfunction mergeGraphQLTypes(typeSource, config) {\n var _a, _b, _c;\n resetComments();\n const allNodes = visitTypeSources(typeSource, config);\n const mergedNodes = mergeGraphQLNodes(allNodes, config);\n if (config === null || config === void 0 ? void 0 : config.useSchemaDefinition) {\n // XXX: right now we don't handle multiple schema definitions\n const schemaDef = mergedNodes[schemaDefSymbol] || {\n kind: Kind.SCHEMA_DEFINITION,\n operationTypes: [],\n };\n const operationTypes = schemaDef.operationTypes;\n for (const opTypeDefNodeType in DEFAULT_OPERATION_TYPE_NAME_MAP) {\n const opTypeDefNode = operationTypes.find(operationType => operationType.operation === opTypeDefNodeType);\n if (!opTypeDefNode) {\n const possibleRootTypeName = DEFAULT_OPERATION_TYPE_NAME_MAP[opTypeDefNodeType];\n const existingPossibleRootType = mergedNodes[possibleRootTypeName];\n if (existingPossibleRootType != null && existingPossibleRootType.name != null) {\n operationTypes.push({\n kind: Kind.OPERATION_TYPE_DEFINITION,\n type: {\n kind: Kind.NAMED_TYPE,\n name: existingPossibleRootType.name,\n },\n operation: opTypeDefNodeType,\n });\n }\n }\n }\n if (((_a = schemaDef === null || schemaDef === void 0 ? void 0 : schemaDef.operationTypes) === null || _a === void 0 ? void 0 : _a.length) != null && schemaDef.operationTypes.length > 0) {\n mergedNodes[schemaDefSymbol] = schemaDef;\n }\n }\n if ((config === null || config === void 0 ? void 0 : config.forceSchemaDefinition) && !((_c = (_b = mergedNodes[schemaDefSymbol]) === null || _b === void 0 ? void 0 : _b.operationTypes) === null || _c === void 0 ? void 0 : _c.length)) {\n mergedNodes[schemaDefSymbol] = {\n kind: Kind.SCHEMA_DEFINITION,\n operationTypes: [\n {\n kind: Kind.OPERATION_TYPE_DEFINITION,\n operation: 'query',\n type: {\n kind: Kind.NAMED_TYPE,\n name: {\n kind: Kind.NAME,\n value: 'Query',\n },\n },\n },\n ],\n };\n }\n const mergedNodeDefinitions = Object.values(mergedNodes);\n if (config === null || config === void 0 ? void 0 : config.sort) {\n const sortFn = typeof config.sort === 'function' ? config.sort : defaultStringComparator;\n mergedNodeDefinitions.sort((a, b) => { var _a, _b; return sortFn((_a = a.name) === null || _a === void 0 ? void 0 : _a.value, (_b = b.name) === null || _b === void 0 ? void 0 : _b.value); });\n }\n return mergedNodeDefinitions;\n}\n\nfunction mergeExtensions(extensions) {\n return mergeDeep(extensions);\n}\nfunction applyExtensionObject(obj, extensions) {\n if (!obj) {\n return;\n }\n obj.extensions = mergeDeep([obj.extensions || {}, extensions || {}]);\n}\nfunction applyExtensions(schema, extensions) {\n applyExtensionObject(schema, extensions.schemaExtensions);\n for (const [typeName, data] of Object.entries(extensions.types || {})) {\n const type = schema.getType(typeName);\n if (type) {\n applyExtensionObject(type, data.extensions);\n if (data.type === 'object' || data.type === 'interface') {\n for (const [fieldName, fieldData] of Object.entries(data.fields)) {\n const field = type.getFields()[fieldName];\n if (field) {\n applyExtensionObject(field, fieldData.extensions);\n for (const [arg, argData] of Object.entries(fieldData.arguments)) {\n applyExtensionObject(field.args.find(a => a.name === arg), argData);\n }\n }\n }\n }\n else if (data.type === 'input') {\n for (const [fieldName, fieldData] of Object.entries(data.fields)) {\n const field = type.getFields()[fieldName];\n applyExtensionObject(field, fieldData.extensions);\n }\n }\n else if (data.type === 'enum') {\n for (const [valueName, valueData] of Object.entries(data.values)) {\n const value = type.getValue(valueName);\n applyExtensionObject(value, valueData);\n }\n }\n }\n }\n return schema;\n}\n\n/**\n * Builds a schema from the provided type definitions and resolvers.\n *\n * The type definitions are written using Schema Definition Language (SDL). They\n * can be provided as a string, a `DocumentNode`, a function, or an array of any\n * of these. If a function is provided, it will be passed no arguments and\n * should return an array of strings or `DocumentNode`s.\n *\n * Note: You can use GraphQL magic comment provide additional syntax\n * highlighting in your editor (with the appropriate editor plugin).\n *\n * ```js\n * const typeDefs = /* GraphQL *\\/ `\n * type Query {\n * posts: [Post]\n * author(id: Int!): Author\n * }\n * `;\n * ```\n *\n * The `resolvers` object should be a map of type names to nested object, which\n * themselves map the type's fields to their appropriate resolvers.\n * See the [Resolvers](/docs/resolvers) section of the documentation for more details.\n *\n * ```js\n * const resolvers = {\n * Query: {\n * posts: (obj, args, ctx, info) => getAllPosts(),\n * author: (obj, args, ctx, info) => getAuthorById(args.id)\n * }\n * };\n * ```\n *\n * Once you've defined both the `typeDefs` and `resolvers`, you can create your\n * schema:\n *\n * ```js\n * const schema = makeExecutableSchema({\n * typeDefs,\n * resolvers,\n * })\n * ```\n */\nfunction makeExecutableSchema({ typeDefs, resolvers = {}, resolverValidationOptions = {}, inheritResolversFromInterfaces = false, updateResolversInPlace = false, schemaExtensions, ...otherOptions }) {\n // Validate and clean up arguments\n if (typeof resolverValidationOptions !== 'object') {\n throw new Error('Expected `resolverValidationOptions` to be an object');\n }\n if (!typeDefs) {\n throw new Error('Must provide typeDefs');\n }\n let schema;\n if (isSchema(typeDefs)) {\n schema = typeDefs;\n }\n else if (otherOptions === null || otherOptions === void 0 ? void 0 : otherOptions.commentDescriptions) {\n const mergedTypeDefs = mergeTypeDefs(typeDefs, {\n ...otherOptions,\n commentDescriptions: true,\n });\n schema = buildSchema(mergedTypeDefs, otherOptions);\n }\n else {\n const mergedTypeDefs = mergeTypeDefs(typeDefs, otherOptions);\n schema = buildASTSchema(mergedTypeDefs, otherOptions);\n }\n // We allow passing in an array of resolver maps, in which case we merge them\n schema = addResolversToSchema({\n schema,\n resolvers: mergeResolvers(resolvers),\n resolverValidationOptions,\n inheritResolversFromInterfaces,\n updateResolversInPlace,\n });\n if (Object.keys(resolverValidationOptions).length > 0) {\n assertResolversPresent(schema, resolverValidationOptions);\n }\n if (schemaExtensions) {\n schemaExtensions = mergeExtensions(asArray$1(schemaExtensions));\n applyExtensions(schema, schemaExtensions);\n }\n return schema;\n}\n\nvar fetch$1 = globalThis.fetch; // To enable: import {fetch} from 'cross-fetch'\nvar Request$1 = globalThis.Request;\nvar Response$1 = globalThis.Response;\nvar ReadableStream = globalThis.ReadableStream;\n\nasync function processRequest({ request, params, enveloped, fetchAPI, onResultProcessHooks, }) {\n // Parse GraphQLParams\n const document = enveloped.parse(params.query);\n // Validate parsed Document Node\n enveloped.validate(enveloped.schema, document);\n // Build the context for the execution\n const contextValue = (await enveloped.contextFactory());\n const executionArgs = {\n schema: enveloped.schema,\n document,\n contextValue,\n variableValues: params.variables,\n operationName: params.operationName,\n };\n // Get the actual operation\n const operation = getOperationAST(document, params.operationName);\n // Choose the right executor\n const executeFn = (operation === null || operation === void 0 ? void 0 : operation.operation) === 'subscription'\n ? enveloped.subscribe\n : enveloped.execute;\n // Get the result to be processed\n const result = await executeFn(executionArgs);\n let resultProcessor;\n for (const onResultProcessHook of onResultProcessHooks) {\n await onResultProcessHook({\n request,\n result,\n resultProcessor,\n setResultProcessor(newResultProcessor) {\n resultProcessor = newResultProcessor;\n },\n });\n }\n // If no result processor found for this result, return an error\n if (!resultProcessor) {\n return new fetchAPI.Response(null, {\n status: 406,\n statusText: 'Not Acceptable',\n });\n }\n return resultProcessor(result, fetchAPI);\n}\n\nfunction getCORSHeadersByRequestAndOptions(request, corsOptions) {\n var _a, _b;\n const headers = {};\n if (corsOptions === false) {\n return headers;\n }\n // If defined origins have '*' or undefined by any means, we should allow all origins\n if (corsOptions.origin == null ||\n corsOptions.origin.length === 0 ||\n corsOptions.origin.includes('*')) {\n const currentOrigin = request.headers.get('origin');\n // If origin is available in the headers, use it\n if (currentOrigin != null) {\n headers['Access-Control-Allow-Origin'] = currentOrigin;\n // Vary by origin because there are multiple origins\n headers['Vary'] = 'Origin';\n }\n else {\n headers['Access-Control-Allow-Origin'] = '*';\n }\n }\n else if (typeof corsOptions.origin === 'string') {\n // If there is one specific origin is specified, use it directly\n headers['Access-Control-Allow-Origin'] = corsOptions.origin;\n }\n else if (Array.isArray(corsOptions.origin)) {\n // If there is only one origin defined in the array, consider it as a single one\n if (corsOptions.origin.length === 1) {\n headers['Access-Control-Allow-Origin'] = corsOptions.origin[0];\n }\n else {\n const currentOrigin = request.headers.get('origin');\n if (currentOrigin != null && corsOptions.origin.includes(currentOrigin)) {\n // If origin is available in the headers, use it\n headers['Access-Control-Allow-Origin'] = currentOrigin;\n // Vary by origin because there are multiple origins\n headers['Vary'] = 'Origin';\n }\n else {\n // There is no origin found in the headers, so we should return null\n headers['Access-Control-Allow-Origin'] = 'null';\n }\n }\n }\n if ((_a = corsOptions.methods) === null || _a === void 0 ? void 0 : _a.length) {\n headers['Access-Control-Allow-Methods'] = corsOptions.methods.join(', ');\n }\n else {\n const requestMethod = request.headers.get('access-control-request-method');\n if (requestMethod) {\n headers['Access-Control-Allow-Methods'] = requestMethod;\n }\n }\n if ((_b = corsOptions.allowedHeaders) === null || _b === void 0 ? void 0 : _b.length) {\n headers['Access-Control-Allow-Headers'] =\n corsOptions.allowedHeaders.join(', ');\n }\n else {\n const requestHeaders = request.headers.get('access-control-request-headers');\n if (requestHeaders) {\n headers['Access-Control-Allow-Headers'] = requestHeaders;\n if (headers['Vary']) {\n headers['Vary'] += ', Access-Control-Request-Headers';\n }\n headers['Vary'] = 'Access-Control-Request-Headers';\n }\n }\n if (corsOptions.credentials != null) {\n if (corsOptions.credentials === true) {\n headers['Access-Control-Allow-Credentials'] = 'true';\n }\n }\n else if (headers['Access-Control-Allow-Origin'] !== '*') {\n headers['Access-Control-Allow-Credentials'] = 'true';\n }\n if (corsOptions.exposedHeaders) {\n headers['Access-Control-Expose-Headers'] =\n corsOptions.exposedHeaders.join(', ');\n }\n if (corsOptions.maxAge) {\n headers['Access-Control-Max-Age'] = corsOptions.maxAge.toString();\n }\n return headers;\n}\nasync function getCORSResponseHeaders(request, corsOptionsFactory, serverContext) {\n const corsOptions = await corsOptionsFactory(request, serverContext);\n return getCORSHeadersByRequestAndOptions(request, corsOptions);\n}\nfunction useCORS(options) {\n let corsOptionsFactory = () => ({});\n if (options != null) {\n if (typeof options === 'function') {\n corsOptionsFactory = options;\n }\n else if (typeof options === 'object') {\n const corsOptions = {\n ...options,\n };\n corsOptionsFactory = () => corsOptions;\n }\n else if (options === false) {\n corsOptionsFactory = () => false;\n }\n }\n return {\n async onRequest({ request, serverContext, fetchAPI, endResponse }) {\n if (request.method.toUpperCase() === 'OPTIONS') {\n const headers = await getCORSResponseHeaders(request, corsOptionsFactory, serverContext);\n const response = new fetchAPI.Response(null, {\n status: 204,\n headers: {\n ...headers,\n 'Content-Length': '0',\n },\n });\n endResponse(response);\n }\n },\n async onResponse({ request, serverContext, response }) {\n const headers = await getCORSResponseHeaders(request, corsOptionsFactory, serverContext);\n for (const headerName in headers) {\n response.headers.set(headerName, headers[headerName]);\n }\n },\n };\n}\n\nfunction useHealthCheck(options) {\n const id = (options === null || options === void 0 ? void 0 : options.id) || Date.now().toString();\n const logger = (options === null || options === void 0 ? void 0 : options.logger) || console;\n return {\n async onRequest({ request, endResponse, fetchAPI }) {\n const requestPath = request.url.split('?')[0];\n if (requestPath.endsWith('/health')) {\n logger.debug(`Responding Health Check`);\n const response = new fetchAPI.Response(JSON.stringify({\n message: 'alive',\n }), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n 'x-yoga-id': id,\n },\n });\n endResponse(response);\n }\n else if (requestPath.endsWith('/readiness')) {\n logger.debug(`Responding Readiness Check`);\n const readinessResponse = await fetchAPI.fetch(request.url.replace('/readiness', '/health'));\n const { message } = await readinessResponse.json();\n if (readinessResponse.status === 200 &&\n readinessResponse.headers.get('x-yoga-id') === id &&\n message === 'alive') {\n const response = new fetchAPI.Response(JSON.stringify({\n message: 'ready',\n }), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n endResponse(response);\n }\n else {\n throw createGraphQLError(`Readiness check failed with status ${readinessResponse.status}`);\n }\n }\n },\n };\n}\n\nvar graphiqlHTML = \"__TITLE__
\";\n\nfunction shouldRenderGraphiQL({ headers, method }) {\n var _a;\n return method === 'GET' && !!((_a = headers === null || headers === void 0 ? void 0 : headers.get('accept')) === null || _a === void 0 ? void 0 : _a.includes('text/html'));\n}\nconst renderGraphiQL = (opts) => graphiqlHTML\n .replace('__TITLE__', (opts === null || opts === void 0 ? void 0 : opts.title) || 'Yoga GraphiQL')\n .replace('__OPTS__', JSON.stringify(opts !== null && opts !== void 0 ? opts : {}));\nfunction useGraphiQL(config) {\n var _a, _b;\n const logger = (_a = config === null || config === void 0 ? void 0 : config.logger) !== null && _a !== void 0 ? _a : console;\n let graphiqlOptionsFactory;\n if (typeof (config === null || config === void 0 ? void 0 : config.options) === 'function') {\n graphiqlOptionsFactory = config === null || config === void 0 ? void 0 : config.options;\n }\n else if (typeof (config === null || config === void 0 ? void 0 : config.options) === 'object') {\n graphiqlOptionsFactory = () => config === null || config === void 0 ? void 0 : config.options;\n }\n else if ((config === null || config === void 0 ? void 0 : config.options) === false) {\n graphiqlOptionsFactory = () => false;\n }\n else {\n graphiqlOptionsFactory = () => ({});\n }\n const renderer = (_b = config === null || config === void 0 ? void 0 : config.render) !== null && _b !== void 0 ? _b : renderGraphiQL;\n return {\n async onRequest({ request, serverContext, fetchAPI, endResponse }) {\n const requestPath = request.url.split('?')[0];\n if ((config === null || config === void 0 ? void 0 : config.endpoint) != null && !requestPath.endsWith(config === null || config === void 0 ? void 0 : config.endpoint)) {\n logger.debug(`Responding 404 Not Found`);\n const response = new fetchAPI.Response(`Unable to ${request.method} ${requestPath}`, {\n status: 404,\n statusText: `Not Found`,\n });\n endResponse(response);\n }\n else if (shouldRenderGraphiQL(request)) {\n logger.debug(`Rendering GraphiQL`);\n const graphiqlOptions = graphiqlOptionsFactory(request, serverContext);\n if (graphiqlOptions) {\n const graphiQLBody = await renderer({\n endpoint: config === null || config === void 0 ? void 0 : config.endpoint,\n ...(graphiqlOptions === true ? {} : graphiqlOptions),\n });\n const response = new fetchAPI.Response(graphiQLBody, {\n headers: {\n 'Content-Type': 'text/html',\n },\n status: 200,\n });\n endResponse(response);\n }\n }\n },\n };\n}\n\nconst DEFAULT_MATCHER = () => true;\nfunction useRequestParser(options) {\n const matchFn = options.match || DEFAULT_MATCHER;\n return {\n onRequestParse({ request, setRequestParser }) {\n if (matchFn(request)) {\n setRequestParser(function useRequestParserFn(request) {\n return options.parse(request);\n });\n }\n },\n };\n}\n\nfunction parseURLSearchParams(requestBody) {\n const searchParams = new URLSearchParams(requestBody);\n const operationName = searchParams.get('operationName') || undefined;\n const query = searchParams.get('query') || undefined;\n const variablesStr = searchParams.get('variables') || undefined;\n const extensionsStr = searchParams.get('extensions') || undefined;\n return {\n operationName,\n query,\n variables: variablesStr ? JSON.parse(variablesStr) : undefined,\n extensions: extensionsStr ? JSON.parse(extensionsStr) : undefined,\n };\n}\nfunction isContentTypeMatch(request, expectedContentType) {\n const contentType = request.headers.get('content-type');\n return (contentType === expectedContentType ||\n !!(contentType === null || contentType === void 0 ? void 0 : contentType.startsWith(`${expectedContentType};`)));\n}\n\nfunction isGETRequest(request) {\n return request.method === 'GET';\n}\nfunction parseGETRequest(request) {\n const [, searchParamsStr] = request.url.split('?');\n return parseURLSearchParams(searchParamsStr);\n}\n\nfunction isPOSTJsonRequest(request) {\n return request.method === 'POST';\n}\nasync function parsePOSTJsonRequest(request) {\n const requestBody = await request.json();\n return {\n operationName: requestBody.operationName,\n query: requestBody.query,\n variables: requestBody.variables,\n extensions: requestBody.extensions,\n };\n}\n\nfunction dset(obj, keys, val) {\n\tkeys.split && (keys=keys.split('.'));\n\tvar i=0, l=keys.length, t=obj, x, k;\n\twhile (i < l) {\n\t\tk = keys[i++];\n\t\tif (k === '__proto__' || k === 'constructor' || k === 'prototype') break;\n\t\tt = t[k] = (i === l) ? val : (typeof(x=t[k])===typeof(keys)) ? x : (keys[i]*0 !== 0 || !!~(''+keys[i]).indexOf('.')) ? {} : [];\n\t}\n}\n\nfunction isPOSTMultipartRequest(request) {\n return (request.method === 'POST' &&\n isContentTypeMatch(request, 'multipart/form-data'));\n}\nasync function parsePOSTMultipartRequest(request) {\n var _a, _b;\n let requestBody;\n try {\n requestBody = await request.formData();\n }\n catch (e) {\n // Trick for @whatwg-node/fetch errors on Node.js\n // TODO: This needs a better solution\n if (e instanceof Error &&\n e.message.startsWith('File size limit exceeded: ')) {\n throw createGraphQLError(e.message, {\n extensions: {\n http: {\n status: 413,\n },\n },\n });\n }\n throw e;\n }\n const operationsStr = ((_a = requestBody.get('operations')) === null || _a === void 0 ? void 0 : _a.toString()) || '{}';\n const operations = JSON.parse(operationsStr);\n const mapStr = ((_b = requestBody.get('map')) === null || _b === void 0 ? void 0 : _b.toString()) || '{}';\n const map = JSON.parse(mapStr);\n for (const fileIndex in map) {\n const file = requestBody.get(fileIndex);\n const keys = map[fileIndex];\n for (const key of keys) {\n dset(operations, key, file);\n }\n }\n return {\n operationName: operations.operationName,\n query: operations.query,\n variables: operations.variables,\n extensions: operations.extensions,\n };\n}\n\nfunction isPOSTGraphQLStringRequest(request) {\n return (request.method === 'POST' &&\n isContentTypeMatch(request, 'application/graphql'));\n}\nasync function parsePOSTGraphQLStringRequest(request) {\n const requestBody = await request.text();\n return {\n query: requestBody,\n };\n}\n\nfunction useResultProcessor(options) {\n const isMatch = options.match || (() => true);\n return {\n onResultProcess({ request, result, setResultProcessor }) {\n if (isMatch(request, result)) {\n setResultProcessor(options.processResult);\n }\n },\n };\n}\n\nlet encodeString;\nif (globalThis.Buffer) {\n encodeString = function encodeStringWithBuffer(str) {\n return globalThis.Buffer.from(str, 'utf8');\n };\n}\nelse {\n const textEncoder = new TextEncoder();\n encodeString = function encodeStringWithTextEncoder(str) {\n return textEncoder.encode(str);\n };\n}\n\nfunction isRegularResult(request, result) {\n return !isAsyncIterable(result);\n}\nfunction processRegularResult(executionResult, fetchAPI) {\n const responseBody = JSON.stringify(executionResult);\n const decodedString = encodeString(responseBody);\n const headersInit = {\n 'Content-Type': 'application/json',\n 'Content-Length': decodedString.byteLength.toString(),\n };\n const responseInit = {\n headers: headersInit,\n status: 200,\n };\n return new fetchAPI.Response(decodedString, responseInit);\n}\n\nfunction isPushResult(request, result) {\n var _a;\n return (isAsyncIterable$1(result) &&\n !!((_a = request.headers.get('accept')) === null || _a === void 0 ? void 0 : _a.includes('text/event-stream')));\n}\nfunction processPushResult(result, fetchAPI) {\n const headersInit = {\n 'Content-Type': 'text/event-stream',\n Connection: 'keep-alive',\n 'Cache-Control': 'no-cache',\n 'Content-Encoding': 'none',\n };\n const responseInit = {\n headers: headersInit,\n status: 200,\n };\n let iterator;\n const readableStream = new fetchAPI.ReadableStream({\n start() {\n iterator = result[Symbol.asyncIterator]();\n },\n async pull(controller) {\n const { done, value } = await iterator.next();\n if (value != null) {\n const chunk = JSON.stringify(value);\n controller.enqueue(encodeString(`data: ${chunk}\\n\\n`));\n }\n if (done) {\n controller.close();\n }\n },\n async cancel(e) {\n var _a;\n await ((_a = iterator.return) === null || _a === void 0 ? void 0 : _a.call(iterator, e));\n },\n });\n return new fetchAPI.Response(readableStream, responseInit);\n}\n\nfunction isMultipartResult(request, result) {\n var _a;\n return (isAsyncIterable$1(result) &&\n !!((_a = request.headers.get('accept')) === null || _a === void 0 ? void 0 : _a.includes('multipart/mixed')));\n}\nfunction processMultipartResult(executionPatchResultIterable, fetchAPI) {\n const headersInit = {\n Connection: 'keep-alive',\n 'Content-Type': 'multipart/mixed; boundary=\"-\"',\n 'Transfer-Encoding': 'chunked',\n };\n const responseInit = {\n headers: headersInit,\n status: 200,\n };\n let iterator;\n const readableStream = new fetchAPI.ReadableStream({\n start(controller) {\n iterator = executionPatchResultIterable[Symbol.asyncIterator]();\n controller.enqueue(encodeString(`---`));\n },\n async pull(controller) {\n const { done, value } = await iterator.next();\n if (value != null) {\n controller.enqueue(encodeString('\\r\\n'));\n controller.enqueue(encodeString('Content-Type: application/json; charset=utf-8'));\n controller.enqueue(encodeString('\\r\\n'));\n const chunk = JSON.stringify(value);\n const encodedChunk = encodeString(chunk);\n controller.enqueue(encodeString('Content-Length: ' + encodedChunk.byteLength));\n controller.enqueue(encodeString('\\r\\n'));\n controller.enqueue(encodeString('\\r\\n'));\n controller.enqueue(encodedChunk);\n controller.enqueue(encodeString('\\r\\n'));\n controller.enqueue(encodeString('---'));\n }\n if (done) {\n controller.enqueue(encodeString('\\r\\n-----\\r\\n'));\n controller.close();\n }\n },\n async cancel(e) {\n var _a;\n await ((_a = iterator.return) === null || _a === void 0 ? void 0 : _a.call(iterator, e));\n },\n });\n return new fetchAPI.Response(readableStream, responseInit);\n}\n\nfunction isPOSTFormUrlEncodedRequest(request) {\n return (request.method === 'POST' &&\n isContentTypeMatch(request, 'application/x-www-form-urlencoded'));\n}\nasync function parsePOSTFormUrlEncodedRequest(request) {\n const requestBody = await request.text();\n return parseURLSearchParams(requestBody);\n}\n\nfunction isAggregateError(obj) {\n return obj != null && typeof obj === 'object' && 'errors' in obj;\n}\nfunction hasToString(obj) {\n return obj != null && typeof obj.toString === 'function';\n}\nfunction handleError(error, errors = []) {\n if (isAggregateError(error)) {\n for (const singleError of error.errors) {\n errors.push(...handleError(singleError));\n }\n }\n else if (error instanceof GraphQLError) {\n errors.push(error);\n }\n else if (error instanceof Error) {\n errors.push(createGraphQLError(error.message));\n }\n else if (typeof error === 'string') {\n errors.push(createGraphQLError(error));\n }\n else if (hasToString(error)) {\n errors.push(createGraphQLError(error.toString()));\n }\n else {\n errors.push(createGraphQLError('Unexpected error!'));\n }\n return errors;\n}\n\nfunction useCheckMethodForGraphQL() {\n return {\n onRequest({ request }) {\n if (request.method !== 'GET' && request.method !== 'POST') {\n throw createGraphQLError('GraphQL only supports GET and POST requests.', {\n extensions: {\n http: {\n status: 405,\n headers: {\n Allow: 'GET, POST',\n },\n },\n },\n });\n }\n },\n };\n}\n\nfunction useCheckGraphQLQueryParam() {\n return {\n onRequestParse() {\n return {\n onRequestParseDone({ params }) {\n if (params.query == null) {\n throw createGraphQLError('Must provide query string.', {\n extensions: {\n http: {\n status: 400,\n headers: {\n Allow: 'GET, POST',\n },\n },\n },\n });\n }\n const queryParamType = typeof params.query;\n if (queryParamType !== 'string') {\n throw createGraphQLError(`Expected \"query\" to be \"string\" but given \"${queryParamType}\".`, {\n extensions: {\n http: {\n status: 400,\n headers: {\n Allow: 'GET, POST',\n },\n },\n },\n });\n }\n },\n };\n },\n };\n}\n\nfunction useHTTPValidationError() {\n return {\n onValidate() {\n return ({ valid, result }) => {\n if (!valid) {\n result.forEach((error) => {\n error.extensions.http = {\n status: 400,\n };\n });\n throw new AggregateErrorImpl(result);\n }\n };\n },\n };\n}\n\nfunction usePreventMutationViaGET() {\n return {\n onParse() {\n // We should improve this by getting Yoga stuff from the hook params directly instead of the context\n return ({ result, context: { request, operationName } }) => {\n var _a;\n if (result instanceof Error) {\n if (result instanceof GraphQLError) {\n result.extensions.http = {\n status: 400,\n };\n }\n throw result;\n }\n const operation = result\n ? (_a = getOperationAST(result, operationName)) !== null && _a !== void 0 ? _a : undefined\n : undefined;\n if (!operation) {\n throw createGraphQLError('Could not determine what operation to execute.', {\n extensions: {\n http: {\n status: 400,\n },\n },\n });\n }\n if (operation.operation === 'mutation' && request.method === 'GET') {\n throw createGraphQLError('Can only perform a mutation operation from a POST request.', {\n extensions: {\n http: {\n status: 405,\n headers: {\n Allow: 'POST',\n },\n },\n },\n });\n }\n };\n },\n };\n}\n\nfunction getDefaultSchema() {\n return makeExecutableSchema({\n typeDefs: /* GraphQL */ `\n \"\"\"\n Greetings from GraphQL Yoga!\n \"\"\"\n type Query {\n greetings: String\n }\n type Subscription {\n \"\"\"\n Current Time\n \"\"\"\n time: String\n }\n `,\n resolvers: {\n Query: {\n greetings: () => 'This is the `greetings` field of the root `Query` type',\n },\n Subscription: {\n time: {\n async *subscribe() {\n while (true) {\n yield { time: new Date().toISOString() };\n await new Promise((resolve) => setTimeout(resolve, 1000));\n }\n },\n },\n },\n },\n });\n}\n/**\n * Base class that can be extended to create a GraphQL server with any HTTP server framework.\n * @internal\n */\nclass YogaServer {\n constructor(options) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;\n this.handleRequest = async (request, ...args) => {\n const response = await this.getResponse(request, ...args);\n for (const onResponseHook of this.onResponseHooks) {\n await onResponseHook({\n request,\n response,\n serverContext: args[0],\n });\n }\n return response;\n };\n this.fetch = (input, init) => {\n let request;\n if (typeof input === 'string') {\n request = new this.fetchAPI.Request(input, init);\n }\n else {\n request = input;\n }\n return this.handleRequest(request, init);\n };\n // FetchEvent is not available in all envs\n this.fetchEventListener = (event) => event.respondWith(this.handleRequest(event.request, event));\n this.id = (_a = options === null || options === void 0 ? void 0 : options.id) !== null && _a !== void 0 ? _a : 'yoga';\n this.fetchAPI = {\n Request: (_c = (_b = options === null || options === void 0 ? void 0 : options.fetchAPI) === null || _b === void 0 ? void 0 : _b.Request) !== null && _c !== void 0 ? _c : Request$1,\n Response: (_e = (_d = options === null || options === void 0 ? void 0 : options.fetchAPI) === null || _d === void 0 ? void 0 : _d.Response) !== null && _e !== void 0 ? _e : Response$1,\n fetch: (_g = (_f = options === null || options === void 0 ? void 0 : options.fetchAPI) === null || _f === void 0 ? void 0 : _f.fetch) !== null && _g !== void 0 ? _g : fetch$1,\n ReadableStream: (_j = (_h = options === null || options === void 0 ? void 0 : options.fetchAPI) === null || _h === void 0 ? void 0 : _h.ReadableStream) !== null && _j !== void 0 ? _j : ReadableStream,\n };\n const schema = (options === null || options === void 0 ? void 0 : options.schema)\n ? isSchema(options.schema)\n ? options.schema\n : makeExecutableSchema({\n typeDefs: options.schema.typeDefs,\n resolvers: options.schema.resolvers,\n })\n : getDefaultSchema();\n const logger = (options === null || options === void 0 ? void 0 : options.logging) != null ? options.logging : true;\n this.logger =\n typeof logger === 'boolean'\n ? logger === true\n ? defaultYogaLogger\n : {\n debug: () => { },\n error: () => { },\n warn: () => { },\n info: () => { },\n }\n : logger;\n const maskedErrors = (_k = options === null || options === void 0 ? void 0 : options.maskedErrors) !== null && _k !== void 0 ? _k : true;\n const server = this;\n this.endpoint = options === null || options === void 0 ? void 0 : options.endpoint;\n this.plugins = [\n // Use the schema provided by the user\n enableIf(schema != null, useSchema(schema)),\n // Performance things\n enableIf((options === null || options === void 0 ? void 0 : options.parserCache) !== false, () => useParserCache(typeof (options === null || options === void 0 ? void 0 : options.parserCache) === 'object'\n ? options === null || options === void 0 ? void 0 : options.parserCache\n : undefined)),\n enableIf((options === null || options === void 0 ? void 0 : options.validationCache) !== false, () => useValidationCache({\n cache: typeof (options === null || options === void 0 ? void 0 : options.validationCache) === 'object'\n ? options === null || options === void 0 ? void 0 : options.validationCache\n : undefined,\n })),\n // Log events - useful for debugging purposes\n enableIf(logger !== false, useLogger({\n skipIntrospection: true,\n logFn: (eventName, events) => {\n switch (eventName) {\n case 'execute-start':\n case 'subscribe-start':\n this.logger.debug(titleBold('Execution start'));\n const { query, operationName, variables, extensions, } = events.args.contextValue;\n this.logger.debug(titleBold('Received GraphQL operation:'));\n this.logger.debug({\n query,\n operationName,\n variables,\n extensions,\n });\n break;\n case 'execute-end':\n case 'subscribe-end':\n this.logger.debug(titleBold('Execution end'));\n this.logger.debug({\n result: events.result,\n });\n break;\n }\n },\n })),\n enableIf((options === null || options === void 0 ? void 0 : options.context) != null, useExtendContext(async (initialContext) => {\n if (options === null || options === void 0 ? void 0 : options.context) {\n if (typeof options.context === 'function') {\n return options.context(initialContext);\n }\n return options.context;\n }\n })),\n // Middlewares before processing the incoming HTTP request\n useHealthCheck({\n id: this.id,\n logger: this.logger,\n }),\n enableIf((options === null || options === void 0 ? void 0 : options.graphiql) !== false, () => useGraphiQL({\n get endpoint() {\n return server.endpoint;\n },\n options: options === null || options === void 0 ? void 0 : options.graphiql,\n render: options === null || options === void 0 ? void 0 : options.renderGraphiQL,\n logger: this.logger,\n })),\n enableIf((options === null || options === void 0 ? void 0 : options.cors) !== false, () => useCORS(options === null || options === void 0 ? void 0 : options.cors)),\n // Middlewares before the GraphQL execution\n useCheckMethodForGraphQL(),\n useRequestParser({\n match: isGETRequest,\n parse: parseGETRequest,\n }),\n useRequestParser({\n match: isPOSTJsonRequest,\n parse: parsePOSTJsonRequest,\n }),\n enableIf((options === null || options === void 0 ? void 0 : options.multipart) !== false, () => useRequestParser({\n match: isPOSTMultipartRequest,\n parse: parsePOSTMultipartRequest,\n })),\n useRequestParser({\n match: isPOSTGraphQLStringRequest,\n parse: parsePOSTGraphQLStringRequest,\n }),\n useRequestParser({\n match: isPOSTFormUrlEncodedRequest,\n parse: parsePOSTFormUrlEncodedRequest,\n }),\n // Middlewares after the GraphQL execution\n useResultProcessor({\n match: isRegularResult,\n processResult: processRegularResult,\n }),\n useResultProcessor({\n match: isPushResult,\n processResult: processPushResult,\n }),\n useResultProcessor({\n match: isMultipartResult,\n processResult: processMultipartResult,\n }),\n ...((_l = options === null || options === void 0 ? void 0 : options.plugins) !== null && _l !== void 0 ? _l : []),\n useCheckGraphQLQueryParam(),\n // To make sure those are called at the end\n {\n onPluginInit({ addPlugin }) {\n addPlugin(\n // We make sure that the user doesn't send a mutation with GET\n usePreventMutationViaGET());\n if (!!maskedErrors) {\n addPlugin(useMaskedErrors(typeof maskedErrors === 'object' ? maskedErrors : undefined));\n }\n addPlugin(\n // We handle validation errors at the end\n useHTTPValidationError());\n },\n },\n ];\n this.getEnveloped = envelop({\n plugins: this.plugins,\n });\n this.onRequestHooks = [];\n this.onRequestParseHooks = [];\n this.onResultProcessHooks = [];\n this.onResponseHooks = [];\n for (const plugin of this.plugins) {\n if (plugin) {\n if (plugin.onRequestParse) {\n this.onRequestParseHooks.push(plugin.onRequestParse);\n }\n if (plugin.onRequest) {\n this.onRequestHooks.push(plugin.onRequest);\n }\n if (plugin.onResultProcess) {\n this.onResultProcessHooks.push(plugin.onResultProcess);\n }\n if (plugin.onResponse) {\n this.onResponseHooks.push(plugin.onResponse);\n }\n }\n }\n }\n async getResponse(request, ...args) {\n var _a, _b;\n const serverContext = args[0];\n try {\n for (const onRequestHook of this.onRequestHooks) {\n let response;\n await onRequestHook({\n request,\n serverContext,\n fetchAPI: this.fetchAPI,\n endResponse(newResponse) {\n response = newResponse;\n },\n });\n if (response) {\n return response;\n }\n }\n let requestParser;\n const onRequestParseDoneList = [];\n for (const onRequestParse of this.onRequestParseHooks) {\n const onRequestParseResult = await onRequestParse({\n request,\n requestParser,\n setRequestParser(parser) {\n requestParser = parser;\n },\n });\n if ((onRequestParseResult === null || onRequestParseResult === void 0 ? void 0 : onRequestParseResult.onRequestParseDone) != null) {\n onRequestParseDoneList.push(onRequestParseResult.onRequestParseDone);\n }\n }\n this.logger.debug(`Parsing request to extract GraphQL parameters`);\n if (!requestParser) {\n return new this.fetchAPI.Response('Request is not valid', {\n status: 400,\n statusText: 'Bad Request',\n });\n }\n let params = await requestParser(request);\n for (const onRequestParseDone of onRequestParseDoneList) {\n await onRequestParseDone({\n params,\n setParams(newParams) {\n params = newParams;\n },\n });\n }\n const initialContext = {\n request,\n ...params,\n ...serverContext,\n };\n const enveloped = this.getEnveloped(initialContext);\n this.logger.debug(`Processing GraphQL Parameters`);\n const result = await processRequest({\n request,\n params,\n enveloped,\n fetchAPI: this.fetchAPI,\n onResultProcessHooks: this.onResultProcessHooks,\n });\n return result;\n }\n catch (error) {\n const finalResponseInit = {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n };\n const errors = handleError(error);\n for (const error of errors) {\n if ((_a = error.extensions) === null || _a === void 0 ? void 0 : _a.http) {\n if (error.extensions.http.status &&\n ((_b = error.extensions) === null || _b === void 0 ? void 0 : _b.http.status) > finalResponseInit.status) {\n finalResponseInit.status = error.extensions.http.status;\n }\n if (error.extensions.http.headers) {\n Object.assign(finalResponseInit.headers, error.extensions.http.headers);\n }\n // Remove http extensions from the final response\n error.extensions.http = undefined;\n }\n }\n const payload = {\n data: null,\n errors,\n };\n const decodedString = encodeString(JSON.stringify(payload));\n finalResponseInit.headers['Content-Length'] =\n decodedString.byteLength.toString();\n return new this.fetchAPI.Response(decodedString, finalResponseInit);\n }\n }\n /**\n * Testing utility to mock http request for GraphQL endpoint\n *\n *\n * Example - Test a simple query\n * ```ts\n * const { response, executionResult } = await yoga.inject({\n * document: \"query { ping }\",\n * })\n * expect(response.status).toBe(200)\n * expect(executionResult.data.ping).toBe('pong')\n * ```\n **/\n async inject({ document, variables, operationName, headers, serverContext, }) {\n const request = new this.fetchAPI.Request('http://localhost/graphql', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...headers,\n },\n body: JSON.stringify({\n query: document &&\n (typeof document === 'string' ? document : print(document)),\n variables,\n operationName,\n }),\n });\n const response = await this.handleRequest(request, serverContext);\n let executionResult = null;\n if (response.headers.get('content-type') === 'application/json') {\n executionResult = await response.json();\n }\n return {\n response,\n executionResult,\n };\n }\n start() {\n self.addEventListener('fetch', this.fetchEventListener);\n }\n stop() {\n self.removeEventListener('fetch', this.fetchEventListener);\n }\n}\nfunction createServer(options) {\n const server = new YogaServer(options);\n // TODO: Will be removed once we get rid of classes\n const fnHandler = (input, ctx) => {\n // Is input a container object over Request?\n if (input.request) {\n // In this input is also the context\n return server.handleRequest(input.request, input);\n }\n // Or is it Request itself?\n // Then ctx is present and it is the context\n return server.handleRequest(input, ctx);\n };\n return new Proxy(server, {\n // It should have all the attributes of the handler function and the server instance\n has: (_, prop) => {\n return prop in fnHandler || prop in server;\n },\n get: (_, prop) => {\n if (server[prop]) {\n if (server[prop].bind) {\n return server[prop].bind(server);\n }\n return server[prop];\n }\n if (fnHandler[prop]) {\n if (fnHandler[prop].bind) {\n return fnHandler[prop].bind(fnHandler);\n }\n return fnHandler[prop];\n }\n },\n apply(_, __, [input, ctx]) {\n return fnHandler(input, ctx);\n },\n });\n}\n\n/// \n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nfunction __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nfunction __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nfunction __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\n\n/** An error subclass which is thrown when there are too many pending push or next operations on a single repeater. */\r\nvar RepeaterOverflowError = /** @class */ (function (_super) {\r\n __extends(RepeaterOverflowError, _super);\r\n function RepeaterOverflowError(message) {\r\n var _this = _super.call(this, message) || this;\r\n Object.defineProperty(_this, \"name\", {\r\n value: \"RepeaterOverflowError\",\r\n enumerable: false,\r\n });\r\n if (typeof Object.setPrototypeOf === \"function\") {\r\n Object.setPrototypeOf(_this, _this.constructor.prototype);\r\n }\r\n else {\r\n _this.__proto__ = _this.constructor.prototype;\r\n }\r\n if (typeof Error.captureStackTrace === \"function\") {\r\n Error.captureStackTrace(_this, _this.constructor);\r\n }\r\n return _this;\r\n }\r\n return RepeaterOverflowError;\r\n}(Error));\r\n/** A buffer which allows you to push a set amount of values to the repeater without pushes waiting or throwing errors. */\r\n/** @class */ ((function () {\r\n function FixedBuffer(capacity) {\r\n if (capacity < 0) {\r\n throw new RangeError(\"Capacity may not be less than 0\");\r\n }\r\n this._c = capacity;\r\n this._q = [];\r\n }\r\n Object.defineProperty(FixedBuffer.prototype, \"empty\", {\r\n get: function () {\r\n return this._q.length === 0;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(FixedBuffer.prototype, \"full\", {\r\n get: function () {\r\n return this._q.length >= this._c;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n FixedBuffer.prototype.add = function (value) {\r\n if (this.full) {\r\n throw new Error(\"Buffer full\");\r\n }\r\n else {\r\n this._q.push(value);\r\n }\r\n };\r\n FixedBuffer.prototype.remove = function () {\r\n if (this.empty) {\r\n throw new Error(\"Buffer empty\");\r\n }\r\n return this._q.shift();\r\n };\r\n return FixedBuffer;\r\n})());\r\n// TODO: Use a circular buffer here.\r\n/** Sliding buffers allow you to push a set amount of values to the repeater without pushes waiting or throwing errors. If the number of values exceeds the capacity set in the constructor, the buffer will discard the earliest values added. */\r\n/** @class */ ((function () {\r\n function SlidingBuffer(capacity) {\r\n if (capacity < 1) {\r\n throw new RangeError(\"Capacity may not be less than 1\");\r\n }\r\n this._c = capacity;\r\n this._q = [];\r\n }\r\n Object.defineProperty(SlidingBuffer.prototype, \"empty\", {\r\n get: function () {\r\n return this._q.length === 0;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(SlidingBuffer.prototype, \"full\", {\r\n get: function () {\r\n return false;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n SlidingBuffer.prototype.add = function (value) {\r\n while (this._q.length >= this._c) {\r\n this._q.shift();\r\n }\r\n this._q.push(value);\r\n };\r\n SlidingBuffer.prototype.remove = function () {\r\n if (this.empty) {\r\n throw new Error(\"Buffer empty\");\r\n }\r\n return this._q.shift();\r\n };\r\n return SlidingBuffer;\r\n})());\r\n/** Dropping buffers allow you to push a set amount of values to the repeater without the push function waiting or throwing errors. If the number of values exceeds the capacity set in the constructor, the buffer will discard the latest values added. */\r\n/** @class */ ((function () {\r\n function DroppingBuffer(capacity) {\r\n if (capacity < 1) {\r\n throw new RangeError(\"Capacity may not be less than 1\");\r\n }\r\n this._c = capacity;\r\n this._q = [];\r\n }\r\n Object.defineProperty(DroppingBuffer.prototype, \"empty\", {\r\n get: function () {\r\n return this._q.length === 0;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DroppingBuffer.prototype, \"full\", {\r\n get: function () {\r\n return false;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n DroppingBuffer.prototype.add = function (value) {\r\n if (this._q.length < this._c) {\r\n this._q.push(value);\r\n }\r\n };\r\n DroppingBuffer.prototype.remove = function () {\r\n if (this.empty) {\r\n throw new Error(\"Buffer empty\");\r\n }\r\n return this._q.shift();\r\n };\r\n return DroppingBuffer;\r\n})());\r\n/** Makes sure promise-likes don\u2019t cause unhandled rejections. */\r\nfunction swallow(value) {\r\n if (value != null && typeof value.then === \"function\") {\r\n value.then(NOOP, NOOP);\r\n }\r\n}\r\n/*** REPEATER STATES ***/\r\n/** The following is an enumeration of all possible repeater states. These states are ordered, and a repeater may only advance to higher states. */\r\n/** The initial state of the repeater. */\r\nvar Initial = 0;\r\n/** Repeaters advance to this state the first time the next method is called on the repeater. */\r\nvar Started = 1;\r\n/** Repeaters advance to this state when the stop function is called. */\r\nvar Stopped = 2;\r\n/** Repeaters advance to this state when there are no values left to be pulled from the repeater. */\r\nvar Done = 3;\r\n/** Repeaters advance to this state if an error is thrown into the repeater. */\r\nvar Rejected = 4;\r\n/** The maximum number of push or next operations which may exist on a single repeater. */\r\nvar MAX_QUEUE_LENGTH = 1024;\r\nvar NOOP = function () { };\r\n/** A helper function used to mimic the behavior of async generators where the final iteration is consumed. */\r\nfunction consumeExecution(r) {\r\n var err = r.err;\r\n var execution = Promise.resolve(r.execution).then(function (value) {\r\n if (err != null) {\r\n throw err;\r\n }\r\n return value;\r\n });\r\n r.err = undefined;\r\n r.execution = execution.then(function () { return undefined; }, function () { return undefined; });\r\n return r.pending === undefined ? execution : r.pending.then(function () { return execution; });\r\n}\r\n/** A helper function for building iterations from values. Promises are unwrapped, so that iterations never have their value property set to a promise. */\r\nfunction createIteration(r, value) {\r\n var done = r.state >= Done;\r\n return Promise.resolve(value).then(function (value) {\r\n if (!done && r.state >= Rejected) {\r\n return consumeExecution(r).then(function (value) { return ({\r\n value: value,\r\n done: true,\r\n }); });\r\n }\r\n return { value: value, done: done };\r\n });\r\n}\r\n/**\r\n * This function is bound and passed to the executor as the stop argument.\r\n *\r\n * Advances state to Stopped.\r\n */\r\nfunction stop(r, err) {\r\n var e_1, _a;\r\n if (r.state >= Stopped) {\r\n return;\r\n }\r\n r.state = Stopped;\r\n r.onnext();\r\n r.onstop();\r\n if (r.err == null) {\r\n r.err = err;\r\n }\r\n if (r.pushes.length === 0 &&\r\n (typeof r.buffer === \"undefined\" || r.buffer.empty)) {\r\n finish(r);\r\n }\r\n else {\r\n try {\r\n for (var _b = __values(r.pushes), _d = _b.next(); !_d.done; _d = _b.next()) {\r\n var push_1 = _d.value;\r\n push_1.resolve();\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (_d && !_d.done && (_a = _b.return)) _a.call(_b);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n }\r\n}\r\n/**\r\n * The difference between stopping a repeater vs finishing a repeater is that stopping a repeater allows next to continue to drain values from the push queue and buffer, while finishing a repeater will clear all pending values and end iteration immediately. Once, a repeater is finished, all iterations will have the done property set to true.\r\n *\r\n * Advances state to Done.\r\n */\r\nfunction finish(r) {\r\n var e_2, _a;\r\n if (r.state >= Done) {\r\n return;\r\n }\r\n if (r.state < Stopped) {\r\n stop(r);\r\n }\r\n r.state = Done;\r\n r.buffer = undefined;\r\n try {\r\n for (var _b = __values(r.nexts), _d = _b.next(); !_d.done; _d = _b.next()) {\r\n var next = _d.value;\r\n var execution = r.pending === undefined\r\n ? consumeExecution(r)\r\n : r.pending.then(function () { return consumeExecution(r); });\r\n next.resolve(createIteration(r, execution));\r\n }\r\n }\r\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\r\n finally {\r\n try {\r\n if (_d && !_d.done && (_a = _b.return)) _a.call(_b);\r\n }\r\n finally { if (e_2) throw e_2.error; }\r\n }\r\n r.pushes = [];\r\n r.nexts = [];\r\n}\r\n/**\r\n * Called when a promise passed to push rejects, or when a push call is unhandled.\r\n *\r\n * Advances state to Rejected.\r\n */\r\nfunction reject(r) {\r\n if (r.state >= Rejected) {\r\n return;\r\n }\r\n if (r.state < Done) {\r\n finish(r);\r\n }\r\n r.state = Rejected;\r\n}\r\n/** This function is bound and passed to the executor as the push argument. */\r\nfunction push(r, value) {\r\n swallow(value);\r\n if (r.pushes.length >= MAX_QUEUE_LENGTH) {\r\n throw new RepeaterOverflowError(\"No more than \" + MAX_QUEUE_LENGTH + \" pending calls to push are allowed on a single repeater.\");\r\n }\r\n else if (r.state >= Stopped) {\r\n return Promise.resolve(undefined);\r\n }\r\n var valueP = r.pending === undefined\r\n ? Promise.resolve(value)\r\n : r.pending.then(function () { return value; });\r\n valueP = valueP.catch(function (err) {\r\n if (r.state < Stopped) {\r\n r.err = err;\r\n }\r\n reject(r);\r\n return undefined; // void :(\r\n });\r\n var nextP;\r\n if (r.nexts.length) {\r\n var next_1 = r.nexts.shift();\r\n next_1.resolve(createIteration(r, valueP));\r\n if (r.nexts.length) {\r\n nextP = Promise.resolve(r.nexts[0].value);\r\n }\r\n else {\r\n nextP = new Promise(function (resolve) { return (r.onnext = resolve); });\r\n }\r\n }\r\n else if (typeof r.buffer !== \"undefined\" && !r.buffer.full) {\r\n r.buffer.add(valueP);\r\n nextP = Promise.resolve(undefined);\r\n }\r\n else {\r\n nextP = new Promise(function (resolve) { return r.pushes.push({ resolve: resolve, value: valueP }); });\r\n }\r\n // If an error is thrown into the repeater via the next or throw methods, we give the repeater a chance to handle this by rejecting the promise returned from push. If the push call is not immediately handled we throw the next iteration of the repeater.\r\n // To check that the promise returned from push is floating, we modify the then and catch methods of the returned promise so that they flip the floating flag. The push function actually does not return a promise, because modern engines do not call the then and catch methods on native promises. By making next a plain old javascript object, we ensure that the then and catch methods will be called.\r\n var floating = true;\r\n var next = {};\r\n var unhandled = nextP.catch(function (err) {\r\n if (floating) {\r\n throw err;\r\n }\r\n return undefined; // void :(\r\n });\r\n next.then = function (onfulfilled, onrejected) {\r\n floating = false;\r\n return Promise.prototype.then.call(nextP, onfulfilled, onrejected);\r\n };\r\n next.catch = function (onrejected) {\r\n floating = false;\r\n return Promise.prototype.catch.call(nextP, onrejected);\r\n };\r\n next.finally = nextP.finally.bind(nextP);\r\n r.pending = valueP\r\n .then(function () { return unhandled; })\r\n .catch(function (err) {\r\n r.err = err;\r\n reject(r);\r\n });\r\n return next;\r\n}\r\n/**\r\n * Creates the stop callable promise which is passed to the executor\r\n */\r\nfunction createStop(r) {\r\n var stop1 = stop.bind(null, r);\r\n var stopP = new Promise(function (resolve) { return (r.onstop = resolve); });\r\n stop1.then = stopP.then.bind(stopP);\r\n stop1.catch = stopP.catch.bind(stopP);\r\n stop1.finally = stopP.finally.bind(stopP);\r\n return stop1;\r\n}\r\n/**\r\n * Calls the executor passed into the constructor. This function is called the first time the next method is called on the repeater.\r\n *\r\n * Advances state to Started.\r\n */\r\nfunction execute(r) {\r\n if (r.state >= Started) {\r\n return;\r\n }\r\n r.state = Started;\r\n var push1 = push.bind(null, r);\r\n var stop1 = createStop(r);\r\n r.execution = new Promise(function (resolve) { return resolve(r.executor(push1, stop1)); });\r\n // TODO: We should consider stopping all repeaters when the executor settles.\r\n r.execution.catch(function () { return stop(r); });\r\n}\r\nvar records = new WeakMap();\r\n// NOTE: While repeaters implement and are assignable to the AsyncGenerator interface, and you can use the types interchangeably, we don\u2019t use typescript\u2019s implements syntax here because this would make supporting earlier versions of typescript trickier. This is because TypeScript version 3.6 changed the iterator types by adding the TReturn and TNext type parameters.\r\nvar Repeater = /** @class */ (function () {\r\n function Repeater(executor, buffer) {\r\n records.set(this, {\r\n executor: executor,\r\n buffer: buffer,\r\n err: undefined,\r\n state: Initial,\r\n pushes: [],\r\n nexts: [],\r\n pending: undefined,\r\n execution: undefined,\r\n onnext: NOOP,\r\n onstop: NOOP,\r\n });\r\n }\r\n Repeater.prototype.next = function (value) {\r\n swallow(value);\r\n var r = records.get(this);\r\n if (r === undefined) {\r\n throw new Error(\"WeakMap error\");\r\n }\r\n if (r.nexts.length >= MAX_QUEUE_LENGTH) {\r\n throw new RepeaterOverflowError(\"No more than \" + MAX_QUEUE_LENGTH + \" pending calls to next are allowed on a single repeater.\");\r\n }\r\n if (r.state <= Initial) {\r\n execute(r);\r\n }\r\n r.onnext(value);\r\n if (typeof r.buffer !== \"undefined\" && !r.buffer.empty) {\r\n var result = createIteration(r, r.buffer.remove());\r\n if (r.pushes.length) {\r\n var push_2 = r.pushes.shift();\r\n r.buffer.add(push_2.value);\r\n r.onnext = push_2.resolve;\r\n }\r\n return result;\r\n }\r\n else if (r.pushes.length) {\r\n var push_3 = r.pushes.shift();\r\n r.onnext = push_3.resolve;\r\n return createIteration(r, push_3.value);\r\n }\r\n else if (r.state >= Stopped) {\r\n finish(r);\r\n return createIteration(r, consumeExecution(r));\r\n }\r\n return new Promise(function (resolve) { return r.nexts.push({ resolve: resolve, value: value }); });\r\n };\r\n Repeater.prototype.return = function (value) {\r\n swallow(value);\r\n var r = records.get(this);\r\n if (r === undefined) {\r\n throw new Error(\"WeakMap error\");\r\n }\r\n finish(r);\r\n // We override the execution because return should always return the value passed in.\r\n r.execution = Promise.resolve(r.execution).then(function () { return value; });\r\n return createIteration(r, consumeExecution(r));\r\n };\r\n Repeater.prototype.throw = function (err) {\r\n var r = records.get(this);\r\n if (r === undefined) {\r\n throw new Error(\"WeakMap error\");\r\n }\r\n if (r.state <= Initial ||\r\n r.state >= Stopped ||\r\n (typeof r.buffer !== \"undefined\" && !r.buffer.empty)) {\r\n finish(r);\r\n // If r.err is already set, that mean the repeater has already produced an error, so we throw that error rather than the error passed in, because doing so might be more informative for the caller.\r\n if (r.err == null) {\r\n r.err = err;\r\n }\r\n return createIteration(r, consumeExecution(r));\r\n }\r\n return this.next(Promise.reject(err));\r\n };\r\n Repeater.prototype[Symbol.asyncIterator] = function () {\r\n return this;\r\n };\r\n // TODO: Remove these static methods from the class.\r\n Repeater.race = race;\r\n Repeater.merge = merge;\r\n Repeater.zip = zip;\r\n Repeater.latest = latest;\r\n return Repeater;\r\n}());\r\n/*** COMBINATOR FUNCTIONS ***/\r\n// TODO: move these combinators to their own file.\r\nfunction getIterators(values, options) {\r\n var e_3, _a;\r\n var iters = [];\r\n var _loop_1 = function (value) {\r\n if (value != null && typeof value[Symbol.asyncIterator] === \"function\") {\r\n iters.push(value[Symbol.asyncIterator]());\r\n }\r\n else if (value != null && typeof value[Symbol.iterator] === \"function\") {\r\n iters.push(value[Symbol.iterator]());\r\n }\r\n else {\r\n iters.push((function valueToAsyncIterator() {\r\n return __asyncGenerator(this, arguments, function valueToAsyncIterator_1() {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!options.yieldValues) return [3 /*break*/, 3];\r\n return [4 /*yield*/, __await(value)];\r\n case 1: return [4 /*yield*/, _a.sent()];\r\n case 2:\r\n _a.sent();\r\n _a.label = 3;\r\n case 3:\r\n if (!options.returnValues) return [3 /*break*/, 5];\r\n return [4 /*yield*/, __await(value)];\r\n case 4: return [2 /*return*/, _a.sent()];\r\n case 5: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n })());\r\n }\r\n };\r\n try {\r\n for (var values_1 = __values(values), values_1_1 = values_1.next(); !values_1_1.done; values_1_1 = values_1.next()) {\r\n var value = values_1_1.value;\r\n _loop_1(value);\r\n }\r\n }\r\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\r\n finally {\r\n try {\r\n if (values_1_1 && !values_1_1.done && (_a = values_1.return)) _a.call(values_1);\r\n }\r\n finally { if (e_3) throw e_3.error; }\r\n }\r\n return iters;\r\n}\r\n// NOTE: whenever you see any variables called `advance` or `advances`, know that it is a hack to get around the fact that `Promise.race` leaks memory. These variables are intended to be set to the resolve function of a promise which is constructed and awaited as an alternative to Promise.race. For more information, see this comment in the Node.js issue tracker: https://github.com/nodejs/node/issues/17469#issuecomment-685216777.\r\nfunction race(contenders) {\r\n var _this = this;\r\n var iters = getIterators(contenders, { returnValues: true });\r\n return new Repeater(function (push, stop) { return __awaiter(_this, void 0, void 0, function () {\r\n var advance, stopped, finalIteration, iteration, i_1, _loop_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!iters.length) {\r\n stop();\r\n return [2 /*return*/];\r\n }\r\n stopped = false;\r\n stop.then(function () {\r\n advance();\r\n stopped = true;\r\n });\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, , 5, 7]);\r\n iteration = void 0;\r\n i_1 = 0;\r\n _loop_2 = function () {\r\n var j, iters_1, iters_1_1, iter;\r\n var e_4, _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n j = i_1;\r\n try {\r\n for (iters_1 = (e_4 = void 0, __values(iters)), iters_1_1 = iters_1.next(); !iters_1_1.done; iters_1_1 = iters_1.next()) {\r\n iter = iters_1_1.value;\r\n Promise.resolve(iter.next()).then(function (iteration) {\r\n if (iteration.done) {\r\n stop();\r\n if (finalIteration === undefined) {\r\n finalIteration = iteration;\r\n }\r\n }\r\n else if (i_1 === j) {\r\n // This iterator has won, advance i and resolve the promise.\r\n i_1++;\r\n advance(iteration);\r\n }\r\n }, function (err) { return stop(err); });\r\n }\r\n }\r\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\r\n finally {\r\n try {\r\n if (iters_1_1 && !iters_1_1.done && (_a = iters_1.return)) _a.call(iters_1);\r\n }\r\n finally { if (e_4) throw e_4.error; }\r\n }\r\n return [4 /*yield*/, new Promise(function (resolve) { return (advance = resolve); })];\r\n case 1:\r\n iteration = _b.sent();\r\n if (!(iteration !== undefined)) return [3 /*break*/, 3];\r\n return [4 /*yield*/, push(iteration.value)];\r\n case 2:\r\n _b.sent();\r\n _b.label = 3;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n };\r\n _a.label = 2;\r\n case 2:\r\n if (!!stopped) return [3 /*break*/, 4];\r\n return [5 /*yield**/, _loop_2()];\r\n case 3:\r\n _a.sent();\r\n return [3 /*break*/, 2];\r\n case 4: return [2 /*return*/, finalIteration && finalIteration.value];\r\n case 5:\r\n stop();\r\n return [4 /*yield*/, Promise.race(iters.map(function (iter) { return iter.return && iter.return(); }))];\r\n case 6:\r\n _a.sent();\r\n return [7 /*endfinally*/];\r\n case 7: return [2 /*return*/];\r\n }\r\n });\r\n }); });\r\n}\r\nfunction merge(contenders) {\r\n var _this = this;\r\n var iters = getIterators(contenders, { yieldValues: true });\r\n return new Repeater(function (push, stop) { return __awaiter(_this, void 0, void 0, function () {\r\n var advances, stopped, finalIteration;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!iters.length) {\r\n stop();\r\n return [2 /*return*/];\r\n }\r\n advances = [];\r\n stopped = false;\r\n stop.then(function () {\r\n var e_5, _a;\r\n stopped = true;\r\n try {\r\n for (var advances_1 = __values(advances), advances_1_1 = advances_1.next(); !advances_1_1.done; advances_1_1 = advances_1.next()) {\r\n var advance = advances_1_1.value;\r\n advance();\r\n }\r\n }\r\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\r\n finally {\r\n try {\r\n if (advances_1_1 && !advances_1_1.done && (_a = advances_1.return)) _a.call(advances_1);\r\n }\r\n finally { if (e_5) throw e_5.error; }\r\n }\r\n });\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, , 3, 4]);\r\n return [4 /*yield*/, Promise.all(iters.map(function (iter, i) { return __awaiter(_this, void 0, void 0, function () {\r\n var iteration, _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n _b.trys.push([0, , 6, 9]);\r\n _b.label = 1;\r\n case 1:\r\n if (!!stopped) return [3 /*break*/, 5];\r\n Promise.resolve(iter.next()).then(function (iteration) { return advances[i](iteration); }, function (err) { return stop(err); });\r\n return [4 /*yield*/, new Promise(function (resolve) {\r\n advances[i] = resolve;\r\n })];\r\n case 2:\r\n iteration = _b.sent();\r\n if (!(iteration !== undefined)) return [3 /*break*/, 4];\r\n if (iteration.done) {\r\n finalIteration = iteration;\r\n return [2 /*return*/];\r\n }\r\n return [4 /*yield*/, push(iteration.value)];\r\n case 3:\r\n _b.sent();\r\n _b.label = 4;\r\n case 4: return [3 /*break*/, 1];\r\n case 5: return [3 /*break*/, 9];\r\n case 6:\r\n _a = iter.return;\r\n if (!_a) return [3 /*break*/, 8];\r\n return [4 /*yield*/, iter.return()];\r\n case 7:\r\n _a = (_b.sent());\r\n _b.label = 8;\r\n case 8:\r\n return [7 /*endfinally*/];\r\n case 9: return [2 /*return*/];\r\n }\r\n });\r\n }); }))];\r\n case 2:\r\n _a.sent();\r\n return [2 /*return*/, finalIteration && finalIteration.value];\r\n case 3:\r\n stop();\r\n return [7 /*endfinally*/];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n }); });\r\n}\r\nfunction zip(contenders) {\r\n var _this = this;\r\n var iters = getIterators(contenders, { returnValues: true });\r\n return new Repeater(function (push, stop) { return __awaiter(_this, void 0, void 0, function () {\r\n var advance, stopped, iterations, values;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!iters.length) {\r\n stop();\r\n return [2 /*return*/, []];\r\n }\r\n stopped = false;\r\n stop.then(function () {\r\n advance();\r\n stopped = true;\r\n });\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, , 6, 8]);\r\n _a.label = 2;\r\n case 2:\r\n if (!!stopped) return [3 /*break*/, 5];\r\n Promise.all(iters.map(function (iter) { return iter.next(); })).then(function (iterations) { return advance(iterations); }, function (err) { return stop(err); });\r\n return [4 /*yield*/, new Promise(function (resolve) { return (advance = resolve); })];\r\n case 3:\r\n iterations = _a.sent();\r\n if (iterations === undefined) {\r\n return [2 /*return*/];\r\n }\r\n values = iterations.map(function (iteration) { return iteration.value; });\r\n if (iterations.some(function (iteration) { return iteration.done; })) {\r\n return [2 /*return*/, values];\r\n }\r\n return [4 /*yield*/, push(values)];\r\n case 4:\r\n _a.sent();\r\n return [3 /*break*/, 2];\r\n case 5: return [3 /*break*/, 8];\r\n case 6:\r\n stop();\r\n return [4 /*yield*/, Promise.all(iters.map(function (iter) { return iter.return && iter.return(); }))];\r\n case 7:\r\n _a.sent();\r\n return [7 /*endfinally*/];\r\n case 8: return [2 /*return*/];\r\n }\r\n });\r\n }); });\r\n}\r\nfunction latest(contenders) {\r\n var _this = this;\r\n var iters = getIterators(contenders, {\r\n yieldValues: true,\r\n returnValues: true,\r\n });\r\n return new Repeater(function (push, stop) { return __awaiter(_this, void 0, void 0, function () {\r\n var advance, advances, stopped, iterations_1, values_2;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!iters.length) {\r\n stop();\r\n return [2 /*return*/, []];\r\n }\r\n advances = [];\r\n stopped = false;\r\n stop.then(function () {\r\n var e_6, _a;\r\n advance();\r\n try {\r\n for (var advances_2 = __values(advances), advances_2_1 = advances_2.next(); !advances_2_1.done; advances_2_1 = advances_2.next()) {\r\n var advance1 = advances_2_1.value;\r\n advance1();\r\n }\r\n }\r\n catch (e_6_1) { e_6 = { error: e_6_1 }; }\r\n finally {\r\n try {\r\n if (advances_2_1 && !advances_2_1.done && (_a = advances_2.return)) _a.call(advances_2);\r\n }\r\n finally { if (e_6) throw e_6.error; }\r\n }\r\n stopped = true;\r\n });\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, , 5, 7]);\r\n Promise.all(iters.map(function (iter) { return iter.next(); })).then(function (iterations) { return advance(iterations); }, function (err) { return stop(err); });\r\n return [4 /*yield*/, new Promise(function (resolve) { return (advance = resolve); })];\r\n case 2:\r\n iterations_1 = _a.sent();\r\n if (iterations_1 === undefined) {\r\n return [2 /*return*/];\r\n }\r\n values_2 = iterations_1.map(function (iteration) { return iteration.value; });\r\n if (iterations_1.every(function (iteration) { return iteration.done; })) {\r\n return [2 /*return*/, values_2];\r\n }\r\n // We continuously yield and mutate the same values array so we shallow copy it each time it is pushed.\r\n return [4 /*yield*/, push(values_2.slice())];\r\n case 3:\r\n // We continuously yield and mutate the same values array so we shallow copy it each time it is pushed.\r\n _a.sent();\r\n return [4 /*yield*/, Promise.all(iters.map(function (iter, i) { return __awaiter(_this, void 0, void 0, function () {\r\n var iteration;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (iterations_1[i].done) {\r\n return [2 /*return*/, iterations_1[i].value];\r\n }\r\n _a.label = 1;\r\n case 1:\r\n if (!!stopped) return [3 /*break*/, 4];\r\n Promise.resolve(iter.next()).then(function (iteration) { return advances[i](iteration); }, function (err) { return stop(err); });\r\n return [4 /*yield*/, new Promise(function (resolve) { return (advances[i] = resolve); })];\r\n case 2:\r\n iteration = _a.sent();\r\n if (iteration === undefined) {\r\n return [2 /*return*/, iterations_1[i].value];\r\n }\r\n else if (iteration.done) {\r\n return [2 /*return*/, iteration.value];\r\n }\r\n values_2[i] = iteration.value;\r\n return [4 /*yield*/, push(values_2.slice())];\r\n case 3:\r\n _a.sent();\r\n return [3 /*break*/, 1];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n }); }))];\r\n case 4: return [2 /*return*/, _a.sent()];\r\n case 5:\r\n stop();\r\n return [4 /*yield*/, Promise.all(iters.map(function (iter) { return iter.return && iter.return(); }))];\r\n case 6:\r\n _a.sent();\r\n return [7 /*endfinally*/];\r\n case 7: return [2 /*return*/];\r\n }\r\n });\r\n }); });\r\n}\n\nconst FETCH_EVENT = \"$FETCH\";\n\nfunction getRouteMatches$1(routes, path, method) {\n const segments = path.split(\"/\").filter(Boolean);\n routeLoop:\n for (const route of routes) {\n const matchSegments = route.matchSegments;\n if (segments.length < matchSegments.length || !route.wildcard && segments.length > matchSegments.length) {\n continue;\n }\n for (let index = 0; index < matchSegments.length; index++) {\n const match = matchSegments[index];\n if (!match) {\n continue;\n }\n if (segments[index] !== match) {\n continue routeLoop;\n }\n }\n const handler = route[method];\n if (handler === \"skip\" || handler === void 0) {\n return;\n }\n const params = {};\n for (const { type, name, index } of route.params) {\n if (type === \":\") {\n params[name] = segments[index];\n } else {\n params[name] = segments.slice(index).join(\"/\");\n }\n }\n return { handler, params };\n }\n}\n\nlet apiRoutes$1;\nconst registerApiRoutes = (routes) => {\n apiRoutes$1 = routes;\n};\nasync function internalFetch(route, init) {\n if (route.startsWith(\"http\")) {\n return await fetch(route, init);\n }\n let url = new URL(route, \"http://internal\");\n const request = new Request(url.href, init);\n const handler = getRouteMatches$1(apiRoutes$1, url.pathname, request.method.toLowerCase());\n let apiEvent = Object.freeze({\n request,\n params: handler.params,\n env: {},\n $type: FETCH_EVENT,\n fetch: internalFetch\n });\n const response = await handler.handler(apiEvent);\n return response;\n}\n\nconst XSolidStartLocationHeader = \"x-solidstart-location\";\nconst LocationHeader = \"Location\";\nconst ContentTypeHeader = \"content-type\";\nconst XSolidStartResponseTypeHeader = \"x-solidstart-response-type\";\nconst XSolidStartContentTypeHeader = \"x-solidstart-content-type\";\nconst XSolidStartOrigin = \"x-solidstart-origin\";\nconst JSONResponseType = \"application/json\";\nfunction redirect(url, init = 302) {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n if (url === \"\") {\n url = \"/\";\n }\n let headers = new Headers(responseInit.headers);\n headers.set(LocationHeader, url);\n const response = new Response(null, {\n ...responseInit,\n headers\n });\n return response;\n}\nconst redirectStatusCodes = /* @__PURE__ */ new Set([204, 301, 302, 303, 307, 308]);\nfunction isRedirectResponse(response) {\n return response && response instanceof Response && redirectStatusCodes.has(response.status);\n}\nclass ResponseError extends Error {\n status;\n headers;\n name = \"ResponseError\";\n ok;\n statusText;\n redirected;\n url;\n constructor(response) {\n let message = JSON.stringify({\n $type: \"response\",\n status: response.status,\n message: response.statusText,\n headers: [...response.headers.entries()]\n });\n super(message);\n this.status = response.status;\n this.headers = new Map([...response.headers.entries()]);\n this.url = response.url;\n this.ok = response.ok;\n this.statusText = response.statusText;\n this.redirected = response.redirected;\n this.bodyUsed = false;\n this.type = response.type;\n this.response = () => response;\n }\n response;\n type;\n clone() {\n return this.response();\n }\n get body() {\n return this.response().body;\n }\n bodyUsed;\n async arrayBuffer() {\n return await this.response().arrayBuffer();\n }\n async blob() {\n return await this.response().blob();\n }\n async formData() {\n return await this.response().formData();\n }\n async text() {\n return await this.response().text();\n }\n async json() {\n return await this.response().json();\n }\n}\n\nfunction renderAsync(fn, options) {\n return () => async (event) => {\n let pageEvent = createPageEvent(event);\n let markup = await renderToStringAsync(() => fn(pageEvent), options);\n if (pageEvent.routerContext.url) {\n return redirect(pageEvent.routerContext.url, {\n headers: pageEvent.responseHeaders\n });\n }\n markup = handleIslandsRouting(pageEvent, markup);\n return new Response(markup, {\n status: pageEvent.getStatusCode(),\n headers: pageEvent.responseHeaders\n });\n };\n}\nfunction createPageEvent(event) {\n let responseHeaders = new Headers({\n \"Content-Type\": \"text/html\"\n });\n const prevPath = event.request.headers.get(\"x-solid-referrer\");\n let statusCode = 200;\n function setStatusCode(code) {\n statusCode = code;\n }\n function getStatusCode() {\n return statusCode;\n }\n const pageEvent = Object.freeze({\n request: event.request,\n prevUrl: prevPath,\n routerContext: {},\n tags: [],\n env: event.env,\n $type: FETCH_EVENT,\n responseHeaders,\n setStatusCode,\n getStatusCode,\n fetch: internalFetch\n });\n return pageEvent;\n}\nfunction handleIslandsRouting(pageEvent, markup) {\n return markup;\n}\n\nconst MetaContext = createContext();\nconst cascadingTags = [\"title\", \"meta\"];\n\nconst getTagType = tag => tag.tag + (tag.name ? `.${tag.name}\"` : \"\");\n\nconst MetaProvider = props => {\n const cascadedTagInstances = new Map(); // TODO: use one element for all tags of the same type, just swap out\n\n const actions = {\n addClientTag: tag => {\n let tagType = getTagType(tag);\n\n if (cascadingTags.indexOf(tag.tag) !== -1) {\n // only cascading tags need to be kept as singletons\n if (!cascadedTagInstances.has(tagType)) {\n cascadedTagInstances.set(tagType, []);\n }\n\n let instances = cascadedTagInstances.get(tagType);\n let index = instances.length;\n instances = [...instances, tag]; // track indices synchronously\n\n cascadedTagInstances.set(tagType, instances);\n\n return index;\n }\n\n return -1;\n },\n removeClientTag: (tag, index) => {\n const tagName = getTagType(tag);\n\n if (tag.ref) {\n const t = cascadedTagInstances.get(tagName);\n\n if (t) {\n if (tag.ref.parentNode) {\n tag.ref.parentNode.removeChild(tag.ref);\n\n for (let i = index - 1; i >= 0; i--) {\n if (t[i] != null) {\n document.head.appendChild(t[i].ref);\n }\n }\n }\n\n t[index] = null;\n cascadedTagInstances.set(tagName, t);\n } else {\n if (tag.ref.parentNode) {\n tag.ref.parentNode.removeChild(tag.ref);\n }\n }\n }\n }\n };\n\n {\n actions.addServerTag = tagDesc => {\n const {\n tags = []\n } = props; // tweak only cascading tags\n\n if (cascadingTags.indexOf(tagDesc.tag) !== -1) {\n const index = tags.findIndex(prev => {\n const prevName = prev.props.name || prev.props.property;\n const nextName = tagDesc.props.name || tagDesc.props.property;\n return prev.tag === tagDesc.tag && prevName === nextName;\n });\n\n if (index !== -1) {\n tags.splice(index, 1);\n }\n }\n\n tags.push(tagDesc);\n };\n\n if (Array.isArray(props.tags) === false) {\n throw Error(\"tags array should be passed to in node\");\n }\n }\n\n return createComponent(MetaContext.Provider, {\n value: actions,\n\n get children() {\n return props.children;\n }\n\n });\n};\n\nconst MetaTag = (tag, props) => {\n const id = createUniqueId();\n const c = useContext(MetaContext);\n if (!c) throw new Error(\" should be in the tree\");\n useHead({\n tag,\n props,\n id,\n\n get name() {\n return props.name || props.property;\n }\n\n });\n return null;\n};\nfunction useHead(tagDesc) {\n const {\n addClientTag,\n removeClientTag,\n addServerTag\n } = useContext(MetaContext);\n createRenderEffect(() => {\n if (!isServer) ;\n });\n\n {\n addServerTag(tagDesc);\n return null;\n }\n}\nfunction renderTags(tags) {\n return tags.map(tag => {\n const keys = Object.keys(tag.props);\n const props = keys.map(k => k === \"children\" ? \"\" : ` ${k}=\"${tag.props[k]}\"`).join(\"\");\n return tag.props.children ? `<${tag.tag} data-sm=\"${tag.id}\"${props}>${// Tags might contain multiple text children:\n // example - {myCompany}\n Array.isArray(tag.props.children) ? tag.props.children.join(\"\") : tag.props.children}` : `<${tag.tag} data-sm=\"${tag.id}\"${props}/>`;\n }).join(\"\");\n}\nconst Title = props => MetaTag(\"title\", props);\nconst Meta$1 = props => MetaTag(\"meta\", props);\nfunction normalizeIntegration(integration) {\n if (!integration) {\n return {\n signal: createSignal({ value: \"\" })\n };\n }\n else if (Array.isArray(integration)) {\n return {\n signal: integration\n };\n }\n return integration;\n}\nfunction staticIntegration(obj) {\n return {\n signal: [() => obj, next => Object.assign(obj, next)]\n };\n}\n\nconst hasSchemeRegex = /^(?:[a-z0-9]+:)?\\/\\//i;\nconst trimPathRegex = /^\\/+|\\/+$/g;\nfunction normalize(path, omitSlash = false) {\n const s = path.replace(trimPathRegex, \"\");\n return s ? (omitSlash || /^[?#]/.test(s) ? s : \"/\" + s) : \"\";\n}\nfunction resolvePath(base, path, from) {\n if (hasSchemeRegex.test(path)) {\n return undefined;\n }\n const basePath = normalize(base);\n const fromPath = from && normalize(from);\n let result = \"\";\n if (!fromPath || path.startsWith(\"/\")) {\n result = basePath;\n }\n else if (fromPath.toLowerCase().indexOf(basePath.toLowerCase()) !== 0) {\n result = basePath + fromPath;\n }\n else {\n result = fromPath;\n }\n return (result || \"/\") + normalize(path, !result);\n}\nfunction invariant(value, message) {\n if (value == null) {\n throw new Error(message);\n }\n return value;\n}\nfunction joinPaths(from, to) {\n return normalize(from).replace(/\\/*(\\*.*)?$/g, \"\") + normalize(to);\n}\nfunction extractSearchParams(url) {\n const params = {};\n url.searchParams.forEach((value, key) => {\n params[key] = value;\n });\n return params;\n}\nfunction urlDecode(str, isQuery) {\n return decodeURIComponent(isQuery ? str.replace(/\\+/g, \" \") : str);\n}\nfunction createMatcher(path, partial) {\n const [pattern, splat] = path.split(\"/*\", 2);\n const segments = pattern.split(\"/\").filter(Boolean);\n const len = segments.length;\n return (location) => {\n const locSegments = location.split(\"/\").filter(Boolean);\n const lenDiff = locSegments.length - len;\n if (lenDiff < 0 || (lenDiff > 0 && splat === undefined && !partial)) {\n return null;\n }\n const match = {\n path: len ? \"\" : \"/\",\n params: {}\n };\n for (let i = 0; i < len; i++) {\n const segment = segments[i];\n const locSegment = locSegments[i];\n if (segment[0] === \":\") {\n match.params[segment.slice(1)] = locSegment;\n }\n else if (segment.localeCompare(locSegment, undefined, { sensitivity: \"base\" }) !== 0) {\n return null;\n }\n match.path += `/${locSegment}`;\n }\n if (splat) {\n match.params[splat] = lenDiff ? locSegments.slice(-lenDiff).join(\"/\") : \"\";\n }\n return match;\n };\n}\nfunction scoreRoute(route) {\n const [pattern, splat] = route.pattern.split(\"/*\", 2);\n const segments = pattern.split(\"/\").filter(Boolean);\n return segments.reduce((score, segment) => score + (segment.startsWith(\":\") ? 2 : 3), segments.length - (splat === undefined ? 0 : 1));\n}\nfunction createMemoObject(fn) {\n const map = new Map();\n const owner = getOwner();\n return new Proxy({}, {\n get(_, property) {\n if (!map.has(property)) {\n runWithOwner(owner, () => map.set(property, createMemo(() => fn()[property])));\n }\n return map.get(property)();\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true\n };\n },\n ownKeys() {\n return Reflect.ownKeys(fn());\n }\n });\n}\nfunction expandOptionals(pattern) {\n let match = /(\\/?\\:[^\\/]+)\\?/.exec(pattern);\n if (!match)\n return [pattern];\n let prefix = pattern.slice(0, match.index);\n let suffix = pattern.slice(match.index + match[0].length);\n const prefixes = [prefix, (prefix += match[1])];\n // This section handles adjacent optional params. We don't actually want all permuations since\n // that will lead to equivalent routes which have the same number of params. For example\n // `/:a?/:b?/:c`? only has the unique expansion: `/`, `/:a`, `/:a/:b`, `/:a/:b/:c` and we can\n // discard `/:b`, `/:c`, `/:b/:c` by building them up in order and not recursing. This also helps\n // ensure predictability where earlier params have precidence.\n while ((match = /^(\\/\\:[^\\/]+)\\?/.exec(suffix))) {\n prefixes.push((prefix += match[1]));\n suffix = suffix.slice(match[0].length);\n }\n return expandOptionals(suffix).reduce((results, expansion) => [...results, ...prefixes.map(p => p + expansion)], []);\n}\n\nconst MAX_REDIRECTS = 100;\nconst RouterContextObj = createContext();\nconst RouteContextObj = createContext();\nconst useRouter = () => invariant(useContext(RouterContextObj), \"Make sure your app is wrapped in a \");\nlet TempRoute;\nconst useRoute = () => TempRoute || useContext(RouteContextObj) || useRouter().base;\nfunction createRoutes(routeDef, base = \"\", fallback) {\n const { component, data, children } = routeDef;\n const isLeaf = !children || (Array.isArray(children) && !children.length);\n const shared = {\n key: routeDef,\n element: component\n ? () => createComponent(component, {})\n : () => {\n const { element } = routeDef;\n return element === undefined && fallback\n ? createComponent(fallback, {})\n : element;\n },\n preload: routeDef.component\n ? component.preload\n : routeDef.preload,\n data\n };\n return asArray(routeDef.path).reduce((acc, path) => {\n for (const originalPath of expandOptionals(path)) {\n const path = joinPaths(base, originalPath);\n const pattern = isLeaf ? path : path.split(\"/*\", 1)[0];\n acc.push({\n ...shared,\n originalPath,\n pattern,\n matcher: createMatcher(pattern, !isLeaf)\n });\n }\n return acc;\n }, []);\n}\nfunction createBranch(routes, index = 0) {\n return {\n routes,\n score: scoreRoute(routes[routes.length - 1]) * 10000 - index,\n matcher(location) {\n const matches = [];\n for (let i = routes.length - 1; i >= 0; i--) {\n const route = routes[i];\n const match = route.matcher(location);\n if (!match) {\n return null;\n }\n matches.unshift({\n ...match,\n route\n });\n }\n return matches;\n }\n };\n}\nfunction asArray(value) {\n return Array.isArray(value) ? value : [value];\n}\nfunction createBranches(routeDef, base = \"\", fallback, stack = [], branches = []) {\n const routeDefs = asArray(routeDef);\n for (let i = 0, len = routeDefs.length; i < len; i++) {\n const def = routeDefs[i];\n if (def && typeof def === \"object\" && def.hasOwnProperty(\"path\")) {\n const routes = createRoutes(def, base, fallback);\n for (const route of routes) {\n stack.push(route);\n if (def.children) {\n createBranches(def.children, route.pattern, fallback, stack, branches);\n }\n else {\n const branch = createBranch([...stack], branches.length);\n branches.push(branch);\n }\n stack.pop();\n }\n }\n }\n // Stack will be empty on final return\n return stack.length ? branches : branches.sort((a, b) => b.score - a.score);\n}\nfunction getRouteMatches(branches, location) {\n for (let i = 0, len = branches.length; i < len; i++) {\n const match = branches[i].matcher(location);\n if (match) {\n return match;\n }\n }\n return [];\n}\nfunction createLocation(path, state) {\n const origin = new URL(\"http://sar\");\n const url = createMemo(prev => {\n const path_ = path();\n try {\n return new URL(path_, origin);\n }\n catch (err) {\n console.error(`Invalid path ${path_}`);\n return prev;\n }\n }, origin);\n const pathname = createMemo(() => urlDecode(url().pathname));\n const search = createMemo(() => urlDecode(url().search, true));\n const hash = createMemo(() => urlDecode(url().hash));\n const key = createMemo(() => \"\");\n return {\n get pathname() {\n return pathname();\n },\n get search() {\n return search();\n },\n get hash() {\n return hash();\n },\n get state() {\n return state();\n },\n get key() {\n return key();\n },\n query: createMemoObject(on(search, () => extractSearchParams(url())))\n };\n}\nfunction createRouterContext(integration, base = \"\", data, out) {\n const { signal: [source, setSource], utils = {} } = normalizeIntegration(integration);\n const parsePath = utils.parsePath || (p => p);\n const renderPath = utils.renderPath || (p => p);\n const basePath = resolvePath(\"\", base);\n const output = out\n ? Object.assign(out, {\n matches: [],\n url: undefined\n })\n : undefined;\n if (basePath === undefined) {\n throw new Error(`${basePath} is not a valid base path`);\n }\n else if (basePath && !source().value) {\n setSource({ value: basePath, replace: true, scroll: false });\n }\n const [isRouting, start] = useTransition();\n const [reference, setReference] = createSignal(source().value);\n const [state, setState] = createSignal(source().state);\n const location = createLocation(reference, state);\n const referrers = [];\n const baseRoute = {\n pattern: basePath,\n params: {},\n path: () => basePath,\n outlet: () => null,\n resolvePath(to) {\n return resolvePath(basePath, to);\n }\n };\n if (data) {\n try {\n TempRoute = baseRoute;\n baseRoute.data = data({\n data: undefined,\n params: {},\n location,\n navigate: navigatorFactory(baseRoute)\n });\n }\n finally {\n TempRoute = undefined;\n }\n }\n function navigateFromRoute(route, to, options) {\n // Untrack in case someone navigates in an effect - don't want to track `reference` or route paths\n untrack(() => {\n if (typeof to === \"number\") {\n if (!to) ;\n else if (utils.go) {\n utils.go(to);\n }\n else {\n console.warn(\"Router integration does not support relative routing\");\n }\n return;\n }\n const { replace, resolve, scroll, state: nextState } = {\n replace: false,\n resolve: true,\n scroll: true,\n ...options\n };\n const resolvedTo = resolve ? route.resolvePath(to) : resolvePath(\"\", to);\n if (resolvedTo === undefined) {\n throw new Error(`Path '${to}' is not a routable path`);\n }\n else if (referrers.length >= MAX_REDIRECTS) {\n throw new Error(\"Too many redirects\");\n }\n const current = reference();\n if (resolvedTo !== current || nextState !== state()) {\n {\n if (output) {\n output.url = resolvedTo;\n }\n setSource({ value: resolvedTo, replace, scroll, state: nextState });\n }\n }\n });\n }\n function navigatorFactory(route) {\n // Workaround for vite issue (https://github.com/vitejs/vite/issues/3803)\n route = route || useContext(RouteContextObj) || baseRoute;\n return (to, options) => navigateFromRoute(route, to, options);\n }\n createRenderEffect(() => {\n const { value, state } = source();\n // Untrack this whole block so `start` doesn't cause Solid's Listener to be preserved\n untrack(() => {\n if (value !== reference()) {\n start(() => {\n setReference(value);\n setState(state);\n });\n }\n });\n });\n return {\n base: baseRoute,\n out: output,\n location,\n isRouting,\n renderPath,\n parsePath,\n navigatorFactory\n };\n}\nfunction createRouteContext(router, parent, child, match) {\n const { base, location, navigatorFactory } = router;\n const { pattern, element: outlet, preload, data } = match().route;\n const path = createMemo(() => match().path);\n const params = createMemoObject(() => match().params);\n preload && preload();\n const route = {\n parent,\n pattern,\n get child() {\n return child();\n },\n path,\n params,\n data: parent.data,\n outlet,\n resolvePath(to) {\n return resolvePath(base.path(), to, path());\n }\n };\n if (data) {\n try {\n TempRoute = route;\n route.data = data({ data: parent.data, params, location, navigate: navigatorFactory(route) });\n }\n finally {\n TempRoute = undefined;\n }\n }\n return route;\n}\n\nconst Router = props => {\n const {\n source,\n url,\n base,\n data,\n out\n } = props;\n const integration = source || (staticIntegration({\n value: url || \"\"\n }) );\n const routerState = createRouterContext(integration, base, data, out);\n return createComponent(RouterContextObj.Provider, {\n value: routerState,\n\n get children() {\n return props.children;\n }\n\n });\n};\nconst Routes$1 = props => {\n const router = useRouter();\n const parentRoute = useRoute();\n const routeDefs = children(() => props.children);\n const branches = createMemo(() => createBranches(routeDefs(), joinPaths(parentRoute.pattern, props.base || \"\"), Outlet));\n const matches = createMemo(() => getRouteMatches(branches(), router.location.pathname));\n\n if (router.out) {\n router.out.matches.push(matches().map(({\n route,\n path,\n params\n }) => ({\n originalPath: route.originalPath,\n pattern: route.pattern,\n path,\n params\n })));\n }\n\n const disposers = [];\n let root;\n const routeStates = createMemo(on(matches, (nextMatches, prevMatches, prev) => {\n let equal = prevMatches && nextMatches.length === prevMatches.length;\n const next = [];\n\n for (let i = 0, len = nextMatches.length; i < len; i++) {\n const prevMatch = prevMatches && prevMatches[i];\n const nextMatch = nextMatches[i];\n\n if (prev && prevMatch && nextMatch.route.key === prevMatch.route.key) {\n next[i] = prev[i];\n } else {\n equal = false;\n\n if (disposers[i]) {\n disposers[i]();\n }\n\n createRoot(dispose => {\n disposers[i] = dispose;\n next[i] = createRouteContext(router, next[i - 1] || parentRoute, () => routeStates()[i + 1], () => matches()[i]);\n });\n }\n }\n\n disposers.splice(nextMatches.length).forEach(dispose => dispose());\n\n if (prev && equal) {\n return prev;\n }\n\n root = next[0];\n return next;\n }));\n return createComponent(Show, {\n get when() {\n return routeStates() && root;\n },\n\n children: route => createComponent(RouteContextObj.Provider, {\n value: route,\n\n get children() {\n return route.outlet();\n }\n\n })\n });\n};\nconst Outlet = () => {\n const route = useRoute();\n return createComponent(Show, {\n get when() {\n return route.child;\n },\n\n children: child => createComponent(RouteContextObj.Provider, {\n value: child,\n\n get children() {\n return child.outlet();\n }\n\n })\n });\n};\n\nclass ServerError extends Error {\n constructor(message, {\n stack\n } = {}) {\n super(message);\n this.name = \"ServerError\";\n\n if (stack) {\n this.stack = stack;\n }\n }\n\n}\nclass FormError extends ServerError {\n constructor(message, {\n fieldErrors = {},\n form,\n fields,\n stack\n } = {}) {\n super(message, {\n stack\n });\n this.formError = message;\n this.name = \"FormError\";\n this.fields = fields || Object.fromEntries(typeof form !== \"undefined\" ? form.entries() : []) || {};\n this.fieldErrors = fieldErrors;\n }\n\n}\n\nconst ServerContext = createContext({});\n\nfunction Routes(props) {\n\n return createComponent(Routes$1, {\n get children() {\n return props.children;\n }\n\n });\n}\n\nconst _tmpl$$2 = [\"

\", \"

\", \"
\"];\nfunction ErrorBoundary(props) {\n return createComponent(ErrorBoundary$1, {\n fallback: e => {\n return createComponent(Show, {\n get when() {\n return !props.fallback;\n },\n\n get fallback() {\n return props.fallback(e);\n },\n\n get children() {\n return createComponent(ErrorMessage, {\n error: e\n });\n }\n\n });\n },\n\n get children() {\n return props.children;\n }\n\n });\n}\n\nfunction ErrorMessage(props) {\n return ssr(_tmpl$$2, ssrHydrationKey(), \"padding:\" + \"16px\", \"background-color:\" + \"rgba(252, 165, 165)\" + (\";color:\" + \"rgb(153, 27, 27)\") + (\";border-radius:\" + \"5px\") + (\";overflow:\" + \"scroll\") + (\";padding:\" + \"16px\") + (\";margin-bottom:\" + \"8px\"), \"font-weight:\" + \"bold\", escape(props.error.message), \"color:\" + \"rgba(252, 165, 165)\" + (\";background-color:\" + \"rgb(153, 27, 27)\") + (\";border-radius:\" + \"5px\") + (\";padding:\" + \"4px 8px\"), \"margin-top:\" + \"8px\" + (\";width:\" + \"100%\"), escape(props.error.stack));\n}\n\nconst _tmpl$$1 = [\"

hello

\", \"\"],\n _tmpl$2$1 = [\"\", \"\"];\nconst gql = String.raw;\nfunction Home() {\n const [mounted, setMount] = createSignal(false);\n return ssr(_tmpl$$1, ssrHydrationKey(), escape(createComponent(Show, {\n get when() {\n return mounted();\n },\n\n get children() {\n return createComponent(GqlQueryTest, {});\n }\n\n })));\n}\nconst GqlQueryTest = props => {\n const [result, status] = createResource(() => distExports.request(\"/graphql\", gql`\n {\n hello\n }\n `));\n\n const data = () => result.latest ? JSON.stringify(result.latest) : undefined;\n\n return ssr(_tmpl$2$1, ssrHydrationKey(), escape(data));\n};\n\n/// \nconst routesConfig = {\n routes: [{\n component: Home,\n path: \"/\"\n }],\n routeLayouts: {\n \"/\": {\n \"id\": \"/\",\n \"layouts\": []\n }\n }\n};\n/**\n * Routes are the file system based routes, used by Solid App Router to show the current page according to the URL.\n */\n\nconst FileRoutes = () => {\n return routesConfig.routes;\n};\n\nconst _tmpl$ = [\"\"],\n _tmpl$2 = [\"\"];\n\nfunction getAssetsFromManifest(manifest, routerContext) {\n const match = routerContext.matches.reduce((memo, m) => {\n if (m.length) {\n const fullPath = m.reduce((previous, match) => previous + match.originalPath, \"\");\n const route = routesConfig.routeLayouts[fullPath];\n\n if (route) {\n memo.push(...(manifest[route.id] || []));\n const layoutsManifestEntries = route.layouts.flatMap(manifestKey => manifest[manifestKey] || []);\n memo.push(...layoutsManifestEntries);\n }\n }\n\n return memo;\n }, []);\n match.push(...(manifest[\"entry-client\"] || []));\n const links = match.reduce((r, src) => {\n r[src.href] = src.type === \"style\" ? ssr(_tmpl$, ssrHydrationKey(), ssrAttribute(\"href\", escape(src.href, true), false)) : src.type === \"script\" ? ssr(_tmpl$2, ssrHydrationKey(), ssrAttribute(\"href\", escape(src.href, true), false)) : undefined;\n return r;\n }, {});\n return Object.values(links);\n}\n/**\n * Links are used to load assets for the server rendered HTML\n * @returns {JSXElement}\n */\n\n\nfunction Links() {\n const context = useContext(ServerContext);\n return createComponent(Assets, {\n get children() {\n return getAssetsFromManifest(context.env.manifest, context.routerContext);\n }\n\n });\n}\n\nfunction Meta() {\n const context = useContext(ServerContext); // @ts-expect-error The ssr() types do not match the Assets child types\n\n return createComponent(Assets, {\n get children() {\n return ssr(renderTags(context.tags));\n }\n\n });\n}\n\nconst _tmpl$4 = [\"\"];\nconst isDev = \"production\" === \"development\";\nconst isIslands = false;\nfunction Scripts() {\n const context = useContext(ServerContext);\n return [createComponent(HydrationScript, {}), isIslands , createComponent(NoHydration, {\n get children() {\n return (ssr(_tmpl$4, ssrHydrationKey(), ssrAttribute(\"src\", escape(context.env.manifest[\"entry-client\"][0].href, true), false)) );\n }\n\n }), isDev ];\n}\n\nfunction Html(props) {\n\n {\n return ssrElement(\"html\", props, undefined, false);\n }\n}\nfunction Head(props) {\n {\n return ssrElement(\"head\", props, () => [props.children, createComponent(Meta, {}), createComponent(Links, {})], false);\n }\n}\nfunction Body(props) {\n {\n return ssrElement(\"body\", props, () => props.children , false);\n }\n}\n\nfunction Root() {\n return createComponent(Html, {\n lang: \"en\",\n\n get children() {\n return [createComponent(Head, {\n get children() {\n return [createComponent(Title, {\n children: \"SolidStart - With TailwindCSS\"\n }), createComponent(Meta$1, {\n charset: \"utf-8\"\n }), createComponent(Meta$1, {\n name: \"viewport\",\n content: \"width=device-width, initial-scale=1\"\n })];\n }\n\n }), createComponent(Body, {\n get children() {\n return [createComponent(Suspense, {\n get children() {\n return createComponent(ErrorBoundary, {\n get children() {\n return createComponent(Routes, {\n get children() {\n return createComponent(FileRoutes, {});\n }\n\n });\n }\n\n });\n }\n\n }), createComponent(Scripts, {})];\n }\n\n })];\n }\n\n });\n}\n\nconst server$1 = createServer({\n schema: {\n typeDefs: `\n type Query {\n hello: String\n }\n `,\n resolvers: {\n Query: {\n hello: () => \"Hello from Yoga!\"\n }\n }\n }\n});\nconst handler = ({ request }) => {\n return server$1.handleRequest(request);\n};\nconst get = handler;\nconst post = handler;\n\nconst api = [\n {\n get: get,\n post: post,\n path: \"/graphql\"\n },\n {\n get: \"skip\",\n path: \"/\"\n }\n];\nfunction routeToMatchRoute(route) {\n const segments = route.path.split(\"/\").filter(Boolean);\n const params = [];\n const matchSegments = [];\n let score = route.path.endsWith(\"/\") ? 4 : 0;\n let wildcard = false;\n for (const [index, segment] of segments.entries()) {\n if (segment[0] === \":\") {\n const name = segment.slice(1);\n score += 3;\n params.push({\n type: \":\",\n name,\n index\n });\n matchSegments.push(null);\n } else if (segment[0] === \"*\") {\n params.push({\n type: \"*\",\n name: segment.slice(1),\n index\n });\n wildcard = true;\n } else {\n score += 4;\n matchSegments.push(segment);\n }\n }\n return {\n ...route,\n score,\n params,\n matchSegments,\n wildcard\n };\n}\nconst allRoutes = api.map(routeToMatchRoute).sort((a, b) => b.score - a.score);\nregisterApiRoutes(allRoutes);\nfunction getApiHandler(url, method) {\n return getRouteMatches$1(allRoutes, url.pathname, method.toLowerCase());\n}\n\nconst apiRoutes = ({ forward }) => {\n return async (event) => {\n let apiHandler = getApiHandler(new URL(event.request.url), event.request.method);\n if (apiHandler) {\n let apiEvent = Object.freeze({\n request: event.request,\n params: apiHandler.params,\n env: event.env,\n $type: FETCH_EVENT,\n fetch: internalFetch\n });\n try {\n return await apiHandler.handler(apiEvent);\n } catch (error) {\n if (error instanceof Response) {\n return error;\n }\n return new Response(JSON.stringify(error), {\n status: 500\n });\n }\n }\n return await forward(event);\n };\n};\n\nconst server$ = (fn) => {\n throw new Error(\"Should be compiled away\");\n};\nasync function parseRequest(event) {\n let request = event.request;\n let contentType = request.headers.get(ContentTypeHeader);\n let name = new URL(request.url).pathname, args = [];\n if (contentType) {\n if (contentType === JSONResponseType) {\n let text = await request.text();\n try {\n args = JSON.parse(text, (key, value) => {\n if (!value) {\n return value;\n }\n if (value.$type === \"fetch_event\") {\n return event;\n }\n if (value.$type === \"headers\") {\n let headers = new Headers();\n request.headers.forEach((value2, key2) => headers.set(key2, value2));\n value.values.forEach(([key2, value2]) => headers.set(key2, value2));\n return headers;\n }\n if (value.$type === \"request\") {\n return new Request(value.url, {\n method: value.method,\n headers: value.headers\n });\n }\n return value;\n });\n } catch (e) {\n throw new Error(`Error parsing request body: ${text}`);\n }\n } else if (contentType.includes(\"form\")) {\n let formData = await request.clone().formData();\n args = [formData, event];\n }\n }\n return [name, args];\n}\nfunction respondWith(request, data, responseType) {\n if (data instanceof ResponseError) {\n data = data.clone();\n }\n if (data instanceof Response) {\n if (isRedirectResponse(data) && request.headers.get(XSolidStartOrigin) === \"client\") {\n let headers = new Headers(data.headers);\n headers.set(XSolidStartOrigin, \"server\");\n headers.set(XSolidStartLocationHeader, data.headers.get(LocationHeader));\n headers.set(XSolidStartResponseTypeHeader, responseType);\n headers.set(XSolidStartContentTypeHeader, \"response\");\n return new Response(null, {\n status: 204,\n statusText: \"Redirected\",\n headers\n });\n } else if (data.status === 101) {\n return data;\n } else {\n let headers = new Headers(data.headers);\n headers.set(XSolidStartOrigin, \"server\");\n headers.set(XSolidStartResponseTypeHeader, responseType);\n headers.set(XSolidStartContentTypeHeader, \"response\");\n return new Response(data.body, {\n status: data.status,\n statusText: data.statusText,\n headers\n });\n }\n } else if (data instanceof FormError) {\n return new Response(\n JSON.stringify({\n error: {\n message: data.message,\n stack: \"\",\n formError: data.formError,\n fields: data.fields,\n fieldErrors: data.fieldErrors\n }\n }),\n {\n status: 400,\n headers: {\n [XSolidStartResponseTypeHeader]: responseType,\n [XSolidStartContentTypeHeader]: \"form-error\"\n }\n }\n );\n } else if (data instanceof ServerError) {\n return new Response(\n JSON.stringify({\n error: {\n message: data.message,\n stack: \"\"\n }\n }),\n {\n status: 400,\n headers: {\n [XSolidStartResponseTypeHeader]: responseType,\n [XSolidStartContentTypeHeader]: \"server-error\"\n }\n }\n );\n } else if (data instanceof Error) {\n console.error(data);\n return new Response(\n JSON.stringify({\n error: {\n message: \"Internal Server Error\",\n stack: \"\",\n status: data.status\n }\n }),\n {\n status: data.status || 500,\n headers: {\n [XSolidStartResponseTypeHeader]: responseType,\n [XSolidStartContentTypeHeader]: \"error\"\n }\n }\n );\n } else if (typeof data === \"object\" || typeof data === \"string\" || typeof data === \"number\" || typeof data === \"boolean\") {\n return new Response(JSON.stringify(data), {\n status: 200,\n headers: {\n [ContentTypeHeader]: \"application/json\",\n [XSolidStartResponseTypeHeader]: responseType,\n [XSolidStartContentTypeHeader]: \"json\"\n }\n });\n }\n return new Response(\"null\", {\n status: 200,\n headers: {\n [ContentTypeHeader]: \"application/json\",\n [XSolidStartContentTypeHeader]: \"json\",\n [XSolidStartResponseTypeHeader]: responseType\n }\n });\n}\nasync function handleServerRequest(event) {\n const url = new URL(event.request.url);\n if (server$.hasHandler(url.pathname)) {\n try {\n let [name, args] = await parseRequest(event);\n let handler = server$.getHandler(name);\n if (!handler) {\n throw {\n status: 404,\n message: \"Handler Not Found for \" + name\n };\n }\n const data = await handler.call(event, ...Array.isArray(args) ? args : [args]);\n return respondWith(event.request, data, \"return\");\n } catch (error) {\n return respondWith(event.request, error, \"throw\");\n }\n }\n return null;\n}\nconst handlers = /* @__PURE__ */ new Map();\nserver$.createHandler = (_fn, hash) => {\n let fn = function(...args) {\n let ctx;\n if (typeof this === \"object\") {\n ctx = this;\n } else if (sharedConfig.context && sharedConfig.context.requestContext) {\n ctx = sharedConfig.context.requestContext;\n } else {\n ctx = {\n request: new URL(hash, \"http://localhost:3000\").href,\n responseHeaders: new Headers()\n };\n }\n const execute = async () => {\n try {\n let e = await _fn.call(ctx, ...args);\n return e;\n } catch (e) {\n if (/[A-Za-z]+ is not defined/.test(e.message)) {\n const error = new Error(\n e.message + \"\\n You probably are using a variable defined in a closure in your server function.\"\n );\n error.stack = e.stack;\n throw error;\n }\n throw e;\n }\n };\n return execute();\n };\n fn.url = hash;\n fn.action = function(...args) {\n return fn.call(this, ...args);\n };\n return fn;\n};\nserver$.registerHandler = function(route, handler) {\n handlers.set(route, handler);\n};\nserver$.getHandler = function(route) {\n return handlers.get(route);\n};\nserver$.hasHandler = function(route) {\n return handlers.has(route);\n};\nserver$.fetch = internalFetch;\n\nconst inlineServerFunctions = ({ forward }) => {\n return async (event) => {\n const url = new URL(event.request.url);\n if (server$.hasHandler(url.pathname)) {\n let contentType = event.request.headers.get(ContentTypeHeader);\n let origin = event.request.headers.get(XSolidStartOrigin);\n let formRequestBody;\n if (contentType != null && contentType.includes(\"form\") && !(origin != null && origin.includes(\"client\"))) {\n let [read1, read2] = event.request.body.tee();\n formRequestBody = new Request(event.request.url, {\n body: read2,\n headers: event.request.headers,\n method: event.request.method\n });\n event.request = new Request(event.request.url, {\n body: read1,\n headers: event.request.headers,\n method: event.request.method\n });\n }\n let serverFunctionEvent = Object.freeze({\n request: event.request,\n fetch: internalFetch,\n $type: FETCH_EVENT,\n env: event.env\n });\n const serverResponse = await handleServerRequest(serverFunctionEvent);\n let responseContentType = serverResponse.headers.get(XSolidStartContentTypeHeader);\n if (formRequestBody && responseContentType !== null && responseContentType.includes(\"error\")) {\n const formData = await formRequestBody.formData();\n let entries = [...formData.entries()];\n return new Response(null, {\n status: 302,\n headers: {\n Location: new URL(event.request.headers.get(\"referer\")).pathname + \"?form=\" + encodeURIComponent(\n JSON.stringify({\n url: url.pathname,\n entries,\n ...await serverResponse.json()\n })\n )\n }\n });\n }\n return serverResponse;\n }\n const response = await forward(event);\n return response;\n };\n};\n\nconst rootData = Object.values(/* #__PURE__ */ Object.assign({}))[0];\nconst dataFn = rootData ? rootData.default : undefined;\n/** Function responsible for listening for streamed [operations]{@link Operation}. */\n\n/** This composes an array of Exchanges into a single ExchangeIO function */\nconst composeMiddleware = exchanges => ({\n forward\n}) => exchanges.reduceRight((forward, exchange) => exchange({\n forward\n}), forward);\nfunction createHandler(...exchanges) {\n const exchange = composeMiddleware([apiRoutes, inlineServerFunctions, ...exchanges]);\n return async event => {\n return await exchange({\n forward: async op => {\n return new Response(null, {\n status: 404\n });\n }\n })(event);\n };\n}\nfunction StartRouter(props) {\n\n return createComponent(Router, props);\n}\nconst docType = ssr(\"\");\nfunction StartServer({\n event\n}) {\n const parsed = new URL(event.request.url);\n const path = parsed.pathname + parsed.search;\n sharedConfig.context.requestContext = event;\n return createComponent(ServerContext.Provider, {\n value: event,\n\n get children() {\n return createComponent(MetaProvider, {\n get tags() {\n return event.tags;\n },\n\n get children() {\n return createComponent(StartRouter, {\n url: path,\n\n get out() {\n return event.routerContext;\n },\n\n location: path,\n\n get prevLocation() {\n return event.prevUrl;\n },\n\n data: dataFn,\n\n get routes() {\n return routesConfig.routes;\n },\n\n get children() {\n return [docType, createComponent(Root, {})];\n }\n\n });\n }\n\n });\n }\n\n });\n}\n\nconst entryServer = createHandler(renderAsync(event => createComponent(StartServer, {\n event: event\n})));\n\nconst assetManifest = JSON.parse(manifestJSON);\n\nvar server = {\n async fetch(request, env, ctx) {\n if (request.headers.get(\"Upgrade\") === \"websocket\") {\n const url = new URL(request.url);\n const durableObjectId = env.DO_WEBSOCKET.idFromName(url.pathname + url.search);\n const durableObjectStub = env.DO_WEBSOCKET.get(durableObjectId);\n const response = await durableObjectStub.fetch(request);\n return response;\n }\n\n env.manifest = manifest;\n env.getStaticAsset = async request => {\n return await dist$1.getAssetFromKV(\n {\n request,\n waitUntil(promise) {\n return ctx.waitUntil(promise);\n }\n },\n {\n ASSET_NAMESPACE: env.__STATIC_CONTENT,\n ASSET_MANIFEST: assetManifest\n }\n );\n };\n\n env.getStaticHTML = async path => {\n return await env.getStaticAsset(new Request(new URL(path + \".html\", request.url.toString())));\n };\n\n try {\n return await env.getStaticAsset(request);\n } catch (e) {\n if (!(e instanceof dist$1.NotFoundError || e instanceof dist$1.MethodNotAllowedError)) {\n return new Response(\"An unexpected error occurred\", { status: 500 });\n }\n }\n return entryServer({\n request: request,\n env\n });\n }\n};\n\nexport { server as default };\n"], + "mappings": "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AA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAOA,IAAM,QAAQ,OAAO,OAAO,CAAC,CAAC;AAgF9B,SAAS,MAAM,MAAM,SAAS,cAAc,mBAAmB;AAC7D,QAAM,gBAAgB,oBAAI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", + "names": ["children", "lookup", "res", "reject", "options", "global", "self", "exports", "iterator", "Headers", "Body", "Request", "Response", "fetch", "prefix", "OperationTypeNode", "DirectiveLocation", "Kind", "indent", "TokenKind", "escape", "instanceOf", "parser", "types", "ReactNativeFile", "isExtractableFile", "extractFiles", "i", "result", "_a", "document", "extendStatics", "d", "b", "ClientError", "__awaiter", "__generator", "ERROR", "GraphQLWebSocketMessage", "GraphQLWebSocketClient", "e", "__importDefault", "defaultJsonSerializer_1", "post", "get", "GraphQLClient", "variables", "data", "gql", "EnableIfBranded", "parseValue", "TypeKind", "onError", "getNamedType", "handler", "schema", "err", "isDev", "Yallist", "getRootTypeMap", "type", "key", "MapperKind", "defaultFieldResolver", "source", "CompareVal", "other", "_b", "request", "server", "error", "RepeaterOverflowError", "value", "Repeater", "push", "stop", "iteration", "_this", "iterations", "path", "state", "manifest", "match", "execute", "forward"] } diff --git a/dist/public/assets/entry-client.b0117054.js b/dist/public/assets/entry-client.0e635511.js similarity index 99% rename from dist/public/assets/entry-client.b0117054.js rename to dist/public/assets/entry-client.0e635511.js index 5c22e8a..bdfeb43 100644 --- a/dist/public/assets/entry-client.b0117054.js +++ b/dist/public/assets/entry-client.0e635511.js @@ -1 +1 @@ -const f={};function V(e){f.context=e}function bt(){return{...f.context,id:`${f.context.id}${f.context.count++}-`,count:0}}const xt=(e,t)=>e===t,St=Symbol("solid-proxy"),fe={equals:xt};let F=null,Ke=Ge;const N=1,j=2,We={owned:null,cleanups:null,context:null,owner:null},me={};var g=null;let a=null,x=null,T=null,$=null,Se=0;const[Et,ke]=q(!1);function Ee(e,t){const n=x,r=g,s=e.length===0,o=s?We:{owned:null,cleanups:null,context:null,owner:t||r},l=s?e:()=>e(()=>L(()=>Q(o)));g=o,x=null;try{return M(l,!0)}finally{x=n,g=r}}function q(e,t){t=t?Object.assign({},fe,t):fe;const n={value:e,observers:null,observerSlots:null,comparator:t.equals||void 0},r=s=>(typeof s=="function"&&(a&&a.running&&a.sources.has(n)?s=s(n.tValue):s=s(n.value)),Qe(n,s));return[Je.bind(n),r]}function Ne(e,t,n){const r=ye(e,t,!0,N);ee(r)}function U(e,t,n){const r=ye(e,t,!1,N);ee(r)}function Xe(e,t,n){Ke=Nt;const r=ye(e,t,!1,N),s=K&&ue(g,K.id);s&&(r.suspense=s),r.user=!0,$?$.push(r):ee(r)}function A(e,t,n){n=n?Object.assign({},fe,n):fe;const r=ye(e,t,!0,0);return r.observers=null,r.observerSlots=null,r.comparator=n.equals||void 0,ee(r),Je.bind(r)}function vt(e,t,n){let r,s,o;arguments.length===2&&typeof t=="object"||arguments.length===1?(r=!0,s=e,o=t||{}):(r=e,s=t,o=n||{});let l=null,i=me,c=null,u=!1,d=!1,y="initialValue"in o,b=typeof r=="function"&&A(r);const w=new Set,[m,R]=(o.storage||q)(o.initialValue),[O,_]=q(void 0),[k,H]=q(void 0,{equals:!1}),[te,ne]=q(y?"ready":"unresolved");if(f.context){c=`${f.context.id}${f.context.count++}`;let h;o.ssrLoadFrom==="initial"?i=o.initialValue:f.load&&(h=f.load(c))&&(i=h[0])}function X(h,C,v,I){return l===h&&(l=null,y=!0,(h===i||C===i)&&o.onHydrated&&queueMicrotask(()=>o.onHydrated(I,{value:C})),i=me,a&&h&&u?(a.promises.delete(h),u=!1,M(()=>{a.running=!0,S(C,v)},!1)):S(C,v)),C}function S(h,C){M(()=>{C||R(()=>h),_(C),ne(C?"errored":"ready");for(const v of w.keys())v.decrement();w.clear()},!1)}function E(){const h=K&&ue(g,K.id),C=m(),v=O();if(v&&!l)throw v;return x&&!x.user&&h&&Ne(()=>{k(),l&&(h.resolved&&a&&a.running?a.promises.add(l):w.has(h)||(h.increment(),w.add(h)))}),C}function P(h=!0){if(h!==!1&&d)return;d=!1;const C=b?b():r;if(u=a&&a.running,C==null||C===!1){X(l,L(m));return}a&&l&&a.promises.delete(l);const v=i!==me?i:L(()=>s(C,{value:m(),refetching:h}));return typeof v!="object"||!(v&&"then"in v)?(X(l,v),v):(l=v,d=!0,queueMicrotask(()=>d=!1),M(()=>{ne(y?"refreshing":"pending"),H()},!1),v.then(I=>X(v,I,void 0,C),I=>X(v,void 0,tt(I))))}return Object.defineProperties(E,{state:{get:()=>te()},error:{get:()=>O()},loading:{get(){const h=te();return h==="pending"||h==="refreshing"}},latest:{get(){if(!y)return E();const h=O();if(h&&!l)throw h;return m()}}}),b?Ne(()=>P(!1)):P(!1),[E,{refetch:P,mutate:R}]}function L(e){let t,n=x;return x=null,t=e(),x=n,t}function Ye(e,t,n){const r=Array.isArray(e);let s,o=n&&n.defer;return l=>{let i;if(r){i=Array(e.length);for(let u=0;ut(i,s,l));return s=i,c}}function rr(e){Xe(()=>L(e))}function le(e){return g===null||(g.cleanups===null?g.cleanups=[e]:g.cleanups.push(e)),e}function Le(e){F||(F=Symbol("error")),g===null||(g.context===null?g.context={[F]:[e]}:g.context[F]?g.context[F].push(e):g.context[F]=[e])}function ze(){return g}function Ct(e,t){const n=g;g=e;try{return M(t,!0)}finally{g=n}}function At(e){if(a&&a.running)return e(),a.done;const t=x,n=g;return Promise.resolve().then(()=>{x=t,g=n;let r;return K&&(r=a||(a={sources:new Set,effects:[],promises:new Set,disposed:new Set,queue:new Set,running:!0}),r.done||(r.done=new Promise(s=>r.resolve=s)),r.running=!0),M(e,!1),x=g=null,r?r.done:void 0})}function Pt(){return[Et,At]}function $t(e){$.push.apply($,e),e.length=0}function Z(e){const t=Symbol("context");return{id:t,Provider:Lt(t),defaultValue:e}}function W(e){let t;return(t=ue(g,e.id))!==void 0?t:e.defaultValue}function ve(e){const t=A(e),n=A(()=>be(t()));return n.toArray=()=>{const r=n();return Array.isArray(r)?r:r!=null?[r]:[]},n}let K;function Tt(){return K||(K=Z({}))}function Je(){const e=a&&a.running;if(this.sources&&(!e&&this.state||e&&this.tState))if(!e&&this.state===N||e&&this.tState===N)ee(this);else{const t=T;T=null,M(()=>he(this),!1),T=t}if(x){const t=this.observers?this.observers.length:0;x.sources?(x.sources.push(this),x.sourceSlots.push(t)):(x.sources=[this],x.sourceSlots=[t]),this.observers?(this.observers.push(x),this.observerSlots.push(x.sources.length-1)):(this.observers=[x],this.observerSlots=[x.sources.length-1])}return e&&a.sources.has(this)?this.tValue:this.value}function Qe(e,t,n){let r=a&&a.running&&a.sources.has(e)?e.tValue:e.value;if(!e.comparator||!e.comparator(r,t)){if(a){const s=a.running;(s||!n&&a.sources.has(e))&&(a.sources.add(e),e.tValue=t),s||(e.value=t)}else e.value=t;e.observers&&e.observers.length&&M(()=>{for(let s=0;s1e6)throw T=[],new Error},!1)}return t}function ee(e){if(!e.fn)return;Q(e);const t=g,n=x,r=Se;x=g=e,Re(e,a&&a.running&&a.sources.has(e)?e.tValue:e.value,r),a&&!a.running&&a.sources.has(e)&&queueMicrotask(()=>{M(()=>{a&&(a.running=!0),Re(e,e.tValue,r)},!1)}),x=n,g=t}function Re(e,t,n){let r;try{r=e.fn(t)}catch(s){e.pure&&(a&&a.running?e.tState=N:e.state=N),nt(s)}(!e.updatedAt||e.updatedAt<=n)&&(e.updatedAt!=null&&"observers"in e?Qe(e,r,!0):a&&a.running&&e.pure?(a.sources.add(e),e.tValue=r):e.value=r,e.updatedAt=n)}function ye(e,t,n,r=N,s){const o={fn:e,state:r,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:t,owner:g,context:null,pure:n};return a&&a.running&&(o.state=0,o.tState=r),g===null||g!==We&&(a&&a.running&&g.pure?g.tOwned?g.tOwned.push(o):g.tOwned=[o]:g.owned?g.owned.push(o):g.owned=[o]),o}function de(e){const t=a&&a.running;if(!t&&e.state===0||t&&e.tState===0)return;if(!t&&e.state===j||t&&e.tState===j)return he(e);if(e.suspense&&L(e.suspense.inFallback))return e.suspense.effects.push(e);const n=[e];for(;(e=e.owner)&&(!e.updatedAt||e.updatedAt=0;r--){if(e=n[r],t){let s=e,o=n[r+1];for(;(s=s.owner)&&s!==o;)if(a.disposed.has(s))return}if(!t&&e.state===N||t&&e.tState===N)ee(e);else if(!t&&e.state===j||t&&e.tState===j){const s=T;T=null,M(()=>he(e,n[0]),!1),T=s}}}function M(e,t){if(T)return e();let n=!1;t||(T=[]),$?n=!0:$=[],Se++;try{const r=e();return kt(n),r}catch(r){T||($=null),nt(r)}}function kt(e){if(T&&(Ge(T),T=null),e)return;let t;if(a){if(!a.promises.size&&!a.queue.size){const r=a.sources,s=a.disposed;$.push.apply($,a.effects),t=a.resolve;for(const o of $)"tState"in o&&(o.state=o.tState),delete o.tState;a=null,M(()=>{for(const o of s)Q(o);for(const o of r){if(o.value=o.tValue,o.owned)for(let l=0,i=o.owned.length;lKe(n),!1),t&&t()}function Ge(e){for(let t=0;tr=L(()=>(g.context={[e]:n.value},ve(()=>n.children)))),r}}let rt=!1;function Rt(){rt=!0}function p(e,t){if(rt&&f.context){const n=f.context;V(bt());const r=L(()=>e(t||{}));return V(n),r}return L(()=>e(t||{}))}function ce(){return!0}const Ot={get(e,t,n){return t===St?n:e.get(t)},has(e,t){return e.has(t)},set:ce,deleteProperty:ce,getOwnPropertyDescriptor(e,t){return{configurable:!0,enumerable:!0,get(){return e.get(t)},set:ce,deleteProperty:ce}},ownKeys(e){return e.keys()}};function we(e){return(e=typeof e=="function"?e():e)==null?{}:e}function qt(...e){return new Proxy({get(t){for(let n=e.length-1;n>=0;n--){const r=we(e[n])[t];if(r!==void 0)return r}},has(t){for(let n=e.length-1;n>=0;n--)if(t in we(e[n]))return!0;return!1},keys(){const t=[];for(let n=0;n{const o=f.context;if(o){const[i,c]=q();(n||(n=e())).then(u=>{V(o),c(()=>u.default),V()}),t=i}else if(t){const i=t();if(i)return i(s)}else{const[i]=vt(()=>(n||(n=e())).then(c=>c.default));t=i}let l;return A(()=>(l=t())&&L(()=>{if(!o)return l(s);const i=f.context;V(o);const c=l(s);return V(i),c}))};return r.preload=()=>n||((n=e()).then(s=>t=()=>s.default),n),r}let _t=0;function Vt(){const e=f.context;return e?`${e.id}${e.count++}`:`cl-${_t++}`}function Ce(e){let t=!1;const n=e.keyed,r=A(()=>e.when,void 0,{equals:(s,o)=>t?s===o:!s==!o});return A(()=>{const s=r();if(s){const o=e.children,l=typeof o=="function"&&o.length>0;return t=n||l,l?L(()=>o(s)):o}return e.fallback})}let z;function st(){z&&[...z].forEach(e=>e())}function Ht(e){let t,n;f.context&&f.load&&(n=f.load(f.context.id+f.context.count))&&(t=n[0]);const[r,s]=q(t);return z||(z=new Set),z.add(s),le(()=>z.delete(s)),A(()=>{let o;if(o=r()){const l=e.fallback,i=typeof l=="function"&&l.length?L(()=>l(o,()=>s())):l;return Le(s),i}return Le(s),e.children})}const It=Z();function Ut(e){let t=0,n,r,s,o,l;const[i,c]=q(!1),u=Tt(),d={increment:()=>{++t===1&&c(!0)},decrement:()=>{--t===0&&c(!1)},inFallback:i,effects:[],resolved:!1},y=ze();if(f.context&&f.load){const m=f.context.id+f.context.count;let R=f.load(m);if(R&&(s=R[0])&&s!=="$$f"){(typeof s!="object"||!("then"in s))&&(s=Promise.resolve(s));const[O,_]=q(void 0,{equals:!1});o=O,s.then(k=>{if(k||f.done)return k&&(l=k),_();f.gather(m),V(r),_(),V()})}}const b=W(It);b&&(n=b.register(d.inFallback));let w;return le(()=>w&&w()),p(u.Provider,{value:d,get children(){return A(()=>{if(l)throw l;if(r=f.context,o)return o(),o=void 0;r&&s==="$$f"&&V();const m=A(()=>e.children);return A(R=>{const O=d.inFallback(),{showContent:_=!0,showFallback:k=!0}=n?n():{};if((!O||s&&s!=="$$f")&&_)return d.resolved=!0,w&&w(),w=r=s=void 0,$t(d.effects),m();if(!!k)return w?R:Ee(H=>(w=H,r&&(V({id:r.id+"f",count:0}),r=void 0),e.fallback),y)})})}})}const Ft=["allowfullscreen","async","autofocus","autoplay","checked","controls","default","disabled","formnovalidate","hidden","indeterminate","ismap","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","seamless","selected"],jt=new Set(["className","value","readOnly","formNoValidate","isMap","noModule","playsInline",...Ft]),Bt=new Set(["innerHTML","textContent","innerText","children"]),Dt={className:"class",htmlFor:"for"},Oe={class:"className",formnovalidate:"formNoValidate",ismap:"isMap",nomodule:"noModule",playsinline:"playsInline",readonly:"readOnly"},Kt=new Set(["beforeinput","click","dblclick","contextmenu","focusin","focusout","input","keydown","keyup","mousedown","mousemove","mouseout","mouseover","mouseup","pointerdown","pointermove","pointerout","pointerover","pointerup","touchend","touchmove","touchstart"]),Wt={xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace"};function Xt(e,t,n){let r=n.length,s=t.length,o=r,l=0,i=0,c=t[s-1].nextSibling,u=null;for(;ld-i){const m=t[l];for(;i{r=s,t===document?e():ge(t,e(),t.firstChild?null:void 0,n)}),()=>{r(),t.textContent=""}}function zt(e,t,n){const r=document.createElement("template");r.innerHTML=e;let s=r.content.firstChild;return n&&(s=s.firstChild),s}function Ae(e,t=window.document){const n=t[qe]||(t[qe]=new Set);for(let r=0,s=e.length;rs.call(e,n[1],o))}else e.addEventListener(t,n)}function Gt(e,t,n={}){const r=Object.keys(t||{}),s=Object.keys(n);let o,l;for(o=0,l=s.length;oVe(e,t(),s,n,r)):Ve(e,t,void 0,n,r)}function ge(e,t,n,r){if(n!==void 0&&!r&&(r=[]),typeof t!="function")return G(e,t,r,n);U(s=>G(e,t(),s,n),r)}function en(e,t,n,r,s={},o=!1){t||(t={});for(const l in s)if(!(l in t)){if(l==="children")continue;s[l]=_e(e,l,null,s[l],n,o)}for(const l in t){if(l==="children"){r||G(e,t.children);continue}const i=t[l];s[l]=_e(e,l,i,s[l],n,o)}}function tn(e,t,n={}){f.completed=globalThis._$HY.completed,f.events=globalThis._$HY.events,f.load=globalThis._$HY.load,f.gather=s=>Ie(t,s),f.registry=new Map,f.context={id:n.renderId||"",count:0},Ie(t,n.renderId);const r=Yt(e,t,[...t.childNodes]);return f.context=null,r}function nn(e){let t,n;return!f.context||!(t=f.registry.get(n=on()))?e.cloneNode(!0):(f.completed&&f.completed.add(t),f.registry.delete(n),t)}function sr(e){let t=e,n=0,r=[];if(f.context)for(;t;){if(t.nodeType===8){const s=t.nodeValue;if(s==="#")n++;else if(s==="/"){if(n===0)return[t,r];n--}}r.push(t),t=t.nextSibling}return[t,r]}function rn(){f.events&&!f.events.queued&&(queueMicrotask(()=>{const{completed:e,events:t}=f;for(t.queued=!1;t.length;){const[n,r]=t[0];if(!e.has(n))return;lt(r),t.shift()}}),f.events.queued=!0)}function sn(e){return e.toLowerCase().replace(/-([a-z])/g,(t,n)=>n.toUpperCase())}function Me(e,t,n){const r=t.trim().split(/\s+/);for(let s=0,o=r.length;s-1&&Wt[t.split(":")[0]];u?Jt(e,u,t,n):ot(e,Dt[t]||t,n)}return n}function lt(e){const t=`$$${e.type}`;let n=e.composedPath&&e.composedPath()[0]||e.target;for(e.target!==n&&Object.defineProperty(e,"target",{configurable:!0,value:n}),Object.defineProperty(e,"currentTarget",{configurable:!0,get(){return n||document}}),f.registry&&!f.done&&(f.done=!0,document.querySelectorAll("[id^=pl-]").forEach(r=>r.remove()));n!==null;){const r=n[t];if(r&&!n.disabled){const s=n[`${t}Data`];if(s!==void 0?r.call(n,s,e):r.call(n,e),e.cancelBubble)return}n=n.host&&n.host!==n&&n.host instanceof Node?n.host:n.parentNode}}function Ve(e,t,n={},r,s){return t||(t={}),s||U(()=>n.children=G(e,t.children,n.children)),U(()=>t.ref&&t.ref(e)),U(()=>en(e,t,r,!0,n,!0)),n}function G(e,t,n,r,s){for(f.context&&!n&&(n=[...e.childNodes]);typeof n=="function";)n=n();if(t===n)return n;const o=typeof t,l=r!==void 0;if(e=l&&n[0]&&n[0].parentNode||e,o==="string"||o==="number"){if(f.context)return n;if(o==="number"&&(t=t.toString()),l){let i=n[0];i&&i.nodeType===3?i.data=t:i=document.createTextNode(t),n=Y(e,n,r,i)}else n!==""&&typeof n=="string"?n=e.firstChild.data=t:n=e.textContent=t}else if(t==null||o==="boolean"){if(f.context)return n;n=Y(e,n,r)}else{if(o==="function")return U(()=>{let i=t();for(;typeof i=="function";)i=i();n=G(e,i,n,r)}),()=>n;if(Array.isArray(t)){const i=[],c=n&&Array.isArray(n);if(xe(i,t,n,s))return U(()=>n=G(e,i,n,r,!0)),()=>n;if(f.context){if(!i.length)return n;for(let u=0;u=0;l--){const i=t[l];if(s!==i){const c=i.parentNode===e;!o&&!l?c?e.replaceChild(s,i):e.insertBefore(s,n):c&&i.remove()}else o=!0}}else e.insertBefore(s,n);return[s]}function Ie(e,t){const n=e.querySelectorAll("*[data-hk]");for(let r=0;r(Rt(),tn(...e)),fn="modulepreload",dn=function(e){return"/"+e},Ue={},hn=function(t,n,r){return!n||n.length===0?t():Promise.all(n.map(s=>{if(s=dn(s),s in Ue)return;Ue[s]=!0;const o=s.endsWith(".css"),l=o?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${s}"]${l}`))return;const i=document.createElement("link");if(i.rel=o?"stylesheet":fn,o||(i.as="script",i.crossOrigin=""),i.href=s,document.head.appendChild(i),o)return new Promise((c,u)=>{i.addEventListener("load",c),i.addEventListener("error",()=>u(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t())};function gn(e,t){an(e,t)}const Pe=Z(),yn=["title","meta"],Fe=e=>e.tag+(e.name?`.${e.name}"`:""),pn=e=>{const t=new Map;function n(s){if(s.ref)return s.ref;let o=document.querySelector(`[data-sm="${s.id}"]`);return o?(o.tagName.toLowerCase()!==s.tag&&(o.parentNode&&o.parentNode.removeChild(o),o=document.createElement(s.tag)),o.removeAttribute("data-sm")):o=document.createElement(s.tag),o}const r={addClientTag:s=>{let o=Fe(s);if(yn.indexOf(s.tag)!==-1){t.has(o)||t.set(o,[]);let i=t.get(o),c=i.length;i=[...i,s],t.set(o,i);{let u=n(s);s.ref=u,oe(u,()=>s.props);let d=null;for(var l=c-1;l>=0;l--)if(i[l]!=null){d=i[l];break}u.parentNode!=document.head&&document.head.appendChild(u),d&&d.ref&&document.head.removeChild(d.ref)}return c}{let i=n(s);s.ref=i,oe(i,()=>s.props),i.parentNode!=document.head&&document.head.appendChild(i)}return-1},removeClientTag:(s,o)=>{const l=Fe(s);if(s.ref){const i=t.get(l);if(i){if(s.ref.parentNode){s.ref.parentNode.removeChild(s.ref);for(let c=o-1;c>=0;c--)i[c]!=null&&document.head.appendChild(i[c].ref)}i[o]=null,t.set(l,i)}else s.ref.parentNode&&s.ref.parentNode.removeChild(s.ref)}}};return p(Pe.Provider,{value:r,get children(){return e.children}})},ut=(e,t)=>{const n=Vt();if(!W(Pe))throw new Error(" should be in the tree");return mn({tag:e,props:t,id:n,get name(){return t.name||t.property}}),null};function mn(e){const{addClientTag:t,removeClientTag:n,addServerTag:r}=W(Pe);U(()=>{{let s=t(e);le(()=>n(e,s))}})}const wn=e=>ut("title",e),je=e=>ut("meta",e);function bn(e,t,n){return e.addEventListener(t,n),()=>e.removeEventListener(t,n)}function xn([e,t],n,r){return[n?()=>n(e()):e,r?s=>t(r(s)):t]}function Sn(e){try{return document.querySelector(e)}catch{return null}}function En(e,t){const n=Sn(`#${e}`);n?n.scrollIntoView():t&&window.scrollTo(0,0)}function vn(e,t,n,r){let s=!1;const o=i=>typeof i=="string"?{value:i}:i,l=xn(q(o(e()),{equals:(i,c)=>i.value===c.value}),void 0,i=>(!s&&t(i),i));return n&&le(n((i=e())=>{s=!0,l[1](o(i)),s=!1})),{signal:l,utils:r}}function Cn(e){if(e){if(Array.isArray(e))return{signal:e}}else return{signal:q({value:""})};return e}function An(){return vn(()=>({value:window.location.pathname+window.location.search+window.location.hash,state:history.state}),({value:e,replace:t,scroll:n,state:r})=>{t?window.history.replaceState(r,"",e):window.history.pushState(r,"",e),En(window.location.hash.slice(1),n)},e=>bn(window,"popstate",()=>e()),{go:e=>window.history.go(e)})}const Pn=/^(?:[a-z0-9]+:)?\/\//i,$n=/^\/+|\/+$/g;function se(e,t=!1){const n=e.replace($n,"");return n?t||/^[?#]/.test(n)?n:"/"+n:""}function ae(e,t,n){if(Pn.test(t))return;const r=se(e),s=n&&se(n);let o="";return!s||t.startsWith("/")?o=r:s.toLowerCase().indexOf(r.toLowerCase())!==0?o=r+s:o=s,(o||"/")+se(t,!o)}function Tn(e,t){if(e==null)throw new Error(t);return e}function ct(e,t){return se(e).replace(/\/*(\*.*)?$/g,"")+se(t)}function kn(e){const t={};return e.searchParams.forEach((n,r)=>{t[r]=n}),t}function J(e,t){return decodeURIComponent(t?e.replace(/\+/g," "):e)}function Nn(e,t){const[n,r]=e.split("/*",2),s=n.split("/").filter(Boolean),o=s.length;return l=>{const i=l.split("/").filter(Boolean),c=i.length-o;if(c<0||c>0&&r===void 0&&!t)return null;const u={path:o?"":"/",params:{}};for(let d=0;ds+(o.startsWith(":")?2:3),r.length-(n===void 0?0:1))}function at(e){const t=new Map,n=ze();return new Proxy({},{get(r,s){return t.has(s)||Ct(n,()=>t.set(s,A(()=>e()[s]))),t.get(s)()},getOwnPropertyDescriptor(){return{enumerable:!0,configurable:!0}},ownKeys(){return Reflect.ownKeys(e())}})}function ft(e){let t=/(\/?\:[^\/]+)\?/.exec(e);if(!t)return[e];let n=e.slice(0,t.index),r=e.slice(t.index+t[0].length);const s=[n,n+=t[1]];for(;t=/^(\/\:[^\/]+)\?/.exec(r);)s.push(n+=t[1]),r=r.slice(t[0].length);return ft(r).reduce((o,l)=>[...o,...s.map(i=>i+l)],[])}const Rn=100,dt=Z(),pe=Z(),ht=()=>Tn(W(dt),"Make sure your app is wrapped in a ");let ie;const gt=()=>ie||W(pe)||ht().base;function On(e,t="",n){const{component:r,data:s,children:o}=e,l=!o||Array.isArray(o)&&!o.length,i={key:e,element:r?()=>p(r,{}):()=>{const{element:c}=e;return c===void 0&&n?p(n,{}):c},preload:e.component?r.preload:e.preload,data:s};return yt(e.path).reduce((c,u)=>{for(const d of ft(u)){const y=ct(t,d),b=l?y:y.split("/*",1)[0];c.push({...i,originalPath:d,pattern:b,matcher:Nn(b,!l)})}return c},[])}function qn(e,t=0){return{routes:e,score:Ln(e[e.length-1])*1e4-t,matcher(n){const r=[];for(let s=e.length-1;s>=0;s--){const o=e[s],l=o.matcher(n);if(!l)return null;r.unshift({...l,route:o})}return r}}}function yt(e){return Array.isArray(e)?e:[e]}function pt(e,t="",n,r=[],s=[]){const o=yt(e);for(let l=0,i=o.length;li.score-l.score)}function Mn(e,t){for(let n=0,r=e.length;n{const u=e();try{return new URL(u,n)}catch{return console.error(`Invalid path ${u}`),c}},n,{equals:(c,u)=>c.href===u.href}),s=A(()=>J(r().pathname)),o=A(()=>J(r().search,!0)),l=A(()=>J(r().hash)),i=A(()=>"");return{get pathname(){return s()},get search(){return o()},get hash(){return l()},get state(){return t()},get key(){return i()},query:at(Ye(o,()=>kn(r())))}}function Vn(e,t="",n,r){const{signal:[s,o],utils:l={}}=Cn(e),i=l.parsePath||(S=>S),c=l.renderPath||(S=>S),u=ae("",t),d=void 0;if(u===void 0)throw new Error(`${u} is not a valid base path`);u&&!s().value&&o({value:u,replace:!0,scroll:!1});const[y,b]=Pt(),[w,m]=q(s().value),[R,O]=q(s().state),_=_n(w,R),k=[],H={pattern:u,params:{},path:()=>u,outlet:()=>null,resolvePath(S){return ae(u,S)}};if(n)try{ie=H,H.data=n({data:void 0,params:{},location:_,navigate:ne(H)})}finally{ie=void 0}function te(S,E,P){L(()=>{if(typeof E=="number"){E&&(l.go?l.go(E):console.warn("Router integration does not support relative routing"));return}const{replace:h,resolve:C,scroll:v,state:I}={replace:!1,resolve:!0,scroll:!0,...P},B=C?S.resolvePath(E):ae("",E);if(B===void 0)throw new Error(`Path '${E}' is not a routable path`);if(k.length>=Rn)throw new Error("Too many redirects");const D=w();if(B!==D||I!==R()){const re=k.push({value:D,replace:h,scroll:v,state:R()});b(()=>{m(B),O(I),st()}).then(()=>{k.length===re&&X({value:B,state:I})})}})}function ne(S){return S=S||W(pe)||H,(E,P)=>te(S,E,P)}function X(S){const E=k[0];E&&((S.value!==E.value||S.state!==E.state)&&o({...S,replace:E.replace,scroll:E.scroll}),k.length=0)}U(()=>{const{value:S,state:E}=s();L(()=>{S!==w()&&b(()=>{m(S),O(E)})})});{let S=function(P){return P.namespaceURI==="http://www.w3.org/2000/svg"},E=function(P){if(P.defaultPrevented||P.button!==0||P.metaKey||P.altKey||P.ctrlKey||P.shiftKey)return;const h=P.composedPath().find(Te=>Te instanceof Node&&Te.nodeName.toUpperCase()==="A");if(!h)return;const C=S(h),v=C?h.href.baseVal:h.href;if((C?h.target.baseVal:h.target)||!v&&!h.hasAttribute("state"))return;const B=(h.getAttribute("rel")||"").split(/\s+/);if(h.hasAttribute("download")||B&&B.includes("external"))return;const D=C?new URL(v,document.baseURI):new URL(v),re=J(D.pathname);if(D.origin!==window.location.origin||u&&re&&!re.toLowerCase().startsWith(u.toLowerCase()))return;const wt=i(re+J(D.search,!0)+J(D.hash)),$e=h.getAttribute("state");P.preventDefault(),te(H,wt,{resolve:!1,replace:h.hasAttribute("replace"),scroll:!h.hasAttribute("noscroll"),state:$e&&JSON.parse($e)})};Ae(["click"]),document.addEventListener("click",E),le(()=>document.removeEventListener("click",E))}return{base:H,out:d,location:_,isRouting:y,renderPath:c,parsePath:i,navigatorFactory:ne}}function Hn(e,t,n,r){const{base:s,location:o,navigatorFactory:l}=e,{pattern:i,element:c,preload:u,data:d}=r().route,y=A(()=>r().path),b=at(()=>r().params);u&&u();const w={parent:t,pattern:i,get child(){return n()},path:y,params:b,data:t.data,outlet:c,resolvePath(m){return ae(s.path(),m,y())}};if(d)try{ie=w,w.data=d({data:t.data,params:b,location:o,navigate:l(w)})}finally{ie=void 0}return w}const In=e=>{const{source:t,url:n,base:r,data:s,out:o}=e,l=t||An(),i=Vn(l,r,s);return p(dt.Provider,{value:i,get children(){return e.children}})},Un=e=>{const t=ht(),n=gt(),r=ve(()=>e.children),s=A(()=>pt(r(),ct(n.pattern,e.base||""),Fn)),o=A(()=>Mn(s(),t.location.pathname));t.out&&t.out.matches.push(o().map(({route:u,path:d,params:y})=>({originalPath:u.originalPath,pattern:u.pattern,path:d,params:y})));const l=[];let i;const c=A(Ye(o,(u,d,y)=>{let b=d&&u.length===d.length;const w=[];for(let m=0,R=u.length;m{l[m]=k,w[m]=Hn(t,w[m-1]||n,()=>c()[m+1],()=>o()[m])}))}return l.splice(u.length).forEach(m=>m()),y&&b?y:(i=w[0],w)}));return p(Ce,{get when(){return c()&&i},children:u=>p(pe.Provider,{value:u,get children(){return u.outlet()}})})},Fn=()=>{const e=gt();return p(Ce,{get when(){return e.child},children:t=>p(pe.Provider,{value:t,get children(){return t.outlet()}})})},mt=Z({});function jn(e){return p(Un,{get children(){return e.children}})}const Bn="$FETCH",Dn=zt('

');function Kn(e){return p(Ht,{fallback:t=>p(Ce,{get when(){return!e.fallback},get fallback(){return e.fallback(t)},get children(){return p(Wn,{error:t})}}),get children(){return e.children}})}function Wn(e){return Xe(()=>console.error(e.error)),(()=>{const t=nn(Dn),n=t.firstChild,r=n.firstChild,s=r.nextSibling,o=s.nextSibling;return t.style.setProperty("padding","16px"),n.style.setProperty("background-color","rgba(252, 165, 165)"),n.style.setProperty("color","rgb(153, 27, 27)"),n.style.setProperty("border-radius","5px"),n.style.setProperty("overflow","scroll"),n.style.setProperty("padding","16px"),n.style.setProperty("margin-bottom","8px"),r.style.setProperty("font-weight","bold"),ge(r,()=>e.error.message),it(s,"click",st,!0),s.style.setProperty("color","rgba(252, 165, 165)"),s.style.setProperty("background-color","rgb(153, 27, 27)"),s.style.setProperty("border-radius","5px"),s.style.setProperty("padding","4px 8px"),o.style.setProperty("margin-top","8px"),o.style.setProperty("width","100%"),ge(o,()=>e.error.stack),rn(),t})()}Ae(["click"]);const Xn={routes:[{component:Mt(()=>hn(()=>import("./index.af6c29ac.js"),[])),path:"/"}],routeLayouts:{"/":{id:"/",layouts:[]}}},Yn=()=>Xn.routes,zn=!1,Jn=!1;function Qn(){return W(mt),[p(un,{}),Jn,p(ln,{get children(){return cn}}),zn]}function Gn(e){return oe(document.documentElement,e,!1,!0),e.children}function Zn(e){return oe(document.head,e,!1,!0),e.children}function er(e){{let t=ve(()=>e.children);return oe(document.body,e,!1,!0),ge(document.body,()=>{let n=t();if(n){if(Array.isArray(n)){let r=n.filter(s=>Boolean(s));return r.length?r:null}return n}return null},null,[...document.body.childNodes]),document.body}}function Be(){return p(Gn,{lang:"en",get children(){return[p(Zn,{get children(){return[p(wn,{children:"SolidStart - With TailwindCSS"}),p(je,{charset:"utf-8"}),p(je,{name:"viewport",content:"width=device-width, initial-scale=1"})]}}),p(er,{get children(){return[p(Ut,{get children(){return p(Kn,{get children(){return p(jn,{get children(){return p(Yn,{})}})}})}}),p(Qn,{})]}})]}})}const De=Object.values(Object.assign({}))[0],tr=De?De.default:void 0,nr=()=>{let e={get request(){},get prevUrl(){},get responseHeaders(){},get tags(){},get env(){},get routerContext(){},setStatusCode(n){},getStatusCode(){},$type:Bn,fetch};function t(n){return p(In,qt(n,{get children(){return p(Be,{})}}))}return p(mt.Provider,{value:e,get children(){return p(pn,{get children(){return p(t,{data:tr,get children(){return p(Be,{})}})}})}})};gn(()=>p(nr,{}),document);export{Ce as S,sr as a,p as b,q as c,vt as d,nn as g,ge as i,rr as o,zt as t}; +const f={};function V(e){f.context=e}function bt(){return{...f.context,id:`${f.context.id}${f.context.count++}-`,count:0}}const xt=(e,t)=>e===t,St=Symbol("solid-proxy"),fe={equals:xt};let F=null,Ke=Ge;const N=1,j=2,We={owned:null,cleanups:null,context:null,owner:null},me={};var g=null;let a=null,x=null,T=null,$=null,Se=0;const[Et,ke]=q(!1);function Ee(e,t){const n=x,r=g,s=e.length===0,o=s?We:{owned:null,cleanups:null,context:null,owner:t||r},l=s?e:()=>e(()=>L(()=>Q(o)));g=o,x=null;try{return M(l,!0)}finally{x=n,g=r}}function q(e,t){t=t?Object.assign({},fe,t):fe;const n={value:e,observers:null,observerSlots:null,comparator:t.equals||void 0},r=s=>(typeof s=="function"&&(a&&a.running&&a.sources.has(n)?s=s(n.tValue):s=s(n.value)),Qe(n,s));return[Je.bind(n),r]}function Ne(e,t,n){const r=ye(e,t,!0,N);ee(r)}function U(e,t,n){const r=ye(e,t,!1,N);ee(r)}function Xe(e,t,n){Ke=Nt;const r=ye(e,t,!1,N),s=K&&ue(g,K.id);s&&(r.suspense=s),r.user=!0,$?$.push(r):ee(r)}function A(e,t,n){n=n?Object.assign({},fe,n):fe;const r=ye(e,t,!0,0);return r.observers=null,r.observerSlots=null,r.comparator=n.equals||void 0,ee(r),Je.bind(r)}function vt(e,t,n){let r,s,o;arguments.length===2&&typeof t=="object"||arguments.length===1?(r=!0,s=e,o=t||{}):(r=e,s=t,o=n||{});let l=null,i=me,c=null,u=!1,d=!1,y="initialValue"in o,b=typeof r=="function"&&A(r);const w=new Set,[m,R]=(o.storage||q)(o.initialValue),[O,_]=q(void 0),[k,H]=q(void 0,{equals:!1}),[te,ne]=q(y?"ready":"unresolved");if(f.context){c=`${f.context.id}${f.context.count++}`;let h;o.ssrLoadFrom==="initial"?i=o.initialValue:f.load&&(h=f.load(c))&&(i=h[0])}function X(h,C,v,I){return l===h&&(l=null,y=!0,(h===i||C===i)&&o.onHydrated&&queueMicrotask(()=>o.onHydrated(I,{value:C})),i=me,a&&h&&u?(a.promises.delete(h),u=!1,M(()=>{a.running=!0,S(C,v)},!1)):S(C,v)),C}function S(h,C){M(()=>{C||R(()=>h),_(C),ne(C?"errored":"ready");for(const v of w.keys())v.decrement();w.clear()},!1)}function E(){const h=K&&ue(g,K.id),C=m(),v=O();if(v&&!l)throw v;return x&&!x.user&&h&&Ne(()=>{k(),l&&(h.resolved&&a&&a.running?a.promises.add(l):w.has(h)||(h.increment(),w.add(h)))}),C}function P(h=!0){if(h!==!1&&d)return;d=!1;const C=b?b():r;if(u=a&&a.running,C==null||C===!1){X(l,L(m));return}a&&l&&a.promises.delete(l);const v=i!==me?i:L(()=>s(C,{value:m(),refetching:h}));return typeof v!="object"||!(v&&"then"in v)?(X(l,v),v):(l=v,d=!0,queueMicrotask(()=>d=!1),M(()=>{ne(y?"refreshing":"pending"),H()},!1),v.then(I=>X(v,I,void 0,C),I=>X(v,void 0,tt(I))))}return Object.defineProperties(E,{state:{get:()=>te()},error:{get:()=>O()},loading:{get(){const h=te();return h==="pending"||h==="refreshing"}},latest:{get(){if(!y)return E();const h=O();if(h&&!l)throw h;return m()}}}),b?Ne(()=>P(!1)):P(!1),[E,{refetch:P,mutate:R}]}function L(e){let t,n=x;return x=null,t=e(),x=n,t}function Ye(e,t,n){const r=Array.isArray(e);let s,o=n&&n.defer;return l=>{let i;if(r){i=Array(e.length);for(let u=0;ut(i,s,l));return s=i,c}}function rr(e){Xe(()=>L(e))}function le(e){return g===null||(g.cleanups===null?g.cleanups=[e]:g.cleanups.push(e)),e}function Le(e){F||(F=Symbol("error")),g===null||(g.context===null?g.context={[F]:[e]}:g.context[F]?g.context[F].push(e):g.context[F]=[e])}function ze(){return g}function Ct(e,t){const n=g;g=e;try{return M(t,!0)}finally{g=n}}function At(e){if(a&&a.running)return e(),a.done;const t=x,n=g;return Promise.resolve().then(()=>{x=t,g=n;let r;return K&&(r=a||(a={sources:new Set,effects:[],promises:new Set,disposed:new Set,queue:new Set,running:!0}),r.done||(r.done=new Promise(s=>r.resolve=s)),r.running=!0),M(e,!1),x=g=null,r?r.done:void 0})}function Pt(){return[Et,At]}function $t(e){$.push.apply($,e),e.length=0}function Z(e){const t=Symbol("context");return{id:t,Provider:Lt(t),defaultValue:e}}function W(e){let t;return(t=ue(g,e.id))!==void 0?t:e.defaultValue}function ve(e){const t=A(e),n=A(()=>be(t()));return n.toArray=()=>{const r=n();return Array.isArray(r)?r:r!=null?[r]:[]},n}let K;function Tt(){return K||(K=Z({}))}function Je(){const e=a&&a.running;if(this.sources&&(!e&&this.state||e&&this.tState))if(!e&&this.state===N||e&&this.tState===N)ee(this);else{const t=T;T=null,M(()=>he(this),!1),T=t}if(x){const t=this.observers?this.observers.length:0;x.sources?(x.sources.push(this),x.sourceSlots.push(t)):(x.sources=[this],x.sourceSlots=[t]),this.observers?(this.observers.push(x),this.observerSlots.push(x.sources.length-1)):(this.observers=[x],this.observerSlots=[x.sources.length-1])}return e&&a.sources.has(this)?this.tValue:this.value}function Qe(e,t,n){let r=a&&a.running&&a.sources.has(e)?e.tValue:e.value;if(!e.comparator||!e.comparator(r,t)){if(a){const s=a.running;(s||!n&&a.sources.has(e))&&(a.sources.add(e),e.tValue=t),s||(e.value=t)}else e.value=t;e.observers&&e.observers.length&&M(()=>{for(let s=0;s1e6)throw T=[],new Error},!1)}return t}function ee(e){if(!e.fn)return;Q(e);const t=g,n=x,r=Se;x=g=e,Re(e,a&&a.running&&a.sources.has(e)?e.tValue:e.value,r),a&&!a.running&&a.sources.has(e)&&queueMicrotask(()=>{M(()=>{a&&(a.running=!0),Re(e,e.tValue,r)},!1)}),x=n,g=t}function Re(e,t,n){let r;try{r=e.fn(t)}catch(s){e.pure&&(a&&a.running?e.tState=N:e.state=N),nt(s)}(!e.updatedAt||e.updatedAt<=n)&&(e.updatedAt!=null&&"observers"in e?Qe(e,r,!0):a&&a.running&&e.pure?(a.sources.add(e),e.tValue=r):e.value=r,e.updatedAt=n)}function ye(e,t,n,r=N,s){const o={fn:e,state:r,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:t,owner:g,context:null,pure:n};return a&&a.running&&(o.state=0,o.tState=r),g===null||g!==We&&(a&&a.running&&g.pure?g.tOwned?g.tOwned.push(o):g.tOwned=[o]:g.owned?g.owned.push(o):g.owned=[o]),o}function de(e){const t=a&&a.running;if(!t&&e.state===0||t&&e.tState===0)return;if(!t&&e.state===j||t&&e.tState===j)return he(e);if(e.suspense&&L(e.suspense.inFallback))return e.suspense.effects.push(e);const n=[e];for(;(e=e.owner)&&(!e.updatedAt||e.updatedAt=0;r--){if(e=n[r],t){let s=e,o=n[r+1];for(;(s=s.owner)&&s!==o;)if(a.disposed.has(s))return}if(!t&&e.state===N||t&&e.tState===N)ee(e);else if(!t&&e.state===j||t&&e.tState===j){const s=T;T=null,M(()=>he(e,n[0]),!1),T=s}}}function M(e,t){if(T)return e();let n=!1;t||(T=[]),$?n=!0:$=[],Se++;try{const r=e();return kt(n),r}catch(r){T||($=null),nt(r)}}function kt(e){if(T&&(Ge(T),T=null),e)return;let t;if(a){if(!a.promises.size&&!a.queue.size){const r=a.sources,s=a.disposed;$.push.apply($,a.effects),t=a.resolve;for(const o of $)"tState"in o&&(o.state=o.tState),delete o.tState;a=null,M(()=>{for(const o of s)Q(o);for(const o of r){if(o.value=o.tValue,o.owned)for(let l=0,i=o.owned.length;lKe(n),!1),t&&t()}function Ge(e){for(let t=0;tr=L(()=>(g.context={[e]:n.value},ve(()=>n.children)))),r}}let rt=!1;function Rt(){rt=!0}function p(e,t){if(rt&&f.context){const n=f.context;V(bt());const r=L(()=>e(t||{}));return V(n),r}return L(()=>e(t||{}))}function ce(){return!0}const Ot={get(e,t,n){return t===St?n:e.get(t)},has(e,t){return e.has(t)},set:ce,deleteProperty:ce,getOwnPropertyDescriptor(e,t){return{configurable:!0,enumerable:!0,get(){return e.get(t)},set:ce,deleteProperty:ce}},ownKeys(e){return e.keys()}};function we(e){return(e=typeof e=="function"?e():e)==null?{}:e}function qt(...e){return new Proxy({get(t){for(let n=e.length-1;n>=0;n--){const r=we(e[n])[t];if(r!==void 0)return r}},has(t){for(let n=e.length-1;n>=0;n--)if(t in we(e[n]))return!0;return!1},keys(){const t=[];for(let n=0;n{const o=f.context;if(o){const[i,c]=q();(n||(n=e())).then(u=>{V(o),c(()=>u.default),V()}),t=i}else if(t){const i=t();if(i)return i(s)}else{const[i]=vt(()=>(n||(n=e())).then(c=>c.default));t=i}let l;return A(()=>(l=t())&&L(()=>{if(!o)return l(s);const i=f.context;V(o);const c=l(s);return V(i),c}))};return r.preload=()=>n||((n=e()).then(s=>t=()=>s.default),n),r}let _t=0;function Vt(){const e=f.context;return e?`${e.id}${e.count++}`:`cl-${_t++}`}function Ce(e){let t=!1;const n=e.keyed,r=A(()=>e.when,void 0,{equals:(s,o)=>t?s===o:!s==!o});return A(()=>{const s=r();if(s){const o=e.children,l=typeof o=="function"&&o.length>0;return t=n||l,l?L(()=>o(s)):o}return e.fallback})}let z;function st(){z&&[...z].forEach(e=>e())}function Ht(e){let t,n;f.context&&f.load&&(n=f.load(f.context.id+f.context.count))&&(t=n[0]);const[r,s]=q(t);return z||(z=new Set),z.add(s),le(()=>z.delete(s)),A(()=>{let o;if(o=r()){const l=e.fallback,i=typeof l=="function"&&l.length?L(()=>l(o,()=>s())):l;return Le(s),i}return Le(s),e.children})}const It=Z();function Ut(e){let t=0,n,r,s,o,l;const[i,c]=q(!1),u=Tt(),d={increment:()=>{++t===1&&c(!0)},decrement:()=>{--t===0&&c(!1)},inFallback:i,effects:[],resolved:!1},y=ze();if(f.context&&f.load){const m=f.context.id+f.context.count;let R=f.load(m);if(R&&(s=R[0])&&s!=="$$f"){(typeof s!="object"||!("then"in s))&&(s=Promise.resolve(s));const[O,_]=q(void 0,{equals:!1});o=O,s.then(k=>{if(k||f.done)return k&&(l=k),_();f.gather(m),V(r),_(),V()})}}const b=W(It);b&&(n=b.register(d.inFallback));let w;return le(()=>w&&w()),p(u.Provider,{value:d,get children(){return A(()=>{if(l)throw l;if(r=f.context,o)return o(),o=void 0;r&&s==="$$f"&&V();const m=A(()=>e.children);return A(R=>{const O=d.inFallback(),{showContent:_=!0,showFallback:k=!0}=n?n():{};if((!O||s&&s!=="$$f")&&_)return d.resolved=!0,w&&w(),w=r=s=void 0,$t(d.effects),m();if(!!k)return w?R:Ee(H=>(w=H,r&&(V({id:r.id+"f",count:0}),r=void 0),e.fallback),y)})})}})}const Ft=["allowfullscreen","async","autofocus","autoplay","checked","controls","default","disabled","formnovalidate","hidden","indeterminate","ismap","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","seamless","selected"],jt=new Set(["className","value","readOnly","formNoValidate","isMap","noModule","playsInline",...Ft]),Bt=new Set(["innerHTML","textContent","innerText","children"]),Dt={className:"class",htmlFor:"for"},Oe={class:"className",formnovalidate:"formNoValidate",ismap:"isMap",nomodule:"noModule",playsinline:"playsInline",readonly:"readOnly"},Kt=new Set(["beforeinput","click","dblclick","contextmenu","focusin","focusout","input","keydown","keyup","mousedown","mousemove","mouseout","mouseover","mouseup","pointerdown","pointermove","pointerout","pointerover","pointerup","touchend","touchmove","touchstart"]),Wt={xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace"};function Xt(e,t,n){let r=n.length,s=t.length,o=r,l=0,i=0,c=t[s-1].nextSibling,u=null;for(;ld-i){const m=t[l];for(;i{r=s,t===document?e():ge(t,e(),t.firstChild?null:void 0,n)}),()=>{r(),t.textContent=""}}function zt(e,t,n){const r=document.createElement("template");r.innerHTML=e;let s=r.content.firstChild;return n&&(s=s.firstChild),s}function Ae(e,t=window.document){const n=t[qe]||(t[qe]=new Set);for(let r=0,s=e.length;rs.call(e,n[1],o))}else e.addEventListener(t,n)}function Gt(e,t,n={}){const r=Object.keys(t||{}),s=Object.keys(n);let o,l;for(o=0,l=s.length;oVe(e,t(),s,n,r)):Ve(e,t,void 0,n,r)}function ge(e,t,n,r){if(n!==void 0&&!r&&(r=[]),typeof t!="function")return G(e,t,r,n);U(s=>G(e,t(),s,n),r)}function en(e,t,n,r,s={},o=!1){t||(t={});for(const l in s)if(!(l in t)){if(l==="children")continue;s[l]=_e(e,l,null,s[l],n,o)}for(const l in t){if(l==="children"){r||G(e,t.children);continue}const i=t[l];s[l]=_e(e,l,i,s[l],n,o)}}function tn(e,t,n={}){f.completed=globalThis._$HY.completed,f.events=globalThis._$HY.events,f.load=globalThis._$HY.load,f.gather=s=>Ie(t,s),f.registry=new Map,f.context={id:n.renderId||"",count:0},Ie(t,n.renderId);const r=Yt(e,t,[...t.childNodes]);return f.context=null,r}function nn(e){let t,n;return!f.context||!(t=f.registry.get(n=on()))?e.cloneNode(!0):(f.completed&&f.completed.add(t),f.registry.delete(n),t)}function sr(e){let t=e,n=0,r=[];if(f.context)for(;t;){if(t.nodeType===8){const s=t.nodeValue;if(s==="#")n++;else if(s==="/"){if(n===0)return[t,r];n--}}r.push(t),t=t.nextSibling}return[t,r]}function rn(){f.events&&!f.events.queued&&(queueMicrotask(()=>{const{completed:e,events:t}=f;for(t.queued=!1;t.length;){const[n,r]=t[0];if(!e.has(n))return;lt(r),t.shift()}}),f.events.queued=!0)}function sn(e){return e.toLowerCase().replace(/-([a-z])/g,(t,n)=>n.toUpperCase())}function Me(e,t,n){const r=t.trim().split(/\s+/);for(let s=0,o=r.length;s-1&&Wt[t.split(":")[0]];u?Jt(e,u,t,n):ot(e,Dt[t]||t,n)}return n}function lt(e){const t=`$$${e.type}`;let n=e.composedPath&&e.composedPath()[0]||e.target;for(e.target!==n&&Object.defineProperty(e,"target",{configurable:!0,value:n}),Object.defineProperty(e,"currentTarget",{configurable:!0,get(){return n||document}}),f.registry&&!f.done&&(f.done=!0,document.querySelectorAll("[id^=pl-]").forEach(r=>r.remove()));n!==null;){const r=n[t];if(r&&!n.disabled){const s=n[`${t}Data`];if(s!==void 0?r.call(n,s,e):r.call(n,e),e.cancelBubble)return}n=n.host&&n.host!==n&&n.host instanceof Node?n.host:n.parentNode}}function Ve(e,t,n={},r,s){return t||(t={}),s||U(()=>n.children=G(e,t.children,n.children)),U(()=>t.ref&&t.ref(e)),U(()=>en(e,t,r,!0,n,!0)),n}function G(e,t,n,r,s){for(f.context&&!n&&(n=[...e.childNodes]);typeof n=="function";)n=n();if(t===n)return n;const o=typeof t,l=r!==void 0;if(e=l&&n[0]&&n[0].parentNode||e,o==="string"||o==="number"){if(f.context)return n;if(o==="number"&&(t=t.toString()),l){let i=n[0];i&&i.nodeType===3?i.data=t:i=document.createTextNode(t),n=Y(e,n,r,i)}else n!==""&&typeof n=="string"?n=e.firstChild.data=t:n=e.textContent=t}else if(t==null||o==="boolean"){if(f.context)return n;n=Y(e,n,r)}else{if(o==="function")return U(()=>{let i=t();for(;typeof i=="function";)i=i();n=G(e,i,n,r)}),()=>n;if(Array.isArray(t)){const i=[],c=n&&Array.isArray(n);if(xe(i,t,n,s))return U(()=>n=G(e,i,n,r,!0)),()=>n;if(f.context){if(!i.length)return n;for(let u=0;u=0;l--){const i=t[l];if(s!==i){const c=i.parentNode===e;!o&&!l?c?e.replaceChild(s,i):e.insertBefore(s,n):c&&i.remove()}else o=!0}}else e.insertBefore(s,n);return[s]}function Ie(e,t){const n=e.querySelectorAll("*[data-hk]");for(let r=0;r(Rt(),tn(...e)),fn="modulepreload",dn=function(e){return"/"+e},Ue={},hn=function(t,n,r){return!n||n.length===0?t():Promise.all(n.map(s=>{if(s=dn(s),s in Ue)return;Ue[s]=!0;const o=s.endsWith(".css"),l=o?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${s}"]${l}`))return;const i=document.createElement("link");if(i.rel=o?"stylesheet":fn,o||(i.as="script",i.crossOrigin=""),i.href=s,document.head.appendChild(i),o)return new Promise((c,u)=>{i.addEventListener("load",c),i.addEventListener("error",()=>u(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t())};function gn(e,t){an(e,t)}const Pe=Z(),yn=["title","meta"],Fe=e=>e.tag+(e.name?`.${e.name}"`:""),pn=e=>{const t=new Map;function n(s){if(s.ref)return s.ref;let o=document.querySelector(`[data-sm="${s.id}"]`);return o?(o.tagName.toLowerCase()!==s.tag&&(o.parentNode&&o.parentNode.removeChild(o),o=document.createElement(s.tag)),o.removeAttribute("data-sm")):o=document.createElement(s.tag),o}const r={addClientTag:s=>{let o=Fe(s);if(yn.indexOf(s.tag)!==-1){t.has(o)||t.set(o,[]);let i=t.get(o),c=i.length;i=[...i,s],t.set(o,i);{let u=n(s);s.ref=u,oe(u,()=>s.props);let d=null;for(var l=c-1;l>=0;l--)if(i[l]!=null){d=i[l];break}u.parentNode!=document.head&&document.head.appendChild(u),d&&d.ref&&document.head.removeChild(d.ref)}return c}{let i=n(s);s.ref=i,oe(i,()=>s.props),i.parentNode!=document.head&&document.head.appendChild(i)}return-1},removeClientTag:(s,o)=>{const l=Fe(s);if(s.ref){const i=t.get(l);if(i){if(s.ref.parentNode){s.ref.parentNode.removeChild(s.ref);for(let c=o-1;c>=0;c--)i[c]!=null&&document.head.appendChild(i[c].ref)}i[o]=null,t.set(l,i)}else s.ref.parentNode&&s.ref.parentNode.removeChild(s.ref)}}};return p(Pe.Provider,{value:r,get children(){return e.children}})},ut=(e,t)=>{const n=Vt();if(!W(Pe))throw new Error(" should be in the tree");return mn({tag:e,props:t,id:n,get name(){return t.name||t.property}}),null};function mn(e){const{addClientTag:t,removeClientTag:n,addServerTag:r}=W(Pe);U(()=>{{let s=t(e);le(()=>n(e,s))}})}const wn=e=>ut("title",e),je=e=>ut("meta",e);function bn(e,t,n){return e.addEventListener(t,n),()=>e.removeEventListener(t,n)}function xn([e,t],n,r){return[n?()=>n(e()):e,r?s=>t(r(s)):t]}function Sn(e){try{return document.querySelector(e)}catch{return null}}function En(e,t){const n=Sn(`#${e}`);n?n.scrollIntoView():t&&window.scrollTo(0,0)}function vn(e,t,n,r){let s=!1;const o=i=>typeof i=="string"?{value:i}:i,l=xn(q(o(e()),{equals:(i,c)=>i.value===c.value}),void 0,i=>(!s&&t(i),i));return n&&le(n((i=e())=>{s=!0,l[1](o(i)),s=!1})),{signal:l,utils:r}}function Cn(e){if(e){if(Array.isArray(e))return{signal:e}}else return{signal:q({value:""})};return e}function An(){return vn(()=>({value:window.location.pathname+window.location.search+window.location.hash,state:history.state}),({value:e,replace:t,scroll:n,state:r})=>{t?window.history.replaceState(r,"",e):window.history.pushState(r,"",e),En(window.location.hash.slice(1),n)},e=>bn(window,"popstate",()=>e()),{go:e=>window.history.go(e)})}const Pn=/^(?:[a-z0-9]+:)?\/\//i,$n=/^\/+|\/+$/g;function se(e,t=!1){const n=e.replace($n,"");return n?t||/^[?#]/.test(n)?n:"/"+n:""}function ae(e,t,n){if(Pn.test(t))return;const r=se(e),s=n&&se(n);let o="";return!s||t.startsWith("/")?o=r:s.toLowerCase().indexOf(r.toLowerCase())!==0?o=r+s:o=s,(o||"/")+se(t,!o)}function Tn(e,t){if(e==null)throw new Error(t);return e}function ct(e,t){return se(e).replace(/\/*(\*.*)?$/g,"")+se(t)}function kn(e){const t={};return e.searchParams.forEach((n,r)=>{t[r]=n}),t}function J(e,t){return decodeURIComponent(t?e.replace(/\+/g," "):e)}function Nn(e,t){const[n,r]=e.split("/*",2),s=n.split("/").filter(Boolean),o=s.length;return l=>{const i=l.split("/").filter(Boolean),c=i.length-o;if(c<0||c>0&&r===void 0&&!t)return null;const u={path:o?"":"/",params:{}};for(let d=0;ds+(o.startsWith(":")?2:3),r.length-(n===void 0?0:1))}function at(e){const t=new Map,n=ze();return new Proxy({},{get(r,s){return t.has(s)||Ct(n,()=>t.set(s,A(()=>e()[s]))),t.get(s)()},getOwnPropertyDescriptor(){return{enumerable:!0,configurable:!0}},ownKeys(){return Reflect.ownKeys(e())}})}function ft(e){let t=/(\/?\:[^\/]+)\?/.exec(e);if(!t)return[e];let n=e.slice(0,t.index),r=e.slice(t.index+t[0].length);const s=[n,n+=t[1]];for(;t=/^(\/\:[^\/]+)\?/.exec(r);)s.push(n+=t[1]),r=r.slice(t[0].length);return ft(r).reduce((o,l)=>[...o,...s.map(i=>i+l)],[])}const Rn=100,dt=Z(),pe=Z(),ht=()=>Tn(W(dt),"Make sure your app is wrapped in a ");let ie;const gt=()=>ie||W(pe)||ht().base;function On(e,t="",n){const{component:r,data:s,children:o}=e,l=!o||Array.isArray(o)&&!o.length,i={key:e,element:r?()=>p(r,{}):()=>{const{element:c}=e;return c===void 0&&n?p(n,{}):c},preload:e.component?r.preload:e.preload,data:s};return yt(e.path).reduce((c,u)=>{for(const d of ft(u)){const y=ct(t,d),b=l?y:y.split("/*",1)[0];c.push({...i,originalPath:d,pattern:b,matcher:Nn(b,!l)})}return c},[])}function qn(e,t=0){return{routes:e,score:Ln(e[e.length-1])*1e4-t,matcher(n){const r=[];for(let s=e.length-1;s>=0;s--){const o=e[s],l=o.matcher(n);if(!l)return null;r.unshift({...l,route:o})}return r}}}function yt(e){return Array.isArray(e)?e:[e]}function pt(e,t="",n,r=[],s=[]){const o=yt(e);for(let l=0,i=o.length;li.score-l.score)}function Mn(e,t){for(let n=0,r=e.length;n{const u=e();try{return new URL(u,n)}catch{return console.error(`Invalid path ${u}`),c}},n,{equals:(c,u)=>c.href===u.href}),s=A(()=>J(r().pathname)),o=A(()=>J(r().search,!0)),l=A(()=>J(r().hash)),i=A(()=>"");return{get pathname(){return s()},get search(){return o()},get hash(){return l()},get state(){return t()},get key(){return i()},query:at(Ye(o,()=>kn(r())))}}function Vn(e,t="",n,r){const{signal:[s,o],utils:l={}}=Cn(e),i=l.parsePath||(S=>S),c=l.renderPath||(S=>S),u=ae("",t),d=void 0;if(u===void 0)throw new Error(`${u} is not a valid base path`);u&&!s().value&&o({value:u,replace:!0,scroll:!1});const[y,b]=Pt(),[w,m]=q(s().value),[R,O]=q(s().state),_=_n(w,R),k=[],H={pattern:u,params:{},path:()=>u,outlet:()=>null,resolvePath(S){return ae(u,S)}};if(n)try{ie=H,H.data=n({data:void 0,params:{},location:_,navigate:ne(H)})}finally{ie=void 0}function te(S,E,P){L(()=>{if(typeof E=="number"){E&&(l.go?l.go(E):console.warn("Router integration does not support relative routing"));return}const{replace:h,resolve:C,scroll:v,state:I}={replace:!1,resolve:!0,scroll:!0,...P},B=C?S.resolvePath(E):ae("",E);if(B===void 0)throw new Error(`Path '${E}' is not a routable path`);if(k.length>=Rn)throw new Error("Too many redirects");const D=w();if(B!==D||I!==R()){const re=k.push({value:D,replace:h,scroll:v,state:R()});b(()=>{m(B),O(I),st()}).then(()=>{k.length===re&&X({value:B,state:I})})}})}function ne(S){return S=S||W(pe)||H,(E,P)=>te(S,E,P)}function X(S){const E=k[0];E&&((S.value!==E.value||S.state!==E.state)&&o({...S,replace:E.replace,scroll:E.scroll}),k.length=0)}U(()=>{const{value:S,state:E}=s();L(()=>{S!==w()&&b(()=>{m(S),O(E)})})});{let S=function(P){return P.namespaceURI==="http://www.w3.org/2000/svg"},E=function(P){if(P.defaultPrevented||P.button!==0||P.metaKey||P.altKey||P.ctrlKey||P.shiftKey)return;const h=P.composedPath().find(Te=>Te instanceof Node&&Te.nodeName.toUpperCase()==="A");if(!h)return;const C=S(h),v=C?h.href.baseVal:h.href;if((C?h.target.baseVal:h.target)||!v&&!h.hasAttribute("state"))return;const B=(h.getAttribute("rel")||"").split(/\s+/);if(h.hasAttribute("download")||B&&B.includes("external"))return;const D=C?new URL(v,document.baseURI):new URL(v),re=J(D.pathname);if(D.origin!==window.location.origin||u&&re&&!re.toLowerCase().startsWith(u.toLowerCase()))return;const wt=i(re+J(D.search,!0)+J(D.hash)),$e=h.getAttribute("state");P.preventDefault(),te(H,wt,{resolve:!1,replace:h.hasAttribute("replace"),scroll:!h.hasAttribute("noscroll"),state:$e&&JSON.parse($e)})};Ae(["click"]),document.addEventListener("click",E),le(()=>document.removeEventListener("click",E))}return{base:H,out:d,location:_,isRouting:y,renderPath:c,parsePath:i,navigatorFactory:ne}}function Hn(e,t,n,r){const{base:s,location:o,navigatorFactory:l}=e,{pattern:i,element:c,preload:u,data:d}=r().route,y=A(()=>r().path),b=at(()=>r().params);u&&u();const w={parent:t,pattern:i,get child(){return n()},path:y,params:b,data:t.data,outlet:c,resolvePath(m){return ae(s.path(),m,y())}};if(d)try{ie=w,w.data=d({data:t.data,params:b,location:o,navigate:l(w)})}finally{ie=void 0}return w}const In=e=>{const{source:t,url:n,base:r,data:s,out:o}=e,l=t||An(),i=Vn(l,r,s);return p(dt.Provider,{value:i,get children(){return e.children}})},Un=e=>{const t=ht(),n=gt(),r=ve(()=>e.children),s=A(()=>pt(r(),ct(n.pattern,e.base||""),Fn)),o=A(()=>Mn(s(),t.location.pathname));t.out&&t.out.matches.push(o().map(({route:u,path:d,params:y})=>({originalPath:u.originalPath,pattern:u.pattern,path:d,params:y})));const l=[];let i;const c=A(Ye(o,(u,d,y)=>{let b=d&&u.length===d.length;const w=[];for(let m=0,R=u.length;m{l[m]=k,w[m]=Hn(t,w[m-1]||n,()=>c()[m+1],()=>o()[m])}))}return l.splice(u.length).forEach(m=>m()),y&&b?y:(i=w[0],w)}));return p(Ce,{get when(){return c()&&i},children:u=>p(pe.Provider,{value:u,get children(){return u.outlet()}})})},Fn=()=>{const e=gt();return p(Ce,{get when(){return e.child},children:t=>p(pe.Provider,{value:t,get children(){return t.outlet()}})})},mt=Z({});function jn(e){return p(Un,{get children(){return e.children}})}const Bn="$FETCH",Dn=zt('

');function Kn(e){return p(Ht,{fallback:t=>p(Ce,{get when(){return!e.fallback},get fallback(){return e.fallback(t)},get children(){return p(Wn,{error:t})}}),get children(){return e.children}})}function Wn(e){return Xe(()=>console.error(e.error)),(()=>{const t=nn(Dn),n=t.firstChild,r=n.firstChild,s=r.nextSibling,o=s.nextSibling;return t.style.setProperty("padding","16px"),n.style.setProperty("background-color","rgba(252, 165, 165)"),n.style.setProperty("color","rgb(153, 27, 27)"),n.style.setProperty("border-radius","5px"),n.style.setProperty("overflow","scroll"),n.style.setProperty("padding","16px"),n.style.setProperty("margin-bottom","8px"),r.style.setProperty("font-weight","bold"),ge(r,()=>e.error.message),it(s,"click",st,!0),s.style.setProperty("color","rgba(252, 165, 165)"),s.style.setProperty("background-color","rgb(153, 27, 27)"),s.style.setProperty("border-radius","5px"),s.style.setProperty("padding","4px 8px"),o.style.setProperty("margin-top","8px"),o.style.setProperty("width","100%"),ge(o,()=>e.error.stack),rn(),t})()}Ae(["click"]);const Xn={routes:[{component:Mt(()=>hn(()=>import("./index.f572890e.js"),[])),path:"/"}],routeLayouts:{"/":{id:"/",layouts:[]}}},Yn=()=>Xn.routes,zn=!1,Jn=!1;function Qn(){return W(mt),[p(un,{}),Jn,p(ln,{get children(){return cn}}),zn]}function Gn(e){return oe(document.documentElement,e,!1,!0),e.children}function Zn(e){return oe(document.head,e,!1,!0),e.children}function er(e){{let t=ve(()=>e.children);return oe(document.body,e,!1,!0),ge(document.body,()=>{let n=t();if(n){if(Array.isArray(n)){let r=n.filter(s=>Boolean(s));return r.length?r:null}return n}return null},null,[...document.body.childNodes]),document.body}}function Be(){return p(Gn,{lang:"en",get children(){return[p(Zn,{get children(){return[p(wn,{children:"SolidStart - With TailwindCSS"}),p(je,{charset:"utf-8"}),p(je,{name:"viewport",content:"width=device-width, initial-scale=1"})]}}),p(er,{get children(){return[p(Ut,{get children(){return p(Kn,{get children(){return p(jn,{get children(){return p(Yn,{})}})}})}}),p(Qn,{})]}})]}})}const De=Object.values(Object.assign({}))[0],tr=De?De.default:void 0,nr=()=>{let e={get request(){},get prevUrl(){},get responseHeaders(){},get tags(){},get env(){},get routerContext(){},setStatusCode(n){},getStatusCode(){},$type:Bn,fetch};function t(n){return p(In,qt(n,{get children(){return p(Be,{})}}))}return p(mt.Provider,{value:e,get children(){return p(pn,{get children(){return p(t,{data:tr,get children(){return p(Be,{})}})}})}})};gn(()=>p(nr,{}),document);export{Ce as S,sr as a,p as b,q as c,vt as d,nn as g,ge as i,rr as o,zt as t}; diff --git a/dist/public/assets/index.af6c29ac.js b/dist/public/assets/index.f572890e.js similarity index 99% rename from dist/public/assets/index.af6c29ac.js rename to dist/public/assets/index.f572890e.js index 79167d3..6725d51 100644 --- a/dist/public/assets/index.af6c29ac.js +++ b/dist/public/assets/index.f572890e.js @@ -1,4 +1,4 @@ -import{c as lt,o as ft,g as Ge,a as dt,i as $e,b as Fe,S as pt,t as He,d as ht}from"./entry-client.b0117054.js";var U=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Ye(e){var t=e.default;if(typeof t=="function"){var n=function(){return t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(i){var r=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(n,i,r.get?r:{enumerable:!0,get:function(){return e[i]}})}),n}var Ae={},we={exports:{}};(function(e,t){var n=typeof self<"u"?self:U,i=function(){function o(){this.fetch=!1,this.DOMException=n.DOMException}return o.prototype=n,new o}();(function(o){(function(f){var v={searchParams:"URLSearchParams"in o,iterable:"Symbol"in o&&"iterator"in Symbol,blob:"FileReader"in o&&"Blob"in o&&function(){try{return new Blob,!0}catch{return!1}}(),formData:"FormData"in o,arrayBuffer:"ArrayBuffer"in o};function O(s){return s&&DataView.prototype.isPrototypeOf(s)}if(v.arrayBuffer)var E=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],I=ArrayBuffer.isView||function(s){return s&&E.indexOf(Object.prototype.toString.call(s))>-1};function D(s){if(typeof s!="string"&&(s=String(s)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(s))throw new TypeError("Invalid character in header field name");return s.toLowerCase()}function R(s){return typeof s!="string"&&(s=String(s)),s}function B(s){var d={next:function(){var g=s.shift();return{done:g===void 0,value:g}}};return v.iterable&&(d[Symbol.iterator]=function(){return d}),d}function w(s){this.map={},s instanceof w?s.forEach(function(d,g){this.append(g,d)},this):Array.isArray(s)?s.forEach(function(d){this.append(d[0],d[1])},this):s&&Object.getOwnPropertyNames(s).forEach(function(d){this.append(d,s[d])},this)}w.prototype.append=function(s,d){s=D(s),d=R(d);var g=this.map[s];this.map[s]=g?g+", "+d:d},w.prototype.delete=function(s){delete this.map[D(s)]},w.prototype.get=function(s){return s=D(s),this.has(s)?this.map[s]:null},w.prototype.has=function(s){return this.map.hasOwnProperty(D(s))},w.prototype.set=function(s,d){this.map[D(s)]=R(d)},w.prototype.forEach=function(s,d){for(var g in this.map)this.map.hasOwnProperty(g)&&s.call(d,this.map[g],g,this)},w.prototype.keys=function(){var s=[];return this.forEach(function(d,g){s.push(g)}),B(s)},w.prototype.values=function(){var s=[];return this.forEach(function(d){s.push(d)}),B(s)},w.prototype.entries=function(){var s=[];return this.forEach(function(d,g){s.push([g,d])}),B(s)},v.iterable&&(w.prototype[Symbol.iterator]=w.prototype.entries);function V(s){if(s.bodyUsed)return Promise.reject(new TypeError("Already read"));s.bodyUsed=!0}function re(s){return new Promise(function(d,g){s.onload=function(){d(s.result)},s.onerror=function(){g(s.error)}})}function H(s){var d=new FileReader,g=re(d);return d.readAsArrayBuffer(s),g}function se(s){var d=new FileReader,g=re(d);return d.readAsText(s),g}function ee(s){for(var d=new Uint8Array(s),g=new Array(d.length),j=0;j-1?d:s}function x(s,d){d=d||{};var g=d.body;if(s instanceof x){if(s.bodyUsed)throw new TypeError("Already read");this.url=s.url,this.credentials=s.credentials,d.headers||(this.headers=new w(s.headers)),this.method=s.method,this.mode=s.mode,this.signal=s.signal,!g&&s._bodyInit!=null&&(g=s._bodyInit,s.bodyUsed=!0)}else this.url=String(s);if(this.credentials=d.credentials||this.credentials||"same-origin",(d.headers||!this.headers)&&(this.headers=new w(d.headers)),this.method=N(d.method||this.method||"GET"),this.mode=d.mode||this.mode||null,this.signal=d.signal||this.signal,this.referrer=null,(this.method==="GET"||this.method==="HEAD")&&g)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(g)}x.prototype.clone=function(){return new x(this,{body:this._bodyInit})};function L(s){var d=new FormData;return s.trim().split("&").forEach(function(g){if(g){var j=g.split("="),a=j.shift().replace(/\+/g," "),c=j.join("=").replace(/\+/g," ");d.append(decodeURIComponent(a),decodeURIComponent(c))}}),d}function _(s){var d=new w,g=s.replace(/\r?\n[\t ]+/g," ");return g.split(/\r?\n/).forEach(function(j){var a=j.split(":"),c=a.shift().trim();if(c){var l=a.join(":").trim();d.append(c,l)}}),d}S.call(x.prototype);function C(s,d){d||(d={}),this.type="default",this.status=d.status===void 0?200:d.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in d?d.statusText:"OK",this.headers=new w(d.headers),this.url=d.url||"",this._initBody(s)}S.call(C.prototype),C.prototype.clone=function(){return new C(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new w(this.headers),url:this.url})},C.error=function(){var s=new C(null,{status:0,statusText:""});return s.type="error",s};var z=[301,302,303,307,308];C.redirect=function(s,d){if(z.indexOf(d)===-1)throw new RangeError("Invalid status code");return new C(null,{status:d,headers:{location:s}})},f.DOMException=o.DOMException;try{new f.DOMException}catch{f.DOMException=function(d,g){this.message=d,this.name=g;var j=Error(d);this.stack=j.stack},f.DOMException.prototype=Object.create(Error.prototype),f.DOMException.prototype.constructor=f.DOMException}function Y(s,d){return new Promise(function(g,j){var a=new x(s,d);if(a.signal&&a.signal.aborted)return j(new f.DOMException("Aborted","AbortError"));var c=new XMLHttpRequest;function l(){c.abort()}c.onload=function(){var p={status:c.status,statusText:c.statusText,headers:_(c.getAllResponseHeaders()||"")};p.url="responseURL"in c?c.responseURL:p.headers.get("X-Request-URL");var h="response"in c?c.response:c.responseText;g(new C(h,p))},c.onerror=function(){j(new TypeError("Network request failed"))},c.ontimeout=function(){j(new TypeError("Network request failed"))},c.onabort=function(){j(new f.DOMException("Aborted","AbortError"))},c.open(a.method,a.url,!0),a.credentials==="include"?c.withCredentials=!0:a.credentials==="omit"&&(c.withCredentials=!1),"responseType"in c&&v.blob&&(c.responseType="blob"),a.headers.forEach(function(p,h){c.setRequestHeader(h,p)}),a.signal&&(a.signal.addEventListener("abort",l),c.onreadystatechange=function(){c.readyState===4&&a.signal.removeEventListener("abort",l)}),c.send(typeof a._bodyInit>"u"?null:a._bodyInit)})}return Y.polyfill=!0,o.fetch||(o.fetch=Y,o.Headers=w,o.Request=x,o.Response=C),f.Headers=w,f.Request=x,f.Response=C,f.fetch=Y,Object.defineProperty(f,"__esModule",{value:!0}),f})({})})(i),i.fetch.ponyfill=!0,delete i.fetch.polyfill;var r=i;t=r.fetch,t.default=r.fetch,t.fetch=r.fetch,t.Headers=r.Headers,t.Request=r.Request,t.Response=r.Response,e.exports=t})(we,we.exports);function yt(e){return typeof e=="object"&&e!==null}function vt(e,t){if(!Boolean(e))throw new Error(t??"Unexpected invariant triggered.")}const mt=/\r\n|[\n\r]/g;function Se(e,t){let n=0,i=1;for(const r of e.body.matchAll(mt)){if(typeof r.index=="number"||vt(!1),r.index>=t)break;n=r.index+r[0].length,i+=1}return{line:i,column:t+1-n}}function Et(e){return Je(e.source,Se(e.source,e.start))}function Je(e,t){const n=e.locationOffset.column-1,i="".padStart(n)+e.body,r=t.line-1,o=e.locationOffset.line-1,f=t.line+o,v=t.line===1?n:0,O=t.column+v,E=`${e.name}:${f}:${O} +import{c as lt,o as ft,g as Ge,a as dt,i as $e,b as Fe,S as pt,t as He,d as ht}from"./entry-client.0e635511.js";var U=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Ye(e){var t=e.default;if(typeof t=="function"){var n=function(){return t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(i){var r=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(n,i,r.get?r:{enumerable:!0,get:function(){return e[i]}})}),n}var Ae={},we={exports:{}};(function(e,t){var n=typeof self<"u"?self:U,i=function(){function o(){this.fetch=!1,this.DOMException=n.DOMException}return o.prototype=n,new o}();(function(o){(function(f){var v={searchParams:"URLSearchParams"in o,iterable:"Symbol"in o&&"iterator"in Symbol,blob:"FileReader"in o&&"Blob"in o&&function(){try{return new Blob,!0}catch{return!1}}(),formData:"FormData"in o,arrayBuffer:"ArrayBuffer"in o};function O(s){return s&&DataView.prototype.isPrototypeOf(s)}if(v.arrayBuffer)var E=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],I=ArrayBuffer.isView||function(s){return s&&E.indexOf(Object.prototype.toString.call(s))>-1};function D(s){if(typeof s!="string"&&(s=String(s)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(s))throw new TypeError("Invalid character in header field name");return s.toLowerCase()}function R(s){return typeof s!="string"&&(s=String(s)),s}function B(s){var d={next:function(){var g=s.shift();return{done:g===void 0,value:g}}};return v.iterable&&(d[Symbol.iterator]=function(){return d}),d}function w(s){this.map={},s instanceof w?s.forEach(function(d,g){this.append(g,d)},this):Array.isArray(s)?s.forEach(function(d){this.append(d[0],d[1])},this):s&&Object.getOwnPropertyNames(s).forEach(function(d){this.append(d,s[d])},this)}w.prototype.append=function(s,d){s=D(s),d=R(d);var g=this.map[s];this.map[s]=g?g+", "+d:d},w.prototype.delete=function(s){delete this.map[D(s)]},w.prototype.get=function(s){return s=D(s),this.has(s)?this.map[s]:null},w.prototype.has=function(s){return this.map.hasOwnProperty(D(s))},w.prototype.set=function(s,d){this.map[D(s)]=R(d)},w.prototype.forEach=function(s,d){for(var g in this.map)this.map.hasOwnProperty(g)&&s.call(d,this.map[g],g,this)},w.prototype.keys=function(){var s=[];return this.forEach(function(d,g){s.push(g)}),B(s)},w.prototype.values=function(){var s=[];return this.forEach(function(d){s.push(d)}),B(s)},w.prototype.entries=function(){var s=[];return this.forEach(function(d,g){s.push([g,d])}),B(s)},v.iterable&&(w.prototype[Symbol.iterator]=w.prototype.entries);function V(s){if(s.bodyUsed)return Promise.reject(new TypeError("Already read"));s.bodyUsed=!0}function re(s){return new Promise(function(d,g){s.onload=function(){d(s.result)},s.onerror=function(){g(s.error)}})}function H(s){var d=new FileReader,g=re(d);return d.readAsArrayBuffer(s),g}function se(s){var d=new FileReader,g=re(d);return d.readAsText(s),g}function ee(s){for(var d=new Uint8Array(s),g=new Array(d.length),j=0;j-1?d:s}function x(s,d){d=d||{};var g=d.body;if(s instanceof x){if(s.bodyUsed)throw new TypeError("Already read");this.url=s.url,this.credentials=s.credentials,d.headers||(this.headers=new w(s.headers)),this.method=s.method,this.mode=s.mode,this.signal=s.signal,!g&&s._bodyInit!=null&&(g=s._bodyInit,s.bodyUsed=!0)}else this.url=String(s);if(this.credentials=d.credentials||this.credentials||"same-origin",(d.headers||!this.headers)&&(this.headers=new w(d.headers)),this.method=N(d.method||this.method||"GET"),this.mode=d.mode||this.mode||null,this.signal=d.signal||this.signal,this.referrer=null,(this.method==="GET"||this.method==="HEAD")&&g)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(g)}x.prototype.clone=function(){return new x(this,{body:this._bodyInit})};function L(s){var d=new FormData;return s.trim().split("&").forEach(function(g){if(g){var j=g.split("="),a=j.shift().replace(/\+/g," "),c=j.join("=").replace(/\+/g," ");d.append(decodeURIComponent(a),decodeURIComponent(c))}}),d}function _(s){var d=new w,g=s.replace(/\r?\n[\t ]+/g," ");return g.split(/\r?\n/).forEach(function(j){var a=j.split(":"),c=a.shift().trim();if(c){var l=a.join(":").trim();d.append(c,l)}}),d}S.call(x.prototype);function C(s,d){d||(d={}),this.type="default",this.status=d.status===void 0?200:d.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in d?d.statusText:"OK",this.headers=new w(d.headers),this.url=d.url||"",this._initBody(s)}S.call(C.prototype),C.prototype.clone=function(){return new C(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new w(this.headers),url:this.url})},C.error=function(){var s=new C(null,{status:0,statusText:""});return s.type="error",s};var z=[301,302,303,307,308];C.redirect=function(s,d){if(z.indexOf(d)===-1)throw new RangeError("Invalid status code");return new C(null,{status:d,headers:{location:s}})},f.DOMException=o.DOMException;try{new f.DOMException}catch{f.DOMException=function(d,g){this.message=d,this.name=g;var j=Error(d);this.stack=j.stack},f.DOMException.prototype=Object.create(Error.prototype),f.DOMException.prototype.constructor=f.DOMException}function Y(s,d){return new Promise(function(g,j){var a=new x(s,d);if(a.signal&&a.signal.aborted)return j(new f.DOMException("Aborted","AbortError"));var c=new XMLHttpRequest;function l(){c.abort()}c.onload=function(){var p={status:c.status,statusText:c.statusText,headers:_(c.getAllResponseHeaders()||"")};p.url="responseURL"in c?c.responseURL:p.headers.get("X-Request-URL");var h="response"in c?c.response:c.responseText;g(new C(h,p))},c.onerror=function(){j(new TypeError("Network request failed"))},c.ontimeout=function(){j(new TypeError("Network request failed"))},c.onabort=function(){j(new f.DOMException("Aborted","AbortError"))},c.open(a.method,a.url,!0),a.credentials==="include"?c.withCredentials=!0:a.credentials==="omit"&&(c.withCredentials=!1),"responseType"in c&&v.blob&&(c.responseType="blob"),a.headers.forEach(function(p,h){c.setRequestHeader(h,p)}),a.signal&&(a.signal.addEventListener("abort",l),c.onreadystatechange=function(){c.readyState===4&&a.signal.removeEventListener("abort",l)}),c.send(typeof a._bodyInit>"u"?null:a._bodyInit)})}return Y.polyfill=!0,o.fetch||(o.fetch=Y,o.Headers=w,o.Request=x,o.Response=C),f.Headers=w,f.Request=x,f.Response=C,f.fetch=Y,Object.defineProperty(f,"__esModule",{value:!0}),f})({})})(i),i.fetch.ponyfill=!0,delete i.fetch.polyfill;var r=i;t=r.fetch,t.default=r.fetch,t.fetch=r.fetch,t.Headers=r.Headers,t.Request=r.Request,t.Response=r.Response,e.exports=t})(we,we.exports);function yt(e){return typeof e=="object"&&e!==null}function vt(e,t){if(!Boolean(e))throw new Error(t??"Unexpected invariant triggered.")}const mt=/\r\n|[\n\r]/g;function Se(e,t){let n=0,i=1;for(const r of e.body.matchAll(mt)){if(typeof r.index=="number"||vt(!1),r.index>=t)break;n=r.index+r[0].length,i+=1}return{line:i,column:t+1-n}}function Et(e){return Je(e.source,Se(e.source,e.start))}function Je(e,t){const n=e.locationOffset.column-1,i="".padStart(n)+e.body,r=t.line-1,o=e.locationOffset.line-1,f=t.line+o,v=t.line===1?n:0,O=t.column+v,E=`${e.name}:${f}:${O} `,I=i.split(/\r\n|[\n\r]/g),D=I[r];if(D.length>120){const R=Math.floor(O/80),B=O%80,w=[];for(let V=0;V["|",V]),["|","^".padStart(B)],["|",w[R+1]]])}return E+Pe([[`${f-1} |`,I[r-1]],[`${f} |`,D],["|","^".padStart(O)],[`${f+1} |`,I[r+1]]])}function Pe(e){const t=e.filter(([i,r])=>r!==void 0),n=Math.max(...t.map(([i])=>i.length));return t.map(([i,r])=>i.padStart(n)+(r?" "+r:"")).join(` `)}function Tt(e){const t=e[0];return t==null||"kind"in t||"length"in t?{nodes:t,source:e[1],positions:e[2],path:e[3],originalError:e[4],extensions:e[5]}:t}class Ce extends Error{constructor(t,...n){var i,r,o;const{nodes:f,source:v,positions:O,path:E,originalError:I,extensions:D}=Tt(n);super(t),this.name="GraphQLError",this.path=E??void 0,this.originalError=I??void 0,this.nodes=qe(Array.isArray(f)?f:f?[f]:void 0);const R=qe((i=this.nodes)===null||i===void 0?void 0:i.map(w=>w.loc).filter(w=>w!=null));this.source=v??(R==null||(r=R[0])===null||r===void 0?void 0:r.source),this.positions=O??R?.map(w=>w.start),this.locations=O&&v?O.map(w=>Se(v,w)):R?.map(w=>Se(w.source,w.start));const B=yt(I?.extensions)?I?.extensions:void 0;this.extensions=(o=D??B)!==null&&o!==void 0?o:Object.create(null),Object.defineProperties(this,{message:{writable:!0,enumerable:!0},name:{enumerable:!1},nodes:{enumerable:!1},source:{enumerable:!1},positions:{enumerable:!1},originalError:{enumerable:!1}}),I!=null&&I.stack?Object.defineProperty(this,"stack",{value:I.stack,writable:!0,configurable:!0}):Error.captureStackTrace?Error.captureStackTrace(this,Ce):Object.defineProperty(this,"stack",{value:Error().stack,writable:!0,configurable:!0})}get[Symbol.toStringTag](){return"GraphQLError"}toString(){let t=this.message;if(this.nodes)for(const n of this.nodes)n.loc&&(t+=` diff --git a/dist/public/manifest.json b/dist/public/manifest.json index b4e2d9b..91eb96b 100644 --- a/dist/public/manifest.json +++ b/dist/public/manifest.json @@ -1,6 +1,6 @@ { "src/entry-client.tsx": { - "file": "assets/entry-client.b0117054.js", + "file": "assets/entry-client.0e635511.js", "src": "src/entry-client.tsx", "isEntry": true, "dynamicImports": [ @@ -11,7 +11,7 @@ ] }, "src/routes/index.tsx": { - "file": "assets/index.af6c29ac.js", + "file": "assets/index.f572890e.js", "src": "src/routes/index.tsx", "isDynamicEntry": true, "imports": [ diff --git a/dist/public/route-manifest.json b/dist/public/route-manifest.json index cd15aa2..8c68c04 100644 --- a/dist/public/route-manifest.json +++ b/dist/public/route-manifest.json @@ -2,11 +2,11 @@ "/": [ { "type": "script", - "href": "/assets/index.af6c29ac.js" + "href": "/assets/index.f572890e.js" }, { "type": "script", - "href": "/assets/entry-client.b0117054.js" + "href": "/assets/entry-client.0e635511.js" }, { "type": "style", @@ -16,7 +16,7 @@ "entry-client": [ { "type": "script", - "href": "/assets/entry-client.b0117054.js" + "href": "/assets/entry-client.0e635511.js" }, { "type": "style", diff --git a/dist/public/ssr-manifest.json b/dist/public/ssr-manifest.json index e5a808e..5197553 100644 --- a/dist/public/ssr-manifest.json +++ b/dist/public/ssr-manifest.json @@ -1,6 +1,6 @@ { - "node_modules/.pnpm/solid-js@1.5.7/node_modules/solid-js/dist/solid.js": [], - "node_modules/.pnpm/solid-js@1.5.7/node_modules/solid-js/web/dist/web.js": [], + "node_modules/.pnpm/solid-js@1.5.7_rioon2l6g4t5h43ht6tz6zjuqa/node_modules/solid-js/dist/solid.js": [], + "node_modules/.pnpm/solid-js@1.5.7_rioon2l6g4t5h43ht6tz6zjuqa/node_modules/solid-js/web/dist/web.js": [], "\u0000vite/preload-helper": [], "node_modules/.pnpm/solid-start@0.1.2_662kx2gjxcetvfdkelauuogf74/node_modules/solid-start/entry-client/mount.tsx": [], "node_modules/.pnpm/@solidjs+meta@0.28.0_solid-js@1.5.7/node_modules/@solidjs/meta/dist/index.jsx": [], @@ -20,141 +20,141 @@ "node_modules/.pnpm/solid-start@0.1.2_662kx2gjxcetvfdkelauuogf74/node_modules/solid-start/entry-client/StartClient.tsx": [], "src/entry-client.tsx": [], "\u0000commonjsHelpers.js": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "\u0000/workspace/solid-start-2022-09-30/node_modules/.pnpm/graphql-request@5.0.0_graphql@16.6.0/node_modules/graphql-request/dist/index.js?commonjs-exports": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "\u0000/workspace/solid-start-2022-09-30/node_modules/.pnpm/cross-fetch@3.1.5/node_modules/cross-fetch/dist/browser-ponyfill.js?commonjs-module": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "node_modules/.pnpm/cross-fetch@3.1.5/node_modules/cross-fetch/dist/browser-ponyfill.js": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/jsutils/isObjectLike.mjs": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/jsutils/invariant.mjs": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/location.mjs": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/printLocation.mjs": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/error/GraphQLError.mjs": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/error/syntaxError.mjs": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/ast.mjs": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/directiveLocation.mjs": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/kinds.mjs": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/characterClasses.mjs": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/blockString.mjs": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/tokenKind.mjs": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/lexer.mjs": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/jsutils/devAssert.mjs": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/jsutils/inspect.mjs": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/jsutils/instanceOf.mjs": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/source.mjs": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/parser.mjs": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "\u0000/workspace/solid-start-2022-09-30/node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/parser.mjs?commonjs-proxy": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/printString.mjs": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/visitor.mjs": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/printer.mjs": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "\u0000/workspace/solid-start-2022-09-30/node_modules/.pnpm/graphql@16.6.0/node_modules/graphql/language/printer.mjs?commonjs-proxy": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "\u0000/workspace/solid-start-2022-09-30/node_modules/.pnpm/graphql-request@5.0.0_graphql@16.6.0/node_modules/graphql-request/dist/createRequestBody.js?commonjs-exports": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "\u0000/workspace/solid-start-2022-09-30/node_modules/.pnpm/extract-files@9.0.0/node_modules/extract-files/public/index.js?commonjs-exports": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "node_modules/.pnpm/extract-files@9.0.0/node_modules/extract-files/public/ReactNativeFile.js": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "node_modules/.pnpm/extract-files@9.0.0/node_modules/extract-files/public/isExtractableFile.js": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "node_modules/.pnpm/extract-files@9.0.0/node_modules/extract-files/public/extractFiles.js": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "node_modules/.pnpm/extract-files@9.0.0/node_modules/extract-files/public/index.js": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "node_modules/.pnpm/form-data@3.0.1/node_modules/form-data/lib/browser.js": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "\u0000/workspace/solid-start-2022-09-30/node_modules/.pnpm/graphql-request@5.0.0_graphql@16.6.0/node_modules/graphql-request/dist/defaultJsonSerializer.js?commonjs-exports": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "node_modules/.pnpm/graphql-request@5.0.0_graphql@16.6.0/node_modules/graphql-request/dist/defaultJsonSerializer.js": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "node_modules/.pnpm/graphql-request@5.0.0_graphql@16.6.0/node_modules/graphql-request/dist/createRequestBody.js": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "\u0000/workspace/solid-start-2022-09-30/node_modules/.pnpm/graphql-request@5.0.0_graphql@16.6.0/node_modules/graphql-request/dist/parseArgs.js?commonjs-exports": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "node_modules/.pnpm/graphql-request@5.0.0_graphql@16.6.0/node_modules/graphql-request/dist/parseArgs.js": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "\u0000/workspace/solid-start-2022-09-30/node_modules/.pnpm/graphql-request@5.0.0_graphql@16.6.0/node_modules/graphql-request/dist/types.js?commonjs-exports": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "node_modules/.pnpm/graphql-request@5.0.0_graphql@16.6.0/node_modules/graphql-request/dist/types.js": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "\u0000/workspace/solid-start-2022-09-30/node_modules/.pnpm/graphql-request@5.0.0_graphql@16.6.0/node_modules/graphql-request/dist/graphql-ws.js?commonjs-exports": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "node_modules/.pnpm/graphql-request@5.0.0_graphql@16.6.0/node_modules/graphql-request/dist/graphql-ws.js": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "node_modules/.pnpm/graphql-request@5.0.0_graphql@16.6.0/node_modules/graphql-request/dist/index.js": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "\u0000/workspace/solid-start-2022-09-30/node_modules/.pnpm/graphql-request@5.0.0_graphql@16.6.0/node_modules/graphql-request/dist/index.js?commonjs-es-import": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ], "src/routes/index.tsx": [ - "/assets/index.af6c29ac.js" + "/assets/index.f572890e.js" ] } \ No newline at end of file diff --git a/dist/server.js b/dist/server.js index 0e33c8e..d76e5b5 100644 --- a/dist/server.js +++ b/dist/server.js @@ -1,26 +1,4 @@ import manifestJSON from '__STATIC_CONTENT_MANIFEST'; -import Stream$2 from 'stream'; -import http$1 from 'http'; -import Url from 'url'; -import require$$0$1 from 'punycode'; -import https$1 from 'https'; -import zlib from 'zlib'; -import require$$0$2, { deprecate, inspect as inspect$2 } from 'util'; -import require$$1$2 from 'path'; -import require$$6$1 from 'fs'; -import require$$6$2 from 'buffer'; -import * as crypto__default from 'crypto'; -import crypto__default__default from 'crypto'; -import * as process$1 from 'process'; -import require$$0$3 from 'assert'; -import require$$4$1 from 'net'; -import require$$10 from 'stream/web'; -import require$$1$3 from 'perf_hooks'; -import require$$4$2 from 'util/types'; -import require$$0$4 from 'events'; -import require$$4$3 from 'tls'; -import require$$3 from 'async_hooks'; -import require$$1$4 from 'console'; var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; @@ -148,7 +126,7 @@ var standard = {"application/andrew-inset":["ez"],"application/applixware":["aw" var other = {"application/prs.cww":["cww"],"application/vnd.1000minds.decision-model+xml":["1km"],"application/vnd.3gpp.pic-bw-large":["plb"],"application/vnd.3gpp.pic-bw-small":["psb"],"application/vnd.3gpp.pic-bw-var":["pvb"],"application/vnd.3gpp2.tcap":["tcap"],"application/vnd.3m.post-it-notes":["pwn"],"application/vnd.accpac.simply.aso":["aso"],"application/vnd.accpac.simply.imp":["imp"],"application/vnd.acucobol":["acu"],"application/vnd.acucorp":["atc","acutc"],"application/vnd.adobe.air-application-installer-package+zip":["air"],"application/vnd.adobe.formscentral.fcdt":["fcdt"],"application/vnd.adobe.fxp":["fxp","fxpl"],"application/vnd.adobe.xdp+xml":["xdp"],"application/vnd.adobe.xfdf":["xfdf"],"application/vnd.ahead.space":["ahead"],"application/vnd.airzip.filesecure.azf":["azf"],"application/vnd.airzip.filesecure.azs":["azs"],"application/vnd.amazon.ebook":["azw"],"application/vnd.americandynamics.acc":["acc"],"application/vnd.amiga.ami":["ami"],"application/vnd.android.package-archive":["apk"],"application/vnd.anser-web-certificate-issue-initiation":["cii"],"application/vnd.anser-web-funds-transfer-initiation":["fti"],"application/vnd.antix.game-component":["atx"],"application/vnd.apple.installer+xml":["mpkg"],"application/vnd.apple.keynote":["key"],"application/vnd.apple.mpegurl":["m3u8"],"application/vnd.apple.numbers":["numbers"],"application/vnd.apple.pages":["pages"],"application/vnd.apple.pkpass":["pkpass"],"application/vnd.aristanetworks.swi":["swi"],"application/vnd.astraea-software.iota":["iota"],"application/vnd.audiograph":["aep"],"application/vnd.balsamiq.bmml+xml":["bmml"],"application/vnd.blueice.multipass":["mpm"],"application/vnd.bmi":["bmi"],"application/vnd.businessobjects":["rep"],"application/vnd.chemdraw+xml":["cdxml"],"application/vnd.chipnuts.karaoke-mmd":["mmd"],"application/vnd.cinderella":["cdy"],"application/vnd.citationstyles.style+xml":["csl"],"application/vnd.claymore":["cla"],"application/vnd.cloanto.rp9":["rp9"],"application/vnd.clonk.c4group":["c4g","c4d","c4f","c4p","c4u"],"application/vnd.cluetrust.cartomobile-config":["c11amc"],"application/vnd.cluetrust.cartomobile-config-pkg":["c11amz"],"application/vnd.commonspace":["csp"],"application/vnd.contact.cmsg":["cdbcmsg"],"application/vnd.cosmocaller":["cmc"],"application/vnd.crick.clicker":["clkx"],"application/vnd.crick.clicker.keyboard":["clkk"],"application/vnd.crick.clicker.palette":["clkp"],"application/vnd.crick.clicker.template":["clkt"],"application/vnd.crick.clicker.wordbank":["clkw"],"application/vnd.criticaltools.wbs+xml":["wbs"],"application/vnd.ctc-posml":["pml"],"application/vnd.cups-ppd":["ppd"],"application/vnd.curl.car":["car"],"application/vnd.curl.pcurl":["pcurl"],"application/vnd.dart":["dart"],"application/vnd.data-vision.rdz":["rdz"],"application/vnd.dbf":["dbf"],"application/vnd.dece.data":["uvf","uvvf","uvd","uvvd"],"application/vnd.dece.ttml+xml":["uvt","uvvt"],"application/vnd.dece.unspecified":["uvx","uvvx"],"application/vnd.dece.zip":["uvz","uvvz"],"application/vnd.denovo.fcselayout-link":["fe_launch"],"application/vnd.dna":["dna"],"application/vnd.dolby.mlp":["mlp"],"application/vnd.dpgraph":["dpg"],"application/vnd.dreamfactory":["dfac"],"application/vnd.ds-keypoint":["kpxx"],"application/vnd.dvb.ait":["ait"],"application/vnd.dvb.service":["svc"],"application/vnd.dynageo":["geo"],"application/vnd.ecowin.chart":["mag"],"application/vnd.enliven":["nml"],"application/vnd.epson.esf":["esf"],"application/vnd.epson.msf":["msf"],"application/vnd.epson.quickanime":["qam"],"application/vnd.epson.salt":["slt"],"application/vnd.epson.ssf":["ssf"],"application/vnd.eszigno3+xml":["es3","et3"],"application/vnd.ezpix-album":["ez2"],"application/vnd.ezpix-package":["ez3"],"application/vnd.fdf":["fdf"],"application/vnd.fdsn.mseed":["mseed"],"application/vnd.fdsn.seed":["seed","dataless"],"application/vnd.flographit":["gph"],"application/vnd.fluxtime.clip":["ftc"],"application/vnd.framemaker":["fm","frame","maker","book"],"application/vnd.frogans.fnc":["fnc"],"application/vnd.frogans.ltf":["ltf"],"application/vnd.fsc.weblaunch":["fsc"],"application/vnd.fujitsu.oasys":["oas"],"application/vnd.fujitsu.oasys2":["oa2"],"application/vnd.fujitsu.oasys3":["oa3"],"application/vnd.fujitsu.oasysgp":["fg5"],"application/vnd.fujitsu.oasysprs":["bh2"],"application/vnd.fujixerox.ddd":["ddd"],"application/vnd.fujixerox.docuworks":["xdw"],"application/vnd.fujixerox.docuworks.binder":["xbd"],"application/vnd.fuzzysheet":["fzs"],"application/vnd.genomatix.tuxedo":["txd"],"application/vnd.geogebra.file":["ggb"],"application/vnd.geogebra.tool":["ggt"],"application/vnd.geometry-explorer":["gex","gre"],"application/vnd.geonext":["gxt"],"application/vnd.geoplan":["g2w"],"application/vnd.geospace":["g3w"],"application/vnd.gmx":["gmx"],"application/vnd.google-apps.document":["gdoc"],"application/vnd.google-apps.presentation":["gslides"],"application/vnd.google-apps.spreadsheet":["gsheet"],"application/vnd.google-earth.kml+xml":["kml"],"application/vnd.google-earth.kmz":["kmz"],"application/vnd.grafeq":["gqf","gqs"],"application/vnd.groove-account":["gac"],"application/vnd.groove-help":["ghf"],"application/vnd.groove-identity-message":["gim"],"application/vnd.groove-injector":["grv"],"application/vnd.groove-tool-message":["gtm"],"application/vnd.groove-tool-template":["tpl"],"application/vnd.groove-vcard":["vcg"],"application/vnd.hal+xml":["hal"],"application/vnd.handheld-entertainment+xml":["zmm"],"application/vnd.hbci":["hbci"],"application/vnd.hhe.lesson-player":["les"],"application/vnd.hp-hpgl":["hpgl"],"application/vnd.hp-hpid":["hpid"],"application/vnd.hp-hps":["hps"],"application/vnd.hp-jlyt":["jlt"],"application/vnd.hp-pcl":["pcl"],"application/vnd.hp-pclxl":["pclxl"],"application/vnd.hydrostatix.sof-data":["sfd-hdstx"],"application/vnd.ibm.minipay":["mpy"],"application/vnd.ibm.modcap":["afp","listafp","list3820"],"application/vnd.ibm.rights-management":["irm"],"application/vnd.ibm.secure-container":["sc"],"application/vnd.iccprofile":["icc","icm"],"application/vnd.igloader":["igl"],"application/vnd.immervision-ivp":["ivp"],"application/vnd.immervision-ivu":["ivu"],"application/vnd.insors.igm":["igm"],"application/vnd.intercon.formnet":["xpw","xpx"],"application/vnd.intergeo":["i2g"],"application/vnd.intu.qbo":["qbo"],"application/vnd.intu.qfx":["qfx"],"application/vnd.ipunplugged.rcprofile":["rcprofile"],"application/vnd.irepository.package+xml":["irp"],"application/vnd.is-xpr":["xpr"],"application/vnd.isac.fcs":["fcs"],"application/vnd.jam":["jam"],"application/vnd.jcp.javame.midlet-rms":["rms"],"application/vnd.jisp":["jisp"],"application/vnd.joost.joda-archive":["joda"],"application/vnd.kahootz":["ktz","ktr"],"application/vnd.kde.karbon":["karbon"],"application/vnd.kde.kchart":["chrt"],"application/vnd.kde.kformula":["kfo"],"application/vnd.kde.kivio":["flw"],"application/vnd.kde.kontour":["kon"],"application/vnd.kde.kpresenter":["kpr","kpt"],"application/vnd.kde.kspread":["ksp"],"application/vnd.kde.kword":["kwd","kwt"],"application/vnd.kenameaapp":["htke"],"application/vnd.kidspiration":["kia"],"application/vnd.kinar":["kne","knp"],"application/vnd.koan":["skp","skd","skt","skm"],"application/vnd.kodak-descriptor":["sse"],"application/vnd.las.las+xml":["lasxml"],"application/vnd.llamagraphics.life-balance.desktop":["lbd"],"application/vnd.llamagraphics.life-balance.exchange+xml":["lbe"],"application/vnd.lotus-1-2-3":["123"],"application/vnd.lotus-approach":["apr"],"application/vnd.lotus-freelance":["pre"],"application/vnd.lotus-notes":["nsf"],"application/vnd.lotus-organizer":["org"],"application/vnd.lotus-screencam":["scm"],"application/vnd.lotus-wordpro":["lwp"],"application/vnd.macports.portpkg":["portpkg"],"application/vnd.mapbox-vector-tile":["mvt"],"application/vnd.mcd":["mcd"],"application/vnd.medcalcdata":["mc1"],"application/vnd.mediastation.cdkey":["cdkey"],"application/vnd.mfer":["mwf"],"application/vnd.mfmp":["mfm"],"application/vnd.micrografx.flo":["flo"],"application/vnd.micrografx.igx":["igx"],"application/vnd.mif":["mif"],"application/vnd.mobius.daf":["daf"],"application/vnd.mobius.dis":["dis"],"application/vnd.mobius.mbk":["mbk"],"application/vnd.mobius.mqy":["mqy"],"application/vnd.mobius.msl":["msl"],"application/vnd.mobius.plc":["plc"],"application/vnd.mobius.txf":["txf"],"application/vnd.mophun.application":["mpn"],"application/vnd.mophun.certificate":["mpc"],"application/vnd.mozilla.xul+xml":["xul"],"application/vnd.ms-artgalry":["cil"],"application/vnd.ms-cab-compressed":["cab"],"application/vnd.ms-excel":["xls","xlm","xla","xlc","xlt","xlw"],"application/vnd.ms-excel.addin.macroenabled.12":["xlam"],"application/vnd.ms-excel.sheet.binary.macroenabled.12":["xlsb"],"application/vnd.ms-excel.sheet.macroenabled.12":["xlsm"],"application/vnd.ms-excel.template.macroenabled.12":["xltm"],"application/vnd.ms-fontobject":["eot"],"application/vnd.ms-htmlhelp":["chm"],"application/vnd.ms-ims":["ims"],"application/vnd.ms-lrm":["lrm"],"application/vnd.ms-officetheme":["thmx"],"application/vnd.ms-outlook":["msg"],"application/vnd.ms-pki.seccat":["cat"],"application/vnd.ms-pki.stl":["*stl"],"application/vnd.ms-powerpoint":["ppt","pps","pot"],"application/vnd.ms-powerpoint.addin.macroenabled.12":["ppam"],"application/vnd.ms-powerpoint.presentation.macroenabled.12":["pptm"],"application/vnd.ms-powerpoint.slide.macroenabled.12":["sldm"],"application/vnd.ms-powerpoint.slideshow.macroenabled.12":["ppsm"],"application/vnd.ms-powerpoint.template.macroenabled.12":["potm"],"application/vnd.ms-project":["mpp","mpt"],"application/vnd.ms-word.document.macroenabled.12":["docm"],"application/vnd.ms-word.template.macroenabled.12":["dotm"],"application/vnd.ms-works":["wps","wks","wcm","wdb"],"application/vnd.ms-wpl":["wpl"],"application/vnd.ms-xpsdocument":["xps"],"application/vnd.mseq":["mseq"],"application/vnd.musician":["mus"],"application/vnd.muvee.style":["msty"],"application/vnd.mynfc":["taglet"],"application/vnd.neurolanguage.nlu":["nlu"],"application/vnd.nitf":["ntf","nitf"],"application/vnd.noblenet-directory":["nnd"],"application/vnd.noblenet-sealer":["nns"],"application/vnd.noblenet-web":["nnw"],"application/vnd.nokia.n-gage.ac+xml":["*ac"],"application/vnd.nokia.n-gage.data":["ngdat"],"application/vnd.nokia.n-gage.symbian.install":["n-gage"],"application/vnd.nokia.radio-preset":["rpst"],"application/vnd.nokia.radio-presets":["rpss"],"application/vnd.novadigm.edm":["edm"],"application/vnd.novadigm.edx":["edx"],"application/vnd.novadigm.ext":["ext"],"application/vnd.oasis.opendocument.chart":["odc"],"application/vnd.oasis.opendocument.chart-template":["otc"],"application/vnd.oasis.opendocument.database":["odb"],"application/vnd.oasis.opendocument.formula":["odf"],"application/vnd.oasis.opendocument.formula-template":["odft"],"application/vnd.oasis.opendocument.graphics":["odg"],"application/vnd.oasis.opendocument.graphics-template":["otg"],"application/vnd.oasis.opendocument.image":["odi"],"application/vnd.oasis.opendocument.image-template":["oti"],"application/vnd.oasis.opendocument.presentation":["odp"],"application/vnd.oasis.opendocument.presentation-template":["otp"],"application/vnd.oasis.opendocument.spreadsheet":["ods"],"application/vnd.oasis.opendocument.spreadsheet-template":["ots"],"application/vnd.oasis.opendocument.text":["odt"],"application/vnd.oasis.opendocument.text-master":["odm"],"application/vnd.oasis.opendocument.text-template":["ott"],"application/vnd.oasis.opendocument.text-web":["oth"],"application/vnd.olpc-sugar":["xo"],"application/vnd.oma.dd2+xml":["dd2"],"application/vnd.openblox.game+xml":["obgx"],"application/vnd.openofficeorg.extension":["oxt"],"application/vnd.openstreetmap.data+xml":["osm"],"application/vnd.openxmlformats-officedocument.presentationml.presentation":["pptx"],"application/vnd.openxmlformats-officedocument.presentationml.slide":["sldx"],"application/vnd.openxmlformats-officedocument.presentationml.slideshow":["ppsx"],"application/vnd.openxmlformats-officedocument.presentationml.template":["potx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":["xlsx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.template":["xltx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.document":["docx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.template":["dotx"],"application/vnd.osgeo.mapguide.package":["mgp"],"application/vnd.osgi.dp":["dp"],"application/vnd.osgi.subsystem":["esa"],"application/vnd.palm":["pdb","pqa","oprc"],"application/vnd.pawaafile":["paw"],"application/vnd.pg.format":["str"],"application/vnd.pg.osasli":["ei6"],"application/vnd.picsel":["efif"],"application/vnd.pmi.widget":["wg"],"application/vnd.pocketlearn":["plf"],"application/vnd.powerbuilder6":["pbd"],"application/vnd.previewsystems.box":["box"],"application/vnd.proteus.magazine":["mgz"],"application/vnd.publishare-delta-tree":["qps"],"application/vnd.pvi.ptid1":["ptid"],"application/vnd.quark.quarkxpress":["qxd","qxt","qwd","qwt","qxl","qxb"],"application/vnd.rar":["rar"],"application/vnd.realvnc.bed":["bed"],"application/vnd.recordare.musicxml":["mxl"],"application/vnd.recordare.musicxml+xml":["musicxml"],"application/vnd.rig.cryptonote":["cryptonote"],"application/vnd.rim.cod":["cod"],"application/vnd.rn-realmedia":["rm"],"application/vnd.rn-realmedia-vbr":["rmvb"],"application/vnd.route66.link66+xml":["link66"],"application/vnd.sailingtracker.track":["st"],"application/vnd.seemail":["see"],"application/vnd.sema":["sema"],"application/vnd.semd":["semd"],"application/vnd.semf":["semf"],"application/vnd.shana.informed.formdata":["ifm"],"application/vnd.shana.informed.formtemplate":["itp"],"application/vnd.shana.informed.interchange":["iif"],"application/vnd.shana.informed.package":["ipk"],"application/vnd.simtech-mindmapper":["twd","twds"],"application/vnd.smaf":["mmf"],"application/vnd.smart.teacher":["teacher"],"application/vnd.software602.filler.form+xml":["fo"],"application/vnd.solent.sdkm+xml":["sdkm","sdkd"],"application/vnd.spotfire.dxp":["dxp"],"application/vnd.spotfire.sfs":["sfs"],"application/vnd.stardivision.calc":["sdc"],"application/vnd.stardivision.draw":["sda"],"application/vnd.stardivision.impress":["sdd"],"application/vnd.stardivision.math":["smf"],"application/vnd.stardivision.writer":["sdw","vor"],"application/vnd.stardivision.writer-global":["sgl"],"application/vnd.stepmania.package":["smzip"],"application/vnd.stepmania.stepchart":["sm"],"application/vnd.sun.wadl+xml":["wadl"],"application/vnd.sun.xml.calc":["sxc"],"application/vnd.sun.xml.calc.template":["stc"],"application/vnd.sun.xml.draw":["sxd"],"application/vnd.sun.xml.draw.template":["std"],"application/vnd.sun.xml.impress":["sxi"],"application/vnd.sun.xml.impress.template":["sti"],"application/vnd.sun.xml.math":["sxm"],"application/vnd.sun.xml.writer":["sxw"],"application/vnd.sun.xml.writer.global":["sxg"],"application/vnd.sun.xml.writer.template":["stw"],"application/vnd.sus-calendar":["sus","susp"],"application/vnd.svd":["svd"],"application/vnd.symbian.install":["sis","sisx"],"application/vnd.syncml+xml":["xsm"],"application/vnd.syncml.dm+wbxml":["bdm"],"application/vnd.syncml.dm+xml":["xdm"],"application/vnd.syncml.dmddf+xml":["ddf"],"application/vnd.tao.intent-module-archive":["tao"],"application/vnd.tcpdump.pcap":["pcap","cap","dmp"],"application/vnd.tmobile-livetv":["tmo"],"application/vnd.trid.tpt":["tpt"],"application/vnd.triscape.mxs":["mxs"],"application/vnd.trueapp":["tra"],"application/vnd.ufdl":["ufd","ufdl"],"application/vnd.uiq.theme":["utz"],"application/vnd.umajin":["umj"],"application/vnd.unity":["unityweb"],"application/vnd.uoml+xml":["uoml"],"application/vnd.vcx":["vcx"],"application/vnd.visio":["vsd","vst","vss","vsw"],"application/vnd.visionary":["vis"],"application/vnd.vsf":["vsf"],"application/vnd.wap.wbxml":["wbxml"],"application/vnd.wap.wmlc":["wmlc"],"application/vnd.wap.wmlscriptc":["wmlsc"],"application/vnd.webturbo":["wtb"],"application/vnd.wolfram.player":["nbp"],"application/vnd.wordperfect":["wpd"],"application/vnd.wqd":["wqd"],"application/vnd.wt.stf":["stf"],"application/vnd.xara":["xar"],"application/vnd.xfdl":["xfdl"],"application/vnd.yamaha.hv-dic":["hvd"],"application/vnd.yamaha.hv-script":["hvs"],"application/vnd.yamaha.hv-voice":["hvp"],"application/vnd.yamaha.openscoreformat":["osf"],"application/vnd.yamaha.openscoreformat.osfpvg+xml":["osfpvg"],"application/vnd.yamaha.smaf-audio":["saf"],"application/vnd.yamaha.smaf-phrase":["spf"],"application/vnd.yellowriver-custom-menu":["cmp"],"application/vnd.zul":["zir","zirz"],"application/vnd.zzazz.deck+xml":["zaz"],"application/x-7z-compressed":["7z"],"application/x-abiword":["abw"],"application/x-ace-compressed":["ace"],"application/x-apple-diskimage":["*dmg"],"application/x-arj":["arj"],"application/x-authorware-bin":["aab","x32","u32","vox"],"application/x-authorware-map":["aam"],"application/x-authorware-seg":["aas"],"application/x-bcpio":["bcpio"],"application/x-bdoc":["*bdoc"],"application/x-bittorrent":["torrent"],"application/x-blorb":["blb","blorb"],"application/x-bzip":["bz"],"application/x-bzip2":["bz2","boz"],"application/x-cbr":["cbr","cba","cbt","cbz","cb7"],"application/x-cdlink":["vcd"],"application/x-cfs-compressed":["cfs"],"application/x-chat":["chat"],"application/x-chess-pgn":["pgn"],"application/x-chrome-extension":["crx"],"application/x-cocoa":["cco"],"application/x-conference":["nsc"],"application/x-cpio":["cpio"],"application/x-csh":["csh"],"application/x-debian-package":["*deb","udeb"],"application/x-dgc-compressed":["dgc"],"application/x-director":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"],"application/x-doom":["wad"],"application/x-dtbncx+xml":["ncx"],"application/x-dtbook+xml":["dtb"],"application/x-dtbresource+xml":["res"],"application/x-dvi":["dvi"],"application/x-envoy":["evy"],"application/x-eva":["eva"],"application/x-font-bdf":["bdf"],"application/x-font-ghostscript":["gsf"],"application/x-font-linux-psf":["psf"],"application/x-font-pcf":["pcf"],"application/x-font-snf":["snf"],"application/x-font-type1":["pfa","pfb","pfm","afm"],"application/x-freearc":["arc"],"application/x-futuresplash":["spl"],"application/x-gca-compressed":["gca"],"application/x-glulx":["ulx"],"application/x-gnumeric":["gnumeric"],"application/x-gramps-xml":["gramps"],"application/x-gtar":["gtar"],"application/x-hdf":["hdf"],"application/x-httpd-php":["php"],"application/x-install-instructions":["install"],"application/x-iso9660-image":["*iso"],"application/x-iwork-keynote-sffkey":["*key"],"application/x-iwork-numbers-sffnumbers":["*numbers"],"application/x-iwork-pages-sffpages":["*pages"],"application/x-java-archive-diff":["jardiff"],"application/x-java-jnlp-file":["jnlp"],"application/x-keepass2":["kdbx"],"application/x-latex":["latex"],"application/x-lua-bytecode":["luac"],"application/x-lzh-compressed":["lzh","lha"],"application/x-makeself":["run"],"application/x-mie":["mie"],"application/x-mobipocket-ebook":["prc","mobi"],"application/x-ms-application":["application"],"application/x-ms-shortcut":["lnk"],"application/x-ms-wmd":["wmd"],"application/x-ms-wmz":["wmz"],"application/x-ms-xbap":["xbap"],"application/x-msaccess":["mdb"],"application/x-msbinder":["obd"],"application/x-mscardfile":["crd"],"application/x-msclip":["clp"],"application/x-msdos-program":["*exe"],"application/x-msdownload":["*exe","*dll","com","bat","*msi"],"application/x-msmediaview":["mvb","m13","m14"],"application/x-msmetafile":["*wmf","*wmz","*emf","emz"],"application/x-msmoney":["mny"],"application/x-mspublisher":["pub"],"application/x-msschedule":["scd"],"application/x-msterminal":["trm"],"application/x-mswrite":["wri"],"application/x-netcdf":["nc","cdf"],"application/x-ns-proxy-autoconfig":["pac"],"application/x-nzb":["nzb"],"application/x-perl":["pl","pm"],"application/x-pilot":["*prc","*pdb"],"application/x-pkcs12":["p12","pfx"],"application/x-pkcs7-certificates":["p7b","spc"],"application/x-pkcs7-certreqresp":["p7r"],"application/x-rar-compressed":["*rar"],"application/x-redhat-package-manager":["rpm"],"application/x-research-info-systems":["ris"],"application/x-sea":["sea"],"application/x-sh":["sh"],"application/x-shar":["shar"],"application/x-shockwave-flash":["swf"],"application/x-silverlight-app":["xap"],"application/x-sql":["sql"],"application/x-stuffit":["sit"],"application/x-stuffitx":["sitx"],"application/x-subrip":["srt"],"application/x-sv4cpio":["sv4cpio"],"application/x-sv4crc":["sv4crc"],"application/x-t3vm-image":["t3"],"application/x-tads":["gam"],"application/x-tar":["tar"],"application/x-tcl":["tcl","tk"],"application/x-tex":["tex"],"application/x-tex-tfm":["tfm"],"application/x-texinfo":["texinfo","texi"],"application/x-tgif":["*obj"],"application/x-ustar":["ustar"],"application/x-virtualbox-hdd":["hdd"],"application/x-virtualbox-ova":["ova"],"application/x-virtualbox-ovf":["ovf"],"application/x-virtualbox-vbox":["vbox"],"application/x-virtualbox-vbox-extpack":["vbox-extpack"],"application/x-virtualbox-vdi":["vdi"],"application/x-virtualbox-vhd":["vhd"],"application/x-virtualbox-vmdk":["vmdk"],"application/x-wais-source":["src"],"application/x-web-app-manifest+json":["webapp"],"application/x-x509-ca-cert":["der","crt","pem"],"application/x-xfig":["fig"],"application/x-xliff+xml":["*xlf"],"application/x-xpinstall":["xpi"],"application/x-xz":["xz"],"application/x-zmachine":["z1","z2","z3","z4","z5","z6","z7","z8"],"audio/vnd.dece.audio":["uva","uvva"],"audio/vnd.digital-winds":["eol"],"audio/vnd.dra":["dra"],"audio/vnd.dts":["dts"],"audio/vnd.dts.hd":["dtshd"],"audio/vnd.lucent.voice":["lvp"],"audio/vnd.ms-playready.media.pya":["pya"],"audio/vnd.nuera.ecelp4800":["ecelp4800"],"audio/vnd.nuera.ecelp7470":["ecelp7470"],"audio/vnd.nuera.ecelp9600":["ecelp9600"],"audio/vnd.rip":["rip"],"audio/x-aac":["aac"],"audio/x-aiff":["aif","aiff","aifc"],"audio/x-caf":["caf"],"audio/x-flac":["flac"],"audio/x-m4a":["*m4a"],"audio/x-matroska":["mka"],"audio/x-mpegurl":["m3u"],"audio/x-ms-wax":["wax"],"audio/x-ms-wma":["wma"],"audio/x-pn-realaudio":["ram","ra"],"audio/x-pn-realaudio-plugin":["rmp"],"audio/x-realaudio":["*ra"],"audio/x-wav":["*wav"],"chemical/x-cdx":["cdx"],"chemical/x-cif":["cif"],"chemical/x-cmdf":["cmdf"],"chemical/x-cml":["cml"],"chemical/x-csml":["csml"],"chemical/x-xyz":["xyz"],"image/prs.btif":["btif"],"image/prs.pti":["pti"],"image/vnd.adobe.photoshop":["psd"],"image/vnd.airzip.accelerator.azv":["azv"],"image/vnd.dece.graphic":["uvi","uvvi","uvg","uvvg"],"image/vnd.djvu":["djvu","djv"],"image/vnd.dvb.subtitle":["*sub"],"image/vnd.dwg":["dwg"],"image/vnd.dxf":["dxf"],"image/vnd.fastbidsheet":["fbs"],"image/vnd.fpx":["fpx"],"image/vnd.fst":["fst"],"image/vnd.fujixerox.edmics-mmr":["mmr"],"image/vnd.fujixerox.edmics-rlc":["rlc"],"image/vnd.microsoft.icon":["ico"],"image/vnd.ms-dds":["dds"],"image/vnd.ms-modi":["mdi"],"image/vnd.ms-photo":["wdp"],"image/vnd.net-fpx":["npx"],"image/vnd.pco.b16":["b16"],"image/vnd.tencent.tap":["tap"],"image/vnd.valve.source.texture":["vtf"],"image/vnd.wap.wbmp":["wbmp"],"image/vnd.xiff":["xif"],"image/vnd.zbrush.pcx":["pcx"],"image/x-3ds":["3ds"],"image/x-cmu-raster":["ras"],"image/x-cmx":["cmx"],"image/x-freehand":["fh","fhc","fh4","fh5","fh7"],"image/x-icon":["*ico"],"image/x-jng":["jng"],"image/x-mrsid-image":["sid"],"image/x-ms-bmp":["*bmp"],"image/x-pcx":["*pcx"],"image/x-pict":["pic","pct"],"image/x-portable-anymap":["pnm"],"image/x-portable-bitmap":["pbm"],"image/x-portable-graymap":["pgm"],"image/x-portable-pixmap":["ppm"],"image/x-rgb":["rgb"],"image/x-tga":["tga"],"image/x-xbitmap":["xbm"],"image/x-xpixmap":["xpm"],"image/x-xwindowdump":["xwd"],"message/vnd.wfa.wsc":["wsc"],"model/vnd.collada+xml":["dae"],"model/vnd.dwf":["dwf"],"model/vnd.gdl":["gdl"],"model/vnd.gtw":["gtw"],"model/vnd.mts":["mts"],"model/vnd.opengex":["ogex"],"model/vnd.parasolid.transmit.binary":["x_b"],"model/vnd.parasolid.transmit.text":["x_t"],"model/vnd.sap.vds":["vds"],"model/vnd.usdz+zip":["usdz"],"model/vnd.valve.source.compiled-map":["bsp"],"model/vnd.vtu":["vtu"],"text/prs.lines.tag":["dsc"],"text/vnd.curl":["curl"],"text/vnd.curl.dcurl":["dcurl"],"text/vnd.curl.mcurl":["mcurl"],"text/vnd.curl.scurl":["scurl"],"text/vnd.dvb.subtitle":["sub"],"text/vnd.fly":["fly"],"text/vnd.fmi.flexstor":["flx"],"text/vnd.graphviz":["gv"],"text/vnd.in3d.3dml":["3dml"],"text/vnd.in3d.spot":["spot"],"text/vnd.sun.j2me.app-descriptor":["jad"],"text/vnd.wap.wml":["wml"],"text/vnd.wap.wmlscript":["wmls"],"text/x-asm":["s","asm"],"text/x-c":["c","cc","cxx","cpp","h","hh","dic"],"text/x-component":["htc"],"text/x-fortran":["f","for","f77","f90"],"text/x-handlebars-template":["hbs"],"text/x-java-source":["java"],"text/x-lua":["lua"],"text/x-markdown":["mkd"],"text/x-nfo":["nfo"],"text/x-opml":["opml"],"text/x-org":["*org"],"text/x-pascal":["p","pas"],"text/x-processing":["pde"],"text/x-sass":["sass"],"text/x-scss":["scss"],"text/x-setext":["etx"],"text/x-sfv":["sfv"],"text/x-suse-ymp":["ymp"],"text/x-uuencode":["uu"],"text/x-vcalendar":["vcs"],"text/x-vcard":["vcf"],"video/vnd.dece.hd":["uvh","uvvh"],"video/vnd.dece.mobile":["uvm","uvvm"],"video/vnd.dece.pd":["uvp","uvvp"],"video/vnd.dece.sd":["uvs","uvvs"],"video/vnd.dece.video":["uvv","uvvv"],"video/vnd.dvb.file":["dvb"],"video/vnd.fvt":["fvt"],"video/vnd.mpegurl":["mxu","m4u"],"video/vnd.ms-playready.media.pyv":["pyv"],"video/vnd.uvvu.mp4":["uvu","uvvu"],"video/vnd.vivo":["viv"],"video/x-f4v":["f4v"],"video/x-fli":["fli"],"video/x-flv":["flv"],"video/x-m4v":["m4v"],"video/x-matroska":["mkv","mk3d","mks"],"video/x-mng":["mng"],"video/x-ms-asf":["asf","asx"],"video/x-ms-vob":["vob"],"video/x-ms-wm":["wm"],"video/x-ms-wmv":["wmv"],"video/x-ms-wmx":["wmx"],"video/x-ms-wvx":["wvx"],"video/x-msvideo":["avi"],"video/x-sgi-movie":["movie"],"video/x-smv":["smv"],"x-conference/x-cooltalk":["ice"]}; let Mime = Mime_1; -var mime$1 = new Mime(standard, other); +var mime = new Mime(standard, other); var types$1 = {}; @@ -186,7 +164,7 @@ types$1.InternalError = InternalError; (function (exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.InternalError = exports.NotFoundError = exports.MethodNotAllowedError = exports.serveSinglePageApp = exports.mapRequestToAsset = exports.getAssetFromKV = void 0; - const mime = mime$1; + const mime$1 = mime; const types_1 = types$1; Object.defineProperty(exports, "MethodNotAllowedError", { enumerable: true, get: function () { return types_1.MethodNotAllowedError; } }); Object.defineProperty(exports, "NotFoundError", { enumerable: true, get: function () { return types_1.NotFoundError; } }); @@ -228,7 +206,7 @@ types$1.InternalError = InternalError; // e.g. If path is /about/ -> /about/index.html pathname = pathname.concat(options.defaultDocument); } - else if (!mime.getType(pathname)) { + else if (!mime$1.getType(pathname)) { // If path doesn't look like valid content // e.g. /about.me -> /about.me/index.html pathname = pathname.concat('/' + options.defaultDocument); @@ -306,7 +284,7 @@ types$1.InternalError = InternalError; let pathKey = pathname.replace(/^\/+/, ''); // remove prepended / // @ts-ignore const cache = caches.default; - let mimeType = mime.getType(pathKey) || options.defaultMimeType; + let mimeType = mime$1.getType(pathKey) || options.defaultMimeType; if (mimeType.startsWith('text') || mimeType === 'application/javascript') { mimeType += '; charset=utf-8'; } @@ -453,11 +431,11 @@ var manifest = { "/": [ { type: "script", - href: "/assets/index.af6c29ac.js" + href: "/assets/index.f572890e.js" }, { type: "script", - href: "/assets/entry-client.b0117054.js" + href: "/assets/entry-client.0e635511.js" }, { type: "style", @@ -467,7 +445,7 @@ var manifest = { "entry-client": [ { type: "script", - href: "/assets/entry-client.b0117054.js" + href: "/assets/entry-client.0e635511.js" }, { type: "style", @@ -916,16 +894,16 @@ const REF_START_CHARS_LEN = REF_START_CHARS.length; const REF_CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$_"; const REF_CHARS_LEN = REF_CHARS.length; const STACK = []; -const BUFFER$1 = [""]; +const BUFFER = [""]; let ASSIGNMENTS = new Map(); let INDEX_OR_REF = new WeakMap(); let REF_COUNT = 0; -BUFFER$1.pop(); +BUFFER.pop(); function stringify(root) { if (writeProp(root, "")) { - let result = BUFFER$1[0]; - for (let i = 1, len = BUFFER$1.length; i < len; i++) { - result += BUFFER$1[i]; + let result = BUFFER[0]; + for (let i = 1, len = BUFFER.length; i < len; i++) { + result += BUFFER[i]; } if (REF_COUNT) { if (ASSIGNMENTS.size) { @@ -946,7 +924,7 @@ function stringify(root) { } else if (root && root.constructor === Object) { result = "(" + result + ")"; } - BUFFER$1.length = 0; + BUFFER.length = 0; INDEX_OR_REF = new WeakMap(); return result; } @@ -955,17 +933,17 @@ function stringify(root) { function writeProp(cur, accessor) { switch (typeof cur) { case "string": - BUFFER$1.push(quote(cur, 0)); + BUFFER.push(quote(cur, 0)); break; case "number": - BUFFER$1.push(cur + ""); + BUFFER.push(cur + ""); break; case "boolean": - BUFFER$1.push(cur ? "!0" : "!1"); + BUFFER.push(cur ? "!0" : "!1"); break; case "object": if (cur === null) { - BUFFER$1.push("null"); + BUFFER.push("null"); } else { const ref = getRef(cur, accessor); switch (ref) { @@ -980,32 +958,32 @@ function writeProp(cur, accessor) { writeArray(cur); break; case Date: - BUFFER$1.push('new Date("' + cur.toISOString() + '")'); + BUFFER.push('new Date("' + cur.toISOString() + '")'); break; case RegExp: - BUFFER$1.push(cur + ""); + BUFFER.push(cur + ""); break; case Map: - BUFFER$1.push("new Map("); + BUFFER.push("new Map("); writeArray(Array.from(cur)); - BUFFER$1.push(")"); + BUFFER.push(")"); break; case Set: - BUFFER$1.push("new Set("); + BUFFER.push("new Set("); writeArray(Array.from(cur)); - BUFFER$1.push(")"); + BUFFER.push(")"); break; case undefined: - BUFFER$1.push("Object.assign(Object.create(null),"); + BUFFER.push("Object.assign(Object.create(null),"); writeObject(cur); - BUFFER$1.push("))"); + BUFFER.push("))"); break; default: return false; } break; default: - BUFFER$1.push(ref); + BUFFER.push(ref); break; } } @@ -1022,36 +1000,36 @@ function writeObject(obj) { if (hasOwnProperty$1.call(obj, key)) { const val = obj[key]; const escapedKey = toObjectKey(key); - BUFFER$1.push(sep + escapedKey + ":"); + BUFFER.push(sep + escapedKey + ":"); if (writeProp(val, escapedKey)) { sep = ","; } else { - BUFFER$1.pop(); + BUFFER.pop(); } } } if (sep === "{") { - BUFFER$1.push("{}"); + BUFFER.push("{}"); } else { - BUFFER$1.push("}"); + BUFFER.push("}"); } STACK.pop(); } function writeArray(arr) { - BUFFER$1.push("["); + BUFFER.push("["); STACK.push(arr); writeProp(arr[0], 0); for (let i = 1, len = arr.length; i < len; i++) { - BUFFER$1.push(","); + BUFFER.push(","); writeProp(arr[i], i); } STACK.pop(); - BUFFER$1.push("]"); + BUFFER.push("]"); } function getRef(cur, accessor) { let ref = INDEX_OR_REF.get(cur); if (ref === undefined) { - INDEX_OR_REF.set(cur, BUFFER$1.length); + INDEX_OR_REF.set(cur, BUFFER.length); return false; } if (typeof ref === "number") { @@ -1132,9 +1110,9 @@ function insertAndGetRef(obj, pos) { const ref = toRefParam(REF_COUNT++); INDEX_OR_REF.set(obj, ref); if (pos) { - BUFFER$1[pos - 1] += ref + "="; + BUFFER[pos - 1] += ref + "="; } else { - BUFFER$1[pos] = ref + "=" + BUFFER$1[pos]; + BUFFER[pos] = ref + "=" + BUFFER[pos]; } return ref; } @@ -1276,7 +1254,7 @@ function renderToStream(code, options = {}) { }; } }; - let html = resolveSSRNode(escape$1(code())); + let html = resolveSSRNode(escape(code())); function doShell() { sharedConfig.context = context; context.noHydrate = true; @@ -1396,7 +1374,7 @@ function ssrStyle(value) { for (let i = 0; i < k.length; i++) { const s = k[i]; if (i) result += ";"; - result += `${s}:${escape$1(value[s], true)}`; + result += `${s}:${escape(value[s], true)}`; } return result; } @@ -1408,7 +1386,7 @@ function ssrElement(tag, props, children, needsId) { for (let i = 0; i < keys.length; i++) { const prop = keys[i]; if (ChildProperties.has(prop)) { - if (children === undefined) children = prop === "innerHTML" ? props[prop] : escape$1(props[prop]); + if (children === undefined) children = prop === "innerHTML" ? props[prop] : escape(props[prop]); continue; } const value = props[prop]; @@ -1424,7 +1402,7 @@ function ssrElement(tag, props, children, needsId) { } else if (value == undefined || prop === "ref" || prop.slice(0, 2) === "on") { continue; } else { - result += `${Aliases[prop] || prop}="${escape$1(value, true)}"`; + result += `${Aliases[prop] || prop}="${escape(value, true)}"`; } if (i !== keys.length - 1) result += " "; } @@ -1439,13 +1417,13 @@ function ssrHydrationKey() { const hk = getHydrationKey(); return hk ? ` data-hk="${hk}"` : ""; } -function escape$1(s, attr) { +function escape(s, attr) { const t = typeof s; if (t !== "string") { - if (!attr && t === "function") return escape$1(s(), attr); + if (!attr && t === "function") return escape(s(), attr); if (!attr && Array.isArray(s)) { let r = ""; - for (let i = 0; i < s.length; i++) r += resolveSSRNode(escape$1(s[i], attr)); + for (let i = 0; i < s.length; i++) r += resolveSSRNode(escape(s[i], attr)); return { t: r }; @@ -1580,146400 +1558,21988 @@ const isServer = true; var dist = {}; -var nodePonyfill = {exports: {}}; +var browserPonyfill = {exports: {}}; -var publicApi = {}; +(function (module, exports) { + var global = typeof self !== 'undefined' ? self : commonjsGlobal; + var __self__ = (function () { + function F() { + this.fetch = false; + this.DOMException = global.DOMException; + } + F.prototype = global; + return new F(); + })(); + (function(self) { -var URL$2 = {exports: {}}; + ((function (exports) { -var conversions = {}; -var lib$2 = conversions; + var support = { + searchParams: 'URLSearchParams' in self, + iterable: 'Symbol' in self && 'iterator' in Symbol, + blob: + 'FileReader' in self && + 'Blob' in self && + (function() { + try { + new Blob(); + return true + } catch (e) { + return false + } + })(), + formData: 'FormData' in self, + arrayBuffer: 'ArrayBuffer' in self + }; -function sign(x) { - return x < 0 ? -1 : 1; -} + function isDataView(obj) { + return obj && DataView.prototype.isPrototypeOf(obj) + } + + if (support.arrayBuffer) { + var viewClasses = [ + '[object Int8Array]', + '[object Uint8Array]', + '[object Uint8ClampedArray]', + '[object Int16Array]', + '[object Uint16Array]', + '[object Int32Array]', + '[object Uint32Array]', + '[object Float32Array]', + '[object Float64Array]' + ]; -function evenRound(x) { - // Round x to the nearest integer, choosing the even integer if it lies halfway between two. - if ((x % 1) === 0.5 && (x & 1) === 0) { // [even number].5; round down (i.e. floor) - return Math.floor(x); - } else { - return Math.round(x); - } -} + var isArrayBufferView = + ArrayBuffer.isView || + function(obj) { + return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1 + }; + } -function createNumberConversion(bitLength, typeOpts) { - if (!typeOpts.unsigned) { - --bitLength; - } - const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength); - const upperBound = Math.pow(2, bitLength) - 1; + function normalizeName(name) { + if (typeof name !== 'string') { + name = String(name); + } + if (/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(name)) { + throw new TypeError('Invalid character in header field name') + } + return name.toLowerCase() + } - const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength); - const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1); + function normalizeValue(value) { + if (typeof value !== 'string') { + value = String(value); + } + return value + } - return function(V, opts) { - if (!opts) opts = {}; + // Build a destructive iterator for the value list + function iteratorFor(items) { + var iterator = { + next: function() { + var value = items.shift(); + return {done: value === undefined, value: value} + } + }; - let x = +V; + if (support.iterable) { + iterator[Symbol.iterator] = function() { + return iterator + }; + } - if (opts.enforceRange) { - if (!Number.isFinite(x)) { - throw new TypeError("Argument is not a finite number"); - } + return iterator + } - x = sign(x) * Math.floor(Math.abs(x)); - if (x < lowerBound || x > upperBound) { - throw new TypeError("Argument is not in byte range"); - } + function Headers(headers) { + this.map = {}; - return x; - } + if (headers instanceof Headers) { + headers.forEach(function(value, name) { + this.append(name, value); + }, this); + } else if (Array.isArray(headers)) { + headers.forEach(function(header) { + this.append(header[0], header[1]); + }, this); + } else if (headers) { + Object.getOwnPropertyNames(headers).forEach(function(name) { + this.append(name, headers[name]); + }, this); + } + } - if (!isNaN(x) && opts.clamp) { - x = evenRound(x); + Headers.prototype.append = function(name, value) { + name = normalizeName(name); + value = normalizeValue(value); + var oldValue = this.map[name]; + this.map[name] = oldValue ? oldValue + ', ' + value : value; + }; - if (x < lowerBound) x = lowerBound; - if (x > upperBound) x = upperBound; - return x; - } + Headers.prototype['delete'] = function(name) { + delete this.map[normalizeName(name)]; + }; - if (!Number.isFinite(x) || x === 0) { - return 0; - } + Headers.prototype.get = function(name) { + name = normalizeName(name); + return this.has(name) ? this.map[name] : null + }; - x = sign(x) * Math.floor(Math.abs(x)); - x = x % moduloVal; + Headers.prototype.has = function(name) { + return this.map.hasOwnProperty(normalizeName(name)) + }; - if (!typeOpts.unsigned && x >= moduloBound) { - return x - moduloVal; - } else if (typeOpts.unsigned) { - if (x < 0) { - x += moduloVal; - } else if (x === -0) { // don't return negative zero - return 0; - } - } + Headers.prototype.set = function(name, value) { + this.map[normalizeName(name)] = normalizeValue(value); + }; - return x; - } -} + Headers.prototype.forEach = function(callback, thisArg) { + for (var name in this.map) { + if (this.map.hasOwnProperty(name)) { + callback.call(thisArg, this.map[name], name, this); + } + } + }; -conversions["void"] = function () { - return undefined; -}; + Headers.prototype.keys = function() { + var items = []; + this.forEach(function(value, name) { + items.push(name); + }); + return iteratorFor(items) + }; -conversions["boolean"] = function (val) { - return !!val; -}; + Headers.prototype.values = function() { + var items = []; + this.forEach(function(value) { + items.push(value); + }); + return iteratorFor(items) + }; -conversions["byte"] = createNumberConversion(8, { unsigned: false }); -conversions["octet"] = createNumberConversion(8, { unsigned: true }); + Headers.prototype.entries = function() { + var items = []; + this.forEach(function(value, name) { + items.push([name, value]); + }); + return iteratorFor(items) + }; -conversions["short"] = createNumberConversion(16, { unsigned: false }); -conversions["unsigned short"] = createNumberConversion(16, { unsigned: true }); + if (support.iterable) { + Headers.prototype[Symbol.iterator] = Headers.prototype.entries; + } -conversions["long"] = createNumberConversion(32, { unsigned: false }); -conversions["unsigned long"] = createNumberConversion(32, { unsigned: true }); + function consumed(body) { + if (body.bodyUsed) { + return Promise.reject(new TypeError('Already read')) + } + body.bodyUsed = true; + } -conversions["long long"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 }); -conversions["unsigned long long"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 }); + function fileReaderReady(reader) { + return new Promise(function(resolve, reject) { + reader.onload = function() { + resolve(reader.result); + }; + reader.onerror = function() { + reject(reader.error); + }; + }) + } -conversions["double"] = function (V) { - const x = +V; + function readBlobAsArrayBuffer(blob) { + var reader = new FileReader(); + var promise = fileReaderReady(reader); + reader.readAsArrayBuffer(blob); + return promise + } - if (!Number.isFinite(x)) { - throw new TypeError("Argument is not a finite floating-point value"); - } + function readBlobAsText(blob) { + var reader = new FileReader(); + var promise = fileReaderReady(reader); + reader.readAsText(blob); + return promise + } - return x; -}; + function readArrayBufferAsText(buf) { + var view = new Uint8Array(buf); + var chars = new Array(view.length); -conversions["unrestricted double"] = function (V) { - const x = +V; + for (var i = 0; i < view.length; i++) { + chars[i] = String.fromCharCode(view[i]); + } + return chars.join('') + } - if (isNaN(x)) { - throw new TypeError("Argument is NaN"); - } + function bufferClone(buf) { + if (buf.slice) { + return buf.slice(0) + } else { + var view = new Uint8Array(buf.byteLength); + view.set(new Uint8Array(buf)); + return view.buffer + } + } + + function Body() { + this.bodyUsed = false; + + this._initBody = function(body) { + this._bodyInit = body; + if (!body) { + this._bodyText = ''; + } else if (typeof body === 'string') { + this._bodyText = body; + } else if (support.blob && Blob.prototype.isPrototypeOf(body)) { + this._bodyBlob = body; + } else if (support.formData && FormData.prototype.isPrototypeOf(body)) { + this._bodyFormData = body; + } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) { + this._bodyText = body.toString(); + } else if (support.arrayBuffer && support.blob && isDataView(body)) { + this._bodyArrayBuffer = bufferClone(body.buffer); + // IE 10-11 can't handle a DataView body. + this._bodyInit = new Blob([this._bodyArrayBuffer]); + } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) { + this._bodyArrayBuffer = bufferClone(body); + } else { + this._bodyText = body = Object.prototype.toString.call(body); + } - return x; -}; + if (!this.headers.get('content-type')) { + if (typeof body === 'string') { + this.headers.set('content-type', 'text/plain;charset=UTF-8'); + } else if (this._bodyBlob && this._bodyBlob.type) { + this.headers.set('content-type', this._bodyBlob.type); + } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) { + this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8'); + } + } + }; -// not quite valid, but good enough for JS -conversions["float"] = conversions["double"]; -conversions["unrestricted float"] = conversions["unrestricted double"]; + if (support.blob) { + this.blob = function() { + var rejected = consumed(this); + if (rejected) { + return rejected + } -conversions["DOMString"] = function (V, opts) { - if (!opts) opts = {}; + if (this._bodyBlob) { + return Promise.resolve(this._bodyBlob) + } else if (this._bodyArrayBuffer) { + return Promise.resolve(new Blob([this._bodyArrayBuffer])) + } else if (this._bodyFormData) { + throw new Error('could not read FormData body as blob') + } else { + return Promise.resolve(new Blob([this._bodyText])) + } + }; - if (opts.treatNullAsEmptyString && V === null) { - return ""; - } + this.arrayBuffer = function() { + if (this._bodyArrayBuffer) { + return consumed(this) || Promise.resolve(this._bodyArrayBuffer) + } else { + return this.blob().then(readBlobAsArrayBuffer) + } + }; + } - return String(V); -}; + this.text = function() { + var rejected = consumed(this); + if (rejected) { + return rejected + } -conversions["ByteString"] = function (V, opts) { - const x = String(V); - let c = undefined; - for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) { - if (c > 255) { - throw new TypeError("Argument is not a valid bytestring"); - } - } + if (this._bodyBlob) { + return readBlobAsText(this._bodyBlob) + } else if (this._bodyArrayBuffer) { + return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer)) + } else if (this._bodyFormData) { + throw new Error('could not read FormData body as text') + } else { + return Promise.resolve(this._bodyText) + } + }; - return x; -}; + if (support.formData) { + this.formData = function() { + return this.text().then(decode) + }; + } -conversions["USVString"] = function (V) { - const S = String(V); - const n = S.length; - const U = []; - for (let i = 0; i < n; ++i) { - const c = S.charCodeAt(i); - if (c < 0xD800 || c > 0xDFFF) { - U.push(String.fromCodePoint(c)); - } else if (0xDC00 <= c && c <= 0xDFFF) { - U.push(String.fromCodePoint(0xFFFD)); - } else { - if (i === n - 1) { - U.push(String.fromCodePoint(0xFFFD)); - } else { - const d = S.charCodeAt(i + 1); - if (0xDC00 <= d && d <= 0xDFFF) { - const a = c & 0x3FF; - const b = d & 0x3FF; - U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b)); - ++i; - } else { - U.push(String.fromCodePoint(0xFFFD)); - } - } - } - } + this.json = function() { + return this.text().then(JSON.parse) + }; - return U.join(''); -}; + return this + } -conversions["Date"] = function (V, opts) { - if (!(V instanceof Date)) { - throw new TypeError("Argument is not a Date object"); - } - if (isNaN(V)) { - return undefined; - } + // HTTP methods whose capitalization should be normalized + var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']; - return V; -}; + function normalizeMethod(method) { + var upcased = method.toUpperCase(); + return methods.indexOf(upcased) > -1 ? upcased : method + } -conversions["RegExp"] = function (V, opts) { - if (!(V instanceof RegExp)) { - V = new RegExp(V); - } + function Request(input, options) { + options = options || {}; + var body = options.body; - return V; -}; + if (input instanceof Request) { + if (input.bodyUsed) { + throw new TypeError('Already read') + } + this.url = input.url; + this.credentials = input.credentials; + if (!options.headers) { + this.headers = new Headers(input.headers); + } + this.method = input.method; + this.mode = input.mode; + this.signal = input.signal; + if (!body && input._bodyInit != null) { + body = input._bodyInit; + input.bodyUsed = true; + } + } else { + this.url = String(input); + } + + this.credentials = options.credentials || this.credentials || 'same-origin'; + if (options.headers || !this.headers) { + this.headers = new Headers(options.headers); + } + this.method = normalizeMethod(options.method || this.method || 'GET'); + this.mode = options.mode || this.mode || null; + this.signal = options.signal || this.signal; + this.referrer = null; -var utils$2 = {exports: {}}; + if ((this.method === 'GET' || this.method === 'HEAD') && body) { + throw new TypeError('Body not allowed for GET or HEAD requests') + } + this._initBody(body); + } -(function (module) { + Request.prototype.clone = function() { + return new Request(this, {body: this._bodyInit}) + }; - module.exports.mixin = function mixin(target, source) { - const keys = Object.getOwnPropertyNames(source); - for (let i = 0; i < keys.length; ++i) { - Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i])); + function decode(body) { + var form = new FormData(); + body + .trim() + .split('&') + .forEach(function(bytes) { + if (bytes) { + var split = bytes.split('='); + var name = split.shift().replace(/\+/g, ' '); + var value = split.join('=').replace(/\+/g, ' '); + form.append(decodeURIComponent(name), decodeURIComponent(value)); + } + }); + return form + } + + function parseHeaders(rawHeaders) { + var headers = new Headers(); + // Replace instances of \r\n and \n followed by at least one space or horizontal tab with a space + // https://tools.ietf.org/html/rfc7230#section-3.2 + var preProcessedHeaders = rawHeaders.replace(/\r?\n[\t ]+/g, ' '); + preProcessedHeaders.split(/\r?\n/).forEach(function(line) { + var parts = line.split(':'); + var key = parts.shift().trim(); + if (key) { + var value = parts.join(':').trim(); + headers.append(key, value); + } + }); + return headers } - }; - module.exports.wrapperSymbol = Symbol("wrapper"); - module.exports.implSymbol = Symbol("impl"); + Body.call(Request.prototype); - module.exports.wrapperForImpl = function (impl) { - return impl[module.exports.wrapperSymbol]; - }; + function Response(bodyInit, options) { + if (!options) { + options = {}; + } - module.exports.implForWrapper = function (wrapper) { - return wrapper[module.exports.implSymbol]; - }; -} (utils$2)); - -var URLImpl = {}; - -var urlStateMachine = {exports: {}}; - -var tr46 = {}; - -var require$$1$1 = [ - [ - [ - 0, - 44 - ], - "disallowed_STD3_valid" - ], - [ - [ - 45, - 46 - ], - "valid" - ], - [ - [ - 47, - 47 - ], - "disallowed_STD3_valid" - ], - [ - [ - 48, - 57 - ], - "valid" - ], - [ - [ - 58, - 64 - ], - "disallowed_STD3_valid" - ], - [ - [ - 65, - 65 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 66, - 66 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 67, - 67 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 68, - 68 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 69, - 69 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 70, - 70 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 71, - 71 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 72, - 72 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 73, - 73 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 74, - 74 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 75, - 75 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 76, - 76 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 77, - 77 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 78, - 78 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 79, - 79 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 80, - 80 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 81, - 81 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 82, - 82 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 83, - 83 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 84, - 84 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 85, - 85 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 86, - 86 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 87, - 87 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 88, - 88 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 89, - 89 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 90, - 90 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 91, - 96 - ], - "disallowed_STD3_valid" - ], - [ - [ - 97, - 122 - ], - "valid" - ], - [ - [ - 123, - 127 - ], - "disallowed_STD3_valid" - ], - [ - [ - 128, - 159 - ], - "disallowed" - ], - [ - [ - 160, - 160 - ], - "disallowed_STD3_mapped", - [ - 32 - ] - ], - [ - [ - 161, - 167 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 168, - 168 - ], - "disallowed_STD3_mapped", - [ - 32, - 776 - ] - ], - [ - [ - 169, - 169 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 170, - 170 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 171, - 172 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 173, - 173 - ], - "ignored" - ], - [ - [ - 174, - 174 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 175, - 175 - ], - "disallowed_STD3_mapped", - [ - 32, - 772 - ] - ], - [ - [ - 176, - 177 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 178, - 178 - ], - "mapped", - [ - 50 - ] - ], - [ - [ - 179, - 179 - ], - "mapped", - [ - 51 - ] - ], - [ - [ - 180, - 180 - ], - "disallowed_STD3_mapped", - [ - 32, - 769 - ] - ], - [ - [ - 181, - 181 - ], - "mapped", - [ - 956 - ] - ], - [ - [ - 182, - 182 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 183, - 183 - ], - "valid" - ], - [ - [ - 184, - 184 - ], - "disallowed_STD3_mapped", - [ - 32, - 807 - ] - ], - [ - [ - 185, - 185 - ], - "mapped", - [ - 49 - ] - ], - [ - [ - 186, - 186 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 187, - 187 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 188, - 188 - ], - "mapped", - [ - 49, - 8260, - 52 - ] - ], - [ - [ - 189, - 189 - ], - "mapped", - [ - 49, - 8260, - 50 - ] - ], - [ - [ - 190, - 190 - ], - "mapped", - [ - 51, - 8260, - 52 - ] - ], - [ - [ - 191, - 191 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 192, - 192 - ], - "mapped", - [ - 224 - ] - ], - [ - [ - 193, - 193 - ], - "mapped", - [ - 225 - ] - ], - [ - [ - 194, - 194 - ], - "mapped", - [ - 226 - ] - ], - [ - [ - 195, - 195 - ], - "mapped", - [ - 227 - ] - ], - [ - [ - 196, - 196 - ], - "mapped", - [ - 228 - ] - ], - [ - [ - 197, - 197 - ], - "mapped", - [ - 229 - ] - ], - [ - [ - 198, - 198 - ], - "mapped", - [ - 230 - ] - ], - [ - [ - 199, - 199 - ], - "mapped", - [ - 231 - ] - ], - [ - [ - 200, - 200 - ], - "mapped", - [ - 232 - ] - ], - [ - [ - 201, - 201 - ], - "mapped", - [ - 233 - ] - ], - [ - [ - 202, - 202 - ], - "mapped", - [ - 234 - ] - ], - [ - [ - 203, - 203 - ], - "mapped", - [ - 235 - ] - ], - [ - [ - 204, - 204 - ], - "mapped", - [ - 236 - ] - ], - [ - [ - 205, - 205 - ], - "mapped", - [ - 237 - ] - ], - [ - [ - 206, - 206 - ], - "mapped", - [ - 238 - ] - ], - [ - [ - 207, - 207 - ], - "mapped", - [ - 239 - ] - ], - [ - [ - 208, - 208 - ], - "mapped", - [ - 240 - ] - ], - [ - [ - 209, - 209 - ], - "mapped", - [ - 241 - ] - ], - [ - [ - 210, - 210 - ], - "mapped", - [ - 242 - ] - ], - [ - [ - 211, - 211 - ], - "mapped", - [ - 243 - ] - ], - [ - [ - 212, - 212 - ], - "mapped", - [ - 244 - ] - ], - [ - [ - 213, - 213 - ], - "mapped", - [ - 245 - ] - ], - [ - [ - 214, - 214 - ], - "mapped", - [ - 246 - ] - ], - [ - [ - 215, - 215 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 216, - 216 - ], - "mapped", - [ - 248 - ] - ], - [ - [ - 217, - 217 - ], - "mapped", - [ - 249 - ] - ], - [ - [ - 218, - 218 - ], - "mapped", - [ - 250 - ] - ], - [ - [ - 219, - 219 - ], - "mapped", - [ - 251 - ] - ], - [ - [ - 220, - 220 - ], - "mapped", - [ - 252 - ] - ], - [ - [ - 221, - 221 - ], - "mapped", - [ - 253 - ] - ], - [ - [ - 222, - 222 - ], - "mapped", - [ - 254 - ] - ], - [ - [ - 223, - 223 - ], - "deviation", - [ - 115, - 115 - ] - ], - [ - [ - 224, - 246 - ], - "valid" - ], - [ - [ - 247, - 247 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 248, - 255 - ], - "valid" - ], - [ - [ - 256, - 256 - ], - "mapped", - [ - 257 - ] - ], - [ - [ - 257, - 257 - ], - "valid" - ], - [ - [ - 258, - 258 - ], - "mapped", - [ - 259 - ] - ], - [ - [ - 259, - 259 - ], - "valid" - ], - [ - [ - 260, - 260 - ], - "mapped", - [ - 261 - ] - ], - [ - [ - 261, - 261 - ], - "valid" - ], - [ - [ - 262, - 262 - ], - "mapped", - [ - 263 - ] - ], - [ - [ - 263, - 263 - ], - "valid" - ], - [ - [ - 264, - 264 - ], - "mapped", - [ - 265 - ] - ], - [ - [ - 265, - 265 - ], - "valid" - ], - [ - [ - 266, - 266 - ], - "mapped", - [ - 267 - ] - ], - [ - [ - 267, - 267 - ], - "valid" - ], - [ - [ - 268, - 268 - ], - "mapped", - [ - 269 - ] - ], - [ - [ - 269, - 269 - ], - "valid" - ], - [ - [ - 270, - 270 - ], - "mapped", - [ - 271 - ] - ], - [ - [ - 271, - 271 - ], - "valid" - ], - [ - [ - 272, - 272 - ], - "mapped", - [ - 273 - ] - ], - [ - [ - 273, - 273 - ], - "valid" - ], - [ - [ - 274, - 274 - ], - "mapped", - [ - 275 - ] - ], - [ - [ - 275, - 275 - ], - "valid" - ], - [ - [ - 276, - 276 - ], - "mapped", - [ - 277 - ] - ], - [ - [ - 277, - 277 - ], - "valid" - ], - [ - [ - 278, - 278 - ], - "mapped", - [ - 279 - ] - ], - [ - [ - 279, - 279 - ], - "valid" - ], - [ - [ - 280, - 280 - ], - "mapped", - [ - 281 - ] - ], - [ - [ - 281, - 281 - ], - "valid" - ], - [ - [ - 282, - 282 - ], - "mapped", - [ - 283 - ] - ], - [ - [ - 283, - 283 - ], - "valid" - ], - [ - [ - 284, - 284 - ], - "mapped", - [ - 285 - ] - ], - [ - [ - 285, - 285 - ], - "valid" - ], - [ - [ - 286, - 286 - ], - "mapped", - [ - 287 - ] - ], - [ - [ - 287, - 287 - ], - "valid" - ], - [ - [ - 288, - 288 - ], - "mapped", - [ - 289 - ] - ], - [ - [ - 289, - 289 - ], - "valid" - ], - [ - [ - 290, - 290 - ], - "mapped", - [ - 291 - ] - ], - [ - [ - 291, - 291 - ], - "valid" - ], - [ - [ - 292, - 292 - ], - "mapped", - [ - 293 - ] - ], - [ - [ - 293, - 293 - ], - "valid" - ], - [ - [ - 294, - 294 - ], - "mapped", - [ - 295 - ] - ], - [ - [ - 295, - 295 - ], - "valid" - ], - [ - [ - 296, - 296 - ], - "mapped", - [ - 297 - ] - ], - [ - [ - 297, - 297 - ], - "valid" - ], - [ - [ - 298, - 298 - ], - "mapped", - [ - 299 - ] - ], - [ - [ - 299, - 299 - ], - "valid" - ], - [ - [ - 300, - 300 - ], - "mapped", - [ - 301 - ] - ], - [ - [ - 301, - 301 - ], - "valid" - ], - [ - [ - 302, - 302 - ], - "mapped", - [ - 303 - ] - ], - [ - [ - 303, - 303 - ], - "valid" - ], - [ - [ - 304, - 304 - ], - "mapped", - [ - 105, - 775 - ] - ], - [ - [ - 305, - 305 - ], - "valid" - ], - [ - [ - 306, - 307 - ], - "mapped", - [ - 105, - 106 - ] - ], - [ - [ - 308, - 308 - ], - "mapped", - [ - 309 - ] - ], - [ - [ - 309, - 309 - ], - "valid" - ], - [ - [ - 310, - 310 - ], - "mapped", - [ - 311 - ] - ], - [ - [ - 311, - 312 - ], - "valid" - ], - [ - [ - 313, - 313 - ], - "mapped", - [ - 314 - ] - ], - [ - [ - 314, - 314 - ], - "valid" - ], - [ - [ - 315, - 315 - ], - "mapped", - [ - 316 - ] - ], - [ - [ - 316, - 316 - ], - "valid" - ], - [ - [ - 317, - 317 - ], - "mapped", - [ - 318 - ] - ], - [ - [ - 318, - 318 - ], - "valid" - ], - [ - [ - 319, - 320 - ], - "mapped", - [ - 108, - 183 - ] - ], - [ - [ - 321, - 321 - ], - "mapped", - [ - 322 - ] - ], - [ - [ - 322, - 322 - ], - "valid" - ], - [ - [ - 323, - 323 - ], - "mapped", - [ - 324 - ] - ], - [ - [ - 324, - 324 - ], - "valid" - ], - [ - [ - 325, - 325 - ], - "mapped", - [ - 326 - ] - ], - [ - [ - 326, - 326 - ], - "valid" - ], - [ - [ - 327, - 327 - ], - "mapped", - [ - 328 - ] - ], - [ - [ - 328, - 328 - ], - "valid" - ], - [ - [ - 329, - 329 - ], - "mapped", - [ - 700, - 110 - ] - ], - [ - [ - 330, - 330 - ], - "mapped", - [ - 331 - ] - ], - [ - [ - 331, - 331 - ], - "valid" - ], - [ - [ - 332, - 332 - ], - "mapped", - [ - 333 - ] - ], - [ - [ - 333, - 333 - ], - "valid" - ], - [ - [ - 334, - 334 - ], - "mapped", - [ - 335 - ] - ], - [ - [ - 335, - 335 - ], - "valid" - ], - [ - [ - 336, - 336 - ], - "mapped", - [ - 337 - ] - ], - [ - [ - 337, - 337 - ], - "valid" - ], - [ - [ - 338, - 338 - ], - "mapped", - [ - 339 - ] - ], - [ - [ - 339, - 339 - ], - "valid" - ], - [ - [ - 340, - 340 - ], - "mapped", - [ - 341 - ] - ], - [ - [ - 341, - 341 - ], - "valid" - ], - [ - [ - 342, - 342 - ], - "mapped", - [ - 343 - ] - ], - [ - [ - 343, - 343 - ], - "valid" - ], - [ - [ - 344, - 344 - ], - "mapped", - [ - 345 - ] - ], - [ - [ - 345, - 345 - ], - "valid" - ], - [ - [ - 346, - 346 - ], - "mapped", - [ - 347 - ] - ], - [ - [ - 347, - 347 - ], - "valid" - ], - [ - [ - 348, - 348 - ], - "mapped", - [ - 349 - ] - ], - [ - [ - 349, - 349 - ], - "valid" - ], - [ - [ - 350, - 350 - ], - "mapped", - [ - 351 - ] - ], - [ - [ - 351, - 351 - ], - "valid" - ], - [ - [ - 352, - 352 - ], - "mapped", - [ - 353 - ] - ], - [ - [ - 353, - 353 - ], - "valid" - ], - [ - [ - 354, - 354 - ], - "mapped", - [ - 355 - ] - ], - [ - [ - 355, - 355 - ], - "valid" - ], - [ - [ - 356, - 356 - ], - "mapped", - [ - 357 - ] - ], - [ - [ - 357, - 357 - ], - "valid" - ], - [ - [ - 358, - 358 - ], - "mapped", - [ - 359 - ] - ], - [ - [ - 359, - 359 - ], - "valid" - ], - [ - [ - 360, - 360 - ], - "mapped", - [ - 361 - ] - ], - [ - [ - 361, - 361 - ], - "valid" - ], - [ - [ - 362, - 362 - ], - "mapped", - [ - 363 - ] - ], - [ - [ - 363, - 363 - ], - "valid" - ], - [ - [ - 364, - 364 - ], - "mapped", - [ - 365 - ] - ], - [ - [ - 365, - 365 - ], - "valid" - ], - [ - [ - 366, - 366 - ], - "mapped", - [ - 367 - ] - ], - [ - [ - 367, - 367 - ], - "valid" - ], - [ - [ - 368, - 368 - ], - "mapped", - [ - 369 - ] - ], - [ - [ - 369, - 369 - ], - "valid" - ], - [ - [ - 370, - 370 - ], - "mapped", - [ - 371 - ] - ], - [ - [ - 371, - 371 - ], - "valid" - ], - [ - [ - 372, - 372 - ], - "mapped", - [ - 373 - ] - ], - [ - [ - 373, - 373 - ], - "valid" - ], - [ - [ - 374, - 374 - ], - "mapped", - [ - 375 - ] - ], - [ - [ - 375, - 375 - ], - "valid" - ], - [ - [ - 376, - 376 - ], - "mapped", - [ - 255 - ] - ], - [ - [ - 377, - 377 - ], - "mapped", - [ - 378 - ] - ], - [ - [ - 378, - 378 - ], - "valid" - ], - [ - [ - 379, - 379 - ], - "mapped", - [ - 380 - ] - ], - [ - [ - 380, - 380 - ], - "valid" - ], - [ - [ - 381, - 381 - ], - "mapped", - [ - 382 - ] - ], - [ - [ - 382, - 382 - ], - "valid" - ], - [ - [ - 383, - 383 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 384, - 384 - ], - "valid" - ], - [ - [ - 385, - 385 - ], - "mapped", - [ - 595 - ] - ], - [ - [ - 386, - 386 - ], - "mapped", - [ - 387 - ] - ], - [ - [ - 387, - 387 - ], - "valid" - ], - [ - [ - 388, - 388 - ], - "mapped", - [ - 389 - ] - ], - [ - [ - 389, - 389 - ], - "valid" - ], - [ - [ - 390, - 390 - ], - "mapped", - [ - 596 - ] - ], - [ - [ - 391, - 391 - ], - "mapped", - [ - 392 - ] - ], - [ - [ - 392, - 392 - ], - "valid" - ], - [ - [ - 393, - 393 - ], - "mapped", - [ - 598 - ] - ], - [ - [ - 394, - 394 - ], - "mapped", - [ - 599 - ] - ], - [ - [ - 395, - 395 - ], - "mapped", - [ - 396 - ] - ], - [ - [ - 396, - 397 - ], - "valid" - ], - [ - [ - 398, - 398 - ], - "mapped", - [ - 477 - ] - ], - [ - [ - 399, - 399 - ], - "mapped", - [ - 601 - ] - ], - [ - [ - 400, - 400 - ], - "mapped", - [ - 603 - ] - ], - [ - [ - 401, - 401 - ], - "mapped", - [ - 402 - ] - ], - [ - [ - 402, - 402 - ], - "valid" - ], - [ - [ - 403, - 403 - ], - "mapped", - [ - 608 - ] - ], - [ - [ - 404, - 404 - ], - "mapped", - [ - 611 - ] - ], - [ - [ - 405, - 405 - ], - "valid" - ], - [ - [ - 406, - 406 - ], - "mapped", - [ - 617 - ] - ], - [ - [ - 407, - 407 - ], - "mapped", - [ - 616 - ] - ], - [ - [ - 408, - 408 - ], - "mapped", - [ - 409 - ] - ], - [ - [ - 409, - 411 - ], - "valid" - ], - [ - [ - 412, - 412 - ], - "mapped", - [ - 623 - ] - ], - [ - [ - 413, - 413 - ], - "mapped", - [ - 626 - ] - ], - [ - [ - 414, - 414 - ], - "valid" - ], - [ - [ - 415, - 415 - ], - "mapped", - [ - 629 - ] - ], - [ - [ - 416, - 416 - ], - "mapped", - [ - 417 - ] - ], - [ - [ - 417, - 417 - ], - "valid" - ], - [ - [ - 418, - 418 - ], - "mapped", - [ - 419 - ] - ], - [ - [ - 419, - 419 - ], - "valid" - ], - [ - [ - 420, - 420 - ], - "mapped", - [ - 421 - ] - ], - [ - [ - 421, - 421 - ], - "valid" - ], - [ - [ - 422, - 422 - ], - "mapped", - [ - 640 - ] - ], - [ - [ - 423, - 423 - ], - "mapped", - [ - 424 - ] - ], - [ - [ - 424, - 424 - ], - "valid" - ], - [ - [ - 425, - 425 - ], - "mapped", - [ - 643 - ] - ], - [ - [ - 426, - 427 - ], - "valid" - ], - [ - [ - 428, - 428 - ], - "mapped", - [ - 429 - ] - ], - [ - [ - 429, - 429 - ], - "valid" - ], - [ - [ - 430, - 430 - ], - "mapped", - [ - 648 - ] - ], - [ - [ - 431, - 431 - ], - "mapped", - [ - 432 - ] - ], - [ - [ - 432, - 432 - ], - "valid" - ], - [ - [ - 433, - 433 - ], - "mapped", - [ - 650 - ] - ], - [ - [ - 434, - 434 - ], - "mapped", - [ - 651 - ] - ], - [ - [ - 435, - 435 - ], - "mapped", - [ - 436 - ] - ], - [ - [ - 436, - 436 - ], - "valid" - ], - [ - [ - 437, - 437 - ], - "mapped", - [ - 438 - ] - ], - [ - [ - 438, - 438 - ], - "valid" - ], - [ - [ - 439, - 439 - ], - "mapped", - [ - 658 - ] - ], - [ - [ - 440, - 440 - ], - "mapped", - [ - 441 - ] - ], - [ - [ - 441, - 443 - ], - "valid" - ], - [ - [ - 444, - 444 - ], - "mapped", - [ - 445 - ] - ], - [ - [ - 445, - 451 - ], - "valid" - ], - [ - [ - 452, - 454 - ], - "mapped", - [ - 100, - 382 - ] - ], - [ - [ - 455, - 457 - ], - "mapped", - [ - 108, - 106 - ] - ], - [ - [ - 458, - 460 - ], - "mapped", - [ - 110, - 106 - ] - ], - [ - [ - 461, - 461 - ], - "mapped", - [ - 462 - ] - ], - [ - [ - 462, - 462 - ], - "valid" - ], - [ - [ - 463, - 463 - ], - "mapped", - [ - 464 - ] - ], - [ - [ - 464, - 464 - ], - "valid" - ], - [ - [ - 465, - 465 - ], - "mapped", - [ - 466 - ] - ], - [ - [ - 466, - 466 - ], - "valid" - ], - [ - [ - 467, - 467 - ], - "mapped", - [ - 468 - ] - ], - [ - [ - 468, - 468 - ], - "valid" - ], - [ - [ - 469, - 469 - ], - "mapped", - [ - 470 - ] - ], - [ - [ - 470, - 470 - ], - "valid" - ], - [ - [ - 471, - 471 - ], - "mapped", - [ - 472 - ] - ], - [ - [ - 472, - 472 - ], - "valid" - ], - [ - [ - 473, - 473 - ], - "mapped", - [ - 474 - ] - ], - [ - [ - 474, - 474 - ], - "valid" - ], - [ - [ - 475, - 475 - ], - "mapped", - [ - 476 - ] - ], - [ - [ - 476, - 477 - ], - "valid" - ], - [ - [ - 478, - 478 - ], - "mapped", - [ - 479 - ] - ], - [ - [ - 479, - 479 - ], - "valid" - ], - [ - [ - 480, - 480 - ], - "mapped", - [ - 481 - ] - ], - [ - [ - 481, - 481 - ], - "valid" - ], - [ - [ - 482, - 482 - ], - "mapped", - [ - 483 - ] - ], - [ - [ - 483, - 483 - ], - "valid" - ], - [ - [ - 484, - 484 - ], - "mapped", - [ - 485 - ] - ], - [ - [ - 485, - 485 - ], - "valid" - ], - [ - [ - 486, - 486 - ], - "mapped", - [ - 487 - ] - ], - [ - [ - 487, - 487 - ], - "valid" - ], - [ - [ - 488, - 488 - ], - "mapped", - [ - 489 - ] - ], - [ - [ - 489, - 489 - ], - "valid" - ], - [ - [ - 490, - 490 - ], - "mapped", - [ - 491 - ] - ], - [ - [ - 491, - 491 - ], - "valid" - ], - [ - [ - 492, - 492 - ], - "mapped", - [ - 493 - ] - ], - [ - [ - 493, - 493 - ], - "valid" - ], - [ - [ - 494, - 494 - ], - "mapped", - [ - 495 - ] - ], - [ - [ - 495, - 496 - ], - "valid" - ], - [ - [ - 497, - 499 - ], - "mapped", - [ - 100, - 122 - ] - ], - [ - [ - 500, - 500 - ], - "mapped", - [ - 501 - ] - ], - [ - [ - 501, - 501 - ], - "valid" - ], - [ - [ - 502, - 502 - ], - "mapped", - [ - 405 - ] - ], - [ - [ - 503, - 503 - ], - "mapped", - [ - 447 - ] - ], - [ - [ - 504, - 504 - ], - "mapped", - [ - 505 - ] - ], - [ - [ - 505, - 505 - ], - "valid" - ], - [ - [ - 506, - 506 - ], - "mapped", - [ - 507 - ] - ], - [ - [ - 507, - 507 - ], - "valid" - ], - [ - [ - 508, - 508 - ], - "mapped", - [ - 509 - ] - ], - [ - [ - 509, - 509 - ], - "valid" - ], - [ - [ - 510, - 510 - ], - "mapped", - [ - 511 - ] - ], - [ - [ - 511, - 511 - ], - "valid" - ], - [ - [ - 512, - 512 - ], - "mapped", - [ - 513 - ] - ], - [ - [ - 513, - 513 - ], - "valid" - ], - [ - [ - 514, - 514 - ], - "mapped", - [ - 515 - ] - ], - [ - [ - 515, - 515 - ], - "valid" - ], - [ - [ - 516, - 516 - ], - "mapped", - [ - 517 - ] - ], - [ - [ - 517, - 517 - ], - "valid" - ], - [ - [ - 518, - 518 - ], - "mapped", - [ - 519 - ] - ], - [ - [ - 519, - 519 - ], - "valid" - ], - [ - [ - 520, - 520 - ], - "mapped", - [ - 521 - ] - ], - [ - [ - 521, - 521 - ], - "valid" - ], - [ - [ - 522, - 522 - ], - "mapped", - [ - 523 - ] - ], - [ - [ - 523, - 523 - ], - "valid" - ], - [ - [ - 524, - 524 - ], - "mapped", - [ - 525 - ] - ], - [ - [ - 525, - 525 - ], - "valid" - ], - [ - [ - 526, - 526 - ], - "mapped", - [ - 527 - ] - ], - [ - [ - 527, - 527 - ], - "valid" - ], - [ - [ - 528, - 528 - ], - "mapped", - [ - 529 - ] - ], - [ - [ - 529, - 529 - ], - "valid" - ], - [ - [ - 530, - 530 - ], - "mapped", - [ - 531 - ] - ], - [ - [ - 531, - 531 - ], - "valid" - ], - [ - [ - 532, - 532 - ], - "mapped", - [ - 533 - ] - ], - [ - [ - 533, - 533 - ], - "valid" - ], - [ - [ - 534, - 534 - ], - "mapped", - [ - 535 - ] - ], - [ - [ - 535, - 535 - ], - "valid" - ], - [ - [ - 536, - 536 - ], - "mapped", - [ - 537 - ] - ], - [ - [ - 537, - 537 - ], - "valid" - ], - [ - [ - 538, - 538 - ], - "mapped", - [ - 539 - ] - ], - [ - [ - 539, - 539 - ], - "valid" - ], - [ - [ - 540, - 540 - ], - "mapped", - [ - 541 - ] - ], - [ - [ - 541, - 541 - ], - "valid" - ], - [ - [ - 542, - 542 - ], - "mapped", - [ - 543 - ] - ], - [ - [ - 543, - 543 - ], - "valid" - ], - [ - [ - 544, - 544 - ], - "mapped", - [ - 414 - ] - ], - [ - [ - 545, - 545 - ], - "valid" - ], - [ - [ - 546, - 546 - ], - "mapped", - [ - 547 - ] - ], - [ - [ - 547, - 547 - ], - "valid" - ], - [ - [ - 548, - 548 - ], - "mapped", - [ - 549 - ] - ], - [ - [ - 549, - 549 - ], - "valid" - ], - [ - [ - 550, - 550 - ], - "mapped", - [ - 551 - ] - ], - [ - [ - 551, - 551 - ], - "valid" - ], - [ - [ - 552, - 552 - ], - "mapped", - [ - 553 - ] - ], - [ - [ - 553, - 553 - ], - "valid" - ], - [ - [ - 554, - 554 - ], - "mapped", - [ - 555 - ] - ], - [ - [ - 555, - 555 - ], - "valid" - ], - [ - [ - 556, - 556 - ], - "mapped", - [ - 557 - ] - ], - [ - [ - 557, - 557 - ], - "valid" - ], - [ - [ - 558, - 558 - ], - "mapped", - [ - 559 - ] - ], - [ - [ - 559, - 559 - ], - "valid" - ], - [ - [ - 560, - 560 - ], - "mapped", - [ - 561 - ] - ], - [ - [ - 561, - 561 - ], - "valid" - ], - [ - [ - 562, - 562 - ], - "mapped", - [ - 563 - ] - ], - [ - [ - 563, - 563 - ], - "valid" - ], - [ - [ - 564, - 566 - ], - "valid" - ], - [ - [ - 567, - 569 - ], - "valid" - ], - [ - [ - 570, - 570 - ], - "mapped", - [ - 11365 - ] - ], - [ - [ - 571, - 571 - ], - "mapped", - [ - 572 - ] - ], - [ - [ - 572, - 572 - ], - "valid" - ], - [ - [ - 573, - 573 - ], - "mapped", - [ - 410 - ] - ], - [ - [ - 574, - 574 - ], - "mapped", - [ - 11366 - ] - ], - [ - [ - 575, - 576 - ], - "valid" - ], - [ - [ - 577, - 577 - ], - "mapped", - [ - 578 - ] - ], - [ - [ - 578, - 578 - ], - "valid" - ], - [ - [ - 579, - 579 - ], - "mapped", - [ - 384 - ] - ], - [ - [ - 580, - 580 - ], - "mapped", - [ - 649 - ] - ], - [ - [ - 581, - 581 - ], - "mapped", - [ - 652 - ] - ], - [ - [ - 582, - 582 - ], - "mapped", - [ - 583 - ] - ], - [ - [ - 583, - 583 - ], - "valid" - ], - [ - [ - 584, - 584 - ], - "mapped", - [ - 585 - ] - ], - [ - [ - 585, - 585 - ], - "valid" - ], - [ - [ - 586, - 586 - ], - "mapped", - [ - 587 - ] - ], - [ - [ - 587, - 587 - ], - "valid" - ], - [ - [ - 588, - 588 - ], - "mapped", - [ - 589 - ] - ], - [ - [ - 589, - 589 - ], - "valid" - ], - [ - [ - 590, - 590 - ], - "mapped", - [ - 591 - ] - ], - [ - [ - 591, - 591 - ], - "valid" - ], - [ - [ - 592, - 680 - ], - "valid" - ], - [ - [ - 681, - 685 - ], - "valid" - ], - [ - [ - 686, - 687 - ], - "valid" - ], - [ - [ - 688, - 688 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 689, - 689 - ], - "mapped", - [ - 614 - ] - ], - [ - [ - 690, - 690 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 691, - 691 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 692, - 692 - ], - "mapped", - [ - 633 - ] - ], - [ - [ - 693, - 693 - ], - "mapped", - [ - 635 - ] - ], - [ - [ - 694, - 694 - ], - "mapped", - [ - 641 - ] - ], - [ - [ - 695, - 695 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 696, - 696 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 697, - 705 - ], - "valid" - ], - [ - [ - 706, - 709 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 710, - 721 - ], - "valid" - ], - [ - [ - 722, - 727 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 728, - 728 - ], - "disallowed_STD3_mapped", - [ - 32, - 774 - ] - ], - [ - [ - 729, - 729 - ], - "disallowed_STD3_mapped", - [ - 32, - 775 - ] - ], - [ - [ - 730, - 730 - ], - "disallowed_STD3_mapped", - [ - 32, - 778 - ] - ], - [ - [ - 731, - 731 - ], - "disallowed_STD3_mapped", - [ - 32, - 808 - ] - ], - [ - [ - 732, - 732 - ], - "disallowed_STD3_mapped", - [ - 32, - 771 - ] - ], - [ - [ - 733, - 733 - ], - "disallowed_STD3_mapped", - [ - 32, - 779 - ] - ], - [ - [ - 734, - 734 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 735, - 735 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 736, - 736 - ], - "mapped", - [ - 611 - ] - ], - [ - [ - 737, - 737 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 738, - 738 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 739, - 739 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 740, - 740 - ], - "mapped", - [ - 661 - ] - ], - [ - [ - 741, - 745 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 746, - 747 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 748, - 748 - ], - "valid" - ], - [ - [ - 749, - 749 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 750, - 750 - ], - "valid" - ], - [ - [ - 751, - 767 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 768, - 831 - ], - "valid" - ], - [ - [ - 832, - 832 - ], - "mapped", - [ - 768 - ] - ], - [ - [ - 833, - 833 - ], - "mapped", - [ - 769 - ] - ], - [ - [ - 834, - 834 - ], - "valid" - ], - [ - [ - 835, - 835 - ], - "mapped", - [ - 787 - ] - ], - [ - [ - 836, - 836 - ], - "mapped", - [ - 776, - 769 - ] - ], - [ - [ - 837, - 837 - ], - "mapped", - [ - 953 - ] - ], - [ - [ - 838, - 846 - ], - "valid" - ], - [ - [ - 847, - 847 - ], - "ignored" - ], - [ - [ - 848, - 855 - ], - "valid" - ], - [ - [ - 856, - 860 - ], - "valid" - ], - [ - [ - 861, - 863 - ], - "valid" - ], - [ - [ - 864, - 865 - ], - "valid" - ], - [ - [ - 866, - 866 - ], - "valid" - ], - [ - [ - 867, - 879 - ], - "valid" - ], - [ - [ - 880, - 880 - ], - "mapped", - [ - 881 - ] - ], - [ - [ - 881, - 881 - ], - "valid" - ], - [ - [ - 882, - 882 - ], - "mapped", - [ - 883 - ] - ], - [ - [ - 883, - 883 - ], - "valid" - ], - [ - [ - 884, - 884 - ], - "mapped", - [ - 697 - ] - ], - [ - [ - 885, - 885 - ], - "valid" - ], - [ - [ - 886, - 886 - ], - "mapped", - [ - 887 - ] - ], - [ - [ - 887, - 887 - ], - "valid" - ], - [ - [ - 888, - 889 - ], - "disallowed" - ], - [ - [ - 890, - 890 - ], - "disallowed_STD3_mapped", - [ - 32, - 953 - ] - ], - [ - [ - 891, - 893 - ], - "valid" - ], - [ - [ - 894, - 894 - ], - "disallowed_STD3_mapped", - [ - 59 - ] - ], - [ - [ - 895, - 895 - ], - "mapped", - [ - 1011 - ] - ], - [ - [ - 896, - 899 - ], - "disallowed" - ], - [ - [ - 900, - 900 - ], - "disallowed_STD3_mapped", - [ - 32, - 769 - ] - ], - [ - [ - 901, - 901 - ], - "disallowed_STD3_mapped", - [ - 32, - 776, - 769 - ] - ], - [ - [ - 902, - 902 - ], - "mapped", - [ - 940 - ] - ], - [ - [ - 903, - 903 - ], - "mapped", - [ - 183 - ] - ], - [ - [ - 904, - 904 - ], - "mapped", - [ - 941 - ] - ], - [ - [ - 905, - 905 - ], - "mapped", - [ - 942 - ] - ], - [ - [ - 906, - 906 - ], - "mapped", - [ - 943 - ] - ], - [ - [ - 907, - 907 - ], - "disallowed" - ], - [ - [ - 908, - 908 - ], - "mapped", - [ - 972 - ] - ], - [ - [ - 909, - 909 - ], - "disallowed" - ], - [ - [ - 910, - 910 - ], - "mapped", - [ - 973 - ] - ], - [ - [ - 911, - 911 - ], - "mapped", - [ - 974 - ] - ], - [ - [ - 912, - 912 - ], - "valid" - ], - [ - [ - 913, - 913 - ], - "mapped", - [ - 945 - ] - ], - [ - [ - 914, - 914 - ], - "mapped", - [ - 946 - ] - ], - [ - [ - 915, - 915 - ], - "mapped", - [ - 947 - ] - ], - [ - [ - 916, - 916 - ], - "mapped", - [ - 948 - ] - ], - [ - [ - 917, - 917 - ], - "mapped", - [ - 949 - ] - ], - [ - [ - 918, - 918 - ], - "mapped", - [ - 950 - ] - ], - [ - [ - 919, - 919 - ], - "mapped", - [ - 951 - ] - ], - [ - [ - 920, - 920 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 921, - 921 - ], - "mapped", - [ - 953 - ] - ], - [ - [ - 922, - 922 - ], - "mapped", - [ - 954 - ] - ], - [ - [ - 923, - 923 - ], - "mapped", - [ - 955 - ] - ], - [ - [ - 924, - 924 - ], - "mapped", - [ - 956 - ] - ], - [ - [ - 925, - 925 - ], - "mapped", - [ - 957 - ] - ], - [ - [ - 926, - 926 - ], - "mapped", - [ - 958 - ] - ], - [ - [ - 927, - 927 - ], - "mapped", - [ - 959 - ] - ], - [ - [ - 928, - 928 - ], - "mapped", - [ - 960 - ] - ], - [ - [ - 929, - 929 - ], - "mapped", - [ - 961 - ] - ], - [ - [ - 930, - 930 - ], - "disallowed" - ], - [ - [ - 931, - 931 - ], - "mapped", - [ - 963 - ] - ], - [ - [ - 932, - 932 - ], - "mapped", - [ - 964 - ] - ], - [ - [ - 933, - 933 - ], - "mapped", - [ - 965 - ] - ], - [ - [ - 934, - 934 - ], - "mapped", - [ - 966 - ] - ], - [ - [ - 935, - 935 - ], - "mapped", - [ - 967 - ] - ], - [ - [ - 936, - 936 - ], - "mapped", - [ - 968 - ] - ], - [ - [ - 937, - 937 - ], - "mapped", - [ - 969 - ] - ], - [ - [ - 938, - 938 - ], - "mapped", - [ - 970 - ] - ], - [ - [ - 939, - 939 - ], - "mapped", - [ - 971 - ] - ], - [ - [ - 940, - 961 - ], - "valid" - ], - [ - [ - 962, - 962 - ], - "deviation", - [ - 963 - ] - ], - [ - [ - 963, - 974 - ], - "valid" - ], - [ - [ - 975, - 975 - ], - "mapped", - [ - 983 - ] - ], - [ - [ - 976, - 976 - ], - "mapped", - [ - 946 - ] - ], - [ - [ - 977, - 977 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 978, - 978 - ], - "mapped", - [ - 965 - ] - ], - [ - [ - 979, - 979 - ], - "mapped", - [ - 973 - ] - ], - [ - [ - 980, - 980 - ], - "mapped", - [ - 971 - ] - ], - [ - [ - 981, - 981 - ], - "mapped", - [ - 966 - ] - ], - [ - [ - 982, - 982 - ], - "mapped", - [ - 960 - ] - ], - [ - [ - 983, - 983 - ], - "valid" - ], - [ - [ - 984, - 984 - ], - "mapped", - [ - 985 - ] - ], - [ - [ - 985, - 985 - ], - "valid" - ], - [ - [ - 986, - 986 - ], - "mapped", - [ - 987 - ] - ], - [ - [ - 987, - 987 - ], - "valid" - ], - [ - [ - 988, - 988 - ], - "mapped", - [ - 989 - ] - ], - [ - [ - 989, - 989 - ], - "valid" - ], - [ - [ - 990, - 990 - ], - "mapped", - [ - 991 - ] - ], - [ - [ - 991, - 991 - ], - "valid" - ], - [ - [ - 992, - 992 - ], - "mapped", - [ - 993 - ] - ], - [ - [ - 993, - 993 - ], - "valid" - ], - [ - [ - 994, - 994 - ], - "mapped", - [ - 995 - ] - ], - [ - [ - 995, - 995 - ], - "valid" - ], - [ - [ - 996, - 996 - ], - "mapped", - [ - 997 - ] - ], - [ - [ - 997, - 997 - ], - "valid" - ], - [ - [ - 998, - 998 - ], - "mapped", - [ - 999 - ] - ], - [ - [ - 999, - 999 - ], - "valid" - ], - [ - [ - 1000, - 1000 - ], - "mapped", - [ - 1001 - ] - ], - [ - [ - 1001, - 1001 - ], - "valid" - ], - [ - [ - 1002, - 1002 - ], - "mapped", - [ - 1003 - ] - ], - [ - [ - 1003, - 1003 - ], - "valid" - ], - [ - [ - 1004, - 1004 - ], - "mapped", - [ - 1005 - ] - ], - [ - [ - 1005, - 1005 - ], - "valid" - ], - [ - [ - 1006, - 1006 - ], - "mapped", - [ - 1007 - ] - ], - [ - [ - 1007, - 1007 - ], - "valid" - ], - [ - [ - 1008, - 1008 - ], - "mapped", - [ - 954 - ] - ], - [ - [ - 1009, - 1009 - ], - "mapped", - [ - 961 - ] - ], - [ - [ - 1010, - 1010 - ], - "mapped", - [ - 963 - ] - ], - [ - [ - 1011, - 1011 - ], - "valid" - ], - [ - [ - 1012, - 1012 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 1013, - 1013 - ], - "mapped", - [ - 949 - ] - ], - [ - [ - 1014, - 1014 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1015, - 1015 - ], - "mapped", - [ - 1016 - ] - ], - [ - [ - 1016, - 1016 - ], - "valid" - ], - [ - [ - 1017, - 1017 - ], - "mapped", - [ - 963 - ] - ], - [ - [ - 1018, - 1018 - ], - "mapped", - [ - 1019 - ] - ], - [ - [ - 1019, - 1019 - ], - "valid" - ], - [ - [ - 1020, - 1020 - ], - "valid" - ], - [ - [ - 1021, - 1021 - ], - "mapped", - [ - 891 - ] - ], - [ - [ - 1022, - 1022 - ], - "mapped", - [ - 892 - ] - ], - [ - [ - 1023, - 1023 - ], - "mapped", - [ - 893 - ] - ], - [ - [ - 1024, - 1024 - ], - "mapped", - [ - 1104 - ] - ], - [ - [ - 1025, - 1025 - ], - "mapped", - [ - 1105 - ] - ], - [ - [ - 1026, - 1026 - ], - "mapped", - [ - 1106 - ] - ], - [ - [ - 1027, - 1027 - ], - "mapped", - [ - 1107 - ] - ], - [ - [ - 1028, - 1028 - ], - "mapped", - [ - 1108 - ] - ], - [ - [ - 1029, - 1029 - ], - "mapped", - [ - 1109 - ] - ], - [ - [ - 1030, - 1030 - ], - "mapped", - [ - 1110 - ] - ], - [ - [ - 1031, - 1031 - ], - "mapped", - [ - 1111 - ] - ], - [ - [ - 1032, - 1032 - ], - "mapped", - [ - 1112 - ] - ], - [ - [ - 1033, - 1033 - ], - "mapped", - [ - 1113 - ] - ], - [ - [ - 1034, - 1034 - ], - "mapped", - [ - 1114 - ] - ], - [ - [ - 1035, - 1035 - ], - "mapped", - [ - 1115 - ] - ], - [ - [ - 1036, - 1036 - ], - "mapped", - [ - 1116 - ] - ], - [ - [ - 1037, - 1037 - ], - "mapped", - [ - 1117 - ] - ], - [ - [ - 1038, - 1038 - ], - "mapped", - [ - 1118 - ] - ], - [ - [ - 1039, - 1039 - ], - "mapped", - [ - 1119 - ] - ], - [ - [ - 1040, - 1040 - ], - "mapped", - [ - 1072 - ] - ], - [ - [ - 1041, - 1041 - ], - "mapped", - [ - 1073 - ] - ], - [ - [ - 1042, - 1042 - ], - "mapped", - [ - 1074 - ] - ], - [ - [ - 1043, - 1043 - ], - "mapped", - [ - 1075 - ] - ], - [ - [ - 1044, - 1044 - ], - "mapped", - [ - 1076 - ] - ], - [ - [ - 1045, - 1045 - ], - "mapped", - [ - 1077 - ] - ], - [ - [ - 1046, - 1046 - ], - "mapped", - [ - 1078 - ] - ], - [ - [ - 1047, - 1047 - ], - "mapped", - [ - 1079 - ] - ], - [ - [ - 1048, - 1048 - ], - "mapped", - [ - 1080 - ] - ], - [ - [ - 1049, - 1049 - ], - "mapped", - [ - 1081 - ] - ], - [ - [ - 1050, - 1050 - ], - "mapped", - [ - 1082 - ] - ], - [ - [ - 1051, - 1051 - ], - "mapped", - [ - 1083 - ] - ], - [ - [ - 1052, - 1052 - ], - "mapped", - [ - 1084 - ] - ], - [ - [ - 1053, - 1053 - ], - "mapped", - [ - 1085 - ] - ], - [ - [ - 1054, - 1054 - ], - "mapped", - [ - 1086 - ] - ], - [ - [ - 1055, - 1055 - ], - "mapped", - [ - 1087 - ] - ], - [ - [ - 1056, - 1056 - ], - "mapped", - [ - 1088 - ] - ], - [ - [ - 1057, - 1057 - ], - "mapped", - [ - 1089 - ] - ], - [ - [ - 1058, - 1058 - ], - "mapped", - [ - 1090 - ] - ], - [ - [ - 1059, - 1059 - ], - "mapped", - [ - 1091 - ] - ], - [ - [ - 1060, - 1060 - ], - "mapped", - [ - 1092 - ] - ], - [ - [ - 1061, - 1061 - ], - "mapped", - [ - 1093 - ] - ], - [ - [ - 1062, - 1062 - ], - "mapped", - [ - 1094 - ] - ], - [ - [ - 1063, - 1063 - ], - "mapped", - [ - 1095 - ] - ], - [ - [ - 1064, - 1064 - ], - "mapped", - [ - 1096 - ] - ], - [ - [ - 1065, - 1065 - ], - "mapped", - [ - 1097 - ] - ], - [ - [ - 1066, - 1066 - ], - "mapped", - [ - 1098 - ] - ], - [ - [ - 1067, - 1067 - ], - "mapped", - [ - 1099 - ] - ], - [ - [ - 1068, - 1068 - ], - "mapped", - [ - 1100 - ] - ], - [ - [ - 1069, - 1069 - ], - "mapped", - [ - 1101 - ] - ], - [ - [ - 1070, - 1070 - ], - "mapped", - [ - 1102 - ] - ], - [ - [ - 1071, - 1071 - ], - "mapped", - [ - 1103 - ] - ], - [ - [ - 1072, - 1103 - ], - "valid" - ], - [ - [ - 1104, - 1104 - ], - "valid" - ], - [ - [ - 1105, - 1116 - ], - "valid" - ], - [ - [ - 1117, - 1117 - ], - "valid" - ], - [ - [ - 1118, - 1119 - ], - "valid" - ], - [ - [ - 1120, - 1120 - ], - "mapped", - [ - 1121 - ] - ], - [ - [ - 1121, - 1121 - ], - "valid" - ], - [ - [ - 1122, - 1122 - ], - "mapped", - [ - 1123 - ] - ], - [ - [ - 1123, - 1123 - ], - "valid" - ], - [ - [ - 1124, - 1124 - ], - "mapped", - [ - 1125 - ] - ], - [ - [ - 1125, - 1125 - ], - "valid" - ], - [ - [ - 1126, - 1126 - ], - "mapped", - [ - 1127 - ] - ], - [ - [ - 1127, - 1127 - ], - "valid" - ], - [ - [ - 1128, - 1128 - ], - "mapped", - [ - 1129 - ] - ], - [ - [ - 1129, - 1129 - ], - "valid" - ], - [ - [ - 1130, - 1130 - ], - "mapped", - [ - 1131 - ] - ], - [ - [ - 1131, - 1131 - ], - "valid" - ], - [ - [ - 1132, - 1132 - ], - "mapped", - [ - 1133 - ] - ], - [ - [ - 1133, - 1133 - ], - "valid" - ], - [ - [ - 1134, - 1134 - ], - "mapped", - [ - 1135 - ] - ], - [ - [ - 1135, - 1135 - ], - "valid" - ], - [ - [ - 1136, - 1136 - ], - "mapped", - [ - 1137 - ] - ], - [ - [ - 1137, - 1137 - ], - "valid" - ], - [ - [ - 1138, - 1138 - ], - "mapped", - [ - 1139 - ] - ], - [ - [ - 1139, - 1139 - ], - "valid" - ], - [ - [ - 1140, - 1140 - ], - "mapped", - [ - 1141 - ] - ], - [ - [ - 1141, - 1141 - ], - "valid" - ], - [ - [ - 1142, - 1142 - ], - "mapped", - [ - 1143 - ] - ], - [ - [ - 1143, - 1143 - ], - "valid" - ], - [ - [ - 1144, - 1144 - ], - "mapped", - [ - 1145 - ] - ], - [ - [ - 1145, - 1145 - ], - "valid" - ], - [ - [ - 1146, - 1146 - ], - "mapped", - [ - 1147 - ] - ], - [ - [ - 1147, - 1147 - ], - "valid" - ], - [ - [ - 1148, - 1148 - ], - "mapped", - [ - 1149 - ] - ], - [ - [ - 1149, - 1149 - ], - "valid" - ], - [ - [ - 1150, - 1150 - ], - "mapped", - [ - 1151 - ] - ], - [ - [ - 1151, - 1151 - ], - "valid" - ], - [ - [ - 1152, - 1152 - ], - "mapped", - [ - 1153 - ] - ], - [ - [ - 1153, - 1153 - ], - "valid" - ], - [ - [ - 1154, - 1154 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1155, - 1158 - ], - "valid" - ], - [ - [ - 1159, - 1159 - ], - "valid" - ], - [ - [ - 1160, - 1161 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1162, - 1162 - ], - "mapped", - [ - 1163 - ] - ], - [ - [ - 1163, - 1163 - ], - "valid" - ], - [ - [ - 1164, - 1164 - ], - "mapped", - [ - 1165 - ] - ], - [ - [ - 1165, - 1165 - ], - "valid" - ], - [ - [ - 1166, - 1166 - ], - "mapped", - [ - 1167 - ] - ], - [ - [ - 1167, - 1167 - ], - "valid" - ], - [ - [ - 1168, - 1168 - ], - "mapped", - [ - 1169 - ] - ], - [ - [ - 1169, - 1169 - ], - "valid" - ], - [ - [ - 1170, - 1170 - ], - "mapped", - [ - 1171 - ] - ], - [ - [ - 1171, - 1171 - ], - "valid" - ], - [ - [ - 1172, - 1172 - ], - "mapped", - [ - 1173 - ] - ], - [ - [ - 1173, - 1173 - ], - "valid" - ], - [ - [ - 1174, - 1174 - ], - "mapped", - [ - 1175 - ] - ], - [ - [ - 1175, - 1175 - ], - "valid" - ], - [ - [ - 1176, - 1176 - ], - "mapped", - [ - 1177 - ] - ], - [ - [ - 1177, - 1177 - ], - "valid" - ], - [ - [ - 1178, - 1178 - ], - "mapped", - [ - 1179 - ] - ], - [ - [ - 1179, - 1179 - ], - "valid" - ], - [ - [ - 1180, - 1180 - ], - "mapped", - [ - 1181 - ] - ], - [ - [ - 1181, - 1181 - ], - "valid" - ], - [ - [ - 1182, - 1182 - ], - "mapped", - [ - 1183 - ] - ], - [ - [ - 1183, - 1183 - ], - "valid" - ], - [ - [ - 1184, - 1184 - ], - "mapped", - [ - 1185 - ] - ], - [ - [ - 1185, - 1185 - ], - "valid" - ], - [ - [ - 1186, - 1186 - ], - "mapped", - [ - 1187 - ] - ], - [ - [ - 1187, - 1187 - ], - "valid" - ], - [ - [ - 1188, - 1188 - ], - "mapped", - [ - 1189 - ] - ], - [ - [ - 1189, - 1189 - ], - "valid" - ], - [ - [ - 1190, - 1190 - ], - "mapped", - [ - 1191 - ] - ], - [ - [ - 1191, - 1191 - ], - "valid" - ], - [ - [ - 1192, - 1192 - ], - "mapped", - [ - 1193 - ] - ], - [ - [ - 1193, - 1193 - ], - "valid" - ], - [ - [ - 1194, - 1194 - ], - "mapped", - [ - 1195 - ] - ], - [ - [ - 1195, - 1195 - ], - "valid" - ], - [ - [ - 1196, - 1196 - ], - "mapped", - [ - 1197 - ] - ], - [ - [ - 1197, - 1197 - ], - "valid" - ], - [ - [ - 1198, - 1198 - ], - "mapped", - [ - 1199 - ] - ], - [ - [ - 1199, - 1199 - ], - "valid" - ], - [ - [ - 1200, - 1200 - ], - "mapped", - [ - 1201 - ] - ], - [ - [ - 1201, - 1201 - ], - "valid" - ], - [ - [ - 1202, - 1202 - ], - "mapped", - [ - 1203 - ] - ], - [ - [ - 1203, - 1203 - ], - "valid" - ], - [ - [ - 1204, - 1204 - ], - "mapped", - [ - 1205 - ] - ], - [ - [ - 1205, - 1205 - ], - "valid" - ], - [ - [ - 1206, - 1206 - ], - "mapped", - [ - 1207 - ] - ], - [ - [ - 1207, - 1207 - ], - "valid" - ], - [ - [ - 1208, - 1208 - ], - "mapped", - [ - 1209 - ] - ], - [ - [ - 1209, - 1209 - ], - "valid" - ], - [ - [ - 1210, - 1210 - ], - "mapped", - [ - 1211 - ] - ], - [ - [ - 1211, - 1211 - ], - "valid" - ], - [ - [ - 1212, - 1212 - ], - "mapped", - [ - 1213 - ] - ], - [ - [ - 1213, - 1213 - ], - "valid" - ], - [ - [ - 1214, - 1214 - ], - "mapped", - [ - 1215 - ] - ], - [ - [ - 1215, - 1215 - ], - "valid" - ], - [ - [ - 1216, - 1216 - ], - "disallowed" - ], - [ - [ - 1217, - 1217 - ], - "mapped", - [ - 1218 - ] - ], - [ - [ - 1218, - 1218 - ], - "valid" - ], - [ - [ - 1219, - 1219 - ], - "mapped", - [ - 1220 - ] - ], - [ - [ - 1220, - 1220 - ], - "valid" - ], - [ - [ - 1221, - 1221 - ], - "mapped", - [ - 1222 - ] - ], - [ - [ - 1222, - 1222 - ], - "valid" - ], - [ - [ - 1223, - 1223 - ], - "mapped", - [ - 1224 - ] - ], - [ - [ - 1224, - 1224 - ], - "valid" - ], - [ - [ - 1225, - 1225 - ], - "mapped", - [ - 1226 - ] - ], - [ - [ - 1226, - 1226 - ], - "valid" - ], - [ - [ - 1227, - 1227 - ], - "mapped", - [ - 1228 - ] - ], - [ - [ - 1228, - 1228 - ], - "valid" - ], - [ - [ - 1229, - 1229 - ], - "mapped", - [ - 1230 - ] - ], - [ - [ - 1230, - 1230 - ], - "valid" - ], - [ - [ - 1231, - 1231 - ], - "valid" - ], - [ - [ - 1232, - 1232 - ], - "mapped", - [ - 1233 - ] - ], - [ - [ - 1233, - 1233 - ], - "valid" - ], - [ - [ - 1234, - 1234 - ], - "mapped", - [ - 1235 - ] - ], - [ - [ - 1235, - 1235 - ], - "valid" - ], - [ - [ - 1236, - 1236 - ], - "mapped", - [ - 1237 - ] - ], - [ - [ - 1237, - 1237 - ], - "valid" - ], - [ - [ - 1238, - 1238 - ], - "mapped", - [ - 1239 - ] - ], - [ - [ - 1239, - 1239 - ], - "valid" - ], - [ - [ - 1240, - 1240 - ], - "mapped", - [ - 1241 - ] - ], - [ - [ - 1241, - 1241 - ], - "valid" - ], - [ - [ - 1242, - 1242 - ], - "mapped", - [ - 1243 - ] - ], - [ - [ - 1243, - 1243 - ], - "valid" - ], - [ - [ - 1244, - 1244 - ], - "mapped", - [ - 1245 - ] - ], - [ - [ - 1245, - 1245 - ], - "valid" - ], - [ - [ - 1246, - 1246 - ], - "mapped", - [ - 1247 - ] - ], - [ - [ - 1247, - 1247 - ], - "valid" - ], - [ - [ - 1248, - 1248 - ], - "mapped", - [ - 1249 - ] - ], - [ - [ - 1249, - 1249 - ], - "valid" - ], - [ - [ - 1250, - 1250 - ], - "mapped", - [ - 1251 - ] - ], - [ - [ - 1251, - 1251 - ], - "valid" - ], - [ - [ - 1252, - 1252 - ], - "mapped", - [ - 1253 - ] - ], - [ - [ - 1253, - 1253 - ], - "valid" - ], - [ - [ - 1254, - 1254 - ], - "mapped", - [ - 1255 - ] - ], - [ - [ - 1255, - 1255 - ], - "valid" - ], - [ - [ - 1256, - 1256 - ], - "mapped", - [ - 1257 - ] - ], - [ - [ - 1257, - 1257 - ], - "valid" - ], - [ - [ - 1258, - 1258 - ], - "mapped", - [ - 1259 - ] - ], - [ - [ - 1259, - 1259 - ], - "valid" - ], - [ - [ - 1260, - 1260 - ], - "mapped", - [ - 1261 - ] - ], - [ - [ - 1261, - 1261 - ], - "valid" - ], - [ - [ - 1262, - 1262 - ], - "mapped", - [ - 1263 - ] - ], - [ - [ - 1263, - 1263 - ], - "valid" - ], - [ - [ - 1264, - 1264 - ], - "mapped", - [ - 1265 - ] - ], - [ - [ - 1265, - 1265 - ], - "valid" - ], - [ - [ - 1266, - 1266 - ], - "mapped", - [ - 1267 - ] - ], - [ - [ - 1267, - 1267 - ], - "valid" - ], - [ - [ - 1268, - 1268 - ], - "mapped", - [ - 1269 - ] - ], - [ - [ - 1269, - 1269 - ], - "valid" - ], - [ - [ - 1270, - 1270 - ], - "mapped", - [ - 1271 - ] - ], - [ - [ - 1271, - 1271 - ], - "valid" - ], - [ - [ - 1272, - 1272 - ], - "mapped", - [ - 1273 - ] - ], - [ - [ - 1273, - 1273 - ], - "valid" - ], - [ - [ - 1274, - 1274 - ], - "mapped", - [ - 1275 - ] - ], - [ - [ - 1275, - 1275 - ], - "valid" - ], - [ - [ - 1276, - 1276 - ], - "mapped", - [ - 1277 - ] - ], - [ - [ - 1277, - 1277 - ], - "valid" - ], - [ - [ - 1278, - 1278 - ], - "mapped", - [ - 1279 - ] - ], - [ - [ - 1279, - 1279 - ], - "valid" - ], - [ - [ - 1280, - 1280 - ], - "mapped", - [ - 1281 - ] - ], - [ - [ - 1281, - 1281 - ], - "valid" - ], - [ - [ - 1282, - 1282 - ], - "mapped", - [ - 1283 - ] - ], - [ - [ - 1283, - 1283 - ], - "valid" - ], - [ - [ - 1284, - 1284 - ], - "mapped", - [ - 1285 - ] - ], - [ - [ - 1285, - 1285 - ], - "valid" - ], - [ - [ - 1286, - 1286 - ], - "mapped", - [ - 1287 - ] - ], - [ - [ - 1287, - 1287 - ], - "valid" - ], - [ - [ - 1288, - 1288 - ], - "mapped", - [ - 1289 - ] - ], - [ - [ - 1289, - 1289 - ], - "valid" - ], - [ - [ - 1290, - 1290 - ], - "mapped", - [ - 1291 - ] - ], - [ - [ - 1291, - 1291 - ], - "valid" - ], - [ - [ - 1292, - 1292 - ], - "mapped", - [ - 1293 - ] - ], - [ - [ - 1293, - 1293 - ], - "valid" - ], - [ - [ - 1294, - 1294 - ], - "mapped", - [ - 1295 - ] - ], - [ - [ - 1295, - 1295 - ], - "valid" - ], - [ - [ - 1296, - 1296 - ], - "mapped", - [ - 1297 - ] - ], - [ - [ - 1297, - 1297 - ], - "valid" - ], - [ - [ - 1298, - 1298 - ], - "mapped", - [ - 1299 - ] - ], - [ - [ - 1299, - 1299 - ], - "valid" - ], - [ - [ - 1300, - 1300 - ], - "mapped", - [ - 1301 - ] - ], - [ - [ - 1301, - 1301 - ], - "valid" - ], - [ - [ - 1302, - 1302 - ], - "mapped", - [ - 1303 - ] - ], - [ - [ - 1303, - 1303 - ], - "valid" - ], - [ - [ - 1304, - 1304 - ], - "mapped", - [ - 1305 - ] - ], - [ - [ - 1305, - 1305 - ], - "valid" - ], - [ - [ - 1306, - 1306 - ], - "mapped", - [ - 1307 - ] - ], - [ - [ - 1307, - 1307 - ], - "valid" - ], - [ - [ - 1308, - 1308 - ], - "mapped", - [ - 1309 - ] - ], - [ - [ - 1309, - 1309 - ], - "valid" - ], - [ - [ - 1310, - 1310 - ], - "mapped", - [ - 1311 - ] - ], - [ - [ - 1311, - 1311 - ], - "valid" - ], - [ - [ - 1312, - 1312 - ], - "mapped", - [ - 1313 - ] - ], - [ - [ - 1313, - 1313 - ], - "valid" - ], - [ - [ - 1314, - 1314 - ], - "mapped", - [ - 1315 - ] - ], - [ - [ - 1315, - 1315 - ], - "valid" - ], - [ - [ - 1316, - 1316 - ], - "mapped", - [ - 1317 - ] - ], - [ - [ - 1317, - 1317 - ], - "valid" - ], - [ - [ - 1318, - 1318 - ], - "mapped", - [ - 1319 - ] - ], - [ - [ - 1319, - 1319 - ], - "valid" - ], - [ - [ - 1320, - 1320 - ], - "mapped", - [ - 1321 - ] - ], - [ - [ - 1321, - 1321 - ], - "valid" - ], - [ - [ - 1322, - 1322 - ], - "mapped", - [ - 1323 - ] - ], - [ - [ - 1323, - 1323 - ], - "valid" - ], - [ - [ - 1324, - 1324 - ], - "mapped", - [ - 1325 - ] - ], - [ - [ - 1325, - 1325 - ], - "valid" - ], - [ - [ - 1326, - 1326 - ], - "mapped", - [ - 1327 - ] - ], - [ - [ - 1327, - 1327 - ], - "valid" - ], - [ - [ - 1328, - 1328 - ], - "disallowed" - ], - [ - [ - 1329, - 1329 - ], - "mapped", - [ - 1377 - ] - ], - [ - [ - 1330, - 1330 - ], - "mapped", - [ - 1378 - ] - ], - [ - [ - 1331, - 1331 - ], - "mapped", - [ - 1379 - ] - ], - [ - [ - 1332, - 1332 - ], - "mapped", - [ - 1380 - ] - ], - [ - [ - 1333, - 1333 - ], - "mapped", - [ - 1381 - ] - ], - [ - [ - 1334, - 1334 - ], - "mapped", - [ - 1382 - ] - ], - [ - [ - 1335, - 1335 - ], - "mapped", - [ - 1383 - ] - ], - [ - [ - 1336, - 1336 - ], - "mapped", - [ - 1384 - ] - ], - [ - [ - 1337, - 1337 - ], - "mapped", - [ - 1385 - ] - ], - [ - [ - 1338, - 1338 - ], - "mapped", - [ - 1386 - ] - ], - [ - [ - 1339, - 1339 - ], - "mapped", - [ - 1387 - ] - ], - [ - [ - 1340, - 1340 - ], - "mapped", - [ - 1388 - ] - ], - [ - [ - 1341, - 1341 - ], - "mapped", - [ - 1389 - ] - ], - [ - [ - 1342, - 1342 - ], - "mapped", - [ - 1390 - ] - ], - [ - [ - 1343, - 1343 - ], - "mapped", - [ - 1391 - ] - ], - [ - [ - 1344, - 1344 - ], - "mapped", - [ - 1392 - ] - ], - [ - [ - 1345, - 1345 - ], - "mapped", - [ - 1393 - ] - ], - [ - [ - 1346, - 1346 - ], - "mapped", - [ - 1394 - ] - ], - [ - [ - 1347, - 1347 - ], - "mapped", - [ - 1395 - ] - ], - [ - [ - 1348, - 1348 - ], - "mapped", - [ - 1396 - ] - ], - [ - [ - 1349, - 1349 - ], - "mapped", - [ - 1397 - ] - ], - [ - [ - 1350, - 1350 - ], - "mapped", - [ - 1398 - ] - ], - [ - [ - 1351, - 1351 - ], - "mapped", - [ - 1399 - ] - ], - [ - [ - 1352, - 1352 - ], - "mapped", - [ - 1400 - ] - ], - [ - [ - 1353, - 1353 - ], - "mapped", - [ - 1401 - ] - ], - [ - [ - 1354, - 1354 - ], - "mapped", - [ - 1402 - ] - ], - [ - [ - 1355, - 1355 - ], - "mapped", - [ - 1403 - ] - ], - [ - [ - 1356, - 1356 - ], - "mapped", - [ - 1404 - ] - ], - [ - [ - 1357, - 1357 - ], - "mapped", - [ - 1405 - ] - ], - [ - [ - 1358, - 1358 - ], - "mapped", - [ - 1406 - ] - ], - [ - [ - 1359, - 1359 - ], - "mapped", - [ - 1407 - ] - ], - [ - [ - 1360, - 1360 - ], - "mapped", - [ - 1408 - ] - ], - [ - [ - 1361, - 1361 - ], - "mapped", - [ - 1409 - ] - ], - [ - [ - 1362, - 1362 - ], - "mapped", - [ - 1410 - ] - ], - [ - [ - 1363, - 1363 - ], - "mapped", - [ - 1411 - ] - ], - [ - [ - 1364, - 1364 - ], - "mapped", - [ - 1412 - ] - ], - [ - [ - 1365, - 1365 - ], - "mapped", - [ - 1413 - ] - ], - [ - [ - 1366, - 1366 - ], - "mapped", - [ - 1414 - ] - ], - [ - [ - 1367, - 1368 - ], - "disallowed" - ], - [ - [ - 1369, - 1369 - ], - "valid" - ], - [ - [ - 1370, - 1375 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1376, - 1376 - ], - "disallowed" - ], - [ - [ - 1377, - 1414 - ], - "valid" - ], - [ - [ - 1415, - 1415 - ], - "mapped", - [ - 1381, - 1410 - ] - ], - [ - [ - 1416, - 1416 - ], - "disallowed" - ], - [ - [ - 1417, - 1417 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1418, - 1418 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1419, - 1420 - ], - "disallowed" - ], - [ - [ - 1421, - 1422 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1423, - 1423 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1424, - 1424 - ], - "disallowed" - ], - [ - [ - 1425, - 1441 - ], - "valid" - ], - [ - [ - 1442, - 1442 - ], - "valid" - ], - [ - [ - 1443, - 1455 - ], - "valid" - ], - [ - [ - 1456, - 1465 - ], - "valid" - ], - [ - [ - 1466, - 1466 - ], - "valid" - ], - [ - [ - 1467, - 1469 - ], - "valid" - ], - [ - [ - 1470, - 1470 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1471, - 1471 - ], - "valid" - ], - [ - [ - 1472, - 1472 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1473, - 1474 - ], - "valid" - ], - [ - [ - 1475, - 1475 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1476, - 1476 - ], - "valid" - ], - [ - [ - 1477, - 1477 - ], - "valid" - ], - [ - [ - 1478, - 1478 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1479, - 1479 - ], - "valid" - ], - [ - [ - 1480, - 1487 - ], - "disallowed" - ], - [ - [ - 1488, - 1514 - ], - "valid" - ], - [ - [ - 1515, - 1519 - ], - "disallowed" - ], - [ - [ - 1520, - 1524 - ], - "valid" - ], - [ - [ - 1525, - 1535 - ], - "disallowed" - ], - [ - [ - 1536, - 1539 - ], - "disallowed" - ], - [ - [ - 1540, - 1540 - ], - "disallowed" - ], - [ - [ - 1541, - 1541 - ], - "disallowed" - ], - [ - [ - 1542, - 1546 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1547, - 1547 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1548, - 1548 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1549, - 1551 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1552, - 1557 - ], - "valid" - ], - [ - [ - 1558, - 1562 - ], - "valid" - ], - [ - [ - 1563, - 1563 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1564, - 1564 - ], - "disallowed" - ], - [ - [ - 1565, - 1565 - ], - "disallowed" - ], - [ - [ - 1566, - 1566 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1567, - 1567 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1568, - 1568 - ], - "valid" - ], - [ - [ - 1569, - 1594 - ], - "valid" - ], - [ - [ - 1595, - 1599 - ], - "valid" - ], - [ - [ - 1600, - 1600 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1601, - 1618 - ], - "valid" - ], - [ - [ - 1619, - 1621 - ], - "valid" - ], - [ - [ - 1622, - 1624 - ], - "valid" - ], - [ - [ - 1625, - 1630 - ], - "valid" - ], - [ - [ - 1631, - 1631 - ], - "valid" - ], - [ - [ - 1632, - 1641 - ], - "valid" - ], - [ - [ - 1642, - 1645 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1646, - 1647 - ], - "valid" - ], - [ - [ - 1648, - 1652 - ], - "valid" - ], - [ - [ - 1653, - 1653 - ], - "mapped", - [ - 1575, - 1652 - ] - ], - [ - [ - 1654, - 1654 - ], - "mapped", - [ - 1608, - 1652 - ] - ], - [ - [ - 1655, - 1655 - ], - "mapped", - [ - 1735, - 1652 - ] - ], - [ - [ - 1656, - 1656 - ], - "mapped", - [ - 1610, - 1652 - ] - ], - [ - [ - 1657, - 1719 - ], - "valid" - ], - [ - [ - 1720, - 1721 - ], - "valid" - ], - [ - [ - 1722, - 1726 - ], - "valid" - ], - [ - [ - 1727, - 1727 - ], - "valid" - ], - [ - [ - 1728, - 1742 - ], - "valid" - ], - [ - [ - 1743, - 1743 - ], - "valid" - ], - [ - [ - 1744, - 1747 - ], - "valid" - ], - [ - [ - 1748, - 1748 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1749, - 1756 - ], - "valid" - ], - [ - [ - 1757, - 1757 - ], - "disallowed" - ], - [ - [ - 1758, - 1758 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1759, - 1768 - ], - "valid" - ], - [ - [ - 1769, - 1769 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1770, - 1773 - ], - "valid" - ], - [ - [ - 1774, - 1775 - ], - "valid" - ], - [ - [ - 1776, - 1785 - ], - "valid" - ], - [ - [ - 1786, - 1790 - ], - "valid" - ], - [ - [ - 1791, - 1791 - ], - "valid" - ], - [ - [ - 1792, - 1805 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1806, - 1806 - ], - "disallowed" - ], - [ - [ - 1807, - 1807 - ], - "disallowed" - ], - [ - [ - 1808, - 1836 - ], - "valid" - ], - [ - [ - 1837, - 1839 - ], - "valid" - ], - [ - [ - 1840, - 1866 - ], - "valid" - ], - [ - [ - 1867, - 1868 - ], - "disallowed" - ], - [ - [ - 1869, - 1871 - ], - "valid" - ], - [ - [ - 1872, - 1901 - ], - "valid" - ], - [ - [ - 1902, - 1919 - ], - "valid" - ], - [ - [ - 1920, - 1968 - ], - "valid" - ], - [ - [ - 1969, - 1969 - ], - "valid" - ], - [ - [ - 1970, - 1983 - ], - "disallowed" - ], - [ - [ - 1984, - 2037 - ], - "valid" - ], - [ - [ - 2038, - 2042 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 2043, - 2047 - ], - "disallowed" - ], - [ - [ - 2048, - 2093 - ], - "valid" - ], - [ - [ - 2094, - 2095 - ], - "disallowed" - ], - [ - [ - 2096, - 2110 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 2111, - 2111 - ], - "disallowed" - ], - [ - [ - 2112, - 2139 - ], - "valid" - ], - [ - [ - 2140, - 2141 - ], - "disallowed" - ], - [ - [ - 2142, - 2142 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 2143, - 2207 - ], - "disallowed" - ], - [ - [ - 2208, - 2208 - ], - "valid" - ], - [ - [ - 2209, - 2209 - ], - "valid" - ], - [ - [ - 2210, - 2220 - ], - "valid" - ], - [ - [ - 2221, - 2226 - ], - "valid" - ], - [ - [ - 2227, - 2228 - ], - "valid" - ], - [ - [ - 2229, - 2274 - ], - "disallowed" - ], - [ - [ - 2275, - 2275 - ], - "valid" - ], - [ - [ - 2276, - 2302 - ], - "valid" - ], - [ - [ - 2303, - 2303 - ], - "valid" - ], - [ - [ - 2304, - 2304 - ], - "valid" - ], - [ - [ - 2305, - 2307 - ], - "valid" - ], - [ - [ - 2308, - 2308 - ], - "valid" - ], - [ - [ - 2309, - 2361 - ], - "valid" - ], - [ - [ - 2362, - 2363 - ], - "valid" - ], - [ - [ - 2364, - 2381 - ], - "valid" - ], - [ - [ - 2382, - 2382 - ], - "valid" - ], - [ - [ - 2383, - 2383 - ], - "valid" - ], - [ - [ - 2384, - 2388 - ], - "valid" - ], - [ - [ - 2389, - 2389 - ], - "valid" - ], - [ - [ - 2390, - 2391 - ], - "valid" - ], - [ - [ - 2392, - 2392 - ], - "mapped", - [ - 2325, - 2364 - ] - ], - [ - [ - 2393, - 2393 - ], - "mapped", - [ - 2326, - 2364 - ] - ], - [ - [ - 2394, - 2394 - ], - "mapped", - [ - 2327, - 2364 - ] - ], - [ - [ - 2395, - 2395 - ], - "mapped", - [ - 2332, - 2364 - ] - ], - [ - [ - 2396, - 2396 - ], - "mapped", - [ - 2337, - 2364 - ] - ], - [ - [ - 2397, - 2397 - ], - "mapped", - [ - 2338, - 2364 - ] - ], - [ - [ - 2398, - 2398 - ], - "mapped", - [ - 2347, - 2364 - ] - ], - [ - [ - 2399, - 2399 - ], - "mapped", - [ - 2351, - 2364 - ] - ], - [ - [ - 2400, - 2403 - ], - "valid" - ], - [ - [ - 2404, - 2405 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 2406, - 2415 - ], - "valid" - ], - [ - [ - 2416, - 2416 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 2417, - 2418 - ], - "valid" - ], - [ - [ - 2419, - 2423 - ], - "valid" - ], - [ - [ - 2424, - 2424 - ], - "valid" - ], - [ - [ - 2425, - 2426 - ], - "valid" - ], - [ - [ - 2427, - 2428 - ], - "valid" - ], - [ - [ - 2429, - 2429 - ], - "valid" - ], - [ - [ - 2430, - 2431 - ], - "valid" - ], - [ - [ - 2432, - 2432 - ], - "valid" - ], - [ - [ - 2433, - 2435 - ], - "valid" - ], - [ - [ - 2436, - 2436 - ], - "disallowed" - ], - [ - [ - 2437, - 2444 - ], - "valid" - ], - [ - [ - 2445, - 2446 - ], - "disallowed" - ], - [ - [ - 2447, - 2448 - ], - "valid" - ], - [ - [ - 2449, - 2450 - ], - "disallowed" - ], - [ - [ - 2451, - 2472 - ], - "valid" - ], - [ - [ - 2473, - 2473 - ], - "disallowed" - ], - [ - [ - 2474, - 2480 - ], - "valid" - ], - [ - [ - 2481, - 2481 - ], - "disallowed" - ], - [ - [ - 2482, - 2482 - ], - "valid" - ], - [ - [ - 2483, - 2485 - ], - "disallowed" - ], - [ - [ - 2486, - 2489 - ], - "valid" - ], - [ - [ - 2490, - 2491 - ], - "disallowed" - ], - [ - [ - 2492, - 2492 - ], - "valid" - ], - [ - [ - 2493, - 2493 - ], - "valid" - ], - [ - [ - 2494, - 2500 - ], - "valid" - ], - [ - [ - 2501, - 2502 - ], - "disallowed" - ], - [ - [ - 2503, - 2504 - ], - "valid" - ], - [ - [ - 2505, - 2506 - ], - "disallowed" - ], - [ - [ - 2507, - 2509 - ], - "valid" - ], - [ - [ - 2510, - 2510 - ], - "valid" - ], - [ - [ - 2511, - 2518 - ], - "disallowed" - ], - [ - [ - 2519, - 2519 - ], - "valid" - ], - [ - [ - 2520, - 2523 - ], - "disallowed" - ], - [ - [ - 2524, - 2524 - ], - "mapped", - [ - 2465, - 2492 - ] - ], - [ - [ - 2525, - 2525 - ], - "mapped", - [ - 2466, - 2492 - ] - ], - [ - [ - 2526, - 2526 - ], - "disallowed" - ], - [ - [ - 2527, - 2527 - ], - "mapped", - [ - 2479, - 2492 - ] - ], - [ - [ - 2528, - 2531 - ], - "valid" - ], - [ - [ - 2532, - 2533 - ], - "disallowed" - ], - [ - [ - 2534, - 2545 - ], - "valid" - ], - [ - [ - 2546, - 2554 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 2555, - 2555 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 2556, - 2560 - ], - "disallowed" - ], - [ - [ - 2561, - 2561 - ], - "valid" - ], - [ - [ - 2562, - 2562 - ], - "valid" - ], - [ - [ - 2563, - 2563 - ], - "valid" - ], - [ - [ - 2564, - 2564 - ], - "disallowed" - ], - [ - [ - 2565, - 2570 - ], - "valid" - ], - [ - [ - 2571, - 2574 - ], - "disallowed" - ], - [ - [ - 2575, - 2576 - ], - "valid" - ], - [ - [ - 2577, - 2578 - ], - "disallowed" - ], - [ - [ - 2579, - 2600 - ], - "valid" - ], - [ - [ - 2601, - 2601 - ], - "disallowed" - ], - [ - [ - 2602, - 2608 - ], - "valid" - ], - [ - [ - 2609, - 2609 - ], - "disallowed" - ], - [ - [ - 2610, - 2610 - ], - "valid" - ], - [ - [ - 2611, - 2611 - ], - "mapped", - [ - 2610, - 2620 - ] - ], - [ - [ - 2612, - 2612 - ], - "disallowed" - ], - [ - [ - 2613, - 2613 - ], - "valid" - ], - [ - [ - 2614, - 2614 - ], - "mapped", - [ - 2616, - 2620 - ] - ], - [ - [ - 2615, - 2615 - ], - "disallowed" - ], - [ - [ - 2616, - 2617 - ], - "valid" - ], - [ - [ - 2618, - 2619 - ], - "disallowed" - ], - [ - [ - 2620, - 2620 - ], - "valid" - ], - [ - [ - 2621, - 2621 - ], - "disallowed" - ], - [ - [ - 2622, - 2626 - ], - "valid" - ], - [ - [ - 2627, - 2630 - ], - "disallowed" - ], - [ - [ - 2631, - 2632 - ], - "valid" - ], - [ - [ - 2633, - 2634 - ], - "disallowed" - ], - [ - [ - 2635, - 2637 - ], - "valid" - ], - [ - [ - 2638, - 2640 - ], - "disallowed" - ], - [ - [ - 2641, - 2641 - ], - "valid" - ], - [ - [ - 2642, - 2648 - ], - "disallowed" - ], - [ - [ - 2649, - 2649 - ], - "mapped", - [ - 2582, - 2620 - ] - ], - [ - [ - 2650, - 2650 - ], - "mapped", - [ - 2583, - 2620 - ] - ], - [ - [ - 2651, - 2651 - ], - "mapped", - [ - 2588, - 2620 - ] - ], - [ - [ - 2652, - 2652 - ], - "valid" - ], - [ - [ - 2653, - 2653 - ], - "disallowed" - ], - [ - [ - 2654, - 2654 - ], - "mapped", - [ - 2603, - 2620 - ] - ], - [ - [ - 2655, - 2661 - ], - "disallowed" - ], - [ - [ - 2662, - 2676 - ], - "valid" - ], - [ - [ - 2677, - 2677 - ], - "valid" - ], - [ - [ - 2678, - 2688 - ], - "disallowed" - ], - [ - [ - 2689, - 2691 - ], - "valid" - ], - [ - [ - 2692, - 2692 - ], - "disallowed" - ], - [ - [ - 2693, - 2699 - ], - "valid" - ], - [ - [ - 2700, - 2700 - ], - "valid" - ], - [ - [ - 2701, - 2701 - ], - "valid" - ], - [ - [ - 2702, - 2702 - ], - "disallowed" - ], - [ - [ - 2703, - 2705 - ], - "valid" - ], - [ - [ - 2706, - 2706 - ], - "disallowed" - ], - [ - [ - 2707, - 2728 - ], - "valid" - ], - [ - [ - 2729, - 2729 - ], - "disallowed" - ], - [ - [ - 2730, - 2736 - ], - "valid" - ], - [ - [ - 2737, - 2737 - ], - "disallowed" - ], - [ - [ - 2738, - 2739 - ], - "valid" - ], - [ - [ - 2740, - 2740 - ], - "disallowed" - ], - [ - [ - 2741, - 2745 - ], - "valid" - ], - [ - [ - 2746, - 2747 - ], - "disallowed" - ], - [ - [ - 2748, - 2757 - ], - "valid" - ], - [ - [ - 2758, - 2758 - ], - "disallowed" - ], - [ - [ - 2759, - 2761 - ], - "valid" - ], - [ - [ - 2762, - 2762 - ], - "disallowed" - ], - [ - [ - 2763, - 2765 - ], - "valid" - ], - [ - [ - 2766, - 2767 - ], - "disallowed" - ], - [ - [ - 2768, - 2768 - ], - "valid" - ], - [ - [ - 2769, - 2783 - ], - "disallowed" - ], - [ - [ - 2784, - 2784 - ], - "valid" - ], - [ - [ - 2785, - 2787 - ], - "valid" - ], - [ - [ - 2788, - 2789 - ], - "disallowed" - ], - [ - [ - 2790, - 2799 - ], - "valid" - ], - [ - [ - 2800, - 2800 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 2801, - 2801 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 2802, - 2808 - ], - "disallowed" - ], - [ - [ - 2809, - 2809 - ], - "valid" - ], - [ - [ - 2810, - 2816 - ], - "disallowed" - ], - [ - [ - 2817, - 2819 - ], - "valid" - ], - [ - [ - 2820, - 2820 - ], - "disallowed" - ], - [ - [ - 2821, - 2828 - ], - "valid" - ], - [ - [ - 2829, - 2830 - ], - "disallowed" - ], - [ - [ - 2831, - 2832 - ], - "valid" - ], - [ - [ - 2833, - 2834 - ], - "disallowed" - ], - [ - [ - 2835, - 2856 - ], - "valid" - ], - [ - [ - 2857, - 2857 - ], - "disallowed" - ], - [ - [ - 2858, - 2864 - ], - "valid" - ], - [ - [ - 2865, - 2865 - ], - "disallowed" - ], - [ - [ - 2866, - 2867 - ], - "valid" - ], - [ - [ - 2868, - 2868 - ], - "disallowed" - ], - [ - [ - 2869, - 2869 - ], - "valid" - ], - [ - [ - 2870, - 2873 - ], - "valid" - ], - [ - [ - 2874, - 2875 - ], - "disallowed" - ], - [ - [ - 2876, - 2883 - ], - "valid" - ], - [ - [ - 2884, - 2884 - ], - "valid" - ], - [ - [ - 2885, - 2886 - ], - "disallowed" - ], - [ - [ - 2887, - 2888 - ], - "valid" - ], - [ - [ - 2889, - 2890 - ], - "disallowed" - ], - [ - [ - 2891, - 2893 - ], - "valid" - ], - [ - [ - 2894, - 2901 - ], - "disallowed" - ], - [ - [ - 2902, - 2903 - ], - "valid" - ], - [ - [ - 2904, - 2907 - ], - "disallowed" - ], - [ - [ - 2908, - 2908 - ], - "mapped", - [ - 2849, - 2876 - ] - ], - [ - [ - 2909, - 2909 - ], - "mapped", - [ - 2850, - 2876 - ] - ], - [ - [ - 2910, - 2910 - ], - "disallowed" - ], - [ - [ - 2911, - 2913 - ], - "valid" - ], - [ - [ - 2914, - 2915 - ], - "valid" - ], - [ - [ - 2916, - 2917 - ], - "disallowed" - ], - [ - [ - 2918, - 2927 - ], - "valid" - ], - [ - [ - 2928, - 2928 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 2929, - 2929 - ], - "valid" - ], - [ - [ - 2930, - 2935 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 2936, - 2945 - ], - "disallowed" - ], - [ - [ - 2946, - 2947 - ], - "valid" - ], - [ - [ - 2948, - 2948 - ], - "disallowed" - ], - [ - [ - 2949, - 2954 - ], - "valid" - ], - [ - [ - 2955, - 2957 - ], - "disallowed" - ], - [ - [ - 2958, - 2960 - ], - "valid" - ], - [ - [ - 2961, - 2961 - ], - "disallowed" - ], - [ - [ - 2962, - 2965 - ], - "valid" - ], - [ - [ - 2966, - 2968 - ], - "disallowed" - ], - [ - [ - 2969, - 2970 - ], - "valid" - ], - [ - [ - 2971, - 2971 - ], - "disallowed" - ], - [ - [ - 2972, - 2972 - ], - "valid" - ], - [ - [ - 2973, - 2973 - ], - "disallowed" - ], - [ - [ - 2974, - 2975 - ], - "valid" - ], - [ - [ - 2976, - 2978 - ], - "disallowed" - ], - [ - [ - 2979, - 2980 - ], - "valid" - ], - [ - [ - 2981, - 2983 - ], - "disallowed" - ], - [ - [ - 2984, - 2986 - ], - "valid" - ], - [ - [ - 2987, - 2989 - ], - "disallowed" - ], - [ - [ - 2990, - 2997 - ], - "valid" - ], - [ - [ - 2998, - 2998 - ], - "valid" - ], - [ - [ - 2999, - 3001 - ], - "valid" - ], - [ - [ - 3002, - 3005 - ], - "disallowed" - ], - [ - [ - 3006, - 3010 - ], - "valid" - ], - [ - [ - 3011, - 3013 - ], - "disallowed" - ], - [ - [ - 3014, - 3016 - ], - "valid" - ], - [ - [ - 3017, - 3017 - ], - "disallowed" - ], - [ - [ - 3018, - 3021 - ], - "valid" - ], - [ - [ - 3022, - 3023 - ], - "disallowed" - ], - [ - [ - 3024, - 3024 - ], - "valid" - ], - [ - [ - 3025, - 3030 - ], - "disallowed" - ], - [ - [ - 3031, - 3031 - ], - "valid" - ], - [ - [ - 3032, - 3045 - ], - "disallowed" - ], - [ - [ - 3046, - 3046 - ], - "valid" - ], - [ - [ - 3047, - 3055 - ], - "valid" - ], - [ - [ - 3056, - 3058 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 3059, - 3066 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 3067, - 3071 - ], - "disallowed" - ], - [ - [ - 3072, - 3072 - ], - "valid" - ], - [ - [ - 3073, - 3075 - ], - "valid" - ], - [ - [ - 3076, - 3076 - ], - "disallowed" - ], - [ - [ - 3077, - 3084 - ], - "valid" - ], - [ - [ - 3085, - 3085 - ], - "disallowed" - ], - [ - [ - 3086, - 3088 - ], - "valid" - ], - [ - [ - 3089, - 3089 - ], - "disallowed" - ], - [ - [ - 3090, - 3112 - ], - "valid" - ], - [ - [ - 3113, - 3113 - ], - "disallowed" - ], - [ - [ - 3114, - 3123 - ], - "valid" - ], - [ - [ - 3124, - 3124 - ], - "valid" - ], - [ - [ - 3125, - 3129 - ], - "valid" - ], - [ - [ - 3130, - 3132 - ], - "disallowed" - ], - [ - [ - 3133, - 3133 - ], - "valid" - ], - [ - [ - 3134, - 3140 - ], - "valid" - ], - [ - [ - 3141, - 3141 - ], - "disallowed" - ], - [ - [ - 3142, - 3144 - ], - "valid" - ], - [ - [ - 3145, - 3145 - ], - "disallowed" - ], - [ - [ - 3146, - 3149 - ], - "valid" - ], - [ - [ - 3150, - 3156 - ], - "disallowed" - ], - [ - [ - 3157, - 3158 - ], - "valid" - ], - [ - [ - 3159, - 3159 - ], - "disallowed" - ], - [ - [ - 3160, - 3161 - ], - "valid" - ], - [ - [ - 3162, - 3162 - ], - "valid" - ], - [ - [ - 3163, - 3167 - ], - "disallowed" - ], - [ - [ - 3168, - 3169 - ], - "valid" - ], - [ - [ - 3170, - 3171 - ], - "valid" - ], - [ - [ - 3172, - 3173 - ], - "disallowed" - ], - [ - [ - 3174, - 3183 - ], - "valid" - ], - [ - [ - 3184, - 3191 - ], - "disallowed" - ], - [ - [ - 3192, - 3199 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 3200, - 3200 - ], - "disallowed" - ], - [ - [ - 3201, - 3201 - ], - "valid" - ], - [ - [ - 3202, - 3203 - ], - "valid" - ], - [ - [ - 3204, - 3204 - ], - "disallowed" - ], - [ - [ - 3205, - 3212 - ], - "valid" - ], - [ - [ - 3213, - 3213 - ], - "disallowed" - ], - [ - [ - 3214, - 3216 - ], - "valid" - ], - [ - [ - 3217, - 3217 - ], - "disallowed" - ], - [ - [ - 3218, - 3240 - ], - "valid" - ], - [ - [ - 3241, - 3241 - ], - "disallowed" - ], - [ - [ - 3242, - 3251 - ], - "valid" - ], - [ - [ - 3252, - 3252 - ], - "disallowed" - ], - [ - [ - 3253, - 3257 - ], - "valid" - ], - [ - [ - 3258, - 3259 - ], - "disallowed" - ], - [ - [ - 3260, - 3261 - ], - "valid" - ], - [ - [ - 3262, - 3268 - ], - "valid" - ], - [ - [ - 3269, - 3269 - ], - "disallowed" - ], - [ - [ - 3270, - 3272 - ], - "valid" - ], - [ - [ - 3273, - 3273 - ], - "disallowed" - ], - [ - [ - 3274, - 3277 - ], - "valid" - ], - [ - [ - 3278, - 3284 - ], - "disallowed" - ], - [ - [ - 3285, - 3286 - ], - "valid" - ], - [ - [ - 3287, - 3293 - ], - "disallowed" - ], - [ - [ - 3294, - 3294 - ], - "valid" - ], - [ - [ - 3295, - 3295 - ], - "disallowed" - ], - [ - [ - 3296, - 3297 - ], - "valid" - ], - [ - [ - 3298, - 3299 - ], - "valid" - ], - [ - [ - 3300, - 3301 - ], - "disallowed" - ], - [ - [ - 3302, - 3311 - ], - "valid" - ], - [ - [ - 3312, - 3312 - ], - "disallowed" - ], - [ - [ - 3313, - 3314 - ], - "valid" - ], - [ - [ - 3315, - 3328 - ], - "disallowed" - ], - [ - [ - 3329, - 3329 - ], - "valid" - ], - [ - [ - 3330, - 3331 - ], - "valid" - ], - [ - [ - 3332, - 3332 - ], - "disallowed" - ], - [ - [ - 3333, - 3340 - ], - "valid" - ], - [ - [ - 3341, - 3341 - ], - "disallowed" - ], - [ - [ - 3342, - 3344 - ], - "valid" - ], - [ - [ - 3345, - 3345 - ], - "disallowed" - ], - [ - [ - 3346, - 3368 - ], - "valid" - ], - [ - [ - 3369, - 3369 - ], - "valid" - ], - [ - [ - 3370, - 3385 - ], - "valid" - ], - [ - [ - 3386, - 3386 - ], - "valid" - ], - [ - [ - 3387, - 3388 - ], - "disallowed" - ], - [ - [ - 3389, - 3389 - ], - "valid" - ], - [ - [ - 3390, - 3395 - ], - "valid" - ], - [ - [ - 3396, - 3396 - ], - "valid" - ], - [ - [ - 3397, - 3397 - ], - "disallowed" - ], - [ - [ - 3398, - 3400 - ], - "valid" - ], - [ - [ - 3401, - 3401 - ], - "disallowed" - ], - [ - [ - 3402, - 3405 - ], - "valid" - ], - [ - [ - 3406, - 3406 - ], - "valid" - ], - [ - [ - 3407, - 3414 - ], - "disallowed" - ], - [ - [ - 3415, - 3415 - ], - "valid" - ], - [ - [ - 3416, - 3422 - ], - "disallowed" - ], - [ - [ - 3423, - 3423 - ], - "valid" - ], - [ - [ - 3424, - 3425 - ], - "valid" - ], - [ - [ - 3426, - 3427 - ], - "valid" - ], - [ - [ - 3428, - 3429 - ], - "disallowed" - ], - [ - [ - 3430, - 3439 - ], - "valid" - ], - [ - [ - 3440, - 3445 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 3446, - 3448 - ], - "disallowed" - ], - [ - [ - 3449, - 3449 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 3450, - 3455 - ], - "valid" - ], - [ - [ - 3456, - 3457 - ], - "disallowed" - ], - [ - [ - 3458, - 3459 - ], - "valid" - ], - [ - [ - 3460, - 3460 - ], - "disallowed" - ], - [ - [ - 3461, - 3478 - ], - "valid" - ], - [ - [ - 3479, - 3481 - ], - "disallowed" - ], - [ - [ - 3482, - 3505 - ], - "valid" - ], - [ - [ - 3506, - 3506 - ], - "disallowed" - ], - [ - [ - 3507, - 3515 - ], - "valid" - ], - [ - [ - 3516, - 3516 - ], - "disallowed" - ], - [ - [ - 3517, - 3517 - ], - "valid" - ], - [ - [ - 3518, - 3519 - ], - "disallowed" - ], - [ - [ - 3520, - 3526 - ], - "valid" - ], - [ - [ - 3527, - 3529 - ], - "disallowed" - ], - [ - [ - 3530, - 3530 - ], - "valid" - ], - [ - [ - 3531, - 3534 - ], - "disallowed" - ], - [ - [ - 3535, - 3540 - ], - "valid" - ], - [ - [ - 3541, - 3541 - ], - "disallowed" - ], - [ - [ - 3542, - 3542 - ], - "valid" - ], - [ - [ - 3543, - 3543 - ], - "disallowed" - ], - [ - [ - 3544, - 3551 - ], - "valid" - ], - [ - [ - 3552, - 3557 - ], - "disallowed" - ], - [ - [ - 3558, - 3567 - ], - "valid" - ], - [ - [ - 3568, - 3569 - ], - "disallowed" - ], - [ - [ - 3570, - 3571 - ], - "valid" - ], - [ - [ - 3572, - 3572 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 3573, - 3584 - ], - "disallowed" - ], - [ - [ - 3585, - 3634 - ], - "valid" - ], - [ - [ - 3635, - 3635 - ], - "mapped", - [ - 3661, - 3634 - ] - ], - [ - [ - 3636, - 3642 - ], - "valid" - ], - [ - [ - 3643, - 3646 - ], - "disallowed" - ], - [ - [ - 3647, - 3647 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 3648, - 3662 - ], - "valid" - ], - [ - [ - 3663, - 3663 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 3664, - 3673 - ], - "valid" - ], - [ - [ - 3674, - 3675 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 3676, - 3712 - ], - "disallowed" - ], - [ - [ - 3713, - 3714 - ], - "valid" - ], - [ - [ - 3715, - 3715 - ], - "disallowed" - ], - [ - [ - 3716, - 3716 - ], - "valid" - ], - [ - [ - 3717, - 3718 - ], - "disallowed" - ], - [ - [ - 3719, - 3720 - ], - "valid" - ], - [ - [ - 3721, - 3721 - ], - "disallowed" - ], - [ - [ - 3722, - 3722 - ], - "valid" - ], - [ - [ - 3723, - 3724 - ], - "disallowed" - ], - [ - [ - 3725, - 3725 - ], - "valid" - ], - [ - [ - 3726, - 3731 - ], - "disallowed" - ], - [ - [ - 3732, - 3735 - ], - "valid" - ], - [ - [ - 3736, - 3736 - ], - "disallowed" - ], - [ - [ - 3737, - 3743 - ], - "valid" - ], - [ - [ - 3744, - 3744 - ], - "disallowed" - ], - [ - [ - 3745, - 3747 - ], - "valid" - ], - [ - [ - 3748, - 3748 - ], - "disallowed" - ], - [ - [ - 3749, - 3749 - ], - "valid" - ], - [ - [ - 3750, - 3750 - ], - "disallowed" - ], - [ - [ - 3751, - 3751 - ], - "valid" - ], - [ - [ - 3752, - 3753 - ], - "disallowed" - ], - [ - [ - 3754, - 3755 - ], - "valid" - ], - [ - [ - 3756, - 3756 - ], - "disallowed" - ], - [ - [ - 3757, - 3762 - ], - "valid" - ], - [ - [ - 3763, - 3763 - ], - "mapped", - [ - 3789, - 3762 - ] - ], - [ - [ - 3764, - 3769 - ], - "valid" - ], - [ - [ - 3770, - 3770 - ], - "disallowed" - ], - [ - [ - 3771, - 3773 - ], - "valid" - ], - [ - [ - 3774, - 3775 - ], - "disallowed" - ], - [ - [ - 3776, - 3780 - ], - "valid" - ], - [ - [ - 3781, - 3781 - ], - "disallowed" - ], - [ - [ - 3782, - 3782 - ], - "valid" - ], - [ - [ - 3783, - 3783 - ], - "disallowed" - ], - [ - [ - 3784, - 3789 - ], - "valid" - ], - [ - [ - 3790, - 3791 - ], - "disallowed" - ], - [ - [ - 3792, - 3801 - ], - "valid" - ], - [ - [ - 3802, - 3803 - ], - "disallowed" - ], - [ - [ - 3804, - 3804 - ], - "mapped", - [ - 3755, - 3737 - ] - ], - [ - [ - 3805, - 3805 - ], - "mapped", - [ - 3755, - 3745 - ] - ], - [ - [ - 3806, - 3807 - ], - "valid" - ], - [ - [ - 3808, - 3839 - ], - "disallowed" - ], - [ - [ - 3840, - 3840 - ], - "valid" - ], - [ - [ - 3841, - 3850 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 3851, - 3851 - ], - "valid" - ], - [ - [ - 3852, - 3852 - ], - "mapped", - [ - 3851 - ] - ], - [ - [ - 3853, - 3863 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 3864, - 3865 - ], - "valid" - ], - [ - [ - 3866, - 3871 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 3872, - 3881 - ], - "valid" - ], - [ - [ - 3882, - 3892 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 3893, - 3893 - ], - "valid" - ], - [ - [ - 3894, - 3894 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 3895, - 3895 - ], - "valid" - ], - [ - [ - 3896, - 3896 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 3897, - 3897 - ], - "valid" - ], - [ - [ - 3898, - 3901 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 3902, - 3906 - ], - "valid" - ], - [ - [ - 3907, - 3907 - ], - "mapped", - [ - 3906, - 4023 - ] - ], - [ - [ - 3908, - 3911 - ], - "valid" - ], - [ - [ - 3912, - 3912 - ], - "disallowed" - ], - [ - [ - 3913, - 3916 - ], - "valid" - ], - [ - [ - 3917, - 3917 - ], - "mapped", - [ - 3916, - 4023 - ] - ], - [ - [ - 3918, - 3921 - ], - "valid" - ], - [ - [ - 3922, - 3922 - ], - "mapped", - [ - 3921, - 4023 - ] - ], - [ - [ - 3923, - 3926 - ], - "valid" - ], - [ - [ - 3927, - 3927 - ], - "mapped", - [ - 3926, - 4023 - ] - ], - [ - [ - 3928, - 3931 - ], - "valid" - ], - [ - [ - 3932, - 3932 - ], - "mapped", - [ - 3931, - 4023 - ] - ], - [ - [ - 3933, - 3944 - ], - "valid" - ], - [ - [ - 3945, - 3945 - ], - "mapped", - [ - 3904, - 4021 - ] - ], - [ - [ - 3946, - 3946 - ], - "valid" - ], - [ - [ - 3947, - 3948 - ], - "valid" - ], - [ - [ - 3949, - 3952 - ], - "disallowed" - ], - [ - [ - 3953, - 3954 - ], - "valid" - ], - [ - [ - 3955, - 3955 - ], - "mapped", - [ - 3953, - 3954 - ] - ], - [ - [ - 3956, - 3956 - ], - "valid" - ], - [ - [ - 3957, - 3957 - ], - "mapped", - [ - 3953, - 3956 - ] - ], - [ - [ - 3958, - 3958 - ], - "mapped", - [ - 4018, - 3968 - ] - ], - [ - [ - 3959, - 3959 - ], - "mapped", - [ - 4018, - 3953, - 3968 - ] - ], - [ - [ - 3960, - 3960 - ], - "mapped", - [ - 4019, - 3968 - ] - ], - [ - [ - 3961, - 3961 - ], - "mapped", - [ - 4019, - 3953, - 3968 - ] - ], - [ - [ - 3962, - 3968 - ], - "valid" - ], - [ - [ - 3969, - 3969 - ], - "mapped", - [ - 3953, - 3968 - ] - ], - [ - [ - 3970, - 3972 - ], - "valid" - ], - [ - [ - 3973, - 3973 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 3974, - 3979 - ], - "valid" - ], - [ - [ - 3980, - 3983 - ], - "valid" - ], - [ - [ - 3984, - 3986 - ], - "valid" - ], - [ - [ - 3987, - 3987 - ], - "mapped", - [ - 3986, - 4023 - ] - ], - [ - [ - 3988, - 3989 - ], - "valid" - ], - [ - [ - 3990, - 3990 - ], - "valid" - ], - [ - [ - 3991, - 3991 - ], - "valid" - ], - [ - [ - 3992, - 3992 - ], - "disallowed" - ], - [ - [ - 3993, - 3996 - ], - "valid" - ], - [ - [ - 3997, - 3997 - ], - "mapped", - [ - 3996, - 4023 - ] - ], - [ - [ - 3998, - 4001 - ], - "valid" - ], - [ - [ - 4002, - 4002 - ], - "mapped", - [ - 4001, - 4023 - ] - ], - [ - [ - 4003, - 4006 - ], - "valid" - ], - [ - [ - 4007, - 4007 - ], - "mapped", - [ - 4006, - 4023 - ] - ], - [ - [ - 4008, - 4011 - ], - "valid" - ], - [ - [ - 4012, - 4012 - ], - "mapped", - [ - 4011, - 4023 - ] - ], - [ - [ - 4013, - 4013 - ], - "valid" - ], - [ - [ - 4014, - 4016 - ], - "valid" - ], - [ - [ - 4017, - 4023 - ], - "valid" - ], - [ - [ - 4024, - 4024 - ], - "valid" - ], - [ - [ - 4025, - 4025 - ], - "mapped", - [ - 3984, - 4021 - ] - ], - [ - [ - 4026, - 4028 - ], - "valid" - ], - [ - [ - 4029, - 4029 - ], - "disallowed" - ], - [ - [ - 4030, - 4037 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 4038, - 4038 - ], - "valid" - ], - [ - [ - 4039, - 4044 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 4045, - 4045 - ], - "disallowed" - ], - [ - [ - 4046, - 4046 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 4047, - 4047 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 4048, - 4049 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 4050, - 4052 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 4053, - 4056 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 4057, - 4058 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 4059, - 4095 - ], - "disallowed" - ], - [ - [ - 4096, - 4129 - ], - "valid" - ], - [ - [ - 4130, - 4130 - ], - "valid" - ], - [ - [ - 4131, - 4135 - ], - "valid" - ], - [ - [ - 4136, - 4136 - ], - "valid" - ], - [ - [ - 4137, - 4138 - ], - "valid" - ], - [ - [ - 4139, - 4139 - ], - "valid" - ], - [ - [ - 4140, - 4146 - ], - "valid" - ], - [ - [ - 4147, - 4149 - ], - "valid" - ], - [ - [ - 4150, - 4153 - ], - "valid" - ], - [ - [ - 4154, - 4159 - ], - "valid" - ], - [ - [ - 4160, - 4169 - ], - "valid" - ], - [ - [ - 4170, - 4175 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 4176, - 4185 - ], - "valid" - ], - [ - [ - 4186, - 4249 - ], - "valid" - ], - [ - [ - 4250, - 4253 - ], - "valid" - ], - [ - [ - 4254, - 4255 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 4256, - 4293 - ], - "disallowed" - ], - [ - [ - 4294, - 4294 - ], - "disallowed" - ], - [ - [ - 4295, - 4295 - ], - "mapped", - [ - 11559 - ] - ], - [ - [ - 4296, - 4300 - ], - "disallowed" - ], - [ - [ - 4301, - 4301 - ], - "mapped", - [ - 11565 - ] - ], - [ - [ - 4302, - 4303 - ], - "disallowed" - ], - [ - [ - 4304, - 4342 - ], - "valid" - ], - [ - [ - 4343, - 4344 - ], - "valid" - ], - [ - [ - 4345, - 4346 - ], - "valid" - ], - [ - [ - 4347, - 4347 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 4348, - 4348 - ], - "mapped", - [ - 4316 - ] - ], - [ - [ - 4349, - 4351 - ], - "valid" - ], - [ - [ - 4352, - 4441 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 4442, - 4446 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 4447, - 4448 - ], - "disallowed" - ], - [ - [ - 4449, - 4514 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 4515, - 4519 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 4520, - 4601 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 4602, - 4607 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 4608, - 4614 - ], - "valid" - ], - [ - [ - 4615, - 4615 - ], - "valid" - ], - [ - [ - 4616, - 4678 - ], - "valid" - ], - [ - [ - 4679, - 4679 - ], - "valid" - ], - [ - [ - 4680, - 4680 - ], - "valid" - ], - [ - [ - 4681, - 4681 - ], - "disallowed" - ], - [ - [ - 4682, - 4685 - ], - "valid" - ], - [ - [ - 4686, - 4687 - ], - "disallowed" - ], - [ - [ - 4688, - 4694 - ], - "valid" - ], - [ - [ - 4695, - 4695 - ], - "disallowed" - ], - [ - [ - 4696, - 4696 - ], - "valid" - ], - [ - [ - 4697, - 4697 - ], - "disallowed" - ], - [ - [ - 4698, - 4701 - ], - "valid" - ], - [ - [ - 4702, - 4703 - ], - "disallowed" - ], - [ - [ - 4704, - 4742 - ], - "valid" - ], - [ - [ - 4743, - 4743 - ], - "valid" - ], - [ - [ - 4744, - 4744 - ], - "valid" - ], - [ - [ - 4745, - 4745 - ], - "disallowed" - ], - [ - [ - 4746, - 4749 - ], - "valid" - ], - [ - [ - 4750, - 4751 - ], - "disallowed" - ], - [ - [ - 4752, - 4782 - ], - "valid" - ], - [ - [ - 4783, - 4783 - ], - "valid" - ], - [ - [ - 4784, - 4784 - ], - "valid" - ], - [ - [ - 4785, - 4785 - ], - "disallowed" - ], - [ - [ - 4786, - 4789 - ], - "valid" - ], - [ - [ - 4790, - 4791 - ], - "disallowed" - ], - [ - [ - 4792, - 4798 - ], - "valid" - ], - [ - [ - 4799, - 4799 - ], - "disallowed" - ], - [ - [ - 4800, - 4800 - ], - "valid" - ], - [ - [ - 4801, - 4801 - ], - "disallowed" - ], - [ - [ - 4802, - 4805 - ], - "valid" - ], - [ - [ - 4806, - 4807 - ], - "disallowed" - ], - [ - [ - 4808, - 4814 - ], - "valid" - ], - [ - [ - 4815, - 4815 - ], - "valid" - ], - [ - [ - 4816, - 4822 - ], - "valid" - ], - [ - [ - 4823, - 4823 - ], - "disallowed" - ], - [ - [ - 4824, - 4846 - ], - "valid" - ], - [ - [ - 4847, - 4847 - ], - "valid" - ], - [ - [ - 4848, - 4878 - ], - "valid" - ], - [ - [ - 4879, - 4879 - ], - "valid" - ], - [ - [ - 4880, - 4880 - ], - "valid" - ], - [ - [ - 4881, - 4881 - ], - "disallowed" - ], - [ - [ - 4882, - 4885 - ], - "valid" - ], - [ - [ - 4886, - 4887 - ], - "disallowed" - ], - [ - [ - 4888, - 4894 - ], - "valid" - ], - [ - [ - 4895, - 4895 - ], - "valid" - ], - [ - [ - 4896, - 4934 - ], - "valid" - ], - [ - [ - 4935, - 4935 - ], - "valid" - ], - [ - [ - 4936, - 4954 - ], - "valid" - ], - [ - [ - 4955, - 4956 - ], - "disallowed" - ], - [ - [ - 4957, - 4958 - ], - "valid" - ], - [ - [ - 4959, - 4959 - ], - "valid" - ], - [ - [ - 4960, - 4960 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 4961, - 4988 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 4989, - 4991 - ], - "disallowed" - ], - [ - [ - 4992, - 5007 - ], - "valid" - ], - [ - [ - 5008, - 5017 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 5018, - 5023 - ], - "disallowed" - ], - [ - [ - 5024, - 5108 - ], - "valid" - ], - [ - [ - 5109, - 5109 - ], - "valid" - ], - [ - [ - 5110, - 5111 - ], - "disallowed" - ], - [ - [ - 5112, - 5112 - ], - "mapped", - [ - 5104 - ] - ], - [ - [ - 5113, - 5113 - ], - "mapped", - [ - 5105 - ] - ], - [ - [ - 5114, - 5114 - ], - "mapped", - [ - 5106 - ] - ], - [ - [ - 5115, - 5115 - ], - "mapped", - [ - 5107 - ] - ], - [ - [ - 5116, - 5116 - ], - "mapped", - [ - 5108 - ] - ], - [ - [ - 5117, - 5117 - ], - "mapped", - [ - 5109 - ] - ], - [ - [ - 5118, - 5119 - ], - "disallowed" - ], - [ - [ - 5120, - 5120 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 5121, - 5740 - ], - "valid" - ], - [ - [ - 5741, - 5742 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 5743, - 5750 - ], - "valid" - ], - [ - [ - 5751, - 5759 - ], - "valid" - ], - [ - [ - 5760, - 5760 - ], - "disallowed" - ], - [ - [ - 5761, - 5786 - ], - "valid" - ], - [ - [ - 5787, - 5788 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 5789, - 5791 - ], - "disallowed" - ], - [ - [ - 5792, - 5866 - ], - "valid" - ], - [ - [ - 5867, - 5872 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 5873, - 5880 - ], - "valid" - ], - [ - [ - 5881, - 5887 - ], - "disallowed" - ], - [ - [ - 5888, - 5900 - ], - "valid" - ], - [ - [ - 5901, - 5901 - ], - "disallowed" - ], - [ - [ - 5902, - 5908 - ], - "valid" - ], - [ - [ - 5909, - 5919 - ], - "disallowed" - ], - [ - [ - 5920, - 5940 - ], - "valid" - ], - [ - [ - 5941, - 5942 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 5943, - 5951 - ], - "disallowed" - ], - [ - [ - 5952, - 5971 - ], - "valid" - ], - [ - [ - 5972, - 5983 - ], - "disallowed" - ], - [ - [ - 5984, - 5996 - ], - "valid" - ], - [ - [ - 5997, - 5997 - ], - "disallowed" - ], - [ - [ - 5998, - 6000 - ], - "valid" - ], - [ - [ - 6001, - 6001 - ], - "disallowed" - ], - [ - [ - 6002, - 6003 - ], - "valid" - ], - [ - [ - 6004, - 6015 - ], - "disallowed" - ], - [ - [ - 6016, - 6067 - ], - "valid" - ], - [ - [ - 6068, - 6069 - ], - "disallowed" - ], - [ - [ - 6070, - 6099 - ], - "valid" - ], - [ - [ - 6100, - 6102 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 6103, - 6103 - ], - "valid" - ], - [ - [ - 6104, - 6107 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 6108, - 6108 - ], - "valid" - ], - [ - [ - 6109, - 6109 - ], - "valid" - ], - [ - [ - 6110, - 6111 - ], - "disallowed" - ], - [ - [ - 6112, - 6121 - ], - "valid" - ], - [ - [ - 6122, - 6127 - ], - "disallowed" - ], - [ - [ - 6128, - 6137 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 6138, - 6143 - ], - "disallowed" - ], - [ - [ - 6144, - 6149 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 6150, - 6150 - ], - "disallowed" - ], - [ - [ - 6151, - 6154 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 6155, - 6157 - ], - "ignored" - ], - [ - [ - 6158, - 6158 - ], - "disallowed" - ], - [ - [ - 6159, - 6159 - ], - "disallowed" - ], - [ - [ - 6160, - 6169 - ], - "valid" - ], - [ - [ - 6170, - 6175 - ], - "disallowed" - ], - [ - [ - 6176, - 6263 - ], - "valid" - ], - [ - [ - 6264, - 6271 - ], - "disallowed" - ], - [ - [ - 6272, - 6313 - ], - "valid" - ], - [ - [ - 6314, - 6314 - ], - "valid" - ], - [ - [ - 6315, - 6319 - ], - "disallowed" - ], - [ - [ - 6320, - 6389 - ], - "valid" - ], - [ - [ - 6390, - 6399 - ], - "disallowed" - ], - [ - [ - 6400, - 6428 - ], - "valid" - ], - [ - [ - 6429, - 6430 - ], - "valid" - ], - [ - [ - 6431, - 6431 - ], - "disallowed" - ], - [ - [ - 6432, - 6443 - ], - "valid" - ], - [ - [ - 6444, - 6447 - ], - "disallowed" - ], - [ - [ - 6448, - 6459 - ], - "valid" - ], - [ - [ - 6460, - 6463 - ], - "disallowed" - ], - [ - [ - 6464, - 6464 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 6465, - 6467 - ], - "disallowed" - ], - [ - [ - 6468, - 6469 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 6470, - 6509 - ], - "valid" - ], - [ - [ - 6510, - 6511 - ], - "disallowed" - ], - [ - [ - 6512, - 6516 - ], - "valid" - ], - [ - [ - 6517, - 6527 - ], - "disallowed" - ], - [ - [ - 6528, - 6569 - ], - "valid" - ], - [ - [ - 6570, - 6571 - ], - "valid" - ], - [ - [ - 6572, - 6575 - ], - "disallowed" - ], - [ - [ - 6576, - 6601 - ], - "valid" - ], - [ - [ - 6602, - 6607 - ], - "disallowed" - ], - [ - [ - 6608, - 6617 - ], - "valid" - ], - [ - [ - 6618, - 6618 - ], - "valid", - [ - ], - "XV8" - ], - [ - [ - 6619, - 6621 - ], - "disallowed" - ], - [ - [ - 6622, - 6623 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 6624, - 6655 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 6656, - 6683 - ], - "valid" - ], - [ - [ - 6684, - 6685 - ], - "disallowed" - ], - [ - [ - 6686, - 6687 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 6688, - 6750 - ], - "valid" - ], - [ - [ - 6751, - 6751 - ], - "disallowed" - ], - [ - [ - 6752, - 6780 - ], - "valid" - ], - [ - [ - 6781, - 6782 - ], - "disallowed" - ], - [ - [ - 6783, - 6793 - ], - "valid" - ], - [ - [ - 6794, - 6799 - ], - "disallowed" - ], - [ - [ - 6800, - 6809 - ], - "valid" - ], - [ - [ - 6810, - 6815 - ], - "disallowed" - ], - [ - [ - 6816, - 6822 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 6823, - 6823 - ], - "valid" - ], - [ - [ - 6824, - 6829 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 6830, - 6831 - ], - "disallowed" - ], - [ - [ - 6832, - 6845 - ], - "valid" - ], - [ - [ - 6846, - 6846 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 6847, - 6911 - ], - "disallowed" - ], - [ - [ - 6912, - 6987 - ], - "valid" - ], - [ - [ - 6988, - 6991 - ], - "disallowed" - ], - [ - [ - 6992, - 7001 - ], - "valid" - ], - [ - [ - 7002, - 7018 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 7019, - 7027 - ], - "valid" - ], - [ - [ - 7028, - 7036 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 7037, - 7039 - ], - "disallowed" - ], - [ - [ - 7040, - 7082 - ], - "valid" - ], - [ - [ - 7083, - 7085 - ], - "valid" - ], - [ - [ - 7086, - 7097 - ], - "valid" - ], - [ - [ - 7098, - 7103 - ], - "valid" - ], - [ - [ - 7104, - 7155 - ], - "valid" - ], - [ - [ - 7156, - 7163 - ], - "disallowed" - ], - [ - [ - 7164, - 7167 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 7168, - 7223 - ], - "valid" - ], - [ - [ - 7224, - 7226 - ], - "disallowed" - ], - [ - [ - 7227, - 7231 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 7232, - 7241 - ], - "valid" - ], - [ - [ - 7242, - 7244 - ], - "disallowed" - ], - [ - [ - 7245, - 7293 - ], - "valid" - ], - [ - [ - 7294, - 7295 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 7296, - 7359 - ], - "disallowed" - ], - [ - [ - 7360, - 7367 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 7368, - 7375 - ], - "disallowed" - ], - [ - [ - 7376, - 7378 - ], - "valid" - ], - [ - [ - 7379, - 7379 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 7380, - 7410 - ], - "valid" - ], - [ - [ - 7411, - 7414 - ], - "valid" - ], - [ - [ - 7415, - 7415 - ], - "disallowed" - ], - [ - [ - 7416, - 7417 - ], - "valid" - ], - [ - [ - 7418, - 7423 - ], - "disallowed" - ], - [ - [ - 7424, - 7467 - ], - "valid" - ], - [ - [ - 7468, - 7468 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 7469, - 7469 - ], - "mapped", - [ - 230 - ] - ], - [ - [ - 7470, - 7470 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 7471, - 7471 - ], - "valid" - ], - [ - [ - 7472, - 7472 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 7473, - 7473 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 7474, - 7474 - ], - "mapped", - [ - 477 - ] - ], - [ - [ - 7475, - 7475 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 7476, - 7476 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 7477, - 7477 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 7478, - 7478 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 7479, - 7479 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 7480, - 7480 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 7481, - 7481 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 7482, - 7482 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 7483, - 7483 - ], - "valid" - ], - [ - [ - 7484, - 7484 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 7485, - 7485 - ], - "mapped", - [ - 547 - ] - ], - [ - [ - 7486, - 7486 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 7487, - 7487 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 7488, - 7488 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 7489, - 7489 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 7490, - 7490 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 7491, - 7491 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 7492, - 7492 - ], - "mapped", - [ - 592 - ] - ], - [ - [ - 7493, - 7493 - ], - "mapped", - [ - 593 - ] - ], - [ - [ - 7494, - 7494 - ], - "mapped", - [ - 7426 - ] - ], - [ - [ - 7495, - 7495 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 7496, - 7496 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 7497, - 7497 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 7498, - 7498 - ], - "mapped", - [ - 601 - ] - ], - [ - [ - 7499, - 7499 - ], - "mapped", - [ - 603 - ] - ], - [ - [ - 7500, - 7500 - ], - "mapped", - [ - 604 - ] - ], - [ - [ - 7501, - 7501 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 7502, - 7502 - ], - "valid" - ], - [ - [ - 7503, - 7503 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 7504, - 7504 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 7505, - 7505 - ], - "mapped", - [ - 331 - ] - ], - [ - [ - 7506, - 7506 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 7507, - 7507 - ], - "mapped", - [ - 596 - ] - ], - [ - [ - 7508, - 7508 - ], - "mapped", - [ - 7446 - ] - ], - [ - [ - 7509, - 7509 - ], - "mapped", - [ - 7447 - ] - ], - [ - [ - 7510, - 7510 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 7511, - 7511 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 7512, - 7512 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 7513, - 7513 - ], - "mapped", - [ - 7453 - ] - ], - [ - [ - 7514, - 7514 - ], - "mapped", - [ - 623 - ] - ], - [ - [ - 7515, - 7515 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 7516, - 7516 - ], - "mapped", - [ - 7461 - ] - ], - [ - [ - 7517, - 7517 - ], - "mapped", - [ - 946 - ] - ], - [ - [ - 7518, - 7518 - ], - "mapped", - [ - 947 - ] - ], - [ - [ - 7519, - 7519 - ], - "mapped", - [ - 948 - ] - ], - [ - [ - 7520, - 7520 - ], - "mapped", - [ - 966 - ] - ], - [ - [ - 7521, - 7521 - ], - "mapped", - [ - 967 - ] - ], - [ - [ - 7522, - 7522 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 7523, - 7523 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 7524, - 7524 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 7525, - 7525 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 7526, - 7526 - ], - "mapped", - [ - 946 - ] - ], - [ - [ - 7527, - 7527 - ], - "mapped", - [ - 947 - ] - ], - [ - [ - 7528, - 7528 - ], - "mapped", - [ - 961 - ] - ], - [ - [ - 7529, - 7529 - ], - "mapped", - [ - 966 - ] - ], - [ - [ - 7530, - 7530 - ], - "mapped", - [ - 967 - ] - ], - [ - [ - 7531, - 7531 - ], - "valid" - ], - [ - [ - 7532, - 7543 - ], - "valid" - ], - [ - [ - 7544, - 7544 - ], - "mapped", - [ - 1085 - ] - ], - [ - [ - 7545, - 7578 - ], - "valid" - ], - [ - [ - 7579, - 7579 - ], - "mapped", - [ - 594 - ] - ], - [ - [ - 7580, - 7580 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 7581, - 7581 - ], - "mapped", - [ - 597 - ] - ], - [ - [ - 7582, - 7582 - ], - "mapped", - [ - 240 - ] - ], - [ - [ - 7583, - 7583 - ], - "mapped", - [ - 604 - ] - ], - [ - [ - 7584, - 7584 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 7585, - 7585 - ], - "mapped", - [ - 607 - ] - ], - [ - [ - 7586, - 7586 - ], - "mapped", - [ - 609 - ] - ], - [ - [ - 7587, - 7587 - ], - "mapped", - [ - 613 - ] - ], - [ - [ - 7588, - 7588 - ], - "mapped", - [ - 616 - ] - ], - [ - [ - 7589, - 7589 - ], - "mapped", - [ - 617 - ] - ], - [ - [ - 7590, - 7590 - ], - "mapped", - [ - 618 - ] - ], - [ - [ - 7591, - 7591 - ], - "mapped", - [ - 7547 - ] - ], - [ - [ - 7592, - 7592 - ], - "mapped", - [ - 669 - ] - ], - [ - [ - 7593, - 7593 - ], - "mapped", - [ - 621 - ] - ], - [ - [ - 7594, - 7594 - ], - "mapped", - [ - 7557 - ] - ], - [ - [ - 7595, - 7595 - ], - "mapped", - [ - 671 - ] - ], - [ - [ - 7596, - 7596 - ], - "mapped", - [ - 625 - ] - ], - [ - [ - 7597, - 7597 - ], - "mapped", - [ - 624 - ] - ], - [ - [ - 7598, - 7598 - ], - "mapped", - [ - 626 - ] - ], - [ - [ - 7599, - 7599 - ], - "mapped", - [ - 627 - ] - ], - [ - [ - 7600, - 7600 - ], - "mapped", - [ - 628 - ] - ], - [ - [ - 7601, - 7601 - ], - "mapped", - [ - 629 - ] - ], - [ - [ - 7602, - 7602 - ], - "mapped", - [ - 632 - ] - ], - [ - [ - 7603, - 7603 - ], - "mapped", - [ - 642 - ] - ], - [ - [ - 7604, - 7604 - ], - "mapped", - [ - 643 - ] - ], - [ - [ - 7605, - 7605 - ], - "mapped", - [ - 427 - ] - ], - [ - [ - 7606, - 7606 - ], - "mapped", - [ - 649 - ] - ], - [ - [ - 7607, - 7607 - ], - "mapped", - [ - 650 - ] - ], - [ - [ - 7608, - 7608 - ], - "mapped", - [ - 7452 - ] - ], - [ - [ - 7609, - 7609 - ], - "mapped", - [ - 651 - ] - ], - [ - [ - 7610, - 7610 - ], - "mapped", - [ - 652 - ] - ], - [ - [ - 7611, - 7611 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 7612, - 7612 - ], - "mapped", - [ - 656 - ] - ], - [ - [ - 7613, - 7613 - ], - "mapped", - [ - 657 - ] - ], - [ - [ - 7614, - 7614 - ], - "mapped", - [ - 658 - ] - ], - [ - [ - 7615, - 7615 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 7616, - 7619 - ], - "valid" - ], - [ - [ - 7620, - 7626 - ], - "valid" - ], - [ - [ - 7627, - 7654 - ], - "valid" - ], - [ - [ - 7655, - 7669 - ], - "valid" - ], - [ - [ - 7670, - 7675 - ], - "disallowed" - ], - [ - [ - 7676, - 7676 - ], - "valid" - ], - [ - [ - 7677, - 7677 - ], - "valid" - ], - [ - [ - 7678, - 7679 - ], - "valid" - ], - [ - [ - 7680, - 7680 - ], - "mapped", - [ - 7681 - ] - ], - [ - [ - 7681, - 7681 - ], - "valid" - ], - [ - [ - 7682, - 7682 - ], - "mapped", - [ - 7683 - ] - ], - [ - [ - 7683, - 7683 - ], - "valid" - ], - [ - [ - 7684, - 7684 - ], - "mapped", - [ - 7685 - ] - ], - [ - [ - 7685, - 7685 - ], - "valid" - ], - [ - [ - 7686, - 7686 - ], - "mapped", - [ - 7687 - ] - ], - [ - [ - 7687, - 7687 - ], - "valid" - ], - [ - [ - 7688, - 7688 - ], - "mapped", - [ - 7689 - ] - ], - [ - [ - 7689, - 7689 - ], - "valid" - ], - [ - [ - 7690, - 7690 - ], - "mapped", - [ - 7691 - ] - ], - [ - [ - 7691, - 7691 - ], - "valid" - ], - [ - [ - 7692, - 7692 - ], - "mapped", - [ - 7693 - ] - ], - [ - [ - 7693, - 7693 - ], - "valid" - ], - [ - [ - 7694, - 7694 - ], - "mapped", - [ - 7695 - ] - ], - [ - [ - 7695, - 7695 - ], - "valid" - ], - [ - [ - 7696, - 7696 - ], - "mapped", - [ - 7697 - ] - ], - [ - [ - 7697, - 7697 - ], - "valid" - ], - [ - [ - 7698, - 7698 - ], - "mapped", - [ - 7699 - ] - ], - [ - [ - 7699, - 7699 - ], - "valid" - ], - [ - [ - 7700, - 7700 - ], - "mapped", - [ - 7701 - ] - ], - [ - [ - 7701, - 7701 - ], - "valid" - ], - [ - [ - 7702, - 7702 - ], - "mapped", - [ - 7703 - ] - ], - [ - [ - 7703, - 7703 - ], - "valid" - ], - [ - [ - 7704, - 7704 - ], - "mapped", - [ - 7705 - ] - ], - [ - [ - 7705, - 7705 - ], - "valid" - ], - [ - [ - 7706, - 7706 - ], - "mapped", - [ - 7707 - ] - ], - [ - [ - 7707, - 7707 - ], - "valid" - ], - [ - [ - 7708, - 7708 - ], - "mapped", - [ - 7709 - ] - ], - [ - [ - 7709, - 7709 - ], - "valid" - ], - [ - [ - 7710, - 7710 - ], - "mapped", - [ - 7711 - ] - ], - [ - [ - 7711, - 7711 - ], - "valid" - ], - [ - [ - 7712, - 7712 - ], - "mapped", - [ - 7713 - ] - ], - [ - [ - 7713, - 7713 - ], - "valid" - ], - [ - [ - 7714, - 7714 - ], - "mapped", - [ - 7715 - ] - ], - [ - [ - 7715, - 7715 - ], - "valid" - ], - [ - [ - 7716, - 7716 - ], - "mapped", - [ - 7717 - ] - ], - [ - [ - 7717, - 7717 - ], - "valid" - ], - [ - [ - 7718, - 7718 - ], - "mapped", - [ - 7719 - ] - ], - [ - [ - 7719, - 7719 - ], - "valid" - ], - [ - [ - 7720, - 7720 - ], - "mapped", - [ - 7721 - ] - ], - [ - [ - 7721, - 7721 - ], - "valid" - ], - [ - [ - 7722, - 7722 - ], - "mapped", - [ - 7723 - ] - ], - [ - [ - 7723, - 7723 - ], - "valid" - ], - [ - [ - 7724, - 7724 - ], - "mapped", - [ - 7725 - ] - ], - [ - [ - 7725, - 7725 - ], - "valid" - ], - [ - [ - 7726, - 7726 - ], - "mapped", - [ - 7727 - ] - ], - [ - [ - 7727, - 7727 - ], - "valid" - ], - [ - [ - 7728, - 7728 - ], - "mapped", - [ - 7729 - ] - ], - [ - [ - 7729, - 7729 - ], - "valid" - ], - [ - [ - 7730, - 7730 - ], - "mapped", - [ - 7731 - ] - ], - [ - [ - 7731, - 7731 - ], - "valid" - ], - [ - [ - 7732, - 7732 - ], - "mapped", - [ - 7733 - ] - ], - [ - [ - 7733, - 7733 - ], - "valid" - ], - [ - [ - 7734, - 7734 - ], - "mapped", - [ - 7735 - ] - ], - [ - [ - 7735, - 7735 - ], - "valid" - ], - [ - [ - 7736, - 7736 - ], - "mapped", - [ - 7737 - ] - ], - [ - [ - 7737, - 7737 - ], - "valid" - ], - [ - [ - 7738, - 7738 - ], - "mapped", - [ - 7739 - ] - ], - [ - [ - 7739, - 7739 - ], - "valid" - ], - [ - [ - 7740, - 7740 - ], - "mapped", - [ - 7741 - ] - ], - [ - [ - 7741, - 7741 - ], - "valid" - ], - [ - [ - 7742, - 7742 - ], - "mapped", - [ - 7743 - ] - ], - [ - [ - 7743, - 7743 - ], - "valid" - ], - [ - [ - 7744, - 7744 - ], - "mapped", - [ - 7745 - ] - ], - [ - [ - 7745, - 7745 - ], - "valid" - ], - [ - [ - 7746, - 7746 - ], - "mapped", - [ - 7747 - ] - ], - [ - [ - 7747, - 7747 - ], - "valid" - ], - [ - [ - 7748, - 7748 - ], - "mapped", - [ - 7749 - ] - ], - [ - [ - 7749, - 7749 - ], - "valid" - ], - [ - [ - 7750, - 7750 - ], - "mapped", - [ - 7751 - ] - ], - [ - [ - 7751, - 7751 - ], - "valid" - ], - [ - [ - 7752, - 7752 - ], - "mapped", - [ - 7753 - ] - ], - [ - [ - 7753, - 7753 - ], - "valid" - ], - [ - [ - 7754, - 7754 - ], - "mapped", - [ - 7755 - ] - ], - [ - [ - 7755, - 7755 - ], - "valid" - ], - [ - [ - 7756, - 7756 - ], - "mapped", - [ - 7757 - ] - ], - [ - [ - 7757, - 7757 - ], - "valid" - ], - [ - [ - 7758, - 7758 - ], - "mapped", - [ - 7759 - ] - ], - [ - [ - 7759, - 7759 - ], - "valid" - ], - [ - [ - 7760, - 7760 - ], - "mapped", - [ - 7761 - ] - ], - [ - [ - 7761, - 7761 - ], - "valid" - ], - [ - [ - 7762, - 7762 - ], - "mapped", - [ - 7763 - ] - ], - [ - [ - 7763, - 7763 - ], - "valid" - ], - [ - [ - 7764, - 7764 - ], - "mapped", - [ - 7765 - ] - ], - [ - [ - 7765, - 7765 - ], - "valid" - ], - [ - [ - 7766, - 7766 - ], - "mapped", - [ - 7767 - ] - ], - [ - [ - 7767, - 7767 - ], - "valid" - ], - [ - [ - 7768, - 7768 - ], - "mapped", - [ - 7769 - ] - ], - [ - [ - 7769, - 7769 - ], - "valid" - ], - [ - [ - 7770, - 7770 - ], - "mapped", - [ - 7771 - ] - ], - [ - [ - 7771, - 7771 - ], - "valid" - ], - [ - [ - 7772, - 7772 - ], - "mapped", - [ - 7773 - ] - ], - [ - [ - 7773, - 7773 - ], - "valid" - ], - [ - [ - 7774, - 7774 - ], - "mapped", - [ - 7775 - ] - ], - [ - [ - 7775, - 7775 - ], - "valid" - ], - [ - [ - 7776, - 7776 - ], - "mapped", - [ - 7777 - ] - ], - [ - [ - 7777, - 7777 - ], - "valid" - ], - [ - [ - 7778, - 7778 - ], - "mapped", - [ - 7779 - ] - ], - [ - [ - 7779, - 7779 - ], - "valid" - ], - [ - [ - 7780, - 7780 - ], - "mapped", - [ - 7781 - ] - ], - [ - [ - 7781, - 7781 - ], - "valid" - ], - [ - [ - 7782, - 7782 - ], - "mapped", - [ - 7783 - ] - ], - [ - [ - 7783, - 7783 - ], - "valid" - ], - [ - [ - 7784, - 7784 - ], - "mapped", - [ - 7785 - ] - ], - [ - [ - 7785, - 7785 - ], - "valid" - ], - [ - [ - 7786, - 7786 - ], - "mapped", - [ - 7787 - ] - ], - [ - [ - 7787, - 7787 - ], - "valid" - ], - [ - [ - 7788, - 7788 - ], - "mapped", - [ - 7789 - ] - ], - [ - [ - 7789, - 7789 - ], - "valid" - ], - [ - [ - 7790, - 7790 - ], - "mapped", - [ - 7791 - ] - ], - [ - [ - 7791, - 7791 - ], - "valid" - ], - [ - [ - 7792, - 7792 - ], - "mapped", - [ - 7793 - ] - ], - [ - [ - 7793, - 7793 - ], - "valid" - ], - [ - [ - 7794, - 7794 - ], - "mapped", - [ - 7795 - ] - ], - [ - [ - 7795, - 7795 - ], - "valid" - ], - [ - [ - 7796, - 7796 - ], - "mapped", - [ - 7797 - ] - ], - [ - [ - 7797, - 7797 - ], - "valid" - ], - [ - [ - 7798, - 7798 - ], - "mapped", - [ - 7799 - ] - ], - [ - [ - 7799, - 7799 - ], - "valid" - ], - [ - [ - 7800, - 7800 - ], - "mapped", - [ - 7801 - ] - ], - [ - [ - 7801, - 7801 - ], - "valid" - ], - [ - [ - 7802, - 7802 - ], - "mapped", - [ - 7803 - ] - ], - [ - [ - 7803, - 7803 - ], - "valid" - ], - [ - [ - 7804, - 7804 - ], - "mapped", - [ - 7805 - ] - ], - [ - [ - 7805, - 7805 - ], - "valid" - ], - [ - [ - 7806, - 7806 - ], - "mapped", - [ - 7807 - ] - ], - [ - [ - 7807, - 7807 - ], - "valid" - ], - [ - [ - 7808, - 7808 - ], - "mapped", - [ - 7809 - ] - ], - [ - [ - 7809, - 7809 - ], - "valid" - ], - [ - [ - 7810, - 7810 - ], - "mapped", - [ - 7811 - ] - ], - [ - [ - 7811, - 7811 - ], - "valid" - ], - [ - [ - 7812, - 7812 - ], - "mapped", - [ - 7813 - ] - ], - [ - [ - 7813, - 7813 - ], - "valid" - ], - [ - [ - 7814, - 7814 - ], - "mapped", - [ - 7815 - ] - ], - [ - [ - 7815, - 7815 - ], - "valid" - ], - [ - [ - 7816, - 7816 - ], - "mapped", - [ - 7817 - ] - ], - [ - [ - 7817, - 7817 - ], - "valid" - ], - [ - [ - 7818, - 7818 - ], - "mapped", - [ - 7819 - ] - ], - [ - [ - 7819, - 7819 - ], - "valid" - ], - [ - [ - 7820, - 7820 - ], - "mapped", - [ - 7821 - ] - ], - [ - [ - 7821, - 7821 - ], - "valid" - ], - [ - [ - 7822, - 7822 - ], - "mapped", - [ - 7823 - ] - ], - [ - [ - 7823, - 7823 - ], - "valid" - ], - [ - [ - 7824, - 7824 - ], - "mapped", - [ - 7825 - ] - ], - [ - [ - 7825, - 7825 - ], - "valid" - ], - [ - [ - 7826, - 7826 - ], - "mapped", - [ - 7827 - ] - ], - [ - [ - 7827, - 7827 - ], - "valid" - ], - [ - [ - 7828, - 7828 - ], - "mapped", - [ - 7829 - ] - ], - [ - [ - 7829, - 7833 - ], - "valid" - ], - [ - [ - 7834, - 7834 - ], - "mapped", - [ - 97, - 702 - ] - ], - [ - [ - 7835, - 7835 - ], - "mapped", - [ - 7777 - ] - ], - [ - [ - 7836, - 7837 - ], - "valid" - ], - [ - [ - 7838, - 7838 - ], - "mapped", - [ - 115, - 115 - ] - ], - [ - [ - 7839, - 7839 - ], - "valid" - ], - [ - [ - 7840, - 7840 - ], - "mapped", - [ - 7841 - ] - ], - [ - [ - 7841, - 7841 - ], - "valid" - ], - [ - [ - 7842, - 7842 - ], - "mapped", - [ - 7843 - ] - ], - [ - [ - 7843, - 7843 - ], - "valid" - ], - [ - [ - 7844, - 7844 - ], - "mapped", - [ - 7845 - ] - ], - [ - [ - 7845, - 7845 - ], - "valid" - ], - [ - [ - 7846, - 7846 - ], - "mapped", - [ - 7847 - ] - ], - [ - [ - 7847, - 7847 - ], - "valid" - ], - [ - [ - 7848, - 7848 - ], - "mapped", - [ - 7849 - ] - ], - [ - [ - 7849, - 7849 - ], - "valid" - ], - [ - [ - 7850, - 7850 - ], - "mapped", - [ - 7851 - ] - ], - [ - [ - 7851, - 7851 - ], - "valid" - ], - [ - [ - 7852, - 7852 - ], - "mapped", - [ - 7853 - ] - ], - [ - [ - 7853, - 7853 - ], - "valid" - ], - [ - [ - 7854, - 7854 - ], - "mapped", - [ - 7855 - ] - ], - [ - [ - 7855, - 7855 - ], - "valid" - ], - [ - [ - 7856, - 7856 - ], - "mapped", - [ - 7857 - ] - ], - [ - [ - 7857, - 7857 - ], - "valid" - ], - [ - [ - 7858, - 7858 - ], - "mapped", - [ - 7859 - ] - ], - [ - [ - 7859, - 7859 - ], - "valid" - ], - [ - [ - 7860, - 7860 - ], - "mapped", - [ - 7861 - ] - ], - [ - [ - 7861, - 7861 - ], - "valid" - ], - [ - [ - 7862, - 7862 - ], - "mapped", - [ - 7863 - ] - ], - [ - [ - 7863, - 7863 - ], - "valid" - ], - [ - [ - 7864, - 7864 - ], - "mapped", - [ - 7865 - ] - ], - [ - [ - 7865, - 7865 - ], - "valid" - ], - [ - [ - 7866, - 7866 - ], - "mapped", - [ - 7867 - ] - ], - [ - [ - 7867, - 7867 - ], - "valid" - ], - [ - [ - 7868, - 7868 - ], - "mapped", - [ - 7869 - ] - ], - [ - [ - 7869, - 7869 - ], - "valid" - ], - [ - [ - 7870, - 7870 - ], - "mapped", - [ - 7871 - ] - ], - [ - [ - 7871, - 7871 - ], - "valid" - ], - [ - [ - 7872, - 7872 - ], - "mapped", - [ - 7873 - ] - ], - [ - [ - 7873, - 7873 - ], - "valid" - ], - [ - [ - 7874, - 7874 - ], - "mapped", - [ - 7875 - ] - ], - [ - [ - 7875, - 7875 - ], - "valid" - ], - [ - [ - 7876, - 7876 - ], - "mapped", - [ - 7877 - ] - ], - [ - [ - 7877, - 7877 - ], - "valid" - ], - [ - [ - 7878, - 7878 - ], - "mapped", - [ - 7879 - ] - ], - [ - [ - 7879, - 7879 - ], - "valid" - ], - [ - [ - 7880, - 7880 - ], - "mapped", - [ - 7881 - ] - ], - [ - [ - 7881, - 7881 - ], - "valid" - ], - [ - [ - 7882, - 7882 - ], - "mapped", - [ - 7883 - ] - ], - [ - [ - 7883, - 7883 - ], - "valid" - ], - [ - [ - 7884, - 7884 - ], - "mapped", - [ - 7885 - ] - ], - [ - [ - 7885, - 7885 - ], - "valid" - ], - [ - [ - 7886, - 7886 - ], - "mapped", - [ - 7887 - ] - ], - [ - [ - 7887, - 7887 - ], - "valid" - ], - [ - [ - 7888, - 7888 - ], - "mapped", - [ - 7889 - ] - ], - [ - [ - 7889, - 7889 - ], - "valid" - ], - [ - [ - 7890, - 7890 - ], - "mapped", - [ - 7891 - ] - ], - [ - [ - 7891, - 7891 - ], - "valid" - ], - [ - [ - 7892, - 7892 - ], - "mapped", - [ - 7893 - ] - ], - [ - [ - 7893, - 7893 - ], - "valid" - ], - [ - [ - 7894, - 7894 - ], - "mapped", - [ - 7895 - ] - ], - [ - [ - 7895, - 7895 - ], - "valid" - ], - [ - [ - 7896, - 7896 - ], - "mapped", - [ - 7897 - ] - ], - [ - [ - 7897, - 7897 - ], - "valid" - ], - [ - [ - 7898, - 7898 - ], - "mapped", - [ - 7899 - ] - ], - [ - [ - 7899, - 7899 - ], - "valid" - ], - [ - [ - 7900, - 7900 - ], - "mapped", - [ - 7901 - ] - ], - [ - [ - 7901, - 7901 - ], - "valid" - ], - [ - [ - 7902, - 7902 - ], - "mapped", - [ - 7903 - ] - ], - [ - [ - 7903, - 7903 - ], - "valid" - ], - [ - [ - 7904, - 7904 - ], - "mapped", - [ - 7905 - ] - ], - [ - [ - 7905, - 7905 - ], - "valid" - ], - [ - [ - 7906, - 7906 - ], - "mapped", - [ - 7907 - ] - ], - [ - [ - 7907, - 7907 - ], - "valid" - ], - [ - [ - 7908, - 7908 - ], - "mapped", - [ - 7909 - ] - ], - [ - [ - 7909, - 7909 - ], - "valid" - ], - [ - [ - 7910, - 7910 - ], - "mapped", - [ - 7911 - ] - ], - [ - [ - 7911, - 7911 - ], - "valid" - ], - [ - [ - 7912, - 7912 - ], - "mapped", - [ - 7913 - ] - ], - [ - [ - 7913, - 7913 - ], - "valid" - ], - [ - [ - 7914, - 7914 - ], - "mapped", - [ - 7915 - ] - ], - [ - [ - 7915, - 7915 - ], - "valid" - ], - [ - [ - 7916, - 7916 - ], - "mapped", - [ - 7917 - ] - ], - [ - [ - 7917, - 7917 - ], - "valid" - ], - [ - [ - 7918, - 7918 - ], - "mapped", - [ - 7919 - ] - ], - [ - [ - 7919, - 7919 - ], - "valid" - ], - [ - [ - 7920, - 7920 - ], - "mapped", - [ - 7921 - ] - ], - [ - [ - 7921, - 7921 - ], - "valid" - ], - [ - [ - 7922, - 7922 - ], - "mapped", - [ - 7923 - ] - ], - [ - [ - 7923, - 7923 - ], - "valid" - ], - [ - [ - 7924, - 7924 - ], - "mapped", - [ - 7925 - ] - ], - [ - [ - 7925, - 7925 - ], - "valid" - ], - [ - [ - 7926, - 7926 - ], - "mapped", - [ - 7927 - ] - ], - [ - [ - 7927, - 7927 - ], - "valid" - ], - [ - [ - 7928, - 7928 - ], - "mapped", - [ - 7929 - ] - ], - [ - [ - 7929, - 7929 - ], - "valid" - ], - [ - [ - 7930, - 7930 - ], - "mapped", - [ - 7931 - ] - ], - [ - [ - 7931, - 7931 - ], - "valid" - ], - [ - [ - 7932, - 7932 - ], - "mapped", - [ - 7933 - ] - ], - [ - [ - 7933, - 7933 - ], - "valid" - ], - [ - [ - 7934, - 7934 - ], - "mapped", - [ - 7935 - ] - ], - [ - [ - 7935, - 7935 - ], - "valid" - ], - [ - [ - 7936, - 7943 - ], - "valid" - ], - [ - [ - 7944, - 7944 - ], - "mapped", - [ - 7936 - ] - ], - [ - [ - 7945, - 7945 - ], - "mapped", - [ - 7937 - ] - ], - [ - [ - 7946, - 7946 - ], - "mapped", - [ - 7938 - ] - ], - [ - [ - 7947, - 7947 - ], - "mapped", - [ - 7939 - ] - ], - [ - [ - 7948, - 7948 - ], - "mapped", - [ - 7940 - ] - ], - [ - [ - 7949, - 7949 - ], - "mapped", - [ - 7941 - ] - ], - [ - [ - 7950, - 7950 - ], - "mapped", - [ - 7942 - ] - ], - [ - [ - 7951, - 7951 - ], - "mapped", - [ - 7943 - ] - ], - [ - [ - 7952, - 7957 - ], - "valid" - ], - [ - [ - 7958, - 7959 - ], - "disallowed" - ], - [ - [ - 7960, - 7960 - ], - "mapped", - [ - 7952 - ] - ], - [ - [ - 7961, - 7961 - ], - "mapped", - [ - 7953 - ] - ], - [ - [ - 7962, - 7962 - ], - "mapped", - [ - 7954 - ] - ], - [ - [ - 7963, - 7963 - ], - "mapped", - [ - 7955 - ] - ], - [ - [ - 7964, - 7964 - ], - "mapped", - [ - 7956 - ] - ], - [ - [ - 7965, - 7965 - ], - "mapped", - [ - 7957 - ] - ], - [ - [ - 7966, - 7967 - ], - "disallowed" - ], - [ - [ - 7968, - 7975 - ], - "valid" - ], - [ - [ - 7976, - 7976 - ], - "mapped", - [ - 7968 - ] - ], - [ - [ - 7977, - 7977 - ], - "mapped", - [ - 7969 - ] - ], - [ - [ - 7978, - 7978 - ], - "mapped", - [ - 7970 - ] - ], - [ - [ - 7979, - 7979 - ], - "mapped", - [ - 7971 - ] - ], - [ - [ - 7980, - 7980 - ], - "mapped", - [ - 7972 - ] - ], - [ - [ - 7981, - 7981 - ], - "mapped", - [ - 7973 - ] - ], - [ - [ - 7982, - 7982 - ], - "mapped", - [ - 7974 - ] - ], - [ - [ - 7983, - 7983 - ], - "mapped", - [ - 7975 - ] - ], - [ - [ - 7984, - 7991 - ], - "valid" - ], - [ - [ - 7992, - 7992 - ], - "mapped", - [ - 7984 - ] - ], - [ - [ - 7993, - 7993 - ], - "mapped", - [ - 7985 - ] - ], - [ - [ - 7994, - 7994 - ], - "mapped", - [ - 7986 - ] - ], - [ - [ - 7995, - 7995 - ], - "mapped", - [ - 7987 - ] - ], - [ - [ - 7996, - 7996 - ], - "mapped", - [ - 7988 - ] - ], - [ - [ - 7997, - 7997 - ], - "mapped", - [ - 7989 - ] - ], - [ - [ - 7998, - 7998 - ], - "mapped", - [ - 7990 - ] - ], - [ - [ - 7999, - 7999 - ], - "mapped", - [ - 7991 - ] - ], - [ - [ - 8000, - 8005 - ], - "valid" - ], - [ - [ - 8006, - 8007 - ], - "disallowed" - ], - [ - [ - 8008, - 8008 - ], - "mapped", - [ - 8000 - ] - ], - [ - [ - 8009, - 8009 - ], - "mapped", - [ - 8001 - ] - ], - [ - [ - 8010, - 8010 - ], - "mapped", - [ - 8002 - ] - ], - [ - [ - 8011, - 8011 - ], - "mapped", - [ - 8003 - ] - ], - [ - [ - 8012, - 8012 - ], - "mapped", - [ - 8004 - ] - ], - [ - [ - 8013, - 8013 - ], - "mapped", - [ - 8005 - ] - ], - [ - [ - 8014, - 8015 - ], - "disallowed" - ], - [ - [ - 8016, - 8023 - ], - "valid" - ], - [ - [ - 8024, - 8024 - ], - "disallowed" - ], - [ - [ - 8025, - 8025 - ], - "mapped", - [ - 8017 - ] - ], - [ - [ - 8026, - 8026 - ], - "disallowed" - ], - [ - [ - 8027, - 8027 - ], - "mapped", - [ - 8019 - ] - ], - [ - [ - 8028, - 8028 - ], - "disallowed" - ], - [ - [ - 8029, - 8029 - ], - "mapped", - [ - 8021 - ] - ], - [ - [ - 8030, - 8030 - ], - "disallowed" - ], - [ - [ - 8031, - 8031 - ], - "mapped", - [ - 8023 - ] - ], - [ - [ - 8032, - 8039 - ], - "valid" - ], - [ - [ - 8040, - 8040 - ], - "mapped", - [ - 8032 - ] - ], - [ - [ - 8041, - 8041 - ], - "mapped", - [ - 8033 - ] - ], - [ - [ - 8042, - 8042 - ], - "mapped", - [ - 8034 - ] - ], - [ - [ - 8043, - 8043 - ], - "mapped", - [ - 8035 - ] - ], - [ - [ - 8044, - 8044 - ], - "mapped", - [ - 8036 - ] - ], - [ - [ - 8045, - 8045 - ], - "mapped", - [ - 8037 - ] - ], - [ - [ - 8046, - 8046 - ], - "mapped", - [ - 8038 - ] - ], - [ - [ - 8047, - 8047 - ], - "mapped", - [ - 8039 - ] - ], - [ - [ - 8048, - 8048 - ], - "valid" - ], - [ - [ - 8049, - 8049 - ], - "mapped", - [ - 940 - ] - ], - [ - [ - 8050, - 8050 - ], - "valid" - ], - [ - [ - 8051, - 8051 - ], - "mapped", - [ - 941 - ] - ], - [ - [ - 8052, - 8052 - ], - "valid" - ], - [ - [ - 8053, - 8053 - ], - "mapped", - [ - 942 - ] - ], - [ - [ - 8054, - 8054 - ], - "valid" - ], - [ - [ - 8055, - 8055 - ], - "mapped", - [ - 943 - ] - ], - [ - [ - 8056, - 8056 - ], - "valid" - ], - [ - [ - 8057, - 8057 - ], - "mapped", - [ - 972 - ] - ], - [ - [ - 8058, - 8058 - ], - "valid" - ], - [ - [ - 8059, - 8059 - ], - "mapped", - [ - 973 - ] - ], - [ - [ - 8060, - 8060 - ], - "valid" - ], - [ - [ - 8061, - 8061 - ], - "mapped", - [ - 974 - ] - ], - [ - [ - 8062, - 8063 - ], - "disallowed" - ], - [ - [ - 8064, - 8064 - ], - "mapped", - [ - 7936, - 953 - ] - ], - [ - [ - 8065, - 8065 - ], - "mapped", - [ - 7937, - 953 - ] - ], - [ - [ - 8066, - 8066 - ], - "mapped", - [ - 7938, - 953 - ] - ], - [ - [ - 8067, - 8067 - ], - "mapped", - [ - 7939, - 953 - ] - ], - [ - [ - 8068, - 8068 - ], - "mapped", - [ - 7940, - 953 - ] - ], - [ - [ - 8069, - 8069 - ], - "mapped", - [ - 7941, - 953 - ] - ], - [ - [ - 8070, - 8070 - ], - "mapped", - [ - 7942, - 953 - ] - ], - [ - [ - 8071, - 8071 - ], - "mapped", - [ - 7943, - 953 - ] - ], - [ - [ - 8072, - 8072 - ], - "mapped", - [ - 7936, - 953 - ] - ], - [ - [ - 8073, - 8073 - ], - "mapped", - [ - 7937, - 953 - ] - ], - [ - [ - 8074, - 8074 - ], - "mapped", - [ - 7938, - 953 - ] - ], - [ - [ - 8075, - 8075 - ], - "mapped", - [ - 7939, - 953 - ] - ], - [ - [ - 8076, - 8076 - ], - "mapped", - [ - 7940, - 953 - ] - ], - [ - [ - 8077, - 8077 - ], - "mapped", - [ - 7941, - 953 - ] - ], - [ - [ - 8078, - 8078 - ], - "mapped", - [ - 7942, - 953 - ] - ], - [ - [ - 8079, - 8079 - ], - "mapped", - [ - 7943, - 953 - ] - ], - [ - [ - 8080, - 8080 - ], - "mapped", - [ - 7968, - 953 - ] - ], - [ - [ - 8081, - 8081 - ], - "mapped", - [ - 7969, - 953 - ] - ], - [ - [ - 8082, - 8082 - ], - "mapped", - [ - 7970, - 953 - ] - ], - [ - [ - 8083, - 8083 - ], - "mapped", - [ - 7971, - 953 - ] - ], - [ - [ - 8084, - 8084 - ], - "mapped", - [ - 7972, - 953 - ] - ], - [ - [ - 8085, - 8085 - ], - "mapped", - [ - 7973, - 953 - ] - ], - [ - [ - 8086, - 8086 - ], - "mapped", - [ - 7974, - 953 - ] - ], - [ - [ - 8087, - 8087 - ], - "mapped", - [ - 7975, - 953 - ] - ], - [ - [ - 8088, - 8088 - ], - "mapped", - [ - 7968, - 953 - ] - ], - [ - [ - 8089, - 8089 - ], - "mapped", - [ - 7969, - 953 - ] - ], - [ - [ - 8090, - 8090 - ], - "mapped", - [ - 7970, - 953 - ] - ], - [ - [ - 8091, - 8091 - ], - "mapped", - [ - 7971, - 953 - ] - ], - [ - [ - 8092, - 8092 - ], - "mapped", - [ - 7972, - 953 - ] - ], - [ - [ - 8093, - 8093 - ], - "mapped", - [ - 7973, - 953 - ] - ], - [ - [ - 8094, - 8094 - ], - "mapped", - [ - 7974, - 953 - ] - ], - [ - [ - 8095, - 8095 - ], - "mapped", - [ - 7975, - 953 - ] - ], - [ - [ - 8096, - 8096 - ], - "mapped", - [ - 8032, - 953 - ] - ], - [ - [ - 8097, - 8097 - ], - "mapped", - [ - 8033, - 953 - ] - ], - [ - [ - 8098, - 8098 - ], - "mapped", - [ - 8034, - 953 - ] - ], - [ - [ - 8099, - 8099 - ], - "mapped", - [ - 8035, - 953 - ] - ], - [ - [ - 8100, - 8100 - ], - "mapped", - [ - 8036, - 953 - ] - ], - [ - [ - 8101, - 8101 - ], - "mapped", - [ - 8037, - 953 - ] - ], - [ - [ - 8102, - 8102 - ], - "mapped", - [ - 8038, - 953 - ] - ], - [ - [ - 8103, - 8103 - ], - "mapped", - [ - 8039, - 953 - ] - ], - [ - [ - 8104, - 8104 - ], - "mapped", - [ - 8032, - 953 - ] - ], - [ - [ - 8105, - 8105 - ], - "mapped", - [ - 8033, - 953 - ] - ], - [ - [ - 8106, - 8106 - ], - "mapped", - [ - 8034, - 953 - ] - ], - [ - [ - 8107, - 8107 - ], - "mapped", - [ - 8035, - 953 - ] - ], - [ - [ - 8108, - 8108 - ], - "mapped", - [ - 8036, - 953 - ] - ], - [ - [ - 8109, - 8109 - ], - "mapped", - [ - 8037, - 953 - ] - ], - [ - [ - 8110, - 8110 - ], - "mapped", - [ - 8038, - 953 - ] - ], - [ - [ - 8111, - 8111 - ], - "mapped", - [ - 8039, - 953 - ] - ], - [ - [ - 8112, - 8113 - ], - "valid" - ], - [ - [ - 8114, - 8114 - ], - "mapped", - [ - 8048, - 953 - ] - ], - [ - [ - 8115, - 8115 - ], - "mapped", - [ - 945, - 953 - ] - ], - [ - [ - 8116, - 8116 - ], - "mapped", - [ - 940, - 953 - ] - ], - [ - [ - 8117, - 8117 - ], - "disallowed" - ], - [ - [ - 8118, - 8118 - ], - "valid" - ], - [ - [ - 8119, - 8119 - ], - "mapped", - [ - 8118, - 953 - ] - ], - [ - [ - 8120, - 8120 - ], - "mapped", - [ - 8112 - ] - ], - [ - [ - 8121, - 8121 - ], - "mapped", - [ - 8113 - ] - ], - [ - [ - 8122, - 8122 - ], - "mapped", - [ - 8048 - ] - ], - [ - [ - 8123, - 8123 - ], - "mapped", - [ - 940 - ] - ], - [ - [ - 8124, - 8124 - ], - "mapped", - [ - 945, - 953 - ] - ], - [ - [ - 8125, - 8125 - ], - "disallowed_STD3_mapped", - [ - 32, - 787 - ] - ], - [ - [ - 8126, - 8126 - ], - "mapped", - [ - 953 - ] - ], - [ - [ - 8127, - 8127 - ], - "disallowed_STD3_mapped", - [ - 32, - 787 - ] - ], - [ - [ - 8128, - 8128 - ], - "disallowed_STD3_mapped", - [ - 32, - 834 - ] - ], - [ - [ - 8129, - 8129 - ], - "disallowed_STD3_mapped", - [ - 32, - 776, - 834 - ] - ], - [ - [ - 8130, - 8130 - ], - "mapped", - [ - 8052, - 953 - ] - ], - [ - [ - 8131, - 8131 - ], - "mapped", - [ - 951, - 953 - ] - ], - [ - [ - 8132, - 8132 - ], - "mapped", - [ - 942, - 953 - ] - ], - [ - [ - 8133, - 8133 - ], - "disallowed" - ], - [ - [ - 8134, - 8134 - ], - "valid" - ], - [ - [ - 8135, - 8135 - ], - "mapped", - [ - 8134, - 953 - ] - ], - [ - [ - 8136, - 8136 - ], - "mapped", - [ - 8050 - ] - ], - [ - [ - 8137, - 8137 - ], - "mapped", - [ - 941 - ] - ], - [ - [ - 8138, - 8138 - ], - "mapped", - [ - 8052 - ] - ], - [ - [ - 8139, - 8139 - ], - "mapped", - [ - 942 - ] - ], - [ - [ - 8140, - 8140 - ], - "mapped", - [ - 951, - 953 - ] - ], - [ - [ - 8141, - 8141 - ], - "disallowed_STD3_mapped", - [ - 32, - 787, - 768 - ] - ], - [ - [ - 8142, - 8142 - ], - "disallowed_STD3_mapped", - [ - 32, - 787, - 769 - ] - ], - [ - [ - 8143, - 8143 - ], - "disallowed_STD3_mapped", - [ - 32, - 787, - 834 - ] - ], - [ - [ - 8144, - 8146 - ], - "valid" - ], - [ - [ - 8147, - 8147 - ], - "mapped", - [ - 912 - ] - ], - [ - [ - 8148, - 8149 - ], - "disallowed" - ], - [ - [ - 8150, - 8151 - ], - "valid" - ], - [ - [ - 8152, - 8152 - ], - "mapped", - [ - 8144 - ] - ], - [ - [ - 8153, - 8153 - ], - "mapped", - [ - 8145 - ] - ], - [ - [ - 8154, - 8154 - ], - "mapped", - [ - 8054 - ] - ], - [ - [ - 8155, - 8155 - ], - "mapped", - [ - 943 - ] - ], - [ - [ - 8156, - 8156 - ], - "disallowed" - ], - [ - [ - 8157, - 8157 - ], - "disallowed_STD3_mapped", - [ - 32, - 788, - 768 - ] - ], - [ - [ - 8158, - 8158 - ], - "disallowed_STD3_mapped", - [ - 32, - 788, - 769 - ] - ], - [ - [ - 8159, - 8159 - ], - "disallowed_STD3_mapped", - [ - 32, - 788, - 834 - ] - ], - [ - [ - 8160, - 8162 - ], - "valid" - ], - [ - [ - 8163, - 8163 - ], - "mapped", - [ - 944 - ] - ], - [ - [ - 8164, - 8167 - ], - "valid" - ], - [ - [ - 8168, - 8168 - ], - "mapped", - [ - 8160 - ] - ], - [ - [ - 8169, - 8169 - ], - "mapped", - [ - 8161 - ] - ], - [ - [ - 8170, - 8170 - ], - "mapped", - [ - 8058 - ] - ], - [ - [ - 8171, - 8171 - ], - "mapped", - [ - 973 - ] - ], - [ - [ - 8172, - 8172 - ], - "mapped", - [ - 8165 - ] - ], - [ - [ - 8173, - 8173 - ], - "disallowed_STD3_mapped", - [ - 32, - 776, - 768 - ] - ], - [ - [ - 8174, - 8174 - ], - "disallowed_STD3_mapped", - [ - 32, - 776, - 769 - ] - ], - [ - [ - 8175, - 8175 - ], - "disallowed_STD3_mapped", - [ - 96 - ] - ], - [ - [ - 8176, - 8177 - ], - "disallowed" - ], - [ - [ - 8178, - 8178 - ], - "mapped", - [ - 8060, - 953 - ] - ], - [ - [ - 8179, - 8179 - ], - "mapped", - [ - 969, - 953 - ] - ], - [ - [ - 8180, - 8180 - ], - "mapped", - [ - 974, - 953 - ] - ], - [ - [ - 8181, - 8181 - ], - "disallowed" - ], - [ - [ - 8182, - 8182 - ], - "valid" - ], - [ - [ - 8183, - 8183 - ], - "mapped", - [ - 8182, - 953 - ] - ], - [ - [ - 8184, - 8184 - ], - "mapped", - [ - 8056 - ] - ], - [ - [ - 8185, - 8185 - ], - "mapped", - [ - 972 - ] - ], - [ - [ - 8186, - 8186 - ], - "mapped", - [ - 8060 - ] - ], - [ - [ - 8187, - 8187 - ], - "mapped", - [ - 974 - ] - ], - [ - [ - 8188, - 8188 - ], - "mapped", - [ - 969, - 953 - ] - ], - [ - [ - 8189, - 8189 - ], - "disallowed_STD3_mapped", - [ - 32, - 769 - ] - ], - [ - [ - 8190, - 8190 - ], - "disallowed_STD3_mapped", - [ - 32, - 788 - ] - ], - [ - [ - 8191, - 8191 - ], - "disallowed" - ], - [ - [ - 8192, - 8202 - ], - "disallowed_STD3_mapped", - [ - 32 - ] - ], - [ - [ - 8203, - 8203 - ], - "ignored" - ], - [ - [ - 8204, - 8205 - ], - "deviation", - [ - ] - ], - [ - [ - 8206, - 8207 - ], - "disallowed" - ], - [ - [ - 8208, - 8208 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8209, - 8209 - ], - "mapped", - [ - 8208 - ] - ], - [ - [ - 8210, - 8214 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8215, - 8215 - ], - "disallowed_STD3_mapped", - [ - 32, - 819 - ] - ], - [ - [ - 8216, - 8227 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8228, - 8230 - ], - "disallowed" - ], - [ - [ - 8231, - 8231 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8232, - 8238 - ], - "disallowed" - ], - [ - [ - 8239, - 8239 - ], - "disallowed_STD3_mapped", - [ - 32 - ] - ], - [ - [ - 8240, - 8242 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8243, - 8243 - ], - "mapped", - [ - 8242, - 8242 - ] - ], - [ - [ - 8244, - 8244 - ], - "mapped", - [ - 8242, - 8242, - 8242 - ] - ], - [ - [ - 8245, - 8245 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8246, - 8246 - ], - "mapped", - [ - 8245, - 8245 - ] - ], - [ - [ - 8247, - 8247 - ], - "mapped", - [ - 8245, - 8245, - 8245 - ] - ], - [ - [ - 8248, - 8251 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8252, - 8252 - ], - "disallowed_STD3_mapped", - [ - 33, - 33 - ] - ], - [ - [ - 8253, - 8253 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8254, - 8254 - ], - "disallowed_STD3_mapped", - [ - 32, - 773 - ] - ], - [ - [ - 8255, - 8262 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8263, - 8263 - ], - "disallowed_STD3_mapped", - [ - 63, - 63 - ] - ], - [ - [ - 8264, - 8264 - ], - "disallowed_STD3_mapped", - [ - 63, - 33 - ] - ], - [ - [ - 8265, - 8265 - ], - "disallowed_STD3_mapped", - [ - 33, - 63 - ] - ], - [ - [ - 8266, - 8269 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8270, - 8274 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8275, - 8276 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8277, - 8278 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8279, - 8279 - ], - "mapped", - [ - 8242, - 8242, - 8242, - 8242 - ] - ], - [ - [ - 8280, - 8286 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8287, - 8287 - ], - "disallowed_STD3_mapped", - [ - 32 - ] - ], - [ - [ - 8288, - 8288 - ], - "ignored" - ], - [ - [ - 8289, - 8291 - ], - "disallowed" - ], - [ - [ - 8292, - 8292 - ], - "ignored" - ], - [ - [ - 8293, - 8293 - ], - "disallowed" - ], - [ - [ - 8294, - 8297 - ], - "disallowed" - ], - [ - [ - 8298, - 8303 - ], - "disallowed" - ], - [ - [ - 8304, - 8304 - ], - "mapped", - [ - 48 - ] - ], - [ - [ - 8305, - 8305 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 8306, - 8307 - ], - "disallowed" - ], - [ - [ - 8308, - 8308 - ], - "mapped", - [ - 52 - ] - ], - [ - [ - 8309, - 8309 - ], - "mapped", - [ - 53 - ] - ], - [ - [ - 8310, - 8310 - ], - "mapped", - [ - 54 - ] - ], - [ - [ - 8311, - 8311 - ], - "mapped", - [ - 55 - ] - ], - [ - [ - 8312, - 8312 - ], - "mapped", - [ - 56 - ] - ], - [ - [ - 8313, - 8313 - ], - "mapped", - [ - 57 - ] - ], - [ - [ - 8314, - 8314 - ], - "disallowed_STD3_mapped", - [ - 43 - ] - ], - [ - [ - 8315, - 8315 - ], - "mapped", - [ - 8722 - ] - ], - [ - [ - 8316, - 8316 - ], - "disallowed_STD3_mapped", - [ - 61 - ] - ], - [ - [ - 8317, - 8317 - ], - "disallowed_STD3_mapped", - [ - 40 - ] - ], - [ - [ - 8318, - 8318 - ], - "disallowed_STD3_mapped", - [ - 41 - ] - ], - [ - [ - 8319, - 8319 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 8320, - 8320 - ], - "mapped", - [ - 48 - ] - ], - [ - [ - 8321, - 8321 - ], - "mapped", - [ - 49 - ] - ], - [ - [ - 8322, - 8322 - ], - "mapped", - [ - 50 - ] - ], - [ - [ - 8323, - 8323 - ], - "mapped", - [ - 51 - ] - ], - [ - [ - 8324, - 8324 - ], - "mapped", - [ - 52 - ] - ], - [ - [ - 8325, - 8325 - ], - "mapped", - [ - 53 - ] - ], - [ - [ - 8326, - 8326 - ], - "mapped", - [ - 54 - ] - ], - [ - [ - 8327, - 8327 - ], - "mapped", - [ - 55 - ] - ], - [ - [ - 8328, - 8328 - ], - "mapped", - [ - 56 - ] - ], - [ - [ - 8329, - 8329 - ], - "mapped", - [ - 57 - ] - ], - [ - [ - 8330, - 8330 - ], - "disallowed_STD3_mapped", - [ - 43 - ] - ], - [ - [ - 8331, - 8331 - ], - "mapped", - [ - 8722 - ] - ], - [ - [ - 8332, - 8332 - ], - "disallowed_STD3_mapped", - [ - 61 - ] - ], - [ - [ - 8333, - 8333 - ], - "disallowed_STD3_mapped", - [ - 40 - ] - ], - [ - [ - 8334, - 8334 - ], - "disallowed_STD3_mapped", - [ - 41 - ] - ], - [ - [ - 8335, - 8335 - ], - "disallowed" - ], - [ - [ - 8336, - 8336 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 8337, - 8337 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 8338, - 8338 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 8339, - 8339 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 8340, - 8340 - ], - "mapped", - [ - 601 - ] - ], - [ - [ - 8341, - 8341 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 8342, - 8342 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 8343, - 8343 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 8344, - 8344 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 8345, - 8345 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 8346, - 8346 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 8347, - 8347 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 8348, - 8348 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 8349, - 8351 - ], - "disallowed" - ], - [ - [ - 8352, - 8359 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8360, - 8360 - ], - "mapped", - [ - 114, - 115 - ] - ], - [ - [ - 8361, - 8362 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8363, - 8363 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8364, - 8364 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8365, - 8367 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8368, - 8369 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8370, - 8373 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8374, - 8376 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8377, - 8377 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8378, - 8378 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8379, - 8381 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8382, - 8382 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8383, - 8399 - ], - "disallowed" - ], - [ - [ - 8400, - 8417 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8418, - 8419 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8420, - 8426 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8427, - 8427 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8428, - 8431 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8432, - 8432 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8433, - 8447 - ], - "disallowed" - ], - [ - [ - 8448, - 8448 - ], - "disallowed_STD3_mapped", - [ - 97, - 47, - 99 - ] - ], - [ - [ - 8449, - 8449 - ], - "disallowed_STD3_mapped", - [ - 97, - 47, - 115 - ] - ], - [ - [ - 8450, - 8450 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 8451, - 8451 - ], - "mapped", - [ - 176, - 99 - ] - ], - [ - [ - 8452, - 8452 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8453, - 8453 - ], - "disallowed_STD3_mapped", - [ - 99, - 47, - 111 - ] - ], - [ - [ - 8454, - 8454 - ], - "disallowed_STD3_mapped", - [ - 99, - 47, - 117 - ] - ], - [ - [ - 8455, - 8455 - ], - "mapped", - [ - 603 - ] - ], - [ - [ - 8456, - 8456 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8457, - 8457 - ], - "mapped", - [ - 176, - 102 - ] - ], - [ - [ - 8458, - 8458 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 8459, - 8462 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 8463, - 8463 - ], - "mapped", - [ - 295 - ] - ], - [ - [ - 8464, - 8465 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 8466, - 8467 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 8468, - 8468 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8469, - 8469 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 8470, - 8470 - ], - "mapped", - [ - 110, - 111 - ] - ], - [ - [ - 8471, - 8472 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8473, - 8473 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 8474, - 8474 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 8475, - 8477 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 8478, - 8479 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8480, - 8480 - ], - "mapped", - [ - 115, - 109 - ] - ], - [ - [ - 8481, - 8481 - ], - "mapped", - [ - 116, - 101, - 108 - ] - ], - [ - [ - 8482, - 8482 - ], - "mapped", - [ - 116, - 109 - ] - ], - [ - [ - 8483, - 8483 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8484, - 8484 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 8485, - 8485 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8486, - 8486 - ], - "mapped", - [ - 969 - ] - ], - [ - [ - 8487, - 8487 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8488, - 8488 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 8489, - 8489 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8490, - 8490 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 8491, - 8491 - ], - "mapped", - [ - 229 - ] - ], - [ - [ - 8492, - 8492 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 8493, - 8493 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 8494, - 8494 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8495, - 8496 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 8497, - 8497 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 8498, - 8498 - ], - "disallowed" - ], - [ - [ - 8499, - 8499 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 8500, - 8500 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 8501, - 8501 - ], - "mapped", - [ - 1488 - ] - ], - [ - [ - 8502, - 8502 - ], - "mapped", - [ - 1489 - ] - ], - [ - [ - 8503, - 8503 - ], - "mapped", - [ - 1490 - ] - ], - [ - [ - 8504, - 8504 - ], - "mapped", - [ - 1491 - ] - ], - [ - [ - 8505, - 8505 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 8506, - 8506 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8507, - 8507 - ], - "mapped", - [ - 102, - 97, - 120 - ] - ], - [ - [ - 8508, - 8508 - ], - "mapped", - [ - 960 - ] - ], - [ - [ - 8509, - 8510 - ], - "mapped", - [ - 947 - ] - ], - [ - [ - 8511, - 8511 - ], - "mapped", - [ - 960 - ] - ], - [ - [ - 8512, - 8512 - ], - "mapped", - [ - 8721 - ] - ], - [ - [ - 8513, - 8516 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8517, - 8518 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 8519, - 8519 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 8520, - 8520 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 8521, - 8521 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 8522, - 8523 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8524, - 8524 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8525, - 8525 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8526, - 8526 - ], - "valid" - ], - [ - [ - 8527, - 8527 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8528, - 8528 - ], - "mapped", - [ - 49, - 8260, - 55 - ] - ], - [ - [ - 8529, - 8529 - ], - "mapped", - [ - 49, - 8260, - 57 - ] - ], - [ - [ - 8530, - 8530 - ], - "mapped", - [ - 49, - 8260, - 49, - 48 - ] - ], - [ - [ - 8531, - 8531 - ], - "mapped", - [ - 49, - 8260, - 51 - ] - ], - [ - [ - 8532, - 8532 - ], - "mapped", - [ - 50, - 8260, - 51 - ] - ], - [ - [ - 8533, - 8533 - ], - "mapped", - [ - 49, - 8260, - 53 - ] - ], - [ - [ - 8534, - 8534 - ], - "mapped", - [ - 50, - 8260, - 53 - ] - ], - [ - [ - 8535, - 8535 - ], - "mapped", - [ - 51, - 8260, - 53 - ] - ], - [ - [ - 8536, - 8536 - ], - "mapped", - [ - 52, - 8260, - 53 - ] - ], - [ - [ - 8537, - 8537 - ], - "mapped", - [ - 49, - 8260, - 54 - ] - ], - [ - [ - 8538, - 8538 - ], - "mapped", - [ - 53, - 8260, - 54 - ] - ], - [ - [ - 8539, - 8539 - ], - "mapped", - [ - 49, - 8260, - 56 - ] - ], - [ - [ - 8540, - 8540 - ], - "mapped", - [ - 51, - 8260, - 56 - ] - ], - [ - [ - 8541, - 8541 - ], - "mapped", - [ - 53, - 8260, - 56 - ] - ], - [ - [ - 8542, - 8542 - ], - "mapped", - [ - 55, - 8260, - 56 - ] - ], - [ - [ - 8543, - 8543 - ], - "mapped", - [ - 49, - 8260 - ] - ], - [ - [ - 8544, - 8544 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 8545, - 8545 - ], - "mapped", - [ - 105, - 105 - ] - ], - [ - [ - 8546, - 8546 - ], - "mapped", - [ - 105, - 105, - 105 - ] - ], - [ - [ - 8547, - 8547 - ], - "mapped", - [ - 105, - 118 - ] - ], - [ - [ - 8548, - 8548 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 8549, - 8549 - ], - "mapped", - [ - 118, - 105 - ] - ], - [ - [ - 8550, - 8550 - ], - "mapped", - [ - 118, - 105, - 105 - ] - ], - [ - [ - 8551, - 8551 - ], - "mapped", - [ - 118, - 105, - 105, - 105 - ] - ], - [ - [ - 8552, - 8552 - ], - "mapped", - [ - 105, - 120 - ] - ], - [ - [ - 8553, - 8553 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 8554, - 8554 - ], - "mapped", - [ - 120, - 105 - ] - ], - [ - [ - 8555, - 8555 - ], - "mapped", - [ - 120, - 105, - 105 - ] - ], - [ - [ - 8556, - 8556 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 8557, - 8557 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 8558, - 8558 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 8559, - 8559 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 8560, - 8560 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 8561, - 8561 - ], - "mapped", - [ - 105, - 105 - ] - ], - [ - [ - 8562, - 8562 - ], - "mapped", - [ - 105, - 105, - 105 - ] - ], - [ - [ - 8563, - 8563 - ], - "mapped", - [ - 105, - 118 - ] - ], - [ - [ - 8564, - 8564 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 8565, - 8565 - ], - "mapped", - [ - 118, - 105 - ] - ], - [ - [ - 8566, - 8566 - ], - "mapped", - [ - 118, - 105, - 105 - ] - ], - [ - [ - 8567, - 8567 - ], - "mapped", - [ - 118, - 105, - 105, - 105 - ] - ], - [ - [ - 8568, - 8568 - ], - "mapped", - [ - 105, - 120 - ] - ], - [ - [ - 8569, - 8569 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 8570, - 8570 - ], - "mapped", - [ - 120, - 105 - ] - ], - [ - [ - 8571, - 8571 - ], - "mapped", - [ - 120, - 105, - 105 - ] - ], - [ - [ - 8572, - 8572 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 8573, - 8573 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 8574, - 8574 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 8575, - 8575 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 8576, - 8578 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8579, - 8579 - ], - "disallowed" - ], - [ - [ - 8580, - 8580 - ], - "valid" - ], - [ - [ - 8581, - 8584 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8585, - 8585 - ], - "mapped", - [ - 48, - 8260, - 51 - ] - ], - [ - [ - 8586, - 8587 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8588, - 8591 - ], - "disallowed" - ], - [ - [ - 8592, - 8682 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8683, - 8691 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8692, - 8703 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8704, - 8747 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8748, - 8748 - ], - "mapped", - [ - 8747, - 8747 - ] - ], - [ - [ - 8749, - 8749 - ], - "mapped", - [ - 8747, - 8747, - 8747 - ] - ], - [ - [ - 8750, - 8750 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8751, - 8751 - ], - "mapped", - [ - 8750, - 8750 - ] - ], - [ - [ - 8752, - 8752 - ], - "mapped", - [ - 8750, - 8750, - 8750 - ] - ], - [ - [ - 8753, - 8799 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8800, - 8800 - ], - "disallowed_STD3_valid" - ], - [ - [ - 8801, - 8813 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8814, - 8815 - ], - "disallowed_STD3_valid" - ], - [ - [ - 8816, - 8945 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8946, - 8959 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8960, - 8960 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8961, - 8961 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8962, - 9000 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9001, - 9001 - ], - "mapped", - [ - 12296 - ] - ], - [ - [ - 9002, - 9002 - ], - "mapped", - [ - 12297 - ] - ], - [ - [ - 9003, - 9082 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9083, - 9083 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9084, - 9084 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9085, - 9114 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9115, - 9166 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9167, - 9168 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9169, - 9179 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9180, - 9191 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9192, - 9192 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9193, - 9203 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9204, - 9210 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9211, - 9215 - ], - "disallowed" - ], - [ - [ - 9216, - 9252 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9253, - 9254 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9255, - 9279 - ], - "disallowed" - ], - [ - [ - 9280, - 9290 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9291, - 9311 - ], - "disallowed" - ], - [ - [ - 9312, - 9312 - ], - "mapped", - [ - 49 - ] - ], - [ - [ - 9313, - 9313 - ], - "mapped", - [ - 50 - ] - ], - [ - [ - 9314, - 9314 - ], - "mapped", - [ - 51 - ] - ], - [ - [ - 9315, - 9315 - ], - "mapped", - [ - 52 - ] - ], - [ - [ - 9316, - 9316 - ], - "mapped", - [ - 53 - ] - ], - [ - [ - 9317, - 9317 - ], - "mapped", - [ - 54 - ] - ], - [ - [ - 9318, - 9318 - ], - "mapped", - [ - 55 - ] - ], - [ - [ - 9319, - 9319 - ], - "mapped", - [ - 56 - ] - ], - [ - [ - 9320, - 9320 - ], - "mapped", - [ - 57 - ] - ], - [ - [ - 9321, - 9321 - ], - "mapped", - [ - 49, - 48 - ] - ], - [ - [ - 9322, - 9322 - ], - "mapped", - [ - 49, - 49 - ] - ], - [ - [ - 9323, - 9323 - ], - "mapped", - [ - 49, - 50 - ] - ], - [ - [ - 9324, - 9324 - ], - "mapped", - [ - 49, - 51 - ] - ], - [ - [ - 9325, - 9325 - ], - "mapped", - [ - 49, - 52 - ] - ], - [ - [ - 9326, - 9326 - ], - "mapped", - [ - 49, - 53 - ] - ], - [ - [ - 9327, - 9327 - ], - "mapped", - [ - 49, - 54 - ] - ], - [ - [ - 9328, - 9328 - ], - "mapped", - [ - 49, - 55 - ] - ], - [ - [ - 9329, - 9329 - ], - "mapped", - [ - 49, - 56 - ] - ], - [ - [ - 9330, - 9330 - ], - "mapped", - [ - 49, - 57 - ] - ], - [ - [ - 9331, - 9331 - ], - "mapped", - [ - 50, - 48 - ] - ], - [ - [ - 9332, - 9332 - ], - "disallowed_STD3_mapped", - [ - 40, - 49, - 41 - ] - ], - [ - [ - 9333, - 9333 - ], - "disallowed_STD3_mapped", - [ - 40, - 50, - 41 - ] - ], - [ - [ - 9334, - 9334 - ], - "disallowed_STD3_mapped", - [ - 40, - 51, - 41 - ] - ], - [ - [ - 9335, - 9335 - ], - "disallowed_STD3_mapped", - [ - 40, - 52, - 41 - ] - ], - [ - [ - 9336, - 9336 - ], - "disallowed_STD3_mapped", - [ - 40, - 53, - 41 - ] - ], - [ - [ - 9337, - 9337 - ], - "disallowed_STD3_mapped", - [ - 40, - 54, - 41 - ] - ], - [ - [ - 9338, - 9338 - ], - "disallowed_STD3_mapped", - [ - 40, - 55, - 41 - ] - ], - [ - [ - 9339, - 9339 - ], - "disallowed_STD3_mapped", - [ - 40, - 56, - 41 - ] - ], - [ - [ - 9340, - 9340 - ], - "disallowed_STD3_mapped", - [ - 40, - 57, - 41 - ] - ], - [ - [ - 9341, - 9341 - ], - "disallowed_STD3_mapped", - [ - 40, - 49, - 48, - 41 - ] - ], - [ - [ - 9342, - 9342 - ], - "disallowed_STD3_mapped", - [ - 40, - 49, - 49, - 41 - ] - ], - [ - [ - 9343, - 9343 - ], - "disallowed_STD3_mapped", - [ - 40, - 49, - 50, - 41 - ] - ], - [ - [ - 9344, - 9344 - ], - "disallowed_STD3_mapped", - [ - 40, - 49, - 51, - 41 - ] - ], - [ - [ - 9345, - 9345 - ], - "disallowed_STD3_mapped", - [ - 40, - 49, - 52, - 41 - ] - ], - [ - [ - 9346, - 9346 - ], - "disallowed_STD3_mapped", - [ - 40, - 49, - 53, - 41 - ] - ], - [ - [ - 9347, - 9347 - ], - "disallowed_STD3_mapped", - [ - 40, - 49, - 54, - 41 - ] - ], - [ - [ - 9348, - 9348 - ], - "disallowed_STD3_mapped", - [ - 40, - 49, - 55, - 41 - ] - ], - [ - [ - 9349, - 9349 - ], - "disallowed_STD3_mapped", - [ - 40, - 49, - 56, - 41 - ] - ], - [ - [ - 9350, - 9350 - ], - "disallowed_STD3_mapped", - [ - 40, - 49, - 57, - 41 - ] - ], - [ - [ - 9351, - 9351 - ], - "disallowed_STD3_mapped", - [ - 40, - 50, - 48, - 41 - ] - ], - [ - [ - 9352, - 9371 - ], - "disallowed" - ], - [ - [ - 9372, - 9372 - ], - "disallowed_STD3_mapped", - [ - 40, - 97, - 41 - ] - ], - [ - [ - 9373, - 9373 - ], - "disallowed_STD3_mapped", - [ - 40, - 98, - 41 - ] - ], - [ - [ - 9374, - 9374 - ], - "disallowed_STD3_mapped", - [ - 40, - 99, - 41 - ] - ], - [ - [ - 9375, - 9375 - ], - "disallowed_STD3_mapped", - [ - 40, - 100, - 41 - ] - ], - [ - [ - 9376, - 9376 - ], - "disallowed_STD3_mapped", - [ - 40, - 101, - 41 - ] - ], - [ - [ - 9377, - 9377 - ], - "disallowed_STD3_mapped", - [ - 40, - 102, - 41 - ] - ], - [ - [ - 9378, - 9378 - ], - "disallowed_STD3_mapped", - [ - 40, - 103, - 41 - ] - ], - [ - [ - 9379, - 9379 - ], - "disallowed_STD3_mapped", - [ - 40, - 104, - 41 - ] - ], - [ - [ - 9380, - 9380 - ], - "disallowed_STD3_mapped", - [ - 40, - 105, - 41 - ] - ], - [ - [ - 9381, - 9381 - ], - "disallowed_STD3_mapped", - [ - 40, - 106, - 41 - ] - ], - [ - [ - 9382, - 9382 - ], - "disallowed_STD3_mapped", - [ - 40, - 107, - 41 - ] - ], - [ - [ - 9383, - 9383 - ], - "disallowed_STD3_mapped", - [ - 40, - 108, - 41 - ] - ], - [ - [ - 9384, - 9384 - ], - "disallowed_STD3_mapped", - [ - 40, - 109, - 41 - ] - ], - [ - [ - 9385, - 9385 - ], - "disallowed_STD3_mapped", - [ - 40, - 110, - 41 - ] - ], - [ - [ - 9386, - 9386 - ], - "disallowed_STD3_mapped", - [ - 40, - 111, - 41 - ] - ], - [ - [ - 9387, - 9387 - ], - "disallowed_STD3_mapped", - [ - 40, - 112, - 41 - ] - ], - [ - [ - 9388, - 9388 - ], - "disallowed_STD3_mapped", - [ - 40, - 113, - 41 - ] - ], - [ - [ - 9389, - 9389 - ], - "disallowed_STD3_mapped", - [ - 40, - 114, - 41 - ] - ], - [ - [ - 9390, - 9390 - ], - "disallowed_STD3_mapped", - [ - 40, - 115, - 41 - ] - ], - [ - [ - 9391, - 9391 - ], - "disallowed_STD3_mapped", - [ - 40, - 116, - 41 - ] - ], - [ - [ - 9392, - 9392 - ], - "disallowed_STD3_mapped", - [ - 40, - 117, - 41 - ] - ], - [ - [ - 9393, - 9393 - ], - "disallowed_STD3_mapped", - [ - 40, - 118, - 41 - ] - ], - [ - [ - 9394, - 9394 - ], - "disallowed_STD3_mapped", - [ - 40, - 119, - 41 - ] - ], - [ - [ - 9395, - 9395 - ], - "disallowed_STD3_mapped", - [ - 40, - 120, - 41 - ] - ], - [ - [ - 9396, - 9396 - ], - "disallowed_STD3_mapped", - [ - 40, - 121, - 41 - ] - ], - [ - [ - 9397, - 9397 - ], - "disallowed_STD3_mapped", - [ - 40, - 122, - 41 - ] - ], - [ - [ - 9398, - 9398 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 9399, - 9399 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 9400, - 9400 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 9401, - 9401 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 9402, - 9402 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 9403, - 9403 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 9404, - 9404 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 9405, - 9405 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 9406, - 9406 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 9407, - 9407 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 9408, - 9408 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 9409, - 9409 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 9410, - 9410 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 9411, - 9411 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 9412, - 9412 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 9413, - 9413 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 9414, - 9414 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 9415, - 9415 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 9416, - 9416 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 9417, - 9417 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 9418, - 9418 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 9419, - 9419 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 9420, - 9420 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 9421, - 9421 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 9422, - 9422 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 9423, - 9423 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 9424, - 9424 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 9425, - 9425 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 9426, - 9426 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 9427, - 9427 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 9428, - 9428 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 9429, - 9429 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 9430, - 9430 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 9431, - 9431 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 9432, - 9432 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 9433, - 9433 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 9434, - 9434 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 9435, - 9435 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 9436, - 9436 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 9437, - 9437 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 9438, - 9438 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 9439, - 9439 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 9440, - 9440 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 9441, - 9441 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 9442, - 9442 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 9443, - 9443 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 9444, - 9444 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 9445, - 9445 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 9446, - 9446 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 9447, - 9447 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 9448, - 9448 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 9449, - 9449 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 9450, - 9450 - ], - "mapped", - [ - 48 - ] - ], - [ - [ - 9451, - 9470 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9471, - 9471 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9472, - 9621 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9622, - 9631 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9632, - 9711 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9712, - 9719 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9720, - 9727 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9728, - 9747 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9748, - 9749 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9750, - 9751 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9752, - 9752 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9753, - 9753 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9754, - 9839 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9840, - 9841 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9842, - 9853 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9854, - 9855 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9856, - 9865 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9866, - 9873 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9874, - 9884 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9885, - 9885 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9886, - 9887 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9888, - 9889 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9890, - 9905 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9906, - 9906 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9907, - 9916 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9917, - 9919 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9920, - 9923 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9924, - 9933 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9934, - 9934 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9935, - 9953 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9954, - 9954 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9955, - 9955 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9956, - 9959 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9960, - 9983 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9984, - 9984 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9985, - 9988 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9989, - 9989 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9990, - 9993 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9994, - 9995 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9996, - 10023 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10024, - 10024 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10025, - 10059 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10060, - 10060 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10061, - 10061 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10062, - 10062 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10063, - 10066 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10067, - 10069 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10070, - 10070 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10071, - 10071 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10072, - 10078 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10079, - 10080 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10081, - 10087 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10088, - 10101 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10102, - 10132 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10133, - 10135 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10136, - 10159 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10160, - 10160 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10161, - 10174 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10175, - 10175 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10176, - 10182 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10183, - 10186 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10187, - 10187 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10188, - 10188 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10189, - 10189 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10190, - 10191 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10192, - 10219 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10220, - 10223 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10224, - 10239 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10240, - 10495 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10496, - 10763 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10764, - 10764 - ], - "mapped", - [ - 8747, - 8747, - 8747, - 8747 - ] - ], - [ - [ - 10765, - 10867 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10868, - 10868 - ], - "disallowed_STD3_mapped", - [ - 58, - 58, - 61 - ] - ], - [ - [ - 10869, - 10869 - ], - "disallowed_STD3_mapped", - [ - 61, - 61 - ] - ], - [ - [ - 10870, - 10870 - ], - "disallowed_STD3_mapped", - [ - 61, - 61, - 61 - ] - ], - [ - [ - 10871, - 10971 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10972, - 10972 - ], - "mapped", - [ - 10973, - 824 - ] - ], - [ - [ - 10973, - 11007 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11008, - 11021 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11022, - 11027 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11028, - 11034 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11035, - 11039 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11040, - 11043 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11044, - 11084 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11085, - 11087 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11088, - 11092 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11093, - 11097 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11098, - 11123 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11124, - 11125 - ], - "disallowed" - ], - [ - [ - 11126, - 11157 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11158, - 11159 - ], - "disallowed" - ], - [ - [ - 11160, - 11193 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11194, - 11196 - ], - "disallowed" - ], - [ - [ - 11197, - 11208 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11209, - 11209 - ], - "disallowed" - ], - [ - [ - 11210, - 11217 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11218, - 11243 - ], - "disallowed" - ], - [ - [ - 11244, - 11247 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11248, - 11263 - ], - "disallowed" - ], - [ - [ - 11264, - 11264 - ], - "mapped", - [ - 11312 - ] - ], - [ - [ - 11265, - 11265 - ], - "mapped", - [ - 11313 - ] - ], - [ - [ - 11266, - 11266 - ], - "mapped", - [ - 11314 - ] - ], - [ - [ - 11267, - 11267 - ], - "mapped", - [ - 11315 - ] - ], - [ - [ - 11268, - 11268 - ], - "mapped", - [ - 11316 - ] - ], - [ - [ - 11269, - 11269 - ], - "mapped", - [ - 11317 - ] - ], - [ - [ - 11270, - 11270 - ], - "mapped", - [ - 11318 - ] - ], - [ - [ - 11271, - 11271 - ], - "mapped", - [ - 11319 - ] - ], - [ - [ - 11272, - 11272 - ], - "mapped", - [ - 11320 - ] - ], - [ - [ - 11273, - 11273 - ], - "mapped", - [ - 11321 - ] - ], - [ - [ - 11274, - 11274 - ], - "mapped", - [ - 11322 - ] - ], - [ - [ - 11275, - 11275 - ], - "mapped", - [ - 11323 - ] - ], - [ - [ - 11276, - 11276 - ], - "mapped", - [ - 11324 - ] - ], - [ - [ - 11277, - 11277 - ], - "mapped", - [ - 11325 - ] - ], - [ - [ - 11278, - 11278 - ], - "mapped", - [ - 11326 - ] - ], - [ - [ - 11279, - 11279 - ], - "mapped", - [ - 11327 - ] - ], - [ - [ - 11280, - 11280 - ], - "mapped", - [ - 11328 - ] - ], - [ - [ - 11281, - 11281 - ], - "mapped", - [ - 11329 - ] - ], - [ - [ - 11282, - 11282 - ], - "mapped", - [ - 11330 - ] - ], - [ - [ - 11283, - 11283 - ], - "mapped", - [ - 11331 - ] - ], - [ - [ - 11284, - 11284 - ], - "mapped", - [ - 11332 - ] - ], - [ - [ - 11285, - 11285 - ], - "mapped", - [ - 11333 - ] - ], - [ - [ - 11286, - 11286 - ], - "mapped", - [ - 11334 - ] - ], - [ - [ - 11287, - 11287 - ], - "mapped", - [ - 11335 - ] - ], - [ - [ - 11288, - 11288 - ], - "mapped", - [ - 11336 - ] - ], - [ - [ - 11289, - 11289 - ], - "mapped", - [ - 11337 - ] - ], - [ - [ - 11290, - 11290 - ], - "mapped", - [ - 11338 - ] - ], - [ - [ - 11291, - 11291 - ], - "mapped", - [ - 11339 - ] - ], - [ - [ - 11292, - 11292 - ], - "mapped", - [ - 11340 - ] - ], - [ - [ - 11293, - 11293 - ], - "mapped", - [ - 11341 - ] - ], - [ - [ - 11294, - 11294 - ], - "mapped", - [ - 11342 - ] - ], - [ - [ - 11295, - 11295 - ], - "mapped", - [ - 11343 - ] - ], - [ - [ - 11296, - 11296 - ], - "mapped", - [ - 11344 - ] - ], - [ - [ - 11297, - 11297 - ], - "mapped", - [ - 11345 - ] - ], - [ - [ - 11298, - 11298 - ], - "mapped", - [ - 11346 - ] - ], - [ - [ - 11299, - 11299 - ], - "mapped", - [ - 11347 - ] - ], - [ - [ - 11300, - 11300 - ], - "mapped", - [ - 11348 - ] - ], - [ - [ - 11301, - 11301 - ], - "mapped", - [ - 11349 - ] - ], - [ - [ - 11302, - 11302 - ], - "mapped", - [ - 11350 - ] - ], - [ - [ - 11303, - 11303 - ], - "mapped", - [ - 11351 - ] - ], - [ - [ - 11304, - 11304 - ], - "mapped", - [ - 11352 - ] - ], - [ - [ - 11305, - 11305 - ], - "mapped", - [ - 11353 - ] - ], - [ - [ - 11306, - 11306 - ], - "mapped", - [ - 11354 - ] - ], - [ - [ - 11307, - 11307 - ], - "mapped", - [ - 11355 - ] - ], - [ - [ - 11308, - 11308 - ], - "mapped", - [ - 11356 - ] - ], - [ - [ - 11309, - 11309 - ], - "mapped", - [ - 11357 - ] - ], - [ - [ - 11310, - 11310 - ], - "mapped", - [ - 11358 - ] - ], - [ - [ - 11311, - 11311 - ], - "disallowed" - ], - [ - [ - 11312, - 11358 - ], - "valid" - ], - [ - [ - 11359, - 11359 - ], - "disallowed" - ], - [ - [ - 11360, - 11360 - ], - "mapped", - [ - 11361 - ] - ], - [ - [ - 11361, - 11361 - ], - "valid" - ], - [ - [ - 11362, - 11362 - ], - "mapped", - [ - 619 - ] - ], - [ - [ - 11363, - 11363 - ], - "mapped", - [ - 7549 - ] - ], - [ - [ - 11364, - 11364 - ], - "mapped", - [ - 637 - ] - ], - [ - [ - 11365, - 11366 - ], - "valid" - ], - [ - [ - 11367, - 11367 - ], - "mapped", - [ - 11368 - ] - ], - [ - [ - 11368, - 11368 - ], - "valid" - ], - [ - [ - 11369, - 11369 - ], - "mapped", - [ - 11370 - ] - ], - [ - [ - 11370, - 11370 - ], - "valid" - ], - [ - [ - 11371, - 11371 - ], - "mapped", - [ - 11372 - ] - ], - [ - [ - 11372, - 11372 - ], - "valid" - ], - [ - [ - 11373, - 11373 - ], - "mapped", - [ - 593 - ] - ], - [ - [ - 11374, - 11374 - ], - "mapped", - [ - 625 - ] - ], - [ - [ - 11375, - 11375 - ], - "mapped", - [ - 592 - ] - ], - [ - [ - 11376, - 11376 - ], - "mapped", - [ - 594 - ] - ], - [ - [ - 11377, - 11377 - ], - "valid" - ], - [ - [ - 11378, - 11378 - ], - "mapped", - [ - 11379 - ] - ], - [ - [ - 11379, - 11379 - ], - "valid" - ], - [ - [ - 11380, - 11380 - ], - "valid" - ], - [ - [ - 11381, - 11381 - ], - "mapped", - [ - 11382 - ] - ], - [ - [ - 11382, - 11383 - ], - "valid" - ], - [ - [ - 11384, - 11387 - ], - "valid" - ], - [ - [ - 11388, - 11388 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 11389, - 11389 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 11390, - 11390 - ], - "mapped", - [ - 575 - ] - ], - [ - [ - 11391, - 11391 - ], - "mapped", - [ - 576 - ] - ], - [ - [ - 11392, - 11392 - ], - "mapped", - [ - 11393 - ] - ], - [ - [ - 11393, - 11393 - ], - "valid" - ], - [ - [ - 11394, - 11394 - ], - "mapped", - [ - 11395 - ] - ], - [ - [ - 11395, - 11395 - ], - "valid" - ], - [ - [ - 11396, - 11396 - ], - "mapped", - [ - 11397 - ] - ], - [ - [ - 11397, - 11397 - ], - "valid" - ], - [ - [ - 11398, - 11398 - ], - "mapped", - [ - 11399 - ] - ], - [ - [ - 11399, - 11399 - ], - "valid" - ], - [ - [ - 11400, - 11400 - ], - "mapped", - [ - 11401 - ] - ], - [ - [ - 11401, - 11401 - ], - "valid" - ], - [ - [ - 11402, - 11402 - ], - "mapped", - [ - 11403 - ] - ], - [ - [ - 11403, - 11403 - ], - "valid" - ], - [ - [ - 11404, - 11404 - ], - "mapped", - [ - 11405 - ] - ], - [ - [ - 11405, - 11405 - ], - "valid" - ], - [ - [ - 11406, - 11406 - ], - "mapped", - [ - 11407 - ] - ], - [ - [ - 11407, - 11407 - ], - "valid" - ], - [ - [ - 11408, - 11408 - ], - "mapped", - [ - 11409 - ] - ], - [ - [ - 11409, - 11409 - ], - "valid" - ], - [ - [ - 11410, - 11410 - ], - "mapped", - [ - 11411 - ] - ], - [ - [ - 11411, - 11411 - ], - "valid" - ], - [ - [ - 11412, - 11412 - ], - "mapped", - [ - 11413 - ] - ], - [ - [ - 11413, - 11413 - ], - "valid" - ], - [ - [ - 11414, - 11414 - ], - "mapped", - [ - 11415 - ] - ], - [ - [ - 11415, - 11415 - ], - "valid" - ], - [ - [ - 11416, - 11416 - ], - "mapped", - [ - 11417 - ] - ], - [ - [ - 11417, - 11417 - ], - "valid" - ], - [ - [ - 11418, - 11418 - ], - "mapped", - [ - 11419 - ] - ], - [ - [ - 11419, - 11419 - ], - "valid" - ], - [ - [ - 11420, - 11420 - ], - "mapped", - [ - 11421 - ] - ], - [ - [ - 11421, - 11421 - ], - "valid" - ], - [ - [ - 11422, - 11422 - ], - "mapped", - [ - 11423 - ] - ], - [ - [ - 11423, - 11423 - ], - "valid" - ], - [ - [ - 11424, - 11424 - ], - "mapped", - [ - 11425 - ] - ], - [ - [ - 11425, - 11425 - ], - "valid" - ], - [ - [ - 11426, - 11426 - ], - "mapped", - [ - 11427 - ] - ], - [ - [ - 11427, - 11427 - ], - "valid" - ], - [ - [ - 11428, - 11428 - ], - "mapped", - [ - 11429 - ] - ], - [ - [ - 11429, - 11429 - ], - "valid" - ], - [ - [ - 11430, - 11430 - ], - "mapped", - [ - 11431 - ] - ], - [ - [ - 11431, - 11431 - ], - "valid" - ], - [ - [ - 11432, - 11432 - ], - "mapped", - [ - 11433 - ] - ], - [ - [ - 11433, - 11433 - ], - "valid" - ], - [ - [ - 11434, - 11434 - ], - "mapped", - [ - 11435 - ] - ], - [ - [ - 11435, - 11435 - ], - "valid" - ], - [ - [ - 11436, - 11436 - ], - "mapped", - [ - 11437 - ] - ], - [ - [ - 11437, - 11437 - ], - "valid" - ], - [ - [ - 11438, - 11438 - ], - "mapped", - [ - 11439 - ] - ], - [ - [ - 11439, - 11439 - ], - "valid" - ], - [ - [ - 11440, - 11440 - ], - "mapped", - [ - 11441 - ] - ], - [ - [ - 11441, - 11441 - ], - "valid" - ], - [ - [ - 11442, - 11442 - ], - "mapped", - [ - 11443 - ] - ], - [ - [ - 11443, - 11443 - ], - "valid" - ], - [ - [ - 11444, - 11444 - ], - "mapped", - [ - 11445 - ] - ], - [ - [ - 11445, - 11445 - ], - "valid" - ], - [ - [ - 11446, - 11446 - ], - "mapped", - [ - 11447 - ] - ], - [ - [ - 11447, - 11447 - ], - "valid" - ], - [ - [ - 11448, - 11448 - ], - "mapped", - [ - 11449 - ] - ], - [ - [ - 11449, - 11449 - ], - "valid" - ], - [ - [ - 11450, - 11450 - ], - "mapped", - [ - 11451 - ] - ], - [ - [ - 11451, - 11451 - ], - "valid" - ], - [ - [ - 11452, - 11452 - ], - "mapped", - [ - 11453 - ] - ], - [ - [ - 11453, - 11453 - ], - "valid" - ], - [ - [ - 11454, - 11454 - ], - "mapped", - [ - 11455 - ] - ], - [ - [ - 11455, - 11455 - ], - "valid" - ], - [ - [ - 11456, - 11456 - ], - "mapped", - [ - 11457 - ] - ], - [ - [ - 11457, - 11457 - ], - "valid" - ], - [ - [ - 11458, - 11458 - ], - "mapped", - [ - 11459 - ] - ], - [ - [ - 11459, - 11459 - ], - "valid" - ], - [ - [ - 11460, - 11460 - ], - "mapped", - [ - 11461 - ] - ], - [ - [ - 11461, - 11461 - ], - "valid" - ], - [ - [ - 11462, - 11462 - ], - "mapped", - [ - 11463 - ] - ], - [ - [ - 11463, - 11463 - ], - "valid" - ], - [ - [ - 11464, - 11464 - ], - "mapped", - [ - 11465 - ] - ], - [ - [ - 11465, - 11465 - ], - "valid" - ], - [ - [ - 11466, - 11466 - ], - "mapped", - [ - 11467 - ] - ], - [ - [ - 11467, - 11467 - ], - "valid" - ], - [ - [ - 11468, - 11468 - ], - "mapped", - [ - 11469 - ] - ], - [ - [ - 11469, - 11469 - ], - "valid" - ], - [ - [ - 11470, - 11470 - ], - "mapped", - [ - 11471 - ] - ], - [ - [ - 11471, - 11471 - ], - "valid" - ], - [ - [ - 11472, - 11472 - ], - "mapped", - [ - 11473 - ] - ], - [ - [ - 11473, - 11473 - ], - "valid" - ], - [ - [ - 11474, - 11474 - ], - "mapped", - [ - 11475 - ] - ], - [ - [ - 11475, - 11475 - ], - "valid" - ], - [ - [ - 11476, - 11476 - ], - "mapped", - [ - 11477 - ] - ], - [ - [ - 11477, - 11477 - ], - "valid" - ], - [ - [ - 11478, - 11478 - ], - "mapped", - [ - 11479 - ] - ], - [ - [ - 11479, - 11479 - ], - "valid" - ], - [ - [ - 11480, - 11480 - ], - "mapped", - [ - 11481 - ] - ], - [ - [ - 11481, - 11481 - ], - "valid" - ], - [ - [ - 11482, - 11482 - ], - "mapped", - [ - 11483 - ] - ], - [ - [ - 11483, - 11483 - ], - "valid" - ], - [ - [ - 11484, - 11484 - ], - "mapped", - [ - 11485 - ] - ], - [ - [ - 11485, - 11485 - ], - "valid" - ], - [ - [ - 11486, - 11486 - ], - "mapped", - [ - 11487 - ] - ], - [ - [ - 11487, - 11487 - ], - "valid" - ], - [ - [ - 11488, - 11488 - ], - "mapped", - [ - 11489 - ] - ], - [ - [ - 11489, - 11489 - ], - "valid" - ], - [ - [ - 11490, - 11490 - ], - "mapped", - [ - 11491 - ] - ], - [ - [ - 11491, - 11492 - ], - "valid" - ], - [ - [ - 11493, - 11498 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11499, - 11499 - ], - "mapped", - [ - 11500 - ] - ], - [ - [ - 11500, - 11500 - ], - "valid" - ], - [ - [ - 11501, - 11501 - ], - "mapped", - [ - 11502 - ] - ], - [ - [ - 11502, - 11505 - ], - "valid" - ], - [ - [ - 11506, - 11506 - ], - "mapped", - [ - 11507 - ] - ], - [ - [ - 11507, - 11507 - ], - "valid" - ], - [ - [ - 11508, - 11512 - ], - "disallowed" - ], - [ - [ - 11513, - 11519 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11520, - 11557 - ], - "valid" - ], - [ - [ - 11558, - 11558 - ], - "disallowed" - ], - [ - [ - 11559, - 11559 - ], - "valid" - ], - [ - [ - 11560, - 11564 - ], - "disallowed" - ], - [ - [ - 11565, - 11565 - ], - "valid" - ], - [ - [ - 11566, - 11567 - ], - "disallowed" - ], - [ - [ - 11568, - 11621 - ], - "valid" - ], - [ - [ - 11622, - 11623 - ], - "valid" - ], - [ - [ - 11624, - 11630 - ], - "disallowed" - ], - [ - [ - 11631, - 11631 - ], - "mapped", - [ - 11617 - ] - ], - [ - [ - 11632, - 11632 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11633, - 11646 - ], - "disallowed" - ], - [ - [ - 11647, - 11647 - ], - "valid" - ], - [ - [ - 11648, - 11670 - ], - "valid" - ], - [ - [ - 11671, - 11679 - ], - "disallowed" - ], - [ - [ - 11680, - 11686 - ], - "valid" - ], - [ - [ - 11687, - 11687 - ], - "disallowed" - ], - [ - [ - 11688, - 11694 - ], - "valid" - ], - [ - [ - 11695, - 11695 - ], - "disallowed" - ], - [ - [ - 11696, - 11702 - ], - "valid" - ], - [ - [ - 11703, - 11703 - ], - "disallowed" - ], - [ - [ - 11704, - 11710 - ], - "valid" - ], - [ - [ - 11711, - 11711 - ], - "disallowed" - ], - [ - [ - 11712, - 11718 - ], - "valid" - ], - [ - [ - 11719, - 11719 - ], - "disallowed" - ], - [ - [ - 11720, - 11726 - ], - "valid" - ], - [ - [ - 11727, - 11727 - ], - "disallowed" - ], - [ - [ - 11728, - 11734 - ], - "valid" - ], - [ - [ - 11735, - 11735 - ], - "disallowed" - ], - [ - [ - 11736, - 11742 - ], - "valid" - ], - [ - [ - 11743, - 11743 - ], - "disallowed" - ], - [ - [ - 11744, - 11775 - ], - "valid" - ], - [ - [ - 11776, - 11799 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11800, - 11803 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11804, - 11805 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11806, - 11822 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11823, - 11823 - ], - "valid" - ], - [ - [ - 11824, - 11824 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11825, - 11825 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11826, - 11835 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11836, - 11842 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11843, - 11903 - ], - "disallowed" - ], - [ - [ - 11904, - 11929 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11930, - 11930 - ], - "disallowed" - ], - [ - [ - 11931, - 11934 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11935, - 11935 - ], - "mapped", - [ - 27597 - ] - ], - [ - [ - 11936, - 12018 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 12019, - 12019 - ], - "mapped", - [ - 40863 - ] - ], - [ - [ - 12020, - 12031 - ], - "disallowed" - ], - [ - [ - 12032, - 12032 - ], - "mapped", - [ - 19968 - ] - ], - [ - [ - 12033, - 12033 - ], - "mapped", - [ - 20008 - ] - ], - [ - [ - 12034, - 12034 - ], - "mapped", - [ - 20022 - ] - ], - [ - [ - 12035, - 12035 - ], - "mapped", - [ - 20031 - ] - ], - [ - [ - 12036, - 12036 - ], - "mapped", - [ - 20057 - ] - ], - [ - [ - 12037, - 12037 - ], - "mapped", - [ - 20101 - ] - ], - [ - [ - 12038, - 12038 - ], - "mapped", - [ - 20108 - ] - ], - [ - [ - 12039, - 12039 - ], - "mapped", - [ - 20128 - ] - ], - [ - [ - 12040, - 12040 - ], - "mapped", - [ - 20154 - ] - ], - [ - [ - 12041, - 12041 - ], - "mapped", - [ - 20799 - ] - ], - [ - [ - 12042, - 12042 - ], - "mapped", - [ - 20837 - ] - ], - [ - [ - 12043, - 12043 - ], - "mapped", - [ - 20843 - ] - ], - [ - [ - 12044, - 12044 - ], - "mapped", - [ - 20866 - ] - ], - [ - [ - 12045, - 12045 - ], - "mapped", - [ - 20886 - ] - ], - [ - [ - 12046, - 12046 - ], - "mapped", - [ - 20907 - ] - ], - [ - [ - 12047, - 12047 - ], - "mapped", - [ - 20960 - ] - ], - [ - [ - 12048, - 12048 - ], - "mapped", - [ - 20981 - ] - ], - [ - [ - 12049, - 12049 - ], - "mapped", - [ - 20992 - ] - ], - [ - [ - 12050, - 12050 - ], - "mapped", - [ - 21147 - ] - ], - [ - [ - 12051, - 12051 - ], - "mapped", - [ - 21241 - ] - ], - [ - [ - 12052, - 12052 - ], - "mapped", - [ - 21269 - ] - ], - [ - [ - 12053, - 12053 - ], - "mapped", - [ - 21274 - ] - ], - [ - [ - 12054, - 12054 - ], - "mapped", - [ - 21304 - ] - ], - [ - [ - 12055, - 12055 - ], - "mapped", - [ - 21313 - ] - ], - [ - [ - 12056, - 12056 - ], - "mapped", - [ - 21340 - ] - ], - [ - [ - 12057, - 12057 - ], - "mapped", - [ - 21353 - ] - ], - [ - [ - 12058, - 12058 - ], - "mapped", - [ - 21378 - ] - ], - [ - [ - 12059, - 12059 - ], - "mapped", - [ - 21430 - ] - ], - [ - [ - 12060, - 12060 - ], - "mapped", - [ - 21448 - ] - ], - [ - [ - 12061, - 12061 - ], - "mapped", - [ - 21475 - ] - ], - [ - [ - 12062, - 12062 - ], - "mapped", - [ - 22231 - ] - ], - [ - [ - 12063, - 12063 - ], - "mapped", - [ - 22303 - ] - ], - [ - [ - 12064, - 12064 - ], - "mapped", - [ - 22763 - ] - ], - [ - [ - 12065, - 12065 - ], - "mapped", - [ - 22786 - ] - ], - [ - [ - 12066, - 12066 - ], - "mapped", - [ - 22794 - ] - ], - [ - [ - 12067, - 12067 - ], - "mapped", - [ - 22805 - ] - ], - [ - [ - 12068, - 12068 - ], - "mapped", - [ - 22823 - ] - ], - [ - [ - 12069, - 12069 - ], - "mapped", - [ - 22899 - ] - ], - [ - [ - 12070, - 12070 - ], - "mapped", - [ - 23376 - ] - ], - [ - [ - 12071, - 12071 - ], - "mapped", - [ - 23424 - ] - ], - [ - [ - 12072, - 12072 - ], - "mapped", - [ - 23544 - ] - ], - [ - [ - 12073, - 12073 - ], - "mapped", - [ - 23567 - ] - ], - [ - [ - 12074, - 12074 - ], - "mapped", - [ - 23586 - ] - ], - [ - [ - 12075, - 12075 - ], - "mapped", - [ - 23608 - ] - ], - [ - [ - 12076, - 12076 - ], - "mapped", - [ - 23662 - ] - ], - [ - [ - 12077, - 12077 - ], - "mapped", - [ - 23665 - ] - ], - [ - [ - 12078, - 12078 - ], - "mapped", - [ - 24027 - ] - ], - [ - [ - 12079, - 12079 - ], - "mapped", - [ - 24037 - ] - ], - [ - [ - 12080, - 12080 - ], - "mapped", - [ - 24049 - ] - ], - [ - [ - 12081, - 12081 - ], - "mapped", - [ - 24062 - ] - ], - [ - [ - 12082, - 12082 - ], - "mapped", - [ - 24178 - ] - ], - [ - [ - 12083, - 12083 - ], - "mapped", - [ - 24186 - ] - ], - [ - [ - 12084, - 12084 - ], - "mapped", - [ - 24191 - ] - ], - [ - [ - 12085, - 12085 - ], - "mapped", - [ - 24308 - ] - ], - [ - [ - 12086, - 12086 - ], - "mapped", - [ - 24318 - ] - ], - [ - [ - 12087, - 12087 - ], - "mapped", - [ - 24331 - ] - ], - [ - [ - 12088, - 12088 - ], - "mapped", - [ - 24339 - ] - ], - [ - [ - 12089, - 12089 - ], - "mapped", - [ - 24400 - ] - ], - [ - [ - 12090, - 12090 - ], - "mapped", - [ - 24417 - ] - ], - [ - [ - 12091, - 12091 - ], - "mapped", - [ - 24435 - ] - ], - [ - [ - 12092, - 12092 - ], - "mapped", - [ - 24515 - ] - ], - [ - [ - 12093, - 12093 - ], - "mapped", - [ - 25096 - ] - ], - [ - [ - 12094, - 12094 - ], - "mapped", - [ - 25142 - ] - ], - [ - [ - 12095, - 12095 - ], - "mapped", - [ - 25163 - ] - ], - [ - [ - 12096, - 12096 - ], - "mapped", - [ - 25903 - ] - ], - [ - [ - 12097, - 12097 - ], - "mapped", - [ - 25908 - ] - ], - [ - [ - 12098, - 12098 - ], - "mapped", - [ - 25991 - ] - ], - [ - [ - 12099, - 12099 - ], - "mapped", - [ - 26007 - ] - ], - [ - [ - 12100, - 12100 - ], - "mapped", - [ - 26020 - ] - ], - [ - [ - 12101, - 12101 - ], - "mapped", - [ - 26041 - ] - ], - [ - [ - 12102, - 12102 - ], - "mapped", - [ - 26080 - ] - ], - [ - [ - 12103, - 12103 - ], - "mapped", - [ - 26085 - ] - ], - [ - [ - 12104, - 12104 - ], - "mapped", - [ - 26352 - ] - ], - [ - [ - 12105, - 12105 - ], - "mapped", - [ - 26376 - ] - ], - [ - [ - 12106, - 12106 - ], - "mapped", - [ - 26408 - ] - ], - [ - [ - 12107, - 12107 - ], - "mapped", - [ - 27424 - ] - ], - [ - [ - 12108, - 12108 - ], - "mapped", - [ - 27490 - ] - ], - [ - [ - 12109, - 12109 - ], - "mapped", - [ - 27513 - ] - ], - [ - [ - 12110, - 12110 - ], - "mapped", - [ - 27571 - ] - ], - [ - [ - 12111, - 12111 - ], - "mapped", - [ - 27595 - ] - ], - [ - [ - 12112, - 12112 - ], - "mapped", - [ - 27604 - ] - ], - [ - [ - 12113, - 12113 - ], - "mapped", - [ - 27611 - ] - ], - [ - [ - 12114, - 12114 - ], - "mapped", - [ - 27663 - ] - ], - [ - [ - 12115, - 12115 - ], - "mapped", - [ - 27668 - ] - ], - [ - [ - 12116, - 12116 - ], - "mapped", - [ - 27700 - ] - ], - [ - [ - 12117, - 12117 - ], - "mapped", - [ - 28779 - ] - ], - [ - [ - 12118, - 12118 - ], - "mapped", - [ - 29226 - ] - ], - [ - [ - 12119, - 12119 - ], - "mapped", - [ - 29238 - ] - ], - [ - [ - 12120, - 12120 - ], - "mapped", - [ - 29243 - ] - ], - [ - [ - 12121, - 12121 - ], - "mapped", - [ - 29247 - ] - ], - [ - [ - 12122, - 12122 - ], - "mapped", - [ - 29255 - ] - ], - [ - [ - 12123, - 12123 - ], - "mapped", - [ - 29273 - ] - ], - [ - [ - 12124, - 12124 - ], - "mapped", - [ - 29275 - ] - ], - [ - [ - 12125, - 12125 - ], - "mapped", - [ - 29356 - ] - ], - [ - [ - 12126, - 12126 - ], - "mapped", - [ - 29572 - ] - ], - [ - [ - 12127, - 12127 - ], - "mapped", - [ - 29577 - ] - ], - [ - [ - 12128, - 12128 - ], - "mapped", - [ - 29916 - ] - ], - [ - [ - 12129, - 12129 - ], - "mapped", - [ - 29926 - ] - ], - [ - [ - 12130, - 12130 - ], - "mapped", - [ - 29976 - ] - ], - [ - [ - 12131, - 12131 - ], - "mapped", - [ - 29983 - ] - ], - [ - [ - 12132, - 12132 - ], - "mapped", - [ - 29992 - ] - ], - [ - [ - 12133, - 12133 - ], - "mapped", - [ - 30000 - ] - ], - [ - [ - 12134, - 12134 - ], - "mapped", - [ - 30091 - ] - ], - [ - [ - 12135, - 12135 - ], - "mapped", - [ - 30098 - ] - ], - [ - [ - 12136, - 12136 - ], - "mapped", - [ - 30326 - ] - ], - [ - [ - 12137, - 12137 - ], - "mapped", - [ - 30333 - ] - ], - [ - [ - 12138, - 12138 - ], - "mapped", - [ - 30382 - ] - ], - [ - [ - 12139, - 12139 - ], - "mapped", - [ - 30399 - ] - ], - [ - [ - 12140, - 12140 - ], - "mapped", - [ - 30446 - ] - ], - [ - [ - 12141, - 12141 - ], - "mapped", - [ - 30683 - ] - ], - [ - [ - 12142, - 12142 - ], - "mapped", - [ - 30690 - ] - ], - [ - [ - 12143, - 12143 - ], - "mapped", - [ - 30707 - ] - ], - [ - [ - 12144, - 12144 - ], - "mapped", - [ - 31034 - ] - ], - [ - [ - 12145, - 12145 - ], - "mapped", - [ - 31160 - ] - ], - [ - [ - 12146, - 12146 - ], - "mapped", - [ - 31166 - ] - ], - [ - [ - 12147, - 12147 - ], - "mapped", - [ - 31348 - ] - ], - [ - [ - 12148, - 12148 - ], - "mapped", - [ - 31435 - ] - ], - [ - [ - 12149, - 12149 - ], - "mapped", - [ - 31481 - ] - ], - [ - [ - 12150, - 12150 - ], - "mapped", - [ - 31859 - ] - ], - [ - [ - 12151, - 12151 - ], - "mapped", - [ - 31992 - ] - ], - [ - [ - 12152, - 12152 - ], - "mapped", - [ - 32566 - ] - ], - [ - [ - 12153, - 12153 - ], - "mapped", - [ - 32593 - ] - ], - [ - [ - 12154, - 12154 - ], - "mapped", - [ - 32650 - ] - ], - [ - [ - 12155, - 12155 - ], - "mapped", - [ - 32701 - ] - ], - [ - [ - 12156, - 12156 - ], - "mapped", - [ - 32769 - ] - ], - [ - [ - 12157, - 12157 - ], - "mapped", - [ - 32780 - ] - ], - [ - [ - 12158, - 12158 - ], - "mapped", - [ - 32786 - ] - ], - [ - [ - 12159, - 12159 - ], - "mapped", - [ - 32819 - ] - ], - [ - [ - 12160, - 12160 - ], - "mapped", - [ - 32895 - ] - ], - [ - [ - 12161, - 12161 - ], - "mapped", - [ - 32905 - ] - ], - [ - [ - 12162, - 12162 - ], - "mapped", - [ - 33251 - ] - ], - [ - [ - 12163, - 12163 - ], - "mapped", - [ - 33258 - ] - ], - [ - [ - 12164, - 12164 - ], - "mapped", - [ - 33267 - ] - ], - [ - [ - 12165, - 12165 - ], - "mapped", - [ - 33276 - ] - ], - [ - [ - 12166, - 12166 - ], - "mapped", - [ - 33292 - ] - ], - [ - [ - 12167, - 12167 - ], - "mapped", - [ - 33307 - ] - ], - [ - [ - 12168, - 12168 - ], - "mapped", - [ - 33311 - ] - ], - [ - [ - 12169, - 12169 - ], - "mapped", - [ - 33390 - ] - ], - [ - [ - 12170, - 12170 - ], - "mapped", - [ - 33394 - ] - ], - [ - [ - 12171, - 12171 - ], - "mapped", - [ - 33400 - ] - ], - [ - [ - 12172, - 12172 - ], - "mapped", - [ - 34381 - ] - ], - [ - [ - 12173, - 12173 - ], - "mapped", - [ - 34411 - ] - ], - [ - [ - 12174, - 12174 - ], - "mapped", - [ - 34880 - ] - ], - [ - [ - 12175, - 12175 - ], - "mapped", - [ - 34892 - ] - ], - [ - [ - 12176, - 12176 - ], - "mapped", - [ - 34915 - ] - ], - [ - [ - 12177, - 12177 - ], - "mapped", - [ - 35198 - ] - ], - [ - [ - 12178, - 12178 - ], - "mapped", - [ - 35211 - ] - ], - [ - [ - 12179, - 12179 - ], - "mapped", - [ - 35282 - ] - ], - [ - [ - 12180, - 12180 - ], - "mapped", - [ - 35328 - ] - ], - [ - [ - 12181, - 12181 - ], - "mapped", - [ - 35895 - ] - ], - [ - [ - 12182, - 12182 - ], - "mapped", - [ - 35910 - ] - ], - [ - [ - 12183, - 12183 - ], - "mapped", - [ - 35925 - ] - ], - [ - [ - 12184, - 12184 - ], - "mapped", - [ - 35960 - ] - ], - [ - [ - 12185, - 12185 - ], - "mapped", - [ - 35997 - ] - ], - [ - [ - 12186, - 12186 - ], - "mapped", - [ - 36196 - ] - ], - [ - [ - 12187, - 12187 - ], - "mapped", - [ - 36208 - ] - ], - [ - [ - 12188, - 12188 - ], - "mapped", - [ - 36275 - ] - ], - [ - [ - 12189, - 12189 - ], - "mapped", - [ - 36523 - ] - ], - [ - [ - 12190, - 12190 - ], - "mapped", - [ - 36554 - ] - ], - [ - [ - 12191, - 12191 - ], - "mapped", - [ - 36763 - ] - ], - [ - [ - 12192, - 12192 - ], - "mapped", - [ - 36784 - ] - ], - [ - [ - 12193, - 12193 - ], - "mapped", - [ - 36789 - ] - ], - [ - [ - 12194, - 12194 - ], - "mapped", - [ - 37009 - ] - ], - [ - [ - 12195, - 12195 - ], - "mapped", - [ - 37193 - ] - ], - [ - [ - 12196, - 12196 - ], - "mapped", - [ - 37318 - ] - ], - [ - [ - 12197, - 12197 - ], - "mapped", - [ - 37324 - ] - ], - [ - [ - 12198, - 12198 - ], - "mapped", - [ - 37329 - ] - ], - [ - [ - 12199, - 12199 - ], - "mapped", - [ - 38263 - ] - ], - [ - [ - 12200, - 12200 - ], - "mapped", - [ - 38272 - ] - ], - [ - [ - 12201, - 12201 - ], - "mapped", - [ - 38428 - ] - ], - [ - [ - 12202, - 12202 - ], - "mapped", - [ - 38582 - ] - ], - [ - [ - 12203, - 12203 - ], - "mapped", - [ - 38585 - ] - ], - [ - [ - 12204, - 12204 - ], - "mapped", - [ - 38632 - ] - ], - [ - [ - 12205, - 12205 - ], - "mapped", - [ - 38737 - ] - ], - [ - [ - 12206, - 12206 - ], - "mapped", - [ - 38750 - ] - ], - [ - [ - 12207, - 12207 - ], - "mapped", - [ - 38754 - ] - ], - [ - [ - 12208, - 12208 - ], - "mapped", - [ - 38761 - ] - ], - [ - [ - 12209, - 12209 - ], - "mapped", - [ - 38859 - ] - ], - [ - [ - 12210, - 12210 - ], - "mapped", - [ - 38893 - ] - ], - [ - [ - 12211, - 12211 - ], - "mapped", - [ - 38899 - ] - ], - [ - [ - 12212, - 12212 - ], - "mapped", - [ - 38913 - ] - ], - [ - [ - 12213, - 12213 - ], - "mapped", - [ - 39080 - ] - ], - [ - [ - 12214, - 12214 - ], - "mapped", - [ - 39131 - ] - ], - [ - [ - 12215, - 12215 - ], - "mapped", - [ - 39135 - ] - ], - [ - [ - 12216, - 12216 - ], - "mapped", - [ - 39318 - ] - ], - [ - [ - 12217, - 12217 - ], - "mapped", - [ - 39321 - ] - ], - [ - [ - 12218, - 12218 - ], - "mapped", - [ - 39340 - ] - ], - [ - [ - 12219, - 12219 - ], - "mapped", - [ - 39592 - ] - ], - [ - [ - 12220, - 12220 - ], - "mapped", - [ - 39640 - ] - ], - [ - [ - 12221, - 12221 - ], - "mapped", - [ - 39647 - ] - ], - [ - [ - 12222, - 12222 - ], - "mapped", - [ - 39717 - ] - ], - [ - [ - 12223, - 12223 - ], - "mapped", - [ - 39727 - ] - ], - [ - [ - 12224, - 12224 - ], - "mapped", - [ - 39730 - ] - ], - [ - [ - 12225, - 12225 - ], - "mapped", - [ - 39740 - ] - ], - [ - [ - 12226, - 12226 - ], - "mapped", - [ - 39770 - ] - ], - [ - [ - 12227, - 12227 - ], - "mapped", - [ - 40165 - ] - ], - [ - [ - 12228, - 12228 - ], - "mapped", - [ - 40565 - ] - ], - [ - [ - 12229, - 12229 - ], - "mapped", - [ - 40575 - ] - ], - [ - [ - 12230, - 12230 - ], - "mapped", - [ - 40613 - ] - ], - [ - [ - 12231, - 12231 - ], - "mapped", - [ - 40635 - ] - ], - [ - [ - 12232, - 12232 - ], - "mapped", - [ - 40643 - ] - ], - [ - [ - 12233, - 12233 - ], - "mapped", - [ - 40653 - ] - ], - [ - [ - 12234, - 12234 - ], - "mapped", - [ - 40657 - ] - ], - [ - [ - 12235, - 12235 - ], - "mapped", - [ - 40697 - ] - ], - [ - [ - 12236, - 12236 - ], - "mapped", - [ - 40701 - ] - ], - [ - [ - 12237, - 12237 - ], - "mapped", - [ - 40718 - ] - ], - [ - [ - 12238, - 12238 - ], - "mapped", - [ - 40723 - ] - ], - [ - [ - 12239, - 12239 - ], - "mapped", - [ - 40736 - ] - ], - [ - [ - 12240, - 12240 - ], - "mapped", - [ - 40763 - ] - ], - [ - [ - 12241, - 12241 - ], - "mapped", - [ - 40778 - ] - ], - [ - [ - 12242, - 12242 - ], - "mapped", - [ - 40786 - ] - ], - [ - [ - 12243, - 12243 - ], - "mapped", - [ - 40845 - ] - ], - [ - [ - 12244, - 12244 - ], - "mapped", - [ - 40860 - ] - ], - [ - [ - 12245, - 12245 - ], - "mapped", - [ - 40864 - ] - ], - [ - [ - 12246, - 12271 - ], - "disallowed" - ], - [ - [ - 12272, - 12283 - ], - "disallowed" - ], - [ - [ - 12284, - 12287 - ], - "disallowed" - ], - [ - [ - 12288, - 12288 - ], - "disallowed_STD3_mapped", - [ - 32 - ] - ], - [ - [ - 12289, - 12289 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 12290, - 12290 - ], - "mapped", - [ - 46 - ] - ], - [ - [ - 12291, - 12292 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 12293, - 12295 - ], - "valid" - ], - [ - [ - 12296, - 12329 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 12330, - 12333 - ], - "valid" - ], - [ - [ - 12334, - 12341 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 12342, - 12342 - ], - "mapped", - [ - 12306 - ] - ], - [ - [ - 12343, - 12343 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 12344, - 12344 - ], - "mapped", - [ - 21313 - ] - ], - [ - [ - 12345, - 12345 - ], - "mapped", - [ - 21316 - ] - ], - [ - [ - 12346, - 12346 - ], - "mapped", - [ - 21317 - ] - ], - [ - [ - 12347, - 12347 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 12348, - 12348 - ], - "valid" - ], - [ - [ - 12349, - 12349 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 12350, - 12350 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 12351, - 12351 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 12352, - 12352 - ], - "disallowed" - ], - [ - [ - 12353, - 12436 - ], - "valid" - ], - [ - [ - 12437, - 12438 - ], - "valid" - ], - [ - [ - 12439, - 12440 - ], - "disallowed" - ], - [ - [ - 12441, - 12442 - ], - "valid" - ], - [ - [ - 12443, - 12443 - ], - "disallowed_STD3_mapped", - [ - 32, - 12441 - ] - ], - [ - [ - 12444, - 12444 - ], - "disallowed_STD3_mapped", - [ - 32, - 12442 - ] - ], - [ - [ - 12445, - 12446 - ], - "valid" - ], - [ - [ - 12447, - 12447 - ], - "mapped", - [ - 12424, - 12426 - ] - ], - [ - [ - 12448, - 12448 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 12449, - 12542 - ], - "valid" - ], - [ - [ - 12543, - 12543 - ], - "mapped", - [ - 12467, - 12488 - ] - ], - [ - [ - 12544, - 12548 - ], - "disallowed" - ], - [ - [ - 12549, - 12588 - ], - "valid" - ], - [ - [ - 12589, - 12589 - ], - "valid" - ], - [ - [ - 12590, - 12592 - ], - "disallowed" - ], - [ - [ - 12593, - 12593 - ], - "mapped", - [ - 4352 - ] - ], - [ - [ - 12594, - 12594 - ], - "mapped", - [ - 4353 - ] - ], - [ - [ - 12595, - 12595 - ], - "mapped", - [ - 4522 - ] - ], - [ - [ - 12596, - 12596 - ], - "mapped", - [ - 4354 - ] - ], - [ - [ - 12597, - 12597 - ], - "mapped", - [ - 4524 - ] - ], - [ - [ - 12598, - 12598 - ], - "mapped", - [ - 4525 - ] - ], - [ - [ - 12599, - 12599 - ], - "mapped", - [ - 4355 - ] - ], - [ - [ - 12600, - 12600 - ], - "mapped", - [ - 4356 - ] - ], - [ - [ - 12601, - 12601 - ], - "mapped", - [ - 4357 - ] - ], - [ - [ - 12602, - 12602 - ], - "mapped", - [ - 4528 - ] - ], - [ - [ - 12603, - 12603 - ], - "mapped", - [ - 4529 - ] - ], - [ - [ - 12604, - 12604 - ], - "mapped", - [ - 4530 - ] - ], - [ - [ - 12605, - 12605 - ], - "mapped", - [ - 4531 - ] - ], - [ - [ - 12606, - 12606 - ], - "mapped", - [ - 4532 - ] - ], - [ - [ - 12607, - 12607 - ], - "mapped", - [ - 4533 - ] - ], - [ - [ - 12608, - 12608 - ], - "mapped", - [ - 4378 - ] - ], - [ - [ - 12609, - 12609 - ], - "mapped", - [ - 4358 - ] - ], - [ - [ - 12610, - 12610 - ], - "mapped", - [ - 4359 - ] - ], - [ - [ - 12611, - 12611 - ], - "mapped", - [ - 4360 - ] - ], - [ - [ - 12612, - 12612 - ], - "mapped", - [ - 4385 - ] - ], - [ - [ - 12613, - 12613 - ], - "mapped", - [ - 4361 - ] - ], - [ - [ - 12614, - 12614 - ], - "mapped", - [ - 4362 - ] - ], - [ - [ - 12615, - 12615 - ], - "mapped", - [ - 4363 - ] - ], - [ - [ - 12616, - 12616 - ], - "mapped", - [ - 4364 - ] - ], - [ - [ - 12617, - 12617 - ], - "mapped", - [ - 4365 - ] - ], - [ - [ - 12618, - 12618 - ], - "mapped", - [ - 4366 - ] - ], - [ - [ - 12619, - 12619 - ], - "mapped", - [ - 4367 - ] - ], - [ - [ - 12620, - 12620 - ], - "mapped", - [ - 4368 - ] - ], - [ - [ - 12621, - 12621 - ], - "mapped", - [ - 4369 - ] - ], - [ - [ - 12622, - 12622 - ], - "mapped", - [ - 4370 - ] - ], - [ - [ - 12623, - 12623 - ], - "mapped", - [ - 4449 - ] - ], - [ - [ - 12624, - 12624 - ], - "mapped", - [ - 4450 - ] - ], - [ - [ - 12625, - 12625 - ], - "mapped", - [ - 4451 - ] - ], - [ - [ - 12626, - 12626 - ], - "mapped", - [ - 4452 - ] - ], - [ - [ - 12627, - 12627 - ], - "mapped", - [ - 4453 - ] - ], - [ - [ - 12628, - 12628 - ], - "mapped", - [ - 4454 - ] - ], - [ - [ - 12629, - 12629 - ], - "mapped", - [ - 4455 - ] - ], - [ - [ - 12630, - 12630 - ], - "mapped", - [ - 4456 - ] - ], - [ - [ - 12631, - 12631 - ], - "mapped", - [ - 4457 - ] - ], - [ - [ - 12632, - 12632 - ], - "mapped", - [ - 4458 - ] - ], - [ - [ - 12633, - 12633 - ], - "mapped", - [ - 4459 - ] - ], - [ - [ - 12634, - 12634 - ], - "mapped", - [ - 4460 - ] - ], - [ - [ - 12635, - 12635 - ], - "mapped", - [ - 4461 - ] - ], - [ - [ - 12636, - 12636 - ], - "mapped", - [ - 4462 - ] - ], - [ - [ - 12637, - 12637 - ], - "mapped", - [ - 4463 - ] - ], - [ - [ - 12638, - 12638 - ], - "mapped", - [ - 4464 - ] - ], - [ - [ - 12639, - 12639 - ], - "mapped", - [ - 4465 - ] - ], - [ - [ - 12640, - 12640 - ], - "mapped", - [ - 4466 - ] - ], - [ - [ - 12641, - 12641 - ], - "mapped", - [ - 4467 - ] - ], - [ - [ - 12642, - 12642 - ], - "mapped", - [ - 4468 - ] - ], - [ - [ - 12643, - 12643 - ], - "mapped", - [ - 4469 - ] - ], - [ - [ - 12644, - 12644 - ], - "disallowed" - ], - [ - [ - 12645, - 12645 - ], - "mapped", - [ - 4372 - ] - ], - [ - [ - 12646, - 12646 - ], - "mapped", - [ - 4373 - ] - ], - [ - [ - 12647, - 12647 - ], - "mapped", - [ - 4551 - ] - ], - [ - [ - 12648, - 12648 - ], - "mapped", - [ - 4552 - ] - ], - [ - [ - 12649, - 12649 - ], - "mapped", - [ - 4556 - ] - ], - [ - [ - 12650, - 12650 - ], - "mapped", - [ - 4558 - ] - ], - [ - [ - 12651, - 12651 - ], - "mapped", - [ - 4563 - ] - ], - [ - [ - 12652, - 12652 - ], - "mapped", - [ - 4567 - ] - ], - [ - [ - 12653, - 12653 - ], - "mapped", - [ - 4569 - ] - ], - [ - [ - 12654, - 12654 - ], - "mapped", - [ - 4380 - ] - ], - [ - [ - 12655, - 12655 - ], - "mapped", - [ - 4573 - ] - ], - [ - [ - 12656, - 12656 - ], - "mapped", - [ - 4575 - ] - ], - [ - [ - 12657, - 12657 - ], - "mapped", - [ - 4381 - ] - ], - [ - [ - 12658, - 12658 - ], - "mapped", - [ - 4382 - ] - ], - [ - [ - 12659, - 12659 - ], - "mapped", - [ - 4384 - ] - ], - [ - [ - 12660, - 12660 - ], - "mapped", - [ - 4386 - ] - ], - [ - [ - 12661, - 12661 - ], - "mapped", - [ - 4387 - ] - ], - [ - [ - 12662, - 12662 - ], - "mapped", - [ - 4391 - ] - ], - [ - [ - 12663, - 12663 - ], - "mapped", - [ - 4393 - ] - ], - [ - [ - 12664, - 12664 - ], - "mapped", - [ - 4395 - ] - ], - [ - [ - 12665, - 12665 - ], - "mapped", - [ - 4396 - ] - ], - [ - [ - 12666, - 12666 - ], - "mapped", - [ - 4397 - ] - ], - [ - [ - 12667, - 12667 - ], - "mapped", - [ - 4398 - ] - ], - [ - [ - 12668, - 12668 - ], - "mapped", - [ - 4399 - ] - ], - [ - [ - 12669, - 12669 - ], - "mapped", - [ - 4402 - ] - ], - [ - [ - 12670, - 12670 - ], - "mapped", - [ - 4406 - ] - ], - [ - [ - 12671, - 12671 - ], - "mapped", - [ - 4416 - ] - ], - [ - [ - 12672, - 12672 - ], - "mapped", - [ - 4423 - ] - ], - [ - [ - 12673, - 12673 - ], - "mapped", - [ - 4428 - ] - ], - [ - [ - 12674, - 12674 - ], - "mapped", - [ - 4593 - ] - ], - [ - [ - 12675, - 12675 - ], - "mapped", - [ - 4594 - ] - ], - [ - [ - 12676, - 12676 - ], - "mapped", - [ - 4439 - ] - ], - [ - [ - 12677, - 12677 - ], - "mapped", - [ - 4440 - ] - ], - [ - [ - 12678, - 12678 - ], - "mapped", - [ - 4441 - ] - ], - [ - [ - 12679, - 12679 - ], - "mapped", - [ - 4484 - ] - ], - [ - [ - 12680, - 12680 - ], - "mapped", - [ - 4485 - ] - ], - [ - [ - 12681, - 12681 - ], - "mapped", - [ - 4488 - ] - ], - [ - [ - 12682, - 12682 - ], - "mapped", - [ - 4497 - ] - ], - [ - [ - 12683, - 12683 - ], - "mapped", - [ - 4498 - ] - ], - [ - [ - 12684, - 12684 - ], - "mapped", - [ - 4500 - ] - ], - [ - [ - 12685, - 12685 - ], - "mapped", - [ - 4510 - ] - ], - [ - [ - 12686, - 12686 - ], - "mapped", - [ - 4513 - ] - ], - [ - [ - 12687, - 12687 - ], - "disallowed" - ], - [ - [ - 12688, - 12689 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 12690, - 12690 - ], - "mapped", - [ - 19968 - ] - ], - [ - [ - 12691, - 12691 - ], - "mapped", - [ - 20108 - ] - ], - [ - [ - 12692, - 12692 - ], - "mapped", - [ - 19977 - ] - ], - [ - [ - 12693, - 12693 - ], - "mapped", - [ - 22235 - ] - ], - [ - [ - 12694, - 12694 - ], - "mapped", - [ - 19978 - ] - ], - [ - [ - 12695, - 12695 - ], - "mapped", - [ - 20013 - ] - ], - [ - [ - 12696, - 12696 - ], - "mapped", - [ - 19979 - ] - ], - [ - [ - 12697, - 12697 - ], - "mapped", - [ - 30002 - ] - ], - [ - [ - 12698, - 12698 - ], - "mapped", - [ - 20057 - ] - ], - [ - [ - 12699, - 12699 - ], - "mapped", - [ - 19993 - ] - ], - [ - [ - 12700, - 12700 - ], - "mapped", - [ - 19969 - ] - ], - [ - [ - 12701, - 12701 - ], - "mapped", - [ - 22825 - ] - ], - [ - [ - 12702, - 12702 - ], - "mapped", - [ - 22320 - ] - ], - [ - [ - 12703, - 12703 - ], - "mapped", - [ - 20154 - ] - ], - [ - [ - 12704, - 12727 - ], - "valid" - ], - [ - [ - 12728, - 12730 - ], - "valid" - ], - [ - [ - 12731, - 12735 - ], - "disallowed" - ], - [ - [ - 12736, - 12751 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 12752, - 12771 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 12772, - 12783 - ], - "disallowed" - ], - [ - [ - 12784, - 12799 - ], - "valid" - ], - [ - [ - 12800, - 12800 - ], - "disallowed_STD3_mapped", - [ - 40, - 4352, - 41 - ] - ], - [ - [ - 12801, - 12801 - ], - "disallowed_STD3_mapped", - [ - 40, - 4354, - 41 - ] - ], - [ - [ - 12802, - 12802 - ], - "disallowed_STD3_mapped", - [ - 40, - 4355, - 41 - ] - ], - [ - [ - 12803, - 12803 - ], - "disallowed_STD3_mapped", - [ - 40, - 4357, - 41 - ] - ], - [ - [ - 12804, - 12804 - ], - "disallowed_STD3_mapped", - [ - 40, - 4358, - 41 - ] - ], - [ - [ - 12805, - 12805 - ], - "disallowed_STD3_mapped", - [ - 40, - 4359, - 41 - ] - ], - [ - [ - 12806, - 12806 - ], - "disallowed_STD3_mapped", - [ - 40, - 4361, - 41 - ] - ], - [ - [ - 12807, - 12807 - ], - "disallowed_STD3_mapped", - [ - 40, - 4363, - 41 - ] - ], - [ - [ - 12808, - 12808 - ], - "disallowed_STD3_mapped", - [ - 40, - 4364, - 41 - ] - ], - [ - [ - 12809, - 12809 - ], - "disallowed_STD3_mapped", - [ - 40, - 4366, - 41 - ] - ], - [ - [ - 12810, - 12810 - ], - "disallowed_STD3_mapped", - [ - 40, - 4367, - 41 - ] - ], - [ - [ - 12811, - 12811 - ], - "disallowed_STD3_mapped", - [ - 40, - 4368, - 41 - ] - ], - [ - [ - 12812, - 12812 - ], - "disallowed_STD3_mapped", - [ - 40, - 4369, - 41 - ] - ], - [ - [ - 12813, - 12813 - ], - "disallowed_STD3_mapped", - [ - 40, - 4370, - 41 - ] - ], - [ - [ - 12814, - 12814 - ], - "disallowed_STD3_mapped", - [ - 40, - 44032, - 41 - ] - ], - [ - [ - 12815, - 12815 - ], - "disallowed_STD3_mapped", - [ - 40, - 45208, - 41 - ] - ], - [ - [ - 12816, - 12816 - ], - "disallowed_STD3_mapped", - [ - 40, - 45796, - 41 - ] - ], - [ - [ - 12817, - 12817 - ], - "disallowed_STD3_mapped", - [ - 40, - 46972, - 41 - ] - ], - [ - [ - 12818, - 12818 - ], - "disallowed_STD3_mapped", - [ - 40, - 47560, - 41 - ] - ], - [ - [ - 12819, - 12819 - ], - "disallowed_STD3_mapped", - [ - 40, - 48148, - 41 - ] - ], - [ - [ - 12820, - 12820 - ], - "disallowed_STD3_mapped", - [ - 40, - 49324, - 41 - ] - ], - [ - [ - 12821, - 12821 - ], - "disallowed_STD3_mapped", - [ - 40, - 50500, - 41 - ] - ], - [ - [ - 12822, - 12822 - ], - "disallowed_STD3_mapped", - [ - 40, - 51088, - 41 - ] - ], - [ - [ - 12823, - 12823 - ], - "disallowed_STD3_mapped", - [ - 40, - 52264, - 41 - ] - ], - [ - [ - 12824, - 12824 - ], - "disallowed_STD3_mapped", - [ - 40, - 52852, - 41 - ] - ], - [ - [ - 12825, - 12825 - ], - "disallowed_STD3_mapped", - [ - 40, - 53440, - 41 - ] - ], - [ - [ - 12826, - 12826 - ], - "disallowed_STD3_mapped", - [ - 40, - 54028, - 41 - ] - ], - [ - [ - 12827, - 12827 - ], - "disallowed_STD3_mapped", - [ - 40, - 54616, - 41 - ] - ], - [ - [ - 12828, - 12828 - ], - "disallowed_STD3_mapped", - [ - 40, - 51452, - 41 - ] - ], - [ - [ - 12829, - 12829 - ], - "disallowed_STD3_mapped", - [ - 40, - 50724, - 51204, - 41 - ] - ], - [ - [ - 12830, - 12830 - ], - "disallowed_STD3_mapped", - [ - 40, - 50724, - 54980, - 41 - ] - ], - [ - [ - 12831, - 12831 - ], - "disallowed" - ], - [ - [ - 12832, - 12832 - ], - "disallowed_STD3_mapped", - [ - 40, - 19968, - 41 - ] - ], - [ - [ - 12833, - 12833 - ], - "disallowed_STD3_mapped", - [ - 40, - 20108, - 41 - ] - ], - [ - [ - 12834, - 12834 - ], - "disallowed_STD3_mapped", - [ - 40, - 19977, - 41 - ] - ], - [ - [ - 12835, - 12835 - ], - "disallowed_STD3_mapped", - [ - 40, - 22235, - 41 - ] - ], - [ - [ - 12836, - 12836 - ], - "disallowed_STD3_mapped", - [ - 40, - 20116, - 41 - ] - ], - [ - [ - 12837, - 12837 - ], - "disallowed_STD3_mapped", - [ - 40, - 20845, - 41 - ] - ], - [ - [ - 12838, - 12838 - ], - "disallowed_STD3_mapped", - [ - 40, - 19971, - 41 - ] - ], - [ - [ - 12839, - 12839 - ], - "disallowed_STD3_mapped", - [ - 40, - 20843, - 41 - ] - ], - [ - [ - 12840, - 12840 - ], - "disallowed_STD3_mapped", - [ - 40, - 20061, - 41 - ] - ], - [ - [ - 12841, - 12841 - ], - "disallowed_STD3_mapped", - [ - 40, - 21313, - 41 - ] - ], - [ - [ - 12842, - 12842 - ], - "disallowed_STD3_mapped", - [ - 40, - 26376, - 41 - ] - ], - [ - [ - 12843, - 12843 - ], - "disallowed_STD3_mapped", - [ - 40, - 28779, - 41 - ] - ], - [ - [ - 12844, - 12844 - ], - "disallowed_STD3_mapped", - [ - 40, - 27700, - 41 - ] - ], - [ - [ - 12845, - 12845 - ], - "disallowed_STD3_mapped", - [ - 40, - 26408, - 41 - ] - ], - [ - [ - 12846, - 12846 - ], - "disallowed_STD3_mapped", - [ - 40, - 37329, - 41 - ] - ], - [ - [ - 12847, - 12847 - ], - "disallowed_STD3_mapped", - [ - 40, - 22303, - 41 - ] - ], - [ - [ - 12848, - 12848 - ], - "disallowed_STD3_mapped", - [ - 40, - 26085, - 41 - ] - ], - [ - [ - 12849, - 12849 - ], - "disallowed_STD3_mapped", - [ - 40, - 26666, - 41 - ] - ], - [ - [ - 12850, - 12850 - ], - "disallowed_STD3_mapped", - [ - 40, - 26377, - 41 - ] - ], - [ - [ - 12851, - 12851 - ], - "disallowed_STD3_mapped", - [ - 40, - 31038, - 41 - ] - ], - [ - [ - 12852, - 12852 - ], - "disallowed_STD3_mapped", - [ - 40, - 21517, - 41 - ] - ], - [ - [ - 12853, - 12853 - ], - "disallowed_STD3_mapped", - [ - 40, - 29305, - 41 - ] - ], - [ - [ - 12854, - 12854 - ], - "disallowed_STD3_mapped", - [ - 40, - 36001, - 41 - ] - ], - [ - [ - 12855, - 12855 - ], - "disallowed_STD3_mapped", - [ - 40, - 31069, - 41 - ] - ], - [ - [ - 12856, - 12856 - ], - "disallowed_STD3_mapped", - [ - 40, - 21172, - 41 - ] - ], - [ - [ - 12857, - 12857 - ], - "disallowed_STD3_mapped", - [ - 40, - 20195, - 41 - ] - ], - [ - [ - 12858, - 12858 - ], - "disallowed_STD3_mapped", - [ - 40, - 21628, - 41 - ] - ], - [ - [ - 12859, - 12859 - ], - "disallowed_STD3_mapped", - [ - 40, - 23398, - 41 - ] - ], - [ - [ - 12860, - 12860 - ], - "disallowed_STD3_mapped", - [ - 40, - 30435, - 41 - ] - ], - [ - [ - 12861, - 12861 - ], - "disallowed_STD3_mapped", - [ - 40, - 20225, - 41 - ] - ], - [ - [ - 12862, - 12862 - ], - "disallowed_STD3_mapped", - [ - 40, - 36039, - 41 - ] - ], - [ - [ - 12863, - 12863 - ], - "disallowed_STD3_mapped", - [ - 40, - 21332, - 41 - ] - ], - [ - [ - 12864, - 12864 - ], - "disallowed_STD3_mapped", - [ - 40, - 31085, - 41 - ] - ], - [ - [ - 12865, - 12865 - ], - "disallowed_STD3_mapped", - [ - 40, - 20241, - 41 - ] - ], - [ - [ - 12866, - 12866 - ], - "disallowed_STD3_mapped", - [ - 40, - 33258, - 41 - ] - ], - [ - [ - 12867, - 12867 - ], - "disallowed_STD3_mapped", - [ - 40, - 33267, - 41 - ] - ], - [ - [ - 12868, - 12868 - ], - "mapped", - [ - 21839 - ] - ], - [ - [ - 12869, - 12869 - ], - "mapped", - [ - 24188 - ] - ], - [ - [ - 12870, - 12870 - ], - "mapped", - [ - 25991 - ] - ], - [ - [ - 12871, - 12871 - ], - "mapped", - [ - 31631 - ] - ], - [ - [ - 12872, - 12879 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 12880, - 12880 - ], - "mapped", - [ - 112, - 116, - 101 - ] - ], - [ - [ - 12881, - 12881 - ], - "mapped", - [ - 50, - 49 - ] - ], - [ - [ - 12882, - 12882 - ], - "mapped", - [ - 50, - 50 - ] - ], - [ - [ - 12883, - 12883 - ], - "mapped", - [ - 50, - 51 - ] - ], - [ - [ - 12884, - 12884 - ], - "mapped", - [ - 50, - 52 - ] - ], - [ - [ - 12885, - 12885 - ], - "mapped", - [ - 50, - 53 - ] - ], - [ - [ - 12886, - 12886 - ], - "mapped", - [ - 50, - 54 - ] - ], - [ - [ - 12887, - 12887 - ], - "mapped", - [ - 50, - 55 - ] - ], - [ - [ - 12888, - 12888 - ], - "mapped", - [ - 50, - 56 - ] - ], - [ - [ - 12889, - 12889 - ], - "mapped", - [ - 50, - 57 - ] - ], - [ - [ - 12890, - 12890 - ], - "mapped", - [ - 51, - 48 - ] - ], - [ - [ - 12891, - 12891 - ], - "mapped", - [ - 51, - 49 - ] - ], - [ - [ - 12892, - 12892 - ], - "mapped", - [ - 51, - 50 - ] - ], - [ - [ - 12893, - 12893 - ], - "mapped", - [ - 51, - 51 - ] - ], - [ - [ - 12894, - 12894 - ], - "mapped", - [ - 51, - 52 - ] - ], - [ - [ - 12895, - 12895 - ], - "mapped", - [ - 51, - 53 - ] - ], - [ - [ - 12896, - 12896 - ], - "mapped", - [ - 4352 - ] - ], - [ - [ - 12897, - 12897 - ], - "mapped", - [ - 4354 - ] - ], - [ - [ - 12898, - 12898 - ], - "mapped", - [ - 4355 - ] - ], - [ - [ - 12899, - 12899 - ], - "mapped", - [ - 4357 - ] - ], - [ - [ - 12900, - 12900 - ], - "mapped", - [ - 4358 - ] - ], - [ - [ - 12901, - 12901 - ], - "mapped", - [ - 4359 - ] - ], - [ - [ - 12902, - 12902 - ], - "mapped", - [ - 4361 - ] - ], - [ - [ - 12903, - 12903 - ], - "mapped", - [ - 4363 - ] - ], - [ - [ - 12904, - 12904 - ], - "mapped", - [ - 4364 - ] - ], - [ - [ - 12905, - 12905 - ], - "mapped", - [ - 4366 - ] - ], - [ - [ - 12906, - 12906 - ], - "mapped", - [ - 4367 - ] - ], - [ - [ - 12907, - 12907 - ], - "mapped", - [ - 4368 - ] - ], - [ - [ - 12908, - 12908 - ], - "mapped", - [ - 4369 - ] - ], - [ - [ - 12909, - 12909 - ], - "mapped", - [ - 4370 - ] - ], - [ - [ - 12910, - 12910 - ], - "mapped", - [ - 44032 - ] - ], - [ - [ - 12911, - 12911 - ], - "mapped", - [ - 45208 - ] - ], - [ - [ - 12912, - 12912 - ], - "mapped", - [ - 45796 - ] - ], - [ - [ - 12913, - 12913 - ], - "mapped", - [ - 46972 - ] - ], - [ - [ - 12914, - 12914 - ], - "mapped", - [ - 47560 - ] - ], - [ - [ - 12915, - 12915 - ], - "mapped", - [ - 48148 - ] - ], - [ - [ - 12916, - 12916 - ], - "mapped", - [ - 49324 - ] - ], - [ - [ - 12917, - 12917 - ], - "mapped", - [ - 50500 - ] - ], - [ - [ - 12918, - 12918 - ], - "mapped", - [ - 51088 - ] - ], - [ - [ - 12919, - 12919 - ], - "mapped", - [ - 52264 - ] - ], - [ - [ - 12920, - 12920 - ], - "mapped", - [ - 52852 - ] - ], - [ - [ - 12921, - 12921 - ], - "mapped", - [ - 53440 - ] - ], - [ - [ - 12922, - 12922 - ], - "mapped", - [ - 54028 - ] - ], - [ - [ - 12923, - 12923 - ], - "mapped", - [ - 54616 - ] - ], - [ - [ - 12924, - 12924 - ], - "mapped", - [ - 52280, - 44256 - ] - ], - [ - [ - 12925, - 12925 - ], - "mapped", - [ - 51452, - 51032 - ] - ], - [ - [ - 12926, - 12926 - ], - "mapped", - [ - 50864 - ] - ], - [ - [ - 12927, - 12927 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 12928, - 12928 - ], - "mapped", - [ - 19968 - ] - ], - [ - [ - 12929, - 12929 - ], - "mapped", - [ - 20108 - ] - ], - [ - [ - 12930, - 12930 - ], - "mapped", - [ - 19977 - ] - ], - [ - [ - 12931, - 12931 - ], - "mapped", - [ - 22235 - ] - ], - [ - [ - 12932, - 12932 - ], - "mapped", - [ - 20116 - ] - ], - [ - [ - 12933, - 12933 - ], - "mapped", - [ - 20845 - ] - ], - [ - [ - 12934, - 12934 - ], - "mapped", - [ - 19971 - ] - ], - [ - [ - 12935, - 12935 - ], - "mapped", - [ - 20843 - ] - ], - [ - [ - 12936, - 12936 - ], - "mapped", - [ - 20061 - ] - ], - [ - [ - 12937, - 12937 - ], - "mapped", - [ - 21313 - ] - ], - [ - [ - 12938, - 12938 - ], - "mapped", - [ - 26376 - ] - ], - [ - [ - 12939, - 12939 - ], - "mapped", - [ - 28779 - ] - ], - [ - [ - 12940, - 12940 - ], - "mapped", - [ - 27700 - ] - ], - [ - [ - 12941, - 12941 - ], - "mapped", - [ - 26408 - ] - ], - [ - [ - 12942, - 12942 - ], - "mapped", - [ - 37329 - ] - ], - [ - [ - 12943, - 12943 - ], - "mapped", - [ - 22303 - ] - ], - [ - [ - 12944, - 12944 - ], - "mapped", - [ - 26085 - ] - ], - [ - [ - 12945, - 12945 - ], - "mapped", - [ - 26666 - ] - ], - [ - [ - 12946, - 12946 - ], - "mapped", - [ - 26377 - ] - ], - [ - [ - 12947, - 12947 - ], - "mapped", - [ - 31038 - ] - ], - [ - [ - 12948, - 12948 - ], - "mapped", - [ - 21517 - ] - ], - [ - [ - 12949, - 12949 - ], - "mapped", - [ - 29305 - ] - ], - [ - [ - 12950, - 12950 - ], - "mapped", - [ - 36001 - ] - ], - [ - [ - 12951, - 12951 - ], - "mapped", - [ - 31069 - ] - ], - [ - [ - 12952, - 12952 - ], - "mapped", - [ - 21172 - ] - ], - [ - [ - 12953, - 12953 - ], - "mapped", - [ - 31192 - ] - ], - [ - [ - 12954, - 12954 - ], - "mapped", - [ - 30007 - ] - ], - [ - [ - 12955, - 12955 - ], - "mapped", - [ - 22899 - ] - ], - [ - [ - 12956, - 12956 - ], - "mapped", - [ - 36969 - ] - ], - [ - [ - 12957, - 12957 - ], - "mapped", - [ - 20778 - ] - ], - [ - [ - 12958, - 12958 - ], - "mapped", - [ - 21360 - ] - ], - [ - [ - 12959, - 12959 - ], - "mapped", - [ - 27880 - ] - ], - [ - [ - 12960, - 12960 - ], - "mapped", - [ - 38917 - ] - ], - [ - [ - 12961, - 12961 - ], - "mapped", - [ - 20241 - ] - ], - [ - [ - 12962, - 12962 - ], - "mapped", - [ - 20889 - ] - ], - [ - [ - 12963, - 12963 - ], - "mapped", - [ - 27491 - ] - ], - [ - [ - 12964, - 12964 - ], - "mapped", - [ - 19978 - ] - ], - [ - [ - 12965, - 12965 - ], - "mapped", - [ - 20013 - ] - ], - [ - [ - 12966, - 12966 - ], - "mapped", - [ - 19979 - ] - ], - [ - [ - 12967, - 12967 - ], - "mapped", - [ - 24038 - ] - ], - [ - [ - 12968, - 12968 - ], - "mapped", - [ - 21491 - ] - ], - [ - [ - 12969, - 12969 - ], - "mapped", - [ - 21307 - ] - ], - [ - [ - 12970, - 12970 - ], - "mapped", - [ - 23447 - ] - ], - [ - [ - 12971, - 12971 - ], - "mapped", - [ - 23398 - ] - ], - [ - [ - 12972, - 12972 - ], - "mapped", - [ - 30435 - ] - ], - [ - [ - 12973, - 12973 - ], - "mapped", - [ - 20225 - ] - ], - [ - [ - 12974, - 12974 - ], - "mapped", - [ - 36039 - ] - ], - [ - [ - 12975, - 12975 - ], - "mapped", - [ - 21332 - ] - ], - [ - [ - 12976, - 12976 - ], - "mapped", - [ - 22812 - ] - ], - [ - [ - 12977, - 12977 - ], - "mapped", - [ - 51, - 54 - ] - ], - [ - [ - 12978, - 12978 - ], - "mapped", - [ - 51, - 55 - ] - ], - [ - [ - 12979, - 12979 - ], - "mapped", - [ - 51, - 56 - ] - ], - [ - [ - 12980, - 12980 - ], - "mapped", - [ - 51, - 57 - ] - ], - [ - [ - 12981, - 12981 - ], - "mapped", - [ - 52, - 48 - ] - ], - [ - [ - 12982, - 12982 - ], - "mapped", - [ - 52, - 49 - ] - ], - [ - [ - 12983, - 12983 - ], - "mapped", - [ - 52, - 50 - ] - ], - [ - [ - 12984, - 12984 - ], - "mapped", - [ - 52, - 51 - ] - ], - [ - [ - 12985, - 12985 - ], - "mapped", - [ - 52, - 52 - ] - ], - [ - [ - 12986, - 12986 - ], - "mapped", - [ - 52, - 53 - ] - ], - [ - [ - 12987, - 12987 - ], - "mapped", - [ - 52, - 54 - ] - ], - [ - [ - 12988, - 12988 - ], - "mapped", - [ - 52, - 55 - ] - ], - [ - [ - 12989, - 12989 - ], - "mapped", - [ - 52, - 56 - ] - ], - [ - [ - 12990, - 12990 - ], - "mapped", - [ - 52, - 57 - ] - ], - [ - [ - 12991, - 12991 - ], - "mapped", - [ - 53, - 48 - ] - ], - [ - [ - 12992, - 12992 - ], - "mapped", - [ - 49, - 26376 - ] - ], - [ - [ - 12993, - 12993 - ], - "mapped", - [ - 50, - 26376 - ] - ], - [ - [ - 12994, - 12994 - ], - "mapped", - [ - 51, - 26376 - ] - ], - [ - [ - 12995, - 12995 - ], - "mapped", - [ - 52, - 26376 - ] - ], - [ - [ - 12996, - 12996 - ], - "mapped", - [ - 53, - 26376 - ] - ], - [ - [ - 12997, - 12997 - ], - "mapped", - [ - 54, - 26376 - ] - ], - [ - [ - 12998, - 12998 - ], - "mapped", - [ - 55, - 26376 - ] - ], - [ - [ - 12999, - 12999 - ], - "mapped", - [ - 56, - 26376 - ] - ], - [ - [ - 13000, - 13000 - ], - "mapped", - [ - 57, - 26376 - ] - ], - [ - [ - 13001, - 13001 - ], - "mapped", - [ - 49, - 48, - 26376 - ] - ], - [ - [ - 13002, - 13002 - ], - "mapped", - [ - 49, - 49, - 26376 - ] - ], - [ - [ - 13003, - 13003 - ], - "mapped", - [ - 49, - 50, - 26376 - ] - ], - [ - [ - 13004, - 13004 - ], - "mapped", - [ - 104, - 103 - ] - ], - [ - [ - 13005, - 13005 - ], - "mapped", - [ - 101, - 114, - 103 - ] - ], - [ - [ - 13006, - 13006 - ], - "mapped", - [ - 101, - 118 - ] - ], - [ - [ - 13007, - 13007 - ], - "mapped", - [ - 108, - 116, - 100 - ] - ], - [ - [ - 13008, - 13008 - ], - "mapped", - [ - 12450 - ] - ], - [ - [ - 13009, - 13009 - ], - "mapped", - [ - 12452 - ] - ], - [ - [ - 13010, - 13010 - ], - "mapped", - [ - 12454 - ] - ], - [ - [ - 13011, - 13011 - ], - "mapped", - [ - 12456 - ] - ], - [ - [ - 13012, - 13012 - ], - "mapped", - [ - 12458 - ] - ], - [ - [ - 13013, - 13013 - ], - "mapped", - [ - 12459 - ] - ], - [ - [ - 13014, - 13014 - ], - "mapped", - [ - 12461 - ] - ], - [ - [ - 13015, - 13015 - ], - "mapped", - [ - 12463 - ] - ], - [ - [ - 13016, - 13016 - ], - "mapped", - [ - 12465 - ] - ], - [ - [ - 13017, - 13017 - ], - "mapped", - [ - 12467 - ] - ], - [ - [ - 13018, - 13018 - ], - "mapped", - [ - 12469 - ] - ], - [ - [ - 13019, - 13019 - ], - "mapped", - [ - 12471 - ] - ], - [ - [ - 13020, - 13020 - ], - "mapped", - [ - 12473 - ] - ], - [ - [ - 13021, - 13021 - ], - "mapped", - [ - 12475 - ] - ], - [ - [ - 13022, - 13022 - ], - "mapped", - [ - 12477 - ] - ], - [ - [ - 13023, - 13023 - ], - "mapped", - [ - 12479 - ] - ], - [ - [ - 13024, - 13024 - ], - "mapped", - [ - 12481 - ] - ], - [ - [ - 13025, - 13025 - ], - "mapped", - [ - 12484 - ] - ], - [ - [ - 13026, - 13026 - ], - "mapped", - [ - 12486 - ] - ], - [ - [ - 13027, - 13027 - ], - "mapped", - [ - 12488 - ] - ], - [ - [ - 13028, - 13028 - ], - "mapped", - [ - 12490 - ] - ], - [ - [ - 13029, - 13029 - ], - "mapped", - [ - 12491 - ] - ], - [ - [ - 13030, - 13030 - ], - "mapped", - [ - 12492 - ] - ], - [ - [ - 13031, - 13031 - ], - "mapped", - [ - 12493 - ] - ], - [ - [ - 13032, - 13032 - ], - "mapped", - [ - 12494 - ] - ], - [ - [ - 13033, - 13033 - ], - "mapped", - [ - 12495 - ] - ], - [ - [ - 13034, - 13034 - ], - "mapped", - [ - 12498 - ] - ], - [ - [ - 13035, - 13035 - ], - "mapped", - [ - 12501 - ] - ], - [ - [ - 13036, - 13036 - ], - "mapped", - [ - 12504 - ] - ], - [ - [ - 13037, - 13037 - ], - "mapped", - [ - 12507 - ] - ], - [ - [ - 13038, - 13038 - ], - "mapped", - [ - 12510 - ] - ], - [ - [ - 13039, - 13039 - ], - "mapped", - [ - 12511 - ] - ], - [ - [ - 13040, - 13040 - ], - "mapped", - [ - 12512 - ] - ], - [ - [ - 13041, - 13041 - ], - "mapped", - [ - 12513 - ] - ], - [ - [ - 13042, - 13042 - ], - "mapped", - [ - 12514 - ] - ], - [ - [ - 13043, - 13043 - ], - "mapped", - [ - 12516 - ] - ], - [ - [ - 13044, - 13044 - ], - "mapped", - [ - 12518 - ] - ], - [ - [ - 13045, - 13045 - ], - "mapped", - [ - 12520 - ] - ], - [ - [ - 13046, - 13046 - ], - "mapped", - [ - 12521 - ] - ], - [ - [ - 13047, - 13047 - ], - "mapped", - [ - 12522 - ] - ], - [ - [ - 13048, - 13048 - ], - "mapped", - [ - 12523 - ] - ], - [ - [ - 13049, - 13049 - ], - "mapped", - [ - 12524 - ] - ], - [ - [ - 13050, - 13050 - ], - "mapped", - [ - 12525 - ] - ], - [ - [ - 13051, - 13051 - ], - "mapped", - [ - 12527 - ] - ], - [ - [ - 13052, - 13052 - ], - "mapped", - [ - 12528 - ] - ], - [ - [ - 13053, - 13053 - ], - "mapped", - [ - 12529 - ] - ], - [ - [ - 13054, - 13054 - ], - "mapped", - [ - 12530 - ] - ], - [ - [ - 13055, - 13055 - ], - "disallowed" - ], - [ - [ - 13056, - 13056 - ], - "mapped", - [ - 12450, - 12497, - 12540, - 12488 - ] - ], - [ - [ - 13057, - 13057 - ], - "mapped", - [ - 12450, - 12523, - 12501, - 12449 - ] - ], - [ - [ - 13058, - 13058 - ], - "mapped", - [ - 12450, - 12531, - 12506, - 12450 - ] - ], - [ - [ - 13059, - 13059 - ], - "mapped", - [ - 12450, - 12540, - 12523 - ] - ], - [ - [ - 13060, - 13060 - ], - "mapped", - [ - 12452, - 12491, - 12531, - 12464 - ] - ], - [ - [ - 13061, - 13061 - ], - "mapped", - [ - 12452, - 12531, - 12481 - ] - ], - [ - [ - 13062, - 13062 - ], - "mapped", - [ - 12454, - 12457, - 12531 - ] - ], - [ - [ - 13063, - 13063 - ], - "mapped", - [ - 12456, - 12473, - 12463, - 12540, - 12489 - ] - ], - [ - [ - 13064, - 13064 - ], - "mapped", - [ - 12456, - 12540, - 12459, - 12540 - ] - ], - [ - [ - 13065, - 13065 - ], - "mapped", - [ - 12458, - 12531, - 12473 - ] - ], - [ - [ - 13066, - 13066 - ], - "mapped", - [ - 12458, - 12540, - 12512 - ] - ], - [ - [ - 13067, - 13067 - ], - "mapped", - [ - 12459, - 12452, - 12522 - ] - ], - [ - [ - 13068, - 13068 - ], - "mapped", - [ - 12459, - 12521, - 12483, - 12488 - ] - ], - [ - [ - 13069, - 13069 - ], - "mapped", - [ - 12459, - 12525, - 12522, - 12540 - ] - ], - [ - [ - 13070, - 13070 - ], - "mapped", - [ - 12460, - 12525, - 12531 - ] - ], - [ - [ - 13071, - 13071 - ], - "mapped", - [ - 12460, - 12531, - 12510 - ] - ], - [ - [ - 13072, - 13072 - ], - "mapped", - [ - 12462, - 12460 - ] - ], - [ - [ - 13073, - 13073 - ], - "mapped", - [ - 12462, - 12491, - 12540 - ] - ], - [ - [ - 13074, - 13074 - ], - "mapped", - [ - 12461, - 12517, - 12522, - 12540 - ] - ], - [ - [ - 13075, - 13075 - ], - "mapped", - [ - 12462, - 12523, - 12480, - 12540 - ] - ], - [ - [ - 13076, - 13076 - ], - "mapped", - [ - 12461, - 12525 - ] - ], - [ - [ - 13077, - 13077 - ], - "mapped", - [ - 12461, - 12525, - 12464, - 12521, - 12512 - ] - ], - [ - [ - 13078, - 13078 - ], - "mapped", - [ - 12461, - 12525, - 12513, - 12540, - 12488, - 12523 - ] - ], - [ - [ - 13079, - 13079 - ], - "mapped", - [ - 12461, - 12525, - 12527, - 12483, - 12488 - ] - ], - [ - [ - 13080, - 13080 - ], - "mapped", - [ - 12464, - 12521, - 12512 - ] - ], - [ - [ - 13081, - 13081 - ], - "mapped", - [ - 12464, - 12521, - 12512, - 12488, - 12531 - ] - ], - [ - [ - 13082, - 13082 - ], - "mapped", - [ - 12463, - 12523, - 12476, - 12452, - 12525 - ] - ], - [ - [ - 13083, - 13083 - ], - "mapped", - [ - 12463, - 12525, - 12540, - 12493 - ] - ], - [ - [ - 13084, - 13084 - ], - "mapped", - [ - 12465, - 12540, - 12473 - ] - ], - [ - [ - 13085, - 13085 - ], - "mapped", - [ - 12467, - 12523, - 12490 - ] - ], - [ - [ - 13086, - 13086 - ], - "mapped", - [ - 12467, - 12540, - 12509 - ] - ], - [ - [ - 13087, - 13087 - ], - "mapped", - [ - 12469, - 12452, - 12463, - 12523 - ] - ], - [ - [ - 13088, - 13088 - ], - "mapped", - [ - 12469, - 12531, - 12481, - 12540, - 12512 - ] - ], - [ - [ - 13089, - 13089 - ], - "mapped", - [ - 12471, - 12522, - 12531, - 12464 - ] - ], - [ - [ - 13090, - 13090 - ], - "mapped", - [ - 12475, - 12531, - 12481 - ] - ], - [ - [ - 13091, - 13091 - ], - "mapped", - [ - 12475, - 12531, - 12488 - ] - ], - [ - [ - 13092, - 13092 - ], - "mapped", - [ - 12480, - 12540, - 12473 - ] - ], - [ - [ - 13093, - 13093 - ], - "mapped", - [ - 12487, - 12471 - ] - ], - [ - [ - 13094, - 13094 - ], - "mapped", - [ - 12489, - 12523 - ] - ], - [ - [ - 13095, - 13095 - ], - "mapped", - [ - 12488, - 12531 - ] - ], - [ - [ - 13096, - 13096 - ], - "mapped", - [ - 12490, - 12494 - ] - ], - [ - [ - 13097, - 13097 - ], - "mapped", - [ - 12494, - 12483, - 12488 - ] - ], - [ - [ - 13098, - 13098 - ], - "mapped", - [ - 12495, - 12452, - 12484 - ] - ], - [ - [ - 13099, - 13099 - ], - "mapped", - [ - 12497, - 12540, - 12475, - 12531, - 12488 - ] - ], - [ - [ - 13100, - 13100 - ], - "mapped", - [ - 12497, - 12540, - 12484 - ] - ], - [ - [ - 13101, - 13101 - ], - "mapped", - [ - 12496, - 12540, - 12524, - 12523 - ] - ], - [ - [ - 13102, - 13102 - ], - "mapped", - [ - 12500, - 12450, - 12473, - 12488, - 12523 - ] - ], - [ - [ - 13103, - 13103 - ], - "mapped", - [ - 12500, - 12463, - 12523 - ] - ], - [ - [ - 13104, - 13104 - ], - "mapped", - [ - 12500, - 12467 - ] - ], - [ - [ - 13105, - 13105 - ], - "mapped", - [ - 12499, - 12523 - ] - ], - [ - [ - 13106, - 13106 - ], - "mapped", - [ - 12501, - 12449, - 12521, - 12483, - 12489 - ] - ], - [ - [ - 13107, - 13107 - ], - "mapped", - [ - 12501, - 12451, - 12540, - 12488 - ] - ], - [ - [ - 13108, - 13108 - ], - "mapped", - [ - 12502, - 12483, - 12471, - 12455, - 12523 - ] - ], - [ - [ - 13109, - 13109 - ], - "mapped", - [ - 12501, - 12521, - 12531 - ] - ], - [ - [ - 13110, - 13110 - ], - "mapped", - [ - 12504, - 12463, - 12479, - 12540, - 12523 - ] - ], - [ - [ - 13111, - 13111 - ], - "mapped", - [ - 12506, - 12477 - ] - ], - [ - [ - 13112, - 13112 - ], - "mapped", - [ - 12506, - 12491, - 12498 - ] - ], - [ - [ - 13113, - 13113 - ], - "mapped", - [ - 12504, - 12523, - 12484 - ] - ], - [ - [ - 13114, - 13114 - ], - "mapped", - [ - 12506, - 12531, - 12473 - ] - ], - [ - [ - 13115, - 13115 - ], - "mapped", - [ - 12506, - 12540, - 12472 - ] - ], - [ - [ - 13116, - 13116 - ], - "mapped", - [ - 12505, - 12540, - 12479 - ] - ], - [ - [ - 13117, - 13117 - ], - "mapped", - [ - 12509, - 12452, - 12531, - 12488 - ] - ], - [ - [ - 13118, - 13118 - ], - "mapped", - [ - 12508, - 12523, - 12488 - ] - ], - [ - [ - 13119, - 13119 - ], - "mapped", - [ - 12507, - 12531 - ] - ], - [ - [ - 13120, - 13120 - ], - "mapped", - [ - 12509, - 12531, - 12489 - ] - ], - [ - [ - 13121, - 13121 - ], - "mapped", - [ - 12507, - 12540, - 12523 - ] - ], - [ - [ - 13122, - 13122 - ], - "mapped", - [ - 12507, - 12540, - 12531 - ] - ], - [ - [ - 13123, - 13123 - ], - "mapped", - [ - 12510, - 12452, - 12463, - 12525 - ] - ], - [ - [ - 13124, - 13124 - ], - "mapped", - [ - 12510, - 12452, - 12523 - ] - ], - [ - [ - 13125, - 13125 - ], - "mapped", - [ - 12510, - 12483, - 12495 - ] - ], - [ - [ - 13126, - 13126 - ], - "mapped", - [ - 12510, - 12523, - 12463 - ] - ], - [ - [ - 13127, - 13127 - ], - "mapped", - [ - 12510, - 12531, - 12471, - 12519, - 12531 - ] - ], - [ - [ - 13128, - 13128 - ], - "mapped", - [ - 12511, - 12463, - 12525, - 12531 - ] - ], - [ - [ - 13129, - 13129 - ], - "mapped", - [ - 12511, - 12522 - ] - ], - [ - [ - 13130, - 13130 - ], - "mapped", - [ - 12511, - 12522, - 12496, - 12540, - 12523 - ] - ], - [ - [ - 13131, - 13131 - ], - "mapped", - [ - 12513, - 12460 - ] - ], - [ - [ - 13132, - 13132 - ], - "mapped", - [ - 12513, - 12460, - 12488, - 12531 - ] - ], - [ - [ - 13133, - 13133 - ], - "mapped", - [ - 12513, - 12540, - 12488, - 12523 - ] - ], - [ - [ - 13134, - 13134 - ], - "mapped", - [ - 12516, - 12540, - 12489 - ] - ], - [ - [ - 13135, - 13135 - ], - "mapped", - [ - 12516, - 12540, - 12523 - ] - ], - [ - [ - 13136, - 13136 - ], - "mapped", - [ - 12518, - 12450, - 12531 - ] - ], - [ - [ - 13137, - 13137 - ], - "mapped", - [ - 12522, - 12483, - 12488, - 12523 - ] - ], - [ - [ - 13138, - 13138 - ], - "mapped", - [ - 12522, - 12521 - ] - ], - [ - [ - 13139, - 13139 - ], - "mapped", - [ - 12523, - 12500, - 12540 - ] - ], - [ - [ - 13140, - 13140 - ], - "mapped", - [ - 12523, - 12540, - 12502, - 12523 - ] - ], - [ - [ - 13141, - 13141 - ], - "mapped", - [ - 12524, - 12512 - ] - ], - [ - [ - 13142, - 13142 - ], - "mapped", - [ - 12524, - 12531, - 12488, - 12466, - 12531 - ] - ], - [ - [ - 13143, - 13143 - ], - "mapped", - [ - 12527, - 12483, - 12488 - ] - ], - [ - [ - 13144, - 13144 - ], - "mapped", - [ - 48, - 28857 - ] - ], - [ - [ - 13145, - 13145 - ], - "mapped", - [ - 49, - 28857 - ] - ], - [ - [ - 13146, - 13146 - ], - "mapped", - [ - 50, - 28857 - ] - ], - [ - [ - 13147, - 13147 - ], - "mapped", - [ - 51, - 28857 - ] - ], - [ - [ - 13148, - 13148 - ], - "mapped", - [ - 52, - 28857 - ] - ], - [ - [ - 13149, - 13149 - ], - "mapped", - [ - 53, - 28857 - ] - ], - [ - [ - 13150, - 13150 - ], - "mapped", - [ - 54, - 28857 - ] - ], - [ - [ - 13151, - 13151 - ], - "mapped", - [ - 55, - 28857 - ] - ], - [ - [ - 13152, - 13152 - ], - "mapped", - [ - 56, - 28857 - ] - ], - [ - [ - 13153, - 13153 - ], - "mapped", - [ - 57, - 28857 - ] - ], - [ - [ - 13154, - 13154 - ], - "mapped", - [ - 49, - 48, - 28857 - ] - ], - [ - [ - 13155, - 13155 - ], - "mapped", - [ - 49, - 49, - 28857 - ] - ], - [ - [ - 13156, - 13156 - ], - "mapped", - [ - 49, - 50, - 28857 - ] - ], - [ - [ - 13157, - 13157 - ], - "mapped", - [ - 49, - 51, - 28857 - ] - ], - [ - [ - 13158, - 13158 - ], - "mapped", - [ - 49, - 52, - 28857 - ] - ], - [ - [ - 13159, - 13159 - ], - "mapped", - [ - 49, - 53, - 28857 - ] - ], - [ - [ - 13160, - 13160 - ], - "mapped", - [ - 49, - 54, - 28857 - ] - ], - [ - [ - 13161, - 13161 - ], - "mapped", - [ - 49, - 55, - 28857 - ] - ], - [ - [ - 13162, - 13162 - ], - "mapped", - [ - 49, - 56, - 28857 - ] - ], - [ - [ - 13163, - 13163 - ], - "mapped", - [ - 49, - 57, - 28857 - ] - ], - [ - [ - 13164, - 13164 - ], - "mapped", - [ - 50, - 48, - 28857 - ] - ], - [ - [ - 13165, - 13165 - ], - "mapped", - [ - 50, - 49, - 28857 - ] - ], - [ - [ - 13166, - 13166 - ], - "mapped", - [ - 50, - 50, - 28857 - ] - ], - [ - [ - 13167, - 13167 - ], - "mapped", - [ - 50, - 51, - 28857 - ] - ], - [ - [ - 13168, - 13168 - ], - "mapped", - [ - 50, - 52, - 28857 - ] - ], - [ - [ - 13169, - 13169 - ], - "mapped", - [ - 104, - 112, - 97 - ] - ], - [ - [ - 13170, - 13170 - ], - "mapped", - [ - 100, - 97 - ] - ], - [ - [ - 13171, - 13171 - ], - "mapped", - [ - 97, - 117 - ] - ], - [ - [ - 13172, - 13172 - ], - "mapped", - [ - 98, - 97, - 114 - ] - ], - [ - [ - 13173, - 13173 - ], - "mapped", - [ - 111, - 118 - ] - ], - [ - [ - 13174, - 13174 - ], - "mapped", - [ - 112, - 99 - ] - ], - [ - [ - 13175, - 13175 - ], - "mapped", - [ - 100, - 109 - ] - ], - [ - [ - 13176, - 13176 - ], - "mapped", - [ - 100, - 109, - 50 - ] - ], - [ - [ - 13177, - 13177 - ], - "mapped", - [ - 100, - 109, - 51 - ] - ], - [ - [ - 13178, - 13178 - ], - "mapped", - [ - 105, - 117 - ] - ], - [ - [ - 13179, - 13179 - ], - "mapped", - [ - 24179, - 25104 - ] - ], - [ - [ - 13180, - 13180 - ], - "mapped", - [ - 26157, - 21644 - ] - ], - [ - [ - 13181, - 13181 - ], - "mapped", - [ - 22823, - 27491 - ] - ], - [ - [ - 13182, - 13182 - ], - "mapped", - [ - 26126, - 27835 - ] - ], - [ - [ - 13183, - 13183 - ], - "mapped", - [ - 26666, - 24335, - 20250, - 31038 - ] - ], - [ - [ - 13184, - 13184 - ], - "mapped", - [ - 112, - 97 - ] - ], - [ - [ - 13185, - 13185 - ], - "mapped", - [ - 110, - 97 - ] - ], - [ - [ - 13186, - 13186 - ], - "mapped", - [ - 956, - 97 - ] - ], - [ - [ - 13187, - 13187 - ], - "mapped", - [ - 109, - 97 - ] - ], - [ - [ - 13188, - 13188 - ], - "mapped", - [ - 107, - 97 - ] - ], - [ - [ - 13189, - 13189 - ], - "mapped", - [ - 107, - 98 - ] - ], - [ - [ - 13190, - 13190 - ], - "mapped", - [ - 109, - 98 - ] - ], - [ - [ - 13191, - 13191 - ], - "mapped", - [ - 103, - 98 - ] - ], - [ - [ - 13192, - 13192 - ], - "mapped", - [ - 99, - 97, - 108 - ] - ], - [ - [ - 13193, - 13193 - ], - "mapped", - [ - 107, - 99, - 97, - 108 - ] - ], - [ - [ - 13194, - 13194 - ], - "mapped", - [ - 112, - 102 - ] - ], - [ - [ - 13195, - 13195 - ], - "mapped", - [ - 110, - 102 - ] - ], - [ - [ - 13196, - 13196 - ], - "mapped", - [ - 956, - 102 - ] - ], - [ - [ - 13197, - 13197 - ], - "mapped", - [ - 956, - 103 - ] - ], - [ - [ - 13198, - 13198 - ], - "mapped", - [ - 109, - 103 - ] - ], - [ - [ - 13199, - 13199 - ], - "mapped", - [ - 107, - 103 - ] - ], - [ - [ - 13200, - 13200 - ], - "mapped", - [ - 104, - 122 - ] - ], - [ - [ - 13201, - 13201 - ], - "mapped", - [ - 107, - 104, - 122 - ] - ], - [ - [ - 13202, - 13202 - ], - "mapped", - [ - 109, - 104, - 122 - ] - ], - [ - [ - 13203, - 13203 - ], - "mapped", - [ - 103, - 104, - 122 - ] - ], - [ - [ - 13204, - 13204 - ], - "mapped", - [ - 116, - 104, - 122 - ] - ], - [ - [ - 13205, - 13205 - ], - "mapped", - [ - 956, - 108 - ] - ], - [ - [ - 13206, - 13206 - ], - "mapped", - [ - 109, - 108 - ] - ], - [ - [ - 13207, - 13207 - ], - "mapped", - [ - 100, - 108 - ] - ], - [ - [ - 13208, - 13208 - ], - "mapped", - [ - 107, - 108 - ] - ], - [ - [ - 13209, - 13209 - ], - "mapped", - [ - 102, - 109 - ] - ], - [ - [ - 13210, - 13210 - ], - "mapped", - [ - 110, - 109 - ] - ], - [ - [ - 13211, - 13211 - ], - "mapped", - [ - 956, - 109 - ] - ], - [ - [ - 13212, - 13212 - ], - "mapped", - [ - 109, - 109 - ] - ], - [ - [ - 13213, - 13213 - ], - "mapped", - [ - 99, - 109 - ] - ], - [ - [ - 13214, - 13214 - ], - "mapped", - [ - 107, - 109 - ] - ], - [ - [ - 13215, - 13215 - ], - "mapped", - [ - 109, - 109, - 50 - ] - ], - [ - [ - 13216, - 13216 - ], - "mapped", - [ - 99, - 109, - 50 - ] - ], - [ - [ - 13217, - 13217 - ], - "mapped", - [ - 109, - 50 - ] - ], - [ - [ - 13218, - 13218 - ], - "mapped", - [ - 107, - 109, - 50 - ] - ], - [ - [ - 13219, - 13219 - ], - "mapped", - [ - 109, - 109, - 51 - ] - ], - [ - [ - 13220, - 13220 - ], - "mapped", - [ - 99, - 109, - 51 - ] - ], - [ - [ - 13221, - 13221 - ], - "mapped", - [ - 109, - 51 - ] - ], - [ - [ - 13222, - 13222 - ], - "mapped", - [ - 107, - 109, - 51 - ] - ], - [ - [ - 13223, - 13223 - ], - "mapped", - [ - 109, - 8725, - 115 - ] - ], - [ - [ - 13224, - 13224 - ], - "mapped", - [ - 109, - 8725, - 115, - 50 - ] - ], - [ - [ - 13225, - 13225 - ], - "mapped", - [ - 112, - 97 - ] - ], - [ - [ - 13226, - 13226 - ], - "mapped", - [ - 107, - 112, - 97 - ] - ], - [ - [ - 13227, - 13227 - ], - "mapped", - [ - 109, - 112, - 97 - ] - ], - [ - [ - 13228, - 13228 - ], - "mapped", - [ - 103, - 112, - 97 - ] - ], - [ - [ - 13229, - 13229 - ], - "mapped", - [ - 114, - 97, - 100 - ] - ], - [ - [ - 13230, - 13230 - ], - "mapped", - [ - 114, - 97, - 100, - 8725, - 115 - ] - ], - [ - [ - 13231, - 13231 - ], - "mapped", - [ - 114, - 97, - 100, - 8725, - 115, - 50 - ] - ], - [ - [ - 13232, - 13232 - ], - "mapped", - [ - 112, - 115 - ] - ], - [ - [ - 13233, - 13233 - ], - "mapped", - [ - 110, - 115 - ] - ], - [ - [ - 13234, - 13234 - ], - "mapped", - [ - 956, - 115 - ] - ], - [ - [ - 13235, - 13235 - ], - "mapped", - [ - 109, - 115 - ] - ], - [ - [ - 13236, - 13236 - ], - "mapped", - [ - 112, - 118 - ] - ], - [ - [ - 13237, - 13237 - ], - "mapped", - [ - 110, - 118 - ] - ], - [ - [ - 13238, - 13238 - ], - "mapped", - [ - 956, - 118 - ] - ], - [ - [ - 13239, - 13239 - ], - "mapped", - [ - 109, - 118 - ] - ], - [ - [ - 13240, - 13240 - ], - "mapped", - [ - 107, - 118 - ] - ], - [ - [ - 13241, - 13241 - ], - "mapped", - [ - 109, - 118 - ] - ], - [ - [ - 13242, - 13242 - ], - "mapped", - [ - 112, - 119 - ] - ], - [ - [ - 13243, - 13243 - ], - "mapped", - [ - 110, - 119 - ] - ], - [ - [ - 13244, - 13244 - ], - "mapped", - [ - 956, - 119 - ] - ], - [ - [ - 13245, - 13245 - ], - "mapped", - [ - 109, - 119 - ] - ], - [ - [ - 13246, - 13246 - ], - "mapped", - [ - 107, - 119 - ] - ], - [ - [ - 13247, - 13247 - ], - "mapped", - [ - 109, - 119 - ] - ], - [ - [ - 13248, - 13248 - ], - "mapped", - [ - 107, - 969 - ] - ], - [ - [ - 13249, - 13249 - ], - "mapped", - [ - 109, - 969 - ] - ], - [ - [ - 13250, - 13250 - ], - "disallowed" - ], - [ - [ - 13251, - 13251 - ], - "mapped", - [ - 98, - 113 - ] - ], - [ - [ - 13252, - 13252 - ], - "mapped", - [ - 99, - 99 - ] - ], - [ - [ - 13253, - 13253 - ], - "mapped", - [ - 99, - 100 - ] - ], - [ - [ - 13254, - 13254 - ], - "mapped", - [ - 99, - 8725, - 107, - 103 - ] - ], - [ - [ - 13255, - 13255 - ], - "disallowed" - ], - [ - [ - 13256, - 13256 - ], - "mapped", - [ - 100, - 98 - ] - ], - [ - [ - 13257, - 13257 - ], - "mapped", - [ - 103, - 121 - ] - ], - [ - [ - 13258, - 13258 - ], - "mapped", - [ - 104, - 97 - ] - ], - [ - [ - 13259, - 13259 - ], - "mapped", - [ - 104, - 112 - ] - ], - [ - [ - 13260, - 13260 - ], - "mapped", - [ - 105, - 110 - ] - ], - [ - [ - 13261, - 13261 - ], - "mapped", - [ - 107, - 107 - ] - ], - [ - [ - 13262, - 13262 - ], - "mapped", - [ - 107, - 109 - ] - ], - [ - [ - 13263, - 13263 - ], - "mapped", - [ - 107, - 116 - ] - ], - [ - [ - 13264, - 13264 - ], - "mapped", - [ - 108, - 109 - ] - ], - [ - [ - 13265, - 13265 - ], - "mapped", - [ - 108, - 110 - ] - ], - [ - [ - 13266, - 13266 - ], - "mapped", - [ - 108, - 111, - 103 - ] - ], - [ - [ - 13267, - 13267 - ], - "mapped", - [ - 108, - 120 - ] - ], - [ - [ - 13268, - 13268 - ], - "mapped", - [ - 109, - 98 - ] - ], - [ - [ - 13269, - 13269 - ], - "mapped", - [ - 109, - 105, - 108 - ] - ], - [ - [ - 13270, - 13270 - ], - "mapped", - [ - 109, - 111, - 108 - ] - ], - [ - [ - 13271, - 13271 - ], - "mapped", - [ - 112, - 104 - ] - ], - [ - [ - 13272, - 13272 - ], - "disallowed" - ], - [ - [ - 13273, - 13273 - ], - "mapped", - [ - 112, - 112, - 109 - ] - ], - [ - [ - 13274, - 13274 - ], - "mapped", - [ - 112, - 114 - ] - ], - [ - [ - 13275, - 13275 - ], - "mapped", - [ - 115, - 114 - ] - ], - [ - [ - 13276, - 13276 - ], - "mapped", - [ - 115, - 118 - ] - ], - [ - [ - 13277, - 13277 - ], - "mapped", - [ - 119, - 98 - ] - ], - [ - [ - 13278, - 13278 - ], - "mapped", - [ - 118, - 8725, - 109 - ] - ], - [ - [ - 13279, - 13279 - ], - "mapped", - [ - 97, - 8725, - 109 - ] - ], - [ - [ - 13280, - 13280 - ], - "mapped", - [ - 49, - 26085 - ] - ], - [ - [ - 13281, - 13281 - ], - "mapped", - [ - 50, - 26085 - ] - ], - [ - [ - 13282, - 13282 - ], - "mapped", - [ - 51, - 26085 - ] - ], - [ - [ - 13283, - 13283 - ], - "mapped", - [ - 52, - 26085 - ] - ], - [ - [ - 13284, - 13284 - ], - "mapped", - [ - 53, - 26085 - ] - ], - [ - [ - 13285, - 13285 - ], - "mapped", - [ - 54, - 26085 - ] - ], - [ - [ - 13286, - 13286 - ], - "mapped", - [ - 55, - 26085 - ] - ], - [ - [ - 13287, - 13287 - ], - "mapped", - [ - 56, - 26085 - ] - ], - [ - [ - 13288, - 13288 - ], - "mapped", - [ - 57, - 26085 - ] - ], - [ - [ - 13289, - 13289 - ], - "mapped", - [ - 49, - 48, - 26085 - ] - ], - [ - [ - 13290, - 13290 - ], - "mapped", - [ - 49, - 49, - 26085 - ] - ], - [ - [ - 13291, - 13291 - ], - "mapped", - [ - 49, - 50, - 26085 - ] - ], - [ - [ - 13292, - 13292 - ], - "mapped", - [ - 49, - 51, - 26085 - ] - ], - [ - [ - 13293, - 13293 - ], - "mapped", - [ - 49, - 52, - 26085 - ] - ], - [ - [ - 13294, - 13294 - ], - "mapped", - [ - 49, - 53, - 26085 - ] - ], - [ - [ - 13295, - 13295 - ], - "mapped", - [ - 49, - 54, - 26085 - ] - ], - [ - [ - 13296, - 13296 - ], - "mapped", - [ - 49, - 55, - 26085 - ] - ], - [ - [ - 13297, - 13297 - ], - "mapped", - [ - 49, - 56, - 26085 - ] - ], - [ - [ - 13298, - 13298 - ], - "mapped", - [ - 49, - 57, - 26085 - ] - ], - [ - [ - 13299, - 13299 - ], - "mapped", - [ - 50, - 48, - 26085 - ] - ], - [ - [ - 13300, - 13300 - ], - "mapped", - [ - 50, - 49, - 26085 - ] - ], - [ - [ - 13301, - 13301 - ], - "mapped", - [ - 50, - 50, - 26085 - ] - ], - [ - [ - 13302, - 13302 - ], - "mapped", - [ - 50, - 51, - 26085 - ] - ], - [ - [ - 13303, - 13303 - ], - "mapped", - [ - 50, - 52, - 26085 - ] - ], - [ - [ - 13304, - 13304 - ], - "mapped", - [ - 50, - 53, - 26085 - ] - ], - [ - [ - 13305, - 13305 - ], - "mapped", - [ - 50, - 54, - 26085 - ] - ], - [ - [ - 13306, - 13306 - ], - "mapped", - [ - 50, - 55, - 26085 - ] - ], - [ - [ - 13307, - 13307 - ], - "mapped", - [ - 50, - 56, - 26085 - ] - ], - [ - [ - 13308, - 13308 - ], - "mapped", - [ - 50, - 57, - 26085 - ] - ], - [ - [ - 13309, - 13309 - ], - "mapped", - [ - 51, - 48, - 26085 - ] - ], - [ - [ - 13310, - 13310 - ], - "mapped", - [ - 51, - 49, - 26085 - ] - ], - [ - [ - 13311, - 13311 - ], - "mapped", - [ - 103, - 97, - 108 - ] - ], - [ - [ - 13312, - 19893 - ], - "valid" - ], - [ - [ - 19894, - 19903 - ], - "disallowed" - ], - [ - [ - 19904, - 19967 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 19968, - 40869 - ], - "valid" - ], - [ - [ - 40870, - 40891 - ], - "valid" - ], - [ - [ - 40892, - 40899 - ], - "valid" - ], - [ - [ - 40900, - 40907 - ], - "valid" - ], - [ - [ - 40908, - 40908 - ], - "valid" - ], - [ - [ - 40909, - 40917 - ], - "valid" - ], - [ - [ - 40918, - 40959 - ], - "disallowed" - ], - [ - [ - 40960, - 42124 - ], - "valid" - ], - [ - [ - 42125, - 42127 - ], - "disallowed" - ], - [ - [ - 42128, - 42145 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 42146, - 42147 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 42148, - 42163 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 42164, - 42164 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 42165, - 42176 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 42177, - 42177 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 42178, - 42180 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 42181, - 42181 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 42182, - 42182 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 42183, - 42191 - ], - "disallowed" - ], - [ - [ - 42192, - 42237 - ], - "valid" - ], - [ - [ - 42238, - 42239 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 42240, - 42508 - ], - "valid" - ], - [ - [ - 42509, - 42511 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 42512, - 42539 - ], - "valid" - ], - [ - [ - 42540, - 42559 - ], - "disallowed" - ], - [ - [ - 42560, - 42560 - ], - "mapped", - [ - 42561 - ] - ], - [ - [ - 42561, - 42561 - ], - "valid" - ], - [ - [ - 42562, - 42562 - ], - "mapped", - [ - 42563 - ] - ], - [ - [ - 42563, - 42563 - ], - "valid" - ], - [ - [ - 42564, - 42564 - ], - "mapped", - [ - 42565 - ] - ], - [ - [ - 42565, - 42565 - ], - "valid" - ], - [ - [ - 42566, - 42566 - ], - "mapped", - [ - 42567 - ] - ], - [ - [ - 42567, - 42567 - ], - "valid" - ], - [ - [ - 42568, - 42568 - ], - "mapped", - [ - 42569 - ] - ], - [ - [ - 42569, - 42569 - ], - "valid" - ], - [ - [ - 42570, - 42570 - ], - "mapped", - [ - 42571 - ] - ], - [ - [ - 42571, - 42571 - ], - "valid" - ], - [ - [ - 42572, - 42572 - ], - "mapped", - [ - 42573 - ] - ], - [ - [ - 42573, - 42573 - ], - "valid" - ], - [ - [ - 42574, - 42574 - ], - "mapped", - [ - 42575 - ] - ], - [ - [ - 42575, - 42575 - ], - "valid" - ], - [ - [ - 42576, - 42576 - ], - "mapped", - [ - 42577 - ] - ], - [ - [ - 42577, - 42577 - ], - "valid" - ], - [ - [ - 42578, - 42578 - ], - "mapped", - [ - 42579 - ] - ], - [ - [ - 42579, - 42579 - ], - "valid" - ], - [ - [ - 42580, - 42580 - ], - "mapped", - [ - 42581 - ] - ], - [ - [ - 42581, - 42581 - ], - "valid" - ], - [ - [ - 42582, - 42582 - ], - "mapped", - [ - 42583 - ] - ], - [ - [ - 42583, - 42583 - ], - "valid" - ], - [ - [ - 42584, - 42584 - ], - "mapped", - [ - 42585 - ] - ], - [ - [ - 42585, - 42585 - ], - "valid" - ], - [ - [ - 42586, - 42586 - ], - "mapped", - [ - 42587 - ] - ], - [ - [ - 42587, - 42587 - ], - "valid" - ], - [ - [ - 42588, - 42588 - ], - "mapped", - [ - 42589 - ] - ], - [ - [ - 42589, - 42589 - ], - "valid" - ], - [ - [ - 42590, - 42590 - ], - "mapped", - [ - 42591 - ] - ], - [ - [ - 42591, - 42591 - ], - "valid" - ], - [ - [ - 42592, - 42592 - ], - "mapped", - [ - 42593 - ] - ], - [ - [ - 42593, - 42593 - ], - "valid" - ], - [ - [ - 42594, - 42594 - ], - "mapped", - [ - 42595 - ] - ], - [ - [ - 42595, - 42595 - ], - "valid" - ], - [ - [ - 42596, - 42596 - ], - "mapped", - [ - 42597 - ] - ], - [ - [ - 42597, - 42597 - ], - "valid" - ], - [ - [ - 42598, - 42598 - ], - "mapped", - [ - 42599 - ] - ], - [ - [ - 42599, - 42599 - ], - "valid" - ], - [ - [ - 42600, - 42600 - ], - "mapped", - [ - 42601 - ] - ], - [ - [ - 42601, - 42601 - ], - "valid" - ], - [ - [ - 42602, - 42602 - ], - "mapped", - [ - 42603 - ] - ], - [ - [ - 42603, - 42603 - ], - "valid" - ], - [ - [ - 42604, - 42604 - ], - "mapped", - [ - 42605 - ] - ], - [ - [ - 42605, - 42607 - ], - "valid" - ], - [ - [ - 42608, - 42611 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 42612, - 42619 - ], - "valid" - ], - [ - [ - 42620, - 42621 - ], - "valid" - ], - [ - [ - 42622, - 42622 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 42623, - 42623 - ], - "valid" - ], - [ - [ - 42624, - 42624 - ], - "mapped", - [ - 42625 - ] - ], - [ - [ - 42625, - 42625 - ], - "valid" - ], - [ - [ - 42626, - 42626 - ], - "mapped", - [ - 42627 - ] - ], - [ - [ - 42627, - 42627 - ], - "valid" - ], - [ - [ - 42628, - 42628 - ], - "mapped", - [ - 42629 - ] - ], - [ - [ - 42629, - 42629 - ], - "valid" - ], - [ - [ - 42630, - 42630 - ], - "mapped", - [ - 42631 - ] - ], - [ - [ - 42631, - 42631 - ], - "valid" - ], - [ - [ - 42632, - 42632 - ], - "mapped", - [ - 42633 - ] - ], - [ - [ - 42633, - 42633 - ], - "valid" - ], - [ - [ - 42634, - 42634 - ], - "mapped", - [ - 42635 - ] - ], - [ - [ - 42635, - 42635 - ], - "valid" - ], - [ - [ - 42636, - 42636 - ], - "mapped", - [ - 42637 - ] - ], - [ - [ - 42637, - 42637 - ], - "valid" - ], - [ - [ - 42638, - 42638 - ], - "mapped", - [ - 42639 - ] - ], - [ - [ - 42639, - 42639 - ], - "valid" - ], - [ - [ - 42640, - 42640 - ], - "mapped", - [ - 42641 - ] - ], - [ - [ - 42641, - 42641 - ], - "valid" - ], - [ - [ - 42642, - 42642 - ], - "mapped", - [ - 42643 - ] - ], - [ - [ - 42643, - 42643 - ], - "valid" - ], - [ - [ - 42644, - 42644 - ], - "mapped", - [ - 42645 - ] - ], - [ - [ - 42645, - 42645 - ], - "valid" - ], - [ - [ - 42646, - 42646 - ], - "mapped", - [ - 42647 - ] - ], - [ - [ - 42647, - 42647 - ], - "valid" - ], - [ - [ - 42648, - 42648 - ], - "mapped", - [ - 42649 - ] - ], - [ - [ - 42649, - 42649 - ], - "valid" - ], - [ - [ - 42650, - 42650 - ], - "mapped", - [ - 42651 - ] - ], - [ - [ - 42651, - 42651 - ], - "valid" - ], - [ - [ - 42652, - 42652 - ], - "mapped", - [ - 1098 - ] - ], - [ - [ - 42653, - 42653 - ], - "mapped", - [ - 1100 - ] - ], - [ - [ - 42654, - 42654 - ], - "valid" - ], - [ - [ - 42655, - 42655 - ], - "valid" - ], - [ - [ - 42656, - 42725 - ], - "valid" - ], - [ - [ - 42726, - 42735 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 42736, - 42737 - ], - "valid" - ], - [ - [ - 42738, - 42743 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 42744, - 42751 - ], - "disallowed" - ], - [ - [ - 42752, - 42774 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 42775, - 42778 - ], - "valid" - ], - [ - [ - 42779, - 42783 - ], - "valid" - ], - [ - [ - 42784, - 42785 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 42786, - 42786 - ], - "mapped", - [ - 42787 - ] - ], - [ - [ - 42787, - 42787 - ], - "valid" - ], - [ - [ - 42788, - 42788 - ], - "mapped", - [ - 42789 - ] - ], - [ - [ - 42789, - 42789 - ], - "valid" - ], - [ - [ - 42790, - 42790 - ], - "mapped", - [ - 42791 - ] - ], - [ - [ - 42791, - 42791 - ], - "valid" - ], - [ - [ - 42792, - 42792 - ], - "mapped", - [ - 42793 - ] - ], - [ - [ - 42793, - 42793 - ], - "valid" - ], - [ - [ - 42794, - 42794 - ], - "mapped", - [ - 42795 - ] - ], - [ - [ - 42795, - 42795 - ], - "valid" - ], - [ - [ - 42796, - 42796 - ], - "mapped", - [ - 42797 - ] - ], - [ - [ - 42797, - 42797 - ], - "valid" - ], - [ - [ - 42798, - 42798 - ], - "mapped", - [ - 42799 - ] - ], - [ - [ - 42799, - 42801 - ], - "valid" - ], - [ - [ - 42802, - 42802 - ], - "mapped", - [ - 42803 - ] - ], - [ - [ - 42803, - 42803 - ], - "valid" - ], - [ - [ - 42804, - 42804 - ], - "mapped", - [ - 42805 - ] - ], - [ - [ - 42805, - 42805 - ], - "valid" - ], - [ - [ - 42806, - 42806 - ], - "mapped", - [ - 42807 - ] - ], - [ - [ - 42807, - 42807 - ], - "valid" - ], - [ - [ - 42808, - 42808 - ], - "mapped", - [ - 42809 - ] - ], - [ - [ - 42809, - 42809 - ], - "valid" - ], - [ - [ - 42810, - 42810 - ], - "mapped", - [ - 42811 - ] - ], - [ - [ - 42811, - 42811 - ], - "valid" - ], - [ - [ - 42812, - 42812 - ], - "mapped", - [ - 42813 - ] - ], - [ - [ - 42813, - 42813 - ], - "valid" - ], - [ - [ - 42814, - 42814 - ], - "mapped", - [ - 42815 - ] - ], - [ - [ - 42815, - 42815 - ], - "valid" - ], - [ - [ - 42816, - 42816 - ], - "mapped", - [ - 42817 - ] - ], - [ - [ - 42817, - 42817 - ], - "valid" - ], - [ - [ - 42818, - 42818 - ], - "mapped", - [ - 42819 - ] - ], - [ - [ - 42819, - 42819 - ], - "valid" - ], - [ - [ - 42820, - 42820 - ], - "mapped", - [ - 42821 - ] - ], - [ - [ - 42821, - 42821 - ], - "valid" - ], - [ - [ - 42822, - 42822 - ], - "mapped", - [ - 42823 - ] - ], - [ - [ - 42823, - 42823 - ], - "valid" - ], - [ - [ - 42824, - 42824 - ], - "mapped", - [ - 42825 - ] - ], - [ - [ - 42825, - 42825 - ], - "valid" - ], - [ - [ - 42826, - 42826 - ], - "mapped", - [ - 42827 - ] - ], - [ - [ - 42827, - 42827 - ], - "valid" - ], - [ - [ - 42828, - 42828 - ], - "mapped", - [ - 42829 - ] - ], - [ - [ - 42829, - 42829 - ], - "valid" - ], - [ - [ - 42830, - 42830 - ], - "mapped", - [ - 42831 - ] - ], - [ - [ - 42831, - 42831 - ], - "valid" - ], - [ - [ - 42832, - 42832 - ], - "mapped", - [ - 42833 - ] - ], - [ - [ - 42833, - 42833 - ], - "valid" - ], - [ - [ - 42834, - 42834 - ], - "mapped", - [ - 42835 - ] - ], - [ - [ - 42835, - 42835 - ], - "valid" - ], - [ - [ - 42836, - 42836 - ], - "mapped", - [ - 42837 - ] - ], - [ - [ - 42837, - 42837 - ], - "valid" - ], - [ - [ - 42838, - 42838 - ], - "mapped", - [ - 42839 - ] - ], - [ - [ - 42839, - 42839 - ], - "valid" - ], - [ - [ - 42840, - 42840 - ], - "mapped", - [ - 42841 - ] - ], - [ - [ - 42841, - 42841 - ], - "valid" - ], - [ - [ - 42842, - 42842 - ], - "mapped", - [ - 42843 - ] - ], - [ - [ - 42843, - 42843 - ], - "valid" - ], - [ - [ - 42844, - 42844 - ], - "mapped", - [ - 42845 - ] - ], - [ - [ - 42845, - 42845 - ], - "valid" - ], - [ - [ - 42846, - 42846 - ], - "mapped", - [ - 42847 - ] - ], - [ - [ - 42847, - 42847 - ], - "valid" - ], - [ - [ - 42848, - 42848 - ], - "mapped", - [ - 42849 - ] - ], - [ - [ - 42849, - 42849 - ], - "valid" - ], - [ - [ - 42850, - 42850 - ], - "mapped", - [ - 42851 - ] - ], - [ - [ - 42851, - 42851 - ], - "valid" - ], - [ - [ - 42852, - 42852 - ], - "mapped", - [ - 42853 - ] - ], - [ - [ - 42853, - 42853 - ], - "valid" - ], - [ - [ - 42854, - 42854 - ], - "mapped", - [ - 42855 - ] - ], - [ - [ - 42855, - 42855 - ], - "valid" - ], - [ - [ - 42856, - 42856 - ], - "mapped", - [ - 42857 - ] - ], - [ - [ - 42857, - 42857 - ], - "valid" - ], - [ - [ - 42858, - 42858 - ], - "mapped", - [ - 42859 - ] - ], - [ - [ - 42859, - 42859 - ], - "valid" - ], - [ - [ - 42860, - 42860 - ], - "mapped", - [ - 42861 - ] - ], - [ - [ - 42861, - 42861 - ], - "valid" - ], - [ - [ - 42862, - 42862 - ], - "mapped", - [ - 42863 - ] - ], - [ - [ - 42863, - 42863 - ], - "valid" - ], - [ - [ - 42864, - 42864 - ], - "mapped", - [ - 42863 - ] - ], - [ - [ - 42865, - 42872 - ], - "valid" - ], - [ - [ - 42873, - 42873 - ], - "mapped", - [ - 42874 - ] - ], - [ - [ - 42874, - 42874 - ], - "valid" - ], - [ - [ - 42875, - 42875 - ], - "mapped", - [ - 42876 - ] - ], - [ - [ - 42876, - 42876 - ], - "valid" - ], - [ - [ - 42877, - 42877 - ], - "mapped", - [ - 7545 - ] - ], - [ - [ - 42878, - 42878 - ], - "mapped", - [ - 42879 - ] - ], - [ - [ - 42879, - 42879 - ], - "valid" - ], - [ - [ - 42880, - 42880 - ], - "mapped", - [ - 42881 - ] - ], - [ - [ - 42881, - 42881 - ], - "valid" - ], - [ - [ - 42882, - 42882 - ], - "mapped", - [ - 42883 - ] - ], - [ - [ - 42883, - 42883 - ], - "valid" - ], - [ - [ - 42884, - 42884 - ], - "mapped", - [ - 42885 - ] - ], - [ - [ - 42885, - 42885 - ], - "valid" - ], - [ - [ - 42886, - 42886 - ], - "mapped", - [ - 42887 - ] - ], - [ - [ - 42887, - 42888 - ], - "valid" - ], - [ - [ - 42889, - 42890 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 42891, - 42891 - ], - "mapped", - [ - 42892 - ] - ], - [ - [ - 42892, - 42892 - ], - "valid" - ], - [ - [ - 42893, - 42893 - ], - "mapped", - [ - 613 - ] - ], - [ - [ - 42894, - 42894 - ], - "valid" - ], - [ - [ - 42895, - 42895 - ], - "valid" - ], - [ - [ - 42896, - 42896 - ], - "mapped", - [ - 42897 - ] - ], - [ - [ - 42897, - 42897 - ], - "valid" - ], - [ - [ - 42898, - 42898 - ], - "mapped", - [ - 42899 - ] - ], - [ - [ - 42899, - 42899 - ], - "valid" - ], - [ - [ - 42900, - 42901 - ], - "valid" - ], - [ - [ - 42902, - 42902 - ], - "mapped", - [ - 42903 - ] - ], - [ - [ - 42903, - 42903 - ], - "valid" - ], - [ - [ - 42904, - 42904 - ], - "mapped", - [ - 42905 - ] - ], - [ - [ - 42905, - 42905 - ], - "valid" - ], - [ - [ - 42906, - 42906 - ], - "mapped", - [ - 42907 - ] - ], - [ - [ - 42907, - 42907 - ], - "valid" - ], - [ - [ - 42908, - 42908 - ], - "mapped", - [ - 42909 - ] - ], - [ - [ - 42909, - 42909 - ], - "valid" - ], - [ - [ - 42910, - 42910 - ], - "mapped", - [ - 42911 - ] - ], - [ - [ - 42911, - 42911 - ], - "valid" - ], - [ - [ - 42912, - 42912 - ], - "mapped", - [ - 42913 - ] - ], - [ - [ - 42913, - 42913 - ], - "valid" - ], - [ - [ - 42914, - 42914 - ], - "mapped", - [ - 42915 - ] - ], - [ - [ - 42915, - 42915 - ], - "valid" - ], - [ - [ - 42916, - 42916 - ], - "mapped", - [ - 42917 - ] - ], - [ - [ - 42917, - 42917 - ], - "valid" - ], - [ - [ - 42918, - 42918 - ], - "mapped", - [ - 42919 - ] - ], - [ - [ - 42919, - 42919 - ], - "valid" - ], - [ - [ - 42920, - 42920 - ], - "mapped", - [ - 42921 - ] - ], - [ - [ - 42921, - 42921 - ], - "valid" - ], - [ - [ - 42922, - 42922 - ], - "mapped", - [ - 614 - ] - ], - [ - [ - 42923, - 42923 - ], - "mapped", - [ - 604 - ] - ], - [ - [ - 42924, - 42924 - ], - "mapped", - [ - 609 - ] - ], - [ - [ - 42925, - 42925 - ], - "mapped", - [ - 620 - ] - ], - [ - [ - 42926, - 42927 - ], - "disallowed" - ], - [ - [ - 42928, - 42928 - ], - "mapped", - [ - 670 - ] - ], - [ - [ - 42929, - 42929 - ], - "mapped", - [ - 647 - ] - ], - [ - [ - 42930, - 42930 - ], - "mapped", - [ - 669 - ] - ], - [ - [ - 42931, - 42931 - ], - "mapped", - [ - 43859 - ] - ], - [ - [ - 42932, - 42932 - ], - "mapped", - [ - 42933 - ] - ], - [ - [ - 42933, - 42933 - ], - "valid" - ], - [ - [ - 42934, - 42934 - ], - "mapped", - [ - 42935 - ] - ], - [ - [ - 42935, - 42935 - ], - "valid" - ], - [ - [ - 42936, - 42998 - ], - "disallowed" - ], - [ - [ - 42999, - 42999 - ], - "valid" - ], - [ - [ - 43000, - 43000 - ], - "mapped", - [ - 295 - ] - ], - [ - [ - 43001, - 43001 - ], - "mapped", - [ - 339 - ] - ], - [ - [ - 43002, - 43002 - ], - "valid" - ], - [ - [ - 43003, - 43007 - ], - "valid" - ], - [ - [ - 43008, - 43047 - ], - "valid" - ], - [ - [ - 43048, - 43051 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 43052, - 43055 - ], - "disallowed" - ], - [ - [ - 43056, - 43065 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 43066, - 43071 - ], - "disallowed" - ], - [ - [ - 43072, - 43123 - ], - "valid" - ], - [ - [ - 43124, - 43127 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 43128, - 43135 - ], - "disallowed" - ], - [ - [ - 43136, - 43204 - ], - "valid" - ], - [ - [ - 43205, - 43213 - ], - "disallowed" - ], - [ - [ - 43214, - 43215 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 43216, - 43225 - ], - "valid" - ], - [ - [ - 43226, - 43231 - ], - "disallowed" - ], - [ - [ - 43232, - 43255 - ], - "valid" - ], - [ - [ - 43256, - 43258 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 43259, - 43259 - ], - "valid" - ], - [ - [ - 43260, - 43260 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 43261, - 43261 - ], - "valid" - ], - [ - [ - 43262, - 43263 - ], - "disallowed" - ], - [ - [ - 43264, - 43309 - ], - "valid" - ], - [ - [ - 43310, - 43311 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 43312, - 43347 - ], - "valid" - ], - [ - [ - 43348, - 43358 - ], - "disallowed" - ], - [ - [ - 43359, - 43359 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 43360, - 43388 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 43389, - 43391 - ], - "disallowed" - ], - [ - [ - 43392, - 43456 - ], - "valid" - ], - [ - [ - 43457, - 43469 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 43470, - 43470 - ], - "disallowed" - ], - [ - [ - 43471, - 43481 - ], - "valid" - ], - [ - [ - 43482, - 43485 - ], - "disallowed" - ], - [ - [ - 43486, - 43487 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 43488, - 43518 - ], - "valid" - ], - [ - [ - 43519, - 43519 - ], - "disallowed" - ], - [ - [ - 43520, - 43574 - ], - "valid" - ], - [ - [ - 43575, - 43583 - ], - "disallowed" - ], - [ - [ - 43584, - 43597 - ], - "valid" - ], - [ - [ - 43598, - 43599 - ], - "disallowed" - ], - [ - [ - 43600, - 43609 - ], - "valid" - ], - [ - [ - 43610, - 43611 - ], - "disallowed" - ], - [ - [ - 43612, - 43615 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 43616, - 43638 - ], - "valid" - ], - [ - [ - 43639, - 43641 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 43642, - 43643 - ], - "valid" - ], - [ - [ - 43644, - 43647 - ], - "valid" - ], - [ - [ - 43648, - 43714 - ], - "valid" - ], - [ - [ - 43715, - 43738 - ], - "disallowed" - ], - [ - [ - 43739, - 43741 - ], - "valid" - ], - [ - [ - 43742, - 43743 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 43744, - 43759 - ], - "valid" - ], - [ - [ - 43760, - 43761 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 43762, - 43766 - ], - "valid" - ], - [ - [ - 43767, - 43776 - ], - "disallowed" - ], - [ - [ - 43777, - 43782 - ], - "valid" - ], - [ - [ - 43783, - 43784 - ], - "disallowed" - ], - [ - [ - 43785, - 43790 - ], - "valid" - ], - [ - [ - 43791, - 43792 - ], - "disallowed" - ], - [ - [ - 43793, - 43798 - ], - "valid" - ], - [ - [ - 43799, - 43807 - ], - "disallowed" - ], - [ - [ - 43808, - 43814 - ], - "valid" - ], - [ - [ - 43815, - 43815 - ], - "disallowed" - ], - [ - [ - 43816, - 43822 - ], - "valid" - ], - [ - [ - 43823, - 43823 - ], - "disallowed" - ], - [ - [ - 43824, - 43866 - ], - "valid" - ], - [ - [ - 43867, - 43867 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 43868, - 43868 - ], - "mapped", - [ - 42791 - ] - ], - [ - [ - 43869, - 43869 - ], - "mapped", - [ - 43831 - ] - ], - [ - [ - 43870, - 43870 - ], - "mapped", - [ - 619 - ] - ], - [ - [ - 43871, - 43871 - ], - "mapped", - [ - 43858 - ] - ], - [ - [ - 43872, - 43875 - ], - "valid" - ], - [ - [ - 43876, - 43877 - ], - "valid" - ], - [ - [ - 43878, - 43887 - ], - "disallowed" - ], - [ - [ - 43888, - 43888 - ], - "mapped", - [ - 5024 - ] - ], - [ - [ - 43889, - 43889 - ], - "mapped", - [ - 5025 - ] - ], - [ - [ - 43890, - 43890 - ], - "mapped", - [ - 5026 - ] - ], - [ - [ - 43891, - 43891 - ], - "mapped", - [ - 5027 - ] - ], - [ - [ - 43892, - 43892 - ], - "mapped", - [ - 5028 - ] - ], - [ - [ - 43893, - 43893 - ], - "mapped", - [ - 5029 - ] - ], - [ - [ - 43894, - 43894 - ], - "mapped", - [ - 5030 - ] - ], - [ - [ - 43895, - 43895 - ], - "mapped", - [ - 5031 - ] - ], - [ - [ - 43896, - 43896 - ], - "mapped", - [ - 5032 - ] - ], - [ - [ - 43897, - 43897 - ], - "mapped", - [ - 5033 - ] - ], - [ - [ - 43898, - 43898 - ], - "mapped", - [ - 5034 - ] - ], - [ - [ - 43899, - 43899 - ], - "mapped", - [ - 5035 - ] - ], - [ - [ - 43900, - 43900 - ], - "mapped", - [ - 5036 - ] - ], - [ - [ - 43901, - 43901 - ], - "mapped", - [ - 5037 - ] - ], - [ - [ - 43902, - 43902 - ], - "mapped", - [ - 5038 - ] - ], - [ - [ - 43903, - 43903 - ], - "mapped", - [ - 5039 - ] - ], - [ - [ - 43904, - 43904 - ], - "mapped", - [ - 5040 - ] - ], - [ - [ - 43905, - 43905 - ], - "mapped", - [ - 5041 - ] - ], - [ - [ - 43906, - 43906 - ], - "mapped", - [ - 5042 - ] - ], - [ - [ - 43907, - 43907 - ], - "mapped", - [ - 5043 - ] - ], - [ - [ - 43908, - 43908 - ], - "mapped", - [ - 5044 - ] - ], - [ - [ - 43909, - 43909 - ], - "mapped", - [ - 5045 - ] - ], - [ - [ - 43910, - 43910 - ], - "mapped", - [ - 5046 - ] - ], - [ - [ - 43911, - 43911 - ], - "mapped", - [ - 5047 - ] - ], - [ - [ - 43912, - 43912 - ], - "mapped", - [ - 5048 - ] - ], - [ - [ - 43913, - 43913 - ], - "mapped", - [ - 5049 - ] - ], - [ - [ - 43914, - 43914 - ], - "mapped", - [ - 5050 - ] - ], - [ - [ - 43915, - 43915 - ], - "mapped", - [ - 5051 - ] - ], - [ - [ - 43916, - 43916 - ], - "mapped", - [ - 5052 - ] - ], - [ - [ - 43917, - 43917 - ], - "mapped", - [ - 5053 - ] - ], - [ - [ - 43918, - 43918 - ], - "mapped", - [ - 5054 - ] - ], - [ - [ - 43919, - 43919 - ], - "mapped", - [ - 5055 - ] - ], - [ - [ - 43920, - 43920 - ], - "mapped", - [ - 5056 - ] - ], - [ - [ - 43921, - 43921 - ], - "mapped", - [ - 5057 - ] - ], - [ - [ - 43922, - 43922 - ], - "mapped", - [ - 5058 - ] - ], - [ - [ - 43923, - 43923 - ], - "mapped", - [ - 5059 - ] - ], - [ - [ - 43924, - 43924 - ], - "mapped", - [ - 5060 - ] - ], - [ - [ - 43925, - 43925 - ], - "mapped", - [ - 5061 - ] - ], - [ - [ - 43926, - 43926 - ], - "mapped", - [ - 5062 - ] - ], - [ - [ - 43927, - 43927 - ], - "mapped", - [ - 5063 - ] - ], - [ - [ - 43928, - 43928 - ], - "mapped", - [ - 5064 - ] - ], - [ - [ - 43929, - 43929 - ], - "mapped", - [ - 5065 - ] - ], - [ - [ - 43930, - 43930 - ], - "mapped", - [ - 5066 - ] - ], - [ - [ - 43931, - 43931 - ], - "mapped", - [ - 5067 - ] - ], - [ - [ - 43932, - 43932 - ], - "mapped", - [ - 5068 - ] - ], - [ - [ - 43933, - 43933 - ], - "mapped", - [ - 5069 - ] - ], - [ - [ - 43934, - 43934 - ], - "mapped", - [ - 5070 - ] - ], - [ - [ - 43935, - 43935 - ], - "mapped", - [ - 5071 - ] - ], - [ - [ - 43936, - 43936 - ], - "mapped", - [ - 5072 - ] - ], - [ - [ - 43937, - 43937 - ], - "mapped", - [ - 5073 - ] - ], - [ - [ - 43938, - 43938 - ], - "mapped", - [ - 5074 - ] - ], - [ - [ - 43939, - 43939 - ], - "mapped", - [ - 5075 - ] - ], - [ - [ - 43940, - 43940 - ], - "mapped", - [ - 5076 - ] - ], - [ - [ - 43941, - 43941 - ], - "mapped", - [ - 5077 - ] - ], - [ - [ - 43942, - 43942 - ], - "mapped", - [ - 5078 - ] - ], - [ - [ - 43943, - 43943 - ], - "mapped", - [ - 5079 - ] - ], - [ - [ - 43944, - 43944 - ], - "mapped", - [ - 5080 - ] - ], - [ - [ - 43945, - 43945 - ], - "mapped", - [ - 5081 - ] - ], - [ - [ - 43946, - 43946 - ], - "mapped", - [ - 5082 - ] - ], - [ - [ - 43947, - 43947 - ], - "mapped", - [ - 5083 - ] - ], - [ - [ - 43948, - 43948 - ], - "mapped", - [ - 5084 - ] - ], - [ - [ - 43949, - 43949 - ], - "mapped", - [ - 5085 - ] - ], - [ - [ - 43950, - 43950 - ], - "mapped", - [ - 5086 - ] - ], - [ - [ - 43951, - 43951 - ], - "mapped", - [ - 5087 - ] - ], - [ - [ - 43952, - 43952 - ], - "mapped", - [ - 5088 - ] - ], - [ - [ - 43953, - 43953 - ], - "mapped", - [ - 5089 - ] - ], - [ - [ - 43954, - 43954 - ], - "mapped", - [ - 5090 - ] - ], - [ - [ - 43955, - 43955 - ], - "mapped", - [ - 5091 - ] - ], - [ - [ - 43956, - 43956 - ], - "mapped", - [ - 5092 - ] - ], - [ - [ - 43957, - 43957 - ], - "mapped", - [ - 5093 - ] - ], - [ - [ - 43958, - 43958 - ], - "mapped", - [ - 5094 - ] - ], - [ - [ - 43959, - 43959 - ], - "mapped", - [ - 5095 - ] - ], - [ - [ - 43960, - 43960 - ], - "mapped", - [ - 5096 - ] - ], - [ - [ - 43961, - 43961 - ], - "mapped", - [ - 5097 - ] - ], - [ - [ - 43962, - 43962 - ], - "mapped", - [ - 5098 - ] - ], - [ - [ - 43963, - 43963 - ], - "mapped", - [ - 5099 - ] - ], - [ - [ - 43964, - 43964 - ], - "mapped", - [ - 5100 - ] - ], - [ - [ - 43965, - 43965 - ], - "mapped", - [ - 5101 - ] - ], - [ - [ - 43966, - 43966 - ], - "mapped", - [ - 5102 - ] - ], - [ - [ - 43967, - 43967 - ], - "mapped", - [ - 5103 - ] - ], - [ - [ - 43968, - 44010 - ], - "valid" - ], - [ - [ - 44011, - 44011 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 44012, - 44013 - ], - "valid" - ], - [ - [ - 44014, - 44015 - ], - "disallowed" - ], - [ - [ - 44016, - 44025 - ], - "valid" - ], - [ - [ - 44026, - 44031 - ], - "disallowed" - ], - [ - [ - 44032, - 55203 - ], - "valid" - ], - [ - [ - 55204, - 55215 - ], - "disallowed" - ], - [ - [ - 55216, - 55238 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 55239, - 55242 - ], - "disallowed" - ], - [ - [ - 55243, - 55291 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 55292, - 55295 - ], - "disallowed" - ], - [ - [ - 55296, - 57343 - ], - "disallowed" - ], - [ - [ - 57344, - 63743 - ], - "disallowed" - ], - [ - [ - 63744, - 63744 - ], - "mapped", - [ - 35912 - ] - ], - [ - [ - 63745, - 63745 - ], - "mapped", - [ - 26356 - ] - ], - [ - [ - 63746, - 63746 - ], - "mapped", - [ - 36554 - ] - ], - [ - [ - 63747, - 63747 - ], - "mapped", - [ - 36040 - ] - ], - [ - [ - 63748, - 63748 - ], - "mapped", - [ - 28369 - ] - ], - [ - [ - 63749, - 63749 - ], - "mapped", - [ - 20018 - ] - ], - [ - [ - 63750, - 63750 - ], - "mapped", - [ - 21477 - ] - ], - [ - [ - 63751, - 63752 - ], - "mapped", - [ - 40860 - ] - ], - [ - [ - 63753, - 63753 - ], - "mapped", - [ - 22865 - ] - ], - [ - [ - 63754, - 63754 - ], - "mapped", - [ - 37329 - ] - ], - [ - [ - 63755, - 63755 - ], - "mapped", - [ - 21895 - ] - ], - [ - [ - 63756, - 63756 - ], - "mapped", - [ - 22856 - ] - ], - [ - [ - 63757, - 63757 - ], - "mapped", - [ - 25078 - ] - ], - [ - [ - 63758, - 63758 - ], - "mapped", - [ - 30313 - ] - ], - [ - [ - 63759, - 63759 - ], - "mapped", - [ - 32645 - ] - ], - [ - [ - 63760, - 63760 - ], - "mapped", - [ - 34367 - ] - ], - [ - [ - 63761, - 63761 - ], - "mapped", - [ - 34746 - ] - ], - [ - [ - 63762, - 63762 - ], - "mapped", - [ - 35064 - ] - ], - [ - [ - 63763, - 63763 - ], - "mapped", - [ - 37007 - ] - ], - [ - [ - 63764, - 63764 - ], - "mapped", - [ - 27138 - ] - ], - [ - [ - 63765, - 63765 - ], - "mapped", - [ - 27931 - ] - ], - [ - [ - 63766, - 63766 - ], - "mapped", - [ - 28889 - ] - ], - [ - [ - 63767, - 63767 - ], - "mapped", - [ - 29662 - ] - ], - [ - [ - 63768, - 63768 - ], - "mapped", - [ - 33853 - ] - ], - [ - [ - 63769, - 63769 - ], - "mapped", - [ - 37226 - ] - ], - [ - [ - 63770, - 63770 - ], - "mapped", - [ - 39409 - ] - ], - [ - [ - 63771, - 63771 - ], - "mapped", - [ - 20098 - ] - ], - [ - [ - 63772, - 63772 - ], - "mapped", - [ - 21365 - ] - ], - [ - [ - 63773, - 63773 - ], - "mapped", - [ - 27396 - ] - ], - [ - [ - 63774, - 63774 - ], - "mapped", - [ - 29211 - ] - ], - [ - [ - 63775, - 63775 - ], - "mapped", - [ - 34349 - ] - ], - [ - [ - 63776, - 63776 - ], - "mapped", - [ - 40478 - ] - ], - [ - [ - 63777, - 63777 - ], - "mapped", - [ - 23888 - ] - ], - [ - [ - 63778, - 63778 - ], - "mapped", - [ - 28651 - ] - ], - [ - [ - 63779, - 63779 - ], - "mapped", - [ - 34253 - ] - ], - [ - [ - 63780, - 63780 - ], - "mapped", - [ - 35172 - ] - ], - [ - [ - 63781, - 63781 - ], - "mapped", - [ - 25289 - ] - ], - [ - [ - 63782, - 63782 - ], - "mapped", - [ - 33240 - ] - ], - [ - [ - 63783, - 63783 - ], - "mapped", - [ - 34847 - ] - ], - [ - [ - 63784, - 63784 - ], - "mapped", - [ - 24266 - ] - ], - [ - [ - 63785, - 63785 - ], - "mapped", - [ - 26391 - ] - ], - [ - [ - 63786, - 63786 - ], - "mapped", - [ - 28010 - ] - ], - [ - [ - 63787, - 63787 - ], - "mapped", - [ - 29436 - ] - ], - [ - [ - 63788, - 63788 - ], - "mapped", - [ - 37070 - ] - ], - [ - [ - 63789, - 63789 - ], - "mapped", - [ - 20358 - ] - ], - [ - [ - 63790, - 63790 - ], - "mapped", - [ - 20919 - ] - ], - [ - [ - 63791, - 63791 - ], - "mapped", - [ - 21214 - ] - ], - [ - [ - 63792, - 63792 - ], - "mapped", - [ - 25796 - ] - ], - [ - [ - 63793, - 63793 - ], - "mapped", - [ - 27347 - ] - ], - [ - [ - 63794, - 63794 - ], - "mapped", - [ - 29200 - ] - ], - [ - [ - 63795, - 63795 - ], - "mapped", - [ - 30439 - ] - ], - [ - [ - 63796, - 63796 - ], - "mapped", - [ - 32769 - ] - ], - [ - [ - 63797, - 63797 - ], - "mapped", - [ - 34310 - ] - ], - [ - [ - 63798, - 63798 - ], - "mapped", - [ - 34396 - ] - ], - [ - [ - 63799, - 63799 - ], - "mapped", - [ - 36335 - ] - ], - [ - [ - 63800, - 63800 - ], - "mapped", - [ - 38706 - ] - ], - [ - [ - 63801, - 63801 - ], - "mapped", - [ - 39791 - ] - ], - [ - [ - 63802, - 63802 - ], - "mapped", - [ - 40442 - ] - ], - [ - [ - 63803, - 63803 - ], - "mapped", - [ - 30860 - ] - ], - [ - [ - 63804, - 63804 - ], - "mapped", - [ - 31103 - ] - ], - [ - [ - 63805, - 63805 - ], - "mapped", - [ - 32160 - ] - ], - [ - [ - 63806, - 63806 - ], - "mapped", - [ - 33737 - ] - ], - [ - [ - 63807, - 63807 - ], - "mapped", - [ - 37636 - ] - ], - [ - [ - 63808, - 63808 - ], - "mapped", - [ - 40575 - ] - ], - [ - [ - 63809, - 63809 - ], - "mapped", - [ - 35542 - ] - ], - [ - [ - 63810, - 63810 - ], - "mapped", - [ - 22751 - ] - ], - [ - [ - 63811, - 63811 - ], - "mapped", - [ - 24324 - ] - ], - [ - [ - 63812, - 63812 - ], - "mapped", - [ - 31840 - ] - ], - [ - [ - 63813, - 63813 - ], - "mapped", - [ - 32894 - ] - ], - [ - [ - 63814, - 63814 - ], - "mapped", - [ - 29282 - ] - ], - [ - [ - 63815, - 63815 - ], - "mapped", - [ - 30922 - ] - ], - [ - [ - 63816, - 63816 - ], - "mapped", - [ - 36034 - ] - ], - [ - [ - 63817, - 63817 - ], - "mapped", - [ - 38647 - ] - ], - [ - [ - 63818, - 63818 - ], - "mapped", - [ - 22744 - ] - ], - [ - [ - 63819, - 63819 - ], - "mapped", - [ - 23650 - ] - ], - [ - [ - 63820, - 63820 - ], - "mapped", - [ - 27155 - ] - ], - [ - [ - 63821, - 63821 - ], - "mapped", - [ - 28122 - ] - ], - [ - [ - 63822, - 63822 - ], - "mapped", - [ - 28431 - ] - ], - [ - [ - 63823, - 63823 - ], - "mapped", - [ - 32047 - ] - ], - [ - [ - 63824, - 63824 - ], - "mapped", - [ - 32311 - ] - ], - [ - [ - 63825, - 63825 - ], - "mapped", - [ - 38475 - ] - ], - [ - [ - 63826, - 63826 - ], - "mapped", - [ - 21202 - ] - ], - [ - [ - 63827, - 63827 - ], - "mapped", - [ - 32907 - ] - ], - [ - [ - 63828, - 63828 - ], - "mapped", - [ - 20956 - ] - ], - [ - [ - 63829, - 63829 - ], - "mapped", - [ - 20940 - ] - ], - [ - [ - 63830, - 63830 - ], - "mapped", - [ - 31260 - ] - ], - [ - [ - 63831, - 63831 - ], - "mapped", - [ - 32190 - ] - ], - [ - [ - 63832, - 63832 - ], - "mapped", - [ - 33777 - ] - ], - [ - [ - 63833, - 63833 - ], - "mapped", - [ - 38517 - ] - ], - [ - [ - 63834, - 63834 - ], - "mapped", - [ - 35712 - ] - ], - [ - [ - 63835, - 63835 - ], - "mapped", - [ - 25295 - ] - ], - [ - [ - 63836, - 63836 - ], - "mapped", - [ - 27138 - ] - ], - [ - [ - 63837, - 63837 - ], - "mapped", - [ - 35582 - ] - ], - [ - [ - 63838, - 63838 - ], - "mapped", - [ - 20025 - ] - ], - [ - [ - 63839, - 63839 - ], - "mapped", - [ - 23527 - ] - ], - [ - [ - 63840, - 63840 - ], - "mapped", - [ - 24594 - ] - ], - [ - [ - 63841, - 63841 - ], - "mapped", - [ - 29575 - ] - ], - [ - [ - 63842, - 63842 - ], - "mapped", - [ - 30064 - ] - ], - [ - [ - 63843, - 63843 - ], - "mapped", - [ - 21271 - ] - ], - [ - [ - 63844, - 63844 - ], - "mapped", - [ - 30971 - ] - ], - [ - [ - 63845, - 63845 - ], - "mapped", - [ - 20415 - ] - ], - [ - [ - 63846, - 63846 - ], - "mapped", - [ - 24489 - ] - ], - [ - [ - 63847, - 63847 - ], - "mapped", - [ - 19981 - ] - ], - [ - [ - 63848, - 63848 - ], - "mapped", - [ - 27852 - ] - ], - [ - [ - 63849, - 63849 - ], - "mapped", - [ - 25976 - ] - ], - [ - [ - 63850, - 63850 - ], - "mapped", - [ - 32034 - ] - ], - [ - [ - 63851, - 63851 - ], - "mapped", - [ - 21443 - ] - ], - [ - [ - 63852, - 63852 - ], - "mapped", - [ - 22622 - ] - ], - [ - [ - 63853, - 63853 - ], - "mapped", - [ - 30465 - ] - ], - [ - [ - 63854, - 63854 - ], - "mapped", - [ - 33865 - ] - ], - [ - [ - 63855, - 63855 - ], - "mapped", - [ - 35498 - ] - ], - [ - [ - 63856, - 63856 - ], - "mapped", - [ - 27578 - ] - ], - [ - [ - 63857, - 63857 - ], - "mapped", - [ - 36784 - ] - ], - [ - [ - 63858, - 63858 - ], - "mapped", - [ - 27784 - ] - ], - [ - [ - 63859, - 63859 - ], - "mapped", - [ - 25342 - ] - ], - [ - [ - 63860, - 63860 - ], - "mapped", - [ - 33509 - ] - ], - [ - [ - 63861, - 63861 - ], - "mapped", - [ - 25504 - ] - ], - [ - [ - 63862, - 63862 - ], - "mapped", - [ - 30053 - ] - ], - [ - [ - 63863, - 63863 - ], - "mapped", - [ - 20142 - ] - ], - [ - [ - 63864, - 63864 - ], - "mapped", - [ - 20841 - ] - ], - [ - [ - 63865, - 63865 - ], - "mapped", - [ - 20937 - ] - ], - [ - [ - 63866, - 63866 - ], - "mapped", - [ - 26753 - ] - ], - [ - [ - 63867, - 63867 - ], - "mapped", - [ - 31975 - ] - ], - [ - [ - 63868, - 63868 - ], - "mapped", - [ - 33391 - ] - ], - [ - [ - 63869, - 63869 - ], - "mapped", - [ - 35538 - ] - ], - [ - [ - 63870, - 63870 - ], - "mapped", - [ - 37327 - ] - ], - [ - [ - 63871, - 63871 - ], - "mapped", - [ - 21237 - ] - ], - [ - [ - 63872, - 63872 - ], - "mapped", - [ - 21570 - ] - ], - [ - [ - 63873, - 63873 - ], - "mapped", - [ - 22899 - ] - ], - [ - [ - 63874, - 63874 - ], - "mapped", - [ - 24300 - ] - ], - [ - [ - 63875, - 63875 - ], - "mapped", - [ - 26053 - ] - ], - [ - [ - 63876, - 63876 - ], - "mapped", - [ - 28670 - ] - ], - [ - [ - 63877, - 63877 - ], - "mapped", - [ - 31018 - ] - ], - [ - [ - 63878, - 63878 - ], - "mapped", - [ - 38317 - ] - ], - [ - [ - 63879, - 63879 - ], - "mapped", - [ - 39530 - ] - ], - [ - [ - 63880, - 63880 - ], - "mapped", - [ - 40599 - ] - ], - [ - [ - 63881, - 63881 - ], - "mapped", - [ - 40654 - ] - ], - [ - [ - 63882, - 63882 - ], - "mapped", - [ - 21147 - ] - ], - [ - [ - 63883, - 63883 - ], - "mapped", - [ - 26310 - ] - ], - [ - [ - 63884, - 63884 - ], - "mapped", - [ - 27511 - ] - ], - [ - [ - 63885, - 63885 - ], - "mapped", - [ - 36706 - ] - ], - [ - [ - 63886, - 63886 - ], - "mapped", - [ - 24180 - ] - ], - [ - [ - 63887, - 63887 - ], - "mapped", - [ - 24976 - ] - ], - [ - [ - 63888, - 63888 - ], - "mapped", - [ - 25088 - ] - ], - [ - [ - 63889, - 63889 - ], - "mapped", - [ - 25754 - ] - ], - [ - [ - 63890, - 63890 - ], - "mapped", - [ - 28451 - ] - ], - [ - [ - 63891, - 63891 - ], - "mapped", - [ - 29001 - ] - ], - [ - [ - 63892, - 63892 - ], - "mapped", - [ - 29833 - ] - ], - [ - [ - 63893, - 63893 - ], - "mapped", - [ - 31178 - ] - ], - [ - [ - 63894, - 63894 - ], - "mapped", - [ - 32244 - ] - ], - [ - [ - 63895, - 63895 - ], - "mapped", - [ - 32879 - ] - ], - [ - [ - 63896, - 63896 - ], - "mapped", - [ - 36646 - ] - ], - [ - [ - 63897, - 63897 - ], - "mapped", - [ - 34030 - ] - ], - [ - [ - 63898, - 63898 - ], - "mapped", - [ - 36899 - ] - ], - [ - [ - 63899, - 63899 - ], - "mapped", - [ - 37706 - ] - ], - [ - [ - 63900, - 63900 - ], - "mapped", - [ - 21015 - ] - ], - [ - [ - 63901, - 63901 - ], - "mapped", - [ - 21155 - ] - ], - [ - [ - 63902, - 63902 - ], - "mapped", - [ - 21693 - ] - ], - [ - [ - 63903, - 63903 - ], - "mapped", - [ - 28872 - ] - ], - [ - [ - 63904, - 63904 - ], - "mapped", - [ - 35010 - ] - ], - [ - [ - 63905, - 63905 - ], - "mapped", - [ - 35498 - ] - ], - [ - [ - 63906, - 63906 - ], - "mapped", - [ - 24265 - ] - ], - [ - [ - 63907, - 63907 - ], - "mapped", - [ - 24565 - ] - ], - [ - [ - 63908, - 63908 - ], - "mapped", - [ - 25467 - ] - ], - [ - [ - 63909, - 63909 - ], - "mapped", - [ - 27566 - ] - ], - [ - [ - 63910, - 63910 - ], - "mapped", - [ - 31806 - ] - ], - [ - [ - 63911, - 63911 - ], - "mapped", - [ - 29557 - ] - ], - [ - [ - 63912, - 63912 - ], - "mapped", - [ - 20196 - ] - ], - [ - [ - 63913, - 63913 - ], - "mapped", - [ - 22265 - ] - ], - [ - [ - 63914, - 63914 - ], - "mapped", - [ - 23527 - ] - ], - [ - [ - 63915, - 63915 - ], - "mapped", - [ - 23994 - ] - ], - [ - [ - 63916, - 63916 - ], - "mapped", - [ - 24604 - ] - ], - [ - [ - 63917, - 63917 - ], - "mapped", - [ - 29618 - ] - ], - [ - [ - 63918, - 63918 - ], - "mapped", - [ - 29801 - ] - ], - [ - [ - 63919, - 63919 - ], - "mapped", - [ - 32666 - ] - ], - [ - [ - 63920, - 63920 - ], - "mapped", - [ - 32838 - ] - ], - [ - [ - 63921, - 63921 - ], - "mapped", - [ - 37428 - ] - ], - [ - [ - 63922, - 63922 - ], - "mapped", - [ - 38646 - ] - ], - [ - [ - 63923, - 63923 - ], - "mapped", - [ - 38728 - ] - ], - [ - [ - 63924, - 63924 - ], - "mapped", - [ - 38936 - ] - ], - [ - [ - 63925, - 63925 - ], - "mapped", - [ - 20363 - ] - ], - [ - [ - 63926, - 63926 - ], - "mapped", - [ - 31150 - ] - ], - [ - [ - 63927, - 63927 - ], - "mapped", - [ - 37300 - ] - ], - [ - [ - 63928, - 63928 - ], - "mapped", - [ - 38584 - ] - ], - [ - [ - 63929, - 63929 - ], - "mapped", - [ - 24801 - ] - ], - [ - [ - 63930, - 63930 - ], - "mapped", - [ - 20102 - ] - ], - [ - [ - 63931, - 63931 - ], - "mapped", - [ - 20698 - ] - ], - [ - [ - 63932, - 63932 - ], - "mapped", - [ - 23534 - ] - ], - [ - [ - 63933, - 63933 - ], - "mapped", - [ - 23615 - ] - ], - [ - [ - 63934, - 63934 - ], - "mapped", - [ - 26009 - ] - ], - [ - [ - 63935, - 63935 - ], - "mapped", - [ - 27138 - ] - ], - [ - [ - 63936, - 63936 - ], - "mapped", - [ - 29134 - ] - ], - [ - [ - 63937, - 63937 - ], - "mapped", - [ - 30274 - ] - ], - [ - [ - 63938, - 63938 - ], - "mapped", - [ - 34044 - ] - ], - [ - [ - 63939, - 63939 - ], - "mapped", - [ - 36988 - ] - ], - [ - [ - 63940, - 63940 - ], - "mapped", - [ - 40845 - ] - ], - [ - [ - 63941, - 63941 - ], - "mapped", - [ - 26248 - ] - ], - [ - [ - 63942, - 63942 - ], - "mapped", - [ - 38446 - ] - ], - [ - [ - 63943, - 63943 - ], - "mapped", - [ - 21129 - ] - ], - [ - [ - 63944, - 63944 - ], - "mapped", - [ - 26491 - ] - ], - [ - [ - 63945, - 63945 - ], - "mapped", - [ - 26611 - ] - ], - [ - [ - 63946, - 63946 - ], - "mapped", - [ - 27969 - ] - ], - [ - [ - 63947, - 63947 - ], - "mapped", - [ - 28316 - ] - ], - [ - [ - 63948, - 63948 - ], - "mapped", - [ - 29705 - ] - ], - [ - [ - 63949, - 63949 - ], - "mapped", - [ - 30041 - ] - ], - [ - [ - 63950, - 63950 - ], - "mapped", - [ - 30827 - ] - ], - [ - [ - 63951, - 63951 - ], - "mapped", - [ - 32016 - ] - ], - [ - [ - 63952, - 63952 - ], - "mapped", - [ - 39006 - ] - ], - [ - [ - 63953, - 63953 - ], - "mapped", - [ - 20845 - ] - ], - [ - [ - 63954, - 63954 - ], - "mapped", - [ - 25134 - ] - ], - [ - [ - 63955, - 63955 - ], - "mapped", - [ - 38520 - ] - ], - [ - [ - 63956, - 63956 - ], - "mapped", - [ - 20523 - ] - ], - [ - [ - 63957, - 63957 - ], - "mapped", - [ - 23833 - ] - ], - [ - [ - 63958, - 63958 - ], - "mapped", - [ - 28138 - ] - ], - [ - [ - 63959, - 63959 - ], - "mapped", - [ - 36650 - ] - ], - [ - [ - 63960, - 63960 - ], - "mapped", - [ - 24459 - ] - ], - [ - [ - 63961, - 63961 - ], - "mapped", - [ - 24900 - ] - ], - [ - [ - 63962, - 63962 - ], - "mapped", - [ - 26647 - ] - ], - [ - [ - 63963, - 63963 - ], - "mapped", - [ - 29575 - ] - ], - [ - [ - 63964, - 63964 - ], - "mapped", - [ - 38534 - ] - ], - [ - [ - 63965, - 63965 - ], - "mapped", - [ - 21033 - ] - ], - [ - [ - 63966, - 63966 - ], - "mapped", - [ - 21519 - ] - ], - [ - [ - 63967, - 63967 - ], - "mapped", - [ - 23653 - ] - ], - [ - [ - 63968, - 63968 - ], - "mapped", - [ - 26131 - ] - ], - [ - [ - 63969, - 63969 - ], - "mapped", - [ - 26446 - ] - ], - [ - [ - 63970, - 63970 - ], - "mapped", - [ - 26792 - ] - ], - [ - [ - 63971, - 63971 - ], - "mapped", - [ - 27877 - ] - ], - [ - [ - 63972, - 63972 - ], - "mapped", - [ - 29702 - ] - ], - [ - [ - 63973, - 63973 - ], - "mapped", - [ - 30178 - ] - ], - [ - [ - 63974, - 63974 - ], - "mapped", - [ - 32633 - ] - ], - [ - [ - 63975, - 63975 - ], - "mapped", - [ - 35023 - ] - ], - [ - [ - 63976, - 63976 - ], - "mapped", - [ - 35041 - ] - ], - [ - [ - 63977, - 63977 - ], - "mapped", - [ - 37324 - ] - ], - [ - [ - 63978, - 63978 - ], - "mapped", - [ - 38626 - ] - ], - [ - [ - 63979, - 63979 - ], - "mapped", - [ - 21311 - ] - ], - [ - [ - 63980, - 63980 - ], - "mapped", - [ - 28346 - ] - ], - [ - [ - 63981, - 63981 - ], - "mapped", - [ - 21533 - ] - ], - [ - [ - 63982, - 63982 - ], - "mapped", - [ - 29136 - ] - ], - [ - [ - 63983, - 63983 - ], - "mapped", - [ - 29848 - ] - ], - [ - [ - 63984, - 63984 - ], - "mapped", - [ - 34298 - ] - ], - [ - [ - 63985, - 63985 - ], - "mapped", - [ - 38563 - ] - ], - [ - [ - 63986, - 63986 - ], - "mapped", - [ - 40023 - ] - ], - [ - [ - 63987, - 63987 - ], - "mapped", - [ - 40607 - ] - ], - [ - [ - 63988, - 63988 - ], - "mapped", - [ - 26519 - ] - ], - [ - [ - 63989, - 63989 - ], - "mapped", - [ - 28107 - ] - ], - [ - [ - 63990, - 63990 - ], - "mapped", - [ - 33256 - ] - ], - [ - [ - 63991, - 63991 - ], - "mapped", - [ - 31435 - ] - ], - [ - [ - 63992, - 63992 - ], - "mapped", - [ - 31520 - ] - ], - [ - [ - 63993, - 63993 - ], - "mapped", - [ - 31890 - ] - ], - [ - [ - 63994, - 63994 - ], - "mapped", - [ - 29376 - ] - ], - [ - [ - 63995, - 63995 - ], - "mapped", - [ - 28825 - ] - ], - [ - [ - 63996, - 63996 - ], - "mapped", - [ - 35672 - ] - ], - [ - [ - 63997, - 63997 - ], - "mapped", - [ - 20160 - ] - ], - [ - [ - 63998, - 63998 - ], - "mapped", - [ - 33590 - ] - ], - [ - [ - 63999, - 63999 - ], - "mapped", - [ - 21050 - ] - ], - [ - [ - 64000, - 64000 - ], - "mapped", - [ - 20999 - ] - ], - [ - [ - 64001, - 64001 - ], - "mapped", - [ - 24230 - ] - ], - [ - [ - 64002, - 64002 - ], - "mapped", - [ - 25299 - ] - ], - [ - [ - 64003, - 64003 - ], - "mapped", - [ - 31958 - ] - ], - [ - [ - 64004, - 64004 - ], - "mapped", - [ - 23429 - ] - ], - [ - [ - 64005, - 64005 - ], - "mapped", - [ - 27934 - ] - ], - [ - [ - 64006, - 64006 - ], - "mapped", - [ - 26292 - ] - ], - [ - [ - 64007, - 64007 - ], - "mapped", - [ - 36667 - ] - ], - [ - [ - 64008, - 64008 - ], - "mapped", - [ - 34892 - ] - ], - [ - [ - 64009, - 64009 - ], - "mapped", - [ - 38477 - ] - ], - [ - [ - 64010, - 64010 - ], - "mapped", - [ - 35211 - ] - ], - [ - [ - 64011, - 64011 - ], - "mapped", - [ - 24275 - ] - ], - [ - [ - 64012, - 64012 - ], - "mapped", - [ - 20800 - ] - ], - [ - [ - 64013, - 64013 - ], - "mapped", - [ - 21952 - ] - ], - [ - [ - 64014, - 64015 - ], - "valid" - ], - [ - [ - 64016, - 64016 - ], - "mapped", - [ - 22618 - ] - ], - [ - [ - 64017, - 64017 - ], - "valid" - ], - [ - [ - 64018, - 64018 - ], - "mapped", - [ - 26228 - ] - ], - [ - [ - 64019, - 64020 - ], - "valid" - ], - [ - [ - 64021, - 64021 - ], - "mapped", - [ - 20958 - ] - ], - [ - [ - 64022, - 64022 - ], - "mapped", - [ - 29482 - ] - ], - [ - [ - 64023, - 64023 - ], - "mapped", - [ - 30410 - ] - ], - [ - [ - 64024, - 64024 - ], - "mapped", - [ - 31036 - ] - ], - [ - [ - 64025, - 64025 - ], - "mapped", - [ - 31070 - ] - ], - [ - [ - 64026, - 64026 - ], - "mapped", - [ - 31077 - ] - ], - [ - [ - 64027, - 64027 - ], - "mapped", - [ - 31119 - ] - ], - [ - [ - 64028, - 64028 - ], - "mapped", - [ - 38742 - ] - ], - [ - [ - 64029, - 64029 - ], - "mapped", - [ - 31934 - ] - ], - [ - [ - 64030, - 64030 - ], - "mapped", - [ - 32701 - ] - ], - [ - [ - 64031, - 64031 - ], - "valid" - ], - [ - [ - 64032, - 64032 - ], - "mapped", - [ - 34322 - ] - ], - [ - [ - 64033, - 64033 - ], - "valid" - ], - [ - [ - 64034, - 64034 - ], - "mapped", - [ - 35576 - ] - ], - [ - [ - 64035, - 64036 - ], - "valid" - ], - [ - [ - 64037, - 64037 - ], - "mapped", - [ - 36920 - ] - ], - [ - [ - 64038, - 64038 - ], - "mapped", - [ - 37117 - ] - ], - [ - [ - 64039, - 64041 - ], - "valid" - ], - [ - [ - 64042, - 64042 - ], - "mapped", - [ - 39151 - ] - ], - [ - [ - 64043, - 64043 - ], - "mapped", - [ - 39164 - ] - ], - [ - [ - 64044, - 64044 - ], - "mapped", - [ - 39208 - ] - ], - [ - [ - 64045, - 64045 - ], - "mapped", - [ - 40372 - ] - ], - [ - [ - 64046, - 64046 - ], - "mapped", - [ - 37086 - ] - ], - [ - [ - 64047, - 64047 - ], - "mapped", - [ - 38583 - ] - ], - [ - [ - 64048, - 64048 - ], - "mapped", - [ - 20398 - ] - ], - [ - [ - 64049, - 64049 - ], - "mapped", - [ - 20711 - ] - ], - [ - [ - 64050, - 64050 - ], - "mapped", - [ - 20813 - ] - ], - [ - [ - 64051, - 64051 - ], - "mapped", - [ - 21193 - ] - ], - [ - [ - 64052, - 64052 - ], - "mapped", - [ - 21220 - ] - ], - [ - [ - 64053, - 64053 - ], - "mapped", - [ - 21329 - ] - ], - [ - [ - 64054, - 64054 - ], - "mapped", - [ - 21917 - ] - ], - [ - [ - 64055, - 64055 - ], - "mapped", - [ - 22022 - ] - ], - [ - [ - 64056, - 64056 - ], - "mapped", - [ - 22120 - ] - ], - [ - [ - 64057, - 64057 - ], - "mapped", - [ - 22592 - ] - ], - [ - [ - 64058, - 64058 - ], - "mapped", - [ - 22696 - ] - ], - [ - [ - 64059, - 64059 - ], - "mapped", - [ - 23652 - ] - ], - [ - [ - 64060, - 64060 - ], - "mapped", - [ - 23662 - ] - ], - [ - [ - 64061, - 64061 - ], - "mapped", - [ - 24724 - ] - ], - [ - [ - 64062, - 64062 - ], - "mapped", - [ - 24936 - ] - ], - [ - [ - 64063, - 64063 - ], - "mapped", - [ - 24974 - ] - ], - [ - [ - 64064, - 64064 - ], - "mapped", - [ - 25074 - ] - ], - [ - [ - 64065, - 64065 - ], - "mapped", - [ - 25935 - ] - ], - [ - [ - 64066, - 64066 - ], - "mapped", - [ - 26082 - ] - ], - [ - [ - 64067, - 64067 - ], - "mapped", - [ - 26257 - ] - ], - [ - [ - 64068, - 64068 - ], - "mapped", - [ - 26757 - ] - ], - [ - [ - 64069, - 64069 - ], - "mapped", - [ - 28023 - ] - ], - [ - [ - 64070, - 64070 - ], - "mapped", - [ - 28186 - ] - ], - [ - [ - 64071, - 64071 - ], - "mapped", - [ - 28450 - ] - ], - [ - [ - 64072, - 64072 - ], - "mapped", - [ - 29038 - ] - ], - [ - [ - 64073, - 64073 - ], - "mapped", - [ - 29227 - ] - ], - [ - [ - 64074, - 64074 - ], - "mapped", - [ - 29730 - ] - ], - [ - [ - 64075, - 64075 - ], - "mapped", - [ - 30865 - ] - ], - [ - [ - 64076, - 64076 - ], - "mapped", - [ - 31038 - ] - ], - [ - [ - 64077, - 64077 - ], - "mapped", - [ - 31049 - ] - ], - [ - [ - 64078, - 64078 - ], - "mapped", - [ - 31048 - ] - ], - [ - [ - 64079, - 64079 - ], - "mapped", - [ - 31056 - ] - ], - [ - [ - 64080, - 64080 - ], - "mapped", - [ - 31062 - ] - ], - [ - [ - 64081, - 64081 - ], - "mapped", - [ - 31069 - ] - ], - [ - [ - 64082, - 64082 - ], - "mapped", - [ - 31117 - ] - ], - [ - [ - 64083, - 64083 - ], - "mapped", - [ - 31118 - ] - ], - [ - [ - 64084, - 64084 - ], - "mapped", - [ - 31296 - ] - ], - [ - [ - 64085, - 64085 - ], - "mapped", - [ - 31361 - ] - ], - [ - [ - 64086, - 64086 - ], - "mapped", - [ - 31680 - ] - ], - [ - [ - 64087, - 64087 - ], - "mapped", - [ - 32244 - ] - ], - [ - [ - 64088, - 64088 - ], - "mapped", - [ - 32265 - ] - ], - [ - [ - 64089, - 64089 - ], - "mapped", - [ - 32321 - ] - ], - [ - [ - 64090, - 64090 - ], - "mapped", - [ - 32626 - ] - ], - [ - [ - 64091, - 64091 - ], - "mapped", - [ - 32773 - ] - ], - [ - [ - 64092, - 64092 - ], - "mapped", - [ - 33261 - ] - ], - [ - [ - 64093, - 64094 - ], - "mapped", - [ - 33401 - ] - ], - [ - [ - 64095, - 64095 - ], - "mapped", - [ - 33879 - ] - ], - [ - [ - 64096, - 64096 - ], - "mapped", - [ - 35088 - ] - ], - [ - [ - 64097, - 64097 - ], - "mapped", - [ - 35222 - ] - ], - [ - [ - 64098, - 64098 - ], - "mapped", - [ - 35585 - ] - ], - [ - [ - 64099, - 64099 - ], - "mapped", - [ - 35641 - ] - ], - [ - [ - 64100, - 64100 - ], - "mapped", - [ - 36051 - ] - ], - [ - [ - 64101, - 64101 - ], - "mapped", - [ - 36104 - ] - ], - [ - [ - 64102, - 64102 - ], - "mapped", - [ - 36790 - ] - ], - [ - [ - 64103, - 64103 - ], - "mapped", - [ - 36920 - ] - ], - [ - [ - 64104, - 64104 - ], - "mapped", - [ - 38627 - ] - ], - [ - [ - 64105, - 64105 - ], - "mapped", - [ - 38911 - ] - ], - [ - [ - 64106, - 64106 - ], - "mapped", - [ - 38971 - ] - ], - [ - [ - 64107, - 64107 - ], - "mapped", - [ - 24693 - ] - ], - [ - [ - 64108, - 64108 - ], - "mapped", - [ - 148206 - ] - ], - [ - [ - 64109, - 64109 - ], - "mapped", - [ - 33304 - ] - ], - [ - [ - 64110, - 64111 - ], - "disallowed" - ], - [ - [ - 64112, - 64112 - ], - "mapped", - [ - 20006 - ] - ], - [ - [ - 64113, - 64113 - ], - "mapped", - [ - 20917 - ] - ], - [ - [ - 64114, - 64114 - ], - "mapped", - [ - 20840 - ] - ], - [ - [ - 64115, - 64115 - ], - "mapped", - [ - 20352 - ] - ], - [ - [ - 64116, - 64116 - ], - "mapped", - [ - 20805 - ] - ], - [ - [ - 64117, - 64117 - ], - "mapped", - [ - 20864 - ] - ], - [ - [ - 64118, - 64118 - ], - "mapped", - [ - 21191 - ] - ], - [ - [ - 64119, - 64119 - ], - "mapped", - [ - 21242 - ] - ], - [ - [ - 64120, - 64120 - ], - "mapped", - [ - 21917 - ] - ], - [ - [ - 64121, - 64121 - ], - "mapped", - [ - 21845 - ] - ], - [ - [ - 64122, - 64122 - ], - "mapped", - [ - 21913 - ] - ], - [ - [ - 64123, - 64123 - ], - "mapped", - [ - 21986 - ] - ], - [ - [ - 64124, - 64124 - ], - "mapped", - [ - 22618 - ] - ], - [ - [ - 64125, - 64125 - ], - "mapped", - [ - 22707 - ] - ], - [ - [ - 64126, - 64126 - ], - "mapped", - [ - 22852 - ] - ], - [ - [ - 64127, - 64127 - ], - "mapped", - [ - 22868 - ] - ], - [ - [ - 64128, - 64128 - ], - "mapped", - [ - 23138 - ] - ], - [ - [ - 64129, - 64129 - ], - "mapped", - [ - 23336 - ] - ], - [ - [ - 64130, - 64130 - ], - "mapped", - [ - 24274 - ] - ], - [ - [ - 64131, - 64131 - ], - "mapped", - [ - 24281 - ] - ], - [ - [ - 64132, - 64132 - ], - "mapped", - [ - 24425 - ] - ], - [ - [ - 64133, - 64133 - ], - "mapped", - [ - 24493 - ] - ], - [ - [ - 64134, - 64134 - ], - "mapped", - [ - 24792 - ] - ], - [ - [ - 64135, - 64135 - ], - "mapped", - [ - 24910 - ] - ], - [ - [ - 64136, - 64136 - ], - "mapped", - [ - 24840 - ] - ], - [ - [ - 64137, - 64137 - ], - "mapped", - [ - 24974 - ] - ], - [ - [ - 64138, - 64138 - ], - "mapped", - [ - 24928 - ] - ], - [ - [ - 64139, - 64139 - ], - "mapped", - [ - 25074 - ] - ], - [ - [ - 64140, - 64140 - ], - "mapped", - [ - 25140 - ] - ], - [ - [ - 64141, - 64141 - ], - "mapped", - [ - 25540 - ] - ], - [ - [ - 64142, - 64142 - ], - "mapped", - [ - 25628 - ] - ], - [ - [ - 64143, - 64143 - ], - "mapped", - [ - 25682 - ] - ], - [ - [ - 64144, - 64144 - ], - "mapped", - [ - 25942 - ] - ], - [ - [ - 64145, - 64145 - ], - "mapped", - [ - 26228 - ] - ], - [ - [ - 64146, - 64146 - ], - "mapped", - [ - 26391 - ] - ], - [ - [ - 64147, - 64147 - ], - "mapped", - [ - 26395 - ] - ], - [ - [ - 64148, - 64148 - ], - "mapped", - [ - 26454 - ] - ], - [ - [ - 64149, - 64149 - ], - "mapped", - [ - 27513 - ] - ], - [ - [ - 64150, - 64150 - ], - "mapped", - [ - 27578 - ] - ], - [ - [ - 64151, - 64151 - ], - "mapped", - [ - 27969 - ] - ], - [ - [ - 64152, - 64152 - ], - "mapped", - [ - 28379 - ] - ], - [ - [ - 64153, - 64153 - ], - "mapped", - [ - 28363 - ] - ], - [ - [ - 64154, - 64154 - ], - "mapped", - [ - 28450 - ] - ], - [ - [ - 64155, - 64155 - ], - "mapped", - [ - 28702 - ] - ], - [ - [ - 64156, - 64156 - ], - "mapped", - [ - 29038 - ] - ], - [ - [ - 64157, - 64157 - ], - "mapped", - [ - 30631 - ] - ], - [ - [ - 64158, - 64158 - ], - "mapped", - [ - 29237 - ] - ], - [ - [ - 64159, - 64159 - ], - "mapped", - [ - 29359 - ] - ], - [ - [ - 64160, - 64160 - ], - "mapped", - [ - 29482 - ] - ], - [ - [ - 64161, - 64161 - ], - "mapped", - [ - 29809 - ] - ], - [ - [ - 64162, - 64162 - ], - "mapped", - [ - 29958 - ] - ], - [ - [ - 64163, - 64163 - ], - "mapped", - [ - 30011 - ] - ], - [ - [ - 64164, - 64164 - ], - "mapped", - [ - 30237 - ] - ], - [ - [ - 64165, - 64165 - ], - "mapped", - [ - 30239 - ] - ], - [ - [ - 64166, - 64166 - ], - "mapped", - [ - 30410 - ] - ], - [ - [ - 64167, - 64167 - ], - "mapped", - [ - 30427 - ] - ], - [ - [ - 64168, - 64168 - ], - "mapped", - [ - 30452 - ] - ], - [ - [ - 64169, - 64169 - ], - "mapped", - [ - 30538 - ] - ], - [ - [ - 64170, - 64170 - ], - "mapped", - [ - 30528 - ] - ], - [ - [ - 64171, - 64171 - ], - "mapped", - [ - 30924 - ] - ], - [ - [ - 64172, - 64172 - ], - "mapped", - [ - 31409 - ] - ], - [ - [ - 64173, - 64173 - ], - "mapped", - [ - 31680 - ] - ], - [ - [ - 64174, - 64174 - ], - "mapped", - [ - 31867 - ] - ], - [ - [ - 64175, - 64175 - ], - "mapped", - [ - 32091 - ] - ], - [ - [ - 64176, - 64176 - ], - "mapped", - [ - 32244 - ] - ], - [ - [ - 64177, - 64177 - ], - "mapped", - [ - 32574 - ] - ], - [ - [ - 64178, - 64178 - ], - "mapped", - [ - 32773 - ] - ], - [ - [ - 64179, - 64179 - ], - "mapped", - [ - 33618 - ] - ], - [ - [ - 64180, - 64180 - ], - "mapped", - [ - 33775 - ] - ], - [ - [ - 64181, - 64181 - ], - "mapped", - [ - 34681 - ] - ], - [ - [ - 64182, - 64182 - ], - "mapped", - [ - 35137 - ] - ], - [ - [ - 64183, - 64183 - ], - "mapped", - [ - 35206 - ] - ], - [ - [ - 64184, - 64184 - ], - "mapped", - [ - 35222 - ] - ], - [ - [ - 64185, - 64185 - ], - "mapped", - [ - 35519 - ] - ], - [ - [ - 64186, - 64186 - ], - "mapped", - [ - 35576 - ] - ], - [ - [ - 64187, - 64187 - ], - "mapped", - [ - 35531 - ] - ], - [ - [ - 64188, - 64188 - ], - "mapped", - [ - 35585 - ] - ], - [ - [ - 64189, - 64189 - ], - "mapped", - [ - 35582 - ] - ], - [ - [ - 64190, - 64190 - ], - "mapped", - [ - 35565 - ] - ], - [ - [ - 64191, - 64191 - ], - "mapped", - [ - 35641 - ] - ], - [ - [ - 64192, - 64192 - ], - "mapped", - [ - 35722 - ] - ], - [ - [ - 64193, - 64193 - ], - "mapped", - [ - 36104 - ] - ], - [ - [ - 64194, - 64194 - ], - "mapped", - [ - 36664 - ] - ], - [ - [ - 64195, - 64195 - ], - "mapped", - [ - 36978 - ] - ], - [ - [ - 64196, - 64196 - ], - "mapped", - [ - 37273 - ] - ], - [ - [ - 64197, - 64197 - ], - "mapped", - [ - 37494 - ] - ], - [ - [ - 64198, - 64198 - ], - "mapped", - [ - 38524 - ] - ], - [ - [ - 64199, - 64199 - ], - "mapped", - [ - 38627 - ] - ], - [ - [ - 64200, - 64200 - ], - "mapped", - [ - 38742 - ] - ], - [ - [ - 64201, - 64201 - ], - "mapped", - [ - 38875 - ] - ], - [ - [ - 64202, - 64202 - ], - "mapped", - [ - 38911 - ] - ], - [ - [ - 64203, - 64203 - ], - "mapped", - [ - 38923 - ] - ], - [ - [ - 64204, - 64204 - ], - "mapped", - [ - 38971 - ] - ], - [ - [ - 64205, - 64205 - ], - "mapped", - [ - 39698 - ] - ], - [ - [ - 64206, - 64206 - ], - "mapped", - [ - 40860 - ] - ], - [ - [ - 64207, - 64207 - ], - "mapped", - [ - 141386 - ] - ], - [ - [ - 64208, - 64208 - ], - "mapped", - [ - 141380 - ] - ], - [ - [ - 64209, - 64209 - ], - "mapped", - [ - 144341 - ] - ], - [ - [ - 64210, - 64210 - ], - "mapped", - [ - 15261 - ] - ], - [ - [ - 64211, - 64211 - ], - "mapped", - [ - 16408 - ] - ], - [ - [ - 64212, - 64212 - ], - "mapped", - [ - 16441 - ] - ], - [ - [ - 64213, - 64213 - ], - "mapped", - [ - 152137 - ] - ], - [ - [ - 64214, - 64214 - ], - "mapped", - [ - 154832 - ] - ], - [ - [ - 64215, - 64215 - ], - "mapped", - [ - 163539 - ] - ], - [ - [ - 64216, - 64216 - ], - "mapped", - [ - 40771 - ] - ], - [ - [ - 64217, - 64217 - ], - "mapped", - [ - 40846 - ] - ], - [ - [ - 64218, - 64255 - ], - "disallowed" - ], - [ - [ - 64256, - 64256 - ], - "mapped", - [ - 102, - 102 - ] - ], - [ - [ - 64257, - 64257 - ], - "mapped", - [ - 102, - 105 - ] - ], - [ - [ - 64258, - 64258 - ], - "mapped", - [ - 102, - 108 - ] - ], - [ - [ - 64259, - 64259 - ], - "mapped", - [ - 102, - 102, - 105 - ] - ], - [ - [ - 64260, - 64260 - ], - "mapped", - [ - 102, - 102, - 108 - ] - ], - [ - [ - 64261, - 64262 - ], - "mapped", - [ - 115, - 116 - ] - ], - [ - [ - 64263, - 64274 - ], - "disallowed" - ], - [ - [ - 64275, - 64275 - ], - "mapped", - [ - 1396, - 1398 - ] - ], - [ - [ - 64276, - 64276 - ], - "mapped", - [ - 1396, - 1381 - ] - ], - [ - [ - 64277, - 64277 - ], - "mapped", - [ - 1396, - 1387 - ] - ], - [ - [ - 64278, - 64278 - ], - "mapped", - [ - 1406, - 1398 - ] - ], - [ - [ - 64279, - 64279 - ], - "mapped", - [ - 1396, - 1389 - ] - ], - [ - [ - 64280, - 64284 - ], - "disallowed" - ], - [ - [ - 64285, - 64285 - ], - "mapped", - [ - 1497, - 1460 - ] - ], - [ - [ - 64286, - 64286 - ], - "valid" - ], - [ - [ - 64287, - 64287 - ], - "mapped", - [ - 1522, - 1463 - ] - ], - [ - [ - 64288, - 64288 - ], - "mapped", - [ - 1506 - ] - ], - [ - [ - 64289, - 64289 - ], - "mapped", - [ - 1488 - ] - ], - [ - [ - 64290, - 64290 - ], - "mapped", - [ - 1491 - ] - ], - [ - [ - 64291, - 64291 - ], - "mapped", - [ - 1492 - ] - ], - [ - [ - 64292, - 64292 - ], - "mapped", - [ - 1499 - ] - ], - [ - [ - 64293, - 64293 - ], - "mapped", - [ - 1500 - ] - ], - [ - [ - 64294, - 64294 - ], - "mapped", - [ - 1501 - ] - ], - [ - [ - 64295, - 64295 - ], - "mapped", - [ - 1512 - ] - ], - [ - [ - 64296, - 64296 - ], - "mapped", - [ - 1514 - ] - ], - [ - [ - 64297, - 64297 - ], - "disallowed_STD3_mapped", - [ - 43 - ] - ], - [ - [ - 64298, - 64298 - ], - "mapped", - [ - 1513, - 1473 - ] - ], - [ - [ - 64299, - 64299 - ], - "mapped", - [ - 1513, - 1474 - ] - ], - [ - [ - 64300, - 64300 - ], - "mapped", - [ - 1513, - 1468, - 1473 - ] - ], - [ - [ - 64301, - 64301 - ], - "mapped", - [ - 1513, - 1468, - 1474 - ] - ], - [ - [ - 64302, - 64302 - ], - "mapped", - [ - 1488, - 1463 - ] - ], - [ - [ - 64303, - 64303 - ], - "mapped", - [ - 1488, - 1464 - ] - ], - [ - [ - 64304, - 64304 - ], - "mapped", - [ - 1488, - 1468 - ] - ], - [ - [ - 64305, - 64305 - ], - "mapped", - [ - 1489, - 1468 - ] - ], - [ - [ - 64306, - 64306 - ], - "mapped", - [ - 1490, - 1468 - ] - ], - [ - [ - 64307, - 64307 - ], - "mapped", - [ - 1491, - 1468 - ] - ], - [ - [ - 64308, - 64308 - ], - "mapped", - [ - 1492, - 1468 - ] - ], - [ - [ - 64309, - 64309 - ], - "mapped", - [ - 1493, - 1468 - ] - ], - [ - [ - 64310, - 64310 - ], - "mapped", - [ - 1494, - 1468 - ] - ], - [ - [ - 64311, - 64311 - ], - "disallowed" - ], - [ - [ - 64312, - 64312 - ], - "mapped", - [ - 1496, - 1468 - ] - ], - [ - [ - 64313, - 64313 - ], - "mapped", - [ - 1497, - 1468 - ] - ], - [ - [ - 64314, - 64314 - ], - "mapped", - [ - 1498, - 1468 - ] - ], - [ - [ - 64315, - 64315 - ], - "mapped", - [ - 1499, - 1468 - ] - ], - [ - [ - 64316, - 64316 - ], - "mapped", - [ - 1500, - 1468 - ] - ], - [ - [ - 64317, - 64317 - ], - "disallowed" - ], - [ - [ - 64318, - 64318 - ], - "mapped", - [ - 1502, - 1468 - ] - ], - [ - [ - 64319, - 64319 - ], - "disallowed" - ], - [ - [ - 64320, - 64320 - ], - "mapped", - [ - 1504, - 1468 - ] - ], - [ - [ - 64321, - 64321 - ], - "mapped", - [ - 1505, - 1468 - ] - ], - [ - [ - 64322, - 64322 - ], - "disallowed" - ], - [ - [ - 64323, - 64323 - ], - "mapped", - [ - 1507, - 1468 - ] - ], - [ - [ - 64324, - 64324 - ], - "mapped", - [ - 1508, - 1468 - ] - ], - [ - [ - 64325, - 64325 - ], - "disallowed" - ], - [ - [ - 64326, - 64326 - ], - "mapped", - [ - 1510, - 1468 - ] - ], - [ - [ - 64327, - 64327 - ], - "mapped", - [ - 1511, - 1468 - ] - ], - [ - [ - 64328, - 64328 - ], - "mapped", - [ - 1512, - 1468 - ] - ], - [ - [ - 64329, - 64329 - ], - "mapped", - [ - 1513, - 1468 - ] - ], - [ - [ - 64330, - 64330 - ], - "mapped", - [ - 1514, - 1468 - ] - ], - [ - [ - 64331, - 64331 - ], - "mapped", - [ - 1493, - 1465 - ] - ], - [ - [ - 64332, - 64332 - ], - "mapped", - [ - 1489, - 1471 - ] - ], - [ - [ - 64333, - 64333 - ], - "mapped", - [ - 1499, - 1471 - ] - ], - [ - [ - 64334, - 64334 - ], - "mapped", - [ - 1508, - 1471 - ] - ], - [ - [ - 64335, - 64335 - ], - "mapped", - [ - 1488, - 1500 - ] - ], - [ - [ - 64336, - 64337 - ], - "mapped", - [ - 1649 - ] - ], - [ - [ - 64338, - 64341 - ], - "mapped", - [ - 1659 - ] - ], - [ - [ - 64342, - 64345 - ], - "mapped", - [ - 1662 - ] - ], - [ - [ - 64346, - 64349 - ], - "mapped", - [ - 1664 - ] - ], - [ - [ - 64350, - 64353 - ], - "mapped", - [ - 1658 - ] - ], - [ - [ - 64354, - 64357 - ], - "mapped", - [ - 1663 - ] - ], - [ - [ - 64358, - 64361 - ], - "mapped", - [ - 1657 - ] - ], - [ - [ - 64362, - 64365 - ], - "mapped", - [ - 1700 - ] - ], - [ - [ - 64366, - 64369 - ], - "mapped", - [ - 1702 - ] - ], - [ - [ - 64370, - 64373 - ], - "mapped", - [ - 1668 - ] - ], - [ - [ - 64374, - 64377 - ], - "mapped", - [ - 1667 - ] - ], - [ - [ - 64378, - 64381 - ], - "mapped", - [ - 1670 - ] - ], - [ - [ - 64382, - 64385 - ], - "mapped", - [ - 1671 - ] - ], - [ - [ - 64386, - 64387 - ], - "mapped", - [ - 1677 - ] - ], - [ - [ - 64388, - 64389 - ], - "mapped", - [ - 1676 - ] - ], - [ - [ - 64390, - 64391 - ], - "mapped", - [ - 1678 - ] - ], - [ - [ - 64392, - 64393 - ], - "mapped", - [ - 1672 - ] - ], - [ - [ - 64394, - 64395 - ], - "mapped", - [ - 1688 - ] - ], - [ - [ - 64396, - 64397 - ], - "mapped", - [ - 1681 - ] - ], - [ - [ - 64398, - 64401 - ], - "mapped", - [ - 1705 - ] - ], - [ - [ - 64402, - 64405 - ], - "mapped", - [ - 1711 - ] - ], - [ - [ - 64406, - 64409 - ], - "mapped", - [ - 1715 - ] - ], - [ - [ - 64410, - 64413 - ], - "mapped", - [ - 1713 - ] - ], - [ - [ - 64414, - 64415 - ], - "mapped", - [ - 1722 - ] - ], - [ - [ - 64416, - 64419 - ], - "mapped", - [ - 1723 - ] - ], - [ - [ - 64420, - 64421 - ], - "mapped", - [ - 1728 - ] - ], - [ - [ - 64422, - 64425 - ], - "mapped", - [ - 1729 - ] - ], - [ - [ - 64426, - 64429 - ], - "mapped", - [ - 1726 - ] - ], - [ - [ - 64430, - 64431 - ], - "mapped", - [ - 1746 - ] - ], - [ - [ - 64432, - 64433 - ], - "mapped", - [ - 1747 - ] - ], - [ - [ - 64434, - 64449 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 64450, - 64466 - ], - "disallowed" - ], - [ - [ - 64467, - 64470 - ], - "mapped", - [ - 1709 - ] - ], - [ - [ - 64471, - 64472 - ], - "mapped", - [ - 1735 - ] - ], - [ - [ - 64473, - 64474 - ], - "mapped", - [ - 1734 - ] - ], - [ - [ - 64475, - 64476 - ], - "mapped", - [ - 1736 - ] - ], - [ - [ - 64477, - 64477 - ], - "mapped", - [ - 1735, - 1652 - ] - ], - [ - [ - 64478, - 64479 - ], - "mapped", - [ - 1739 - ] - ], - [ - [ - 64480, - 64481 - ], - "mapped", - [ - 1733 - ] - ], - [ - [ - 64482, - 64483 - ], - "mapped", - [ - 1737 - ] - ], - [ - [ - 64484, - 64487 - ], - "mapped", - [ - 1744 - ] - ], - [ - [ - 64488, - 64489 - ], - "mapped", - [ - 1609 - ] - ], - [ - [ - 64490, - 64491 - ], - "mapped", - [ - 1574, - 1575 - ] - ], - [ - [ - 64492, - 64493 - ], - "mapped", - [ - 1574, - 1749 - ] - ], - [ - [ - 64494, - 64495 - ], - "mapped", - [ - 1574, - 1608 - ] - ], - [ - [ - 64496, - 64497 - ], - "mapped", - [ - 1574, - 1735 - ] - ], - [ - [ - 64498, - 64499 - ], - "mapped", - [ - 1574, - 1734 - ] - ], - [ - [ - 64500, - 64501 - ], - "mapped", - [ - 1574, - 1736 - ] - ], - [ - [ - 64502, - 64504 - ], - "mapped", - [ - 1574, - 1744 - ] - ], - [ - [ - 64505, - 64507 - ], - "mapped", - [ - 1574, - 1609 - ] - ], - [ - [ - 64508, - 64511 - ], - "mapped", - [ - 1740 - ] - ], - [ - [ - 64512, - 64512 - ], - "mapped", - [ - 1574, - 1580 - ] - ], - [ - [ - 64513, - 64513 - ], - "mapped", - [ - 1574, - 1581 - ] - ], - [ - [ - 64514, - 64514 - ], - "mapped", - [ - 1574, - 1605 - ] - ], - [ - [ - 64515, - 64515 - ], - "mapped", - [ - 1574, - 1609 - ] - ], - [ - [ - 64516, - 64516 - ], - "mapped", - [ - 1574, - 1610 - ] - ], - [ - [ - 64517, - 64517 - ], - "mapped", - [ - 1576, - 1580 - ] - ], - [ - [ - 64518, - 64518 - ], - "mapped", - [ - 1576, - 1581 - ] - ], - [ - [ - 64519, - 64519 - ], - "mapped", - [ - 1576, - 1582 - ] - ], - [ - [ - 64520, - 64520 - ], - "mapped", - [ - 1576, - 1605 - ] - ], - [ - [ - 64521, - 64521 - ], - "mapped", - [ - 1576, - 1609 - ] - ], - [ - [ - 64522, - 64522 - ], - "mapped", - [ - 1576, - 1610 - ] - ], - [ - [ - 64523, - 64523 - ], - "mapped", - [ - 1578, - 1580 - ] - ], - [ - [ - 64524, - 64524 - ], - "mapped", - [ - 1578, - 1581 - ] - ], - [ - [ - 64525, - 64525 - ], - "mapped", - [ - 1578, - 1582 - ] - ], - [ - [ - 64526, - 64526 - ], - "mapped", - [ - 1578, - 1605 - ] - ], - [ - [ - 64527, - 64527 - ], - "mapped", - [ - 1578, - 1609 - ] - ], - [ - [ - 64528, - 64528 - ], - "mapped", - [ - 1578, - 1610 - ] - ], - [ - [ - 64529, - 64529 - ], - "mapped", - [ - 1579, - 1580 - ] - ], - [ - [ - 64530, - 64530 - ], - "mapped", - [ - 1579, - 1605 - ] - ], - [ - [ - 64531, - 64531 - ], - "mapped", - [ - 1579, - 1609 - ] - ], - [ - [ - 64532, - 64532 - ], - "mapped", - [ - 1579, - 1610 - ] - ], - [ - [ - 64533, - 64533 - ], - "mapped", - [ - 1580, - 1581 - ] - ], - [ - [ - 64534, - 64534 - ], - "mapped", - [ - 1580, - 1605 - ] - ], - [ - [ - 64535, - 64535 - ], - "mapped", - [ - 1581, - 1580 - ] - ], - [ - [ - 64536, - 64536 - ], - "mapped", - [ - 1581, - 1605 - ] - ], - [ - [ - 64537, - 64537 - ], - "mapped", - [ - 1582, - 1580 - ] - ], - [ - [ - 64538, - 64538 - ], - "mapped", - [ - 1582, - 1581 - ] - ], - [ - [ - 64539, - 64539 - ], - "mapped", - [ - 1582, - 1605 - ] - ], - [ - [ - 64540, - 64540 - ], - "mapped", - [ - 1587, - 1580 - ] - ], - [ - [ - 64541, - 64541 - ], - "mapped", - [ - 1587, - 1581 - ] - ], - [ - [ - 64542, - 64542 - ], - "mapped", - [ - 1587, - 1582 - ] - ], - [ - [ - 64543, - 64543 - ], - "mapped", - [ - 1587, - 1605 - ] - ], - [ - [ - 64544, - 64544 - ], - "mapped", - [ - 1589, - 1581 - ] - ], - [ - [ - 64545, - 64545 - ], - "mapped", - [ - 1589, - 1605 - ] - ], - [ - [ - 64546, - 64546 - ], - "mapped", - [ - 1590, - 1580 - ] - ], - [ - [ - 64547, - 64547 - ], - "mapped", - [ - 1590, - 1581 - ] - ], - [ - [ - 64548, - 64548 - ], - "mapped", - [ - 1590, - 1582 - ] - ], - [ - [ - 64549, - 64549 - ], - "mapped", - [ - 1590, - 1605 - ] - ], - [ - [ - 64550, - 64550 - ], - "mapped", - [ - 1591, - 1581 - ] - ], - [ - [ - 64551, - 64551 - ], - "mapped", - [ - 1591, - 1605 - ] - ], - [ - [ - 64552, - 64552 - ], - "mapped", - [ - 1592, - 1605 - ] - ], - [ - [ - 64553, - 64553 - ], - "mapped", - [ - 1593, - 1580 - ] - ], - [ - [ - 64554, - 64554 - ], - "mapped", - [ - 1593, - 1605 - ] - ], - [ - [ - 64555, - 64555 - ], - "mapped", - [ - 1594, - 1580 - ] - ], - [ - [ - 64556, - 64556 - ], - "mapped", - [ - 1594, - 1605 - ] - ], - [ - [ - 64557, - 64557 - ], - "mapped", - [ - 1601, - 1580 - ] - ], - [ - [ - 64558, - 64558 - ], - "mapped", - [ - 1601, - 1581 - ] - ], - [ - [ - 64559, - 64559 - ], - "mapped", - [ - 1601, - 1582 - ] - ], - [ - [ - 64560, - 64560 - ], - "mapped", - [ - 1601, - 1605 - ] - ], - [ - [ - 64561, - 64561 - ], - "mapped", - [ - 1601, - 1609 - ] - ], - [ - [ - 64562, - 64562 - ], - "mapped", - [ - 1601, - 1610 - ] - ], - [ - [ - 64563, - 64563 - ], - "mapped", - [ - 1602, - 1581 - ] - ], - [ - [ - 64564, - 64564 - ], - "mapped", - [ - 1602, - 1605 - ] - ], - [ - [ - 64565, - 64565 - ], - "mapped", - [ - 1602, - 1609 - ] - ], - [ - [ - 64566, - 64566 - ], - "mapped", - [ - 1602, - 1610 - ] - ], - [ - [ - 64567, - 64567 - ], - "mapped", - [ - 1603, - 1575 - ] - ], - [ - [ - 64568, - 64568 - ], - "mapped", - [ - 1603, - 1580 - ] - ], - [ - [ - 64569, - 64569 - ], - "mapped", - [ - 1603, - 1581 - ] - ], - [ - [ - 64570, - 64570 - ], - "mapped", - [ - 1603, - 1582 - ] - ], - [ - [ - 64571, - 64571 - ], - "mapped", - [ - 1603, - 1604 - ] - ], - [ - [ - 64572, - 64572 - ], - "mapped", - [ - 1603, - 1605 - ] - ], - [ - [ - 64573, - 64573 - ], - "mapped", - [ - 1603, - 1609 - ] - ], - [ - [ - 64574, - 64574 - ], - "mapped", - [ - 1603, - 1610 - ] - ], - [ - [ - 64575, - 64575 - ], - "mapped", - [ - 1604, - 1580 - ] - ], - [ - [ - 64576, - 64576 - ], - "mapped", - [ - 1604, - 1581 - ] - ], - [ - [ - 64577, - 64577 - ], - "mapped", - [ - 1604, - 1582 - ] - ], - [ - [ - 64578, - 64578 - ], - "mapped", - [ - 1604, - 1605 - ] - ], - [ - [ - 64579, - 64579 - ], - "mapped", - [ - 1604, - 1609 - ] - ], - [ - [ - 64580, - 64580 - ], - "mapped", - [ - 1604, - 1610 - ] - ], - [ - [ - 64581, - 64581 - ], - "mapped", - [ - 1605, - 1580 - ] - ], - [ - [ - 64582, - 64582 - ], - "mapped", - [ - 1605, - 1581 - ] - ], - [ - [ - 64583, - 64583 - ], - "mapped", - [ - 1605, - 1582 - ] - ], - [ - [ - 64584, - 64584 - ], - "mapped", - [ - 1605, - 1605 - ] - ], - [ - [ - 64585, - 64585 - ], - "mapped", - [ - 1605, - 1609 - ] - ], - [ - [ - 64586, - 64586 - ], - "mapped", - [ - 1605, - 1610 - ] - ], - [ - [ - 64587, - 64587 - ], - "mapped", - [ - 1606, - 1580 - ] - ], - [ - [ - 64588, - 64588 - ], - "mapped", - [ - 1606, - 1581 - ] - ], - [ - [ - 64589, - 64589 - ], - "mapped", - [ - 1606, - 1582 - ] - ], - [ - [ - 64590, - 64590 - ], - "mapped", - [ - 1606, - 1605 - ] - ], - [ - [ - 64591, - 64591 - ], - "mapped", - [ - 1606, - 1609 - ] - ], - [ - [ - 64592, - 64592 - ], - "mapped", - [ - 1606, - 1610 - ] - ], - [ - [ - 64593, - 64593 - ], - "mapped", - [ - 1607, - 1580 - ] - ], - [ - [ - 64594, - 64594 - ], - "mapped", - [ - 1607, - 1605 - ] - ], - [ - [ - 64595, - 64595 - ], - "mapped", - [ - 1607, - 1609 - ] - ], - [ - [ - 64596, - 64596 - ], - "mapped", - [ - 1607, - 1610 - ] - ], - [ - [ - 64597, - 64597 - ], - "mapped", - [ - 1610, - 1580 - ] - ], - [ - [ - 64598, - 64598 - ], - "mapped", - [ - 1610, - 1581 - ] - ], - [ - [ - 64599, - 64599 - ], - "mapped", - [ - 1610, - 1582 - ] - ], - [ - [ - 64600, - 64600 - ], - "mapped", - [ - 1610, - 1605 - ] - ], - [ - [ - 64601, - 64601 - ], - "mapped", - [ - 1610, - 1609 - ] - ], - [ - [ - 64602, - 64602 - ], - "mapped", - [ - 1610, - 1610 - ] - ], - [ - [ - 64603, - 64603 - ], - "mapped", - [ - 1584, - 1648 - ] - ], - [ - [ - 64604, - 64604 - ], - "mapped", - [ - 1585, - 1648 - ] - ], - [ - [ - 64605, - 64605 - ], - "mapped", - [ - 1609, - 1648 - ] - ], - [ - [ - 64606, - 64606 - ], - "disallowed_STD3_mapped", - [ - 32, - 1612, - 1617 - ] - ], - [ - [ - 64607, - 64607 - ], - "disallowed_STD3_mapped", - [ - 32, - 1613, - 1617 - ] - ], - [ - [ - 64608, - 64608 - ], - "disallowed_STD3_mapped", - [ - 32, - 1614, - 1617 - ] - ], - [ - [ - 64609, - 64609 - ], - "disallowed_STD3_mapped", - [ - 32, - 1615, - 1617 - ] - ], - [ - [ - 64610, - 64610 - ], - "disallowed_STD3_mapped", - [ - 32, - 1616, - 1617 - ] - ], - [ - [ - 64611, - 64611 - ], - "disallowed_STD3_mapped", - [ - 32, - 1617, - 1648 - ] - ], - [ - [ - 64612, - 64612 - ], - "mapped", - [ - 1574, - 1585 - ] - ], - [ - [ - 64613, - 64613 - ], - "mapped", - [ - 1574, - 1586 - ] - ], - [ - [ - 64614, - 64614 - ], - "mapped", - [ - 1574, - 1605 - ] - ], - [ - [ - 64615, - 64615 - ], - "mapped", - [ - 1574, - 1606 - ] - ], - [ - [ - 64616, - 64616 - ], - "mapped", - [ - 1574, - 1609 - ] - ], - [ - [ - 64617, - 64617 - ], - "mapped", - [ - 1574, - 1610 - ] - ], - [ - [ - 64618, - 64618 - ], - "mapped", - [ - 1576, - 1585 - ] - ], - [ - [ - 64619, - 64619 - ], - "mapped", - [ - 1576, - 1586 - ] - ], - [ - [ - 64620, - 64620 - ], - "mapped", - [ - 1576, - 1605 - ] - ], - [ - [ - 64621, - 64621 - ], - "mapped", - [ - 1576, - 1606 - ] - ], - [ - [ - 64622, - 64622 - ], - "mapped", - [ - 1576, - 1609 - ] - ], - [ - [ - 64623, - 64623 - ], - "mapped", - [ - 1576, - 1610 - ] - ], - [ - [ - 64624, - 64624 - ], - "mapped", - [ - 1578, - 1585 - ] - ], - [ - [ - 64625, - 64625 - ], - "mapped", - [ - 1578, - 1586 - ] - ], - [ - [ - 64626, - 64626 - ], - "mapped", - [ - 1578, - 1605 - ] - ], - [ - [ - 64627, - 64627 - ], - "mapped", - [ - 1578, - 1606 - ] - ], - [ - [ - 64628, - 64628 - ], - "mapped", - [ - 1578, - 1609 - ] - ], - [ - [ - 64629, - 64629 - ], - "mapped", - [ - 1578, - 1610 - ] - ], - [ - [ - 64630, - 64630 - ], - "mapped", - [ - 1579, - 1585 - ] - ], - [ - [ - 64631, - 64631 - ], - "mapped", - [ - 1579, - 1586 - ] - ], - [ - [ - 64632, - 64632 - ], - "mapped", - [ - 1579, - 1605 - ] - ], - [ - [ - 64633, - 64633 - ], - "mapped", - [ - 1579, - 1606 - ] - ], - [ - [ - 64634, - 64634 - ], - "mapped", - [ - 1579, - 1609 - ] - ], - [ - [ - 64635, - 64635 - ], - "mapped", - [ - 1579, - 1610 - ] - ], - [ - [ - 64636, - 64636 - ], - "mapped", - [ - 1601, - 1609 - ] - ], - [ - [ - 64637, - 64637 - ], - "mapped", - [ - 1601, - 1610 - ] - ], - [ - [ - 64638, - 64638 - ], - "mapped", - [ - 1602, - 1609 - ] - ], - [ - [ - 64639, - 64639 - ], - "mapped", - [ - 1602, - 1610 - ] - ], - [ - [ - 64640, - 64640 - ], - "mapped", - [ - 1603, - 1575 - ] - ], - [ - [ - 64641, - 64641 - ], - "mapped", - [ - 1603, - 1604 - ] - ], - [ - [ - 64642, - 64642 - ], - "mapped", - [ - 1603, - 1605 - ] - ], - [ - [ - 64643, - 64643 - ], - "mapped", - [ - 1603, - 1609 - ] - ], - [ - [ - 64644, - 64644 - ], - "mapped", - [ - 1603, - 1610 - ] - ], - [ - [ - 64645, - 64645 - ], - "mapped", - [ - 1604, - 1605 - ] - ], - [ - [ - 64646, - 64646 - ], - "mapped", - [ - 1604, - 1609 - ] - ], - [ - [ - 64647, - 64647 - ], - "mapped", - [ - 1604, - 1610 - ] - ], - [ - [ - 64648, - 64648 - ], - "mapped", - [ - 1605, - 1575 - ] - ], - [ - [ - 64649, - 64649 - ], - "mapped", - [ - 1605, - 1605 - ] - ], - [ - [ - 64650, - 64650 - ], - "mapped", - [ - 1606, - 1585 - ] - ], - [ - [ - 64651, - 64651 - ], - "mapped", - [ - 1606, - 1586 - ] - ], - [ - [ - 64652, - 64652 - ], - "mapped", - [ - 1606, - 1605 - ] - ], - [ - [ - 64653, - 64653 - ], - "mapped", - [ - 1606, - 1606 - ] - ], - [ - [ - 64654, - 64654 - ], - "mapped", - [ - 1606, - 1609 - ] - ], - [ - [ - 64655, - 64655 - ], - "mapped", - [ - 1606, - 1610 - ] - ], - [ - [ - 64656, - 64656 - ], - "mapped", - [ - 1609, - 1648 - ] - ], - [ - [ - 64657, - 64657 - ], - "mapped", - [ - 1610, - 1585 - ] - ], - [ - [ - 64658, - 64658 - ], - "mapped", - [ - 1610, - 1586 - ] - ], - [ - [ - 64659, - 64659 - ], - "mapped", - [ - 1610, - 1605 - ] - ], - [ - [ - 64660, - 64660 - ], - "mapped", - [ - 1610, - 1606 - ] - ], - [ - [ - 64661, - 64661 - ], - "mapped", - [ - 1610, - 1609 - ] - ], - [ - [ - 64662, - 64662 - ], - "mapped", - [ - 1610, - 1610 - ] - ], - [ - [ - 64663, - 64663 - ], - "mapped", - [ - 1574, - 1580 - ] - ], - [ - [ - 64664, - 64664 - ], - "mapped", - [ - 1574, - 1581 - ] - ], - [ - [ - 64665, - 64665 - ], - "mapped", - [ - 1574, - 1582 - ] - ], - [ - [ - 64666, - 64666 - ], - "mapped", - [ - 1574, - 1605 - ] - ], - [ - [ - 64667, - 64667 - ], - "mapped", - [ - 1574, - 1607 - ] - ], - [ - [ - 64668, - 64668 - ], - "mapped", - [ - 1576, - 1580 - ] - ], - [ - [ - 64669, - 64669 - ], - "mapped", - [ - 1576, - 1581 - ] - ], - [ - [ - 64670, - 64670 - ], - "mapped", - [ - 1576, - 1582 - ] - ], - [ - [ - 64671, - 64671 - ], - "mapped", - [ - 1576, - 1605 - ] - ], - [ - [ - 64672, - 64672 - ], - "mapped", - [ - 1576, - 1607 - ] - ], - [ - [ - 64673, - 64673 - ], - "mapped", - [ - 1578, - 1580 - ] - ], - [ - [ - 64674, - 64674 - ], - "mapped", - [ - 1578, - 1581 - ] - ], - [ - [ - 64675, - 64675 - ], - "mapped", - [ - 1578, - 1582 - ] - ], - [ - [ - 64676, - 64676 - ], - "mapped", - [ - 1578, - 1605 - ] - ], - [ - [ - 64677, - 64677 - ], - "mapped", - [ - 1578, - 1607 - ] - ], - [ - [ - 64678, - 64678 - ], - "mapped", - [ - 1579, - 1605 - ] - ], - [ - [ - 64679, - 64679 - ], - "mapped", - [ - 1580, - 1581 - ] - ], - [ - [ - 64680, - 64680 - ], - "mapped", - [ - 1580, - 1605 - ] - ], - [ - [ - 64681, - 64681 - ], - "mapped", - [ - 1581, - 1580 - ] - ], - [ - [ - 64682, - 64682 - ], - "mapped", - [ - 1581, - 1605 - ] - ], - [ - [ - 64683, - 64683 - ], - "mapped", - [ - 1582, - 1580 - ] - ], - [ - [ - 64684, - 64684 - ], - "mapped", - [ - 1582, - 1605 - ] - ], - [ - [ - 64685, - 64685 - ], - "mapped", - [ - 1587, - 1580 - ] - ], - [ - [ - 64686, - 64686 - ], - "mapped", - [ - 1587, - 1581 - ] - ], - [ - [ - 64687, - 64687 - ], - "mapped", - [ - 1587, - 1582 - ] - ], - [ - [ - 64688, - 64688 - ], - "mapped", - [ - 1587, - 1605 - ] - ], - [ - [ - 64689, - 64689 - ], - "mapped", - [ - 1589, - 1581 - ] - ], - [ - [ - 64690, - 64690 - ], - "mapped", - [ - 1589, - 1582 - ] - ], - [ - [ - 64691, - 64691 - ], - "mapped", - [ - 1589, - 1605 - ] - ], - [ - [ - 64692, - 64692 - ], - "mapped", - [ - 1590, - 1580 - ] - ], - [ - [ - 64693, - 64693 - ], - "mapped", - [ - 1590, - 1581 - ] - ], - [ - [ - 64694, - 64694 - ], - "mapped", - [ - 1590, - 1582 - ] - ], - [ - [ - 64695, - 64695 - ], - "mapped", - [ - 1590, - 1605 - ] - ], - [ - [ - 64696, - 64696 - ], - "mapped", - [ - 1591, - 1581 - ] - ], - [ - [ - 64697, - 64697 - ], - "mapped", - [ - 1592, - 1605 - ] - ], - [ - [ - 64698, - 64698 - ], - "mapped", - [ - 1593, - 1580 - ] - ], - [ - [ - 64699, - 64699 - ], - "mapped", - [ - 1593, - 1605 - ] - ], - [ - [ - 64700, - 64700 - ], - "mapped", - [ - 1594, - 1580 - ] - ], - [ - [ - 64701, - 64701 - ], - "mapped", - [ - 1594, - 1605 - ] - ], - [ - [ - 64702, - 64702 - ], - "mapped", - [ - 1601, - 1580 - ] - ], - [ - [ - 64703, - 64703 - ], - "mapped", - [ - 1601, - 1581 - ] - ], - [ - [ - 64704, - 64704 - ], - "mapped", - [ - 1601, - 1582 - ] - ], - [ - [ - 64705, - 64705 - ], - "mapped", - [ - 1601, - 1605 - ] - ], - [ - [ - 64706, - 64706 - ], - "mapped", - [ - 1602, - 1581 - ] - ], - [ - [ - 64707, - 64707 - ], - "mapped", - [ - 1602, - 1605 - ] - ], - [ - [ - 64708, - 64708 - ], - "mapped", - [ - 1603, - 1580 - ] - ], - [ - [ - 64709, - 64709 - ], - "mapped", - [ - 1603, - 1581 - ] - ], - [ - [ - 64710, - 64710 - ], - "mapped", - [ - 1603, - 1582 - ] - ], - [ - [ - 64711, - 64711 - ], - "mapped", - [ - 1603, - 1604 - ] - ], - [ - [ - 64712, - 64712 - ], - "mapped", - [ - 1603, - 1605 - ] - ], - [ - [ - 64713, - 64713 - ], - "mapped", - [ - 1604, - 1580 - ] - ], - [ - [ - 64714, - 64714 - ], - "mapped", - [ - 1604, - 1581 - ] - ], - [ - [ - 64715, - 64715 - ], - "mapped", - [ - 1604, - 1582 - ] - ], - [ - [ - 64716, - 64716 - ], - "mapped", - [ - 1604, - 1605 - ] - ], - [ - [ - 64717, - 64717 - ], - "mapped", - [ - 1604, - 1607 - ] - ], - [ - [ - 64718, - 64718 - ], - "mapped", - [ - 1605, - 1580 - ] - ], - [ - [ - 64719, - 64719 - ], - "mapped", - [ - 1605, - 1581 - ] - ], - [ - [ - 64720, - 64720 - ], - "mapped", - [ - 1605, - 1582 - ] - ], - [ - [ - 64721, - 64721 - ], - "mapped", - [ - 1605, - 1605 - ] - ], - [ - [ - 64722, - 64722 - ], - "mapped", - [ - 1606, - 1580 - ] - ], - [ - [ - 64723, - 64723 - ], - "mapped", - [ - 1606, - 1581 - ] - ], - [ - [ - 64724, - 64724 - ], - "mapped", - [ - 1606, - 1582 - ] - ], - [ - [ - 64725, - 64725 - ], - "mapped", - [ - 1606, - 1605 - ] - ], - [ - [ - 64726, - 64726 - ], - "mapped", - [ - 1606, - 1607 - ] - ], - [ - [ - 64727, - 64727 - ], - "mapped", - [ - 1607, - 1580 - ] - ], - [ - [ - 64728, - 64728 - ], - "mapped", - [ - 1607, - 1605 - ] - ], - [ - [ - 64729, - 64729 - ], - "mapped", - [ - 1607, - 1648 - ] - ], - [ - [ - 64730, - 64730 - ], - "mapped", - [ - 1610, - 1580 - ] - ], - [ - [ - 64731, - 64731 - ], - "mapped", - [ - 1610, - 1581 - ] - ], - [ - [ - 64732, - 64732 - ], - "mapped", - [ - 1610, - 1582 - ] - ], - [ - [ - 64733, - 64733 - ], - "mapped", - [ - 1610, - 1605 - ] - ], - [ - [ - 64734, - 64734 - ], - "mapped", - [ - 1610, - 1607 - ] - ], - [ - [ - 64735, - 64735 - ], - "mapped", - [ - 1574, - 1605 - ] - ], - [ - [ - 64736, - 64736 - ], - "mapped", - [ - 1574, - 1607 - ] - ], - [ - [ - 64737, - 64737 - ], - "mapped", - [ - 1576, - 1605 - ] - ], - [ - [ - 64738, - 64738 - ], - "mapped", - [ - 1576, - 1607 - ] - ], - [ - [ - 64739, - 64739 - ], - "mapped", - [ - 1578, - 1605 - ] - ], - [ - [ - 64740, - 64740 - ], - "mapped", - [ - 1578, - 1607 - ] - ], - [ - [ - 64741, - 64741 - ], - "mapped", - [ - 1579, - 1605 - ] - ], - [ - [ - 64742, - 64742 - ], - "mapped", - [ - 1579, - 1607 - ] - ], - [ - [ - 64743, - 64743 - ], - "mapped", - [ - 1587, - 1605 - ] - ], - [ - [ - 64744, - 64744 - ], - "mapped", - [ - 1587, - 1607 - ] - ], - [ - [ - 64745, - 64745 - ], - "mapped", - [ - 1588, - 1605 - ] - ], - [ - [ - 64746, - 64746 - ], - "mapped", - [ - 1588, - 1607 - ] - ], - [ - [ - 64747, - 64747 - ], - "mapped", - [ - 1603, - 1604 - ] - ], - [ - [ - 64748, - 64748 - ], - "mapped", - [ - 1603, - 1605 - ] - ], - [ - [ - 64749, - 64749 - ], - "mapped", - [ - 1604, - 1605 - ] - ], - [ - [ - 64750, - 64750 - ], - "mapped", - [ - 1606, - 1605 - ] - ], - [ - [ - 64751, - 64751 - ], - "mapped", - [ - 1606, - 1607 - ] - ], - [ - [ - 64752, - 64752 - ], - "mapped", - [ - 1610, - 1605 - ] - ], - [ - [ - 64753, - 64753 - ], - "mapped", - [ - 1610, - 1607 - ] - ], - [ - [ - 64754, - 64754 - ], - "mapped", - [ - 1600, - 1614, - 1617 - ] - ], - [ - [ - 64755, - 64755 - ], - "mapped", - [ - 1600, - 1615, - 1617 - ] - ], - [ - [ - 64756, - 64756 - ], - "mapped", - [ - 1600, - 1616, - 1617 - ] - ], - [ - [ - 64757, - 64757 - ], - "mapped", - [ - 1591, - 1609 - ] - ], - [ - [ - 64758, - 64758 - ], - "mapped", - [ - 1591, - 1610 - ] - ], - [ - [ - 64759, - 64759 - ], - "mapped", - [ - 1593, - 1609 - ] - ], - [ - [ - 64760, - 64760 - ], - "mapped", - [ - 1593, - 1610 - ] - ], - [ - [ - 64761, - 64761 - ], - "mapped", - [ - 1594, - 1609 - ] - ], - [ - [ - 64762, - 64762 - ], - "mapped", - [ - 1594, - 1610 - ] - ], - [ - [ - 64763, - 64763 - ], - "mapped", - [ - 1587, - 1609 - ] - ], - [ - [ - 64764, - 64764 - ], - "mapped", - [ - 1587, - 1610 - ] - ], - [ - [ - 64765, - 64765 - ], - "mapped", - [ - 1588, - 1609 - ] - ], - [ - [ - 64766, - 64766 - ], - "mapped", - [ - 1588, - 1610 - ] - ], - [ - [ - 64767, - 64767 - ], - "mapped", - [ - 1581, - 1609 - ] - ], - [ - [ - 64768, - 64768 - ], - "mapped", - [ - 1581, - 1610 - ] - ], - [ - [ - 64769, - 64769 - ], - "mapped", - [ - 1580, - 1609 - ] - ], - [ - [ - 64770, - 64770 - ], - "mapped", - [ - 1580, - 1610 - ] - ], - [ - [ - 64771, - 64771 - ], - "mapped", - [ - 1582, - 1609 - ] - ], - [ - [ - 64772, - 64772 - ], - "mapped", - [ - 1582, - 1610 - ] - ], - [ - [ - 64773, - 64773 - ], - "mapped", - [ - 1589, - 1609 - ] - ], - [ - [ - 64774, - 64774 - ], - "mapped", - [ - 1589, - 1610 - ] - ], - [ - [ - 64775, - 64775 - ], - "mapped", - [ - 1590, - 1609 - ] - ], - [ - [ - 64776, - 64776 - ], - "mapped", - [ - 1590, - 1610 - ] - ], - [ - [ - 64777, - 64777 - ], - "mapped", - [ - 1588, - 1580 - ] - ], - [ - [ - 64778, - 64778 - ], - "mapped", - [ - 1588, - 1581 - ] - ], - [ - [ - 64779, - 64779 - ], - "mapped", - [ - 1588, - 1582 - ] - ], - [ - [ - 64780, - 64780 - ], - "mapped", - [ - 1588, - 1605 - ] - ], - [ - [ - 64781, - 64781 - ], - "mapped", - [ - 1588, - 1585 - ] - ], - [ - [ - 64782, - 64782 - ], - "mapped", - [ - 1587, - 1585 - ] - ], - [ - [ - 64783, - 64783 - ], - "mapped", - [ - 1589, - 1585 - ] - ], - [ - [ - 64784, - 64784 - ], - "mapped", - [ - 1590, - 1585 - ] - ], - [ - [ - 64785, - 64785 - ], - "mapped", - [ - 1591, - 1609 - ] - ], - [ - [ - 64786, - 64786 - ], - "mapped", - [ - 1591, - 1610 - ] - ], - [ - [ - 64787, - 64787 - ], - "mapped", - [ - 1593, - 1609 - ] - ], - [ - [ - 64788, - 64788 - ], - "mapped", - [ - 1593, - 1610 - ] - ], - [ - [ - 64789, - 64789 - ], - "mapped", - [ - 1594, - 1609 - ] - ], - [ - [ - 64790, - 64790 - ], - "mapped", - [ - 1594, - 1610 - ] - ], - [ - [ - 64791, - 64791 - ], - "mapped", - [ - 1587, - 1609 - ] - ], - [ - [ - 64792, - 64792 - ], - "mapped", - [ - 1587, - 1610 - ] - ], - [ - [ - 64793, - 64793 - ], - "mapped", - [ - 1588, - 1609 - ] - ], - [ - [ - 64794, - 64794 - ], - "mapped", - [ - 1588, - 1610 - ] - ], - [ - [ - 64795, - 64795 - ], - "mapped", - [ - 1581, - 1609 - ] - ], - [ - [ - 64796, - 64796 - ], - "mapped", - [ - 1581, - 1610 - ] - ], - [ - [ - 64797, - 64797 - ], - "mapped", - [ - 1580, - 1609 - ] - ], - [ - [ - 64798, - 64798 - ], - "mapped", - [ - 1580, - 1610 - ] - ], - [ - [ - 64799, - 64799 - ], - "mapped", - [ - 1582, - 1609 - ] - ], - [ - [ - 64800, - 64800 - ], - "mapped", - [ - 1582, - 1610 - ] - ], - [ - [ - 64801, - 64801 - ], - "mapped", - [ - 1589, - 1609 - ] - ], - [ - [ - 64802, - 64802 - ], - "mapped", - [ - 1589, - 1610 - ] - ], - [ - [ - 64803, - 64803 - ], - "mapped", - [ - 1590, - 1609 - ] - ], - [ - [ - 64804, - 64804 - ], - "mapped", - [ - 1590, - 1610 - ] - ], - [ - [ - 64805, - 64805 - ], - "mapped", - [ - 1588, - 1580 - ] - ], - [ - [ - 64806, - 64806 - ], - "mapped", - [ - 1588, - 1581 - ] - ], - [ - [ - 64807, - 64807 - ], - "mapped", - [ - 1588, - 1582 - ] - ], - [ - [ - 64808, - 64808 - ], - "mapped", - [ - 1588, - 1605 - ] - ], - [ - [ - 64809, - 64809 - ], - "mapped", - [ - 1588, - 1585 - ] - ], - [ - [ - 64810, - 64810 - ], - "mapped", - [ - 1587, - 1585 - ] - ], - [ - [ - 64811, - 64811 - ], - "mapped", - [ - 1589, - 1585 - ] - ], - [ - [ - 64812, - 64812 - ], - "mapped", - [ - 1590, - 1585 - ] - ], - [ - [ - 64813, - 64813 - ], - "mapped", - [ - 1588, - 1580 - ] - ], - [ - [ - 64814, - 64814 - ], - "mapped", - [ - 1588, - 1581 - ] - ], - [ - [ - 64815, - 64815 - ], - "mapped", - [ - 1588, - 1582 - ] - ], - [ - [ - 64816, - 64816 - ], - "mapped", - [ - 1588, - 1605 - ] - ], - [ - [ - 64817, - 64817 - ], - "mapped", - [ - 1587, - 1607 - ] - ], - [ - [ - 64818, - 64818 - ], - "mapped", - [ - 1588, - 1607 - ] - ], - [ - [ - 64819, - 64819 - ], - "mapped", - [ - 1591, - 1605 - ] - ], - [ - [ - 64820, - 64820 - ], - "mapped", - [ - 1587, - 1580 - ] - ], - [ - [ - 64821, - 64821 - ], - "mapped", - [ - 1587, - 1581 - ] - ], - [ - [ - 64822, - 64822 - ], - "mapped", - [ - 1587, - 1582 - ] - ], - [ - [ - 64823, - 64823 - ], - "mapped", - [ - 1588, - 1580 - ] - ], - [ - [ - 64824, - 64824 - ], - "mapped", - [ - 1588, - 1581 - ] - ], - [ - [ - 64825, - 64825 - ], - "mapped", - [ - 1588, - 1582 - ] - ], - [ - [ - 64826, - 64826 - ], - "mapped", - [ - 1591, - 1605 - ] - ], - [ - [ - 64827, - 64827 - ], - "mapped", - [ - 1592, - 1605 - ] - ], - [ - [ - 64828, - 64829 - ], - "mapped", - [ - 1575, - 1611 - ] - ], - [ - [ - 64830, - 64831 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 64832, - 64847 - ], - "disallowed" - ], - [ - [ - 64848, - 64848 - ], - "mapped", - [ - 1578, - 1580, - 1605 - ] - ], - [ - [ - 64849, - 64850 - ], - "mapped", - [ - 1578, - 1581, - 1580 - ] - ], - [ - [ - 64851, - 64851 - ], - "mapped", - [ - 1578, - 1581, - 1605 - ] - ], - [ - [ - 64852, - 64852 - ], - "mapped", - [ - 1578, - 1582, - 1605 - ] - ], - [ - [ - 64853, - 64853 - ], - "mapped", - [ - 1578, - 1605, - 1580 - ] - ], - [ - [ - 64854, - 64854 - ], - "mapped", - [ - 1578, - 1605, - 1581 - ] - ], - [ - [ - 64855, - 64855 - ], - "mapped", - [ - 1578, - 1605, - 1582 - ] - ], - [ - [ - 64856, - 64857 - ], - "mapped", - [ - 1580, - 1605, - 1581 - ] - ], - [ - [ - 64858, - 64858 - ], - "mapped", - [ - 1581, - 1605, - 1610 - ] - ], - [ - [ - 64859, - 64859 - ], - "mapped", - [ - 1581, - 1605, - 1609 - ] - ], - [ - [ - 64860, - 64860 - ], - "mapped", - [ - 1587, - 1581, - 1580 - ] - ], - [ - [ - 64861, - 64861 - ], - "mapped", - [ - 1587, - 1580, - 1581 - ] - ], - [ - [ - 64862, - 64862 - ], - "mapped", - [ - 1587, - 1580, - 1609 - ] - ], - [ - [ - 64863, - 64864 - ], - "mapped", - [ - 1587, - 1605, - 1581 - ] - ], - [ - [ - 64865, - 64865 - ], - "mapped", - [ - 1587, - 1605, - 1580 - ] - ], - [ - [ - 64866, - 64867 - ], - "mapped", - [ - 1587, - 1605, - 1605 - ] - ], - [ - [ - 64868, - 64869 - ], - "mapped", - [ - 1589, - 1581, - 1581 - ] - ], - [ - [ - 64870, - 64870 - ], - "mapped", - [ - 1589, - 1605, - 1605 - ] - ], - [ - [ - 64871, - 64872 - ], - "mapped", - [ - 1588, - 1581, - 1605 - ] - ], - [ - [ - 64873, - 64873 - ], - "mapped", - [ - 1588, - 1580, - 1610 - ] - ], - [ - [ - 64874, - 64875 - ], - "mapped", - [ - 1588, - 1605, - 1582 - ] - ], - [ - [ - 64876, - 64877 - ], - "mapped", - [ - 1588, - 1605, - 1605 - ] - ], - [ - [ - 64878, - 64878 - ], - "mapped", - [ - 1590, - 1581, - 1609 - ] - ], - [ - [ - 64879, - 64880 - ], - "mapped", - [ - 1590, - 1582, - 1605 - ] - ], - [ - [ - 64881, - 64882 - ], - "mapped", - [ - 1591, - 1605, - 1581 - ] - ], - [ - [ - 64883, - 64883 - ], - "mapped", - [ - 1591, - 1605, - 1605 - ] - ], - [ - [ - 64884, - 64884 - ], - "mapped", - [ - 1591, - 1605, - 1610 - ] - ], - [ - [ - 64885, - 64885 - ], - "mapped", - [ - 1593, - 1580, - 1605 - ] - ], - [ - [ - 64886, - 64887 - ], - "mapped", - [ - 1593, - 1605, - 1605 - ] - ], - [ - [ - 64888, - 64888 - ], - "mapped", - [ - 1593, - 1605, - 1609 - ] - ], - [ - [ - 64889, - 64889 - ], - "mapped", - [ - 1594, - 1605, - 1605 - ] - ], - [ - [ - 64890, - 64890 - ], - "mapped", - [ - 1594, - 1605, - 1610 - ] - ], - [ - [ - 64891, - 64891 - ], - "mapped", - [ - 1594, - 1605, - 1609 - ] - ], - [ - [ - 64892, - 64893 - ], - "mapped", - [ - 1601, - 1582, - 1605 - ] - ], - [ - [ - 64894, - 64894 - ], - "mapped", - [ - 1602, - 1605, - 1581 - ] - ], - [ - [ - 64895, - 64895 - ], - "mapped", - [ - 1602, - 1605, - 1605 - ] - ], - [ - [ - 64896, - 64896 - ], - "mapped", - [ - 1604, - 1581, - 1605 - ] - ], - [ - [ - 64897, - 64897 - ], - "mapped", - [ - 1604, - 1581, - 1610 - ] - ], - [ - [ - 64898, - 64898 - ], - "mapped", - [ - 1604, - 1581, - 1609 - ] - ], - [ - [ - 64899, - 64900 - ], - "mapped", - [ - 1604, - 1580, - 1580 - ] - ], - [ - [ - 64901, - 64902 - ], - "mapped", - [ - 1604, - 1582, - 1605 - ] - ], - [ - [ - 64903, - 64904 - ], - "mapped", - [ - 1604, - 1605, - 1581 - ] - ], - [ - [ - 64905, - 64905 - ], - "mapped", - [ - 1605, - 1581, - 1580 - ] - ], - [ - [ - 64906, - 64906 - ], - "mapped", - [ - 1605, - 1581, - 1605 - ] - ], - [ - [ - 64907, - 64907 - ], - "mapped", - [ - 1605, - 1581, - 1610 - ] - ], - [ - [ - 64908, - 64908 - ], - "mapped", - [ - 1605, - 1580, - 1581 - ] - ], - [ - [ - 64909, - 64909 - ], - "mapped", - [ - 1605, - 1580, - 1605 - ] - ], - [ - [ - 64910, - 64910 - ], - "mapped", - [ - 1605, - 1582, - 1580 - ] - ], - [ - [ - 64911, - 64911 - ], - "mapped", - [ - 1605, - 1582, - 1605 - ] - ], - [ - [ - 64912, - 64913 - ], - "disallowed" - ], - [ - [ - 64914, - 64914 - ], - "mapped", - [ - 1605, - 1580, - 1582 - ] - ], - [ - [ - 64915, - 64915 - ], - "mapped", - [ - 1607, - 1605, - 1580 - ] - ], - [ - [ - 64916, - 64916 - ], - "mapped", - [ - 1607, - 1605, - 1605 - ] - ], - [ - [ - 64917, - 64917 - ], - "mapped", - [ - 1606, - 1581, - 1605 - ] - ], - [ - [ - 64918, - 64918 - ], - "mapped", - [ - 1606, - 1581, - 1609 - ] - ], - [ - [ - 64919, - 64920 - ], - "mapped", - [ - 1606, - 1580, - 1605 - ] - ], - [ - [ - 64921, - 64921 - ], - "mapped", - [ - 1606, - 1580, - 1609 - ] - ], - [ - [ - 64922, - 64922 - ], - "mapped", - [ - 1606, - 1605, - 1610 - ] - ], - [ - [ - 64923, - 64923 - ], - "mapped", - [ - 1606, - 1605, - 1609 - ] - ], - [ - [ - 64924, - 64925 - ], - "mapped", - [ - 1610, - 1605, - 1605 - ] - ], - [ - [ - 64926, - 64926 - ], - "mapped", - [ - 1576, - 1582, - 1610 - ] - ], - [ - [ - 64927, - 64927 - ], - "mapped", - [ - 1578, - 1580, - 1610 - ] - ], - [ - [ - 64928, - 64928 - ], - "mapped", - [ - 1578, - 1580, - 1609 - ] - ], - [ - [ - 64929, - 64929 - ], - "mapped", - [ - 1578, - 1582, - 1610 - ] - ], - [ - [ - 64930, - 64930 - ], - "mapped", - [ - 1578, - 1582, - 1609 - ] - ], - [ - [ - 64931, - 64931 - ], - "mapped", - [ - 1578, - 1605, - 1610 - ] - ], - [ - [ - 64932, - 64932 - ], - "mapped", - [ - 1578, - 1605, - 1609 - ] - ], - [ - [ - 64933, - 64933 - ], - "mapped", - [ - 1580, - 1605, - 1610 - ] - ], - [ - [ - 64934, - 64934 - ], - "mapped", - [ - 1580, - 1581, - 1609 - ] - ], - [ - [ - 64935, - 64935 - ], - "mapped", - [ - 1580, - 1605, - 1609 - ] - ], - [ - [ - 64936, - 64936 - ], - "mapped", - [ - 1587, - 1582, - 1609 - ] - ], - [ - [ - 64937, - 64937 - ], - "mapped", - [ - 1589, - 1581, - 1610 - ] - ], - [ - [ - 64938, - 64938 - ], - "mapped", - [ - 1588, - 1581, - 1610 - ] - ], - [ - [ - 64939, - 64939 - ], - "mapped", - [ - 1590, - 1581, - 1610 - ] - ], - [ - [ - 64940, - 64940 - ], - "mapped", - [ - 1604, - 1580, - 1610 - ] - ], - [ - [ - 64941, - 64941 - ], - "mapped", - [ - 1604, - 1605, - 1610 - ] - ], - [ - [ - 64942, - 64942 - ], - "mapped", - [ - 1610, - 1581, - 1610 - ] - ], - [ - [ - 64943, - 64943 - ], - "mapped", - [ - 1610, - 1580, - 1610 - ] - ], - [ - [ - 64944, - 64944 - ], - "mapped", - [ - 1610, - 1605, - 1610 - ] - ], - [ - [ - 64945, - 64945 - ], - "mapped", - [ - 1605, - 1605, - 1610 - ] - ], - [ - [ - 64946, - 64946 - ], - "mapped", - [ - 1602, - 1605, - 1610 - ] - ], - [ - [ - 64947, - 64947 - ], - "mapped", - [ - 1606, - 1581, - 1610 - ] - ], - [ - [ - 64948, - 64948 - ], - "mapped", - [ - 1602, - 1605, - 1581 - ] - ], - [ - [ - 64949, - 64949 - ], - "mapped", - [ - 1604, - 1581, - 1605 - ] - ], - [ - [ - 64950, - 64950 - ], - "mapped", - [ - 1593, - 1605, - 1610 - ] - ], - [ - [ - 64951, - 64951 - ], - "mapped", - [ - 1603, - 1605, - 1610 - ] - ], - [ - [ - 64952, - 64952 - ], - "mapped", - [ - 1606, - 1580, - 1581 - ] - ], - [ - [ - 64953, - 64953 - ], - "mapped", - [ - 1605, - 1582, - 1610 - ] - ], - [ - [ - 64954, - 64954 - ], - "mapped", - [ - 1604, - 1580, - 1605 - ] - ], - [ - [ - 64955, - 64955 - ], - "mapped", - [ - 1603, - 1605, - 1605 - ] - ], - [ - [ - 64956, - 64956 - ], - "mapped", - [ - 1604, - 1580, - 1605 - ] - ], - [ - [ - 64957, - 64957 - ], - "mapped", - [ - 1606, - 1580, - 1581 - ] - ], - [ - [ - 64958, - 64958 - ], - "mapped", - [ - 1580, - 1581, - 1610 - ] - ], - [ - [ - 64959, - 64959 - ], - "mapped", - [ - 1581, - 1580, - 1610 - ] - ], - [ - [ - 64960, - 64960 - ], - "mapped", - [ - 1605, - 1580, - 1610 - ] - ], - [ - [ - 64961, - 64961 - ], - "mapped", - [ - 1601, - 1605, - 1610 - ] - ], - [ - [ - 64962, - 64962 - ], - "mapped", - [ - 1576, - 1581, - 1610 - ] - ], - [ - [ - 64963, - 64963 - ], - "mapped", - [ - 1603, - 1605, - 1605 - ] - ], - [ - [ - 64964, - 64964 - ], - "mapped", - [ - 1593, - 1580, - 1605 - ] - ], - [ - [ - 64965, - 64965 - ], - "mapped", - [ - 1589, - 1605, - 1605 - ] - ], - [ - [ - 64966, - 64966 - ], - "mapped", - [ - 1587, - 1582, - 1610 - ] - ], - [ - [ - 64967, - 64967 - ], - "mapped", - [ - 1606, - 1580, - 1610 - ] - ], - [ - [ - 64968, - 64975 - ], - "disallowed" - ], - [ - [ - 64976, - 65007 - ], - "disallowed" - ], - [ - [ - 65008, - 65008 - ], - "mapped", - [ - 1589, - 1604, - 1746 - ] - ], - [ - [ - 65009, - 65009 - ], - "mapped", - [ - 1602, - 1604, - 1746 - ] - ], - [ - [ - 65010, - 65010 - ], - "mapped", - [ - 1575, - 1604, - 1604, - 1607 - ] - ], - [ - [ - 65011, - 65011 - ], - "mapped", - [ - 1575, - 1603, - 1576, - 1585 - ] - ], - [ - [ - 65012, - 65012 - ], - "mapped", - [ - 1605, - 1581, - 1605, - 1583 - ] - ], - [ - [ - 65013, - 65013 - ], - "mapped", - [ - 1589, - 1604, - 1593, - 1605 - ] - ], - [ - [ - 65014, - 65014 - ], - "mapped", - [ - 1585, - 1587, - 1608, - 1604 - ] - ], - [ - [ - 65015, - 65015 - ], - "mapped", - [ - 1593, - 1604, - 1610, - 1607 - ] - ], - [ - [ - 65016, - 65016 - ], - "mapped", - [ - 1608, - 1587, - 1604, - 1605 - ] - ], - [ - [ - 65017, - 65017 - ], - "mapped", - [ - 1589, - 1604, - 1609 - ] - ], - [ - [ - 65018, - 65018 - ], - "disallowed_STD3_mapped", - [ - 1589, - 1604, - 1609, - 32, - 1575, - 1604, - 1604, - 1607, - 32, - 1593, - 1604, - 1610, - 1607, - 32, - 1608, - 1587, - 1604, - 1605 - ] - ], - [ - [ - 65019, - 65019 - ], - "disallowed_STD3_mapped", - [ - 1580, - 1604, - 32, - 1580, - 1604, - 1575, - 1604, - 1607 - ] - ], - [ - [ - 65020, - 65020 - ], - "mapped", - [ - 1585, - 1740, - 1575, - 1604 - ] - ], - [ - [ - 65021, - 65021 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 65022, - 65023 - ], - "disallowed" - ], - [ - [ - 65024, - 65039 - ], - "ignored" - ], - [ - [ - 65040, - 65040 - ], - "disallowed_STD3_mapped", - [ - 44 - ] - ], - [ - [ - 65041, - 65041 - ], - "mapped", - [ - 12289 - ] - ], - [ - [ - 65042, - 65042 - ], - "disallowed" - ], - [ - [ - 65043, - 65043 - ], - "disallowed_STD3_mapped", - [ - 58 - ] - ], - [ - [ - 65044, - 65044 - ], - "disallowed_STD3_mapped", - [ - 59 - ] - ], - [ - [ - 65045, - 65045 - ], - "disallowed_STD3_mapped", - [ - 33 - ] - ], - [ - [ - 65046, - 65046 - ], - "disallowed_STD3_mapped", - [ - 63 - ] - ], - [ - [ - 65047, - 65047 - ], - "mapped", - [ - 12310 - ] - ], - [ - [ - 65048, - 65048 - ], - "mapped", - [ - 12311 - ] - ], - [ - [ - 65049, - 65049 - ], - "disallowed" - ], - [ - [ - 65050, - 65055 - ], - "disallowed" - ], - [ - [ - 65056, - 65059 - ], - "valid" - ], - [ - [ - 65060, - 65062 - ], - "valid" - ], - [ - [ - 65063, - 65069 - ], - "valid" - ], - [ - [ - 65070, - 65071 - ], - "valid" - ], - [ - [ - 65072, - 65072 - ], - "disallowed" - ], - [ - [ - 65073, - 65073 - ], - "mapped", - [ - 8212 - ] - ], - [ - [ - 65074, - 65074 - ], - "mapped", - [ - 8211 - ] - ], - [ - [ - 65075, - 65076 - ], - "disallowed_STD3_mapped", - [ - 95 - ] - ], - [ - [ - 65077, - 65077 - ], - "disallowed_STD3_mapped", - [ - 40 - ] - ], - [ - [ - 65078, - 65078 - ], - "disallowed_STD3_mapped", - [ - 41 - ] - ], - [ - [ - 65079, - 65079 - ], - "disallowed_STD3_mapped", - [ - 123 - ] - ], - [ - [ - 65080, - 65080 - ], - "disallowed_STD3_mapped", - [ - 125 - ] - ], - [ - [ - 65081, - 65081 - ], - "mapped", - [ - 12308 - ] - ], - [ - [ - 65082, - 65082 - ], - "mapped", - [ - 12309 - ] - ], - [ - [ - 65083, - 65083 - ], - "mapped", - [ - 12304 - ] - ], - [ - [ - 65084, - 65084 - ], - "mapped", - [ - 12305 - ] - ], - [ - [ - 65085, - 65085 - ], - "mapped", - [ - 12298 - ] - ], - [ - [ - 65086, - 65086 - ], - "mapped", - [ - 12299 - ] - ], - [ - [ - 65087, - 65087 - ], - "mapped", - [ - 12296 - ] - ], - [ - [ - 65088, - 65088 - ], - "mapped", - [ - 12297 - ] - ], - [ - [ - 65089, - 65089 - ], - "mapped", - [ - 12300 - ] - ], - [ - [ - 65090, - 65090 - ], - "mapped", - [ - 12301 - ] - ], - [ - [ - 65091, - 65091 - ], - "mapped", - [ - 12302 - ] - ], - [ - [ - 65092, - 65092 - ], - "mapped", - [ - 12303 - ] - ], - [ - [ - 65093, - 65094 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 65095, - 65095 - ], - "disallowed_STD3_mapped", - [ - 91 - ] - ], - [ - [ - 65096, - 65096 - ], - "disallowed_STD3_mapped", - [ - 93 - ] - ], - [ - [ - 65097, - 65100 - ], - "disallowed_STD3_mapped", - [ - 32, - 773 - ] - ], - [ - [ - 65101, - 65103 - ], - "disallowed_STD3_mapped", - [ - 95 - ] - ], - [ - [ - 65104, - 65104 - ], - "disallowed_STD3_mapped", - [ - 44 - ] - ], - [ - [ - 65105, - 65105 - ], - "mapped", - [ - 12289 - ] - ], - [ - [ - 65106, - 65106 - ], - "disallowed" - ], - [ - [ - 65107, - 65107 - ], - "disallowed" - ], - [ - [ - 65108, - 65108 - ], - "disallowed_STD3_mapped", - [ - 59 - ] - ], - [ - [ - 65109, - 65109 - ], - "disallowed_STD3_mapped", - [ - 58 - ] - ], - [ - [ - 65110, - 65110 - ], - "disallowed_STD3_mapped", - [ - 63 - ] - ], - [ - [ - 65111, - 65111 - ], - "disallowed_STD3_mapped", - [ - 33 - ] - ], - [ - [ - 65112, - 65112 - ], - "mapped", - [ - 8212 - ] - ], - [ - [ - 65113, - 65113 - ], - "disallowed_STD3_mapped", - [ - 40 - ] - ], - [ - [ - 65114, - 65114 - ], - "disallowed_STD3_mapped", - [ - 41 - ] - ], - [ - [ - 65115, - 65115 - ], - "disallowed_STD3_mapped", - [ - 123 - ] - ], - [ - [ - 65116, - 65116 - ], - "disallowed_STD3_mapped", - [ - 125 - ] - ], - [ - [ - 65117, - 65117 - ], - "mapped", - [ - 12308 - ] - ], - [ - [ - 65118, - 65118 - ], - "mapped", - [ - 12309 - ] - ], - [ - [ - 65119, - 65119 - ], - "disallowed_STD3_mapped", - [ - 35 - ] - ], - [ - [ - 65120, - 65120 - ], - "disallowed_STD3_mapped", - [ - 38 - ] - ], - [ - [ - 65121, - 65121 - ], - "disallowed_STD3_mapped", - [ - 42 - ] - ], - [ - [ - 65122, - 65122 - ], - "disallowed_STD3_mapped", - [ - 43 - ] - ], - [ - [ - 65123, - 65123 - ], - "mapped", - [ - 45 - ] - ], - [ - [ - 65124, - 65124 - ], - "disallowed_STD3_mapped", - [ - 60 - ] - ], - [ - [ - 65125, - 65125 - ], - "disallowed_STD3_mapped", - [ - 62 - ] - ], - [ - [ - 65126, - 65126 - ], - "disallowed_STD3_mapped", - [ - 61 - ] - ], - [ - [ - 65127, - 65127 - ], - "disallowed" - ], - [ - [ - 65128, - 65128 - ], - "disallowed_STD3_mapped", - [ - 92 - ] - ], - [ - [ - 65129, - 65129 - ], - "disallowed_STD3_mapped", - [ - 36 - ] - ], - [ - [ - 65130, - 65130 - ], - "disallowed_STD3_mapped", - [ - 37 - ] - ], - [ - [ - 65131, - 65131 - ], - "disallowed_STD3_mapped", - [ - 64 - ] - ], - [ - [ - 65132, - 65135 - ], - "disallowed" - ], - [ - [ - 65136, - 65136 - ], - "disallowed_STD3_mapped", - [ - 32, - 1611 - ] - ], - [ - [ - 65137, - 65137 - ], - "mapped", - [ - 1600, - 1611 - ] - ], - [ - [ - 65138, - 65138 - ], - "disallowed_STD3_mapped", - [ - 32, - 1612 - ] - ], - [ - [ - 65139, - 65139 - ], - "valid" - ], - [ - [ - 65140, - 65140 - ], - "disallowed_STD3_mapped", - [ - 32, - 1613 - ] - ], - [ - [ - 65141, - 65141 - ], - "disallowed" - ], - [ - [ - 65142, - 65142 - ], - "disallowed_STD3_mapped", - [ - 32, - 1614 - ] - ], - [ - [ - 65143, - 65143 - ], - "mapped", - [ - 1600, - 1614 - ] - ], - [ - [ - 65144, - 65144 - ], - "disallowed_STD3_mapped", - [ - 32, - 1615 - ] - ], - [ - [ - 65145, - 65145 - ], - "mapped", - [ - 1600, - 1615 - ] - ], - [ - [ - 65146, - 65146 - ], - "disallowed_STD3_mapped", - [ - 32, - 1616 - ] - ], - [ - [ - 65147, - 65147 - ], - "mapped", - [ - 1600, - 1616 - ] - ], - [ - [ - 65148, - 65148 - ], - "disallowed_STD3_mapped", - [ - 32, - 1617 - ] - ], - [ - [ - 65149, - 65149 - ], - "mapped", - [ - 1600, - 1617 - ] - ], - [ - [ - 65150, - 65150 - ], - "disallowed_STD3_mapped", - [ - 32, - 1618 - ] - ], - [ - [ - 65151, - 65151 - ], - "mapped", - [ - 1600, - 1618 - ] - ], - [ - [ - 65152, - 65152 - ], - "mapped", - [ - 1569 - ] - ], - [ - [ - 65153, - 65154 - ], - "mapped", - [ - 1570 - ] - ], - [ - [ - 65155, - 65156 - ], - "mapped", - [ - 1571 - ] - ], - [ - [ - 65157, - 65158 - ], - "mapped", - [ - 1572 - ] - ], - [ - [ - 65159, - 65160 - ], - "mapped", - [ - 1573 - ] - ], - [ - [ - 65161, - 65164 - ], - "mapped", - [ - 1574 - ] - ], - [ - [ - 65165, - 65166 - ], - "mapped", - [ - 1575 - ] - ], - [ - [ - 65167, - 65170 - ], - "mapped", - [ - 1576 - ] - ], - [ - [ - 65171, - 65172 - ], - "mapped", - [ - 1577 - ] - ], - [ - [ - 65173, - 65176 - ], - "mapped", - [ - 1578 - ] - ], - [ - [ - 65177, - 65180 - ], - "mapped", - [ - 1579 - ] - ], - [ - [ - 65181, - 65184 - ], - "mapped", - [ - 1580 - ] - ], - [ - [ - 65185, - 65188 - ], - "mapped", - [ - 1581 - ] - ], - [ - [ - 65189, - 65192 - ], - "mapped", - [ - 1582 - ] - ], - [ - [ - 65193, - 65194 - ], - "mapped", - [ - 1583 - ] - ], - [ - [ - 65195, - 65196 - ], - "mapped", - [ - 1584 - ] - ], - [ - [ - 65197, - 65198 - ], - "mapped", - [ - 1585 - ] - ], - [ - [ - 65199, - 65200 - ], - "mapped", - [ - 1586 - ] - ], - [ - [ - 65201, - 65204 - ], - "mapped", - [ - 1587 - ] - ], - [ - [ - 65205, - 65208 - ], - "mapped", - [ - 1588 - ] - ], - [ - [ - 65209, - 65212 - ], - "mapped", - [ - 1589 - ] - ], - [ - [ - 65213, - 65216 - ], - "mapped", - [ - 1590 - ] - ], - [ - [ - 65217, - 65220 - ], - "mapped", - [ - 1591 - ] - ], - [ - [ - 65221, - 65224 - ], - "mapped", - [ - 1592 - ] - ], - [ - [ - 65225, - 65228 - ], - "mapped", - [ - 1593 - ] - ], - [ - [ - 65229, - 65232 - ], - "mapped", - [ - 1594 - ] - ], - [ - [ - 65233, - 65236 - ], - "mapped", - [ - 1601 - ] - ], - [ - [ - 65237, - 65240 - ], - "mapped", - [ - 1602 - ] - ], - [ - [ - 65241, - 65244 - ], - "mapped", - [ - 1603 - ] - ], - [ - [ - 65245, - 65248 - ], - "mapped", - [ - 1604 - ] - ], - [ - [ - 65249, - 65252 - ], - "mapped", - [ - 1605 - ] - ], - [ - [ - 65253, - 65256 - ], - "mapped", - [ - 1606 - ] - ], - [ - [ - 65257, - 65260 - ], - "mapped", - [ - 1607 - ] - ], - [ - [ - 65261, - 65262 - ], - "mapped", - [ - 1608 - ] - ], - [ - [ - 65263, - 65264 - ], - "mapped", - [ - 1609 - ] - ], - [ - [ - 65265, - 65268 - ], - "mapped", - [ - 1610 - ] - ], - [ - [ - 65269, - 65270 - ], - "mapped", - [ - 1604, - 1570 - ] - ], - [ - [ - 65271, - 65272 - ], - "mapped", - [ - 1604, - 1571 - ] - ], - [ - [ - 65273, - 65274 - ], - "mapped", - [ - 1604, - 1573 - ] - ], - [ - [ - 65275, - 65276 - ], - "mapped", - [ - 1604, - 1575 - ] - ], - [ - [ - 65277, - 65278 - ], - "disallowed" - ], - [ - [ - 65279, - 65279 - ], - "ignored" - ], - [ - [ - 65280, - 65280 - ], - "disallowed" - ], - [ - [ - 65281, - 65281 - ], - "disallowed_STD3_mapped", - [ - 33 - ] - ], - [ - [ - 65282, - 65282 - ], - "disallowed_STD3_mapped", - [ - 34 - ] - ], - [ - [ - 65283, - 65283 - ], - "disallowed_STD3_mapped", - [ - 35 - ] - ], - [ - [ - 65284, - 65284 - ], - "disallowed_STD3_mapped", - [ - 36 - ] - ], - [ - [ - 65285, - 65285 - ], - "disallowed_STD3_mapped", - [ - 37 - ] - ], - [ - [ - 65286, - 65286 - ], - "disallowed_STD3_mapped", - [ - 38 - ] - ], - [ - [ - 65287, - 65287 - ], - "disallowed_STD3_mapped", - [ - 39 - ] - ], - [ - [ - 65288, - 65288 - ], - "disallowed_STD3_mapped", - [ - 40 - ] - ], - [ - [ - 65289, - 65289 - ], - "disallowed_STD3_mapped", - [ - 41 - ] - ], - [ - [ - 65290, - 65290 - ], - "disallowed_STD3_mapped", - [ - 42 - ] - ], - [ - [ - 65291, - 65291 - ], - "disallowed_STD3_mapped", - [ - 43 - ] - ], - [ - [ - 65292, - 65292 - ], - "disallowed_STD3_mapped", - [ - 44 - ] - ], - [ - [ - 65293, - 65293 - ], - "mapped", - [ - 45 - ] - ], - [ - [ - 65294, - 65294 - ], - "mapped", - [ - 46 - ] - ], - [ - [ - 65295, - 65295 - ], - "disallowed_STD3_mapped", - [ - 47 - ] - ], - [ - [ - 65296, - 65296 - ], - "mapped", - [ - 48 - ] - ], - [ - [ - 65297, - 65297 - ], - "mapped", - [ - 49 - ] - ], - [ - [ - 65298, - 65298 - ], - "mapped", - [ - 50 - ] - ], - [ - [ - 65299, - 65299 - ], - "mapped", - [ - 51 - ] - ], - [ - [ - 65300, - 65300 - ], - "mapped", - [ - 52 - ] - ], - [ - [ - 65301, - 65301 - ], - "mapped", - [ - 53 - ] - ], - [ - [ - 65302, - 65302 - ], - "mapped", - [ - 54 - ] - ], - [ - [ - 65303, - 65303 - ], - "mapped", - [ - 55 - ] - ], - [ - [ - 65304, - 65304 - ], - "mapped", - [ - 56 - ] - ], - [ - [ - 65305, - 65305 - ], - "mapped", - [ - 57 - ] - ], - [ - [ - 65306, - 65306 - ], - "disallowed_STD3_mapped", - [ - 58 - ] - ], - [ - [ - 65307, - 65307 - ], - "disallowed_STD3_mapped", - [ - 59 - ] - ], - [ - [ - 65308, - 65308 - ], - "disallowed_STD3_mapped", - [ - 60 - ] - ], - [ - [ - 65309, - 65309 - ], - "disallowed_STD3_mapped", - [ - 61 - ] - ], - [ - [ - 65310, - 65310 - ], - "disallowed_STD3_mapped", - [ - 62 - ] - ], - [ - [ - 65311, - 65311 - ], - "disallowed_STD3_mapped", - [ - 63 - ] - ], - [ - [ - 65312, - 65312 - ], - "disallowed_STD3_mapped", - [ - 64 - ] - ], - [ - [ - 65313, - 65313 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 65314, - 65314 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 65315, - 65315 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 65316, - 65316 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 65317, - 65317 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 65318, - 65318 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 65319, - 65319 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 65320, - 65320 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 65321, - 65321 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 65322, - 65322 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 65323, - 65323 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 65324, - 65324 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 65325, - 65325 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 65326, - 65326 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 65327, - 65327 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 65328, - 65328 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 65329, - 65329 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 65330, - 65330 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 65331, - 65331 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 65332, - 65332 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 65333, - 65333 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 65334, - 65334 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 65335, - 65335 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 65336, - 65336 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 65337, - 65337 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 65338, - 65338 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 65339, - 65339 - ], - "disallowed_STD3_mapped", - [ - 91 - ] - ], - [ - [ - 65340, - 65340 - ], - "disallowed_STD3_mapped", - [ - 92 - ] - ], - [ - [ - 65341, - 65341 - ], - "disallowed_STD3_mapped", - [ - 93 - ] - ], - [ - [ - 65342, - 65342 - ], - "disallowed_STD3_mapped", - [ - 94 - ] - ], - [ - [ - 65343, - 65343 - ], - "disallowed_STD3_mapped", - [ - 95 - ] - ], - [ - [ - 65344, - 65344 - ], - "disallowed_STD3_mapped", - [ - 96 - ] - ], - [ - [ - 65345, - 65345 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 65346, - 65346 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 65347, - 65347 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 65348, - 65348 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 65349, - 65349 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 65350, - 65350 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 65351, - 65351 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 65352, - 65352 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 65353, - 65353 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 65354, - 65354 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 65355, - 65355 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 65356, - 65356 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 65357, - 65357 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 65358, - 65358 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 65359, - 65359 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 65360, - 65360 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 65361, - 65361 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 65362, - 65362 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 65363, - 65363 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 65364, - 65364 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 65365, - 65365 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 65366, - 65366 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 65367, - 65367 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 65368, - 65368 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 65369, - 65369 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 65370, - 65370 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 65371, - 65371 - ], - "disallowed_STD3_mapped", - [ - 123 - ] - ], - [ - [ - 65372, - 65372 - ], - "disallowed_STD3_mapped", - [ - 124 - ] - ], - [ - [ - 65373, - 65373 - ], - "disallowed_STD3_mapped", - [ - 125 - ] - ], - [ - [ - 65374, - 65374 - ], - "disallowed_STD3_mapped", - [ - 126 - ] - ], - [ - [ - 65375, - 65375 - ], - "mapped", - [ - 10629 - ] - ], - [ - [ - 65376, - 65376 - ], - "mapped", - [ - 10630 - ] - ], - [ - [ - 65377, - 65377 - ], - "mapped", - [ - 46 - ] - ], - [ - [ - 65378, - 65378 - ], - "mapped", - [ - 12300 - ] - ], - [ - [ - 65379, - 65379 - ], - "mapped", - [ - 12301 - ] - ], - [ - [ - 65380, - 65380 - ], - "mapped", - [ - 12289 - ] - ], - [ - [ - 65381, - 65381 - ], - "mapped", - [ - 12539 - ] - ], - [ - [ - 65382, - 65382 - ], - "mapped", - [ - 12530 - ] - ], - [ - [ - 65383, - 65383 - ], - "mapped", - [ - 12449 - ] - ], - [ - [ - 65384, - 65384 - ], - "mapped", - [ - 12451 - ] - ], - [ - [ - 65385, - 65385 - ], - "mapped", - [ - 12453 - ] - ], - [ - [ - 65386, - 65386 - ], - "mapped", - [ - 12455 - ] - ], - [ - [ - 65387, - 65387 - ], - "mapped", - [ - 12457 - ] - ], - [ - [ - 65388, - 65388 - ], - "mapped", - [ - 12515 - ] - ], - [ - [ - 65389, - 65389 - ], - "mapped", - [ - 12517 - ] - ], - [ - [ - 65390, - 65390 - ], - "mapped", - [ - 12519 - ] - ], - [ - [ - 65391, - 65391 - ], - "mapped", - [ - 12483 - ] - ], - [ - [ - 65392, - 65392 - ], - "mapped", - [ - 12540 - ] - ], - [ - [ - 65393, - 65393 - ], - "mapped", - [ - 12450 - ] - ], - [ - [ - 65394, - 65394 - ], - "mapped", - [ - 12452 - ] - ], - [ - [ - 65395, - 65395 - ], - "mapped", - [ - 12454 - ] - ], - [ - [ - 65396, - 65396 - ], - "mapped", - [ - 12456 - ] - ], - [ - [ - 65397, - 65397 - ], - "mapped", - [ - 12458 - ] - ], - [ - [ - 65398, - 65398 - ], - "mapped", - [ - 12459 - ] - ], - [ - [ - 65399, - 65399 - ], - "mapped", - [ - 12461 - ] - ], - [ - [ - 65400, - 65400 - ], - "mapped", - [ - 12463 - ] - ], - [ - [ - 65401, - 65401 - ], - "mapped", - [ - 12465 - ] - ], - [ - [ - 65402, - 65402 - ], - "mapped", - [ - 12467 - ] - ], - [ - [ - 65403, - 65403 - ], - "mapped", - [ - 12469 - ] - ], - [ - [ - 65404, - 65404 - ], - "mapped", - [ - 12471 - ] - ], - [ - [ - 65405, - 65405 - ], - "mapped", - [ - 12473 - ] - ], - [ - [ - 65406, - 65406 - ], - "mapped", - [ - 12475 - ] - ], - [ - [ - 65407, - 65407 - ], - "mapped", - [ - 12477 - ] - ], - [ - [ - 65408, - 65408 - ], - "mapped", - [ - 12479 - ] - ], - [ - [ - 65409, - 65409 - ], - "mapped", - [ - 12481 - ] - ], - [ - [ - 65410, - 65410 - ], - "mapped", - [ - 12484 - ] - ], - [ - [ - 65411, - 65411 - ], - "mapped", - [ - 12486 - ] - ], - [ - [ - 65412, - 65412 - ], - "mapped", - [ - 12488 - ] - ], - [ - [ - 65413, - 65413 - ], - "mapped", - [ - 12490 - ] - ], - [ - [ - 65414, - 65414 - ], - "mapped", - [ - 12491 - ] - ], - [ - [ - 65415, - 65415 - ], - "mapped", - [ - 12492 - ] - ], - [ - [ - 65416, - 65416 - ], - "mapped", - [ - 12493 - ] - ], - [ - [ - 65417, - 65417 - ], - "mapped", - [ - 12494 - ] - ], - [ - [ - 65418, - 65418 - ], - "mapped", - [ - 12495 - ] - ], - [ - [ - 65419, - 65419 - ], - "mapped", - [ - 12498 - ] - ], - [ - [ - 65420, - 65420 - ], - "mapped", - [ - 12501 - ] - ], - [ - [ - 65421, - 65421 - ], - "mapped", - [ - 12504 - ] - ], - [ - [ - 65422, - 65422 - ], - "mapped", - [ - 12507 - ] - ], - [ - [ - 65423, - 65423 - ], - "mapped", - [ - 12510 - ] - ], - [ - [ - 65424, - 65424 - ], - "mapped", - [ - 12511 - ] - ], - [ - [ - 65425, - 65425 - ], - "mapped", - [ - 12512 - ] - ], - [ - [ - 65426, - 65426 - ], - "mapped", - [ - 12513 - ] - ], - [ - [ - 65427, - 65427 - ], - "mapped", - [ - 12514 - ] - ], - [ - [ - 65428, - 65428 - ], - "mapped", - [ - 12516 - ] - ], - [ - [ - 65429, - 65429 - ], - "mapped", - [ - 12518 - ] - ], - [ - [ - 65430, - 65430 - ], - "mapped", - [ - 12520 - ] - ], - [ - [ - 65431, - 65431 - ], - "mapped", - [ - 12521 - ] - ], - [ - [ - 65432, - 65432 - ], - "mapped", - [ - 12522 - ] - ], - [ - [ - 65433, - 65433 - ], - "mapped", - [ - 12523 - ] - ], - [ - [ - 65434, - 65434 - ], - "mapped", - [ - 12524 - ] - ], - [ - [ - 65435, - 65435 - ], - "mapped", - [ - 12525 - ] - ], - [ - [ - 65436, - 65436 - ], - "mapped", - [ - 12527 - ] - ], - [ - [ - 65437, - 65437 - ], - "mapped", - [ - 12531 - ] - ], - [ - [ - 65438, - 65438 - ], - "mapped", - [ - 12441 - ] - ], - [ - [ - 65439, - 65439 - ], - "mapped", - [ - 12442 - ] - ], - [ - [ - 65440, - 65440 - ], - "disallowed" - ], - [ - [ - 65441, - 65441 - ], - "mapped", - [ - 4352 - ] - ], - [ - [ - 65442, - 65442 - ], - "mapped", - [ - 4353 - ] - ], - [ - [ - 65443, - 65443 - ], - "mapped", - [ - 4522 - ] - ], - [ - [ - 65444, - 65444 - ], - "mapped", - [ - 4354 - ] - ], - [ - [ - 65445, - 65445 - ], - "mapped", - [ - 4524 - ] - ], - [ - [ - 65446, - 65446 - ], - "mapped", - [ - 4525 - ] - ], - [ - [ - 65447, - 65447 - ], - "mapped", - [ - 4355 - ] - ], - [ - [ - 65448, - 65448 - ], - "mapped", - [ - 4356 - ] - ], - [ - [ - 65449, - 65449 - ], - "mapped", - [ - 4357 - ] - ], - [ - [ - 65450, - 65450 - ], - "mapped", - [ - 4528 - ] - ], - [ - [ - 65451, - 65451 - ], - "mapped", - [ - 4529 - ] - ], - [ - [ - 65452, - 65452 - ], - "mapped", - [ - 4530 - ] - ], - [ - [ - 65453, - 65453 - ], - "mapped", - [ - 4531 - ] - ], - [ - [ - 65454, - 65454 - ], - "mapped", - [ - 4532 - ] - ], - [ - [ - 65455, - 65455 - ], - "mapped", - [ - 4533 - ] - ], - [ - [ - 65456, - 65456 - ], - "mapped", - [ - 4378 - ] - ], - [ - [ - 65457, - 65457 - ], - "mapped", - [ - 4358 - ] - ], - [ - [ - 65458, - 65458 - ], - "mapped", - [ - 4359 - ] - ], - [ - [ - 65459, - 65459 - ], - "mapped", - [ - 4360 - ] - ], - [ - [ - 65460, - 65460 - ], - "mapped", - [ - 4385 - ] - ], - [ - [ - 65461, - 65461 - ], - "mapped", - [ - 4361 - ] - ], - [ - [ - 65462, - 65462 - ], - "mapped", - [ - 4362 - ] - ], - [ - [ - 65463, - 65463 - ], - "mapped", - [ - 4363 - ] - ], - [ - [ - 65464, - 65464 - ], - "mapped", - [ - 4364 - ] - ], - [ - [ - 65465, - 65465 - ], - "mapped", - [ - 4365 - ] - ], - [ - [ - 65466, - 65466 - ], - "mapped", - [ - 4366 - ] - ], - [ - [ - 65467, - 65467 - ], - "mapped", - [ - 4367 - ] - ], - [ - [ - 65468, - 65468 - ], - "mapped", - [ - 4368 - ] - ], - [ - [ - 65469, - 65469 - ], - "mapped", - [ - 4369 - ] - ], - [ - [ - 65470, - 65470 - ], - "mapped", - [ - 4370 - ] - ], - [ - [ - 65471, - 65473 - ], - "disallowed" - ], - [ - [ - 65474, - 65474 - ], - "mapped", - [ - 4449 - ] - ], - [ - [ - 65475, - 65475 - ], - "mapped", - [ - 4450 - ] - ], - [ - [ - 65476, - 65476 - ], - "mapped", - [ - 4451 - ] - ], - [ - [ - 65477, - 65477 - ], - "mapped", - [ - 4452 - ] - ], - [ - [ - 65478, - 65478 - ], - "mapped", - [ - 4453 - ] - ], - [ - [ - 65479, - 65479 - ], - "mapped", - [ - 4454 - ] - ], - [ - [ - 65480, - 65481 - ], - "disallowed" - ], - [ - [ - 65482, - 65482 - ], - "mapped", - [ - 4455 - ] - ], - [ - [ - 65483, - 65483 - ], - "mapped", - [ - 4456 - ] - ], - [ - [ - 65484, - 65484 - ], - "mapped", - [ - 4457 - ] - ], - [ - [ - 65485, - 65485 - ], - "mapped", - [ - 4458 - ] - ], - [ - [ - 65486, - 65486 - ], - "mapped", - [ - 4459 - ] - ], - [ - [ - 65487, - 65487 - ], - "mapped", - [ - 4460 - ] - ], - [ - [ - 65488, - 65489 - ], - "disallowed" - ], - [ - [ - 65490, - 65490 - ], - "mapped", - [ - 4461 - ] - ], - [ - [ - 65491, - 65491 - ], - "mapped", - [ - 4462 - ] - ], - [ - [ - 65492, - 65492 - ], - "mapped", - [ - 4463 - ] - ], - [ - [ - 65493, - 65493 - ], - "mapped", - [ - 4464 - ] - ], - [ - [ - 65494, - 65494 - ], - "mapped", - [ - 4465 - ] - ], - [ - [ - 65495, - 65495 - ], - "mapped", - [ - 4466 - ] - ], - [ - [ - 65496, - 65497 - ], - "disallowed" - ], - [ - [ - 65498, - 65498 - ], - "mapped", - [ - 4467 - ] - ], - [ - [ - 65499, - 65499 - ], - "mapped", - [ - 4468 - ] - ], - [ - [ - 65500, - 65500 - ], - "mapped", - [ - 4469 - ] - ], - [ - [ - 65501, - 65503 - ], - "disallowed" - ], - [ - [ - 65504, - 65504 - ], - "mapped", - [ - 162 - ] - ], - [ - [ - 65505, - 65505 - ], - "mapped", - [ - 163 - ] - ], - [ - [ - 65506, - 65506 - ], - "mapped", - [ - 172 - ] - ], - [ - [ - 65507, - 65507 - ], - "disallowed_STD3_mapped", - [ - 32, - 772 - ] - ], - [ - [ - 65508, - 65508 - ], - "mapped", - [ - 166 - ] - ], - [ - [ - 65509, - 65509 - ], - "mapped", - [ - 165 - ] - ], - [ - [ - 65510, - 65510 - ], - "mapped", - [ - 8361 - ] - ], - [ - [ - 65511, - 65511 - ], - "disallowed" - ], - [ - [ - 65512, - 65512 - ], - "mapped", - [ - 9474 - ] - ], - [ - [ - 65513, - 65513 - ], - "mapped", - [ - 8592 - ] - ], - [ - [ - 65514, - 65514 - ], - "mapped", - [ - 8593 - ] - ], - [ - [ - 65515, - 65515 - ], - "mapped", - [ - 8594 - ] - ], - [ - [ - 65516, - 65516 - ], - "mapped", - [ - 8595 - ] - ], - [ - [ - 65517, - 65517 - ], - "mapped", - [ - 9632 - ] - ], - [ - [ - 65518, - 65518 - ], - "mapped", - [ - 9675 - ] - ], - [ - [ - 65519, - 65528 - ], - "disallowed" - ], - [ - [ - 65529, - 65531 - ], - "disallowed" - ], - [ - [ - 65532, - 65532 - ], - "disallowed" - ], - [ - [ - 65533, - 65533 - ], - "disallowed" - ], - [ - [ - 65534, - 65535 - ], - "disallowed" - ], - [ - [ - 65536, - 65547 - ], - "valid" - ], - [ - [ - 65548, - 65548 - ], - "disallowed" - ], - [ - [ - 65549, - 65574 - ], - "valid" - ], - [ - [ - 65575, - 65575 - ], - "disallowed" - ], - [ - [ - 65576, - 65594 - ], - "valid" - ], - [ - [ - 65595, - 65595 - ], - "disallowed" - ], - [ - [ - 65596, - 65597 - ], - "valid" - ], - [ - [ - 65598, - 65598 - ], - "disallowed" - ], - [ - [ - 65599, - 65613 - ], - "valid" - ], - [ - [ - 65614, - 65615 - ], - "disallowed" - ], - [ - [ - 65616, - 65629 - ], - "valid" - ], - [ - [ - 65630, - 65663 - ], - "disallowed" - ], - [ - [ - 65664, - 65786 - ], - "valid" - ], - [ - [ - 65787, - 65791 - ], - "disallowed" - ], - [ - [ - 65792, - 65794 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 65795, - 65798 - ], - "disallowed" - ], - [ - [ - 65799, - 65843 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 65844, - 65846 - ], - "disallowed" - ], - [ - [ - 65847, - 65855 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 65856, - 65930 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 65931, - 65932 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 65933, - 65935 - ], - "disallowed" - ], - [ - [ - 65936, - 65947 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 65948, - 65951 - ], - "disallowed" - ], - [ - [ - 65952, - 65952 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 65953, - 65999 - ], - "disallowed" - ], - [ - [ - 66000, - 66044 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 66045, - 66045 - ], - "valid" - ], - [ - [ - 66046, - 66175 - ], - "disallowed" - ], - [ - [ - 66176, - 66204 - ], - "valid" - ], - [ - [ - 66205, - 66207 - ], - "disallowed" - ], - [ - [ - 66208, - 66256 - ], - "valid" - ], - [ - [ - 66257, - 66271 - ], - "disallowed" - ], - [ - [ - 66272, - 66272 - ], - "valid" - ], - [ - [ - 66273, - 66299 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 66300, - 66303 - ], - "disallowed" - ], - [ - [ - 66304, - 66334 - ], - "valid" - ], - [ - [ - 66335, - 66335 - ], - "valid" - ], - [ - [ - 66336, - 66339 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 66340, - 66351 - ], - "disallowed" - ], - [ - [ - 66352, - 66368 - ], - "valid" - ], - [ - [ - 66369, - 66369 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 66370, - 66377 - ], - "valid" - ], - [ - [ - 66378, - 66378 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 66379, - 66383 - ], - "disallowed" - ], - [ - [ - 66384, - 66426 - ], - "valid" - ], - [ - [ - 66427, - 66431 - ], - "disallowed" - ], - [ - [ - 66432, - 66461 - ], - "valid" - ], - [ - [ - 66462, - 66462 - ], - "disallowed" - ], - [ - [ - 66463, - 66463 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 66464, - 66499 - ], - "valid" - ], - [ - [ - 66500, - 66503 - ], - "disallowed" - ], - [ - [ - 66504, - 66511 - ], - "valid" - ], - [ - [ - 66512, - 66517 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 66518, - 66559 - ], - "disallowed" - ], - [ - [ - 66560, - 66560 - ], - "mapped", - [ - 66600 - ] - ], - [ - [ - 66561, - 66561 - ], - "mapped", - [ - 66601 - ] - ], - [ - [ - 66562, - 66562 - ], - "mapped", - [ - 66602 - ] - ], - [ - [ - 66563, - 66563 - ], - "mapped", - [ - 66603 - ] - ], - [ - [ - 66564, - 66564 - ], - "mapped", - [ - 66604 - ] - ], - [ - [ - 66565, - 66565 - ], - "mapped", - [ - 66605 - ] - ], - [ - [ - 66566, - 66566 - ], - "mapped", - [ - 66606 - ] - ], - [ - [ - 66567, - 66567 - ], - "mapped", - [ - 66607 - ] - ], - [ - [ - 66568, - 66568 - ], - "mapped", - [ - 66608 - ] - ], - [ - [ - 66569, - 66569 - ], - "mapped", - [ - 66609 - ] - ], - [ - [ - 66570, - 66570 - ], - "mapped", - [ - 66610 - ] - ], - [ - [ - 66571, - 66571 - ], - "mapped", - [ - 66611 - ] - ], - [ - [ - 66572, - 66572 - ], - "mapped", - [ - 66612 - ] - ], - [ - [ - 66573, - 66573 - ], - "mapped", - [ - 66613 - ] - ], - [ - [ - 66574, - 66574 - ], - "mapped", - [ - 66614 - ] - ], - [ - [ - 66575, - 66575 - ], - "mapped", - [ - 66615 - ] - ], - [ - [ - 66576, - 66576 - ], - "mapped", - [ - 66616 - ] - ], - [ - [ - 66577, - 66577 - ], - "mapped", - [ - 66617 - ] - ], - [ - [ - 66578, - 66578 - ], - "mapped", - [ - 66618 - ] - ], - [ - [ - 66579, - 66579 - ], - "mapped", - [ - 66619 - ] - ], - [ - [ - 66580, - 66580 - ], - "mapped", - [ - 66620 - ] - ], - [ - [ - 66581, - 66581 - ], - "mapped", - [ - 66621 - ] - ], - [ - [ - 66582, - 66582 - ], - "mapped", - [ - 66622 - ] - ], - [ - [ - 66583, - 66583 - ], - "mapped", - [ - 66623 - ] - ], - [ - [ - 66584, - 66584 - ], - "mapped", - [ - 66624 - ] - ], - [ - [ - 66585, - 66585 - ], - "mapped", - [ - 66625 - ] - ], - [ - [ - 66586, - 66586 - ], - "mapped", - [ - 66626 - ] - ], - [ - [ - 66587, - 66587 - ], - "mapped", - [ - 66627 - ] - ], - [ - [ - 66588, - 66588 - ], - "mapped", - [ - 66628 - ] - ], - [ - [ - 66589, - 66589 - ], - "mapped", - [ - 66629 - ] - ], - [ - [ - 66590, - 66590 - ], - "mapped", - [ - 66630 - ] - ], - [ - [ - 66591, - 66591 - ], - "mapped", - [ - 66631 - ] - ], - [ - [ - 66592, - 66592 - ], - "mapped", - [ - 66632 - ] - ], - [ - [ - 66593, - 66593 - ], - "mapped", - [ - 66633 - ] - ], - [ - [ - 66594, - 66594 - ], - "mapped", - [ - 66634 - ] - ], - [ - [ - 66595, - 66595 - ], - "mapped", - [ - 66635 - ] - ], - [ - [ - 66596, - 66596 - ], - "mapped", - [ - 66636 - ] - ], - [ - [ - 66597, - 66597 - ], - "mapped", - [ - 66637 - ] - ], - [ - [ - 66598, - 66598 - ], - "mapped", - [ - 66638 - ] - ], - [ - [ - 66599, - 66599 - ], - "mapped", - [ - 66639 - ] - ], - [ - [ - 66600, - 66637 - ], - "valid" - ], - [ - [ - 66638, - 66717 - ], - "valid" - ], - [ - [ - 66718, - 66719 - ], - "disallowed" - ], - [ - [ - 66720, - 66729 - ], - "valid" - ], - [ - [ - 66730, - 66815 - ], - "disallowed" - ], - [ - [ - 66816, - 66855 - ], - "valid" - ], - [ - [ - 66856, - 66863 - ], - "disallowed" - ], - [ - [ - 66864, - 66915 - ], - "valid" - ], - [ - [ - 66916, - 66926 - ], - "disallowed" - ], - [ - [ - 66927, - 66927 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 66928, - 67071 - ], - "disallowed" - ], - [ - [ - 67072, - 67382 - ], - "valid" - ], - [ - [ - 67383, - 67391 - ], - "disallowed" - ], - [ - [ - 67392, - 67413 - ], - "valid" - ], - [ - [ - 67414, - 67423 - ], - "disallowed" - ], - [ - [ - 67424, - 67431 - ], - "valid" - ], - [ - [ - 67432, - 67583 - ], - "disallowed" - ], - [ - [ - 67584, - 67589 - ], - "valid" - ], - [ - [ - 67590, - 67591 - ], - "disallowed" - ], - [ - [ - 67592, - 67592 - ], - "valid" - ], - [ - [ - 67593, - 67593 - ], - "disallowed" - ], - [ - [ - 67594, - 67637 - ], - "valid" - ], - [ - [ - 67638, - 67638 - ], - "disallowed" - ], - [ - [ - 67639, - 67640 - ], - "valid" - ], - [ - [ - 67641, - 67643 - ], - "disallowed" - ], - [ - [ - 67644, - 67644 - ], - "valid" - ], - [ - [ - 67645, - 67646 - ], - "disallowed" - ], - [ - [ - 67647, - 67647 - ], - "valid" - ], - [ - [ - 67648, - 67669 - ], - "valid" - ], - [ - [ - 67670, - 67670 - ], - "disallowed" - ], - [ - [ - 67671, - 67679 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 67680, - 67702 - ], - "valid" - ], - [ - [ - 67703, - 67711 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 67712, - 67742 - ], - "valid" - ], - [ - [ - 67743, - 67750 - ], - "disallowed" - ], - [ - [ - 67751, - 67759 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 67760, - 67807 - ], - "disallowed" - ], - [ - [ - 67808, - 67826 - ], - "valid" - ], - [ - [ - 67827, - 67827 - ], - "disallowed" - ], - [ - [ - 67828, - 67829 - ], - "valid" - ], - [ - [ - 67830, - 67834 - ], - "disallowed" - ], - [ - [ - 67835, - 67839 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 67840, - 67861 - ], - "valid" - ], - [ - [ - 67862, - 67865 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 67866, - 67867 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 67868, - 67870 - ], - "disallowed" - ], - [ - [ - 67871, - 67871 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 67872, - 67897 - ], - "valid" - ], - [ - [ - 67898, - 67902 - ], - "disallowed" - ], - [ - [ - 67903, - 67903 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 67904, - 67967 - ], - "disallowed" - ], - [ - [ - 67968, - 68023 - ], - "valid" - ], - [ - [ - 68024, - 68027 - ], - "disallowed" - ], - [ - [ - 68028, - 68029 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 68030, - 68031 - ], - "valid" - ], - [ - [ - 68032, - 68047 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 68048, - 68049 - ], - "disallowed" - ], - [ - [ - 68050, - 68095 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 68096, - 68099 - ], - "valid" - ], - [ - [ - 68100, - 68100 - ], - "disallowed" - ], - [ - [ - 68101, - 68102 - ], - "valid" - ], - [ - [ - 68103, - 68107 - ], - "disallowed" - ], - [ - [ - 68108, - 68115 - ], - "valid" - ], - [ - [ - 68116, - 68116 - ], - "disallowed" - ], - [ - [ - 68117, - 68119 - ], - "valid" - ], - [ - [ - 68120, - 68120 - ], - "disallowed" - ], - [ - [ - 68121, - 68147 - ], - "valid" - ], - [ - [ - 68148, - 68151 - ], - "disallowed" - ], - [ - [ - 68152, - 68154 - ], - "valid" - ], - [ - [ - 68155, - 68158 - ], - "disallowed" - ], - [ - [ - 68159, - 68159 - ], - "valid" - ], - [ - [ - 68160, - 68167 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 68168, - 68175 - ], - "disallowed" - ], - [ - [ - 68176, - 68184 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 68185, - 68191 - ], - "disallowed" - ], - [ - [ - 68192, - 68220 - ], - "valid" - ], - [ - [ - 68221, - 68223 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 68224, - 68252 - ], - "valid" - ], - [ - [ - 68253, - 68255 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 68256, - 68287 - ], - "disallowed" - ], - [ - [ - 68288, - 68295 - ], - "valid" - ], - [ - [ - 68296, - 68296 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 68297, - 68326 - ], - "valid" - ], - [ - [ - 68327, - 68330 - ], - "disallowed" - ], - [ - [ - 68331, - 68342 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 68343, - 68351 - ], - "disallowed" - ], - [ - [ - 68352, - 68405 - ], - "valid" - ], - [ - [ - 68406, - 68408 - ], - "disallowed" - ], - [ - [ - 68409, - 68415 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 68416, - 68437 - ], - "valid" - ], - [ - [ - 68438, - 68439 - ], - "disallowed" - ], - [ - [ - 68440, - 68447 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 68448, - 68466 - ], - "valid" - ], - [ - [ - 68467, - 68471 - ], - "disallowed" - ], - [ - [ - 68472, - 68479 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 68480, - 68497 - ], - "valid" - ], - [ - [ - 68498, - 68504 - ], - "disallowed" - ], - [ - [ - 68505, - 68508 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 68509, - 68520 - ], - "disallowed" - ], - [ - [ - 68521, - 68527 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 68528, - 68607 - ], - "disallowed" - ], - [ - [ - 68608, - 68680 - ], - "valid" - ], - [ - [ - 68681, - 68735 - ], - "disallowed" - ], - [ - [ - 68736, - 68736 - ], - "mapped", - [ - 68800 - ] - ], - [ - [ - 68737, - 68737 - ], - "mapped", - [ - 68801 - ] - ], - [ - [ - 68738, - 68738 - ], - "mapped", - [ - 68802 - ] - ], - [ - [ - 68739, - 68739 - ], - "mapped", - [ - 68803 - ] - ], - [ - [ - 68740, - 68740 - ], - "mapped", - [ - 68804 - ] - ], - [ - [ - 68741, - 68741 - ], - "mapped", - [ - 68805 - ] - ], - [ - [ - 68742, - 68742 - ], - "mapped", - [ - 68806 - ] - ], - [ - [ - 68743, - 68743 - ], - "mapped", - [ - 68807 - ] - ], - [ - [ - 68744, - 68744 - ], - "mapped", - [ - 68808 - ] - ], - [ - [ - 68745, - 68745 - ], - "mapped", - [ - 68809 - ] - ], - [ - [ - 68746, - 68746 - ], - "mapped", - [ - 68810 - ] - ], - [ - [ - 68747, - 68747 - ], - "mapped", - [ - 68811 - ] - ], - [ - [ - 68748, - 68748 - ], - "mapped", - [ - 68812 - ] - ], - [ - [ - 68749, - 68749 - ], - "mapped", - [ - 68813 - ] - ], - [ - [ - 68750, - 68750 - ], - "mapped", - [ - 68814 - ] - ], - [ - [ - 68751, - 68751 - ], - "mapped", - [ - 68815 - ] - ], - [ - [ - 68752, - 68752 - ], - "mapped", - [ - 68816 - ] - ], - [ - [ - 68753, - 68753 - ], - "mapped", - [ - 68817 - ] - ], - [ - [ - 68754, - 68754 - ], - "mapped", - [ - 68818 - ] - ], - [ - [ - 68755, - 68755 - ], - "mapped", - [ - 68819 - ] - ], - [ - [ - 68756, - 68756 - ], - "mapped", - [ - 68820 - ] - ], - [ - [ - 68757, - 68757 - ], - "mapped", - [ - 68821 - ] - ], - [ - [ - 68758, - 68758 - ], - "mapped", - [ - 68822 - ] - ], - [ - [ - 68759, - 68759 - ], - "mapped", - [ - 68823 - ] - ], - [ - [ - 68760, - 68760 - ], - "mapped", - [ - 68824 - ] - ], - [ - [ - 68761, - 68761 - ], - "mapped", - [ - 68825 - ] - ], - [ - [ - 68762, - 68762 - ], - "mapped", - [ - 68826 - ] - ], - [ - [ - 68763, - 68763 - ], - "mapped", - [ - 68827 - ] - ], - [ - [ - 68764, - 68764 - ], - "mapped", - [ - 68828 - ] - ], - [ - [ - 68765, - 68765 - ], - "mapped", - [ - 68829 - ] - ], - [ - [ - 68766, - 68766 - ], - "mapped", - [ - 68830 - ] - ], - [ - [ - 68767, - 68767 - ], - "mapped", - [ - 68831 - ] - ], - [ - [ - 68768, - 68768 - ], - "mapped", - [ - 68832 - ] - ], - [ - [ - 68769, - 68769 - ], - "mapped", - [ - 68833 - ] - ], - [ - [ - 68770, - 68770 - ], - "mapped", - [ - 68834 - ] - ], - [ - [ - 68771, - 68771 - ], - "mapped", - [ - 68835 - ] - ], - [ - [ - 68772, - 68772 - ], - "mapped", - [ - 68836 - ] - ], - [ - [ - 68773, - 68773 - ], - "mapped", - [ - 68837 - ] - ], - [ - [ - 68774, - 68774 - ], - "mapped", - [ - 68838 - ] - ], - [ - [ - 68775, - 68775 - ], - "mapped", - [ - 68839 - ] - ], - [ - [ - 68776, - 68776 - ], - "mapped", - [ - 68840 - ] - ], - [ - [ - 68777, - 68777 - ], - "mapped", - [ - 68841 - ] - ], - [ - [ - 68778, - 68778 - ], - "mapped", - [ - 68842 - ] - ], - [ - [ - 68779, - 68779 - ], - "mapped", - [ - 68843 - ] - ], - [ - [ - 68780, - 68780 - ], - "mapped", - [ - 68844 - ] - ], - [ - [ - 68781, - 68781 - ], - "mapped", - [ - 68845 - ] - ], - [ - [ - 68782, - 68782 - ], - "mapped", - [ - 68846 - ] - ], - [ - [ - 68783, - 68783 - ], - "mapped", - [ - 68847 - ] - ], - [ - [ - 68784, - 68784 - ], - "mapped", - [ - 68848 - ] - ], - [ - [ - 68785, - 68785 - ], - "mapped", - [ - 68849 - ] - ], - [ - [ - 68786, - 68786 - ], - "mapped", - [ - 68850 - ] - ], - [ - [ - 68787, - 68799 - ], - "disallowed" - ], - [ - [ - 68800, - 68850 - ], - "valid" - ], - [ - [ - 68851, - 68857 - ], - "disallowed" - ], - [ - [ - 68858, - 68863 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 68864, - 69215 - ], - "disallowed" - ], - [ - [ - 69216, - 69246 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 69247, - 69631 - ], - "disallowed" - ], - [ - [ - 69632, - 69702 - ], - "valid" - ], - [ - [ - 69703, - 69709 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 69710, - 69713 - ], - "disallowed" - ], - [ - [ - 69714, - 69733 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 69734, - 69743 - ], - "valid" - ], - [ - [ - 69744, - 69758 - ], - "disallowed" - ], - [ - [ - 69759, - 69759 - ], - "valid" - ], - [ - [ - 69760, - 69818 - ], - "valid" - ], - [ - [ - 69819, - 69820 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 69821, - 69821 - ], - "disallowed" - ], - [ - [ - 69822, - 69825 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 69826, - 69839 - ], - "disallowed" - ], - [ - [ - 69840, - 69864 - ], - "valid" - ], - [ - [ - 69865, - 69871 - ], - "disallowed" - ], - [ - [ - 69872, - 69881 - ], - "valid" - ], - [ - [ - 69882, - 69887 - ], - "disallowed" - ], - [ - [ - 69888, - 69940 - ], - "valid" - ], - [ - [ - 69941, - 69941 - ], - "disallowed" - ], - [ - [ - 69942, - 69951 - ], - "valid" - ], - [ - [ - 69952, - 69955 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 69956, - 69967 - ], - "disallowed" - ], - [ - [ - 69968, - 70003 - ], - "valid" - ], - [ - [ - 70004, - 70005 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 70006, - 70006 - ], - "valid" - ], - [ - [ - 70007, - 70015 - ], - "disallowed" - ], - [ - [ - 70016, - 70084 - ], - "valid" - ], - [ - [ - 70085, - 70088 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 70089, - 70089 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 70090, - 70092 - ], - "valid" - ], - [ - [ - 70093, - 70093 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 70094, - 70095 - ], - "disallowed" - ], - [ - [ - 70096, - 70105 - ], - "valid" - ], - [ - [ - 70106, - 70106 - ], - "valid" - ], - [ - [ - 70107, - 70107 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 70108, - 70108 - ], - "valid" - ], - [ - [ - 70109, - 70111 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 70112, - 70112 - ], - "disallowed" - ], - [ - [ - 70113, - 70132 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 70133, - 70143 - ], - "disallowed" - ], - [ - [ - 70144, - 70161 - ], - "valid" - ], - [ - [ - 70162, - 70162 - ], - "disallowed" - ], - [ - [ - 70163, - 70199 - ], - "valid" - ], - [ - [ - 70200, - 70205 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 70206, - 70271 - ], - "disallowed" - ], - [ - [ - 70272, - 70278 - ], - "valid" - ], - [ - [ - 70279, - 70279 - ], - "disallowed" - ], - [ - [ - 70280, - 70280 - ], - "valid" - ], - [ - [ - 70281, - 70281 - ], - "disallowed" - ], - [ - [ - 70282, - 70285 - ], - "valid" - ], - [ - [ - 70286, - 70286 - ], - "disallowed" - ], - [ - [ - 70287, - 70301 - ], - "valid" - ], - [ - [ - 70302, - 70302 - ], - "disallowed" - ], - [ - [ - 70303, - 70312 - ], - "valid" - ], - [ - [ - 70313, - 70313 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 70314, - 70319 - ], - "disallowed" - ], - [ - [ - 70320, - 70378 - ], - "valid" - ], - [ - [ - 70379, - 70383 - ], - "disallowed" - ], - [ - [ - 70384, - 70393 - ], - "valid" - ], - [ - [ - 70394, - 70399 - ], - "disallowed" - ], - [ - [ - 70400, - 70400 - ], - "valid" - ], - [ - [ - 70401, - 70403 - ], - "valid" - ], - [ - [ - 70404, - 70404 - ], - "disallowed" - ], - [ - [ - 70405, - 70412 - ], - "valid" - ], - [ - [ - 70413, - 70414 - ], - "disallowed" - ], - [ - [ - 70415, - 70416 - ], - "valid" - ], - [ - [ - 70417, - 70418 - ], - "disallowed" - ], - [ - [ - 70419, - 70440 - ], - "valid" - ], - [ - [ - 70441, - 70441 - ], - "disallowed" - ], - [ - [ - 70442, - 70448 - ], - "valid" - ], - [ - [ - 70449, - 70449 - ], - "disallowed" - ], - [ - [ - 70450, - 70451 - ], - "valid" - ], - [ - [ - 70452, - 70452 - ], - "disallowed" - ], - [ - [ - 70453, - 70457 - ], - "valid" - ], - [ - [ - 70458, - 70459 - ], - "disallowed" - ], - [ - [ - 70460, - 70468 - ], - "valid" - ], - [ - [ - 70469, - 70470 - ], - "disallowed" - ], - [ - [ - 70471, - 70472 - ], - "valid" - ], - [ - [ - 70473, - 70474 - ], - "disallowed" - ], - [ - [ - 70475, - 70477 - ], - "valid" - ], - [ - [ - 70478, - 70479 - ], - "disallowed" - ], - [ - [ - 70480, - 70480 - ], - "valid" - ], - [ - [ - 70481, - 70486 - ], - "disallowed" - ], - [ - [ - 70487, - 70487 - ], - "valid" - ], - [ - [ - 70488, - 70492 - ], - "disallowed" - ], - [ - [ - 70493, - 70499 - ], - "valid" - ], - [ - [ - 70500, - 70501 - ], - "disallowed" - ], - [ - [ - 70502, - 70508 - ], - "valid" - ], - [ - [ - 70509, - 70511 - ], - "disallowed" - ], - [ - [ - 70512, - 70516 - ], - "valid" - ], - [ - [ - 70517, - 70783 - ], - "disallowed" - ], - [ - [ - 70784, - 70853 - ], - "valid" - ], - [ - [ - 70854, - 70854 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 70855, - 70855 - ], - "valid" - ], - [ - [ - 70856, - 70863 - ], - "disallowed" - ], - [ - [ - 70864, - 70873 - ], - "valid" - ], - [ - [ - 70874, - 71039 - ], - "disallowed" - ], - [ - [ - 71040, - 71093 - ], - "valid" - ], - [ - [ - 71094, - 71095 - ], - "disallowed" - ], - [ - [ - 71096, - 71104 - ], - "valid" - ], - [ - [ - 71105, - 71113 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 71114, - 71127 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 71128, - 71133 - ], - "valid" - ], - [ - [ - 71134, - 71167 - ], - "disallowed" - ], - [ - [ - 71168, - 71232 - ], - "valid" - ], - [ - [ - 71233, - 71235 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 71236, - 71236 - ], - "valid" - ], - [ - [ - 71237, - 71247 - ], - "disallowed" - ], - [ - [ - 71248, - 71257 - ], - "valid" - ], - [ - [ - 71258, - 71295 - ], - "disallowed" - ], - [ - [ - 71296, - 71351 - ], - "valid" - ], - [ - [ - 71352, - 71359 - ], - "disallowed" - ], - [ - [ - 71360, - 71369 - ], - "valid" - ], - [ - [ - 71370, - 71423 - ], - "disallowed" - ], - [ - [ - 71424, - 71449 - ], - "valid" - ], - [ - [ - 71450, - 71452 - ], - "disallowed" - ], - [ - [ - 71453, - 71467 - ], - "valid" - ], - [ - [ - 71468, - 71471 - ], - "disallowed" - ], - [ - [ - 71472, - 71481 - ], - "valid" - ], - [ - [ - 71482, - 71487 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 71488, - 71839 - ], - "disallowed" - ], - [ - [ - 71840, - 71840 - ], - "mapped", - [ - 71872 - ] - ], - [ - [ - 71841, - 71841 - ], - "mapped", - [ - 71873 - ] - ], - [ - [ - 71842, - 71842 - ], - "mapped", - [ - 71874 - ] - ], - [ - [ - 71843, - 71843 - ], - "mapped", - [ - 71875 - ] - ], - [ - [ - 71844, - 71844 - ], - "mapped", - [ - 71876 - ] - ], - [ - [ - 71845, - 71845 - ], - "mapped", - [ - 71877 - ] - ], - [ - [ - 71846, - 71846 - ], - "mapped", - [ - 71878 - ] - ], - [ - [ - 71847, - 71847 - ], - "mapped", - [ - 71879 - ] - ], - [ - [ - 71848, - 71848 - ], - "mapped", - [ - 71880 - ] - ], - [ - [ - 71849, - 71849 - ], - "mapped", - [ - 71881 - ] - ], - [ - [ - 71850, - 71850 - ], - "mapped", - [ - 71882 - ] - ], - [ - [ - 71851, - 71851 - ], - "mapped", - [ - 71883 - ] - ], - [ - [ - 71852, - 71852 - ], - "mapped", - [ - 71884 - ] - ], - [ - [ - 71853, - 71853 - ], - "mapped", - [ - 71885 - ] - ], - [ - [ - 71854, - 71854 - ], - "mapped", - [ - 71886 - ] - ], - [ - [ - 71855, - 71855 - ], - "mapped", - [ - 71887 - ] - ], - [ - [ - 71856, - 71856 - ], - "mapped", - [ - 71888 - ] - ], - [ - [ - 71857, - 71857 - ], - "mapped", - [ - 71889 - ] - ], - [ - [ - 71858, - 71858 - ], - "mapped", - [ - 71890 - ] - ], - [ - [ - 71859, - 71859 - ], - "mapped", - [ - 71891 - ] - ], - [ - [ - 71860, - 71860 - ], - "mapped", - [ - 71892 - ] - ], - [ - [ - 71861, - 71861 - ], - "mapped", - [ - 71893 - ] - ], - [ - [ - 71862, - 71862 - ], - "mapped", - [ - 71894 - ] - ], - [ - [ - 71863, - 71863 - ], - "mapped", - [ - 71895 - ] - ], - [ - [ - 71864, - 71864 - ], - "mapped", - [ - 71896 - ] - ], - [ - [ - 71865, - 71865 - ], - "mapped", - [ - 71897 - ] - ], - [ - [ - 71866, - 71866 - ], - "mapped", - [ - 71898 - ] - ], - [ - [ - 71867, - 71867 - ], - "mapped", - [ - 71899 - ] - ], - [ - [ - 71868, - 71868 - ], - "mapped", - [ - 71900 - ] - ], - [ - [ - 71869, - 71869 - ], - "mapped", - [ - 71901 - ] - ], - [ - [ - 71870, - 71870 - ], - "mapped", - [ - 71902 - ] - ], - [ - [ - 71871, - 71871 - ], - "mapped", - [ - 71903 - ] - ], - [ - [ - 71872, - 71913 - ], - "valid" - ], - [ - [ - 71914, - 71922 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 71923, - 71934 - ], - "disallowed" - ], - [ - [ - 71935, - 71935 - ], - "valid" - ], - [ - [ - 71936, - 72383 - ], - "disallowed" - ], - [ - [ - 72384, - 72440 - ], - "valid" - ], - [ - [ - 72441, - 73727 - ], - "disallowed" - ], - [ - [ - 73728, - 74606 - ], - "valid" - ], - [ - [ - 74607, - 74648 - ], - "valid" - ], - [ - [ - 74649, - 74649 - ], - "valid" - ], - [ - [ - 74650, - 74751 - ], - "disallowed" - ], - [ - [ - 74752, - 74850 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 74851, - 74862 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 74863, - 74863 - ], - "disallowed" - ], - [ - [ - 74864, - 74867 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 74868, - 74868 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 74869, - 74879 - ], - "disallowed" - ], - [ - [ - 74880, - 75075 - ], - "valid" - ], - [ - [ - 75076, - 77823 - ], - "disallowed" - ], - [ - [ - 77824, - 78894 - ], - "valid" - ], - [ - [ - 78895, - 82943 - ], - "disallowed" - ], - [ - [ - 82944, - 83526 - ], - "valid" - ], - [ - [ - 83527, - 92159 - ], - "disallowed" - ], - [ - [ - 92160, - 92728 - ], - "valid" - ], - [ - [ - 92729, - 92735 - ], - "disallowed" - ], - [ - [ - 92736, - 92766 - ], - "valid" - ], - [ - [ - 92767, - 92767 - ], - "disallowed" - ], - [ - [ - 92768, - 92777 - ], - "valid" - ], - [ - [ - 92778, - 92781 - ], - "disallowed" - ], - [ - [ - 92782, - 92783 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 92784, - 92879 - ], - "disallowed" - ], - [ - [ - 92880, - 92909 - ], - "valid" - ], - [ - [ - 92910, - 92911 - ], - "disallowed" - ], - [ - [ - 92912, - 92916 - ], - "valid" - ], - [ - [ - 92917, - 92917 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 92918, - 92927 - ], - "disallowed" - ], - [ - [ - 92928, - 92982 - ], - "valid" - ], - [ - [ - 92983, - 92991 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 92992, - 92995 - ], - "valid" - ], - [ - [ - 92996, - 92997 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 92998, - 93007 - ], - "disallowed" - ], - [ - [ - 93008, - 93017 - ], - "valid" - ], - [ - [ - 93018, - 93018 - ], - "disallowed" - ], - [ - [ - 93019, - 93025 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 93026, - 93026 - ], - "disallowed" - ], - [ - [ - 93027, - 93047 - ], - "valid" - ], - [ - [ - 93048, - 93052 - ], - "disallowed" - ], - [ - [ - 93053, - 93071 - ], - "valid" - ], - [ - [ - 93072, - 93951 - ], - "disallowed" - ], - [ - [ - 93952, - 94020 - ], - "valid" - ], - [ - [ - 94021, - 94031 - ], - "disallowed" - ], - [ - [ - 94032, - 94078 - ], - "valid" - ], - [ - [ - 94079, - 94094 - ], - "disallowed" - ], - [ - [ - 94095, - 94111 - ], - "valid" - ], - [ - [ - 94112, - 110591 - ], - "disallowed" - ], - [ - [ - 110592, - 110593 - ], - "valid" - ], - [ - [ - 110594, - 113663 - ], - "disallowed" - ], - [ - [ - 113664, - 113770 - ], - "valid" - ], - [ - [ - 113771, - 113775 - ], - "disallowed" - ], - [ - [ - 113776, - 113788 - ], - "valid" - ], - [ - [ - 113789, - 113791 - ], - "disallowed" - ], - [ - [ - 113792, - 113800 - ], - "valid" - ], - [ - [ - 113801, - 113807 - ], - "disallowed" - ], - [ - [ - 113808, - 113817 - ], - "valid" - ], - [ - [ - 113818, - 113819 - ], - "disallowed" - ], - [ - [ - 113820, - 113820 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 113821, - 113822 - ], - "valid" - ], - [ - [ - 113823, - 113823 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 113824, - 113827 - ], - "ignored" - ], - [ - [ - 113828, - 118783 - ], - "disallowed" - ], - [ - [ - 118784, - 119029 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 119030, - 119039 - ], - "disallowed" - ], - [ - [ - 119040, - 119078 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 119079, - 119080 - ], - "disallowed" - ], - [ - [ - 119081, - 119081 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 119082, - 119133 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 119134, - 119134 - ], - "mapped", - [ - 119127, - 119141 - ] - ], - [ - [ - 119135, - 119135 - ], - "mapped", - [ - 119128, - 119141 - ] - ], - [ - [ - 119136, - 119136 - ], - "mapped", - [ - 119128, - 119141, - 119150 - ] - ], - [ - [ - 119137, - 119137 - ], - "mapped", - [ - 119128, - 119141, - 119151 - ] - ], - [ - [ - 119138, - 119138 - ], - "mapped", - [ - 119128, - 119141, - 119152 - ] - ], - [ - [ - 119139, - 119139 - ], - "mapped", - [ - 119128, - 119141, - 119153 - ] - ], - [ - [ - 119140, - 119140 - ], - "mapped", - [ - 119128, - 119141, - 119154 - ] - ], - [ - [ - 119141, - 119154 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 119155, - 119162 - ], - "disallowed" - ], - [ - [ - 119163, - 119226 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 119227, - 119227 - ], - "mapped", - [ - 119225, - 119141 - ] - ], - [ - [ - 119228, - 119228 - ], - "mapped", - [ - 119226, - 119141 - ] - ], - [ - [ - 119229, - 119229 - ], - "mapped", - [ - 119225, - 119141, - 119150 - ] - ], - [ - [ - 119230, - 119230 - ], - "mapped", - [ - 119226, - 119141, - 119150 - ] - ], - [ - [ - 119231, - 119231 - ], - "mapped", - [ - 119225, - 119141, - 119151 - ] - ], - [ - [ - 119232, - 119232 - ], - "mapped", - [ - 119226, - 119141, - 119151 - ] - ], - [ - [ - 119233, - 119261 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 119262, - 119272 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 119273, - 119295 - ], - "disallowed" - ], - [ - [ - 119296, - 119365 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 119366, - 119551 - ], - "disallowed" - ], - [ - [ - 119552, - 119638 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 119639, - 119647 - ], - "disallowed" - ], - [ - [ - 119648, - 119665 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 119666, - 119807 - ], - "disallowed" - ], - [ - [ - 119808, - 119808 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 119809, - 119809 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 119810, - 119810 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 119811, - 119811 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 119812, - 119812 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 119813, - 119813 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 119814, - 119814 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 119815, - 119815 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 119816, - 119816 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 119817, - 119817 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 119818, - 119818 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 119819, - 119819 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 119820, - 119820 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 119821, - 119821 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 119822, - 119822 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 119823, - 119823 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 119824, - 119824 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 119825, - 119825 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 119826, - 119826 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 119827, - 119827 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 119828, - 119828 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 119829, - 119829 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 119830, - 119830 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 119831, - 119831 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 119832, - 119832 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 119833, - 119833 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 119834, - 119834 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 119835, - 119835 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 119836, - 119836 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 119837, - 119837 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 119838, - 119838 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 119839, - 119839 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 119840, - 119840 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 119841, - 119841 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 119842, - 119842 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 119843, - 119843 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 119844, - 119844 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 119845, - 119845 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 119846, - 119846 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 119847, - 119847 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 119848, - 119848 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 119849, - 119849 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 119850, - 119850 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 119851, - 119851 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 119852, - 119852 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 119853, - 119853 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 119854, - 119854 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 119855, - 119855 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 119856, - 119856 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 119857, - 119857 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 119858, - 119858 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 119859, - 119859 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 119860, - 119860 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 119861, - 119861 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 119862, - 119862 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 119863, - 119863 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 119864, - 119864 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 119865, - 119865 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 119866, - 119866 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 119867, - 119867 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 119868, - 119868 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 119869, - 119869 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 119870, - 119870 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 119871, - 119871 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 119872, - 119872 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 119873, - 119873 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 119874, - 119874 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 119875, - 119875 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 119876, - 119876 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 119877, - 119877 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 119878, - 119878 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 119879, - 119879 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 119880, - 119880 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 119881, - 119881 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 119882, - 119882 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 119883, - 119883 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 119884, - 119884 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 119885, - 119885 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 119886, - 119886 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 119887, - 119887 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 119888, - 119888 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 119889, - 119889 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 119890, - 119890 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 119891, - 119891 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 119892, - 119892 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 119893, - 119893 - ], - "disallowed" - ], - [ - [ - 119894, - 119894 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 119895, - 119895 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 119896, - 119896 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 119897, - 119897 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 119898, - 119898 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 119899, - 119899 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 119900, - 119900 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 119901, - 119901 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 119902, - 119902 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 119903, - 119903 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 119904, - 119904 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 119905, - 119905 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 119906, - 119906 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 119907, - 119907 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 119908, - 119908 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 119909, - 119909 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 119910, - 119910 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 119911, - 119911 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 119912, - 119912 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 119913, - 119913 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 119914, - 119914 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 119915, - 119915 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 119916, - 119916 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 119917, - 119917 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 119918, - 119918 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 119919, - 119919 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 119920, - 119920 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 119921, - 119921 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 119922, - 119922 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 119923, - 119923 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 119924, - 119924 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 119925, - 119925 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 119926, - 119926 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 119927, - 119927 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 119928, - 119928 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 119929, - 119929 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 119930, - 119930 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 119931, - 119931 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 119932, - 119932 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 119933, - 119933 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 119934, - 119934 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 119935, - 119935 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 119936, - 119936 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 119937, - 119937 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 119938, - 119938 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 119939, - 119939 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 119940, - 119940 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 119941, - 119941 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 119942, - 119942 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 119943, - 119943 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 119944, - 119944 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 119945, - 119945 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 119946, - 119946 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 119947, - 119947 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 119948, - 119948 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 119949, - 119949 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 119950, - 119950 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 119951, - 119951 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 119952, - 119952 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 119953, - 119953 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 119954, - 119954 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 119955, - 119955 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 119956, - 119956 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 119957, - 119957 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 119958, - 119958 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 119959, - 119959 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 119960, - 119960 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 119961, - 119961 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 119962, - 119962 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 119963, - 119963 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 119964, - 119964 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 119965, - 119965 - ], - "disallowed" - ], - [ - [ - 119966, - 119966 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 119967, - 119967 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 119968, - 119969 - ], - "disallowed" - ], - [ - [ - 119970, - 119970 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 119971, - 119972 - ], - "disallowed" - ], - [ - [ - 119973, - 119973 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 119974, - 119974 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 119975, - 119976 - ], - "disallowed" - ], - [ - [ - 119977, - 119977 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 119978, - 119978 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 119979, - 119979 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 119980, - 119980 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 119981, - 119981 - ], - "disallowed" - ], - [ - [ - 119982, - 119982 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 119983, - 119983 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 119984, - 119984 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 119985, - 119985 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 119986, - 119986 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 119987, - 119987 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 119988, - 119988 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 119989, - 119989 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 119990, - 119990 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 119991, - 119991 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 119992, - 119992 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 119993, - 119993 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 119994, - 119994 - ], - "disallowed" - ], - [ - [ - 119995, - 119995 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 119996, - 119996 - ], - "disallowed" - ], - [ - [ - 119997, - 119997 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 119998, - 119998 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 119999, - 119999 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 120000, - 120000 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 120001, - 120001 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 120002, - 120002 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 120003, - 120003 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 120004, - 120004 - ], - "disallowed" - ], - [ - [ - 120005, - 120005 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 120006, - 120006 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 120007, - 120007 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 120008, - 120008 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 120009, - 120009 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 120010, - 120010 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 120011, - 120011 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 120012, - 120012 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 120013, - 120013 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 120014, - 120014 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 120015, - 120015 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 120016, - 120016 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 120017, - 120017 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 120018, - 120018 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 120019, - 120019 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 120020, - 120020 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 120021, - 120021 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 120022, - 120022 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 120023, - 120023 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 120024, - 120024 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 120025, - 120025 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 120026, - 120026 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 120027, - 120027 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 120028, - 120028 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 120029, - 120029 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 120030, - 120030 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 120031, - 120031 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 120032, - 120032 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 120033, - 120033 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 120034, - 120034 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 120035, - 120035 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 120036, - 120036 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 120037, - 120037 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 120038, - 120038 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 120039, - 120039 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 120040, - 120040 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 120041, - 120041 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 120042, - 120042 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 120043, - 120043 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 120044, - 120044 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 120045, - 120045 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 120046, - 120046 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 120047, - 120047 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 120048, - 120048 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 120049, - 120049 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 120050, - 120050 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 120051, - 120051 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 120052, - 120052 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 120053, - 120053 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 120054, - 120054 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 120055, - 120055 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 120056, - 120056 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 120057, - 120057 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 120058, - 120058 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 120059, - 120059 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 120060, - 120060 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 120061, - 120061 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 120062, - 120062 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 120063, - 120063 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 120064, - 120064 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 120065, - 120065 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 120066, - 120066 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 120067, - 120067 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 120068, - 120068 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 120069, - 120069 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 120070, - 120070 - ], - "disallowed" - ], - [ - [ - 120071, - 120071 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 120072, - 120072 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 120073, - 120073 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 120074, - 120074 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 120075, - 120076 - ], - "disallowed" - ], - [ - [ - 120077, - 120077 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 120078, - 120078 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 120079, - 120079 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 120080, - 120080 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 120081, - 120081 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 120082, - 120082 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 120083, - 120083 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 120084, - 120084 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 120085, - 120085 - ], - "disallowed" - ], - [ - [ - 120086, - 120086 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 120087, - 120087 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 120088, - 120088 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 120089, - 120089 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 120090, - 120090 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 120091, - 120091 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 120092, - 120092 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 120093, - 120093 - ], - "disallowed" - ], - [ - [ - 120094, - 120094 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 120095, - 120095 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 120096, - 120096 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 120097, - 120097 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 120098, - 120098 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 120099, - 120099 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 120100, - 120100 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 120101, - 120101 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 120102, - 120102 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 120103, - 120103 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 120104, - 120104 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 120105, - 120105 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 120106, - 120106 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 120107, - 120107 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 120108, - 120108 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 120109, - 120109 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 120110, - 120110 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 120111, - 120111 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 120112, - 120112 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 120113, - 120113 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 120114, - 120114 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 120115, - 120115 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 120116, - 120116 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 120117, - 120117 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 120118, - 120118 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 120119, - 120119 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 120120, - 120120 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 120121, - 120121 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 120122, - 120122 - ], - "disallowed" - ], - [ - [ - 120123, - 120123 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 120124, - 120124 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 120125, - 120125 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 120126, - 120126 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 120127, - 120127 - ], - "disallowed" - ], - [ - [ - 120128, - 120128 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 120129, - 120129 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 120130, - 120130 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 120131, - 120131 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 120132, - 120132 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 120133, - 120133 - ], - "disallowed" - ], - [ - [ - 120134, - 120134 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 120135, - 120137 - ], - "disallowed" - ], - [ - [ - 120138, - 120138 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 120139, - 120139 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 120140, - 120140 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 120141, - 120141 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 120142, - 120142 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 120143, - 120143 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 120144, - 120144 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 120145, - 120145 - ], - "disallowed" - ], - [ - [ - 120146, - 120146 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 120147, - 120147 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 120148, - 120148 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 120149, - 120149 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 120150, - 120150 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 120151, - 120151 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 120152, - 120152 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 120153, - 120153 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 120154, - 120154 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 120155, - 120155 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 120156, - 120156 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 120157, - 120157 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 120158, - 120158 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 120159, - 120159 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 120160, - 120160 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 120161, - 120161 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 120162, - 120162 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 120163, - 120163 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 120164, - 120164 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 120165, - 120165 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 120166, - 120166 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 120167, - 120167 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 120168, - 120168 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 120169, - 120169 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 120170, - 120170 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 120171, - 120171 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 120172, - 120172 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 120173, - 120173 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 120174, - 120174 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 120175, - 120175 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 120176, - 120176 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 120177, - 120177 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 120178, - 120178 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 120179, - 120179 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 120180, - 120180 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 120181, - 120181 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 120182, - 120182 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 120183, - 120183 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 120184, - 120184 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 120185, - 120185 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 120186, - 120186 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 120187, - 120187 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 120188, - 120188 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 120189, - 120189 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 120190, - 120190 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 120191, - 120191 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 120192, - 120192 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 120193, - 120193 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 120194, - 120194 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 120195, - 120195 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 120196, - 120196 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 120197, - 120197 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 120198, - 120198 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 120199, - 120199 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 120200, - 120200 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 120201, - 120201 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 120202, - 120202 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 120203, - 120203 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 120204, - 120204 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 120205, - 120205 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 120206, - 120206 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 120207, - 120207 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 120208, - 120208 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 120209, - 120209 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 120210, - 120210 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 120211, - 120211 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 120212, - 120212 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 120213, - 120213 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 120214, - 120214 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 120215, - 120215 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 120216, - 120216 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 120217, - 120217 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 120218, - 120218 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 120219, - 120219 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 120220, - 120220 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 120221, - 120221 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 120222, - 120222 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 120223, - 120223 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 120224, - 120224 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 120225, - 120225 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 120226, - 120226 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 120227, - 120227 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 120228, - 120228 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 120229, - 120229 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 120230, - 120230 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 120231, - 120231 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 120232, - 120232 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 120233, - 120233 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 120234, - 120234 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 120235, - 120235 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 120236, - 120236 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 120237, - 120237 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 120238, - 120238 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 120239, - 120239 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 120240, - 120240 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 120241, - 120241 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 120242, - 120242 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 120243, - 120243 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 120244, - 120244 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 120245, - 120245 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 120246, - 120246 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 120247, - 120247 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 120248, - 120248 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 120249, - 120249 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 120250, - 120250 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 120251, - 120251 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 120252, - 120252 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 120253, - 120253 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 120254, - 120254 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 120255, - 120255 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 120256, - 120256 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 120257, - 120257 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 120258, - 120258 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 120259, - 120259 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 120260, - 120260 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 120261, - 120261 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 120262, - 120262 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 120263, - 120263 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 120264, - 120264 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 120265, - 120265 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 120266, - 120266 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 120267, - 120267 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 120268, - 120268 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 120269, - 120269 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 120270, - 120270 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 120271, - 120271 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 120272, - 120272 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 120273, - 120273 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 120274, - 120274 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 120275, - 120275 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 120276, - 120276 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 120277, - 120277 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 120278, - 120278 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 120279, - 120279 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 120280, - 120280 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 120281, - 120281 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 120282, - 120282 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 120283, - 120283 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 120284, - 120284 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 120285, - 120285 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 120286, - 120286 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 120287, - 120287 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 120288, - 120288 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 120289, - 120289 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 120290, - 120290 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 120291, - 120291 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 120292, - 120292 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 120293, - 120293 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 120294, - 120294 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 120295, - 120295 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 120296, - 120296 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 120297, - 120297 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 120298, - 120298 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 120299, - 120299 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 120300, - 120300 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 120301, - 120301 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 120302, - 120302 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 120303, - 120303 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 120304, - 120304 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 120305, - 120305 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 120306, - 120306 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 120307, - 120307 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 120308, - 120308 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 120309, - 120309 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 120310, - 120310 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 120311, - 120311 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 120312, - 120312 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 120313, - 120313 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 120314, - 120314 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 120315, - 120315 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 120316, - 120316 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 120317, - 120317 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 120318, - 120318 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 120319, - 120319 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 120320, - 120320 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 120321, - 120321 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 120322, - 120322 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 120323, - 120323 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 120324, - 120324 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 120325, - 120325 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 120326, - 120326 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 120327, - 120327 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 120328, - 120328 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 120329, - 120329 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 120330, - 120330 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 120331, - 120331 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 120332, - 120332 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 120333, - 120333 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 120334, - 120334 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 120335, - 120335 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 120336, - 120336 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 120337, - 120337 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 120338, - 120338 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 120339, - 120339 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 120340, - 120340 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 120341, - 120341 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 120342, - 120342 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 120343, - 120343 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 120344, - 120344 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 120345, - 120345 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 120346, - 120346 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 120347, - 120347 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 120348, - 120348 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 120349, - 120349 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 120350, - 120350 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 120351, - 120351 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 120352, - 120352 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 120353, - 120353 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 120354, - 120354 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 120355, - 120355 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 120356, - 120356 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 120357, - 120357 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 120358, - 120358 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 120359, - 120359 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 120360, - 120360 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 120361, - 120361 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 120362, - 120362 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 120363, - 120363 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 120364, - 120364 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 120365, - 120365 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 120366, - 120366 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 120367, - 120367 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 120368, - 120368 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 120369, - 120369 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 120370, - 120370 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 120371, - 120371 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 120372, - 120372 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 120373, - 120373 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 120374, - 120374 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 120375, - 120375 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 120376, - 120376 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 120377, - 120377 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 120378, - 120378 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 120379, - 120379 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 120380, - 120380 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 120381, - 120381 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 120382, - 120382 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 120383, - 120383 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 120384, - 120384 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 120385, - 120385 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 120386, - 120386 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 120387, - 120387 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 120388, - 120388 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 120389, - 120389 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 120390, - 120390 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 120391, - 120391 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 120392, - 120392 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 120393, - 120393 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 120394, - 120394 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 120395, - 120395 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 120396, - 120396 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 120397, - 120397 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 120398, - 120398 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 120399, - 120399 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 120400, - 120400 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 120401, - 120401 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 120402, - 120402 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 120403, - 120403 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 120404, - 120404 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 120405, - 120405 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 120406, - 120406 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 120407, - 120407 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 120408, - 120408 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 120409, - 120409 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 120410, - 120410 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 120411, - 120411 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 120412, - 120412 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 120413, - 120413 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 120414, - 120414 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 120415, - 120415 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 120416, - 120416 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 120417, - 120417 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 120418, - 120418 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 120419, - 120419 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 120420, - 120420 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 120421, - 120421 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 120422, - 120422 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 120423, - 120423 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 120424, - 120424 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 120425, - 120425 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 120426, - 120426 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 120427, - 120427 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 120428, - 120428 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 120429, - 120429 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 120430, - 120430 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 120431, - 120431 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 120432, - 120432 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 120433, - 120433 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 120434, - 120434 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 120435, - 120435 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 120436, - 120436 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 120437, - 120437 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 120438, - 120438 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 120439, - 120439 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 120440, - 120440 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 120441, - 120441 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 120442, - 120442 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 120443, - 120443 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 120444, - 120444 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 120445, - 120445 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 120446, - 120446 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 120447, - 120447 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 120448, - 120448 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 120449, - 120449 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 120450, - 120450 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 120451, - 120451 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 120452, - 120452 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 120453, - 120453 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 120454, - 120454 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 120455, - 120455 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 120456, - 120456 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 120457, - 120457 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 120458, - 120458 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 120459, - 120459 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 120460, - 120460 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 120461, - 120461 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 120462, - 120462 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 120463, - 120463 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 120464, - 120464 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 120465, - 120465 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 120466, - 120466 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 120467, - 120467 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 120468, - 120468 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 120469, - 120469 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 120470, - 120470 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 120471, - 120471 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 120472, - 120472 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 120473, - 120473 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 120474, - 120474 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 120475, - 120475 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 120476, - 120476 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 120477, - 120477 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 120478, - 120478 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 120479, - 120479 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 120480, - 120480 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 120481, - 120481 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 120482, - 120482 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 120483, - 120483 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 120484, - 120484 - ], - "mapped", - [ - 305 - ] - ], - [ - [ - 120485, - 120485 - ], - "mapped", - [ - 567 - ] - ], - [ - [ - 120486, - 120487 - ], - "disallowed" - ], - [ - [ - 120488, - 120488 - ], - "mapped", - [ - 945 - ] - ], - [ - [ - 120489, - 120489 - ], - "mapped", - [ - 946 - ] - ], - [ - [ - 120490, - 120490 - ], - "mapped", - [ - 947 - ] - ], - [ - [ - 120491, - 120491 - ], - "mapped", - [ - 948 - ] - ], - [ - [ - 120492, - 120492 - ], - "mapped", - [ - 949 - ] - ], - [ - [ - 120493, - 120493 - ], - "mapped", - [ - 950 - ] - ], - [ - [ - 120494, - 120494 - ], - "mapped", - [ - 951 - ] - ], - [ - [ - 120495, - 120495 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 120496, - 120496 - ], - "mapped", - [ - 953 - ] - ], - [ - [ - 120497, - 120497 - ], - "mapped", - [ - 954 - ] - ], - [ - [ - 120498, - 120498 - ], - "mapped", - [ - 955 - ] - ], - [ - [ - 120499, - 120499 - ], - "mapped", - [ - 956 - ] - ], - [ - [ - 120500, - 120500 - ], - "mapped", - [ - 957 - ] - ], - [ - [ - 120501, - 120501 - ], - "mapped", - [ - 958 - ] - ], - [ - [ - 120502, - 120502 - ], - "mapped", - [ - 959 - ] - ], - [ - [ - 120503, - 120503 - ], - "mapped", - [ - 960 - ] - ], - [ - [ - 120504, - 120504 - ], - "mapped", - [ - 961 - ] - ], - [ - [ - 120505, - 120505 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 120506, - 120506 - ], - "mapped", - [ - 963 - ] - ], - [ - [ - 120507, - 120507 - ], - "mapped", - [ - 964 - ] - ], - [ - [ - 120508, - 120508 - ], - "mapped", - [ - 965 - ] - ], - [ - [ - 120509, - 120509 - ], - "mapped", - [ - 966 - ] - ], - [ - [ - 120510, - 120510 - ], - "mapped", - [ - 967 - ] - ], - [ - [ - 120511, - 120511 - ], - "mapped", - [ - 968 - ] - ], - [ - [ - 120512, - 120512 - ], - "mapped", - [ - 969 - ] - ], - [ - [ - 120513, - 120513 - ], - "mapped", - [ - 8711 - ] - ], - [ - [ - 120514, - 120514 - ], - "mapped", - [ - 945 - ] - ], - [ - [ - 120515, - 120515 - ], - "mapped", - [ - 946 - ] - ], - [ - [ - 120516, - 120516 - ], - "mapped", - [ - 947 - ] - ], - [ - [ - 120517, - 120517 - ], - "mapped", - [ - 948 - ] - ], - [ - [ - 120518, - 120518 - ], - "mapped", - [ - 949 - ] - ], - [ - [ - 120519, - 120519 - ], - "mapped", - [ - 950 - ] - ], - [ - [ - 120520, - 120520 - ], - "mapped", - [ - 951 - ] - ], - [ - [ - 120521, - 120521 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 120522, - 120522 - ], - "mapped", - [ - 953 - ] - ], - [ - [ - 120523, - 120523 - ], - "mapped", - [ - 954 - ] - ], - [ - [ - 120524, - 120524 - ], - "mapped", - [ - 955 - ] - ], - [ - [ - 120525, - 120525 - ], - "mapped", - [ - 956 - ] - ], - [ - [ - 120526, - 120526 - ], - "mapped", - [ - 957 - ] - ], - [ - [ - 120527, - 120527 - ], - "mapped", - [ - 958 - ] - ], - [ - [ - 120528, - 120528 - ], - "mapped", - [ - 959 - ] - ], - [ - [ - 120529, - 120529 - ], - "mapped", - [ - 960 - ] - ], - [ - [ - 120530, - 120530 - ], - "mapped", - [ - 961 - ] - ], - [ - [ - 120531, - 120532 - ], - "mapped", - [ - 963 - ] - ], - [ - [ - 120533, - 120533 - ], - "mapped", - [ - 964 - ] - ], - [ - [ - 120534, - 120534 - ], - "mapped", - [ - 965 - ] - ], - [ - [ - 120535, - 120535 - ], - "mapped", - [ - 966 - ] - ], - [ - [ - 120536, - 120536 - ], - "mapped", - [ - 967 - ] - ], - [ - [ - 120537, - 120537 - ], - "mapped", - [ - 968 - ] - ], - [ - [ - 120538, - 120538 - ], - "mapped", - [ - 969 - ] - ], - [ - [ - 120539, - 120539 - ], - "mapped", - [ - 8706 - ] - ], - [ - [ - 120540, - 120540 - ], - "mapped", - [ - 949 - ] - ], - [ - [ - 120541, - 120541 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 120542, - 120542 - ], - "mapped", - [ - 954 - ] - ], - [ - [ - 120543, - 120543 - ], - "mapped", - [ - 966 - ] - ], - [ - [ - 120544, - 120544 - ], - "mapped", - [ - 961 - ] - ], - [ - [ - 120545, - 120545 - ], - "mapped", - [ - 960 - ] - ], - [ - [ - 120546, - 120546 - ], - "mapped", - [ - 945 - ] - ], - [ - [ - 120547, - 120547 - ], - "mapped", - [ - 946 - ] - ], - [ - [ - 120548, - 120548 - ], - "mapped", - [ - 947 - ] - ], - [ - [ - 120549, - 120549 - ], - "mapped", - [ - 948 - ] - ], - [ - [ - 120550, - 120550 - ], - "mapped", - [ - 949 - ] - ], - [ - [ - 120551, - 120551 - ], - "mapped", - [ - 950 - ] - ], - [ - [ - 120552, - 120552 - ], - "mapped", - [ - 951 - ] - ], - [ - [ - 120553, - 120553 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 120554, - 120554 - ], - "mapped", - [ - 953 - ] - ], - [ - [ - 120555, - 120555 - ], - "mapped", - [ - 954 - ] - ], - [ - [ - 120556, - 120556 - ], - "mapped", - [ - 955 - ] - ], - [ - [ - 120557, - 120557 - ], - "mapped", - [ - 956 - ] - ], - [ - [ - 120558, - 120558 - ], - "mapped", - [ - 957 - ] - ], - [ - [ - 120559, - 120559 - ], - "mapped", - [ - 958 - ] - ], - [ - [ - 120560, - 120560 - ], - "mapped", - [ - 959 - ] - ], - [ - [ - 120561, - 120561 - ], - "mapped", - [ - 960 - ] - ], - [ - [ - 120562, - 120562 - ], - "mapped", - [ - 961 - ] - ], - [ - [ - 120563, - 120563 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 120564, - 120564 - ], - "mapped", - [ - 963 - ] - ], - [ - [ - 120565, - 120565 - ], - "mapped", - [ - 964 - ] - ], - [ - [ - 120566, - 120566 - ], - "mapped", - [ - 965 - ] - ], - [ - [ - 120567, - 120567 - ], - "mapped", - [ - 966 - ] - ], - [ - [ - 120568, - 120568 - ], - "mapped", - [ - 967 - ] - ], - [ - [ - 120569, - 120569 - ], - "mapped", - [ - 968 - ] - ], - [ - [ - 120570, - 120570 - ], - "mapped", - [ - 969 - ] - ], - [ - [ - 120571, - 120571 - ], - "mapped", - [ - 8711 - ] - ], - [ - [ - 120572, - 120572 - ], - "mapped", - [ - 945 - ] - ], - [ - [ - 120573, - 120573 - ], - "mapped", - [ - 946 - ] - ], - [ - [ - 120574, - 120574 - ], - "mapped", - [ - 947 - ] - ], - [ - [ - 120575, - 120575 - ], - "mapped", - [ - 948 - ] - ], - [ - [ - 120576, - 120576 - ], - "mapped", - [ - 949 - ] - ], - [ - [ - 120577, - 120577 - ], - "mapped", - [ - 950 - ] - ], - [ - [ - 120578, - 120578 - ], - "mapped", - [ - 951 - ] - ], - [ - [ - 120579, - 120579 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 120580, - 120580 - ], - "mapped", - [ - 953 - ] - ], - [ - [ - 120581, - 120581 - ], - "mapped", - [ - 954 - ] - ], - [ - [ - 120582, - 120582 - ], - "mapped", - [ - 955 - ] - ], - [ - [ - 120583, - 120583 - ], - "mapped", - [ - 956 - ] - ], - [ - [ - 120584, - 120584 - ], - "mapped", - [ - 957 - ] - ], - [ - [ - 120585, - 120585 - ], - "mapped", - [ - 958 - ] - ], - [ - [ - 120586, - 120586 - ], - "mapped", - [ - 959 - ] - ], - [ - [ - 120587, - 120587 - ], - "mapped", - [ - 960 - ] - ], - [ - [ - 120588, - 120588 - ], - "mapped", - [ - 961 - ] - ], - [ - [ - 120589, - 120590 - ], - "mapped", - [ - 963 - ] - ], - [ - [ - 120591, - 120591 - ], - "mapped", - [ - 964 - ] - ], - [ - [ - 120592, - 120592 - ], - "mapped", - [ - 965 - ] - ], - [ - [ - 120593, - 120593 - ], - "mapped", - [ - 966 - ] - ], - [ - [ - 120594, - 120594 - ], - "mapped", - [ - 967 - ] - ], - [ - [ - 120595, - 120595 - ], - "mapped", - [ - 968 - ] - ], - [ - [ - 120596, - 120596 - ], - "mapped", - [ - 969 - ] - ], - [ - [ - 120597, - 120597 - ], - "mapped", - [ - 8706 - ] - ], - [ - [ - 120598, - 120598 - ], - "mapped", - [ - 949 - ] - ], - [ - [ - 120599, - 120599 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 120600, - 120600 - ], - "mapped", - [ - 954 - ] - ], - [ - [ - 120601, - 120601 - ], - "mapped", - [ - 966 - ] - ], - [ - [ - 120602, - 120602 - ], - "mapped", - [ - 961 - ] - ], - [ - [ - 120603, - 120603 - ], - "mapped", - [ - 960 - ] - ], - [ - [ - 120604, - 120604 - ], - "mapped", - [ - 945 - ] - ], - [ - [ - 120605, - 120605 - ], - "mapped", - [ - 946 - ] - ], - [ - [ - 120606, - 120606 - ], - "mapped", - [ - 947 - ] - ], - [ - [ - 120607, - 120607 - ], - "mapped", - [ - 948 - ] - ], - [ - [ - 120608, - 120608 - ], - "mapped", - [ - 949 - ] - ], - [ - [ - 120609, - 120609 - ], - "mapped", - [ - 950 - ] - ], - [ - [ - 120610, - 120610 - ], - "mapped", - [ - 951 - ] - ], - [ - [ - 120611, - 120611 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 120612, - 120612 - ], - "mapped", - [ - 953 - ] - ], - [ - [ - 120613, - 120613 - ], - "mapped", - [ - 954 - ] - ], - [ - [ - 120614, - 120614 - ], - "mapped", - [ - 955 - ] - ], - [ - [ - 120615, - 120615 - ], - "mapped", - [ - 956 - ] - ], - [ - [ - 120616, - 120616 - ], - "mapped", - [ - 957 - ] - ], - [ - [ - 120617, - 120617 - ], - "mapped", - [ - 958 - ] - ], - [ - [ - 120618, - 120618 - ], - "mapped", - [ - 959 - ] - ], - [ - [ - 120619, - 120619 - ], - "mapped", - [ - 960 - ] - ], - [ - [ - 120620, - 120620 - ], - "mapped", - [ - 961 - ] - ], - [ - [ - 120621, - 120621 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 120622, - 120622 - ], - "mapped", - [ - 963 - ] - ], - [ - [ - 120623, - 120623 - ], - "mapped", - [ - 964 - ] - ], - [ - [ - 120624, - 120624 - ], - "mapped", - [ - 965 - ] - ], - [ - [ - 120625, - 120625 - ], - "mapped", - [ - 966 - ] - ], - [ - [ - 120626, - 120626 - ], - "mapped", - [ - 967 - ] - ], - [ - [ - 120627, - 120627 - ], - "mapped", - [ - 968 - ] - ], - [ - [ - 120628, - 120628 - ], - "mapped", - [ - 969 - ] - ], - [ - [ - 120629, - 120629 - ], - "mapped", - [ - 8711 - ] - ], - [ - [ - 120630, - 120630 - ], - "mapped", - [ - 945 - ] - ], - [ - [ - 120631, - 120631 - ], - "mapped", - [ - 946 - ] - ], - [ - [ - 120632, - 120632 - ], - "mapped", - [ - 947 - ] - ], - [ - [ - 120633, - 120633 - ], - "mapped", - [ - 948 - ] - ], - [ - [ - 120634, - 120634 - ], - "mapped", - [ - 949 - ] - ], - [ - [ - 120635, - 120635 - ], - "mapped", - [ - 950 - ] - ], - [ - [ - 120636, - 120636 - ], - "mapped", - [ - 951 - ] - ], - [ - [ - 120637, - 120637 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 120638, - 120638 - ], - "mapped", - [ - 953 - ] - ], - [ - [ - 120639, - 120639 - ], - "mapped", - [ - 954 - ] - ], - [ - [ - 120640, - 120640 - ], - "mapped", - [ - 955 - ] - ], - [ - [ - 120641, - 120641 - ], - "mapped", - [ - 956 - ] - ], - [ - [ - 120642, - 120642 - ], - "mapped", - [ - 957 - ] - ], - [ - [ - 120643, - 120643 - ], - "mapped", - [ - 958 - ] - ], - [ - [ - 120644, - 120644 - ], - "mapped", - [ - 959 - ] - ], - [ - [ - 120645, - 120645 - ], - "mapped", - [ - 960 - ] - ], - [ - [ - 120646, - 120646 - ], - "mapped", - [ - 961 - ] - ], - [ - [ - 120647, - 120648 - ], - "mapped", - [ - 963 - ] - ], - [ - [ - 120649, - 120649 - ], - "mapped", - [ - 964 - ] - ], - [ - [ - 120650, - 120650 - ], - "mapped", - [ - 965 - ] - ], - [ - [ - 120651, - 120651 - ], - "mapped", - [ - 966 - ] - ], - [ - [ - 120652, - 120652 - ], - "mapped", - [ - 967 - ] - ], - [ - [ - 120653, - 120653 - ], - "mapped", - [ - 968 - ] - ], - [ - [ - 120654, - 120654 - ], - "mapped", - [ - 969 - ] - ], - [ - [ - 120655, - 120655 - ], - "mapped", - [ - 8706 - ] - ], - [ - [ - 120656, - 120656 - ], - "mapped", - [ - 949 - ] - ], - [ - [ - 120657, - 120657 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 120658, - 120658 - ], - "mapped", - [ - 954 - ] - ], - [ - [ - 120659, - 120659 - ], - "mapped", - [ - 966 - ] - ], - [ - [ - 120660, - 120660 - ], - "mapped", - [ - 961 - ] - ], - [ - [ - 120661, - 120661 - ], - "mapped", - [ - 960 - ] - ], - [ - [ - 120662, - 120662 - ], - "mapped", - [ - 945 - ] - ], - [ - [ - 120663, - 120663 - ], - "mapped", - [ - 946 - ] - ], - [ - [ - 120664, - 120664 - ], - "mapped", - [ - 947 - ] - ], - [ - [ - 120665, - 120665 - ], - "mapped", - [ - 948 - ] - ], - [ - [ - 120666, - 120666 - ], - "mapped", - [ - 949 - ] - ], - [ - [ - 120667, - 120667 - ], - "mapped", - [ - 950 - ] - ], - [ - [ - 120668, - 120668 - ], - "mapped", - [ - 951 - ] - ], - [ - [ - 120669, - 120669 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 120670, - 120670 - ], - "mapped", - [ - 953 - ] - ], - [ - [ - 120671, - 120671 - ], - "mapped", - [ - 954 - ] - ], - [ - [ - 120672, - 120672 - ], - "mapped", - [ - 955 - ] - ], - [ - [ - 120673, - 120673 - ], - "mapped", - [ - 956 - ] - ], - [ - [ - 120674, - 120674 - ], - "mapped", - [ - 957 - ] - ], - [ - [ - 120675, - 120675 - ], - "mapped", - [ - 958 - ] - ], - [ - [ - 120676, - 120676 - ], - "mapped", - [ - 959 - ] - ], - [ - [ - 120677, - 120677 - ], - "mapped", - [ - 960 - ] - ], - [ - [ - 120678, - 120678 - ], - "mapped", - [ - 961 - ] - ], - [ - [ - 120679, - 120679 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 120680, - 120680 - ], - "mapped", - [ - 963 - ] - ], - [ - [ - 120681, - 120681 - ], - "mapped", - [ - 964 - ] - ], - [ - [ - 120682, - 120682 - ], - "mapped", - [ - 965 - ] - ], - [ - [ - 120683, - 120683 - ], - "mapped", - [ - 966 - ] - ], - [ - [ - 120684, - 120684 - ], - "mapped", - [ - 967 - ] - ], - [ - [ - 120685, - 120685 - ], - "mapped", - [ - 968 - ] - ], - [ - [ - 120686, - 120686 - ], - "mapped", - [ - 969 - ] - ], - [ - [ - 120687, - 120687 - ], - "mapped", - [ - 8711 - ] - ], - [ - [ - 120688, - 120688 - ], - "mapped", - [ - 945 - ] - ], - [ - [ - 120689, - 120689 - ], - "mapped", - [ - 946 - ] - ], - [ - [ - 120690, - 120690 - ], - "mapped", - [ - 947 - ] - ], - [ - [ - 120691, - 120691 - ], - "mapped", - [ - 948 - ] - ], - [ - [ - 120692, - 120692 - ], - "mapped", - [ - 949 - ] - ], - [ - [ - 120693, - 120693 - ], - "mapped", - [ - 950 - ] - ], - [ - [ - 120694, - 120694 - ], - "mapped", - [ - 951 - ] - ], - [ - [ - 120695, - 120695 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 120696, - 120696 - ], - "mapped", - [ - 953 - ] - ], - [ - [ - 120697, - 120697 - ], - "mapped", - [ - 954 - ] - ], - [ - [ - 120698, - 120698 - ], - "mapped", - [ - 955 - ] - ], - [ - [ - 120699, - 120699 - ], - "mapped", - [ - 956 - ] - ], - [ - [ - 120700, - 120700 - ], - "mapped", - [ - 957 - ] - ], - [ - [ - 120701, - 120701 - ], - "mapped", - [ - 958 - ] - ], - [ - [ - 120702, - 120702 - ], - "mapped", - [ - 959 - ] - ], - [ - [ - 120703, - 120703 - ], - "mapped", - [ - 960 - ] - ], - [ - [ - 120704, - 120704 - ], - "mapped", - [ - 961 - ] - ], - [ - [ - 120705, - 120706 - ], - "mapped", - [ - 963 - ] - ], - [ - [ - 120707, - 120707 - ], - "mapped", - [ - 964 - ] - ], - [ - [ - 120708, - 120708 - ], - "mapped", - [ - 965 - ] - ], - [ - [ - 120709, - 120709 - ], - "mapped", - [ - 966 - ] - ], - [ - [ - 120710, - 120710 - ], - "mapped", - [ - 967 - ] - ], - [ - [ - 120711, - 120711 - ], - "mapped", - [ - 968 - ] - ], - [ - [ - 120712, - 120712 - ], - "mapped", - [ - 969 - ] - ], - [ - [ - 120713, - 120713 - ], - "mapped", - [ - 8706 - ] - ], - [ - [ - 120714, - 120714 - ], - "mapped", - [ - 949 - ] - ], - [ - [ - 120715, - 120715 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 120716, - 120716 - ], - "mapped", - [ - 954 - ] - ], - [ - [ - 120717, - 120717 - ], - "mapped", - [ - 966 - ] - ], - [ - [ - 120718, - 120718 - ], - "mapped", - [ - 961 - ] - ], - [ - [ - 120719, - 120719 - ], - "mapped", - [ - 960 - ] - ], - [ - [ - 120720, - 120720 - ], - "mapped", - [ - 945 - ] - ], - [ - [ - 120721, - 120721 - ], - "mapped", - [ - 946 - ] - ], - [ - [ - 120722, - 120722 - ], - "mapped", - [ - 947 - ] - ], - [ - [ - 120723, - 120723 - ], - "mapped", - [ - 948 - ] - ], - [ - [ - 120724, - 120724 - ], - "mapped", - [ - 949 - ] - ], - [ - [ - 120725, - 120725 - ], - "mapped", - [ - 950 - ] - ], - [ - [ - 120726, - 120726 - ], - "mapped", - [ - 951 - ] - ], - [ - [ - 120727, - 120727 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 120728, - 120728 - ], - "mapped", - [ - 953 - ] - ], - [ - [ - 120729, - 120729 - ], - "mapped", - [ - 954 - ] - ], - [ - [ - 120730, - 120730 - ], - "mapped", - [ - 955 - ] - ], - [ - [ - 120731, - 120731 - ], - "mapped", - [ - 956 - ] - ], - [ - [ - 120732, - 120732 - ], - "mapped", - [ - 957 - ] - ], - [ - [ - 120733, - 120733 - ], - "mapped", - [ - 958 - ] - ], - [ - [ - 120734, - 120734 - ], - "mapped", - [ - 959 - ] - ], - [ - [ - 120735, - 120735 - ], - "mapped", - [ - 960 - ] - ], - [ - [ - 120736, - 120736 - ], - "mapped", - [ - 961 - ] - ], - [ - [ - 120737, - 120737 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 120738, - 120738 - ], - "mapped", - [ - 963 - ] - ], - [ - [ - 120739, - 120739 - ], - "mapped", - [ - 964 - ] - ], - [ - [ - 120740, - 120740 - ], - "mapped", - [ - 965 - ] - ], - [ - [ - 120741, - 120741 - ], - "mapped", - [ - 966 - ] - ], - [ - [ - 120742, - 120742 - ], - "mapped", - [ - 967 - ] - ], - [ - [ - 120743, - 120743 - ], - "mapped", - [ - 968 - ] - ], - [ - [ - 120744, - 120744 - ], - "mapped", - [ - 969 - ] - ], - [ - [ - 120745, - 120745 - ], - "mapped", - [ - 8711 - ] - ], - [ - [ - 120746, - 120746 - ], - "mapped", - [ - 945 - ] - ], - [ - [ - 120747, - 120747 - ], - "mapped", - [ - 946 - ] - ], - [ - [ - 120748, - 120748 - ], - "mapped", - [ - 947 - ] - ], - [ - [ - 120749, - 120749 - ], - "mapped", - [ - 948 - ] - ], - [ - [ - 120750, - 120750 - ], - "mapped", - [ - 949 - ] - ], - [ - [ - 120751, - 120751 - ], - "mapped", - [ - 950 - ] - ], - [ - [ - 120752, - 120752 - ], - "mapped", - [ - 951 - ] - ], - [ - [ - 120753, - 120753 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 120754, - 120754 - ], - "mapped", - [ - 953 - ] - ], - [ - [ - 120755, - 120755 - ], - "mapped", - [ - 954 - ] - ], - [ - [ - 120756, - 120756 - ], - "mapped", - [ - 955 - ] - ], - [ - [ - 120757, - 120757 - ], - "mapped", - [ - 956 - ] - ], - [ - [ - 120758, - 120758 - ], - "mapped", - [ - 957 - ] - ], - [ - [ - 120759, - 120759 - ], - "mapped", - [ - 958 - ] - ], - [ - [ - 120760, - 120760 - ], - "mapped", - [ - 959 - ] - ], - [ - [ - 120761, - 120761 - ], - "mapped", - [ - 960 - ] - ], - [ - [ - 120762, - 120762 - ], - "mapped", - [ - 961 - ] - ], - [ - [ - 120763, - 120764 - ], - "mapped", - [ - 963 - ] - ], - [ - [ - 120765, - 120765 - ], - "mapped", - [ - 964 - ] - ], - [ - [ - 120766, - 120766 - ], - "mapped", - [ - 965 - ] - ], - [ - [ - 120767, - 120767 - ], - "mapped", - [ - 966 - ] - ], - [ - [ - 120768, - 120768 - ], - "mapped", - [ - 967 - ] - ], - [ - [ - 120769, - 120769 - ], - "mapped", - [ - 968 - ] - ], - [ - [ - 120770, - 120770 - ], - "mapped", - [ - 969 - ] - ], - [ - [ - 120771, - 120771 - ], - "mapped", - [ - 8706 - ] - ], - [ - [ - 120772, - 120772 - ], - "mapped", - [ - 949 - ] - ], - [ - [ - 120773, - 120773 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 120774, - 120774 - ], - "mapped", - [ - 954 - ] - ], - [ - [ - 120775, - 120775 - ], - "mapped", - [ - 966 - ] - ], - [ - [ - 120776, - 120776 - ], - "mapped", - [ - 961 - ] - ], - [ - [ - 120777, - 120777 - ], - "mapped", - [ - 960 - ] - ], - [ - [ - 120778, - 120779 - ], - "mapped", - [ - 989 - ] - ], - [ - [ - 120780, - 120781 - ], - "disallowed" - ], - [ - [ - 120782, - 120782 - ], - "mapped", - [ - 48 - ] - ], - [ - [ - 120783, - 120783 - ], - "mapped", - [ - 49 - ] - ], - [ - [ - 120784, - 120784 - ], - "mapped", - [ - 50 - ] - ], - [ - [ - 120785, - 120785 - ], - "mapped", - [ - 51 - ] - ], - [ - [ - 120786, - 120786 - ], - "mapped", - [ - 52 - ] - ], - [ - [ - 120787, - 120787 - ], - "mapped", - [ - 53 - ] - ], - [ - [ - 120788, - 120788 - ], - "mapped", - [ - 54 - ] - ], - [ - [ - 120789, - 120789 - ], - "mapped", - [ - 55 - ] - ], - [ - [ - 120790, - 120790 - ], - "mapped", - [ - 56 - ] - ], - [ - [ - 120791, - 120791 - ], - "mapped", - [ - 57 - ] - ], - [ - [ - 120792, - 120792 - ], - "mapped", - [ - 48 - ] - ], - [ - [ - 120793, - 120793 - ], - "mapped", - [ - 49 - ] - ], - [ - [ - 120794, - 120794 - ], - "mapped", - [ - 50 - ] - ], - [ - [ - 120795, - 120795 - ], - "mapped", - [ - 51 - ] - ], - [ - [ - 120796, - 120796 - ], - "mapped", - [ - 52 - ] - ], - [ - [ - 120797, - 120797 - ], - "mapped", - [ - 53 - ] - ], - [ - [ - 120798, - 120798 - ], - "mapped", - [ - 54 - ] - ], - [ - [ - 120799, - 120799 - ], - "mapped", - [ - 55 - ] - ], - [ - [ - 120800, - 120800 - ], - "mapped", - [ - 56 - ] - ], - [ - [ - 120801, - 120801 - ], - "mapped", - [ - 57 - ] - ], - [ - [ - 120802, - 120802 - ], - "mapped", - [ - 48 - ] - ], - [ - [ - 120803, - 120803 - ], - "mapped", - [ - 49 - ] - ], - [ - [ - 120804, - 120804 - ], - "mapped", - [ - 50 - ] - ], - [ - [ - 120805, - 120805 - ], - "mapped", - [ - 51 - ] - ], - [ - [ - 120806, - 120806 - ], - "mapped", - [ - 52 - ] - ], - [ - [ - 120807, - 120807 - ], - "mapped", - [ - 53 - ] - ], - [ - [ - 120808, - 120808 - ], - "mapped", - [ - 54 - ] - ], - [ - [ - 120809, - 120809 - ], - "mapped", - [ - 55 - ] - ], - [ - [ - 120810, - 120810 - ], - "mapped", - [ - 56 - ] - ], - [ - [ - 120811, - 120811 - ], - "mapped", - [ - 57 - ] - ], - [ - [ - 120812, - 120812 - ], - "mapped", - [ - 48 - ] - ], - [ - [ - 120813, - 120813 - ], - "mapped", - [ - 49 - ] - ], - [ - [ - 120814, - 120814 - ], - "mapped", - [ - 50 - ] - ], - [ - [ - 120815, - 120815 - ], - "mapped", - [ - 51 - ] - ], - [ - [ - 120816, - 120816 - ], - "mapped", - [ - 52 - ] - ], - [ - [ - 120817, - 120817 - ], - "mapped", - [ - 53 - ] - ], - [ - [ - 120818, - 120818 - ], - "mapped", - [ - 54 - ] - ], - [ - [ - 120819, - 120819 - ], - "mapped", - [ - 55 - ] - ], - [ - [ - 120820, - 120820 - ], - "mapped", - [ - 56 - ] - ], - [ - [ - 120821, - 120821 - ], - "mapped", - [ - 57 - ] - ], - [ - [ - 120822, - 120822 - ], - "mapped", - [ - 48 - ] - ], - [ - [ - 120823, - 120823 - ], - "mapped", - [ - 49 - ] - ], - [ - [ - 120824, - 120824 - ], - "mapped", - [ - 50 - ] - ], - [ - [ - 120825, - 120825 - ], - "mapped", - [ - 51 - ] - ], - [ - [ - 120826, - 120826 - ], - "mapped", - [ - 52 - ] - ], - [ - [ - 120827, - 120827 - ], - "mapped", - [ - 53 - ] - ], - [ - [ - 120828, - 120828 - ], - "mapped", - [ - 54 - ] - ], - [ - [ - 120829, - 120829 - ], - "mapped", - [ - 55 - ] - ], - [ - [ - 120830, - 120830 - ], - "mapped", - [ - 56 - ] - ], - [ - [ - 120831, - 120831 - ], - "mapped", - [ - 57 - ] - ], - [ - [ - 120832, - 121343 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 121344, - 121398 - ], - "valid" - ], - [ - [ - 121399, - 121402 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 121403, - 121452 - ], - "valid" - ], - [ - [ - 121453, - 121460 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 121461, - 121461 - ], - "valid" - ], - [ - [ - 121462, - 121475 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 121476, - 121476 - ], - "valid" - ], - [ - [ - 121477, - 121483 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 121484, - 121498 - ], - "disallowed" - ], - [ - [ - 121499, - 121503 - ], - "valid" - ], - [ - [ - 121504, - 121504 - ], - "disallowed" - ], - [ - [ - 121505, - 121519 - ], - "valid" - ], - [ - [ - 121520, - 124927 - ], - "disallowed" - ], - [ - [ - 124928, - 125124 - ], - "valid" - ], - [ - [ - 125125, - 125126 - ], - "disallowed" - ], - [ - [ - 125127, - 125135 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 125136, - 125142 - ], - "valid" - ], - [ - [ - 125143, - 126463 - ], - "disallowed" - ], - [ - [ - 126464, - 126464 - ], - "mapped", - [ - 1575 - ] - ], - [ - [ - 126465, - 126465 - ], - "mapped", - [ - 1576 - ] - ], - [ - [ - 126466, - 126466 - ], - "mapped", - [ - 1580 - ] - ], - [ - [ - 126467, - 126467 - ], - "mapped", - [ - 1583 - ] - ], - [ - [ - 126468, - 126468 - ], - "disallowed" - ], - [ - [ - 126469, - 126469 - ], - "mapped", - [ - 1608 - ] - ], - [ - [ - 126470, - 126470 - ], - "mapped", - [ - 1586 - ] - ], - [ - [ - 126471, - 126471 - ], - "mapped", - [ - 1581 - ] - ], - [ - [ - 126472, - 126472 - ], - "mapped", - [ - 1591 - ] - ], - [ - [ - 126473, - 126473 - ], - "mapped", - [ - 1610 - ] - ], - [ - [ - 126474, - 126474 - ], - "mapped", - [ - 1603 - ] - ], - [ - [ - 126475, - 126475 - ], - "mapped", - [ - 1604 - ] - ], - [ - [ - 126476, - 126476 - ], - "mapped", - [ - 1605 - ] - ], - [ - [ - 126477, - 126477 - ], - "mapped", - [ - 1606 - ] - ], - [ - [ - 126478, - 126478 - ], - "mapped", - [ - 1587 - ] - ], - [ - [ - 126479, - 126479 - ], - "mapped", - [ - 1593 - ] - ], - [ - [ - 126480, - 126480 - ], - "mapped", - [ - 1601 - ] - ], - [ - [ - 126481, - 126481 - ], - "mapped", - [ - 1589 - ] - ], - [ - [ - 126482, - 126482 - ], - "mapped", - [ - 1602 - ] - ], - [ - [ - 126483, - 126483 - ], - "mapped", - [ - 1585 - ] - ], - [ - [ - 126484, - 126484 - ], - "mapped", - [ - 1588 - ] - ], - [ - [ - 126485, - 126485 - ], - "mapped", - [ - 1578 - ] - ], - [ - [ - 126486, - 126486 - ], - "mapped", - [ - 1579 - ] - ], - [ - [ - 126487, - 126487 - ], - "mapped", - [ - 1582 - ] - ], - [ - [ - 126488, - 126488 - ], - "mapped", - [ - 1584 - ] - ], - [ - [ - 126489, - 126489 - ], - "mapped", - [ - 1590 - ] - ], - [ - [ - 126490, - 126490 - ], - "mapped", - [ - 1592 - ] - ], - [ - [ - 126491, - 126491 - ], - "mapped", - [ - 1594 - ] - ], - [ - [ - 126492, - 126492 - ], - "mapped", - [ - 1646 - ] - ], - [ - [ - 126493, - 126493 - ], - "mapped", - [ - 1722 - ] - ], - [ - [ - 126494, - 126494 - ], - "mapped", - [ - 1697 - ] - ], - [ - [ - 126495, - 126495 - ], - "mapped", - [ - 1647 - ] - ], - [ - [ - 126496, - 126496 - ], - "disallowed" - ], - [ - [ - 126497, - 126497 - ], - "mapped", - [ - 1576 - ] - ], - [ - [ - 126498, - 126498 - ], - "mapped", - [ - 1580 - ] - ], - [ - [ - 126499, - 126499 - ], - "disallowed" - ], - [ - [ - 126500, - 126500 - ], - "mapped", - [ - 1607 - ] - ], - [ - [ - 126501, - 126502 - ], - "disallowed" - ], - [ - [ - 126503, - 126503 - ], - "mapped", - [ - 1581 - ] - ], - [ - [ - 126504, - 126504 - ], - "disallowed" - ], - [ - [ - 126505, - 126505 - ], - "mapped", - [ - 1610 - ] - ], - [ - [ - 126506, - 126506 - ], - "mapped", - [ - 1603 - ] - ], - [ - [ - 126507, - 126507 - ], - "mapped", - [ - 1604 - ] - ], - [ - [ - 126508, - 126508 - ], - "mapped", - [ - 1605 - ] - ], - [ - [ - 126509, - 126509 - ], - "mapped", - [ - 1606 - ] - ], - [ - [ - 126510, - 126510 - ], - "mapped", - [ - 1587 - ] - ], - [ - [ - 126511, - 126511 - ], - "mapped", - [ - 1593 - ] - ], - [ - [ - 126512, - 126512 - ], - "mapped", - [ - 1601 - ] - ], - [ - [ - 126513, - 126513 - ], - "mapped", - [ - 1589 - ] - ], - [ - [ - 126514, - 126514 - ], - "mapped", - [ - 1602 - ] - ], - [ - [ - 126515, - 126515 - ], - "disallowed" - ], - [ - [ - 126516, - 126516 - ], - "mapped", - [ - 1588 - ] - ], - [ - [ - 126517, - 126517 - ], - "mapped", - [ - 1578 - ] - ], - [ - [ - 126518, - 126518 - ], - "mapped", - [ - 1579 - ] - ], - [ - [ - 126519, - 126519 - ], - "mapped", - [ - 1582 - ] - ], - [ - [ - 126520, - 126520 - ], - "disallowed" - ], - [ - [ - 126521, - 126521 - ], - "mapped", - [ - 1590 - ] - ], - [ - [ - 126522, - 126522 - ], - "disallowed" - ], - [ - [ - 126523, - 126523 - ], - "mapped", - [ - 1594 - ] - ], - [ - [ - 126524, - 126529 - ], - "disallowed" - ], - [ - [ - 126530, - 126530 - ], - "mapped", - [ - 1580 - ] - ], - [ - [ - 126531, - 126534 - ], - "disallowed" - ], - [ - [ - 126535, - 126535 - ], - "mapped", - [ - 1581 - ] - ], - [ - [ - 126536, - 126536 - ], - "disallowed" - ], - [ - [ - 126537, - 126537 - ], - "mapped", - [ - 1610 - ] - ], - [ - [ - 126538, - 126538 - ], - "disallowed" - ], - [ - [ - 126539, - 126539 - ], - "mapped", - [ - 1604 - ] - ], - [ - [ - 126540, - 126540 - ], - "disallowed" - ], - [ - [ - 126541, - 126541 - ], - "mapped", - [ - 1606 - ] - ], - [ - [ - 126542, - 126542 - ], - "mapped", - [ - 1587 - ] - ], - [ - [ - 126543, - 126543 - ], - "mapped", - [ - 1593 - ] - ], - [ - [ - 126544, - 126544 - ], - "disallowed" - ], - [ - [ - 126545, - 126545 - ], - "mapped", - [ - 1589 - ] - ], - [ - [ - 126546, - 126546 - ], - "mapped", - [ - 1602 - ] - ], - [ - [ - 126547, - 126547 - ], - "disallowed" - ], - [ - [ - 126548, - 126548 - ], - "mapped", - [ - 1588 - ] - ], - [ - [ - 126549, - 126550 - ], - "disallowed" - ], - [ - [ - 126551, - 126551 - ], - "mapped", - [ - 1582 - ] - ], - [ - [ - 126552, - 126552 - ], - "disallowed" - ], - [ - [ - 126553, - 126553 - ], - "mapped", - [ - 1590 - ] - ], - [ - [ - 126554, - 126554 - ], - "disallowed" - ], - [ - [ - 126555, - 126555 - ], - "mapped", - [ - 1594 - ] - ], - [ - [ - 126556, - 126556 - ], - "disallowed" - ], - [ - [ - 126557, - 126557 - ], - "mapped", - [ - 1722 - ] - ], - [ - [ - 126558, - 126558 - ], - "disallowed" - ], - [ - [ - 126559, - 126559 - ], - "mapped", - [ - 1647 - ] - ], - [ - [ - 126560, - 126560 - ], - "disallowed" - ], - [ - [ - 126561, - 126561 - ], - "mapped", - [ - 1576 - ] - ], - [ - [ - 126562, - 126562 - ], - "mapped", - [ - 1580 - ] - ], - [ - [ - 126563, - 126563 - ], - "disallowed" - ], - [ - [ - 126564, - 126564 - ], - "mapped", - [ - 1607 - ] - ], - [ - [ - 126565, - 126566 - ], - "disallowed" - ], - [ - [ - 126567, - 126567 - ], - "mapped", - [ - 1581 - ] - ], - [ - [ - 126568, - 126568 - ], - "mapped", - [ - 1591 - ] - ], - [ - [ - 126569, - 126569 - ], - "mapped", - [ - 1610 - ] - ], - [ - [ - 126570, - 126570 - ], - "mapped", - [ - 1603 - ] - ], - [ - [ - 126571, - 126571 - ], - "disallowed" - ], - [ - [ - 126572, - 126572 - ], - "mapped", - [ - 1605 - ] - ], - [ - [ - 126573, - 126573 - ], - "mapped", - [ - 1606 - ] - ], - [ - [ - 126574, - 126574 - ], - "mapped", - [ - 1587 - ] - ], - [ - [ - 126575, - 126575 - ], - "mapped", - [ - 1593 - ] - ], - [ - [ - 126576, - 126576 - ], - "mapped", - [ - 1601 - ] - ], - [ - [ - 126577, - 126577 - ], - "mapped", - [ - 1589 - ] - ], - [ - [ - 126578, - 126578 - ], - "mapped", - [ - 1602 - ] - ], - [ - [ - 126579, - 126579 - ], - "disallowed" - ], - [ - [ - 126580, - 126580 - ], - "mapped", - [ - 1588 - ] - ], - [ - [ - 126581, - 126581 - ], - "mapped", - [ - 1578 - ] - ], - [ - [ - 126582, - 126582 - ], - "mapped", - [ - 1579 - ] - ], - [ - [ - 126583, - 126583 - ], - "mapped", - [ - 1582 - ] - ], - [ - [ - 126584, - 126584 - ], - "disallowed" - ], - [ - [ - 126585, - 126585 - ], - "mapped", - [ - 1590 - ] - ], - [ - [ - 126586, - 126586 - ], - "mapped", - [ - 1592 - ] - ], - [ - [ - 126587, - 126587 - ], - "mapped", - [ - 1594 - ] - ], - [ - [ - 126588, - 126588 - ], - "mapped", - [ - 1646 - ] - ], - [ - [ - 126589, - 126589 - ], - "disallowed" - ], - [ - [ - 126590, - 126590 - ], - "mapped", - [ - 1697 - ] - ], - [ - [ - 126591, - 126591 - ], - "disallowed" - ], - [ - [ - 126592, - 126592 - ], - "mapped", - [ - 1575 - ] - ], - [ - [ - 126593, - 126593 - ], - "mapped", - [ - 1576 - ] - ], - [ - [ - 126594, - 126594 - ], - "mapped", - [ - 1580 - ] - ], - [ - [ - 126595, - 126595 - ], - "mapped", - [ - 1583 - ] - ], - [ - [ - 126596, - 126596 - ], - "mapped", - [ - 1607 - ] - ], - [ - [ - 126597, - 126597 - ], - "mapped", - [ - 1608 - ] - ], - [ - [ - 126598, - 126598 - ], - "mapped", - [ - 1586 - ] - ], - [ - [ - 126599, - 126599 - ], - "mapped", - [ - 1581 - ] - ], - [ - [ - 126600, - 126600 - ], - "mapped", - [ - 1591 - ] - ], - [ - [ - 126601, - 126601 - ], - "mapped", - [ - 1610 - ] - ], - [ - [ - 126602, - 126602 - ], - "disallowed" - ], - [ - [ - 126603, - 126603 - ], - "mapped", - [ - 1604 - ] - ], - [ - [ - 126604, - 126604 - ], - "mapped", - [ - 1605 - ] - ], - [ - [ - 126605, - 126605 - ], - "mapped", - [ - 1606 - ] - ], - [ - [ - 126606, - 126606 - ], - "mapped", - [ - 1587 - ] - ], - [ - [ - 126607, - 126607 - ], - "mapped", - [ - 1593 - ] - ], - [ - [ - 126608, - 126608 - ], - "mapped", - [ - 1601 - ] - ], - [ - [ - 126609, - 126609 - ], - "mapped", - [ - 1589 - ] - ], - [ - [ - 126610, - 126610 - ], - "mapped", - [ - 1602 - ] - ], - [ - [ - 126611, - 126611 - ], - "mapped", - [ - 1585 - ] - ], - [ - [ - 126612, - 126612 - ], - "mapped", - [ - 1588 - ] - ], - [ - [ - 126613, - 126613 - ], - "mapped", - [ - 1578 - ] - ], - [ - [ - 126614, - 126614 - ], - "mapped", - [ - 1579 - ] - ], - [ - [ - 126615, - 126615 - ], - "mapped", - [ - 1582 - ] - ], - [ - [ - 126616, - 126616 - ], - "mapped", - [ - 1584 - ] - ], - [ - [ - 126617, - 126617 - ], - "mapped", - [ - 1590 - ] - ], - [ - [ - 126618, - 126618 - ], - "mapped", - [ - 1592 - ] - ], - [ - [ - 126619, - 126619 - ], - "mapped", - [ - 1594 - ] - ], - [ - [ - 126620, - 126624 - ], - "disallowed" - ], - [ - [ - 126625, - 126625 - ], - "mapped", - [ - 1576 - ] - ], - [ - [ - 126626, - 126626 - ], - "mapped", - [ - 1580 - ] - ], - [ - [ - 126627, - 126627 - ], - "mapped", - [ - 1583 - ] - ], - [ - [ - 126628, - 126628 - ], - "disallowed" - ], - [ - [ - 126629, - 126629 - ], - "mapped", - [ - 1608 - ] - ], - [ - [ - 126630, - 126630 - ], - "mapped", - [ - 1586 - ] - ], - [ - [ - 126631, - 126631 - ], - "mapped", - [ - 1581 - ] - ], - [ - [ - 126632, - 126632 - ], - "mapped", - [ - 1591 - ] - ], - [ - [ - 126633, - 126633 - ], - "mapped", - [ - 1610 - ] - ], - [ - [ - 126634, - 126634 - ], - "disallowed" - ], - [ - [ - 126635, - 126635 - ], - "mapped", - [ - 1604 - ] - ], - [ - [ - 126636, - 126636 - ], - "mapped", - [ - 1605 - ] - ], - [ - [ - 126637, - 126637 - ], - "mapped", - [ - 1606 - ] - ], - [ - [ - 126638, - 126638 - ], - "mapped", - [ - 1587 - ] - ], - [ - [ - 126639, - 126639 - ], - "mapped", - [ - 1593 - ] - ], - [ - [ - 126640, - 126640 - ], - "mapped", - [ - 1601 - ] - ], - [ - [ - 126641, - 126641 - ], - "mapped", - [ - 1589 - ] - ], - [ - [ - 126642, - 126642 - ], - "mapped", - [ - 1602 - ] - ], - [ - [ - 126643, - 126643 - ], - "mapped", - [ - 1585 - ] - ], - [ - [ - 126644, - 126644 - ], - "mapped", - [ - 1588 - ] - ], - [ - [ - 126645, - 126645 - ], - "mapped", - [ - 1578 - ] - ], - [ - [ - 126646, - 126646 - ], - "mapped", - [ - 1579 - ] - ], - [ - [ - 126647, - 126647 - ], - "mapped", - [ - 1582 - ] - ], - [ - [ - 126648, - 126648 - ], - "mapped", - [ - 1584 - ] - ], - [ - [ - 126649, - 126649 - ], - "mapped", - [ - 1590 - ] - ], - [ - [ - 126650, - 126650 - ], - "mapped", - [ - 1592 - ] - ], - [ - [ - 126651, - 126651 - ], - "mapped", - [ - 1594 - ] - ], - [ - [ - 126652, - 126703 - ], - "disallowed" - ], - [ - [ - 126704, - 126705 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 126706, - 126975 - ], - "disallowed" - ], - [ - [ - 126976, - 127019 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127020, - 127023 - ], - "disallowed" - ], - [ - [ - 127024, - 127123 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127124, - 127135 - ], - "disallowed" - ], - [ - [ - 127136, - 127150 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127151, - 127152 - ], - "disallowed" - ], - [ - [ - 127153, - 127166 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127167, - 127167 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127168, - 127168 - ], - "disallowed" - ], - [ - [ - 127169, - 127183 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127184, - 127184 - ], - "disallowed" - ], - [ - [ - 127185, - 127199 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127200, - 127221 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127222, - 127231 - ], - "disallowed" - ], - [ - [ - 127232, - 127232 - ], - "disallowed" - ], - [ - [ - 127233, - 127233 - ], - "disallowed_STD3_mapped", - [ - 48, - 44 - ] - ], - [ - [ - 127234, - 127234 - ], - "disallowed_STD3_mapped", - [ - 49, - 44 - ] - ], - [ - [ - 127235, - 127235 - ], - "disallowed_STD3_mapped", - [ - 50, - 44 - ] - ], - [ - [ - 127236, - 127236 - ], - "disallowed_STD3_mapped", - [ - 51, - 44 - ] - ], - [ - [ - 127237, - 127237 - ], - "disallowed_STD3_mapped", - [ - 52, - 44 - ] - ], - [ - [ - 127238, - 127238 - ], - "disallowed_STD3_mapped", - [ - 53, - 44 - ] - ], - [ - [ - 127239, - 127239 - ], - "disallowed_STD3_mapped", - [ - 54, - 44 - ] - ], - [ - [ - 127240, - 127240 - ], - "disallowed_STD3_mapped", - [ - 55, - 44 - ] - ], - [ - [ - 127241, - 127241 - ], - "disallowed_STD3_mapped", - [ - 56, - 44 - ] - ], - [ - [ - 127242, - 127242 - ], - "disallowed_STD3_mapped", - [ - 57, - 44 - ] - ], - [ - [ - 127243, - 127244 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127245, - 127247 - ], - "disallowed" - ], - [ - [ - 127248, - 127248 - ], - "disallowed_STD3_mapped", - [ - 40, - 97, - 41 - ] - ], - [ - [ - 127249, - 127249 - ], - "disallowed_STD3_mapped", - [ - 40, - 98, - 41 - ] - ], - [ - [ - 127250, - 127250 - ], - "disallowed_STD3_mapped", - [ - 40, - 99, - 41 - ] - ], - [ - [ - 127251, - 127251 - ], - "disallowed_STD3_mapped", - [ - 40, - 100, - 41 - ] - ], - [ - [ - 127252, - 127252 - ], - "disallowed_STD3_mapped", - [ - 40, - 101, - 41 - ] - ], - [ - [ - 127253, - 127253 - ], - "disallowed_STD3_mapped", - [ - 40, - 102, - 41 - ] - ], - [ - [ - 127254, - 127254 - ], - "disallowed_STD3_mapped", - [ - 40, - 103, - 41 - ] - ], - [ - [ - 127255, - 127255 - ], - "disallowed_STD3_mapped", - [ - 40, - 104, - 41 - ] - ], - [ - [ - 127256, - 127256 - ], - "disallowed_STD3_mapped", - [ - 40, - 105, - 41 - ] - ], - [ - [ - 127257, - 127257 - ], - "disallowed_STD3_mapped", - [ - 40, - 106, - 41 - ] - ], - [ - [ - 127258, - 127258 - ], - "disallowed_STD3_mapped", - [ - 40, - 107, - 41 - ] - ], - [ - [ - 127259, - 127259 - ], - "disallowed_STD3_mapped", - [ - 40, - 108, - 41 - ] - ], - [ - [ - 127260, - 127260 - ], - "disallowed_STD3_mapped", - [ - 40, - 109, - 41 - ] - ], - [ - [ - 127261, - 127261 - ], - "disallowed_STD3_mapped", - [ - 40, - 110, - 41 - ] - ], - [ - [ - 127262, - 127262 - ], - "disallowed_STD3_mapped", - [ - 40, - 111, - 41 - ] - ], - [ - [ - 127263, - 127263 - ], - "disallowed_STD3_mapped", - [ - 40, - 112, - 41 - ] - ], - [ - [ - 127264, - 127264 - ], - "disallowed_STD3_mapped", - [ - 40, - 113, - 41 - ] - ], - [ - [ - 127265, - 127265 - ], - "disallowed_STD3_mapped", - [ - 40, - 114, - 41 - ] - ], - [ - [ - 127266, - 127266 - ], - "disallowed_STD3_mapped", - [ - 40, - 115, - 41 - ] - ], - [ - [ - 127267, - 127267 - ], - "disallowed_STD3_mapped", - [ - 40, - 116, - 41 - ] - ], - [ - [ - 127268, - 127268 - ], - "disallowed_STD3_mapped", - [ - 40, - 117, - 41 - ] - ], - [ - [ - 127269, - 127269 - ], - "disallowed_STD3_mapped", - [ - 40, - 118, - 41 - ] - ], - [ - [ - 127270, - 127270 - ], - "disallowed_STD3_mapped", - [ - 40, - 119, - 41 - ] - ], - [ - [ - 127271, - 127271 - ], - "disallowed_STD3_mapped", - [ - 40, - 120, - 41 - ] - ], - [ - [ - 127272, - 127272 - ], - "disallowed_STD3_mapped", - [ - 40, - 121, - 41 - ] - ], - [ - [ - 127273, - 127273 - ], - "disallowed_STD3_mapped", - [ - 40, - 122, - 41 - ] - ], - [ - [ - 127274, - 127274 - ], - "mapped", - [ - 12308, - 115, - 12309 - ] - ], - [ - [ - 127275, - 127275 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 127276, - 127276 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 127277, - 127277 - ], - "mapped", - [ - 99, - 100 - ] - ], - [ - [ - 127278, - 127278 - ], - "mapped", - [ - 119, - 122 - ] - ], - [ - [ - 127279, - 127279 - ], - "disallowed" - ], - [ - [ - 127280, - 127280 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 127281, - 127281 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 127282, - 127282 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 127283, - 127283 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 127284, - 127284 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 127285, - 127285 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 127286, - 127286 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 127287, - 127287 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 127288, - 127288 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 127289, - 127289 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 127290, - 127290 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 127291, - 127291 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 127292, - 127292 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 127293, - 127293 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 127294, - 127294 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 127295, - 127295 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 127296, - 127296 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 127297, - 127297 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 127298, - 127298 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 127299, - 127299 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 127300, - 127300 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 127301, - 127301 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 127302, - 127302 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 127303, - 127303 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 127304, - 127304 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 127305, - 127305 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 127306, - 127306 - ], - "mapped", - [ - 104, - 118 - ] - ], - [ - [ - 127307, - 127307 - ], - "mapped", - [ - 109, - 118 - ] - ], - [ - [ - 127308, - 127308 - ], - "mapped", - [ - 115, - 100 - ] - ], - [ - [ - 127309, - 127309 - ], - "mapped", - [ - 115, - 115 - ] - ], - [ - [ - 127310, - 127310 - ], - "mapped", - [ - 112, - 112, - 118 - ] - ], - [ - [ - 127311, - 127311 - ], - "mapped", - [ - 119, - 99 - ] - ], - [ - [ - 127312, - 127318 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127319, - 127319 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127320, - 127326 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127327, - 127327 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127328, - 127337 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127338, - 127338 - ], - "mapped", - [ - 109, - 99 - ] - ], - [ - [ - 127339, - 127339 - ], - "mapped", - [ - 109, - 100 - ] - ], - [ - [ - 127340, - 127343 - ], - "disallowed" - ], - [ - [ - 127344, - 127352 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127353, - 127353 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127354, - 127354 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127355, - 127356 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127357, - 127358 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127359, - 127359 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127360, - 127369 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127370, - 127373 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127374, - 127375 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127376, - 127376 - ], - "mapped", - [ - 100, - 106 - ] - ], - [ - [ - 127377, - 127386 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127387, - 127461 - ], - "disallowed" - ], - [ - [ - 127462, - 127487 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127488, - 127488 - ], - "mapped", - [ - 12411, - 12363 - ] - ], - [ - [ - 127489, - 127489 - ], - "mapped", - [ - 12467, - 12467 - ] - ], - [ - [ - 127490, - 127490 - ], - "mapped", - [ - 12469 - ] - ], - [ - [ - 127491, - 127503 - ], - "disallowed" - ], - [ - [ - 127504, - 127504 - ], - "mapped", - [ - 25163 - ] - ], - [ - [ - 127505, - 127505 - ], - "mapped", - [ - 23383 - ] - ], - [ - [ - 127506, - 127506 - ], - "mapped", - [ - 21452 - ] - ], - [ - [ - 127507, - 127507 - ], - "mapped", - [ - 12487 - ] - ], - [ - [ - 127508, - 127508 - ], - "mapped", - [ - 20108 - ] - ], - [ - [ - 127509, - 127509 - ], - "mapped", - [ - 22810 - ] - ], - [ - [ - 127510, - 127510 - ], - "mapped", - [ - 35299 - ] - ], - [ - [ - 127511, - 127511 - ], - "mapped", - [ - 22825 - ] - ], - [ - [ - 127512, - 127512 - ], - "mapped", - [ - 20132 - ] - ], - [ - [ - 127513, - 127513 - ], - "mapped", - [ - 26144 - ] - ], - [ - [ - 127514, - 127514 - ], - "mapped", - [ - 28961 - ] - ], - [ - [ - 127515, - 127515 - ], - "mapped", - [ - 26009 - ] - ], - [ - [ - 127516, - 127516 - ], - "mapped", - [ - 21069 - ] - ], - [ - [ - 127517, - 127517 - ], - "mapped", - [ - 24460 - ] - ], - [ - [ - 127518, - 127518 - ], - "mapped", - [ - 20877 - ] - ], - [ - [ - 127519, - 127519 - ], - "mapped", - [ - 26032 - ] - ], - [ - [ - 127520, - 127520 - ], - "mapped", - [ - 21021 - ] - ], - [ - [ - 127521, - 127521 - ], - "mapped", - [ - 32066 - ] - ], - [ - [ - 127522, - 127522 - ], - "mapped", - [ - 29983 - ] - ], - [ - [ - 127523, - 127523 - ], - "mapped", - [ - 36009 - ] - ], - [ - [ - 127524, - 127524 - ], - "mapped", - [ - 22768 - ] - ], - [ - [ - 127525, - 127525 - ], - "mapped", - [ - 21561 - ] - ], - [ - [ - 127526, - 127526 - ], - "mapped", - [ - 28436 - ] - ], - [ - [ - 127527, - 127527 - ], - "mapped", - [ - 25237 - ] - ], - [ - [ - 127528, - 127528 - ], - "mapped", - [ - 25429 - ] - ], - [ - [ - 127529, - 127529 - ], - "mapped", - [ - 19968 - ] - ], - [ - [ - 127530, - 127530 - ], - "mapped", - [ - 19977 - ] - ], - [ - [ - 127531, - 127531 - ], - "mapped", - [ - 36938 - ] - ], - [ - [ - 127532, - 127532 - ], - "mapped", - [ - 24038 - ] - ], - [ - [ - 127533, - 127533 - ], - "mapped", - [ - 20013 - ] - ], - [ - [ - 127534, - 127534 - ], - "mapped", - [ - 21491 - ] - ], - [ - [ - 127535, - 127535 - ], - "mapped", - [ - 25351 - ] - ], - [ - [ - 127536, - 127536 - ], - "mapped", - [ - 36208 - ] - ], - [ - [ - 127537, - 127537 - ], - "mapped", - [ - 25171 - ] - ], - [ - [ - 127538, - 127538 - ], - "mapped", - [ - 31105 - ] - ], - [ - [ - 127539, - 127539 - ], - "mapped", - [ - 31354 - ] - ], - [ - [ - 127540, - 127540 - ], - "mapped", - [ - 21512 - ] - ], - [ - [ - 127541, - 127541 - ], - "mapped", - [ - 28288 - ] - ], - [ - [ - 127542, - 127542 - ], - "mapped", - [ - 26377 - ] - ], - [ - [ - 127543, - 127543 - ], - "mapped", - [ - 26376 - ] - ], - [ - [ - 127544, - 127544 - ], - "mapped", - [ - 30003 - ] - ], - [ - [ - 127545, - 127545 - ], - "mapped", - [ - 21106 - ] - ], - [ - [ - 127546, - 127546 - ], - "mapped", - [ - 21942 - ] - ], - [ - [ - 127547, - 127551 - ], - "disallowed" - ], - [ - [ - 127552, - 127552 - ], - "mapped", - [ - 12308, - 26412, - 12309 - ] - ], - [ - [ - 127553, - 127553 - ], - "mapped", - [ - 12308, - 19977, - 12309 - ] - ], - [ - [ - 127554, - 127554 - ], - "mapped", - [ - 12308, - 20108, - 12309 - ] - ], - [ - [ - 127555, - 127555 - ], - "mapped", - [ - 12308, - 23433, - 12309 - ] - ], - [ - [ - 127556, - 127556 - ], - "mapped", - [ - 12308, - 28857, - 12309 - ] - ], - [ - [ - 127557, - 127557 - ], - "mapped", - [ - 12308, - 25171, - 12309 - ] - ], - [ - [ - 127558, - 127558 - ], - "mapped", - [ - 12308, - 30423, - 12309 - ] - ], - [ - [ - 127559, - 127559 - ], - "mapped", - [ - 12308, - 21213, - 12309 - ] - ], - [ - [ - 127560, - 127560 - ], - "mapped", - [ - 12308, - 25943, - 12309 - ] - ], - [ - [ - 127561, - 127567 - ], - "disallowed" - ], - [ - [ - 127568, - 127568 - ], - "mapped", - [ - 24471 - ] - ], - [ - [ - 127569, - 127569 - ], - "mapped", - [ - 21487 - ] - ], - [ - [ - 127570, - 127743 - ], - "disallowed" - ], - [ - [ - 127744, - 127776 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127777, - 127788 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127789, - 127791 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127792, - 127797 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127798, - 127798 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127799, - 127868 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127869, - 127869 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127870, - 127871 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127872, - 127891 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127892, - 127903 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127904, - 127940 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127941, - 127941 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127942, - 127946 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127947, - 127950 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127951, - 127955 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127956, - 127967 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127968, - 127984 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127985, - 127991 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127992, - 127999 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128000, - 128062 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128063, - 128063 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128064, - 128064 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128065, - 128065 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128066, - 128247 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128248, - 128248 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128249, - 128252 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128253, - 128254 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128255, - 128255 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128256, - 128317 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128318, - 128319 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128320, - 128323 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128324, - 128330 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128331, - 128335 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128336, - 128359 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128360, - 128377 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128378, - 128378 - ], - "disallowed" - ], - [ - [ - 128379, - 128419 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128420, - 128420 - ], - "disallowed" - ], - [ - [ - 128421, - 128506 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128507, - 128511 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128512, - 128512 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128513, - 128528 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128529, - 128529 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128530, - 128532 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128533, - 128533 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128534, - 128534 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128535, - 128535 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128536, - 128536 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128537, - 128537 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128538, - 128538 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128539, - 128539 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128540, - 128542 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128543, - 128543 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128544, - 128549 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128550, - 128551 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128552, - 128555 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128556, - 128556 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128557, - 128557 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128558, - 128559 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128560, - 128563 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128564, - 128564 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128565, - 128576 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128577, - 128578 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128579, - 128580 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128581, - 128591 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128592, - 128639 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128640, - 128709 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128710, - 128719 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128720, - 128720 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128721, - 128735 - ], - "disallowed" - ], - [ - [ - 128736, - 128748 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128749, - 128751 - ], - "disallowed" - ], - [ - [ - 128752, - 128755 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128756, - 128767 - ], - "disallowed" - ], - [ - [ - 128768, - 128883 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128884, - 128895 - ], - "disallowed" - ], - [ - [ - 128896, - 128980 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128981, - 129023 - ], - "disallowed" - ], - [ - [ - 129024, - 129035 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 129036, - 129039 - ], - "disallowed" - ], - [ - [ - 129040, - 129095 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 129096, - 129103 - ], - "disallowed" - ], - [ - [ - 129104, - 129113 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 129114, - 129119 - ], - "disallowed" - ], - [ - [ - 129120, - 129159 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 129160, - 129167 - ], - "disallowed" - ], - [ - [ - 129168, - 129197 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 129198, - 129295 - ], - "disallowed" - ], - [ - [ - 129296, - 129304 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 129305, - 129407 - ], - "disallowed" - ], - [ - [ - 129408, - 129412 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 129413, - 129471 - ], - "disallowed" - ], - [ - [ - 129472, - 129472 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 129473, - 131069 - ], - "disallowed" - ], - [ - [ - 131070, - 131071 - ], - "disallowed" - ], - [ - [ - 131072, - 173782 - ], - "valid" - ], - [ - [ - 173783, - 173823 - ], - "disallowed" - ], - [ - [ - 173824, - 177972 - ], - "valid" - ], - [ - [ - 177973, - 177983 - ], - "disallowed" - ], - [ - [ - 177984, - 178205 - ], - "valid" - ], - [ - [ - 178206, - 178207 - ], - "disallowed" - ], - [ - [ - 178208, - 183969 - ], - "valid" - ], - [ - [ - 183970, - 194559 - ], - "disallowed" - ], - [ - [ - 194560, - 194560 - ], - "mapped", - [ - 20029 - ] - ], - [ - [ - 194561, - 194561 - ], - "mapped", - [ - 20024 - ] - ], - [ - [ - 194562, - 194562 - ], - "mapped", - [ - 20033 - ] - ], - [ - [ - 194563, - 194563 - ], - "mapped", - [ - 131362 - ] - ], - [ - [ - 194564, - 194564 - ], - "mapped", - [ - 20320 - ] - ], - [ - [ - 194565, - 194565 - ], - "mapped", - [ - 20398 - ] - ], - [ - [ - 194566, - 194566 - ], - "mapped", - [ - 20411 - ] - ], - [ - [ - 194567, - 194567 - ], - "mapped", - [ - 20482 - ] - ], - [ - [ - 194568, - 194568 - ], - "mapped", - [ - 20602 - ] - ], - [ - [ - 194569, - 194569 - ], - "mapped", - [ - 20633 - ] - ], - [ - [ - 194570, - 194570 - ], - "mapped", - [ - 20711 - ] - ], - [ - [ - 194571, - 194571 - ], - "mapped", - [ - 20687 - ] - ], - [ - [ - 194572, - 194572 - ], - "mapped", - [ - 13470 - ] - ], - [ - [ - 194573, - 194573 - ], - "mapped", - [ - 132666 - ] - ], - [ - [ - 194574, - 194574 - ], - "mapped", - [ - 20813 - ] - ], - [ - [ - 194575, - 194575 - ], - "mapped", - [ - 20820 - ] - ], - [ - [ - 194576, - 194576 - ], - "mapped", - [ - 20836 - ] - ], - [ - [ - 194577, - 194577 - ], - "mapped", - [ - 20855 - ] - ], - [ - [ - 194578, - 194578 - ], - "mapped", - [ - 132380 - ] - ], - [ - [ - 194579, - 194579 - ], - "mapped", - [ - 13497 - ] - ], - [ - [ - 194580, - 194580 - ], - "mapped", - [ - 20839 - ] - ], - [ - [ - 194581, - 194581 - ], - "mapped", - [ - 20877 - ] - ], - [ - [ - 194582, - 194582 - ], - "mapped", - [ - 132427 - ] - ], - [ - [ - 194583, - 194583 - ], - "mapped", - [ - 20887 - ] - ], - [ - [ - 194584, - 194584 - ], - "mapped", - [ - 20900 - ] - ], - [ - [ - 194585, - 194585 - ], - "mapped", - [ - 20172 - ] - ], - [ - [ - 194586, - 194586 - ], - "mapped", - [ - 20908 - ] - ], - [ - [ - 194587, - 194587 - ], - "mapped", - [ - 20917 - ] - ], - [ - [ - 194588, - 194588 - ], - "mapped", - [ - 168415 - ] - ], - [ - [ - 194589, - 194589 - ], - "mapped", - [ - 20981 - ] - ], - [ - [ - 194590, - 194590 - ], - "mapped", - [ - 20995 - ] - ], - [ - [ - 194591, - 194591 - ], - "mapped", - [ - 13535 - ] - ], - [ - [ - 194592, - 194592 - ], - "mapped", - [ - 21051 - ] - ], - [ - [ - 194593, - 194593 - ], - "mapped", - [ - 21062 - ] - ], - [ - [ - 194594, - 194594 - ], - "mapped", - [ - 21106 - ] - ], - [ - [ - 194595, - 194595 - ], - "mapped", - [ - 21111 - ] - ], - [ - [ - 194596, - 194596 - ], - "mapped", - [ - 13589 - ] - ], - [ - [ - 194597, - 194597 - ], - "mapped", - [ - 21191 - ] - ], - [ - [ - 194598, - 194598 - ], - "mapped", - [ - 21193 - ] - ], - [ - [ - 194599, - 194599 - ], - "mapped", - [ - 21220 - ] - ], - [ - [ - 194600, - 194600 - ], - "mapped", - [ - 21242 - ] - ], - [ - [ - 194601, - 194601 - ], - "mapped", - [ - 21253 - ] - ], - [ - [ - 194602, - 194602 - ], - "mapped", - [ - 21254 - ] - ], - [ - [ - 194603, - 194603 - ], - "mapped", - [ - 21271 - ] - ], - [ - [ - 194604, - 194604 - ], - "mapped", - [ - 21321 - ] - ], - [ - [ - 194605, - 194605 - ], - "mapped", - [ - 21329 - ] - ], - [ - [ - 194606, - 194606 - ], - "mapped", - [ - 21338 - ] - ], - [ - [ - 194607, - 194607 - ], - "mapped", - [ - 21363 - ] - ], - [ - [ - 194608, - 194608 - ], - "mapped", - [ - 21373 - ] - ], - [ - [ - 194609, - 194611 - ], - "mapped", - [ - 21375 - ] - ], - [ - [ - 194612, - 194612 - ], - "mapped", - [ - 133676 - ] - ], - [ - [ - 194613, - 194613 - ], - "mapped", - [ - 28784 - ] - ], - [ - [ - 194614, - 194614 - ], - "mapped", - [ - 21450 - ] - ], - [ - [ - 194615, - 194615 - ], - "mapped", - [ - 21471 - ] - ], - [ - [ - 194616, - 194616 - ], - "mapped", - [ - 133987 - ] - ], - [ - [ - 194617, - 194617 - ], - "mapped", - [ - 21483 - ] - ], - [ - [ - 194618, - 194618 - ], - "mapped", - [ - 21489 - ] - ], - [ - [ - 194619, - 194619 - ], - "mapped", - [ - 21510 - ] - ], - [ - [ - 194620, - 194620 - ], - "mapped", - [ - 21662 - ] - ], - [ - [ - 194621, - 194621 - ], - "mapped", - [ - 21560 - ] - ], - [ - [ - 194622, - 194622 - ], - "mapped", - [ - 21576 - ] - ], - [ - [ - 194623, - 194623 - ], - "mapped", - [ - 21608 - ] - ], - [ - [ - 194624, - 194624 - ], - "mapped", - [ - 21666 - ] - ], - [ - [ - 194625, - 194625 - ], - "mapped", - [ - 21750 - ] - ], - [ - [ - 194626, - 194626 - ], - "mapped", - [ - 21776 - ] - ], - [ - [ - 194627, - 194627 - ], - "mapped", - [ - 21843 - ] - ], - [ - [ - 194628, - 194628 - ], - "mapped", - [ - 21859 - ] - ], - [ - [ - 194629, - 194630 - ], - "mapped", - [ - 21892 - ] - ], - [ - [ - 194631, - 194631 - ], - "mapped", - [ - 21913 - ] - ], - [ - [ - 194632, - 194632 - ], - "mapped", - [ - 21931 - ] - ], - [ - [ - 194633, - 194633 - ], - "mapped", - [ - 21939 - ] - ], - [ - [ - 194634, - 194634 - ], - "mapped", - [ - 21954 - ] - ], - [ - [ - 194635, - 194635 - ], - "mapped", - [ - 22294 - ] - ], - [ - [ - 194636, - 194636 - ], - "mapped", - [ - 22022 - ] - ], - [ - [ - 194637, - 194637 - ], - "mapped", - [ - 22295 - ] - ], - [ - [ - 194638, - 194638 - ], - "mapped", - [ - 22097 - ] - ], - [ - [ - 194639, - 194639 - ], - "mapped", - [ - 22132 - ] - ], - [ - [ - 194640, - 194640 - ], - "mapped", - [ - 20999 - ] - ], - [ - [ - 194641, - 194641 - ], - "mapped", - [ - 22766 - ] - ], - [ - [ - 194642, - 194642 - ], - "mapped", - [ - 22478 - ] - ], - [ - [ - 194643, - 194643 - ], - "mapped", - [ - 22516 - ] - ], - [ - [ - 194644, - 194644 - ], - "mapped", - [ - 22541 - ] - ], - [ - [ - 194645, - 194645 - ], - "mapped", - [ - 22411 - ] - ], - [ - [ - 194646, - 194646 - ], - "mapped", - [ - 22578 - ] - ], - [ - [ - 194647, - 194647 - ], - "mapped", - [ - 22577 - ] - ], - [ - [ - 194648, - 194648 - ], - "mapped", - [ - 22700 - ] - ], - [ - [ - 194649, - 194649 - ], - "mapped", - [ - 136420 - ] - ], - [ - [ - 194650, - 194650 - ], - "mapped", - [ - 22770 - ] - ], - [ - [ - 194651, - 194651 - ], - "mapped", - [ - 22775 - ] - ], - [ - [ - 194652, - 194652 - ], - "mapped", - [ - 22790 - ] - ], - [ - [ - 194653, - 194653 - ], - "mapped", - [ - 22810 - ] - ], - [ - [ - 194654, - 194654 - ], - "mapped", - [ - 22818 - ] - ], - [ - [ - 194655, - 194655 - ], - "mapped", - [ - 22882 - ] - ], - [ - [ - 194656, - 194656 - ], - "mapped", - [ - 136872 - ] - ], - [ - [ - 194657, - 194657 - ], - "mapped", - [ - 136938 - ] - ], - [ - [ - 194658, - 194658 - ], - "mapped", - [ - 23020 - ] - ], - [ - [ - 194659, - 194659 - ], - "mapped", - [ - 23067 - ] - ], - [ - [ - 194660, - 194660 - ], - "mapped", - [ - 23079 - ] - ], - [ - [ - 194661, - 194661 - ], - "mapped", - [ - 23000 - ] - ], - [ - [ - 194662, - 194662 - ], - "mapped", - [ - 23142 - ] - ], - [ - [ - 194663, - 194663 - ], - "mapped", - [ - 14062 - ] - ], - [ - [ - 194664, - 194664 - ], - "disallowed" - ], - [ - [ - 194665, - 194665 - ], - "mapped", - [ - 23304 - ] - ], - [ - [ - 194666, - 194667 - ], - "mapped", - [ - 23358 - ] - ], - [ - [ - 194668, - 194668 - ], - "mapped", - [ - 137672 - ] - ], - [ - [ - 194669, - 194669 - ], - "mapped", - [ - 23491 - ] - ], - [ - [ - 194670, - 194670 - ], - "mapped", - [ - 23512 - ] - ], - [ - [ - 194671, - 194671 - ], - "mapped", - [ - 23527 - ] - ], - [ - [ - 194672, - 194672 - ], - "mapped", - [ - 23539 - ] - ], - [ - [ - 194673, - 194673 - ], - "mapped", - [ - 138008 - ] - ], - [ - [ - 194674, - 194674 - ], - "mapped", - [ - 23551 - ] - ], - [ - [ - 194675, - 194675 - ], - "mapped", - [ - 23558 - ] - ], - [ - [ - 194676, - 194676 - ], - "disallowed" - ], - [ - [ - 194677, - 194677 - ], - "mapped", - [ - 23586 - ] - ], - [ - [ - 194678, - 194678 - ], - "mapped", - [ - 14209 - ] - ], - [ - [ - 194679, - 194679 - ], - "mapped", - [ - 23648 - ] - ], - [ - [ - 194680, - 194680 - ], - "mapped", - [ - 23662 - ] - ], - [ - [ - 194681, - 194681 - ], - "mapped", - [ - 23744 - ] - ], - [ - [ - 194682, - 194682 - ], - "mapped", - [ - 23693 - ] - ], - [ - [ - 194683, - 194683 - ], - "mapped", - [ - 138724 - ] - ], - [ - [ - 194684, - 194684 - ], - "mapped", - [ - 23875 - ] - ], - [ - [ - 194685, - 194685 - ], - "mapped", - [ - 138726 - ] - ], - [ - [ - 194686, - 194686 - ], - "mapped", - [ - 23918 - ] - ], - [ - [ - 194687, - 194687 - ], - "mapped", - [ - 23915 - ] - ], - [ - [ - 194688, - 194688 - ], - "mapped", - [ - 23932 - ] - ], - [ - [ - 194689, - 194689 - ], - "mapped", - [ - 24033 - ] - ], - [ - [ - 194690, - 194690 - ], - "mapped", - [ - 24034 - ] - ], - [ - [ - 194691, - 194691 - ], - "mapped", - [ - 14383 - ] - ], - [ - [ - 194692, - 194692 - ], - "mapped", - [ - 24061 - ] - ], - [ - [ - 194693, - 194693 - ], - "mapped", - [ - 24104 - ] - ], - [ - [ - 194694, - 194694 - ], - "mapped", - [ - 24125 - ] - ], - [ - [ - 194695, - 194695 - ], - "mapped", - [ - 24169 - ] - ], - [ - [ - 194696, - 194696 - ], - "mapped", - [ - 14434 - ] - ], - [ - [ - 194697, - 194697 - ], - "mapped", - [ - 139651 - ] - ], - [ - [ - 194698, - 194698 - ], - "mapped", - [ - 14460 - ] - ], - [ - [ - 194699, - 194699 - ], - "mapped", - [ - 24240 - ] - ], - [ - [ - 194700, - 194700 - ], - "mapped", - [ - 24243 - ] - ], - [ - [ - 194701, - 194701 - ], - "mapped", - [ - 24246 - ] - ], - [ - [ - 194702, - 194702 - ], - "mapped", - [ - 24266 - ] - ], - [ - [ - 194703, - 194703 - ], - "mapped", - [ - 172946 - ] - ], - [ - [ - 194704, - 194704 - ], - "mapped", - [ - 24318 - ] - ], - [ - [ - 194705, - 194706 - ], - "mapped", - [ - 140081 - ] - ], - [ - [ - 194707, - 194707 - ], - "mapped", - [ - 33281 - ] - ], - [ - [ - 194708, - 194709 - ], - "mapped", - [ - 24354 - ] - ], - [ - [ - 194710, - 194710 - ], - "mapped", - [ - 14535 - ] - ], - [ - [ - 194711, - 194711 - ], - "mapped", - [ - 144056 - ] - ], - [ - [ - 194712, - 194712 - ], - "mapped", - [ - 156122 - ] - ], - [ - [ - 194713, - 194713 - ], - "mapped", - [ - 24418 - ] - ], - [ - [ - 194714, - 194714 - ], - "mapped", - [ - 24427 - ] - ], - [ - [ - 194715, - 194715 - ], - "mapped", - [ - 14563 - ] - ], - [ - [ - 194716, - 194716 - ], - "mapped", - [ - 24474 - ] - ], - [ - [ - 194717, - 194717 - ], - "mapped", - [ - 24525 - ] - ], - [ - [ - 194718, - 194718 - ], - "mapped", - [ - 24535 - ] - ], - [ - [ - 194719, - 194719 - ], - "mapped", - [ - 24569 - ] - ], - [ - [ - 194720, - 194720 - ], - "mapped", - [ - 24705 - ] - ], - [ - [ - 194721, - 194721 - ], - "mapped", - [ - 14650 - ] - ], - [ - [ - 194722, - 194722 - ], - "mapped", - [ - 14620 - ] - ], - [ - [ - 194723, - 194723 - ], - "mapped", - [ - 24724 - ] - ], - [ - [ - 194724, - 194724 - ], - "mapped", - [ - 141012 - ] - ], - [ - [ - 194725, - 194725 - ], - "mapped", - [ - 24775 - ] - ], - [ - [ - 194726, - 194726 - ], - "mapped", - [ - 24904 - ] - ], - [ - [ - 194727, - 194727 - ], - "mapped", - [ - 24908 - ] - ], - [ - [ - 194728, - 194728 - ], - "mapped", - [ - 24910 - ] - ], - [ - [ - 194729, - 194729 - ], - "mapped", - [ - 24908 - ] - ], - [ - [ - 194730, - 194730 - ], - "mapped", - [ - 24954 - ] - ], - [ - [ - 194731, - 194731 - ], - "mapped", - [ - 24974 - ] - ], - [ - [ - 194732, - 194732 - ], - "mapped", - [ - 25010 - ] - ], - [ - [ - 194733, - 194733 - ], - "mapped", - [ - 24996 - ] - ], - [ - [ - 194734, - 194734 - ], - "mapped", - [ - 25007 - ] - ], - [ - [ - 194735, - 194735 - ], - "mapped", - [ - 25054 - ] - ], - [ - [ - 194736, - 194736 - ], - "mapped", - [ - 25074 - ] - ], - [ - [ - 194737, - 194737 - ], - "mapped", - [ - 25078 - ] - ], - [ - [ - 194738, - 194738 - ], - "mapped", - [ - 25104 - ] - ], - [ - [ - 194739, - 194739 - ], - "mapped", - [ - 25115 - ] - ], - [ - [ - 194740, - 194740 - ], - "mapped", - [ - 25181 - ] - ], - [ - [ - 194741, - 194741 - ], - "mapped", - [ - 25265 - ] - ], - [ - [ - 194742, - 194742 - ], - "mapped", - [ - 25300 - ] - ], - [ - [ - 194743, - 194743 - ], - "mapped", - [ - 25424 - ] - ], - [ - [ - 194744, - 194744 - ], - "mapped", - [ - 142092 - ] - ], - [ - [ - 194745, - 194745 - ], - "mapped", - [ - 25405 - ] - ], - [ - [ - 194746, - 194746 - ], - "mapped", - [ - 25340 - ] - ], - [ - [ - 194747, - 194747 - ], - "mapped", - [ - 25448 - ] - ], - [ - [ - 194748, - 194748 - ], - "mapped", - [ - 25475 - ] - ], - [ - [ - 194749, - 194749 - ], - "mapped", - [ - 25572 - ] - ], - [ - [ - 194750, - 194750 - ], - "mapped", - [ - 142321 - ] - ], - [ - [ - 194751, - 194751 - ], - "mapped", - [ - 25634 - ] - ], - [ - [ - 194752, - 194752 - ], - "mapped", - [ - 25541 - ] - ], - [ - [ - 194753, - 194753 - ], - "mapped", - [ - 25513 - ] - ], - [ - [ - 194754, - 194754 - ], - "mapped", - [ - 14894 - ] - ], - [ - [ - 194755, - 194755 - ], - "mapped", - [ - 25705 - ] - ], - [ - [ - 194756, - 194756 - ], - "mapped", - [ - 25726 - ] - ], - [ - [ - 194757, - 194757 - ], - "mapped", - [ - 25757 - ] - ], - [ - [ - 194758, - 194758 - ], - "mapped", - [ - 25719 - ] - ], - [ - [ - 194759, - 194759 - ], - "mapped", - [ - 14956 - ] - ], - [ - [ - 194760, - 194760 - ], - "mapped", - [ - 25935 - ] - ], - [ - [ - 194761, - 194761 - ], - "mapped", - [ - 25964 - ] - ], - [ - [ - 194762, - 194762 - ], - "mapped", - [ - 143370 - ] - ], - [ - [ - 194763, - 194763 - ], - "mapped", - [ - 26083 - ] - ], - [ - [ - 194764, - 194764 - ], - "mapped", - [ - 26360 - ] - ], - [ - [ - 194765, - 194765 - ], - "mapped", - [ - 26185 - ] - ], - [ - [ - 194766, - 194766 - ], - "mapped", - [ - 15129 - ] - ], - [ - [ - 194767, - 194767 - ], - "mapped", - [ - 26257 - ] - ], - [ - [ - 194768, - 194768 - ], - "mapped", - [ - 15112 - ] - ], - [ - [ - 194769, - 194769 - ], - "mapped", - [ - 15076 - ] - ], - [ - [ - 194770, - 194770 - ], - "mapped", - [ - 20882 - ] - ], - [ - [ - 194771, - 194771 - ], - "mapped", - [ - 20885 - ] - ], - [ - [ - 194772, - 194772 - ], - "mapped", - [ - 26368 - ] - ], - [ - [ - 194773, - 194773 - ], - "mapped", - [ - 26268 - ] - ], - [ - [ - 194774, - 194774 - ], - "mapped", - [ - 32941 - ] - ], - [ - [ - 194775, - 194775 - ], - "mapped", - [ - 17369 - ] - ], - [ - [ - 194776, - 194776 - ], - "mapped", - [ - 26391 - ] - ], - [ - [ - 194777, - 194777 - ], - "mapped", - [ - 26395 - ] - ], - [ - [ - 194778, - 194778 - ], - "mapped", - [ - 26401 - ] - ], - [ - [ - 194779, - 194779 - ], - "mapped", - [ - 26462 - ] - ], - [ - [ - 194780, - 194780 - ], - "mapped", - [ - 26451 - ] - ], - [ - [ - 194781, - 194781 - ], - "mapped", - [ - 144323 - ] - ], - [ - [ - 194782, - 194782 - ], - "mapped", - [ - 15177 - ] - ], - [ - [ - 194783, - 194783 - ], - "mapped", - [ - 26618 - ] - ], - [ - [ - 194784, - 194784 - ], - "mapped", - [ - 26501 - ] - ], - [ - [ - 194785, - 194785 - ], - "mapped", - [ - 26706 - ] - ], - [ - [ - 194786, - 194786 - ], - "mapped", - [ - 26757 - ] - ], - [ - [ - 194787, - 194787 - ], - "mapped", - [ - 144493 - ] - ], - [ - [ - 194788, - 194788 - ], - "mapped", - [ - 26766 - ] - ], - [ - [ - 194789, - 194789 - ], - "mapped", - [ - 26655 - ] - ], - [ - [ - 194790, - 194790 - ], - "mapped", - [ - 26900 - ] - ], - [ - [ - 194791, - 194791 - ], - "mapped", - [ - 15261 - ] - ], - [ - [ - 194792, - 194792 - ], - "mapped", - [ - 26946 - ] - ], - [ - [ - 194793, - 194793 - ], - "mapped", - [ - 27043 - ] - ], - [ - [ - 194794, - 194794 - ], - "mapped", - [ - 27114 - ] - ], - [ - [ - 194795, - 194795 - ], - "mapped", - [ - 27304 - ] - ], - [ - [ - 194796, - 194796 - ], - "mapped", - [ - 145059 - ] - ], - [ - [ - 194797, - 194797 - ], - "mapped", - [ - 27355 - ] - ], - [ - [ - 194798, - 194798 - ], - "mapped", - [ - 15384 - ] - ], - [ - [ - 194799, - 194799 - ], - "mapped", - [ - 27425 - ] - ], - [ - [ - 194800, - 194800 - ], - "mapped", - [ - 145575 - ] - ], - [ - [ - 194801, - 194801 - ], - "mapped", - [ - 27476 - ] - ], - [ - [ - 194802, - 194802 - ], - "mapped", - [ - 15438 - ] - ], - [ - [ - 194803, - 194803 - ], - "mapped", - [ - 27506 - ] - ], - [ - [ - 194804, - 194804 - ], - "mapped", - [ - 27551 - ] - ], - [ - [ - 194805, - 194805 - ], - "mapped", - [ - 27578 - ] - ], - [ - [ - 194806, - 194806 - ], - "mapped", - [ - 27579 - ] - ], - [ - [ - 194807, - 194807 - ], - "mapped", - [ - 146061 - ] - ], - [ - [ - 194808, - 194808 - ], - "mapped", - [ - 138507 - ] - ], - [ - [ - 194809, - 194809 - ], - "mapped", - [ - 146170 - ] - ], - [ - [ - 194810, - 194810 - ], - "mapped", - [ - 27726 - ] - ], - [ - [ - 194811, - 194811 - ], - "mapped", - [ - 146620 - ] - ], - [ - [ - 194812, - 194812 - ], - "mapped", - [ - 27839 - ] - ], - [ - [ - 194813, - 194813 - ], - "mapped", - [ - 27853 - ] - ], - [ - [ - 194814, - 194814 - ], - "mapped", - [ - 27751 - ] - ], - [ - [ - 194815, - 194815 - ], - "mapped", - [ - 27926 - ] - ], - [ - [ - 194816, - 194816 - ], - "mapped", - [ - 27966 - ] - ], - [ - [ - 194817, - 194817 - ], - "mapped", - [ - 28023 - ] - ], - [ - [ - 194818, - 194818 - ], - "mapped", - [ - 27969 - ] - ], - [ - [ - 194819, - 194819 - ], - "mapped", - [ - 28009 - ] - ], - [ - [ - 194820, - 194820 - ], - "mapped", - [ - 28024 - ] - ], - [ - [ - 194821, - 194821 - ], - "mapped", - [ - 28037 - ] - ], - [ - [ - 194822, - 194822 - ], - "mapped", - [ - 146718 - ] - ], - [ - [ - 194823, - 194823 - ], - "mapped", - [ - 27956 - ] - ], - [ - [ - 194824, - 194824 - ], - "mapped", - [ - 28207 - ] - ], - [ - [ - 194825, - 194825 - ], - "mapped", - [ - 28270 - ] - ], - [ - [ - 194826, - 194826 - ], - "mapped", - [ - 15667 - ] - ], - [ - [ - 194827, - 194827 - ], - "mapped", - [ - 28363 - ] - ], - [ - [ - 194828, - 194828 - ], - "mapped", - [ - 28359 - ] - ], - [ - [ - 194829, - 194829 - ], - "mapped", - [ - 147153 - ] - ], - [ - [ - 194830, - 194830 - ], - "mapped", - [ - 28153 - ] - ], - [ - [ - 194831, - 194831 - ], - "mapped", - [ - 28526 - ] - ], - [ - [ - 194832, - 194832 - ], - "mapped", - [ - 147294 - ] - ], - [ - [ - 194833, - 194833 - ], - "mapped", - [ - 147342 - ] - ], - [ - [ - 194834, - 194834 - ], - "mapped", - [ - 28614 - ] - ], - [ - [ - 194835, - 194835 - ], - "mapped", - [ - 28729 - ] - ], - [ - [ - 194836, - 194836 - ], - "mapped", - [ - 28702 - ] - ], - [ - [ - 194837, - 194837 - ], - "mapped", - [ - 28699 - ] - ], - [ - [ - 194838, - 194838 - ], - "mapped", - [ - 15766 - ] - ], - [ - [ - 194839, - 194839 - ], - "mapped", - [ - 28746 - ] - ], - [ - [ - 194840, - 194840 - ], - "mapped", - [ - 28797 - ] - ], - [ - [ - 194841, - 194841 - ], - "mapped", - [ - 28791 - ] - ], - [ - [ - 194842, - 194842 - ], - "mapped", - [ - 28845 - ] - ], - [ - [ - 194843, - 194843 - ], - "mapped", - [ - 132389 - ] - ], - [ - [ - 194844, - 194844 - ], - "mapped", - [ - 28997 - ] - ], - [ - [ - 194845, - 194845 - ], - "mapped", - [ - 148067 - ] - ], - [ - [ - 194846, - 194846 - ], - "mapped", - [ - 29084 - ] - ], - [ - [ - 194847, - 194847 - ], - "disallowed" - ], - [ - [ - 194848, - 194848 - ], - "mapped", - [ - 29224 - ] - ], - [ - [ - 194849, - 194849 - ], - "mapped", - [ - 29237 - ] - ], - [ - [ - 194850, - 194850 - ], - "mapped", - [ - 29264 - ] - ], - [ - [ - 194851, - 194851 - ], - "mapped", - [ - 149000 - ] - ], - [ - [ - 194852, - 194852 - ], - "mapped", - [ - 29312 - ] - ], - [ - [ - 194853, - 194853 - ], - "mapped", - [ - 29333 - ] - ], - [ - [ - 194854, - 194854 - ], - "mapped", - [ - 149301 - ] - ], - [ - [ - 194855, - 194855 - ], - "mapped", - [ - 149524 - ] - ], - [ - [ - 194856, - 194856 - ], - "mapped", - [ - 29562 - ] - ], - [ - [ - 194857, - 194857 - ], - "mapped", - [ - 29579 - ] - ], - [ - [ - 194858, - 194858 - ], - "mapped", - [ - 16044 - ] - ], - [ - [ - 194859, - 194859 - ], - "mapped", - [ - 29605 - ] - ], - [ - [ - 194860, - 194861 - ], - "mapped", - [ - 16056 - ] - ], - [ - [ - 194862, - 194862 - ], - "mapped", - [ - 29767 - ] - ], - [ - [ - 194863, - 194863 - ], - "mapped", - [ - 29788 - ] - ], - [ - [ - 194864, - 194864 - ], - "mapped", - [ - 29809 - ] - ], - [ - [ - 194865, - 194865 - ], - "mapped", - [ - 29829 - ] - ], - [ - [ - 194866, - 194866 - ], - "mapped", - [ - 29898 - ] - ], - [ - [ - 194867, - 194867 - ], - "mapped", - [ - 16155 - ] - ], - [ - [ - 194868, - 194868 - ], - "mapped", - [ - 29988 - ] - ], - [ - [ - 194869, - 194869 - ], - "mapped", - [ - 150582 - ] - ], - [ - [ - 194870, - 194870 - ], - "mapped", - [ - 30014 - ] - ], - [ - [ - 194871, - 194871 - ], - "mapped", - [ - 150674 - ] - ], - [ - [ - 194872, - 194872 - ], - "mapped", - [ - 30064 - ] - ], - [ - [ - 194873, - 194873 - ], - "mapped", - [ - 139679 - ] - ], - [ - [ - 194874, - 194874 - ], - "mapped", - [ - 30224 - ] - ], - [ - [ - 194875, - 194875 - ], - "mapped", - [ - 151457 - ] - ], - [ - [ - 194876, - 194876 - ], - "mapped", - [ - 151480 - ] - ], - [ - [ - 194877, - 194877 - ], - "mapped", - [ - 151620 - ] - ], - [ - [ - 194878, - 194878 - ], - "mapped", - [ - 16380 - ] - ], - [ - [ - 194879, - 194879 - ], - "mapped", - [ - 16392 - ] - ], - [ - [ - 194880, - 194880 - ], - "mapped", - [ - 30452 - ] - ], - [ - [ - 194881, - 194881 - ], - "mapped", - [ - 151795 - ] - ], - [ - [ - 194882, - 194882 - ], - "mapped", - [ - 151794 - ] - ], - [ - [ - 194883, - 194883 - ], - "mapped", - [ - 151833 - ] - ], - [ - [ - 194884, - 194884 - ], - "mapped", - [ - 151859 - ] - ], - [ - [ - 194885, - 194885 - ], - "mapped", - [ - 30494 - ] - ], - [ - [ - 194886, - 194887 - ], - "mapped", - [ - 30495 - ] - ], - [ - [ - 194888, - 194888 - ], - "mapped", - [ - 30538 - ] - ], - [ - [ - 194889, - 194889 - ], - "mapped", - [ - 16441 - ] - ], - [ - [ - 194890, - 194890 - ], - "mapped", - [ - 30603 - ] - ], - [ - [ - 194891, - 194891 - ], - "mapped", - [ - 16454 - ] - ], - [ - [ - 194892, - 194892 - ], - "mapped", - [ - 16534 - ] - ], - [ - [ - 194893, - 194893 - ], - "mapped", - [ - 152605 - ] - ], - [ - [ - 194894, - 194894 - ], - "mapped", - [ - 30798 - ] - ], - [ - [ - 194895, - 194895 - ], - "mapped", - [ - 30860 - ] - ], - [ - [ - 194896, - 194896 - ], - "mapped", - [ - 30924 - ] - ], - [ - [ - 194897, - 194897 - ], - "mapped", - [ - 16611 - ] - ], - [ - [ - 194898, - 194898 - ], - "mapped", - [ - 153126 - ] - ], - [ - [ - 194899, - 194899 - ], - "mapped", - [ - 31062 - ] - ], - [ - [ - 194900, - 194900 - ], - "mapped", - [ - 153242 - ] - ], - [ - [ - 194901, - 194901 - ], - "mapped", - [ - 153285 - ] - ], - [ - [ - 194902, - 194902 - ], - "mapped", - [ - 31119 - ] - ], - [ - [ - 194903, - 194903 - ], - "mapped", - [ - 31211 - ] - ], - [ - [ - 194904, - 194904 - ], - "mapped", - [ - 16687 - ] - ], - [ - [ - 194905, - 194905 - ], - "mapped", - [ - 31296 - ] - ], - [ - [ - 194906, - 194906 - ], - "mapped", - [ - 31306 - ] - ], - [ - [ - 194907, - 194907 - ], - "mapped", - [ - 31311 - ] - ], - [ - [ - 194908, - 194908 - ], - "mapped", - [ - 153980 - ] - ], - [ - [ - 194909, - 194910 - ], - "mapped", - [ - 154279 - ] - ], - [ - [ - 194911, - 194911 - ], - "disallowed" - ], - [ - [ - 194912, - 194912 - ], - "mapped", - [ - 16898 - ] - ], - [ - [ - 194913, - 194913 - ], - "mapped", - [ - 154539 - ] - ], - [ - [ - 194914, - 194914 - ], - "mapped", - [ - 31686 - ] - ], - [ - [ - 194915, - 194915 - ], - "mapped", - [ - 31689 - ] - ], - [ - [ - 194916, - 194916 - ], - "mapped", - [ - 16935 - ] - ], - [ - [ - 194917, - 194917 - ], - "mapped", - [ - 154752 - ] - ], - [ - [ - 194918, - 194918 - ], - "mapped", - [ - 31954 - ] - ], - [ - [ - 194919, - 194919 - ], - "mapped", - [ - 17056 - ] - ], - [ - [ - 194920, - 194920 - ], - "mapped", - [ - 31976 - ] - ], - [ - [ - 194921, - 194921 - ], - "mapped", - [ - 31971 - ] - ], - [ - [ - 194922, - 194922 - ], - "mapped", - [ - 32000 - ] - ], - [ - [ - 194923, - 194923 - ], - "mapped", - [ - 155526 - ] - ], - [ - [ - 194924, - 194924 - ], - "mapped", - [ - 32099 - ] - ], - [ - [ - 194925, - 194925 - ], - "mapped", - [ - 17153 - ] - ], - [ - [ - 194926, - 194926 - ], - "mapped", - [ - 32199 - ] - ], - [ - [ - 194927, - 194927 - ], - "mapped", - [ - 32258 - ] - ], - [ - [ - 194928, - 194928 - ], - "mapped", - [ - 32325 - ] - ], - [ - [ - 194929, - 194929 - ], - "mapped", - [ - 17204 - ] - ], - [ - [ - 194930, - 194930 - ], - "mapped", - [ - 156200 - ] - ], - [ - [ - 194931, - 194931 - ], - "mapped", - [ - 156231 - ] - ], - [ - [ - 194932, - 194932 - ], - "mapped", - [ - 17241 - ] - ], - [ - [ - 194933, - 194933 - ], - "mapped", - [ - 156377 - ] - ], - [ - [ - 194934, - 194934 - ], - "mapped", - [ - 32634 - ] - ], - [ - [ - 194935, - 194935 - ], - "mapped", - [ - 156478 - ] - ], - [ - [ - 194936, - 194936 - ], - "mapped", - [ - 32661 - ] - ], - [ - [ - 194937, - 194937 - ], - "mapped", - [ - 32762 - ] - ], - [ - [ - 194938, - 194938 - ], - "mapped", - [ - 32773 - ] - ], - [ - [ - 194939, - 194939 - ], - "mapped", - [ - 156890 - ] - ], - [ - [ - 194940, - 194940 - ], - "mapped", - [ - 156963 - ] - ], - [ - [ - 194941, - 194941 - ], - "mapped", - [ - 32864 - ] - ], - [ - [ - 194942, - 194942 - ], - "mapped", - [ - 157096 - ] - ], - [ - [ - 194943, - 194943 - ], - "mapped", - [ - 32880 - ] - ], - [ - [ - 194944, - 194944 - ], - "mapped", - [ - 144223 - ] - ], - [ - [ - 194945, - 194945 - ], - "mapped", - [ - 17365 - ] - ], - [ - [ - 194946, - 194946 - ], - "mapped", - [ - 32946 - ] - ], - [ - [ - 194947, - 194947 - ], - "mapped", - [ - 33027 - ] - ], - [ - [ - 194948, - 194948 - ], - "mapped", - [ - 17419 - ] - ], - [ - [ - 194949, - 194949 - ], - "mapped", - [ - 33086 - ] - ], - [ - [ - 194950, - 194950 - ], - "mapped", - [ - 23221 - ] - ], - [ - [ - 194951, - 194951 - ], - "mapped", - [ - 157607 - ] - ], - [ - [ - 194952, - 194952 - ], - "mapped", - [ - 157621 - ] - ], - [ - [ - 194953, - 194953 - ], - "mapped", - [ - 144275 - ] - ], - [ - [ - 194954, - 194954 - ], - "mapped", - [ - 144284 - ] - ], - [ - [ - 194955, - 194955 - ], - "mapped", - [ - 33281 - ] - ], - [ - [ - 194956, - 194956 - ], - "mapped", - [ - 33284 - ] - ], - [ - [ - 194957, - 194957 - ], - "mapped", - [ - 36766 - ] - ], - [ - [ - 194958, - 194958 - ], - "mapped", - [ - 17515 - ] - ], - [ - [ - 194959, - 194959 - ], - "mapped", - [ - 33425 - ] - ], - [ - [ - 194960, - 194960 - ], - "mapped", - [ - 33419 - ] - ], - [ - [ - 194961, - 194961 - ], - "mapped", - [ - 33437 - ] - ], - [ - [ - 194962, - 194962 - ], - "mapped", - [ - 21171 - ] - ], - [ - [ - 194963, - 194963 - ], - "mapped", - [ - 33457 - ] - ], - [ - [ - 194964, - 194964 - ], - "mapped", - [ - 33459 - ] - ], - [ - [ - 194965, - 194965 - ], - "mapped", - [ - 33469 - ] - ], - [ - [ - 194966, - 194966 - ], - "mapped", - [ - 33510 - ] - ], - [ - [ - 194967, - 194967 - ], - "mapped", - [ - 158524 - ] - ], - [ - [ - 194968, - 194968 - ], - "mapped", - [ - 33509 - ] - ], - [ - [ - 194969, - 194969 - ], - "mapped", - [ - 33565 - ] - ], - [ - [ - 194970, - 194970 - ], - "mapped", - [ - 33635 - ] - ], - [ - [ - 194971, - 194971 - ], - "mapped", - [ - 33709 - ] - ], - [ - [ - 194972, - 194972 - ], - "mapped", - [ - 33571 - ] - ], - [ - [ - 194973, - 194973 - ], - "mapped", - [ - 33725 - ] - ], - [ - [ - 194974, - 194974 - ], - "mapped", - [ - 33767 - ] - ], - [ - [ - 194975, - 194975 - ], - "mapped", - [ - 33879 - ] - ], - [ - [ - 194976, - 194976 - ], - "mapped", - [ - 33619 - ] - ], - [ - [ - 194977, - 194977 - ], - "mapped", - [ - 33738 - ] - ], - [ - [ - 194978, - 194978 - ], - "mapped", - [ - 33740 - ] - ], - [ - [ - 194979, - 194979 - ], - "mapped", - [ - 33756 - ] - ], - [ - [ - 194980, - 194980 - ], - "mapped", - [ - 158774 - ] - ], - [ - [ - 194981, - 194981 - ], - "mapped", - [ - 159083 - ] - ], - [ - [ - 194982, - 194982 - ], - "mapped", - [ - 158933 - ] - ], - [ - [ - 194983, - 194983 - ], - "mapped", - [ - 17707 - ] - ], - [ - [ - 194984, - 194984 - ], - "mapped", - [ - 34033 - ] - ], - [ - [ - 194985, - 194985 - ], - "mapped", - [ - 34035 - ] - ], - [ - [ - 194986, - 194986 - ], - "mapped", - [ - 34070 - ] - ], - [ - [ - 194987, - 194987 - ], - "mapped", - [ - 160714 - ] - ], - [ - [ - 194988, - 194988 - ], - "mapped", - [ - 34148 - ] - ], - [ - [ - 194989, - 194989 - ], - "mapped", - [ - 159532 - ] - ], - [ - [ - 194990, - 194990 - ], - "mapped", - [ - 17757 - ] - ], - [ - [ - 194991, - 194991 - ], - "mapped", - [ - 17761 - ] - ], - [ - [ - 194992, - 194992 - ], - "mapped", - [ - 159665 - ] - ], - [ - [ - 194993, - 194993 - ], - "mapped", - [ - 159954 - ] - ], - [ - [ - 194994, - 194994 - ], - "mapped", - [ - 17771 - ] - ], - [ - [ - 194995, - 194995 - ], - "mapped", - [ - 34384 - ] - ], - [ - [ - 194996, - 194996 - ], - "mapped", - [ - 34396 - ] - ], - [ - [ - 194997, - 194997 - ], - "mapped", - [ - 34407 - ] - ], - [ - [ - 194998, - 194998 - ], - "mapped", - [ - 34409 - ] - ], - [ - [ - 194999, - 194999 - ], - "mapped", - [ - 34473 - ] - ], - [ - [ - 195000, - 195000 - ], - "mapped", - [ - 34440 - ] - ], - [ - [ - 195001, - 195001 - ], - "mapped", - [ - 34574 - ] - ], - [ - [ - 195002, - 195002 - ], - "mapped", - [ - 34530 - ] - ], - [ - [ - 195003, - 195003 - ], - "mapped", - [ - 34681 - ] - ], - [ - [ - 195004, - 195004 - ], - "mapped", - [ - 34600 - ] - ], - [ - [ - 195005, - 195005 - ], - "mapped", - [ - 34667 - ] - ], - [ - [ - 195006, - 195006 - ], - "mapped", - [ - 34694 - ] - ], - [ - [ - 195007, - 195007 - ], - "disallowed" - ], - [ - [ - 195008, - 195008 - ], - "mapped", - [ - 34785 - ] - ], - [ - [ - 195009, - 195009 - ], - "mapped", - [ - 34817 - ] - ], - [ - [ - 195010, - 195010 - ], - "mapped", - [ - 17913 - ] - ], - [ - [ - 195011, - 195011 - ], - "mapped", - [ - 34912 - ] - ], - [ - [ - 195012, - 195012 - ], - "mapped", - [ - 34915 - ] - ], - [ - [ - 195013, - 195013 - ], - "mapped", - [ - 161383 - ] - ], - [ - [ - 195014, - 195014 - ], - "mapped", - [ - 35031 - ] - ], - [ - [ - 195015, - 195015 - ], - "mapped", - [ - 35038 - ] - ], - [ - [ - 195016, - 195016 - ], - "mapped", - [ - 17973 - ] - ], - [ - [ - 195017, - 195017 - ], - "mapped", - [ - 35066 - ] - ], - [ - [ - 195018, - 195018 - ], - "mapped", - [ - 13499 - ] - ], - [ - [ - 195019, - 195019 - ], - "mapped", - [ - 161966 - ] - ], - [ - [ - 195020, - 195020 - ], - "mapped", - [ - 162150 - ] - ], - [ - [ - 195021, - 195021 - ], - "mapped", - [ - 18110 - ] - ], - [ - [ - 195022, - 195022 - ], - "mapped", - [ - 18119 - ] - ], - [ - [ - 195023, - 195023 - ], - "mapped", - [ - 35488 - ] - ], - [ - [ - 195024, - 195024 - ], - "mapped", - [ - 35565 - ] - ], - [ - [ - 195025, - 195025 - ], - "mapped", - [ - 35722 - ] - ], - [ - [ - 195026, - 195026 - ], - "mapped", - [ - 35925 - ] - ], - [ - [ - 195027, - 195027 - ], - "mapped", - [ - 162984 - ] - ], - [ - [ - 195028, - 195028 - ], - "mapped", - [ - 36011 - ] - ], - [ - [ - 195029, - 195029 - ], - "mapped", - [ - 36033 - ] - ], - [ - [ - 195030, - 195030 - ], - "mapped", - [ - 36123 - ] - ], - [ - [ - 195031, - 195031 - ], - "mapped", - [ - 36215 - ] - ], - [ - [ - 195032, - 195032 - ], - "mapped", - [ - 163631 - ] - ], - [ - [ - 195033, - 195033 - ], - "mapped", - [ - 133124 - ] - ], - [ - [ - 195034, - 195034 - ], - "mapped", - [ - 36299 - ] - ], - [ - [ - 195035, - 195035 - ], - "mapped", - [ - 36284 - ] - ], - [ - [ - 195036, - 195036 - ], - "mapped", - [ - 36336 - ] - ], - [ - [ - 195037, - 195037 - ], - "mapped", - [ - 133342 - ] - ], - [ - [ - 195038, - 195038 - ], - "mapped", - [ - 36564 - ] - ], - [ - [ - 195039, - 195039 - ], - "mapped", - [ - 36664 - ] - ], - [ - [ - 195040, - 195040 - ], - "mapped", - [ - 165330 - ] - ], - [ - [ - 195041, - 195041 - ], - "mapped", - [ - 165357 - ] - ], - [ - [ - 195042, - 195042 - ], - "mapped", - [ - 37012 - ] - ], - [ - [ - 195043, - 195043 - ], - "mapped", - [ - 37105 - ] - ], - [ - [ - 195044, - 195044 - ], - "mapped", - [ - 37137 - ] - ], - [ - [ - 195045, - 195045 - ], - "mapped", - [ - 165678 - ] - ], - [ - [ - 195046, - 195046 - ], - "mapped", - [ - 37147 - ] - ], - [ - [ - 195047, - 195047 - ], - "mapped", - [ - 37432 - ] - ], - [ - [ - 195048, - 195048 - ], - "mapped", - [ - 37591 - ] - ], - [ - [ - 195049, - 195049 - ], - "mapped", - [ - 37592 - ] - ], - [ - [ - 195050, - 195050 - ], - "mapped", - [ - 37500 - ] - ], - [ - [ - 195051, - 195051 - ], - "mapped", - [ - 37881 - ] - ], - [ - [ - 195052, - 195052 - ], - "mapped", - [ - 37909 - ] - ], - [ - [ - 195053, - 195053 - ], - "mapped", - [ - 166906 - ] - ], - [ - [ - 195054, - 195054 - ], - "mapped", - [ - 38283 - ] - ], - [ - [ - 195055, - 195055 - ], - "mapped", - [ - 18837 - ] - ], - [ - [ - 195056, - 195056 - ], - "mapped", - [ - 38327 - ] - ], - [ - [ - 195057, - 195057 - ], - "mapped", - [ - 167287 - ] - ], - [ - [ - 195058, - 195058 - ], - "mapped", - [ - 18918 - ] - ], - [ - [ - 195059, - 195059 - ], - "mapped", - [ - 38595 - ] - ], - [ - [ - 195060, - 195060 - ], - "mapped", - [ - 23986 - ] - ], - [ - [ - 195061, - 195061 - ], - "mapped", - [ - 38691 - ] - ], - [ - [ - 195062, - 195062 - ], - "mapped", - [ - 168261 - ] - ], - [ - [ - 195063, - 195063 - ], - "mapped", - [ - 168474 - ] - ], - [ - [ - 195064, - 195064 - ], - "mapped", - [ - 19054 - ] - ], - [ - [ - 195065, - 195065 - ], - "mapped", - [ - 19062 - ] - ], - [ - [ - 195066, - 195066 - ], - "mapped", - [ - 38880 - ] - ], - [ - [ - 195067, - 195067 - ], - "mapped", - [ - 168970 - ] - ], - [ - [ - 195068, - 195068 - ], - "mapped", - [ - 19122 - ] - ], - [ - [ - 195069, - 195069 - ], - "mapped", - [ - 169110 - ] - ], - [ - [ - 195070, - 195071 - ], - "mapped", - [ - 38923 - ] - ], - [ - [ - 195072, - 195072 - ], - "mapped", - [ - 38953 - ] - ], - [ - [ - 195073, - 195073 - ], - "mapped", - [ - 169398 - ] - ], - [ - [ - 195074, - 195074 - ], - "mapped", - [ - 39138 - ] - ], - [ - [ - 195075, - 195075 - ], - "mapped", - [ - 19251 - ] - ], - [ - [ - 195076, - 195076 - ], - "mapped", - [ - 39209 - ] - ], - [ - [ - 195077, - 195077 - ], - "mapped", - [ - 39335 - ] - ], - [ - [ - 195078, - 195078 - ], - "mapped", - [ - 39362 - ] - ], - [ - [ - 195079, - 195079 - ], - "mapped", - [ - 39422 - ] - ], - [ - [ - 195080, - 195080 - ], - "mapped", - [ - 19406 - ] - ], - [ - [ - 195081, - 195081 - ], - "mapped", - [ - 170800 - ] - ], - [ - [ - 195082, - 195082 - ], - "mapped", - [ - 39698 - ] - ], - [ - [ - 195083, - 195083 - ], - "mapped", - [ - 40000 - ] - ], - [ - [ - 195084, - 195084 - ], - "mapped", - [ - 40189 - ] - ], - [ - [ - 195085, - 195085 - ], - "mapped", - [ - 19662 - ] - ], - [ - [ - 195086, - 195086 - ], - "mapped", - [ - 19693 - ] - ], - [ - [ - 195087, - 195087 - ], - "mapped", - [ - 40295 - ] - ], - [ - [ - 195088, - 195088 - ], - "mapped", - [ - 172238 - ] - ], - [ - [ - 195089, - 195089 - ], - "mapped", - [ - 19704 - ] - ], - [ - [ - 195090, - 195090 - ], - "mapped", - [ - 172293 - ] - ], - [ - [ - 195091, - 195091 - ], - "mapped", - [ - 172558 - ] - ], - [ - [ - 195092, - 195092 - ], - "mapped", - [ - 172689 - ] - ], - [ - [ - 195093, - 195093 - ], - "mapped", - [ - 40635 - ] - ], - [ - [ - 195094, - 195094 - ], - "mapped", - [ - 19798 - ] - ], - [ - [ - 195095, - 195095 - ], - "mapped", - [ - 40697 - ] - ], - [ - [ - 195096, - 195096 - ], - "mapped", - [ - 40702 - ] - ], - [ - [ - 195097, - 195097 - ], - "mapped", - [ - 40709 - ] - ], - [ - [ - 195098, - 195098 - ], - "mapped", - [ - 40719 - ] - ], - [ - [ - 195099, - 195099 - ], - "mapped", - [ - 40726 - ] - ], - [ - [ - 195100, - 195100 - ], - "mapped", - [ - 40763 - ] - ], - [ - [ - 195101, - 195101 - ], - "mapped", - [ - 173568 - ] - ], - [ - [ - 195102, - 196605 - ], - "disallowed" - ], - [ - [ - 196606, - 196607 - ], - "disallowed" - ], - [ - [ - 196608, - 262141 - ], - "disallowed" - ], - [ - [ - 262142, - 262143 - ], - "disallowed" - ], - [ - [ - 262144, - 327677 - ], - "disallowed" - ], - [ - [ - 327678, - 327679 - ], - "disallowed" - ], - [ - [ - 327680, - 393213 - ], - "disallowed" - ], - [ - [ - 393214, - 393215 - ], - "disallowed" - ], - [ - [ - 393216, - 458749 - ], - "disallowed" - ], - [ - [ - 458750, - 458751 - ], - "disallowed" - ], - [ - [ - 458752, - 524285 - ], - "disallowed" - ], - [ - [ - 524286, - 524287 - ], - "disallowed" - ], - [ - [ - 524288, - 589821 - ], - "disallowed" - ], - [ - [ - 589822, - 589823 - ], - "disallowed" - ], - [ - [ - 589824, - 655357 - ], - "disallowed" - ], - [ - [ - 655358, - 655359 - ], - "disallowed" - ], - [ - [ - 655360, - 720893 - ], - "disallowed" - ], - [ - [ - 720894, - 720895 - ], - "disallowed" - ], - [ - [ - 720896, - 786429 - ], - "disallowed" - ], - [ - [ - 786430, - 786431 - ], - "disallowed" - ], - [ - [ - 786432, - 851965 - ], - "disallowed" - ], - [ - [ - 851966, - 851967 - ], - "disallowed" - ], - [ - [ - 851968, - 917501 - ], - "disallowed" - ], - [ - [ - 917502, - 917503 - ], - "disallowed" - ], - [ - [ - 917504, - 917504 - ], - "disallowed" - ], - [ - [ - 917505, - 917505 - ], - "disallowed" - ], - [ - [ - 917506, - 917535 - ], - "disallowed" - ], - [ - [ - 917536, - 917631 - ], - "disallowed" - ], - [ - [ - 917632, - 917759 - ], - "disallowed" - ], - [ - [ - 917760, - 917999 - ], - "ignored" - ], - [ - [ - 918000, - 983037 - ], - "disallowed" - ], - [ - [ - 983038, - 983039 - ], - "disallowed" - ], - [ - [ - 983040, - 1048573 - ], - "disallowed" - ], - [ - [ - 1048574, - 1048575 - ], - "disallowed" - ], - [ - [ - 1048576, - 1114109 - ], - "disallowed" - ], - [ - [ - 1114110, - 1114111 - ], - "disallowed" - ] -]; + this.type = 'default'; + this.status = options.status === undefined ? 200 : options.status; + this.ok = this.status >= 200 && this.status < 300; + this.statusText = 'statusText' in options ? options.statusText : 'OK'; + this.headers = new Headers(options.headers); + this.url = options.url || ''; + this._initBody(bodyInit); + } -var punycode = require$$0$1; -var mappingTable = require$$1$1; + Body.call(Response.prototype); -var PROCESSING_OPTIONS = { - TRANSITIONAL: 0, - NONTRANSITIONAL: 1 -}; + Response.prototype.clone = function() { + return new Response(this._bodyInit, { + status: this.status, + statusText: this.statusText, + headers: new Headers(this.headers), + url: this.url + }) + }; -function normalize$1(str) { // fix bug in v8 - return str.split('\u0000').map(function (s) { return s.normalize('NFC'); }).join('\u0000'); -} + Response.error = function() { + var response = new Response(null, {status: 0, statusText: ''}); + response.type = 'error'; + return response + }; -function findStatus(val) { - var start = 0; - var end = mappingTable.length - 1; + var redirectStatuses = [301, 302, 303, 307, 308]; - while (start <= end) { - var mid = Math.floor((start + end) / 2); + Response.redirect = function(url, status) { + if (redirectStatuses.indexOf(status) === -1) { + throw new RangeError('Invalid status code') + } - var target = mappingTable[mid]; - if (target[0][0] <= val && target[0][1] >= val) { - return target; - } else if (target[0][0] > val) { - end = mid - 1; - } else { - start = mid + 1; - } - } + return new Response(null, {status: status, headers: {location: url}}) + }; - return null; -} + exports.DOMException = self.DOMException; + try { + new exports.DOMException(); + } catch (err) { + exports.DOMException = function(message, name) { + this.message = message; + this.name = name; + var error = Error(message); + this.stack = error.stack; + }; + exports.DOMException.prototype = Object.create(Error.prototype); + exports.DOMException.prototype.constructor = exports.DOMException; + } -var regexAstralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g; + function fetch(input, init) { + return new Promise(function(resolve, reject) { + var request = new Request(input, init); -function countSymbols(string) { - return string - // replace every surrogate pair with a BMP symbol - .replace(regexAstralSymbols, '_') - // then get the length - .length; -} + if (request.signal && request.signal.aborted) { + return reject(new exports.DOMException('Aborted', 'AbortError')) + } -function mapChars(domain_name, useSTD3, processing_option) { - var hasError = false; - var processed = ""; + var xhr = new XMLHttpRequest(); - var len = countSymbols(domain_name); - for (var i = 0; i < len; ++i) { - var codePoint = domain_name.codePointAt(i); - var status = findStatus(codePoint); + function abortXhr() { + xhr.abort(); + } - switch (status[1]) { - case "disallowed": - hasError = true; - processed += String.fromCodePoint(codePoint); - break; - case "ignored": - break; - case "mapped": - processed += String.fromCodePoint.apply(String, status[2]); - break; - case "deviation": - if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) { - processed += String.fromCodePoint.apply(String, status[2]); - } else { - processed += String.fromCodePoint(codePoint); - } - break; - case "valid": - processed += String.fromCodePoint(codePoint); - break; - case "disallowed_STD3_mapped": - if (useSTD3) { - hasError = true; - processed += String.fromCodePoint(codePoint); - } else { - processed += String.fromCodePoint.apply(String, status[2]); - } - break; - case "disallowed_STD3_valid": - if (useSTD3) { - hasError = true; - } + xhr.onload = function() { + var options = { + status: xhr.status, + statusText: xhr.statusText, + headers: parseHeaders(xhr.getAllResponseHeaders() || '') + }; + options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL'); + var body = 'response' in xhr ? xhr.response : xhr.responseText; + resolve(new Response(body, options)); + }; - processed += String.fromCodePoint(codePoint); - break; - } - } + xhr.onerror = function() { + reject(new TypeError('Network request failed')); + }; - return { - string: processed, - error: hasError - }; -} + xhr.ontimeout = function() { + reject(new TypeError('Network request failed')); + }; + + xhr.onabort = function() { + reject(new exports.DOMException('Aborted', 'AbortError')); + }; -var combiningMarksRegex = /[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08E4-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D01-\u0D03\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u18A9\u1920-\u192B\u1930-\u193B\u19B0-\u19C0\u19C8\u19C9\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF5\u1DFC-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C4\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2D]|\uD800[\uDDFD\uDEE0\uDF76-\uDF7A]|\uD802[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F\uDEE5\uDEE6]|\uD804[\uDC00-\uDC02\uDC38-\uDC46\uDC7F-\uDC82\uDCB0-\uDCBA\uDD00-\uDD02\uDD27-\uDD34\uDD73\uDD80-\uDD82\uDDB3-\uDDC0\uDE2C-\uDE37\uDEDF-\uDEEA\uDF01-\uDF03\uDF3C\uDF3E-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF62\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDCB0-\uDCC3\uDDAF-\uDDB5\uDDB8-\uDDC0\uDE30-\uDE40\uDEAB-\uDEB7]|\uD81A[\uDEF0-\uDEF4\uDF30-\uDF36]|\uD81B[\uDF51-\uDF7E\uDF8F-\uDF92]|\uD82F[\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD83A[\uDCD0-\uDCD6]|\uDB40[\uDD00-\uDDEF]/; + xhr.open(request.method, request.url, true); -function validateLabel(label, processing_option) { - if (label.substr(0, 4) === "xn--") { - label = punycode.toUnicode(label); - PROCESSING_OPTIONS.NONTRANSITIONAL; - } + if (request.credentials === 'include') { + xhr.withCredentials = true; + } else if (request.credentials === 'omit') { + xhr.withCredentials = false; + } - var error = false; + if ('responseType' in xhr && support.blob) { + xhr.responseType = 'blob'; + } - if (normalize$1(label) !== label || - (label[3] === "-" && label[4] === "-") || - label[0] === "-" || label[label.length - 1] === "-" || - label.indexOf(".") !== -1 || - label.search(combiningMarksRegex) === 0) { - error = true; - } + request.headers.forEach(function(value, name) { + xhr.setRequestHeader(name, value); + }); - var len = countSymbols(label); - for (var i = 0; i < len; ++i) { - var status = findStatus(label.codePointAt(i)); - if ((processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== "valid") || - (processing === PROCESSING_OPTIONS.NONTRANSITIONAL && - status[1] !== "valid" && status[1] !== "deviation")) { - error = true; - break; - } - } + if (request.signal) { + request.signal.addEventListener('abort', abortXhr); - return { - label: label, - error: error - }; + xhr.onreadystatechange = function() { + // DONE (success or failure) + if (xhr.readyState === 4) { + request.signal.removeEventListener('abort', abortXhr); + } + }; + } + + xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit); + }) + } + + fetch.polyfill = true; + + if (!self.fetch) { + self.fetch = fetch; + self.Headers = Headers; + self.Request = Request; + self.Response = Response; + } + + exports.Headers = Headers; + exports.Request = Request; + exports.Response = Response; + exports.fetch = fetch; + + Object.defineProperty(exports, '__esModule', { value: true }); + + return exports; + + }))({}); + })(__self__); + __self__.fetch.ponyfill = true; + // Remove "polyfill" property added by whatwg-fetch + delete __self__.fetch.polyfill; + // Choose between native implementation (global) or custom implementation (__self__) + // var ctx = global.fetch ? global : __self__; + var ctx = __self__; // this line disable service worker support temporarily + exports = ctx.fetch; // To enable: import fetch from 'cross-fetch' + exports.default = ctx.fetch; // For TypeScript consumers without esModuleInterop. + exports.fetch = ctx.fetch; // To enable: import {fetch} from 'cross-fetch' + exports.Headers = ctx.Headers; + exports.Request = ctx.Request; + exports.Response = ctx.Response; + module.exports = exports; +} (browserPonyfill, browserPonyfill.exports)); + +/** + * Return true if `value` is object-like. A value is object-like if it's not + * `null` and has a `typeof` result of "object". + */ +function isObjectLike(value) { + return typeof value == 'object' && value !== null; } -function processing(domain_name, useSTD3, processing_option) { - var result = mapChars(domain_name, useSTD3, processing_option); - result.string = normalize$1(result.string); +function invariant$1(condition, message) { + const booleanCondition = Boolean(condition); - var labels = result.string.split("."); - for (var i = 0; i < labels.length; ++i) { - try { - var validation = validateLabel(labels[i]); - labels[i] = validation.label; - result.error = result.error || validation.error; - } catch(e) { - result.error = true; - } + if (!booleanCondition) { + throw new Error( + message != null ? message : 'Unexpected invariant triggered.', + ); } - - return { - string: labels.join("."), - error: result.error - }; } -tr46.toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) { - var result = processing(domain_name, useSTD3, processing_option); - var labels = result.string.split("."); - labels = labels.map(function(l) { - try { - return punycode.toASCII(l); - } catch(e) { - result.error = true; - return l; - } - }); +const LineRegExp = /\r\n|[\n\r]/g; +/** + * Represents a location in a Source. + */ - if (verifyDnsLength) { - var total = labels.slice(0, labels.length - 1).join(".").length; - if (total.length > 253 || total.length === 0) { - result.error = true; - } +/** + * Takes a Source and a UTF-8 character offset, and returns the corresponding + * line and column as a SourceLocation. + */ +function getLocation(source, position) { + let lastLineStart = 0; + let line = 1; - for (var i=0; i < labels.length; ++i) { - if (labels.length > 63 || labels.length === 0) { - result.error = true; - break; - } - } - } + for (const match of source.body.matchAll(LineRegExp)) { + typeof match.index === 'number' || invariant$1(false); - if (result.error) return null; - return labels.join("."); -}; + if (match.index >= position) { + break; + } -tr46.toUnicode = function(domain_name, useSTD3) { - var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL); + lastLineStart = match.index + match[0].length; + line += 1; + } return { - domain: result.string, - error: result.error + line, + column: position + 1 - lastLineStart, }; -}; - -tr46.PROCESSING_OPTIONS = PROCESSING_OPTIONS; +} -(function (module) { - const punycode = require$$0$1; - const tr46$1 = tr46; - - const specialSchemes = { - ftp: 21, - file: null, - gopher: 70, - http: 80, - https: 443, - ws: 80, - wss: 443 - }; - - const failure = Symbol("failure"); - - function countSymbols(str) { - return punycode.ucs2.decode(str).length; - } - - function at(input, idx) { - const c = input[idx]; - return isNaN(c) ? undefined : String.fromCodePoint(c); - } - - function isASCIIDigit(c) { - return c >= 0x30 && c <= 0x39; - } - - function isASCIIAlpha(c) { - return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A); - } - - function isASCIIAlphanumeric(c) { - return isASCIIAlpha(c) || isASCIIDigit(c); - } - - function isASCIIHex(c) { - return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66); - } - - function isSingleDot(buffer) { - return buffer === "." || buffer.toLowerCase() === "%2e"; - } - - function isDoubleDot(buffer) { - buffer = buffer.toLowerCase(); - return buffer === ".." || buffer === "%2e." || buffer === ".%2e" || buffer === "%2e%2e"; - } - - function isWindowsDriveLetterCodePoints(cp1, cp2) { - return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124); - } - - function isWindowsDriveLetterString(string) { - return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === ":" || string[1] === "|"); - } - - function isNormalizedWindowsDriveLetterString(string) { - return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === ":"; - } - - function containsForbiddenHostCodePoint(string) { - return string.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|%|\/|:|\?|@|\[|\\|\]/) !== -1; - } - - function containsForbiddenHostCodePointExcludingPercent(string) { - return string.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|\/|:|\?|@|\[|\\|\]/) !== -1; - } - - function isSpecialScheme(scheme) { - return specialSchemes[scheme] !== undefined; - } - - function isSpecial(url) { - return isSpecialScheme(url.scheme); - } - - function defaultPort(scheme) { - return specialSchemes[scheme]; - } - - function percentEncode(c) { - let hex = c.toString(16).toUpperCase(); - if (hex.length === 1) { - hex = "0" + hex; - } - - return "%" + hex; - } - - function utf8PercentEncode(c) { - const buf = new Buffer(c); - - let str = ""; - - for (let i = 0; i < buf.length; ++i) { - str += percentEncode(buf[i]); - } - - return str; - } - - function utf8PercentDecode(str) { - const input = new Buffer(str); - const output = []; - for (let i = 0; i < input.length; ++i) { - if (input[i] !== 37) { - output.push(input[i]); - } else if (input[i] === 37 && isASCIIHex(input[i + 1]) && isASCIIHex(input[i + 2])) { - output.push(parseInt(input.slice(i + 1, i + 3).toString(), 16)); - i += 2; - } else { - output.push(input[i]); - } - } - return new Buffer(output).toString(); - } - - function isC0ControlPercentEncode(c) { - return c <= 0x1F || c > 0x7E; - } - - const extraPathPercentEncodeSet = new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]); - function isPathPercentEncode(c) { - return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c); - } - - const extraUserinfoPercentEncodeSet = - new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]); - function isUserinfoPercentEncode(c) { - return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c); - } - - function percentEncodeChar(c, encodeSetPredicate) { - const cStr = String.fromCodePoint(c); - - if (encodeSetPredicate(c)) { - return utf8PercentEncode(cStr); - } - - return cStr; - } - - function parseIPv4Number(input) { - let R = 10; - - if (input.length >= 2 && input.charAt(0) === "0" && input.charAt(1).toLowerCase() === "x") { - input = input.substring(2); - R = 16; - } else if (input.length >= 2 && input.charAt(0) === "0") { - input = input.substring(1); - R = 8; - } - - if (input === "") { - return 0; - } - - const regex = R === 10 ? /[^0-9]/ : (R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/); - if (regex.test(input)) { - return failure; - } - - return parseInt(input, R); - } - - function parseIPv4(input) { - const parts = input.split("."); - if (parts[parts.length - 1] === "") { - if (parts.length > 1) { - parts.pop(); - } - } - - if (parts.length > 4) { - return input; - } - - const numbers = []; - for (const part of parts) { - if (part === "") { - return input; - } - const n = parseIPv4Number(part); - if (n === failure) { - return input; - } - - numbers.push(n); - } - - for (let i = 0; i < numbers.length - 1; ++i) { - if (numbers[i] > 255) { - return failure; - } - } - if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) { - return failure; - } - - let ipv4 = numbers.pop(); - let counter = 0; - - for (const n of numbers) { - ipv4 += n * Math.pow(256, 3 - counter); - ++counter; - } - - return ipv4; - } - - function serializeIPv4(address) { - let output = ""; - let n = address; - - for (let i = 1; i <= 4; ++i) { - output = String(n % 256) + output; - if (i !== 4) { - output = "." + output; - } - n = Math.floor(n / 256); - } - - return output; - } - - function parseIPv6(input) { - const address = [0, 0, 0, 0, 0, 0, 0, 0]; - let pieceIndex = 0; - let compress = null; - let pointer = 0; - - input = punycode.ucs2.decode(input); - - if (input[pointer] === 58) { - if (input[pointer + 1] !== 58) { - return failure; - } - - pointer += 2; - ++pieceIndex; - compress = pieceIndex; - } - - while (pointer < input.length) { - if (pieceIndex === 8) { - return failure; - } - - if (input[pointer] === 58) { - if (compress !== null) { - return failure; - } - ++pointer; - ++pieceIndex; - compress = pieceIndex; - continue; - } - - let value = 0; - let length = 0; - - while (length < 4 && isASCIIHex(input[pointer])) { - value = value * 0x10 + parseInt(at(input, pointer), 16); - ++pointer; - ++length; - } - - if (input[pointer] === 46) { - if (length === 0) { - return failure; - } - - pointer -= length; - - if (pieceIndex > 6) { - return failure; - } - - let numbersSeen = 0; - - while (input[pointer] !== undefined) { - let ipv4Piece = null; - - if (numbersSeen > 0) { - if (input[pointer] === 46 && numbersSeen < 4) { - ++pointer; - } else { - return failure; - } - } - - if (!isASCIIDigit(input[pointer])) { - return failure; - } - - while (isASCIIDigit(input[pointer])) { - const number = parseInt(at(input, pointer)); - if (ipv4Piece === null) { - ipv4Piece = number; - } else if (ipv4Piece === 0) { - return failure; - } else { - ipv4Piece = ipv4Piece * 10 + number; - } - if (ipv4Piece > 255) { - return failure; - } - ++pointer; - } - - address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece; - - ++numbersSeen; - - if (numbersSeen === 2 || numbersSeen === 4) { - ++pieceIndex; - } - } - - if (numbersSeen !== 4) { - return failure; - } - - break; - } else if (input[pointer] === 58) { - ++pointer; - if (input[pointer] === undefined) { - return failure; - } - } else if (input[pointer] !== undefined) { - return failure; - } - - address[pieceIndex] = value; - ++pieceIndex; - } - - if (compress !== null) { - let swaps = pieceIndex - compress; - pieceIndex = 7; - while (pieceIndex !== 0 && swaps > 0) { - const temp = address[compress + swaps - 1]; - address[compress + swaps - 1] = address[pieceIndex]; - address[pieceIndex] = temp; - --pieceIndex; - --swaps; - } - } else if (compress === null && pieceIndex !== 8) { - return failure; - } - - return address; - } - - function serializeIPv6(address) { - let output = ""; - const seqResult = findLongestZeroSequence(address); - const compress = seqResult.idx; - let ignore0 = false; - - for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) { - if (ignore0 && address[pieceIndex] === 0) { - continue; - } else if (ignore0) { - ignore0 = false; - } - - if (compress === pieceIndex) { - const separator = pieceIndex === 0 ? "::" : ":"; - output += separator; - ignore0 = true; - continue; - } - - output += address[pieceIndex].toString(16); - - if (pieceIndex !== 7) { - output += ":"; - } - } - - return output; - } - - function parseHost(input, isSpecialArg) { - if (input[0] === "[") { - if (input[input.length - 1] !== "]") { - return failure; - } - - return parseIPv6(input.substring(1, input.length - 1)); - } - - if (!isSpecialArg) { - return parseOpaqueHost(input); - } - - const domain = utf8PercentDecode(input); - const asciiDomain = tr46$1.toASCII(domain, false, tr46$1.PROCESSING_OPTIONS.NONTRANSITIONAL, false); - if (asciiDomain === null) { - return failure; - } - - if (containsForbiddenHostCodePoint(asciiDomain)) { - return failure; - } - - const ipv4Host = parseIPv4(asciiDomain); - if (typeof ipv4Host === "number" || ipv4Host === failure) { - return ipv4Host; - } - - return asciiDomain; - } - - function parseOpaqueHost(input) { - if (containsForbiddenHostCodePointExcludingPercent(input)) { - return failure; - } - - let output = ""; - const decoded = punycode.ucs2.decode(input); - for (let i = 0; i < decoded.length; ++i) { - output += percentEncodeChar(decoded[i], isC0ControlPercentEncode); - } - return output; - } - - function findLongestZeroSequence(arr) { - let maxIdx = null; - let maxLen = 1; // only find elements > 1 - let currStart = null; - let currLen = 0; - - for (let i = 0; i < arr.length; ++i) { - if (arr[i] !== 0) { - if (currLen > maxLen) { - maxIdx = currStart; - maxLen = currLen; - } - - currStart = null; - currLen = 0; - } else { - if (currStart === null) { - currStart = i; - } - ++currLen; - } - } - - // if trailing zeros - if (currLen > maxLen) { - maxIdx = currStart; - maxLen = currLen; - } - - return { - idx: maxIdx, - len: maxLen - }; - } - - function serializeHost(host) { - if (typeof host === "number") { - return serializeIPv4(host); - } - - // IPv6 serializer - if (host instanceof Array) { - return "[" + serializeIPv6(host) + "]"; - } - - return host; - } - - function trimControlChars(url) { - return url.replace(/^[\u0000-\u001F\u0020]+|[\u0000-\u001F\u0020]+$/g, ""); - } - - function trimTabAndNewline(url) { - return url.replace(/\u0009|\u000A|\u000D/g, ""); - } - - function shortenPath(url) { - const path = url.path; - if (path.length === 0) { - return; - } - if (url.scheme === "file" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) { - return; - } - - path.pop(); - } - - function includesCredentials(url) { - return url.username !== "" || url.password !== ""; - } - - function cannotHaveAUsernamePasswordPort(url) { - return url.host === null || url.host === "" || url.cannotBeABaseURL || url.scheme === "file"; - } - - function isNormalizedWindowsDriveLetter(string) { - return /^[A-Za-z]:$/.test(string); - } - - function URLStateMachine(input, base, encodingOverride, url, stateOverride) { - this.pointer = 0; - this.input = input; - this.base = base || null; - this.encodingOverride = encodingOverride || "utf-8"; - this.stateOverride = stateOverride; - this.url = url; - this.failure = false; - this.parseError = false; - - if (!this.url) { - this.url = { - scheme: "", - username: "", - password: "", - host: null, - port: null, - path: [], - query: null, - fragment: null, - - cannotBeABaseURL: false - }; - - const res = trimControlChars(this.input); - if (res !== this.input) { - this.parseError = true; - } - this.input = res; - } - - const res = trimTabAndNewline(this.input); - if (res !== this.input) { - this.parseError = true; - } - this.input = res; - - this.state = stateOverride || "scheme start"; - - this.buffer = ""; - this.atFlag = false; - this.arrFlag = false; - this.passwordTokenSeenFlag = false; - - this.input = punycode.ucs2.decode(this.input); - - for (; this.pointer <= this.input.length; ++this.pointer) { - const c = this.input[this.pointer]; - const cStr = isNaN(c) ? undefined : String.fromCodePoint(c); - - // exec state machine - const ret = this["parse " + this.state](c, cStr); - if (!ret) { - break; // terminate algorithm - } else if (ret === failure) { - this.failure = true; - break; - } - } - } - - URLStateMachine.prototype["parse scheme start"] = function parseSchemeStart(c, cStr) { - if (isASCIIAlpha(c)) { - this.buffer += cStr.toLowerCase(); - this.state = "scheme"; - } else if (!this.stateOverride) { - this.state = "no scheme"; - --this.pointer; - } else { - this.parseError = true; - return failure; - } - - return true; - }; - - URLStateMachine.prototype["parse scheme"] = function parseScheme(c, cStr) { - if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) { - this.buffer += cStr.toLowerCase(); - } else if (c === 58) { - if (this.stateOverride) { - if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) { - return false; - } - - if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) { - return false; - } - - if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === "file") { - return false; - } - - if (this.url.scheme === "file" && (this.url.host === "" || this.url.host === null)) { - return false; - } - } - this.url.scheme = this.buffer; - this.buffer = ""; - if (this.stateOverride) { - return false; - } - if (this.url.scheme === "file") { - if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) { - this.parseError = true; - } - this.state = "file"; - } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) { - this.state = "special relative or authority"; - } else if (isSpecial(this.url)) { - this.state = "special authority slashes"; - } else if (this.input[this.pointer + 1] === 47) { - this.state = "path or authority"; - ++this.pointer; - } else { - this.url.cannotBeABaseURL = true; - this.url.path.push(""); - this.state = "cannot-be-a-base-URL path"; - } - } else if (!this.stateOverride) { - this.buffer = ""; - this.state = "no scheme"; - this.pointer = -1; - } else { - this.parseError = true; - return failure; - } - - return true; - }; - - URLStateMachine.prototype["parse no scheme"] = function parseNoScheme(c) { - if (this.base === null || (this.base.cannotBeABaseURL && c !== 35)) { - return failure; - } else if (this.base.cannotBeABaseURL && c === 35) { - this.url.scheme = this.base.scheme; - this.url.path = this.base.path.slice(); - this.url.query = this.base.query; - this.url.fragment = ""; - this.url.cannotBeABaseURL = true; - this.state = "fragment"; - } else if (this.base.scheme === "file") { - this.state = "file"; - --this.pointer; - } else { - this.state = "relative"; - --this.pointer; - } - - return true; - }; - - URLStateMachine.prototype["parse special relative or authority"] = function parseSpecialRelativeOrAuthority(c) { - if (c === 47 && this.input[this.pointer + 1] === 47) { - this.state = "special authority ignore slashes"; - ++this.pointer; - } else { - this.parseError = true; - this.state = "relative"; - --this.pointer; - } - - return true; - }; - - URLStateMachine.prototype["parse path or authority"] = function parsePathOrAuthority(c) { - if (c === 47) { - this.state = "authority"; - } else { - this.state = "path"; - --this.pointer; - } - - return true; - }; - - URLStateMachine.prototype["parse relative"] = function parseRelative(c) { - this.url.scheme = this.base.scheme; - if (isNaN(c)) { - this.url.username = this.base.username; - this.url.password = this.base.password; - this.url.host = this.base.host; - this.url.port = this.base.port; - this.url.path = this.base.path.slice(); - this.url.query = this.base.query; - } else if (c === 47) { - this.state = "relative slash"; - } else if (c === 63) { - this.url.username = this.base.username; - this.url.password = this.base.password; - this.url.host = this.base.host; - this.url.port = this.base.port; - this.url.path = this.base.path.slice(); - this.url.query = ""; - this.state = "query"; - } else if (c === 35) { - this.url.username = this.base.username; - this.url.password = this.base.password; - this.url.host = this.base.host; - this.url.port = this.base.port; - this.url.path = this.base.path.slice(); - this.url.query = this.base.query; - this.url.fragment = ""; - this.state = "fragment"; - } else if (isSpecial(this.url) && c === 92) { - this.parseError = true; - this.state = "relative slash"; - } else { - this.url.username = this.base.username; - this.url.password = this.base.password; - this.url.host = this.base.host; - this.url.port = this.base.port; - this.url.path = this.base.path.slice(0, this.base.path.length - 1); - - this.state = "path"; - --this.pointer; - } - - return true; - }; - - URLStateMachine.prototype["parse relative slash"] = function parseRelativeSlash(c) { - if (isSpecial(this.url) && (c === 47 || c === 92)) { - if (c === 92) { - this.parseError = true; - } - this.state = "special authority ignore slashes"; - } else if (c === 47) { - this.state = "authority"; - } else { - this.url.username = this.base.username; - this.url.password = this.base.password; - this.url.host = this.base.host; - this.url.port = this.base.port; - this.state = "path"; - --this.pointer; - } - - return true; - }; - - URLStateMachine.prototype["parse special authority slashes"] = function parseSpecialAuthoritySlashes(c) { - if (c === 47 && this.input[this.pointer + 1] === 47) { - this.state = "special authority ignore slashes"; - ++this.pointer; - } else { - this.parseError = true; - this.state = "special authority ignore slashes"; - --this.pointer; - } - - return true; - }; - - URLStateMachine.prototype["parse special authority ignore slashes"] = function parseSpecialAuthorityIgnoreSlashes(c) { - if (c !== 47 && c !== 92) { - this.state = "authority"; - --this.pointer; - } else { - this.parseError = true; - } - - return true; - }; - - URLStateMachine.prototype["parse authority"] = function parseAuthority(c, cStr) { - if (c === 64) { - this.parseError = true; - if (this.atFlag) { - this.buffer = "%40" + this.buffer; - } - this.atFlag = true; - - // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars - const len = countSymbols(this.buffer); - for (let pointer = 0; pointer < len; ++pointer) { - const codePoint = this.buffer.codePointAt(pointer); - - if (codePoint === 58 && !this.passwordTokenSeenFlag) { - this.passwordTokenSeenFlag = true; - continue; - } - const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode); - if (this.passwordTokenSeenFlag) { - this.url.password += encodedCodePoints; - } else { - this.url.username += encodedCodePoints; - } - } - this.buffer = ""; - } else if (isNaN(c) || c === 47 || c === 63 || c === 35 || - (isSpecial(this.url) && c === 92)) { - if (this.atFlag && this.buffer === "") { - this.parseError = true; - return failure; - } - this.pointer -= countSymbols(this.buffer) + 1; - this.buffer = ""; - this.state = "host"; - } else { - this.buffer += cStr; - } - - return true; - }; - - URLStateMachine.prototype["parse hostname"] = - URLStateMachine.prototype["parse host"] = function parseHostName(c, cStr) { - if (this.stateOverride && this.url.scheme === "file") { - --this.pointer; - this.state = "file host"; - } else if (c === 58 && !this.arrFlag) { - if (this.buffer === "") { - this.parseError = true; - return failure; - } - - const host = parseHost(this.buffer, isSpecial(this.url)); - if (host === failure) { - return failure; - } - - this.url.host = host; - this.buffer = ""; - this.state = "port"; - if (this.stateOverride === "hostname") { - return false; - } - } else if (isNaN(c) || c === 47 || c === 63 || c === 35 || - (isSpecial(this.url) && c === 92)) { - --this.pointer; - if (isSpecial(this.url) && this.buffer === "") { - this.parseError = true; - return failure; - } else if (this.stateOverride && this.buffer === "" && - (includesCredentials(this.url) || this.url.port !== null)) { - this.parseError = true; - return false; - } - - const host = parseHost(this.buffer, isSpecial(this.url)); - if (host === failure) { - return failure; - } - - this.url.host = host; - this.buffer = ""; - this.state = "path start"; - if (this.stateOverride) { - return false; - } - } else { - if (c === 91) { - this.arrFlag = true; - } else if (c === 93) { - this.arrFlag = false; - } - this.buffer += cStr; - } - - return true; - }; - - URLStateMachine.prototype["parse port"] = function parsePort(c, cStr) { - if (isASCIIDigit(c)) { - this.buffer += cStr; - } else if (isNaN(c) || c === 47 || c === 63 || c === 35 || - (isSpecial(this.url) && c === 92) || - this.stateOverride) { - if (this.buffer !== "") { - const port = parseInt(this.buffer); - if (port > Math.pow(2, 16) - 1) { - this.parseError = true; - return failure; - } - this.url.port = port === defaultPort(this.url.scheme) ? null : port; - this.buffer = ""; - } - if (this.stateOverride) { - return false; - } - this.state = "path start"; - --this.pointer; - } else { - this.parseError = true; - return failure; - } - - return true; - }; - - const fileOtherwiseCodePoints = new Set([47, 92, 63, 35]); - - URLStateMachine.prototype["parse file"] = function parseFile(c) { - this.url.scheme = "file"; - - if (c === 47 || c === 92) { - if (c === 92) { - this.parseError = true; - } - this.state = "file slash"; - } else if (this.base !== null && this.base.scheme === "file") { - if (isNaN(c)) { - this.url.host = this.base.host; - this.url.path = this.base.path.slice(); - this.url.query = this.base.query; - } else if (c === 63) { - this.url.host = this.base.host; - this.url.path = this.base.path.slice(); - this.url.query = ""; - this.state = "query"; - } else if (c === 35) { - this.url.host = this.base.host; - this.url.path = this.base.path.slice(); - this.url.query = this.base.query; - this.url.fragment = ""; - this.state = "fragment"; - } else { - if (this.input.length - this.pointer - 1 === 0 || // remaining consists of 0 code points - !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) || - (this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points - !fileOtherwiseCodePoints.has(this.input[this.pointer + 2]))) { - this.url.host = this.base.host; - this.url.path = this.base.path.slice(); - shortenPath(this.url); - } else { - this.parseError = true; - } - - this.state = "path"; - --this.pointer; - } - } else { - this.state = "path"; - --this.pointer; - } - - return true; - }; - - URLStateMachine.prototype["parse file slash"] = function parseFileSlash(c) { - if (c === 47 || c === 92) { - if (c === 92) { - this.parseError = true; - } - this.state = "file host"; - } else { - if (this.base !== null && this.base.scheme === "file") { - if (isNormalizedWindowsDriveLetterString(this.base.path[0])) { - this.url.path.push(this.base.path[0]); - } else { - this.url.host = this.base.host; - } - } - this.state = "path"; - --this.pointer; - } - - return true; - }; - - URLStateMachine.prototype["parse file host"] = function parseFileHost(c, cStr) { - if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) { - --this.pointer; - if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) { - this.parseError = true; - this.state = "path"; - } else if (this.buffer === "") { - this.url.host = ""; - if (this.stateOverride) { - return false; - } - this.state = "path start"; - } else { - let host = parseHost(this.buffer, isSpecial(this.url)); - if (host === failure) { - return failure; - } - if (host === "localhost") { - host = ""; - } - this.url.host = host; - - if (this.stateOverride) { - return false; - } - - this.buffer = ""; - this.state = "path start"; - } - } else { - this.buffer += cStr; - } - - return true; - }; - - URLStateMachine.prototype["parse path start"] = function parsePathStart(c) { - if (isSpecial(this.url)) { - if (c === 92) { - this.parseError = true; - } - this.state = "path"; - - if (c !== 47 && c !== 92) { - --this.pointer; - } - } else if (!this.stateOverride && c === 63) { - this.url.query = ""; - this.state = "query"; - } else if (!this.stateOverride && c === 35) { - this.url.fragment = ""; - this.state = "fragment"; - } else if (c !== undefined) { - this.state = "path"; - if (c !== 47) { - --this.pointer; - } - } - - return true; - }; - - URLStateMachine.prototype["parse path"] = function parsePath(c) { - if (isNaN(c) || c === 47 || (isSpecial(this.url) && c === 92) || - (!this.stateOverride && (c === 63 || c === 35))) { - if (isSpecial(this.url) && c === 92) { - this.parseError = true; - } - - if (isDoubleDot(this.buffer)) { - shortenPath(this.url); - if (c !== 47 && !(isSpecial(this.url) && c === 92)) { - this.url.path.push(""); - } - } else if (isSingleDot(this.buffer) && c !== 47 && - !(isSpecial(this.url) && c === 92)) { - this.url.path.push(""); - } else if (!isSingleDot(this.buffer)) { - if (this.url.scheme === "file" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) { - if (this.url.host !== "" && this.url.host !== null) { - this.parseError = true; - this.url.host = ""; - } - this.buffer = this.buffer[0] + ":"; - } - this.url.path.push(this.buffer); - } - this.buffer = ""; - if (this.url.scheme === "file" && (c === undefined || c === 63 || c === 35)) { - while (this.url.path.length > 1 && this.url.path[0] === "") { - this.parseError = true; - this.url.path.shift(); - } - } - if (c === 63) { - this.url.query = ""; - this.state = "query"; - } - if (c === 35) { - this.url.fragment = ""; - this.state = "fragment"; - } - } else { - // TODO: If c is not a URL code point and not "%", parse error. - - if (c === 37 && - (!isASCIIHex(this.input[this.pointer + 1]) || - !isASCIIHex(this.input[this.pointer + 2]))) { - this.parseError = true; - } - - this.buffer += percentEncodeChar(c, isPathPercentEncode); - } - - return true; - }; - - URLStateMachine.prototype["parse cannot-be-a-base-URL path"] = function parseCannotBeABaseURLPath(c) { - if (c === 63) { - this.url.query = ""; - this.state = "query"; - } else if (c === 35) { - this.url.fragment = ""; - this.state = "fragment"; - } else { - // TODO: Add: not a URL code point - if (!isNaN(c) && c !== 37) { - this.parseError = true; - } - - if (c === 37 && - (!isASCIIHex(this.input[this.pointer + 1]) || - !isASCIIHex(this.input[this.pointer + 2]))) { - this.parseError = true; - } - - if (!isNaN(c)) { - this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode); - } - } - - return true; - }; - - URLStateMachine.prototype["parse query"] = function parseQuery(c, cStr) { - if (isNaN(c) || (!this.stateOverride && c === 35)) { - if (!isSpecial(this.url) || this.url.scheme === "ws" || this.url.scheme === "wss") { - this.encodingOverride = "utf-8"; - } - - const buffer = new Buffer(this.buffer); // TODO: Use encoding override instead - for (let i = 0; i < buffer.length; ++i) { - if (buffer[i] < 0x21 || buffer[i] > 0x7E || buffer[i] === 0x22 || buffer[i] === 0x23 || - buffer[i] === 0x3C || buffer[i] === 0x3E) { - this.url.query += percentEncode(buffer[i]); - } else { - this.url.query += String.fromCodePoint(buffer[i]); - } - } - - this.buffer = ""; - if (c === 35) { - this.url.fragment = ""; - this.state = "fragment"; - } - } else { - // TODO: If c is not a URL code point and not "%", parse error. - if (c === 37 && - (!isASCIIHex(this.input[this.pointer + 1]) || - !isASCIIHex(this.input[this.pointer + 2]))) { - this.parseError = true; - } - - this.buffer += cStr; - } - - return true; - }; - - URLStateMachine.prototype["parse fragment"] = function parseFragment(c) { - if (isNaN(c)) ; else if (c === 0x0) { - this.parseError = true; - } else { - // TODO: If c is not a URL code point and not "%", parse error. - if (c === 37 && - (!isASCIIHex(this.input[this.pointer + 1]) || - !isASCIIHex(this.input[this.pointer + 2]))) { - this.parseError = true; - } - - this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode); - } - - return true; - }; - - function serializeURL(url, excludeFragment) { - let output = url.scheme + ":"; - if (url.host !== null) { - output += "//"; - - if (url.username !== "" || url.password !== "") { - output += url.username; - if (url.password !== "") { - output += ":" + url.password; - } - output += "@"; - } - - output += serializeHost(url.host); - - if (url.port !== null) { - output += ":" + url.port; - } - } else if (url.host === null && url.scheme === "file") { - output += "//"; - } - - if (url.cannotBeABaseURL) { - output += url.path[0]; - } else { - for (const string of url.path) { - output += "/" + string; - } - } - - if (url.query !== null) { - output += "?" + url.query; - } - - if (!excludeFragment && url.fragment !== null) { - output += "#" + url.fragment; - } - - return output; - } - - function serializeOrigin(tuple) { - let result = tuple.scheme + "://"; - result += serializeHost(tuple.host); - - if (tuple.port !== null) { - result += ":" + tuple.port; - } - - return result; - } - - module.exports.serializeURL = serializeURL; - - module.exports.serializeURLOrigin = function (url) { - // https://url.spec.whatwg.org/#concept-url-origin - switch (url.scheme) { - case "blob": - try { - return module.exports.serializeURLOrigin(module.exports.parseURL(url.path[0])); - } catch (e) { - // serializing an opaque origin returns "null" - return "null"; - } - case "ftp": - case "gopher": - case "http": - case "https": - case "ws": - case "wss": - return serializeOrigin({ - scheme: url.scheme, - host: url.host, - port: url.port - }); - case "file": - // spec says "exercise to the reader", chrome says "file://" - return "file://"; - default: - // serializing an opaque origin returns "null" - return "null"; - } - }; - - module.exports.basicURLParse = function (input, options) { - if (options === undefined) { - options = {}; - } - - const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride); - if (usm.failure) { - return "failure"; - } - - return usm.url; - }; - - module.exports.setTheUsername = function (url, username) { - url.username = ""; - const decoded = punycode.ucs2.decode(username); - for (let i = 0; i < decoded.length; ++i) { - url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode); - } - }; - - module.exports.setThePassword = function (url, password) { - url.password = ""; - const decoded = punycode.ucs2.decode(password); - for (let i = 0; i < decoded.length; ++i) { - url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode); - } - }; - - module.exports.serializeHost = serializeHost; - - module.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort; - - module.exports.serializeInteger = function (integer) { - return String(integer); - }; - - module.exports.parseURL = function (input, options) { - if (options === undefined) { - options = {}; - } - - // We don't handle blobs, so this just delegates: - return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride }); - }; -} (urlStateMachine)); - -const usm = urlStateMachine.exports; +/** + * Render a helpful description of the location in the GraphQL Source document. + */ +function printLocation(location) { + return printSourceLocation( + location.source, + getLocation(location.source, location.start), + ); +} +/** + * Render a helpful description of the location in the GraphQL Source document. + */ -URLImpl.implementation = class URLImpl { - constructor(constructorArgs) { - const url = constructorArgs[0]; - const base = constructorArgs[1]; +function printSourceLocation(source, sourceLocation) { + const firstLineColumnOffset = source.locationOffset.column - 1; + const body = ''.padStart(firstLineColumnOffset) + source.body; + const lineIndex = sourceLocation.line - 1; + const lineOffset = source.locationOffset.line - 1; + const lineNum = sourceLocation.line + lineOffset; + const columnOffset = sourceLocation.line === 1 ? firstLineColumnOffset : 0; + const columnNum = sourceLocation.column + columnOffset; + const locationStr = `${source.name}:${lineNum}:${columnNum}\n`; + const lines = body.split(/\r\n|[\n\r]/g); + const locationLine = lines[lineIndex]; // Special case for minified documents - let parsedBase = null; - if (base !== undefined) { - parsedBase = usm.basicURLParse(base); - if (parsedBase === "failure") { - throw new TypeError("Invalid base URL"); - } - } + if (locationLine.length > 120) { + const subLineIndex = Math.floor(columnNum / 80); + const subLineColumnNum = columnNum % 80; + const subLines = []; - const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase }); - if (parsedURL === "failure") { - throw new TypeError("Invalid URL"); + for (let i = 0; i < locationLine.length; i += 80) { + subLines.push(locationLine.slice(i, i + 80)); } - this._url = parsedURL; - - // TODO: query stuff + return ( + locationStr + + printPrefixedLines([ + [`${lineNum} |`, subLines[0]], + ...subLines.slice(1, subLineIndex + 1).map((subLine) => ['|', subLine]), + ['|', '^'.padStart(subLineColumnNum)], + ['|', subLines[subLineIndex + 1]], + ]) + ); } - get href() { - return usm.serializeURL(this._url); - } + return ( + locationStr + + printPrefixedLines([ + // Lines specified like this: ["prefix", "string"], + [`${lineNum - 1} |`, lines[lineIndex - 1]], + [`${lineNum} |`, locationLine], + ['|', '^'.padStart(columnNum)], + [`${lineNum + 1} |`, lines[lineIndex + 1]], + ]) + ); +} - set href(v) { - const parsedURL = usm.basicURLParse(v); - if (parsedURL === "failure") { - throw new TypeError("Invalid URL"); - } +function printPrefixedLines(lines) { + const existingLines = lines.filter(([_, line]) => line !== undefined); + const padLen = Math.max(...existingLines.map(([prefix]) => prefix.length)); + return existingLines + .map(([prefix, line]) => prefix.padStart(padLen) + (line ? ' ' + line : '')) + .join('\n'); +} - this._url = parsedURL; - } +function toNormalizedOptions(args) { + const firstArg = args[0]; - get origin() { - return usm.serializeURLOrigin(this._url); + if (firstArg == null || 'kind' in firstArg || 'length' in firstArg) { + return { + nodes: firstArg, + source: args[1], + positions: args[2], + path: args[3], + originalError: args[4], + extensions: args[5], + }; } - get protocol() { - return this._url.scheme + ":"; - } + return firstArg; +} +/** + * A GraphQLError describes an Error found during the parse, validate, or + * execute phases of performing a GraphQL operation. In addition to a message + * and stack trace, it also includes information about the locations in a + * GraphQL document and/or execution result that correspond to the Error. + */ - set protocol(v) { - usm.basicURLParse(v + ":", { url: this._url, stateOverride: "scheme start" }); - } +class GraphQLError extends Error { + /** + * An array of `{ line, column }` locations within the source GraphQL document + * which correspond to this error. + * + * Errors during validation often contain multiple locations, for example to + * point out two things with the same name. Errors during execution include a + * single location, the field which produced the error. + * + * Enumerable, and appears in the result of JSON.stringify(). + */ - get username() { - return this._url.username; - } + /** + * An array describing the JSON-path into the execution response which + * corresponds to this error. Only included for errors during execution. + * + * Enumerable, and appears in the result of JSON.stringify(). + */ - set username(v) { - if (usm.cannotHaveAUsernamePasswordPort(this._url)) { - return; - } + /** + * An array of GraphQL AST Nodes corresponding to this error. + */ - usm.setTheUsername(this._url, v); - } + /** + * The source GraphQL document for the first location of this error. + * + * Note that if this Error represents more than one node, the source may not + * represent nodes after the first node. + */ - get password() { - return this._url.password; - } + /** + * An array of character offsets within the source GraphQL document + * which correspond to this error. + */ - set password(v) { - if (usm.cannotHaveAUsernamePasswordPort(this._url)) { - return; - } + /** + * The original error thrown from a field resolver during execution. + */ - usm.setThePassword(this._url, v); - } + /** + * Extension fields to add to the formatted error. + */ - get host() { - const url = this._url; + /** + * @deprecated Please use the `GraphQLErrorOptions` constructor overload instead. + */ + constructor(message, ...rawArgs) { + var _this$nodes, _nodeLocations$, _ref; - if (url.host === null) { - return ""; - } + const { nodes, source, positions, path, originalError, extensions } = + toNormalizedOptions(rawArgs); + super(message); + this.name = 'GraphQLError'; + this.path = path !== null && path !== void 0 ? path : undefined; + this.originalError = + originalError !== null && originalError !== void 0 + ? originalError + : undefined; // Compute list of blame nodes. - if (url.port === null) { - return usm.serializeHost(url.host); - } + this.nodes = undefinedIfEmpty( + Array.isArray(nodes) ? nodes : nodes ? [nodes] : undefined, + ); + const nodeLocations = undefinedIfEmpty( + (_this$nodes = this.nodes) === null || _this$nodes === void 0 + ? void 0 + : _this$nodes.map((node) => node.loc).filter((loc) => loc != null), + ); // Compute locations in the source for the given nodes/positions. - return usm.serializeHost(url.host) + ":" + usm.serializeInteger(url.port); - } + this.source = + source !== null && source !== void 0 + ? source + : nodeLocations === null || nodeLocations === void 0 + ? void 0 + : (_nodeLocations$ = nodeLocations[0]) === null || + _nodeLocations$ === void 0 + ? void 0 + : _nodeLocations$.source; + this.positions = + positions !== null && positions !== void 0 + ? positions + : nodeLocations === null || nodeLocations === void 0 + ? void 0 + : nodeLocations.map((loc) => loc.start); + this.locations = + positions && source + ? positions.map((pos) => getLocation(source, pos)) + : nodeLocations === null || nodeLocations === void 0 + ? void 0 + : nodeLocations.map((loc) => getLocation(loc.source, loc.start)); + const originalExtensions = isObjectLike( + originalError === null || originalError === void 0 + ? void 0 + : originalError.extensions, + ) + ? originalError === null || originalError === void 0 + ? void 0 + : originalError.extensions + : undefined; + this.extensions = + (_ref = + extensions !== null && extensions !== void 0 + ? extensions + : originalExtensions) !== null && _ref !== void 0 + ? _ref + : Object.create(null); // Only properties prescribed by the spec should be enumerable. + // Keep the rest as non-enumerable. - set host(v) { - if (this._url.cannotBeABaseURL) { - return; - } + Object.defineProperties(this, { + message: { + writable: true, + enumerable: true, + }, + name: { + enumerable: false, + }, + nodes: { + enumerable: false, + }, + source: { + enumerable: false, + }, + positions: { + enumerable: false, + }, + originalError: { + enumerable: false, + }, + }); // Include (non-enumerable) stack trace. - usm.basicURLParse(v, { url: this._url, stateOverride: "host" }); - } + /* c8 ignore start */ + // FIXME: https://github.com/graphql/graphql-js/issues/2317 - get hostname() { - if (this._url.host === null) { - return ""; + if ( + originalError !== null && + originalError !== void 0 && + originalError.stack + ) { + Object.defineProperty(this, 'stack', { + value: originalError.stack, + writable: true, + configurable: true, + }); + } else if (Error.captureStackTrace) { + Error.captureStackTrace(this, GraphQLError); + } else { + Object.defineProperty(this, 'stack', { + value: Error().stack, + writable: true, + configurable: true, + }); } - - return usm.serializeHost(this._url.host); + /* c8 ignore stop */ } - set hostname(v) { - if (this._url.cannotBeABaseURL) { - return; - } - - usm.basicURLParse(v, { url: this._url, stateOverride: "hostname" }); + get [Symbol.toStringTag]() { + return 'GraphQLError'; } - get port() { - if (this._url.port === null) { - return ""; + toString() { + let output = this.message; + + if (this.nodes) { + for (const node of this.nodes) { + if (node.loc) { + output += '\n\n' + printLocation(node.loc); + } + } + } else if (this.source && this.locations) { + for (const location of this.locations) { + output += '\n\n' + printSourceLocation(this.source, location); + } } - return usm.serializeInteger(this._url.port); + return output; } - set port(v) { - if (usm.cannotHaveAUsernamePasswordPort(this._url)) { - return; - } + toJSON() { + const formattedError = { + message: this.message, + }; - if (v === "") { - this._url.port = null; - } else { - usm.basicURLParse(v, { url: this._url, stateOverride: "port" }); + if (this.locations != null) { + formattedError.locations = this.locations; } - } - get pathname() { - if (this._url.cannotBeABaseURL) { - return this._url.path[0]; + if (this.path != null) { + formattedError.path = this.path; } - if (this._url.path.length === 0) { - return ""; + if (this.extensions != null && Object.keys(this.extensions).length > 0) { + formattedError.extensions = this.extensions; } - return "/" + this._url.path.join("/"); + return formattedError; } +} - set pathname(v) { - if (this._url.cannotBeABaseURL) { - return; - } +function undefinedIfEmpty(array) { + return array === undefined || array.length === 0 ? undefined : array; +} - this._url.path = []; - usm.basicURLParse(v, { url: this._url, stateOverride: "path start" }); - } +/** + * Produces a GraphQLError representing a syntax error, containing useful + * descriptive information about the syntax error's position in the source. + */ - get search() { - if (this._url.query === null || this._url.query === "") { - return ""; - } +function syntaxError(source, position, description) { + return new GraphQLError(`Syntax Error: ${description}`, { + source, + positions: [position], + }); +} - return "?" + this._url.query; - } +/** + * Contains a range of UTF-8 character offsets and token references that + * identify the region of the source from which the AST derived. + */ +class Location { + /** + * The character offset at which this Node begins. + */ - set search(v) { - // TODO: query stuff + /** + * The character offset at which this Node ends. + */ - const url = this._url; + /** + * The Token at which this Node begins. + */ - if (v === "") { - url.query = null; - return; - } + /** + * The Token at which this Node ends. + */ - const input = v[0] === "?" ? v.substring(1) : v; - url.query = ""; - usm.basicURLParse(input, { url, stateOverride: "query" }); + /** + * The Source document the AST represents. + */ + constructor(startToken, endToken, source) { + this.start = startToken.start; + this.end = endToken.end; + this.startToken = startToken; + this.endToken = endToken; + this.source = source; } - get hash() { - if (this._url.fragment === null || this._url.fragment === "") { - return ""; - } - - return "#" + this._url.fragment; - } - - set hash(v) { - if (v === "") { - this._url.fragment = null; - return; - } - - const input = v[0] === "#" ? v.substring(1) : v; - this._url.fragment = ""; - usm.basicURLParse(input, { url: this._url, stateOverride: "fragment" }); + get [Symbol.toStringTag]() { + return 'Location'; } toJSON() { - return this.href; + return { + start: this.start, + end: this.end, + }; } -}; - -(function (module) { - - const conversions = lib$2; - const utils = utils$2.exports; - const Impl = URLImpl; - - const impl = utils.implSymbol; - - function URL(url) { - if (!this || this[impl] || !(this instanceof URL)) { - throw new TypeError("Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function."); - } - if (arguments.length < 1) { - throw new TypeError("Failed to construct 'URL': 1 argument required, but only " + arguments.length + " present."); - } - const args = []; - for (let i = 0; i < arguments.length && i < 2; ++i) { - args[i] = arguments[i]; - } - args[0] = conversions["USVString"](args[0]); - if (args[1] !== undefined) { - args[1] = conversions["USVString"](args[1]); - } - - module.exports.setup(this, args); - } - - URL.prototype.toJSON = function toJSON() { - if (!this || !module.exports.is(this)) { - throw new TypeError("Illegal invocation"); - } - const args = []; - for (let i = 0; i < arguments.length && i < 0; ++i) { - args[i] = arguments[i]; - } - return this[impl].toJSON.apply(this[impl], args); - }; - Object.defineProperty(URL.prototype, "href", { - get() { - return this[impl].href; - }, - set(V) { - V = conversions["USVString"](V); - this[impl].href = V; - }, - enumerable: true, - configurable: true - }); - - URL.prototype.toString = function () { - if (!this || !module.exports.is(this)) { - throw new TypeError("Illegal invocation"); - } - return this.href; - }; - - Object.defineProperty(URL.prototype, "origin", { - get() { - return this[impl].origin; - }, - enumerable: true, - configurable: true - }); - - Object.defineProperty(URL.prototype, "protocol", { - get() { - return this[impl].protocol; - }, - set(V) { - V = conversions["USVString"](V); - this[impl].protocol = V; - }, - enumerable: true, - configurable: true - }); - - Object.defineProperty(URL.prototype, "username", { - get() { - return this[impl].username; - }, - set(V) { - V = conversions["USVString"](V); - this[impl].username = V; - }, - enumerable: true, - configurable: true - }); - - Object.defineProperty(URL.prototype, "password", { - get() { - return this[impl].password; - }, - set(V) { - V = conversions["USVString"](V); - this[impl].password = V; - }, - enumerable: true, - configurable: true - }); - - Object.defineProperty(URL.prototype, "host", { - get() { - return this[impl].host; - }, - set(V) { - V = conversions["USVString"](V); - this[impl].host = V; - }, - enumerable: true, - configurable: true - }); +} +/** + * Represents a range of characters represented by a lexical token + * within a Source. + */ - Object.defineProperty(URL.prototype, "hostname", { - get() { - return this[impl].hostname; - }, - set(V) { - V = conversions["USVString"](V); - this[impl].hostname = V; - }, - enumerable: true, - configurable: true - }); +class Token { + /** + * The kind of Token. + */ - Object.defineProperty(URL.prototype, "port", { - get() { - return this[impl].port; - }, - set(V) { - V = conversions["USVString"](V); - this[impl].port = V; - }, - enumerable: true, - configurable: true - }); + /** + * The character offset at which this Node begins. + */ - Object.defineProperty(URL.prototype, "pathname", { - get() { - return this[impl].pathname; - }, - set(V) { - V = conversions["USVString"](V); - this[impl].pathname = V; - }, - enumerable: true, - configurable: true - }); + /** + * The character offset at which this Node ends. + */ - Object.defineProperty(URL.prototype, "search", { - get() { - return this[impl].search; - }, - set(V) { - V = conversions["USVString"](V); - this[impl].search = V; - }, - enumerable: true, - configurable: true - }); + /** + * The 1-indexed line number on which this Token appears. + */ - Object.defineProperty(URL.prototype, "hash", { - get() { - return this[impl].hash; - }, - set(V) { - V = conversions["USVString"](V); - this[impl].hash = V; - }, - enumerable: true, - configurable: true - }); + /** + * The 1-indexed column number at which this Token begins. + */ + /** + * For non-punctuation tokens, represents the interpreted value of the token. + * + * Note: is undefined for punctuation tokens, but typed as string for + * convenience in the parser. + */ - module.exports = { - is(obj) { - return !!obj && obj[impl] instanceof Impl.implementation; - }, - create(constructorArgs, privateData) { - let obj = Object.create(URL.prototype); - this.setup(obj, constructorArgs, privateData); - return obj; - }, - setup(obj, constructorArgs, privateData) { - if (!privateData) privateData = {}; - privateData.wrapper = obj; - - obj[impl] = new Impl.implementation(constructorArgs, privateData); - obj[impl][utils.wrapperSymbol] = obj; - }, - interface: URL, - expose: { - Window: { URL: URL }, - Worker: { URL: URL } - } - }; -} (URL$2)); - -publicApi.URL = URL$2.exports.interface; -publicApi.serializeURL = urlStateMachine.exports.serializeURL; -publicApi.serializeURLOrigin = urlStateMachine.exports.serializeURLOrigin; -publicApi.basicURLParse = urlStateMachine.exports.basicURLParse; -publicApi.setTheUsername = urlStateMachine.exports.setTheUsername; -publicApi.setThePassword = urlStateMachine.exports.setThePassword; -publicApi.serializeHost = urlStateMachine.exports.serializeHost; -publicApi.serializeInteger = urlStateMachine.exports.serializeInteger; -publicApi.parseURL = urlStateMachine.exports.parseURL; - -// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js - -// fix for "Readable" isn't a named export issue -const Readable = Stream$2.Readable; - -const BUFFER = Symbol('buffer'); -const TYPE = Symbol('type'); - -class Blob$2 { - constructor() { - this[TYPE] = ''; - - const blobParts = arguments[0]; - const options = arguments[1]; - - const buffers = []; - let size = 0; - - if (blobParts) { - const a = blobParts; - const length = Number(a.length); - for (let i = 0; i < length; i++) { - const element = a[i]; - let buffer; - if (element instanceof Buffer) { - buffer = element; - } else if (ArrayBuffer.isView(element)) { - buffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength); - } else if (element instanceof ArrayBuffer) { - buffer = Buffer.from(element); - } else if (element instanceof Blob$2) { - buffer = element[BUFFER]; - } else { - buffer = Buffer.from(typeof element === 'string' ? element : String(element)); - } - size += buffer.length; - buffers.push(buffer); - } - } + /** + * Tokens exist as nodes in a double-linked-list amongst all tokens + * including ignored tokens. is always the first node and + * the last. + */ + constructor(kind, start, end, line, column, value) { + this.kind = kind; + this.start = start; + this.end = end; + this.line = line; + this.column = column; // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - this[BUFFER] = Buffer.concat(buffers); + this.value = value; + this.prev = null; + this.next = null; + } - let type = options && options.type !== undefined && String(options.type).toLowerCase(); - if (type && !/[^\u0020-\u007E]/.test(type)) { - this[TYPE] = type; - } - } - get size() { - return this[BUFFER].length; - } - get type() { - return this[TYPE]; - } - text() { - return Promise.resolve(this[BUFFER].toString()); - } - arrayBuffer() { - const buf = this[BUFFER]; - const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); - return Promise.resolve(ab); - } - stream() { - const readable = new Readable(); - readable._read = function () {}; - readable.push(this[BUFFER]); - readable.push(null); - return readable; - } - toString() { - return '[object Blob]'; - } - slice() { - const size = this.size; - - const start = arguments[0]; - const end = arguments[1]; - let relativeStart, relativeEnd; - if (start === undefined) { - relativeStart = 0; - } else if (start < 0) { - relativeStart = Math.max(size + start, 0); - } else { - relativeStart = Math.min(start, size); - } - if (end === undefined) { - relativeEnd = size; - } else if (end < 0) { - relativeEnd = Math.max(size + end, 0); - } else { - relativeEnd = Math.min(end, size); - } - const span = Math.max(relativeEnd - relativeStart, 0); + get [Symbol.toStringTag]() { + return 'Token'; + } - const buffer = this[BUFFER]; - const slicedBuffer = buffer.slice(relativeStart, relativeStart + span); - const blob = new Blob$2([], { type: arguments[2] }); - blob[BUFFER] = slicedBuffer; - return blob; - } + toJSON() { + return { + kind: this.kind, + value: this.value, + line: this.line, + column: this.column, + }; + } } - -Object.defineProperties(Blob$2.prototype, { - size: { enumerable: true }, - type: { enumerable: true }, - slice: { enumerable: true } -}); - -Object.defineProperty(Blob$2.prototype, Symbol.toStringTag, { - value: 'Blob', - writable: false, - enumerable: false, - configurable: true -}); - /** - * fetch-error.js - * - * FetchError interface for operational errors + * The list of all possible AST node types. */ /** - * Create FetchError instance - * - * @param String message Error message for human - * @param String type Error type for machine - * @param String systemError For Node.js system error - * @return FetchError + * @internal + */ +const QueryDocumentKeys = { + Name: [], + Document: ['definitions'], + OperationDefinition: [ + 'name', + 'variableDefinitions', + 'directives', + 'selectionSet', + ], + VariableDefinition: ['variable', 'type', 'defaultValue', 'directives'], + Variable: ['name'], + SelectionSet: ['selections'], + Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet'], + Argument: ['name', 'value'], + FragmentSpread: ['name', 'directives'], + InlineFragment: ['typeCondition', 'directives', 'selectionSet'], + FragmentDefinition: [ + 'name', // Note: fragment variable definitions are deprecated and will removed in v17.0.0 + 'variableDefinitions', + 'typeCondition', + 'directives', + 'selectionSet', + ], + IntValue: [], + FloatValue: [], + StringValue: [], + BooleanValue: [], + NullValue: [], + EnumValue: [], + ListValue: ['values'], + ObjectValue: ['fields'], + ObjectField: ['name', 'value'], + Directive: ['name', 'arguments'], + NamedType: ['name'], + ListType: ['type'], + NonNullType: ['type'], + SchemaDefinition: ['description', 'directives', 'operationTypes'], + OperationTypeDefinition: ['type'], + ScalarTypeDefinition: ['description', 'name', 'directives'], + ObjectTypeDefinition: [ + 'description', + 'name', + 'interfaces', + 'directives', + 'fields', + ], + FieldDefinition: ['description', 'name', 'arguments', 'type', 'directives'], + InputValueDefinition: [ + 'description', + 'name', + 'type', + 'defaultValue', + 'directives', + ], + InterfaceTypeDefinition: [ + 'description', + 'name', + 'interfaces', + 'directives', + 'fields', + ], + UnionTypeDefinition: ['description', 'name', 'directives', 'types'], + EnumTypeDefinition: ['description', 'name', 'directives', 'values'], + EnumValueDefinition: ['description', 'name', 'directives'], + InputObjectTypeDefinition: ['description', 'name', 'directives', 'fields'], + DirectiveDefinition: ['description', 'name', 'arguments', 'locations'], + SchemaExtension: ['directives', 'operationTypes'], + ScalarTypeExtension: ['name', 'directives'], + ObjectTypeExtension: ['name', 'interfaces', 'directives', 'fields'], + InterfaceTypeExtension: ['name', 'interfaces', 'directives', 'fields'], + UnionTypeExtension: ['name', 'directives', 'types'], + EnumTypeExtension: ['name', 'directives', 'values'], + InputObjectTypeExtension: ['name', 'directives', 'fields'], +}; +const kindValues = new Set(Object.keys(QueryDocumentKeys)); +/** + * @internal */ -function FetchError(message, type, systemError) { - Error.call(this, message); - - this.message = message; - this.type = type; - - // when err.type is `system`, err.code contains system error code - if (systemError) { - this.code = this.errno = systemError.code; - } - // hide custom error implementation details from end-users - Error.captureStackTrace(this, this.constructor); +function isNode(maybeNode) { + const maybeKind = + maybeNode === null || maybeNode === void 0 ? void 0 : maybeNode.kind; + return typeof maybeKind === 'string' && kindValues.has(maybeKind); } +/** Name */ -FetchError.prototype = Object.create(Error.prototype); -FetchError.prototype.constructor = FetchError; -FetchError.prototype.name = 'FetchError'; - -let convert; -try { - convert = require('encoding').convert; -} catch (e) {} +var OperationTypeNode; -const INTERNALS = Symbol('Body internals'); +(function (OperationTypeNode) { + OperationTypeNode['QUERY'] = 'query'; + OperationTypeNode['MUTATION'] = 'mutation'; + OperationTypeNode['SUBSCRIPTION'] = 'subscription'; +})(OperationTypeNode || (OperationTypeNode = {})); -// fix an issue where "PassThrough" isn't a named export for node <10 -const PassThrough = Stream$2.PassThrough; +/** + * The set of allowed directive location values. + */ +var DirectiveLocation$1; +(function (DirectiveLocation) { + DirectiveLocation['QUERY'] = 'QUERY'; + DirectiveLocation['MUTATION'] = 'MUTATION'; + DirectiveLocation['SUBSCRIPTION'] = 'SUBSCRIPTION'; + DirectiveLocation['FIELD'] = 'FIELD'; + DirectiveLocation['FRAGMENT_DEFINITION'] = 'FRAGMENT_DEFINITION'; + DirectiveLocation['FRAGMENT_SPREAD'] = 'FRAGMENT_SPREAD'; + DirectiveLocation['INLINE_FRAGMENT'] = 'INLINE_FRAGMENT'; + DirectiveLocation['VARIABLE_DEFINITION'] = 'VARIABLE_DEFINITION'; + DirectiveLocation['SCHEMA'] = 'SCHEMA'; + DirectiveLocation['SCALAR'] = 'SCALAR'; + DirectiveLocation['OBJECT'] = 'OBJECT'; + DirectiveLocation['FIELD_DEFINITION'] = 'FIELD_DEFINITION'; + DirectiveLocation['ARGUMENT_DEFINITION'] = 'ARGUMENT_DEFINITION'; + DirectiveLocation['INTERFACE'] = 'INTERFACE'; + DirectiveLocation['UNION'] = 'UNION'; + DirectiveLocation['ENUM'] = 'ENUM'; + DirectiveLocation['ENUM_VALUE'] = 'ENUM_VALUE'; + DirectiveLocation['INPUT_OBJECT'] = 'INPUT_OBJECT'; + DirectiveLocation['INPUT_FIELD_DEFINITION'] = 'INPUT_FIELD_DEFINITION'; +})(DirectiveLocation$1 || (DirectiveLocation$1 = {})); /** - * Body mixin - * - * Ref: https://fetch.spec.whatwg.org/#body + * The enum type representing the directive location values. * - * @param Stream body Readable stream - * @param Object opts Response options - * @return Void + * @deprecated Please use `DirectiveLocation`. Will be remove in v17. */ -function Body$1(body) { - var _this = this; - - var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, - _ref$size = _ref.size; - - let size = _ref$size === undefined ? 0 : _ref$size; - var _ref$timeout = _ref.timeout; - let timeout = _ref$timeout === undefined ? 0 : _ref$timeout; - - if (body == null) { - // body is undefined or null - body = null; - } else if (isURLSearchParams(body)) { - // body is a URLSearchParams - body = Buffer.from(body.toString()); - } else if (isBlob$1(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') { - // body is ArrayBuffer - body = Buffer.from(body); - } else if (ArrayBuffer.isView(body)) { - // body is ArrayBufferView - body = Buffer.from(body.buffer, body.byteOffset, body.byteLength); - } else if (body instanceof Stream$2) ; else { - // none of the above - // coerce to string then buffer - body = Buffer.from(String(body)); - } - this[INTERNALS] = { - body, - disturbed: false, - error: null - }; - this.size = size; - this.timeout = timeout; - if (body instanceof Stream$2) { - body.on('error', function (err) { - const error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err); - _this[INTERNALS].error = error; - }); - } -} +/** + * The set of allowed kind values for AST nodes. + */ +var Kind; -Body$1.prototype = { - get body() { - return this[INTERNALS].body; - }, - - get bodyUsed() { - return this[INTERNALS].disturbed; - }, - - /** - * Decode response as ArrayBuffer - * - * @return Promise - */ - arrayBuffer() { - return consumeBody.call(this).then(function (buf) { - return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); - }); - }, - - /** - * Return raw response as Blob - * - * @return Promise - */ - blob() { - let ct = this.headers && this.headers.get('content-type') || ''; - return consumeBody.call(this).then(function (buf) { - return Object.assign( - // Prevent copying - new Blob$2([], { - type: ct.toLowerCase() - }), { - [BUFFER]: buf - }); - }); - }, - - /** - * Decode response as json - * - * @return Promise - */ - json() { - var _this2 = this; - - return consumeBody.call(this).then(function (buffer) { - try { - return JSON.parse(buffer.toString()); - } catch (err) { - return Body$1.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json')); - } - }); - }, +(function (Kind) { + Kind['NAME'] = 'Name'; + Kind['DOCUMENT'] = 'Document'; + Kind['OPERATION_DEFINITION'] = 'OperationDefinition'; + Kind['VARIABLE_DEFINITION'] = 'VariableDefinition'; + Kind['SELECTION_SET'] = 'SelectionSet'; + Kind['FIELD'] = 'Field'; + Kind['ARGUMENT'] = 'Argument'; + Kind['FRAGMENT_SPREAD'] = 'FragmentSpread'; + Kind['INLINE_FRAGMENT'] = 'InlineFragment'; + Kind['FRAGMENT_DEFINITION'] = 'FragmentDefinition'; + Kind['VARIABLE'] = 'Variable'; + Kind['INT'] = 'IntValue'; + Kind['FLOAT'] = 'FloatValue'; + Kind['STRING'] = 'StringValue'; + Kind['BOOLEAN'] = 'BooleanValue'; + Kind['NULL'] = 'NullValue'; + Kind['ENUM'] = 'EnumValue'; + Kind['LIST'] = 'ListValue'; + Kind['OBJECT'] = 'ObjectValue'; + Kind['OBJECT_FIELD'] = 'ObjectField'; + Kind['DIRECTIVE'] = 'Directive'; + Kind['NAMED_TYPE'] = 'NamedType'; + Kind['LIST_TYPE'] = 'ListType'; + Kind['NON_NULL_TYPE'] = 'NonNullType'; + Kind['SCHEMA_DEFINITION'] = 'SchemaDefinition'; + Kind['OPERATION_TYPE_DEFINITION'] = 'OperationTypeDefinition'; + Kind['SCALAR_TYPE_DEFINITION'] = 'ScalarTypeDefinition'; + Kind['OBJECT_TYPE_DEFINITION'] = 'ObjectTypeDefinition'; + Kind['FIELD_DEFINITION'] = 'FieldDefinition'; + Kind['INPUT_VALUE_DEFINITION'] = 'InputValueDefinition'; + Kind['INTERFACE_TYPE_DEFINITION'] = 'InterfaceTypeDefinition'; + Kind['UNION_TYPE_DEFINITION'] = 'UnionTypeDefinition'; + Kind['ENUM_TYPE_DEFINITION'] = 'EnumTypeDefinition'; + Kind['ENUM_VALUE_DEFINITION'] = 'EnumValueDefinition'; + Kind['INPUT_OBJECT_TYPE_DEFINITION'] = 'InputObjectTypeDefinition'; + Kind['DIRECTIVE_DEFINITION'] = 'DirectiveDefinition'; + Kind['SCHEMA_EXTENSION'] = 'SchemaExtension'; + Kind['SCALAR_TYPE_EXTENSION'] = 'ScalarTypeExtension'; + Kind['OBJECT_TYPE_EXTENSION'] = 'ObjectTypeExtension'; + Kind['INTERFACE_TYPE_EXTENSION'] = 'InterfaceTypeExtension'; + Kind['UNION_TYPE_EXTENSION'] = 'UnionTypeExtension'; + Kind['ENUM_TYPE_EXTENSION'] = 'EnumTypeExtension'; + Kind['INPUT_OBJECT_TYPE_EXTENSION'] = 'InputObjectTypeExtension'; +})(Kind || (Kind = {})); +/** + * The enum type representing the possible kind values of AST nodes. + * + * @deprecated Please use `Kind`. Will be remove in v17. + */ - /** - * Decode response as text - * - * @return Promise - */ - text() { - return consumeBody.call(this).then(function (buffer) { - return buffer.toString(); - }); - }, +/** + * ``` + * WhiteSpace :: + * - "Horizontal Tab (U+0009)" + * - "Space (U+0020)" + * ``` + * @internal + */ +function isWhiteSpace(code) { + return code === 0x0009 || code === 0x0020; +} +/** + * ``` + * Digit :: one of + * - `0` `1` `2` `3` `4` `5` `6` `7` `8` `9` + * ``` + * @internal + */ - /** - * Decode response as buffer (non-spec api) - * - * @return Promise - */ - buffer() { - return consumeBody.call(this); - }, +function isDigit$1(code) { + return code >= 0x0030 && code <= 0x0039; +} +/** + * ``` + * Letter :: one of + * - `A` `B` `C` `D` `E` `F` `G` `H` `I` `J` `K` `L` `M` + * - `N` `O` `P` `Q` `R` `S` `T` `U` `V` `W` `X` `Y` `Z` + * - `a` `b` `c` `d` `e` `f` `g` `h` `i` `j` `k` `l` `m` + * - `n` `o` `p` `q` `r` `s` `t` `u` `v` `w` `x` `y` `z` + * ``` + * @internal + */ - /** - * Decode response as text, while automatically detecting the encoding and - * trying to decode to UTF-8 (non-spec api) - * - * @return Promise - */ - textConverted() { - var _this3 = this; - - return consumeBody.call(this).then(function (buffer) { - return convertBody(buffer, _this3.headers); - }); - } -}; +function isLetter(code) { + return ( + (code >= 0x0061 && code <= 0x007a) || // A-Z + (code >= 0x0041 && code <= 0x005a) // a-z + ); +} +/** + * ``` + * NameStart :: + * - Letter + * - `_` + * ``` + * @internal + */ -// In browsers, all properties are enumerable. -Object.defineProperties(Body$1.prototype, { - body: { enumerable: true }, - bodyUsed: { enumerable: true }, - arrayBuffer: { enumerable: true }, - blob: { enumerable: true }, - json: { enumerable: true }, - text: { enumerable: true } -}); +function isNameStart(code) { + return isLetter(code) || code === 0x005f; +} +/** + * ``` + * NameContinue :: + * - Letter + * - Digit + * - `_` + * ``` + * @internal + */ -Body$1.mixIn = function (proto) { - for (const name of Object.getOwnPropertyNames(Body$1.prototype)) { - // istanbul ignore else: future proof - if (!(name in proto)) { - const desc = Object.getOwnPropertyDescriptor(Body$1.prototype, name); - Object.defineProperty(proto, name, desc); - } - } -}; +function isNameContinue(code) { + return isLetter(code) || isDigit$1(code) || code === 0x005f; +} /** - * Consume and convert an entire Body to a Buffer. + * Produces the value of a block string from its parsed raw value, similar to + * CoffeeScript's block string, Python's docstring trim or Ruby's strip_heredoc. * - * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body + * This implements the GraphQL spec's BlockStringValue() static algorithm. * - * @return Promise + * @internal */ -function consumeBody() { - var _this4 = this; - - if (this[INTERNALS].disturbed) { - return Body$1.Promise.reject(new TypeError(`body used already for: ${this.url}`)); - } - this[INTERNALS].disturbed = true; - - if (this[INTERNALS].error) { - return Body$1.Promise.reject(this[INTERNALS].error); - } - - let body = this.body; - - // body is null - if (body === null) { - return Body$1.Promise.resolve(Buffer.alloc(0)); - } - - // body is blob - if (isBlob$1(body)) { - body = body.stream(); - } +function dedentBlockStringLines(lines) { + var _firstNonEmptyLine2; - // body is buffer - if (Buffer.isBuffer(body)) { - return Body$1.Promise.resolve(body); - } + let commonIndent = Number.MAX_SAFE_INTEGER; + let firstNonEmptyLine = null; + let lastNonEmptyLine = -1; - // istanbul ignore if: should never happen - if (!(body instanceof Stream$2)) { - return Body$1.Promise.resolve(Buffer.alloc(0)); - } + for (let i = 0; i < lines.length; ++i) { + var _firstNonEmptyLine; - // body is stream - // get ready to actually consume the body - let accum = []; - let accumBytes = 0; - let abort = false; - - return new Body$1.Promise(function (resolve, reject) { - let resTimeout; - - // allow timeout on slow response body - if (_this4.timeout) { - resTimeout = setTimeout(function () { - abort = true; - reject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout')); - }, _this4.timeout); - } + const line = lines[i]; + const indent = leadingWhitespace$1(line); - // handle stream errors - body.on('error', function (err) { - if (err.name === 'AbortError') { - // if the request was aborted, reject with this Error - abort = true; - reject(err); - } else { - // other errors, such as incorrect content-encoding - reject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err)); - } - }); + if (indent === line.length) { + continue; // skip empty lines + } - body.on('data', function (chunk) { - if (abort || chunk === null) { - return; - } + firstNonEmptyLine = + (_firstNonEmptyLine = firstNonEmptyLine) !== null && + _firstNonEmptyLine !== void 0 + ? _firstNonEmptyLine + : i; + lastNonEmptyLine = i; - if (_this4.size && accumBytes + chunk.length > _this4.size) { - abort = true; - reject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size')); - return; - } + if (i !== 0 && indent < commonIndent) { + commonIndent = indent; + } + } - accumBytes += chunk.length; - accum.push(chunk); - }); + return lines // Remove common indentation from all lines but first. + .map((line, i) => (i === 0 ? line : line.slice(commonIndent))) // Remove leading and trailing blank lines. + .slice( + (_firstNonEmptyLine2 = firstNonEmptyLine) !== null && + _firstNonEmptyLine2 !== void 0 + ? _firstNonEmptyLine2 + : 0, + lastNonEmptyLine + 1, + ); +} - body.on('end', function () { - if (abort) { - return; - } +function leadingWhitespace$1(str) { + let i = 0; - clearTimeout(resTimeout); + while (i < str.length && isWhiteSpace(str.charCodeAt(i))) { + ++i; + } - try { - resolve(Buffer.concat(accum, accumBytes)); - } catch (err) { - // handle streams that have accumulated too much data (issue #414) - reject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err)); - } - }); - }); + return i; } - /** - * Detect buffer encoding and convert to target encoding - * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding + * Print a block string in the indented block form by adding a leading and + * trailing blank line. However, if a block string starts with whitespace and is + * a single-line, adding a leading blank line would strip that whitespace. * - * @param Buffer buffer Incoming buffer - * @param String encoding Target encoding - * @return String + * @internal */ -function convertBody(buffer, headers) { - if (typeof convert !== 'function') { - throw new Error('The package `encoding` must be installed to use the textConverted() function'); - } - const ct = headers.get('content-type'); - let charset = 'utf-8'; - let res, str; +function printBlockString$1(value, options) { + const escapedValue = value.replace(/"""/g, '\\"""'); // Expand a block string's raw value into independent lines. - // header - if (ct) { - res = /charset=([^;]*)/i.exec(ct); - } + const lines = escapedValue.split(/\r\n|[\n\r]/g); + const isSingleLine = lines.length === 1; // If common indentation is found we can fix some of those cases by adding leading new line - // no charset in content type, peek at response body for at most 1024 bytes - str = buffer.slice(0, 1024).toString(); + const forceLeadingNewLine = + lines.length > 1 && + lines + .slice(1) + .every((line) => line.length === 0 || isWhiteSpace(line.charCodeAt(0))); // Trailing triple quotes just looks confusing but doesn't force trailing new line - // html5 - if (!res && str) { - res = / 70 || + forceTrailingNewline || + forceLeadingNewLine || + hasTrailingTripleQuotes); + let result = ''; // Format a multi-line block quote to account for leading space. - if (res) { - res = /charset=(.*)/i.exec(res.pop()); - } - } + const skipLeadingNewLine = isSingleLine && isWhiteSpace(value.charCodeAt(0)); - // xml - if (!res && str) { - res = /<\?xml.+?encoding=(['"])(.+?)\1/i.exec(str); - } + if ((printAsMultipleLines && !skipLeadingNewLine) || forceLeadingNewLine) { + result += '\n'; + } - // found charset - if (res) { - charset = res.pop(); + result += escapedValue; - // prevent decode issues when sites use incorrect encoding - // ref: https://hsivonen.fi/encoding-menu/ - if (charset === 'gb2312' || charset === 'gbk') { - charset = 'gb18030'; - } - } + if (printAsMultipleLines || forceTrailingNewline) { + result += '\n'; + } - // turn raw buffers into a single utf-8 buffer - return convert(buffer, 'UTF-8', charset).toString(); + return '"""' + result + '"""'; } /** - * Detect a URLSearchParams object - * ref: https://github.com/bitinn/node-fetch/issues/296#issuecomment-307598143 - * - * @param Object obj Object to detect by type or brand - * @return String + * An exported enum describing the different kinds of tokens that the + * lexer emits. */ -function isURLSearchParams(obj) { - // Duck-typing as a necessary condition. - if (typeof obj !== 'object' || typeof obj.append !== 'function' || typeof obj.delete !== 'function' || typeof obj.get !== 'function' || typeof obj.getAll !== 'function' || typeof obj.has !== 'function' || typeof obj.set !== 'function') { - return false; - } - - // Brand-checking and more duck-typing as optional condition. - return obj.constructor.name === 'URLSearchParams' || Object.prototype.toString.call(obj) === '[object URLSearchParams]' || typeof obj.sort === 'function'; -} - -/** - * Check if `obj` is a W3C `Blob` object (which `File` inherits from) - * @param {*} obj - * @return {boolean} - */ -function isBlob$1(obj) { - return typeof obj === 'object' && typeof obj.arrayBuffer === 'function' && typeof obj.type === 'string' && typeof obj.stream === 'function' && typeof obj.constructor === 'function' && typeof obj.constructor.name === 'string' && /^(Blob|File)$/.test(obj.constructor.name) && /^(Blob|File)$/.test(obj[Symbol.toStringTag]); -} +var TokenKind; +(function (TokenKind) { + TokenKind['SOF'] = ''; + TokenKind['EOF'] = ''; + TokenKind['BANG'] = '!'; + TokenKind['DOLLAR'] = '$'; + TokenKind['AMP'] = '&'; + TokenKind['PAREN_L'] = '('; + TokenKind['PAREN_R'] = ')'; + TokenKind['SPREAD'] = '...'; + TokenKind['COLON'] = ':'; + TokenKind['EQUALS'] = '='; + TokenKind['AT'] = '@'; + TokenKind['BRACKET_L'] = '['; + TokenKind['BRACKET_R'] = ']'; + TokenKind['BRACE_L'] = '{'; + TokenKind['PIPE'] = '|'; + TokenKind['BRACE_R'] = '}'; + TokenKind['NAME'] = 'Name'; + TokenKind['INT'] = 'Int'; + TokenKind['FLOAT'] = 'Float'; + TokenKind['STRING'] = 'String'; + TokenKind['BLOCK_STRING'] = 'BlockString'; + TokenKind['COMMENT'] = 'Comment'; +})(TokenKind || (TokenKind = {})); /** - * Clone body given Res/Req instance + * The enum type representing the token kinds values. * - * @param Mixed instance Response or Request instance - * @return Mixed + * @deprecated Please use `TokenKind`. Will be remove in v17. */ -function clone(instance) { - let p1, p2; - let body = instance.body; - // don't allow cloning a used body - if (instance.bodyUsed) { - throw new Error('cannot clone body after it is used'); - } +/** + * Given a Source object, creates a Lexer for that source. + * A Lexer is a stateful stream generator in that every time + * it is advanced, it returns the next token in the Source. Assuming the + * source lexes, the final Token emitted by the lexer will be of kind + * EOF, after which the lexer will repeatedly return the same EOF token + * whenever called. + */ - // check that body is a stream and not form-data object - // note: we can't clone the form-data object without having it as a dependency - if (body instanceof Stream$2 && typeof body.getBoundary !== 'function') { - // tee instance body - p1 = new PassThrough(); - p2 = new PassThrough(); - body.pipe(p1); - body.pipe(p2); - // set instance body to teed body and return the other teed body - instance[INTERNALS].body = p1; - body = p2; - } +class Lexer { + /** + * The previously focused non-ignored token. + */ - return body; -} + /** + * The currently focused non-ignored token. + */ + + /** + * The (1-indexed) line containing the current token. + */ + + /** + * The character offset at which the current line begins. + */ + constructor(source) { + const startOfFileToken = new Token(TokenKind.SOF, 0, 0, 0, 0); + this.source = source; + this.lastToken = startOfFileToken; + this.token = startOfFileToken; + this.line = 1; + this.lineStart = 0; + } + + get [Symbol.toStringTag]() { + return 'Lexer'; + } + /** + * Advances the token stream to the next non-ignored token. + */ + + advance() { + this.lastToken = this.token; + const token = (this.token = this.lookahead()); + return token; + } + /** + * Looks ahead and returns the next non-ignored token, but does not change + * the state of Lexer. + */ + + lookahead() { + let token = this.token; + + if (token.kind !== TokenKind.EOF) { + do { + if (token.next) { + token = token.next; + } else { + // Read the next token and form a link in the token linked-list. + const nextToken = readNextToken(this, token.end); // @ts-expect-error next is only mutable during parsing. + + token.next = nextToken; // @ts-expect-error prev is only mutable during parsing. + + nextToken.prev = token; + token = nextToken; + } + } while (token.kind === TokenKind.COMMENT); + } + return token; + } +} /** - * Performs the operation "extract a `Content-Type` value from |object|" as - * specified in the specification: - * https://fetch.spec.whatwg.org/#concept-bodyinit-extract - * - * This function assumes that instance.body is present. - * - * @param Mixed instance Any options.body input + * @internal */ -function extractContentType(body) { - if (body === null) { - // body is null - return null; - } else if (typeof body === 'string') { - // body is string - return 'text/plain;charset=UTF-8'; - } else if (isURLSearchParams(body)) { - // body is a URLSearchParams - return 'application/x-www-form-urlencoded;charset=UTF-8'; - } else if (isBlob$1(body)) { - // body is blob - return body.type || null; - } else if (Buffer.isBuffer(body)) { - // body is buffer - return null; - } else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') { - // body is ArrayBuffer - return null; - } else if (ArrayBuffer.isView(body)) { - // body is ArrayBufferView - return null; - } else if (typeof body.getBoundary === 'function') { - // detect form data input from form-data module - return `multipart/form-data;boundary=${body.getBoundary()}`; - } else if (body instanceof Stream$2) { - // body is stream - // can't really do much about this - return null; - } else { - // Body constructor defaults other things to string - return 'text/plain;charset=UTF-8'; - } -} +function isPunctuatorTokenKind(kind) { + return ( + kind === TokenKind.BANG || + kind === TokenKind.DOLLAR || + kind === TokenKind.AMP || + kind === TokenKind.PAREN_L || + kind === TokenKind.PAREN_R || + kind === TokenKind.SPREAD || + kind === TokenKind.COLON || + kind === TokenKind.EQUALS || + kind === TokenKind.AT || + kind === TokenKind.BRACKET_L || + kind === TokenKind.BRACKET_R || + kind === TokenKind.BRACE_L || + kind === TokenKind.PIPE || + kind === TokenKind.BRACE_R + ); +} /** - * The Fetch Standard treats this as if "total bytes" is a property on the body. - * For us, we have to explicitly get it with a function. - * - * ref: https://fetch.spec.whatwg.org/#concept-body-total-bytes + * A Unicode scalar value is any Unicode code point except surrogate code + * points. In other words, the inclusive ranges of values 0x0000 to 0xD7FF and + * 0xE000 to 0x10FFFF. * - * @param Body instance Instance of Body - * @return Number? Number of bytes, or null if not possible + * SourceCharacter :: + * - "Any Unicode scalar value" */ -function getTotalBytes(instance) { - const body = instance.body; - - - if (body === null) { - // body is null - return 0; - } else if (isBlob$1(body)) { - return body.size; - } else if (Buffer.isBuffer(body)) { - // body is buffer - return body.length; - } else if (body && typeof body.getLengthSync === 'function') { - // detect form data input from form-data module - if (body._lengthRetrievers && body._lengthRetrievers.length == 0 || // 1.x - body.hasKnownLength && body.hasKnownLength()) { - // 2.x - return body.getLengthSync(); - } - return null; - } else { - // body is stream - return null; - } -} +function isUnicodeScalarValue(code) { + return ( + (code >= 0x0000 && code <= 0xd7ff) || (code >= 0xe000 && code <= 0x10ffff) + ); +} /** - * Write a Body to a Node.js WritableStream (e.g. http.Request) object. - * - * @param Body instance Instance of Body - * @return Void + * The GraphQL specification defines source text as a sequence of unicode scalar + * values (which Unicode defines to exclude surrogate code points). However + * JavaScript defines strings as a sequence of UTF-16 code units which may + * include surrogates. A surrogate pair is a valid source character as it + * encodes a supplementary code point (above U+FFFF), but unpaired surrogate + * code points are not valid source characters. */ -function writeToStream(dest, instance) { - const body = instance.body; - - - if (body === null) { - // body is null - dest.end(); - } else if (isBlob$1(body)) { - body.stream().pipe(dest); - } else if (Buffer.isBuffer(body)) { - // body is buffer - dest.write(body); - dest.end(); - } else { - // body is stream - body.pipe(dest); - } + +function isSupplementaryCodePoint(body, location) { + return ( + isLeadingSurrogate(body.charCodeAt(location)) && + isTrailingSurrogate(body.charCodeAt(location + 1)) + ); } -// expose Promise -Body$1.Promise = global.Promise; +function isLeadingSurrogate(code) { + return code >= 0xd800 && code <= 0xdbff; +} +function isTrailingSurrogate(code) { + return code >= 0xdc00 && code <= 0xdfff; +} /** - * headers.js + * Prints the code point (or end of file reference) at a given location in a + * source for use in error messages. * - * Headers class offers convenient helpers + * Printable ASCII is printed quoted, while other points are printed in Unicode + * code point form (ie. U+1234). */ -const invalidTokenRegex = /[^\^_`a-zA-Z\-0-9!#$%&'*+.|~]/; -const invalidHeaderCharRegex = /[^\t\x20-\x7e\x80-\xff]/; +function printCodePointAt(lexer, location) { + const code = lexer.source.body.codePointAt(location); -function validateName$1(name) { - name = `${name}`; - if (invalidTokenRegex.test(name) || name === '') { - throw new TypeError(`${name} is not a legal HTTP header name`); - } -} + if (code === undefined) { + return TokenKind.EOF; + } else if (code >= 0x0020 && code <= 0x007e) { + // Printable ASCII + const char = String.fromCodePoint(code); + return char === '"' ? "'\"'" : `"${char}"`; + } // Unicode code point -function validateValue(value) { - value = `${value}`; - if (invalidHeaderCharRegex.test(value)) { - throw new TypeError(`${value} is not a legal HTTP header value`); - } + return 'U+' + code.toString(16).toUpperCase().padStart(4, '0'); } +/** + * Create a token with line and column location information. + */ +function createToken(lexer, kind, start, end, value) { + const line = lexer.line; + const col = 1 + start - lexer.lineStart; + return new Token(kind, start, end, line, col, value); +} /** - * Find the key in the map object given a header name. - * - * Returns undefined if not found. + * Gets the next token from the source starting at the given position. * - * @param String name Header name - * @return String|Undefined + * This skips over whitespace until it finds the next lexable token, then lexes + * punctuators immediately or calls the appropriate helper function for more + * complicated tokens. */ -function find(map, name) { - name = name.toLowerCase(); - for (const key in map) { - if (key.toLowerCase() === name) { - return key; - } - } - return undefined; -} - -const MAP = Symbol('map'); -class Headers$1 { - /** - * Headers class - * - * @param Object headers Response headers - * @return Void - */ - constructor() { - let init = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined; - - this[MAP] = Object.create(null); - - if (init instanceof Headers$1) { - const rawHeaders = init.raw(); - const headerNames = Object.keys(rawHeaders); - - for (const headerName of headerNames) { - for (const value of rawHeaders[headerName]) { - this.append(headerName, value); - } - } - return; - } +function readNextToken(lexer, start) { + const body = lexer.source.body; + const bodyLength = body.length; + let position = start; - // We don't worry about converting prop to ByteString here as append() - // will handle it. - if (init == null) ; else if (typeof init === 'object') { - const method = init[Symbol.iterator]; - if (method != null) { - if (typeof method !== 'function') { - throw new TypeError('Header pairs must be iterable'); - } - - // sequence> - // Note: per spec we have to first exhaust the lists then process them - const pairs = []; - for (const pair of init) { - if (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') { - throw new TypeError('Each header pair must be iterable'); - } - pairs.push(Array.from(pair)); - } - - for (const pair of pairs) { - if (pair.length !== 2) { - throw new TypeError('Each header pair must be a name/value tuple'); - } - this.append(pair[0], pair[1]); - } - } else { - // record - for (const key of Object.keys(init)) { - const value = init[key]; - this.append(key, value); - } - } - } else { - throw new TypeError('Provided initializer must be an object'); - } - } + while (position < bodyLength) { + const code = body.charCodeAt(position); // SourceCharacter - /** - * Return combined header value given name - * - * @param String name Header name - * @return Mixed - */ - get(name) { - name = `${name}`; - validateName$1(name); - const key = find(this[MAP], name); - if (key === undefined) { - return null; - } + switch (code) { + // Ignored :: + // - UnicodeBOM + // - WhiteSpace + // - LineTerminator + // - Comment + // - Comma + // + // UnicodeBOM :: "Byte Order Mark (U+FEFF)" + // + // WhiteSpace :: + // - "Horizontal Tab (U+0009)" + // - "Space (U+0020)" + // + // Comma :: , + case 0xfeff: // - return this[MAP][key].join(', '); - } + case 0x0009: // \t - /** - * Iterate over all headers - * - * @param Function callback Executed for each item with parameters (value, name, thisArg) - * @param Boolean thisArg `this` context for callback function - * @return Void - */ - forEach(callback) { - let thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined; - - let pairs = getHeaders(this); - let i = 0; - while (i < pairs.length) { - var _pairs$i = pairs[i]; - const name = _pairs$i[0], - value = _pairs$i[1]; - - callback.call(thisArg, value, name, this); - pairs = getHeaders(this); - i++; - } - } + case 0x0020: // - /** - * Overwrite header values given name - * - * @param String name Header name - * @param String value Header value - * @return Void - */ - set(name, value) { - name = `${name}`; - value = `${value}`; - validateName$1(name); - validateValue(value); - const key = find(this[MAP], name); - this[MAP][key !== undefined ? key : name] = [value]; - } + case 0x002c: + // , + ++position; + continue; + // LineTerminator :: + // - "New Line (U+000A)" + // - "Carriage Return (U+000D)" [lookahead != "New Line (U+000A)"] + // - "Carriage Return (U+000D)" "New Line (U+000A)" - /** - * Append a value onto existing header - * - * @param String name Header name - * @param String value Header value - * @return Void - */ - append(name, value) { - name = `${name}`; - value = `${value}`; - validateName$1(name); - validateValue(value); - const key = find(this[MAP], name); - if (key !== undefined) { - this[MAP][key].push(value); - } else { - this[MAP][name] = [value]; - } - } + case 0x000a: + // \n + ++position; + ++lexer.line; + lexer.lineStart = position; + continue; - /** - * Check for header name existence - * - * @param String name Header name - * @return Boolean - */ - has(name) { - name = `${name}`; - validateName$1(name); - return find(this[MAP], name) !== undefined; - } + case 0x000d: + // \r + if (body.charCodeAt(position + 1) === 0x000a) { + position += 2; + } else { + ++position; + } - /** - * Delete all header values given name - * - * @param String name Header name - * @return Void - */ - delete(name) { - name = `${name}`; - validateName$1(name); - const key = find(this[MAP], name); - if (key !== undefined) { - delete this[MAP][key]; - } - } + ++lexer.line; + lexer.lineStart = position; + continue; + // Comment - /** - * Return raw headers (non-spec api) - * - * @return Object - */ - raw() { - return this[MAP]; - } + case 0x0023: + // # + return readComment(lexer, position); + // Token :: + // - Punctuator + // - Name + // - IntValue + // - FloatValue + // - StringValue + // + // Punctuator :: one of ! $ & ( ) ... : = @ [ ] { | } - /** - * Get an iterator on keys. - * - * @return Iterator - */ - keys() { - return createHeadersIterator(this, 'key'); - } + case 0x0021: + // ! + return createToken(lexer, TokenKind.BANG, position, position + 1); - /** - * Get an iterator on values. - * - * @return Iterator - */ - values() { - return createHeadersIterator(this, 'value'); - } + case 0x0024: + // $ + return createToken(lexer, TokenKind.DOLLAR, position, position + 1); - /** - * Get an iterator on entries. - * - * This is the default iterator of the Headers object. - * - * @return Iterator - */ - [Symbol.iterator]() { - return createHeadersIterator(this, 'key+value'); - } -} -Headers$1.prototype.entries = Headers$1.prototype[Symbol.iterator]; + case 0x0026: + // & + return createToken(lexer, TokenKind.AMP, position, position + 1); -Object.defineProperty(Headers$1.prototype, Symbol.toStringTag, { - value: 'Headers', - writable: false, - enumerable: false, - configurable: true -}); + case 0x0028: + // ( + return createToken(lexer, TokenKind.PAREN_L, position, position + 1); -Object.defineProperties(Headers$1.prototype, { - get: { enumerable: true }, - forEach: { enumerable: true }, - set: { enumerable: true }, - append: { enumerable: true }, - has: { enumerable: true }, - delete: { enumerable: true }, - keys: { enumerable: true }, - values: { enumerable: true }, - entries: { enumerable: true } -}); + case 0x0029: + // ) + return createToken(lexer, TokenKind.PAREN_R, position, position + 1); -function getHeaders(headers) { - let kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value'; + case 0x002e: + // . + if ( + body.charCodeAt(position + 1) === 0x002e && + body.charCodeAt(position + 2) === 0x002e + ) { + return createToken(lexer, TokenKind.SPREAD, position, position + 3); + } - const keys = Object.keys(headers[MAP]).sort(); - return keys.map(kind === 'key' ? function (k) { - return k.toLowerCase(); - } : kind === 'value' ? function (k) { - return headers[MAP][k].join(', '); - } : function (k) { - return [k.toLowerCase(), headers[MAP][k].join(', ')]; - }); -} + break; -const INTERNAL = Symbol('internal'); + case 0x003a: + // : + return createToken(lexer, TokenKind.COLON, position, position + 1); -function createHeadersIterator(target, kind) { - const iterator = Object.create(HeadersIteratorPrototype); - iterator[INTERNAL] = { - target, - kind, - index: 0 - }; - return iterator; -} + case 0x003d: + // = + return createToken(lexer, TokenKind.EQUALS, position, position + 1); -const HeadersIteratorPrototype = Object.setPrototypeOf({ - next() { - // istanbul ignore if - if (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) { - throw new TypeError('Value of `this` is not a HeadersIterator'); - } + case 0x0040: + // @ + return createToken(lexer, TokenKind.AT, position, position + 1); - var _INTERNAL = this[INTERNAL]; - const target = _INTERNAL.target, - kind = _INTERNAL.kind, - index = _INTERNAL.index; - - const values = getHeaders(target, kind); - const len = values.length; - if (index >= len) { - return { - value: undefined, - done: true - }; - } + case 0x005b: + // [ + return createToken(lexer, TokenKind.BRACKET_L, position, position + 1); - this[INTERNAL].index = index + 1; + case 0x005d: + // ] + return createToken(lexer, TokenKind.BRACKET_R, position, position + 1); - return { - value: values[index], - done: false - }; - } -}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))); + case 0x007b: + // { + return createToken(lexer, TokenKind.BRACE_L, position, position + 1); -Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, { - value: 'HeadersIterator', - writable: false, - enumerable: false, - configurable: true -}); + case 0x007c: + // | + return createToken(lexer, TokenKind.PIPE, position, position + 1); -/** - * Export the Headers object in a form that Node.js can consume. - * - * @param Headers headers - * @return Object - */ -function exportNodeCompatibleHeaders(headers) { - const obj = Object.assign({ __proto__: null }, headers[MAP]); - - // http.request() only supports string as Host header. This hack makes - // specifying custom Host header possible. - const hostHeaderKey = find(headers[MAP], 'Host'); - if (hostHeaderKey !== undefined) { - obj[hostHeaderKey] = obj[hostHeaderKey][0]; - } + case 0x007d: + // } + return createToken(lexer, TokenKind.BRACE_R, position, position + 1); + // StringValue - return obj; -} + case 0x0022: + // " + if ( + body.charCodeAt(position + 1) === 0x0022 && + body.charCodeAt(position + 2) === 0x0022 + ) { + return readBlockString(lexer, position); + } -/** - * Create a Headers object from an object of headers, ignoring those that do - * not conform to HTTP grammar productions. - * - * @param Object obj Object of headers - * @return Headers - */ -function createHeadersLenient(obj) { - const headers = new Headers$1(); - for (const name of Object.keys(obj)) { - if (invalidTokenRegex.test(name)) { - continue; - } - if (Array.isArray(obj[name])) { - for (const val of obj[name]) { - if (invalidHeaderCharRegex.test(val)) { - continue; - } - if (headers[MAP][name] === undefined) { - headers[MAP][name] = [val]; - } else { - headers[MAP][name].push(val); - } - } - } else if (!invalidHeaderCharRegex.test(obj[name])) { - headers[MAP][name] = [obj[name]]; - } - } - return headers; -} + return readString(lexer, position); + } // IntValue | FloatValue (Digit | -) + + if (isDigit$1(code) || code === 0x002d) { + return readNumber(lexer, position, code); + } // Name -const INTERNALS$1 = Symbol('Response internals'); + if (isNameStart(code)) { + return readName(lexer, position); + } -// fix an issue where "STATUS_CODES" aren't a named export for node <10 -const STATUS_CODES = http$1.STATUS_CODES; + throw syntaxError( + lexer.source, + position, + code === 0x0027 + ? 'Unexpected single quote character (\'), did you mean to use a double quote (")?' + : isUnicodeScalarValue(code) || isSupplementaryCodePoint(body, position) + ? `Unexpected character: ${printCodePointAt(lexer, position)}.` + : `Invalid character: ${printCodePointAt(lexer, position)}.`, + ); + } + return createToken(lexer, TokenKind.EOF, bodyLength, bodyLength); +} /** - * Response class + * Reads a comment token from the source file. + * + * ``` + * Comment :: # CommentChar* [lookahead != CommentChar] * - * @param Stream body Readable stream - * @param Object opts Response options - * @return Void + * CommentChar :: SourceCharacter but not LineTerminator + * ``` */ -class Response$2 { - constructor() { - let body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; - let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - Body$1.call(this, body, opts); - - const status = opts.status || 200; - const headers = new Headers$1(opts.headers); - - if (body != null && !headers.has('Content-Type')) { - const contentType = extractContentType(body); - if (contentType) { - headers.append('Content-Type', contentType); - } - } - - this[INTERNALS$1] = { - url: opts.url, - status, - statusText: opts.statusText || STATUS_CODES[status], - headers, - counter: opts.counter - }; - } - - get url() { - return this[INTERNALS$1].url || ''; - } - - get status() { - return this[INTERNALS$1].status; - } - /** - * Convenience property representing if the request ended normally - */ - get ok() { - return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300; - } +function readComment(lexer, start) { + const body = lexer.source.body; + const bodyLength = body.length; + let position = start + 1; - get redirected() { - return this[INTERNALS$1].counter > 0; - } + while (position < bodyLength) { + const code = body.charCodeAt(position); // LineTerminator (\n | \r) - get statusText() { - return this[INTERNALS$1].statusText; - } + if (code === 0x000a || code === 0x000d) { + break; + } // SourceCharacter - get headers() { - return this[INTERNALS$1].headers; - } + if (isUnicodeScalarValue(code)) { + ++position; + } else if (isSupplementaryCodePoint(body, position)) { + position += 2; + } else { + break; + } + } - /** - * Clone this response - * - * @return Response - */ - clone() { - return new Response$2(clone(this), { - url: this.url, - status: this.status, - statusText: this.statusText, - headers: this.headers, - ok: this.ok, - redirected: this.redirected - }); - } + return createToken( + lexer, + TokenKind.COMMENT, + start, + position, + body.slice(start + 1, position), + ); } - -Body$1.mixIn(Response$2.prototype); - -Object.defineProperties(Response$2.prototype, { - url: { enumerable: true }, - status: { enumerable: true }, - ok: { enumerable: true }, - redirected: { enumerable: true }, - statusText: { enumerable: true }, - headers: { enumerable: true }, - clone: { enumerable: true } -}); - -Object.defineProperty(Response$2.prototype, Symbol.toStringTag, { - value: 'Response', - writable: false, - enumerable: false, - configurable: true -}); - -const INTERNALS$2 = Symbol('Request internals'); -const URL$1 = Url.URL || publicApi.URL; - -// fix an issue where "format", "parse" aren't a named export for node <10 -const parse_url = Url.parse; -const format_url = Url.format; - /** - * Wrapper around `new URL` to handle arbitrary URLs + * Reads a number token from the source file, either a FloatValue or an IntValue + * depending on whether a FractionalPart or ExponentPart is encountered. * - * @param {string} urlStr - * @return {void} - */ -function parseURL(urlStr) { - /* - Check whether the URL is absolute or not - Scheme: https://tools.ietf.org/html/rfc3986#section-3.1 - Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3 - */ - if (/^[a-zA-Z][a-zA-Z\d+\-.]*:/.exec(urlStr)) { - urlStr = new URL$1(urlStr).toString(); - } - - // Fallback to old implementation for arbitrary URLs - return parse_url(urlStr); -} - -const streamDestructionSupported = 'destroy' in Stream$2.Readable.prototype; - -/** - * Check if a value is an instance of Request. + * ``` + * IntValue :: IntegerPart [lookahead != {Digit, `.`, NameStart}] * - * @param Mixed input - * @return Boolean - */ -function isRequest(input) { - return typeof input === 'object' && typeof input[INTERNALS$2] === 'object'; -} - -function isAbortSignal$1(signal) { - const proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal); - return !!(proto && proto.constructor.name === 'AbortSignal'); -} - -/** - * Request class + * IntegerPart :: + * - NegativeSign? 0 + * - NegativeSign? NonZeroDigit Digit* * - * @param Mixed input Url or Request instance - * @param Object init Custom options - * @return Void + * NegativeSign :: - + * + * NonZeroDigit :: Digit but not `0` + * + * FloatValue :: + * - IntegerPart FractionalPart ExponentPart [lookahead != {Digit, `.`, NameStart}] + * - IntegerPart FractionalPart [lookahead != {Digit, `.`, NameStart}] + * - IntegerPart ExponentPart [lookahead != {Digit, `.`, NameStart}] + * + * FractionalPart :: . Digit+ + * + * ExponentPart :: ExponentIndicator Sign? Digit+ + * + * ExponentIndicator :: one of `e` `E` + * + * Sign :: one of + - + * ``` */ -class Request$2 { - constructor(input) { - let init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - let parsedURL; - - // normalize input - if (!isRequest(input)) { - if (input && input.href) { - // in order to support Node.js' Url objects; though WHATWG's URL objects - // will fall into this branch also (since their `toString()` will return - // `href` property anyway) - parsedURL = parseURL(input.href); - } else { - // coerce input to a string before attempting to parse - parsedURL = parseURL(`${input}`); - } - input = {}; - } else { - parsedURL = parseURL(input.url); - } - - let method = init.method || input.method || 'GET'; - method = method.toUpperCase(); - if ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) { - throw new TypeError('Request with GET/HEAD method cannot have body'); - } +function readNumber(lexer, start, firstCode) { + const body = lexer.source.body; + let position = start; + let code = firstCode; + let isFloat = false; // NegativeSign (-) - let inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null; + if (code === 0x002d) { + code = body.charCodeAt(++position); + } // Zero (0) - Body$1.call(this, inputBody, { - timeout: init.timeout || input.timeout || 0, - size: init.size || input.size || 0 - }); + if (code === 0x0030) { + code = body.charCodeAt(++position); - const headers = new Headers$1(init.headers || input.headers || {}); + if (isDigit$1(code)) { + throw syntaxError( + lexer.source, + position, + `Invalid number, unexpected digit after 0: ${printCodePointAt( + lexer, + position, + )}.`, + ); + } + } else { + position = readDigits(lexer, position, code); + code = body.charCodeAt(position); + } // Full stop (.) - if (inputBody != null && !headers.has('Content-Type')) { - const contentType = extractContentType(inputBody); - if (contentType) { - headers.append('Content-Type', contentType); - } - } - - let signal = isRequest(input) ? input.signal : null; - if ('signal' in init) signal = init.signal; - - if (signal != null && !isAbortSignal$1(signal)) { - throw new TypeError('Expected signal to be an instanceof AbortSignal'); - } - - this[INTERNALS$2] = { - method, - redirect: init.redirect || input.redirect || 'follow', - headers, - parsedURL, - signal - }; - - // node-fetch-only options - this.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20; - this.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true; - this.counter = init.counter || input.counter || 0; - this.agent = init.agent || input.agent; - } - - get method() { - return this[INTERNALS$2].method; - } + if (code === 0x002e) { + isFloat = true; + code = body.charCodeAt(++position); + position = readDigits(lexer, position, code); + code = body.charCodeAt(position); + } // E e - get url() { - return format_url(this[INTERNALS$2].parsedURL); - } + if (code === 0x0045 || code === 0x0065) { + isFloat = true; + code = body.charCodeAt(++position); // + - - get headers() { - return this[INTERNALS$2].headers; - } + if (code === 0x002b || code === 0x002d) { + code = body.charCodeAt(++position); + } - get redirect() { - return this[INTERNALS$2].redirect; - } + position = readDigits(lexer, position, code); + code = body.charCodeAt(position); + } // Numbers cannot be followed by . or NameStart - get signal() { - return this[INTERNALS$2].signal; - } + if (code === 0x002e || isNameStart(code)) { + throw syntaxError( + lexer.source, + position, + `Invalid number, expected digit but got: ${printCodePointAt( + lexer, + position, + )}.`, + ); + } - /** - * Clone this request - * - * @return Request - */ - clone() { - return new Request$2(this); - } + return createToken( + lexer, + isFloat ? TokenKind.FLOAT : TokenKind.INT, + start, + position, + body.slice(start, position), + ); } - -Body$1.mixIn(Request$2.prototype); - -Object.defineProperty(Request$2.prototype, Symbol.toStringTag, { - value: 'Request', - writable: false, - enumerable: false, - configurable: true -}); - -Object.defineProperties(Request$2.prototype, { - method: { enumerable: true }, - url: { enumerable: true }, - headers: { enumerable: true }, - redirect: { enumerable: true }, - clone: { enumerable: true }, - signal: { enumerable: true } -}); - /** - * Convert a Request to Node.js http request options. - * - * @param Request A Request instance - * @return Object The options object to be passed to http.request + * Returns the new position in the source after reading one or more digits. */ -function getNodeRequestOptions(request) { - const parsedURL = request[INTERNALS$2].parsedURL; - const headers = new Headers$1(request[INTERNALS$2].headers); - - // fetch step 1.3 - if (!headers.has('Accept')) { - headers.set('Accept', '*/*'); - } - - // Basic fetch - if (!parsedURL.protocol || !parsedURL.hostname) { - throw new TypeError('Only absolute URLs are supported'); - } - - if (!/^https?:$/.test(parsedURL.protocol)) { - throw new TypeError('Only HTTP(S) protocols are supported'); - } - - if (request.signal && request.body instanceof Stream$2.Readable && !streamDestructionSupported) { - throw new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8'); - } - - // HTTP-network-or-cache fetch steps 2.4-2.7 - let contentLengthValue = null; - if (request.body == null && /^(POST|PUT)$/i.test(request.method)) { - contentLengthValue = '0'; - } - if (request.body != null) { - const totalBytes = getTotalBytes(request); - if (typeof totalBytes === 'number') { - contentLengthValue = String(totalBytes); - } - } - if (contentLengthValue) { - headers.set('Content-Length', contentLengthValue); - } - - // HTTP-network-or-cache fetch step 2.11 - if (!headers.has('User-Agent')) { - headers.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)'); - } - - // HTTP-network-or-cache fetch step 2.15 - if (request.compress && !headers.has('Accept-Encoding')) { - headers.set('Accept-Encoding', 'gzip,deflate'); - } - let agent = request.agent; - if (typeof agent === 'function') { - agent = agent(parsedURL); - } +function readDigits(lexer, start, firstCode) { + if (!isDigit$1(firstCode)) { + throw syntaxError( + lexer.source, + start, + `Invalid number, expected digit but got: ${printCodePointAt( + lexer, + start, + )}.`, + ); + } - if (!headers.has('Connection') && !agent) { - headers.set('Connection', 'close'); - } + const body = lexer.source.body; + let position = start + 1; // +1 to skip first firstCode - // HTTP-network fetch step 4.2 - // chunked encoding is handled by Node.js + while (isDigit$1(body.charCodeAt(position))) { + ++position; + } - return Object.assign({}, parsedURL, { - method: request.method, - headers: exportNodeCompatibleHeaders(headers), - agent - }); + return position; } - /** - * abort-error.js + * Reads a single-quote string token from the source file. * - * AbortError interface for cancelled requests - */ - -/** - * Create AbortError instance + * ``` + * StringValue :: + * - `""` [lookahead != `"`] + * - `"` StringCharacter+ `"` * - * @param String message Error message for human - * @return AbortError - */ -function AbortError(message) { - Error.call(this, message); - - this.type = 'aborted'; - this.message = message; - - // hide custom error implementation details from end-users - Error.captureStackTrace(this, this.constructor); -} - -AbortError.prototype = Object.create(Error.prototype); -AbortError.prototype.constructor = AbortError; -AbortError.prototype.name = 'AbortError'; - -const URL$1$1 = Url.URL || publicApi.URL; - -// fix an issue where "PassThrough", "resolve" aren't a named export for node <10 -const PassThrough$1 = Stream$2.PassThrough; - -const isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) { - const orig = new URL$1$1(original).hostname; - const dest = new URL$1$1(destination).hostname; - - return orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest); -}; - -/** - * Fetch function + * StringCharacter :: + * - SourceCharacter but not `"` or `\` or LineTerminator + * - `\u` EscapedUnicode + * - `\` EscapedCharacter + * + * EscapedUnicode :: + * - `{` HexDigit+ `}` + * - HexDigit HexDigit HexDigit HexDigit * - * @param Mixed url Absolute url or Request instance - * @param Object opts Fetch options - * @return Promise + * EscapedCharacter :: one of `"` `\` `/` `b` `f` `n` `r` `t` + * ``` */ -function fetch$2(url, opts) { - - // allow custom promise - if (!fetch$2.Promise) { - throw new Error('native promise missing, set fetch.Promise to your favorite alternative'); - } - Body$1.Promise = fetch$2.Promise; +function readString(lexer, start) { + const body = lexer.source.body; + const bodyLength = body.length; + let position = start + 1; + let chunkStart = position; + let value = ''; - // wrap http.request into fetch - return new fetch$2.Promise(function (resolve, reject) { - // build request object - const request = new Request$2(url, opts); - const options = getNodeRequestOptions(request); + while (position < bodyLength) { + const code = body.charCodeAt(position); // Closing Quote (") - const send = (options.protocol === 'https:' ? https$1 : http$1).request; - const signal = request.signal; + if (code === 0x0022) { + value += body.slice(chunkStart, position); + return createToken(lexer, TokenKind.STRING, start, position + 1, value); + } // Escape Sequence (\) - let response = null; + if (code === 0x005c) { + value += body.slice(chunkStart, position); + const escape = + body.charCodeAt(position + 1) === 0x0075 // u + ? body.charCodeAt(position + 2) === 0x007b // { + ? readEscapedUnicodeVariableWidth(lexer, position) + : readEscapedUnicodeFixedWidth(lexer, position) + : readEscapedCharacter(lexer, position); + value += escape.value; + position += escape.size; + chunkStart = position; + continue; + } // LineTerminator (\n | \r) - const abort = function abort() { - let error = new AbortError('The user aborted a request.'); - reject(error); - if (request.body && request.body instanceof Stream$2.Readable) { - request.body.destroy(error); - } - if (!response || !response.body) return; - response.body.emit('error', error); - }; + if (code === 0x000a || code === 0x000d) { + break; + } // SourceCharacter - if (signal && signal.aborted) { - abort(); - return; - } + if (isUnicodeScalarValue(code)) { + ++position; + } else if (isSupplementaryCodePoint(body, position)) { + position += 2; + } else { + throw syntaxError( + lexer.source, + position, + `Invalid character within String: ${printCodePointAt( + lexer, + position, + )}.`, + ); + } + } - const abortAndFinalize = function abortAndFinalize() { - abort(); - finalize(); - }; + throw syntaxError(lexer.source, position, 'Unterminated string.'); +} // The string value and lexed size of an escape sequence. - // send request - const req = send(options); - let reqTimeout; +function readEscapedUnicodeVariableWidth(lexer, position) { + const body = lexer.source.body; + let point = 0; + let size = 3; // Cannot be larger than 12 chars (\u{00000000}). - if (signal) { - signal.addEventListener('abort', abortAndFinalize); - } + while (size < 12) { + const code = body.charCodeAt(position + size++); // Closing Brace (}) - function finalize() { - req.abort(); - if (signal) signal.removeEventListener('abort', abortAndFinalize); - clearTimeout(reqTimeout); - } + if (code === 0x007d) { + // Must be at least 5 chars (\u{0}) and encode a Unicode scalar value. + if (size < 5 || !isUnicodeScalarValue(point)) { + break; + } - if (request.timeout) { - req.once('socket', function (socket) { - reqTimeout = setTimeout(function () { - reject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout')); - finalize(); - }, request.timeout); - }); - } + return { + value: String.fromCodePoint(point), + size, + }; + } // Append this hex digit to the code point. - req.on('error', function (err) { - reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err)); - finalize(); - }); + point = (point << 4) | readHexDigit(code); - req.on('response', function (res) { - clearTimeout(reqTimeout); - - const headers = createHeadersLenient(res.headers); - - // HTTP fetch step 5 - if (fetch$2.isRedirect(res.statusCode)) { - // HTTP fetch step 5.2 - const location = headers.get('Location'); - - // HTTP fetch step 5.3 - let locationURL = null; - try { - locationURL = location === null ? null : new URL$1$1(location, request.url).toString(); - } catch (err) { - // error here can only be invalid URL in Location: header - // do not throw when options.redirect == manual - // let the user extract the errorneous redirect URL - if (request.redirect !== 'manual') { - reject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect')); - finalize(); - return; - } - } - - // HTTP fetch step 5.5 - switch (request.redirect) { - case 'error': - reject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect')); - finalize(); - return; - case 'manual': - // node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL. - if (locationURL !== null) { - // handle corrupted header - try { - headers.set('Location', locationURL); - } catch (err) { - // istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request - reject(err); - } - } - break; - case 'follow': - // HTTP-redirect fetch step 2 - if (locationURL === null) { - break; - } - - // HTTP-redirect fetch step 5 - if (request.counter >= request.follow) { - reject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect')); - finalize(); - return; - } - - // HTTP-redirect fetch step 6 (counter increment) - // Create a new Request object. - const requestOpts = { - headers: new Headers$1(request.headers), - follow: request.follow, - counter: request.counter + 1, - agent: request.agent, - compress: request.compress, - method: request.method, - body: request.body, - signal: request.signal, - timeout: request.timeout, - size: request.size - }; - - if (!isDomainOrSubdomain(request.url, locationURL)) { - for (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) { - requestOpts.headers.delete(name); - } - } - - // HTTP-redirect fetch step 9 - if (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) { - reject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect')); - finalize(); - return; - } - - // HTTP-redirect fetch step 11 - if (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') { - requestOpts.method = 'GET'; - requestOpts.body = undefined; - requestOpts.headers.delete('content-length'); - } - - // HTTP-redirect fetch step 15 - resolve(fetch$2(new Request$2(locationURL, requestOpts))); - finalize(); - return; - } - } + if (point < 0) { + break; + } + } - // prepare response - res.once('end', function () { - if (signal) signal.removeEventListener('abort', abortAndFinalize); - }); - let body = res.pipe(new PassThrough$1()); - - const response_options = { - url: request.url, - status: res.statusCode, - statusText: res.statusMessage, - headers: headers, - size: request.size, - timeout: request.timeout, - counter: request.counter - }; - - // HTTP-network fetch step 12.1.1.3 - const codings = headers.get('Content-Encoding'); - - // HTTP-network fetch step 12.1.1.4: handle content codings - - // in following scenarios we ignore compression support - // 1. compression support is disabled - // 2. HEAD request - // 3. no Content-Encoding header - // 4. no content response (204) - // 5. content not modified response (304) - if (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) { - response = new Response$2(body, response_options); - resolve(response); - return; - } + throw syntaxError( + lexer.source, + position, + `Invalid Unicode escape sequence: "${body.slice( + position, + position + size, + )}".`, + ); +} - // For Node v6+ - // Be less strict when decoding compressed responses, since sometimes - // servers send slightly invalid responses that are still accepted - // by common browsers. - // Always using Z_SYNC_FLUSH is what cURL does. - const zlibOptions = { - flush: zlib.Z_SYNC_FLUSH, - finishFlush: zlib.Z_SYNC_FLUSH - }; - - // for gzip - if (codings == 'gzip' || codings == 'x-gzip') { - body = body.pipe(zlib.createGunzip(zlibOptions)); - response = new Response$2(body, response_options); - resolve(response); - return; - } +function readEscapedUnicodeFixedWidth(lexer, position) { + const body = lexer.source.body; + const code = read16BitHexCode(body, position + 2); - // for deflate - if (codings == 'deflate' || codings == 'x-deflate') { - // handle the infamous raw deflate response from old servers - // a hack for old IIS and Apache servers - const raw = res.pipe(new PassThrough$1()); - raw.once('data', function (chunk) { - // see http://stackoverflow.com/questions/37519828 - if ((chunk[0] & 0x0F) === 0x08) { - body = body.pipe(zlib.createInflate()); - } else { - body = body.pipe(zlib.createInflateRaw()); - } - response = new Response$2(body, response_options); - resolve(response); - }); - return; - } + if (isUnicodeScalarValue(code)) { + return { + value: String.fromCodePoint(code), + size: 6, + }; + } // GraphQL allows JSON-style surrogate pair escape sequences, but only when + // a valid pair is formed. - // for br - if (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') { - body = body.pipe(zlib.createBrotliDecompress()); - response = new Response$2(body, response_options); - resolve(response); - return; - } + if (isLeadingSurrogate(code)) { + // \u + if ( + body.charCodeAt(position + 6) === 0x005c && + body.charCodeAt(position + 7) === 0x0075 + ) { + const trailingCode = read16BitHexCode(body, position + 8); - // otherwise, use response as-is - response = new Response$2(body, response_options); - resolve(response); - }); + if (isTrailingSurrogate(trailingCode)) { + // JavaScript defines strings as a sequence of UTF-16 code units and + // encodes Unicode code points above U+FFFF using a surrogate pair of + // code units. Since this is a surrogate pair escape sequence, just + // include both codes into the JavaScript string value. Had JavaScript + // not been internally based on UTF-16, then this surrogate pair would + // be decoded to retrieve the supplementary code point. + return { + value: String.fromCodePoint(code, trailingCode), + size: 12, + }; + } + } + } - writeToStream(req, request); - }); + throw syntaxError( + lexer.source, + position, + `Invalid Unicode escape sequence: "${body.slice(position, position + 6)}".`, + ); } /** - * Redirect code matching + * Reads four hexadecimal characters and returns the positive integer that 16bit + * hexadecimal string represents. For example, "000f" will return 15, and "dead" + * will return 57005. * - * @param Number code Status code - * @return Boolean + * Returns a negative number if any char was not a valid hexadecimal digit. */ -fetch$2.isRedirect = function (code) { - return code === 301 || code === 302 || code === 303 || code === 307 || code === 308; -}; -// expose Promise -fetch$2.Promise = global.Promise; +function read16BitHexCode(body, position) { + // readHexDigit() returns -1 on error. ORing a negative value with any other + // value always produces a negative value. + return ( + (readHexDigit(body.charCodeAt(position)) << 12) | + (readHexDigit(body.charCodeAt(position + 1)) << 8) | + (readHexDigit(body.charCodeAt(position + 2)) << 4) | + readHexDigit(body.charCodeAt(position + 3)) + ); +} +/** + * Reads a hexadecimal character and returns its positive integer value (0-15). + * + * '0' becomes 0, '9' becomes 9 + * 'A' becomes 10, 'F' becomes 15 + * 'a' becomes 10, 'f' becomes 15 + * + * Returns -1 if the provided character code was not a valid hexadecimal digit. + * + * HexDigit :: one of + * - `0` `1` `2` `3` `4` `5` `6` `7` `8` `9` + * - `A` `B` `C` `D` `E` `F` + * - `a` `b` `c` `d` `e` `f` + */ -var lib$1 = /*#__PURE__*/Object.freeze({ - __proto__: null, - 'default': fetch$2, - Headers: Headers$1, - Request: Request$2, - Response: Response$2, - FetchError: FetchError -}); +function readHexDigit(code) { + return code >= 0x0030 && code <= 0x0039 // 0-9 + ? code - 0x0030 + : code >= 0x0041 && code <= 0x0046 // A-F + ? code - 0x0037 + : code >= 0x0061 && code <= 0x0066 // a-f + ? code - 0x0057 + : -1; +} +/** + * | Escaped Character | Code Point | Character Name | + * | ----------------- | ---------- | ---------------------------- | + * | `"` | U+0022 | double quote | + * | `\` | U+005C | reverse solidus (back slash) | + * | `/` | U+002F | solidus (forward slash) | + * | `b` | U+0008 | backspace | + * | `f` | U+000C | form feed | + * | `n` | U+000A | line feed (new line) | + * | `r` | U+000D | carriage return | + * | `t` | U+0009 | horizontal tab | + */ + +function readEscapedCharacter(lexer, position) { + const body = lexer.source.body; + const code = body.charCodeAt(position + 1); -var require$$12 = /*@__PURE__*/getAugmentedNamespace(lib$1); + switch (code) { + case 0x0022: + // " + return { + value: '\u0022', + size: 2, + }; -(function (module, exports) { - const nodeFetch = require$$12; - const realFetch = nodeFetch.default || nodeFetch; - - const fetch = function (url, options) { - // Support schemaless URIs on the server for parity with the browser. - // Ex: //github.com/ -> https://github.com/ - if (/^\/\//.test(url)) { - url = 'https:' + url; - } - return realFetch.call(this, url, options) - }; + case 0x005c: + // \ + return { + value: '\u005c', + size: 2, + }; - fetch.ponyfill = true; + case 0x002f: + // / + return { + value: '\u002f', + size: 2, + }; - module.exports = exports = fetch; - exports.fetch = fetch; - exports.Headers = nodeFetch.Headers; - exports.Request = nodeFetch.Request; - exports.Response = nodeFetch.Response; + case 0x0062: + // b + return { + value: '\u0008', + size: 2, + }; - // Needed for TypeScript consumers without esModuleInterop. - exports.default = fetch; -} (nodePonyfill, nodePonyfill.exports)); + case 0x0066: + // f + return { + value: '\u000c', + size: 2, + }; -/** - * Return true if `value` is object-like. A value is object-like if it's not - * `null` and has a `typeof` result of "object". - */ -function isObjectLike(value) { - return typeof value == 'object' && value !== null; -} + case 0x006e: + // n + return { + value: '\u000a', + size: 2, + }; -function invariant$1(condition, message) { - const booleanCondition = Boolean(condition); + case 0x0072: + // r + return { + value: '\u000d', + size: 2, + }; - if (!booleanCondition) { - throw new Error( - message != null ? message : 'Unexpected invariant triggered.', - ); + case 0x0074: + // t + return { + value: '\u0009', + size: 2, + }; } -} -const LineRegExp = /\r\n|[\n\r]/g; + throw syntaxError( + lexer.source, + position, + `Invalid character escape sequence: "${body.slice( + position, + position + 2, + )}".`, + ); +} /** - * Represents a location in a Source. + * Reads a block string token from the source file. + * + * ``` + * StringValue :: + * - `"""` BlockStringCharacter* `"""` + * + * BlockStringCharacter :: + * - SourceCharacter but not `"""` or `\"""` + * - `\"""` + * ``` */ -/** - * Takes a Source and a UTF-8 character offset, and returns the corresponding - * line and column as a SourceLocation. - */ -function getLocation(source, position) { - let lastLineStart = 0; - let line = 1; +function readBlockString(lexer, start) { + const body = lexer.source.body; + const bodyLength = body.length; + let lineStart = lexer.lineStart; + let position = start + 3; + let chunkStart = position; + let currentLine = ''; + const blockLines = []; - for (const match of source.body.matchAll(LineRegExp)) { - typeof match.index === 'number' || invariant$1(false); + while (position < bodyLength) { + const code = body.charCodeAt(position); // Closing Triple-Quote (""") - if (match.index >= position) { - break; - } + if ( + code === 0x0022 && + body.charCodeAt(position + 1) === 0x0022 && + body.charCodeAt(position + 2) === 0x0022 + ) { + currentLine += body.slice(chunkStart, position); + blockLines.push(currentLine); + const token = createToken( + lexer, + TokenKind.BLOCK_STRING, + start, + position + 3, // Return a string of the lines joined with U+000A. + dedentBlockStringLines(blockLines).join('\n'), + ); + lexer.line += blockLines.length - 1; + lexer.lineStart = lineStart; + return token; + } // Escaped Triple-Quote (\""") - lastLineStart = match.index + match[0].length; - line += 1; - } + if ( + code === 0x005c && + body.charCodeAt(position + 1) === 0x0022 && + body.charCodeAt(position + 2) === 0x0022 && + body.charCodeAt(position + 3) === 0x0022 + ) { + currentLine += body.slice(chunkStart, position); + chunkStart = position + 1; // skip only slash - return { - line, - column: position + 1 - lastLineStart, - }; -} + position += 4; + continue; + } // LineTerminator -/** - * Render a helpful description of the location in the GraphQL Source document. - */ -function printLocation(location) { - return printSourceLocation( - location.source, - getLocation(location.source, location.start), - ); -} -/** - * Render a helpful description of the location in the GraphQL Source document. - */ + if (code === 0x000a || code === 0x000d) { + currentLine += body.slice(chunkStart, position); + blockLines.push(currentLine); -function printSourceLocation(source, sourceLocation) { - const firstLineColumnOffset = source.locationOffset.column - 1; - const body = ''.padStart(firstLineColumnOffset) + source.body; - const lineIndex = sourceLocation.line - 1; - const lineOffset = source.locationOffset.line - 1; - const lineNum = sourceLocation.line + lineOffset; - const columnOffset = sourceLocation.line === 1 ? firstLineColumnOffset : 0; - const columnNum = sourceLocation.column + columnOffset; - const locationStr = `${source.name}:${lineNum}:${columnNum}\n`; - const lines = body.split(/\r\n|[\n\r]/g); - const locationLine = lines[lineIndex]; // Special case for minified documents + if (code === 0x000d && body.charCodeAt(position + 1) === 0x000a) { + position += 2; + } else { + ++position; + } - if (locationLine.length > 120) { - const subLineIndex = Math.floor(columnNum / 80); - const subLineColumnNum = columnNum % 80; - const subLines = []; + currentLine = ''; + chunkStart = position; + lineStart = position; + continue; + } // SourceCharacter - for (let i = 0; i < locationLine.length; i += 80) { - subLines.push(locationLine.slice(i, i + 80)); + if (isUnicodeScalarValue(code)) { + ++position; + } else if (isSupplementaryCodePoint(body, position)) { + position += 2; + } else { + throw syntaxError( + lexer.source, + position, + `Invalid character within String: ${printCodePointAt( + lexer, + position, + )}.`, + ); } + } - return ( - locationStr + - printPrefixedLines([ - [`${lineNum} |`, subLines[0]], - ...subLines.slice(1, subLineIndex + 1).map((subLine) => ['|', subLine]), - ['|', '^'.padStart(subLineColumnNum)], - ['|', subLines[subLineIndex + 1]], - ]) - ); - } - - return ( - locationStr + - printPrefixedLines([ - // Lines specified like this: ["prefix", "string"], - [`${lineNum - 1} |`, lines[lineIndex - 1]], - [`${lineNum} |`, locationLine], - ['|', '^'.padStart(columnNum)], - [`${lineNum + 1} |`, lines[lineIndex + 1]], - ]) - ); + throw syntaxError(lexer.source, position, 'Unterminated string.'); } +/** + * Reads an alphanumeric + underscore name from the source. + * + * ``` + * Name :: + * - NameStart NameContinue* [lookahead != NameContinue] + * ``` + */ -function printPrefixedLines(lines) { - const existingLines = lines.filter(([_, line]) => line !== undefined); - const padLen = Math.max(...existingLines.map(([prefix]) => prefix.length)); - return existingLines - .map(([prefix, line]) => prefix.padStart(padLen) + (line ? ' ' + line : '')) - .join('\n'); -} +function readName(lexer, start) { + const body = lexer.source.body; + const bodyLength = body.length; + let position = start + 1; -function toNormalizedOptions(args) { - const firstArg = args[0]; + while (position < bodyLength) { + const code = body.charCodeAt(position); - if (firstArg == null || 'kind' in firstArg || 'length' in firstArg) { - return { - nodes: firstArg, - source: args[1], - positions: args[2], - path: args[3], - originalError: args[4], - extensions: args[5], - }; + if (isNameContinue(code)) { + ++position; + } else { + break; + } } - return firstArg; + return createToken( + lexer, + TokenKind.NAME, + start, + position, + body.slice(start, position), + ); } -/** - * A GraphQLError describes an Error found during the parse, validate, or - * execute phases of performing a GraphQL operation. In addition to a message - * and stack trace, it also includes information about the locations in a - * GraphQL document and/or execution result that correspond to the Error. - */ - -class GraphQLError extends Error { - /** - * An array of `{ line, column }` locations within the source GraphQL document - * which correspond to this error. - * - * Errors during validation often contain multiple locations, for example to - * point out two things with the same name. Errors during execution include a - * single location, the field which produced the error. - * - * Enumerable, and appears in the result of JSON.stringify(). - */ - /** - * An array describing the JSON-path into the execution response which - * corresponds to this error. Only included for errors during execution. - * - * Enumerable, and appears in the result of JSON.stringify(). - */ +function devAssert(condition, message) { + const booleanCondition = Boolean(condition); - /** - * An array of GraphQL AST Nodes corresponding to this error. - */ + if (!booleanCondition) { + throw new Error(message); + } +} - /** - * The source GraphQL document for the first location of this error. - * - * Note that if this Error represents more than one node, the source may not - * represent nodes after the first node. - */ +const MAX_ARRAY_LENGTH = 10; +const MAX_RECURSIVE_DEPTH$1 = 2; +/** + * Used to print values in error messages. + */ - /** - * An array of character offsets within the source GraphQL document - * which correspond to this error. - */ +function inspect$1(value) { + return formatValue$1(value, []); +} - /** - * The original error thrown from a field resolver during execution. - */ +function formatValue$1(value, seenValues) { + switch (typeof value) { + case 'string': + return JSON.stringify(value); - /** - * Extension fields to add to the formatted error. - */ + case 'function': + return value.name ? `[function ${value.name}]` : '[function]'; - /** - * @deprecated Please use the `GraphQLErrorOptions` constructor overload instead. - */ - constructor(message, ...rawArgs) { - var _this$nodes, _nodeLocations$, _ref; + case 'object': + return formatObjectValue$1(value, seenValues); - const { nodes, source, positions, path, originalError, extensions } = - toNormalizedOptions(rawArgs); - super(message); - this.name = 'GraphQLError'; - this.path = path !== null && path !== void 0 ? path : undefined; - this.originalError = - originalError !== null && originalError !== void 0 - ? originalError - : undefined; // Compute list of blame nodes. + default: + return String(value); + } +} - this.nodes = undefinedIfEmpty( - Array.isArray(nodes) ? nodes : nodes ? [nodes] : undefined, - ); - const nodeLocations = undefinedIfEmpty( - (_this$nodes = this.nodes) === null || _this$nodes === void 0 - ? void 0 - : _this$nodes.map((node) => node.loc).filter((loc) => loc != null), - ); // Compute locations in the source for the given nodes/positions. +function formatObjectValue$1(value, previouslySeenValues) { + if (value === null) { + return 'null'; + } - this.source = - source !== null && source !== void 0 - ? source - : nodeLocations === null || nodeLocations === void 0 - ? void 0 - : (_nodeLocations$ = nodeLocations[0]) === null || - _nodeLocations$ === void 0 - ? void 0 - : _nodeLocations$.source; - this.positions = - positions !== null && positions !== void 0 - ? positions - : nodeLocations === null || nodeLocations === void 0 - ? void 0 - : nodeLocations.map((loc) => loc.start); - this.locations = - positions && source - ? positions.map((pos) => getLocation(source, pos)) - : nodeLocations === null || nodeLocations === void 0 - ? void 0 - : nodeLocations.map((loc) => getLocation(loc.source, loc.start)); - const originalExtensions = isObjectLike( - originalError === null || originalError === void 0 - ? void 0 - : originalError.extensions, - ) - ? originalError === null || originalError === void 0 - ? void 0 - : originalError.extensions - : undefined; - this.extensions = - (_ref = - extensions !== null && extensions !== void 0 - ? extensions - : originalExtensions) !== null && _ref !== void 0 - ? _ref - : Object.create(null); // Only properties prescribed by the spec should be enumerable. - // Keep the rest as non-enumerable. + if (previouslySeenValues.includes(value)) { + return '[Circular]'; + } - Object.defineProperties(this, { - message: { - writable: true, - enumerable: true, - }, - name: { - enumerable: false, - }, - nodes: { - enumerable: false, - }, - source: { - enumerable: false, - }, - positions: { - enumerable: false, - }, - originalError: { - enumerable: false, - }, - }); // Include (non-enumerable) stack trace. + const seenValues = [...previouslySeenValues, value]; - /* c8 ignore start */ - // FIXME: https://github.com/graphql/graphql-js/issues/2317 + if (isJSONable$1(value)) { + const jsonValue = value.toJSON(); // check for infinite recursion - if ( - originalError !== null && - originalError !== void 0 && - originalError.stack - ) { - Object.defineProperty(this, 'stack', { - value: originalError.stack, - writable: true, - configurable: true, - }); - } else if (Error.captureStackTrace) { - Error.captureStackTrace(this, GraphQLError); - } else { - Object.defineProperty(this, 'stack', { - value: Error().stack, - writable: true, - configurable: true, - }); + if (jsonValue !== value) { + return typeof jsonValue === 'string' + ? jsonValue + : formatValue$1(jsonValue, seenValues); } - /* c8 ignore stop */ + } else if (Array.isArray(value)) { + return formatArray$1(value, seenValues); } - get [Symbol.toStringTag]() { - return 'GraphQLError'; - } + return formatObject$1(value, seenValues); +} - toString() { - let output = this.message; +function isJSONable$1(value) { + return typeof value.toJSON === 'function'; +} - if (this.nodes) { - for (const node of this.nodes) { - if (node.loc) { - output += '\n\n' + printLocation(node.loc); - } - } - } else if (this.source && this.locations) { - for (const location of this.locations) { - output += '\n\n' + printSourceLocation(this.source, location); - } - } +function formatObject$1(object, seenValues) { + const entries = Object.entries(object); - return output; + if (entries.length === 0) { + return '{}'; } - toJSON() { - const formattedError = { - message: this.message, - }; - - if (this.locations != null) { - formattedError.locations = this.locations; - } - - if (this.path != null) { - formattedError.path = this.path; - } - - if (this.extensions != null && Object.keys(this.extensions).length > 0) { - formattedError.extensions = this.extensions; - } - - return formattedError; + if (seenValues.length > MAX_RECURSIVE_DEPTH$1) { + return '[' + getObjectTag$1(object) + ']'; } -} -function undefinedIfEmpty(array) { - return array === undefined || array.length === 0 ? undefined : array; + const properties = entries.map( + ([key, value]) => key + ': ' + formatValue$1(value, seenValues), + ); + return '{ ' + properties.join(', ') + ' }'; } -/** - * Produces a GraphQLError representing a syntax error, containing useful - * descriptive information about the syntax error's position in the source. - */ +function formatArray$1(array, seenValues) { + if (array.length === 0) { + return '[]'; + } -function syntaxError(source, position, description) { - return new GraphQLError(`Syntax Error: ${description}`, { - source, - positions: [position], - }); -} + if (seenValues.length > MAX_RECURSIVE_DEPTH$1) { + return '[Array]'; + } -/** - * Contains a range of UTF-8 character offsets and token references that - * identify the region of the source from which the AST derived. - */ -class Location { - /** - * The character offset at which this Node begins. - */ + const len = Math.min(MAX_ARRAY_LENGTH, array.length); + const remaining = array.length - len; + const items = []; - /** - * The character offset at which this Node ends. - */ + for (let i = 0; i < len; ++i) { + items.push(formatValue$1(array[i], seenValues)); + } - /** - * The Token at which this Node begins. - */ + if (remaining === 1) { + items.push('... 1 more item'); + } else if (remaining > 1) { + items.push(`... ${remaining} more items`); + } - /** - * The Token at which this Node ends. - */ + return '[' + items.join(', ') + ']'; +} - /** - * The Source document the AST represents. - */ - constructor(startToken, endToken, source) { - this.start = startToken.start; - this.end = endToken.end; - this.startToken = startToken; - this.endToken = endToken; - this.source = source; - } +function getObjectTag$1(object) { + const tag = Object.prototype.toString + .call(object) + .replace(/^\[object /, '') + .replace(/]$/, ''); - get [Symbol.toStringTag]() { - return 'Location'; - } + if (tag === 'Object' && typeof object.constructor === 'function') { + const name = object.constructor.name; - toJSON() { - return { - start: this.start, - end: this.end, - }; + if (typeof name === 'string' && name !== '') { + return name; + } } + + return tag; } + /** - * Represents a range of characters represented by a lexical token - * within a Source. + * A replacement for instanceof which includes an error warning when multi-realm + * constructors are detected. + * See: https://expressjs.com/en/advanced/best-practice-performance.html#set-node_env-to-production + * See: https://webpack.js.org/guides/production/ */ -class Token { - /** - * The kind of Token. - */ +const instanceOf = + /* c8 ignore next 6 */ + // FIXME: https://github.com/graphql/graphql-js/issues/2317 + // eslint-disable-next-line no-undef + process.env.NODE_ENV === 'production' + ? function instanceOf(value, constructor) { + return value instanceof constructor; + } + : function instanceOf(value, constructor) { + if (value instanceof constructor) { + return true; + } - /** - * The character offset at which this Node begins. - */ + if (typeof value === 'object' && value !== null) { + var _value$constructor; - /** - * The character offset at which this Node ends. - */ + // Prefer Symbol.toStringTag since it is immune to minification. + const className = constructor.prototype[Symbol.toStringTag]; + const valueClassName = // We still need to support constructor's name to detect conflicts with older versions of this library. + Symbol.toStringTag in value // @ts-expect-error TS bug see, https://github.com/microsoft/TypeScript/issues/38009 + ? value[Symbol.toStringTag] + : (_value$constructor = value.constructor) === null || + _value$constructor === void 0 + ? void 0 + : _value$constructor.name; - /** - * The 1-indexed line number on which this Token appears. - */ + if (className === valueClassName) { + const stringifiedValue = inspect$1(value); + throw new Error(`Cannot use ${className} "${stringifiedValue}" from another module or realm. - /** - * The 1-indexed column number at which this Token begins. - */ +Ensure that there is only one instance of "graphql" in the node_modules +directory. If different versions of "graphql" are the dependencies of other +relied on modules, use "resolutions" to ensure only one version is installed. - /** - * For non-punctuation tokens, represents the interpreted value of the token. - * - * Note: is undefined for punctuation tokens, but typed as string for - * convenience in the parser. - */ +https://yarnpkg.com/en/docs/selective-version-resolutions - /** - * Tokens exist as nodes in a double-linked-list amongst all tokens - * including ignored tokens. is always the first node and - * the last. - */ - constructor(kind, start, end, line, column, value) { - this.kind = kind; - this.start = start; - this.end = end; - this.line = line; - this.column = column; // eslint-disable-next-line @typescript-eslint/no-non-null-assertion +Duplicate "graphql" modules cannot be used at the same time since different +versions may have different capabilities and behavior. The data from one +version used in the function from another could produce confusing and +spurious results.`); + } + } - this.value = value; - this.prev = null; - this.next = null; - } + return false; + }; - get [Symbol.toStringTag]() { - return 'Token'; +/** + * A representation of source input to GraphQL. The `name` and `locationOffset` parameters are + * optional, but they are useful for clients who store GraphQL documents in source files. + * For example, if the GraphQL input starts at line 40 in a file named `Foo.graphql`, it might + * be useful for `name` to be `"Foo.graphql"` and location to be `{ line: 40, column: 1 }`. + * The `line` and `column` properties in `locationOffset` are 1-indexed. + */ +class Source { + constructor( + body, + name = 'GraphQL request', + locationOffset = { + line: 1, + column: 1, + }, + ) { + typeof body === 'string' || + devAssert(false, `Body must be a string. Received: ${inspect$1(body)}.`); + this.body = body; + this.name = name; + this.locationOffset = locationOffset; + this.locationOffset.line > 0 || + devAssert( + false, + 'line in locationOffset is 1-indexed and must be positive.', + ); + this.locationOffset.column > 0 || + devAssert( + false, + 'column in locationOffset is 1-indexed and must be positive.', + ); } - toJSON() { - return { - kind: this.kind, - value: this.value, - line: this.line, - column: this.column, - }; + get [Symbol.toStringTag]() { + return 'Source'; } } /** - * The list of all possible AST node types. - */ - -/** - * @internal - */ -const QueryDocumentKeys = { - Name: [], - Document: ['definitions'], - OperationDefinition: [ - 'name', - 'variableDefinitions', - 'directives', - 'selectionSet', - ], - VariableDefinition: ['variable', 'type', 'defaultValue', 'directives'], - Variable: ['name'], - SelectionSet: ['selections'], - Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet'], - Argument: ['name', 'value'], - FragmentSpread: ['name', 'directives'], - InlineFragment: ['typeCondition', 'directives', 'selectionSet'], - FragmentDefinition: [ - 'name', // Note: fragment variable definitions are deprecated and will removed in v17.0.0 - 'variableDefinitions', - 'typeCondition', - 'directives', - 'selectionSet', - ], - IntValue: [], - FloatValue: [], - StringValue: [], - BooleanValue: [], - NullValue: [], - EnumValue: [], - ListValue: ['values'], - ObjectValue: ['fields'], - ObjectField: ['name', 'value'], - Directive: ['name', 'arguments'], - NamedType: ['name'], - ListType: ['type'], - NonNullType: ['type'], - SchemaDefinition: ['description', 'directives', 'operationTypes'], - OperationTypeDefinition: ['type'], - ScalarTypeDefinition: ['description', 'name', 'directives'], - ObjectTypeDefinition: [ - 'description', - 'name', - 'interfaces', - 'directives', - 'fields', - ], - FieldDefinition: ['description', 'name', 'arguments', 'type', 'directives'], - InputValueDefinition: [ - 'description', - 'name', - 'type', - 'defaultValue', - 'directives', - ], - InterfaceTypeDefinition: [ - 'description', - 'name', - 'interfaces', - 'directives', - 'fields', - ], - UnionTypeDefinition: ['description', 'name', 'directives', 'types'], - EnumTypeDefinition: ['description', 'name', 'directives', 'values'], - EnumValueDefinition: ['description', 'name', 'directives'], - InputObjectTypeDefinition: ['description', 'name', 'directives', 'fields'], - DirectiveDefinition: ['description', 'name', 'arguments', 'locations'], - SchemaExtension: ['directives', 'operationTypes'], - ScalarTypeExtension: ['name', 'directives'], - ObjectTypeExtension: ['name', 'interfaces', 'directives', 'fields'], - InterfaceTypeExtension: ['name', 'interfaces', 'directives', 'fields'], - UnionTypeExtension: ['name', 'directives', 'types'], - EnumTypeExtension: ['name', 'directives', 'values'], - InputObjectTypeExtension: ['name', 'directives', 'fields'], -}; -const kindValues = new Set(Object.keys(QueryDocumentKeys)); -/** + * Test if the given value is a Source object. + * * @internal */ -function isNode(maybeNode) { - const maybeKind = - maybeNode === null || maybeNode === void 0 ? void 0 : maybeNode.kind; - return typeof maybeKind === 'string' && kindValues.has(maybeKind); +function isSource(source) { + return instanceOf(source, Source); } -/** Name */ - -var OperationTypeNode; - -(function (OperationTypeNode) { - OperationTypeNode['QUERY'] = 'query'; - OperationTypeNode['MUTATION'] = 'mutation'; - OperationTypeNode['SUBSCRIPTION'] = 'subscription'; -})(OperationTypeNode || (OperationTypeNode = {})); - -/** - * The set of allowed directive location values. - */ -var DirectiveLocation$1; -(function (DirectiveLocation) { - DirectiveLocation['QUERY'] = 'QUERY'; - DirectiveLocation['MUTATION'] = 'MUTATION'; - DirectiveLocation['SUBSCRIPTION'] = 'SUBSCRIPTION'; - DirectiveLocation['FIELD'] = 'FIELD'; - DirectiveLocation['FRAGMENT_DEFINITION'] = 'FRAGMENT_DEFINITION'; - DirectiveLocation['FRAGMENT_SPREAD'] = 'FRAGMENT_SPREAD'; - DirectiveLocation['INLINE_FRAGMENT'] = 'INLINE_FRAGMENT'; - DirectiveLocation['VARIABLE_DEFINITION'] = 'VARIABLE_DEFINITION'; - DirectiveLocation['SCHEMA'] = 'SCHEMA'; - DirectiveLocation['SCALAR'] = 'SCALAR'; - DirectiveLocation['OBJECT'] = 'OBJECT'; - DirectiveLocation['FIELD_DEFINITION'] = 'FIELD_DEFINITION'; - DirectiveLocation['ARGUMENT_DEFINITION'] = 'ARGUMENT_DEFINITION'; - DirectiveLocation['INTERFACE'] = 'INTERFACE'; - DirectiveLocation['UNION'] = 'UNION'; - DirectiveLocation['ENUM'] = 'ENUM'; - DirectiveLocation['ENUM_VALUE'] = 'ENUM_VALUE'; - DirectiveLocation['INPUT_OBJECT'] = 'INPUT_OBJECT'; - DirectiveLocation['INPUT_FIELD_DEFINITION'] = 'INPUT_FIELD_DEFINITION'; -})(DirectiveLocation$1 || (DirectiveLocation$1 = {})); /** - * The enum type representing the directive location values. - * - * @deprecated Please use `DirectiveLocation`. Will be remove in v17. + * Configuration options to control parser behavior */ /** - * The set of allowed kind values for AST nodes. + * Given a GraphQL source, parses it into a Document. + * Throws GraphQLError if a syntax error is encountered. */ -var Kind; - -(function (Kind) { - Kind['NAME'] = 'Name'; - Kind['DOCUMENT'] = 'Document'; - Kind['OPERATION_DEFINITION'] = 'OperationDefinition'; - Kind['VARIABLE_DEFINITION'] = 'VariableDefinition'; - Kind['SELECTION_SET'] = 'SelectionSet'; - Kind['FIELD'] = 'Field'; - Kind['ARGUMENT'] = 'Argument'; - Kind['FRAGMENT_SPREAD'] = 'FragmentSpread'; - Kind['INLINE_FRAGMENT'] = 'InlineFragment'; - Kind['FRAGMENT_DEFINITION'] = 'FragmentDefinition'; - Kind['VARIABLE'] = 'Variable'; - Kind['INT'] = 'IntValue'; - Kind['FLOAT'] = 'FloatValue'; - Kind['STRING'] = 'StringValue'; - Kind['BOOLEAN'] = 'BooleanValue'; - Kind['NULL'] = 'NullValue'; - Kind['ENUM'] = 'EnumValue'; - Kind['LIST'] = 'ListValue'; - Kind['OBJECT'] = 'ObjectValue'; - Kind['OBJECT_FIELD'] = 'ObjectField'; - Kind['DIRECTIVE'] = 'Directive'; - Kind['NAMED_TYPE'] = 'NamedType'; - Kind['LIST_TYPE'] = 'ListType'; - Kind['NON_NULL_TYPE'] = 'NonNullType'; - Kind['SCHEMA_DEFINITION'] = 'SchemaDefinition'; - Kind['OPERATION_TYPE_DEFINITION'] = 'OperationTypeDefinition'; - Kind['SCALAR_TYPE_DEFINITION'] = 'ScalarTypeDefinition'; - Kind['OBJECT_TYPE_DEFINITION'] = 'ObjectTypeDefinition'; - Kind['FIELD_DEFINITION'] = 'FieldDefinition'; - Kind['INPUT_VALUE_DEFINITION'] = 'InputValueDefinition'; - Kind['INTERFACE_TYPE_DEFINITION'] = 'InterfaceTypeDefinition'; - Kind['UNION_TYPE_DEFINITION'] = 'UnionTypeDefinition'; - Kind['ENUM_TYPE_DEFINITION'] = 'EnumTypeDefinition'; - Kind['ENUM_VALUE_DEFINITION'] = 'EnumValueDefinition'; - Kind['INPUT_OBJECT_TYPE_DEFINITION'] = 'InputObjectTypeDefinition'; - Kind['DIRECTIVE_DEFINITION'] = 'DirectiveDefinition'; - Kind['SCHEMA_EXTENSION'] = 'SchemaExtension'; - Kind['SCALAR_TYPE_EXTENSION'] = 'ScalarTypeExtension'; - Kind['OBJECT_TYPE_EXTENSION'] = 'ObjectTypeExtension'; - Kind['INTERFACE_TYPE_EXTENSION'] = 'InterfaceTypeExtension'; - Kind['UNION_TYPE_EXTENSION'] = 'UnionTypeExtension'; - Kind['ENUM_TYPE_EXTENSION'] = 'EnumTypeExtension'; - Kind['INPUT_OBJECT_TYPE_EXTENSION'] = 'InputObjectTypeExtension'; -})(Kind || (Kind = {})); +function parse(source, options) { + const parser = new Parser(source, options); + return parser.parseDocument(); +} /** - * The enum type representing the possible kind values of AST nodes. + * Given a string containing a GraphQL value (ex. `[42]`), parse the AST for + * that value. + * Throws GraphQLError if a syntax error is encountered. * - * @deprecated Please use `Kind`. Will be remove in v17. + * This is useful within tools that operate upon GraphQL Values directly and + * in isolation of complete GraphQL documents. + * + * Consider providing the results to the utility function: valueFromAST(). */ -/** - * ``` - * WhiteSpace :: - * - "Horizontal Tab (U+0009)" - * - "Space (U+0020)" - * ``` - * @internal - */ -function isWhiteSpace(code) { - return code === 0x0009 || code === 0x0020; +function parseValue(source, options) { + const parser = new Parser(source, options); + parser.expectToken(TokenKind.SOF); + const value = parser.parseValueLiteral(false); + parser.expectToken(TokenKind.EOF); + return value; } /** - * ``` - * Digit :: one of - * - `0` `1` `2` `3` `4` `5` `6` `7` `8` `9` - * ``` - * @internal + * Similar to parseValue(), but raises a parse error if it encounters a + * variable. The return type will be a constant value. */ -function isDigit$1(code) { - return code >= 0x0030 && code <= 0x0039; +function parseConstValue(source, options) { + const parser = new Parser(source, options); + parser.expectToken(TokenKind.SOF); + const value = parser.parseConstValueLiteral(); + parser.expectToken(TokenKind.EOF); + return value; } /** - * ``` - * Letter :: one of - * - `A` `B` `C` `D` `E` `F` `G` `H` `I` `J` `K` `L` `M` - * - `N` `O` `P` `Q` `R` `S` `T` `U` `V` `W` `X` `Y` `Z` - * - `a` `b` `c` `d` `e` `f` `g` `h` `i` `j` `k` `l` `m` - * - `n` `o` `p` `q` `r` `s` `t` `u` `v` `w` `x` `y` `z` - * ``` - * @internal + * Given a string containing a GraphQL Type (ex. `[Int!]`), parse the AST for + * that type. + * Throws GraphQLError if a syntax error is encountered. + * + * This is useful within tools that operate upon GraphQL Types directly and + * in isolation of complete GraphQL documents. + * + * Consider providing the results to the utility function: typeFromAST(). */ -function isLetter(code) { - return ( - (code >= 0x0061 && code <= 0x007a) || // A-Z - (code >= 0x0041 && code <= 0x005a) // a-z - ); +function parseType(source, options) { + const parser = new Parser(source, options); + parser.expectToken(TokenKind.SOF); + const type = parser.parseTypeReference(); + parser.expectToken(TokenKind.EOF); + return type; } /** - * ``` - * NameStart :: - * - Letter - * - `_` - * ``` + * This class is exported only to assist people in implementing their own parsers + * without duplicating too much code and should be used only as last resort for cases + * such as experimental syntax or if certain features could not be contributed upstream. + * + * It is still part of the internal API and is versioned, so any changes to it are never + * considered breaking changes. If you still need to support multiple versions of the + * library, please use the `versionInfo` variable for version detection. + * * @internal */ -function isNameStart(code) { - return isLetter(code) || code === 0x005f; -} -/** - * ``` - * NameContinue :: - * - Letter - * - Digit - * - `_` - * ``` - * @internal - */ +class Parser { + constructor(source, options = {}) { + const sourceObj = isSource(source) ? source : new Source(source); + this._lexer = new Lexer(sourceObj); + this._options = options; + this._tokenCounter = 0; + } + /** + * Converts a name lex token into a name parse node. + */ -function isNameContinue(code) { - return isLetter(code) || isDigit$1(code) || code === 0x005f; -} + parseName() { + const token = this.expectToken(TokenKind.NAME); + return this.node(token, { + kind: Kind.NAME, + value: token.value, + }); + } // Implements the parsing rules in the Document section. -/** - * Produces the value of a block string from its parsed raw value, similar to - * CoffeeScript's block string, Python's docstring trim or Ruby's strip_heredoc. - * - * This implements the GraphQL spec's BlockStringValue() static algorithm. - * - * @internal - */ + /** + * Document : Definition+ + */ -function dedentBlockStringLines(lines) { - var _firstNonEmptyLine2; + parseDocument() { + return this.node(this._lexer.token, { + kind: Kind.DOCUMENT, + definitions: this.many( + TokenKind.SOF, + this.parseDefinition, + TokenKind.EOF, + ), + }); + } + /** + * Definition : + * - ExecutableDefinition + * - TypeSystemDefinition + * - TypeSystemExtension + * + * ExecutableDefinition : + * - OperationDefinition + * - FragmentDefinition + * + * TypeSystemDefinition : + * - SchemaDefinition + * - TypeDefinition + * - DirectiveDefinition + * + * TypeDefinition : + * - ScalarTypeDefinition + * - ObjectTypeDefinition + * - InterfaceTypeDefinition + * - UnionTypeDefinition + * - EnumTypeDefinition + * - InputObjectTypeDefinition + */ - let commonIndent = Number.MAX_SAFE_INTEGER; - let firstNonEmptyLine = null; - let lastNonEmptyLine = -1; + parseDefinition() { + if (this.peek(TokenKind.BRACE_L)) { + return this.parseOperationDefinition(); + } // Many definitions begin with a description and require a lookahead. - for (let i = 0; i < lines.length; ++i) { - var _firstNonEmptyLine; + const hasDescription = this.peekDescription(); + const keywordToken = hasDescription + ? this._lexer.lookahead() + : this._lexer.token; - const line = lines[i]; - const indent = leadingWhitespace$1(line); + if (keywordToken.kind === TokenKind.NAME) { + switch (keywordToken.value) { + case 'schema': + return this.parseSchemaDefinition(); - if (indent === line.length) { - continue; // skip empty lines - } + case 'scalar': + return this.parseScalarTypeDefinition(); - firstNonEmptyLine = - (_firstNonEmptyLine = firstNonEmptyLine) !== null && - _firstNonEmptyLine !== void 0 - ? _firstNonEmptyLine - : i; - lastNonEmptyLine = i; + case 'type': + return this.parseObjectTypeDefinition(); - if (i !== 0 && indent < commonIndent) { - commonIndent = indent; - } - } + case 'interface': + return this.parseInterfaceTypeDefinition(); - return lines // Remove common indentation from all lines but first. - .map((line, i) => (i === 0 ? line : line.slice(commonIndent))) // Remove leading and trailing blank lines. - .slice( - (_firstNonEmptyLine2 = firstNonEmptyLine) !== null && - _firstNonEmptyLine2 !== void 0 - ? _firstNonEmptyLine2 - : 0, - lastNonEmptyLine + 1, - ); -} + case 'union': + return this.parseUnionTypeDefinition(); -function leadingWhitespace$1(str) { - let i = 0; + case 'enum': + return this.parseEnumTypeDefinition(); - while (i < str.length && isWhiteSpace(str.charCodeAt(i))) { - ++i; - } + case 'input': + return this.parseInputObjectTypeDefinition(); - return i; -} -/** - * Print a block string in the indented block form by adding a leading and - * trailing blank line. However, if a block string starts with whitespace and is - * a single-line, adding a leading blank line would strip that whitespace. - * - * @internal - */ + case 'directive': + return this.parseDirectiveDefinition(); + } -function printBlockString$1(value, options) { - const escapedValue = value.replace(/"""/g, '\\"""'); // Expand a block string's raw value into independent lines. + if (hasDescription) { + throw syntaxError( + this._lexer.source, + this._lexer.token.start, + 'Unexpected description, descriptions are supported only on type definitions.', + ); + } - const lines = escapedValue.split(/\r\n|[\n\r]/g); - const isSingleLine = lines.length === 1; // If common indentation is found we can fix some of those cases by adding leading new line + switch (keywordToken.value) { + case 'query': + case 'mutation': + case 'subscription': + return this.parseOperationDefinition(); - const forceLeadingNewLine = - lines.length > 1 && - lines - .slice(1) - .every((line) => line.length === 0 || isWhiteSpace(line.charCodeAt(0))); // Trailing triple quotes just looks confusing but doesn't force trailing new line + case 'fragment': + return this.parseFragmentDefinition(); - const hasTrailingTripleQuotes = escapedValue.endsWith('\\"""'); // Trailing quote (single or double) or slash forces trailing new line + case 'extend': + return this.parseTypeSystemExtension(); + } + } - const hasTrailingQuote = value.endsWith('"') && !hasTrailingTripleQuotes; - const hasTrailingSlash = value.endsWith('\\'); - const forceTrailingNewline = hasTrailingQuote || hasTrailingSlash; - const printAsMultipleLines = - !(options !== null && options !== void 0 && options.minimize) && // add leading and trailing new lines only if it improves readability - (!isSingleLine || - value.length > 70 || - forceTrailingNewline || - forceLeadingNewLine || - hasTrailingTripleQuotes); - let result = ''; // Format a multi-line block quote to account for leading space. + throw this.unexpected(keywordToken); + } // Implements the parsing rules in the Operations section. - const skipLeadingNewLine = isSingleLine && isWhiteSpace(value.charCodeAt(0)); + /** + * OperationDefinition : + * - SelectionSet + * - OperationType Name? VariableDefinitions? Directives? SelectionSet + */ - if ((printAsMultipleLines && !skipLeadingNewLine) || forceLeadingNewLine) { - result += '\n'; - } + parseOperationDefinition() { + const start = this._lexer.token; - result += escapedValue; + if (this.peek(TokenKind.BRACE_L)) { + return this.node(start, { + kind: Kind.OPERATION_DEFINITION, + operation: OperationTypeNode.QUERY, + name: undefined, + variableDefinitions: [], + directives: [], + selectionSet: this.parseSelectionSet(), + }); + } - if (printAsMultipleLines || forceTrailingNewline) { - result += '\n'; + const operation = this.parseOperationType(); + let name; + + if (this.peek(TokenKind.NAME)) { + name = this.parseName(); + } + + return this.node(start, { + kind: Kind.OPERATION_DEFINITION, + operation, + name, + variableDefinitions: this.parseVariableDefinitions(), + directives: this.parseDirectives(false), + selectionSet: this.parseSelectionSet(), + }); } + /** + * OperationType : one of query mutation subscription + */ - return '"""' + result + '"""'; -} + parseOperationType() { + const operationToken = this.expectToken(TokenKind.NAME); -/** - * An exported enum describing the different kinds of tokens that the - * lexer emits. - */ -var TokenKind; + switch (operationToken.value) { + case 'query': + return OperationTypeNode.QUERY; -(function (TokenKind) { - TokenKind['SOF'] = ''; - TokenKind['EOF'] = ''; - TokenKind['BANG'] = '!'; - TokenKind['DOLLAR'] = '$'; - TokenKind['AMP'] = '&'; - TokenKind['PAREN_L'] = '('; - TokenKind['PAREN_R'] = ')'; - TokenKind['SPREAD'] = '...'; - TokenKind['COLON'] = ':'; - TokenKind['EQUALS'] = '='; - TokenKind['AT'] = '@'; - TokenKind['BRACKET_L'] = '['; - TokenKind['BRACKET_R'] = ']'; - TokenKind['BRACE_L'] = '{'; - TokenKind['PIPE'] = '|'; - TokenKind['BRACE_R'] = '}'; - TokenKind['NAME'] = 'Name'; - TokenKind['INT'] = 'Int'; - TokenKind['FLOAT'] = 'Float'; - TokenKind['STRING'] = 'String'; - TokenKind['BLOCK_STRING'] = 'BlockString'; - TokenKind['COMMENT'] = 'Comment'; -})(TokenKind || (TokenKind = {})); -/** - * The enum type representing the token kinds values. - * - * @deprecated Please use `TokenKind`. Will be remove in v17. - */ + case 'mutation': + return OperationTypeNode.MUTATION; -/** - * Given a Source object, creates a Lexer for that source. - * A Lexer is a stateful stream generator in that every time - * it is advanced, it returns the next token in the Source. Assuming the - * source lexes, the final Token emitted by the lexer will be of kind - * EOF, after which the lexer will repeatedly return the same EOF token - * whenever called. - */ + case 'subscription': + return OperationTypeNode.SUBSCRIPTION; + } -class Lexer { + throw this.unexpected(operationToken); + } /** - * The previously focused non-ignored token. + * VariableDefinitions : ( VariableDefinition+ ) */ + parseVariableDefinitions() { + return this.optionalMany( + TokenKind.PAREN_L, + this.parseVariableDefinition, + TokenKind.PAREN_R, + ); + } /** - * The currently focused non-ignored token. + * VariableDefinition : Variable : Type DefaultValue? Directives[Const]? */ + parseVariableDefinition() { + return this.node(this._lexer.token, { + kind: Kind.VARIABLE_DEFINITION, + variable: this.parseVariable(), + type: (this.expectToken(TokenKind.COLON), this.parseTypeReference()), + defaultValue: this.expectOptionalToken(TokenKind.EQUALS) + ? this.parseConstValueLiteral() + : undefined, + directives: this.parseConstDirectives(), + }); + } /** - * The (1-indexed) line containing the current token. + * Variable : $ Name */ + parseVariable() { + const start = this._lexer.token; + this.expectToken(TokenKind.DOLLAR); + return this.node(start, { + kind: Kind.VARIABLE, + name: this.parseName(), + }); + } /** - * The character offset at which the current line begins. + * ``` + * SelectionSet : { Selection+ } + * ``` */ - constructor(source) { - const startOfFileToken = new Token(TokenKind.SOF, 0, 0, 0, 0); - this.source = source; - this.lastToken = startOfFileToken; - this.token = startOfFileToken; - this.line = 1; - this.lineStart = 0; - } - get [Symbol.toStringTag]() { - return 'Lexer'; + parseSelectionSet() { + return this.node(this._lexer.token, { + kind: Kind.SELECTION_SET, + selections: this.many( + TokenKind.BRACE_L, + this.parseSelection, + TokenKind.BRACE_R, + ), + }); } /** - * Advances the token stream to the next non-ignored token. + * Selection : + * - Field + * - FragmentSpread + * - InlineFragment */ - advance() { - this.lastToken = this.token; - const token = (this.token = this.lookahead()); - return token; + parseSelection() { + return this.peek(TokenKind.SPREAD) + ? this.parseFragment() + : this.parseField(); } /** - * Looks ahead and returns the next non-ignored token, but does not change - * the state of Lexer. + * Field : Alias? Name Arguments? Directives? SelectionSet? + * + * Alias : Name : */ - lookahead() { - let token = this.token; - - if (token.kind !== TokenKind.EOF) { - do { - if (token.next) { - token = token.next; - } else { - // Read the next token and form a link in the token linked-list. - const nextToken = readNextToken(this, token.end); // @ts-expect-error next is only mutable during parsing. - - token.next = nextToken; // @ts-expect-error prev is only mutable during parsing. + parseField() { + const start = this._lexer.token; + const nameOrAlias = this.parseName(); + let alias; + let name; - nextToken.prev = token; - token = nextToken; - } - } while (token.kind === TokenKind.COMMENT); + if (this.expectOptionalToken(TokenKind.COLON)) { + alias = nameOrAlias; + name = this.parseName(); + } else { + name = nameOrAlias; } - return token; + return this.node(start, { + kind: Kind.FIELD, + alias, + name, + arguments: this.parseArguments(false), + directives: this.parseDirectives(false), + selectionSet: this.peek(TokenKind.BRACE_L) + ? this.parseSelectionSet() + : undefined, + }); } -} -/** - * @internal - */ - -function isPunctuatorTokenKind(kind) { - return ( - kind === TokenKind.BANG || - kind === TokenKind.DOLLAR || - kind === TokenKind.AMP || - kind === TokenKind.PAREN_L || - kind === TokenKind.PAREN_R || - kind === TokenKind.SPREAD || - kind === TokenKind.COLON || - kind === TokenKind.EQUALS || - kind === TokenKind.AT || - kind === TokenKind.BRACKET_L || - kind === TokenKind.BRACKET_R || - kind === TokenKind.BRACE_L || - kind === TokenKind.PIPE || - kind === TokenKind.BRACE_R - ); -} -/** - * A Unicode scalar value is any Unicode code point except surrogate code - * points. In other words, the inclusive ranges of values 0x0000 to 0xD7FF and - * 0xE000 to 0x10FFFF. - * - * SourceCharacter :: - * - "Any Unicode scalar value" - */ + /** + * Arguments[Const] : ( Argument[?Const]+ ) + */ -function isUnicodeScalarValue(code) { - return ( - (code >= 0x0000 && code <= 0xd7ff) || (code >= 0xe000 && code <= 0x10ffff) - ); -} -/** - * The GraphQL specification defines source text as a sequence of unicode scalar - * values (which Unicode defines to exclude surrogate code points). However - * JavaScript defines strings as a sequence of UTF-16 code units which may - * include surrogates. A surrogate pair is a valid source character as it - * encodes a supplementary code point (above U+FFFF), but unpaired surrogate - * code points are not valid source characters. - */ + parseArguments(isConst) { + const item = isConst ? this.parseConstArgument : this.parseArgument; + return this.optionalMany(TokenKind.PAREN_L, item, TokenKind.PAREN_R); + } + /** + * Argument[Const] : Name : Value[?Const] + */ -function isSupplementaryCodePoint(body, location) { - return ( - isLeadingSurrogate(body.charCodeAt(location)) && - isTrailingSurrogate(body.charCodeAt(location + 1)) - ); -} + parseArgument(isConst = false) { + const start = this._lexer.token; + const name = this.parseName(); + this.expectToken(TokenKind.COLON); + return this.node(start, { + kind: Kind.ARGUMENT, + name, + value: this.parseValueLiteral(isConst), + }); + } -function isLeadingSurrogate(code) { - return code >= 0xd800 && code <= 0xdbff; -} + parseConstArgument() { + return this.parseArgument(true); + } // Implements the parsing rules in the Fragments section. -function isTrailingSurrogate(code) { - return code >= 0xdc00 && code <= 0xdfff; -} -/** - * Prints the code point (or end of file reference) at a given location in a - * source for use in error messages. - * - * Printable ASCII is printed quoted, while other points are printed in Unicode - * code point form (ie. U+1234). - */ + /** + * Corresponds to both FragmentSpread and InlineFragment in the spec. + * + * FragmentSpread : ... FragmentName Directives? + * + * InlineFragment : ... TypeCondition? Directives? SelectionSet + */ -function printCodePointAt(lexer, location) { - const code = lexer.source.body.codePointAt(location); + parseFragment() { + const start = this._lexer.token; + this.expectToken(TokenKind.SPREAD); + const hasTypeCondition = this.expectOptionalKeyword('on'); - if (code === undefined) { - return TokenKind.EOF; - } else if (code >= 0x0020 && code <= 0x007e) { - // Printable ASCII - const char = String.fromCodePoint(code); - return char === '"' ? "'\"'" : `"${char}"`; - } // Unicode code point + if (!hasTypeCondition && this.peek(TokenKind.NAME)) { + return this.node(start, { + kind: Kind.FRAGMENT_SPREAD, + name: this.parseFragmentName(), + directives: this.parseDirectives(false), + }); + } - return 'U+' + code.toString(16).toUpperCase().padStart(4, '0'); -} -/** - * Create a token with line and column location information. - */ + return this.node(start, { + kind: Kind.INLINE_FRAGMENT, + typeCondition: hasTypeCondition ? this.parseNamedType() : undefined, + directives: this.parseDirectives(false), + selectionSet: this.parseSelectionSet(), + }); + } + /** + * FragmentDefinition : + * - fragment FragmentName on TypeCondition Directives? SelectionSet + * + * TypeCondition : NamedType + */ -function createToken(lexer, kind, start, end, value) { - const line = lexer.line; - const col = 1 + start - lexer.lineStart; - return new Token(kind, start, end, line, col, value); -} -/** - * Gets the next token from the source starting at the given position. - * - * This skips over whitespace until it finds the next lexable token, then lexes - * punctuators immediately or calls the appropriate helper function for more - * complicated tokens. - */ + parseFragmentDefinition() { + const start = this._lexer.token; + this.expectKeyword('fragment'); // Legacy support for defining variables within fragments changes + // the grammar of FragmentDefinition: + // - fragment FragmentName VariableDefinitions? on TypeCondition Directives? SelectionSet -function readNextToken(lexer, start) { - const body = lexer.source.body; - const bodyLength = body.length; - let position = start; + if (this._options.allowLegacyFragmentVariables === true) { + return this.node(start, { + kind: Kind.FRAGMENT_DEFINITION, + name: this.parseFragmentName(), + variableDefinitions: this.parseVariableDefinitions(), + typeCondition: (this.expectKeyword('on'), this.parseNamedType()), + directives: this.parseDirectives(false), + selectionSet: this.parseSelectionSet(), + }); + } - while (position < bodyLength) { - const code = body.charCodeAt(position); // SourceCharacter + return this.node(start, { + kind: Kind.FRAGMENT_DEFINITION, + name: this.parseFragmentName(), + typeCondition: (this.expectKeyword('on'), this.parseNamedType()), + directives: this.parseDirectives(false), + selectionSet: this.parseSelectionSet(), + }); + } + /** + * FragmentName : Name but not `on` + */ - switch (code) { - // Ignored :: - // - UnicodeBOM - // - WhiteSpace - // - LineTerminator - // - Comment - // - Comma - // - // UnicodeBOM :: "Byte Order Mark (U+FEFF)" - // - // WhiteSpace :: - // - "Horizontal Tab (U+0009)" - // - "Space (U+0020)" - // - // Comma :: , - case 0xfeff: // + parseFragmentName() { + if (this._lexer.token.value === 'on') { + throw this.unexpected(); + } - case 0x0009: // \t + return this.parseName(); + } // Implements the parsing rules in the Values section. - case 0x0020: // + /** + * Value[Const] : + * - [~Const] Variable + * - IntValue + * - FloatValue + * - StringValue + * - BooleanValue + * - NullValue + * - EnumValue + * - ListValue[?Const] + * - ObjectValue[?Const] + * + * BooleanValue : one of `true` `false` + * + * NullValue : `null` + * + * EnumValue : Name but not `true`, `false` or `null` + */ - case 0x002c: - // , - ++position; - continue; - // LineTerminator :: - // - "New Line (U+000A)" - // - "Carriage Return (U+000D)" [lookahead != "New Line (U+000A)"] - // - "Carriage Return (U+000D)" "New Line (U+000A)" + parseValueLiteral(isConst) { + const token = this._lexer.token; - case 0x000a: - // \n - ++position; - ++lexer.line; - lexer.lineStart = position; - continue; + switch (token.kind) { + case TokenKind.BRACKET_L: + return this.parseList(isConst); - case 0x000d: - // \r - if (body.charCodeAt(position + 1) === 0x000a) { - position += 2; - } else { - ++position; - } + case TokenKind.BRACE_L: + return this.parseObject(isConst); - ++lexer.line; - lexer.lineStart = position; - continue; - // Comment + case TokenKind.INT: + this.advanceLexer(); + return this.node(token, { + kind: Kind.INT, + value: token.value, + }); - case 0x0023: - // # - return readComment(lexer, position); - // Token :: - // - Punctuator - // - Name - // - IntValue - // - FloatValue - // - StringValue - // - // Punctuator :: one of ! $ & ( ) ... : = @ [ ] { | } + case TokenKind.FLOAT: + this.advanceLexer(); + return this.node(token, { + kind: Kind.FLOAT, + value: token.value, + }); - case 0x0021: - // ! - return createToken(lexer, TokenKind.BANG, position, position + 1); + case TokenKind.STRING: + case TokenKind.BLOCK_STRING: + return this.parseStringLiteral(); - case 0x0024: - // $ - return createToken(lexer, TokenKind.DOLLAR, position, position + 1); + case TokenKind.NAME: + this.advanceLexer(); - case 0x0026: - // & - return createToken(lexer, TokenKind.AMP, position, position + 1); + switch (token.value) { + case 'true': + return this.node(token, { + kind: Kind.BOOLEAN, + value: true, + }); - case 0x0028: - // ( - return createToken(lexer, TokenKind.PAREN_L, position, position + 1); + case 'false': + return this.node(token, { + kind: Kind.BOOLEAN, + value: false, + }); - case 0x0029: - // ) - return createToken(lexer, TokenKind.PAREN_R, position, position + 1); + case 'null': + return this.node(token, { + kind: Kind.NULL, + }); - case 0x002e: - // . - if ( - body.charCodeAt(position + 1) === 0x002e && - body.charCodeAt(position + 2) === 0x002e - ) { - return createToken(lexer, TokenKind.SPREAD, position, position + 3); + default: + return this.node(token, { + kind: Kind.ENUM, + value: token.value, + }); } - break; - - case 0x003a: - // : - return createToken(lexer, TokenKind.COLON, position, position + 1); - - case 0x003d: - // = - return createToken(lexer, TokenKind.EQUALS, position, position + 1); - - case 0x0040: - // @ - return createToken(lexer, TokenKind.AT, position, position + 1); + case TokenKind.DOLLAR: + if (isConst) { + this.expectToken(TokenKind.DOLLAR); - case 0x005b: - // [ - return createToken(lexer, TokenKind.BRACKET_L, position, position + 1); + if (this._lexer.token.kind === TokenKind.NAME) { + const varName = this._lexer.token.value; + throw syntaxError( + this._lexer.source, + token.start, + `Unexpected variable "$${varName}" in constant value.`, + ); + } else { + throw this.unexpected(token); + } + } - case 0x005d: - // ] - return createToken(lexer, TokenKind.BRACKET_R, position, position + 1); + return this.parseVariable(); - case 0x007b: - // { - return createToken(lexer, TokenKind.BRACE_L, position, position + 1); + default: + throw this.unexpected(); + } + } - case 0x007c: - // | - return createToken(lexer, TokenKind.PIPE, position, position + 1); + parseConstValueLiteral() { + return this.parseValueLiteral(true); + } - case 0x007d: - // } - return createToken(lexer, TokenKind.BRACE_R, position, position + 1); - // StringValue - - case 0x0022: - // " - if ( - body.charCodeAt(position + 1) === 0x0022 && - body.charCodeAt(position + 2) === 0x0022 - ) { - return readBlockString(lexer, position); - } + parseStringLiteral() { + const token = this._lexer.token; + this.advanceLexer(); + return this.node(token, { + kind: Kind.STRING, + value: token.value, + block: token.kind === TokenKind.BLOCK_STRING, + }); + } + /** + * ListValue[Const] : + * - [ ] + * - [ Value[?Const]+ ] + */ - return readString(lexer, position); - } // IntValue | FloatValue (Digit | -) + parseList(isConst) { + const item = () => this.parseValueLiteral(isConst); - if (isDigit$1(code) || code === 0x002d) { - return readNumber(lexer, position, code); - } // Name + return this.node(this._lexer.token, { + kind: Kind.LIST, + values: this.any(TokenKind.BRACKET_L, item, TokenKind.BRACKET_R), + }); + } + /** + * ``` + * ObjectValue[Const] : + * - { } + * - { ObjectField[?Const]+ } + * ``` + */ - if (isNameStart(code)) { - return readName(lexer, position); - } + parseObject(isConst) { + const item = () => this.parseObjectField(isConst); - throw syntaxError( - lexer.source, - position, - code === 0x0027 - ? 'Unexpected single quote character (\'), did you mean to use a double quote (")?' - : isUnicodeScalarValue(code) || isSupplementaryCodePoint(body, position) - ? `Unexpected character: ${printCodePointAt(lexer, position)}.` - : `Invalid character: ${printCodePointAt(lexer, position)}.`, - ); + return this.node(this._lexer.token, { + kind: Kind.OBJECT, + fields: this.any(TokenKind.BRACE_L, item, TokenKind.BRACE_R), + }); } + /** + * ObjectField[Const] : Name : Value[?Const] + */ - return createToken(lexer, TokenKind.EOF, bodyLength, bodyLength); -} -/** - * Reads a comment token from the source file. - * - * ``` - * Comment :: # CommentChar* [lookahead != CommentChar] - * - * CommentChar :: SourceCharacter but not LineTerminator - * ``` - */ - -function readComment(lexer, start) { - const body = lexer.source.body; - const bodyLength = body.length; - let position = start + 1; + parseObjectField(isConst) { + const start = this._lexer.token; + const name = this.parseName(); + this.expectToken(TokenKind.COLON); + return this.node(start, { + kind: Kind.OBJECT_FIELD, + name, + value: this.parseValueLiteral(isConst), + }); + } // Implements the parsing rules in the Directives section. - while (position < bodyLength) { - const code = body.charCodeAt(position); // LineTerminator (\n | \r) + /** + * Directives[Const] : Directive[?Const]+ + */ - if (code === 0x000a || code === 0x000d) { - break; - } // SourceCharacter + parseDirectives(isConst) { + const directives = []; - if (isUnicodeScalarValue(code)) { - ++position; - } else if (isSupplementaryCodePoint(body, position)) { - position += 2; - } else { - break; + while (this.peek(TokenKind.AT)) { + directives.push(this.parseDirective(isConst)); } + + return directives; } - return createToken( - lexer, - TokenKind.COMMENT, - start, - position, - body.slice(start + 1, position), - ); -} -/** - * Reads a number token from the source file, either a FloatValue or an IntValue - * depending on whether a FractionalPart or ExponentPart is encountered. - * - * ``` - * IntValue :: IntegerPart [lookahead != {Digit, `.`, NameStart}] - * - * IntegerPart :: - * - NegativeSign? 0 - * - NegativeSign? NonZeroDigit Digit* - * - * NegativeSign :: - - * - * NonZeroDigit :: Digit but not `0` - * - * FloatValue :: - * - IntegerPart FractionalPart ExponentPart [lookahead != {Digit, `.`, NameStart}] - * - IntegerPart FractionalPart [lookahead != {Digit, `.`, NameStart}] - * - IntegerPart ExponentPart [lookahead != {Digit, `.`, NameStart}] - * - * FractionalPart :: . Digit+ - * - * ExponentPart :: ExponentIndicator Sign? Digit+ - * - * ExponentIndicator :: one of `e` `E` - * - * Sign :: one of + - - * ``` - */ + parseConstDirectives() { + return this.parseDirectives(true); + } + /** + * ``` + * Directive[Const] : @ Name Arguments[?Const]? + * ``` + */ -function readNumber(lexer, start, firstCode) { - const body = lexer.source.body; - let position = start; - let code = firstCode; - let isFloat = false; // NegativeSign (-) + parseDirective(isConst) { + const start = this._lexer.token; + this.expectToken(TokenKind.AT); + return this.node(start, { + kind: Kind.DIRECTIVE, + name: this.parseName(), + arguments: this.parseArguments(isConst), + }); + } // Implements the parsing rules in the Types section. - if (code === 0x002d) { - code = body.charCodeAt(++position); - } // Zero (0) + /** + * Type : + * - NamedType + * - ListType + * - NonNullType + */ - if (code === 0x0030) { - code = body.charCodeAt(++position); + parseTypeReference() { + const start = this._lexer.token; + let type; - if (isDigit$1(code)) { - throw syntaxError( - lexer.source, - position, - `Invalid number, unexpected digit after 0: ${printCodePointAt( - lexer, - position, - )}.`, - ); + if (this.expectOptionalToken(TokenKind.BRACKET_L)) { + const innerType = this.parseTypeReference(); + this.expectToken(TokenKind.BRACKET_R); + type = this.node(start, { + kind: Kind.LIST_TYPE, + type: innerType, + }); + } else { + type = this.parseNamedType(); } - } else { - position = readDigits(lexer, position, code); - code = body.charCodeAt(position); - } // Full stop (.) - - if (code === 0x002e) { - isFloat = true; - code = body.charCodeAt(++position); - position = readDigits(lexer, position, code); - code = body.charCodeAt(position); - } // E e - - if (code === 0x0045 || code === 0x0065) { - isFloat = true; - code = body.charCodeAt(++position); // + - - if (code === 0x002b || code === 0x002d) { - code = body.charCodeAt(++position); + if (this.expectOptionalToken(TokenKind.BANG)) { + return this.node(start, { + kind: Kind.NON_NULL_TYPE, + type, + }); } - position = readDigits(lexer, position, code); - code = body.charCodeAt(position); - } // Numbers cannot be followed by . or NameStart + return type; + } + /** + * NamedType : Name + */ - if (code === 0x002e || isNameStart(code)) { - throw syntaxError( - lexer.source, - position, - `Invalid number, expected digit but got: ${printCodePointAt( - lexer, - position, - )}.`, - ); + parseNamedType() { + return this.node(this._lexer.token, { + kind: Kind.NAMED_TYPE, + name: this.parseName(), + }); + } // Implements the parsing rules in the Type Definition section. + + peekDescription() { + return this.peek(TokenKind.STRING) || this.peek(TokenKind.BLOCK_STRING); } + /** + * Description : StringValue + */ - return createToken( - lexer, - isFloat ? TokenKind.FLOAT : TokenKind.INT, - start, - position, - body.slice(start, position), - ); -} -/** - * Returns the new position in the source after reading one or more digits. - */ + parseDescription() { + if (this.peekDescription()) { + return this.parseStringLiteral(); + } + } + /** + * ``` + * SchemaDefinition : Description? schema Directives[Const]? { OperationTypeDefinition+ } + * ``` + */ -function readDigits(lexer, start, firstCode) { - if (!isDigit$1(firstCode)) { - throw syntaxError( - lexer.source, - start, - `Invalid number, expected digit but got: ${printCodePointAt( - lexer, - start, - )}.`, + parseSchemaDefinition() { + const start = this._lexer.token; + const description = this.parseDescription(); + this.expectKeyword('schema'); + const directives = this.parseConstDirectives(); + const operationTypes = this.many( + TokenKind.BRACE_L, + this.parseOperationTypeDefinition, + TokenKind.BRACE_R, ); + return this.node(start, { + kind: Kind.SCHEMA_DEFINITION, + description, + directives, + operationTypes, + }); } + /** + * OperationTypeDefinition : OperationType : NamedType + */ - const body = lexer.source.body; - let position = start + 1; // +1 to skip first firstCode - - while (isDigit$1(body.charCodeAt(position))) { - ++position; + parseOperationTypeDefinition() { + const start = this._lexer.token; + const operation = this.parseOperationType(); + this.expectToken(TokenKind.COLON); + const type = this.parseNamedType(); + return this.node(start, { + kind: Kind.OPERATION_TYPE_DEFINITION, + operation, + type, + }); } + /** + * ScalarTypeDefinition : Description? scalar Name Directives[Const]? + */ - return position; -} -/** - * Reads a single-quote string token from the source file. - * - * ``` - * StringValue :: - * - `""` [lookahead != `"`] - * - `"` StringCharacter+ `"` - * - * StringCharacter :: - * - SourceCharacter but not `"` or `\` or LineTerminator - * - `\u` EscapedUnicode - * - `\` EscapedCharacter - * - * EscapedUnicode :: - * - `{` HexDigit+ `}` - * - HexDigit HexDigit HexDigit HexDigit - * - * EscapedCharacter :: one of `"` `\` `/` `b` `f` `n` `r` `t` - * ``` - */ - -function readString(lexer, start) { - const body = lexer.source.body; - const bodyLength = body.length; - let position = start + 1; - let chunkStart = position; - let value = ''; - - while (position < bodyLength) { - const code = body.charCodeAt(position); // Closing Quote (") - - if (code === 0x0022) { - value += body.slice(chunkStart, position); - return createToken(lexer, TokenKind.STRING, start, position + 1, value); - } // Escape Sequence (\) - - if (code === 0x005c) { - value += body.slice(chunkStart, position); - const escape = - body.charCodeAt(position + 1) === 0x0075 // u - ? body.charCodeAt(position + 2) === 0x007b // { - ? readEscapedUnicodeVariableWidth(lexer, position) - : readEscapedUnicodeFixedWidth(lexer, position) - : readEscapedCharacter(lexer, position); - value += escape.value; - position += escape.size; - chunkStart = position; - continue; - } // LineTerminator (\n | \r) - - if (code === 0x000a || code === 0x000d) { - break; - } // SourceCharacter - - if (isUnicodeScalarValue(code)) { - ++position; - } else if (isSupplementaryCodePoint(body, position)) { - position += 2; - } else { - throw syntaxError( - lexer.source, - position, - `Invalid character within String: ${printCodePointAt( - lexer, - position, - )}.`, - ); - } + parseScalarTypeDefinition() { + const start = this._lexer.token; + const description = this.parseDescription(); + this.expectKeyword('scalar'); + const name = this.parseName(); + const directives = this.parseConstDirectives(); + return this.node(start, { + kind: Kind.SCALAR_TYPE_DEFINITION, + description, + name, + directives, + }); } + /** + * ObjectTypeDefinition : + * Description? + * type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition? + */ - throw syntaxError(lexer.source, position, 'Unterminated string.'); -} // The string value and lexed size of an escape sequence. + parseObjectTypeDefinition() { + const start = this._lexer.token; + const description = this.parseDescription(); + this.expectKeyword('type'); + const name = this.parseName(); + const interfaces = this.parseImplementsInterfaces(); + const directives = this.parseConstDirectives(); + const fields = this.parseFieldsDefinition(); + return this.node(start, { + kind: Kind.OBJECT_TYPE_DEFINITION, + description, + name, + interfaces, + directives, + fields, + }); + } + /** + * ImplementsInterfaces : + * - implements `&`? NamedType + * - ImplementsInterfaces & NamedType + */ -function readEscapedUnicodeVariableWidth(lexer, position) { - const body = lexer.source.body; - let point = 0; - let size = 3; // Cannot be larger than 12 chars (\u{00000000}). + parseImplementsInterfaces() { + return this.expectOptionalKeyword('implements') + ? this.delimitedMany(TokenKind.AMP, this.parseNamedType) + : []; + } + /** + * ``` + * FieldsDefinition : { FieldDefinition+ } + * ``` + */ - while (size < 12) { - const code = body.charCodeAt(position + size++); // Closing Brace (}) + parseFieldsDefinition() { + return this.optionalMany( + TokenKind.BRACE_L, + this.parseFieldDefinition, + TokenKind.BRACE_R, + ); + } + /** + * FieldDefinition : + * - Description? Name ArgumentsDefinition? : Type Directives[Const]? + */ - if (code === 0x007d) { - // Must be at least 5 chars (\u{0}) and encode a Unicode scalar value. - if (size < 5 || !isUnicodeScalarValue(point)) { - break; - } + parseFieldDefinition() { + const start = this._lexer.token; + const description = this.parseDescription(); + const name = this.parseName(); + const args = this.parseArgumentDefs(); + this.expectToken(TokenKind.COLON); + const type = this.parseTypeReference(); + const directives = this.parseConstDirectives(); + return this.node(start, { + kind: Kind.FIELD_DEFINITION, + description, + name, + arguments: args, + type, + directives, + }); + } + /** + * ArgumentsDefinition : ( InputValueDefinition+ ) + */ - return { - value: String.fromCodePoint(point), - size, - }; - } // Append this hex digit to the code point. + parseArgumentDefs() { + return this.optionalMany( + TokenKind.PAREN_L, + this.parseInputValueDef, + TokenKind.PAREN_R, + ); + } + /** + * InputValueDefinition : + * - Description? Name : Type DefaultValue? Directives[Const]? + */ - point = (point << 4) | readHexDigit(code); + parseInputValueDef() { + const start = this._lexer.token; + const description = this.parseDescription(); + const name = this.parseName(); + this.expectToken(TokenKind.COLON); + const type = this.parseTypeReference(); + let defaultValue; - if (point < 0) { - break; + if (this.expectOptionalToken(TokenKind.EQUALS)) { + defaultValue = this.parseConstValueLiteral(); } - } - throw syntaxError( - lexer.source, - position, - `Invalid Unicode escape sequence: "${body.slice( - position, - position + size, - )}".`, - ); -} + const directives = this.parseConstDirectives(); + return this.node(start, { + kind: Kind.INPUT_VALUE_DEFINITION, + description, + name, + type, + defaultValue, + directives, + }); + } + /** + * InterfaceTypeDefinition : + * - Description? interface Name Directives[Const]? FieldsDefinition? + */ -function readEscapedUnicodeFixedWidth(lexer, position) { - const body = lexer.source.body; - const code = read16BitHexCode(body, position + 2); + parseInterfaceTypeDefinition() { + const start = this._lexer.token; + const description = this.parseDescription(); + this.expectKeyword('interface'); + const name = this.parseName(); + const interfaces = this.parseImplementsInterfaces(); + const directives = this.parseConstDirectives(); + const fields = this.parseFieldsDefinition(); + return this.node(start, { + kind: Kind.INTERFACE_TYPE_DEFINITION, + description, + name, + interfaces, + directives, + fields, + }); + } + /** + * UnionTypeDefinition : + * - Description? union Name Directives[Const]? UnionMemberTypes? + */ - if (isUnicodeScalarValue(code)) { - return { - value: String.fromCodePoint(code), - size: 6, - }; - } // GraphQL allows JSON-style surrogate pair escape sequences, but only when - // a valid pair is formed. + parseUnionTypeDefinition() { + const start = this._lexer.token; + const description = this.parseDescription(); + this.expectKeyword('union'); + const name = this.parseName(); + const directives = this.parseConstDirectives(); + const types = this.parseUnionMemberTypes(); + return this.node(start, { + kind: Kind.UNION_TYPE_DEFINITION, + description, + name, + directives, + types, + }); + } + /** + * UnionMemberTypes : + * - = `|`? NamedType + * - UnionMemberTypes | NamedType + */ - if (isLeadingSurrogate(code)) { - // \u - if ( - body.charCodeAt(position + 6) === 0x005c && - body.charCodeAt(position + 7) === 0x0075 - ) { - const trailingCode = read16BitHexCode(body, position + 8); + parseUnionMemberTypes() { + return this.expectOptionalToken(TokenKind.EQUALS) + ? this.delimitedMany(TokenKind.PIPE, this.parseNamedType) + : []; + } + /** + * EnumTypeDefinition : + * - Description? enum Name Directives[Const]? EnumValuesDefinition? + */ - if (isTrailingSurrogate(trailingCode)) { - // JavaScript defines strings as a sequence of UTF-16 code units and - // encodes Unicode code points above U+FFFF using a surrogate pair of - // code units. Since this is a surrogate pair escape sequence, just - // include both codes into the JavaScript string value. Had JavaScript - // not been internally based on UTF-16, then this surrogate pair would - // be decoded to retrieve the supplementary code point. - return { - value: String.fromCodePoint(code, trailingCode), - size: 12, - }; - } - } + parseEnumTypeDefinition() { + const start = this._lexer.token; + const description = this.parseDescription(); + this.expectKeyword('enum'); + const name = this.parseName(); + const directives = this.parseConstDirectives(); + const values = this.parseEnumValuesDefinition(); + return this.node(start, { + kind: Kind.ENUM_TYPE_DEFINITION, + description, + name, + directives, + values, + }); } + /** + * ``` + * EnumValuesDefinition : { EnumValueDefinition+ } + * ``` + */ - throw syntaxError( - lexer.source, - position, - `Invalid Unicode escape sequence: "${body.slice(position, position + 6)}".`, - ); -} -/** - * Reads four hexadecimal characters and returns the positive integer that 16bit - * hexadecimal string represents. For example, "000f" will return 15, and "dead" - * will return 57005. - * - * Returns a negative number if any char was not a valid hexadecimal digit. - */ + parseEnumValuesDefinition() { + return this.optionalMany( + TokenKind.BRACE_L, + this.parseEnumValueDefinition, + TokenKind.BRACE_R, + ); + } + /** + * EnumValueDefinition : Description? EnumValue Directives[Const]? + */ -function read16BitHexCode(body, position) { - // readHexDigit() returns -1 on error. ORing a negative value with any other - // value always produces a negative value. - return ( - (readHexDigit(body.charCodeAt(position)) << 12) | - (readHexDigit(body.charCodeAt(position + 1)) << 8) | - (readHexDigit(body.charCodeAt(position + 2)) << 4) | - readHexDigit(body.charCodeAt(position + 3)) - ); -} -/** - * Reads a hexadecimal character and returns its positive integer value (0-15). - * - * '0' becomes 0, '9' becomes 9 - * 'A' becomes 10, 'F' becomes 15 - * 'a' becomes 10, 'f' becomes 15 - * - * Returns -1 if the provided character code was not a valid hexadecimal digit. - * - * HexDigit :: one of - * - `0` `1` `2` `3` `4` `5` `6` `7` `8` `9` - * - `A` `B` `C` `D` `E` `F` - * - `a` `b` `c` `d` `e` `f` - */ + parseEnumValueDefinition() { + const start = this._lexer.token; + const description = this.parseDescription(); + const name = this.parseEnumValueName(); + const directives = this.parseConstDirectives(); + return this.node(start, { + kind: Kind.ENUM_VALUE_DEFINITION, + description, + name, + directives, + }); + } + /** + * EnumValue : Name but not `true`, `false` or `null` + */ -function readHexDigit(code) { - return code >= 0x0030 && code <= 0x0039 // 0-9 - ? code - 0x0030 - : code >= 0x0041 && code <= 0x0046 // A-F - ? code - 0x0037 - : code >= 0x0061 && code <= 0x0066 // a-f - ? code - 0x0057 - : -1; -} -/** - * | Escaped Character | Code Point | Character Name | - * | ----------------- | ---------- | ---------------------------- | - * | `"` | U+0022 | double quote | - * | `\` | U+005C | reverse solidus (back slash) | - * | `/` | U+002F | solidus (forward slash) | - * | `b` | U+0008 | backspace | - * | `f` | U+000C | form feed | - * | `n` | U+000A | line feed (new line) | - * | `r` | U+000D | carriage return | - * | `t` | U+0009 | horizontal tab | - */ + parseEnumValueName() { + if ( + this._lexer.token.value === 'true' || + this._lexer.token.value === 'false' || + this._lexer.token.value === 'null' + ) { + throw syntaxError( + this._lexer.source, + this._lexer.token.start, + `${getTokenDesc( + this._lexer.token, + )} is reserved and cannot be used for an enum value.`, + ); + } -function readEscapedCharacter(lexer, position) { - const body = lexer.source.body; - const code = body.charCodeAt(position + 1); + return this.parseName(); + } + /** + * InputObjectTypeDefinition : + * - Description? input Name Directives[Const]? InputFieldsDefinition? + */ - switch (code) { - case 0x0022: - // " - return { - value: '\u0022', - size: 2, - }; + parseInputObjectTypeDefinition() { + const start = this._lexer.token; + const description = this.parseDescription(); + this.expectKeyword('input'); + const name = this.parseName(); + const directives = this.parseConstDirectives(); + const fields = this.parseInputFieldsDefinition(); + return this.node(start, { + kind: Kind.INPUT_OBJECT_TYPE_DEFINITION, + description, + name, + directives, + fields, + }); + } + /** + * ``` + * InputFieldsDefinition : { InputValueDefinition+ } + * ``` + */ - case 0x005c: - // \ - return { - value: '\u005c', - size: 2, - }; - - case 0x002f: - // / - return { - value: '\u002f', - size: 2, - }; - - case 0x0062: - // b - return { - value: '\u0008', - size: 2, - }; - - case 0x0066: - // f - return { - value: '\u000c', - size: 2, - }; - - case 0x006e: - // n - return { - value: '\u000a', - size: 2, - }; - - case 0x0072: - // r - return { - value: '\u000d', - size: 2, - }; - - case 0x0074: - // t - return { - value: '\u0009', - size: 2, - }; + parseInputFieldsDefinition() { + return this.optionalMany( + TokenKind.BRACE_L, + this.parseInputValueDef, + TokenKind.BRACE_R, + ); } + /** + * TypeSystemExtension : + * - SchemaExtension + * - TypeExtension + * + * TypeExtension : + * - ScalarTypeExtension + * - ObjectTypeExtension + * - InterfaceTypeExtension + * - UnionTypeExtension + * - EnumTypeExtension + * - InputObjectTypeDefinition + */ - throw syntaxError( - lexer.source, - position, - `Invalid character escape sequence: "${body.slice( - position, - position + 2, - )}".`, - ); -} -/** - * Reads a block string token from the source file. - * - * ``` - * StringValue :: - * - `"""` BlockStringCharacter* `"""` - * - * BlockStringCharacter :: - * - SourceCharacter but not `"""` or `\"""` - * - `\"""` - * ``` - */ + parseTypeSystemExtension() { + const keywordToken = this._lexer.lookahead(); -function readBlockString(lexer, start) { - const body = lexer.source.body; - const bodyLength = body.length; - let lineStart = lexer.lineStart; - let position = start + 3; - let chunkStart = position; - let currentLine = ''; - const blockLines = []; + if (keywordToken.kind === TokenKind.NAME) { + switch (keywordToken.value) { + case 'schema': + return this.parseSchemaExtension(); - while (position < bodyLength) { - const code = body.charCodeAt(position); // Closing Triple-Quote (""") + case 'scalar': + return this.parseScalarTypeExtension(); - if ( - code === 0x0022 && - body.charCodeAt(position + 1) === 0x0022 && - body.charCodeAt(position + 2) === 0x0022 - ) { - currentLine += body.slice(chunkStart, position); - blockLines.push(currentLine); - const token = createToken( - lexer, - TokenKind.BLOCK_STRING, - start, - position + 3, // Return a string of the lines joined with U+000A. - dedentBlockStringLines(blockLines).join('\n'), - ); - lexer.line += blockLines.length - 1; - lexer.lineStart = lineStart; - return token; - } // Escaped Triple-Quote (\""") + case 'type': + return this.parseObjectTypeExtension(); - if ( - code === 0x005c && - body.charCodeAt(position + 1) === 0x0022 && - body.charCodeAt(position + 2) === 0x0022 && - body.charCodeAt(position + 3) === 0x0022 - ) { - currentLine += body.slice(chunkStart, position); - chunkStart = position + 1; // skip only slash + case 'interface': + return this.parseInterfaceTypeExtension(); - position += 4; - continue; - } // LineTerminator + case 'union': + return this.parseUnionTypeExtension(); - if (code === 0x000a || code === 0x000d) { - currentLine += body.slice(chunkStart, position); - blockLines.push(currentLine); + case 'enum': + return this.parseEnumTypeExtension(); - if (code === 0x000d && body.charCodeAt(position + 1) === 0x000a) { - position += 2; - } else { - ++position; + case 'input': + return this.parseInputObjectTypeExtension(); } - - currentLine = ''; - chunkStart = position; - lineStart = position; - continue; - } // SourceCharacter - - if (isUnicodeScalarValue(code)) { - ++position; - } else if (isSupplementaryCodePoint(body, position)) { - position += 2; - } else { - throw syntaxError( - lexer.source, - position, - `Invalid character within String: ${printCodePointAt( - lexer, - position, - )}.`, - ); } - } - - throw syntaxError(lexer.source, position, 'Unterminated string.'); -} -/** - * Reads an alphanumeric + underscore name from the source. - * - * ``` - * Name :: - * - NameStart NameContinue* [lookahead != NameContinue] - * ``` - */ -function readName(lexer, start) { - const body = lexer.source.body; - const bodyLength = body.length; - let position = start + 1; + throw this.unexpected(keywordToken); + } + /** + * ``` + * SchemaExtension : + * - extend schema Directives[Const]? { OperationTypeDefinition+ } + * - extend schema Directives[Const] + * ``` + */ - while (position < bodyLength) { - const code = body.charCodeAt(position); + parseSchemaExtension() { + const start = this._lexer.token; + this.expectKeyword('extend'); + this.expectKeyword('schema'); + const directives = this.parseConstDirectives(); + const operationTypes = this.optionalMany( + TokenKind.BRACE_L, + this.parseOperationTypeDefinition, + TokenKind.BRACE_R, + ); - if (isNameContinue(code)) { - ++position; - } else { - break; + if (directives.length === 0 && operationTypes.length === 0) { + throw this.unexpected(); } + + return this.node(start, { + kind: Kind.SCHEMA_EXTENSION, + directives, + operationTypes, + }); } + /** + * ScalarTypeExtension : + * - extend scalar Name Directives[Const] + */ - return createToken( - lexer, - TokenKind.NAME, - start, - position, - body.slice(start, position), - ); -} + parseScalarTypeExtension() { + const start = this._lexer.token; + this.expectKeyword('extend'); + this.expectKeyword('scalar'); + const name = this.parseName(); + const directives = this.parseConstDirectives(); -function devAssert(condition, message) { - const booleanCondition = Boolean(condition); + if (directives.length === 0) { + throw this.unexpected(); + } - if (!booleanCondition) { - throw new Error(message); + return this.node(start, { + kind: Kind.SCALAR_TYPE_EXTENSION, + name, + directives, + }); } -} + /** + * ObjectTypeExtension : + * - extend type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition + * - extend type Name ImplementsInterfaces? Directives[Const] + * - extend type Name ImplementsInterfaces + */ -const MAX_ARRAY_LENGTH = 10; -const MAX_RECURSIVE_DEPTH$1 = 2; -/** - * Used to print values in error messages. - */ + parseObjectTypeExtension() { + const start = this._lexer.token; + this.expectKeyword('extend'); + this.expectKeyword('type'); + const name = this.parseName(); + const interfaces = this.parseImplementsInterfaces(); + const directives = this.parseConstDirectives(); + const fields = this.parseFieldsDefinition(); -function inspect$1(value) { - return formatValue$1(value, []); -} + if ( + interfaces.length === 0 && + directives.length === 0 && + fields.length === 0 + ) { + throw this.unexpected(); + } -function formatValue$1(value, seenValues) { - switch (typeof value) { - case 'string': - return JSON.stringify(value); + return this.node(start, { + kind: Kind.OBJECT_TYPE_EXTENSION, + name, + interfaces, + directives, + fields, + }); + } + /** + * InterfaceTypeExtension : + * - extend interface Name ImplementsInterfaces? Directives[Const]? FieldsDefinition + * - extend interface Name ImplementsInterfaces? Directives[Const] + * - extend interface Name ImplementsInterfaces + */ - case 'function': - return value.name ? `[function ${value.name}]` : '[function]'; + parseInterfaceTypeExtension() { + const start = this._lexer.token; + this.expectKeyword('extend'); + this.expectKeyword('interface'); + const name = this.parseName(); + const interfaces = this.parseImplementsInterfaces(); + const directives = this.parseConstDirectives(); + const fields = this.parseFieldsDefinition(); - case 'object': - return formatObjectValue$1(value, seenValues); + if ( + interfaces.length === 0 && + directives.length === 0 && + fields.length === 0 + ) { + throw this.unexpected(); + } - default: - return String(value); + return this.node(start, { + kind: Kind.INTERFACE_TYPE_EXTENSION, + name, + interfaces, + directives, + fields, + }); } -} + /** + * UnionTypeExtension : + * - extend union Name Directives[Const]? UnionMemberTypes + * - extend union Name Directives[Const] + */ -function formatObjectValue$1(value, previouslySeenValues) { - if (value === null) { - return 'null'; - } + parseUnionTypeExtension() { + const start = this._lexer.token; + this.expectKeyword('extend'); + this.expectKeyword('union'); + const name = this.parseName(); + const directives = this.parseConstDirectives(); + const types = this.parseUnionMemberTypes(); - if (previouslySeenValues.includes(value)) { - return '[Circular]'; - } + if (directives.length === 0 && types.length === 0) { + throw this.unexpected(); + } - const seenValues = [...previouslySeenValues, value]; + return this.node(start, { + kind: Kind.UNION_TYPE_EXTENSION, + name, + directives, + types, + }); + } + /** + * EnumTypeExtension : + * - extend enum Name Directives[Const]? EnumValuesDefinition + * - extend enum Name Directives[Const] + */ - if (isJSONable$1(value)) { - const jsonValue = value.toJSON(); // check for infinite recursion + parseEnumTypeExtension() { + const start = this._lexer.token; + this.expectKeyword('extend'); + this.expectKeyword('enum'); + const name = this.parseName(); + const directives = this.parseConstDirectives(); + const values = this.parseEnumValuesDefinition(); - if (jsonValue !== value) { - return typeof jsonValue === 'string' - ? jsonValue - : formatValue$1(jsonValue, seenValues); + if (directives.length === 0 && values.length === 0) { + throw this.unexpected(); } - } else if (Array.isArray(value)) { - return formatArray$1(value, seenValues); - } - return formatObject$1(value, seenValues); -} + return this.node(start, { + kind: Kind.ENUM_TYPE_EXTENSION, + name, + directives, + values, + }); + } + /** + * InputObjectTypeExtension : + * - extend input Name Directives[Const]? InputFieldsDefinition + * - extend input Name Directives[Const] + */ -function isJSONable$1(value) { - return typeof value.toJSON === 'function'; -} + parseInputObjectTypeExtension() { + const start = this._lexer.token; + this.expectKeyword('extend'); + this.expectKeyword('input'); + const name = this.parseName(); + const directives = this.parseConstDirectives(); + const fields = this.parseInputFieldsDefinition(); -function formatObject$1(object, seenValues) { - const entries = Object.entries(object); + if (directives.length === 0 && fields.length === 0) { + throw this.unexpected(); + } - if (entries.length === 0) { - return '{}'; + return this.node(start, { + kind: Kind.INPUT_OBJECT_TYPE_EXTENSION, + name, + directives, + fields, + }); } + /** + * ``` + * DirectiveDefinition : + * - Description? directive @ Name ArgumentsDefinition? `repeatable`? on DirectiveLocations + * ``` + */ - if (seenValues.length > MAX_RECURSIVE_DEPTH$1) { - return '[' + getObjectTag$1(object) + ']'; + parseDirectiveDefinition() { + const start = this._lexer.token; + const description = this.parseDescription(); + this.expectKeyword('directive'); + this.expectToken(TokenKind.AT); + const name = this.parseName(); + const args = this.parseArgumentDefs(); + const repeatable = this.expectOptionalKeyword('repeatable'); + this.expectKeyword('on'); + const locations = this.parseDirectiveLocations(); + return this.node(start, { + kind: Kind.DIRECTIVE_DEFINITION, + description, + name, + arguments: args, + repeatable, + locations, + }); } + /** + * DirectiveLocations : + * - `|`? DirectiveLocation + * - DirectiveLocations | DirectiveLocation + */ - const properties = entries.map( - ([key, value]) => key + ': ' + formatValue$1(value, seenValues), - ); - return '{ ' + properties.join(', ') + ' }'; -} - -function formatArray$1(array, seenValues) { - if (array.length === 0) { - return '[]'; + parseDirectiveLocations() { + return this.delimitedMany(TokenKind.PIPE, this.parseDirectiveLocation); } + /* + * DirectiveLocation : + * - ExecutableDirectiveLocation + * - TypeSystemDirectiveLocation + * + * ExecutableDirectiveLocation : one of + * `QUERY` + * `MUTATION` + * `SUBSCRIPTION` + * `FIELD` + * `FRAGMENT_DEFINITION` + * `FRAGMENT_SPREAD` + * `INLINE_FRAGMENT` + * + * TypeSystemDirectiveLocation : one of + * `SCHEMA` + * `SCALAR` + * `OBJECT` + * `FIELD_DEFINITION` + * `ARGUMENT_DEFINITION` + * `INTERFACE` + * `UNION` + * `ENUM` + * `ENUM_VALUE` + * `INPUT_OBJECT` + * `INPUT_FIELD_DEFINITION` + */ - if (seenValues.length > MAX_RECURSIVE_DEPTH$1) { - return '[Array]'; - } + parseDirectiveLocation() { + const start = this._lexer.token; + const name = this.parseName(); - const len = Math.min(MAX_ARRAY_LENGTH, array.length); - const remaining = array.length - len; - const items = []; + if (Object.prototype.hasOwnProperty.call(DirectiveLocation$1, name.value)) { + return name; + } - for (let i = 0; i < len; ++i) { - items.push(formatValue$1(array[i], seenValues)); - } + throw this.unexpected(start); + } // Core parsing utility functions - if (remaining === 1) { - items.push('... 1 more item'); - } else if (remaining > 1) { - items.push(`... ${remaining} more items`); - } + /** + * Returns a node that, if configured to do so, sets a "loc" field as a + * location object, used to identify the place in the source that created a + * given parsed object. + */ - return '[' + items.join(', ') + ']'; -} - -function getObjectTag$1(object) { - const tag = Object.prototype.toString - .call(object) - .replace(/^\[object /, '') - .replace(/]$/, ''); + node(startToken, node) { + if (this._options.noLocation !== true) { + node.loc = new Location( + startToken, + this._lexer.lastToken, + this._lexer.source, + ); + } - if (tag === 'Object' && typeof object.constructor === 'function') { - const name = object.constructor.name; + return node; + } + /** + * Determines if the next token is of a given kind + */ - if (typeof name === 'string' && name !== '') { - return name; - } + peek(kind) { + return this._lexer.token.kind === kind; } + /** + * If the next token is of the given kind, return that token after advancing the lexer. + * Otherwise, do not change the parser state and throw an error. + */ - return tag; -} + expectToken(kind) { + const token = this._lexer.token; -/** - * A replacement for instanceof which includes an error warning when multi-realm - * constructors are detected. - * See: https://expressjs.com/en/advanced/best-practice-performance.html#set-node_env-to-production - * See: https://webpack.js.org/guides/production/ - */ + if (token.kind === kind) { + this.advanceLexer(); + return token; + } -const instanceOf = - /* c8 ignore next 6 */ - // FIXME: https://github.com/graphql/graphql-js/issues/2317 - // eslint-disable-next-line no-undef - process.env.NODE_ENV === 'production' - ? function instanceOf(value, constructor) { - return value instanceof constructor; - } - : function instanceOf(value, constructor) { - if (value instanceof constructor) { - return true; - } + throw syntaxError( + this._lexer.source, + token.start, + `Expected ${getTokenKindDesc(kind)}, found ${getTokenDesc(token)}.`, + ); + } + /** + * If the next token is of the given kind, return "true" after advancing the lexer. + * Otherwise, do not change the parser state and return "false". + */ - if (typeof value === 'object' && value !== null) { - var _value$constructor; + expectOptionalToken(kind) { + const token = this._lexer.token; - // Prefer Symbol.toStringTag since it is immune to minification. - const className = constructor.prototype[Symbol.toStringTag]; - const valueClassName = // We still need to support constructor's name to detect conflicts with older versions of this library. - Symbol.toStringTag in value // @ts-expect-error TS bug see, https://github.com/microsoft/TypeScript/issues/38009 - ? value[Symbol.toStringTag] - : (_value$constructor = value.constructor) === null || - _value$constructor === void 0 - ? void 0 - : _value$constructor.name; + if (token.kind === kind) { + this.advanceLexer(); + return true; + } - if (className === valueClassName) { - const stringifiedValue = inspect$1(value); - throw new Error(`Cannot use ${className} "${stringifiedValue}" from another module or realm. + return false; + } + /** + * If the next token is a given keyword, advance the lexer. + * Otherwise, do not change the parser state and throw an error. + */ -Ensure that there is only one instance of "graphql" in the node_modules -directory. If different versions of "graphql" are the dependencies of other -relied on modules, use "resolutions" to ensure only one version is installed. + expectKeyword(value) { + const token = this._lexer.token; -https://yarnpkg.com/en/docs/selective-version-resolutions + if (token.kind === TokenKind.NAME && token.value === value) { + this.advanceLexer(); + } else { + throw syntaxError( + this._lexer.source, + token.start, + `Expected "${value}", found ${getTokenDesc(token)}.`, + ); + } + } + /** + * If the next token is a given keyword, return "true" after advancing the lexer. + * Otherwise, do not change the parser state and return "false". + */ -Duplicate "graphql" modules cannot be used at the same time since different -versions may have different capabilities and behavior. The data from one -version used in the function from another could produce confusing and -spurious results.`); - } - } + expectOptionalKeyword(value) { + const token = this._lexer.token; - return false; - }; + if (token.kind === TokenKind.NAME && token.value === value) { + this.advanceLexer(); + return true; + } -/** - * A representation of source input to GraphQL. The `name` and `locationOffset` parameters are - * optional, but they are useful for clients who store GraphQL documents in source files. - * For example, if the GraphQL input starts at line 40 in a file named `Foo.graphql`, it might - * be useful for `name` to be `"Foo.graphql"` and location to be `{ line: 40, column: 1 }`. - * The `line` and `column` properties in `locationOffset` are 1-indexed. - */ -class Source { - constructor( - body, - name = 'GraphQL request', - locationOffset = { - line: 1, - column: 1, - }, - ) { - typeof body === 'string' || - devAssert(false, `Body must be a string. Received: ${inspect$1(body)}.`); - this.body = body; - this.name = name; - this.locationOffset = locationOffset; - this.locationOffset.line > 0 || - devAssert( - false, - 'line in locationOffset is 1-indexed and must be positive.', - ); - this.locationOffset.column > 0 || - devAssert( - false, - 'column in locationOffset is 1-indexed and must be positive.', - ); + return false; } + /** + * Helper function for creating an error when an unexpected lexed token is encountered. + */ - get [Symbol.toStringTag]() { - return 'Source'; + unexpected(atToken) { + const token = + atToken !== null && atToken !== void 0 ? atToken : this._lexer.token; + return syntaxError( + this._lexer.source, + token.start, + `Unexpected ${getTokenDesc(token)}.`, + ); } -} -/** - * Test if the given value is a Source object. - * - * @internal - */ + /** + * Returns a possibly empty list of parse nodes, determined by the parseFn. + * This list begins with a lex token of openKind and ends with a lex token of closeKind. + * Advances the parser to the next lex token after the closing token. + */ -function isSource(source) { - return instanceOf(source, Source); -} + any(openKind, parseFn, closeKind) { + this.expectToken(openKind); + const nodes = []; -/** - * Configuration options to control parser behavior - */ + while (!this.expectOptionalToken(closeKind)) { + nodes.push(parseFn.call(this)); + } -/** - * Given a GraphQL source, parses it into a Document. - * Throws GraphQLError if a syntax error is encountered. - */ -function parse(source, options) { - const parser = new Parser(source, options); - return parser.parseDocument(); -} -/** - * Given a string containing a GraphQL value (ex. `[42]`), parse the AST for - * that value. - * Throws GraphQLError if a syntax error is encountered. - * - * This is useful within tools that operate upon GraphQL Values directly and - * in isolation of complete GraphQL documents. - * - * Consider providing the results to the utility function: valueFromAST(). - */ + return nodes; + } + /** + * Returns a list of parse nodes, determined by the parseFn. + * It can be empty only if open token is missing otherwise it will always return non-empty list + * that begins with a lex token of openKind and ends with a lex token of closeKind. + * Advances the parser to the next lex token after the closing token. + */ -function parseValue(source, options) { - const parser = new Parser(source, options); - parser.expectToken(TokenKind.SOF); - const value = parser.parseValueLiteral(false); - parser.expectToken(TokenKind.EOF); - return value; -} -/** - * Similar to parseValue(), but raises a parse error if it encounters a - * variable. The return type will be a constant value. - */ + optionalMany(openKind, parseFn, closeKind) { + if (this.expectOptionalToken(openKind)) { + const nodes = []; -function parseConstValue(source, options) { - const parser = new Parser(source, options); - parser.expectToken(TokenKind.SOF); - const value = parser.parseConstValueLiteral(); - parser.expectToken(TokenKind.EOF); - return value; -} -/** - * Given a string containing a GraphQL Type (ex. `[Int!]`), parse the AST for - * that type. - * Throws GraphQLError if a syntax error is encountered. - * - * This is useful within tools that operate upon GraphQL Types directly and - * in isolation of complete GraphQL documents. - * - * Consider providing the results to the utility function: typeFromAST(). - */ + do { + nodes.push(parseFn.call(this)); + } while (!this.expectOptionalToken(closeKind)); -function parseType(source, options) { - const parser = new Parser(source, options); - parser.expectToken(TokenKind.SOF); - const type = parser.parseTypeReference(); - parser.expectToken(TokenKind.EOF); - return type; -} -/** - * This class is exported only to assist people in implementing their own parsers - * without duplicating too much code and should be used only as last resort for cases - * such as experimental syntax or if certain features could not be contributed upstream. - * - * It is still part of the internal API and is versioned, so any changes to it are never - * considered breaking changes. If you still need to support multiple versions of the - * library, please use the `versionInfo` variable for version detection. - * - * @internal - */ + return nodes; + } -class Parser { - constructor(source, options = {}) { - const sourceObj = isSource(source) ? source : new Source(source); - this._lexer = new Lexer(sourceObj); - this._options = options; - this._tokenCounter = 0; + return []; } /** - * Converts a name lex token into a name parse node. + * Returns a non-empty list of parse nodes, determined by the parseFn. + * This list begins with a lex token of openKind and ends with a lex token of closeKind. + * Advances the parser to the next lex token after the closing token. */ - parseName() { - const token = this.expectToken(TokenKind.NAME); - return this.node(token, { - kind: Kind.NAME, - value: token.value, - }); - } // Implements the parsing rules in the Document section. + many(openKind, parseFn, closeKind) { + this.expectToken(openKind); + const nodes = []; - /** - * Document : Definition+ - */ + do { + nodes.push(parseFn.call(this)); + } while (!this.expectOptionalToken(closeKind)); - parseDocument() { - return this.node(this._lexer.token, { - kind: Kind.DOCUMENT, - definitions: this.many( - TokenKind.SOF, - this.parseDefinition, - TokenKind.EOF, - ), - }); + return nodes; } /** - * Definition : - * - ExecutableDefinition - * - TypeSystemDefinition - * - TypeSystemExtension - * - * ExecutableDefinition : - * - OperationDefinition - * - FragmentDefinition - * - * TypeSystemDefinition : - * - SchemaDefinition - * - TypeDefinition - * - DirectiveDefinition - * - * TypeDefinition : - * - ScalarTypeDefinition - * - ObjectTypeDefinition - * - InterfaceTypeDefinition - * - UnionTypeDefinition - * - EnumTypeDefinition - * - InputObjectTypeDefinition + * Returns a non-empty list of parse nodes, determined by the parseFn. + * This list may begin with a lex token of delimiterKind followed by items separated by lex tokens of tokenKind. + * Advances the parser to the next lex token after last item in the list. */ - parseDefinition() { - if (this.peek(TokenKind.BRACE_L)) { - return this.parseOperationDefinition(); - } // Many definitions begin with a description and require a lookahead. - - const hasDescription = this.peekDescription(); - const keywordToken = hasDescription - ? this._lexer.lookahead() - : this._lexer.token; - - if (keywordToken.kind === TokenKind.NAME) { - switch (keywordToken.value) { - case 'schema': - return this.parseSchemaDefinition(); - - case 'scalar': - return this.parseScalarTypeDefinition(); - - case 'type': - return this.parseObjectTypeDefinition(); + delimitedMany(delimiterKind, parseFn) { + this.expectOptionalToken(delimiterKind); + const nodes = []; - case 'interface': - return this.parseInterfaceTypeDefinition(); + do { + nodes.push(parseFn.call(this)); + } while (this.expectOptionalToken(delimiterKind)); - case 'union': - return this.parseUnionTypeDefinition(); + return nodes; + } - case 'enum': - return this.parseEnumTypeDefinition(); + advanceLexer() { + const { maxTokens } = this._options; - case 'input': - return this.parseInputObjectTypeDefinition(); + const token = this._lexer.advance(); - case 'directive': - return this.parseDirectiveDefinition(); - } + if (maxTokens !== undefined && token.kind !== TokenKind.EOF) { + ++this._tokenCounter; - if (hasDescription) { + if (this._tokenCounter > maxTokens) { throw syntaxError( this._lexer.source, - this._lexer.token.start, - 'Unexpected description, descriptions are supported only on type definitions.', + token.start, + `Document contains more that ${maxTokens} tokens. Parsing aborted.`, ); } - - switch (keywordToken.value) { - case 'query': - case 'mutation': - case 'subscription': - return this.parseOperationDefinition(); - - case 'fragment': - return this.parseFragmentDefinition(); - - case 'extend': - return this.parseTypeSystemExtension(); - } - } - - throw this.unexpected(keywordToken); - } // Implements the parsing rules in the Operations section. - - /** - * OperationDefinition : - * - SelectionSet - * - OperationType Name? VariableDefinitions? Directives? SelectionSet - */ - - parseOperationDefinition() { - const start = this._lexer.token; - - if (this.peek(TokenKind.BRACE_L)) { - return this.node(start, { - kind: Kind.OPERATION_DEFINITION, - operation: OperationTypeNode.QUERY, - name: undefined, - variableDefinitions: [], - directives: [], - selectionSet: this.parseSelectionSet(), - }); - } - - const operation = this.parseOperationType(); - let name; - - if (this.peek(TokenKind.NAME)) { - name = this.parseName(); } - - return this.node(start, { - kind: Kind.OPERATION_DEFINITION, - operation, - name, - variableDefinitions: this.parseVariableDefinitions(), - directives: this.parseDirectives(false), - selectionSet: this.parseSelectionSet(), - }); } - /** - * OperationType : one of query mutation subscription - */ - - parseOperationType() { - const operationToken = this.expectToken(TokenKind.NAME); +} +/** + * A helper function to describe a token as a string for debugging. + */ - switch (operationToken.value) { - case 'query': - return OperationTypeNode.QUERY; +function getTokenDesc(token) { + const value = token.value; + return getTokenKindDesc(token.kind) + (value != null ? ` "${value}"` : ''); +} +/** + * A helper function to describe a token kind as a string for debugging. + */ - case 'mutation': - return OperationTypeNode.MUTATION; +function getTokenKindDesc(kind) { + return isPunctuatorTokenKind(kind) ? `"${kind}"` : kind; +} - case 'subscription': - return OperationTypeNode.SUBSCRIPTION; - } +var parser = /*#__PURE__*/Object.freeze({ + __proto__: null, + parse: parse, + parseValue: parseValue, + parseConstValue: parseConstValue, + parseType: parseType, + Parser: Parser +}); - throw this.unexpected(operationToken); - } - /** - * VariableDefinitions : ( VariableDefinition+ ) - */ +var require$$1 = /*@__PURE__*/getAugmentedNamespace(parser); - parseVariableDefinitions() { - return this.optionalMany( - TokenKind.PAREN_L, - this.parseVariableDefinition, - TokenKind.PAREN_R, - ); - } - /** - * VariableDefinition : Variable : Type DefaultValue? Directives[Const]? - */ +/** + * Prints a string as a GraphQL StringValue literal. Replaces control characters + * and excluded characters (" U+0022 and \\ U+005C) with escape sequences. + */ +function printString(str) { + return `"${str.replace(escapedRegExp, escapedReplacer)}"`; +} // eslint-disable-next-line no-control-regex - parseVariableDefinition() { - return this.node(this._lexer.token, { - kind: Kind.VARIABLE_DEFINITION, - variable: this.parseVariable(), - type: (this.expectToken(TokenKind.COLON), this.parseTypeReference()), - defaultValue: this.expectOptionalToken(TokenKind.EQUALS) - ? this.parseConstValueLiteral() - : undefined, - directives: this.parseConstDirectives(), - }); - } - /** - * Variable : $ Name - */ +const escapedRegExp = /[\x00-\x1f\x22\x5c\x7f-\x9f]/g; - parseVariable() { - const start = this._lexer.token; - this.expectToken(TokenKind.DOLLAR); - return this.node(start, { - kind: Kind.VARIABLE, - name: this.parseName(), - }); - } - /** - * ``` - * SelectionSet : { Selection+ } - * ``` - */ - - parseSelectionSet() { - return this.node(this._lexer.token, { - kind: Kind.SELECTION_SET, - selections: this.many( - TokenKind.BRACE_L, - this.parseSelection, - TokenKind.BRACE_R, - ), - }); - } - /** - * Selection : - * - Field - * - FragmentSpread - * - InlineFragment - */ - - parseSelection() { - return this.peek(TokenKind.SPREAD) - ? this.parseFragment() - : this.parseField(); - } - /** - * Field : Alias? Name Arguments? Directives? SelectionSet? - * - * Alias : Name : - */ - - parseField() { - const start = this._lexer.token; - const nameOrAlias = this.parseName(); - let alias; - let name; - - if (this.expectOptionalToken(TokenKind.COLON)) { - alias = nameOrAlias; - name = this.parseName(); - } else { - name = nameOrAlias; - } - - return this.node(start, { - kind: Kind.FIELD, - alias, - name, - arguments: this.parseArguments(false), - directives: this.parseDirectives(false), - selectionSet: this.peek(TokenKind.BRACE_L) - ? this.parseSelectionSet() - : undefined, - }); - } - /** - * Arguments[Const] : ( Argument[?Const]+ ) - */ +function escapedReplacer(str) { + return escapeSequences[str.charCodeAt(0)]; +} // prettier-ignore - parseArguments(isConst) { - const item = isConst ? this.parseConstArgument : this.parseArgument; - return this.optionalMany(TokenKind.PAREN_L, item, TokenKind.PAREN_R); - } - /** - * Argument[Const] : Name : Value[?Const] - */ +const escapeSequences = [ + '\\u0000', + '\\u0001', + '\\u0002', + '\\u0003', + '\\u0004', + '\\u0005', + '\\u0006', + '\\u0007', + '\\b', + '\\t', + '\\n', + '\\u000B', + '\\f', + '\\r', + '\\u000E', + '\\u000F', + '\\u0010', + '\\u0011', + '\\u0012', + '\\u0013', + '\\u0014', + '\\u0015', + '\\u0016', + '\\u0017', + '\\u0018', + '\\u0019', + '\\u001A', + '\\u001B', + '\\u001C', + '\\u001D', + '\\u001E', + '\\u001F', + '', + '', + '\\"', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', // 2F + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', // 3F + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', // 4F + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '\\\\', + '', + '', + '', // 5F + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', // 6F + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '\\u007F', + '\\u0080', + '\\u0081', + '\\u0082', + '\\u0083', + '\\u0084', + '\\u0085', + '\\u0086', + '\\u0087', + '\\u0088', + '\\u0089', + '\\u008A', + '\\u008B', + '\\u008C', + '\\u008D', + '\\u008E', + '\\u008F', + '\\u0090', + '\\u0091', + '\\u0092', + '\\u0093', + '\\u0094', + '\\u0095', + '\\u0096', + '\\u0097', + '\\u0098', + '\\u0099', + '\\u009A', + '\\u009B', + '\\u009C', + '\\u009D', + '\\u009E', + '\\u009F', +]; - parseArgument(isConst = false) { - const start = this._lexer.token; - const name = this.parseName(); - this.expectToken(TokenKind.COLON); - return this.node(start, { - kind: Kind.ARGUMENT, - name, - value: this.parseValueLiteral(isConst), - }); - } +/** + * A visitor is provided to visit, it contains the collection of + * relevant functions to be called during the visitor's traversal. + */ - parseConstArgument() { - return this.parseArgument(true); - } // Implements the parsing rules in the Fragments section. - - /** - * Corresponds to both FragmentSpread and InlineFragment in the spec. - * - * FragmentSpread : ... FragmentName Directives? - * - * InlineFragment : ... TypeCondition? Directives? SelectionSet - */ - - parseFragment() { - const start = this._lexer.token; - this.expectToken(TokenKind.SPREAD); - const hasTypeCondition = this.expectOptionalKeyword('on'); +const BREAK = Object.freeze({}); +/** + * visit() will walk through an AST using a depth-first traversal, calling + * the visitor's enter function at each node in the traversal, and calling the + * leave function after visiting that node and all of its child nodes. + * + * By returning different values from the enter and leave functions, the + * behavior of the visitor can be altered, including skipping over a sub-tree of + * the AST (by returning false), editing the AST by returning a value or null + * to remove the value, or to stop the whole traversal by returning BREAK. + * + * When using visit() to edit an AST, the original AST will not be modified, and + * a new version of the AST with the changes applied will be returned from the + * visit function. + * + * ```ts + * const editedAST = visit(ast, { + * enter(node, key, parent, path, ancestors) { + * // @return + * // undefined: no action + * // false: skip visiting this node + * // visitor.BREAK: stop visiting altogether + * // null: delete this node + * // any value: replace this node with the returned value + * }, + * leave(node, key, parent, path, ancestors) { + * // @return + * // undefined: no action + * // false: no action + * // visitor.BREAK: stop visiting altogether + * // null: delete this node + * // any value: replace this node with the returned value + * } + * }); + * ``` + * + * Alternatively to providing enter() and leave() functions, a visitor can + * instead provide functions named the same as the kinds of AST nodes, or + * enter/leave visitors at a named key, leading to three permutations of the + * visitor API: + * + * 1) Named visitors triggered when entering a node of a specific kind. + * + * ```ts + * visit(ast, { + * Kind(node) { + * // enter the "Kind" node + * } + * }) + * ``` + * + * 2) Named visitors that trigger upon entering and leaving a node of a specific kind. + * + * ```ts + * visit(ast, { + * Kind: { + * enter(node) { + * // enter the "Kind" node + * } + * leave(node) { + * // leave the "Kind" node + * } + * } + * }) + * ``` + * + * 3) Generic visitors that trigger upon entering and leaving any node. + * + * ```ts + * visit(ast, { + * enter(node) { + * // enter any node + * }, + * leave(node) { + * // leave any node + * } + * }) + * ``` + */ - if (!hasTypeCondition && this.peek(TokenKind.NAME)) { - return this.node(start, { - kind: Kind.FRAGMENT_SPREAD, - name: this.parseFragmentName(), - directives: this.parseDirectives(false), - }); - } +function visit(root, visitor, visitorKeys = QueryDocumentKeys) { + const enterLeaveMap = new Map(); - return this.node(start, { - kind: Kind.INLINE_FRAGMENT, - typeCondition: hasTypeCondition ? this.parseNamedType() : undefined, - directives: this.parseDirectives(false), - selectionSet: this.parseSelectionSet(), - }); + for (const kind of Object.values(Kind)) { + enterLeaveMap.set(kind, getEnterLeaveForKind(visitor, kind)); } - /** - * FragmentDefinition : - * - fragment FragmentName on TypeCondition Directives? SelectionSet - * - * TypeCondition : NamedType - */ - - parseFragmentDefinition() { - const start = this._lexer.token; - this.expectKeyword('fragment'); // Legacy support for defining variables within fragments changes - // the grammar of FragmentDefinition: - // - fragment FragmentName VariableDefinitions? on TypeCondition Directives? SelectionSet + /* eslint-disable no-undef-init */ - if (this._options.allowLegacyFragmentVariables === true) { - return this.node(start, { - kind: Kind.FRAGMENT_DEFINITION, - name: this.parseFragmentName(), - variableDefinitions: this.parseVariableDefinitions(), - typeCondition: (this.expectKeyword('on'), this.parseNamedType()), - directives: this.parseDirectives(false), - selectionSet: this.parseSelectionSet(), - }); - } + let stack = undefined; + let inArray = Array.isArray(root); + let keys = [root]; + let index = -1; + let edits = []; + let node = root; + let key = undefined; + let parent = undefined; + const path = []; + const ancestors = []; + /* eslint-enable no-undef-init */ - return this.node(start, { - kind: Kind.FRAGMENT_DEFINITION, - name: this.parseFragmentName(), - typeCondition: (this.expectKeyword('on'), this.parseNamedType()), - directives: this.parseDirectives(false), - selectionSet: this.parseSelectionSet(), - }); - } - /** - * FragmentName : Name but not `on` - */ + do { + index++; + const isLeaving = index === keys.length; + const isEdited = isLeaving && edits.length !== 0; - parseFragmentName() { - if (this._lexer.token.value === 'on') { - throw this.unexpected(); - } + if (isLeaving) { + key = ancestors.length === 0 ? undefined : path[path.length - 1]; + node = parent; + parent = ancestors.pop(); - return this.parseName(); - } // Implements the parsing rules in the Values section. + if (isEdited) { + if (inArray) { + node = node.slice(); + let editOffset = 0; - /** - * Value[Const] : - * - [~Const] Variable - * - IntValue - * - FloatValue - * - StringValue - * - BooleanValue - * - NullValue - * - EnumValue - * - ListValue[?Const] - * - ObjectValue[?Const] - * - * BooleanValue : one of `true` `false` - * - * NullValue : `null` - * - * EnumValue : Name but not `true`, `false` or `null` - */ + for (const [editKey, editValue] of edits) { + const arrayKey = editKey - editOffset; - parseValueLiteral(isConst) { - const token = this._lexer.token; + if (editValue === null) { + node.splice(arrayKey, 1); + editOffset++; + } else { + node[arrayKey] = editValue; + } + } + } else { + node = Object.defineProperties( + {}, + Object.getOwnPropertyDescriptors(node), + ); - switch (token.kind) { - case TokenKind.BRACKET_L: - return this.parseList(isConst); + for (const [editKey, editValue] of edits) { + node[editKey] = editValue; + } + } + } - case TokenKind.BRACE_L: - return this.parseObject(isConst); + index = stack.index; + keys = stack.keys; + edits = stack.edits; + inArray = stack.inArray; + stack = stack.prev; + } else if (parent) { + key = inArray ? index : keys[index]; + node = parent[key]; - case TokenKind.INT: - this.advanceLexer(); - return this.node(token, { - kind: Kind.INT, - value: token.value, - }); + if (node === null || node === undefined) { + continue; + } - case TokenKind.FLOAT: - this.advanceLexer(); - return this.node(token, { - kind: Kind.FLOAT, - value: token.value, - }); + path.push(key); + } - case TokenKind.STRING: - case TokenKind.BLOCK_STRING: - return this.parseStringLiteral(); + let result; - case TokenKind.NAME: - this.advanceLexer(); + if (!Array.isArray(node)) { + var _enterLeaveMap$get, _enterLeaveMap$get2; - switch (token.value) { - case 'true': - return this.node(token, { - kind: Kind.BOOLEAN, - value: true, - }); - - case 'false': - return this.node(token, { - kind: Kind.BOOLEAN, - value: false, - }); + isNode(node) || devAssert(false, `Invalid AST Node: ${inspect$1(node)}.`); + const visitFn = isLeaving + ? (_enterLeaveMap$get = enterLeaveMap.get(node.kind)) === null || + _enterLeaveMap$get === void 0 + ? void 0 + : _enterLeaveMap$get.leave + : (_enterLeaveMap$get2 = enterLeaveMap.get(node.kind)) === null || + _enterLeaveMap$get2 === void 0 + ? void 0 + : _enterLeaveMap$get2.enter; + result = + visitFn === null || visitFn === void 0 + ? void 0 + : visitFn.call(visitor, node, key, parent, path, ancestors); - case 'null': - return this.node(token, { - kind: Kind.NULL, - }); + if (result === BREAK) { + break; + } - default: - return this.node(token, { - kind: Kind.ENUM, - value: token.value, - }); + if (result === false) { + if (!isLeaving) { + path.pop(); + continue; } + } else if (result !== undefined) { + edits.push([key, result]); - case TokenKind.DOLLAR: - if (isConst) { - this.expectToken(TokenKind.DOLLAR); - - if (this._lexer.token.kind === TokenKind.NAME) { - const varName = this._lexer.token.value; - throw syntaxError( - this._lexer.source, - token.start, - `Unexpected variable "$${varName}" in constant value.`, - ); + if (!isLeaving) { + if (isNode(result)) { + node = result; } else { - throw this.unexpected(token); + path.pop(); + continue; } } - - return this.parseVariable(); - - default: - throw this.unexpected(); + } } - } - parseConstValueLiteral() { - return this.parseValueLiteral(true); - } + if (result === undefined && isEdited) { + edits.push([key, node]); + } - parseStringLiteral() { - const token = this._lexer.token; - this.advanceLexer(); - return this.node(token, { - kind: Kind.STRING, - value: token.value, - block: token.kind === TokenKind.BLOCK_STRING, - }); - } - /** - * ListValue[Const] : - * - [ ] - * - [ Value[?Const]+ ] - */ + if (isLeaving) { + path.pop(); + } else { + var _node$kind; - parseList(isConst) { - const item = () => this.parseValueLiteral(isConst); + stack = { + inArray, + index, + keys, + edits, + prev: stack, + }; + inArray = Array.isArray(node); + keys = inArray + ? node + : (_node$kind = visitorKeys[node.kind]) !== null && + _node$kind !== void 0 + ? _node$kind + : []; + index = -1; + edits = []; - return this.node(this._lexer.token, { - kind: Kind.LIST, - values: this.any(TokenKind.BRACKET_L, item, TokenKind.BRACKET_R), - }); - } - /** - * ``` - * ObjectValue[Const] : - * - { } - * - { ObjectField[?Const]+ } - * ``` - */ + if (parent) { + ancestors.push(parent); + } - parseObject(isConst) { - const item = () => this.parseObjectField(isConst); + parent = node; + } + } while (stack !== undefined); - return this.node(this._lexer.token, { - kind: Kind.OBJECT, - fields: this.any(TokenKind.BRACE_L, item, TokenKind.BRACE_R), - }); + if (edits.length !== 0) { + // New root + return edits[edits.length - 1][1]; } - /** - * ObjectField[Const] : Name : Value[?Const] - */ - parseObjectField(isConst) { - const start = this._lexer.token; - const name = this.parseName(); - this.expectToken(TokenKind.COLON); - return this.node(start, { - kind: Kind.OBJECT_FIELD, - name, - value: this.parseValueLiteral(isConst), - }); - } // Implements the parsing rules in the Directives section. + return root; +} +/** + * Creates a new visitor instance which delegates to many visitors to run in + * parallel. Each visitor will be visited for each node before moving on. + * + * If a prior visitor edits a node, no following visitors will see that node. + */ - /** - * Directives[Const] : Directive[?Const]+ - */ +function visitInParallel(visitors) { + const skipping = new Array(visitors.length).fill(null); + const mergedVisitor = Object.create(null); - parseDirectives(isConst) { - const directives = []; + for (const kind of Object.values(Kind)) { + let hasVisitor = false; + const enterList = new Array(visitors.length).fill(undefined); + const leaveList = new Array(visitors.length).fill(undefined); - while (this.peek(TokenKind.AT)) { - directives.push(this.parseDirective(isConst)); + for (let i = 0; i < visitors.length; ++i) { + const { enter, leave } = getEnterLeaveForKind(visitors[i], kind); + hasVisitor || (hasVisitor = enter != null || leave != null); + enterList[i] = enter; + leaveList[i] = leave; } - return directives; - } + if (!hasVisitor) { + continue; + } - parseConstDirectives() { - return this.parseDirectives(true); - } - /** - * ``` - * Directive[Const] : @ Name Arguments[?Const]? - * ``` - */ + const mergedEnterLeave = { + enter(...args) { + const node = args[0]; - parseDirective(isConst) { - const start = this._lexer.token; - this.expectToken(TokenKind.AT); - return this.node(start, { - kind: Kind.DIRECTIVE, - name: this.parseName(), - arguments: this.parseArguments(isConst), - }); - } // Implements the parsing rules in the Types section. + for (let i = 0; i < visitors.length; i++) { + if (skipping[i] === null) { + var _enterList$i; - /** - * Type : - * - NamedType - * - ListType - * - NonNullType - */ + const result = + (_enterList$i = enterList[i]) === null || _enterList$i === void 0 + ? void 0 + : _enterList$i.apply(visitors[i], args); - parseTypeReference() { - const start = this._lexer.token; - let type; + if (result === false) { + skipping[i] = node; + } else if (result === BREAK) { + skipping[i] = BREAK; + } else if (result !== undefined) { + return result; + } + } + } + }, - if (this.expectOptionalToken(TokenKind.BRACKET_L)) { - const innerType = this.parseTypeReference(); - this.expectToken(TokenKind.BRACKET_R); - type = this.node(start, { - kind: Kind.LIST_TYPE, - type: innerType, - }); - } else { - type = this.parseNamedType(); - } + leave(...args) { + const node = args[0]; - if (this.expectOptionalToken(TokenKind.BANG)) { - return this.node(start, { - kind: Kind.NON_NULL_TYPE, - type, - }); - } + for (let i = 0; i < visitors.length; i++) { + if (skipping[i] === null) { + var _leaveList$i; - return type; - } - /** - * NamedType : Name - */ + const result = + (_leaveList$i = leaveList[i]) === null || _leaveList$i === void 0 + ? void 0 + : _leaveList$i.apply(visitors[i], args); - parseNamedType() { - return this.node(this._lexer.token, { - kind: Kind.NAMED_TYPE, - name: this.parseName(), - }); - } // Implements the parsing rules in the Type Definition section. - - peekDescription() { - return this.peek(TokenKind.STRING) || this.peek(TokenKind.BLOCK_STRING); - } - /** - * Description : StringValue - */ - - parseDescription() { - if (this.peekDescription()) { - return this.parseStringLiteral(); - } - } - /** - * ``` - * SchemaDefinition : Description? schema Directives[Const]? { OperationTypeDefinition+ } - * ``` - */ - - parseSchemaDefinition() { - const start = this._lexer.token; - const description = this.parseDescription(); - this.expectKeyword('schema'); - const directives = this.parseConstDirectives(); - const operationTypes = this.many( - TokenKind.BRACE_L, - this.parseOperationTypeDefinition, - TokenKind.BRACE_R, - ); - return this.node(start, { - kind: Kind.SCHEMA_DEFINITION, - description, - directives, - operationTypes, - }); - } - /** - * OperationTypeDefinition : OperationType : NamedType - */ - - parseOperationTypeDefinition() { - const start = this._lexer.token; - const operation = this.parseOperationType(); - this.expectToken(TokenKind.COLON); - const type = this.parseNamedType(); - return this.node(start, { - kind: Kind.OPERATION_TYPE_DEFINITION, - operation, - type, - }); + if (result === BREAK) { + skipping[i] = BREAK; + } else if (result !== undefined && result !== false) { + return result; + } + } else if (skipping[i] === node) { + skipping[i] = null; + } + } + }, + }; + mergedVisitor[kind] = mergedEnterLeave; } - /** - * ScalarTypeDefinition : Description? scalar Name Directives[Const]? - */ - parseScalarTypeDefinition() { - const start = this._lexer.token; - const description = this.parseDescription(); - this.expectKeyword('scalar'); - const name = this.parseName(); - const directives = this.parseConstDirectives(); - return this.node(start, { - kind: Kind.SCALAR_TYPE_DEFINITION, - description, - name, - directives, - }); - } - /** - * ObjectTypeDefinition : - * Description? - * type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition? - */ + return mergedVisitor; +} +/** + * Given a visitor instance and a node kind, return EnterLeaveVisitor for that kind. + */ - parseObjectTypeDefinition() { - const start = this._lexer.token; - const description = this.parseDescription(); - this.expectKeyword('type'); - const name = this.parseName(); - const interfaces = this.parseImplementsInterfaces(); - const directives = this.parseConstDirectives(); - const fields = this.parseFieldsDefinition(); - return this.node(start, { - kind: Kind.OBJECT_TYPE_DEFINITION, - description, - name, - interfaces, - directives, - fields, - }); - } - /** - * ImplementsInterfaces : - * - implements `&`? NamedType - * - ImplementsInterfaces & NamedType - */ +function getEnterLeaveForKind(visitor, kind) { + const kindVisitor = visitor[kind]; - parseImplementsInterfaces() { - return this.expectOptionalKeyword('implements') - ? this.delimitedMany(TokenKind.AMP, this.parseNamedType) - : []; - } - /** - * ``` - * FieldsDefinition : { FieldDefinition+ } - * ``` - */ + if (typeof kindVisitor === 'object') { + // { Kind: { enter() {}, leave() {} } } + return kindVisitor; + } else if (typeof kindVisitor === 'function') { + // { Kind() {} } + return { + enter: kindVisitor, + leave: undefined, + }; + } // { enter() {}, leave() {} } - parseFieldsDefinition() { - return this.optionalMany( - TokenKind.BRACE_L, - this.parseFieldDefinition, - TokenKind.BRACE_R, - ); - } - /** - * FieldDefinition : - * - Description? Name ArgumentsDefinition? : Type Directives[Const]? - */ + return { + enter: visitor.enter, + leave: visitor.leave, + }; +} - parseFieldDefinition() { - const start = this._lexer.token; - const description = this.parseDescription(); - const name = this.parseName(); - const args = this.parseArgumentDefs(); - this.expectToken(TokenKind.COLON); - const type = this.parseTypeReference(); - const directives = this.parseConstDirectives(); - return this.node(start, { - kind: Kind.FIELD_DEFINITION, - description, - name, - arguments: args, - type, - directives, - }); - } - /** - * ArgumentsDefinition : ( InputValueDefinition+ ) - */ +/** + * Converts an AST into a string, using one set of reasonable + * formatting rules. + */ - parseArgumentDefs() { - return this.optionalMany( - TokenKind.PAREN_L, - this.parseInputValueDef, - TokenKind.PAREN_R, - ); - } - /** - * InputValueDefinition : - * - Description? Name : Type DefaultValue? Directives[Const]? - */ +function print(ast) { + return visit(ast, printDocASTReducer$1); +} +const MAX_LINE_LENGTH$1 = 80; +const printDocASTReducer$1 = { + Name: { + leave: (node) => node.value, + }, + Variable: { + leave: (node) => '$' + node.name, + }, + // Document + Document: { + leave: (node) => join$1(node.definitions, '\n\n'), + }, + OperationDefinition: { + leave(node) { + const varDefs = wrap$1('(', join$1(node.variableDefinitions, ', '), ')'); + const prefix = join$1( + [ + node.operation, + join$1([node.name, varDefs]), + join$1(node.directives, ' '), + ], + ' ', + ); // Anonymous queries with no directives or variable definitions can use + // the query short form. - parseInputValueDef() { - const start = this._lexer.token; - const description = this.parseDescription(); - const name = this.parseName(); - this.expectToken(TokenKind.COLON); - const type = this.parseTypeReference(); - let defaultValue; + return (prefix === 'query' ? '' : prefix + ' ') + node.selectionSet; + }, + }, + VariableDefinition: { + leave: ({ variable, type, defaultValue, directives }) => + variable + + ': ' + + type + + wrap$1(' = ', defaultValue) + + wrap$1(' ', join$1(directives, ' ')), + }, + SelectionSet: { + leave: ({ selections }) => block$1(selections), + }, + Field: { + leave({ alias, name, arguments: args, directives, selectionSet }) { + const prefix = wrap$1('', alias, ': ') + name; + let argsLine = prefix + wrap$1('(', join$1(args, ', '), ')'); - if (this.expectOptionalToken(TokenKind.EQUALS)) { - defaultValue = this.parseConstValueLiteral(); - } + if (argsLine.length > MAX_LINE_LENGTH$1) { + argsLine = prefix + wrap$1('(\n', indent$1(join$1(args, '\n')), '\n)'); + } - const directives = this.parseConstDirectives(); - return this.node(start, { - kind: Kind.INPUT_VALUE_DEFINITION, - description, - name, - type, - defaultValue, - directives, - }); - } - /** - * InterfaceTypeDefinition : - * - Description? interface Name Directives[Const]? FieldsDefinition? - */ + return join$1([argsLine, join$1(directives, ' '), selectionSet], ' '); + }, + }, + Argument: { + leave: ({ name, value }) => name + ': ' + value, + }, + // Fragments + FragmentSpread: { + leave: ({ name, directives }) => + '...' + name + wrap$1(' ', join$1(directives, ' ')), + }, + InlineFragment: { + leave: ({ typeCondition, directives, selectionSet }) => + join$1( + [ + '...', + wrap$1('on ', typeCondition), + join$1(directives, ' '), + selectionSet, + ], + ' ', + ), + }, + FragmentDefinition: { + leave: ( + { name, typeCondition, variableDefinitions, directives, selectionSet }, // Note: fragment variable definitions are experimental and may be changed + ) => + // or removed in the future. + `fragment ${name}${wrap$1('(', join$1(variableDefinitions, ', '), ')')} ` + + `on ${typeCondition} ${wrap$1('', join$1(directives, ' '), ' ')}` + + selectionSet, + }, + // Value + IntValue: { + leave: ({ value }) => value, + }, + FloatValue: { + leave: ({ value }) => value, + }, + StringValue: { + leave: ({ value, block: isBlockString }) => + isBlockString ? printBlockString$1(value) : printString(value), + }, + BooleanValue: { + leave: ({ value }) => (value ? 'true' : 'false'), + }, + NullValue: { + leave: () => 'null', + }, + EnumValue: { + leave: ({ value }) => value, + }, + ListValue: { + leave: ({ values }) => '[' + join$1(values, ', ') + ']', + }, + ObjectValue: { + leave: ({ fields }) => '{' + join$1(fields, ', ') + '}', + }, + ObjectField: { + leave: ({ name, value }) => name + ': ' + value, + }, + // Directive + Directive: { + leave: ({ name, arguments: args }) => + '@' + name + wrap$1('(', join$1(args, ', '), ')'), + }, + // Type + NamedType: { + leave: ({ name }) => name, + }, + ListType: { + leave: ({ type }) => '[' + type + ']', + }, + NonNullType: { + leave: ({ type }) => type + '!', + }, + // Type System Definitions + SchemaDefinition: { + leave: ({ description, directives, operationTypes }) => + wrap$1('', description, '\n') + + join$1(['schema', join$1(directives, ' '), block$1(operationTypes)], ' '), + }, + OperationTypeDefinition: { + leave: ({ operation, type }) => operation + ': ' + type, + }, + ScalarTypeDefinition: { + leave: ({ description, name, directives }) => + wrap$1('', description, '\n') + + join$1(['scalar', name, join$1(directives, ' ')], ' '), + }, + ObjectTypeDefinition: { + leave: ({ description, name, interfaces, directives, fields }) => + wrap$1('', description, '\n') + + join$1( + [ + 'type', + name, + wrap$1('implements ', join$1(interfaces, ' & ')), + join$1(directives, ' '), + block$1(fields), + ], + ' ', + ), + }, + FieldDefinition: { + leave: ({ description, name, arguments: args, type, directives }) => + wrap$1('', description, '\n') + + name + + (hasMultilineItems$1(args) + ? wrap$1('(\n', indent$1(join$1(args, '\n')), '\n)') + : wrap$1('(', join$1(args, ', '), ')')) + + ': ' + + type + + wrap$1(' ', join$1(directives, ' ')), + }, + InputValueDefinition: { + leave: ({ description, name, type, defaultValue, directives }) => + wrap$1('', description, '\n') + + join$1( + [name + ': ' + type, wrap$1('= ', defaultValue), join$1(directives, ' ')], + ' ', + ), + }, + InterfaceTypeDefinition: { + leave: ({ description, name, interfaces, directives, fields }) => + wrap$1('', description, '\n') + + join$1( + [ + 'interface', + name, + wrap$1('implements ', join$1(interfaces, ' & ')), + join$1(directives, ' '), + block$1(fields), + ], + ' ', + ), + }, + UnionTypeDefinition: { + leave: ({ description, name, directives, types }) => + wrap$1('', description, '\n') + + join$1( + ['union', name, join$1(directives, ' '), wrap$1('= ', join$1(types, ' | '))], + ' ', + ), + }, + EnumTypeDefinition: { + leave: ({ description, name, directives, values }) => + wrap$1('', description, '\n') + + join$1(['enum', name, join$1(directives, ' '), block$1(values)], ' '), + }, + EnumValueDefinition: { + leave: ({ description, name, directives }) => + wrap$1('', description, '\n') + join$1([name, join$1(directives, ' ')], ' '), + }, + InputObjectTypeDefinition: { + leave: ({ description, name, directives, fields }) => + wrap$1('', description, '\n') + + join$1(['input', name, join$1(directives, ' '), block$1(fields)], ' '), + }, + DirectiveDefinition: { + leave: ({ description, name, arguments: args, repeatable, locations }) => + wrap$1('', description, '\n') + + 'directive @' + + name + + (hasMultilineItems$1(args) + ? wrap$1('(\n', indent$1(join$1(args, '\n')), '\n)') + : wrap$1('(', join$1(args, ', '), ')')) + + (repeatable ? ' repeatable' : '') + + ' on ' + + join$1(locations, ' | '), + }, + SchemaExtension: { + leave: ({ directives, operationTypes }) => + join$1( + ['extend schema', join$1(directives, ' '), block$1(operationTypes)], + ' ', + ), + }, + ScalarTypeExtension: { + leave: ({ name, directives }) => + join$1(['extend scalar', name, join$1(directives, ' ')], ' '), + }, + ObjectTypeExtension: { + leave: ({ name, interfaces, directives, fields }) => + join$1( + [ + 'extend type', + name, + wrap$1('implements ', join$1(interfaces, ' & ')), + join$1(directives, ' '), + block$1(fields), + ], + ' ', + ), + }, + InterfaceTypeExtension: { + leave: ({ name, interfaces, directives, fields }) => + join$1( + [ + 'extend interface', + name, + wrap$1('implements ', join$1(interfaces, ' & ')), + join$1(directives, ' '), + block$1(fields), + ], + ' ', + ), + }, + UnionTypeExtension: { + leave: ({ name, directives, types }) => + join$1( + [ + 'extend union', + name, + join$1(directives, ' '), + wrap$1('= ', join$1(types, ' | ')), + ], + ' ', + ), + }, + EnumTypeExtension: { + leave: ({ name, directives, values }) => + join$1(['extend enum', name, join$1(directives, ' '), block$1(values)], ' '), + }, + InputObjectTypeExtension: { + leave: ({ name, directives, fields }) => + join$1(['extend input', name, join$1(directives, ' '), block$1(fields)], ' '), + }, +}; +/** + * Given maybeArray, print an empty string if it is null or empty, otherwise + * print all items together separated by separator if provided + */ - parseInterfaceTypeDefinition() { - const start = this._lexer.token; - const description = this.parseDescription(); - this.expectKeyword('interface'); - const name = this.parseName(); - const interfaces = this.parseImplementsInterfaces(); - const directives = this.parseConstDirectives(); - const fields = this.parseFieldsDefinition(); - return this.node(start, { - kind: Kind.INTERFACE_TYPE_DEFINITION, - description, - name, - interfaces, - directives, - fields, - }); - } - /** - * UnionTypeDefinition : - * - Description? union Name Directives[Const]? UnionMemberTypes? - */ - - parseUnionTypeDefinition() { - const start = this._lexer.token; - const description = this.parseDescription(); - this.expectKeyword('union'); - const name = this.parseName(); - const directives = this.parseConstDirectives(); - const types = this.parseUnionMemberTypes(); - return this.node(start, { - kind: Kind.UNION_TYPE_DEFINITION, - description, - name, - directives, - types, - }); - } - /** - * UnionMemberTypes : - * - = `|`? NamedType - * - UnionMemberTypes | NamedType - */ - - parseUnionMemberTypes() { - return this.expectOptionalToken(TokenKind.EQUALS) - ? this.delimitedMany(TokenKind.PIPE, this.parseNamedType) - : []; - } - /** - * EnumTypeDefinition : - * - Description? enum Name Directives[Const]? EnumValuesDefinition? - */ +function join$1(maybeArray, separator = '') { + var _maybeArray$filter$jo; - parseEnumTypeDefinition() { - const start = this._lexer.token; - const description = this.parseDescription(); - this.expectKeyword('enum'); - const name = this.parseName(); - const directives = this.parseConstDirectives(); - const values = this.parseEnumValuesDefinition(); - return this.node(start, { - kind: Kind.ENUM_TYPE_DEFINITION, - description, - name, - directives, - values, - }); - } - /** - * ``` - * EnumValuesDefinition : { EnumValueDefinition+ } - * ``` - */ + return (_maybeArray$filter$jo = + maybeArray === null || maybeArray === void 0 + ? void 0 + : maybeArray.filter((x) => x).join(separator)) !== null && + _maybeArray$filter$jo !== void 0 + ? _maybeArray$filter$jo + : ''; +} +/** + * Given array, print each item on its own line, wrapped in an indented `{ }` block. + */ - parseEnumValuesDefinition() { - return this.optionalMany( - TokenKind.BRACE_L, - this.parseEnumValueDefinition, - TokenKind.BRACE_R, - ); - } - /** - * EnumValueDefinition : Description? EnumValue Directives[Const]? - */ +function block$1(array) { + return wrap$1('{\n', indent$1(join$1(array, '\n')), '\n}'); +} +/** + * If maybeString is not null or empty, then wrap with start and end, otherwise print an empty string. + */ - parseEnumValueDefinition() { - const start = this._lexer.token; - const description = this.parseDescription(); - const name = this.parseEnumValueName(); - const directives = this.parseConstDirectives(); - return this.node(start, { - kind: Kind.ENUM_VALUE_DEFINITION, - description, - name, - directives, - }); - } - /** - * EnumValue : Name but not `true`, `false` or `null` - */ +function wrap$1(start, maybeString, end = '') { + return maybeString != null && maybeString !== '' + ? start + maybeString + end + : ''; +} - parseEnumValueName() { - if ( - this._lexer.token.value === 'true' || - this._lexer.token.value === 'false' || - this._lexer.token.value === 'null' - ) { - throw syntaxError( - this._lexer.source, - this._lexer.token.start, - `${getTokenDesc( - this._lexer.token, - )} is reserved and cannot be used for an enum value.`, - ); - } +function indent$1(str) { + return wrap$1(' ', str.replace(/\n/g, '\n ')); +} - return this.parseName(); - } - /** - * InputObjectTypeDefinition : - * - Description? input Name Directives[Const]? InputFieldsDefinition? - */ +function hasMultilineItems$1(maybeArray) { + var _maybeArray$some; - parseInputObjectTypeDefinition() { - const start = this._lexer.token; - const description = this.parseDescription(); - this.expectKeyword('input'); - const name = this.parseName(); - const directives = this.parseConstDirectives(); - const fields = this.parseInputFieldsDefinition(); - return this.node(start, { - kind: Kind.INPUT_OBJECT_TYPE_DEFINITION, - description, - name, - directives, - fields, - }); - } - /** - * ``` - * InputFieldsDefinition : { InputValueDefinition+ } - * ``` - */ + // FIXME: https://github.com/graphql/graphql-js/issues/2203 - parseInputFieldsDefinition() { - return this.optionalMany( - TokenKind.BRACE_L, - this.parseInputValueDef, - TokenKind.BRACE_R, - ); - } - /** - * TypeSystemExtension : - * - SchemaExtension - * - TypeExtension - * - * TypeExtension : - * - ScalarTypeExtension - * - ObjectTypeExtension - * - InterfaceTypeExtension - * - UnionTypeExtension - * - EnumTypeExtension - * - InputObjectTypeDefinition - */ + /* c8 ignore next */ + return (_maybeArray$some = + maybeArray === null || maybeArray === void 0 + ? void 0 + : maybeArray.some((str) => str.includes('\n'))) !== null && + _maybeArray$some !== void 0 + ? _maybeArray$some + : false; +} - parseTypeSystemExtension() { - const keywordToken = this._lexer.lookahead(); +var printer = /*#__PURE__*/Object.freeze({ + __proto__: null, + print: print +}); - if (keywordToken.kind === TokenKind.NAME) { - switch (keywordToken.value) { - case 'schema': - return this.parseSchemaExtension(); +var require$$2 = /*@__PURE__*/getAugmentedNamespace(printer); - case 'scalar': - return this.parseScalarTypeExtension(); +var createRequestBody$1 = {}; - case 'type': - return this.parseObjectTypeExtension(); +var _public = {}; - case 'interface': - return this.parseInterfaceTypeExtension(); +var ReactNativeFile$1 = function ReactNativeFile(_ref) { + var uri = _ref.uri, + name = _ref.name, + type = _ref.type; + this.uri = uri; + this.name = name; + this.type = type; +}; - case 'union': - return this.parseUnionTypeExtension(); +var ReactNativeFile = ReactNativeFile$1; - case 'enum': - return this.parseEnumTypeExtension(); +var isExtractableFile = function isExtractableFile(value) { + return ( + (typeof File !== 'undefined' && value instanceof File) || + (typeof Blob !== 'undefined' && value instanceof Blob) || + value instanceof ReactNativeFile + ); +}; - case 'input': - return this.parseInputObjectTypeExtension(); - } - } +var defaultIsExtractableFile = isExtractableFile; - throw this.unexpected(keywordToken); +var extractFiles = function extractFiles(value, path, isExtractableFile) { + if (path === void 0) { + path = ''; } - /** - * ``` - * SchemaExtension : - * - extend schema Directives[Const]? { OperationTypeDefinition+ } - * - extend schema Directives[Const] - * ``` - */ - parseSchemaExtension() { - const start = this._lexer.token; - this.expectKeyword('extend'); - this.expectKeyword('schema'); - const directives = this.parseConstDirectives(); - const operationTypes = this.optionalMany( - TokenKind.BRACE_L, - this.parseOperationTypeDefinition, - TokenKind.BRACE_R, - ); + if (isExtractableFile === void 0) { + isExtractableFile = defaultIsExtractableFile; + } - if (directives.length === 0 && operationTypes.length === 0) { - throw this.unexpected(); - } + var clone; + var files = new Map(); - return this.node(start, { - kind: Kind.SCHEMA_EXTENSION, - directives, - operationTypes, - }); + function addFile(paths, file) { + var storedPaths = files.get(file); + if (storedPaths) storedPaths.push.apply(storedPaths, paths); + else files.set(file, paths); } - /** - * ScalarTypeExtension : - * - extend scalar Name Directives[Const] - */ - - parseScalarTypeExtension() { - const start = this._lexer.token; - this.expectKeyword('extend'); - this.expectKeyword('scalar'); - const name = this.parseName(); - const directives = this.parseConstDirectives(); - if (directives.length === 0) { - throw this.unexpected(); - } + if (isExtractableFile(value)) { + clone = null; + addFile([path], value); + } else { + var prefix = path ? path + '.' : ''; + if (typeof FileList !== 'undefined' && value instanceof FileList) + clone = Array.prototype.map.call(value, function (file, i) { + addFile(['' + prefix + i], file); + return null; + }); + else if (Array.isArray(value)) + clone = value.map(function (child, i) { + var result = extractFiles(child, '' + prefix + i, isExtractableFile); + result.files.forEach(addFile); + return result.clone; + }); + else if (value && value.constructor === Object) { + clone = {}; - return this.node(start, { - kind: Kind.SCALAR_TYPE_EXTENSION, - name, - directives, - }); + for (var i in value) { + var result = extractFiles(value[i], '' + prefix + i, isExtractableFile); + result.files.forEach(addFile); + clone[i] = result.clone; + } + } else clone = value; } - /** - * ObjectTypeExtension : - * - extend type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition - * - extend type Name ImplementsInterfaces? Directives[Const] - * - extend type Name ImplementsInterfaces - */ - - parseObjectTypeExtension() { - const start = this._lexer.token; - this.expectKeyword('extend'); - this.expectKeyword('type'); - const name = this.parseName(); - const interfaces = this.parseImplementsInterfaces(); - const directives = this.parseConstDirectives(); - const fields = this.parseFieldsDefinition(); - if ( - interfaces.length === 0 && - directives.length === 0 && - fields.length === 0 - ) { - throw this.unexpected(); - } + return { + clone: clone, + files: files, + }; +}; - return this.node(start, { - kind: Kind.OBJECT_TYPE_EXTENSION, - name, - interfaces, - directives, - fields, - }); - } - /** - * InterfaceTypeExtension : - * - extend interface Name ImplementsInterfaces? Directives[Const]? FieldsDefinition - * - extend interface Name ImplementsInterfaces? Directives[Const] - * - extend interface Name ImplementsInterfaces - */ +_public.ReactNativeFile = ReactNativeFile$1; +_public.extractFiles = extractFiles; +_public.isExtractableFile = isExtractableFile; - parseInterfaceTypeExtension() { - const start = this._lexer.token; - this.expectKeyword('extend'); - this.expectKeyword('interface'); - const name = this.parseName(); - const interfaces = this.parseImplementsInterfaces(); - const directives = this.parseConstDirectives(); - const fields = this.parseFieldsDefinition(); +/* eslint-env browser */ - if ( - interfaces.length === 0 && - directives.length === 0 && - fields.length === 0 - ) { - throw this.unexpected(); - } +var browser = typeof self == 'object' ? self.FormData : window.FormData; - return this.node(start, { - kind: Kind.INTERFACE_TYPE_EXTENSION, - name, - interfaces, - directives, - fields, - }); - } - /** - * UnionTypeExtension : - * - extend union Name Directives[Const]? UnionMemberTypes - * - extend union Name Directives[Const] - */ +var defaultJsonSerializer = {}; - parseUnionTypeExtension() { - const start = this._lexer.token; - this.expectKeyword('extend'); - this.expectKeyword('union'); - const name = this.parseName(); - const directives = this.parseConstDirectives(); - const types = this.parseUnionMemberTypes(); +Object.defineProperty(defaultJsonSerializer, "__esModule", { value: true }); +defaultJsonSerializer.defaultJsonSerializer = void 0; +defaultJsonSerializer.defaultJsonSerializer = { + parse: JSON.parse, + stringify: JSON.stringify, +}; - if (directives.length === 0 && types.length === 0) { - throw this.unexpected(); +var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(createRequestBody$1, "__esModule", { value: true }); +var extract_files_1 = _public; +var form_data_1 = __importDefault(browser); +var defaultJsonSerializer_1 = defaultJsonSerializer; +/** + * Duck type if NodeJS stream + * https://github.com/sindresorhus/is-stream/blob/3750505b0727f6df54324784fe369365ef78841e/index.js#L3 + */ +var isExtractableFileEnhanced = function (value) { + return extract_files_1.isExtractableFile(value) || + (value !== null && typeof value === 'object' && typeof value.pipe === 'function'); +}; +/** + * Returns Multipart Form if body contains files + * (https://github.com/jaydenseric/graphql-multipart-request-spec) + * Otherwise returns JSON + */ +function createRequestBody(query, variables, operationName, jsonSerializer) { + if (jsonSerializer === void 0) { jsonSerializer = defaultJsonSerializer_1.defaultJsonSerializer; } + var _a = extract_files_1.extractFiles({ query: query, variables: variables, operationName: operationName }, '', isExtractableFileEnhanced), clone = _a.clone, files = _a.files; + if (files.size === 0) { + if (!Array.isArray(query)) { + return jsonSerializer.stringify(clone); + } + if (typeof variables !== 'undefined' && !Array.isArray(variables)) { + throw new Error('Cannot create request body with given variable type, array expected'); + } + // Batch support + var payload = query.reduce(function (accu, currentQuery, index) { + accu.push({ query: currentQuery, variables: variables ? variables[index] : undefined }); + return accu; + }, []); + return jsonSerializer.stringify(payload); } - - return this.node(start, { - kind: Kind.UNION_TYPE_EXTENSION, - name, - directives, - types, + var Form = typeof FormData === 'undefined' ? form_data_1.default : FormData; + var form = new Form(); + form.append('operations', jsonSerializer.stringify(clone)); + var map = {}; + var i = 0; + files.forEach(function (paths) { + map[++i] = paths; }); - } - /** - * EnumTypeExtension : - * - extend enum Name Directives[Const]? EnumValuesDefinition - * - extend enum Name Directives[Const] - */ - - parseEnumTypeExtension() { - const start = this._lexer.token; - this.expectKeyword('extend'); - this.expectKeyword('enum'); - const name = this.parseName(); - const directives = this.parseConstDirectives(); - const values = this.parseEnumValuesDefinition(); - - if (directives.length === 0 && values.length === 0) { - throw this.unexpected(); - } - - return this.node(start, { - kind: Kind.ENUM_TYPE_EXTENSION, - name, - directives, - values, + form.append('map', jsonSerializer.stringify(map)); + i = 0; + files.forEach(function (paths, file) { + form.append("" + ++i, file); }); - } - /** - * InputObjectTypeExtension : - * - extend input Name Directives[Const]? InputFieldsDefinition - * - extend input Name Directives[Const] - */ - - parseInputObjectTypeExtension() { - const start = this._lexer.token; - this.expectKeyword('extend'); - this.expectKeyword('input'); - const name = this.parseName(); - const directives = this.parseConstDirectives(); - const fields = this.parseInputFieldsDefinition(); - - if (directives.length === 0 && fields.length === 0) { - throw this.unexpected(); - } + return form; +} +createRequestBody$1.default = createRequestBody; - return this.node(start, { - kind: Kind.INPUT_OBJECT_TYPE_EXTENSION, - name, - directives, - fields, - }); - } - /** - * ``` - * DirectiveDefinition : - * - Description? directive @ Name ArgumentsDefinition? `repeatable`? on DirectiveLocations - * ``` - */ +var parseArgs = {}; - parseDirectiveDefinition() { - const start = this._lexer.token; - const description = this.parseDescription(); - this.expectKeyword('directive'); - this.expectToken(TokenKind.AT); - const name = this.parseName(); - const args = this.parseArgumentDefs(); - const repeatable = this.expectOptionalKeyword('repeatable'); - this.expectKeyword('on'); - const locations = this.parseDirectiveLocations(); - return this.node(start, { - kind: Kind.DIRECTIVE_DEFINITION, - description, - name, - arguments: args, - repeatable, - locations, - }); - } - /** - * DirectiveLocations : - * - `|`? DirectiveLocation - * - DirectiveLocations | DirectiveLocation - */ - - parseDirectiveLocations() { - return this.delimitedMany(TokenKind.PIPE, this.parseDirectiveLocation); - } - /* - * DirectiveLocation : - * - ExecutableDirectiveLocation - * - TypeSystemDirectiveLocation - * - * ExecutableDirectiveLocation : one of - * `QUERY` - * `MUTATION` - * `SUBSCRIPTION` - * `FIELD` - * `FRAGMENT_DEFINITION` - * `FRAGMENT_SPREAD` - * `INLINE_FRAGMENT` - * - * TypeSystemDirectiveLocation : one of - * `SCHEMA` - * `SCALAR` - * `OBJECT` - * `FIELD_DEFINITION` - * `ARGUMENT_DEFINITION` - * `INTERFACE` - * `UNION` - * `ENUM` - * `ENUM_VALUE` - * `INPUT_OBJECT` - * `INPUT_FIELD_DEFINITION` - */ - - parseDirectiveLocation() { - const start = this._lexer.token; - const name = this.parseName(); - - if (Object.prototype.hasOwnProperty.call(DirectiveLocation$1, name.value)) { - return name; - } - - throw this.unexpected(start); - } // Core parsing utility functions - - /** - * Returns a node that, if configured to do so, sets a "loc" field as a - * location object, used to identify the place in the source that created a - * given parsed object. - */ - - node(startToken, node) { - if (this._options.noLocation !== true) { - node.loc = new Location( - startToken, - this._lexer.lastToken, - this._lexer.source, - ); - } - - return node; - } - /** - * Determines if the next token is of a given kind - */ - - peek(kind) { - return this._lexer.token.kind === kind; - } - /** - * If the next token is of the given kind, return that token after advancing the lexer. - * Otherwise, do not change the parser state and throw an error. - */ - - expectToken(kind) { - const token = this._lexer.token; - - if (token.kind === kind) { - this.advanceLexer(); - return token; - } - - throw syntaxError( - this._lexer.source, - token.start, - `Expected ${getTokenKindDesc(kind)}, found ${getTokenDesc(token)}.`, - ); - } - /** - * If the next token is of the given kind, return "true" after advancing the lexer. - * Otherwise, do not change the parser state and return "false". - */ - - expectOptionalToken(kind) { - const token = this._lexer.token; - - if (token.kind === kind) { - this.advanceLexer(); - return true; - } - - return false; - } - /** - * If the next token is a given keyword, advance the lexer. - * Otherwise, do not change the parser state and throw an error. - */ +Object.defineProperty(parseArgs, "__esModule", { value: true }); +parseArgs.parseBatchRequestsExtendedArgs = parseArgs.parseRawRequestExtendedArgs = parseArgs.parseRequestExtendedArgs = parseArgs.parseBatchRequestArgs = parseArgs.parseRawRequestArgs = parseArgs.parseRequestArgs = void 0; +function parseRequestArgs(documentOrOptions, variables, requestHeaders) { + return documentOrOptions.document + ? documentOrOptions + : { + document: documentOrOptions, + variables: variables, + requestHeaders: requestHeaders, + signal: undefined, + }; +} +parseArgs.parseRequestArgs = parseRequestArgs; +function parseRawRequestArgs(queryOrOptions, variables, requestHeaders) { + return queryOrOptions.query + ? queryOrOptions + : { + query: queryOrOptions, + variables: variables, + requestHeaders: requestHeaders, + signal: undefined, + }; +} +parseArgs.parseRawRequestArgs = parseRawRequestArgs; +function parseBatchRequestArgs(documentsOrOptions, requestHeaders) { + return documentsOrOptions.documents + ? documentsOrOptions + : { + documents: documentsOrOptions, + requestHeaders: requestHeaders, + signal: undefined, + }; +} +parseArgs.parseBatchRequestArgs = parseBatchRequestArgs; +function parseRequestExtendedArgs(urlOrOptions, document, variables, requestHeaders) { + return urlOrOptions.document + ? urlOrOptions + : { + url: urlOrOptions, + document: document, + variables: variables, + requestHeaders: requestHeaders, + signal: undefined, + }; +} +parseArgs.parseRequestExtendedArgs = parseRequestExtendedArgs; +function parseRawRequestExtendedArgs(urlOrOptions, query, variables, requestHeaders) { + return urlOrOptions.query + ? urlOrOptions + : { + url: urlOrOptions, + query: query, + variables: variables, + requestHeaders: requestHeaders, + signal: undefined, + }; +} +parseArgs.parseRawRequestExtendedArgs = parseRawRequestExtendedArgs; +function parseBatchRequestsExtendedArgs(urlOrOptions, documents, requestHeaders) { + return urlOrOptions.documents + ? urlOrOptions + : { + url: urlOrOptions, + documents: documents, + requestHeaders: requestHeaders, + signal: undefined, + }; +} +parseArgs.parseBatchRequestsExtendedArgs = parseBatchRequestsExtendedArgs; - expectKeyword(value) { - const token = this._lexer.token; +var types = {}; - if (token.kind === TokenKind.NAME && token.value === value) { - this.advanceLexer(); - } else { - throw syntaxError( - this._lexer.source, - token.start, - `Expected "${value}", found ${getTokenDesc(token)}.`, - ); +var __extends$1 = (commonjsGlobal && commonjsGlobal.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(types, "__esModule", { value: true }); +types.ClientError = void 0; +var ClientError = /** @class */ (function (_super) { + __extends$1(ClientError, _super); + function ClientError(response, request) { + var _this = this; + var message = ClientError.extractMessage(response) + ": " + JSON.stringify({ + response: response, + request: request, + }); + _this = _super.call(this, message) || this; + Object.setPrototypeOf(_this, ClientError.prototype); + _this.response = response; + _this.request = request; + // this is needed as Safari doesn't support .captureStackTrace + if (typeof Error.captureStackTrace === 'function') { + Error.captureStackTrace(_this, ClientError); + } + return _this; } - } - /** - * If the next token is a given keyword, return "true" after advancing the lexer. - * Otherwise, do not change the parser state and return "false". - */ + ClientError.extractMessage = function (response) { + try { + return response.errors[0].message; + } + catch (e) { + return "GraphQL Error (Code: " + response.status + ")"; + } + }; + return ClientError; +}(Error)); +types.ClientError = ClientError; - expectOptionalKeyword(value) { - const token = this._lexer.token; +var graphqlWs = {}; - if (token.kind === TokenKind.NAME && token.value === value) { - this.advanceLexer(); - return true; - } +var hasRequiredGraphqlWs; - return false; - } - /** - * Helper function for creating an error when an unexpected lexed token is encountered. - */ - - unexpected(atToken) { - const token = - atToken !== null && atToken !== void 0 ? atToken : this._lexer.token; - return syntaxError( - this._lexer.source, - token.start, - `Unexpected ${getTokenDesc(token)}.`, - ); - } - /** - * Returns a possibly empty list of parse nodes, determined by the parseFn. - * This list begins with a lex token of openKind and ends with a lex token of closeKind. - * Advances the parser to the next lex token after the closing token. - */ - - any(openKind, parseFn, closeKind) { - this.expectToken(openKind); - const nodes = []; - - while (!this.expectOptionalToken(closeKind)) { - nodes.push(parseFn.call(this)); - } - - return nodes; - } - /** - * Returns a list of parse nodes, determined by the parseFn. - * It can be empty only if open token is missing otherwise it will always return non-empty list - * that begins with a lex token of openKind and ends with a lex token of closeKind. - * Advances the parser to the next lex token after the closing token. - */ - - optionalMany(openKind, parseFn, closeKind) { - if (this.expectOptionalToken(openKind)) { - const nodes = []; - - do { - nodes.push(parseFn.call(this)); - } while (!this.expectOptionalToken(closeKind)); - - return nodes; - } - - return []; - } - /** - * Returns a non-empty list of parse nodes, determined by the parseFn. - * This list begins with a lex token of openKind and ends with a lex token of closeKind. - * Advances the parser to the next lex token after the closing token. - */ - - many(openKind, parseFn, closeKind) { - this.expectToken(openKind); - const nodes = []; - - do { - nodes.push(parseFn.call(this)); - } while (!this.expectOptionalToken(closeKind)); - - return nodes; - } - /** - * Returns a non-empty list of parse nodes, determined by the parseFn. - * This list may begin with a lex token of delimiterKind followed by items separated by lex tokens of tokenKind. - * Advances the parser to the next lex token after last item in the list. - */ - - delimitedMany(delimiterKind, parseFn) { - this.expectOptionalToken(delimiterKind); - const nodes = []; - - do { - nodes.push(parseFn.call(this)); - } while (this.expectOptionalToken(delimiterKind)); - - return nodes; - } - - advanceLexer() { - const { maxTokens } = this._options; - - const token = this._lexer.advance(); - - if (maxTokens !== undefined && token.kind !== TokenKind.EOF) { - ++this._tokenCounter; - - if (this._tokenCounter > maxTokens) { - throw syntaxError( - this._lexer.source, - token.start, - `Document contains more that ${maxTokens} tokens. Parsing aborted.`, - ); - } - } - } -} -/** - * A helper function to describe a token as a string for debugging. - */ - -function getTokenDesc(token) { - const value = token.value; - return getTokenKindDesc(token.kind) + (value != null ? ` "${value}"` : ''); -} -/** - * A helper function to describe a token kind as a string for debugging. - */ - -function getTokenKindDesc(kind) { - return isPunctuatorTokenKind(kind) ? `"${kind}"` : kind; -} - -var parser = /*#__PURE__*/Object.freeze({ - __proto__: null, - parse: parse, - parseValue: parseValue, - parseConstValue: parseConstValue, - parseType: parseType, - Parser: Parser -}); - -var require$$1 = /*@__PURE__*/getAugmentedNamespace(parser); - -/** - * Prints a string as a GraphQL StringValue literal. Replaces control characters - * and excluded characters (" U+0022 and \\ U+005C) with escape sequences. - */ -function printString(str) { - return `"${str.replace(escapedRegExp, escapedReplacer)}"`; -} // eslint-disable-next-line no-control-regex - -const escapedRegExp = /[\x00-\x1f\x22\x5c\x7f-\x9f]/g; - -function escapedReplacer(str) { - return escapeSequences[str.charCodeAt(0)]; -} // prettier-ignore - -const escapeSequences = [ - '\\u0000', - '\\u0001', - '\\u0002', - '\\u0003', - '\\u0004', - '\\u0005', - '\\u0006', - '\\u0007', - '\\b', - '\\t', - '\\n', - '\\u000B', - '\\f', - '\\r', - '\\u000E', - '\\u000F', - '\\u0010', - '\\u0011', - '\\u0012', - '\\u0013', - '\\u0014', - '\\u0015', - '\\u0016', - '\\u0017', - '\\u0018', - '\\u0019', - '\\u001A', - '\\u001B', - '\\u001C', - '\\u001D', - '\\u001E', - '\\u001F', - '', - '', - '\\"', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', // 2F - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', // 3F - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', // 4F - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '\\\\', - '', - '', - '', // 5F - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', // 6F - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '\\u007F', - '\\u0080', - '\\u0081', - '\\u0082', - '\\u0083', - '\\u0084', - '\\u0085', - '\\u0086', - '\\u0087', - '\\u0088', - '\\u0089', - '\\u008A', - '\\u008B', - '\\u008C', - '\\u008D', - '\\u008E', - '\\u008F', - '\\u0090', - '\\u0091', - '\\u0092', - '\\u0093', - '\\u0094', - '\\u0095', - '\\u0096', - '\\u0097', - '\\u0098', - '\\u0099', - '\\u009A', - '\\u009B', - '\\u009C', - '\\u009D', - '\\u009E', - '\\u009F', -]; - -/** - * A visitor is provided to visit, it contains the collection of - * relevant functions to be called during the visitor's traversal. - */ - -const BREAK = Object.freeze({}); -/** - * visit() will walk through an AST using a depth-first traversal, calling - * the visitor's enter function at each node in the traversal, and calling the - * leave function after visiting that node and all of its child nodes. - * - * By returning different values from the enter and leave functions, the - * behavior of the visitor can be altered, including skipping over a sub-tree of - * the AST (by returning false), editing the AST by returning a value or null - * to remove the value, or to stop the whole traversal by returning BREAK. - * - * When using visit() to edit an AST, the original AST will not be modified, and - * a new version of the AST with the changes applied will be returned from the - * visit function. - * - * ```ts - * const editedAST = visit(ast, { - * enter(node, key, parent, path, ancestors) { - * // @return - * // undefined: no action - * // false: skip visiting this node - * // visitor.BREAK: stop visiting altogether - * // null: delete this node - * // any value: replace this node with the returned value - * }, - * leave(node, key, parent, path, ancestors) { - * // @return - * // undefined: no action - * // false: no action - * // visitor.BREAK: stop visiting altogether - * // null: delete this node - * // any value: replace this node with the returned value - * } - * }); - * ``` - * - * Alternatively to providing enter() and leave() functions, a visitor can - * instead provide functions named the same as the kinds of AST nodes, or - * enter/leave visitors at a named key, leading to three permutations of the - * visitor API: - * - * 1) Named visitors triggered when entering a node of a specific kind. - * - * ```ts - * visit(ast, { - * Kind(node) { - * // enter the "Kind" node - * } - * }) - * ``` - * - * 2) Named visitors that trigger upon entering and leaving a node of a specific kind. - * - * ```ts - * visit(ast, { - * Kind: { - * enter(node) { - * // enter the "Kind" node - * } - * leave(node) { - * // leave the "Kind" node - * } - * } - * }) - * ``` - * - * 3) Generic visitors that trigger upon entering and leaving any node. - * - * ```ts - * visit(ast, { - * enter(node) { - * // enter any node - * }, - * leave(node) { - * // leave any node - * } - * }) - * ``` - */ - -function visit(root, visitor, visitorKeys = QueryDocumentKeys) { - const enterLeaveMap = new Map(); - - for (const kind of Object.values(Kind)) { - enterLeaveMap.set(kind, getEnterLeaveForKind(visitor, kind)); - } - /* eslint-disable no-undef-init */ - - let stack = undefined; - let inArray = Array.isArray(root); - let keys = [root]; - let index = -1; - let edits = []; - let node = root; - let key = undefined; - let parent = undefined; - const path = []; - const ancestors = []; - /* eslint-enable no-undef-init */ - - do { - index++; - const isLeaving = index === keys.length; - const isEdited = isLeaving && edits.length !== 0; - - if (isLeaving) { - key = ancestors.length === 0 ? undefined : path[path.length - 1]; - node = parent; - parent = ancestors.pop(); - - if (isEdited) { - if (inArray) { - node = node.slice(); - let editOffset = 0; - - for (const [editKey, editValue] of edits) { - const arrayKey = editKey - editOffset; - - if (editValue === null) { - node.splice(arrayKey, 1); - editOffset++; - } else { - node[arrayKey] = editValue; - } - } - } else { - node = Object.defineProperties( - {}, - Object.getOwnPropertyDescriptors(node), - ); - - for (const [editKey, editValue] of edits) { - node[editKey] = editValue; - } - } - } - - index = stack.index; - keys = stack.keys; - edits = stack.edits; - inArray = stack.inArray; - stack = stack.prev; - } else if (parent) { - key = inArray ? index : keys[index]; - node = parent[key]; - - if (node === null || node === undefined) { - continue; - } - - path.push(key); - } - - let result; - - if (!Array.isArray(node)) { - var _enterLeaveMap$get, _enterLeaveMap$get2; - - isNode(node) || devAssert(false, `Invalid AST Node: ${inspect$1(node)}.`); - const visitFn = isLeaving - ? (_enterLeaveMap$get = enterLeaveMap.get(node.kind)) === null || - _enterLeaveMap$get === void 0 - ? void 0 - : _enterLeaveMap$get.leave - : (_enterLeaveMap$get2 = enterLeaveMap.get(node.kind)) === null || - _enterLeaveMap$get2 === void 0 - ? void 0 - : _enterLeaveMap$get2.enter; - result = - visitFn === null || visitFn === void 0 - ? void 0 - : visitFn.call(visitor, node, key, parent, path, ancestors); - - if (result === BREAK) { - break; - } - - if (result === false) { - if (!isLeaving) { - path.pop(); - continue; - } - } else if (result !== undefined) { - edits.push([key, result]); - - if (!isLeaving) { - if (isNode(result)) { - node = result; - } else { - path.pop(); - continue; - } - } - } - } - - if (result === undefined && isEdited) { - edits.push([key, node]); - } - - if (isLeaving) { - path.pop(); - } else { - var _node$kind; - - stack = { - inArray, - index, - keys, - edits, - prev: stack, - }; - inArray = Array.isArray(node); - keys = inArray - ? node - : (_node$kind = visitorKeys[node.kind]) !== null && - _node$kind !== void 0 - ? _node$kind - : []; - index = -1; - edits = []; - - if (parent) { - ancestors.push(parent); - } - - parent = node; - } - } while (stack !== undefined); - - if (edits.length !== 0) { - // New root - return edits[edits.length - 1][1]; - } - - return root; -} -/** - * Creates a new visitor instance which delegates to many visitors to run in - * parallel. Each visitor will be visited for each node before moving on. - * - * If a prior visitor edits a node, no following visitors will see that node. - */ - -function visitInParallel(visitors) { - const skipping = new Array(visitors.length).fill(null); - const mergedVisitor = Object.create(null); - - for (const kind of Object.values(Kind)) { - let hasVisitor = false; - const enterList = new Array(visitors.length).fill(undefined); - const leaveList = new Array(visitors.length).fill(undefined); - - for (let i = 0; i < visitors.length; ++i) { - const { enter, leave } = getEnterLeaveForKind(visitors[i], kind); - hasVisitor || (hasVisitor = enter != null || leave != null); - enterList[i] = enter; - leaveList[i] = leave; - } - - if (!hasVisitor) { - continue; - } - - const mergedEnterLeave = { - enter(...args) { - const node = args[0]; - - for (let i = 0; i < visitors.length; i++) { - if (skipping[i] === null) { - var _enterList$i; - - const result = - (_enterList$i = enterList[i]) === null || _enterList$i === void 0 - ? void 0 - : _enterList$i.apply(visitors[i], args); - - if (result === false) { - skipping[i] = node; - } else if (result === BREAK) { - skipping[i] = BREAK; - } else if (result !== undefined) { - return result; - } - } - } - }, - - leave(...args) { - const node = args[0]; - - for (let i = 0; i < visitors.length; i++) { - if (skipping[i] === null) { - var _leaveList$i; - - const result = - (_leaveList$i = leaveList[i]) === null || _leaveList$i === void 0 - ? void 0 - : _leaveList$i.apply(visitors[i], args); - - if (result === BREAK) { - skipping[i] = BREAK; - } else if (result !== undefined && result !== false) { - return result; - } - } else if (skipping[i] === node) { - skipping[i] = null; - } - } - }, - }; - mergedVisitor[kind] = mergedEnterLeave; - } - - return mergedVisitor; -} -/** - * Given a visitor instance and a node kind, return EnterLeaveVisitor for that kind. - */ - -function getEnterLeaveForKind(visitor, kind) { - const kindVisitor = visitor[kind]; - - if (typeof kindVisitor === 'object') { - // { Kind: { enter() {}, leave() {} } } - return kindVisitor; - } else if (typeof kindVisitor === 'function') { - // { Kind() {} } - return { - enter: kindVisitor, - leave: undefined, - }; - } // { enter() {}, leave() {} } - - return { - enter: visitor.enter, - leave: visitor.leave, - }; -} - -/** - * Converts an AST into a string, using one set of reasonable - * formatting rules. - */ - -function print(ast) { - return visit(ast, printDocASTReducer$1); -} -const MAX_LINE_LENGTH$1 = 80; -const printDocASTReducer$1 = { - Name: { - leave: (node) => node.value, - }, - Variable: { - leave: (node) => '$' + node.name, - }, - // Document - Document: { - leave: (node) => join$1(node.definitions, '\n\n'), - }, - OperationDefinition: { - leave(node) { - const varDefs = wrap$1('(', join$1(node.variableDefinitions, ', '), ')'); - const prefix = join$1( - [ - node.operation, - join$1([node.name, varDefs]), - join$1(node.directives, ' '), - ], - ' ', - ); // Anonymous queries with no directives or variable definitions can use - // the query short form. - - return (prefix === 'query' ? '' : prefix + ' ') + node.selectionSet; - }, - }, - VariableDefinition: { - leave: ({ variable, type, defaultValue, directives }) => - variable + - ': ' + - type + - wrap$1(' = ', defaultValue) + - wrap$1(' ', join$1(directives, ' ')), - }, - SelectionSet: { - leave: ({ selections }) => block$1(selections), - }, - Field: { - leave({ alias, name, arguments: args, directives, selectionSet }) { - const prefix = wrap$1('', alias, ': ') + name; - let argsLine = prefix + wrap$1('(', join$1(args, ', '), ')'); - - if (argsLine.length > MAX_LINE_LENGTH$1) { - argsLine = prefix + wrap$1('(\n', indent$1(join$1(args, '\n')), '\n)'); - } - - return join$1([argsLine, join$1(directives, ' '), selectionSet], ' '); - }, - }, - Argument: { - leave: ({ name, value }) => name + ': ' + value, - }, - // Fragments - FragmentSpread: { - leave: ({ name, directives }) => - '...' + name + wrap$1(' ', join$1(directives, ' ')), - }, - InlineFragment: { - leave: ({ typeCondition, directives, selectionSet }) => - join$1( - [ - '...', - wrap$1('on ', typeCondition), - join$1(directives, ' '), - selectionSet, - ], - ' ', - ), - }, - FragmentDefinition: { - leave: ( - { name, typeCondition, variableDefinitions, directives, selectionSet }, // Note: fragment variable definitions are experimental and may be changed - ) => - // or removed in the future. - `fragment ${name}${wrap$1('(', join$1(variableDefinitions, ', '), ')')} ` + - `on ${typeCondition} ${wrap$1('', join$1(directives, ' '), ' ')}` + - selectionSet, - }, - // Value - IntValue: { - leave: ({ value }) => value, - }, - FloatValue: { - leave: ({ value }) => value, - }, - StringValue: { - leave: ({ value, block: isBlockString }) => - isBlockString ? printBlockString$1(value) : printString(value), - }, - BooleanValue: { - leave: ({ value }) => (value ? 'true' : 'false'), - }, - NullValue: { - leave: () => 'null', - }, - EnumValue: { - leave: ({ value }) => value, - }, - ListValue: { - leave: ({ values }) => '[' + join$1(values, ', ') + ']', - }, - ObjectValue: { - leave: ({ fields }) => '{' + join$1(fields, ', ') + '}', - }, - ObjectField: { - leave: ({ name, value }) => name + ': ' + value, - }, - // Directive - Directive: { - leave: ({ name, arguments: args }) => - '@' + name + wrap$1('(', join$1(args, ', '), ')'), - }, - // Type - NamedType: { - leave: ({ name }) => name, - }, - ListType: { - leave: ({ type }) => '[' + type + ']', - }, - NonNullType: { - leave: ({ type }) => type + '!', - }, - // Type System Definitions - SchemaDefinition: { - leave: ({ description, directives, operationTypes }) => - wrap$1('', description, '\n') + - join$1(['schema', join$1(directives, ' '), block$1(operationTypes)], ' '), - }, - OperationTypeDefinition: { - leave: ({ operation, type }) => operation + ': ' + type, - }, - ScalarTypeDefinition: { - leave: ({ description, name, directives }) => - wrap$1('', description, '\n') + - join$1(['scalar', name, join$1(directives, ' ')], ' '), - }, - ObjectTypeDefinition: { - leave: ({ description, name, interfaces, directives, fields }) => - wrap$1('', description, '\n') + - join$1( - [ - 'type', - name, - wrap$1('implements ', join$1(interfaces, ' & ')), - join$1(directives, ' '), - block$1(fields), - ], - ' ', - ), - }, - FieldDefinition: { - leave: ({ description, name, arguments: args, type, directives }) => - wrap$1('', description, '\n') + - name + - (hasMultilineItems$1(args) - ? wrap$1('(\n', indent$1(join$1(args, '\n')), '\n)') - : wrap$1('(', join$1(args, ', '), ')')) + - ': ' + - type + - wrap$1(' ', join$1(directives, ' ')), - }, - InputValueDefinition: { - leave: ({ description, name, type, defaultValue, directives }) => - wrap$1('', description, '\n') + - join$1( - [name + ': ' + type, wrap$1('= ', defaultValue), join$1(directives, ' ')], - ' ', - ), - }, - InterfaceTypeDefinition: { - leave: ({ description, name, interfaces, directives, fields }) => - wrap$1('', description, '\n') + - join$1( - [ - 'interface', - name, - wrap$1('implements ', join$1(interfaces, ' & ')), - join$1(directives, ' '), - block$1(fields), - ], - ' ', - ), - }, - UnionTypeDefinition: { - leave: ({ description, name, directives, types }) => - wrap$1('', description, '\n') + - join$1( - ['union', name, join$1(directives, ' '), wrap$1('= ', join$1(types, ' | '))], - ' ', - ), - }, - EnumTypeDefinition: { - leave: ({ description, name, directives, values }) => - wrap$1('', description, '\n') + - join$1(['enum', name, join$1(directives, ' '), block$1(values)], ' '), - }, - EnumValueDefinition: { - leave: ({ description, name, directives }) => - wrap$1('', description, '\n') + join$1([name, join$1(directives, ' ')], ' '), - }, - InputObjectTypeDefinition: { - leave: ({ description, name, directives, fields }) => - wrap$1('', description, '\n') + - join$1(['input', name, join$1(directives, ' '), block$1(fields)], ' '), - }, - DirectiveDefinition: { - leave: ({ description, name, arguments: args, repeatable, locations }) => - wrap$1('', description, '\n') + - 'directive @' + - name + - (hasMultilineItems$1(args) - ? wrap$1('(\n', indent$1(join$1(args, '\n')), '\n)') - : wrap$1('(', join$1(args, ', '), ')')) + - (repeatable ? ' repeatable' : '') + - ' on ' + - join$1(locations, ' | '), - }, - SchemaExtension: { - leave: ({ directives, operationTypes }) => - join$1( - ['extend schema', join$1(directives, ' '), block$1(operationTypes)], - ' ', - ), - }, - ScalarTypeExtension: { - leave: ({ name, directives }) => - join$1(['extend scalar', name, join$1(directives, ' ')], ' '), - }, - ObjectTypeExtension: { - leave: ({ name, interfaces, directives, fields }) => - join$1( - [ - 'extend type', - name, - wrap$1('implements ', join$1(interfaces, ' & ')), - join$1(directives, ' '), - block$1(fields), - ], - ' ', - ), - }, - InterfaceTypeExtension: { - leave: ({ name, interfaces, directives, fields }) => - join$1( - [ - 'extend interface', - name, - wrap$1('implements ', join$1(interfaces, ' & ')), - join$1(directives, ' '), - block$1(fields), - ], - ' ', - ), - }, - UnionTypeExtension: { - leave: ({ name, directives, types }) => - join$1( - [ - 'extend union', - name, - join$1(directives, ' '), - wrap$1('= ', join$1(types, ' | ')), - ], - ' ', - ), - }, - EnumTypeExtension: { - leave: ({ name, directives, values }) => - join$1(['extend enum', name, join$1(directives, ' '), block$1(values)], ' '), - }, - InputObjectTypeExtension: { - leave: ({ name, directives, fields }) => - join$1(['extend input', name, join$1(directives, ' '), block$1(fields)], ' '), - }, -}; -/** - * Given maybeArray, print an empty string if it is null or empty, otherwise - * print all items together separated by separator if provided - */ - -function join$1(maybeArray, separator = '') { - var _maybeArray$filter$jo; - - return (_maybeArray$filter$jo = - maybeArray === null || maybeArray === void 0 - ? void 0 - : maybeArray.filter((x) => x).join(separator)) !== null && - _maybeArray$filter$jo !== void 0 - ? _maybeArray$filter$jo - : ''; -} -/** - * Given array, print each item on its own line, wrapped in an indented `{ }` block. - */ - -function block$1(array) { - return wrap$1('{\n', indent$1(join$1(array, '\n')), '\n}'); -} -/** - * If maybeString is not null or empty, then wrap with start and end, otherwise print an empty string. - */ - -function wrap$1(start, maybeString, end = '') { - return maybeString != null && maybeString !== '' - ? start + maybeString + end - : ''; -} - -function indent$1(str) { - return wrap$1(' ', str.replace(/\n/g, '\n ')); -} - -function hasMultilineItems$1(maybeArray) { - var _maybeArray$some; - - // FIXME: https://github.com/graphql/graphql-js/issues/2203 - - /* c8 ignore next */ - return (_maybeArray$some = - maybeArray === null || maybeArray === void 0 - ? void 0 - : maybeArray.some((str) => str.includes('\n'))) !== null && - _maybeArray$some !== void 0 - ? _maybeArray$some - : false; -} - -var printer = /*#__PURE__*/Object.freeze({ - __proto__: null, - print: print -}); - -var require$$2$1 = /*@__PURE__*/getAugmentedNamespace(printer); - -var createRequestBody$1 = {}; - -var _public = {}; - -var ReactNativeFile$1 = function ReactNativeFile(_ref) { - var uri = _ref.uri, - name = _ref.name, - type = _ref.type; - this.uri = uri; - this.name = name; - this.type = type; -}; - -var ReactNativeFile = ReactNativeFile$1; - -var isExtractableFile = function isExtractableFile(value) { - return ( - (typeof File !== 'undefined' && value instanceof File) || - (typeof Blob !== 'undefined' && value instanceof Blob) || - value instanceof ReactNativeFile - ); -}; - -var defaultIsExtractableFile = isExtractableFile; - -var extractFiles = function extractFiles(value, path, isExtractableFile) { - if (path === void 0) { - path = ''; - } - - if (isExtractableFile === void 0) { - isExtractableFile = defaultIsExtractableFile; - } - - var clone; - var files = new Map(); - - function addFile(paths, file) { - var storedPaths = files.get(file); - if (storedPaths) storedPaths.push.apply(storedPaths, paths); - else files.set(file, paths); - } - - if (isExtractableFile(value)) { - clone = null; - addFile([path], value); - } else { - var prefix = path ? path + '.' : ''; - if (typeof FileList !== 'undefined' && value instanceof FileList) - clone = Array.prototype.map.call(value, function (file, i) { - addFile(['' + prefix + i], file); - return null; - }); - else if (Array.isArray(value)) - clone = value.map(function (child, i) { - var result = extractFiles(child, '' + prefix + i, isExtractableFile); - result.files.forEach(addFile); - return result.clone; - }); - else if (value && value.constructor === Object) { - clone = {}; - - for (var i in value) { - var result = extractFiles(value[i], '' + prefix + i, isExtractableFile); - result.files.forEach(addFile); - clone[i] = result.clone; - } - } else clone = value; - } - - return { - clone: clone, - files: files, - }; -}; - -_public.ReactNativeFile = ReactNativeFile$1; -_public.extractFiles = extractFiles; -_public.isExtractableFile = isExtractableFile; - -var Stream$1 = Stream$2.Stream; -var util$4 = require$$0$2; - -var delayed_stream = DelayedStream$1; -function DelayedStream$1() { - this.source = null; - this.dataSize = 0; - this.maxDataSize = 1024 * 1024; - this.pauseStream = true; - - this._maxDataSizeExceeded = false; - this._released = false; - this._bufferedEvents = []; -} -util$4.inherits(DelayedStream$1, Stream$1); - -DelayedStream$1.create = function(source, options) { - var delayedStream = new this(); - - options = options || {}; - for (var option in options) { - delayedStream[option] = options[option]; - } - - delayedStream.source = source; - - var realEmit = source.emit; - source.emit = function() { - delayedStream._handleEmit(arguments); - return realEmit.apply(source, arguments); - }; - - source.on('error', function() {}); - if (delayedStream.pauseStream) { - source.pause(); - } - - return delayedStream; -}; - -Object.defineProperty(DelayedStream$1.prototype, 'readable', { - configurable: true, - enumerable: true, - get: function() { - return this.source.readable; - } -}); - -DelayedStream$1.prototype.setEncoding = function() { - return this.source.setEncoding.apply(this.source, arguments); -}; - -DelayedStream$1.prototype.resume = function() { - if (!this._released) { - this.release(); - } - - this.source.resume(); -}; - -DelayedStream$1.prototype.pause = function() { - this.source.pause(); -}; - -DelayedStream$1.prototype.release = function() { - this._released = true; - - this._bufferedEvents.forEach(function(args) { - this.emit.apply(this, args); - }.bind(this)); - this._bufferedEvents = []; -}; - -DelayedStream$1.prototype.pipe = function() { - var r = Stream$1.prototype.pipe.apply(this, arguments); - this.resume(); - return r; -}; - -DelayedStream$1.prototype._handleEmit = function(args) { - if (this._released) { - this.emit.apply(this, args); - return; - } - - if (args[0] === 'data') { - this.dataSize += args[1].length; - this._checkIfMaxDataSizeExceeded(); - } - - this._bufferedEvents.push(args); -}; - -DelayedStream$1.prototype._checkIfMaxDataSizeExceeded = function() { - if (this._maxDataSizeExceeded) { - return; - } - - if (this.dataSize <= this.maxDataSize) { - return; - } - - this._maxDataSizeExceeded = true; - var message = - 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.'; - this.emit('error', new Error(message)); -}; - -var util$3 = require$$0$2; -var Stream = Stream$2.Stream; -var DelayedStream = delayed_stream; - -var combined_stream = CombinedStream$1; -function CombinedStream$1() { - this.writable = false; - this.readable = true; - this.dataSize = 0; - this.maxDataSize = 2 * 1024 * 1024; - this.pauseStreams = true; - - this._released = false; - this._streams = []; - this._currentStream = null; - this._insideLoop = false; - this._pendingNext = false; -} -util$3.inherits(CombinedStream$1, Stream); - -CombinedStream$1.create = function(options) { - var combinedStream = new this(); - - options = options || {}; - for (var option in options) { - combinedStream[option] = options[option]; - } - - return combinedStream; -}; - -CombinedStream$1.isStreamLike = function(stream) { - return (typeof stream !== 'function') - && (typeof stream !== 'string') - && (typeof stream !== 'boolean') - && (typeof stream !== 'number') - && (!Buffer.isBuffer(stream)); -}; - -CombinedStream$1.prototype.append = function(stream) { - var isStreamLike = CombinedStream$1.isStreamLike(stream); - - if (isStreamLike) { - if (!(stream instanceof DelayedStream)) { - var newStream = DelayedStream.create(stream, { - maxDataSize: Infinity, - pauseStream: this.pauseStreams, - }); - stream.on('data', this._checkDataSize.bind(this)); - stream = newStream; - } - - this._handleErrors(stream); - - if (this.pauseStreams) { - stream.pause(); - } - } - - this._streams.push(stream); - return this; -}; - -CombinedStream$1.prototype.pipe = function(dest, options) { - Stream.prototype.pipe.call(this, dest, options); - this.resume(); - return dest; -}; - -CombinedStream$1.prototype._getNext = function() { - this._currentStream = null; - - if (this._insideLoop) { - this._pendingNext = true; - return; // defer call - } - - this._insideLoop = true; - try { - do { - this._pendingNext = false; - this._realGetNext(); - } while (this._pendingNext); - } finally { - this._insideLoop = false; - } -}; - -CombinedStream$1.prototype._realGetNext = function() { - var stream = this._streams.shift(); - - - if (typeof stream == 'undefined') { - this.end(); - return; - } - - if (typeof stream !== 'function') { - this._pipeNext(stream); - return; - } - - var getStream = stream; - getStream(function(stream) { - var isStreamLike = CombinedStream$1.isStreamLike(stream); - if (isStreamLike) { - stream.on('data', this._checkDataSize.bind(this)); - this._handleErrors(stream); - } - - this._pipeNext(stream); - }.bind(this)); -}; - -CombinedStream$1.prototype._pipeNext = function(stream) { - this._currentStream = stream; - - var isStreamLike = CombinedStream$1.isStreamLike(stream); - if (isStreamLike) { - stream.on('end', this._getNext.bind(this)); - stream.pipe(this, {end: false}); - return; - } - - var value = stream; - this.write(value); - this._getNext(); -}; - -CombinedStream$1.prototype._handleErrors = function(stream) { - var self = this; - stream.on('error', function(err) { - self._emitError(err); - }); -}; - -CombinedStream$1.prototype.write = function(data) { - this.emit('data', data); -}; - -CombinedStream$1.prototype.pause = function() { - if (!this.pauseStreams) { - return; - } - - if(this.pauseStreams && this._currentStream && typeof(this._currentStream.pause) == 'function') this._currentStream.pause(); - this.emit('pause'); -}; - -CombinedStream$1.prototype.resume = function() { - if (!this._released) { - this._released = true; - this.writable = true; - this._getNext(); - } - - if(this.pauseStreams && this._currentStream && typeof(this._currentStream.resume) == 'function') this._currentStream.resume(); - this.emit('resume'); -}; - -CombinedStream$1.prototype.end = function() { - this._reset(); - this.emit('end'); -}; - -CombinedStream$1.prototype.destroy = function() { - this._reset(); - this.emit('close'); -}; - -CombinedStream$1.prototype._reset = function() { - this.writable = false; - this._streams = []; - this._currentStream = null; -}; - -CombinedStream$1.prototype._checkDataSize = function() { - this._updateDataSize(); - if (this.dataSize <= this.maxDataSize) { - return; - } - - var message = - 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.'; - this._emitError(new Error(message)); -}; - -CombinedStream$1.prototype._updateDataSize = function() { - this.dataSize = 0; - - var self = this; - this._streams.forEach(function(stream) { - if (!stream.dataSize) { - return; - } - - self.dataSize += stream.dataSize; - }); - - if (this._currentStream && this._currentStream.dataSize) { - this.dataSize += this._currentStream.dataSize; - } -}; - -CombinedStream$1.prototype._emitError = function(err) { - this._reset(); - this.emit('error', err); -}; - -var mimeTypes = {}; - -var mimeDb = {exports: {}}; - -var require$$0 = { - "application/1d-interleaved-parityfec": { - source: "iana" -}, - "application/3gpdash-qoe-report+xml": { - source: "iana", - charset: "UTF-8", - compressible: true -}, - "application/3gpp-ims+xml": { - source: "iana", - compressible: true -}, - "application/3gpphal+json": { - source: "iana", - compressible: true -}, - "application/3gpphalforms+json": { - source: "iana", - compressible: true -}, - "application/a2l": { - source: "iana" -}, - "application/ace+cbor": { - source: "iana" -}, - "application/activemessage": { - source: "iana" -}, - "application/activity+json": { - source: "iana", - compressible: true -}, - "application/alto-costmap+json": { - source: "iana", - compressible: true -}, - "application/alto-costmapfilter+json": { - source: "iana", - compressible: true -}, - "application/alto-directory+json": { - source: "iana", - compressible: true -}, - "application/alto-endpointcost+json": { - source: "iana", - compressible: true -}, - "application/alto-endpointcostparams+json": { - source: "iana", - compressible: true -}, - "application/alto-endpointprop+json": { - source: "iana", - compressible: true -}, - "application/alto-endpointpropparams+json": { - source: "iana", - compressible: true -}, - "application/alto-error+json": { - source: "iana", - compressible: true -}, - "application/alto-networkmap+json": { - source: "iana", - compressible: true -}, - "application/alto-networkmapfilter+json": { - source: "iana", - compressible: true -}, - "application/alto-updatestreamcontrol+json": { - source: "iana", - compressible: true -}, - "application/alto-updatestreamparams+json": { - source: "iana", - compressible: true -}, - "application/aml": { - source: "iana" -}, - "application/andrew-inset": { - source: "iana", - extensions: [ - "ez" - ] -}, - "application/applefile": { - source: "iana" -}, - "application/applixware": { - source: "apache", - extensions: [ - "aw" - ] -}, - "application/at+jwt": { - source: "iana" -}, - "application/atf": { - source: "iana" -}, - "application/atfx": { - source: "iana" -}, - "application/atom+xml": { - source: "iana", - compressible: true, - extensions: [ - "atom" - ] -}, - "application/atomcat+xml": { - source: "iana", - compressible: true, - extensions: [ - "atomcat" - ] -}, - "application/atomdeleted+xml": { - source: "iana", - compressible: true, - extensions: [ - "atomdeleted" - ] -}, - "application/atomicmail": { - source: "iana" -}, - "application/atomsvc+xml": { - source: "iana", - compressible: true, - extensions: [ - "atomsvc" - ] -}, - "application/atsc-dwd+xml": { - source: "iana", - compressible: true, - extensions: [ - "dwd" - ] -}, - "application/atsc-dynamic-event-message": { - source: "iana" -}, - "application/atsc-held+xml": { - source: "iana", - compressible: true, - extensions: [ - "held" - ] -}, - "application/atsc-rdt+json": { - source: "iana", - compressible: true -}, - "application/atsc-rsat+xml": { - source: "iana", - compressible: true, - extensions: [ - "rsat" - ] -}, - "application/atxml": { - source: "iana" -}, - "application/auth-policy+xml": { - source: "iana", - compressible: true -}, - "application/bacnet-xdd+zip": { - source: "iana", - compressible: false -}, - "application/batch-smtp": { - source: "iana" -}, - "application/bdoc": { - compressible: false, - extensions: [ - "bdoc" - ] -}, - "application/beep+xml": { - source: "iana", - charset: "UTF-8", - compressible: true -}, - "application/calendar+json": { - source: "iana", - compressible: true -}, - "application/calendar+xml": { - source: "iana", - compressible: true, - extensions: [ - "xcs" - ] -}, - "application/call-completion": { - source: "iana" -}, - "application/cals-1840": { - source: "iana" -}, - "application/captive+json": { - source: "iana", - compressible: true -}, - "application/cbor": { - source: "iana" -}, - "application/cbor-seq": { - source: "iana" -}, - "application/cccex": { - source: "iana" -}, - "application/ccmp+xml": { - source: "iana", - compressible: true -}, - "application/ccxml+xml": { - source: "iana", - compressible: true, - extensions: [ - "ccxml" - ] -}, - "application/cdfx+xml": { - source: "iana", - compressible: true, - extensions: [ - "cdfx" - ] -}, - "application/cdmi-capability": { - source: "iana", - extensions: [ - "cdmia" - ] -}, - "application/cdmi-container": { - source: "iana", - extensions: [ - "cdmic" - ] -}, - "application/cdmi-domain": { - source: "iana", - extensions: [ - "cdmid" - ] -}, - "application/cdmi-object": { - source: "iana", - extensions: [ - "cdmio" - ] -}, - "application/cdmi-queue": { - source: "iana", - extensions: [ - "cdmiq" - ] -}, - "application/cdni": { - source: "iana" -}, - "application/cea": { - source: "iana" -}, - "application/cea-2018+xml": { - source: "iana", - compressible: true -}, - "application/cellml+xml": { - source: "iana", - compressible: true -}, - "application/cfw": { - source: "iana" -}, - "application/city+json": { - source: "iana", - compressible: true -}, - "application/clr": { - source: "iana" -}, - "application/clue+xml": { - source: "iana", - compressible: true -}, - "application/clue_info+xml": { - source: "iana", - compressible: true -}, - "application/cms": { - source: "iana" -}, - "application/cnrp+xml": { - source: "iana", - compressible: true -}, - "application/coap-group+json": { - source: "iana", - compressible: true -}, - "application/coap-payload": { - source: "iana" -}, - "application/commonground": { - source: "iana" -}, - "application/conference-info+xml": { - source: "iana", - compressible: true -}, - "application/cose": { - source: "iana" -}, - "application/cose-key": { - source: "iana" -}, - "application/cose-key-set": { - source: "iana" -}, - "application/cpl+xml": { - source: "iana", - compressible: true, - extensions: [ - "cpl" - ] -}, - "application/csrattrs": { - source: "iana" -}, - "application/csta+xml": { - source: "iana", - compressible: true -}, - "application/cstadata+xml": { - source: "iana", - compressible: true -}, - "application/csvm+json": { - source: "iana", - compressible: true -}, - "application/cu-seeme": { - source: "apache", - extensions: [ - "cu" - ] -}, - "application/cwt": { - source: "iana" -}, - "application/cybercash": { - source: "iana" -}, - "application/dart": { - compressible: true -}, - "application/dash+xml": { - source: "iana", - compressible: true, - extensions: [ - "mpd" - ] -}, - "application/dash-patch+xml": { - source: "iana", - compressible: true, - extensions: [ - "mpp" - ] -}, - "application/dashdelta": { - source: "iana" -}, - "application/davmount+xml": { - source: "iana", - compressible: true, - extensions: [ - "davmount" - ] -}, - "application/dca-rft": { - source: "iana" -}, - "application/dcd": { - source: "iana" -}, - "application/dec-dx": { - source: "iana" -}, - "application/dialog-info+xml": { - source: "iana", - compressible: true -}, - "application/dicom": { - source: "iana" -}, - "application/dicom+json": { - source: "iana", - compressible: true -}, - "application/dicom+xml": { - source: "iana", - compressible: true -}, - "application/dii": { - source: "iana" -}, - "application/dit": { - source: "iana" -}, - "application/dns": { - source: "iana" -}, - "application/dns+json": { - source: "iana", - compressible: true -}, - "application/dns-message": { - source: "iana" -}, - "application/docbook+xml": { - source: "apache", - compressible: true, - extensions: [ - "dbk" - ] -}, - "application/dots+cbor": { - source: "iana" -}, - "application/dskpp+xml": { - source: "iana", - compressible: true -}, - "application/dssc+der": { - source: "iana", - extensions: [ - "dssc" - ] -}, - "application/dssc+xml": { - source: "iana", - compressible: true, - extensions: [ - "xdssc" - ] -}, - "application/dvcs": { - source: "iana" -}, - "application/ecmascript": { - source: "iana", - compressible: true, - extensions: [ - "es", - "ecma" - ] -}, - "application/edi-consent": { - source: "iana" -}, - "application/edi-x12": { - source: "iana", - compressible: false -}, - "application/edifact": { - source: "iana", - compressible: false -}, - "application/efi": { - source: "iana" -}, - "application/elm+json": { - source: "iana", - charset: "UTF-8", - compressible: true -}, - "application/elm+xml": { - source: "iana", - compressible: true -}, - "application/emergencycalldata.cap+xml": { - source: "iana", - charset: "UTF-8", - compressible: true -}, - "application/emergencycalldata.comment+xml": { - source: "iana", - compressible: true -}, - "application/emergencycalldata.control+xml": { - source: "iana", - compressible: true -}, - "application/emergencycalldata.deviceinfo+xml": { - source: "iana", - compressible: true -}, - "application/emergencycalldata.ecall.msd": { - source: "iana" -}, - "application/emergencycalldata.providerinfo+xml": { - source: "iana", - compressible: true -}, - "application/emergencycalldata.serviceinfo+xml": { - source: "iana", - compressible: true -}, - "application/emergencycalldata.subscriberinfo+xml": { - source: "iana", - compressible: true -}, - "application/emergencycalldata.veds+xml": { - source: "iana", - compressible: true -}, - "application/emma+xml": { - source: "iana", - compressible: true, - extensions: [ - "emma" - ] -}, - "application/emotionml+xml": { - source: "iana", - compressible: true, - extensions: [ - "emotionml" - ] -}, - "application/encaprtp": { - source: "iana" -}, - "application/epp+xml": { - source: "iana", - compressible: true -}, - "application/epub+zip": { - source: "iana", - compressible: false, - extensions: [ - "epub" - ] -}, - "application/eshop": { - source: "iana" -}, - "application/exi": { - source: "iana", - extensions: [ - "exi" - ] -}, - "application/expect-ct-report+json": { - source: "iana", - compressible: true -}, - "application/express": { - source: "iana", - extensions: [ - "exp" - ] -}, - "application/fastinfoset": { - source: "iana" -}, - "application/fastsoap": { - source: "iana" -}, - "application/fdt+xml": { - source: "iana", - compressible: true, - extensions: [ - "fdt" - ] -}, - "application/fhir+json": { - source: "iana", - charset: "UTF-8", - compressible: true -}, - "application/fhir+xml": { - source: "iana", - charset: "UTF-8", - compressible: true -}, - "application/fido.trusted-apps+json": { - compressible: true -}, - "application/fits": { - source: "iana" -}, - "application/flexfec": { - source: "iana" -}, - "application/font-sfnt": { - source: "iana" -}, - "application/font-tdpfr": { - source: "iana", - extensions: [ - "pfr" - ] -}, - "application/font-woff": { - source: "iana", - compressible: false -}, - "application/framework-attributes+xml": { - source: "iana", - compressible: true -}, - "application/geo+json": { - source: "iana", - compressible: true, - extensions: [ - "geojson" - ] -}, - "application/geo+json-seq": { - source: "iana" -}, - "application/geopackage+sqlite3": { - source: "iana" -}, - "application/geoxacml+xml": { - source: "iana", - compressible: true -}, - "application/gltf-buffer": { - source: "iana" -}, - "application/gml+xml": { - source: "iana", - compressible: true, - extensions: [ - "gml" - ] -}, - "application/gpx+xml": { - source: "apache", - compressible: true, - extensions: [ - "gpx" - ] -}, - "application/gxf": { - source: "apache", - extensions: [ - "gxf" - ] -}, - "application/gzip": { - source: "iana", - compressible: false, - extensions: [ - "gz" - ] -}, - "application/h224": { - source: "iana" -}, - "application/held+xml": { - source: "iana", - compressible: true -}, - "application/hjson": { - extensions: [ - "hjson" - ] -}, - "application/http": { - source: "iana" -}, - "application/hyperstudio": { - source: "iana", - extensions: [ - "stk" - ] -}, - "application/ibe-key-request+xml": { - source: "iana", - compressible: true -}, - "application/ibe-pkg-reply+xml": { - source: "iana", - compressible: true -}, - "application/ibe-pp-data": { - source: "iana" -}, - "application/iges": { - source: "iana" -}, - "application/im-iscomposing+xml": { - source: "iana", - charset: "UTF-8", - compressible: true -}, - "application/index": { - source: "iana" -}, - "application/index.cmd": { - source: "iana" -}, - "application/index.obj": { - source: "iana" -}, - "application/index.response": { - source: "iana" -}, - "application/index.vnd": { - source: "iana" -}, - "application/inkml+xml": { - source: "iana", - compressible: true, - extensions: [ - "ink", - "inkml" - ] -}, - "application/iotp": { - source: "iana" -}, - "application/ipfix": { - source: "iana", - extensions: [ - "ipfix" - ] -}, - "application/ipp": { - source: "iana" -}, - "application/isup": { - source: "iana" -}, - "application/its+xml": { - source: "iana", - compressible: true, - extensions: [ - "its" - ] -}, - "application/java-archive": { - source: "apache", - compressible: false, - extensions: [ - "jar", - "war", - "ear" - ] -}, - "application/java-serialized-object": { - source: "apache", - compressible: false, - extensions: [ - "ser" - ] -}, - "application/java-vm": { - source: "apache", - compressible: false, - extensions: [ - "class" - ] -}, - "application/javascript": { - source: "iana", - charset: "UTF-8", - compressible: true, - extensions: [ - "js", - "mjs" - ] -}, - "application/jf2feed+json": { - source: "iana", - compressible: true -}, - "application/jose": { - source: "iana" -}, - "application/jose+json": { - source: "iana", - compressible: true -}, - "application/jrd+json": { - source: "iana", - compressible: true -}, - "application/jscalendar+json": { - source: "iana", - compressible: true -}, - "application/json": { - source: "iana", - charset: "UTF-8", - compressible: true, - extensions: [ - "json", - "map" - ] -}, - "application/json-patch+json": { - source: "iana", - compressible: true -}, - "application/json-seq": { - source: "iana" -}, - "application/json5": { - extensions: [ - "json5" - ] -}, - "application/jsonml+json": { - source: "apache", - compressible: true, - extensions: [ - "jsonml" - ] -}, - "application/jwk+json": { - source: "iana", - compressible: true -}, - "application/jwk-set+json": { - source: "iana", - compressible: true -}, - "application/jwt": { - source: "iana" -}, - "application/kpml-request+xml": { - source: "iana", - compressible: true -}, - "application/kpml-response+xml": { - source: "iana", - compressible: true -}, - "application/ld+json": { - source: "iana", - compressible: true, - extensions: [ - "jsonld" - ] -}, - "application/lgr+xml": { - source: "iana", - compressible: true, - extensions: [ - "lgr" - ] -}, - "application/link-format": { - source: "iana" -}, - "application/load-control+xml": { - source: "iana", - compressible: true -}, - "application/lost+xml": { - source: "iana", - compressible: true, - extensions: [ - "lostxml" - ] -}, - "application/lostsync+xml": { - source: "iana", - compressible: true -}, - "application/lpf+zip": { - source: "iana", - compressible: false -}, - "application/lxf": { - source: "iana" -}, - "application/mac-binhex40": { - source: "iana", - extensions: [ - "hqx" - ] -}, - "application/mac-compactpro": { - source: "apache", - extensions: [ - "cpt" - ] -}, - "application/macwriteii": { - source: "iana" -}, - "application/mads+xml": { - source: "iana", - compressible: true, - extensions: [ - "mads" - ] -}, - "application/manifest+json": { - source: "iana", - charset: "UTF-8", - compressible: true, - extensions: [ - "webmanifest" - ] -}, - "application/marc": { - source: "iana", - extensions: [ - "mrc" - ] -}, - "application/marcxml+xml": { - source: "iana", - compressible: true, - extensions: [ - "mrcx" - ] -}, - "application/mathematica": { - source: "iana", - extensions: [ - "ma", - "nb", - "mb" - ] -}, - "application/mathml+xml": { - source: "iana", - compressible: true, - extensions: [ - "mathml" - ] -}, - "application/mathml-content+xml": { - source: "iana", - compressible: true -}, - "application/mathml-presentation+xml": { - source: "iana", - compressible: true -}, - "application/mbms-associated-procedure-description+xml": { - source: "iana", - compressible: true -}, - "application/mbms-deregister+xml": { - source: "iana", - compressible: true -}, - "application/mbms-envelope+xml": { - source: "iana", - compressible: true -}, - "application/mbms-msk+xml": { - source: "iana", - compressible: true -}, - "application/mbms-msk-response+xml": { - source: "iana", - compressible: true -}, - "application/mbms-protection-description+xml": { - source: "iana", - compressible: true -}, - "application/mbms-reception-report+xml": { - source: "iana", - compressible: true -}, - "application/mbms-register+xml": { - source: "iana", - compressible: true -}, - "application/mbms-register-response+xml": { - source: "iana", - compressible: true -}, - "application/mbms-schedule+xml": { - source: "iana", - compressible: true -}, - "application/mbms-user-service-description+xml": { - source: "iana", - compressible: true -}, - "application/mbox": { - source: "iana", - extensions: [ - "mbox" - ] -}, - "application/media-policy-dataset+xml": { - source: "iana", - compressible: true, - extensions: [ - "mpf" - ] -}, - "application/media_control+xml": { - source: "iana", - compressible: true -}, - "application/mediaservercontrol+xml": { - source: "iana", - compressible: true, - extensions: [ - "mscml" - ] -}, - "application/merge-patch+json": { - source: "iana", - compressible: true -}, - "application/metalink+xml": { - source: "apache", - compressible: true, - extensions: [ - "metalink" - ] -}, - "application/metalink4+xml": { - source: "iana", - compressible: true, - extensions: [ - "meta4" - ] -}, - "application/mets+xml": { - source: "iana", - compressible: true, - extensions: [ - "mets" - ] -}, - "application/mf4": { - source: "iana" -}, - "application/mikey": { - source: "iana" -}, - "application/mipc": { - source: "iana" -}, - "application/missing-blocks+cbor-seq": { - source: "iana" -}, - "application/mmt-aei+xml": { - source: "iana", - compressible: true, - extensions: [ - "maei" - ] -}, - "application/mmt-usd+xml": { - source: "iana", - compressible: true, - extensions: [ - "musd" - ] -}, - "application/mods+xml": { - source: "iana", - compressible: true, - extensions: [ - "mods" - ] -}, - "application/moss-keys": { - source: "iana" -}, - "application/moss-signature": { - source: "iana" -}, - "application/mosskey-data": { - source: "iana" -}, - "application/mosskey-request": { - source: "iana" -}, - "application/mp21": { - source: "iana", - extensions: [ - "m21", - "mp21" - ] -}, - "application/mp4": { - source: "iana", - extensions: [ - "mp4s", - "m4p" - ] -}, - "application/mpeg4-generic": { - source: "iana" -}, - "application/mpeg4-iod": { - source: "iana" -}, - "application/mpeg4-iod-xmt": { - source: "iana" -}, - "application/mrb-consumer+xml": { - source: "iana", - compressible: true -}, - "application/mrb-publish+xml": { - source: "iana", - compressible: true -}, - "application/msc-ivr+xml": { - source: "iana", - charset: "UTF-8", - compressible: true -}, - "application/msc-mixer+xml": { - source: "iana", - charset: "UTF-8", - compressible: true -}, - "application/msword": { - source: "iana", - compressible: false, - extensions: [ - "doc", - "dot" - ] -}, - "application/mud+json": { - source: "iana", - compressible: true -}, - "application/multipart-core": { - source: "iana" -}, - "application/mxf": { - source: "iana", - extensions: [ - "mxf" - ] -}, - "application/n-quads": { - source: "iana", - extensions: [ - "nq" - ] -}, - "application/n-triples": { - source: "iana", - extensions: [ - "nt" - ] -}, - "application/nasdata": { - source: "iana" -}, - "application/news-checkgroups": { - source: "iana", - charset: "US-ASCII" -}, - "application/news-groupinfo": { - source: "iana", - charset: "US-ASCII" -}, - "application/news-transmission": { - source: "iana" -}, - "application/nlsml+xml": { - source: "iana", - compressible: true -}, - "application/node": { - source: "iana", - extensions: [ - "cjs" - ] -}, - "application/nss": { - source: "iana" -}, - "application/oauth-authz-req+jwt": { - source: "iana" -}, - "application/oblivious-dns-message": { - source: "iana" -}, - "application/ocsp-request": { - source: "iana" -}, - "application/ocsp-response": { - source: "iana" -}, - "application/octet-stream": { - source: "iana", - compressible: false, - extensions: [ - "bin", - "dms", - "lrf", - "mar", - "so", - "dist", - "distz", - "pkg", - "bpk", - "dump", - "elc", - "deploy", - "exe", - "dll", - "deb", - "dmg", - "iso", - "img", - "msi", - "msp", - "msm", - "buffer" - ] -}, - "application/oda": { - source: "iana", - extensions: [ - "oda" - ] -}, - "application/odm+xml": { - source: "iana", - compressible: true -}, - "application/odx": { - source: "iana" -}, - "application/oebps-package+xml": { - source: "iana", - compressible: true, - extensions: [ - "opf" - ] -}, - "application/ogg": { - source: "iana", - compressible: false, - extensions: [ - "ogx" - ] -}, - "application/omdoc+xml": { - source: "apache", - compressible: true, - extensions: [ - "omdoc" - ] -}, - "application/onenote": { - source: "apache", - extensions: [ - "onetoc", - "onetoc2", - "onetmp", - "onepkg" - ] -}, - "application/opc-nodeset+xml": { - source: "iana", - compressible: true -}, - "application/oscore": { - source: "iana" -}, - "application/oxps": { - source: "iana", - extensions: [ - "oxps" - ] -}, - "application/p21": { - source: "iana" -}, - "application/p21+zip": { - source: "iana", - compressible: false -}, - "application/p2p-overlay+xml": { - source: "iana", - compressible: true, - extensions: [ - "relo" - ] -}, - "application/parityfec": { - source: "iana" -}, - "application/passport": { - source: "iana" -}, - "application/patch-ops-error+xml": { - source: "iana", - compressible: true, - extensions: [ - "xer" - ] -}, - "application/pdf": { - source: "iana", - compressible: false, - extensions: [ - "pdf" - ] -}, - "application/pdx": { - source: "iana" -}, - "application/pem-certificate-chain": { - source: "iana" -}, - "application/pgp-encrypted": { - source: "iana", - compressible: false, - extensions: [ - "pgp" - ] -}, - "application/pgp-keys": { - source: "iana", - extensions: [ - "asc" - ] -}, - "application/pgp-signature": { - source: "iana", - extensions: [ - "asc", - "sig" - ] -}, - "application/pics-rules": { - source: "apache", - extensions: [ - "prf" - ] -}, - "application/pidf+xml": { - source: "iana", - charset: "UTF-8", - compressible: true -}, - "application/pidf-diff+xml": { - source: "iana", - charset: "UTF-8", - compressible: true -}, - "application/pkcs10": { - source: "iana", - extensions: [ - "p10" - ] -}, - "application/pkcs12": { - source: "iana" -}, - "application/pkcs7-mime": { - source: "iana", - extensions: [ - "p7m", - "p7c" - ] -}, - "application/pkcs7-signature": { - source: "iana", - extensions: [ - "p7s" - ] -}, - "application/pkcs8": { - source: "iana", - extensions: [ - "p8" - ] -}, - "application/pkcs8-encrypted": { - source: "iana" -}, - "application/pkix-attr-cert": { - source: "iana", - extensions: [ - "ac" - ] -}, - "application/pkix-cert": { - source: "iana", - extensions: [ - "cer" - ] -}, - "application/pkix-crl": { - source: "iana", - extensions: [ - "crl" - ] -}, - "application/pkix-pkipath": { - source: "iana", - extensions: [ - "pkipath" - ] -}, - "application/pkixcmp": { - source: "iana", - extensions: [ - "pki" - ] -}, - "application/pls+xml": { - source: "iana", - compressible: true, - extensions: [ - "pls" - ] -}, - "application/poc-settings+xml": { - source: "iana", - charset: "UTF-8", - compressible: true -}, - "application/postscript": { - source: "iana", - compressible: true, - extensions: [ - "ai", - "eps", - "ps" - ] -}, - "application/ppsp-tracker+json": { - source: "iana", - compressible: true -}, - "application/problem+json": { - source: "iana", - compressible: true -}, - "application/problem+xml": { - source: "iana", - compressible: true -}, - "application/provenance+xml": { - source: "iana", - compressible: true, - extensions: [ - "provx" - ] -}, - "application/prs.alvestrand.titrax-sheet": { - source: "iana" -}, - "application/prs.cww": { - source: "iana", - extensions: [ - "cww" - ] -}, - "application/prs.cyn": { - source: "iana", - charset: "7-BIT" -}, - "application/prs.hpub+zip": { - source: "iana", - compressible: false -}, - "application/prs.nprend": { - source: "iana" -}, - "application/prs.plucker": { - source: "iana" -}, - "application/prs.rdf-xml-crypt": { - source: "iana" -}, - "application/prs.xsf+xml": { - source: "iana", - compressible: true -}, - "application/pskc+xml": { - source: "iana", - compressible: true, - extensions: [ - "pskcxml" - ] -}, - "application/pvd+json": { - source: "iana", - compressible: true -}, - "application/qsig": { - source: "iana" -}, - "application/raml+yaml": { - compressible: true, - extensions: [ - "raml" - ] -}, - "application/raptorfec": { - source: "iana" -}, - "application/rdap+json": { - source: "iana", - compressible: true -}, - "application/rdf+xml": { - source: "iana", - compressible: true, - extensions: [ - "rdf", - "owl" - ] -}, - "application/reginfo+xml": { - source: "iana", - compressible: true, - extensions: [ - "rif" - ] -}, - "application/relax-ng-compact-syntax": { - source: "iana", - extensions: [ - "rnc" - ] -}, - "application/remote-printing": { - source: "iana" -}, - "application/reputon+json": { - source: "iana", - compressible: true -}, - "application/resource-lists+xml": { - source: "iana", - compressible: true, - extensions: [ - "rl" - ] -}, - "application/resource-lists-diff+xml": { - source: "iana", - compressible: true, - extensions: [ - "rld" - ] -}, - "application/rfc+xml": { - source: "iana", - compressible: true -}, - "application/riscos": { - source: "iana" -}, - "application/rlmi+xml": { - source: "iana", - compressible: true -}, - "application/rls-services+xml": { - source: "iana", - compressible: true, - extensions: [ - "rs" - ] -}, - "application/route-apd+xml": { - source: "iana", - compressible: true, - extensions: [ - "rapd" - ] -}, - "application/route-s-tsid+xml": { - source: "iana", - compressible: true, - extensions: [ - "sls" - ] -}, - "application/route-usd+xml": { - source: "iana", - compressible: true, - extensions: [ - "rusd" - ] -}, - "application/rpki-ghostbusters": { - source: "iana", - extensions: [ - "gbr" - ] -}, - "application/rpki-manifest": { - source: "iana", - extensions: [ - "mft" - ] -}, - "application/rpki-publication": { - source: "iana" -}, - "application/rpki-roa": { - source: "iana", - extensions: [ - "roa" - ] -}, - "application/rpki-updown": { - source: "iana" -}, - "application/rsd+xml": { - source: "apache", - compressible: true, - extensions: [ - "rsd" - ] -}, - "application/rss+xml": { - source: "apache", - compressible: true, - extensions: [ - "rss" - ] -}, - "application/rtf": { - source: "iana", - compressible: true, - extensions: [ - "rtf" - ] -}, - "application/rtploopback": { - source: "iana" -}, - "application/rtx": { - source: "iana" -}, - "application/samlassertion+xml": { - source: "iana", - compressible: true -}, - "application/samlmetadata+xml": { - source: "iana", - compressible: true -}, - "application/sarif+json": { - source: "iana", - compressible: true -}, - "application/sarif-external-properties+json": { - source: "iana", - compressible: true -}, - "application/sbe": { - source: "iana" -}, - "application/sbml+xml": { - source: "iana", - compressible: true, - extensions: [ - "sbml" - ] -}, - "application/scaip+xml": { - source: "iana", - compressible: true -}, - "application/scim+json": { - source: "iana", - compressible: true -}, - "application/scvp-cv-request": { - source: "iana", - extensions: [ - "scq" - ] -}, - "application/scvp-cv-response": { - source: "iana", - extensions: [ - "scs" - ] -}, - "application/scvp-vp-request": { - source: "iana", - extensions: [ - "spq" - ] -}, - "application/scvp-vp-response": { - source: "iana", - extensions: [ - "spp" - ] -}, - "application/sdp": { - source: "iana", - extensions: [ - "sdp" - ] -}, - "application/secevent+jwt": { - source: "iana" -}, - "application/senml+cbor": { - source: "iana" -}, - "application/senml+json": { - source: "iana", - compressible: true -}, - "application/senml+xml": { - source: "iana", - compressible: true, - extensions: [ - "senmlx" - ] -}, - "application/senml-etch+cbor": { - source: "iana" -}, - "application/senml-etch+json": { - source: "iana", - compressible: true -}, - "application/senml-exi": { - source: "iana" -}, - "application/sensml+cbor": { - source: "iana" -}, - "application/sensml+json": { - source: "iana", - compressible: true -}, - "application/sensml+xml": { - source: "iana", - compressible: true, - extensions: [ - "sensmlx" - ] -}, - "application/sensml-exi": { - source: "iana" -}, - "application/sep+xml": { - source: "iana", - compressible: true -}, - "application/sep-exi": { - source: "iana" -}, - "application/session-info": { - source: "iana" -}, - "application/set-payment": { - source: "iana" -}, - "application/set-payment-initiation": { - source: "iana", - extensions: [ - "setpay" - ] -}, - "application/set-registration": { - source: "iana" -}, - "application/set-registration-initiation": { - source: "iana", - extensions: [ - "setreg" - ] -}, - "application/sgml": { - source: "iana" -}, - "application/sgml-open-catalog": { - source: "iana" -}, - "application/shf+xml": { - source: "iana", - compressible: true, - extensions: [ - "shf" - ] -}, - "application/sieve": { - source: "iana", - extensions: [ - "siv", - "sieve" - ] -}, - "application/simple-filter+xml": { - source: "iana", - compressible: true -}, - "application/simple-message-summary": { - source: "iana" -}, - "application/simplesymbolcontainer": { - source: "iana" -}, - "application/sipc": { - source: "iana" -}, - "application/slate": { - source: "iana" -}, - "application/smil": { - source: "iana" -}, - "application/smil+xml": { - source: "iana", - compressible: true, - extensions: [ - "smi", - "smil" - ] -}, - "application/smpte336m": { - source: "iana" -}, - "application/soap+fastinfoset": { - source: "iana" -}, - "application/soap+xml": { - source: "iana", - compressible: true -}, - "application/sparql-query": { - source: "iana", - extensions: [ - "rq" - ] -}, - "application/sparql-results+xml": { - source: "iana", - compressible: true, - extensions: [ - "srx" - ] -}, - "application/spdx+json": { - source: "iana", - compressible: true -}, - "application/spirits-event+xml": { - source: "iana", - compressible: true -}, - "application/sql": { - source: "iana" -}, - "application/srgs": { - source: "iana", - extensions: [ - "gram" - ] -}, - "application/srgs+xml": { - source: "iana", - compressible: true, - extensions: [ - "grxml" - ] -}, - "application/sru+xml": { - source: "iana", - compressible: true, - extensions: [ - "sru" - ] -}, - "application/ssdl+xml": { - source: "apache", - compressible: true, - extensions: [ - "ssdl" - ] -}, - "application/ssml+xml": { - source: "iana", - compressible: true, - extensions: [ - "ssml" - ] -}, - "application/stix+json": { - source: "iana", - compressible: true -}, - "application/swid+xml": { - source: "iana", - compressible: true, - extensions: [ - "swidtag" - ] -}, - "application/tamp-apex-update": { - source: "iana" -}, - "application/tamp-apex-update-confirm": { - source: "iana" -}, - "application/tamp-community-update": { - source: "iana" -}, - "application/tamp-community-update-confirm": { - source: "iana" -}, - "application/tamp-error": { - source: "iana" -}, - "application/tamp-sequence-adjust": { - source: "iana" -}, - "application/tamp-sequence-adjust-confirm": { - source: "iana" -}, - "application/tamp-status-query": { - source: "iana" -}, - "application/tamp-status-response": { - source: "iana" -}, - "application/tamp-update": { - source: "iana" -}, - "application/tamp-update-confirm": { - source: "iana" -}, - "application/tar": { - compressible: true -}, - "application/taxii+json": { - source: "iana", - compressible: true -}, - "application/td+json": { - source: "iana", - compressible: true -}, - "application/tei+xml": { - source: "iana", - compressible: true, - extensions: [ - "tei", - "teicorpus" - ] -}, - "application/tetra_isi": { - source: "iana" -}, - "application/thraud+xml": { - source: "iana", - compressible: true, - extensions: [ - "tfi" - ] -}, - "application/timestamp-query": { - source: "iana" -}, - "application/timestamp-reply": { - source: "iana" -}, - "application/timestamped-data": { - source: "iana", - extensions: [ - "tsd" - ] -}, - "application/tlsrpt+gzip": { - source: "iana" -}, - "application/tlsrpt+json": { - source: "iana", - compressible: true -}, - "application/tnauthlist": { - source: "iana" -}, - "application/token-introspection+jwt": { - source: "iana" -}, - "application/toml": { - compressible: true, - extensions: [ - "toml" - ] -}, - "application/trickle-ice-sdpfrag": { - source: "iana" -}, - "application/trig": { - source: "iana", - extensions: [ - "trig" - ] -}, - "application/ttml+xml": { - source: "iana", - compressible: true, - extensions: [ - "ttml" - ] -}, - "application/tve-trigger": { - source: "iana" -}, - "application/tzif": { - source: "iana" -}, - "application/tzif-leap": { - source: "iana" -}, - "application/ubjson": { - compressible: false, - extensions: [ - "ubj" - ] -}, - "application/ulpfec": { - source: "iana" -}, - "application/urc-grpsheet+xml": { - source: "iana", - compressible: true -}, - "application/urc-ressheet+xml": { - source: "iana", - compressible: true, - extensions: [ - "rsheet" - ] -}, - "application/urc-targetdesc+xml": { - source: "iana", - compressible: true, - extensions: [ - "td" - ] -}, - "application/urc-uisocketdesc+xml": { - source: "iana", - compressible: true -}, - "application/vcard+json": { - source: "iana", - compressible: true -}, - "application/vcard+xml": { - source: "iana", - compressible: true -}, - "application/vemmi": { - source: "iana" -}, - "application/vividence.scriptfile": { - source: "apache" -}, - "application/vnd.1000minds.decision-model+xml": { - source: "iana", - compressible: true, - extensions: [ - "1km" - ] -}, - "application/vnd.3gpp-prose+xml": { - source: "iana", - compressible: true -}, - "application/vnd.3gpp-prose-pc3ch+xml": { - source: "iana", - compressible: true -}, - "application/vnd.3gpp-v2x-local-service-information": { - source: "iana" -}, - "application/vnd.3gpp.5gnas": { - source: "iana" -}, - "application/vnd.3gpp.access-transfer-events+xml": { - source: "iana", - compressible: true -}, - "application/vnd.3gpp.bsf+xml": { - source: "iana", - compressible: true -}, - "application/vnd.3gpp.gmop+xml": { - source: "iana", - compressible: true -}, - "application/vnd.3gpp.gtpc": { - source: "iana" -}, - "application/vnd.3gpp.interworking-data": { - source: "iana" -}, - "application/vnd.3gpp.lpp": { - source: "iana" -}, - "application/vnd.3gpp.mc-signalling-ear": { - source: "iana" -}, - "application/vnd.3gpp.mcdata-affiliation-command+xml": { - source: "iana", - compressible: true -}, - "application/vnd.3gpp.mcdata-info+xml": { - source: "iana", - compressible: true -}, - "application/vnd.3gpp.mcdata-payload": { - source: "iana" -}, - "application/vnd.3gpp.mcdata-service-config+xml": { - source: "iana", - compressible: true -}, - "application/vnd.3gpp.mcdata-signalling": { - source: "iana" -}, - "application/vnd.3gpp.mcdata-ue-config+xml": { - source: "iana", - compressible: true -}, - "application/vnd.3gpp.mcdata-user-profile+xml": { - source: "iana", - compressible: true -}, - "application/vnd.3gpp.mcptt-affiliation-command+xml": { - source: "iana", - compressible: true -}, - "application/vnd.3gpp.mcptt-floor-request+xml": { - source: "iana", - compressible: true -}, - "application/vnd.3gpp.mcptt-info+xml": { - source: "iana", - compressible: true -}, - "application/vnd.3gpp.mcptt-location-info+xml": { - source: "iana", - compressible: true -}, - "application/vnd.3gpp.mcptt-mbms-usage-info+xml": { - source: "iana", - compressible: true -}, - "application/vnd.3gpp.mcptt-service-config+xml": { - source: "iana", - compressible: true -}, - "application/vnd.3gpp.mcptt-signed+xml": { - source: "iana", - compressible: true -}, - "application/vnd.3gpp.mcptt-ue-config+xml": { - source: "iana", - compressible: true -}, - "application/vnd.3gpp.mcptt-ue-init-config+xml": { - source: "iana", - compressible: true -}, - "application/vnd.3gpp.mcptt-user-profile+xml": { - source: "iana", - compressible: true -}, - "application/vnd.3gpp.mcvideo-affiliation-command+xml": { - source: "iana", - compressible: true -}, - "application/vnd.3gpp.mcvideo-affiliation-info+xml": { - source: "iana", - compressible: true -}, - "application/vnd.3gpp.mcvideo-info+xml": { - source: "iana", - compressible: true -}, - "application/vnd.3gpp.mcvideo-location-info+xml": { - source: "iana", - compressible: true -}, - "application/vnd.3gpp.mcvideo-mbms-usage-info+xml": { - source: "iana", - compressible: true -}, - "application/vnd.3gpp.mcvideo-service-config+xml": { - source: "iana", - compressible: true -}, - "application/vnd.3gpp.mcvideo-transmission-request+xml": { - source: "iana", - compressible: true -}, - "application/vnd.3gpp.mcvideo-ue-config+xml": { - source: "iana", - compressible: true -}, - "application/vnd.3gpp.mcvideo-user-profile+xml": { - source: "iana", - compressible: true -}, - "application/vnd.3gpp.mid-call+xml": { - source: "iana", - compressible: true -}, - "application/vnd.3gpp.ngap": { - source: "iana" -}, - "application/vnd.3gpp.pfcp": { - source: "iana" -}, - "application/vnd.3gpp.pic-bw-large": { - source: "iana", - extensions: [ - "plb" - ] -}, - "application/vnd.3gpp.pic-bw-small": { - source: "iana", - extensions: [ - "psb" - ] -}, - "application/vnd.3gpp.pic-bw-var": { - source: "iana", - extensions: [ - "pvb" - ] -}, - "application/vnd.3gpp.s1ap": { - source: "iana" -}, - "application/vnd.3gpp.sms": { - source: "iana" -}, - "application/vnd.3gpp.sms+xml": { - source: "iana", - compressible: true -}, - "application/vnd.3gpp.srvcc-ext+xml": { - source: "iana", - compressible: true -}, - "application/vnd.3gpp.srvcc-info+xml": { - source: "iana", - compressible: true -}, - "application/vnd.3gpp.state-and-event-info+xml": { - source: "iana", - compressible: true -}, - "application/vnd.3gpp.ussd+xml": { - source: "iana", - compressible: true -}, - "application/vnd.3gpp2.bcmcsinfo+xml": { - source: "iana", - compressible: true -}, - "application/vnd.3gpp2.sms": { - source: "iana" -}, - "application/vnd.3gpp2.tcap": { - source: "iana", - extensions: [ - "tcap" - ] -}, - "application/vnd.3lightssoftware.imagescal": { - source: "iana" -}, - "application/vnd.3m.post-it-notes": { - source: "iana", - extensions: [ - "pwn" - ] -}, - "application/vnd.accpac.simply.aso": { - source: "iana", - extensions: [ - "aso" - ] -}, - "application/vnd.accpac.simply.imp": { - source: "iana", - extensions: [ - "imp" - ] -}, - "application/vnd.acucobol": { - source: "iana", - extensions: [ - "acu" - ] -}, - "application/vnd.acucorp": { - source: "iana", - extensions: [ - "atc", - "acutc" - ] -}, - "application/vnd.adobe.air-application-installer-package+zip": { - source: "apache", - compressible: false, - extensions: [ - "air" - ] -}, - "application/vnd.adobe.flash.movie": { - source: "iana" -}, - "application/vnd.adobe.formscentral.fcdt": { - source: "iana", - extensions: [ - "fcdt" - ] -}, - "application/vnd.adobe.fxp": { - source: "iana", - extensions: [ - "fxp", - "fxpl" - ] -}, - "application/vnd.adobe.partial-upload": { - source: "iana" -}, - "application/vnd.adobe.xdp+xml": { - source: "iana", - compressible: true, - extensions: [ - "xdp" - ] -}, - "application/vnd.adobe.xfdf": { - source: "iana", - extensions: [ - "xfdf" - ] -}, - "application/vnd.aether.imp": { - source: "iana" -}, - "application/vnd.afpc.afplinedata": { - source: "iana" -}, - "application/vnd.afpc.afplinedata-pagedef": { - source: "iana" -}, - "application/vnd.afpc.cmoca-cmresource": { - source: "iana" -}, - "application/vnd.afpc.foca-charset": { - source: "iana" -}, - "application/vnd.afpc.foca-codedfont": { - source: "iana" -}, - "application/vnd.afpc.foca-codepage": { - source: "iana" -}, - "application/vnd.afpc.modca": { - source: "iana" -}, - "application/vnd.afpc.modca-cmtable": { - source: "iana" -}, - "application/vnd.afpc.modca-formdef": { - source: "iana" -}, - "application/vnd.afpc.modca-mediummap": { - source: "iana" -}, - "application/vnd.afpc.modca-objectcontainer": { - source: "iana" -}, - "application/vnd.afpc.modca-overlay": { - source: "iana" -}, - "application/vnd.afpc.modca-pagesegment": { - source: "iana" -}, - "application/vnd.age": { - source: "iana", - extensions: [ - "age" - ] -}, - "application/vnd.ah-barcode": { - source: "iana" -}, - "application/vnd.ahead.space": { - source: "iana", - extensions: [ - "ahead" - ] -}, - "application/vnd.airzip.filesecure.azf": { - source: "iana", - extensions: [ - "azf" - ] -}, - "application/vnd.airzip.filesecure.azs": { - source: "iana", - extensions: [ - "azs" - ] -}, - "application/vnd.amadeus+json": { - source: "iana", - compressible: true -}, - "application/vnd.amazon.ebook": { - source: "apache", - extensions: [ - "azw" - ] -}, - "application/vnd.amazon.mobi8-ebook": { - source: "iana" -}, - "application/vnd.americandynamics.acc": { - source: "iana", - extensions: [ - "acc" - ] -}, - "application/vnd.amiga.ami": { - source: "iana", - extensions: [ - "ami" - ] -}, - "application/vnd.amundsen.maze+xml": { - source: "iana", - compressible: true -}, - "application/vnd.android.ota": { - source: "iana" -}, - "application/vnd.android.package-archive": { - source: "apache", - compressible: false, - extensions: [ - "apk" - ] -}, - "application/vnd.anki": { - source: "iana" -}, - "application/vnd.anser-web-certificate-issue-initiation": { - source: "iana", - extensions: [ - "cii" - ] -}, - "application/vnd.anser-web-funds-transfer-initiation": { - source: "apache", - extensions: [ - "fti" - ] -}, - "application/vnd.antix.game-component": { - source: "iana", - extensions: [ - "atx" - ] -}, - "application/vnd.apache.arrow.file": { - source: "iana" -}, - "application/vnd.apache.arrow.stream": { - source: "iana" -}, - "application/vnd.apache.thrift.binary": { - source: "iana" -}, - "application/vnd.apache.thrift.compact": { - source: "iana" -}, - "application/vnd.apache.thrift.json": { - source: "iana" -}, - "application/vnd.api+json": { - source: "iana", - compressible: true -}, - "application/vnd.aplextor.warrp+json": { - source: "iana", - compressible: true -}, - "application/vnd.apothekende.reservation+json": { - source: "iana", - compressible: true -}, - "application/vnd.apple.installer+xml": { - source: "iana", - compressible: true, - extensions: [ - "mpkg" - ] -}, - "application/vnd.apple.keynote": { - source: "iana", - extensions: [ - "key" - ] -}, - "application/vnd.apple.mpegurl": { - source: "iana", - extensions: [ - "m3u8" - ] -}, - "application/vnd.apple.numbers": { - source: "iana", - extensions: [ - "numbers" - ] -}, - "application/vnd.apple.pages": { - source: "iana", - extensions: [ - "pages" - ] -}, - "application/vnd.apple.pkpass": { - compressible: false, - extensions: [ - "pkpass" - ] -}, - "application/vnd.arastra.swi": { - source: "iana" -}, - "application/vnd.aristanetworks.swi": { - source: "iana", - extensions: [ - "swi" - ] -}, - "application/vnd.artisan+json": { - source: "iana", - compressible: true -}, - "application/vnd.artsquare": { - source: "iana" -}, - "application/vnd.astraea-software.iota": { - source: "iana", - extensions: [ - "iota" - ] -}, - "application/vnd.audiograph": { - source: "iana", - extensions: [ - "aep" - ] -}, - "application/vnd.autopackage": { - source: "iana" -}, - "application/vnd.avalon+json": { - source: "iana", - compressible: true -}, - "application/vnd.avistar+xml": { - source: "iana", - compressible: true -}, - "application/vnd.balsamiq.bmml+xml": { - source: "iana", - compressible: true, - extensions: [ - "bmml" - ] -}, - "application/vnd.balsamiq.bmpr": { - source: "iana" -}, - "application/vnd.banana-accounting": { - source: "iana" -}, - "application/vnd.bbf.usp.error": { - source: "iana" -}, - "application/vnd.bbf.usp.msg": { - source: "iana" -}, - "application/vnd.bbf.usp.msg+json": { - source: "iana", - compressible: true -}, - "application/vnd.bekitzur-stech+json": { - source: "iana", - compressible: true -}, - "application/vnd.bint.med-content": { - source: "iana" -}, - "application/vnd.biopax.rdf+xml": { - source: "iana", - compressible: true -}, - "application/vnd.blink-idb-value-wrapper": { - source: "iana" -}, - "application/vnd.blueice.multipass": { - source: "iana", - extensions: [ - "mpm" - ] -}, - "application/vnd.bluetooth.ep.oob": { - source: "iana" -}, - "application/vnd.bluetooth.le.oob": { - source: "iana" -}, - "application/vnd.bmi": { - source: "iana", - extensions: [ - "bmi" - ] -}, - "application/vnd.bpf": { - source: "iana" -}, - "application/vnd.bpf3": { - source: "iana" -}, - "application/vnd.businessobjects": { - source: "iana", - extensions: [ - "rep" - ] -}, - "application/vnd.byu.uapi+json": { - source: "iana", - compressible: true -}, - "application/vnd.cab-jscript": { - source: "iana" -}, - "application/vnd.canon-cpdl": { - source: "iana" -}, - "application/vnd.canon-lips": { - source: "iana" -}, - "application/vnd.capasystems-pg+json": { - source: "iana", - compressible: true -}, - "application/vnd.cendio.thinlinc.clientconf": { - source: "iana" -}, - "application/vnd.century-systems.tcp_stream": { - source: "iana" -}, - "application/vnd.chemdraw+xml": { - source: "iana", - compressible: true, - extensions: [ - "cdxml" - ] -}, - "application/vnd.chess-pgn": { - source: "iana" -}, - "application/vnd.chipnuts.karaoke-mmd": { - source: "iana", - extensions: [ - "mmd" - ] -}, - "application/vnd.ciedi": { - source: "iana" -}, - "application/vnd.cinderella": { - source: "iana", - extensions: [ - "cdy" - ] -}, - "application/vnd.cirpack.isdn-ext": { - source: "iana" -}, - "application/vnd.citationstyles.style+xml": { - source: "iana", - compressible: true, - extensions: [ - "csl" - ] -}, - "application/vnd.claymore": { - source: "iana", - extensions: [ - "cla" - ] -}, - "application/vnd.cloanto.rp9": { - source: "iana", - extensions: [ - "rp9" - ] -}, - "application/vnd.clonk.c4group": { - source: "iana", - extensions: [ - "c4g", - "c4d", - "c4f", - "c4p", - "c4u" - ] -}, - "application/vnd.cluetrust.cartomobile-config": { - source: "iana", - extensions: [ - "c11amc" - ] -}, - "application/vnd.cluetrust.cartomobile-config-pkg": { - source: "iana", - extensions: [ - "c11amz" - ] -}, - "application/vnd.coffeescript": { - source: "iana" -}, - "application/vnd.collabio.xodocuments.document": { - source: "iana" -}, - "application/vnd.collabio.xodocuments.document-template": { - source: "iana" -}, - "application/vnd.collabio.xodocuments.presentation": { - source: "iana" -}, - "application/vnd.collabio.xodocuments.presentation-template": { - source: "iana" -}, - "application/vnd.collabio.xodocuments.spreadsheet": { - source: "iana" -}, - "application/vnd.collabio.xodocuments.spreadsheet-template": { - source: "iana" -}, - "application/vnd.collection+json": { - source: "iana", - compressible: true -}, - "application/vnd.collection.doc+json": { - source: "iana", - compressible: true -}, - "application/vnd.collection.next+json": { - source: "iana", - compressible: true -}, - "application/vnd.comicbook+zip": { - source: "iana", - compressible: false -}, - "application/vnd.comicbook-rar": { - source: "iana" -}, - "application/vnd.commerce-battelle": { - source: "iana" -}, - "application/vnd.commonspace": { - source: "iana", - extensions: [ - "csp" - ] -}, - "application/vnd.contact.cmsg": { - source: "iana", - extensions: [ - "cdbcmsg" - ] -}, - "application/vnd.coreos.ignition+json": { - source: "iana", - compressible: true -}, - "application/vnd.cosmocaller": { - source: "iana", - extensions: [ - "cmc" - ] -}, - "application/vnd.crick.clicker": { - source: "iana", - extensions: [ - "clkx" - ] -}, - "application/vnd.crick.clicker.keyboard": { - source: "iana", - extensions: [ - "clkk" - ] -}, - "application/vnd.crick.clicker.palette": { - source: "iana", - extensions: [ - "clkp" - ] -}, - "application/vnd.crick.clicker.template": { - source: "iana", - extensions: [ - "clkt" - ] -}, - "application/vnd.crick.clicker.wordbank": { - source: "iana", - extensions: [ - "clkw" - ] -}, - "application/vnd.criticaltools.wbs+xml": { - source: "iana", - compressible: true, - extensions: [ - "wbs" - ] -}, - "application/vnd.cryptii.pipe+json": { - source: "iana", - compressible: true -}, - "application/vnd.crypto-shade-file": { - source: "iana" -}, - "application/vnd.cryptomator.encrypted": { - source: "iana" -}, - "application/vnd.cryptomator.vault": { - source: "iana" -}, - "application/vnd.ctc-posml": { - source: "iana", - extensions: [ - "pml" - ] -}, - "application/vnd.ctct.ws+xml": { - source: "iana", - compressible: true -}, - "application/vnd.cups-pdf": { - source: "iana" -}, - "application/vnd.cups-postscript": { - source: "iana" -}, - "application/vnd.cups-ppd": { - source: "iana", - extensions: [ - "ppd" - ] -}, - "application/vnd.cups-raster": { - source: "iana" -}, - "application/vnd.cups-raw": { - source: "iana" -}, - "application/vnd.curl": { - source: "iana" -}, - "application/vnd.curl.car": { - source: "apache", - extensions: [ - "car" - ] -}, - "application/vnd.curl.pcurl": { - source: "apache", - extensions: [ - "pcurl" - ] -}, - "application/vnd.cyan.dean.root+xml": { - source: "iana", - compressible: true -}, - "application/vnd.cybank": { - source: "iana" -}, - "application/vnd.cyclonedx+json": { - source: "iana", - compressible: true -}, - "application/vnd.cyclonedx+xml": { - source: "iana", - compressible: true -}, - "application/vnd.d2l.coursepackage1p0+zip": { - source: "iana", - compressible: false -}, - "application/vnd.d3m-dataset": { - source: "iana" -}, - "application/vnd.d3m-problem": { - source: "iana" -}, - "application/vnd.dart": { - source: "iana", - compressible: true, - extensions: [ - "dart" - ] -}, - "application/vnd.data-vision.rdz": { - source: "iana", - extensions: [ - "rdz" - ] -}, - "application/vnd.datapackage+json": { - source: "iana", - compressible: true -}, - "application/vnd.dataresource+json": { - source: "iana", - compressible: true -}, - "application/vnd.dbf": { - source: "iana", - extensions: [ - "dbf" - ] -}, - "application/vnd.debian.binary-package": { - source: "iana" -}, - "application/vnd.dece.data": { - source: "iana", - extensions: [ - "uvf", - "uvvf", - "uvd", - "uvvd" - ] -}, - "application/vnd.dece.ttml+xml": { - source: "iana", - compressible: true, - extensions: [ - "uvt", - "uvvt" - ] -}, - "application/vnd.dece.unspecified": { - source: "iana", - extensions: [ - "uvx", - "uvvx" - ] -}, - "application/vnd.dece.zip": { - source: "iana", - extensions: [ - "uvz", - "uvvz" - ] -}, - "application/vnd.denovo.fcselayout-link": { - source: "iana", - extensions: [ - "fe_launch" - ] -}, - "application/vnd.desmume.movie": { - source: "iana" -}, - "application/vnd.dir-bi.plate-dl-nosuffix": { - source: "iana" -}, - "application/vnd.dm.delegation+xml": { - source: "iana", - compressible: true -}, - "application/vnd.dna": { - source: "iana", - extensions: [ - "dna" - ] -}, - "application/vnd.document+json": { - source: "iana", - compressible: true -}, - "application/vnd.dolby.mlp": { - source: "apache", - extensions: [ - "mlp" - ] -}, - "application/vnd.dolby.mobile.1": { - source: "iana" -}, - "application/vnd.dolby.mobile.2": { - source: "iana" -}, - "application/vnd.doremir.scorecloud-binary-document": { - source: "iana" -}, - "application/vnd.dpgraph": { - source: "iana", - extensions: [ - "dpg" - ] -}, - "application/vnd.dreamfactory": { - source: "iana", - extensions: [ - "dfac" - ] -}, - "application/vnd.drive+json": { - source: "iana", - compressible: true -}, - "application/vnd.ds-keypoint": { - source: "apache", - extensions: [ - "kpxx" - ] -}, - "application/vnd.dtg.local": { - source: "iana" -}, - "application/vnd.dtg.local.flash": { - source: "iana" -}, - "application/vnd.dtg.local.html": { - source: "iana" -}, - "application/vnd.dvb.ait": { - source: "iana", - extensions: [ - "ait" - ] -}, - "application/vnd.dvb.dvbisl+xml": { - source: "iana", - compressible: true -}, - "application/vnd.dvb.dvbj": { - source: "iana" -}, - "application/vnd.dvb.esgcontainer": { - source: "iana" -}, - "application/vnd.dvb.ipdcdftnotifaccess": { - source: "iana" -}, - "application/vnd.dvb.ipdcesgaccess": { - source: "iana" -}, - "application/vnd.dvb.ipdcesgaccess2": { - source: "iana" -}, - "application/vnd.dvb.ipdcesgpdd": { - source: "iana" -}, - "application/vnd.dvb.ipdcroaming": { - source: "iana" -}, - "application/vnd.dvb.iptv.alfec-base": { - source: "iana" -}, - "application/vnd.dvb.iptv.alfec-enhancement": { - source: "iana" -}, - "application/vnd.dvb.notif-aggregate-root+xml": { - source: "iana", - compressible: true -}, - "application/vnd.dvb.notif-container+xml": { - source: "iana", - compressible: true -}, - "application/vnd.dvb.notif-generic+xml": { - source: "iana", - compressible: true -}, - "application/vnd.dvb.notif-ia-msglist+xml": { - source: "iana", - compressible: true -}, - "application/vnd.dvb.notif-ia-registration-request+xml": { - source: "iana", - compressible: true -}, - "application/vnd.dvb.notif-ia-registration-response+xml": { - source: "iana", - compressible: true -}, - "application/vnd.dvb.notif-init+xml": { - source: "iana", - compressible: true -}, - "application/vnd.dvb.pfr": { - source: "iana" -}, - "application/vnd.dvb.service": { - source: "iana", - extensions: [ - "svc" - ] -}, - "application/vnd.dxr": { - source: "iana" -}, - "application/vnd.dynageo": { - source: "iana", - extensions: [ - "geo" - ] -}, - "application/vnd.dzr": { - source: "iana" -}, - "application/vnd.easykaraoke.cdgdownload": { - source: "iana" -}, - "application/vnd.ecdis-update": { - source: "iana" -}, - "application/vnd.ecip.rlp": { - source: "iana" -}, - "application/vnd.eclipse.ditto+json": { - source: "iana", - compressible: true -}, - "application/vnd.ecowin.chart": { - source: "iana", - extensions: [ - "mag" - ] -}, - "application/vnd.ecowin.filerequest": { - source: "iana" -}, - "application/vnd.ecowin.fileupdate": { - source: "iana" -}, - "application/vnd.ecowin.series": { - source: "iana" -}, - "application/vnd.ecowin.seriesrequest": { - source: "iana" -}, - "application/vnd.ecowin.seriesupdate": { - source: "iana" -}, - "application/vnd.efi.img": { - source: "iana" -}, - "application/vnd.efi.iso": { - source: "iana" -}, - "application/vnd.emclient.accessrequest+xml": { - source: "iana", - compressible: true -}, - "application/vnd.enliven": { - source: "iana", - extensions: [ - "nml" - ] -}, - "application/vnd.enphase.envoy": { - source: "iana" -}, - "application/vnd.eprints.data+xml": { - source: "iana", - compressible: true -}, - "application/vnd.epson.esf": { - source: "iana", - extensions: [ - "esf" - ] -}, - "application/vnd.epson.msf": { - source: "iana", - extensions: [ - "msf" - ] -}, - "application/vnd.epson.quickanime": { - source: "iana", - extensions: [ - "qam" - ] -}, - "application/vnd.epson.salt": { - source: "iana", - extensions: [ - "slt" - ] -}, - "application/vnd.epson.ssf": { - source: "iana", - extensions: [ - "ssf" - ] -}, - "application/vnd.ericsson.quickcall": { - source: "iana" -}, - "application/vnd.espass-espass+zip": { - source: "iana", - compressible: false -}, - "application/vnd.eszigno3+xml": { - source: "iana", - compressible: true, - extensions: [ - "es3", - "et3" - ] -}, - "application/vnd.etsi.aoc+xml": { - source: "iana", - compressible: true -}, - "application/vnd.etsi.asic-e+zip": { - source: "iana", - compressible: false -}, - "application/vnd.etsi.asic-s+zip": { - source: "iana", - compressible: false -}, - "application/vnd.etsi.cug+xml": { - source: "iana", - compressible: true -}, - "application/vnd.etsi.iptvcommand+xml": { - source: "iana", - compressible: true -}, - "application/vnd.etsi.iptvdiscovery+xml": { - source: "iana", - compressible: true -}, - "application/vnd.etsi.iptvprofile+xml": { - source: "iana", - compressible: true -}, - "application/vnd.etsi.iptvsad-bc+xml": { - source: "iana", - compressible: true -}, - "application/vnd.etsi.iptvsad-cod+xml": { - source: "iana", - compressible: true -}, - "application/vnd.etsi.iptvsad-npvr+xml": { - source: "iana", - compressible: true -}, - "application/vnd.etsi.iptvservice+xml": { - source: "iana", - compressible: true -}, - "application/vnd.etsi.iptvsync+xml": { - source: "iana", - compressible: true -}, - "application/vnd.etsi.iptvueprofile+xml": { - source: "iana", - compressible: true -}, - "application/vnd.etsi.mcid+xml": { - source: "iana", - compressible: true -}, - "application/vnd.etsi.mheg5": { - source: "iana" -}, - "application/vnd.etsi.overload-control-policy-dataset+xml": { - source: "iana", - compressible: true -}, - "application/vnd.etsi.pstn+xml": { - source: "iana", - compressible: true -}, - "application/vnd.etsi.sci+xml": { - source: "iana", - compressible: true -}, - "application/vnd.etsi.simservs+xml": { - source: "iana", - compressible: true -}, - "application/vnd.etsi.timestamp-token": { - source: "iana" -}, - "application/vnd.etsi.tsl+xml": { - source: "iana", - compressible: true -}, - "application/vnd.etsi.tsl.der": { - source: "iana" -}, - "application/vnd.eu.kasparian.car+json": { - source: "iana", - compressible: true -}, - "application/vnd.eudora.data": { - source: "iana" -}, - "application/vnd.evolv.ecig.profile": { - source: "iana" -}, - "application/vnd.evolv.ecig.settings": { - source: "iana" -}, - "application/vnd.evolv.ecig.theme": { - source: "iana" -}, - "application/vnd.exstream-empower+zip": { - source: "iana", - compressible: false -}, - "application/vnd.exstream-package": { - source: "iana" -}, - "application/vnd.ezpix-album": { - source: "iana", - extensions: [ - "ez2" - ] -}, - "application/vnd.ezpix-package": { - source: "iana", - extensions: [ - "ez3" - ] -}, - "application/vnd.f-secure.mobile": { - source: "iana" -}, - "application/vnd.familysearch.gedcom+zip": { - source: "iana", - compressible: false -}, - "application/vnd.fastcopy-disk-image": { - source: "iana" -}, - "application/vnd.fdf": { - source: "iana", - extensions: [ - "fdf" - ] -}, - "application/vnd.fdsn.mseed": { - source: "iana", - extensions: [ - "mseed" - ] -}, - "application/vnd.fdsn.seed": { - source: "iana", - extensions: [ - "seed", - "dataless" - ] -}, - "application/vnd.ffsns": { - source: "iana" -}, - "application/vnd.ficlab.flb+zip": { - source: "iana", - compressible: false -}, - "application/vnd.filmit.zfc": { - source: "iana" -}, - "application/vnd.fints": { - source: "iana" -}, - "application/vnd.firemonkeys.cloudcell": { - source: "iana" -}, - "application/vnd.flographit": { - source: "iana", - extensions: [ - "gph" - ] -}, - "application/vnd.fluxtime.clip": { - source: "iana", - extensions: [ - "ftc" - ] -}, - "application/vnd.font-fontforge-sfd": { - source: "iana" -}, - "application/vnd.framemaker": { - source: "iana", - extensions: [ - "fm", - "frame", - "maker", - "book" - ] -}, - "application/vnd.frogans.fnc": { - source: "iana", - extensions: [ - "fnc" - ] -}, - "application/vnd.frogans.ltf": { - source: "iana", - extensions: [ - "ltf" - ] -}, - "application/vnd.fsc.weblaunch": { - source: "iana", - extensions: [ - "fsc" - ] -}, - "application/vnd.fujifilm.fb.docuworks": { - source: "iana" -}, - "application/vnd.fujifilm.fb.docuworks.binder": { - source: "iana" -}, - "application/vnd.fujifilm.fb.docuworks.container": { - source: "iana" -}, - "application/vnd.fujifilm.fb.jfi+xml": { - source: "iana", - compressible: true -}, - "application/vnd.fujitsu.oasys": { - source: "iana", - extensions: [ - "oas" - ] -}, - "application/vnd.fujitsu.oasys2": { - source: "iana", - extensions: [ - "oa2" - ] -}, - "application/vnd.fujitsu.oasys3": { - source: "iana", - extensions: [ - "oa3" - ] -}, - "application/vnd.fujitsu.oasysgp": { - source: "iana", - extensions: [ - "fg5" - ] -}, - "application/vnd.fujitsu.oasysprs": { - source: "iana", - extensions: [ - "bh2" - ] -}, - "application/vnd.fujixerox.art-ex": { - source: "iana" -}, - "application/vnd.fujixerox.art4": { - source: "iana" -}, - "application/vnd.fujixerox.ddd": { - source: "iana", - extensions: [ - "ddd" - ] -}, - "application/vnd.fujixerox.docuworks": { - source: "iana", - extensions: [ - "xdw" - ] -}, - "application/vnd.fujixerox.docuworks.binder": { - source: "iana", - extensions: [ - "xbd" - ] -}, - "application/vnd.fujixerox.docuworks.container": { - source: "iana" -}, - "application/vnd.fujixerox.hbpl": { - source: "iana" -}, - "application/vnd.fut-misnet": { - source: "iana" -}, - "application/vnd.futoin+cbor": { - source: "iana" -}, - "application/vnd.futoin+json": { - source: "iana", - compressible: true -}, - "application/vnd.fuzzysheet": { - source: "iana", - extensions: [ - "fzs" - ] -}, - "application/vnd.genomatix.tuxedo": { - source: "iana", - extensions: [ - "txd" - ] -}, - "application/vnd.gentics.grd+json": { - source: "iana", - compressible: true -}, - "application/vnd.geo+json": { - source: "iana", - compressible: true -}, - "application/vnd.geocube+xml": { - source: "iana", - compressible: true -}, - "application/vnd.geogebra.file": { - source: "iana", - extensions: [ - "ggb" - ] -}, - "application/vnd.geogebra.slides": { - source: "iana" -}, - "application/vnd.geogebra.tool": { - source: "iana", - extensions: [ - "ggt" - ] -}, - "application/vnd.geometry-explorer": { - source: "iana", - extensions: [ - "gex", - "gre" - ] -}, - "application/vnd.geonext": { - source: "iana", - extensions: [ - "gxt" - ] -}, - "application/vnd.geoplan": { - source: "iana", - extensions: [ - "g2w" - ] -}, - "application/vnd.geospace": { - source: "iana", - extensions: [ - "g3w" - ] -}, - "application/vnd.gerber": { - source: "iana" -}, - "application/vnd.globalplatform.card-content-mgt": { - source: "iana" -}, - "application/vnd.globalplatform.card-content-mgt-response": { - source: "iana" -}, - "application/vnd.gmx": { - source: "iana", - extensions: [ - "gmx" - ] -}, - "application/vnd.google-apps.document": { - compressible: false, - extensions: [ - "gdoc" - ] -}, - "application/vnd.google-apps.presentation": { - compressible: false, - extensions: [ - "gslides" - ] -}, - "application/vnd.google-apps.spreadsheet": { - compressible: false, - extensions: [ - "gsheet" - ] -}, - "application/vnd.google-earth.kml+xml": { - source: "iana", - compressible: true, - extensions: [ - "kml" - ] -}, - "application/vnd.google-earth.kmz": { - source: "iana", - compressible: false, - extensions: [ - "kmz" - ] -}, - "application/vnd.gov.sk.e-form+xml": { - source: "iana", - compressible: true -}, - "application/vnd.gov.sk.e-form+zip": { - source: "iana", - compressible: false -}, - "application/vnd.gov.sk.xmldatacontainer+xml": { - source: "iana", - compressible: true -}, - "application/vnd.grafeq": { - source: "iana", - extensions: [ - "gqf", - "gqs" - ] -}, - "application/vnd.gridmp": { - source: "iana" -}, - "application/vnd.groove-account": { - source: "iana", - extensions: [ - "gac" - ] -}, - "application/vnd.groove-help": { - source: "iana", - extensions: [ - "ghf" - ] -}, - "application/vnd.groove-identity-message": { - source: "iana", - extensions: [ - "gim" - ] -}, - "application/vnd.groove-injector": { - source: "iana", - extensions: [ - "grv" - ] -}, - "application/vnd.groove-tool-message": { - source: "iana", - extensions: [ - "gtm" - ] -}, - "application/vnd.groove-tool-template": { - source: "iana", - extensions: [ - "tpl" - ] -}, - "application/vnd.groove-vcard": { - source: "iana", - extensions: [ - "vcg" - ] -}, - "application/vnd.hal+json": { - source: "iana", - compressible: true -}, - "application/vnd.hal+xml": { - source: "iana", - compressible: true, - extensions: [ - "hal" - ] -}, - "application/vnd.handheld-entertainment+xml": { - source: "iana", - compressible: true, - extensions: [ - "zmm" - ] -}, - "application/vnd.hbci": { - source: "iana", - extensions: [ - "hbci" - ] -}, - "application/vnd.hc+json": { - source: "iana", - compressible: true -}, - "application/vnd.hcl-bireports": { - source: "iana" -}, - "application/vnd.hdt": { - source: "iana" -}, - "application/vnd.heroku+json": { - source: "iana", - compressible: true -}, - "application/vnd.hhe.lesson-player": { - source: "iana", - extensions: [ - "les" - ] -}, - "application/vnd.hl7cda+xml": { - source: "iana", - charset: "UTF-8", - compressible: true -}, - "application/vnd.hl7v2+xml": { - source: "iana", - charset: "UTF-8", - compressible: true -}, - "application/vnd.hp-hpgl": { - source: "iana", - extensions: [ - "hpgl" - ] -}, - "application/vnd.hp-hpid": { - source: "iana", - extensions: [ - "hpid" - ] -}, - "application/vnd.hp-hps": { - source: "iana", - extensions: [ - "hps" - ] -}, - "application/vnd.hp-jlyt": { - source: "iana", - extensions: [ - "jlt" - ] -}, - "application/vnd.hp-pcl": { - source: "iana", - extensions: [ - "pcl" - ] -}, - "application/vnd.hp-pclxl": { - source: "iana", - extensions: [ - "pclxl" - ] -}, - "application/vnd.httphone": { - source: "iana" -}, - "application/vnd.hydrostatix.sof-data": { - source: "iana", - extensions: [ - "sfd-hdstx" - ] -}, - "application/vnd.hyper+json": { - source: "iana", - compressible: true -}, - "application/vnd.hyper-item+json": { - source: "iana", - compressible: true -}, - "application/vnd.hyperdrive+json": { - source: "iana", - compressible: true -}, - "application/vnd.hzn-3d-crossword": { - source: "iana" -}, - "application/vnd.ibm.afplinedata": { - source: "iana" -}, - "application/vnd.ibm.electronic-media": { - source: "iana" -}, - "application/vnd.ibm.minipay": { - source: "iana", - extensions: [ - "mpy" - ] -}, - "application/vnd.ibm.modcap": { - source: "iana", - extensions: [ - "afp", - "listafp", - "list3820" - ] -}, - "application/vnd.ibm.rights-management": { - source: "iana", - extensions: [ - "irm" - ] -}, - "application/vnd.ibm.secure-container": { - source: "iana", - extensions: [ - "sc" - ] -}, - "application/vnd.iccprofile": { - source: "iana", - extensions: [ - "icc", - "icm" - ] -}, - "application/vnd.ieee.1905": { - source: "iana" -}, - "application/vnd.igloader": { - source: "iana", - extensions: [ - "igl" - ] -}, - "application/vnd.imagemeter.folder+zip": { - source: "iana", - compressible: false -}, - "application/vnd.imagemeter.image+zip": { - source: "iana", - compressible: false -}, - "application/vnd.immervision-ivp": { - source: "iana", - extensions: [ - "ivp" - ] -}, - "application/vnd.immervision-ivu": { - source: "iana", - extensions: [ - "ivu" - ] -}, - "application/vnd.ims.imsccv1p1": { - source: "iana" -}, - "application/vnd.ims.imsccv1p2": { - source: "iana" -}, - "application/vnd.ims.imsccv1p3": { - source: "iana" -}, - "application/vnd.ims.lis.v2.result+json": { - source: "iana", - compressible: true -}, - "application/vnd.ims.lti.v2.toolconsumerprofile+json": { - source: "iana", - compressible: true -}, - "application/vnd.ims.lti.v2.toolproxy+json": { - source: "iana", - compressible: true -}, - "application/vnd.ims.lti.v2.toolproxy.id+json": { - source: "iana", - compressible: true -}, - "application/vnd.ims.lti.v2.toolsettings+json": { - source: "iana", - compressible: true -}, - "application/vnd.ims.lti.v2.toolsettings.simple+json": { - source: "iana", - compressible: true -}, - "application/vnd.informedcontrol.rms+xml": { - source: "iana", - compressible: true -}, - "application/vnd.informix-visionary": { - source: "iana" -}, - "application/vnd.infotech.project": { - source: "iana" -}, - "application/vnd.infotech.project+xml": { - source: "iana", - compressible: true -}, - "application/vnd.innopath.wamp.notification": { - source: "iana" -}, - "application/vnd.insors.igm": { - source: "iana", - extensions: [ - "igm" - ] -}, - "application/vnd.intercon.formnet": { - source: "iana", - extensions: [ - "xpw", - "xpx" - ] -}, - "application/vnd.intergeo": { - source: "iana", - extensions: [ - "i2g" - ] -}, - "application/vnd.intertrust.digibox": { - source: "iana" -}, - "application/vnd.intertrust.nncp": { - source: "iana" -}, - "application/vnd.intu.qbo": { - source: "iana", - extensions: [ - "qbo" - ] -}, - "application/vnd.intu.qfx": { - source: "iana", - extensions: [ - "qfx" - ] -}, - "application/vnd.iptc.g2.catalogitem+xml": { - source: "iana", - compressible: true -}, - "application/vnd.iptc.g2.conceptitem+xml": { - source: "iana", - compressible: true -}, - "application/vnd.iptc.g2.knowledgeitem+xml": { - source: "iana", - compressible: true -}, - "application/vnd.iptc.g2.newsitem+xml": { - source: "iana", - compressible: true -}, - "application/vnd.iptc.g2.newsmessage+xml": { - source: "iana", - compressible: true -}, - "application/vnd.iptc.g2.packageitem+xml": { - source: "iana", - compressible: true -}, - "application/vnd.iptc.g2.planningitem+xml": { - source: "iana", - compressible: true -}, - "application/vnd.ipunplugged.rcprofile": { - source: "iana", - extensions: [ - "rcprofile" - ] -}, - "application/vnd.irepository.package+xml": { - source: "iana", - compressible: true, - extensions: [ - "irp" - ] -}, - "application/vnd.is-xpr": { - source: "iana", - extensions: [ - "xpr" - ] -}, - "application/vnd.isac.fcs": { - source: "iana", - extensions: [ - "fcs" - ] -}, - "application/vnd.iso11783-10+zip": { - source: "iana", - compressible: false -}, - "application/vnd.jam": { - source: "iana", - extensions: [ - "jam" - ] -}, - "application/vnd.japannet-directory-service": { - source: "iana" -}, - "application/vnd.japannet-jpnstore-wakeup": { - source: "iana" -}, - "application/vnd.japannet-payment-wakeup": { - source: "iana" -}, - "application/vnd.japannet-registration": { - source: "iana" -}, - "application/vnd.japannet-registration-wakeup": { - source: "iana" -}, - "application/vnd.japannet-setstore-wakeup": { - source: "iana" -}, - "application/vnd.japannet-verification": { - source: "iana" -}, - "application/vnd.japannet-verification-wakeup": { - source: "iana" -}, - "application/vnd.jcp.javame.midlet-rms": { - source: "iana", - extensions: [ - "rms" - ] -}, - "application/vnd.jisp": { - source: "iana", - extensions: [ - "jisp" - ] -}, - "application/vnd.joost.joda-archive": { - source: "iana", - extensions: [ - "joda" - ] -}, - "application/vnd.jsk.isdn-ngn": { - source: "iana" -}, - "application/vnd.kahootz": { - source: "iana", - extensions: [ - "ktz", - "ktr" - ] -}, - "application/vnd.kde.karbon": { - source: "iana", - extensions: [ - "karbon" - ] -}, - "application/vnd.kde.kchart": { - source: "iana", - extensions: [ - "chrt" - ] -}, - "application/vnd.kde.kformula": { - source: "iana", - extensions: [ - "kfo" - ] -}, - "application/vnd.kde.kivio": { - source: "iana", - extensions: [ - "flw" - ] -}, - "application/vnd.kde.kontour": { - source: "iana", - extensions: [ - "kon" - ] -}, - "application/vnd.kde.kpresenter": { - source: "iana", - extensions: [ - "kpr", - "kpt" - ] -}, - "application/vnd.kde.kspread": { - source: "iana", - extensions: [ - "ksp" - ] -}, - "application/vnd.kde.kword": { - source: "iana", - extensions: [ - "kwd", - "kwt" - ] -}, - "application/vnd.kenameaapp": { - source: "iana", - extensions: [ - "htke" - ] -}, - "application/vnd.kidspiration": { - source: "iana", - extensions: [ - "kia" - ] -}, - "application/vnd.kinar": { - source: "iana", - extensions: [ - "kne", - "knp" - ] -}, - "application/vnd.koan": { - source: "iana", - extensions: [ - "skp", - "skd", - "skt", - "skm" - ] -}, - "application/vnd.kodak-descriptor": { - source: "iana", - extensions: [ - "sse" - ] -}, - "application/vnd.las": { - source: "iana" -}, - "application/vnd.las.las+json": { - source: "iana", - compressible: true -}, - "application/vnd.las.las+xml": { - source: "iana", - compressible: true, - extensions: [ - "lasxml" - ] -}, - "application/vnd.laszip": { - source: "iana" -}, - "application/vnd.leap+json": { - source: "iana", - compressible: true -}, - "application/vnd.liberty-request+xml": { - source: "iana", - compressible: true -}, - "application/vnd.llamagraphics.life-balance.desktop": { - source: "iana", - extensions: [ - "lbd" - ] -}, - "application/vnd.llamagraphics.life-balance.exchange+xml": { - source: "iana", - compressible: true, - extensions: [ - "lbe" - ] -}, - "application/vnd.logipipe.circuit+zip": { - source: "iana", - compressible: false -}, - "application/vnd.loom": { - source: "iana" -}, - "application/vnd.lotus-1-2-3": { - source: "iana", - extensions: [ - "123" - ] -}, - "application/vnd.lotus-approach": { - source: "iana", - extensions: [ - "apr" - ] -}, - "application/vnd.lotus-freelance": { - source: "iana", - extensions: [ - "pre" - ] -}, - "application/vnd.lotus-notes": { - source: "iana", - extensions: [ - "nsf" - ] -}, - "application/vnd.lotus-organizer": { - source: "iana", - extensions: [ - "org" - ] -}, - "application/vnd.lotus-screencam": { - source: "iana", - extensions: [ - "scm" - ] -}, - "application/vnd.lotus-wordpro": { - source: "iana", - extensions: [ - "lwp" - ] -}, - "application/vnd.macports.portpkg": { - source: "iana", - extensions: [ - "portpkg" - ] -}, - "application/vnd.mapbox-vector-tile": { - source: "iana", - extensions: [ - "mvt" - ] -}, - "application/vnd.marlin.drm.actiontoken+xml": { - source: "iana", - compressible: true -}, - "application/vnd.marlin.drm.conftoken+xml": { - source: "iana", - compressible: true -}, - "application/vnd.marlin.drm.license+xml": { - source: "iana", - compressible: true -}, - "application/vnd.marlin.drm.mdcf": { - source: "iana" -}, - "application/vnd.mason+json": { - source: "iana", - compressible: true -}, - "application/vnd.maxar.archive.3tz+zip": { - source: "iana", - compressible: false -}, - "application/vnd.maxmind.maxmind-db": { - source: "iana" -}, - "application/vnd.mcd": { - source: "iana", - extensions: [ - "mcd" - ] -}, - "application/vnd.medcalcdata": { - source: "iana", - extensions: [ - "mc1" - ] -}, - "application/vnd.mediastation.cdkey": { - source: "iana", - extensions: [ - "cdkey" - ] -}, - "application/vnd.meridian-slingshot": { - source: "iana" -}, - "application/vnd.mfer": { - source: "iana", - extensions: [ - "mwf" - ] -}, - "application/vnd.mfmp": { - source: "iana", - extensions: [ - "mfm" - ] -}, - "application/vnd.micro+json": { - source: "iana", - compressible: true -}, - "application/vnd.micrografx.flo": { - source: "iana", - extensions: [ - "flo" - ] -}, - "application/vnd.micrografx.igx": { - source: "iana", - extensions: [ - "igx" - ] -}, - "application/vnd.microsoft.portable-executable": { - source: "iana" -}, - "application/vnd.microsoft.windows.thumbnail-cache": { - source: "iana" -}, - "application/vnd.miele+json": { - source: "iana", - compressible: true -}, - "application/vnd.mif": { - source: "iana", - extensions: [ - "mif" - ] -}, - "application/vnd.minisoft-hp3000-save": { - source: "iana" -}, - "application/vnd.mitsubishi.misty-guard.trustweb": { - source: "iana" -}, - "application/vnd.mobius.daf": { - source: "iana", - extensions: [ - "daf" - ] -}, - "application/vnd.mobius.dis": { - source: "iana", - extensions: [ - "dis" - ] -}, - "application/vnd.mobius.mbk": { - source: "iana", - extensions: [ - "mbk" - ] -}, - "application/vnd.mobius.mqy": { - source: "iana", - extensions: [ - "mqy" - ] -}, - "application/vnd.mobius.msl": { - source: "iana", - extensions: [ - "msl" - ] -}, - "application/vnd.mobius.plc": { - source: "iana", - extensions: [ - "plc" - ] -}, - "application/vnd.mobius.txf": { - source: "iana", - extensions: [ - "txf" - ] -}, - "application/vnd.mophun.application": { - source: "iana", - extensions: [ - "mpn" - ] -}, - "application/vnd.mophun.certificate": { - source: "iana", - extensions: [ - "mpc" - ] -}, - "application/vnd.motorola.flexsuite": { - source: "iana" -}, - "application/vnd.motorola.flexsuite.adsi": { - source: "iana" -}, - "application/vnd.motorola.flexsuite.fis": { - source: "iana" -}, - "application/vnd.motorola.flexsuite.gotap": { - source: "iana" -}, - "application/vnd.motorola.flexsuite.kmr": { - source: "iana" -}, - "application/vnd.motorola.flexsuite.ttc": { - source: "iana" -}, - "application/vnd.motorola.flexsuite.wem": { - source: "iana" -}, - "application/vnd.motorola.iprm": { - source: "iana" -}, - "application/vnd.mozilla.xul+xml": { - source: "iana", - compressible: true, - extensions: [ - "xul" - ] -}, - "application/vnd.ms-3mfdocument": { - source: "iana" -}, - "application/vnd.ms-artgalry": { - source: "iana", - extensions: [ - "cil" - ] -}, - "application/vnd.ms-asf": { - source: "iana" -}, - "application/vnd.ms-cab-compressed": { - source: "iana", - extensions: [ - "cab" - ] -}, - "application/vnd.ms-color.iccprofile": { - source: "apache" -}, - "application/vnd.ms-excel": { - source: "iana", - compressible: false, - extensions: [ - "xls", - "xlm", - "xla", - "xlc", - "xlt", - "xlw" - ] -}, - "application/vnd.ms-excel.addin.macroenabled.12": { - source: "iana", - extensions: [ - "xlam" - ] -}, - "application/vnd.ms-excel.sheet.binary.macroenabled.12": { - source: "iana", - extensions: [ - "xlsb" - ] -}, - "application/vnd.ms-excel.sheet.macroenabled.12": { - source: "iana", - extensions: [ - "xlsm" - ] -}, - "application/vnd.ms-excel.template.macroenabled.12": { - source: "iana", - extensions: [ - "xltm" - ] -}, - "application/vnd.ms-fontobject": { - source: "iana", - compressible: true, - extensions: [ - "eot" - ] -}, - "application/vnd.ms-htmlhelp": { - source: "iana", - extensions: [ - "chm" - ] -}, - "application/vnd.ms-ims": { - source: "iana", - extensions: [ - "ims" - ] -}, - "application/vnd.ms-lrm": { - source: "iana", - extensions: [ - "lrm" - ] -}, - "application/vnd.ms-office.activex+xml": { - source: "iana", - compressible: true -}, - "application/vnd.ms-officetheme": { - source: "iana", - extensions: [ - "thmx" - ] -}, - "application/vnd.ms-opentype": { - source: "apache", - compressible: true -}, - "application/vnd.ms-outlook": { - compressible: false, - extensions: [ - "msg" - ] -}, - "application/vnd.ms-package.obfuscated-opentype": { - source: "apache" -}, - "application/vnd.ms-pki.seccat": { - source: "apache", - extensions: [ - "cat" - ] -}, - "application/vnd.ms-pki.stl": { - source: "apache", - extensions: [ - "stl" - ] -}, - "application/vnd.ms-playready.initiator+xml": { - source: "iana", - compressible: true -}, - "application/vnd.ms-powerpoint": { - source: "iana", - compressible: false, - extensions: [ - "ppt", - "pps", - "pot" - ] -}, - "application/vnd.ms-powerpoint.addin.macroenabled.12": { - source: "iana", - extensions: [ - "ppam" - ] -}, - "application/vnd.ms-powerpoint.presentation.macroenabled.12": { - source: "iana", - extensions: [ - "pptm" - ] -}, - "application/vnd.ms-powerpoint.slide.macroenabled.12": { - source: "iana", - extensions: [ - "sldm" - ] -}, - "application/vnd.ms-powerpoint.slideshow.macroenabled.12": { - source: "iana", - extensions: [ - "ppsm" - ] -}, - "application/vnd.ms-powerpoint.template.macroenabled.12": { - source: "iana", - extensions: [ - "potm" - ] -}, - "application/vnd.ms-printdevicecapabilities+xml": { - source: "iana", - compressible: true -}, - "application/vnd.ms-printing.printticket+xml": { - source: "apache", - compressible: true -}, - "application/vnd.ms-printschematicket+xml": { - source: "iana", - compressible: true -}, - "application/vnd.ms-project": { - source: "iana", - extensions: [ - "mpp", - "mpt" - ] -}, - "application/vnd.ms-tnef": { - source: "iana" -}, - "application/vnd.ms-windows.devicepairing": { - source: "iana" -}, - "application/vnd.ms-windows.nwprinting.oob": { - source: "iana" -}, - "application/vnd.ms-windows.printerpairing": { - source: "iana" -}, - "application/vnd.ms-windows.wsd.oob": { - source: "iana" -}, - "application/vnd.ms-wmdrm.lic-chlg-req": { - source: "iana" -}, - "application/vnd.ms-wmdrm.lic-resp": { - source: "iana" -}, - "application/vnd.ms-wmdrm.meter-chlg-req": { - source: "iana" -}, - "application/vnd.ms-wmdrm.meter-resp": { - source: "iana" -}, - "application/vnd.ms-word.document.macroenabled.12": { - source: "iana", - extensions: [ - "docm" - ] -}, - "application/vnd.ms-word.template.macroenabled.12": { - source: "iana", - extensions: [ - "dotm" - ] -}, - "application/vnd.ms-works": { - source: "iana", - extensions: [ - "wps", - "wks", - "wcm", - "wdb" - ] -}, - "application/vnd.ms-wpl": { - source: "iana", - extensions: [ - "wpl" - ] -}, - "application/vnd.ms-xpsdocument": { - source: "iana", - compressible: false, - extensions: [ - "xps" - ] -}, - "application/vnd.msa-disk-image": { - source: "iana" -}, - "application/vnd.mseq": { - source: "iana", - extensions: [ - "mseq" - ] -}, - "application/vnd.msign": { - source: "iana" -}, - "application/vnd.multiad.creator": { - source: "iana" -}, - "application/vnd.multiad.creator.cif": { - source: "iana" -}, - "application/vnd.music-niff": { - source: "iana" -}, - "application/vnd.musician": { - source: "iana", - extensions: [ - "mus" - ] -}, - "application/vnd.muvee.style": { - source: "iana", - extensions: [ - "msty" - ] -}, - "application/vnd.mynfc": { - source: "iana", - extensions: [ - "taglet" - ] -}, - "application/vnd.nacamar.ybrid+json": { - source: "iana", - compressible: true -}, - "application/vnd.ncd.control": { - source: "iana" -}, - "application/vnd.ncd.reference": { - source: "iana" -}, - "application/vnd.nearst.inv+json": { - source: "iana", - compressible: true -}, - "application/vnd.nebumind.line": { - source: "iana" -}, - "application/vnd.nervana": { - source: "iana" -}, - "application/vnd.netfpx": { - source: "iana" -}, - "application/vnd.neurolanguage.nlu": { - source: "iana", - extensions: [ - "nlu" - ] -}, - "application/vnd.nimn": { - source: "iana" -}, - "application/vnd.nintendo.nitro.rom": { - source: "iana" -}, - "application/vnd.nintendo.snes.rom": { - source: "iana" -}, - "application/vnd.nitf": { - source: "iana", - extensions: [ - "ntf", - "nitf" - ] -}, - "application/vnd.noblenet-directory": { - source: "iana", - extensions: [ - "nnd" - ] -}, - "application/vnd.noblenet-sealer": { - source: "iana", - extensions: [ - "nns" - ] -}, - "application/vnd.noblenet-web": { - source: "iana", - extensions: [ - "nnw" - ] -}, - "application/vnd.nokia.catalogs": { - source: "iana" -}, - "application/vnd.nokia.conml+wbxml": { - source: "iana" -}, - "application/vnd.nokia.conml+xml": { - source: "iana", - compressible: true -}, - "application/vnd.nokia.iptv.config+xml": { - source: "iana", - compressible: true -}, - "application/vnd.nokia.isds-radio-presets": { - source: "iana" -}, - "application/vnd.nokia.landmark+wbxml": { - source: "iana" -}, - "application/vnd.nokia.landmark+xml": { - source: "iana", - compressible: true -}, - "application/vnd.nokia.landmarkcollection+xml": { - source: "iana", - compressible: true -}, - "application/vnd.nokia.n-gage.ac+xml": { - source: "iana", - compressible: true, - extensions: [ - "ac" - ] -}, - "application/vnd.nokia.n-gage.data": { - source: "iana", - extensions: [ - "ngdat" - ] -}, - "application/vnd.nokia.n-gage.symbian.install": { - source: "iana", - extensions: [ - "n-gage" - ] -}, - "application/vnd.nokia.ncd": { - source: "iana" -}, - "application/vnd.nokia.pcd+wbxml": { - source: "iana" -}, - "application/vnd.nokia.pcd+xml": { - source: "iana", - compressible: true -}, - "application/vnd.nokia.radio-preset": { - source: "iana", - extensions: [ - "rpst" - ] -}, - "application/vnd.nokia.radio-presets": { - source: "iana", - extensions: [ - "rpss" - ] -}, - "application/vnd.novadigm.edm": { - source: "iana", - extensions: [ - "edm" - ] -}, - "application/vnd.novadigm.edx": { - source: "iana", - extensions: [ - "edx" - ] -}, - "application/vnd.novadigm.ext": { - source: "iana", - extensions: [ - "ext" - ] -}, - "application/vnd.ntt-local.content-share": { - source: "iana" -}, - "application/vnd.ntt-local.file-transfer": { - source: "iana" -}, - "application/vnd.ntt-local.ogw_remote-access": { - source: "iana" -}, - "application/vnd.ntt-local.sip-ta_remote": { - source: "iana" -}, - "application/vnd.ntt-local.sip-ta_tcp_stream": { - source: "iana" -}, - "application/vnd.oasis.opendocument.chart": { - source: "iana", - extensions: [ - "odc" - ] -}, - "application/vnd.oasis.opendocument.chart-template": { - source: "iana", - extensions: [ - "otc" - ] -}, - "application/vnd.oasis.opendocument.database": { - source: "iana", - extensions: [ - "odb" - ] -}, - "application/vnd.oasis.opendocument.formula": { - source: "iana", - extensions: [ - "odf" - ] -}, - "application/vnd.oasis.opendocument.formula-template": { - source: "iana", - extensions: [ - "odft" - ] -}, - "application/vnd.oasis.opendocument.graphics": { - source: "iana", - compressible: false, - extensions: [ - "odg" - ] -}, - "application/vnd.oasis.opendocument.graphics-template": { - source: "iana", - extensions: [ - "otg" - ] -}, - "application/vnd.oasis.opendocument.image": { - source: "iana", - extensions: [ - "odi" - ] -}, - "application/vnd.oasis.opendocument.image-template": { - source: "iana", - extensions: [ - "oti" - ] -}, - "application/vnd.oasis.opendocument.presentation": { - source: "iana", - compressible: false, - extensions: [ - "odp" - ] -}, - "application/vnd.oasis.opendocument.presentation-template": { - source: "iana", - extensions: [ - "otp" - ] -}, - "application/vnd.oasis.opendocument.spreadsheet": { - source: "iana", - compressible: false, - extensions: [ - "ods" - ] -}, - "application/vnd.oasis.opendocument.spreadsheet-template": { - source: "iana", - extensions: [ - "ots" - ] -}, - "application/vnd.oasis.opendocument.text": { - source: "iana", - compressible: false, - extensions: [ - "odt" - ] -}, - "application/vnd.oasis.opendocument.text-master": { - source: "iana", - extensions: [ - "odm" - ] -}, - "application/vnd.oasis.opendocument.text-template": { - source: "iana", - extensions: [ - "ott" - ] -}, - "application/vnd.oasis.opendocument.text-web": { - source: "iana", - extensions: [ - "oth" - ] -}, - "application/vnd.obn": { - source: "iana" -}, - "application/vnd.ocf+cbor": { - source: "iana" -}, - "application/vnd.oci.image.manifest.v1+json": { - source: "iana", - compressible: true -}, - "application/vnd.oftn.l10n+json": { - source: "iana", - compressible: true -}, - "application/vnd.oipf.contentaccessdownload+xml": { - source: "iana", - compressible: true -}, - "application/vnd.oipf.contentaccessstreaming+xml": { - source: "iana", - compressible: true -}, - "application/vnd.oipf.cspg-hexbinary": { - source: "iana" -}, - "application/vnd.oipf.dae.svg+xml": { - source: "iana", - compressible: true -}, - "application/vnd.oipf.dae.xhtml+xml": { - source: "iana", - compressible: true -}, - "application/vnd.oipf.mippvcontrolmessage+xml": { - source: "iana", - compressible: true -}, - "application/vnd.oipf.pae.gem": { - source: "iana" -}, - "application/vnd.oipf.spdiscovery+xml": { - source: "iana", - compressible: true -}, - "application/vnd.oipf.spdlist+xml": { - source: "iana", - compressible: true -}, - "application/vnd.oipf.ueprofile+xml": { - source: "iana", - compressible: true -}, - "application/vnd.oipf.userprofile+xml": { - source: "iana", - compressible: true -}, - "application/vnd.olpc-sugar": { - source: "iana", - extensions: [ - "xo" - ] -}, - "application/vnd.oma-scws-config": { - source: "iana" -}, - "application/vnd.oma-scws-http-request": { - source: "iana" -}, - "application/vnd.oma-scws-http-response": { - source: "iana" -}, - "application/vnd.oma.bcast.associated-procedure-parameter+xml": { - source: "iana", - compressible: true -}, - "application/vnd.oma.bcast.drm-trigger+xml": { - source: "iana", - compressible: true -}, - "application/vnd.oma.bcast.imd+xml": { - source: "iana", - compressible: true -}, - "application/vnd.oma.bcast.ltkm": { - source: "iana" -}, - "application/vnd.oma.bcast.notification+xml": { - source: "iana", - compressible: true -}, - "application/vnd.oma.bcast.provisioningtrigger": { - source: "iana" -}, - "application/vnd.oma.bcast.sgboot": { - source: "iana" -}, - "application/vnd.oma.bcast.sgdd+xml": { - source: "iana", - compressible: true -}, - "application/vnd.oma.bcast.sgdu": { - source: "iana" -}, - "application/vnd.oma.bcast.simple-symbol-container": { - source: "iana" -}, - "application/vnd.oma.bcast.smartcard-trigger+xml": { - source: "iana", - compressible: true -}, - "application/vnd.oma.bcast.sprov+xml": { - source: "iana", - compressible: true -}, - "application/vnd.oma.bcast.stkm": { - source: "iana" -}, - "application/vnd.oma.cab-address-book+xml": { - source: "iana", - compressible: true -}, - "application/vnd.oma.cab-feature-handler+xml": { - source: "iana", - compressible: true -}, - "application/vnd.oma.cab-pcc+xml": { - source: "iana", - compressible: true -}, - "application/vnd.oma.cab-subs-invite+xml": { - source: "iana", - compressible: true -}, - "application/vnd.oma.cab-user-prefs+xml": { - source: "iana", - compressible: true -}, - "application/vnd.oma.dcd": { - source: "iana" -}, - "application/vnd.oma.dcdc": { - source: "iana" -}, - "application/vnd.oma.dd2+xml": { - source: "iana", - compressible: true, - extensions: [ - "dd2" - ] -}, - "application/vnd.oma.drm.risd+xml": { - source: "iana", - compressible: true -}, - "application/vnd.oma.group-usage-list+xml": { - source: "iana", - compressible: true -}, - "application/vnd.oma.lwm2m+cbor": { - source: "iana" -}, - "application/vnd.oma.lwm2m+json": { - source: "iana", - compressible: true -}, - "application/vnd.oma.lwm2m+tlv": { - source: "iana" -}, - "application/vnd.oma.pal+xml": { - source: "iana", - compressible: true -}, - "application/vnd.oma.poc.detailed-progress-report+xml": { - source: "iana", - compressible: true -}, - "application/vnd.oma.poc.final-report+xml": { - source: "iana", - compressible: true -}, - "application/vnd.oma.poc.groups+xml": { - source: "iana", - compressible: true -}, - "application/vnd.oma.poc.invocation-descriptor+xml": { - source: "iana", - compressible: true -}, - "application/vnd.oma.poc.optimized-progress-report+xml": { - source: "iana", - compressible: true -}, - "application/vnd.oma.push": { - source: "iana" -}, - "application/vnd.oma.scidm.messages+xml": { - source: "iana", - compressible: true -}, - "application/vnd.oma.xcap-directory+xml": { - source: "iana", - compressible: true -}, - "application/vnd.omads-email+xml": { - source: "iana", - charset: "UTF-8", - compressible: true -}, - "application/vnd.omads-file+xml": { - source: "iana", - charset: "UTF-8", - compressible: true -}, - "application/vnd.omads-folder+xml": { - source: "iana", - charset: "UTF-8", - compressible: true -}, - "application/vnd.omaloc-supl-init": { - source: "iana" -}, - "application/vnd.onepager": { - source: "iana" -}, - "application/vnd.onepagertamp": { - source: "iana" -}, - "application/vnd.onepagertamx": { - source: "iana" -}, - "application/vnd.onepagertat": { - source: "iana" -}, - "application/vnd.onepagertatp": { - source: "iana" -}, - "application/vnd.onepagertatx": { - source: "iana" -}, - "application/vnd.openblox.game+xml": { - source: "iana", - compressible: true, - extensions: [ - "obgx" - ] -}, - "application/vnd.openblox.game-binary": { - source: "iana" -}, - "application/vnd.openeye.oeb": { - source: "iana" -}, - "application/vnd.openofficeorg.extension": { - source: "apache", - extensions: [ - "oxt" - ] -}, - "application/vnd.openstreetmap.data+xml": { - source: "iana", - compressible: true, - extensions: [ - "osm" - ] -}, - "application/vnd.opentimestamps.ots": { - source: "iana" -}, - "application/vnd.openxmlformats-officedocument.custom-properties+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.customxmlproperties+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.drawing+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.extended-properties+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.presentationml.comments+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.presentationml.presentation": { - source: "iana", - compressible: false, - extensions: [ - "pptx" - ] -}, - "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.presentationml.slide": { - source: "iana", - extensions: [ - "sldx" - ] -}, - "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.presentationml.slideshow": { - source: "iana", - extensions: [ - "ppsx" - ] -}, - "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.presentationml.tags+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.presentationml.template": { - source: "iana", - extensions: [ - "potx" - ] -}, - "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { - source: "iana", - compressible: false, - extensions: [ - "xlsx" - ] -}, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.spreadsheetml.template": { - source: "iana", - extensions: [ - "xltx" - ] -}, - "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.theme+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.themeoverride+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.vmldrawing": { - source: "iana" -}, - "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.wordprocessingml.document": { - source: "iana", - compressible: false, - extensions: [ - "docx" - ] -}, - "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.wordprocessingml.template": { - source: "iana", - extensions: [ - "dotx" - ] -}, - "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-package.core-properties+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": { - source: "iana", - compressible: true -}, - "application/vnd.openxmlformats-package.relationships+xml": { - source: "iana", - compressible: true -}, - "application/vnd.oracle.resource+json": { - source: "iana", - compressible: true -}, - "application/vnd.orange.indata": { - source: "iana" -}, - "application/vnd.osa.netdeploy": { - source: "iana" -}, - "application/vnd.osgeo.mapguide.package": { - source: "iana", - extensions: [ - "mgp" - ] -}, - "application/vnd.osgi.bundle": { - source: "iana" -}, - "application/vnd.osgi.dp": { - source: "iana", - extensions: [ - "dp" - ] -}, - "application/vnd.osgi.subsystem": { - source: "iana", - extensions: [ - "esa" - ] -}, - "application/vnd.otps.ct-kip+xml": { - source: "iana", - compressible: true -}, - "application/vnd.oxli.countgraph": { - source: "iana" -}, - "application/vnd.pagerduty+json": { - source: "iana", - compressible: true -}, - "application/vnd.palm": { - source: "iana", - extensions: [ - "pdb", - "pqa", - "oprc" - ] -}, - "application/vnd.panoply": { - source: "iana" -}, - "application/vnd.paos.xml": { - source: "iana" -}, - "application/vnd.patentdive": { - source: "iana" -}, - "application/vnd.patientecommsdoc": { - source: "iana" -}, - "application/vnd.pawaafile": { - source: "iana", - extensions: [ - "paw" - ] -}, - "application/vnd.pcos": { - source: "iana" -}, - "application/vnd.pg.format": { - source: "iana", - extensions: [ - "str" - ] -}, - "application/vnd.pg.osasli": { - source: "iana", - extensions: [ - "ei6" - ] -}, - "application/vnd.piaccess.application-licence": { - source: "iana" -}, - "application/vnd.picsel": { - source: "iana", - extensions: [ - "efif" - ] -}, - "application/vnd.pmi.widget": { - source: "iana", - extensions: [ - "wg" - ] -}, - "application/vnd.poc.group-advertisement+xml": { - source: "iana", - compressible: true -}, - "application/vnd.pocketlearn": { - source: "iana", - extensions: [ - "plf" - ] -}, - "application/vnd.powerbuilder6": { - source: "iana", - extensions: [ - "pbd" - ] -}, - "application/vnd.powerbuilder6-s": { - source: "iana" -}, - "application/vnd.powerbuilder7": { - source: "iana" -}, - "application/vnd.powerbuilder7-s": { - source: "iana" -}, - "application/vnd.powerbuilder75": { - source: "iana" -}, - "application/vnd.powerbuilder75-s": { - source: "iana" -}, - "application/vnd.preminet": { - source: "iana" -}, - "application/vnd.previewsystems.box": { - source: "iana", - extensions: [ - "box" - ] -}, - "application/vnd.proteus.magazine": { - source: "iana", - extensions: [ - "mgz" - ] -}, - "application/vnd.psfs": { - source: "iana" -}, - "application/vnd.publishare-delta-tree": { - source: "iana", - extensions: [ - "qps" - ] -}, - "application/vnd.pvi.ptid1": { - source: "iana", - extensions: [ - "ptid" - ] -}, - "application/vnd.pwg-multiplexed": { - source: "iana" -}, - "application/vnd.pwg-xhtml-print+xml": { - source: "iana", - compressible: true -}, - "application/vnd.qualcomm.brew-app-res": { - source: "iana" -}, - "application/vnd.quarantainenet": { - source: "iana" -}, - "application/vnd.quark.quarkxpress": { - source: "iana", - extensions: [ - "qxd", - "qxt", - "qwd", - "qwt", - "qxl", - "qxb" - ] -}, - "application/vnd.quobject-quoxdocument": { - source: "iana" -}, - "application/vnd.radisys.moml+xml": { - source: "iana", - compressible: true -}, - "application/vnd.radisys.msml+xml": { - source: "iana", - compressible: true -}, - "application/vnd.radisys.msml-audit+xml": { - source: "iana", - compressible: true -}, - "application/vnd.radisys.msml-audit-conf+xml": { - source: "iana", - compressible: true -}, - "application/vnd.radisys.msml-audit-conn+xml": { - source: "iana", - compressible: true -}, - "application/vnd.radisys.msml-audit-dialog+xml": { - source: "iana", - compressible: true -}, - "application/vnd.radisys.msml-audit-stream+xml": { - source: "iana", - compressible: true -}, - "application/vnd.radisys.msml-conf+xml": { - source: "iana", - compressible: true -}, - "application/vnd.radisys.msml-dialog+xml": { - source: "iana", - compressible: true -}, - "application/vnd.radisys.msml-dialog-base+xml": { - source: "iana", - compressible: true -}, - "application/vnd.radisys.msml-dialog-fax-detect+xml": { - source: "iana", - compressible: true -}, - "application/vnd.radisys.msml-dialog-fax-sendrecv+xml": { - source: "iana", - compressible: true -}, - "application/vnd.radisys.msml-dialog-group+xml": { - source: "iana", - compressible: true -}, - "application/vnd.radisys.msml-dialog-speech+xml": { - source: "iana", - compressible: true -}, - "application/vnd.radisys.msml-dialog-transform+xml": { - source: "iana", - compressible: true -}, - "application/vnd.rainstor.data": { - source: "iana" -}, - "application/vnd.rapid": { - source: "iana" -}, - "application/vnd.rar": { - source: "iana", - extensions: [ - "rar" - ] -}, - "application/vnd.realvnc.bed": { - source: "iana", - extensions: [ - "bed" - ] -}, - "application/vnd.recordare.musicxml": { - source: "iana", - extensions: [ - "mxl" - ] -}, - "application/vnd.recordare.musicxml+xml": { - source: "iana", - compressible: true, - extensions: [ - "musicxml" - ] -}, - "application/vnd.renlearn.rlprint": { - source: "iana" -}, - "application/vnd.resilient.logic": { - source: "iana" -}, - "application/vnd.restful+json": { - source: "iana", - compressible: true -}, - "application/vnd.rig.cryptonote": { - source: "iana", - extensions: [ - "cryptonote" - ] -}, - "application/vnd.rim.cod": { - source: "apache", - extensions: [ - "cod" - ] -}, - "application/vnd.rn-realmedia": { - source: "apache", - extensions: [ - "rm" - ] -}, - "application/vnd.rn-realmedia-vbr": { - source: "apache", - extensions: [ - "rmvb" - ] -}, - "application/vnd.route66.link66+xml": { - source: "iana", - compressible: true, - extensions: [ - "link66" - ] -}, - "application/vnd.rs-274x": { - source: "iana" -}, - "application/vnd.ruckus.download": { - source: "iana" -}, - "application/vnd.s3sms": { - source: "iana" -}, - "application/vnd.sailingtracker.track": { - source: "iana", - extensions: [ - "st" - ] -}, - "application/vnd.sar": { - source: "iana" -}, - "application/vnd.sbm.cid": { - source: "iana" -}, - "application/vnd.sbm.mid2": { - source: "iana" -}, - "application/vnd.scribus": { - source: "iana" -}, - "application/vnd.sealed.3df": { - source: "iana" -}, - "application/vnd.sealed.csf": { - source: "iana" -}, - "application/vnd.sealed.doc": { - source: "iana" -}, - "application/vnd.sealed.eml": { - source: "iana" -}, - "application/vnd.sealed.mht": { - source: "iana" -}, - "application/vnd.sealed.net": { - source: "iana" -}, - "application/vnd.sealed.ppt": { - source: "iana" -}, - "application/vnd.sealed.tiff": { - source: "iana" -}, - "application/vnd.sealed.xls": { - source: "iana" -}, - "application/vnd.sealedmedia.softseal.html": { - source: "iana" -}, - "application/vnd.sealedmedia.softseal.pdf": { - source: "iana" -}, - "application/vnd.seemail": { - source: "iana", - extensions: [ - "see" - ] -}, - "application/vnd.seis+json": { - source: "iana", - compressible: true -}, - "application/vnd.sema": { - source: "iana", - extensions: [ - "sema" - ] -}, - "application/vnd.semd": { - source: "iana", - extensions: [ - "semd" - ] -}, - "application/vnd.semf": { - source: "iana", - extensions: [ - "semf" - ] -}, - "application/vnd.shade-save-file": { - source: "iana" -}, - "application/vnd.shana.informed.formdata": { - source: "iana", - extensions: [ - "ifm" - ] -}, - "application/vnd.shana.informed.formtemplate": { - source: "iana", - extensions: [ - "itp" - ] -}, - "application/vnd.shana.informed.interchange": { - source: "iana", - extensions: [ - "iif" - ] -}, - "application/vnd.shana.informed.package": { - source: "iana", - extensions: [ - "ipk" - ] -}, - "application/vnd.shootproof+json": { - source: "iana", - compressible: true -}, - "application/vnd.shopkick+json": { - source: "iana", - compressible: true -}, - "application/vnd.shp": { - source: "iana" -}, - "application/vnd.shx": { - source: "iana" -}, - "application/vnd.sigrok.session": { - source: "iana" -}, - "application/vnd.simtech-mindmapper": { - source: "iana", - extensions: [ - "twd", - "twds" - ] -}, - "application/vnd.siren+json": { - source: "iana", - compressible: true -}, - "application/vnd.smaf": { - source: "iana", - extensions: [ - "mmf" - ] -}, - "application/vnd.smart.notebook": { - source: "iana" -}, - "application/vnd.smart.teacher": { - source: "iana", - extensions: [ - "teacher" - ] -}, - "application/vnd.snesdev-page-table": { - source: "iana" -}, - "application/vnd.software602.filler.form+xml": { - source: "iana", - compressible: true, - extensions: [ - "fo" - ] -}, - "application/vnd.software602.filler.form-xml-zip": { - source: "iana" -}, - "application/vnd.solent.sdkm+xml": { - source: "iana", - compressible: true, - extensions: [ - "sdkm", - "sdkd" - ] -}, - "application/vnd.spotfire.dxp": { - source: "iana", - extensions: [ - "dxp" - ] -}, - "application/vnd.spotfire.sfs": { - source: "iana", - extensions: [ - "sfs" - ] -}, - "application/vnd.sqlite3": { - source: "iana" -}, - "application/vnd.sss-cod": { - source: "iana" -}, - "application/vnd.sss-dtf": { - source: "iana" -}, - "application/vnd.sss-ntf": { - source: "iana" -}, - "application/vnd.stardivision.calc": { - source: "apache", - extensions: [ - "sdc" - ] -}, - "application/vnd.stardivision.draw": { - source: "apache", - extensions: [ - "sda" - ] -}, - "application/vnd.stardivision.impress": { - source: "apache", - extensions: [ - "sdd" - ] -}, - "application/vnd.stardivision.math": { - source: "apache", - extensions: [ - "smf" - ] -}, - "application/vnd.stardivision.writer": { - source: "apache", - extensions: [ - "sdw", - "vor" - ] -}, - "application/vnd.stardivision.writer-global": { - source: "apache", - extensions: [ - "sgl" - ] -}, - "application/vnd.stepmania.package": { - source: "iana", - extensions: [ - "smzip" - ] -}, - "application/vnd.stepmania.stepchart": { - source: "iana", - extensions: [ - "sm" - ] -}, - "application/vnd.street-stream": { - source: "iana" -}, - "application/vnd.sun.wadl+xml": { - source: "iana", - compressible: true, - extensions: [ - "wadl" - ] -}, - "application/vnd.sun.xml.calc": { - source: "apache", - extensions: [ - "sxc" - ] -}, - "application/vnd.sun.xml.calc.template": { - source: "apache", - extensions: [ - "stc" - ] -}, - "application/vnd.sun.xml.draw": { - source: "apache", - extensions: [ - "sxd" - ] -}, - "application/vnd.sun.xml.draw.template": { - source: "apache", - extensions: [ - "std" - ] -}, - "application/vnd.sun.xml.impress": { - source: "apache", - extensions: [ - "sxi" - ] -}, - "application/vnd.sun.xml.impress.template": { - source: "apache", - extensions: [ - "sti" - ] -}, - "application/vnd.sun.xml.math": { - source: "apache", - extensions: [ - "sxm" - ] -}, - "application/vnd.sun.xml.writer": { - source: "apache", - extensions: [ - "sxw" - ] -}, - "application/vnd.sun.xml.writer.global": { - source: "apache", - extensions: [ - "sxg" - ] -}, - "application/vnd.sun.xml.writer.template": { - source: "apache", - extensions: [ - "stw" - ] -}, - "application/vnd.sus-calendar": { - source: "iana", - extensions: [ - "sus", - "susp" - ] -}, - "application/vnd.svd": { - source: "iana", - extensions: [ - "svd" - ] -}, - "application/vnd.swiftview-ics": { - source: "iana" -}, - "application/vnd.sycle+xml": { - source: "iana", - compressible: true -}, - "application/vnd.syft+json": { - source: "iana", - compressible: true -}, - "application/vnd.symbian.install": { - source: "apache", - extensions: [ - "sis", - "sisx" - ] -}, - "application/vnd.syncml+xml": { - source: "iana", - charset: "UTF-8", - compressible: true, - extensions: [ - "xsm" - ] -}, - "application/vnd.syncml.dm+wbxml": { - source: "iana", - charset: "UTF-8", - extensions: [ - "bdm" - ] -}, - "application/vnd.syncml.dm+xml": { - source: "iana", - charset: "UTF-8", - compressible: true, - extensions: [ - "xdm" - ] -}, - "application/vnd.syncml.dm.notification": { - source: "iana" -}, - "application/vnd.syncml.dmddf+wbxml": { - source: "iana" -}, - "application/vnd.syncml.dmddf+xml": { - source: "iana", - charset: "UTF-8", - compressible: true, - extensions: [ - "ddf" - ] -}, - "application/vnd.syncml.dmtnds+wbxml": { - source: "iana" -}, - "application/vnd.syncml.dmtnds+xml": { - source: "iana", - charset: "UTF-8", - compressible: true -}, - "application/vnd.syncml.ds.notification": { - source: "iana" -}, - "application/vnd.tableschema+json": { - source: "iana", - compressible: true -}, - "application/vnd.tao.intent-module-archive": { - source: "iana", - extensions: [ - "tao" - ] -}, - "application/vnd.tcpdump.pcap": { - source: "iana", - extensions: [ - "pcap", - "cap", - "dmp" - ] -}, - "application/vnd.think-cell.ppttc+json": { - source: "iana", - compressible: true -}, - "application/vnd.tmd.mediaflex.api+xml": { - source: "iana", - compressible: true -}, - "application/vnd.tml": { - source: "iana" -}, - "application/vnd.tmobile-livetv": { - source: "iana", - extensions: [ - "tmo" - ] -}, - "application/vnd.tri.onesource": { - source: "iana" -}, - "application/vnd.trid.tpt": { - source: "iana", - extensions: [ - "tpt" - ] -}, - "application/vnd.triscape.mxs": { - source: "iana", - extensions: [ - "mxs" - ] -}, - "application/vnd.trueapp": { - source: "iana", - extensions: [ - "tra" - ] -}, - "application/vnd.truedoc": { - source: "iana" -}, - "application/vnd.ubisoft.webplayer": { - source: "iana" -}, - "application/vnd.ufdl": { - source: "iana", - extensions: [ - "ufd", - "ufdl" - ] -}, - "application/vnd.uiq.theme": { - source: "iana", - extensions: [ - "utz" - ] -}, - "application/vnd.umajin": { - source: "iana", - extensions: [ - "umj" - ] -}, - "application/vnd.unity": { - source: "iana", - extensions: [ - "unityweb" - ] -}, - "application/vnd.uoml+xml": { - source: "iana", - compressible: true, - extensions: [ - "uoml" - ] -}, - "application/vnd.uplanet.alert": { - source: "iana" -}, - "application/vnd.uplanet.alert-wbxml": { - source: "iana" -}, - "application/vnd.uplanet.bearer-choice": { - source: "iana" -}, - "application/vnd.uplanet.bearer-choice-wbxml": { - source: "iana" -}, - "application/vnd.uplanet.cacheop": { - source: "iana" -}, - "application/vnd.uplanet.cacheop-wbxml": { - source: "iana" -}, - "application/vnd.uplanet.channel": { - source: "iana" -}, - "application/vnd.uplanet.channel-wbxml": { - source: "iana" -}, - "application/vnd.uplanet.list": { - source: "iana" -}, - "application/vnd.uplanet.list-wbxml": { - source: "iana" -}, - "application/vnd.uplanet.listcmd": { - source: "iana" -}, - "application/vnd.uplanet.listcmd-wbxml": { - source: "iana" -}, - "application/vnd.uplanet.signal": { - source: "iana" -}, - "application/vnd.uri-map": { - source: "iana" -}, - "application/vnd.valve.source.material": { - source: "iana" -}, - "application/vnd.vcx": { - source: "iana", - extensions: [ - "vcx" - ] -}, - "application/vnd.vd-study": { - source: "iana" -}, - "application/vnd.vectorworks": { - source: "iana" -}, - "application/vnd.vel+json": { - source: "iana", - compressible: true -}, - "application/vnd.verimatrix.vcas": { - source: "iana" -}, - "application/vnd.veritone.aion+json": { - source: "iana", - compressible: true -}, - "application/vnd.veryant.thin": { - source: "iana" -}, - "application/vnd.ves.encrypted": { - source: "iana" -}, - "application/vnd.vidsoft.vidconference": { - source: "iana" -}, - "application/vnd.visio": { - source: "iana", - extensions: [ - "vsd", - "vst", - "vss", - "vsw" - ] -}, - "application/vnd.visionary": { - source: "iana", - extensions: [ - "vis" - ] -}, - "application/vnd.vividence.scriptfile": { - source: "iana" -}, - "application/vnd.vsf": { - source: "iana", - extensions: [ - "vsf" - ] -}, - "application/vnd.wap.sic": { - source: "iana" -}, - "application/vnd.wap.slc": { - source: "iana" -}, - "application/vnd.wap.wbxml": { - source: "iana", - charset: "UTF-8", - extensions: [ - "wbxml" - ] -}, - "application/vnd.wap.wmlc": { - source: "iana", - extensions: [ - "wmlc" - ] -}, - "application/vnd.wap.wmlscriptc": { - source: "iana", - extensions: [ - "wmlsc" - ] -}, - "application/vnd.webturbo": { - source: "iana", - extensions: [ - "wtb" - ] -}, - "application/vnd.wfa.dpp": { - source: "iana" -}, - "application/vnd.wfa.p2p": { - source: "iana" -}, - "application/vnd.wfa.wsc": { - source: "iana" -}, - "application/vnd.windows.devicepairing": { - source: "iana" -}, - "application/vnd.wmc": { - source: "iana" -}, - "application/vnd.wmf.bootstrap": { - source: "iana" -}, - "application/vnd.wolfram.mathematica": { - source: "iana" -}, - "application/vnd.wolfram.mathematica.package": { - source: "iana" -}, - "application/vnd.wolfram.player": { - source: "iana", - extensions: [ - "nbp" - ] -}, - "application/vnd.wordperfect": { - source: "iana", - extensions: [ - "wpd" - ] -}, - "application/vnd.wqd": { - source: "iana", - extensions: [ - "wqd" - ] -}, - "application/vnd.wrq-hp3000-labelled": { - source: "iana" -}, - "application/vnd.wt.stf": { - source: "iana", - extensions: [ - "stf" - ] -}, - "application/vnd.wv.csp+wbxml": { - source: "iana" -}, - "application/vnd.wv.csp+xml": { - source: "iana", - compressible: true -}, - "application/vnd.wv.ssp+xml": { - source: "iana", - compressible: true -}, - "application/vnd.xacml+json": { - source: "iana", - compressible: true -}, - "application/vnd.xara": { - source: "iana", - extensions: [ - "xar" - ] -}, - "application/vnd.xfdl": { - source: "iana", - extensions: [ - "xfdl" - ] -}, - "application/vnd.xfdl.webform": { - source: "iana" -}, - "application/vnd.xmi+xml": { - source: "iana", - compressible: true -}, - "application/vnd.xmpie.cpkg": { - source: "iana" -}, - "application/vnd.xmpie.dpkg": { - source: "iana" -}, - "application/vnd.xmpie.plan": { - source: "iana" -}, - "application/vnd.xmpie.ppkg": { - source: "iana" -}, - "application/vnd.xmpie.xlim": { - source: "iana" -}, - "application/vnd.yamaha.hv-dic": { - source: "iana", - extensions: [ - "hvd" - ] -}, - "application/vnd.yamaha.hv-script": { - source: "iana", - extensions: [ - "hvs" - ] -}, - "application/vnd.yamaha.hv-voice": { - source: "iana", - extensions: [ - "hvp" - ] -}, - "application/vnd.yamaha.openscoreformat": { - source: "iana", - extensions: [ - "osf" - ] -}, - "application/vnd.yamaha.openscoreformat.osfpvg+xml": { - source: "iana", - compressible: true, - extensions: [ - "osfpvg" - ] -}, - "application/vnd.yamaha.remote-setup": { - source: "iana" -}, - "application/vnd.yamaha.smaf-audio": { - source: "iana", - extensions: [ - "saf" - ] -}, - "application/vnd.yamaha.smaf-phrase": { - source: "iana", - extensions: [ - "spf" - ] -}, - "application/vnd.yamaha.through-ngn": { - source: "iana" -}, - "application/vnd.yamaha.tunnel-udpencap": { - source: "iana" -}, - "application/vnd.yaoweme": { - source: "iana" -}, - "application/vnd.yellowriver-custom-menu": { - source: "iana", - extensions: [ - "cmp" - ] -}, - "application/vnd.youtube.yt": { - source: "iana" -}, - "application/vnd.zul": { - source: "iana", - extensions: [ - "zir", - "zirz" - ] -}, - "application/vnd.zzazz.deck+xml": { - source: "iana", - compressible: true, - extensions: [ - "zaz" - ] -}, - "application/voicexml+xml": { - source: "iana", - compressible: true, - extensions: [ - "vxml" - ] -}, - "application/voucher-cms+json": { - source: "iana", - compressible: true -}, - "application/vq-rtcpxr": { - source: "iana" -}, - "application/wasm": { - source: "iana", - compressible: true, - extensions: [ - "wasm" - ] -}, - "application/watcherinfo+xml": { - source: "iana", - compressible: true, - extensions: [ - "wif" - ] -}, - "application/webpush-options+json": { - source: "iana", - compressible: true -}, - "application/whoispp-query": { - source: "iana" -}, - "application/whoispp-response": { - source: "iana" -}, - "application/widget": { - source: "iana", - extensions: [ - "wgt" - ] -}, - "application/winhlp": { - source: "apache", - extensions: [ - "hlp" - ] -}, - "application/wita": { - source: "iana" -}, - "application/wordperfect5.1": { - source: "iana" -}, - "application/wsdl+xml": { - source: "iana", - compressible: true, - extensions: [ - "wsdl" - ] -}, - "application/wspolicy+xml": { - source: "iana", - compressible: true, - extensions: [ - "wspolicy" - ] -}, - "application/x-7z-compressed": { - source: "apache", - compressible: false, - extensions: [ - "7z" - ] -}, - "application/x-abiword": { - source: "apache", - extensions: [ - "abw" - ] -}, - "application/x-ace-compressed": { - source: "apache", - extensions: [ - "ace" - ] -}, - "application/x-amf": { - source: "apache" -}, - "application/x-apple-diskimage": { - source: "apache", - extensions: [ - "dmg" - ] -}, - "application/x-arj": { - compressible: false, - extensions: [ - "arj" - ] -}, - "application/x-authorware-bin": { - source: "apache", - extensions: [ - "aab", - "x32", - "u32", - "vox" - ] -}, - "application/x-authorware-map": { - source: "apache", - extensions: [ - "aam" - ] -}, - "application/x-authorware-seg": { - source: "apache", - extensions: [ - "aas" - ] -}, - "application/x-bcpio": { - source: "apache", - extensions: [ - "bcpio" - ] -}, - "application/x-bdoc": { - compressible: false, - extensions: [ - "bdoc" - ] -}, - "application/x-bittorrent": { - source: "apache", - extensions: [ - "torrent" - ] -}, - "application/x-blorb": { - source: "apache", - extensions: [ - "blb", - "blorb" - ] -}, - "application/x-bzip": { - source: "apache", - compressible: false, - extensions: [ - "bz" - ] -}, - "application/x-bzip2": { - source: "apache", - compressible: false, - extensions: [ - "bz2", - "boz" - ] -}, - "application/x-cbr": { - source: "apache", - extensions: [ - "cbr", - "cba", - "cbt", - "cbz", - "cb7" - ] -}, - "application/x-cdlink": { - source: "apache", - extensions: [ - "vcd" - ] -}, - "application/x-cfs-compressed": { - source: "apache", - extensions: [ - "cfs" - ] -}, - "application/x-chat": { - source: "apache", - extensions: [ - "chat" - ] -}, - "application/x-chess-pgn": { - source: "apache", - extensions: [ - "pgn" - ] -}, - "application/x-chrome-extension": { - extensions: [ - "crx" - ] -}, - "application/x-cocoa": { - source: "nginx", - extensions: [ - "cco" - ] -}, - "application/x-compress": { - source: "apache" -}, - "application/x-conference": { - source: "apache", - extensions: [ - "nsc" - ] -}, - "application/x-cpio": { - source: "apache", - extensions: [ - "cpio" - ] -}, - "application/x-csh": { - source: "apache", - extensions: [ - "csh" - ] -}, - "application/x-deb": { - compressible: false -}, - "application/x-debian-package": { - source: "apache", - extensions: [ - "deb", - "udeb" - ] -}, - "application/x-dgc-compressed": { - source: "apache", - extensions: [ - "dgc" - ] -}, - "application/x-director": { - source: "apache", - extensions: [ - "dir", - "dcr", - "dxr", - "cst", - "cct", - "cxt", - "w3d", - "fgd", - "swa" - ] -}, - "application/x-doom": { - source: "apache", - extensions: [ - "wad" - ] -}, - "application/x-dtbncx+xml": { - source: "apache", - compressible: true, - extensions: [ - "ncx" - ] -}, - "application/x-dtbook+xml": { - source: "apache", - compressible: true, - extensions: [ - "dtb" - ] -}, - "application/x-dtbresource+xml": { - source: "apache", - compressible: true, - extensions: [ - "res" - ] -}, - "application/x-dvi": { - source: "apache", - compressible: false, - extensions: [ - "dvi" - ] -}, - "application/x-envoy": { - source: "apache", - extensions: [ - "evy" - ] -}, - "application/x-eva": { - source: "apache", - extensions: [ - "eva" - ] -}, - "application/x-font-bdf": { - source: "apache", - extensions: [ - "bdf" - ] -}, - "application/x-font-dos": { - source: "apache" -}, - "application/x-font-framemaker": { - source: "apache" -}, - "application/x-font-ghostscript": { - source: "apache", - extensions: [ - "gsf" - ] -}, - "application/x-font-libgrx": { - source: "apache" -}, - "application/x-font-linux-psf": { - source: "apache", - extensions: [ - "psf" - ] -}, - "application/x-font-pcf": { - source: "apache", - extensions: [ - "pcf" - ] -}, - "application/x-font-snf": { - source: "apache", - extensions: [ - "snf" - ] -}, - "application/x-font-speedo": { - source: "apache" -}, - "application/x-font-sunos-news": { - source: "apache" -}, - "application/x-font-type1": { - source: "apache", - extensions: [ - "pfa", - "pfb", - "pfm", - "afm" - ] -}, - "application/x-font-vfont": { - source: "apache" -}, - "application/x-freearc": { - source: "apache", - extensions: [ - "arc" - ] -}, - "application/x-futuresplash": { - source: "apache", - extensions: [ - "spl" - ] -}, - "application/x-gca-compressed": { - source: "apache", - extensions: [ - "gca" - ] -}, - "application/x-glulx": { - source: "apache", - extensions: [ - "ulx" - ] -}, - "application/x-gnumeric": { - source: "apache", - extensions: [ - "gnumeric" - ] -}, - "application/x-gramps-xml": { - source: "apache", - extensions: [ - "gramps" - ] -}, - "application/x-gtar": { - source: "apache", - extensions: [ - "gtar" - ] -}, - "application/x-gzip": { - source: "apache" -}, - "application/x-hdf": { - source: "apache", - extensions: [ - "hdf" - ] -}, - "application/x-httpd-php": { - compressible: true, - extensions: [ - "php" - ] -}, - "application/x-install-instructions": { - source: "apache", - extensions: [ - "install" - ] -}, - "application/x-iso9660-image": { - source: "apache", - extensions: [ - "iso" - ] -}, - "application/x-iwork-keynote-sffkey": { - extensions: [ - "key" - ] -}, - "application/x-iwork-numbers-sffnumbers": { - extensions: [ - "numbers" - ] -}, - "application/x-iwork-pages-sffpages": { - extensions: [ - "pages" - ] -}, - "application/x-java-archive-diff": { - source: "nginx", - extensions: [ - "jardiff" - ] -}, - "application/x-java-jnlp-file": { - source: "apache", - compressible: false, - extensions: [ - "jnlp" - ] -}, - "application/x-javascript": { - compressible: true -}, - "application/x-keepass2": { - extensions: [ - "kdbx" - ] -}, - "application/x-latex": { - source: "apache", - compressible: false, - extensions: [ - "latex" - ] -}, - "application/x-lua-bytecode": { - extensions: [ - "luac" - ] -}, - "application/x-lzh-compressed": { - source: "apache", - extensions: [ - "lzh", - "lha" - ] -}, - "application/x-makeself": { - source: "nginx", - extensions: [ - "run" - ] -}, - "application/x-mie": { - source: "apache", - extensions: [ - "mie" - ] -}, - "application/x-mobipocket-ebook": { - source: "apache", - extensions: [ - "prc", - "mobi" - ] -}, - "application/x-mpegurl": { - compressible: false -}, - "application/x-ms-application": { - source: "apache", - extensions: [ - "application" - ] -}, - "application/x-ms-shortcut": { - source: "apache", - extensions: [ - "lnk" - ] -}, - "application/x-ms-wmd": { - source: "apache", - extensions: [ - "wmd" - ] -}, - "application/x-ms-wmz": { - source: "apache", - extensions: [ - "wmz" - ] -}, - "application/x-ms-xbap": { - source: "apache", - extensions: [ - "xbap" - ] -}, - "application/x-msaccess": { - source: "apache", - extensions: [ - "mdb" - ] -}, - "application/x-msbinder": { - source: "apache", - extensions: [ - "obd" - ] -}, - "application/x-mscardfile": { - source: "apache", - extensions: [ - "crd" - ] -}, - "application/x-msclip": { - source: "apache", - extensions: [ - "clp" - ] -}, - "application/x-msdos-program": { - extensions: [ - "exe" - ] -}, - "application/x-msdownload": { - source: "apache", - extensions: [ - "exe", - "dll", - "com", - "bat", - "msi" - ] -}, - "application/x-msmediaview": { - source: "apache", - extensions: [ - "mvb", - "m13", - "m14" - ] -}, - "application/x-msmetafile": { - source: "apache", - extensions: [ - "wmf", - "wmz", - "emf", - "emz" - ] -}, - "application/x-msmoney": { - source: "apache", - extensions: [ - "mny" - ] -}, - "application/x-mspublisher": { - source: "apache", - extensions: [ - "pub" - ] -}, - "application/x-msschedule": { - source: "apache", - extensions: [ - "scd" - ] -}, - "application/x-msterminal": { - source: "apache", - extensions: [ - "trm" - ] -}, - "application/x-mswrite": { - source: "apache", - extensions: [ - "wri" - ] -}, - "application/x-netcdf": { - source: "apache", - extensions: [ - "nc", - "cdf" - ] -}, - "application/x-ns-proxy-autoconfig": { - compressible: true, - extensions: [ - "pac" - ] -}, - "application/x-nzb": { - source: "apache", - extensions: [ - "nzb" - ] -}, - "application/x-perl": { - source: "nginx", - extensions: [ - "pl", - "pm" - ] -}, - "application/x-pilot": { - source: "nginx", - extensions: [ - "prc", - "pdb" - ] -}, - "application/x-pkcs12": { - source: "apache", - compressible: false, - extensions: [ - "p12", - "pfx" - ] -}, - "application/x-pkcs7-certificates": { - source: "apache", - extensions: [ - "p7b", - "spc" - ] -}, - "application/x-pkcs7-certreqresp": { - source: "apache", - extensions: [ - "p7r" - ] -}, - "application/x-pki-message": { - source: "iana" -}, - "application/x-rar-compressed": { - source: "apache", - compressible: false, - extensions: [ - "rar" - ] -}, - "application/x-redhat-package-manager": { - source: "nginx", - extensions: [ - "rpm" - ] -}, - "application/x-research-info-systems": { - source: "apache", - extensions: [ - "ris" - ] -}, - "application/x-sea": { - source: "nginx", - extensions: [ - "sea" - ] -}, - "application/x-sh": { - source: "apache", - compressible: true, - extensions: [ - "sh" - ] -}, - "application/x-shar": { - source: "apache", - extensions: [ - "shar" - ] -}, - "application/x-shockwave-flash": { - source: "apache", - compressible: false, - extensions: [ - "swf" - ] -}, - "application/x-silverlight-app": { - source: "apache", - extensions: [ - "xap" - ] -}, - "application/x-sql": { - source: "apache", - extensions: [ - "sql" - ] -}, - "application/x-stuffit": { - source: "apache", - compressible: false, - extensions: [ - "sit" - ] -}, - "application/x-stuffitx": { - source: "apache", - extensions: [ - "sitx" - ] -}, - "application/x-subrip": { - source: "apache", - extensions: [ - "srt" - ] -}, - "application/x-sv4cpio": { - source: "apache", - extensions: [ - "sv4cpio" - ] -}, - "application/x-sv4crc": { - source: "apache", - extensions: [ - "sv4crc" - ] -}, - "application/x-t3vm-image": { - source: "apache", - extensions: [ - "t3" - ] -}, - "application/x-tads": { - source: "apache", - extensions: [ - "gam" - ] -}, - "application/x-tar": { - source: "apache", - compressible: true, - extensions: [ - "tar" - ] -}, - "application/x-tcl": { - source: "apache", - extensions: [ - "tcl", - "tk" - ] -}, - "application/x-tex": { - source: "apache", - extensions: [ - "tex" - ] -}, - "application/x-tex-tfm": { - source: "apache", - extensions: [ - "tfm" - ] -}, - "application/x-texinfo": { - source: "apache", - extensions: [ - "texinfo", - "texi" - ] -}, - "application/x-tgif": { - source: "apache", - extensions: [ - "obj" - ] -}, - "application/x-ustar": { - source: "apache", - extensions: [ - "ustar" - ] -}, - "application/x-virtualbox-hdd": { - compressible: true, - extensions: [ - "hdd" - ] -}, - "application/x-virtualbox-ova": { - compressible: true, - extensions: [ - "ova" - ] -}, - "application/x-virtualbox-ovf": { - compressible: true, - extensions: [ - "ovf" - ] -}, - "application/x-virtualbox-vbox": { - compressible: true, - extensions: [ - "vbox" - ] -}, - "application/x-virtualbox-vbox-extpack": { - compressible: false, - extensions: [ - "vbox-extpack" - ] -}, - "application/x-virtualbox-vdi": { - compressible: true, - extensions: [ - "vdi" - ] -}, - "application/x-virtualbox-vhd": { - compressible: true, - extensions: [ - "vhd" - ] -}, - "application/x-virtualbox-vmdk": { - compressible: true, - extensions: [ - "vmdk" - ] -}, - "application/x-wais-source": { - source: "apache", - extensions: [ - "src" - ] -}, - "application/x-web-app-manifest+json": { - compressible: true, - extensions: [ - "webapp" - ] -}, - "application/x-www-form-urlencoded": { - source: "iana", - compressible: true -}, - "application/x-x509-ca-cert": { - source: "iana", - extensions: [ - "der", - "crt", - "pem" - ] -}, - "application/x-x509-ca-ra-cert": { - source: "iana" -}, - "application/x-x509-next-ca-cert": { - source: "iana" -}, - "application/x-xfig": { - source: "apache", - extensions: [ - "fig" - ] -}, - "application/x-xliff+xml": { - source: "apache", - compressible: true, - extensions: [ - "xlf" - ] -}, - "application/x-xpinstall": { - source: "apache", - compressible: false, - extensions: [ - "xpi" - ] -}, - "application/x-xz": { - source: "apache", - extensions: [ - "xz" - ] -}, - "application/x-zmachine": { - source: "apache", - extensions: [ - "z1", - "z2", - "z3", - "z4", - "z5", - "z6", - "z7", - "z8" - ] -}, - "application/x400-bp": { - source: "iana" -}, - "application/xacml+xml": { - source: "iana", - compressible: true -}, - "application/xaml+xml": { - source: "apache", - compressible: true, - extensions: [ - "xaml" - ] -}, - "application/xcap-att+xml": { - source: "iana", - compressible: true, - extensions: [ - "xav" - ] -}, - "application/xcap-caps+xml": { - source: "iana", - compressible: true, - extensions: [ - "xca" - ] -}, - "application/xcap-diff+xml": { - source: "iana", - compressible: true, - extensions: [ - "xdf" - ] -}, - "application/xcap-el+xml": { - source: "iana", - compressible: true, - extensions: [ - "xel" - ] -}, - "application/xcap-error+xml": { - source: "iana", - compressible: true -}, - "application/xcap-ns+xml": { - source: "iana", - compressible: true, - extensions: [ - "xns" - ] -}, - "application/xcon-conference-info+xml": { - source: "iana", - compressible: true -}, - "application/xcon-conference-info-diff+xml": { - source: "iana", - compressible: true -}, - "application/xenc+xml": { - source: "iana", - compressible: true, - extensions: [ - "xenc" - ] -}, - "application/xhtml+xml": { - source: "iana", - compressible: true, - extensions: [ - "xhtml", - "xht" - ] -}, - "application/xhtml-voice+xml": { - source: "apache", - compressible: true -}, - "application/xliff+xml": { - source: "iana", - compressible: true, - extensions: [ - "xlf" - ] -}, - "application/xml": { - source: "iana", - compressible: true, - extensions: [ - "xml", - "xsl", - "xsd", - "rng" - ] -}, - "application/xml-dtd": { - source: "iana", - compressible: true, - extensions: [ - "dtd" - ] -}, - "application/xml-external-parsed-entity": { - source: "iana" -}, - "application/xml-patch+xml": { - source: "iana", - compressible: true -}, - "application/xmpp+xml": { - source: "iana", - compressible: true -}, - "application/xop+xml": { - source: "iana", - compressible: true, - extensions: [ - "xop" - ] -}, - "application/xproc+xml": { - source: "apache", - compressible: true, - extensions: [ - "xpl" - ] -}, - "application/xslt+xml": { - source: "iana", - compressible: true, - extensions: [ - "xsl", - "xslt" - ] -}, - "application/xspf+xml": { - source: "apache", - compressible: true, - extensions: [ - "xspf" - ] -}, - "application/xv+xml": { - source: "iana", - compressible: true, - extensions: [ - "mxml", - "xhvml", - "xvml", - "xvm" - ] -}, - "application/yang": { - source: "iana", - extensions: [ - "yang" - ] -}, - "application/yang-data+json": { - source: "iana", - compressible: true -}, - "application/yang-data+xml": { - source: "iana", - compressible: true -}, - "application/yang-patch+json": { - source: "iana", - compressible: true -}, - "application/yang-patch+xml": { - source: "iana", - compressible: true -}, - "application/yin+xml": { - source: "iana", - compressible: true, - extensions: [ - "yin" - ] -}, - "application/zip": { - source: "iana", - compressible: false, - extensions: [ - "zip" - ] -}, - "application/zlib": { - source: "iana" -}, - "application/zstd": { - source: "iana" -}, - "audio/1d-interleaved-parityfec": { - source: "iana" -}, - "audio/32kadpcm": { - source: "iana" -}, - "audio/3gpp": { - source: "iana", - compressible: false, - extensions: [ - "3gpp" - ] -}, - "audio/3gpp2": { - source: "iana" -}, - "audio/aac": { - source: "iana" -}, - "audio/ac3": { - source: "iana" -}, - "audio/adpcm": { - source: "apache", - extensions: [ - "adp" - ] -}, - "audio/amr": { - source: "iana", - extensions: [ - "amr" - ] -}, - "audio/amr-wb": { - source: "iana" -}, - "audio/amr-wb+": { - source: "iana" -}, - "audio/aptx": { - source: "iana" -}, - "audio/asc": { - source: "iana" -}, - "audio/atrac-advanced-lossless": { - source: "iana" -}, - "audio/atrac-x": { - source: "iana" -}, - "audio/atrac3": { - source: "iana" -}, - "audio/basic": { - source: "iana", - compressible: false, - extensions: [ - "au", - "snd" - ] -}, - "audio/bv16": { - source: "iana" -}, - "audio/bv32": { - source: "iana" -}, - "audio/clearmode": { - source: "iana" -}, - "audio/cn": { - source: "iana" -}, - "audio/dat12": { - source: "iana" -}, - "audio/dls": { - source: "iana" -}, - "audio/dsr-es201108": { - source: "iana" -}, - "audio/dsr-es202050": { - source: "iana" -}, - "audio/dsr-es202211": { - source: "iana" -}, - "audio/dsr-es202212": { - source: "iana" -}, - "audio/dv": { - source: "iana" -}, - "audio/dvi4": { - source: "iana" -}, - "audio/eac3": { - source: "iana" -}, - "audio/encaprtp": { - source: "iana" -}, - "audio/evrc": { - source: "iana" -}, - "audio/evrc-qcp": { - source: "iana" -}, - "audio/evrc0": { - source: "iana" -}, - "audio/evrc1": { - source: "iana" -}, - "audio/evrcb": { - source: "iana" -}, - "audio/evrcb0": { - source: "iana" -}, - "audio/evrcb1": { - source: "iana" -}, - "audio/evrcnw": { - source: "iana" -}, - "audio/evrcnw0": { - source: "iana" -}, - "audio/evrcnw1": { - source: "iana" -}, - "audio/evrcwb": { - source: "iana" -}, - "audio/evrcwb0": { - source: "iana" -}, - "audio/evrcwb1": { - source: "iana" -}, - "audio/evs": { - source: "iana" -}, - "audio/flexfec": { - source: "iana" -}, - "audio/fwdred": { - source: "iana" -}, - "audio/g711-0": { - source: "iana" -}, - "audio/g719": { - source: "iana" -}, - "audio/g722": { - source: "iana" -}, - "audio/g7221": { - source: "iana" -}, - "audio/g723": { - source: "iana" -}, - "audio/g726-16": { - source: "iana" -}, - "audio/g726-24": { - source: "iana" -}, - "audio/g726-32": { - source: "iana" -}, - "audio/g726-40": { - source: "iana" -}, - "audio/g728": { - source: "iana" -}, - "audio/g729": { - source: "iana" -}, - "audio/g7291": { - source: "iana" -}, - "audio/g729d": { - source: "iana" -}, - "audio/g729e": { - source: "iana" -}, - "audio/gsm": { - source: "iana" -}, - "audio/gsm-efr": { - source: "iana" -}, - "audio/gsm-hr-08": { - source: "iana" -}, - "audio/ilbc": { - source: "iana" -}, - "audio/ip-mr_v2.5": { - source: "iana" -}, - "audio/isac": { - source: "apache" -}, - "audio/l16": { - source: "iana" -}, - "audio/l20": { - source: "iana" -}, - "audio/l24": { - source: "iana", - compressible: false -}, - "audio/l8": { - source: "iana" -}, - "audio/lpc": { - source: "iana" -}, - "audio/melp": { - source: "iana" -}, - "audio/melp1200": { - source: "iana" -}, - "audio/melp2400": { - source: "iana" -}, - "audio/melp600": { - source: "iana" -}, - "audio/mhas": { - source: "iana" -}, - "audio/midi": { - source: "apache", - extensions: [ - "mid", - "midi", - "kar", - "rmi" - ] -}, - "audio/mobile-xmf": { - source: "iana", - extensions: [ - "mxmf" - ] -}, - "audio/mp3": { - compressible: false, - extensions: [ - "mp3" - ] -}, - "audio/mp4": { - source: "iana", - compressible: false, - extensions: [ - "m4a", - "mp4a" - ] -}, - "audio/mp4a-latm": { - source: "iana" -}, - "audio/mpa": { - source: "iana" -}, - "audio/mpa-robust": { - source: "iana" -}, - "audio/mpeg": { - source: "iana", - compressible: false, - extensions: [ - "mpga", - "mp2", - "mp2a", - "mp3", - "m2a", - "m3a" - ] -}, - "audio/mpeg4-generic": { - source: "iana" -}, - "audio/musepack": { - source: "apache" -}, - "audio/ogg": { - source: "iana", - compressible: false, - extensions: [ - "oga", - "ogg", - "spx", - "opus" - ] -}, - "audio/opus": { - source: "iana" -}, - "audio/parityfec": { - source: "iana" -}, - "audio/pcma": { - source: "iana" -}, - "audio/pcma-wb": { - source: "iana" -}, - "audio/pcmu": { - source: "iana" -}, - "audio/pcmu-wb": { - source: "iana" -}, - "audio/prs.sid": { - source: "iana" -}, - "audio/qcelp": { - source: "iana" -}, - "audio/raptorfec": { - source: "iana" -}, - "audio/red": { - source: "iana" -}, - "audio/rtp-enc-aescm128": { - source: "iana" -}, - "audio/rtp-midi": { - source: "iana" -}, - "audio/rtploopback": { - source: "iana" -}, - "audio/rtx": { - source: "iana" -}, - "audio/s3m": { - source: "apache", - extensions: [ - "s3m" - ] -}, - "audio/scip": { - source: "iana" -}, - "audio/silk": { - source: "apache", - extensions: [ - "sil" - ] -}, - "audio/smv": { - source: "iana" -}, - "audio/smv-qcp": { - source: "iana" -}, - "audio/smv0": { - source: "iana" -}, - "audio/sofa": { - source: "iana" -}, - "audio/sp-midi": { - source: "iana" -}, - "audio/speex": { - source: "iana" -}, - "audio/t140c": { - source: "iana" -}, - "audio/t38": { - source: "iana" -}, - "audio/telephone-event": { - source: "iana" -}, - "audio/tetra_acelp": { - source: "iana" -}, - "audio/tetra_acelp_bb": { - source: "iana" -}, - "audio/tone": { - source: "iana" -}, - "audio/tsvcis": { - source: "iana" -}, - "audio/uemclip": { - source: "iana" -}, - "audio/ulpfec": { - source: "iana" -}, - "audio/usac": { - source: "iana" -}, - "audio/vdvi": { - source: "iana" -}, - "audio/vmr-wb": { - source: "iana" -}, - "audio/vnd.3gpp.iufp": { - source: "iana" -}, - "audio/vnd.4sb": { - source: "iana" -}, - "audio/vnd.audiokoz": { - source: "iana" -}, - "audio/vnd.celp": { - source: "iana" -}, - "audio/vnd.cisco.nse": { - source: "iana" -}, - "audio/vnd.cmles.radio-events": { - source: "iana" -}, - "audio/vnd.cns.anp1": { - source: "iana" -}, - "audio/vnd.cns.inf1": { - source: "iana" -}, - "audio/vnd.dece.audio": { - source: "iana", - extensions: [ - "uva", - "uvva" - ] -}, - "audio/vnd.digital-winds": { - source: "iana", - extensions: [ - "eol" - ] -}, - "audio/vnd.dlna.adts": { - source: "iana" -}, - "audio/vnd.dolby.heaac.1": { - source: "iana" -}, - "audio/vnd.dolby.heaac.2": { - source: "iana" -}, - "audio/vnd.dolby.mlp": { - source: "iana" -}, - "audio/vnd.dolby.mps": { - source: "iana" -}, - "audio/vnd.dolby.pl2": { - source: "iana" -}, - "audio/vnd.dolby.pl2x": { - source: "iana" -}, - "audio/vnd.dolby.pl2z": { - source: "iana" -}, - "audio/vnd.dolby.pulse.1": { - source: "iana" -}, - "audio/vnd.dra": { - source: "iana", - extensions: [ - "dra" - ] -}, - "audio/vnd.dts": { - source: "iana", - extensions: [ - "dts" - ] -}, - "audio/vnd.dts.hd": { - source: "iana", - extensions: [ - "dtshd" - ] -}, - "audio/vnd.dts.uhd": { - source: "iana" -}, - "audio/vnd.dvb.file": { - source: "iana" -}, - "audio/vnd.everad.plj": { - source: "iana" -}, - "audio/vnd.hns.audio": { - source: "iana" -}, - "audio/vnd.lucent.voice": { - source: "iana", - extensions: [ - "lvp" - ] -}, - "audio/vnd.ms-playready.media.pya": { - source: "iana", - extensions: [ - "pya" - ] -}, - "audio/vnd.nokia.mobile-xmf": { - source: "iana" -}, - "audio/vnd.nortel.vbk": { - source: "iana" -}, - "audio/vnd.nuera.ecelp4800": { - source: "iana", - extensions: [ - "ecelp4800" - ] -}, - "audio/vnd.nuera.ecelp7470": { - source: "iana", - extensions: [ - "ecelp7470" - ] -}, - "audio/vnd.nuera.ecelp9600": { - source: "iana", - extensions: [ - "ecelp9600" - ] -}, - "audio/vnd.octel.sbc": { - source: "iana" -}, - "audio/vnd.presonus.multitrack": { - source: "iana" -}, - "audio/vnd.qcelp": { - source: "iana" -}, - "audio/vnd.rhetorex.32kadpcm": { - source: "iana" -}, - "audio/vnd.rip": { - source: "iana", - extensions: [ - "rip" - ] -}, - "audio/vnd.rn-realaudio": { - compressible: false -}, - "audio/vnd.sealedmedia.softseal.mpeg": { - source: "iana" -}, - "audio/vnd.vmx.cvsd": { - source: "iana" -}, - "audio/vnd.wave": { - compressible: false -}, - "audio/vorbis": { - source: "iana", - compressible: false -}, - "audio/vorbis-config": { - source: "iana" -}, - "audio/wav": { - compressible: false, - extensions: [ - "wav" - ] -}, - "audio/wave": { - compressible: false, - extensions: [ - "wav" - ] -}, - "audio/webm": { - source: "apache", - compressible: false, - extensions: [ - "weba" - ] -}, - "audio/x-aac": { - source: "apache", - compressible: false, - extensions: [ - "aac" - ] -}, - "audio/x-aiff": { - source: "apache", - extensions: [ - "aif", - "aiff", - "aifc" - ] -}, - "audio/x-caf": { - source: "apache", - compressible: false, - extensions: [ - "caf" - ] -}, - "audio/x-flac": { - source: "apache", - extensions: [ - "flac" - ] -}, - "audio/x-m4a": { - source: "nginx", - extensions: [ - "m4a" - ] -}, - "audio/x-matroska": { - source: "apache", - extensions: [ - "mka" - ] -}, - "audio/x-mpegurl": { - source: "apache", - extensions: [ - "m3u" - ] -}, - "audio/x-ms-wax": { - source: "apache", - extensions: [ - "wax" - ] -}, - "audio/x-ms-wma": { - source: "apache", - extensions: [ - "wma" - ] -}, - "audio/x-pn-realaudio": { - source: "apache", - extensions: [ - "ram", - "ra" - ] -}, - "audio/x-pn-realaudio-plugin": { - source: "apache", - extensions: [ - "rmp" - ] -}, - "audio/x-realaudio": { - source: "nginx", - extensions: [ - "ra" - ] -}, - "audio/x-tta": { - source: "apache" -}, - "audio/x-wav": { - source: "apache", - extensions: [ - "wav" - ] -}, - "audio/xm": { - source: "apache", - extensions: [ - "xm" - ] -}, - "chemical/x-cdx": { - source: "apache", - extensions: [ - "cdx" - ] -}, - "chemical/x-cif": { - source: "apache", - extensions: [ - "cif" - ] -}, - "chemical/x-cmdf": { - source: "apache", - extensions: [ - "cmdf" - ] -}, - "chemical/x-cml": { - source: "apache", - extensions: [ - "cml" - ] -}, - "chemical/x-csml": { - source: "apache", - extensions: [ - "csml" - ] -}, - "chemical/x-pdb": { - source: "apache" -}, - "chemical/x-xyz": { - source: "apache", - extensions: [ - "xyz" - ] -}, - "font/collection": { - source: "iana", - extensions: [ - "ttc" - ] -}, - "font/otf": { - source: "iana", - compressible: true, - extensions: [ - "otf" - ] -}, - "font/sfnt": { - source: "iana" -}, - "font/ttf": { - source: "iana", - compressible: true, - extensions: [ - "ttf" - ] -}, - "font/woff": { - source: "iana", - extensions: [ - "woff" - ] -}, - "font/woff2": { - source: "iana", - extensions: [ - "woff2" - ] -}, - "image/aces": { - source: "iana", - extensions: [ - "exr" - ] -}, - "image/apng": { - compressible: false, - extensions: [ - "apng" - ] -}, - "image/avci": { - source: "iana", - extensions: [ - "avci" - ] -}, - "image/avcs": { - source: "iana", - extensions: [ - "avcs" - ] -}, - "image/avif": { - source: "iana", - compressible: false, - extensions: [ - "avif" - ] -}, - "image/bmp": { - source: "iana", - compressible: true, - extensions: [ - "bmp" - ] -}, - "image/cgm": { - source: "iana", - extensions: [ - "cgm" - ] -}, - "image/dicom-rle": { - source: "iana", - extensions: [ - "drle" - ] -}, - "image/emf": { - source: "iana", - extensions: [ - "emf" - ] -}, - "image/fits": { - source: "iana", - extensions: [ - "fits" - ] -}, - "image/g3fax": { - source: "iana", - extensions: [ - "g3" - ] -}, - "image/gif": { - source: "iana", - compressible: false, - extensions: [ - "gif" - ] -}, - "image/heic": { - source: "iana", - extensions: [ - "heic" - ] -}, - "image/heic-sequence": { - source: "iana", - extensions: [ - "heics" - ] -}, - "image/heif": { - source: "iana", - extensions: [ - "heif" - ] -}, - "image/heif-sequence": { - source: "iana", - extensions: [ - "heifs" - ] -}, - "image/hej2k": { - source: "iana", - extensions: [ - "hej2" - ] -}, - "image/hsj2": { - source: "iana", - extensions: [ - "hsj2" - ] -}, - "image/ief": { - source: "iana", - extensions: [ - "ief" - ] -}, - "image/jls": { - source: "iana", - extensions: [ - "jls" - ] -}, - "image/jp2": { - source: "iana", - compressible: false, - extensions: [ - "jp2", - "jpg2" - ] -}, - "image/jpeg": { - source: "iana", - compressible: false, - extensions: [ - "jpeg", - "jpg", - "jpe" - ] -}, - "image/jph": { - source: "iana", - extensions: [ - "jph" - ] -}, - "image/jphc": { - source: "iana", - extensions: [ - "jhc" - ] -}, - "image/jpm": { - source: "iana", - compressible: false, - extensions: [ - "jpm" - ] -}, - "image/jpx": { - source: "iana", - compressible: false, - extensions: [ - "jpx", - "jpf" - ] -}, - "image/jxr": { - source: "iana", - extensions: [ - "jxr" - ] -}, - "image/jxra": { - source: "iana", - extensions: [ - "jxra" - ] -}, - "image/jxrs": { - source: "iana", - extensions: [ - "jxrs" - ] -}, - "image/jxs": { - source: "iana", - extensions: [ - "jxs" - ] -}, - "image/jxsc": { - source: "iana", - extensions: [ - "jxsc" - ] -}, - "image/jxsi": { - source: "iana", - extensions: [ - "jxsi" - ] -}, - "image/jxss": { - source: "iana", - extensions: [ - "jxss" - ] -}, - "image/ktx": { - source: "iana", - extensions: [ - "ktx" - ] -}, - "image/ktx2": { - source: "iana", - extensions: [ - "ktx2" - ] -}, - "image/naplps": { - source: "iana" -}, - "image/pjpeg": { - compressible: false -}, - "image/png": { - source: "iana", - compressible: false, - extensions: [ - "png" - ] -}, - "image/prs.btif": { - source: "iana", - extensions: [ - "btif" - ] -}, - "image/prs.pti": { - source: "iana", - extensions: [ - "pti" - ] -}, - "image/pwg-raster": { - source: "iana" -}, - "image/sgi": { - source: "apache", - extensions: [ - "sgi" - ] -}, - "image/svg+xml": { - source: "iana", - compressible: true, - extensions: [ - "svg", - "svgz" - ] -}, - "image/t38": { - source: "iana", - extensions: [ - "t38" - ] -}, - "image/tiff": { - source: "iana", - compressible: false, - extensions: [ - "tif", - "tiff" - ] -}, - "image/tiff-fx": { - source: "iana", - extensions: [ - "tfx" - ] -}, - "image/vnd.adobe.photoshop": { - source: "iana", - compressible: true, - extensions: [ - "psd" - ] -}, - "image/vnd.airzip.accelerator.azv": { - source: "iana", - extensions: [ - "azv" - ] -}, - "image/vnd.cns.inf2": { - source: "iana" -}, - "image/vnd.dece.graphic": { - source: "iana", - extensions: [ - "uvi", - "uvvi", - "uvg", - "uvvg" - ] -}, - "image/vnd.djvu": { - source: "iana", - extensions: [ - "djvu", - "djv" - ] -}, - "image/vnd.dvb.subtitle": { - source: "iana", - extensions: [ - "sub" - ] -}, - "image/vnd.dwg": { - source: "iana", - extensions: [ - "dwg" - ] -}, - "image/vnd.dxf": { - source: "iana", - extensions: [ - "dxf" - ] -}, - "image/vnd.fastbidsheet": { - source: "iana", - extensions: [ - "fbs" - ] -}, - "image/vnd.fpx": { - source: "iana", - extensions: [ - "fpx" - ] -}, - "image/vnd.fst": { - source: "iana", - extensions: [ - "fst" - ] -}, - "image/vnd.fujixerox.edmics-mmr": { - source: "iana", - extensions: [ - "mmr" - ] -}, - "image/vnd.fujixerox.edmics-rlc": { - source: "iana", - extensions: [ - "rlc" - ] -}, - "image/vnd.globalgraphics.pgb": { - source: "iana" -}, - "image/vnd.microsoft.icon": { - source: "iana", - compressible: true, - extensions: [ - "ico" - ] -}, - "image/vnd.mix": { - source: "iana" -}, - "image/vnd.mozilla.apng": { - source: "iana" -}, - "image/vnd.ms-dds": { - compressible: true, - extensions: [ - "dds" - ] -}, - "image/vnd.ms-modi": { - source: "iana", - extensions: [ - "mdi" - ] -}, - "image/vnd.ms-photo": { - source: "apache", - extensions: [ - "wdp" - ] -}, - "image/vnd.net-fpx": { - source: "iana", - extensions: [ - "npx" - ] -}, - "image/vnd.pco.b16": { - source: "iana", - extensions: [ - "b16" - ] -}, - "image/vnd.radiance": { - source: "iana" -}, - "image/vnd.sealed.png": { - source: "iana" -}, - "image/vnd.sealedmedia.softseal.gif": { - source: "iana" -}, - "image/vnd.sealedmedia.softseal.jpg": { - source: "iana" -}, - "image/vnd.svf": { - source: "iana" -}, - "image/vnd.tencent.tap": { - source: "iana", - extensions: [ - "tap" - ] -}, - "image/vnd.valve.source.texture": { - source: "iana", - extensions: [ - "vtf" - ] -}, - "image/vnd.wap.wbmp": { - source: "iana", - extensions: [ - "wbmp" - ] -}, - "image/vnd.xiff": { - source: "iana", - extensions: [ - "xif" - ] -}, - "image/vnd.zbrush.pcx": { - source: "iana", - extensions: [ - "pcx" - ] -}, - "image/webp": { - source: "apache", - extensions: [ - "webp" - ] -}, - "image/wmf": { - source: "iana", - extensions: [ - "wmf" - ] -}, - "image/x-3ds": { - source: "apache", - extensions: [ - "3ds" - ] -}, - "image/x-cmu-raster": { - source: "apache", - extensions: [ - "ras" - ] -}, - "image/x-cmx": { - source: "apache", - extensions: [ - "cmx" - ] -}, - "image/x-freehand": { - source: "apache", - extensions: [ - "fh", - "fhc", - "fh4", - "fh5", - "fh7" - ] -}, - "image/x-icon": { - source: "apache", - compressible: true, - extensions: [ - "ico" - ] -}, - "image/x-jng": { - source: "nginx", - extensions: [ - "jng" - ] -}, - "image/x-mrsid-image": { - source: "apache", - extensions: [ - "sid" - ] -}, - "image/x-ms-bmp": { - source: "nginx", - compressible: true, - extensions: [ - "bmp" - ] -}, - "image/x-pcx": { - source: "apache", - extensions: [ - "pcx" - ] -}, - "image/x-pict": { - source: "apache", - extensions: [ - "pic", - "pct" - ] -}, - "image/x-portable-anymap": { - source: "apache", - extensions: [ - "pnm" - ] -}, - "image/x-portable-bitmap": { - source: "apache", - extensions: [ - "pbm" - ] -}, - "image/x-portable-graymap": { - source: "apache", - extensions: [ - "pgm" - ] -}, - "image/x-portable-pixmap": { - source: "apache", - extensions: [ - "ppm" - ] -}, - "image/x-rgb": { - source: "apache", - extensions: [ - "rgb" - ] -}, - "image/x-tga": { - source: "apache", - extensions: [ - "tga" - ] -}, - "image/x-xbitmap": { - source: "apache", - extensions: [ - "xbm" - ] -}, - "image/x-xcf": { - compressible: false -}, - "image/x-xpixmap": { - source: "apache", - extensions: [ - "xpm" - ] -}, - "image/x-xwindowdump": { - source: "apache", - extensions: [ - "xwd" - ] -}, - "message/cpim": { - source: "iana" -}, - "message/delivery-status": { - source: "iana" -}, - "message/disposition-notification": { - source: "iana", - extensions: [ - "disposition-notification" - ] -}, - "message/external-body": { - source: "iana" -}, - "message/feedback-report": { - source: "iana" -}, - "message/global": { - source: "iana", - extensions: [ - "u8msg" - ] -}, - "message/global-delivery-status": { - source: "iana", - extensions: [ - "u8dsn" - ] -}, - "message/global-disposition-notification": { - source: "iana", - extensions: [ - "u8mdn" - ] -}, - "message/global-headers": { - source: "iana", - extensions: [ - "u8hdr" - ] -}, - "message/http": { - source: "iana", - compressible: false -}, - "message/imdn+xml": { - source: "iana", - compressible: true -}, - "message/news": { - source: "iana" -}, - "message/partial": { - source: "iana", - compressible: false -}, - "message/rfc822": { - source: "iana", - compressible: true, - extensions: [ - "eml", - "mime" - ] -}, - "message/s-http": { - source: "iana" -}, - "message/sip": { - source: "iana" -}, - "message/sipfrag": { - source: "iana" -}, - "message/tracking-status": { - source: "iana" -}, - "message/vnd.si.simp": { - source: "iana" -}, - "message/vnd.wfa.wsc": { - source: "iana", - extensions: [ - "wsc" - ] -}, - "model/3mf": { - source: "iana", - extensions: [ - "3mf" - ] -}, - "model/e57": { - source: "iana" -}, - "model/gltf+json": { - source: "iana", - compressible: true, - extensions: [ - "gltf" - ] -}, - "model/gltf-binary": { - source: "iana", - compressible: true, - extensions: [ - "glb" - ] -}, - "model/iges": { - source: "iana", - compressible: false, - extensions: [ - "igs", - "iges" - ] -}, - "model/mesh": { - source: "iana", - compressible: false, - extensions: [ - "msh", - "mesh", - "silo" - ] -}, - "model/mtl": { - source: "iana", - extensions: [ - "mtl" - ] -}, - "model/obj": { - source: "iana", - extensions: [ - "obj" - ] -}, - "model/step": { - source: "iana" -}, - "model/step+xml": { - source: "iana", - compressible: true, - extensions: [ - "stpx" - ] -}, - "model/step+zip": { - source: "iana", - compressible: false, - extensions: [ - "stpz" - ] -}, - "model/step-xml+zip": { - source: "iana", - compressible: false, - extensions: [ - "stpxz" - ] -}, - "model/stl": { - source: "iana", - extensions: [ - "stl" - ] -}, - "model/vnd.collada+xml": { - source: "iana", - compressible: true, - extensions: [ - "dae" - ] -}, - "model/vnd.dwf": { - source: "iana", - extensions: [ - "dwf" - ] -}, - "model/vnd.flatland.3dml": { - source: "iana" -}, - "model/vnd.gdl": { - source: "iana", - extensions: [ - "gdl" - ] -}, - "model/vnd.gs-gdl": { - source: "apache" -}, - "model/vnd.gs.gdl": { - source: "iana" -}, - "model/vnd.gtw": { - source: "iana", - extensions: [ - "gtw" - ] -}, - "model/vnd.moml+xml": { - source: "iana", - compressible: true -}, - "model/vnd.mts": { - source: "iana", - extensions: [ - "mts" - ] -}, - "model/vnd.opengex": { - source: "iana", - extensions: [ - "ogex" - ] -}, - "model/vnd.parasolid.transmit.binary": { - source: "iana", - extensions: [ - "x_b" - ] -}, - "model/vnd.parasolid.transmit.text": { - source: "iana", - extensions: [ - "x_t" - ] -}, - "model/vnd.pytha.pyox": { - source: "iana" -}, - "model/vnd.rosette.annotated-data-model": { - source: "iana" -}, - "model/vnd.sap.vds": { - source: "iana", - extensions: [ - "vds" - ] -}, - "model/vnd.usdz+zip": { - source: "iana", - compressible: false, - extensions: [ - "usdz" - ] -}, - "model/vnd.valve.source.compiled-map": { - source: "iana", - extensions: [ - "bsp" - ] -}, - "model/vnd.vtu": { - source: "iana", - extensions: [ - "vtu" - ] -}, - "model/vrml": { - source: "iana", - compressible: false, - extensions: [ - "wrl", - "vrml" - ] -}, - "model/x3d+binary": { - source: "apache", - compressible: false, - extensions: [ - "x3db", - "x3dbz" - ] -}, - "model/x3d+fastinfoset": { - source: "iana", - extensions: [ - "x3db" - ] -}, - "model/x3d+vrml": { - source: "apache", - compressible: false, - extensions: [ - "x3dv", - "x3dvz" - ] -}, - "model/x3d+xml": { - source: "iana", - compressible: true, - extensions: [ - "x3d", - "x3dz" - ] -}, - "model/x3d-vrml": { - source: "iana", - extensions: [ - "x3dv" - ] -}, - "multipart/alternative": { - source: "iana", - compressible: false -}, - "multipart/appledouble": { - source: "iana" -}, - "multipart/byteranges": { - source: "iana" -}, - "multipart/digest": { - source: "iana" -}, - "multipart/encrypted": { - source: "iana", - compressible: false -}, - "multipart/form-data": { - source: "iana", - compressible: false -}, - "multipart/header-set": { - source: "iana" -}, - "multipart/mixed": { - source: "iana" -}, - "multipart/multilingual": { - source: "iana" -}, - "multipart/parallel": { - source: "iana" -}, - "multipart/related": { - source: "iana", - compressible: false -}, - "multipart/report": { - source: "iana" -}, - "multipart/signed": { - source: "iana", - compressible: false -}, - "multipart/vnd.bint.med-plus": { - source: "iana" -}, - "multipart/voice-message": { - source: "iana" -}, - "multipart/x-mixed-replace": { - source: "iana" -}, - "text/1d-interleaved-parityfec": { - source: "iana" -}, - "text/cache-manifest": { - source: "iana", - compressible: true, - extensions: [ - "appcache", - "manifest" - ] -}, - "text/calendar": { - source: "iana", - extensions: [ - "ics", - "ifb" - ] -}, - "text/calender": { - compressible: true -}, - "text/cmd": { - compressible: true -}, - "text/coffeescript": { - extensions: [ - "coffee", - "litcoffee" - ] -}, - "text/cql": { - source: "iana" -}, - "text/cql-expression": { - source: "iana" -}, - "text/cql-identifier": { - source: "iana" -}, - "text/css": { - source: "iana", - charset: "UTF-8", - compressible: true, - extensions: [ - "css" - ] -}, - "text/csv": { - source: "iana", - compressible: true, - extensions: [ - "csv" - ] -}, - "text/csv-schema": { - source: "iana" -}, - "text/directory": { - source: "iana" -}, - "text/dns": { - source: "iana" -}, - "text/ecmascript": { - source: "iana" -}, - "text/encaprtp": { - source: "iana" -}, - "text/enriched": { - source: "iana" -}, - "text/fhirpath": { - source: "iana" -}, - "text/flexfec": { - source: "iana" -}, - "text/fwdred": { - source: "iana" -}, - "text/gff3": { - source: "iana" -}, - "text/grammar-ref-list": { - source: "iana" -}, - "text/html": { - source: "iana", - compressible: true, - extensions: [ - "html", - "htm", - "shtml" - ] -}, - "text/jade": { - extensions: [ - "jade" - ] -}, - "text/javascript": { - source: "iana", - compressible: true -}, - "text/jcr-cnd": { - source: "iana" -}, - "text/jsx": { - compressible: true, - extensions: [ - "jsx" - ] -}, - "text/less": { - compressible: true, - extensions: [ - "less" - ] -}, - "text/markdown": { - source: "iana", - compressible: true, - extensions: [ - "markdown", - "md" - ] -}, - "text/mathml": { - source: "nginx", - extensions: [ - "mml" - ] -}, - "text/mdx": { - compressible: true, - extensions: [ - "mdx" - ] -}, - "text/mizar": { - source: "iana" -}, - "text/n3": { - source: "iana", - charset: "UTF-8", - compressible: true, - extensions: [ - "n3" - ] -}, - "text/parameters": { - source: "iana", - charset: "UTF-8" -}, - "text/parityfec": { - source: "iana" -}, - "text/plain": { - source: "iana", - compressible: true, - extensions: [ - "txt", - "text", - "conf", - "def", - "list", - "log", - "in", - "ini" - ] -}, - "text/provenance-notation": { - source: "iana", - charset: "UTF-8" -}, - "text/prs.fallenstein.rst": { - source: "iana" -}, - "text/prs.lines.tag": { - source: "iana", - extensions: [ - "dsc" - ] -}, - "text/prs.prop.logic": { - source: "iana" -}, - "text/raptorfec": { - source: "iana" -}, - "text/red": { - source: "iana" -}, - "text/rfc822-headers": { - source: "iana" -}, - "text/richtext": { - source: "iana", - compressible: true, - extensions: [ - "rtx" - ] -}, - "text/rtf": { - source: "iana", - compressible: true, - extensions: [ - "rtf" - ] -}, - "text/rtp-enc-aescm128": { - source: "iana" -}, - "text/rtploopback": { - source: "iana" -}, - "text/rtx": { - source: "iana" -}, - "text/sgml": { - source: "iana", - extensions: [ - "sgml", - "sgm" - ] -}, - "text/shaclc": { - source: "iana" -}, - "text/shex": { - source: "iana", - extensions: [ - "shex" - ] -}, - "text/slim": { - extensions: [ - "slim", - "slm" - ] -}, - "text/spdx": { - source: "iana", - extensions: [ - "spdx" - ] -}, - "text/strings": { - source: "iana" -}, - "text/stylus": { - extensions: [ - "stylus", - "styl" - ] -}, - "text/t140": { - source: "iana" -}, - "text/tab-separated-values": { - source: "iana", - compressible: true, - extensions: [ - "tsv" - ] -}, - "text/troff": { - source: "iana", - extensions: [ - "t", - "tr", - "roff", - "man", - "me", - "ms" - ] -}, - "text/turtle": { - source: "iana", - charset: "UTF-8", - extensions: [ - "ttl" - ] -}, - "text/ulpfec": { - source: "iana" -}, - "text/uri-list": { - source: "iana", - compressible: true, - extensions: [ - "uri", - "uris", - "urls" - ] -}, - "text/vcard": { - source: "iana", - compressible: true, - extensions: [ - "vcard" - ] -}, - "text/vnd.a": { - source: "iana" -}, - "text/vnd.abc": { - source: "iana" -}, - "text/vnd.ascii-art": { - source: "iana" -}, - "text/vnd.curl": { - source: "iana", - extensions: [ - "curl" - ] -}, - "text/vnd.curl.dcurl": { - source: "apache", - extensions: [ - "dcurl" - ] -}, - "text/vnd.curl.mcurl": { - source: "apache", - extensions: [ - "mcurl" - ] -}, - "text/vnd.curl.scurl": { - source: "apache", - extensions: [ - "scurl" - ] -}, - "text/vnd.debian.copyright": { - source: "iana", - charset: "UTF-8" -}, - "text/vnd.dmclientscript": { - source: "iana" -}, - "text/vnd.dvb.subtitle": { - source: "iana", - extensions: [ - "sub" - ] -}, - "text/vnd.esmertec.theme-descriptor": { - source: "iana", - charset: "UTF-8" -}, - "text/vnd.familysearch.gedcom": { - source: "iana", - extensions: [ - "ged" - ] -}, - "text/vnd.ficlab.flt": { - source: "iana" -}, - "text/vnd.fly": { - source: "iana", - extensions: [ - "fly" - ] -}, - "text/vnd.fmi.flexstor": { - source: "iana", - extensions: [ - "flx" - ] -}, - "text/vnd.gml": { - source: "iana" -}, - "text/vnd.graphviz": { - source: "iana", - extensions: [ - "gv" - ] -}, - "text/vnd.hans": { - source: "iana" -}, - "text/vnd.hgl": { - source: "iana" -}, - "text/vnd.in3d.3dml": { - source: "iana", - extensions: [ - "3dml" - ] -}, - "text/vnd.in3d.spot": { - source: "iana", - extensions: [ - "spot" - ] -}, - "text/vnd.iptc.newsml": { - source: "iana" -}, - "text/vnd.iptc.nitf": { - source: "iana" -}, - "text/vnd.latex-z": { - source: "iana" -}, - "text/vnd.motorola.reflex": { - source: "iana" -}, - "text/vnd.ms-mediapackage": { - source: "iana" -}, - "text/vnd.net2phone.commcenter.command": { - source: "iana" -}, - "text/vnd.radisys.msml-basic-layout": { - source: "iana" -}, - "text/vnd.senx.warpscript": { - source: "iana" -}, - "text/vnd.si.uricatalogue": { - source: "iana" -}, - "text/vnd.sosi": { - source: "iana" -}, - "text/vnd.sun.j2me.app-descriptor": { - source: "iana", - charset: "UTF-8", - extensions: [ - "jad" - ] -}, - "text/vnd.trolltech.linguist": { - source: "iana", - charset: "UTF-8" -}, - "text/vnd.wap.si": { - source: "iana" -}, - "text/vnd.wap.sl": { - source: "iana" -}, - "text/vnd.wap.wml": { - source: "iana", - extensions: [ - "wml" - ] -}, - "text/vnd.wap.wmlscript": { - source: "iana", - extensions: [ - "wmls" - ] -}, - "text/vtt": { - source: "iana", - charset: "UTF-8", - compressible: true, - extensions: [ - "vtt" - ] -}, - "text/x-asm": { - source: "apache", - extensions: [ - "s", - "asm" - ] -}, - "text/x-c": { - source: "apache", - extensions: [ - "c", - "cc", - "cxx", - "cpp", - "h", - "hh", - "dic" - ] -}, - "text/x-component": { - source: "nginx", - extensions: [ - "htc" - ] -}, - "text/x-fortran": { - source: "apache", - extensions: [ - "f", - "for", - "f77", - "f90" - ] -}, - "text/x-gwt-rpc": { - compressible: true -}, - "text/x-handlebars-template": { - extensions: [ - "hbs" - ] -}, - "text/x-java-source": { - source: "apache", - extensions: [ - "java" - ] -}, - "text/x-jquery-tmpl": { - compressible: true -}, - "text/x-lua": { - extensions: [ - "lua" - ] -}, - "text/x-markdown": { - compressible: true, - extensions: [ - "mkd" - ] -}, - "text/x-nfo": { - source: "apache", - extensions: [ - "nfo" - ] -}, - "text/x-opml": { - source: "apache", - extensions: [ - "opml" - ] -}, - "text/x-org": { - compressible: true, - extensions: [ - "org" - ] -}, - "text/x-pascal": { - source: "apache", - extensions: [ - "p", - "pas" - ] -}, - "text/x-processing": { - compressible: true, - extensions: [ - "pde" - ] -}, - "text/x-sass": { - extensions: [ - "sass" - ] -}, - "text/x-scss": { - extensions: [ - "scss" - ] -}, - "text/x-setext": { - source: "apache", - extensions: [ - "etx" - ] -}, - "text/x-sfv": { - source: "apache", - extensions: [ - "sfv" - ] -}, - "text/x-suse-ymp": { - compressible: true, - extensions: [ - "ymp" - ] -}, - "text/x-uuencode": { - source: "apache", - extensions: [ - "uu" - ] -}, - "text/x-vcalendar": { - source: "apache", - extensions: [ - "vcs" - ] -}, - "text/x-vcard": { - source: "apache", - extensions: [ - "vcf" - ] -}, - "text/xml": { - source: "iana", - compressible: true, - extensions: [ - "xml" - ] -}, - "text/xml-external-parsed-entity": { - source: "iana" -}, - "text/yaml": { - compressible: true, - extensions: [ - "yaml", - "yml" - ] -}, - "video/1d-interleaved-parityfec": { - source: "iana" -}, - "video/3gpp": { - source: "iana", - extensions: [ - "3gp", - "3gpp" - ] -}, - "video/3gpp-tt": { - source: "iana" -}, - "video/3gpp2": { - source: "iana", - extensions: [ - "3g2" - ] -}, - "video/av1": { - source: "iana" -}, - "video/bmpeg": { - source: "iana" -}, - "video/bt656": { - source: "iana" -}, - "video/celb": { - source: "iana" -}, - "video/dv": { - source: "iana" -}, - "video/encaprtp": { - source: "iana" -}, - "video/ffv1": { - source: "iana" -}, - "video/flexfec": { - source: "iana" -}, - "video/h261": { - source: "iana", - extensions: [ - "h261" - ] -}, - "video/h263": { - source: "iana", - extensions: [ - "h263" - ] -}, - "video/h263-1998": { - source: "iana" -}, - "video/h263-2000": { - source: "iana" -}, - "video/h264": { - source: "iana", - extensions: [ - "h264" - ] -}, - "video/h264-rcdo": { - source: "iana" -}, - "video/h264-svc": { - source: "iana" -}, - "video/h265": { - source: "iana" -}, - "video/iso.segment": { - source: "iana", - extensions: [ - "m4s" - ] -}, - "video/jpeg": { - source: "iana", - extensions: [ - "jpgv" - ] -}, - "video/jpeg2000": { - source: "iana" -}, - "video/jpm": { - source: "apache", - extensions: [ - "jpm", - "jpgm" - ] -}, - "video/jxsv": { - source: "iana" -}, - "video/mj2": { - source: "iana", - extensions: [ - "mj2", - "mjp2" - ] -}, - "video/mp1s": { - source: "iana" -}, - "video/mp2p": { - source: "iana" -}, - "video/mp2t": { - source: "iana", - extensions: [ - "ts" - ] -}, - "video/mp4": { - source: "iana", - compressible: false, - extensions: [ - "mp4", - "mp4v", - "mpg4" - ] -}, - "video/mp4v-es": { - source: "iana" -}, - "video/mpeg": { - source: "iana", - compressible: false, - extensions: [ - "mpeg", - "mpg", - "mpe", - "m1v", - "m2v" - ] -}, - "video/mpeg4-generic": { - source: "iana" -}, - "video/mpv": { - source: "iana" -}, - "video/nv": { - source: "iana" -}, - "video/ogg": { - source: "iana", - compressible: false, - extensions: [ - "ogv" - ] -}, - "video/parityfec": { - source: "iana" -}, - "video/pointer": { - source: "iana" -}, - "video/quicktime": { - source: "iana", - compressible: false, - extensions: [ - "qt", - "mov" - ] -}, - "video/raptorfec": { - source: "iana" -}, - "video/raw": { - source: "iana" -}, - "video/rtp-enc-aescm128": { - source: "iana" -}, - "video/rtploopback": { - source: "iana" -}, - "video/rtx": { - source: "iana" -}, - "video/scip": { - source: "iana" -}, - "video/smpte291": { - source: "iana" -}, - "video/smpte292m": { - source: "iana" -}, - "video/ulpfec": { - source: "iana" -}, - "video/vc1": { - source: "iana" -}, - "video/vc2": { - source: "iana" -}, - "video/vnd.cctv": { - source: "iana" -}, - "video/vnd.dece.hd": { - source: "iana", - extensions: [ - "uvh", - "uvvh" - ] -}, - "video/vnd.dece.mobile": { - source: "iana", - extensions: [ - "uvm", - "uvvm" - ] -}, - "video/vnd.dece.mp4": { - source: "iana" -}, - "video/vnd.dece.pd": { - source: "iana", - extensions: [ - "uvp", - "uvvp" - ] -}, - "video/vnd.dece.sd": { - source: "iana", - extensions: [ - "uvs", - "uvvs" - ] -}, - "video/vnd.dece.video": { - source: "iana", - extensions: [ - "uvv", - "uvvv" - ] -}, - "video/vnd.directv.mpeg": { - source: "iana" -}, - "video/vnd.directv.mpeg-tts": { - source: "iana" -}, - "video/vnd.dlna.mpeg-tts": { - source: "iana" -}, - "video/vnd.dvb.file": { - source: "iana", - extensions: [ - "dvb" - ] -}, - "video/vnd.fvt": { - source: "iana", - extensions: [ - "fvt" - ] -}, - "video/vnd.hns.video": { - source: "iana" -}, - "video/vnd.iptvforum.1dparityfec-1010": { - source: "iana" -}, - "video/vnd.iptvforum.1dparityfec-2005": { - source: "iana" -}, - "video/vnd.iptvforum.2dparityfec-1010": { - source: "iana" -}, - "video/vnd.iptvforum.2dparityfec-2005": { - source: "iana" -}, - "video/vnd.iptvforum.ttsavc": { - source: "iana" -}, - "video/vnd.iptvforum.ttsmpeg2": { - source: "iana" -}, - "video/vnd.motorola.video": { - source: "iana" -}, - "video/vnd.motorola.videop": { - source: "iana" -}, - "video/vnd.mpegurl": { - source: "iana", - extensions: [ - "mxu", - "m4u" - ] -}, - "video/vnd.ms-playready.media.pyv": { - source: "iana", - extensions: [ - "pyv" - ] -}, - "video/vnd.nokia.interleaved-multimedia": { - source: "iana" -}, - "video/vnd.nokia.mp4vr": { - source: "iana" -}, - "video/vnd.nokia.videovoip": { - source: "iana" -}, - "video/vnd.objectvideo": { - source: "iana" -}, - "video/vnd.radgamettools.bink": { - source: "iana" -}, - "video/vnd.radgamettools.smacker": { - source: "iana" -}, - "video/vnd.sealed.mpeg1": { - source: "iana" -}, - "video/vnd.sealed.mpeg4": { - source: "iana" -}, - "video/vnd.sealed.swf": { - source: "iana" -}, - "video/vnd.sealedmedia.softseal.mov": { - source: "iana" -}, - "video/vnd.uvvu.mp4": { - source: "iana", - extensions: [ - "uvu", - "uvvu" - ] -}, - "video/vnd.vivo": { - source: "iana", - extensions: [ - "viv" - ] -}, - "video/vnd.youtube.yt": { - source: "iana" -}, - "video/vp8": { - source: "iana" -}, - "video/vp9": { - source: "iana" -}, - "video/webm": { - source: "apache", - compressible: false, - extensions: [ - "webm" - ] -}, - "video/x-f4v": { - source: "apache", - extensions: [ - "f4v" - ] -}, - "video/x-fli": { - source: "apache", - extensions: [ - "fli" - ] -}, - "video/x-flv": { - source: "apache", - compressible: false, - extensions: [ - "flv" - ] -}, - "video/x-m4v": { - source: "apache", - extensions: [ - "m4v" - ] -}, - "video/x-matroska": { - source: "apache", - compressible: false, - extensions: [ - "mkv", - "mk3d", - "mks" - ] -}, - "video/x-mng": { - source: "apache", - extensions: [ - "mng" - ] -}, - "video/x-ms-asf": { - source: "apache", - extensions: [ - "asf", - "asx" - ] -}, - "video/x-ms-vob": { - source: "apache", - extensions: [ - "vob" - ] -}, - "video/x-ms-wm": { - source: "apache", - extensions: [ - "wm" - ] -}, - "video/x-ms-wmv": { - source: "apache", - compressible: false, - extensions: [ - "wmv" - ] -}, - "video/x-ms-wmx": { - source: "apache", - extensions: [ - "wmx" - ] -}, - "video/x-ms-wvx": { - source: "apache", - extensions: [ - "wvx" - ] -}, - "video/x-msvideo": { - source: "apache", - extensions: [ - "avi" - ] -}, - "video/x-sgi-movie": { - source: "apache", - extensions: [ - "movie" - ] -}, - "video/x-smv": { - source: "apache", - extensions: [ - "smv" - ] -}, - "x-conference/x-cooltalk": { - source: "apache", - extensions: [ - "ice" - ] -}, - "x-shader/x-fragment": { - compressible: true -}, - "x-shader/x-vertex": { - compressible: true -} -}; - -/*! - * mime-db - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2015-2022 Douglas Christopher Wilson - * MIT Licensed - */ - -(function (module) { - /** - * Module exports. - */ - - module.exports = require$$0; -} (mimeDb)); - -/*! - * mime-types - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2015 Douglas Christopher Wilson - * MIT Licensed - */ - -(function (exports) { - - /** - * Module dependencies. - * @private - */ - - var db = mimeDb.exports; - var extname = require$$1$2.extname; - - /** - * Module variables. - * @private - */ - - var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/; - var TEXT_TYPE_REGEXP = /^text\//i; - - /** - * Module exports. - * @public - */ - - exports.charset = charset; - exports.charsets = { lookup: charset }; - exports.contentType = contentType; - exports.extension = extension; - exports.extensions = Object.create(null); - exports.lookup = lookup; - exports.types = Object.create(null); - - // Populate the extensions/types maps - populateMaps(exports.extensions, exports.types); - - /** - * Get the default charset for a MIME type. - * - * @param {string} type - * @return {boolean|string} - */ - - function charset (type) { - if (!type || typeof type !== 'string') { - return false - } - - // TODO: use media-typer - var match = EXTRACT_TYPE_REGEXP.exec(type); - var mime = match && db[match[1].toLowerCase()]; - - if (mime && mime.charset) { - return mime.charset - } - - // default text/* to utf-8 - if (match && TEXT_TYPE_REGEXP.test(match[1])) { - return 'UTF-8' - } - - return false - } - - /** - * Create a full Content-Type header given a MIME type or extension. - * - * @param {string} str - * @return {boolean|string} - */ - - function contentType (str) { - // TODO: should this even be in this module? - if (!str || typeof str !== 'string') { - return false - } - - var mime = str.indexOf('/') === -1 - ? exports.lookup(str) - : str; - - if (!mime) { - return false - } - - // TODO: use content-type or other module - if (mime.indexOf('charset') === -1) { - var charset = exports.charset(mime); - if (charset) mime += '; charset=' + charset.toLowerCase(); - } - - return mime - } - - /** - * Get the default extension for a MIME type. - * - * @param {string} type - * @return {boolean|string} - */ - - function extension (type) { - if (!type || typeof type !== 'string') { - return false - } - - // TODO: use media-typer - var match = EXTRACT_TYPE_REGEXP.exec(type); - - // get extensions - var exts = match && exports.extensions[match[1].toLowerCase()]; - - if (!exts || !exts.length) { - return false - } - - return exts[0] - } - - /** - * Lookup the MIME type for a file path/extension. - * - * @param {string} path - * @return {boolean|string} - */ - - function lookup (path) { - if (!path || typeof path !== 'string') { - return false - } - - // get the extension ("ext" or ".ext" or full path) - var extension = extname('x.' + path) - .toLowerCase() - .substr(1); - - if (!extension) { - return false - } - - return exports.types[extension] || false - } - - /** - * Populate the extensions and types maps. - * @private - */ - - function populateMaps (extensions, types) { - // source preference (least -> most) - var preference = ['nginx', 'apache', undefined, 'iana']; - - Object.keys(db).forEach(function forEachMimeType (type) { - var mime = db[type]; - var exts = mime.extensions; - - if (!exts || !exts.length) { - return - } - - // mime -> extensions - extensions[type] = exts; - - // extension -> mime - for (var i = 0; i < exts.length; i++) { - var extension = exts[i]; - - if (types[extension]) { - var from = preference.indexOf(db[types[extension]].source); - var to = preference.indexOf(mime.source); - - if (types[extension] !== 'application/octet-stream' && - (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) { - // skip the remapping - continue - } - } - - // set the extension -> mime - types[extension] = type; - } - }); - } -} (mimeTypes)); - -var defer_1 = defer$1; - -/** - * Runs provided function on next iteration of the event loop - * - * @param {function} fn - function to run - */ -function defer$1(fn) -{ - var nextTick = typeof setImmediate == 'function' - ? setImmediate - : ( - typeof process == 'object' && typeof process.nextTick == 'function' - ? process.nextTick - : null - ); - - if (nextTick) - { - nextTick(fn); - } - else - { - setTimeout(fn, 0); - } -} - -var defer = defer_1; - -// API -var async_1 = async$2; - -/** - * Runs provided callback asynchronously - * even if callback itself is not - * - * @param {function} callback - callback to invoke - * @returns {function} - augmented callback - */ -function async$2(callback) -{ - var isAsync = false; - - // check if async happened - defer(function() { isAsync = true; }); - - return function async_callback(err, result) - { - if (isAsync) - { - callback(err, result); - } - else - { - defer(function nextTick_callback() - { - callback(err, result); - }); - } - }; -} - -// API -var abort_1 = abort$2; - -/** - * Aborts leftover active jobs - * - * @param {object} state - current state object - */ -function abort$2(state) -{ - Object.keys(state.jobs).forEach(clean.bind(state)); - - // reset leftover jobs - state.jobs = {}; -} - -/** - * Cleans up leftover job by invoking abort function for the provided job id - * - * @this state - * @param {string|number} key - job id to abort - */ -function clean(key) -{ - if (typeof this.jobs[key] == 'function') - { - this.jobs[key](); - } -} - -var async$1 = async_1 - , abort$1 = abort_1 - ; - -// API -var iterate_1 = iterate$2; - -/** - * Iterates over each job object - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {object} state - current job status - * @param {function} callback - invoked when all elements processed - */ -function iterate$2(list, iterator, state, callback) -{ - // store current index - var key = state['keyedList'] ? state['keyedList'][state.index] : state.index; - - state.jobs[key] = runJob(iterator, key, list[key], function(error, output) - { - // don't repeat yourself - // skip secondary callbacks - if (!(key in state.jobs)) - { - return; - } - - // clean up jobs - delete state.jobs[key]; - - if (error) - { - // don't process rest of the results - // stop still active jobs - // and reset the list - abort$1(state); - } - else - { - state.results[key] = output; - } - - // return salvaged results - callback(error, state.results); - }); -} - -/** - * Runs iterator over provided job element - * - * @param {function} iterator - iterator to invoke - * @param {string|number} key - key/index of the element in the list of jobs - * @param {mixed} item - job description - * @param {function} callback - invoked after iterator is done with the job - * @returns {function|mixed} - job abort function or something else - */ -function runJob(iterator, key, item, callback) -{ - var aborter; - - // allow shortcut if iterator expects only two arguments - if (iterator.length == 2) - { - aborter = iterator(item, async$1(callback)); - } - // otherwise go with full three arguments - else - { - aborter = iterator(item, key, async$1(callback)); - } - - return aborter; -} - -// API -var state_1 = state; - -/** - * Creates initial state object - * for iteration over list - * - * @param {array|object} list - list to iterate over - * @param {function|null} sortMethod - function to use for keys sort, - * or `null` to keep them as is - * @returns {object} - initial state object - */ -function state(list, sortMethod) -{ - var isNamedList = !Array.isArray(list) - , initState = - { - index : 0, - keyedList: isNamedList || sortMethod ? Object.keys(list) : null, - jobs : {}, - results : isNamedList ? {} : [], - size : isNamedList ? Object.keys(list).length : list.length - } - ; - - if (sortMethod) - { - // sort array keys based on it's values - // sort object's keys just on own merit - initState.keyedList.sort(isNamedList ? sortMethod : function(a, b) - { - return sortMethod(list[a], list[b]); - }); - } - - return initState; -} - -var abort = abort_1 - , async = async_1 - ; - -// API -var terminator_1 = terminator$2; - -/** - * Terminates jobs in the attached state context - * - * @this AsyncKitState# - * @param {function} callback - final callback to invoke after termination - */ -function terminator$2(callback) -{ - if (!Object.keys(this.jobs).length) - { - return; - } - - // fast forward iteration index - this.index = this.size; - - // abort jobs - abort(this); - - // send back results we have so far - async(callback)(null, this.results); -} - -var iterate$1 = iterate_1 - , initState$1 = state_1 - , terminator$1 = terminator_1 - ; - -// Public API -var parallel_1 = parallel; - -/** - * Runs iterator over provided array elements in parallel - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {function} callback - invoked when all elements processed - * @returns {function} - jobs terminator - */ -function parallel(list, iterator, callback) -{ - var state = initState$1(list); - - while (state.index < (state['keyedList'] || list).length) - { - iterate$1(list, iterator, state, function(error, result) - { - if (error) - { - callback(error, result); - return; - } - - // looks like it's the last one - if (Object.keys(state.jobs).length === 0) - { - callback(null, state.results); - return; - } - }); - - state.index++; - } - - return terminator$1.bind(state, callback); -} - -var serialOrdered$2 = {exports: {}}; - -var iterate = iterate_1 - , initState = state_1 - , terminator = terminator_1 - ; - -// Public API -serialOrdered$2.exports = serialOrdered$1; -// sorting helpers -serialOrdered$2.exports.ascending = ascending; -serialOrdered$2.exports.descending = descending; - -/** - * Runs iterator over provided sorted array elements in series - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {function} sortMethod - custom sort function - * @param {function} callback - invoked when all elements processed - * @returns {function} - jobs terminator - */ -function serialOrdered$1(list, iterator, sortMethod, callback) -{ - var state = initState(list, sortMethod); - - iterate(list, iterator, state, function iteratorHandler(error, result) - { - if (error) - { - callback(error, result); - return; - } - - state.index++; - - // are we there yet? - if (state.index < (state['keyedList'] || list).length) - { - iterate(list, iterator, state, iteratorHandler); - return; - } - - // done here - callback(null, state.results); - }); - - return terminator.bind(state, callback); -} - -/* - * -- Sort methods - */ - -/** - * sort helper to sort array elements in ascending order - * - * @param {mixed} a - an item to compare - * @param {mixed} b - an item to compare - * @returns {number} - comparison result - */ -function ascending(a, b) -{ - return a < b ? -1 : a > b ? 1 : 0; -} - -/** - * sort helper to sort array elements in descending order - * - * @param {mixed} a - an item to compare - * @param {mixed} b - an item to compare - * @returns {number} - comparison result - */ -function descending(a, b) -{ - return -1 * ascending(a, b); -} - -var serialOrdered = serialOrdered$2.exports; - -// Public API -var serial_1 = serial; - -/** - * Runs iterator over provided array elements in series - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {function} callback - invoked when all elements processed - * @returns {function} - jobs terminator - */ -function serial(list, iterator, callback) -{ - return serialOrdered(list, iterator, null, callback); -} - -var asynckit$1 = -{ - parallel : parallel_1, - serial : serial_1, - serialOrdered : serialOrdered$2.exports -}; - -// populates missing values -var populate$1 = function(dst, src) { - - Object.keys(src).forEach(function(prop) - { - dst[prop] = dst[prop] || src[prop]; - }); - - return dst; -}; - -var CombinedStream = combined_stream; -var util$2 = require$$0$2; -var path = require$$1$2; -var http = http$1; -var https = https$1; -var parseUrl = Url.parse; -var fs = require$$6$1; -var mime = mimeTypes; -var asynckit = asynckit$1; -var populate = populate$1; - -// Public API -var form_data = FormData$2; - -// make it a Stream -util$2.inherits(FormData$2, CombinedStream); - -/** - * Create readable "multipart/form-data" streams. - * Can be used to submit forms - * and file uploads to other web applications. - * - * @constructor - * @param {Object} options - Properties to be added/overriden for FormData and CombinedStream - */ -function FormData$2(options) { - if (!(this instanceof FormData$2)) { - return new FormData$2(options); - } - - this._overheadLength = 0; - this._valueLength = 0; - this._valuesToMeasure = []; - - CombinedStream.call(this); - - options = options || {}; - for (var option in options) { - this[option] = options[option]; - } -} - -FormData$2.LINE_BREAK = '\r\n'; -FormData$2.DEFAULT_CONTENT_TYPE = 'application/octet-stream'; - -FormData$2.prototype.append = function(field, value, options) { - - options = options || {}; - - // allow filename as single option - if (typeof options == 'string') { - options = {filename: options}; - } - - var append = CombinedStream.prototype.append.bind(this); - - // all that streamy business can't handle numbers - if (typeof value == 'number') { - value = '' + value; - } - - // https://github.com/felixge/node-form-data/issues/38 - if (util$2.isArray(value)) { - // Please convert your array into string - // the way web server expects it - this._error(new Error('Arrays are not supported.')); - return; - } - - var header = this._multiPartHeader(field, value, options); - var footer = this._multiPartFooter(); - - append(header); - append(value); - append(footer); - - // pass along options.knownLength - this._trackLength(header, value, options); -}; - -FormData$2.prototype._trackLength = function(header, value, options) { - var valueLength = 0; - - // used w/ getLengthSync(), when length is known. - // e.g. for streaming directly from a remote server, - // w/ a known file a size, and not wanting to wait for - // incoming file to finish to get its size. - if (options.knownLength != null) { - valueLength += +options.knownLength; - } else if (Buffer.isBuffer(value)) { - valueLength = value.length; - } else if (typeof value === 'string') { - valueLength = Buffer.byteLength(value); - } - - this._valueLength += valueLength; - - // @check why add CRLF? does this account for custom/multiple CRLFs? - this._overheadLength += - Buffer.byteLength(header) + - FormData$2.LINE_BREAK.length; - - // empty or either doesn't have path or not an http response - if (!value || ( !value.path && !(value.readable && value.hasOwnProperty('httpVersion')) )) { - return; - } - - // no need to bother with the length - if (!options.knownLength) { - this._valuesToMeasure.push(value); - } -}; - -FormData$2.prototype._lengthRetriever = function(value, callback) { - - if (value.hasOwnProperty('fd')) { - - // take read range into a account - // `end` = Infinity –> read file till the end - // - // TODO: Looks like there is bug in Node fs.createReadStream - // it doesn't respect `end` options without `start` options - // Fix it when node fixes it. - // https://github.com/joyent/node/issues/7819 - if (value.end != undefined && value.end != Infinity && value.start != undefined) { - - // when end specified - // no need to calculate range - // inclusive, starts with 0 - callback(null, value.end + 1 - (value.start ? value.start : 0)); - - // not that fast snoopy - } else { - // still need to fetch file size from fs - fs.stat(value.path, function(err, stat) { - - var fileSize; - - if (err) { - callback(err); - return; - } - - // update final size based on the range options - fileSize = stat.size - (value.start ? value.start : 0); - callback(null, fileSize); - }); - } - - // or http response - } else if (value.hasOwnProperty('httpVersion')) { - callback(null, +value.headers['content-length']); - - // or request stream http://github.com/mikeal/request - } else if (value.hasOwnProperty('httpModule')) { - // wait till response come back - value.on('response', function(response) { - value.pause(); - callback(null, +response.headers['content-length']); - }); - value.resume(); - - // something else - } else { - callback('Unknown stream'); - } -}; - -FormData$2.prototype._multiPartHeader = function(field, value, options) { - // custom header specified (as string)? - // it becomes responsible for boundary - // (e.g. to handle extra CRLFs on .NET servers) - if (typeof options.header == 'string') { - return options.header; - } - - var contentDisposition = this._getContentDisposition(value, options); - var contentType = this._getContentType(value, options); - - var contents = ''; - var headers = { - // add custom disposition as third element or keep it two elements if not - 'Content-Disposition': ['form-data', 'name="' + field + '"'].concat(contentDisposition || []), - // if no content type. allow it to be empty array - 'Content-Type': [].concat(contentType || []) - }; - - // allow custom headers. - if (typeof options.header == 'object') { - populate(headers, options.header); - } - - var header; - for (var prop in headers) { - if (!headers.hasOwnProperty(prop)) continue; - header = headers[prop]; - - // skip nullish headers. - if (header == null) { - continue; - } - - // convert all headers to arrays. - if (!Array.isArray(header)) { - header = [header]; - } - - // add non-empty headers. - if (header.length) { - contents += prop + ': ' + header.join('; ') + FormData$2.LINE_BREAK; - } - } - - return '--' + this.getBoundary() + FormData$2.LINE_BREAK + contents + FormData$2.LINE_BREAK; -}; - -FormData$2.prototype._getContentDisposition = function(value, options) { - - var filename - , contentDisposition - ; - - if (typeof options.filepath === 'string') { - // custom filepath for relative paths - filename = path.normalize(options.filepath).replace(/\\/g, '/'); - } else if (options.filename || value.name || value.path) { - // custom filename take precedence - // formidable and the browser add a name property - // fs- and request- streams have path property - filename = path.basename(options.filename || value.name || value.path); - } else if (value.readable && value.hasOwnProperty('httpVersion')) { - // or try http response - filename = path.basename(value.client._httpMessage.path || ''); - } - - if (filename) { - contentDisposition = 'filename="' + filename + '"'; - } - - return contentDisposition; -}; - -FormData$2.prototype._getContentType = function(value, options) { - - // use custom content-type above all - var contentType = options.contentType; - - // or try `name` from formidable, browser - if (!contentType && value.name) { - contentType = mime.lookup(value.name); - } - - // or try `path` from fs-, request- streams - if (!contentType && value.path) { - contentType = mime.lookup(value.path); - } - - // or if it's http-reponse - if (!contentType && value.readable && value.hasOwnProperty('httpVersion')) { - contentType = value.headers['content-type']; - } - - // or guess it from the filepath or filename - if (!contentType && (options.filepath || options.filename)) { - contentType = mime.lookup(options.filepath || options.filename); - } - - // fallback to the default content type if `value` is not simple value - if (!contentType && typeof value == 'object') { - contentType = FormData$2.DEFAULT_CONTENT_TYPE; - } - - return contentType; -}; - -FormData$2.prototype._multiPartFooter = function() { - return function(next) { - var footer = FormData$2.LINE_BREAK; - - var lastPart = (this._streams.length === 0); - if (lastPart) { - footer += this._lastBoundary(); - } - - next(footer); - }.bind(this); -}; - -FormData$2.prototype._lastBoundary = function() { - return '--' + this.getBoundary() + '--' + FormData$2.LINE_BREAK; -}; - -FormData$2.prototype.getHeaders = function(userHeaders) { - var header; - var formHeaders = { - 'content-type': 'multipart/form-data; boundary=' + this.getBoundary() - }; - - for (header in userHeaders) { - if (userHeaders.hasOwnProperty(header)) { - formHeaders[header.toLowerCase()] = userHeaders[header]; - } - } - - return formHeaders; -}; - -FormData$2.prototype.setBoundary = function(boundary) { - this._boundary = boundary; -}; - -FormData$2.prototype.getBoundary = function() { - if (!this._boundary) { - this._generateBoundary(); - } - - return this._boundary; -}; - -FormData$2.prototype.getBuffer = function() { - var dataBuffer = new Buffer.alloc( 0 ); - var boundary = this.getBoundary(); - - // Create the form content. Add Line breaks to the end of data. - for (var i = 0, len = this._streams.length; i < len; i++) { - if (typeof this._streams[i] !== 'function') { - - // Add content to the buffer. - if(Buffer.isBuffer(this._streams[i])) { - dataBuffer = Buffer.concat( [dataBuffer, this._streams[i]]); - }else { - dataBuffer = Buffer.concat( [dataBuffer, Buffer.from(this._streams[i])]); - } - - // Add break after content. - if (typeof this._streams[i] !== 'string' || this._streams[i].substring( 2, boundary.length + 2 ) !== boundary) { - dataBuffer = Buffer.concat( [dataBuffer, Buffer.from(FormData$2.LINE_BREAK)] ); - } - } - } - - // Add the footer and return the Buffer object. - return Buffer.concat( [dataBuffer, Buffer.from(this._lastBoundary())] ); -}; - -FormData$2.prototype._generateBoundary = function() { - // This generates a 50 character boundary similar to those used by Firefox. - // They are optimized for boyer-moore parsing. - var boundary = '--------------------------'; - for (var i = 0; i < 24; i++) { - boundary += Math.floor(Math.random() * 10).toString(16); - } - - this._boundary = boundary; -}; - -// Note: getLengthSync DOESN'T calculate streams length -// As workaround one can calculate file size manually -// and add it as knownLength option -FormData$2.prototype.getLengthSync = function() { - var knownLength = this._overheadLength + this._valueLength; - - // Don't get confused, there are 3 "internal" streams for each keyval pair - // so it basically checks if there is any value added to the form - if (this._streams.length) { - knownLength += this._lastBoundary().length; - } - - // https://github.com/form-data/form-data/issues/40 - if (!this.hasKnownLength()) { - // Some async length retrievers are present - // therefore synchronous length calculation is false. - // Please use getLength(callback) to get proper length - this._error(new Error('Cannot calculate proper length in synchronous way.')); - } - - return knownLength; -}; - -// Public API to check if length of added values is known -// https://github.com/form-data/form-data/issues/196 -// https://github.com/form-data/form-data/issues/262 -FormData$2.prototype.hasKnownLength = function() { - var hasKnownLength = true; - - if (this._valuesToMeasure.length) { - hasKnownLength = false; - } - - return hasKnownLength; -}; - -FormData$2.prototype.getLength = function(cb) { - var knownLength = this._overheadLength + this._valueLength; - - if (this._streams.length) { - knownLength += this._lastBoundary().length; - } - - if (!this._valuesToMeasure.length) { - process.nextTick(cb.bind(this, null, knownLength)); - return; - } - - asynckit.parallel(this._valuesToMeasure, this._lengthRetriever, function(err, values) { - if (err) { - cb(err); - return; - } - - values.forEach(function(length) { - knownLength += length; - }); - - cb(null, knownLength); - }); -}; - -FormData$2.prototype.submit = function(params, cb) { - var request - , options - , defaults = {method: 'post'} - ; - - // parse provided url if it's string - // or treat it as options object - if (typeof params == 'string') { - - params = parseUrl(params); - options = populate({ - port: params.port, - path: params.pathname, - host: params.hostname, - protocol: params.protocol - }, defaults); - - // use custom params - } else { - - options = populate(params, defaults); - // if no port provided use default one - if (!options.port) { - options.port = options.protocol == 'https:' ? 443 : 80; - } - } - - // put that good code in getHeaders to some use - options.headers = this.getHeaders(params.headers); - - // https if specified, fallback to http in any other case - if (options.protocol == 'https:') { - request = https.request(options); - } else { - request = http.request(options); - } - - // get content length and fire away - this.getLength(function(err, length) { - if (err) { - this._error(err); - return; - } - - // add content length - request.setHeader('Content-Length', length); - - this.pipe(request); - if (cb) { - var onResponse; - - var callback = function (error, responce) { - request.removeListener('error', callback); - request.removeListener('response', onResponse); - - return cb.call(this, error, responce); - }; - - onResponse = callback.bind(this, null); - - request.on('error', callback); - request.on('response', onResponse); - } - }.bind(this)); - - return request; -}; - -FormData$2.prototype._error = function(err) { - if (!this.error) { - this.error = err; - this.pause(); - this.emit('error', err); - } -}; - -FormData$2.prototype.toString = function () { - return '[object FormData]'; -}; - -var defaultJsonSerializer = {}; - -Object.defineProperty(defaultJsonSerializer, "__esModule", { value: true }); -defaultJsonSerializer.defaultJsonSerializer = void 0; -defaultJsonSerializer.defaultJsonSerializer = { - parse: JSON.parse, - stringify: JSON.stringify, -}; - -var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(createRequestBody$1, "__esModule", { value: true }); -var extract_files_1 = _public; -var form_data_1 = __importDefault(form_data); -var defaultJsonSerializer_1 = defaultJsonSerializer; -/** - * Duck type if NodeJS stream - * https://github.com/sindresorhus/is-stream/blob/3750505b0727f6df54324784fe369365ef78841e/index.js#L3 - */ -var isExtractableFileEnhanced = function (value) { - return extract_files_1.isExtractableFile(value) || - (value !== null && typeof value === 'object' && typeof value.pipe === 'function'); -}; -/** - * Returns Multipart Form if body contains files - * (https://github.com/jaydenseric/graphql-multipart-request-spec) - * Otherwise returns JSON - */ -function createRequestBody(query, variables, operationName, jsonSerializer) { - if (jsonSerializer === void 0) { jsonSerializer = defaultJsonSerializer_1.defaultJsonSerializer; } - var _a = extract_files_1.extractFiles({ query: query, variables: variables, operationName: operationName }, '', isExtractableFileEnhanced), clone = _a.clone, files = _a.files; - if (files.size === 0) { - if (!Array.isArray(query)) { - return jsonSerializer.stringify(clone); - } - if (typeof variables !== 'undefined' && !Array.isArray(variables)) { - throw new Error('Cannot create request body with given variable type, array expected'); - } - // Batch support - var payload = query.reduce(function (accu, currentQuery, index) { - accu.push({ query: currentQuery, variables: variables ? variables[index] : undefined }); - return accu; - }, []); - return jsonSerializer.stringify(payload); - } - var Form = typeof FormData === 'undefined' ? form_data_1.default : FormData; - var form = new Form(); - form.append('operations', jsonSerializer.stringify(clone)); - var map = {}; - var i = 0; - files.forEach(function (paths) { - map[++i] = paths; - }); - form.append('map', jsonSerializer.stringify(map)); - i = 0; - files.forEach(function (paths, file) { - form.append("" + ++i, file); - }); - return form; -} -createRequestBody$1.default = createRequestBody; - -var parseArgs = {}; - -Object.defineProperty(parseArgs, "__esModule", { value: true }); -parseArgs.parseBatchRequestsExtendedArgs = parseArgs.parseRawRequestExtendedArgs = parseArgs.parseRequestExtendedArgs = parseArgs.parseBatchRequestArgs = parseArgs.parseRawRequestArgs = parseArgs.parseRequestArgs = void 0; -function parseRequestArgs(documentOrOptions, variables, requestHeaders) { - return documentOrOptions.document - ? documentOrOptions - : { - document: documentOrOptions, - variables: variables, - requestHeaders: requestHeaders, - signal: undefined, - }; -} -parseArgs.parseRequestArgs = parseRequestArgs; -function parseRawRequestArgs(queryOrOptions, variables, requestHeaders) { - return queryOrOptions.query - ? queryOrOptions - : { - query: queryOrOptions, - variables: variables, - requestHeaders: requestHeaders, - signal: undefined, - }; -} -parseArgs.parseRawRequestArgs = parseRawRequestArgs; -function parseBatchRequestArgs(documentsOrOptions, requestHeaders) { - return documentsOrOptions.documents - ? documentsOrOptions - : { - documents: documentsOrOptions, - requestHeaders: requestHeaders, - signal: undefined, - }; -} -parseArgs.parseBatchRequestArgs = parseBatchRequestArgs; -function parseRequestExtendedArgs(urlOrOptions, document, variables, requestHeaders) { - return urlOrOptions.document - ? urlOrOptions - : { - url: urlOrOptions, - document: document, - variables: variables, - requestHeaders: requestHeaders, - signal: undefined, - }; -} -parseArgs.parseRequestExtendedArgs = parseRequestExtendedArgs; -function parseRawRequestExtendedArgs(urlOrOptions, query, variables, requestHeaders) { - return urlOrOptions.query - ? urlOrOptions - : { - url: urlOrOptions, - query: query, - variables: variables, - requestHeaders: requestHeaders, - signal: undefined, - }; -} -parseArgs.parseRawRequestExtendedArgs = parseRawRequestExtendedArgs; -function parseBatchRequestsExtendedArgs(urlOrOptions, documents, requestHeaders) { - return urlOrOptions.documents - ? urlOrOptions - : { - url: urlOrOptions, - documents: documents, - requestHeaders: requestHeaders, - signal: undefined, - }; -} -parseArgs.parseBatchRequestsExtendedArgs = parseBatchRequestsExtendedArgs; - -var types = {}; - -var __extends$1 = (commonjsGlobal && commonjsGlobal.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(types, "__esModule", { value: true }); -types.ClientError = void 0; -var ClientError = /** @class */ (function (_super) { - __extends$1(ClientError, _super); - function ClientError(response, request) { - var _this = this; - var message = ClientError.extractMessage(response) + ": " + JSON.stringify({ - response: response, - request: request, - }); - _this = _super.call(this, message) || this; - Object.setPrototypeOf(_this, ClientError.prototype); - _this.response = response; - _this.request = request; - // this is needed as Safari doesn't support .captureStackTrace - if (typeof Error.captureStackTrace === 'function') { - Error.captureStackTrace(_this, ClientError); - } - return _this; - } - ClientError.extractMessage = function (response) { - try { - return response.errors[0].message; - } - catch (e) { - return "GraphQL Error (Code: " + response.status + ")"; - } - }; - return ClientError; -}(Error)); -types.ClientError = ClientError; - -var graphqlWs = {}; - -var hasRequiredGraphqlWs; - -function requireGraphqlWs () { - if (hasRequiredGraphqlWs) return graphqlWs; - hasRequiredGraphqlWs = 1; - var __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () { - __assign = Object.assign || function(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) - t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); - }; - var __awaiter = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - }; - var __generator = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } - }; - Object.defineProperty(graphqlWs, "__esModule", { value: true }); - graphqlWs.GraphQLWebSocketClient = void 0; - var types_1 = types; - var _1 = requireDist(); - var CONNECTION_INIT = 'connection_init'; - var CONNECTION_ACK = 'connection_ack'; - var PING = 'ping'; - var PONG = 'pong'; - var SUBSCRIBE = 'subscribe'; - var NEXT = 'next'; - var ERROR = 'error'; - var COMPLETE = 'complete'; - var GraphQLWebSocketMessage = /** @class */ (function () { - function GraphQLWebSocketMessage(type, payload, id) { - this._type = type; - this._payload = payload; - this._id = id; - } - Object.defineProperty(GraphQLWebSocketMessage.prototype, "type", { - get: function () { - return this._type; - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(GraphQLWebSocketMessage.prototype, "id", { - get: function () { - return this._id; - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(GraphQLWebSocketMessage.prototype, "payload", { - get: function () { - return this._payload; - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(GraphQLWebSocketMessage.prototype, "text", { - get: function () { - var result = { type: this.type }; - if (this.id != null && this.id != undefined) - result.id = this.id; - if (this.payload != null && this.payload != undefined) - result.payload = this.payload; - return JSON.stringify(result); - }, - enumerable: false, - configurable: true - }); - GraphQLWebSocketMessage.parse = function (data, f) { - var _a = JSON.parse(data), type = _a.type, payload = _a.payload, id = _a.id; - return new GraphQLWebSocketMessage(type, f(payload), id); - }; - return GraphQLWebSocketMessage; - }()); - var GraphQLWebSocketClient = /** @class */ (function () { - function GraphQLWebSocketClient(socket, _a) { - var _this = this; - var onInit = _a.onInit, onAcknowledged = _a.onAcknowledged, onPing = _a.onPing, onPong = _a.onPong; - this.socketState = { acknowledged: false, lastRequestId: 0, subscriptions: {} }; - this.socket = socket; - socket.onopen = function (e) { return __awaiter(_this, void 0, void 0, function () { - var _a, _b, _c, _d; - return __generator(this, function (_e) { - switch (_e.label) { - case 0: - this.socketState.acknowledged = false; - this.socketState.subscriptions = {}; - _b = (_a = socket).send; - _c = ConnectionInit; - if (!onInit) return [3 /*break*/, 2]; - return [4 /*yield*/, onInit()]; - case 1: - _d = _e.sent(); - return [3 /*break*/, 3]; - case 2: - _d = null; - _e.label = 3; - case 3: - _b.apply(_a, [_c.apply(void 0, [_d]).text]); - return [2 /*return*/]; - } - }); - }); }; - socket.onclose = function (e) { - _this.socketState.acknowledged = false; - _this.socketState.subscriptions = {}; - }; - socket.onerror = function (e) { - console.error(e); - }; - socket.onmessage = function (e) { - try { - var message = parseMessage(e.data); - switch (message.type) { - case CONNECTION_ACK: { - if (_this.socketState.acknowledged) { - console.warn('Duplicate CONNECTION_ACK message ignored'); - } - else { - _this.socketState.acknowledged = true; - if (onAcknowledged) - onAcknowledged(message.payload); - } - return; - } - case PING: { - if (onPing) - onPing(message.payload).then(function (r) { return socket.send(Pong(r).text); }); - else - socket.send(Pong(null).text); - return; - } - case PONG: { - if (onPong) - onPong(message.payload); - return; - } - } - if (!_this.socketState.acknowledged) { - // Web-socket connection not acknowledged - return; - } - if (message.id === undefined || message.id === null || !_this.socketState.subscriptions[message.id]) { - // No subscription identifer or subscription indentifier is not found - return; - } - var _a = _this.socketState.subscriptions[message.id], query = _a.query, variables = _a.variables, subscriber = _a.subscriber; - switch (message.type) { - case NEXT: { - if (!message.payload.errors && message.payload.data) { - subscriber.next && subscriber.next(message.payload.data); - } - if (message.payload.errors) { - subscriber.error && - subscriber.error(new types_1.ClientError(__assign(__assign({}, message.payload), { status: 200 }), { query: query, variables: variables })); - } - else { - } - return; - } - case ERROR: { - subscriber.error && - subscriber.error(new types_1.ClientError({ errors: message.payload, status: 200 }, { query: query, variables: variables })); - return; - } - case COMPLETE: { - subscriber.complete && subscriber.complete(); - delete _this.socketState.subscriptions[message.id]; - return; - } - } - } - catch (e) { - // Unexpected errors while handling graphql-ws message - console.error(e); - socket.close(1006); - } - socket.close(4400, 'Unknown graphql-ws message.'); - }; - } - GraphQLWebSocketClient.prototype.makeSubscribe = function (query, operationName, variables, subscriber) { - var _this = this; - var subscriptionId = (this.socketState.lastRequestId++).toString(); - this.socketState.subscriptions[subscriptionId] = { query: query, variables: variables, subscriber: subscriber }; - this.socket.send(Subscribe(subscriptionId, { query: query, operationName: operationName, variables: variables }).text); - return function () { - _this.socket.send(Complete(subscriptionId).text); - delete _this.socketState.subscriptions[subscriptionId]; - }; - }; - GraphQLWebSocketClient.prototype.rawRequest = function (query, variables) { - var _this = this; - return new Promise(function (resolve, reject) { - var result; - _this.rawSubscribe(query, { - next: function (data, extensions) { return (result = { data: data, extensions: extensions }); }, - error: reject, - complete: function () { return resolve(result); }, - }, variables); - }); - }; - GraphQLWebSocketClient.prototype.request = function (document, variables) { - var _this = this; - return new Promise(function (resolve, reject) { - var result; - _this.subscribe(document, { - next: function (data) { return (result = data); }, - error: reject, - complete: function () { return resolve(result); }, - }, variables); - }); - }; - GraphQLWebSocketClient.prototype.subscribe = function (document, subscriber, variables) { - var _a = _1.resolveRequestDocument(document), query = _a.query, operationName = _a.operationName; - return this.makeSubscribe(query, operationName, variables, subscriber); - }; - GraphQLWebSocketClient.prototype.rawSubscribe = function (query, subscriber, variables) { - return this.makeSubscribe(query, undefined, variables, subscriber); - }; - GraphQLWebSocketClient.prototype.ping = function (payload) { - this.socket.send(Ping(payload).text); - }; - GraphQLWebSocketClient.prototype.close = function () { - this.socket.close(1000); - }; - GraphQLWebSocketClient.PROTOCOL = 'graphql-transport-ws'; - return GraphQLWebSocketClient; - }()); - graphqlWs.GraphQLWebSocketClient = GraphQLWebSocketClient; - // Helper functions - function parseMessage(data, f) { - if (f === void 0) { f = function (a) { return a; }; } - var m = GraphQLWebSocketMessage.parse(data, f); - return m; - } - function ConnectionInit(payload) { - return new GraphQLWebSocketMessage(CONNECTION_INIT, payload); - } - function Ping(payload) { - return new GraphQLWebSocketMessage(PING, payload, undefined); - } - function Pong(payload) { - return new GraphQLWebSocketMessage(PONG, payload, undefined); - } - function Subscribe(id, payload) { - return new GraphQLWebSocketMessage(SUBSCRIBE, payload, id); - } - function Complete(id) { - return new GraphQLWebSocketMessage(COMPLETE, undefined, id); - } - - return graphqlWs; -} - -var hasRequiredDist; - -function requireDist () { - if (hasRequiredDist) return dist; - hasRequiredDist = 1; - (function (exports) { - var __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () { - __assign = Object.assign || function(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) - t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); - }; - var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); - }) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; - })); - var __setModuleDefault = (commonjsGlobal && commonjsGlobal.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); - }) : function(o, v) { - o["default"] = v; - }); - var __importStar = (commonjsGlobal && commonjsGlobal.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; - }; - var __awaiter = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - }; - var __generator = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } - }; - var __rest = (commonjsGlobal && commonjsGlobal.__rest) || function (s, e) { - var t = {}; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) - t[p] = s[p]; - if (s != null && typeof Object.getOwnPropertySymbols === "function") - for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { - if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) - t[p[i]] = s[p[i]]; - } - return t; - }; - var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.GraphQLWebSocketClient = exports.gql = exports.resolveRequestDocument = exports.batchRequests = exports.request = exports.rawRequest = exports.GraphQLClient = exports.ClientError = void 0; - var cross_fetch_1 = __importStar(nodePonyfill.exports), CrossFetch = cross_fetch_1; - var parser_1 = require$$1; - var printer_1 = require$$2$1; - var createRequestBody_1 = __importDefault(createRequestBody$1); - var defaultJsonSerializer_1 = defaultJsonSerializer; - var parseArgs_1 = parseArgs; - var types_1 = types; - Object.defineProperty(exports, "ClientError", { enumerable: true, get: function () { return types_1.ClientError; } }); - /** - * Convert the given headers configuration into a plain object. - */ - var resolveHeaders = function (headers) { - var oHeaders = {}; - if (headers) { - if ((typeof Headers !== 'undefined' && headers instanceof Headers) || - (CrossFetch && CrossFetch.Headers && headers instanceof CrossFetch.Headers)) { - oHeaders = HeadersInstanceToPlainObject(headers); - } - else if (Array.isArray(headers)) { - headers.forEach(function (_a) { - var name = _a[0], value = _a[1]; - oHeaders[name] = value; - }); - } - else { - oHeaders = headers; - } - } - return oHeaders; - }; - /** - * Clean a GraphQL document to send it via a GET query - * - * @param {string} str GraphQL query - * @returns {string} Cleaned query - */ - var queryCleanner = function (str) { return str.replace(/([\s,]|#[^\n\r]+)+/g, ' ').trim(); }; - /** - * Create query string for GraphQL request - * - * @param {object} param0 - - * - * @param {string|string[]} param0.query the GraphQL document or array of document if it's a batch request - * @param {string|undefined} param0.operationName the GraphQL operation name - * @param {any|any[]} param0.variables the GraphQL variables to use - */ - var buildGetQueryParams = function (_a) { - var query = _a.query, variables = _a.variables, operationName = _a.operationName, jsonSerializer = _a.jsonSerializer; - if (!Array.isArray(query)) { - var search = ["query=" + encodeURIComponent(queryCleanner(query))]; - if (variables) { - search.push("variables=" + encodeURIComponent(jsonSerializer.stringify(variables))); - } - if (operationName) { - search.push("operationName=" + encodeURIComponent(operationName)); - } - return search.join('&'); - } - if (typeof variables !== 'undefined' && !Array.isArray(variables)) { - throw new Error('Cannot create query with given variable type, array expected'); - } - // Batch support - var payload = query.reduce(function (accu, currentQuery, index) { - accu.push({ - query: queryCleanner(currentQuery), - variables: variables ? jsonSerializer.stringify(variables[index]) : undefined, - }); - return accu; - }, []); - return "query=" + encodeURIComponent(jsonSerializer.stringify(payload)); - }; - /** - * Fetch data using POST method - */ - var post = function (_a) { - var url = _a.url, query = _a.query, variables = _a.variables, operationName = _a.operationName, headers = _a.headers, fetch = _a.fetch, fetchOptions = _a.fetchOptions, middleware = _a.middleware; - return __awaiter(void 0, void 0, void 0, function () { - var body, options; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - body = createRequestBody_1.default(query, variables, operationName, fetchOptions.jsonSerializer); - options = __assign({ method: 'POST', headers: __assign(__assign({}, (typeof body === 'string' ? { 'Content-Type': 'application/json' } : {})), headers), body: body }, fetchOptions); - if (!middleware) return [3 /*break*/, 2]; - return [4 /*yield*/, Promise.resolve(middleware(options))]; - case 1: - options = _b.sent(); - _b.label = 2; - case 2: return [4 /*yield*/, fetch(url, options)]; - case 3: return [2 /*return*/, _b.sent()]; - } - }); - }); - }; - /** - * Fetch data using GET method - */ - var get = function (_a) { - var url = _a.url, query = _a.query, variables = _a.variables, operationName = _a.operationName, headers = _a.headers, fetch = _a.fetch, fetchOptions = _a.fetchOptions, middleware = _a.middleware; - return __awaiter(void 0, void 0, void 0, function () { - var queryParams, options; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - queryParams = buildGetQueryParams({ - query: query, - variables: variables, - operationName: operationName, - jsonSerializer: fetchOptions.jsonSerializer, - }); - options = __assign({ method: 'GET', headers: headers }, fetchOptions); - if (!middleware) return [3 /*break*/, 2]; - return [4 /*yield*/, Promise.resolve(middleware(options))]; - case 1: - options = _b.sent(); - _b.label = 2; - case 2: return [4 /*yield*/, fetch(url + "?" + queryParams, options)]; - case 3: return [2 /*return*/, _b.sent()]; - } - }); - }); - }; - /** - * GraphQL Client. - */ - var GraphQLClient = /** @class */ (function () { - function GraphQLClient(url, options) { - if (options === void 0) { options = {}; } - this.url = url; - this.options = options; - } - GraphQLClient.prototype.rawRequest = function (queryOrOptions, variables, requestHeaders) { - return __awaiter(this, void 0, void 0, function () { - var rawRequestOptions, _a, headers, _b, fetch, _c, method, requestMiddleware, responseMiddleware, fetchOptions, url, operationName; - return __generator(this, function (_d) { - rawRequestOptions = parseArgs_1.parseRawRequestArgs(queryOrOptions, variables, requestHeaders); - _a = this.options, headers = _a.headers, _b = _a.fetch, fetch = _b === void 0 ? cross_fetch_1.default : _b, _c = _a.method, method = _c === void 0 ? 'POST' : _c, requestMiddleware = _a.requestMiddleware, responseMiddleware = _a.responseMiddleware, fetchOptions = __rest(_a, ["headers", "fetch", "method", "requestMiddleware", "responseMiddleware"]); - url = this.url; - if (rawRequestOptions.signal !== undefined) { - fetchOptions.signal = rawRequestOptions.signal; - } - operationName = resolveRequestDocument(rawRequestOptions.query).operationName; - return [2 /*return*/, makeRequest({ - url: url, - query: rawRequestOptions.query, - variables: rawRequestOptions.variables, - headers: __assign(__assign({}, resolveHeaders(callOrIdentity(headers))), resolveHeaders(rawRequestOptions.requestHeaders)), - operationName: operationName, - fetch: fetch, - method: method, - fetchOptions: fetchOptions, - middleware: requestMiddleware, - }) - .then(function (response) { - if (responseMiddleware) { - responseMiddleware(response); - } - return response; - }) - .catch(function (error) { - if (responseMiddleware) { - responseMiddleware(error); - } - throw error; - })]; - }); - }); - }; - GraphQLClient.prototype.request = function (documentOrOptions) { - var variablesAndRequestHeaders = []; - for (var _i = 1; _i < arguments.length; _i++) { - variablesAndRequestHeaders[_i - 1] = arguments[_i]; - } - var variables = variablesAndRequestHeaders[0], requestHeaders = variablesAndRequestHeaders[1]; - var requestOptions = parseArgs_1.parseRequestArgs(documentOrOptions, variables, requestHeaders); - var _a = this.options, headers = _a.headers, _b = _a.fetch, fetch = _b === void 0 ? cross_fetch_1.default : _b, _c = _a.method, method = _c === void 0 ? 'POST' : _c, requestMiddleware = _a.requestMiddleware, responseMiddleware = _a.responseMiddleware, fetchOptions = __rest(_a, ["headers", "fetch", "method", "requestMiddleware", "responseMiddleware"]); - var url = this.url; - if (requestOptions.signal !== undefined) { - fetchOptions.signal = requestOptions.signal; - } - var _d = resolveRequestDocument(requestOptions.document), query = _d.query, operationName = _d.operationName; - return makeRequest({ - url: url, - query: query, - variables: requestOptions.variables, - headers: __assign(__assign({}, resolveHeaders(callOrIdentity(headers))), resolveHeaders(requestOptions.requestHeaders)), - operationName: operationName, - fetch: fetch, - method: method, - fetchOptions: fetchOptions, - middleware: requestMiddleware, - }) - .then(function (response) { - if (responseMiddleware) { - responseMiddleware(response); - } - return response.data; - }) - .catch(function (error) { - if (responseMiddleware) { - responseMiddleware(error); - } - throw error; - }); - }; - GraphQLClient.prototype.batchRequests = function (documentsOrOptions, requestHeaders) { - var batchRequestOptions = parseArgs_1.parseBatchRequestArgs(documentsOrOptions, requestHeaders); - var _a = this.options, headers = _a.headers, _b = _a.fetch, fetch = _b === void 0 ? cross_fetch_1.default : _b, _c = _a.method, method = _c === void 0 ? 'POST' : _c, requestMiddleware = _a.requestMiddleware, responseMiddleware = _a.responseMiddleware, fetchOptions = __rest(_a, ["headers", "fetch", "method", "requestMiddleware", "responseMiddleware"]); - var url = this.url; - if (batchRequestOptions.signal !== undefined) { - fetchOptions.signal = batchRequestOptions.signal; - } - var queries = batchRequestOptions.documents.map(function (_a) { - var document = _a.document; - return resolveRequestDocument(document).query; - }); - var variables = batchRequestOptions.documents.map(function (_a) { - var variables = _a.variables; - return variables; - }); - return makeRequest({ - url: url, - query: queries, - variables: variables, - headers: __assign(__assign({}, resolveHeaders(callOrIdentity(headers))), resolveHeaders(batchRequestOptions.requestHeaders)), - operationName: undefined, - fetch: fetch, - method: method, - fetchOptions: fetchOptions, - middleware: requestMiddleware, - }) - .then(function (response) { - if (responseMiddleware) { - responseMiddleware(response); - } - return response.data; - }) - .catch(function (error) { - if (responseMiddleware) { - responseMiddleware(error); - } - throw error; - }); - }; - GraphQLClient.prototype.setHeaders = function (headers) { - this.options.headers = headers; - return this; - }; - /** - * Attach a header to the client. All subsequent requests will have this header. - */ - GraphQLClient.prototype.setHeader = function (key, value) { - var _a; - var headers = this.options.headers; - if (headers) { - // todo what if headers is in nested array form... ? - //@ts-ignore - headers[key] = value; - } - else { - this.options.headers = (_a = {}, _a[key] = value, _a); - } - return this; - }; - /** - * Change the client endpoint. All subsequent requests will send to this endpoint. - */ - GraphQLClient.prototype.setEndpoint = function (value) { - this.url = value; - return this; - }; - return GraphQLClient; - }()); - exports.GraphQLClient = GraphQLClient; - function makeRequest(_a) { - var url = _a.url, query = _a.query, variables = _a.variables, headers = _a.headers, operationName = _a.operationName, fetch = _a.fetch, _b = _a.method, method = _b === void 0 ? 'POST' : _b, fetchOptions = _a.fetchOptions, middleware = _a.middleware; - return __awaiter(this, void 0, void 0, function () { - var fetcher, isBathchingQuery, response, result, successfullyReceivedData, successfullyPassedErrorPolicy, headers_1, status_1, rest, data, errorResult; - return __generator(this, function (_c) { - switch (_c.label) { - case 0: - fetcher = method.toUpperCase() === 'POST' ? post : get; - isBathchingQuery = Array.isArray(query); - return [4 /*yield*/, fetcher({ - url: url, - query: query, - variables: variables, - operationName: operationName, - headers: headers, - fetch: fetch, - fetchOptions: fetchOptions, - middleware: middleware, - })]; - case 1: - response = _c.sent(); - return [4 /*yield*/, getResult(response, fetchOptions.jsonSerializer)]; - case 2: - result = _c.sent(); - successfullyReceivedData = isBathchingQuery && Array.isArray(result) ? !result.some(function (_a) { - var data = _a.data; - return !data; - }) : !!result.data; - successfullyPassedErrorPolicy = !result.errors || fetchOptions.errorPolicy === 'all' || fetchOptions.errorPolicy === 'ignore'; - if (response.ok && successfullyPassedErrorPolicy && successfullyReceivedData) { - headers_1 = response.headers, status_1 = response.status; - result.errors, rest = __rest(result, ["errors"]); - data = fetchOptions.errorPolicy === 'ignore' ? rest : result; - return [2 /*return*/, __assign(__assign({}, (isBathchingQuery ? { data: data } : data)), { headers: headers_1, status: status_1 })]; - } - else { - errorResult = typeof result === 'string' ? { error: result } : result; - throw new types_1.ClientError(__assign(__assign({}, errorResult), { status: response.status, headers: response.headers }), { query: query, variables: variables }); - } - } - }); - }); - } - function rawRequest(urlOrOptions, query, variables, requestHeaders) { - return __awaiter(this, void 0, void 0, function () { - var requestOptions, client; - return __generator(this, function (_a) { - requestOptions = parseArgs_1.parseRawRequestExtendedArgs(urlOrOptions, query, variables, requestHeaders); - client = new GraphQLClient(requestOptions.url); - return [2 /*return*/, client.rawRequest(__assign({}, requestOptions))]; - }); - }); - } - exports.rawRequest = rawRequest; - function request(urlOrOptions, document) { - var variablesAndRequestHeaders = []; - for (var _i = 2; _i < arguments.length; _i++) { - variablesAndRequestHeaders[_i - 2] = arguments[_i]; - } - return __awaiter(this, void 0, void 0, function () { - var variables, requestHeaders, requestOptions, client; - return __generator(this, function (_a) { - variables = variablesAndRequestHeaders[0], requestHeaders = variablesAndRequestHeaders[1]; - requestOptions = parseArgs_1.parseRequestExtendedArgs(urlOrOptions, document, variables, requestHeaders); - client = new GraphQLClient(requestOptions.url); - return [2 /*return*/, client.request(__assign({}, requestOptions))]; - }); - }); - } - exports.request = request; - function batchRequests(urlOrOptions, documents, requestHeaders) { - return __awaiter(this, void 0, void 0, function () { - var requestOptions, client; - return __generator(this, function (_a) { - requestOptions = parseArgs_1.parseBatchRequestsExtendedArgs(urlOrOptions, documents, requestHeaders); - client = new GraphQLClient(requestOptions.url); - return [2 /*return*/, client.batchRequests(__assign({}, requestOptions))]; - }); - }); - } - exports.batchRequests = batchRequests; - exports.default = request; - /** - * todo - */ - function getResult(response, jsonSerializer) { - if (jsonSerializer === void 0) { jsonSerializer = defaultJsonSerializer_1.defaultJsonSerializer; } - return __awaiter(this, void 0, void 0, function () { - var contentType, _a, _b; - return __generator(this, function (_c) { - switch (_c.label) { - case 0: - response.headers.forEach(function (value, key) { - if (key.toLowerCase() === 'content-type') { - contentType = value; - } - }); - if (!(contentType && contentType.toLowerCase().startsWith('application/json'))) return [3 /*break*/, 2]; - _b = (_a = jsonSerializer).parse; - return [4 /*yield*/, response.text()]; - case 1: return [2 /*return*/, _b.apply(_a, [_c.sent()])]; - case 2: return [2 /*return*/, response.text()]; - } - }); - }); - } - /** - * helpers - */ - function extractOperationName(document) { - var _a; - var operationName = undefined; - var operationDefinitions = document.definitions.filter(function (definition) { return definition.kind === 'OperationDefinition'; }); - if (operationDefinitions.length === 1) { - operationName = (_a = operationDefinitions[0].name) === null || _a === void 0 ? void 0 : _a.value; - } - return operationName; - } - function resolveRequestDocument(document) { - if (typeof document === 'string') { - var operationName_1 = undefined; - try { - var parsedDocument = parser_1.parse(document); - operationName_1 = extractOperationName(parsedDocument); - } - catch (err) { - // Failed parsing the document, the operationName will be undefined - } - return { query: document, operationName: operationName_1 }; - } - var operationName = extractOperationName(document); - return { query: printer_1.print(document), operationName: operationName }; - } - exports.resolveRequestDocument = resolveRequestDocument; - function callOrIdentity(value) { - return typeof value === 'function' ? value() : value; - } - /** - * Convenience passthrough template tag to get the benefits of tooling for the gql template tag. This does not actually parse the input into a GraphQL DocumentNode like graphql-tag package does. It just returns the string with any variables given interpolated. Can save you a bit of performance and having to install another package. - * - * @example - * - * import { gql } from 'graphql-request' - * - * await request('https://foo.bar/graphql', gql`...`) - * - * @remarks - * - * Several tools in the Node GraphQL ecosystem are hardcoded to specially treat any template tag named "gql". For example see this prettier issue: https://github.com/prettier/prettier/issues/4360. Using this template tag has no runtime effect beyond variable interpolation. - */ - function gql(chunks) { - var variables = []; - for (var _i = 1; _i < arguments.length; _i++) { - variables[_i - 1] = arguments[_i]; - } - return chunks.reduce(function (accumulator, chunk, index) { return "" + accumulator + chunk + (index in variables ? variables[index] : ''); }, ''); - } - exports.gql = gql; - /** - * Convert Headers instance into regular object - */ - function HeadersInstanceToPlainObject(headers) { - var o = {}; - headers.forEach(function (v, k) { - o[k] = v; - }); - return o; - } - var graphql_ws_1 = requireGraphqlWs(); - Object.defineProperty(exports, "GraphQLWebSocketClient", { enumerable: true, get: function () { return graphql_ws_1.GraphQLWebSocketClient; } }); - -} (dist)); - return dist; -} - -var distExports = requireDist(); - -/** - * This enum is used only internally in order to create nominal type for the disabled plugin - */ -var EnableIfBranded; -(function (EnableIfBranded) { - EnableIfBranded[EnableIfBranded["DisabledPlugin"] = 0] = "DisabledPlugin"; -})(EnableIfBranded || (EnableIfBranded = {})); -function isPluginEnabled(t) { - return t !== EnableIfBranded.DisabledPlugin && t !== null; -} -/** - * Utility function to enable a plugin. - */ -function enableIf(condition, plugin) { - if (condition) { - return typeof plugin === 'function' ? plugin() : plugin; - } - return EnableIfBranded.DisabledPlugin; -} - -// Note: This file is autogenerated using "resources/gen-version.js" script and -/** - * An object containing the components of the GraphQL.js version string - */ - -const versionInfo = Object.freeze({ - major: 16, - minor: 6, - patch: 0, - preReleaseTag: null, -}); - -/** - * Returns true if the value acts like a Promise, i.e. has a "then" function, - * otherwise returns false. - */ -function isPromise(value) { - return ( - typeof (value === null || value === void 0 ? void 0 : value.then) === - 'function' - ); -} - -const MAX_SUGGESTIONS = 5; -/** - * Given [ A, B, C ] return ' Did you mean A, B, or C?'. - */ - -function didYouMean(firstArg, secondArg) { - const [subMessage, suggestionsArg] = secondArg - ? [firstArg, secondArg] - : [undefined, firstArg]; - let message = ' Did you mean '; - - if (subMessage) { - message += subMessage + ' '; - } - - const suggestions = suggestionsArg.map((x) => `"${x}"`); - - switch (suggestions.length) { - case 0: - return ''; - - case 1: - return message + suggestions[0] + '?'; - - case 2: - return message + suggestions[0] + ' or ' + suggestions[1] + '?'; - } - - const selected = suggestions.slice(0, MAX_SUGGESTIONS); - const lastItem = selected.pop(); - return message + selected.join(', ') + ', or ' + lastItem + '?'; -} - -/** - * Returns the first argument it receives. - */ -function identityFunc(x) { - return x; -} - -/** - * Creates a keyed JS object from an array, given a function to produce the keys - * for each value in the array. - * - * This provides a convenient lookup for the array items if the key function - * produces unique results. - * ```ts - * const phoneBook = [ - * { name: 'Jon', num: '555-1234' }, - * { name: 'Jenny', num: '867-5309' } - * ] - * - * const entriesByName = keyMap( - * phoneBook, - * entry => entry.name - * ) - * - * // { - * // Jon: { name: 'Jon', num: '555-1234' }, - * // Jenny: { name: 'Jenny', num: '867-5309' } - * // } - * - * const jennyEntry = entriesByName['Jenny'] - * - * // { name: 'Jenny', num: '857-6309' } - * ``` - */ -function keyMap(list, keyFn) { - const result = Object.create(null); - - for (const item of list) { - result[keyFn(item)] = item; - } - - return result; -} - -/** - * Creates a keyed JS object from an array, given a function to produce the keys - * and a function to produce the values from each item in the array. - * ```ts - * const phoneBook = [ - * { name: 'Jon', num: '555-1234' }, - * { name: 'Jenny', num: '867-5309' } - * ] - * - * // { Jon: '555-1234', Jenny: '867-5309' } - * const phonesByName = keyValMap( - * phoneBook, - * entry => entry.name, - * entry => entry.num - * ) - * ``` - */ -function keyValMap(list, keyFn, valFn) { - const result = Object.create(null); - - for (const item of list) { - result[keyFn(item)] = valFn(item); - } - - return result; -} - -/** - * Creates an object map with the same keys as `map` and values generated by - * running each value of `map` thru `fn`. - */ -function mapValue(map, fn) { - const result = Object.create(null); - - for (const key of Object.keys(map)) { - result[key] = fn(map[key], key); - } - - return result; -} - -/** - * Returns a number indicating whether a reference string comes before, or after, - * or is the same as the given string in natural sort order. - * - * See: https://en.wikipedia.org/wiki/Natural_sort_order - * - */ -function naturalCompare(aStr, bStr) { - let aIndex = 0; - let bIndex = 0; - - while (aIndex < aStr.length && bIndex < bStr.length) { - let aChar = aStr.charCodeAt(aIndex); - let bChar = bStr.charCodeAt(bIndex); - - if (isDigit(aChar) && isDigit(bChar)) { - let aNum = 0; - - do { - ++aIndex; - aNum = aNum * 10 + aChar - DIGIT_0; - aChar = aStr.charCodeAt(aIndex); - } while (isDigit(aChar) && aNum > 0); - - let bNum = 0; - - do { - ++bIndex; - bNum = bNum * 10 + bChar - DIGIT_0; - bChar = bStr.charCodeAt(bIndex); - } while (isDigit(bChar) && bNum > 0); - - if (aNum < bNum) { - return -1; - } - - if (aNum > bNum) { - return 1; - } - } else { - if (aChar < bChar) { - return -1; - } - - if (aChar > bChar) { - return 1; - } - - ++aIndex; - ++bIndex; - } - } - - return aStr.length - bStr.length; -} -const DIGIT_0 = 48; -const DIGIT_9 = 57; - -function isDigit(code) { - return !isNaN(code) && DIGIT_0 <= code && code <= DIGIT_9; -} - -/** - * Given an invalid input string and a list of valid options, returns a filtered - * list of valid options sorted based on their similarity with the input. - */ - -function suggestionList(input, options) { - const optionsByDistance = Object.create(null); - const lexicalDistance = new LexicalDistance(input); - const threshold = Math.floor(input.length * 0.4) + 1; - - for (const option of options) { - const distance = lexicalDistance.measure(option, threshold); - - if (distance !== undefined) { - optionsByDistance[option] = distance; - } - } - - return Object.keys(optionsByDistance).sort((a, b) => { - const distanceDiff = optionsByDistance[a] - optionsByDistance[b]; - return distanceDiff !== 0 ? distanceDiff : naturalCompare(a, b); - }); -} -/** - * Computes the lexical distance between strings A and B. - * - * The "distance" between two strings is given by counting the minimum number - * of edits needed to transform string A into string B. An edit can be an - * insertion, deletion, or substitution of a single character, or a swap of two - * adjacent characters. - * - * Includes a custom alteration from Damerau-Levenshtein to treat case changes - * as a single edit which helps identify mis-cased values with an edit distance - * of 1. - * - * This distance can be useful for detecting typos in input or sorting - */ - -class LexicalDistance { - constructor(input) { - this._input = input; - this._inputLowerCase = input.toLowerCase(); - this._inputArray = stringToArray(this._inputLowerCase); - this._rows = [ - new Array(input.length + 1).fill(0), - new Array(input.length + 1).fill(0), - new Array(input.length + 1).fill(0), - ]; - } - - measure(option, threshold) { - if (this._input === option) { - return 0; - } - - const optionLowerCase = option.toLowerCase(); // Any case change counts as a single edit - - if (this._inputLowerCase === optionLowerCase) { - return 1; - } - - let a = stringToArray(optionLowerCase); - let b = this._inputArray; - - if (a.length < b.length) { - const tmp = a; - a = b; - b = tmp; - } - - const aLength = a.length; - const bLength = b.length; - - if (aLength - bLength > threshold) { - return undefined; - } - - const rows = this._rows; - - for (let j = 0; j <= bLength; j++) { - rows[0][j] = j; - } - - for (let i = 1; i <= aLength; i++) { - const upRow = rows[(i - 1) % 3]; - const currentRow = rows[i % 3]; - let smallestCell = (currentRow[0] = i); - - for (let j = 1; j <= bLength; j++) { - const cost = a[i - 1] === b[j - 1] ? 0 : 1; - let currentCell = Math.min( - upRow[j] + 1, // delete - currentRow[j - 1] + 1, // insert - upRow[j - 1] + cost, // substitute - ); - - if (i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b[j - 1]) { - // transposition - const doubleDiagonalCell = rows[(i - 2) % 3][j - 2]; - currentCell = Math.min(currentCell, doubleDiagonalCell + 1); - } - - if (currentCell < smallestCell) { - smallestCell = currentCell; - } - - currentRow[j] = currentCell; - } // Early exit, since distance can't go smaller than smallest element of the previous row. - - if (smallestCell > threshold) { - return undefined; - } - } - - const distance = rows[aLength % 3][bLength]; - return distance <= threshold ? distance : undefined; - } -} - -function stringToArray(str) { - const strLength = str.length; - const array = new Array(strLength); - - for (let i = 0; i < strLength; ++i) { - array[i] = str.charCodeAt(i); - } - - return array; -} - -function toObjMap(obj) { - if (obj == null) { - return Object.create(null); - } - - if (Object.getPrototypeOf(obj) === null) { - return obj; - } - - const map = Object.create(null); - - for (const [key, value] of Object.entries(obj)) { - map[key] = value; - } - - return map; -} - -/** - * Produces a JavaScript value given a GraphQL Value AST. - * - * Unlike `valueFromAST()`, no type is provided. The resulting JavaScript value - * will reflect the provided GraphQL value AST. - * - * | GraphQL Value | JavaScript Value | - * | -------------------- | ---------------- | - * | Input Object | Object | - * | List | Array | - * | Boolean | Boolean | - * | String / Enum | String | - * | Int / Float | Number | - * | Null | null | - * - */ - -function valueFromASTUntyped(valueNode, variables) { - switch (valueNode.kind) { - case Kind.NULL: - return null; - - case Kind.INT: - return parseInt(valueNode.value, 10); - - case Kind.FLOAT: - return parseFloat(valueNode.value); - - case Kind.STRING: - case Kind.ENUM: - case Kind.BOOLEAN: - return valueNode.value; - - case Kind.LIST: - return valueNode.values.map((node) => - valueFromASTUntyped(node, variables), - ); - - case Kind.OBJECT: - return keyValMap( - valueNode.fields, - (field) => field.name.value, - (field) => valueFromASTUntyped(field.value, variables), - ); - - case Kind.VARIABLE: - return variables === null || variables === void 0 - ? void 0 - : variables[valueNode.name.value]; - } -} - -/** - * Upholds the spec rules about naming. - */ - -function assertName(name) { - name != null || devAssert(false, 'Must provide name.'); - typeof name === 'string' || devAssert(false, 'Expected name to be a string.'); - - if (name.length === 0) { - throw new GraphQLError('Expected name to be a non-empty string.'); - } - - for (let i = 1; i < name.length; ++i) { - if (!isNameContinue(name.charCodeAt(i))) { - throw new GraphQLError( - `Names must only contain [_a-zA-Z0-9] but "${name}" does not.`, - ); - } - } - - if (!isNameStart(name.charCodeAt(0))) { - throw new GraphQLError( - `Names must start with [_a-zA-Z] but "${name}" does not.`, - ); - } - - return name; -} -/** - * Upholds the spec rules about naming enum values. - * - * @internal - */ - -function assertEnumValueName(name) { - if (name === 'true' || name === 'false' || name === 'null') { - throw new GraphQLError(`Enum values cannot be named: ${name}`); - } - - return assertName(name); -} - -function isType(type) { - return ( - isScalarType(type) || - isObjectType(type) || - isInterfaceType(type) || - isUnionType(type) || - isEnumType(type) || - isInputObjectType(type) || - isListType(type) || - isNonNullType(type) - ); -} -/** - * There are predicates for each kind of GraphQL type. - */ - -function isScalarType(type) { - return instanceOf(type, GraphQLScalarType); -} -function isObjectType(type) { - return instanceOf(type, GraphQLObjectType); -} -function isInterfaceType(type) { - return instanceOf(type, GraphQLInterfaceType); -} -function isUnionType(type) { - return instanceOf(type, GraphQLUnionType); -} -function isEnumType(type) { - return instanceOf(type, GraphQLEnumType); -} -function isInputObjectType(type) { - return instanceOf(type, GraphQLInputObjectType); -} -function isListType(type) { - return instanceOf(type, GraphQLList); -} -function isNonNullType(type) { - return instanceOf(type, GraphQLNonNull); -} -/** - * These types may be used as input types for arguments and directives. - */ - -function isInputType(type) { - return ( - isScalarType(type) || - isEnumType(type) || - isInputObjectType(type) || - (isWrappingType(type) && isInputType(type.ofType)) - ); -} -/** - * These types may be used as output types as the result of fields. - */ - -function isOutputType(type) { - return ( - isScalarType(type) || - isObjectType(type) || - isInterfaceType(type) || - isUnionType(type) || - isEnumType(type) || - (isWrappingType(type) && isOutputType(type.ofType)) - ); -} -/** - * These types may describe types which may be leaf values. - */ - -function isLeafType(type) { - return isScalarType(type) || isEnumType(type); -} -/** - * These types may describe the parent context of a selection set. - */ - -function isCompositeType(type) { - return isObjectType(type) || isInterfaceType(type) || isUnionType(type); -} -/** - * These types may describe the parent context of a selection set. - */ - -function isAbstractType(type) { - return isInterfaceType(type) || isUnionType(type); -} -/** - * List Type Wrapper - * - * A list is a wrapping type which points to another type. - * Lists are often created within the context of defining the fields of - * an object type. - * - * Example: - * - * ```ts - * const PersonType = new GraphQLObjectType({ - * name: 'Person', - * fields: () => ({ - * parents: { type: new GraphQLList(PersonType) }, - * children: { type: new GraphQLList(PersonType) }, - * }) - * }) - * ``` - */ - -class GraphQLList { - constructor(ofType) { - isType(ofType) || - devAssert(false, `Expected ${inspect$1(ofType)} to be a GraphQL type.`); - this.ofType = ofType; - } - - get [Symbol.toStringTag]() { - return 'GraphQLList'; - } - - toString() { - return '[' + String(this.ofType) + ']'; - } - - toJSON() { - return this.toString(); - } -} -/** - * Non-Null Type Wrapper - * - * A non-null is a wrapping type which points to another type. - * Non-null types enforce that their values are never null and can ensure - * an error is raised if this ever occurs during a request. It is useful for - * fields which you can make a strong guarantee on non-nullability, for example - * usually the id field of a database row will never be null. - * - * Example: - * - * ```ts - * const RowType = new GraphQLObjectType({ - * name: 'Row', - * fields: () => ({ - * id: { type: new GraphQLNonNull(GraphQLString) }, - * }) - * }) - * ``` - * Note: the enforcement of non-nullability occurs within the executor. - */ - -class GraphQLNonNull { - constructor(ofType) { - isNullableType(ofType) || - devAssert( - false, - `Expected ${inspect$1(ofType)} to be a GraphQL nullable type.`, - ); - this.ofType = ofType; - } - - get [Symbol.toStringTag]() { - return 'GraphQLNonNull'; - } - - toString() { - return String(this.ofType) + '!'; - } - - toJSON() { - return this.toString(); - } -} -/** - * These types wrap and modify other types - */ - -function isWrappingType(type) { - return isListType(type) || isNonNullType(type); -} -/** - * These types can all accept null as a value. - */ - -function isNullableType(type) { - return isType(type) && !isNonNullType(type); -} -function getNullableType(type) { - if (type) { - return isNonNullType(type) ? type.ofType : type; - } -} -/** - * These named types do not include modifiers like List or NonNull. - */ - -function isNamedType(type) { - return ( - isScalarType(type) || - isObjectType(type) || - isInterfaceType(type) || - isUnionType(type) || - isEnumType(type) || - isInputObjectType(type) - ); -} -function getNamedType(type) { - if (type) { - let unwrappedType = type; - - while (isWrappingType(unwrappedType)) { - unwrappedType = unwrappedType.ofType; - } - - return unwrappedType; - } -} -/** - * Used while defining GraphQL types to allow for circular references in - * otherwise immutable type definitions. - */ - -function resolveReadonlyArrayThunk(thunk) { - return typeof thunk === 'function' ? thunk() : thunk; -} -function resolveObjMapThunk(thunk) { - return typeof thunk === 'function' ? thunk() : thunk; -} -/** - * Custom extensions - * - * @remarks - * Use a unique identifier name for your extension, for example the name of - * your library or project. Do not use a shortened identifier as this increases - * the risk of conflicts. We recommend you add at most one extension field, - * an object which can contain all the values you need. - */ - -/** - * Scalar Type Definition - * - * The leaf values of any request and input values to arguments are - * Scalars (or Enums) and are defined with a name and a series of functions - * used to parse input from ast or variables and to ensure validity. - * - * If a type's serialize function returns `null` or does not return a value - * (i.e. it returns `undefined`) then an error will be raised and a `null` - * value will be returned in the response. It is always better to validate - * - * Example: - * - * ```ts - * const OddType = new GraphQLScalarType({ - * name: 'Odd', - * serialize(value) { - * if (!Number.isFinite(value)) { - * throw new Error( - * `Scalar "Odd" cannot represent "${value}" since it is not a finite number.`, - * ); - * } - * - * if (value % 2 === 0) { - * throw new Error(`Scalar "Odd" cannot represent "${value}" since it is even.`); - * } - * return value; - * } - * }); - * ``` - */ -class GraphQLScalarType { - constructor(config) { - var _config$parseValue, - _config$serialize, - _config$parseLiteral, - _config$extensionASTN; - - const parseValue = - (_config$parseValue = config.parseValue) !== null && - _config$parseValue !== void 0 - ? _config$parseValue - : identityFunc; - this.name = assertName(config.name); - this.description = config.description; - this.specifiedByURL = config.specifiedByURL; - this.serialize = - (_config$serialize = config.serialize) !== null && - _config$serialize !== void 0 - ? _config$serialize - : identityFunc; - this.parseValue = parseValue; - this.parseLiteral = - (_config$parseLiteral = config.parseLiteral) !== null && - _config$parseLiteral !== void 0 - ? _config$parseLiteral - : (node, variables) => parseValue(valueFromASTUntyped(node, variables)); - this.extensions = toObjMap(config.extensions); - this.astNode = config.astNode; - this.extensionASTNodes = - (_config$extensionASTN = config.extensionASTNodes) !== null && - _config$extensionASTN !== void 0 - ? _config$extensionASTN - : []; - config.specifiedByURL == null || - typeof config.specifiedByURL === 'string' || - devAssert( - false, - `${this.name} must provide "specifiedByURL" as a string, ` + - `but got: ${inspect$1(config.specifiedByURL)}.`, - ); - config.serialize == null || - typeof config.serialize === 'function' || - devAssert( - false, - `${this.name} must provide "serialize" function. If this custom Scalar is also used as an input type, ensure "parseValue" and "parseLiteral" functions are also provided.`, - ); - - if (config.parseLiteral) { - (typeof config.parseValue === 'function' && - typeof config.parseLiteral === 'function') || - devAssert( - false, - `${this.name} must provide both "parseValue" and "parseLiteral" functions.`, - ); - } - } - - get [Symbol.toStringTag]() { - return 'GraphQLScalarType'; - } - - toConfig() { - return { - name: this.name, - description: this.description, - specifiedByURL: this.specifiedByURL, - serialize: this.serialize, - parseValue: this.parseValue, - parseLiteral: this.parseLiteral, - extensions: this.extensions, - astNode: this.astNode, - extensionASTNodes: this.extensionASTNodes, - }; - } - - toString() { - return this.name; - } - - toJSON() { - return this.toString(); - } -} - -/** - * Object Type Definition - * - * Almost all of the GraphQL types you define will be object types. Object types - * have a name, but most importantly describe their fields. - * - * Example: - * - * ```ts - * const AddressType = new GraphQLObjectType({ - * name: 'Address', - * fields: { - * street: { type: GraphQLString }, - * number: { type: GraphQLInt }, - * formatted: { - * type: GraphQLString, - * resolve(obj) { - * return obj.number + ' ' + obj.street - * } - * } - * } - * }); - * ``` - * - * When two types need to refer to each other, or a type needs to refer to - * itself in a field, you can use a function expression (aka a closure or a - * thunk) to supply the fields lazily. - * - * Example: - * - * ```ts - * const PersonType = new GraphQLObjectType({ - * name: 'Person', - * fields: () => ({ - * name: { type: GraphQLString }, - * bestFriend: { type: PersonType }, - * }) - * }); - * ``` - */ -class GraphQLObjectType { - constructor(config) { - var _config$extensionASTN2; - - this.name = assertName(config.name); - this.description = config.description; - this.isTypeOf = config.isTypeOf; - this.extensions = toObjMap(config.extensions); - this.astNode = config.astNode; - this.extensionASTNodes = - (_config$extensionASTN2 = config.extensionASTNodes) !== null && - _config$extensionASTN2 !== void 0 - ? _config$extensionASTN2 - : []; - - this._fields = () => defineFieldMap(config); - - this._interfaces = () => defineInterfaces(config); - - config.isTypeOf == null || - typeof config.isTypeOf === 'function' || - devAssert( - false, - `${this.name} must provide "isTypeOf" as a function, ` + - `but got: ${inspect$1(config.isTypeOf)}.`, - ); - } - - get [Symbol.toStringTag]() { - return 'GraphQLObjectType'; - } - - getFields() { - if (typeof this._fields === 'function') { - this._fields = this._fields(); - } - - return this._fields; - } - - getInterfaces() { - if (typeof this._interfaces === 'function') { - this._interfaces = this._interfaces(); - } - - return this._interfaces; - } - - toConfig() { - return { - name: this.name, - description: this.description, - interfaces: this.getInterfaces(), - fields: fieldsToFieldsConfig(this.getFields()), - isTypeOf: this.isTypeOf, - extensions: this.extensions, - astNode: this.astNode, - extensionASTNodes: this.extensionASTNodes, - }; - } - - toString() { - return this.name; - } - - toJSON() { - return this.toString(); - } -} - -function defineInterfaces(config) { - var _config$interfaces; - - const interfaces = resolveReadonlyArrayThunk( - (_config$interfaces = config.interfaces) !== null && - _config$interfaces !== void 0 - ? _config$interfaces - : [], - ); - Array.isArray(interfaces) || - devAssert( - false, - `${config.name} interfaces must be an Array or a function which returns an Array.`, - ); - return interfaces; -} - -function defineFieldMap(config) { - const fieldMap = resolveObjMapThunk(config.fields); - isPlainObj(fieldMap) || - devAssert( - false, - `${config.name} fields must be an object with field names as keys or a function which returns such an object.`, - ); - return mapValue(fieldMap, (fieldConfig, fieldName) => { - var _fieldConfig$args; - - isPlainObj(fieldConfig) || - devAssert( - false, - `${config.name}.${fieldName} field config must be an object.`, - ); - fieldConfig.resolve == null || - typeof fieldConfig.resolve === 'function' || - devAssert( - false, - `${config.name}.${fieldName} field resolver must be a function if ` + - `provided, but got: ${inspect$1(fieldConfig.resolve)}.`, - ); - const argsConfig = - (_fieldConfig$args = fieldConfig.args) !== null && - _fieldConfig$args !== void 0 - ? _fieldConfig$args - : {}; - isPlainObj(argsConfig) || - devAssert( - false, - `${config.name}.${fieldName} args must be an object with argument names as keys.`, - ); - return { - name: assertName(fieldName), - description: fieldConfig.description, - type: fieldConfig.type, - args: defineArguments(argsConfig), - resolve: fieldConfig.resolve, - subscribe: fieldConfig.subscribe, - deprecationReason: fieldConfig.deprecationReason, - extensions: toObjMap(fieldConfig.extensions), - astNode: fieldConfig.astNode, - }; - }); -} - -function defineArguments(config) { - return Object.entries(config).map(([argName, argConfig]) => ({ - name: assertName(argName), - description: argConfig.description, - type: argConfig.type, - defaultValue: argConfig.defaultValue, - deprecationReason: argConfig.deprecationReason, - extensions: toObjMap(argConfig.extensions), - astNode: argConfig.astNode, - })); -} - -function isPlainObj(obj) { - return isObjectLike(obj) && !Array.isArray(obj); -} - -function fieldsToFieldsConfig(fields) { - return mapValue(fields, (field) => ({ - description: field.description, - type: field.type, - args: argsToArgsConfig(field.args), - resolve: field.resolve, - subscribe: field.subscribe, - deprecationReason: field.deprecationReason, - extensions: field.extensions, - astNode: field.astNode, - })); -} -/** - * @internal - */ - -function argsToArgsConfig(args) { - return keyValMap( - args, - (arg) => arg.name, - (arg) => ({ - description: arg.description, - type: arg.type, - defaultValue: arg.defaultValue, - deprecationReason: arg.deprecationReason, - extensions: arg.extensions, - astNode: arg.astNode, - }), - ); -} -function isRequiredArgument(arg) { - return isNonNullType(arg.type) && arg.defaultValue === undefined; -} - -/** - * Interface Type Definition - * - * When a field can return one of a heterogeneous set of types, a Interface type - * is used to describe what types are possible, what fields are in common across - * all types, as well as a function to determine which type is actually used - * when the field is resolved. - * - * Example: - * - * ```ts - * const EntityType = new GraphQLInterfaceType({ - * name: 'Entity', - * fields: { - * name: { type: GraphQLString } - * } - * }); - * ``` - */ -class GraphQLInterfaceType { - constructor(config) { - var _config$extensionASTN3; - - this.name = assertName(config.name); - this.description = config.description; - this.resolveType = config.resolveType; - this.extensions = toObjMap(config.extensions); - this.astNode = config.astNode; - this.extensionASTNodes = - (_config$extensionASTN3 = config.extensionASTNodes) !== null && - _config$extensionASTN3 !== void 0 - ? _config$extensionASTN3 - : []; - this._fields = defineFieldMap.bind(undefined, config); - this._interfaces = defineInterfaces.bind(undefined, config); - config.resolveType == null || - typeof config.resolveType === 'function' || - devAssert( - false, - `${this.name} must provide "resolveType" as a function, ` + - `but got: ${inspect$1(config.resolveType)}.`, - ); - } - - get [Symbol.toStringTag]() { - return 'GraphQLInterfaceType'; - } - - getFields() { - if (typeof this._fields === 'function') { - this._fields = this._fields(); - } - - return this._fields; - } - - getInterfaces() { - if (typeof this._interfaces === 'function') { - this._interfaces = this._interfaces(); - } - - return this._interfaces; - } - - toConfig() { - return { - name: this.name, - description: this.description, - interfaces: this.getInterfaces(), - fields: fieldsToFieldsConfig(this.getFields()), - resolveType: this.resolveType, - extensions: this.extensions, - astNode: this.astNode, - extensionASTNodes: this.extensionASTNodes, - }; - } - - toString() { - return this.name; - } - - toJSON() { - return this.toString(); - } -} - -/** - * Union Type Definition - * - * When a field can return one of a heterogeneous set of types, a Union type - * is used to describe what types are possible as well as providing a function - * to determine which type is actually used when the field is resolved. - * - * Example: - * - * ```ts - * const PetType = new GraphQLUnionType({ - * name: 'Pet', - * types: [ DogType, CatType ], - * resolveType(value) { - * if (value instanceof Dog) { - * return DogType; - * } - * if (value instanceof Cat) { - * return CatType; - * } - * } - * }); - * ``` - */ -class GraphQLUnionType { - constructor(config) { - var _config$extensionASTN4; - - this.name = assertName(config.name); - this.description = config.description; - this.resolveType = config.resolveType; - this.extensions = toObjMap(config.extensions); - this.astNode = config.astNode; - this.extensionASTNodes = - (_config$extensionASTN4 = config.extensionASTNodes) !== null && - _config$extensionASTN4 !== void 0 - ? _config$extensionASTN4 - : []; - this._types = defineTypes.bind(undefined, config); - config.resolveType == null || - typeof config.resolveType === 'function' || - devAssert( - false, - `${this.name} must provide "resolveType" as a function, ` + - `but got: ${inspect$1(config.resolveType)}.`, - ); - } - - get [Symbol.toStringTag]() { - return 'GraphQLUnionType'; - } - - getTypes() { - if (typeof this._types === 'function') { - this._types = this._types(); - } - - return this._types; - } - - toConfig() { - return { - name: this.name, - description: this.description, - types: this.getTypes(), - resolveType: this.resolveType, - extensions: this.extensions, - astNode: this.astNode, - extensionASTNodes: this.extensionASTNodes, - }; - } - - toString() { - return this.name; - } - - toJSON() { - return this.toString(); - } -} - -function defineTypes(config) { - const types = resolveReadonlyArrayThunk(config.types); - Array.isArray(types) || - devAssert( - false, - `Must provide Array of types or a function which returns such an array for Union ${config.name}.`, - ); - return types; -} - -/** - * Enum Type Definition - * - * Some leaf values of requests and input values are Enums. GraphQL serializes - * Enum values as strings, however internally Enums can be represented by any - * kind of type, often integers. - * - * Example: - * - * ```ts - * const RGBType = new GraphQLEnumType({ - * name: 'RGB', - * values: { - * RED: { value: 0 }, - * GREEN: { value: 1 }, - * BLUE: { value: 2 } - * } - * }); - * ``` - * - * Note: If a value is not provided in a definition, the name of the enum value - * will be used as its internal value. - */ -class GraphQLEnumType { - /* */ - constructor(config) { - var _config$extensionASTN5; - - this.name = assertName(config.name); - this.description = config.description; - this.extensions = toObjMap(config.extensions); - this.astNode = config.astNode; - this.extensionASTNodes = - (_config$extensionASTN5 = config.extensionASTNodes) !== null && - _config$extensionASTN5 !== void 0 - ? _config$extensionASTN5 - : []; - this._values = defineEnumValues(this.name, config.values); - this._valueLookup = new Map( - this._values.map((enumValue) => [enumValue.value, enumValue]), - ); - this._nameLookup = keyMap(this._values, (value) => value.name); - } - - get [Symbol.toStringTag]() { - return 'GraphQLEnumType'; - } - - getValues() { - return this._values; - } - - getValue(name) { - return this._nameLookup[name]; - } - - serialize(outputValue) { - const enumValue = this._valueLookup.get(outputValue); - - if (enumValue === undefined) { - throw new GraphQLError( - `Enum "${this.name}" cannot represent value: ${inspect$1(outputValue)}`, - ); - } - - return enumValue.name; - } - - parseValue(inputValue) /* T */ - { - if (typeof inputValue !== 'string') { - const valueStr = inspect$1(inputValue); - throw new GraphQLError( - `Enum "${this.name}" cannot represent non-string value: ${valueStr}.` + - didYouMeanEnumValue(this, valueStr), - ); - } - - const enumValue = this.getValue(inputValue); - - if (enumValue == null) { - throw new GraphQLError( - `Value "${inputValue}" does not exist in "${this.name}" enum.` + - didYouMeanEnumValue(this, inputValue), - ); - } - - return enumValue.value; - } - - parseLiteral(valueNode, _variables) /* T */ - { - // Note: variables will be resolved to a value before calling this function. - if (valueNode.kind !== Kind.ENUM) { - const valueStr = print(valueNode); - throw new GraphQLError( - `Enum "${this.name}" cannot represent non-enum value: ${valueStr}.` + - didYouMeanEnumValue(this, valueStr), - { - nodes: valueNode, - }, - ); - } - - const enumValue = this.getValue(valueNode.value); - - if (enumValue == null) { - const valueStr = print(valueNode); - throw new GraphQLError( - `Value "${valueStr}" does not exist in "${this.name}" enum.` + - didYouMeanEnumValue(this, valueStr), - { - nodes: valueNode, - }, - ); - } - - return enumValue.value; - } - - toConfig() { - const values = keyValMap( - this.getValues(), - (value) => value.name, - (value) => ({ - description: value.description, - value: value.value, - deprecationReason: value.deprecationReason, - extensions: value.extensions, - astNode: value.astNode, - }), - ); - return { - name: this.name, - description: this.description, - values, - extensions: this.extensions, - astNode: this.astNode, - extensionASTNodes: this.extensionASTNodes, - }; - } - - toString() { - return this.name; - } - - toJSON() { - return this.toString(); - } -} - -function didYouMeanEnumValue(enumType, unknownValueStr) { - const allNames = enumType.getValues().map((value) => value.name); - const suggestedValues = suggestionList(unknownValueStr, allNames); - return didYouMean('the enum value', suggestedValues); -} - -function defineEnumValues(typeName, valueMap) { - isPlainObj(valueMap) || - devAssert( - false, - `${typeName} values must be an object with value names as keys.`, - ); - return Object.entries(valueMap).map(([valueName, valueConfig]) => { - isPlainObj(valueConfig) || - devAssert( - false, - `${typeName}.${valueName} must refer to an object with a "value" key ` + - `representing an internal value but got: ${inspect$1(valueConfig)}.`, - ); - return { - name: assertEnumValueName(valueName), - description: valueConfig.description, - value: valueConfig.value !== undefined ? valueConfig.value : valueName, - deprecationReason: valueConfig.deprecationReason, - extensions: toObjMap(valueConfig.extensions), - astNode: valueConfig.astNode, - }; - }); -} - -/** - * Input Object Type Definition - * - * An input object defines a structured collection of fields which may be - * supplied to a field argument. - * - * Using `NonNull` will ensure that a value must be provided by the query - * - * Example: - * - * ```ts - * const GeoPoint = new GraphQLInputObjectType({ - * name: 'GeoPoint', - * fields: { - * lat: { type: new GraphQLNonNull(GraphQLFloat) }, - * lon: { type: new GraphQLNonNull(GraphQLFloat) }, - * alt: { type: GraphQLFloat, defaultValue: 0 }, - * } - * }); - * ``` - */ -class GraphQLInputObjectType { - constructor(config) { - var _config$extensionASTN6; - - this.name = assertName(config.name); - this.description = config.description; - this.extensions = toObjMap(config.extensions); - this.astNode = config.astNode; - this.extensionASTNodes = - (_config$extensionASTN6 = config.extensionASTNodes) !== null && - _config$extensionASTN6 !== void 0 - ? _config$extensionASTN6 - : []; - this._fields = defineInputFieldMap.bind(undefined, config); - } - - get [Symbol.toStringTag]() { - return 'GraphQLInputObjectType'; - } - - getFields() { - if (typeof this._fields === 'function') { - this._fields = this._fields(); - } - - return this._fields; - } - - toConfig() { - const fields = mapValue(this.getFields(), (field) => ({ - description: field.description, - type: field.type, - defaultValue: field.defaultValue, - deprecationReason: field.deprecationReason, - extensions: field.extensions, - astNode: field.astNode, - })); - return { - name: this.name, - description: this.description, - fields, - extensions: this.extensions, - astNode: this.astNode, - extensionASTNodes: this.extensionASTNodes, - }; - } - - toString() { - return this.name; - } - - toJSON() { - return this.toString(); - } -} - -function defineInputFieldMap(config) { - const fieldMap = resolveObjMapThunk(config.fields); - isPlainObj(fieldMap) || - devAssert( - false, - `${config.name} fields must be an object with field names as keys or a function which returns such an object.`, - ); - return mapValue(fieldMap, (fieldConfig, fieldName) => { - !('resolve' in fieldConfig) || - devAssert( - false, - `${config.name}.${fieldName} field has a resolve property, but Input Types cannot define resolvers.`, - ); - return { - name: assertName(fieldName), - description: fieldConfig.description, - type: fieldConfig.type, - defaultValue: fieldConfig.defaultValue, - deprecationReason: fieldConfig.deprecationReason, - extensions: toObjMap(fieldConfig.extensions), - astNode: fieldConfig.astNode, - }; - }); -} - -function isRequiredInputField(field) { - return isNonNullType(field.type) && field.defaultValue === undefined; -} - -/** - * Provided two types, return true if the types are equal (invariant). - */ -function isEqualType(typeA, typeB) { - // Equivalent types are equal. - if (typeA === typeB) { - return true; - } // If either type is non-null, the other must also be non-null. - - if (isNonNullType(typeA) && isNonNullType(typeB)) { - return isEqualType(typeA.ofType, typeB.ofType); - } // If either type is a list, the other must also be a list. - - if (isListType(typeA) && isListType(typeB)) { - return isEqualType(typeA.ofType, typeB.ofType); - } // Otherwise the types are not equal. - - return false; -} -/** - * Provided a type and a super type, return true if the first type is either - * equal or a subset of the second super type (covariant). - */ - -function isTypeSubTypeOf(schema, maybeSubType, superType) { - // Equivalent type is a valid subtype - if (maybeSubType === superType) { - return true; - } // If superType is non-null, maybeSubType must also be non-null. - - if (isNonNullType(superType)) { - if (isNonNullType(maybeSubType)) { - return isTypeSubTypeOf(schema, maybeSubType.ofType, superType.ofType); - } - - return false; - } - - if (isNonNullType(maybeSubType)) { - // If superType is nullable, maybeSubType may be non-null or nullable. - return isTypeSubTypeOf(schema, maybeSubType.ofType, superType); - } // If superType type is a list, maybeSubType type must also be a list. - - if (isListType(superType)) { - if (isListType(maybeSubType)) { - return isTypeSubTypeOf(schema, maybeSubType.ofType, superType.ofType); - } - - return false; - } - - if (isListType(maybeSubType)) { - // If superType is not a list, maybeSubType must also be not a list. - return false; - } // If superType type is an abstract type, check if it is super type of maybeSubType. - // Otherwise, the child type is not a valid subtype of the parent type. - - return ( - isAbstractType(superType) && - (isInterfaceType(maybeSubType) || isObjectType(maybeSubType)) && - schema.isSubType(superType, maybeSubType) - ); -} -/** - * Provided two composite types, determine if they "overlap". Two composite - * types overlap when the Sets of possible concrete types for each intersect. - * - * This is often used to determine if a fragment of a given type could possibly - * be visited in a context of another type. - * - * This function is commutative. - */ - -function doTypesOverlap(schema, typeA, typeB) { - // Equivalent types overlap - if (typeA === typeB) { - return true; - } - - if (isAbstractType(typeA)) { - if (isAbstractType(typeB)) { - // If both types are abstract, then determine if there is any intersection - // between possible concrete types of each. - return schema - .getPossibleTypes(typeA) - .some((type) => schema.isSubType(typeB, type)); - } // Determine if the latter type is a possible concrete type of the former. - - return schema.isSubType(typeA, typeB); - } - - if (isAbstractType(typeB)) { - // Determine if the former type is a possible concrete type of the latter. - return schema.isSubType(typeB, typeA); - } // Otherwise the types do not overlap. - - return false; -} - -/** - * Maximum possible Int value as per GraphQL Spec (32-bit signed integer). - * n.b. This differs from JavaScript's numbers that are IEEE 754 doubles safe up-to 2^53 - 1 - * */ - -const GRAPHQL_MAX_INT = 2147483647; -/** - * Minimum possible Int value as per GraphQL Spec (32-bit signed integer). - * n.b. This differs from JavaScript's numbers that are IEEE 754 doubles safe starting at -(2^53 - 1) - * */ - -const GRAPHQL_MIN_INT = -2147483648; -const GraphQLInt = new GraphQLScalarType({ - name: 'Int', - description: - 'The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.', - - serialize(outputValue) { - const coercedValue = serializeObject(outputValue); - - if (typeof coercedValue === 'boolean') { - return coercedValue ? 1 : 0; - } - - let num = coercedValue; - - if (typeof coercedValue === 'string' && coercedValue !== '') { - num = Number(coercedValue); - } - - if (typeof num !== 'number' || !Number.isInteger(num)) { - throw new GraphQLError( - `Int cannot represent non-integer value: ${inspect$1(coercedValue)}`, - ); - } - - if (num > GRAPHQL_MAX_INT || num < GRAPHQL_MIN_INT) { - throw new GraphQLError( - 'Int cannot represent non 32-bit signed integer value: ' + - inspect$1(coercedValue), - ); - } - - return num; - }, - - parseValue(inputValue) { - if (typeof inputValue !== 'number' || !Number.isInteger(inputValue)) { - throw new GraphQLError( - `Int cannot represent non-integer value: ${inspect$1(inputValue)}`, - ); - } - - if (inputValue > GRAPHQL_MAX_INT || inputValue < GRAPHQL_MIN_INT) { - throw new GraphQLError( - `Int cannot represent non 32-bit signed integer value: ${inputValue}`, - ); - } - - return inputValue; - }, - - parseLiteral(valueNode) { - if (valueNode.kind !== Kind.INT) { - throw new GraphQLError( - `Int cannot represent non-integer value: ${print(valueNode)}`, - { - nodes: valueNode, - }, - ); - } - - const num = parseInt(valueNode.value, 10); - - if (num > GRAPHQL_MAX_INT || num < GRAPHQL_MIN_INT) { - throw new GraphQLError( - `Int cannot represent non 32-bit signed integer value: ${valueNode.value}`, - { - nodes: valueNode, - }, - ); - } - - return num; - }, -}); -const GraphQLFloat = new GraphQLScalarType({ - name: 'Float', - description: - 'The `Float` scalar type represents signed double-precision fractional values as specified by [IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point).', - - serialize(outputValue) { - const coercedValue = serializeObject(outputValue); - - if (typeof coercedValue === 'boolean') { - return coercedValue ? 1 : 0; - } - - let num = coercedValue; - - if (typeof coercedValue === 'string' && coercedValue !== '') { - num = Number(coercedValue); - } - - if (typeof num !== 'number' || !Number.isFinite(num)) { - throw new GraphQLError( - `Float cannot represent non numeric value: ${inspect$1(coercedValue)}`, - ); - } - - return num; - }, - - parseValue(inputValue) { - if (typeof inputValue !== 'number' || !Number.isFinite(inputValue)) { - throw new GraphQLError( - `Float cannot represent non numeric value: ${inspect$1(inputValue)}`, - ); - } - - return inputValue; - }, - - parseLiteral(valueNode) { - if (valueNode.kind !== Kind.FLOAT && valueNode.kind !== Kind.INT) { - throw new GraphQLError( - `Float cannot represent non numeric value: ${print(valueNode)}`, - valueNode, - ); - } - - return parseFloat(valueNode.value); - }, -}); -const GraphQLString = new GraphQLScalarType({ - name: 'String', - description: - 'The `String` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.', - - serialize(outputValue) { - const coercedValue = serializeObject(outputValue); // Serialize string, boolean and number values to a string, but do not - // attempt to coerce object, function, symbol, or other types as strings. - - if (typeof coercedValue === 'string') { - return coercedValue; - } - - if (typeof coercedValue === 'boolean') { - return coercedValue ? 'true' : 'false'; - } - - if (typeof coercedValue === 'number' && Number.isFinite(coercedValue)) { - return coercedValue.toString(); - } - - throw new GraphQLError( - `String cannot represent value: ${inspect$1(outputValue)}`, - ); - }, - - parseValue(inputValue) { - if (typeof inputValue !== 'string') { - throw new GraphQLError( - `String cannot represent a non string value: ${inspect$1(inputValue)}`, - ); - } - - return inputValue; - }, - - parseLiteral(valueNode) { - if (valueNode.kind !== Kind.STRING) { - throw new GraphQLError( - `String cannot represent a non string value: ${print(valueNode)}`, - { - nodes: valueNode, - }, - ); - } - - return valueNode.value; - }, -}); -const GraphQLBoolean = new GraphQLScalarType({ - name: 'Boolean', - description: 'The `Boolean` scalar type represents `true` or `false`.', - - serialize(outputValue) { - const coercedValue = serializeObject(outputValue); - - if (typeof coercedValue === 'boolean') { - return coercedValue; - } - - if (Number.isFinite(coercedValue)) { - return coercedValue !== 0; - } - - throw new GraphQLError( - `Boolean cannot represent a non boolean value: ${inspect$1(coercedValue)}`, - ); - }, - - parseValue(inputValue) { - if (typeof inputValue !== 'boolean') { - throw new GraphQLError( - `Boolean cannot represent a non boolean value: ${inspect$1(inputValue)}`, - ); - } - - return inputValue; - }, - - parseLiteral(valueNode) { - if (valueNode.kind !== Kind.BOOLEAN) { - throw new GraphQLError( - `Boolean cannot represent a non boolean value: ${print(valueNode)}`, - { - nodes: valueNode, - }, - ); - } - - return valueNode.value; - }, -}); -const GraphQLID = new GraphQLScalarType({ - name: 'ID', - description: - 'The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `"4"`) or integer (such as `4`) input value will be accepted as an ID.', - - serialize(outputValue) { - const coercedValue = serializeObject(outputValue); - - if (typeof coercedValue === 'string') { - return coercedValue; - } - - if (Number.isInteger(coercedValue)) { - return String(coercedValue); - } - - throw new GraphQLError( - `ID cannot represent value: ${inspect$1(outputValue)}`, - ); - }, - - parseValue(inputValue) { - if (typeof inputValue === 'string') { - return inputValue; - } - - if (typeof inputValue === 'number' && Number.isInteger(inputValue)) { - return inputValue.toString(); - } - - throw new GraphQLError(`ID cannot represent value: ${inspect$1(inputValue)}`); - }, - - parseLiteral(valueNode) { - if (valueNode.kind !== Kind.STRING && valueNode.kind !== Kind.INT) { - throw new GraphQLError( - 'ID cannot represent a non-string and non-integer value: ' + - print(valueNode), - { - nodes: valueNode, - }, - ); - } - - return valueNode.value; - }, -}); -const specifiedScalarTypes = Object.freeze([ - GraphQLString, - GraphQLInt, - GraphQLFloat, - GraphQLBoolean, - GraphQLID, -]); -function isSpecifiedScalarType(type) { - return specifiedScalarTypes.some(({ name }) => type.name === name); -} // Support serializing objects with custom valueOf() or toJSON() functions - -// a common way to represent a complex value which can be represented as -// a string (ex: MongoDB id objects). - -function serializeObject(outputValue) { - if (isObjectLike(outputValue)) { - if (typeof outputValue.valueOf === 'function') { - const valueOfResult = outputValue.valueOf(); - - if (!isObjectLike(valueOfResult)) { - return valueOfResult; - } - } - - if (typeof outputValue.toJSON === 'function') { - return outputValue.toJSON(); - } - } - - return outputValue; -} - -/** - * Test if the given value is a GraphQL directive. - */ - -function isDirective(directive) { - return instanceOf(directive, GraphQLDirective); -} -/** - * Custom extensions - * - * @remarks - * Use a unique identifier name for your extension, for example the name of - * your library or project. Do not use a shortened identifier as this increases - * the risk of conflicts. We recommend you add at most one extension field, - * an object which can contain all the values you need. - */ - -/** - * Directives are used by the GraphQL runtime as a way of modifying execution - * behavior. Type system creators will usually not create these directly. - */ -class GraphQLDirective { - constructor(config) { - var _config$isRepeatable, _config$args; - - this.name = assertName(config.name); - this.description = config.description; - this.locations = config.locations; - this.isRepeatable = - (_config$isRepeatable = config.isRepeatable) !== null && - _config$isRepeatable !== void 0 - ? _config$isRepeatable - : false; - this.extensions = toObjMap(config.extensions); - this.astNode = config.astNode; - Array.isArray(config.locations) || - devAssert(false, `@${config.name} locations must be an Array.`); - const args = - (_config$args = config.args) !== null && _config$args !== void 0 - ? _config$args - : {}; - (isObjectLike(args) && !Array.isArray(args)) || - devAssert( - false, - `@${config.name} args must be an object with argument names as keys.`, - ); - this.args = defineArguments(args); - } - - get [Symbol.toStringTag]() { - return 'GraphQLDirective'; - } - - toConfig() { - return { - name: this.name, - description: this.description, - locations: this.locations, - args: argsToArgsConfig(this.args), - isRepeatable: this.isRepeatable, - extensions: this.extensions, - astNode: this.astNode, - }; - } - - toString() { - return '@' + this.name; - } - - toJSON() { - return this.toString(); - } -} - -/** - * Used to conditionally include fields or fragments. - */ -const GraphQLIncludeDirective = new GraphQLDirective({ - name: 'include', - description: - 'Directs the executor to include this field or fragment only when the `if` argument is true.', - locations: [ - DirectiveLocation$1.FIELD, - DirectiveLocation$1.FRAGMENT_SPREAD, - DirectiveLocation$1.INLINE_FRAGMENT, - ], - args: { - if: { - type: new GraphQLNonNull(GraphQLBoolean), - description: 'Included when true.', - }, - }, -}); -/** - * Used to conditionally skip (exclude) fields or fragments. - */ - -const GraphQLSkipDirective = new GraphQLDirective({ - name: 'skip', - description: - 'Directs the executor to skip this field or fragment when the `if` argument is true.', - locations: [ - DirectiveLocation$1.FIELD, - DirectiveLocation$1.FRAGMENT_SPREAD, - DirectiveLocation$1.INLINE_FRAGMENT, - ], - args: { - if: { - type: new GraphQLNonNull(GraphQLBoolean), - description: 'Skipped when true.', - }, - }, -}); -/** - * Constant string used for default reason for a deprecation. - */ - -const DEFAULT_DEPRECATION_REASON = 'No longer supported'; -/** - * Used to declare element of a GraphQL schema as deprecated. - */ - -const GraphQLDeprecatedDirective = new GraphQLDirective({ - name: 'deprecated', - description: 'Marks an element of a GraphQL schema as no longer supported.', - locations: [ - DirectiveLocation$1.FIELD_DEFINITION, - DirectiveLocation$1.ARGUMENT_DEFINITION, - DirectiveLocation$1.INPUT_FIELD_DEFINITION, - DirectiveLocation$1.ENUM_VALUE, - ], - args: { - reason: { - type: GraphQLString, - description: - 'Explains why this element was deprecated, usually also including a suggestion for how to access supported similar data. Formatted using the Markdown syntax, as specified by [CommonMark](https://commonmark.org/).', - defaultValue: DEFAULT_DEPRECATION_REASON, - }, - }, -}); -/** - * Used to provide a URL for specifying the behavior of custom scalar definitions. - */ - -const GraphQLSpecifiedByDirective = new GraphQLDirective({ - name: 'specifiedBy', - description: 'Exposes a URL that specifies the behavior of this scalar.', - locations: [DirectiveLocation$1.SCALAR], - args: { - url: { - type: new GraphQLNonNull(GraphQLString), - description: 'The URL that specifies the behavior of this scalar.', - }, - }, -}); -/** - * The full list of specified directives. - */ - -const specifiedDirectives = Object.freeze([ - GraphQLIncludeDirective, - GraphQLSkipDirective, - GraphQLDeprecatedDirective, - GraphQLSpecifiedByDirective, -]); -function isSpecifiedDirective(directive) { - return specifiedDirectives.some(({ name }) => name === directive.name); -} - -/** - * Returns true if the provided object is an Object (i.e. not a string literal) - * and implements the Iterator protocol. - * - * This may be used in place of [Array.isArray()][isArray] to determine if - * an object should be iterated-over e.g. Array, Map, Set, Int8Array, - * TypedArray, etc. but excludes string literals. - * - * @example - * ```ts - * isIterableObject([ 1, 2, 3 ]) // true - * isIterableObject(new Map()) // true - * isIterableObject('ABC') // false - * isIterableObject({ key: 'value' }) // false - * isIterableObject({ length: 1, 0: 'Alpha' }) // false - * ``` - */ -function isIterableObject(maybeIterable) { - return ( - typeof maybeIterable === 'object' && - typeof (maybeIterable === null || maybeIterable === void 0 - ? void 0 - : maybeIterable[Symbol.iterator]) === 'function' - ); -} - -/** - * Produces a GraphQL Value AST given a JavaScript object. - * Function will match JavaScript/JSON values to GraphQL AST schema format - * by using suggested GraphQLInputType. For example: - * - * astFromValue("value", GraphQLString) - * - * A GraphQL type must be provided, which will be used to interpret different - * JavaScript values. - * - * | JSON Value | GraphQL Value | - * | ------------- | -------------------- | - * | Object | Input Object | - * | Array | List | - * | Boolean | Boolean | - * | String | String / Enum Value | - * | Number | Int / Float | - * | Unknown | Enum Value | - * | null | NullValue | - * - */ - -function astFromValue(value, type) { - if (isNonNullType(type)) { - const astValue = astFromValue(value, type.ofType); - - if ( - (astValue === null || astValue === void 0 ? void 0 : astValue.kind) === - Kind.NULL - ) { - return null; - } - - return astValue; - } // only explicit null, not undefined, NaN - - if (value === null) { - return { - kind: Kind.NULL, - }; - } // undefined - - if (value === undefined) { - return null; - } // Convert JavaScript array to GraphQL list. If the GraphQLType is a list, but - // the value is not an array, convert the value using the list's item type. - - if (isListType(type)) { - const itemType = type.ofType; - - if (isIterableObject(value)) { - const valuesNodes = []; - - for (const item of value) { - const itemNode = astFromValue(item, itemType); - - if (itemNode != null) { - valuesNodes.push(itemNode); - } - } - - return { - kind: Kind.LIST, - values: valuesNodes, - }; - } - - return astFromValue(value, itemType); - } // Populate the fields of the input object by creating ASTs from each value - // in the JavaScript object according to the fields in the input type. - - if (isInputObjectType(type)) { - if (!isObjectLike(value)) { - return null; - } - - const fieldNodes = []; - - for (const field of Object.values(type.getFields())) { - const fieldValue = astFromValue(value[field.name], field.type); - - if (fieldValue) { - fieldNodes.push({ - kind: Kind.OBJECT_FIELD, - name: { - kind: Kind.NAME, - value: field.name, - }, - value: fieldValue, - }); - } - } - - return { - kind: Kind.OBJECT, - fields: fieldNodes, - }; - } - - if (isLeafType(type)) { - // Since value is an internally represented value, it must be serialized - // to an externally represented value before converting into an AST. - const serialized = type.serialize(value); - - if (serialized == null) { - return null; - } // Others serialize based on their corresponding JavaScript scalar types. - - if (typeof serialized === 'boolean') { - return { - kind: Kind.BOOLEAN, - value: serialized, - }; - } // JavaScript numbers can be Int or Float values. - - if (typeof serialized === 'number' && Number.isFinite(serialized)) { - const stringNum = String(serialized); - return integerStringRegExp$1.test(stringNum) - ? { - kind: Kind.INT, - value: stringNum, - } - : { - kind: Kind.FLOAT, - value: stringNum, - }; - } - - if (typeof serialized === 'string') { - // Enum types use Enum literals. - if (isEnumType(type)) { - return { - kind: Kind.ENUM, - value: serialized, - }; - } // ID types can use Int literals. - - if (type === GraphQLID && integerStringRegExp$1.test(serialized)) { - return { - kind: Kind.INT, - value: serialized, - }; - } - - return { - kind: Kind.STRING, - value: serialized, - }; - } - - throw new TypeError(`Cannot convert value to AST: ${inspect$1(serialized)}.`); - } - /* c8 ignore next 3 */ - // Not reachable, all possible types have been considered. - - invariant$1(false, 'Unexpected input type: ' + inspect$1(type)); -} -/** - * IntValue: - * - NegativeSign? 0 - * - NegativeSign? NonZeroDigit ( Digit+ )? - */ - -const integerStringRegExp$1 = /^-?(?:0|[1-9][0-9]*)$/; - -const __Schema = new GraphQLObjectType({ - name: '__Schema', - description: - 'A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, as well as the entry points for query, mutation, and subscription operations.', - fields: () => ({ - description: { - type: GraphQLString, - resolve: (schema) => schema.description, - }, - types: { - description: 'A list of all types supported by this server.', - type: new GraphQLNonNull(new GraphQLList(new GraphQLNonNull(__Type))), - - resolve(schema) { - return Object.values(schema.getTypeMap()); - }, - }, - queryType: { - description: 'The type that query operations will be rooted at.', - type: new GraphQLNonNull(__Type), - resolve: (schema) => schema.getQueryType(), - }, - mutationType: { - description: - 'If this server supports mutation, the type that mutation operations will be rooted at.', - type: __Type, - resolve: (schema) => schema.getMutationType(), - }, - subscriptionType: { - description: - 'If this server support subscription, the type that subscription operations will be rooted at.', - type: __Type, - resolve: (schema) => schema.getSubscriptionType(), - }, - directives: { - description: 'A list of all directives supported by this server.', - type: new GraphQLNonNull( - new GraphQLList(new GraphQLNonNull(__Directive)), - ), - resolve: (schema) => schema.getDirectives(), - }, - }), -}); -const __Directive = new GraphQLObjectType({ - name: '__Directive', - description: - "A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document.\n\nIn some cases, you need to provide options to alter GraphQL's execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to the executor.", - fields: () => ({ - name: { - type: new GraphQLNonNull(GraphQLString), - resolve: (directive) => directive.name, - }, - description: { - type: GraphQLString, - resolve: (directive) => directive.description, - }, - isRepeatable: { - type: new GraphQLNonNull(GraphQLBoolean), - resolve: (directive) => directive.isRepeatable, - }, - locations: { - type: new GraphQLNonNull( - new GraphQLList(new GraphQLNonNull(__DirectiveLocation)), - ), - resolve: (directive) => directive.locations, - }, - args: { - type: new GraphQLNonNull( - new GraphQLList(new GraphQLNonNull(__InputValue)), - ), - args: { - includeDeprecated: { - type: GraphQLBoolean, - defaultValue: false, - }, - }, - - resolve(field, { includeDeprecated }) { - return includeDeprecated - ? field.args - : field.args.filter((arg) => arg.deprecationReason == null); - }, - }, - }), -}); -const __DirectiveLocation = new GraphQLEnumType({ - name: '__DirectiveLocation', - description: - 'A Directive can be adjacent to many parts of the GraphQL language, a __DirectiveLocation describes one such possible adjacencies.', - values: { - QUERY: { - value: DirectiveLocation$1.QUERY, - description: 'Location adjacent to a query operation.', - }, - MUTATION: { - value: DirectiveLocation$1.MUTATION, - description: 'Location adjacent to a mutation operation.', - }, - SUBSCRIPTION: { - value: DirectiveLocation$1.SUBSCRIPTION, - description: 'Location adjacent to a subscription operation.', - }, - FIELD: { - value: DirectiveLocation$1.FIELD, - description: 'Location adjacent to a field.', - }, - FRAGMENT_DEFINITION: { - value: DirectiveLocation$1.FRAGMENT_DEFINITION, - description: 'Location adjacent to a fragment definition.', - }, - FRAGMENT_SPREAD: { - value: DirectiveLocation$1.FRAGMENT_SPREAD, - description: 'Location adjacent to a fragment spread.', - }, - INLINE_FRAGMENT: { - value: DirectiveLocation$1.INLINE_FRAGMENT, - description: 'Location adjacent to an inline fragment.', - }, - VARIABLE_DEFINITION: { - value: DirectiveLocation$1.VARIABLE_DEFINITION, - description: 'Location adjacent to a variable definition.', - }, - SCHEMA: { - value: DirectiveLocation$1.SCHEMA, - description: 'Location adjacent to a schema definition.', - }, - SCALAR: { - value: DirectiveLocation$1.SCALAR, - description: 'Location adjacent to a scalar definition.', - }, - OBJECT: { - value: DirectiveLocation$1.OBJECT, - description: 'Location adjacent to an object type definition.', - }, - FIELD_DEFINITION: { - value: DirectiveLocation$1.FIELD_DEFINITION, - description: 'Location adjacent to a field definition.', - }, - ARGUMENT_DEFINITION: { - value: DirectiveLocation$1.ARGUMENT_DEFINITION, - description: 'Location adjacent to an argument definition.', - }, - INTERFACE: { - value: DirectiveLocation$1.INTERFACE, - description: 'Location adjacent to an interface definition.', - }, - UNION: { - value: DirectiveLocation$1.UNION, - description: 'Location adjacent to a union definition.', - }, - ENUM: { - value: DirectiveLocation$1.ENUM, - description: 'Location adjacent to an enum definition.', - }, - ENUM_VALUE: { - value: DirectiveLocation$1.ENUM_VALUE, - description: 'Location adjacent to an enum value definition.', - }, - INPUT_OBJECT: { - value: DirectiveLocation$1.INPUT_OBJECT, - description: 'Location adjacent to an input object type definition.', - }, - INPUT_FIELD_DEFINITION: { - value: DirectiveLocation$1.INPUT_FIELD_DEFINITION, - description: 'Location adjacent to an input object field definition.', - }, - }, -}); -const __Type = new GraphQLObjectType({ - name: '__Type', - description: - 'The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.\n\nDepending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name, description and optional `specifiedByURL`, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.', - fields: () => ({ - kind: { - type: new GraphQLNonNull(__TypeKind), - - resolve(type) { - if (isScalarType(type)) { - return TypeKind.SCALAR; - } - - if (isObjectType(type)) { - return TypeKind.OBJECT; - } - - if (isInterfaceType(type)) { - return TypeKind.INTERFACE; - } - - if (isUnionType(type)) { - return TypeKind.UNION; - } - - if (isEnumType(type)) { - return TypeKind.ENUM; - } - - if (isInputObjectType(type)) { - return TypeKind.INPUT_OBJECT; - } - - if (isListType(type)) { - return TypeKind.LIST; - } - - if (isNonNullType(type)) { - return TypeKind.NON_NULL; - } - /* c8 ignore next 3 */ - // Not reachable, all possible types have been considered) - - invariant$1(false, `Unexpected type: "${inspect$1(type)}".`); - }, - }, - name: { - type: GraphQLString, - resolve: (type) => ('name' in type ? type.name : undefined), - }, - description: { - type: GraphQLString, - resolve: ( - type, // FIXME: add test case - ) => - /* c8 ignore next */ - 'description' in type ? type.description : undefined, - }, - specifiedByURL: { - type: GraphQLString, - resolve: (obj) => - 'specifiedByURL' in obj ? obj.specifiedByURL : undefined, - }, - fields: { - type: new GraphQLList(new GraphQLNonNull(__Field)), - args: { - includeDeprecated: { - type: GraphQLBoolean, - defaultValue: false, - }, - }, - - resolve(type, { includeDeprecated }) { - if (isObjectType(type) || isInterfaceType(type)) { - const fields = Object.values(type.getFields()); - return includeDeprecated - ? fields - : fields.filter((field) => field.deprecationReason == null); - } - }, - }, - interfaces: { - type: new GraphQLList(new GraphQLNonNull(__Type)), - - resolve(type) { - if (isObjectType(type) || isInterfaceType(type)) { - return type.getInterfaces(); - } - }, - }, - possibleTypes: { - type: new GraphQLList(new GraphQLNonNull(__Type)), - - resolve(type, _args, _context, { schema }) { - if (isAbstractType(type)) { - return schema.getPossibleTypes(type); - } - }, - }, - enumValues: { - type: new GraphQLList(new GraphQLNonNull(__EnumValue)), - args: { - includeDeprecated: { - type: GraphQLBoolean, - defaultValue: false, - }, - }, - - resolve(type, { includeDeprecated }) { - if (isEnumType(type)) { - const values = type.getValues(); - return includeDeprecated - ? values - : values.filter((field) => field.deprecationReason == null); - } - }, - }, - inputFields: { - type: new GraphQLList(new GraphQLNonNull(__InputValue)), - args: { - includeDeprecated: { - type: GraphQLBoolean, - defaultValue: false, - }, - }, - - resolve(type, { includeDeprecated }) { - if (isInputObjectType(type)) { - const values = Object.values(type.getFields()); - return includeDeprecated - ? values - : values.filter((field) => field.deprecationReason == null); - } - }, - }, - ofType: { - type: __Type, - resolve: (type) => ('ofType' in type ? type.ofType : undefined), - }, - }), -}); -const __Field = new GraphQLObjectType({ - name: '__Field', - description: - 'Object and Interface types are described by a list of Fields, each of which has a name, potentially a list of arguments, and a return type.', - fields: () => ({ - name: { - type: new GraphQLNonNull(GraphQLString), - resolve: (field) => field.name, - }, - description: { - type: GraphQLString, - resolve: (field) => field.description, - }, - args: { - type: new GraphQLNonNull( - new GraphQLList(new GraphQLNonNull(__InputValue)), - ), - args: { - includeDeprecated: { - type: GraphQLBoolean, - defaultValue: false, - }, - }, - - resolve(field, { includeDeprecated }) { - return includeDeprecated - ? field.args - : field.args.filter((arg) => arg.deprecationReason == null); - }, - }, - type: { - type: new GraphQLNonNull(__Type), - resolve: (field) => field.type, - }, - isDeprecated: { - type: new GraphQLNonNull(GraphQLBoolean), - resolve: (field) => field.deprecationReason != null, - }, - deprecationReason: { - type: GraphQLString, - resolve: (field) => field.deprecationReason, - }, - }), -}); -const __InputValue = new GraphQLObjectType({ - name: '__InputValue', - description: - 'Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.', - fields: () => ({ - name: { - type: new GraphQLNonNull(GraphQLString), - resolve: (inputValue) => inputValue.name, - }, - description: { - type: GraphQLString, - resolve: (inputValue) => inputValue.description, - }, - type: { - type: new GraphQLNonNull(__Type), - resolve: (inputValue) => inputValue.type, - }, - defaultValue: { - type: GraphQLString, - description: - 'A GraphQL-formatted string representing the default value for this input value.', - - resolve(inputValue) { - const { type, defaultValue } = inputValue; - const valueAST = astFromValue(defaultValue, type); - return valueAST ? print(valueAST) : null; - }, - }, - isDeprecated: { - type: new GraphQLNonNull(GraphQLBoolean), - resolve: (field) => field.deprecationReason != null, - }, - deprecationReason: { - type: GraphQLString, - resolve: (obj) => obj.deprecationReason, - }, - }), -}); -const __EnumValue = new GraphQLObjectType({ - name: '__EnumValue', - description: - 'One possible value for a given Enum. Enum values are unique values, not a placeholder for a string or numeric value. However an Enum value is returned in a JSON response as a string.', - fields: () => ({ - name: { - type: new GraphQLNonNull(GraphQLString), - resolve: (enumValue) => enumValue.name, - }, - description: { - type: GraphQLString, - resolve: (enumValue) => enumValue.description, - }, - isDeprecated: { - type: new GraphQLNonNull(GraphQLBoolean), - resolve: (enumValue) => enumValue.deprecationReason != null, - }, - deprecationReason: { - type: GraphQLString, - resolve: (enumValue) => enumValue.deprecationReason, - }, - }), -}); -var TypeKind; - -(function (TypeKind) { - TypeKind['SCALAR'] = 'SCALAR'; - TypeKind['OBJECT'] = 'OBJECT'; - TypeKind['INTERFACE'] = 'INTERFACE'; - TypeKind['UNION'] = 'UNION'; - TypeKind['ENUM'] = 'ENUM'; - TypeKind['INPUT_OBJECT'] = 'INPUT_OBJECT'; - TypeKind['LIST'] = 'LIST'; - TypeKind['NON_NULL'] = 'NON_NULL'; -})(TypeKind || (TypeKind = {})); -const __TypeKind = new GraphQLEnumType({ - name: '__TypeKind', - description: 'An enum describing what kind of type a given `__Type` is.', - values: { - SCALAR: { - value: TypeKind.SCALAR, - description: 'Indicates this type is a scalar.', - }, - OBJECT: { - value: TypeKind.OBJECT, - description: - 'Indicates this type is an object. `fields` and `interfaces` are valid fields.', - }, - INTERFACE: { - value: TypeKind.INTERFACE, - description: - 'Indicates this type is an interface. `fields`, `interfaces`, and `possibleTypes` are valid fields.', - }, - UNION: { - value: TypeKind.UNION, - description: - 'Indicates this type is a union. `possibleTypes` is a valid field.', - }, - ENUM: { - value: TypeKind.ENUM, - description: - 'Indicates this type is an enum. `enumValues` is a valid field.', - }, - INPUT_OBJECT: { - value: TypeKind.INPUT_OBJECT, - description: - 'Indicates this type is an input object. `inputFields` is a valid field.', - }, - LIST: { - value: TypeKind.LIST, - description: 'Indicates this type is a list. `ofType` is a valid field.', - }, - NON_NULL: { - value: TypeKind.NON_NULL, - description: - 'Indicates this type is a non-null. `ofType` is a valid field.', - }, - }, -}); -/** - * Note that these are GraphQLField and not GraphQLFieldConfig, - * so the format for args is different. - */ - -const SchemaMetaFieldDef = { - name: '__schema', - type: new GraphQLNonNull(__Schema), - description: 'Access the current type schema of this server.', - args: [], - resolve: (_source, _args, _context, { schema }) => schema, - deprecationReason: undefined, - extensions: Object.create(null), - astNode: undefined, -}; -const TypeMetaFieldDef = { - name: '__type', - type: __Type, - description: 'Request the type information of a single type.', - args: [ - { - name: 'name', - description: undefined, - type: new GraphQLNonNull(GraphQLString), - defaultValue: undefined, - deprecationReason: undefined, - extensions: Object.create(null), - astNode: undefined, - }, - ], - resolve: (_source, { name }, _context, { schema }) => schema.getType(name), - deprecationReason: undefined, - extensions: Object.create(null), - astNode: undefined, -}; -const TypeNameMetaFieldDef = { - name: '__typename', - type: new GraphQLNonNull(GraphQLString), - description: 'The name of the current Object type at runtime.', - args: [], - resolve: (_source, _args, _context, { parentType }) => parentType.name, - deprecationReason: undefined, - extensions: Object.create(null), - astNode: undefined, -}; -const introspectionTypes = Object.freeze([ - __Schema, - __Directive, - __DirectiveLocation, - __Type, - __Field, - __InputValue, - __EnumValue, - __TypeKind, -]); -function isIntrospectionType(type) { - return introspectionTypes.some(({ name }) => type.name === name); -} - -/** - * Test if the given value is a GraphQL schema. - */ - -function isSchema(schema) { - return instanceOf(schema, GraphQLSchema); -} -function assertSchema(schema) { - if (!isSchema(schema)) { - throw new Error(`Expected ${inspect$1(schema)} to be a GraphQL schema.`); - } - - return schema; -} -/** - * Custom extensions - * - * @remarks - * Use a unique identifier name for your extension, for example the name of - * your library or project. Do not use a shortened identifier as this increases - * the risk of conflicts. We recommend you add at most one extension field, - * an object which can contain all the values you need. - */ - -/** - * Schema Definition - * - * A Schema is created by supplying the root types of each type of operation, - * query and mutation (optional). A schema definition is then supplied to the - * validator and executor. - * - * Example: - * - * ```ts - * const MyAppSchema = new GraphQLSchema({ - * query: MyAppQueryRootType, - * mutation: MyAppMutationRootType, - * }) - * ``` - * - * Note: When the schema is constructed, by default only the types that are - * reachable by traversing the root types are included, other types must be - * explicitly referenced. - * - * Example: - * - * ```ts - * const characterInterface = new GraphQLInterfaceType({ - * name: 'Character', - * ... - * }); - * - * const humanType = new GraphQLObjectType({ - * name: 'Human', - * interfaces: [characterInterface], - * ... - * }); - * - * const droidType = new GraphQLObjectType({ - * name: 'Droid', - * interfaces: [characterInterface], - * ... - * }); - * - * const schema = new GraphQLSchema({ - * query: new GraphQLObjectType({ - * name: 'Query', - * fields: { - * hero: { type: characterInterface, ... }, - * } - * }), - * ... - * // Since this schema references only the `Character` interface it's - * // necessary to explicitly list the types that implement it if - * // you want them to be included in the final schema. - * types: [humanType, droidType], - * }) - * ``` - * - * Note: If an array of `directives` are provided to GraphQLSchema, that will be - * the exact list of directives represented and allowed. If `directives` is not - * provided then a default set of the specified directives (e.g. `@include` and - * `@skip`) will be used. If you wish to provide *additional* directives to these - * specified directives, you must explicitly declare them. Example: - * - * ```ts - * const MyAppSchema = new GraphQLSchema({ - * ... - * directives: specifiedDirectives.concat([ myCustomDirective ]), - * }) - * ``` - */ -class GraphQLSchema { - // Used as a cache for validateSchema(). - constructor(config) { - var _config$extensionASTN, _config$directives; - - // If this schema was built from a source known to be valid, then it may be - // marked with assumeValid to avoid an additional type system validation. - this.__validationErrors = config.assumeValid === true ? [] : undefined; // Check for common mistakes during construction to produce early errors. - - isObjectLike(config) || - devAssert(false, 'Must provide configuration object.'); - !config.types || - Array.isArray(config.types) || - devAssert( - false, - `"types" must be Array if provided but got: ${inspect$1(config.types)}.`, - ); - !config.directives || - Array.isArray(config.directives) || - devAssert( - false, - '"directives" must be Array if provided but got: ' + - `${inspect$1(config.directives)}.`, - ); - this.description = config.description; - this.extensions = toObjMap(config.extensions); - this.astNode = config.astNode; - this.extensionASTNodes = - (_config$extensionASTN = config.extensionASTNodes) !== null && - _config$extensionASTN !== void 0 - ? _config$extensionASTN - : []; - this._queryType = config.query; - this._mutationType = config.mutation; - this._subscriptionType = config.subscription; // Provide specified directives (e.g. @include and @skip) by default. - - this._directives = - (_config$directives = config.directives) !== null && - _config$directives !== void 0 - ? _config$directives - : specifiedDirectives; // To preserve order of user-provided types, we add first to add them to - // the set of "collected" types, so `collectReferencedTypes` ignore them. - - const allReferencedTypes = new Set(config.types); - - if (config.types != null) { - for (const type of config.types) { - // When we ready to process this type, we remove it from "collected" types - // and then add it together with all dependent types in the correct position. - allReferencedTypes.delete(type); - collectReferencedTypes(type, allReferencedTypes); - } - } - - if (this._queryType != null) { - collectReferencedTypes(this._queryType, allReferencedTypes); - } - - if (this._mutationType != null) { - collectReferencedTypes(this._mutationType, allReferencedTypes); - } - - if (this._subscriptionType != null) { - collectReferencedTypes(this._subscriptionType, allReferencedTypes); - } - - for (const directive of this._directives) { - // Directives are not validated until validateSchema() is called. - if (isDirective(directive)) { - for (const arg of directive.args) { - collectReferencedTypes(arg.type, allReferencedTypes); - } - } - } - - collectReferencedTypes(__Schema, allReferencedTypes); // Storing the resulting map for reference by the schema. - - this._typeMap = Object.create(null); - this._subTypeMap = Object.create(null); // Keep track of all implementations by interface name. - - this._implementationsMap = Object.create(null); - - for (const namedType of allReferencedTypes) { - if (namedType == null) { - continue; - } - - const typeName = namedType.name; - typeName || - devAssert( - false, - 'One of the provided types for building the Schema is missing a name.', - ); - - if (this._typeMap[typeName] !== undefined) { - throw new Error( - `Schema must contain uniquely named types but contains multiple types named "${typeName}".`, - ); - } - - this._typeMap[typeName] = namedType; - - if (isInterfaceType(namedType)) { - // Store implementations by interface. - for (const iface of namedType.getInterfaces()) { - if (isInterfaceType(iface)) { - let implementations = this._implementationsMap[iface.name]; - - if (implementations === undefined) { - implementations = this._implementationsMap[iface.name] = { - objects: [], - interfaces: [], - }; - } - - implementations.interfaces.push(namedType); - } - } - } else if (isObjectType(namedType)) { - // Store implementations by objects. - for (const iface of namedType.getInterfaces()) { - if (isInterfaceType(iface)) { - let implementations = this._implementationsMap[iface.name]; - - if (implementations === undefined) { - implementations = this._implementationsMap[iface.name] = { - objects: [], - interfaces: [], - }; - } - - implementations.objects.push(namedType); - } - } - } - } - } - - get [Symbol.toStringTag]() { - return 'GraphQLSchema'; - } - - getQueryType() { - return this._queryType; - } - - getMutationType() { - return this._mutationType; - } - - getSubscriptionType() { - return this._subscriptionType; - } - - getRootType(operation) { - switch (operation) { - case OperationTypeNode.QUERY: - return this.getQueryType(); - - case OperationTypeNode.MUTATION: - return this.getMutationType(); - - case OperationTypeNode.SUBSCRIPTION: - return this.getSubscriptionType(); - } - } - - getTypeMap() { - return this._typeMap; - } - - getType(name) { - return this.getTypeMap()[name]; - } - - getPossibleTypes(abstractType) { - return isUnionType(abstractType) - ? abstractType.getTypes() - : this.getImplementations(abstractType).objects; - } - - getImplementations(interfaceType) { - const implementations = this._implementationsMap[interfaceType.name]; - return implementations !== null && implementations !== void 0 - ? implementations - : { - objects: [], - interfaces: [], - }; - } - - isSubType(abstractType, maybeSubType) { - let map = this._subTypeMap[abstractType.name]; - - if (map === undefined) { - map = Object.create(null); - - if (isUnionType(abstractType)) { - for (const type of abstractType.getTypes()) { - map[type.name] = true; - } - } else { - const implementations = this.getImplementations(abstractType); - - for (const type of implementations.objects) { - map[type.name] = true; - } - - for (const type of implementations.interfaces) { - map[type.name] = true; - } - } - - this._subTypeMap[abstractType.name] = map; - } - - return map[maybeSubType.name] !== undefined; - } - - getDirectives() { - return this._directives; - } - - getDirective(name) { - return this.getDirectives().find((directive) => directive.name === name); - } - - toConfig() { - return { - description: this.description, - query: this.getQueryType(), - mutation: this.getMutationType(), - subscription: this.getSubscriptionType(), - types: Object.values(this.getTypeMap()), - directives: this.getDirectives(), - extensions: this.extensions, - astNode: this.astNode, - extensionASTNodes: this.extensionASTNodes, - assumeValid: this.__validationErrors !== undefined, - }; - } -} - -function collectReferencedTypes(type, typeSet) { - const namedType = getNamedType(type); - - if (!typeSet.has(namedType)) { - typeSet.add(namedType); - - if (isUnionType(namedType)) { - for (const memberType of namedType.getTypes()) { - collectReferencedTypes(memberType, typeSet); - } - } else if (isObjectType(namedType) || isInterfaceType(namedType)) { - for (const interfaceType of namedType.getInterfaces()) { - collectReferencedTypes(interfaceType, typeSet); - } - - for (const field of Object.values(namedType.getFields())) { - collectReferencedTypes(field.type, typeSet); - - for (const arg of field.args) { - collectReferencedTypes(arg.type, typeSet); - } - } - } else if (isInputObjectType(namedType)) { - for (const field of Object.values(namedType.getFields())) { - collectReferencedTypes(field.type, typeSet); - } - } - } - - return typeSet; -} - -/** - * Implements the "Type Validation" sub-sections of the specification's - * "Type System" section. - * - * Validation runs synchronously, returning an array of encountered errors, or - * an empty array if no errors were encountered and the Schema is valid. - */ - -function validateSchema(schema) { - // First check to ensure the provided value is in fact a GraphQLSchema. - assertSchema(schema); // If this Schema has already been validated, return the previous results. - - if (schema.__validationErrors) { - return schema.__validationErrors; - } // Validate the schema, producing a list of errors. - - const context = new SchemaValidationContext(schema); - validateRootTypes(context); - validateDirectives(context); - validateTypes(context); // Persist the results of validation before returning to ensure validation - // does not run multiple times for this schema. - - const errors = context.getErrors(); - schema.__validationErrors = errors; - return errors; -} -/** - * Utility function which asserts a schema is valid by throwing an error if - * it is invalid. - */ - -function assertValidSchema(schema) { - const errors = validateSchema(schema); - - if (errors.length !== 0) { - throw new Error(errors.map((error) => error.message).join('\n\n')); - } -} - -class SchemaValidationContext { - constructor(schema) { - this._errors = []; - this.schema = schema; - } - - reportError(message, nodes) { - const _nodes = Array.isArray(nodes) ? nodes.filter(Boolean) : nodes; - - this._errors.push( - new GraphQLError(message, { - nodes: _nodes, - }), - ); - } - - getErrors() { - return this._errors; - } -} - -function validateRootTypes(context) { - const schema = context.schema; - const queryType = schema.getQueryType(); - - if (!queryType) { - context.reportError('Query root type must be provided.', schema.astNode); - } else if (!isObjectType(queryType)) { - var _getOperationTypeNode; - - context.reportError( - `Query root type must be Object type, it cannot be ${inspect$1( - queryType, - )}.`, - (_getOperationTypeNode = getOperationTypeNode( - schema, - OperationTypeNode.QUERY, - )) !== null && _getOperationTypeNode !== void 0 - ? _getOperationTypeNode - : queryType.astNode, - ); - } - - const mutationType = schema.getMutationType(); - - if (mutationType && !isObjectType(mutationType)) { - var _getOperationTypeNode2; - - context.reportError( - 'Mutation root type must be Object type if provided, it cannot be ' + - `${inspect$1(mutationType)}.`, - (_getOperationTypeNode2 = getOperationTypeNode( - schema, - OperationTypeNode.MUTATION, - )) !== null && _getOperationTypeNode2 !== void 0 - ? _getOperationTypeNode2 - : mutationType.astNode, - ); - } - - const subscriptionType = schema.getSubscriptionType(); - - if (subscriptionType && !isObjectType(subscriptionType)) { - var _getOperationTypeNode3; - - context.reportError( - 'Subscription root type must be Object type if provided, it cannot be ' + - `${inspect$1(subscriptionType)}.`, - (_getOperationTypeNode3 = getOperationTypeNode( - schema, - OperationTypeNode.SUBSCRIPTION, - )) !== null && _getOperationTypeNode3 !== void 0 - ? _getOperationTypeNode3 - : subscriptionType.astNode, - ); - } -} - -function getOperationTypeNode(schema, operation) { - var _flatMap$find; - - return (_flatMap$find = [schema.astNode, ...schema.extensionASTNodes] - .flatMap( - // FIXME: https://github.com/graphql/graphql-js/issues/2203 - (schemaNode) => { - var _schemaNode$operation; - - return ( - /* c8 ignore next */ - (_schemaNode$operation = - schemaNode === null || schemaNode === void 0 - ? void 0 - : schemaNode.operationTypes) !== null && - _schemaNode$operation !== void 0 - ? _schemaNode$operation - : [] - ); - }, - ) - .find((operationNode) => operationNode.operation === operation)) === null || - _flatMap$find === void 0 - ? void 0 - : _flatMap$find.type; -} - -function validateDirectives(context) { - for (const directive of context.schema.getDirectives()) { - // Ensure all directives are in fact GraphQL directives. - if (!isDirective(directive)) { - context.reportError( - `Expected directive but got: ${inspect$1(directive)}.`, - directive === null || directive === void 0 ? void 0 : directive.astNode, - ); - continue; - } // Ensure they are named correctly. - - validateName(context, directive); // TODO: Ensure proper locations. - // Ensure the arguments are valid. - - for (const arg of directive.args) { - // Ensure they are named correctly. - validateName(context, arg); // Ensure the type is an input type. - - if (!isInputType(arg.type)) { - context.reportError( - `The type of @${directive.name}(${arg.name}:) must be Input Type ` + - `but got: ${inspect$1(arg.type)}.`, - arg.astNode, - ); - } - - if (isRequiredArgument(arg) && arg.deprecationReason != null) { - var _arg$astNode; - - context.reportError( - `Required argument @${directive.name}(${arg.name}:) cannot be deprecated.`, - [ - getDeprecatedDirectiveNode(arg.astNode), - (_arg$astNode = arg.astNode) === null || _arg$astNode === void 0 - ? void 0 - : _arg$astNode.type, - ], - ); - } - } - } -} - -function validateName(context, node) { - // Ensure names are valid, however introspection types opt out. - if (node.name.startsWith('__')) { - context.reportError( - `Name "${node.name}" must not begin with "__", which is reserved by GraphQL introspection.`, - node.astNode, - ); - } -} - -function validateTypes(context) { - const validateInputObjectCircularRefs = - createInputObjectCircularRefsValidator(context); - const typeMap = context.schema.getTypeMap(); - - for (const type of Object.values(typeMap)) { - // Ensure all provided types are in fact GraphQL type. - if (!isNamedType(type)) { - context.reportError( - `Expected GraphQL named type but got: ${inspect$1(type)}.`, - type.astNode, - ); - continue; - } // Ensure it is named correctly (excluding introspection types). - - if (!isIntrospectionType(type)) { - validateName(context, type); - } - - if (isObjectType(type)) { - // Ensure fields are valid - validateFields(context, type); // Ensure objects implement the interfaces they claim to. - - validateInterfaces(context, type); - } else if (isInterfaceType(type)) { - // Ensure fields are valid. - validateFields(context, type); // Ensure interfaces implement the interfaces they claim to. - - validateInterfaces(context, type); - } else if (isUnionType(type)) { - // Ensure Unions include valid member types. - validateUnionMembers(context, type); - } else if (isEnumType(type)) { - // Ensure Enums have valid values. - validateEnumValues(context, type); - } else if (isInputObjectType(type)) { - // Ensure Input Object fields are valid. - validateInputFields(context, type); // Ensure Input Objects do not contain non-nullable circular references - - validateInputObjectCircularRefs(type); - } - } -} - -function validateFields(context, type) { - const fields = Object.values(type.getFields()); // Objects and Interfaces both must define one or more fields. - - if (fields.length === 0) { - context.reportError(`Type ${type.name} must define one or more fields.`, [ - type.astNode, - ...type.extensionASTNodes, - ]); - } - - for (const field of fields) { - // Ensure they are named correctly. - validateName(context, field); // Ensure the type is an output type - - if (!isOutputType(field.type)) { - var _field$astNode; - - context.reportError( - `The type of ${type.name}.${field.name} must be Output Type ` + - `but got: ${inspect$1(field.type)}.`, - (_field$astNode = field.astNode) === null || _field$astNode === void 0 - ? void 0 - : _field$astNode.type, - ); - } // Ensure the arguments are valid - - for (const arg of field.args) { - const argName = arg.name; // Ensure they are named correctly. - - validateName(context, arg); // Ensure the type is an input type - - if (!isInputType(arg.type)) { - var _arg$astNode2; - - context.reportError( - `The type of ${type.name}.${field.name}(${argName}:) must be Input ` + - `Type but got: ${inspect$1(arg.type)}.`, - (_arg$astNode2 = arg.astNode) === null || _arg$astNode2 === void 0 - ? void 0 - : _arg$astNode2.type, - ); - } - - if (isRequiredArgument(arg) && arg.deprecationReason != null) { - var _arg$astNode3; - - context.reportError( - `Required argument ${type.name}.${field.name}(${argName}:) cannot be deprecated.`, - [ - getDeprecatedDirectiveNode(arg.astNode), - (_arg$astNode3 = arg.astNode) === null || _arg$astNode3 === void 0 - ? void 0 - : _arg$astNode3.type, - ], - ); - } - } - } -} - -function validateInterfaces(context, type) { - const ifaceTypeNames = Object.create(null); - - for (const iface of type.getInterfaces()) { - if (!isInterfaceType(iface)) { - context.reportError( - `Type ${inspect$1(type)} must only implement Interface types, ` + - `it cannot implement ${inspect$1(iface)}.`, - getAllImplementsInterfaceNodes(type, iface), - ); - continue; - } - - if (type === iface) { - context.reportError( - `Type ${type.name} cannot implement itself because it would create a circular reference.`, - getAllImplementsInterfaceNodes(type, iface), - ); - continue; - } - - if (ifaceTypeNames[iface.name]) { - context.reportError( - `Type ${type.name} can only implement ${iface.name} once.`, - getAllImplementsInterfaceNodes(type, iface), - ); - continue; - } - - ifaceTypeNames[iface.name] = true; - validateTypeImplementsAncestors(context, type, iface); - validateTypeImplementsInterface(context, type, iface); - } -} - -function validateTypeImplementsInterface(context, type, iface) { - const typeFieldMap = type.getFields(); // Assert each interface field is implemented. - - for (const ifaceField of Object.values(iface.getFields())) { - const fieldName = ifaceField.name; - const typeField = typeFieldMap[fieldName]; // Assert interface field exists on type. - - if (!typeField) { - context.reportError( - `Interface field ${iface.name}.${fieldName} expected but ${type.name} does not provide it.`, - [ifaceField.astNode, type.astNode, ...type.extensionASTNodes], - ); - continue; - } // Assert interface field type is satisfied by type field type, by being - // a valid subtype. (covariant) - - if (!isTypeSubTypeOf(context.schema, typeField.type, ifaceField.type)) { - var _ifaceField$astNode, _typeField$astNode; - - context.reportError( - `Interface field ${iface.name}.${fieldName} expects type ` + - `${inspect$1(ifaceField.type)} but ${type.name}.${fieldName} ` + - `is type ${inspect$1(typeField.type)}.`, - [ - (_ifaceField$astNode = ifaceField.astNode) === null || - _ifaceField$astNode === void 0 - ? void 0 - : _ifaceField$astNode.type, - (_typeField$astNode = typeField.astNode) === null || - _typeField$astNode === void 0 - ? void 0 - : _typeField$astNode.type, - ], - ); - } // Assert each interface field arg is implemented. - - for (const ifaceArg of ifaceField.args) { - const argName = ifaceArg.name; - const typeArg = typeField.args.find((arg) => arg.name === argName); // Assert interface field arg exists on object field. - - if (!typeArg) { - context.reportError( - `Interface field argument ${iface.name}.${fieldName}(${argName}:) expected but ${type.name}.${fieldName} does not provide it.`, - [ifaceArg.astNode, typeField.astNode], - ); - continue; - } // Assert interface field arg type matches object field arg type. - // (invariant) - // TODO: change to contravariant? - - if (!isEqualType(ifaceArg.type, typeArg.type)) { - var _ifaceArg$astNode, _typeArg$astNode; - - context.reportError( - `Interface field argument ${iface.name}.${fieldName}(${argName}:) ` + - `expects type ${inspect$1(ifaceArg.type)} but ` + - `${type.name}.${fieldName}(${argName}:) is type ` + - `${inspect$1(typeArg.type)}.`, - [ - (_ifaceArg$astNode = ifaceArg.astNode) === null || - _ifaceArg$astNode === void 0 - ? void 0 - : _ifaceArg$astNode.type, - (_typeArg$astNode = typeArg.astNode) === null || - _typeArg$astNode === void 0 - ? void 0 - : _typeArg$astNode.type, - ], - ); - } // TODO: validate default values? - } // Assert additional arguments must not be required. - - for (const typeArg of typeField.args) { - const argName = typeArg.name; - const ifaceArg = ifaceField.args.find((arg) => arg.name === argName); - - if (!ifaceArg && isRequiredArgument(typeArg)) { - context.reportError( - `Object field ${type.name}.${fieldName} includes required argument ${argName} that is missing from the Interface field ${iface.name}.${fieldName}.`, - [typeArg.astNode, ifaceField.astNode], - ); - } - } - } -} - -function validateTypeImplementsAncestors(context, type, iface) { - const ifaceInterfaces = type.getInterfaces(); - - for (const transitive of iface.getInterfaces()) { - if (!ifaceInterfaces.includes(transitive)) { - context.reportError( - transitive === type - ? `Type ${type.name} cannot implement ${iface.name} because it would create a circular reference.` - : `Type ${type.name} must implement ${transitive.name} because it is implemented by ${iface.name}.`, - [ - ...getAllImplementsInterfaceNodes(iface, transitive), - ...getAllImplementsInterfaceNodes(type, iface), - ], - ); - } - } -} - -function validateUnionMembers(context, union) { - const memberTypes = union.getTypes(); - - if (memberTypes.length === 0) { - context.reportError( - `Union type ${union.name} must define one or more member types.`, - [union.astNode, ...union.extensionASTNodes], - ); - } - - const includedTypeNames = Object.create(null); - - for (const memberType of memberTypes) { - if (includedTypeNames[memberType.name]) { - context.reportError( - `Union type ${union.name} can only include type ${memberType.name} once.`, - getUnionMemberTypeNodes(union, memberType.name), - ); - continue; - } - - includedTypeNames[memberType.name] = true; - - if (!isObjectType(memberType)) { - context.reportError( - `Union type ${union.name} can only include Object types, ` + - `it cannot include ${inspect$1(memberType)}.`, - getUnionMemberTypeNodes(union, String(memberType)), - ); - } - } -} - -function validateEnumValues(context, enumType) { - const enumValues = enumType.getValues(); - - if (enumValues.length === 0) { - context.reportError( - `Enum type ${enumType.name} must define one or more values.`, - [enumType.astNode, ...enumType.extensionASTNodes], - ); - } - - for (const enumValue of enumValues) { - // Ensure valid name. - validateName(context, enumValue); - } -} - -function validateInputFields(context, inputObj) { - const fields = Object.values(inputObj.getFields()); - - if (fields.length === 0) { - context.reportError( - `Input Object type ${inputObj.name} must define one or more fields.`, - [inputObj.astNode, ...inputObj.extensionASTNodes], - ); - } // Ensure the arguments are valid - - for (const field of fields) { - // Ensure they are named correctly. - validateName(context, field); // Ensure the type is an input type - - if (!isInputType(field.type)) { - var _field$astNode2; - - context.reportError( - `The type of ${inputObj.name}.${field.name} must be Input Type ` + - `but got: ${inspect$1(field.type)}.`, - (_field$astNode2 = field.astNode) === null || _field$astNode2 === void 0 - ? void 0 - : _field$astNode2.type, - ); - } - - if (isRequiredInputField(field) && field.deprecationReason != null) { - var _field$astNode3; - - context.reportError( - `Required input field ${inputObj.name}.${field.name} cannot be deprecated.`, - [ - getDeprecatedDirectiveNode(field.astNode), - (_field$astNode3 = field.astNode) === null || - _field$astNode3 === void 0 - ? void 0 - : _field$astNode3.type, - ], - ); - } - } -} - -function createInputObjectCircularRefsValidator(context) { - // Modified copy of algorithm from 'src/validation/rules/NoFragmentCycles.js'. - // Tracks already visited types to maintain O(N) and to ensure that cycles - // are not redundantly reported. - const visitedTypes = Object.create(null); // Array of types nodes used to produce meaningful errors - - const fieldPath = []; // Position in the type path - - const fieldPathIndexByTypeName = Object.create(null); - return detectCycleRecursive; // This does a straight-forward DFS to find cycles. - // It does not terminate when a cycle was found but continues to explore - // the graph to find all possible cycles. - - function detectCycleRecursive(inputObj) { - if (visitedTypes[inputObj.name]) { - return; - } - - visitedTypes[inputObj.name] = true; - fieldPathIndexByTypeName[inputObj.name] = fieldPath.length; - const fields = Object.values(inputObj.getFields()); - - for (const field of fields) { - if (isNonNullType(field.type) && isInputObjectType(field.type.ofType)) { - const fieldType = field.type.ofType; - const cycleIndex = fieldPathIndexByTypeName[fieldType.name]; - fieldPath.push(field); - - if (cycleIndex === undefined) { - detectCycleRecursive(fieldType); - } else { - const cyclePath = fieldPath.slice(cycleIndex); - const pathStr = cyclePath.map((fieldObj) => fieldObj.name).join('.'); - context.reportError( - `Cannot reference Input Object "${fieldType.name}" within itself through a series of non-null fields: "${pathStr}".`, - cyclePath.map((fieldObj) => fieldObj.astNode), - ); - } - - fieldPath.pop(); - } - } - - fieldPathIndexByTypeName[inputObj.name] = undefined; - } -} - -function getAllImplementsInterfaceNodes(type, iface) { - const { astNode, extensionASTNodes } = type; - const nodes = - astNode != null ? [astNode, ...extensionASTNodes] : extensionASTNodes; // FIXME: https://github.com/graphql/graphql-js/issues/2203 - - return nodes - .flatMap((typeNode) => { - var _typeNode$interfaces; - - return ( - /* c8 ignore next */ - (_typeNode$interfaces = typeNode.interfaces) !== null && - _typeNode$interfaces !== void 0 - ? _typeNode$interfaces - : [] - ); - }) - .filter((ifaceNode) => ifaceNode.name.value === iface.name); -} - -function getUnionMemberTypeNodes(union, typeName) { - const { astNode, extensionASTNodes } = union; - const nodes = - astNode != null ? [astNode, ...extensionASTNodes] : extensionASTNodes; // FIXME: https://github.com/graphql/graphql-js/issues/2203 - - return nodes - .flatMap((unionNode) => { - var _unionNode$types; - - return ( - /* c8 ignore next */ - (_unionNode$types = unionNode.types) !== null && - _unionNode$types !== void 0 - ? _unionNode$types - : [] - ); - }) - .filter((typeNode) => typeNode.name.value === typeName); -} - -function getDeprecatedDirectiveNode(definitionNode) { - var _definitionNode$direc; - - return definitionNode === null || definitionNode === void 0 - ? void 0 - : (_definitionNode$direc = definitionNode.directives) === null || - _definitionNode$direc === void 0 - ? void 0 - : _definitionNode$direc.find( - (node) => node.name.value === GraphQLDeprecatedDirective.name, - ); -} - -function typeFromAST(schema, typeNode) { - switch (typeNode.kind) { - case Kind.LIST_TYPE: { - const innerType = typeFromAST(schema, typeNode.type); - return innerType && new GraphQLList(innerType); - } - - case Kind.NON_NULL_TYPE: { - const innerType = typeFromAST(schema, typeNode.type); - return innerType && new GraphQLNonNull(innerType); - } - - case Kind.NAMED_TYPE: - return schema.getType(typeNode.name.value); - } -} - -/** - * TypeInfo is a utility class which, given a GraphQL schema, can keep track - * of the current field and type definitions at any point in a GraphQL document - * AST during a recursive descent by calling `enter(node)` and `leave(node)`. - */ - -class TypeInfo { - constructor( - schema, - /** - * Initial type may be provided in rare cases to facilitate traversals - * beginning somewhere other than documents. - */ - initialType, - /** @deprecated will be removed in 17.0.0 */ - getFieldDefFn, - ) { - this._schema = schema; - this._typeStack = []; - this._parentTypeStack = []; - this._inputTypeStack = []; - this._fieldDefStack = []; - this._defaultValueStack = []; - this._directive = null; - this._argument = null; - this._enumValue = null; - this._getFieldDef = - getFieldDefFn !== null && getFieldDefFn !== void 0 - ? getFieldDefFn - : getFieldDef$1; - - if (initialType) { - if (isInputType(initialType)) { - this._inputTypeStack.push(initialType); - } - - if (isCompositeType(initialType)) { - this._parentTypeStack.push(initialType); - } - - if (isOutputType(initialType)) { - this._typeStack.push(initialType); - } - } - } - - get [Symbol.toStringTag]() { - return 'TypeInfo'; - } - - getType() { - if (this._typeStack.length > 0) { - return this._typeStack[this._typeStack.length - 1]; - } - } - - getParentType() { - if (this._parentTypeStack.length > 0) { - return this._parentTypeStack[this._parentTypeStack.length - 1]; - } - } - - getInputType() { - if (this._inputTypeStack.length > 0) { - return this._inputTypeStack[this._inputTypeStack.length - 1]; - } - } - - getParentInputType() { - if (this._inputTypeStack.length > 1) { - return this._inputTypeStack[this._inputTypeStack.length - 2]; - } - } - - getFieldDef() { - if (this._fieldDefStack.length > 0) { - return this._fieldDefStack[this._fieldDefStack.length - 1]; - } - } - - getDefaultValue() { - if (this._defaultValueStack.length > 0) { - return this._defaultValueStack[this._defaultValueStack.length - 1]; - } - } - - getDirective() { - return this._directive; - } - - getArgument() { - return this._argument; - } - - getEnumValue() { - return this._enumValue; - } - - enter(node) { - const schema = this._schema; // Note: many of the types below are explicitly typed as "unknown" to drop - // any assumptions of a valid schema to ensure runtime types are properly - // checked before continuing since TypeInfo is used as part of validation - // which occurs before guarantees of schema and document validity. - - switch (node.kind) { - case Kind.SELECTION_SET: { - const namedType = getNamedType(this.getType()); - - this._parentTypeStack.push( - isCompositeType(namedType) ? namedType : undefined, - ); - - break; - } - - case Kind.FIELD: { - const parentType = this.getParentType(); - let fieldDef; - let fieldType; - - if (parentType) { - fieldDef = this._getFieldDef(schema, parentType, node); - - if (fieldDef) { - fieldType = fieldDef.type; - } - } - - this._fieldDefStack.push(fieldDef); - - this._typeStack.push(isOutputType(fieldType) ? fieldType : undefined); - - break; - } - - case Kind.DIRECTIVE: - this._directive = schema.getDirective(node.name.value); - break; - - case Kind.OPERATION_DEFINITION: { - const rootType = schema.getRootType(node.operation); - - this._typeStack.push(isObjectType(rootType) ? rootType : undefined); - - break; - } - - case Kind.INLINE_FRAGMENT: - case Kind.FRAGMENT_DEFINITION: { - const typeConditionAST = node.typeCondition; - const outputType = typeConditionAST - ? typeFromAST(schema, typeConditionAST) - : getNamedType(this.getType()); - - this._typeStack.push(isOutputType(outputType) ? outputType : undefined); - - break; - } - - case Kind.VARIABLE_DEFINITION: { - const inputType = typeFromAST(schema, node.type); - - this._inputTypeStack.push( - isInputType(inputType) ? inputType : undefined, - ); - - break; - } - - case Kind.ARGUMENT: { - var _this$getDirective; - - let argDef; - let argType; - const fieldOrDirective = - (_this$getDirective = this.getDirective()) !== null && - _this$getDirective !== void 0 - ? _this$getDirective - : this.getFieldDef(); - - if (fieldOrDirective) { - argDef = fieldOrDirective.args.find( - (arg) => arg.name === node.name.value, - ); - - if (argDef) { - argType = argDef.type; - } - } - - this._argument = argDef; - - this._defaultValueStack.push(argDef ? argDef.defaultValue : undefined); - - this._inputTypeStack.push(isInputType(argType) ? argType : undefined); - - break; - } - - case Kind.LIST: { - const listType = getNullableType(this.getInputType()); - const itemType = isListType(listType) ? listType.ofType : listType; // List positions never have a default value. - - this._defaultValueStack.push(undefined); - - this._inputTypeStack.push(isInputType(itemType) ? itemType : undefined); - - break; - } - - case Kind.OBJECT_FIELD: { - const objectType = getNamedType(this.getInputType()); - let inputFieldType; - let inputField; - - if (isInputObjectType(objectType)) { - inputField = objectType.getFields()[node.name.value]; - - if (inputField) { - inputFieldType = inputField.type; - } - } - - this._defaultValueStack.push( - inputField ? inputField.defaultValue : undefined, - ); - - this._inputTypeStack.push( - isInputType(inputFieldType) ? inputFieldType : undefined, - ); - - break; - } - - case Kind.ENUM: { - const enumType = getNamedType(this.getInputType()); - let enumValue; - - if (isEnumType(enumType)) { - enumValue = enumType.getValue(node.value); - } - - this._enumValue = enumValue; - break; - } - } - } - - leave(node) { - switch (node.kind) { - case Kind.SELECTION_SET: - this._parentTypeStack.pop(); - - break; - - case Kind.FIELD: - this._fieldDefStack.pop(); - - this._typeStack.pop(); - - break; - - case Kind.DIRECTIVE: - this._directive = null; - break; - - case Kind.OPERATION_DEFINITION: - case Kind.INLINE_FRAGMENT: - case Kind.FRAGMENT_DEFINITION: - this._typeStack.pop(); - - break; - - case Kind.VARIABLE_DEFINITION: - this._inputTypeStack.pop(); - - break; - - case Kind.ARGUMENT: - this._argument = null; - - this._defaultValueStack.pop(); - - this._inputTypeStack.pop(); - - break; - - case Kind.LIST: - case Kind.OBJECT_FIELD: - this._defaultValueStack.pop(); - - this._inputTypeStack.pop(); - - break; - - case Kind.ENUM: - this._enumValue = null; - break; - } - } -} - -/** - * Not exactly the same as the executor's definition of getFieldDef, in this - * statically evaluated environment we do not always have an Object type, - * and need to handle Interface and Union types. - */ -function getFieldDef$1(schema, parentType, fieldNode) { - const name = fieldNode.name.value; - - if ( - name === SchemaMetaFieldDef.name && - schema.getQueryType() === parentType - ) { - return SchemaMetaFieldDef; - } - - if (name === TypeMetaFieldDef.name && schema.getQueryType() === parentType) { - return TypeMetaFieldDef; - } - - if (name === TypeNameMetaFieldDef.name && isCompositeType(parentType)) { - return TypeNameMetaFieldDef; - } - - if (isObjectType(parentType) || isInterfaceType(parentType)) { - return parentType.getFields()[name]; - } -} -/** - * Creates a new visitor instance which maintains a provided TypeInfo instance - * along with visiting visitor. - */ - -function visitWithTypeInfo(typeInfo, visitor) { - return { - enter(...args) { - const node = args[0]; - typeInfo.enter(node); - const fn = getEnterLeaveForKind(visitor, node.kind).enter; - - if (fn) { - const result = fn.apply(visitor, args); - - if (result !== undefined) { - typeInfo.leave(node); - - if (isNode(result)) { - typeInfo.enter(result); - } - } - - return result; - } - }, - - leave(...args) { - const node = args[0]; - const fn = getEnterLeaveForKind(visitor, node.kind).leave; - let result; - - if (fn) { - result = fn.apply(visitor, args); - } - - typeInfo.leave(node); - return result; - }, - }; -} - -function isDefinitionNode(node) { - return ( - isExecutableDefinitionNode(node) || - isTypeSystemDefinitionNode(node) || - isTypeSystemExtensionNode(node) - ); -} -function isExecutableDefinitionNode(node) { - return ( - node.kind === Kind.OPERATION_DEFINITION || - node.kind === Kind.FRAGMENT_DEFINITION - ); -} -function isTypeSystemDefinitionNode(node) { - return ( - node.kind === Kind.SCHEMA_DEFINITION || - isTypeDefinitionNode(node) || - node.kind === Kind.DIRECTIVE_DEFINITION - ); -} -function isTypeDefinitionNode(node) { - return ( - node.kind === Kind.SCALAR_TYPE_DEFINITION || - node.kind === Kind.OBJECT_TYPE_DEFINITION || - node.kind === Kind.INTERFACE_TYPE_DEFINITION || - node.kind === Kind.UNION_TYPE_DEFINITION || - node.kind === Kind.ENUM_TYPE_DEFINITION || - node.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION - ); -} -function isTypeSystemExtensionNode(node) { - return node.kind === Kind.SCHEMA_EXTENSION || isTypeExtensionNode(node); -} -function isTypeExtensionNode(node) { - return ( - node.kind === Kind.SCALAR_TYPE_EXTENSION || - node.kind === Kind.OBJECT_TYPE_EXTENSION || - node.kind === Kind.INTERFACE_TYPE_EXTENSION || - node.kind === Kind.UNION_TYPE_EXTENSION || - node.kind === Kind.ENUM_TYPE_EXTENSION || - node.kind === Kind.INPUT_OBJECT_TYPE_EXTENSION - ); -} - -/** - * Executable definitions - * - * A GraphQL document is only valid for execution if all definitions are either - * operation or fragment definitions. - * - * See https://spec.graphql.org/draft/#sec-Executable-Definitions - */ -function ExecutableDefinitionsRule(context) { - return { - Document(node) { - for (const definition of node.definitions) { - if (!isExecutableDefinitionNode(definition)) { - const defName = - definition.kind === Kind.SCHEMA_DEFINITION || - definition.kind === Kind.SCHEMA_EXTENSION - ? 'schema' - : '"' + definition.name.value + '"'; - context.reportError( - new GraphQLError(`The ${defName} definition is not executable.`, { - nodes: definition, - }), - ); - } - } - - return false; - }, - }; -} - -/** - * Fields on correct type - * - * A GraphQL document is only valid if all fields selected are defined by the - * parent type, or are an allowed meta field such as __typename. - * - * See https://spec.graphql.org/draft/#sec-Field-Selections - */ -function FieldsOnCorrectTypeRule(context) { - return { - Field(node) { - const type = context.getParentType(); - - if (type) { - const fieldDef = context.getFieldDef(); - - if (!fieldDef) { - // This field doesn't exist, lets look for suggestions. - const schema = context.getSchema(); - const fieldName = node.name.value; // First determine if there are any suggested types to condition on. - - let suggestion = didYouMean( - 'to use an inline fragment on', - getSuggestedTypeNames(schema, type, fieldName), - ); // If there are no suggested types, then perhaps this was a typo? - - if (suggestion === '') { - suggestion = didYouMean(getSuggestedFieldNames(type, fieldName)); - } // Report an error, including helpful suggestions. - - context.reportError( - new GraphQLError( - `Cannot query field "${fieldName}" on type "${type.name}".` + - suggestion, - { - nodes: node, - }, - ), - ); - } - } - }, - }; -} -/** - * Go through all of the implementations of type, as well as the interfaces that - * they implement. If any of those types include the provided field, suggest them, - * sorted by how often the type is referenced. - */ - -function getSuggestedTypeNames(schema, type, fieldName) { - if (!isAbstractType(type)) { - // Must be an Object type, which does not have possible fields. - return []; - } - - const suggestedTypes = new Set(); - const usageCount = Object.create(null); - - for (const possibleType of schema.getPossibleTypes(type)) { - if (!possibleType.getFields()[fieldName]) { - continue; - } // This object type defines this field. - - suggestedTypes.add(possibleType); - usageCount[possibleType.name] = 1; - - for (const possibleInterface of possibleType.getInterfaces()) { - var _usageCount$possibleI; - - if (!possibleInterface.getFields()[fieldName]) { - continue; - } // This interface type defines this field. - - suggestedTypes.add(possibleInterface); - usageCount[possibleInterface.name] = - ((_usageCount$possibleI = usageCount[possibleInterface.name]) !== - null && _usageCount$possibleI !== void 0 - ? _usageCount$possibleI - : 0) + 1; - } - } - - return [...suggestedTypes] - .sort((typeA, typeB) => { - // Suggest both interface and object types based on how common they are. - const usageCountDiff = usageCount[typeB.name] - usageCount[typeA.name]; - - if (usageCountDiff !== 0) { - return usageCountDiff; - } // Suggest super types first followed by subtypes - - if (isInterfaceType(typeA) && schema.isSubType(typeA, typeB)) { - return -1; - } - - if (isInterfaceType(typeB) && schema.isSubType(typeB, typeA)) { - return 1; - } - - return naturalCompare(typeA.name, typeB.name); - }) - .map((x) => x.name); -} -/** - * For the field name provided, determine if there are any similar field names - * that may be the result of a typo. - */ - -function getSuggestedFieldNames(type, fieldName) { - if (isObjectType(type) || isInterfaceType(type)) { - const possibleFieldNames = Object.keys(type.getFields()); - return suggestionList(fieldName, possibleFieldNames); - } // Otherwise, must be a Union type, which does not define fields. - - return []; -} - -/** - * Fragments on composite type - * - * Fragments use a type condition to determine if they apply, since fragments - * can only be spread into a composite type (object, interface, or union), the - * type condition must also be a composite type. - * - * See https://spec.graphql.org/draft/#sec-Fragments-On-Composite-Types - */ -function FragmentsOnCompositeTypesRule(context) { - return { - InlineFragment(node) { - const typeCondition = node.typeCondition; - - if (typeCondition) { - const type = typeFromAST(context.getSchema(), typeCondition); - - if (type && !isCompositeType(type)) { - const typeStr = print(typeCondition); - context.reportError( - new GraphQLError( - `Fragment cannot condition on non composite type "${typeStr}".`, - { - nodes: typeCondition, - }, - ), - ); - } - } - }, - - FragmentDefinition(node) { - const type = typeFromAST(context.getSchema(), node.typeCondition); - - if (type && !isCompositeType(type)) { - const typeStr = print(node.typeCondition); - context.reportError( - new GraphQLError( - `Fragment "${node.name.value}" cannot condition on non composite type "${typeStr}".`, - { - nodes: node.typeCondition, - }, - ), - ); - } - }, - }; -} - -/** - * Known argument names - * - * A GraphQL field is only valid if all supplied arguments are defined by - * that field. - * - * See https://spec.graphql.org/draft/#sec-Argument-Names - * See https://spec.graphql.org/draft/#sec-Directives-Are-In-Valid-Locations - */ -function KnownArgumentNamesRule(context) { - return { - // eslint-disable-next-line new-cap - ...KnownArgumentNamesOnDirectivesRule(context), - - Argument(argNode) { - const argDef = context.getArgument(); - const fieldDef = context.getFieldDef(); - const parentType = context.getParentType(); - - if (!argDef && fieldDef && parentType) { - const argName = argNode.name.value; - const knownArgsNames = fieldDef.args.map((arg) => arg.name); - const suggestions = suggestionList(argName, knownArgsNames); - context.reportError( - new GraphQLError( - `Unknown argument "${argName}" on field "${parentType.name}.${fieldDef.name}".` + - didYouMean(suggestions), - { - nodes: argNode, - }, - ), - ); - } - }, - }; -} -/** - * @internal - */ - -function KnownArgumentNamesOnDirectivesRule(context) { - const directiveArgs = Object.create(null); - const schema = context.getSchema(); - const definedDirectives = schema - ? schema.getDirectives() - : specifiedDirectives; - - for (const directive of definedDirectives) { - directiveArgs[directive.name] = directive.args.map((arg) => arg.name); - } - - const astDefinitions = context.getDocument().definitions; - - for (const def of astDefinitions) { - if (def.kind === Kind.DIRECTIVE_DEFINITION) { - var _def$arguments; - - // FIXME: https://github.com/graphql/graphql-js/issues/2203 - - /* c8 ignore next */ - const argsNodes = - (_def$arguments = def.arguments) !== null && _def$arguments !== void 0 - ? _def$arguments - : []; - directiveArgs[def.name.value] = argsNodes.map((arg) => arg.name.value); - } - } - - return { - Directive(directiveNode) { - const directiveName = directiveNode.name.value; - const knownArgs = directiveArgs[directiveName]; - - if (directiveNode.arguments && knownArgs) { - for (const argNode of directiveNode.arguments) { - const argName = argNode.name.value; - - if (!knownArgs.includes(argName)) { - const suggestions = suggestionList(argName, knownArgs); - context.reportError( - new GraphQLError( - `Unknown argument "${argName}" on directive "@${directiveName}".` + - didYouMean(suggestions), - { - nodes: argNode, - }, - ), - ); - } - } - } - - return false; - }, - }; -} - -/** - * Known directives - * - * A GraphQL document is only valid if all `@directives` are known by the - * schema and legally positioned. - * - * See https://spec.graphql.org/draft/#sec-Directives-Are-Defined - */ -function KnownDirectivesRule(context) { - const locationsMap = Object.create(null); - const schema = context.getSchema(); - const definedDirectives = schema - ? schema.getDirectives() - : specifiedDirectives; - - for (const directive of definedDirectives) { - locationsMap[directive.name] = directive.locations; - } - - const astDefinitions = context.getDocument().definitions; - - for (const def of astDefinitions) { - if (def.kind === Kind.DIRECTIVE_DEFINITION) { - locationsMap[def.name.value] = def.locations.map((name) => name.value); - } - } - - return { - Directive(node, _key, _parent, _path, ancestors) { - const name = node.name.value; - const locations = locationsMap[name]; - - if (!locations) { - context.reportError( - new GraphQLError(`Unknown directive "@${name}".`, { - nodes: node, - }), - ); - return; - } - - const candidateLocation = getDirectiveLocationForASTPath(ancestors); - - if (candidateLocation && !locations.includes(candidateLocation)) { - context.reportError( - new GraphQLError( - `Directive "@${name}" may not be used on ${candidateLocation}.`, - { - nodes: node, - }, - ), - ); - } - }, - }; -} - -function getDirectiveLocationForASTPath(ancestors) { - const appliedTo = ancestors[ancestors.length - 1]; - 'kind' in appliedTo || invariant$1(false); - - switch (appliedTo.kind) { - case Kind.OPERATION_DEFINITION: - return getDirectiveLocationForOperation(appliedTo.operation); - - case Kind.FIELD: - return DirectiveLocation$1.FIELD; - - case Kind.FRAGMENT_SPREAD: - return DirectiveLocation$1.FRAGMENT_SPREAD; - - case Kind.INLINE_FRAGMENT: - return DirectiveLocation$1.INLINE_FRAGMENT; - - case Kind.FRAGMENT_DEFINITION: - return DirectiveLocation$1.FRAGMENT_DEFINITION; - - case Kind.VARIABLE_DEFINITION: - return DirectiveLocation$1.VARIABLE_DEFINITION; - - case Kind.SCHEMA_DEFINITION: - case Kind.SCHEMA_EXTENSION: - return DirectiveLocation$1.SCHEMA; - - case Kind.SCALAR_TYPE_DEFINITION: - case Kind.SCALAR_TYPE_EXTENSION: - return DirectiveLocation$1.SCALAR; - - case Kind.OBJECT_TYPE_DEFINITION: - case Kind.OBJECT_TYPE_EXTENSION: - return DirectiveLocation$1.OBJECT; - - case Kind.FIELD_DEFINITION: - return DirectiveLocation$1.FIELD_DEFINITION; - - case Kind.INTERFACE_TYPE_DEFINITION: - case Kind.INTERFACE_TYPE_EXTENSION: - return DirectiveLocation$1.INTERFACE; - - case Kind.UNION_TYPE_DEFINITION: - case Kind.UNION_TYPE_EXTENSION: - return DirectiveLocation$1.UNION; - - case Kind.ENUM_TYPE_DEFINITION: - case Kind.ENUM_TYPE_EXTENSION: - return DirectiveLocation$1.ENUM; - - case Kind.ENUM_VALUE_DEFINITION: - return DirectiveLocation$1.ENUM_VALUE; - - case Kind.INPUT_OBJECT_TYPE_DEFINITION: - case Kind.INPUT_OBJECT_TYPE_EXTENSION: - return DirectiveLocation$1.INPUT_OBJECT; - - case Kind.INPUT_VALUE_DEFINITION: { - const parentNode = ancestors[ancestors.length - 3]; - 'kind' in parentNode || invariant$1(false); - return parentNode.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION - ? DirectiveLocation$1.INPUT_FIELD_DEFINITION - : DirectiveLocation$1.ARGUMENT_DEFINITION; - } - // Not reachable, all possible types have been considered. - - /* c8 ignore next */ - - default: - invariant$1(false, 'Unexpected kind: ' + inspect$1(appliedTo.kind)); - } -} - -function getDirectiveLocationForOperation(operation) { - switch (operation) { - case OperationTypeNode.QUERY: - return DirectiveLocation$1.QUERY; - - case OperationTypeNode.MUTATION: - return DirectiveLocation$1.MUTATION; - - case OperationTypeNode.SUBSCRIPTION: - return DirectiveLocation$1.SUBSCRIPTION; - } -} - -/** - * Known fragment names - * - * A GraphQL document is only valid if all `...Fragment` fragment spreads refer - * to fragments defined in the same document. - * - * See https://spec.graphql.org/draft/#sec-Fragment-spread-target-defined - */ -function KnownFragmentNamesRule(context) { - return { - FragmentSpread(node) { - const fragmentName = node.name.value; - const fragment = context.getFragment(fragmentName); - - if (!fragment) { - context.reportError( - new GraphQLError(`Unknown fragment "${fragmentName}".`, { - nodes: node.name, - }), - ); - } - }, - }; -} - -/** - * Known type names - * - * A GraphQL document is only valid if referenced types (specifically - * variable definitions and fragment conditions) are defined by the type schema. - * - * See https://spec.graphql.org/draft/#sec-Fragment-Spread-Type-Existence - */ -function KnownTypeNamesRule(context) { - const schema = context.getSchema(); - const existingTypesMap = schema ? schema.getTypeMap() : Object.create(null); - const definedTypes = Object.create(null); - - for (const def of context.getDocument().definitions) { - if (isTypeDefinitionNode(def)) { - definedTypes[def.name.value] = true; - } - } - - const typeNames = [ - ...Object.keys(existingTypesMap), - ...Object.keys(definedTypes), - ]; - return { - NamedType(node, _1, parent, _2, ancestors) { - const typeName = node.name.value; - - if (!existingTypesMap[typeName] && !definedTypes[typeName]) { - var _ancestors$; - - const definitionNode = - (_ancestors$ = ancestors[2]) !== null && _ancestors$ !== void 0 - ? _ancestors$ - : parent; - const isSDL = definitionNode != null && isSDLNode(definitionNode); - - if (isSDL && standardTypeNames.includes(typeName)) { - return; - } - - const suggestedTypes = suggestionList( - typeName, - isSDL ? standardTypeNames.concat(typeNames) : typeNames, - ); - context.reportError( - new GraphQLError( - `Unknown type "${typeName}".` + didYouMean(suggestedTypes), - { - nodes: node, - }, - ), - ); - } - }, - }; -} -const standardTypeNames = [...specifiedScalarTypes, ...introspectionTypes].map( - (type) => type.name, -); - -function isSDLNode(value) { - return ( - 'kind' in value && - (isTypeSystemDefinitionNode(value) || isTypeSystemExtensionNode(value)) - ); -} - -/** - * Lone anonymous operation - * - * A GraphQL document is only valid if when it contains an anonymous operation - * (the query short-hand) that it contains only that one operation definition. - * - * See https://spec.graphql.org/draft/#sec-Lone-Anonymous-Operation - */ -function LoneAnonymousOperationRule(context) { - let operationCount = 0; - return { - Document(node) { - operationCount = node.definitions.filter( - (definition) => definition.kind === Kind.OPERATION_DEFINITION, - ).length; - }, - - OperationDefinition(node) { - if (!node.name && operationCount > 1) { - context.reportError( - new GraphQLError( - 'This anonymous operation must be the only defined operation.', - { - nodes: node, - }, - ), - ); - } - }, - }; -} - -/** - * Lone Schema definition - * - * A GraphQL document is only valid if it contains only one schema definition. - */ -function LoneSchemaDefinitionRule(context) { - var _ref, _ref2, _oldSchema$astNode; - - const oldSchema = context.getSchema(); - const alreadyDefined = - (_ref = - (_ref2 = - (_oldSchema$astNode = - oldSchema === null || oldSchema === void 0 - ? void 0 - : oldSchema.astNode) !== null && _oldSchema$astNode !== void 0 - ? _oldSchema$astNode - : oldSchema === null || oldSchema === void 0 - ? void 0 - : oldSchema.getQueryType()) !== null && _ref2 !== void 0 - ? _ref2 - : oldSchema === null || oldSchema === void 0 - ? void 0 - : oldSchema.getMutationType()) !== null && _ref !== void 0 - ? _ref - : oldSchema === null || oldSchema === void 0 - ? void 0 - : oldSchema.getSubscriptionType(); - let schemaDefinitionsCount = 0; - return { - SchemaDefinition(node) { - if (alreadyDefined) { - context.reportError( - new GraphQLError( - 'Cannot define a new schema within a schema extension.', - { - nodes: node, - }, - ), - ); - return; - } - - if (schemaDefinitionsCount > 0) { - context.reportError( - new GraphQLError('Must provide only one schema definition.', { - nodes: node, - }), - ); - } - - ++schemaDefinitionsCount; - }, - }; -} - -/** - * No fragment cycles - * - * The graph of fragment spreads must not form any cycles including spreading itself. - * Otherwise an operation could infinitely spread or infinitely execute on cycles in the underlying data. - * - * See https://spec.graphql.org/draft/#sec-Fragment-spreads-must-not-form-cycles - */ -function NoFragmentCyclesRule(context) { - // Tracks already visited fragments to maintain O(N) and to ensure that cycles - // are not redundantly reported. - const visitedFrags = Object.create(null); // Array of AST nodes used to produce meaningful errors - - const spreadPath = []; // Position in the spread path - - const spreadPathIndexByName = Object.create(null); - return { - OperationDefinition: () => false, - - FragmentDefinition(node) { - detectCycleRecursive(node); - return false; - }, - }; // This does a straight-forward DFS to find cycles. - // It does not terminate when a cycle was found but continues to explore - // the graph to find all possible cycles. - - function detectCycleRecursive(fragment) { - if (visitedFrags[fragment.name.value]) { - return; - } - - const fragmentName = fragment.name.value; - visitedFrags[fragmentName] = true; - const spreadNodes = context.getFragmentSpreads(fragment.selectionSet); - - if (spreadNodes.length === 0) { - return; - } - - spreadPathIndexByName[fragmentName] = spreadPath.length; - - for (const spreadNode of spreadNodes) { - const spreadName = spreadNode.name.value; - const cycleIndex = spreadPathIndexByName[spreadName]; - spreadPath.push(spreadNode); - - if (cycleIndex === undefined) { - const spreadFragment = context.getFragment(spreadName); - - if (spreadFragment) { - detectCycleRecursive(spreadFragment); - } - } else { - const cyclePath = spreadPath.slice(cycleIndex); - const viaPath = cyclePath - .slice(0, -1) - .map((s) => '"' + s.name.value + '"') - .join(', '); - context.reportError( - new GraphQLError( - `Cannot spread fragment "${spreadName}" within itself` + - (viaPath !== '' ? ` via ${viaPath}.` : '.'), - { - nodes: cyclePath, - }, - ), - ); - } - - spreadPath.pop(); - } - - spreadPathIndexByName[fragmentName] = undefined; - } -} - -/** - * No undefined variables - * - * A GraphQL operation is only valid if all variables encountered, both directly - * and via fragment spreads, are defined by that operation. - * - * See https://spec.graphql.org/draft/#sec-All-Variable-Uses-Defined - */ -function NoUndefinedVariablesRule(context) { - let variableNameDefined = Object.create(null); - return { - OperationDefinition: { - enter() { - variableNameDefined = Object.create(null); - }, - - leave(operation) { - const usages = context.getRecursiveVariableUsages(operation); - - for (const { node } of usages) { - const varName = node.name.value; - - if (variableNameDefined[varName] !== true) { - context.reportError( - new GraphQLError( - operation.name - ? `Variable "$${varName}" is not defined by operation "${operation.name.value}".` - : `Variable "$${varName}" is not defined.`, - { - nodes: [node, operation], - }, - ), - ); - } - } - }, - }, - - VariableDefinition(node) { - variableNameDefined[node.variable.name.value] = true; - }, - }; -} - -/** - * No unused fragments - * - * A GraphQL document is only valid if all fragment definitions are spread - * within operations, or spread within other fragments spread within operations. - * - * See https://spec.graphql.org/draft/#sec-Fragments-Must-Be-Used - */ -function NoUnusedFragmentsRule(context) { - const operationDefs = []; - const fragmentDefs = []; - return { - OperationDefinition(node) { - operationDefs.push(node); - return false; - }, - - FragmentDefinition(node) { - fragmentDefs.push(node); - return false; - }, - - Document: { - leave() { - const fragmentNameUsed = Object.create(null); - - for (const operation of operationDefs) { - for (const fragment of context.getRecursivelyReferencedFragments( - operation, - )) { - fragmentNameUsed[fragment.name.value] = true; - } - } - - for (const fragmentDef of fragmentDefs) { - const fragName = fragmentDef.name.value; - - if (fragmentNameUsed[fragName] !== true) { - context.reportError( - new GraphQLError(`Fragment "${fragName}" is never used.`, { - nodes: fragmentDef, - }), - ); - } - } - }, - }, - }; -} - -/** - * No unused variables - * - * A GraphQL operation is only valid if all variables defined by an operation - * are used, either directly or within a spread fragment. - * - * See https://spec.graphql.org/draft/#sec-All-Variables-Used - */ -function NoUnusedVariablesRule(context) { - let variableDefs = []; - return { - OperationDefinition: { - enter() { - variableDefs = []; - }, - - leave(operation) { - const variableNameUsed = Object.create(null); - const usages = context.getRecursiveVariableUsages(operation); - - for (const { node } of usages) { - variableNameUsed[node.name.value] = true; - } - - for (const variableDef of variableDefs) { - const variableName = variableDef.variable.name.value; - - if (variableNameUsed[variableName] !== true) { - context.reportError( - new GraphQLError( - operation.name - ? `Variable "$${variableName}" is never used in operation "${operation.name.value}".` - : `Variable "$${variableName}" is never used.`, - { - nodes: variableDef, - }, - ), - ); - } - } - }, - }, - - VariableDefinition(def) { - variableDefs.push(def); - }, - }; -} - -/** - * Sort ValueNode. - * - * This function returns a sorted copy of the given ValueNode. - * - * @internal - */ - -function sortValueNode(valueNode) { - switch (valueNode.kind) { - case Kind.OBJECT: - return { ...valueNode, fields: sortFields(valueNode.fields) }; - - case Kind.LIST: - return { ...valueNode, values: valueNode.values.map(sortValueNode) }; - - case Kind.INT: - case Kind.FLOAT: - case Kind.STRING: - case Kind.BOOLEAN: - case Kind.NULL: - case Kind.ENUM: - case Kind.VARIABLE: - return valueNode; - } -} - -function sortFields(fields) { - return fields - .map((fieldNode) => ({ - ...fieldNode, - value: sortValueNode(fieldNode.value), - })) - .sort((fieldA, fieldB) => - naturalCompare(fieldA.name.value, fieldB.name.value), - ); -} - -function reasonMessage(reason) { - if (Array.isArray(reason)) { - return reason - .map( - ([responseName, subReason]) => - `subfields "${responseName}" conflict because ` + - reasonMessage(subReason), - ) - .join(' and '); - } - - return reason; -} -/** - * Overlapping fields can be merged - * - * A selection set is only valid if all fields (including spreading any - * fragments) either correspond to distinct response names or can be merged - * without ambiguity. - * - * See https://spec.graphql.org/draft/#sec-Field-Selection-Merging - */ - -function OverlappingFieldsCanBeMergedRule(context) { - // A memoization for when two fragments are compared "between" each other for - // conflicts. Two fragments may be compared many times, so memoizing this can - // dramatically improve the performance of this validator. - const comparedFragmentPairs = new PairSet(); // A cache for the "field map" and list of fragment names found in any given - // selection set. Selection sets may be asked for this information multiple - // times, so this improves the performance of this validator. - - const cachedFieldsAndFragmentNames = new Map(); - return { - SelectionSet(selectionSet) { - const conflicts = findConflictsWithinSelectionSet( - context, - cachedFieldsAndFragmentNames, - comparedFragmentPairs, - context.getParentType(), - selectionSet, - ); - - for (const [[responseName, reason], fields1, fields2] of conflicts) { - const reasonMsg = reasonMessage(reason); - context.reportError( - new GraphQLError( - `Fields "${responseName}" conflict because ${reasonMsg}. Use different aliases on the fields to fetch both if this was intentional.`, - { - nodes: fields1.concat(fields2), - }, - ), - ); - } - }, - }; -} - -/** - * Algorithm: - * - * Conflicts occur when two fields exist in a query which will produce the same - * response name, but represent differing values, thus creating a conflict. - * The algorithm below finds all conflicts via making a series of comparisons - * between fields. In order to compare as few fields as possible, this makes - * a series of comparisons "within" sets of fields and "between" sets of fields. - * - * Given any selection set, a collection produces both a set of fields by - * also including all inline fragments, as well as a list of fragments - * referenced by fragment spreads. - * - * A) Each selection set represented in the document first compares "within" its - * collected set of fields, finding any conflicts between every pair of - * overlapping fields. - * Note: This is the *only time* that a the fields "within" a set are compared - * to each other. After this only fields "between" sets are compared. - * - * B) Also, if any fragment is referenced in a selection set, then a - * comparison is made "between" the original set of fields and the - * referenced fragment. - * - * C) Also, if multiple fragments are referenced, then comparisons - * are made "between" each referenced fragment. - * - * D) When comparing "between" a set of fields and a referenced fragment, first - * a comparison is made between each field in the original set of fields and - * each field in the the referenced set of fields. - * - * E) Also, if any fragment is referenced in the referenced selection set, - * then a comparison is made "between" the original set of fields and the - * referenced fragment (recursively referring to step D). - * - * F) When comparing "between" two fragments, first a comparison is made between - * each field in the first referenced set of fields and each field in the the - * second referenced set of fields. - * - * G) Also, any fragments referenced by the first must be compared to the - * second, and any fragments referenced by the second must be compared to the - * first (recursively referring to step F). - * - * H) When comparing two fields, if both have selection sets, then a comparison - * is made "between" both selection sets, first comparing the set of fields in - * the first selection set with the set of fields in the second. - * - * I) Also, if any fragment is referenced in either selection set, then a - * comparison is made "between" the other set of fields and the - * referenced fragment. - * - * J) Also, if two fragments are referenced in both selection sets, then a - * comparison is made "between" the two fragments. - * - */ -// Find all conflicts found "within" a selection set, including those found -// via spreading in fragments. Called when visiting each SelectionSet in the -// GraphQL Document. -function findConflictsWithinSelectionSet( - context, - cachedFieldsAndFragmentNames, - comparedFragmentPairs, - parentType, - selectionSet, -) { - const conflicts = []; - const [fieldMap, fragmentNames] = getFieldsAndFragmentNames( - context, - cachedFieldsAndFragmentNames, - parentType, - selectionSet, - ); // (A) Find find all conflicts "within" the fields of this selection set. - // Note: this is the *only place* `collectConflictsWithin` is called. - - collectConflictsWithin( - context, - conflicts, - cachedFieldsAndFragmentNames, - comparedFragmentPairs, - fieldMap, - ); - - if (fragmentNames.length !== 0) { - // (B) Then collect conflicts between these fields and those represented by - // each spread fragment name found. - for (let i = 0; i < fragmentNames.length; i++) { - collectConflictsBetweenFieldsAndFragment( - context, - conflicts, - cachedFieldsAndFragmentNames, - comparedFragmentPairs, - false, - fieldMap, - fragmentNames[i], - ); // (C) Then compare this fragment with all other fragments found in this - // selection set to collect conflicts between fragments spread together. - // This compares each item in the list of fragment names to every other - // item in that same list (except for itself). - - for (let j = i + 1; j < fragmentNames.length; j++) { - collectConflictsBetweenFragments( - context, - conflicts, - cachedFieldsAndFragmentNames, - comparedFragmentPairs, - false, - fragmentNames[i], - fragmentNames[j], - ); - } - } - } - - return conflicts; -} // Collect all conflicts found between a set of fields and a fragment reference -// including via spreading in any nested fragments. - -function collectConflictsBetweenFieldsAndFragment( - context, - conflicts, - cachedFieldsAndFragmentNames, - comparedFragmentPairs, - areMutuallyExclusive, - fieldMap, - fragmentName, -) { - const fragment = context.getFragment(fragmentName); - - if (!fragment) { - return; - } - - const [fieldMap2, referencedFragmentNames] = - getReferencedFieldsAndFragmentNames( - context, - cachedFieldsAndFragmentNames, - fragment, - ); // Do not compare a fragment's fieldMap to itself. - - if (fieldMap === fieldMap2) { - return; - } // (D) First collect any conflicts between the provided collection of fields - // and the collection of fields represented by the given fragment. - - collectConflictsBetween( - context, - conflicts, - cachedFieldsAndFragmentNames, - comparedFragmentPairs, - areMutuallyExclusive, - fieldMap, - fieldMap2, - ); // (E) Then collect any conflicts between the provided collection of fields - // and any fragment names found in the given fragment. - - for (const referencedFragmentName of referencedFragmentNames) { - // Memoize so two fragments are not compared for conflicts more than once. - if ( - comparedFragmentPairs.has( - referencedFragmentName, - fragmentName, - areMutuallyExclusive, - ) - ) { - continue; - } - - comparedFragmentPairs.add( - referencedFragmentName, - fragmentName, - areMutuallyExclusive, - ); - collectConflictsBetweenFieldsAndFragment( - context, - conflicts, - cachedFieldsAndFragmentNames, - comparedFragmentPairs, - areMutuallyExclusive, - fieldMap, - referencedFragmentName, - ); - } -} // Collect all conflicts found between two fragments, including via spreading in -// any nested fragments. - -function collectConflictsBetweenFragments( - context, - conflicts, - cachedFieldsAndFragmentNames, - comparedFragmentPairs, - areMutuallyExclusive, - fragmentName1, - fragmentName2, -) { - // No need to compare a fragment to itself. - if (fragmentName1 === fragmentName2) { - return; - } // Memoize so two fragments are not compared for conflicts more than once. - - if ( - comparedFragmentPairs.has( - fragmentName1, - fragmentName2, - areMutuallyExclusive, - ) - ) { - return; - } - - comparedFragmentPairs.add(fragmentName1, fragmentName2, areMutuallyExclusive); - const fragment1 = context.getFragment(fragmentName1); - const fragment2 = context.getFragment(fragmentName2); - - if (!fragment1 || !fragment2) { - return; - } - - const [fieldMap1, referencedFragmentNames1] = - getReferencedFieldsAndFragmentNames( - context, - cachedFieldsAndFragmentNames, - fragment1, - ); - const [fieldMap2, referencedFragmentNames2] = - getReferencedFieldsAndFragmentNames( - context, - cachedFieldsAndFragmentNames, - fragment2, - ); // (F) First, collect all conflicts between these two collections of fields - // (not including any nested fragments). - - collectConflictsBetween( - context, - conflicts, - cachedFieldsAndFragmentNames, - comparedFragmentPairs, - areMutuallyExclusive, - fieldMap1, - fieldMap2, - ); // (G) Then collect conflicts between the first fragment and any nested - // fragments spread in the second fragment. - - for (const referencedFragmentName2 of referencedFragmentNames2) { - collectConflictsBetweenFragments( - context, - conflicts, - cachedFieldsAndFragmentNames, - comparedFragmentPairs, - areMutuallyExclusive, - fragmentName1, - referencedFragmentName2, - ); - } // (G) Then collect conflicts between the second fragment and any nested - // fragments spread in the first fragment. - - for (const referencedFragmentName1 of referencedFragmentNames1) { - collectConflictsBetweenFragments( - context, - conflicts, - cachedFieldsAndFragmentNames, - comparedFragmentPairs, - areMutuallyExclusive, - referencedFragmentName1, - fragmentName2, - ); - } -} // Find all conflicts found between two selection sets, including those found -// via spreading in fragments. Called when determining if conflicts exist -// between the sub-fields of two overlapping fields. - -function findConflictsBetweenSubSelectionSets( - context, - cachedFieldsAndFragmentNames, - comparedFragmentPairs, - areMutuallyExclusive, - parentType1, - selectionSet1, - parentType2, - selectionSet2, -) { - const conflicts = []; - const [fieldMap1, fragmentNames1] = getFieldsAndFragmentNames( - context, - cachedFieldsAndFragmentNames, - parentType1, - selectionSet1, - ); - const [fieldMap2, fragmentNames2] = getFieldsAndFragmentNames( - context, - cachedFieldsAndFragmentNames, - parentType2, - selectionSet2, - ); // (H) First, collect all conflicts between these two collections of field. - - collectConflictsBetween( - context, - conflicts, - cachedFieldsAndFragmentNames, - comparedFragmentPairs, - areMutuallyExclusive, - fieldMap1, - fieldMap2, - ); // (I) Then collect conflicts between the first collection of fields and - // those referenced by each fragment name associated with the second. - - for (const fragmentName2 of fragmentNames2) { - collectConflictsBetweenFieldsAndFragment( - context, - conflicts, - cachedFieldsAndFragmentNames, - comparedFragmentPairs, - areMutuallyExclusive, - fieldMap1, - fragmentName2, - ); - } // (I) Then collect conflicts between the second collection of fields and - // those referenced by each fragment name associated with the first. - - for (const fragmentName1 of fragmentNames1) { - collectConflictsBetweenFieldsAndFragment( - context, - conflicts, - cachedFieldsAndFragmentNames, - comparedFragmentPairs, - areMutuallyExclusive, - fieldMap2, - fragmentName1, - ); - } // (J) Also collect conflicts between any fragment names by the first and - // fragment names by the second. This compares each item in the first set of - // names to each item in the second set of names. - - for (const fragmentName1 of fragmentNames1) { - for (const fragmentName2 of fragmentNames2) { - collectConflictsBetweenFragments( - context, - conflicts, - cachedFieldsAndFragmentNames, - comparedFragmentPairs, - areMutuallyExclusive, - fragmentName1, - fragmentName2, - ); - } - } - - return conflicts; -} // Collect all Conflicts "within" one collection of fields. - -function collectConflictsWithin( - context, - conflicts, - cachedFieldsAndFragmentNames, - comparedFragmentPairs, - fieldMap, -) { - // A field map is a keyed collection, where each key represents a response - // name and the value at that key is a list of all fields which provide that - // response name. For every response name, if there are multiple fields, they - // must be compared to find a potential conflict. - for (const [responseName, fields] of Object.entries(fieldMap)) { - // This compares every field in the list to every other field in this list - // (except to itself). If the list only has one item, nothing needs to - // be compared. - if (fields.length > 1) { - for (let i = 0; i < fields.length; i++) { - for (let j = i + 1; j < fields.length; j++) { - const conflict = findConflict( - context, - cachedFieldsAndFragmentNames, - comparedFragmentPairs, - false, // within one collection is never mutually exclusive - responseName, - fields[i], - fields[j], - ); - - if (conflict) { - conflicts.push(conflict); - } - } - } - } - } -} // Collect all Conflicts between two collections of fields. This is similar to, -// but different from the `collectConflictsWithin` function above. This check -// assumes that `collectConflictsWithin` has already been called on each -// provided collection of fields. This is true because this validator traverses -// each individual selection set. - -function collectConflictsBetween( - context, - conflicts, - cachedFieldsAndFragmentNames, - comparedFragmentPairs, - parentFieldsAreMutuallyExclusive, - fieldMap1, - fieldMap2, -) { - // A field map is a keyed collection, where each key represents a response - // name and the value at that key is a list of all fields which provide that - // response name. For any response name which appears in both provided field - // maps, each field from the first field map must be compared to every field - // in the second field map to find potential conflicts. - for (const [responseName, fields1] of Object.entries(fieldMap1)) { - const fields2 = fieldMap2[responseName]; - - if (fields2) { - for (const field1 of fields1) { - for (const field2 of fields2) { - const conflict = findConflict( - context, - cachedFieldsAndFragmentNames, - comparedFragmentPairs, - parentFieldsAreMutuallyExclusive, - responseName, - field1, - field2, - ); - - if (conflict) { - conflicts.push(conflict); - } - } - } - } - } -} // Determines if there is a conflict between two particular fields, including -// comparing their sub-fields. - -function findConflict( - context, - cachedFieldsAndFragmentNames, - comparedFragmentPairs, - parentFieldsAreMutuallyExclusive, - responseName, - field1, - field2, -) { - const [parentType1, node1, def1] = field1; - const [parentType2, node2, def2] = field2; // If it is known that two fields could not possibly apply at the same - // time, due to the parent types, then it is safe to permit them to diverge - // in aliased field or arguments used as they will not present any ambiguity - // by differing. - // It is known that two parent types could never overlap if they are - // different Object types. Interface or Union types might overlap - if not - // in the current state of the schema, then perhaps in some future version, - // thus may not safely diverge. - - const areMutuallyExclusive = - parentFieldsAreMutuallyExclusive || - (parentType1 !== parentType2 && - isObjectType(parentType1) && - isObjectType(parentType2)); - - if (!areMutuallyExclusive) { - // Two aliases must refer to the same field. - const name1 = node1.name.value; - const name2 = node2.name.value; - - if (name1 !== name2) { - return [ - [responseName, `"${name1}" and "${name2}" are different fields`], - [node1], - [node2], - ]; - } // Two field calls must have the same arguments. - - if (stringifyArguments(node1) !== stringifyArguments(node2)) { - return [ - [responseName, 'they have differing arguments'], - [node1], - [node2], - ]; - } - } // The return type for each field. - - const type1 = def1 === null || def1 === void 0 ? void 0 : def1.type; - const type2 = def2 === null || def2 === void 0 ? void 0 : def2.type; - - if (type1 && type2 && doTypesConflict(type1, type2)) { - return [ - [ - responseName, - `they return conflicting types "${inspect$1(type1)}" and "${inspect$1( - type2, - )}"`, - ], - [node1], - [node2], - ]; - } // Collect and compare sub-fields. Use the same "visited fragment names" list - // for both collections so fields in a fragment reference are never - // compared to themselves. - - const selectionSet1 = node1.selectionSet; - const selectionSet2 = node2.selectionSet; - - if (selectionSet1 && selectionSet2) { - const conflicts = findConflictsBetweenSubSelectionSets( - context, - cachedFieldsAndFragmentNames, - comparedFragmentPairs, - areMutuallyExclusive, - getNamedType(type1), - selectionSet1, - getNamedType(type2), - selectionSet2, - ); - return subfieldConflicts(conflicts, responseName, node1, node2); - } -} - -function stringifyArguments(fieldNode) { - var _fieldNode$arguments; - - // FIXME https://github.com/graphql/graphql-js/issues/2203 - const args = - /* c8 ignore next */ - (_fieldNode$arguments = fieldNode.arguments) !== null && - _fieldNode$arguments !== void 0 - ? _fieldNode$arguments - : []; - const inputObjectWithArgs = { - kind: Kind.OBJECT, - fields: args.map((argNode) => ({ - kind: Kind.OBJECT_FIELD, - name: argNode.name, - value: argNode.value, - })), - }; - return print(sortValueNode(inputObjectWithArgs)); -} // Two types conflict if both types could not apply to a value simultaneously. -// Composite types are ignored as their individual field types will be compared -// later recursively. However List and Non-Null types must match. - -function doTypesConflict(type1, type2) { - if (isListType(type1)) { - return isListType(type2) - ? doTypesConflict(type1.ofType, type2.ofType) - : true; - } - - if (isListType(type2)) { - return true; - } - - if (isNonNullType(type1)) { - return isNonNullType(type2) - ? doTypesConflict(type1.ofType, type2.ofType) - : true; - } - - if (isNonNullType(type2)) { - return true; - } - - if (isLeafType(type1) || isLeafType(type2)) { - return type1 !== type2; - } - - return false; -} // Given a selection set, return the collection of fields (a mapping of response -// name to field nodes and definitions) as well as a list of fragment names -// referenced via fragment spreads. - -function getFieldsAndFragmentNames( - context, - cachedFieldsAndFragmentNames, - parentType, - selectionSet, -) { - const cached = cachedFieldsAndFragmentNames.get(selectionSet); - - if (cached) { - return cached; - } - - const nodeAndDefs = Object.create(null); - const fragmentNames = Object.create(null); - - _collectFieldsAndFragmentNames( - context, - parentType, - selectionSet, - nodeAndDefs, - fragmentNames, - ); - - const result = [nodeAndDefs, Object.keys(fragmentNames)]; - cachedFieldsAndFragmentNames.set(selectionSet, result); - return result; -} // Given a reference to a fragment, return the represented collection of fields -// as well as a list of nested fragment names referenced via fragment spreads. - -function getReferencedFieldsAndFragmentNames( - context, - cachedFieldsAndFragmentNames, - fragment, -) { - // Short-circuit building a type from the node if possible. - const cached = cachedFieldsAndFragmentNames.get(fragment.selectionSet); - - if (cached) { - return cached; - } - - const fragmentType = typeFromAST(context.getSchema(), fragment.typeCondition); - return getFieldsAndFragmentNames( - context, - cachedFieldsAndFragmentNames, - fragmentType, - fragment.selectionSet, - ); -} - -function _collectFieldsAndFragmentNames( - context, - parentType, - selectionSet, - nodeAndDefs, - fragmentNames, -) { - for (const selection of selectionSet.selections) { - switch (selection.kind) { - case Kind.FIELD: { - const fieldName = selection.name.value; - let fieldDef; - - if (isObjectType(parentType) || isInterfaceType(parentType)) { - fieldDef = parentType.getFields()[fieldName]; - } - - const responseName = selection.alias - ? selection.alias.value - : fieldName; - - if (!nodeAndDefs[responseName]) { - nodeAndDefs[responseName] = []; - } - - nodeAndDefs[responseName].push([parentType, selection, fieldDef]); - break; - } - - case Kind.FRAGMENT_SPREAD: - fragmentNames[selection.name.value] = true; - break; - - case Kind.INLINE_FRAGMENT: { - const typeCondition = selection.typeCondition; - const inlineFragmentType = typeCondition - ? typeFromAST(context.getSchema(), typeCondition) - : parentType; - - _collectFieldsAndFragmentNames( - context, - inlineFragmentType, - selection.selectionSet, - nodeAndDefs, - fragmentNames, - ); - - break; - } - } - } -} // Given a series of Conflicts which occurred between two sub-fields, generate -// a single Conflict. - -function subfieldConflicts(conflicts, responseName, node1, node2) { - if (conflicts.length > 0) { - return [ - [responseName, conflicts.map(([reason]) => reason)], - [node1, ...conflicts.map(([, fields1]) => fields1).flat()], - [node2, ...conflicts.map(([, , fields2]) => fields2).flat()], - ]; - } -} -/** - * A way to keep track of pairs of things when the ordering of the pair does not matter. - */ - -class PairSet { - constructor() { - this._data = new Map(); - } - - has(a, b, areMutuallyExclusive) { - var _this$_data$get; - - const [key1, key2] = a < b ? [a, b] : [b, a]; - const result = - (_this$_data$get = this._data.get(key1)) === null || - _this$_data$get === void 0 - ? void 0 - : _this$_data$get.get(key2); - - if (result === undefined) { - return false; - } // areMutuallyExclusive being false is a superset of being true, hence if - // we want to know if this PairSet "has" these two with no exclusivity, - // we have to ensure it was added as such. - - return areMutuallyExclusive ? true : areMutuallyExclusive === result; - } - - add(a, b, areMutuallyExclusive) { - const [key1, key2] = a < b ? [a, b] : [b, a]; - - const map = this._data.get(key1); - - if (map === undefined) { - this._data.set(key1, new Map([[key2, areMutuallyExclusive]])); - } else { - map.set(key2, areMutuallyExclusive); - } - } -} - -/** - * Possible fragment spread - * - * A fragment spread is only valid if the type condition could ever possibly - * be true: if there is a non-empty intersection of the possible parent types, - * and possible types which pass the type condition. - */ -function PossibleFragmentSpreadsRule(context) { - return { - InlineFragment(node) { - const fragType = context.getType(); - const parentType = context.getParentType(); - - if ( - isCompositeType(fragType) && - isCompositeType(parentType) && - !doTypesOverlap(context.getSchema(), fragType, parentType) - ) { - const parentTypeStr = inspect$1(parentType); - const fragTypeStr = inspect$1(fragType); - context.reportError( - new GraphQLError( - `Fragment cannot be spread here as objects of type "${parentTypeStr}" can never be of type "${fragTypeStr}".`, - { - nodes: node, - }, - ), - ); - } - }, - - FragmentSpread(node) { - const fragName = node.name.value; - const fragType = getFragmentType(context, fragName); - const parentType = context.getParentType(); - - if ( - fragType && - parentType && - !doTypesOverlap(context.getSchema(), fragType, parentType) - ) { - const parentTypeStr = inspect$1(parentType); - const fragTypeStr = inspect$1(fragType); - context.reportError( - new GraphQLError( - `Fragment "${fragName}" cannot be spread here as objects of type "${parentTypeStr}" can never be of type "${fragTypeStr}".`, - { - nodes: node, - }, - ), - ); - } - }, - }; -} - -function getFragmentType(context, name) { - const frag = context.getFragment(name); - - if (frag) { - const type = typeFromAST(context.getSchema(), frag.typeCondition); - - if (isCompositeType(type)) { - return type; - } - } -} - -/** - * Possible type extension - * - * A type extension is only valid if the type is defined and has the same kind. - */ -function PossibleTypeExtensionsRule(context) { - const schema = context.getSchema(); - const definedTypes = Object.create(null); - - for (const def of context.getDocument().definitions) { - if (isTypeDefinitionNode(def)) { - definedTypes[def.name.value] = def; - } - } - - return { - ScalarTypeExtension: checkExtension, - ObjectTypeExtension: checkExtension, - InterfaceTypeExtension: checkExtension, - UnionTypeExtension: checkExtension, - EnumTypeExtension: checkExtension, - InputObjectTypeExtension: checkExtension, - }; - - function checkExtension(node) { - const typeName = node.name.value; - const defNode = definedTypes[typeName]; - const existingType = - schema === null || schema === void 0 ? void 0 : schema.getType(typeName); - let expectedKind; - - if (defNode) { - expectedKind = defKindToExtKind[defNode.kind]; - } else if (existingType) { - expectedKind = typeToExtKind(existingType); - } - - if (expectedKind) { - if (expectedKind !== node.kind) { - const kindStr = extensionKindToTypeName(node.kind); - context.reportError( - new GraphQLError(`Cannot extend non-${kindStr} type "${typeName}".`, { - nodes: defNode ? [defNode, node] : node, - }), - ); - } - } else { - const allTypeNames = Object.keys({ - ...definedTypes, - ...(schema === null || schema === void 0 - ? void 0 - : schema.getTypeMap()), - }); - const suggestedTypes = suggestionList(typeName, allTypeNames); - context.reportError( - new GraphQLError( - `Cannot extend type "${typeName}" because it is not defined.` + - didYouMean(suggestedTypes), - { - nodes: node.name, - }, - ), - ); - } - } -} -const defKindToExtKind = { - [Kind.SCALAR_TYPE_DEFINITION]: Kind.SCALAR_TYPE_EXTENSION, - [Kind.OBJECT_TYPE_DEFINITION]: Kind.OBJECT_TYPE_EXTENSION, - [Kind.INTERFACE_TYPE_DEFINITION]: Kind.INTERFACE_TYPE_EXTENSION, - [Kind.UNION_TYPE_DEFINITION]: Kind.UNION_TYPE_EXTENSION, - [Kind.ENUM_TYPE_DEFINITION]: Kind.ENUM_TYPE_EXTENSION, - [Kind.INPUT_OBJECT_TYPE_DEFINITION]: Kind.INPUT_OBJECT_TYPE_EXTENSION, -}; - -function typeToExtKind(type) { - if (isScalarType(type)) { - return Kind.SCALAR_TYPE_EXTENSION; - } - - if (isObjectType(type)) { - return Kind.OBJECT_TYPE_EXTENSION; - } - - if (isInterfaceType(type)) { - return Kind.INTERFACE_TYPE_EXTENSION; - } - - if (isUnionType(type)) { - return Kind.UNION_TYPE_EXTENSION; - } - - if (isEnumType(type)) { - return Kind.ENUM_TYPE_EXTENSION; - } - - if (isInputObjectType(type)) { - return Kind.INPUT_OBJECT_TYPE_EXTENSION; - } - /* c8 ignore next 3 */ - // Not reachable. All possible types have been considered - - invariant$1(false, 'Unexpected type: ' + inspect$1(type)); -} - -function extensionKindToTypeName(kind) { - switch (kind) { - case Kind.SCALAR_TYPE_EXTENSION: - return 'scalar'; - - case Kind.OBJECT_TYPE_EXTENSION: - return 'object'; - - case Kind.INTERFACE_TYPE_EXTENSION: - return 'interface'; - - case Kind.UNION_TYPE_EXTENSION: - return 'union'; - - case Kind.ENUM_TYPE_EXTENSION: - return 'enum'; - - case Kind.INPUT_OBJECT_TYPE_EXTENSION: - return 'input object'; - // Not reachable. All possible types have been considered - - /* c8 ignore next */ - - default: - invariant$1(false, 'Unexpected kind: ' + inspect$1(kind)); - } -} - -/** - * Provided required arguments - * - * A field or directive is only valid if all required (non-null without a - * default value) field arguments have been provided. - */ -function ProvidedRequiredArgumentsRule(context) { - return { - // eslint-disable-next-line new-cap - ...ProvidedRequiredArgumentsOnDirectivesRule(context), - Field: { - // Validate on leave to allow for deeper errors to appear first. - leave(fieldNode) { - var _fieldNode$arguments; - - const fieldDef = context.getFieldDef(); - - if (!fieldDef) { - return false; - } - - const providedArgs = new Set( // FIXME: https://github.com/graphql/graphql-js/issues/2203 - /* c8 ignore next */ - (_fieldNode$arguments = fieldNode.arguments) === null || - _fieldNode$arguments === void 0 - ? void 0 - : _fieldNode$arguments.map((arg) => arg.name.value), - ); - - for (const argDef of fieldDef.args) { - if (!providedArgs.has(argDef.name) && isRequiredArgument(argDef)) { - const argTypeStr = inspect$1(argDef.type); - context.reportError( - new GraphQLError( - `Field "${fieldDef.name}" argument "${argDef.name}" of type "${argTypeStr}" is required, but it was not provided.`, - { - nodes: fieldNode, - }, - ), - ); - } - } - }, - }, - }; -} -/** - * @internal - */ - -function ProvidedRequiredArgumentsOnDirectivesRule(context) { - var _schema$getDirectives; - - const requiredArgsMap = Object.create(null); - const schema = context.getSchema(); - const definedDirectives = - (_schema$getDirectives = - schema === null || schema === void 0 - ? void 0 - : schema.getDirectives()) !== null && _schema$getDirectives !== void 0 - ? _schema$getDirectives - : specifiedDirectives; - - for (const directive of definedDirectives) { - requiredArgsMap[directive.name] = keyMap( - directive.args.filter(isRequiredArgument), - (arg) => arg.name, - ); - } - - const astDefinitions = context.getDocument().definitions; - - for (const def of astDefinitions) { - if (def.kind === Kind.DIRECTIVE_DEFINITION) { - var _def$arguments; - - // FIXME: https://github.com/graphql/graphql-js/issues/2203 - - /* c8 ignore next */ - const argNodes = - (_def$arguments = def.arguments) !== null && _def$arguments !== void 0 - ? _def$arguments - : []; - requiredArgsMap[def.name.value] = keyMap( - argNodes.filter(isRequiredArgumentNode), - (arg) => arg.name.value, - ); - } - } - - return { - Directive: { - // Validate on leave to allow for deeper errors to appear first. - leave(directiveNode) { - const directiveName = directiveNode.name.value; - const requiredArgs = requiredArgsMap[directiveName]; - - if (requiredArgs) { - var _directiveNode$argume; - - // FIXME: https://github.com/graphql/graphql-js/issues/2203 - - /* c8 ignore next */ - const argNodes = - (_directiveNode$argume = directiveNode.arguments) !== null && - _directiveNode$argume !== void 0 - ? _directiveNode$argume - : []; - const argNodeMap = new Set(argNodes.map((arg) => arg.name.value)); - - for (const [argName, argDef] of Object.entries(requiredArgs)) { - if (!argNodeMap.has(argName)) { - const argType = isType(argDef.type) - ? inspect$1(argDef.type) - : print(argDef.type); - context.reportError( - new GraphQLError( - `Directive "@${directiveName}" argument "${argName}" of type "${argType}" is required, but it was not provided.`, - { - nodes: directiveNode, - }, - ), - ); - } - } - } - }, - }, - }; -} - -function isRequiredArgumentNode(arg) { - return arg.type.kind === Kind.NON_NULL_TYPE && arg.defaultValue == null; -} - -/** - * Scalar leafs - * - * A GraphQL document is valid only if all leaf fields (fields without - * sub selections) are of scalar or enum types. - */ -function ScalarLeafsRule(context) { - return { - Field(node) { - const type = context.getType(); - const selectionSet = node.selectionSet; - - if (type) { - if (isLeafType(getNamedType(type))) { - if (selectionSet) { - const fieldName = node.name.value; - const typeStr = inspect$1(type); - context.reportError( - new GraphQLError( - `Field "${fieldName}" must not have a selection since type "${typeStr}" has no subfields.`, - { - nodes: selectionSet, - }, - ), - ); - } - } else if (!selectionSet) { - const fieldName = node.name.value; - const typeStr = inspect$1(type); - context.reportError( - new GraphQLError( - `Field "${fieldName}" of type "${typeStr}" must have a selection of subfields. Did you mean "${fieldName} { ... }"?`, - { - nodes: node, - }, - ), - ); - } - } - }, - }; -} - -/** - * Build a string describing the path. - */ -function printPathArray(path) { - return path - .map((key) => - typeof key === 'number' ? '[' + key.toString() + ']' : '.' + key, - ) - .join(''); -} - -/** - * Given a Path and a key, return a new Path containing the new key. - */ -function addPath(prev, key, typename) { - return { - prev, - key, - typename, - }; -} -/** - * Given a Path, return an Array of the path keys. - */ - -function pathToArray(path) { - const flattened = []; - let curr = path; - - while (curr) { - flattened.push(curr.key); - curr = curr.prev; - } - - return flattened.reverse(); -} - -/** - * Coerces a JavaScript value given a GraphQL Input Type. - */ -function coerceInputValue(inputValue, type, onError = defaultOnError) { - return coerceInputValueImpl(inputValue, type, onError, undefined); -} - -function defaultOnError(path, invalidValue, error) { - let errorPrefix = 'Invalid value ' + inspect$1(invalidValue); - - if (path.length > 0) { - errorPrefix += ` at "value${printPathArray(path)}"`; - } - - error.message = errorPrefix + ': ' + error.message; - throw error; -} - -function coerceInputValueImpl(inputValue, type, onError, path) { - if (isNonNullType(type)) { - if (inputValue != null) { - return coerceInputValueImpl(inputValue, type.ofType, onError, path); - } - - onError( - pathToArray(path), - inputValue, - new GraphQLError( - `Expected non-nullable type "${inspect$1(type)}" not to be null.`, - ), - ); - return; - } - - if (inputValue == null) { - // Explicitly return the value null. - return null; - } - - if (isListType(type)) { - const itemType = type.ofType; - - if (isIterableObject(inputValue)) { - return Array.from(inputValue, (itemValue, index) => { - const itemPath = addPath(path, index, undefined); - return coerceInputValueImpl(itemValue, itemType, onError, itemPath); - }); - } // Lists accept a non-list value as a list of one. - - return [coerceInputValueImpl(inputValue, itemType, onError, path)]; - } - - if (isInputObjectType(type)) { - if (!isObjectLike(inputValue)) { - onError( - pathToArray(path), - inputValue, - new GraphQLError(`Expected type "${type.name}" to be an object.`), - ); - return; - } - - const coercedValue = {}; - const fieldDefs = type.getFields(); - - for (const field of Object.values(fieldDefs)) { - const fieldValue = inputValue[field.name]; - - if (fieldValue === undefined) { - if (field.defaultValue !== undefined) { - coercedValue[field.name] = field.defaultValue; - } else if (isNonNullType(field.type)) { - const typeStr = inspect$1(field.type); - onError( - pathToArray(path), - inputValue, - new GraphQLError( - `Field "${field.name}" of required type "${typeStr}" was not provided.`, - ), - ); - } - - continue; - } - - coercedValue[field.name] = coerceInputValueImpl( - fieldValue, - field.type, - onError, - addPath(path, field.name, type.name), - ); - } // Ensure every provided field is defined. - - for (const fieldName of Object.keys(inputValue)) { - if (!fieldDefs[fieldName]) { - const suggestions = suggestionList( - fieldName, - Object.keys(type.getFields()), - ); - onError( - pathToArray(path), - inputValue, - new GraphQLError( - `Field "${fieldName}" is not defined by type "${type.name}".` + - didYouMean(suggestions), - ), - ); - } - } - - return coercedValue; - } - - if (isLeafType(type)) { - let parseResult; // Scalars and Enums determine if a input value is valid via parseValue(), - // which can throw to indicate failure. If it throws, maintain a reference - // to the original error. - - try { - parseResult = type.parseValue(inputValue); - } catch (error) { - if (error instanceof GraphQLError) { - onError(pathToArray(path), inputValue, error); - } else { - onError( - pathToArray(path), - inputValue, - new GraphQLError(`Expected type "${type.name}". ` + error.message, { - originalError: error, - }), - ); - } - - return; - } - - if (parseResult === undefined) { - onError( - pathToArray(path), - inputValue, - new GraphQLError(`Expected type "${type.name}".`), - ); - } - - return parseResult; - } - /* c8 ignore next 3 */ - // Not reachable, all possible types have been considered. - - invariant$1(false, 'Unexpected input type: ' + inspect$1(type)); -} - -/** - * Produces a JavaScript value given a GraphQL Value AST. - * - * A GraphQL type must be provided, which will be used to interpret different - * GraphQL Value literals. - * - * Returns `undefined` when the value could not be validly coerced according to - * the provided type. - * - * | GraphQL Value | JSON Value | - * | -------------------- | ------------- | - * | Input Object | Object | - * | List | Array | - * | Boolean | Boolean | - * | String | String | - * | Int / Float | Number | - * | Enum Value | Unknown | - * | NullValue | null | - * - */ - -function valueFromAST(valueNode, type, variables) { - if (!valueNode) { - // When there is no node, then there is also no value. - // Importantly, this is different from returning the value null. - return; - } - - if (valueNode.kind === Kind.VARIABLE) { - const variableName = valueNode.name.value; - - if (variables == null || variables[variableName] === undefined) { - // No valid return value. - return; - } - - const variableValue = variables[variableName]; - - if (variableValue === null && isNonNullType(type)) { - return; // Invalid: intentionally return no value. - } // Note: This does no further checking that this variable is correct. - // This assumes that this query has been validated and the variable - // usage here is of the correct type. - - return variableValue; - } - - if (isNonNullType(type)) { - if (valueNode.kind === Kind.NULL) { - return; // Invalid: intentionally return no value. - } - - return valueFromAST(valueNode, type.ofType, variables); - } - - if (valueNode.kind === Kind.NULL) { - // This is explicitly returning the value null. - return null; - } - - if (isListType(type)) { - const itemType = type.ofType; - - if (valueNode.kind === Kind.LIST) { - const coercedValues = []; - - for (const itemNode of valueNode.values) { - if (isMissingVariable(itemNode, variables)) { - // If an array contains a missing variable, it is either coerced to - // null or if the item type is non-null, it considered invalid. - if (isNonNullType(itemType)) { - return; // Invalid: intentionally return no value. - } - - coercedValues.push(null); - } else { - const itemValue = valueFromAST(itemNode, itemType, variables); - - if (itemValue === undefined) { - return; // Invalid: intentionally return no value. - } - - coercedValues.push(itemValue); - } - } - - return coercedValues; - } - - const coercedValue = valueFromAST(valueNode, itemType, variables); - - if (coercedValue === undefined) { - return; // Invalid: intentionally return no value. - } - - return [coercedValue]; - } - - if (isInputObjectType(type)) { - if (valueNode.kind !== Kind.OBJECT) { - return; // Invalid: intentionally return no value. - } - - const coercedObj = Object.create(null); - const fieldNodes = keyMap(valueNode.fields, (field) => field.name.value); - - for (const field of Object.values(type.getFields())) { - const fieldNode = fieldNodes[field.name]; - - if (!fieldNode || isMissingVariable(fieldNode.value, variables)) { - if (field.defaultValue !== undefined) { - coercedObj[field.name] = field.defaultValue; - } else if (isNonNullType(field.type)) { - return; // Invalid: intentionally return no value. - } - - continue; - } - - const fieldValue = valueFromAST(fieldNode.value, field.type, variables); - - if (fieldValue === undefined) { - return; // Invalid: intentionally return no value. - } - - coercedObj[field.name] = fieldValue; - } - - return coercedObj; - } - - if (isLeafType(type)) { - // Scalars and Enums fulfill parsing a literal value via parseLiteral(). - // Invalid values represent a failure to parse correctly, in which case - // no value is returned. - let result; - - try { - result = type.parseLiteral(valueNode, variables); - } catch (_error) { - return; // Invalid: intentionally return no value. - } - - if (result === undefined) { - return; // Invalid: intentionally return no value. - } - - return result; - } - /* c8 ignore next 3 */ - // Not reachable, all possible input types have been considered. - - invariant$1(false, 'Unexpected input type: ' + inspect$1(type)); -} // Returns true if the provided valueNode is a variable which is not defined -// in the set of variables. - -function isMissingVariable(valueNode, variables) { - return ( - valueNode.kind === Kind.VARIABLE && - (variables == null || variables[valueNode.name.value] === undefined) - ); -} - -/** - * Prepares an object map of variableValues of the correct type based on the - * provided variable definitions and arbitrary input. If the input cannot be - * parsed to match the variable definitions, a GraphQLError will be thrown. - * - * Note: The returned value is a plain Object with a prototype, since it is - * exposed to user code. Care should be taken to not pull values from the - * Object prototype. - */ -function getVariableValues(schema, varDefNodes, inputs, options) { - const errors = []; - const maxErrors = - options === null || options === void 0 ? void 0 : options.maxErrors; - - try { - const coerced = coerceVariableValues( - schema, - varDefNodes, - inputs, - (error) => { - if (maxErrors != null && errors.length >= maxErrors) { - throw new GraphQLError( - 'Too many errors processing variables, error limit reached. Execution aborted.', - ); - } - - errors.push(error); - }, - ); - - if (errors.length === 0) { - return { - coerced, - }; - } - } catch (error) { - errors.push(error); - } - - return { - errors, - }; -} - -function coerceVariableValues(schema, varDefNodes, inputs, onError) { - const coercedValues = {}; - - for (const varDefNode of varDefNodes) { - const varName = varDefNode.variable.name.value; - const varType = typeFromAST(schema, varDefNode.type); - - if (!isInputType(varType)) { - // Must use input types for variables. This should be caught during - // validation, however is checked again here for safety. - const varTypeStr = print(varDefNode.type); - onError( - new GraphQLError( - `Variable "$${varName}" expected value of type "${varTypeStr}" which cannot be used as an input type.`, - { - nodes: varDefNode.type, - }, - ), - ); - continue; - } - - if (!hasOwnProperty(inputs, varName)) { - if (varDefNode.defaultValue) { - coercedValues[varName] = valueFromAST(varDefNode.defaultValue, varType); - } else if (isNonNullType(varType)) { - const varTypeStr = inspect$1(varType); - onError( - new GraphQLError( - `Variable "$${varName}" of required type "${varTypeStr}" was not provided.`, - { - nodes: varDefNode, - }, - ), - ); - } - - continue; - } - - const value = inputs[varName]; - - if (value === null && isNonNullType(varType)) { - const varTypeStr = inspect$1(varType); - onError( - new GraphQLError( - `Variable "$${varName}" of non-null type "${varTypeStr}" must not be null.`, - { - nodes: varDefNode, - }, - ), - ); - continue; - } - - coercedValues[varName] = coerceInputValue( - value, - varType, - (path, invalidValue, error) => { - let prefix = - `Variable "$${varName}" got invalid value ` + inspect$1(invalidValue); - - if (path.length > 0) { - prefix += ` at "${varName}${printPathArray(path)}"`; - } - - onError( - new GraphQLError(prefix + '; ' + error.message, { - nodes: varDefNode, - originalError: error.originalError, - }), - ); - }, - ); - } - - return coercedValues; -} -/** - * Prepares an object map of argument values given a list of argument - * definitions and list of argument AST nodes. - * - * Note: The returned value is a plain Object with a prototype, since it is - * exposed to user code. Care should be taken to not pull values from the - * Object prototype. - */ - -function getArgumentValues(def, node, variableValues) { - var _node$arguments; - - const coercedValues = {}; // FIXME: https://github.com/graphql/graphql-js/issues/2203 - - /* c8 ignore next */ - - const argumentNodes = - (_node$arguments = node.arguments) !== null && _node$arguments !== void 0 - ? _node$arguments - : []; - const argNodeMap = keyMap(argumentNodes, (arg) => arg.name.value); - - for (const argDef of def.args) { - const name = argDef.name; - const argType = argDef.type; - const argumentNode = argNodeMap[name]; - - if (!argumentNode) { - if (argDef.defaultValue !== undefined) { - coercedValues[name] = argDef.defaultValue; - } else if (isNonNullType(argType)) { - throw new GraphQLError( - `Argument "${name}" of required type "${inspect$1(argType)}" ` + - 'was not provided.', - { - nodes: node, - }, - ); - } - - continue; - } - - const valueNode = argumentNode.value; - let isNull = valueNode.kind === Kind.NULL; - - if (valueNode.kind === Kind.VARIABLE) { - const variableName = valueNode.name.value; - - if ( - variableValues == null || - !hasOwnProperty(variableValues, variableName) - ) { - if (argDef.defaultValue !== undefined) { - coercedValues[name] = argDef.defaultValue; - } else if (isNonNullType(argType)) { - throw new GraphQLError( - `Argument "${name}" of required type "${inspect$1(argType)}" ` + - `was provided the variable "$${variableName}" which was not provided a runtime value.`, - { - nodes: valueNode, - }, - ); - } - - continue; - } - - isNull = variableValues[variableName] == null; - } - - if (isNull && isNonNullType(argType)) { - throw new GraphQLError( - `Argument "${name}" of non-null type "${inspect$1(argType)}" ` + - 'must not be null.', - { - nodes: valueNode, - }, - ); - } - - const coercedValue = valueFromAST(valueNode, argType, variableValues); - - if (coercedValue === undefined) { - // Note: ValuesOfCorrectTypeRule validation should catch this before - // execution. This is a runtime check to ensure execution does not - // continue with an invalid argument value. - throw new GraphQLError( - `Argument "${name}" has invalid value ${print(valueNode)}.`, - { - nodes: valueNode, - }, - ); - } - - coercedValues[name] = coercedValue; - } - - return coercedValues; -} -/** - * Prepares an object map of argument values given a directive definition - * and a AST node which may contain directives. Optionally also accepts a map - * of variable values. - * - * If the directive does not exist on the node, returns undefined. - * - * Note: The returned value is a plain Object with a prototype, since it is - * exposed to user code. Care should be taken to not pull values from the - * Object prototype. - */ - -function getDirectiveValues(directiveDef, node, variableValues) { - var _node$directives; - - const directiveNode = - (_node$directives = node.directives) === null || _node$directives === void 0 - ? void 0 - : _node$directives.find( - (directive) => directive.name.value === directiveDef.name, - ); - - if (directiveNode) { - return getArgumentValues(directiveDef, directiveNode, variableValues); - } -} - -function hasOwnProperty(obj, prop) { - return Object.prototype.hasOwnProperty.call(obj, prop); -} - -/** - * Given a selectionSet, collects all of the fields and returns them. - * - * CollectFields requires the "runtime type" of an object. For a field that - * returns an Interface or Union type, the "runtime type" will be the actual - * object type returned by that field. - * - * @internal - */ - -function collectFields( - schema, - fragments, - variableValues, - runtimeType, - selectionSet, -) { - const fields = new Map(); - collectFieldsImpl( - schema, - fragments, - variableValues, - runtimeType, - selectionSet, - fields, - new Set(), - ); - return fields; -} -/** - * Given an array of field nodes, collects all of the subfields of the passed - * in fields, and returns them at the end. - * - * CollectSubFields requires the "return type" of an object. For a field that - * returns an Interface or Union type, the "return type" will be the actual - * object type returned by that field. - * - * @internal - */ - -function collectSubfields$1( - schema, - fragments, - variableValues, - returnType, - fieldNodes, -) { - const subFieldNodes = new Map(); - const visitedFragmentNames = new Set(); - - for (const node of fieldNodes) { - if (node.selectionSet) { - collectFieldsImpl( - schema, - fragments, - variableValues, - returnType, - node.selectionSet, - subFieldNodes, - visitedFragmentNames, - ); - } - } - - return subFieldNodes; -} - -function collectFieldsImpl( - schema, - fragments, - variableValues, - runtimeType, - selectionSet, - fields, - visitedFragmentNames, -) { - for (const selection of selectionSet.selections) { - switch (selection.kind) { - case Kind.FIELD: { - if (!shouldIncludeNode(variableValues, selection)) { - continue; - } - - const name = getFieldEntryKey(selection); - const fieldList = fields.get(name); - - if (fieldList !== undefined) { - fieldList.push(selection); - } else { - fields.set(name, [selection]); - } - - break; - } - - case Kind.INLINE_FRAGMENT: { - if ( - !shouldIncludeNode(variableValues, selection) || - !doesFragmentConditionMatch(schema, selection, runtimeType) - ) { - continue; - } - - collectFieldsImpl( - schema, - fragments, - variableValues, - runtimeType, - selection.selectionSet, - fields, - visitedFragmentNames, - ); - break; - } - - case Kind.FRAGMENT_SPREAD: { - const fragName = selection.name.value; - - if ( - visitedFragmentNames.has(fragName) || - !shouldIncludeNode(variableValues, selection) - ) { - continue; - } - - visitedFragmentNames.add(fragName); - const fragment = fragments[fragName]; - - if ( - !fragment || - !doesFragmentConditionMatch(schema, fragment, runtimeType) - ) { - continue; - } - - collectFieldsImpl( - schema, - fragments, - variableValues, - runtimeType, - fragment.selectionSet, - fields, - visitedFragmentNames, - ); - break; - } - } - } -} -/** - * Determines if a field should be included based on the `@include` and `@skip` - * directives, where `@skip` has higher precedence than `@include`. - */ - -function shouldIncludeNode(variableValues, node) { - const skip = getDirectiveValues(GraphQLSkipDirective, node, variableValues); - - if ((skip === null || skip === void 0 ? void 0 : skip.if) === true) { - return false; - } - - const include = getDirectiveValues( - GraphQLIncludeDirective, - node, - variableValues, - ); - - if ( - (include === null || include === void 0 ? void 0 : include.if) === false - ) { - return false; - } - - return true; -} -/** - * Determines if a fragment is applicable to the given type. - */ - -function doesFragmentConditionMatch(schema, fragment, type) { - const typeConditionNode = fragment.typeCondition; - - if (!typeConditionNode) { - return true; - } - - const conditionalType = typeFromAST(schema, typeConditionNode); - - if (conditionalType === type) { - return true; - } - - if (isAbstractType(conditionalType)) { - return schema.isSubType(conditionalType, type); - } - - return false; -} -/** - * Implements the logic to compute the key of a given field's entry - */ - -function getFieldEntryKey(node) { - return node.alias ? node.alias.value : node.name.value; -} - -/** - * Subscriptions must only include a non-introspection field. - * - * A GraphQL subscription is valid only if it contains a single root field and - * that root field is not an introspection field. - * - * See https://spec.graphql.org/draft/#sec-Single-root-field - */ -function SingleFieldSubscriptionsRule(context) { - return { - OperationDefinition(node) { - if (node.operation === 'subscription') { - const schema = context.getSchema(); - const subscriptionType = schema.getSubscriptionType(); - - if (subscriptionType) { - const operationName = node.name ? node.name.value : null; - const variableValues = Object.create(null); - const document = context.getDocument(); - const fragments = Object.create(null); - - for (const definition of document.definitions) { - if (definition.kind === Kind.FRAGMENT_DEFINITION) { - fragments[definition.name.value] = definition; - } - } - - const fields = collectFields( - schema, - fragments, - variableValues, - subscriptionType, - node.selectionSet, - ); - - if (fields.size > 1) { - const fieldSelectionLists = [...fields.values()]; - const extraFieldSelectionLists = fieldSelectionLists.slice(1); - const extraFieldSelections = extraFieldSelectionLists.flat(); - context.reportError( - new GraphQLError( - operationName != null - ? `Subscription "${operationName}" must select only one top level field.` - : 'Anonymous Subscription must select only one top level field.', - { - nodes: extraFieldSelections, - }, - ), - ); - } - - for (const fieldNodes of fields.values()) { - const field = fieldNodes[0]; - const fieldName = field.name.value; - - if (fieldName.startsWith('__')) { - context.reportError( - new GraphQLError( - operationName != null - ? `Subscription "${operationName}" must not select an introspection top level field.` - : 'Anonymous Subscription must not select an introspection top level field.', - { - nodes: fieldNodes, - }, - ), - ); - } - } - } - } - }, - }; -} - -/** - * Groups array items into a Map, given a function to produce grouping key. - */ -function groupBy(list, keyFn) { - const result = new Map(); - - for (const item of list) { - const key = keyFn(item); - const group = result.get(key); - - if (group === undefined) { - result.set(key, [item]); - } else { - group.push(item); - } - } - - return result; -} - -/** - * Unique argument definition names - * - * A GraphQL Object or Interface type is only valid if all its fields have uniquely named arguments. - * A GraphQL Directive is only valid if all its arguments are uniquely named. - */ -function UniqueArgumentDefinitionNamesRule(context) { - return { - DirectiveDefinition(directiveNode) { - var _directiveNode$argume; - - // FIXME: https://github.com/graphql/graphql-js/issues/2203 - - /* c8 ignore next */ - const argumentNodes = - (_directiveNode$argume = directiveNode.arguments) !== null && - _directiveNode$argume !== void 0 - ? _directiveNode$argume - : []; - return checkArgUniqueness(`@${directiveNode.name.value}`, argumentNodes); - }, - - InterfaceTypeDefinition: checkArgUniquenessPerField, - InterfaceTypeExtension: checkArgUniquenessPerField, - ObjectTypeDefinition: checkArgUniquenessPerField, - ObjectTypeExtension: checkArgUniquenessPerField, - }; - - function checkArgUniquenessPerField(typeNode) { - var _typeNode$fields; - - const typeName = typeNode.name.value; // FIXME: https://github.com/graphql/graphql-js/issues/2203 - - /* c8 ignore next */ - - const fieldNodes = - (_typeNode$fields = typeNode.fields) !== null && - _typeNode$fields !== void 0 - ? _typeNode$fields - : []; - - for (const fieldDef of fieldNodes) { - var _fieldDef$arguments; - - const fieldName = fieldDef.name.value; // FIXME: https://github.com/graphql/graphql-js/issues/2203 - - /* c8 ignore next */ - - const argumentNodes = - (_fieldDef$arguments = fieldDef.arguments) !== null && - _fieldDef$arguments !== void 0 - ? _fieldDef$arguments - : []; - checkArgUniqueness(`${typeName}.${fieldName}`, argumentNodes); - } - - return false; - } - - function checkArgUniqueness(parentName, argumentNodes) { - const seenArgs = groupBy(argumentNodes, (arg) => arg.name.value); - - for (const [argName, argNodes] of seenArgs) { - if (argNodes.length > 1) { - context.reportError( - new GraphQLError( - `Argument "${parentName}(${argName}:)" can only be defined once.`, - { - nodes: argNodes.map((node) => node.name), - }, - ), - ); - } - } - - return false; - } -} - -/** - * Unique argument names - * - * A GraphQL field or directive is only valid if all supplied arguments are - * uniquely named. - * - * See https://spec.graphql.org/draft/#sec-Argument-Names - */ -function UniqueArgumentNamesRule(context) { - return { - Field: checkArgUniqueness, - Directive: checkArgUniqueness, - }; - - function checkArgUniqueness(parentNode) { - var _parentNode$arguments; - - // FIXME: https://github.com/graphql/graphql-js/issues/2203 - - /* c8 ignore next */ - const argumentNodes = - (_parentNode$arguments = parentNode.arguments) !== null && - _parentNode$arguments !== void 0 - ? _parentNode$arguments - : []; - const seenArgs = groupBy(argumentNodes, (arg) => arg.name.value); - - for (const [argName, argNodes] of seenArgs) { - if (argNodes.length > 1) { - context.reportError( - new GraphQLError( - `There can be only one argument named "${argName}".`, - { - nodes: argNodes.map((node) => node.name), - }, - ), - ); - } - } - } -} - -/** - * Unique directive names - * - * A GraphQL document is only valid if all defined directives have unique names. - */ -function UniqueDirectiveNamesRule(context) { - const knownDirectiveNames = Object.create(null); - const schema = context.getSchema(); - return { - DirectiveDefinition(node) { - const directiveName = node.name.value; - - if ( - schema !== null && - schema !== void 0 && - schema.getDirective(directiveName) - ) { - context.reportError( - new GraphQLError( - `Directive "@${directiveName}" already exists in the schema. It cannot be redefined.`, - { - nodes: node.name, - }, - ), - ); - return; - } - - if (knownDirectiveNames[directiveName]) { - context.reportError( - new GraphQLError( - `There can be only one directive named "@${directiveName}".`, - { - nodes: [knownDirectiveNames[directiveName], node.name], - }, - ), - ); - } else { - knownDirectiveNames[directiveName] = node.name; - } - - return false; - }, - }; -} - -/** - * Unique directive names per location - * - * A GraphQL document is only valid if all non-repeatable directives at - * a given location are uniquely named. - * - * See https://spec.graphql.org/draft/#sec-Directives-Are-Unique-Per-Location - */ -function UniqueDirectivesPerLocationRule(context) { - const uniqueDirectiveMap = Object.create(null); - const schema = context.getSchema(); - const definedDirectives = schema - ? schema.getDirectives() - : specifiedDirectives; - - for (const directive of definedDirectives) { - uniqueDirectiveMap[directive.name] = !directive.isRepeatable; - } - - const astDefinitions = context.getDocument().definitions; - - for (const def of astDefinitions) { - if (def.kind === Kind.DIRECTIVE_DEFINITION) { - uniqueDirectiveMap[def.name.value] = !def.repeatable; - } - } - - const schemaDirectives = Object.create(null); - const typeDirectivesMap = Object.create(null); - return { - // Many different AST nodes may contain directives. Rather than listing - // them all, just listen for entering any node, and check to see if it - // defines any directives. - enter(node) { - if (!('directives' in node) || !node.directives) { - return; - } - - let seenDirectives; - - if ( - node.kind === Kind.SCHEMA_DEFINITION || - node.kind === Kind.SCHEMA_EXTENSION - ) { - seenDirectives = schemaDirectives; - } else if (isTypeDefinitionNode(node) || isTypeExtensionNode(node)) { - const typeName = node.name.value; - seenDirectives = typeDirectivesMap[typeName]; - - if (seenDirectives === undefined) { - typeDirectivesMap[typeName] = seenDirectives = Object.create(null); - } - } else { - seenDirectives = Object.create(null); - } - - for (const directive of node.directives) { - const directiveName = directive.name.value; - - if (uniqueDirectiveMap[directiveName]) { - if (seenDirectives[directiveName]) { - context.reportError( - new GraphQLError( - `The directive "@${directiveName}" can only be used once at this location.`, - { - nodes: [seenDirectives[directiveName], directive], - }, - ), - ); - } else { - seenDirectives[directiveName] = directive; - } - } - } - }, - }; -} - -/** - * Unique enum value names - * - * A GraphQL enum type is only valid if all its values are uniquely named. - */ -function UniqueEnumValueNamesRule(context) { - const schema = context.getSchema(); - const existingTypeMap = schema ? schema.getTypeMap() : Object.create(null); - const knownValueNames = Object.create(null); - return { - EnumTypeDefinition: checkValueUniqueness, - EnumTypeExtension: checkValueUniqueness, - }; - - function checkValueUniqueness(node) { - var _node$values; - - const typeName = node.name.value; - - if (!knownValueNames[typeName]) { - knownValueNames[typeName] = Object.create(null); - } // FIXME: https://github.com/graphql/graphql-js/issues/2203 - - /* c8 ignore next */ - - const valueNodes = - (_node$values = node.values) !== null && _node$values !== void 0 - ? _node$values - : []; - const valueNames = knownValueNames[typeName]; - - for (const valueDef of valueNodes) { - const valueName = valueDef.name.value; - const existingType = existingTypeMap[typeName]; - - if (isEnumType(existingType) && existingType.getValue(valueName)) { - context.reportError( - new GraphQLError( - `Enum value "${typeName}.${valueName}" already exists in the schema. It cannot also be defined in this type extension.`, - { - nodes: valueDef.name, - }, - ), - ); - } else if (valueNames[valueName]) { - context.reportError( - new GraphQLError( - `Enum value "${typeName}.${valueName}" can only be defined once.`, - { - nodes: [valueNames[valueName], valueDef.name], - }, - ), - ); - } else { - valueNames[valueName] = valueDef.name; - } - } - - return false; - } -} - -/** - * Unique field definition names - * - * A GraphQL complex type is only valid if all its fields are uniquely named. - */ -function UniqueFieldDefinitionNamesRule(context) { - const schema = context.getSchema(); - const existingTypeMap = schema ? schema.getTypeMap() : Object.create(null); - const knownFieldNames = Object.create(null); - return { - InputObjectTypeDefinition: checkFieldUniqueness, - InputObjectTypeExtension: checkFieldUniqueness, - InterfaceTypeDefinition: checkFieldUniqueness, - InterfaceTypeExtension: checkFieldUniqueness, - ObjectTypeDefinition: checkFieldUniqueness, - ObjectTypeExtension: checkFieldUniqueness, - }; - - function checkFieldUniqueness(node) { - var _node$fields; - - const typeName = node.name.value; - - if (!knownFieldNames[typeName]) { - knownFieldNames[typeName] = Object.create(null); - } // FIXME: https://github.com/graphql/graphql-js/issues/2203 - - /* c8 ignore next */ - - const fieldNodes = - (_node$fields = node.fields) !== null && _node$fields !== void 0 - ? _node$fields - : []; - const fieldNames = knownFieldNames[typeName]; - - for (const fieldDef of fieldNodes) { - const fieldName = fieldDef.name.value; - - if (hasField(existingTypeMap[typeName], fieldName)) { - context.reportError( - new GraphQLError( - `Field "${typeName}.${fieldName}" already exists in the schema. It cannot also be defined in this type extension.`, - { - nodes: fieldDef.name, - }, - ), - ); - } else if (fieldNames[fieldName]) { - context.reportError( - new GraphQLError( - `Field "${typeName}.${fieldName}" can only be defined once.`, - { - nodes: [fieldNames[fieldName], fieldDef.name], - }, - ), - ); - } else { - fieldNames[fieldName] = fieldDef.name; - } - } - - return false; - } -} - -function hasField(type, fieldName) { - if (isObjectType(type) || isInterfaceType(type) || isInputObjectType(type)) { - return type.getFields()[fieldName] != null; - } - - return false; -} - -/** - * Unique fragment names - * - * A GraphQL document is only valid if all defined fragments have unique names. - * - * See https://spec.graphql.org/draft/#sec-Fragment-Name-Uniqueness - */ -function UniqueFragmentNamesRule(context) { - const knownFragmentNames = Object.create(null); - return { - OperationDefinition: () => false, - - FragmentDefinition(node) { - const fragmentName = node.name.value; - - if (knownFragmentNames[fragmentName]) { - context.reportError( - new GraphQLError( - `There can be only one fragment named "${fragmentName}".`, - { - nodes: [knownFragmentNames[fragmentName], node.name], - }, - ), - ); - } else { - knownFragmentNames[fragmentName] = node.name; - } - - return false; - }, - }; -} - -/** - * Unique input field names - * - * A GraphQL input object value is only valid if all supplied fields are - * uniquely named. - * - * See https://spec.graphql.org/draft/#sec-Input-Object-Field-Uniqueness - */ -function UniqueInputFieldNamesRule(context) { - const knownNameStack = []; - let knownNames = Object.create(null); - return { - ObjectValue: { - enter() { - knownNameStack.push(knownNames); - knownNames = Object.create(null); - }, - - leave() { - const prevKnownNames = knownNameStack.pop(); - prevKnownNames || invariant$1(false); - knownNames = prevKnownNames; - }, - }, - - ObjectField(node) { - const fieldName = node.name.value; - - if (knownNames[fieldName]) { - context.reportError( - new GraphQLError( - `There can be only one input field named "${fieldName}".`, - { - nodes: [knownNames[fieldName], node.name], - }, - ), - ); - } else { - knownNames[fieldName] = node.name; - } - }, - }; -} - -/** - * Unique operation names - * - * A GraphQL document is only valid if all defined operations have unique names. - * - * See https://spec.graphql.org/draft/#sec-Operation-Name-Uniqueness - */ -function UniqueOperationNamesRule(context) { - const knownOperationNames = Object.create(null); - return { - OperationDefinition(node) { - const operationName = node.name; - - if (operationName) { - if (knownOperationNames[operationName.value]) { - context.reportError( - new GraphQLError( - `There can be only one operation named "${operationName.value}".`, - { - nodes: [ - knownOperationNames[operationName.value], - operationName, - ], - }, - ), - ); - } else { - knownOperationNames[operationName.value] = operationName; - } - } - - return false; - }, - - FragmentDefinition: () => false, - }; -} - -/** - * Unique operation types - * - * A GraphQL document is only valid if it has only one type per operation. - */ -function UniqueOperationTypesRule(context) { - const schema = context.getSchema(); - const definedOperationTypes = Object.create(null); - const existingOperationTypes = schema - ? { - query: schema.getQueryType(), - mutation: schema.getMutationType(), - subscription: schema.getSubscriptionType(), - } - : {}; - return { - SchemaDefinition: checkOperationTypes, - SchemaExtension: checkOperationTypes, - }; - - function checkOperationTypes(node) { - var _node$operationTypes; - - // See: https://github.com/graphql/graphql-js/issues/2203 - - /* c8 ignore next */ - const operationTypesNodes = - (_node$operationTypes = node.operationTypes) !== null && - _node$operationTypes !== void 0 - ? _node$operationTypes - : []; - - for (const operationType of operationTypesNodes) { - const operation = operationType.operation; - const alreadyDefinedOperationType = definedOperationTypes[operation]; - - if (existingOperationTypes[operation]) { - context.reportError( - new GraphQLError( - `Type for ${operation} already defined in the schema. It cannot be redefined.`, - { - nodes: operationType, - }, - ), - ); - } else if (alreadyDefinedOperationType) { - context.reportError( - new GraphQLError( - `There can be only one ${operation} type in schema.`, - { - nodes: [alreadyDefinedOperationType, operationType], - }, - ), - ); - } else { - definedOperationTypes[operation] = operationType; - } - } - - return false; - } -} - -/** - * Unique type names - * - * A GraphQL document is only valid if all defined types have unique names. - */ -function UniqueTypeNamesRule(context) { - const knownTypeNames = Object.create(null); - const schema = context.getSchema(); - return { - ScalarTypeDefinition: checkTypeName, - ObjectTypeDefinition: checkTypeName, - InterfaceTypeDefinition: checkTypeName, - UnionTypeDefinition: checkTypeName, - EnumTypeDefinition: checkTypeName, - InputObjectTypeDefinition: checkTypeName, - }; - - function checkTypeName(node) { - const typeName = node.name.value; - - if (schema !== null && schema !== void 0 && schema.getType(typeName)) { - context.reportError( - new GraphQLError( - `Type "${typeName}" already exists in the schema. It cannot also be defined in this type definition.`, - { - nodes: node.name, - }, - ), - ); - return; - } - - if (knownTypeNames[typeName]) { - context.reportError( - new GraphQLError(`There can be only one type named "${typeName}".`, { - nodes: [knownTypeNames[typeName], node.name], - }), - ); - } else { - knownTypeNames[typeName] = node.name; - } - - return false; - } -} - -/** - * Unique variable names - * - * A GraphQL operation is only valid if all its variables are uniquely named. - */ -function UniqueVariableNamesRule(context) { - return { - OperationDefinition(operationNode) { - var _operationNode$variab; - - // See: https://github.com/graphql/graphql-js/issues/2203 - - /* c8 ignore next */ - const variableDefinitions = - (_operationNode$variab = operationNode.variableDefinitions) !== null && - _operationNode$variab !== void 0 - ? _operationNode$variab - : []; - const seenVariableDefinitions = groupBy( - variableDefinitions, - (node) => node.variable.name.value, - ); - - for (const [variableName, variableNodes] of seenVariableDefinitions) { - if (variableNodes.length > 1) { - context.reportError( - new GraphQLError( - `There can be only one variable named "$${variableName}".`, - { - nodes: variableNodes.map((node) => node.variable.name), - }, - ), - ); - } - } - }, - }; -} - -/** - * Value literals of correct type - * - * A GraphQL document is only valid if all value literals are of the type - * expected at their position. - * - * See https://spec.graphql.org/draft/#sec-Values-of-Correct-Type - */ -function ValuesOfCorrectTypeRule(context) { - return { - ListValue(node) { - // Note: TypeInfo will traverse into a list's item type, so look to the - // parent input type to check if it is a list. - const type = getNullableType(context.getParentInputType()); - - if (!isListType(type)) { - isValidValueNode(context, node); - return false; // Don't traverse further. - } - }, - - ObjectValue(node) { - const type = getNamedType(context.getInputType()); - - if (!isInputObjectType(type)) { - isValidValueNode(context, node); - return false; // Don't traverse further. - } // Ensure every required field exists. - - const fieldNodeMap = keyMap(node.fields, (field) => field.name.value); - - for (const fieldDef of Object.values(type.getFields())) { - const fieldNode = fieldNodeMap[fieldDef.name]; - - if (!fieldNode && isRequiredInputField(fieldDef)) { - const typeStr = inspect$1(fieldDef.type); - context.reportError( - new GraphQLError( - `Field "${type.name}.${fieldDef.name}" of required type "${typeStr}" was not provided.`, - { - nodes: node, - }, - ), - ); - } - } - }, - - ObjectField(node) { - const parentType = getNamedType(context.getParentInputType()); - const fieldType = context.getInputType(); - - if (!fieldType && isInputObjectType(parentType)) { - const suggestions = suggestionList( - node.name.value, - Object.keys(parentType.getFields()), - ); - context.reportError( - new GraphQLError( - `Field "${node.name.value}" is not defined by type "${parentType.name}".` + - didYouMean(suggestions), - { - nodes: node, - }, - ), - ); - } - }, - - NullValue(node) { - const type = context.getInputType(); - - if (isNonNullType(type)) { - context.reportError( - new GraphQLError( - `Expected value of type "${inspect$1(type)}", found ${print(node)}.`, - { - nodes: node, - }, - ), - ); - } - }, - - EnumValue: (node) => isValidValueNode(context, node), - IntValue: (node) => isValidValueNode(context, node), - FloatValue: (node) => isValidValueNode(context, node), - StringValue: (node) => isValidValueNode(context, node), - BooleanValue: (node) => isValidValueNode(context, node), - }; -} -/** - * Any value literal may be a valid representation of a Scalar, depending on - * that scalar type. - */ - -function isValidValueNode(context, node) { - // Report any error at the full type expected by the location. - const locationType = context.getInputType(); - - if (!locationType) { - return; - } - - const type = getNamedType(locationType); - - if (!isLeafType(type)) { - const typeStr = inspect$1(locationType); - context.reportError( - new GraphQLError( - `Expected value of type "${typeStr}", found ${print(node)}.`, - { - nodes: node, - }, - ), - ); - return; - } // Scalars and Enums determine if a literal value is valid via parseLiteral(), - // which may throw or return an invalid value to indicate failure. - - try { - const parseResult = type.parseLiteral( - node, - undefined, - /* variables */ - ); - - if (parseResult === undefined) { - const typeStr = inspect$1(locationType); - context.reportError( - new GraphQLError( - `Expected value of type "${typeStr}", found ${print(node)}.`, - { - nodes: node, - }, - ), - ); - } - } catch (error) { - const typeStr = inspect$1(locationType); - - if (error instanceof GraphQLError) { - context.reportError(error); - } else { - context.reportError( - new GraphQLError( - `Expected value of type "${typeStr}", found ${print(node)}; ` + - error.message, - { - nodes: node, - originalError: error, - }, - ), - ); - } - } -} - -/** - * Variables are input types - * - * A GraphQL operation is only valid if all the variables it defines are of - * input types (scalar, enum, or input object). - * - * See https://spec.graphql.org/draft/#sec-Variables-Are-Input-Types - */ -function VariablesAreInputTypesRule(context) { - return { - VariableDefinition(node) { - const type = typeFromAST(context.getSchema(), node.type); - - if (type !== undefined && !isInputType(type)) { - const variableName = node.variable.name.value; - const typeName = print(node.type); - context.reportError( - new GraphQLError( - `Variable "$${variableName}" cannot be non-input type "${typeName}".`, - { - nodes: node.type, - }, - ), - ); - } - }, - }; -} - -/** - * Variables in allowed position - * - * Variable usages must be compatible with the arguments they are passed to. - * - * See https://spec.graphql.org/draft/#sec-All-Variable-Usages-are-Allowed - */ -function VariablesInAllowedPositionRule(context) { - let varDefMap = Object.create(null); - return { - OperationDefinition: { - enter() { - varDefMap = Object.create(null); - }, - - leave(operation) { - const usages = context.getRecursiveVariableUsages(operation); - - for (const { node, type, defaultValue } of usages) { - const varName = node.name.value; - const varDef = varDefMap[varName]; - - if (varDef && type) { - // A var type is allowed if it is the same or more strict (e.g. is - // a subtype of) than the expected type. It can be more strict if - // the variable type is non-null when the expected type is nullable. - // If both are list types, the variable item type can be more strict - // than the expected item type (contravariant). - const schema = context.getSchema(); - const varType = typeFromAST(schema, varDef.type); - - if ( - varType && - !allowedVariableUsage( - schema, - varType, - varDef.defaultValue, - type, - defaultValue, - ) - ) { - const varTypeStr = inspect$1(varType); - const typeStr = inspect$1(type); - context.reportError( - new GraphQLError( - `Variable "$${varName}" of type "${varTypeStr}" used in position expecting type "${typeStr}".`, - { - nodes: [varDef, node], - }, - ), - ); - } - } - } - }, - }, - - VariableDefinition(node) { - varDefMap[node.variable.name.value] = node; - }, - }; -} -/** - * Returns true if the variable is allowed in the location it was found, - * which includes considering if default values exist for either the variable - * or the location at which it is located. - */ - -function allowedVariableUsage( - schema, - varType, - varDefaultValue, - locationType, - locationDefaultValue, -) { - if (isNonNullType(locationType) && !isNonNullType(varType)) { - const hasNonNullVariableDefaultValue = - varDefaultValue != null && varDefaultValue.kind !== Kind.NULL; - const hasLocationDefaultValue = locationDefaultValue !== undefined; - - if (!hasNonNullVariableDefaultValue && !hasLocationDefaultValue) { - return false; - } - - const nullableLocationType = locationType.ofType; - return isTypeSubTypeOf(schema, varType, nullableLocationType); - } - - return isTypeSubTypeOf(schema, varType, locationType); -} - -// Spec Section: "Executable Definitions" - -/** - * This set includes all validation rules defined by the GraphQL spec. - * - * The order of the rules in this list has been adjusted to lead to the - * most clear output when encountering multiple validation errors. - */ -const specifiedRules = Object.freeze([ - ExecutableDefinitionsRule, - UniqueOperationNamesRule, - LoneAnonymousOperationRule, - SingleFieldSubscriptionsRule, - KnownTypeNamesRule, - FragmentsOnCompositeTypesRule, - VariablesAreInputTypesRule, - ScalarLeafsRule, - FieldsOnCorrectTypeRule, - UniqueFragmentNamesRule, - KnownFragmentNamesRule, - NoUnusedFragmentsRule, - PossibleFragmentSpreadsRule, - NoFragmentCyclesRule, - UniqueVariableNamesRule, - NoUndefinedVariablesRule, - NoUnusedVariablesRule, - KnownDirectivesRule, - UniqueDirectivesPerLocationRule, - KnownArgumentNamesRule, - UniqueArgumentNamesRule, - ValuesOfCorrectTypeRule, - ProvidedRequiredArgumentsRule, - VariablesInAllowedPositionRule, - OverlappingFieldsCanBeMergedRule, - UniqueInputFieldNamesRule, -]); -/** - * @internal - */ - -const specifiedSDLRules = Object.freeze([ - LoneSchemaDefinitionRule, - UniqueOperationTypesRule, - UniqueTypeNamesRule, - UniqueEnumValueNamesRule, - UniqueFieldDefinitionNamesRule, - UniqueArgumentDefinitionNamesRule, - UniqueDirectiveNamesRule, - KnownTypeNamesRule, - KnownDirectivesRule, - UniqueDirectivesPerLocationRule, - PossibleTypeExtensionsRule, - KnownArgumentNamesOnDirectivesRule, - UniqueArgumentNamesRule, - UniqueInputFieldNamesRule, - ProvidedRequiredArgumentsOnDirectivesRule, -]); - -/** - * An instance of this class is passed as the "this" context to all validators, - * allowing access to commonly useful contextual information from within a - * validation rule. - */ -class ASTValidationContext { - constructor(ast, onError) { - this._ast = ast; - this._fragments = undefined; - this._fragmentSpreads = new Map(); - this._recursivelyReferencedFragments = new Map(); - this._onError = onError; - } - - get [Symbol.toStringTag]() { - return 'ASTValidationContext'; - } - - reportError(error) { - this._onError(error); - } - - getDocument() { - return this._ast; - } - - getFragment(name) { - let fragments; - - if (this._fragments) { - fragments = this._fragments; - } else { - fragments = Object.create(null); - - for (const defNode of this.getDocument().definitions) { - if (defNode.kind === Kind.FRAGMENT_DEFINITION) { - fragments[defNode.name.value] = defNode; - } - } - - this._fragments = fragments; - } - - return fragments[name]; - } - - getFragmentSpreads(node) { - let spreads = this._fragmentSpreads.get(node); - - if (!spreads) { - spreads = []; - const setsToVisit = [node]; - let set; - - while ((set = setsToVisit.pop())) { - for (const selection of set.selections) { - if (selection.kind === Kind.FRAGMENT_SPREAD) { - spreads.push(selection); - } else if (selection.selectionSet) { - setsToVisit.push(selection.selectionSet); - } - } - } - - this._fragmentSpreads.set(node, spreads); - } - - return spreads; - } - - getRecursivelyReferencedFragments(operation) { - let fragments = this._recursivelyReferencedFragments.get(operation); - - if (!fragments) { - fragments = []; - const collectedNames = Object.create(null); - const nodesToVisit = [operation.selectionSet]; - let node; - - while ((node = nodesToVisit.pop())) { - for (const spread of this.getFragmentSpreads(node)) { - const fragName = spread.name.value; - - if (collectedNames[fragName] !== true) { - collectedNames[fragName] = true; - const fragment = this.getFragment(fragName); - - if (fragment) { - fragments.push(fragment); - nodesToVisit.push(fragment.selectionSet); - } - } - } - } - - this._recursivelyReferencedFragments.set(operation, fragments); - } - - return fragments; - } -} -class SDLValidationContext extends ASTValidationContext { - constructor(ast, schema, onError) { - super(ast, onError); - this._schema = schema; - } - - get [Symbol.toStringTag]() { - return 'SDLValidationContext'; - } - - getSchema() { - return this._schema; - } -} -class ValidationContext extends ASTValidationContext { - constructor(schema, ast, typeInfo, onError) { - super(ast, onError); - this._schema = schema; - this._typeInfo = typeInfo; - this._variableUsages = new Map(); - this._recursiveVariableUsages = new Map(); - } - - get [Symbol.toStringTag]() { - return 'ValidationContext'; - } - - getSchema() { - return this._schema; - } - - getVariableUsages(node) { - let usages = this._variableUsages.get(node); - - if (!usages) { - const newUsages = []; - const typeInfo = new TypeInfo(this._schema); - visit( - node, - visitWithTypeInfo(typeInfo, { - VariableDefinition: () => false, - - Variable(variable) { - newUsages.push({ - node: variable, - type: typeInfo.getInputType(), - defaultValue: typeInfo.getDefaultValue(), - }); - }, - }), - ); - usages = newUsages; - - this._variableUsages.set(node, usages); - } - - return usages; - } - - getRecursiveVariableUsages(operation) { - let usages = this._recursiveVariableUsages.get(operation); - - if (!usages) { - usages = this.getVariableUsages(operation); - - for (const frag of this.getRecursivelyReferencedFragments(operation)) { - usages = usages.concat(this.getVariableUsages(frag)); - } - - this._recursiveVariableUsages.set(operation, usages); - } - - return usages; - } - - getType() { - return this._typeInfo.getType(); - } - - getParentType() { - return this._typeInfo.getParentType(); - } - - getInputType() { - return this._typeInfo.getInputType(); - } - - getParentInputType() { - return this._typeInfo.getParentInputType(); - } - - getFieldDef() { - return this._typeInfo.getFieldDef(); - } - - getDirective() { - return this._typeInfo.getDirective(); - } - - getArgument() { - return this._typeInfo.getArgument(); - } - - getEnumValue() { - return this._typeInfo.getEnumValue(); - } -} - -/** - * Implements the "Validation" section of the spec. - * - * Validation runs synchronously, returning an array of encountered errors, or - * an empty array if no errors were encountered and the document is valid. - * - * A list of specific validation rules may be provided. If not provided, the - * default list of rules defined by the GraphQL specification will be used. - * - * Each validation rules is a function which returns a visitor - * (see the language/visitor API). Visitor methods are expected to return - * GraphQLErrors, or Arrays of GraphQLErrors when invalid. - * - * Validate will stop validation after a `maxErrors` limit has been reached. - * Attackers can send pathologically invalid queries to induce a DoS attack, - * so by default `maxErrors` set to 100 errors. - * - * Optionally a custom TypeInfo instance may be provided. If not provided, one - * will be created from the provided schema. - */ - -function validate( - schema, - documentAST, - rules = specifiedRules, - options, - /** @deprecated will be removed in 17.0.0 */ - typeInfo = new TypeInfo(schema), -) { - var _options$maxErrors; - - const maxErrors = - (_options$maxErrors = - options === null || options === void 0 ? void 0 : options.maxErrors) !== - null && _options$maxErrors !== void 0 - ? _options$maxErrors - : 100; - documentAST || devAssert(false, 'Must provide document.'); // If the schema used for validation is invalid, throw an error. - - assertValidSchema(schema); - const abortObj = Object.freeze({}); - const errors = []; - const context = new ValidationContext( - schema, - documentAST, - typeInfo, - (error) => { - if (errors.length >= maxErrors) { - errors.push( - new GraphQLError( - 'Too many validation errors, error limit reached. Validation aborted.', - ), - ); // eslint-disable-next-line @typescript-eslint/no-throw-literal - - throw abortObj; - } - - errors.push(error); - }, - ); // This uses a specialized visitor which runs multiple visitors in parallel, - // while maintaining the visitor skip and break API. - - const visitor = visitInParallel(rules.map((rule) => rule(context))); // Visit the whole document with each instance of all provided rules. - - try { - visit(documentAST, visitWithTypeInfo(typeInfo, visitor)); - } catch (e) { - if (e !== abortObj) { - throw e; - } - } - - return errors; -} -/** - * @internal - */ - -function validateSDL( - documentAST, - schemaToExtend, - rules = specifiedSDLRules, -) { - const errors = []; - const context = new SDLValidationContext( - documentAST, - schemaToExtend, - (error) => { - errors.push(error); - }, - ); - const visitors = rules.map((rule) => rule(context)); - visit(documentAST, visitInParallel(visitors)); - return errors; -} -/** - * Utility function which asserts a SDL document is valid by throwing an error - * if it is invalid. - * - * @internal - */ - -function assertValidSDL(documentAST) { - const errors = validateSDL(documentAST); - - if (errors.length !== 0) { - throw new Error(errors.map((error) => error.message).join('\n\n')); - } -} - -/** - * Memoizes the provided three-argument function. - */ -function memoize3(fn) { - let cache0; - return function memoized(a1, a2, a3) { - if (cache0 === undefined) { - cache0 = new WeakMap(); - } - - let cache1 = cache0.get(a1); - - if (cache1 === undefined) { - cache1 = new WeakMap(); - cache0.set(a1, cache1); - } - - let cache2 = cache1.get(a2); - - if (cache2 === undefined) { - cache2 = new WeakMap(); - cache1.set(a2, cache2); - } - - let fnResult = cache2.get(a3); - - if (fnResult === undefined) { - fnResult = fn(a1, a2, a3); - cache2.set(a3, fnResult); - } - - return fnResult; - }; -} - -/** - * This function transforms a JS object `ObjMap>` into - * a `Promise>` - * - * This is akin to bluebird's `Promise.props`, but implemented only using - * `Promise.all` so it will work with any implementation of ES6 promises. - */ -function promiseForObject(object) { - return Promise.all(Object.values(object)).then((resolvedValues) => { - const resolvedObject = Object.create(null); - - for (const [i, key] of Object.keys(object).entries()) { - resolvedObject[key] = resolvedValues[i]; - } - - return resolvedObject; - }); -} - -/** - * Similar to Array.prototype.reduce(), however the reducing callback may return - * a Promise, in which case reduction will continue after each promise resolves. - * - * If the callback does not return a Promise, then this function will also not - * return a Promise. - */ -function promiseReduce(values, callbackFn, initialValue) { - let accumulator = initialValue; - - for (const value of values) { - accumulator = isPromise(accumulator) - ? accumulator.then((resolved) => callbackFn(resolved, value)) - : callbackFn(accumulator, value); - } - - return accumulator; -} - -/** - * Sometimes a non-error is thrown, wrap it as an Error instance to ensure a consistent Error interface. - */ - -function toError(thrownValue) { - return thrownValue instanceof Error - ? thrownValue - : new NonErrorThrown(thrownValue); -} - -class NonErrorThrown extends Error { - constructor(thrownValue) { - super('Unexpected error value: ' + inspect$1(thrownValue)); - this.name = 'NonErrorThrown'; - this.thrownValue = thrownValue; - } -} - -/** - * Given an arbitrary value, presumably thrown while attempting to execute a - * GraphQL operation, produce a new GraphQLError aware of the location in the - * document responsible for the original Error. - */ - -function locatedError(rawOriginalError, nodes, path) { - var _nodes; - - const originalError = toError(rawOriginalError); // Note: this uses a brand-check to support GraphQL errors originating from other contexts. - - if (isLocatedGraphQLError(originalError)) { - return originalError; - } - - return new GraphQLError(originalError.message, { - nodes: - (_nodes = originalError.nodes) !== null && _nodes !== void 0 - ? _nodes - : nodes, - source: originalError.source, - positions: originalError.positions, - path, - originalError, - }); -} - -function isLocatedGraphQLError(error) { - return Array.isArray(error.path); -} - -/** - * A memoized collection of relevant subfields with regard to the return - * type. Memoizing ensures the subfields are not repeatedly calculated, which - * saves overhead when resolving lists of values. - */ - -const collectSubfields = memoize3((exeContext, returnType, fieldNodes) => - collectSubfields$1( - exeContext.schema, - exeContext.fragments, - exeContext.variableValues, - returnType, - fieldNodes, - ), -); -/** - * Terminology - * - * "Definitions" are the generic name for top-level statements in the document. - * Examples of this include: - * 1) Operations (such as a query) - * 2) Fragments - * - * "Operations" are a generic name for requests in the document. - * Examples of this include: - * 1) query, - * 2) mutation - * - * "Selections" are the definitions that can appear legally and at - * single level of the query. These include: - * 1) field references e.g `a` - * 2) fragment "spreads" e.g. `...c` - * 3) inline fragment "spreads" e.g. `...on Type { a }` - */ - -/** - * Data that must be available at all points during query execution. - * - * Namely, schema of the type system that is currently executing, - * and the fragments defined in the query document - */ - -/** - * Implements the "Executing requests" section of the GraphQL specification. - * - * Returns either a synchronous ExecutionResult (if all encountered resolvers - * are synchronous), or a Promise of an ExecutionResult that will eventually be - * resolved and never rejected. - * - * If the arguments to this function do not result in a legal execution context, - * a GraphQLError will be thrown immediately explaining the invalid input. - */ -function execute$1(args) { - // Temporary for v15 to v16 migration. Remove in v17 - arguments.length < 2 || - devAssert( - false, - 'graphql@16 dropped long-deprecated support for positional arguments, please pass an object instead.', - ); - const { schema, document, variableValues, rootValue } = args; // If arguments are missing or incorrect, throw an error. - - assertValidExecutionArguments(schema, document, variableValues); // If a valid execution context cannot be created due to incorrect arguments, - // a "Response" with only errors is returned. - - const exeContext = buildExecutionContext(args); // Return early errors if execution context failed. - - if (!('schema' in exeContext)) { - return { - errors: exeContext, - }; - } // Return a Promise that will eventually resolve to the data described by - // The "Response" section of the GraphQL specification. - // - // If errors are encountered while executing a GraphQL field, only that - // field and its descendants will be omitted, and sibling fields will still - // be executed. An execution which encounters errors will still result in a - // resolved Promise. - // - // Errors from sub-fields of a NonNull type may propagate to the top level, - // at which point we still log the error and null the parent field, which - // in this case is the entire response. - - try { - const { operation } = exeContext; - const result = executeOperation(exeContext, operation, rootValue); - - if (isPromise(result)) { - return result.then( - (data) => buildResponse(data, exeContext.errors), - (error) => { - exeContext.errors.push(error); - return buildResponse(null, exeContext.errors); - }, - ); - } - - return buildResponse(result, exeContext.errors); - } catch (error) { - exeContext.errors.push(error); - return buildResponse(null, exeContext.errors); - } -} -/** - * Given a completed execution context and data, build the `{ errors, data }` - * response defined by the "Response" section of the GraphQL specification. - */ - -function buildResponse(data, errors) { - return errors.length === 0 - ? { - data, - } - : { - errors, - data, - }; -} -/** - * Essential assertions before executing to provide developer feedback for - * improper use of the GraphQL library. - * - * @internal - */ - -function assertValidExecutionArguments( - schema, - document, - rawVariableValues, -) { - document || devAssert(false, 'Must provide document.'); // If the schema used for execution is invalid, throw an error. - - assertValidSchema(schema); // Variables, if provided, must be an object. - - rawVariableValues == null || - isObjectLike(rawVariableValues) || - devAssert( - false, - 'Variables must be provided as an Object where each property is a variable value. Perhaps look to see if an unparsed JSON string was provided.', - ); -} -/** - * Constructs a ExecutionContext object from the arguments passed to - * execute, which we will pass throughout the other execution methods. - * - * Throws a GraphQLError if a valid execution context cannot be created. - * - * @internal - */ - -function buildExecutionContext(args) { - var _definition$name, _operation$variableDe; - - const { - schema, - document, - rootValue, - contextValue, - variableValues: rawVariableValues, - operationName, - fieldResolver, - typeResolver, - subscribeFieldResolver, - } = args; - let operation; - const fragments = Object.create(null); - - for (const definition of document.definitions) { - switch (definition.kind) { - case Kind.OPERATION_DEFINITION: - if (operationName == null) { - if (operation !== undefined) { - return [ - new GraphQLError( - 'Must provide operation name if query contains multiple operations.', - ), - ]; - } - - operation = definition; - } else if ( - ((_definition$name = definition.name) === null || - _definition$name === void 0 - ? void 0 - : _definition$name.value) === operationName - ) { - operation = definition; - } - - break; - - case Kind.FRAGMENT_DEFINITION: - fragments[definition.name.value] = definition; - break; - } - } - - if (!operation) { - if (operationName != null) { - return [new GraphQLError(`Unknown operation named "${operationName}".`)]; - } - - return [new GraphQLError('Must provide an operation.')]; - } // FIXME: https://github.com/graphql/graphql-js/issues/2203 - - /* c8 ignore next */ - - const variableDefinitions = - (_operation$variableDe = operation.variableDefinitions) !== null && - _operation$variableDe !== void 0 - ? _operation$variableDe - : []; - const coercedVariableValues = getVariableValues( - schema, - variableDefinitions, - rawVariableValues !== null && rawVariableValues !== void 0 - ? rawVariableValues - : {}, - { - maxErrors: 50, - }, - ); - - if (coercedVariableValues.errors) { - return coercedVariableValues.errors; - } - - return { - schema, - fragments, - rootValue, - contextValue, - operation, - variableValues: coercedVariableValues.coerced, - fieldResolver: - fieldResolver !== null && fieldResolver !== void 0 - ? fieldResolver - : defaultFieldResolver, - typeResolver: - typeResolver !== null && typeResolver !== void 0 - ? typeResolver - : defaultTypeResolver, - subscribeFieldResolver: - subscribeFieldResolver !== null && subscribeFieldResolver !== void 0 - ? subscribeFieldResolver - : defaultFieldResolver, - errors: [], - }; -} -/** - * Implements the "Executing operations" section of the spec. - */ - -function executeOperation(exeContext, operation, rootValue) { - const rootType = exeContext.schema.getRootType(operation.operation); - - if (rootType == null) { - throw new GraphQLError( - `Schema is not configured to execute ${operation.operation} operation.`, - { - nodes: operation, - }, - ); - } - - const rootFields = collectFields( - exeContext.schema, - exeContext.fragments, - exeContext.variableValues, - rootType, - operation.selectionSet, - ); - const path = undefined; - - switch (operation.operation) { - case OperationTypeNode.QUERY: - return executeFields(exeContext, rootType, rootValue, path, rootFields); - - case OperationTypeNode.MUTATION: - return executeFieldsSerially( - exeContext, - rootType, - rootValue, - path, - rootFields, - ); - - case OperationTypeNode.SUBSCRIPTION: - // TODO: deprecate `subscribe` and move all logic here - // Temporary solution until we finish merging execute and subscribe together - return executeFields(exeContext, rootType, rootValue, path, rootFields); - } -} -/** - * Implements the "Executing selection sets" section of the spec - * for fields that must be executed serially. - */ - -function executeFieldsSerially( - exeContext, - parentType, - sourceValue, - path, - fields, -) { - return promiseReduce( - fields.entries(), - (results, [responseName, fieldNodes]) => { - const fieldPath = addPath(path, responseName, parentType.name); - const result = executeField( - exeContext, - parentType, - sourceValue, - fieldNodes, - fieldPath, - ); - - if (result === undefined) { - return results; - } - - if (isPromise(result)) { - return result.then((resolvedResult) => { - results[responseName] = resolvedResult; - return results; - }); - } - - results[responseName] = result; - return results; - }, - Object.create(null), - ); -} -/** - * Implements the "Executing selection sets" section of the spec - * for fields that may be executed in parallel. - */ - -function executeFields(exeContext, parentType, sourceValue, path, fields) { - const results = Object.create(null); - let containsPromise = false; - - for (const [responseName, fieldNodes] of fields.entries()) { - const fieldPath = addPath(path, responseName, parentType.name); - const result = executeField( - exeContext, - parentType, - sourceValue, - fieldNodes, - fieldPath, - ); - - if (result !== undefined) { - results[responseName] = result; - - if (isPromise(result)) { - containsPromise = true; - } - } - } // If there are no promises, we can just return the object - - if (!containsPromise) { - return results; - } // Otherwise, results is a map from field name to the result of resolving that - // field, which is possibly a promise. Return a promise that will return this - // same map, but with any promises replaced with the values they resolved to. - - return promiseForObject(results); -} -/** - * Implements the "Executing fields" section of the spec - * In particular, this function figures out the value that the field returns by - * calling its resolve function, then calls completeValue to complete promises, - * serialize scalars, or execute the sub-selection-set for objects. - */ - -function executeField(exeContext, parentType, source, fieldNodes, path) { - var _fieldDef$resolve; - - const fieldDef = getFieldDef(exeContext.schema, parentType, fieldNodes[0]); - - if (!fieldDef) { - return; - } - - const returnType = fieldDef.type; - const resolveFn = - (_fieldDef$resolve = fieldDef.resolve) !== null && - _fieldDef$resolve !== void 0 - ? _fieldDef$resolve - : exeContext.fieldResolver; - const info = buildResolveInfo( - exeContext, - fieldDef, - fieldNodes, - parentType, - path, - ); // Get the resolve function, regardless of if its result is normal or abrupt (error). - - try { - // Build a JS object of arguments from the field.arguments AST, using the - // variables scope to fulfill any variable references. - // TODO: find a way to memoize, in case this field is within a List type. - const args = getArgumentValues( - fieldDef, - fieldNodes[0], - exeContext.variableValues, - ); // The resolve function's optional third argument is a context value that - // is provided to every resolve function within an execution. It is commonly - // used to represent an authenticated user, or request-specific caches. - - const contextValue = exeContext.contextValue; - const result = resolveFn(source, args, contextValue, info); - let completed; - - if (isPromise(result)) { - completed = result.then((resolved) => - completeValue(exeContext, returnType, fieldNodes, info, path, resolved), - ); - } else { - completed = completeValue( - exeContext, - returnType, - fieldNodes, - info, - path, - result, - ); - } - - if (isPromise(completed)) { - // Note: we don't rely on a `catch` method, but we do expect "thenable" - // to take a second callback for the error case. - return completed.then(undefined, (rawError) => { - const error = locatedError(rawError, fieldNodes, pathToArray(path)); - return handleFieldError(error, returnType, exeContext); - }); - } - - return completed; - } catch (rawError) { - const error = locatedError(rawError, fieldNodes, pathToArray(path)); - return handleFieldError(error, returnType, exeContext); - } -} -/** - * @internal - */ - -function buildResolveInfo( - exeContext, - fieldDef, - fieldNodes, - parentType, - path, -) { - // The resolve function's optional fourth argument is a collection of - // information about the current execution state. - return { - fieldName: fieldDef.name, - fieldNodes, - returnType: fieldDef.type, - parentType, - path, - schema: exeContext.schema, - fragments: exeContext.fragments, - rootValue: exeContext.rootValue, - operation: exeContext.operation, - variableValues: exeContext.variableValues, - }; -} - -function handleFieldError(error, returnType, exeContext) { - // If the field type is non-nullable, then it is resolved without any - // protection from errors, however it still properly locates the error. - if (isNonNullType(returnType)) { - throw error; - } // Otherwise, error protection is applied, logging the error and resolving - // a null value for this field if one is encountered. - - exeContext.errors.push(error); - return null; -} -/** - * Implements the instructions for completeValue as defined in the - * "Value Completion" section of the spec. - * - * If the field type is Non-Null, then this recursively completes the value - * for the inner type. It throws a field error if that completion returns null, - * as per the "Nullability" section of the spec. - * - * If the field type is a List, then this recursively completes the value - * for the inner type on each item in the list. - * - * If the field type is a Scalar or Enum, ensures the completed value is a legal - * value of the type by calling the `serialize` method of GraphQL type - * definition. - * - * If the field is an abstract type, determine the runtime type of the value - * and then complete based on that type - * - * Otherwise, the field type expects a sub-selection set, and will complete the - * value by executing all sub-selections. - */ - -function completeValue(exeContext, returnType, fieldNodes, info, path, result) { - // If result is an Error, throw a located error. - if (result instanceof Error) { - throw result; - } // If field type is NonNull, complete for inner type, and throw field error - // if result is null. - - if (isNonNullType(returnType)) { - const completed = completeValue( - exeContext, - returnType.ofType, - fieldNodes, - info, - path, - result, - ); - - if (completed === null) { - throw new Error( - `Cannot return null for non-nullable field ${info.parentType.name}.${info.fieldName}.`, - ); - } - - return completed; - } // If result value is null or undefined then return null. - - if (result == null) { - return null; - } // If field type is List, complete each item in the list with the inner type - - if (isListType(returnType)) { - return completeListValue( - exeContext, - returnType, - fieldNodes, - info, - path, - result, - ); - } // If field type is a leaf type, Scalar or Enum, serialize to a valid value, - // returning null if serialization is not possible. - - if (isLeafType(returnType)) { - return completeLeafValue(returnType, result); - } // If field type is an abstract type, Interface or Union, determine the - // runtime Object type and complete for that type. - - if (isAbstractType(returnType)) { - return completeAbstractValue( - exeContext, - returnType, - fieldNodes, - info, - path, - result, - ); - } // If field type is Object, execute and complete all sub-selections. - - if (isObjectType(returnType)) { - return completeObjectValue( - exeContext, - returnType, - fieldNodes, - info, - path, - result, - ); - } - /* c8 ignore next 6 */ - // Not reachable, all possible output types have been considered. - - invariant$1( - false, - 'Cannot complete value of unexpected output type: ' + inspect$1(returnType), - ); -} -/** - * Complete a list value by completing each item in the list with the - * inner type - */ - -function completeListValue( - exeContext, - returnType, - fieldNodes, - info, - path, - result, -) { - if (!isIterableObject(result)) { - throw new GraphQLError( - `Expected Iterable, but did not find one for field "${info.parentType.name}.${info.fieldName}".`, - ); - } // This is specified as a simple map, however we're optimizing the path - // where the list contains no Promises by avoiding creating another Promise. - - const itemType = returnType.ofType; - let containsPromise = false; - const completedResults = Array.from(result, (item, index) => { - // No need to modify the info object containing the path, - // since from here on it is not ever accessed by resolver functions. - const itemPath = addPath(path, index, undefined); - - try { - let completedItem; - - if (isPromise(item)) { - completedItem = item.then((resolved) => - completeValue( - exeContext, - itemType, - fieldNodes, - info, - itemPath, - resolved, - ), - ); - } else { - completedItem = completeValue( - exeContext, - itemType, - fieldNodes, - info, - itemPath, - item, - ); - } - - if (isPromise(completedItem)) { - containsPromise = true; // Note: we don't rely on a `catch` method, but we do expect "thenable" - // to take a second callback for the error case. - - return completedItem.then(undefined, (rawError) => { - const error = locatedError( - rawError, - fieldNodes, - pathToArray(itemPath), - ); - return handleFieldError(error, itemType, exeContext); - }); - } - - return completedItem; - } catch (rawError) { - const error = locatedError(rawError, fieldNodes, pathToArray(itemPath)); - return handleFieldError(error, itemType, exeContext); - } - }); - return containsPromise ? Promise.all(completedResults) : completedResults; -} -/** - * Complete a Scalar or Enum by serializing to a valid value, returning - * null if serialization is not possible. - */ - -function completeLeafValue(returnType, result) { - const serializedResult = returnType.serialize(result); - - if (serializedResult == null) { - throw new Error( - `Expected \`${inspect$1(returnType)}.serialize(${inspect$1(result)})\` to ` + - `return non-nullable value, returned: ${inspect$1(serializedResult)}`, - ); - } - - return serializedResult; -} -/** - * Complete a value of an abstract type by determining the runtime object type - * of that value, then complete the value for that type. - */ - -function completeAbstractValue( - exeContext, - returnType, - fieldNodes, - info, - path, - result, -) { - var _returnType$resolveTy; - - const resolveTypeFn = - (_returnType$resolveTy = returnType.resolveType) !== null && - _returnType$resolveTy !== void 0 - ? _returnType$resolveTy - : exeContext.typeResolver; - const contextValue = exeContext.contextValue; - const runtimeType = resolveTypeFn(result, contextValue, info, returnType); - - if (isPromise(runtimeType)) { - return runtimeType.then((resolvedRuntimeType) => - completeObjectValue( - exeContext, - ensureValidRuntimeType( - resolvedRuntimeType, - exeContext, - returnType, - fieldNodes, - info, - result, - ), - fieldNodes, - info, - path, - result, - ), - ); - } - - return completeObjectValue( - exeContext, - ensureValidRuntimeType( - runtimeType, - exeContext, - returnType, - fieldNodes, - info, - result, - ), - fieldNodes, - info, - path, - result, - ); -} - -function ensureValidRuntimeType( - runtimeTypeName, - exeContext, - returnType, - fieldNodes, - info, - result, -) { - if (runtimeTypeName == null) { - throw new GraphQLError( - `Abstract type "${returnType.name}" must resolve to an Object type at runtime for field "${info.parentType.name}.${info.fieldName}". Either the "${returnType.name}" type should provide a "resolveType" function or each possible type should provide an "isTypeOf" function.`, - fieldNodes, - ); - } // releases before 16.0.0 supported returning `GraphQLObjectType` from `resolveType` - // TODO: remove in 17.0.0 release - - if (isObjectType(runtimeTypeName)) { - throw new GraphQLError( - 'Support for returning GraphQLObjectType from resolveType was removed in graphql-js@16.0.0 please return type name instead.', - ); - } - - if (typeof runtimeTypeName !== 'string') { - throw new GraphQLError( - `Abstract type "${returnType.name}" must resolve to an Object type at runtime for field "${info.parentType.name}.${info.fieldName}" with ` + - `value ${inspect$1(result)}, received "${inspect$1(runtimeTypeName)}".`, - ); - } - - const runtimeType = exeContext.schema.getType(runtimeTypeName); - - if (runtimeType == null) { - throw new GraphQLError( - `Abstract type "${returnType.name}" was resolved to a type "${runtimeTypeName}" that does not exist inside the schema.`, - { - nodes: fieldNodes, - }, - ); - } - - if (!isObjectType(runtimeType)) { - throw new GraphQLError( - `Abstract type "${returnType.name}" was resolved to a non-object type "${runtimeTypeName}".`, - { - nodes: fieldNodes, - }, - ); - } - - if (!exeContext.schema.isSubType(returnType, runtimeType)) { - throw new GraphQLError( - `Runtime Object type "${runtimeType.name}" is not a possible type for "${returnType.name}".`, - { - nodes: fieldNodes, - }, - ); - } - - return runtimeType; -} -/** - * Complete an Object value by executing all sub-selections. - */ - -function completeObjectValue( - exeContext, - returnType, - fieldNodes, - info, - path, - result, -) { - // Collect sub-fields to execute to complete this value. - const subFieldNodes = collectSubfields(exeContext, returnType, fieldNodes); // If there is an isTypeOf predicate function, call it with the - // current result. If isTypeOf returns false, then raise an error rather - // than continuing execution. - - if (returnType.isTypeOf) { - const isTypeOf = returnType.isTypeOf(result, exeContext.contextValue, info); - - if (isPromise(isTypeOf)) { - return isTypeOf.then((resolvedIsTypeOf) => { - if (!resolvedIsTypeOf) { - throw invalidReturnTypeError(returnType, result, fieldNodes); - } - - return executeFields( - exeContext, - returnType, - result, - path, - subFieldNodes, - ); - }); - } - - if (!isTypeOf) { - throw invalidReturnTypeError(returnType, result, fieldNodes); - } - } - - return executeFields(exeContext, returnType, result, path, subFieldNodes); -} - -function invalidReturnTypeError(returnType, result, fieldNodes) { - return new GraphQLError( - `Expected value of type "${returnType.name}" but got: ${inspect$1(result)}.`, - { - nodes: fieldNodes, - }, - ); -} -/** - * If a resolveType function is not given, then a default resolve behavior is - * used which attempts two strategies: - * - * First, See if the provided value has a `__typename` field defined, if so, use - * that value as name of the resolved type. - * - * Otherwise, test each possible type for the abstract type by calling - * isTypeOf for the object being coerced, returning the first type that matches. - */ - -const defaultTypeResolver = function ( - value, - contextValue, - info, - abstractType, -) { - // First, look for `__typename`. - if (isObjectLike(value) && typeof value.__typename === 'string') { - return value.__typename; - } // Otherwise, test each possible type. - - const possibleTypes = info.schema.getPossibleTypes(abstractType); - const promisedIsTypeOfResults = []; - - for (let i = 0; i < possibleTypes.length; i++) { - const type = possibleTypes[i]; - - if (type.isTypeOf) { - const isTypeOfResult = type.isTypeOf(value, contextValue, info); - - if (isPromise(isTypeOfResult)) { - promisedIsTypeOfResults[i] = isTypeOfResult; - } else if (isTypeOfResult) { - return type.name; - } - } - } - - if (promisedIsTypeOfResults.length) { - return Promise.all(promisedIsTypeOfResults).then((isTypeOfResults) => { - for (let i = 0; i < isTypeOfResults.length; i++) { - if (isTypeOfResults[i]) { - return possibleTypes[i].name; - } - } - }); - } -}; -/** - * If a resolve function is not given, then a default resolve behavior is used - * which takes the property of the source object of the same name as the field - * and returns it as the result, or if it's a function, returns the result - * of calling that function while passing along args and context value. - */ - -const defaultFieldResolver = function ( - source, - args, - contextValue, - info, -) { - // ensure source is a value for which property access is acceptable. - if (isObjectLike(source) || typeof source === 'function') { - const property = source[info.fieldName]; - - if (typeof property === 'function') { - return source[info.fieldName](args, contextValue, info); - } - - return property; - } -}; -/** - * This method looks up the field on the given type definition. - * It has special casing for the three introspection fields, - * __schema, __type and __typename. __typename is special because - * it can always be queried as a field, even in situations where no - * other fields are allowed, like on a Union. __schema and __type - * could get automatically added to the query type, but that would - * require mutating type definitions, which would cause issues. - * - * @internal - */ - -function getFieldDef(schema, parentType, fieldNode) { - const fieldName = fieldNode.name.value; - - if ( - fieldName === SchemaMetaFieldDef.name && - schema.getQueryType() === parentType - ) { - return SchemaMetaFieldDef; - } else if ( - fieldName === TypeMetaFieldDef.name && - schema.getQueryType() === parentType - ) { - return TypeMetaFieldDef; - } else if (fieldName === TypeNameMetaFieldDef.name) { - return TypeNameMetaFieldDef; - } - - return parentType.getFields()[fieldName]; -} - -/** - * Returns true if the provided object implements the AsyncIterator protocol via - * implementing a `Symbol.asyncIterator` method. - */ -function isAsyncIterable$2(maybeAsyncIterable) { - return ( - typeof (maybeAsyncIterable === null || maybeAsyncIterable === void 0 - ? void 0 - : maybeAsyncIterable[Symbol.asyncIterator]) === 'function' - ); -} - -/** - * Given an AsyncIterable and a callback function, return an AsyncIterator - * which produces values mapped via calling the callback function. - */ -function mapAsyncIterator$1(iterable, callback) { - const iterator = iterable[Symbol.asyncIterator](); - - async function mapResult(result) { - if (result.done) { - return result; - } - - try { - return { - value: await callback(result.value), - done: false, - }; - } catch (error) { - /* c8 ignore start */ - // FIXME: add test case - if (typeof iterator.return === 'function') { - try { - await iterator.return(); - } catch (_e) { - /* ignore error */ - } - } - - throw error; - /* c8 ignore stop */ - } - } - - return { - async next() { - return mapResult(await iterator.next()); - }, - - async return() { - // If iterator.return() does not exist, then type R must be undefined. - return typeof iterator.return === 'function' - ? mapResult(await iterator.return()) - : { - value: undefined, - done: true, - }; - }, - - async throw(error) { - if (typeof iterator.throw === 'function') { - return mapResult(await iterator.throw(error)); - } - - throw error; - }, - - [Symbol.asyncIterator]() { - return this; - }, - }; -} - -/** - * Implements the "Subscribe" algorithm described in the GraphQL specification. - * - * Returns a Promise which resolves to either an AsyncIterator (if successful) - * or an ExecutionResult (error). The promise will be rejected if the schema or - * other arguments to this function are invalid, or if the resolved event stream - * is not an async iterable. - * - * If the client-provided arguments to this function do not result in a - * compliant subscription, a GraphQL Response (ExecutionResult) with - * descriptive errors and no data will be returned. - * - * If the source stream could not be created due to faulty subscription - * resolver logic or underlying systems, the promise will resolve to a single - * ExecutionResult containing `errors` and no `data`. - * - * If the operation succeeded, the promise resolves to an AsyncIterator, which - * yields a stream of ExecutionResults representing the response stream. - * - * Accepts either an object with named arguments, or individual arguments. - */ - -async function subscribe(args) { - // Temporary for v15 to v16 migration. Remove in v17 - arguments.length < 2 || - devAssert( - false, - 'graphql@16 dropped long-deprecated support for positional arguments, please pass an object instead.', - ); - const resultOrStream = await createSourceEventStream(args); - - if (!isAsyncIterable$2(resultOrStream)) { - return resultOrStream; - } // For each payload yielded from a subscription, map it over the normal - // GraphQL `execute` function, with `payload` as the rootValue. - // This implements the "MapSourceToResponseEvent" algorithm described in - // the GraphQL specification. The `execute` function provides the - // "ExecuteSubscriptionEvent" algorithm, as it is nearly identical to the - // "ExecuteQuery" algorithm, for which `execute` is also used. - - const mapSourceToResponse = (payload) => - execute$1({ ...args, rootValue: payload }); // Map every source value to a ExecutionResult value as described above. - - return mapAsyncIterator$1(resultOrStream, mapSourceToResponse); -} - -function toNormalizedArgs(args) { - const firstArg = args[0]; - - if (firstArg && 'document' in firstArg) { - return firstArg; - } - - return { - schema: firstArg, - // FIXME: when underlying TS bug fixed, see https://github.com/microsoft/TypeScript/issues/31613 - document: args[1], - rootValue: args[2], - contextValue: args[3], - variableValues: args[4], - operationName: args[5], - subscribeFieldResolver: args[6], - }; -} -/** - * Implements the "CreateSourceEventStream" algorithm described in the - * GraphQL specification, resolving the subscription source event stream. - * - * Returns a Promise which resolves to either an AsyncIterable (if successful) - * or an ExecutionResult (error). The promise will be rejected if the schema or - * other arguments to this function are invalid, or if the resolved event stream - * is not an async iterable. - * - * If the client-provided arguments to this function do not result in a - * compliant subscription, a GraphQL Response (ExecutionResult) with - * descriptive errors and no data will be returned. - * - * If the the source stream could not be created due to faulty subscription - * resolver logic or underlying systems, the promise will resolve to a single - * ExecutionResult containing `errors` and no `data`. - * - * If the operation succeeded, the promise resolves to the AsyncIterable for the - * event stream returned by the resolver. - * - * A Source Event Stream represents a sequence of events, each of which triggers - * a GraphQL execution for that event. - * - * This may be useful when hosting the stateful subscription service in a - * different process or machine than the stateless GraphQL execution engine, - * or otherwise separating these two steps. For more on this, see the - * "Supporting Subscriptions at Scale" information in the GraphQL specification. - */ - -async function createSourceEventStream(...rawArgs) { - const args = toNormalizedArgs(rawArgs); - const { schema, document, variableValues } = args; // If arguments are missing or incorrectly typed, this is an internal - // developer mistake which should throw an early error. - - assertValidExecutionArguments(schema, document, variableValues); // If a valid execution context cannot be created due to incorrect arguments, - // a "Response" with only errors is returned. - - const exeContext = buildExecutionContext(args); // Return early errors if execution context failed. - - if (!('schema' in exeContext)) { - return { - errors: exeContext, - }; - } - - try { - const eventStream = await executeSubscription(exeContext); // Assert field returned an event stream, otherwise yield an error. - - if (!isAsyncIterable$2(eventStream)) { - throw new Error( - 'Subscription field must return Async Iterable. ' + - `Received: ${inspect$1(eventStream)}.`, - ); - } - - return eventStream; - } catch (error) { - // If it GraphQLError, report it as an ExecutionResult, containing only errors and no data. - // Otherwise treat the error as a system-class error and re-throw it. - if (error instanceof GraphQLError) { - return { - errors: [error], - }; - } - - throw error; - } -} - -async function executeSubscription(exeContext) { - const { schema, fragments, operation, variableValues, rootValue } = - exeContext; - const rootType = schema.getSubscriptionType(); - - if (rootType == null) { - throw new GraphQLError( - 'Schema is not configured to execute subscription operation.', - { - nodes: operation, - }, - ); - } - - const rootFields = collectFields( - schema, - fragments, - variableValues, - rootType, - operation.selectionSet, - ); - const [responseName, fieldNodes] = [...rootFields.entries()][0]; - const fieldDef = getFieldDef(schema, rootType, fieldNodes[0]); - - if (!fieldDef) { - const fieldName = fieldNodes[0].name.value; - throw new GraphQLError( - `The subscription field "${fieldName}" is not defined.`, - { - nodes: fieldNodes, - }, - ); - } - - const path = addPath(undefined, responseName, rootType.name); - const info = buildResolveInfo( - exeContext, - fieldDef, - fieldNodes, - rootType, - path, - ); - - try { - var _fieldDef$subscribe; - - // Implements the "ResolveFieldEventStream" algorithm from GraphQL specification. - // It differs from "ResolveFieldValue" due to providing a different `resolveFn`. - // Build a JS object of arguments from the field.arguments AST, using the - // variables scope to fulfill any variable references. - const args = getArgumentValues(fieldDef, fieldNodes[0], variableValues); // The resolve function's optional third argument is a context value that - // is provided to every resolve function within an execution. It is commonly - // used to represent an authenticated user, or request-specific caches. - - const contextValue = exeContext.contextValue; // Call the `subscribe()` resolver or the default resolver to produce an - // AsyncIterable yielding raw payloads. - - const resolveFn = - (_fieldDef$subscribe = fieldDef.subscribe) !== null && - _fieldDef$subscribe !== void 0 - ? _fieldDef$subscribe - : exeContext.subscribeFieldResolver; - const eventStream = await resolveFn(rootValue, args, contextValue, info); - - if (eventStream instanceof Error) { - throw eventStream; - } - - return eventStream; - } catch (error) { - throw locatedError(error, fieldNodes, pathToArray(path)); - } -} - -/** - * Returns an operation AST given a document AST and optionally an operation - * name. If a name is not provided, an operation is only returned if only one is - * provided in the document. - */ - -function getOperationAST(documentAST, operationName) { - let operation = null; - - for (const definition of documentAST.definitions) { - if (definition.kind === Kind.OPERATION_DEFINITION) { - var _definition$name; - - if (operationName == null) { - // If no operation name was provided, only return an Operation if there - // is one defined in the document. Upon encountering the second, return - // null. - if (operation) { - return null; - } - - operation = definition; - } else if ( - ((_definition$name = definition.name) === null || - _definition$name === void 0 - ? void 0 - : _definition$name.value) === operationName - ) { - return definition; - } - } - } - - return operation; -} - -/** - * @internal - */ - -function extendSchemaImpl(schemaConfig, documentAST, options) { - var _schemaDef, _schemaDef$descriptio, _schemaDef2, _options$assumeValid; - - // Collect the type definitions and extensions found in the document. - const typeDefs = []; - const typeExtensionsMap = Object.create(null); // New directives and types are separate because a directives and types can - // have the same name. For example, a type named "skip". - - const directiveDefs = []; - let schemaDef; // Schema extensions are collected which may add additional operation types. - - const schemaExtensions = []; - - for (const def of documentAST.definitions) { - if (def.kind === Kind.SCHEMA_DEFINITION) { - schemaDef = def; - } else if (def.kind === Kind.SCHEMA_EXTENSION) { - schemaExtensions.push(def); - } else if (isTypeDefinitionNode(def)) { - typeDefs.push(def); - } else if (isTypeExtensionNode(def)) { - const extendedTypeName = def.name.value; - const existingTypeExtensions = typeExtensionsMap[extendedTypeName]; - typeExtensionsMap[extendedTypeName] = existingTypeExtensions - ? existingTypeExtensions.concat([def]) - : [def]; - } else if (def.kind === Kind.DIRECTIVE_DEFINITION) { - directiveDefs.push(def); - } - } // If this document contains no new types, extensions, or directives then - // return the same unmodified GraphQLSchema instance. - - if ( - Object.keys(typeExtensionsMap).length === 0 && - typeDefs.length === 0 && - directiveDefs.length === 0 && - schemaExtensions.length === 0 && - schemaDef == null - ) { - return schemaConfig; - } - - const typeMap = Object.create(null); - - for (const existingType of schemaConfig.types) { - typeMap[existingType.name] = extendNamedType(existingType); - } - - for (const typeNode of typeDefs) { - var _stdTypeMap$name; - - const name = typeNode.name.value; - typeMap[name] = - (_stdTypeMap$name = stdTypeMap[name]) !== null && - _stdTypeMap$name !== void 0 - ? _stdTypeMap$name - : buildType(typeNode); - } - - const operationTypes = { - // Get the extended root operation types. - query: schemaConfig.query && replaceNamedType(schemaConfig.query), - mutation: schemaConfig.mutation && replaceNamedType(schemaConfig.mutation), - subscription: - schemaConfig.subscription && replaceNamedType(schemaConfig.subscription), - // Then, incorporate schema definition and all schema extensions. - ...(schemaDef && getOperationTypes([schemaDef])), - ...getOperationTypes(schemaExtensions), - }; // Then produce and return a Schema config with these types. - - return { - description: - (_schemaDef = schemaDef) === null || _schemaDef === void 0 - ? void 0 - : (_schemaDef$descriptio = _schemaDef.description) === null || - _schemaDef$descriptio === void 0 - ? void 0 - : _schemaDef$descriptio.value, - ...operationTypes, - types: Object.values(typeMap), - directives: [ - ...schemaConfig.directives.map(replaceDirective), - ...directiveDefs.map(buildDirective), - ], - extensions: Object.create(null), - astNode: - (_schemaDef2 = schemaDef) !== null && _schemaDef2 !== void 0 - ? _schemaDef2 - : schemaConfig.astNode, - extensionASTNodes: schemaConfig.extensionASTNodes.concat(schemaExtensions), - assumeValid: - (_options$assumeValid = - options === null || options === void 0 - ? void 0 - : options.assumeValid) !== null && _options$assumeValid !== void 0 - ? _options$assumeValid - : false, - }; // Below are functions used for producing this schema that have closed over - // this scope and have access to the schema, cache, and newly defined types. - - function replaceType(type) { - if (isListType(type)) { - // @ts-expect-error - return new GraphQLList(replaceType(type.ofType)); - } - - if (isNonNullType(type)) { - // @ts-expect-error - return new GraphQLNonNull(replaceType(type.ofType)); - } // @ts-expect-error FIXME - - return replaceNamedType(type); - } - - function replaceNamedType(type) { - // Note: While this could make early assertions to get the correctly - // typed values, that would throw immediately while type system - // validation with validateSchema() will produce more actionable results. - return typeMap[type.name]; - } - - function replaceDirective(directive) { - const config = directive.toConfig(); - return new GraphQLDirective({ - ...config, - args: mapValue(config.args, extendArg), - }); - } - - function extendNamedType(type) { - if (isIntrospectionType(type) || isSpecifiedScalarType(type)) { - // Builtin types are not extended. - return type; - } - - if (isScalarType(type)) { - return extendScalarType(type); - } - - if (isObjectType(type)) { - return extendObjectType(type); - } - - if (isInterfaceType(type)) { - return extendInterfaceType(type); - } - - if (isUnionType(type)) { - return extendUnionType(type); - } - - if (isEnumType(type)) { - return extendEnumType(type); - } - - if (isInputObjectType(type)) { - return extendInputObjectType(type); - } - /* c8 ignore next 3 */ - // Not reachable, all possible type definition nodes have been considered. - - invariant$1(false, 'Unexpected type: ' + inspect$1(type)); - } - - function extendInputObjectType(type) { - var _typeExtensionsMap$co; - - const config = type.toConfig(); - const extensions = - (_typeExtensionsMap$co = typeExtensionsMap[config.name]) !== null && - _typeExtensionsMap$co !== void 0 - ? _typeExtensionsMap$co - : []; - return new GraphQLInputObjectType({ - ...config, - fields: () => ({ - ...mapValue(config.fields, (field) => ({ - ...field, - type: replaceType(field.type), - })), - ...buildInputFieldMap(extensions), - }), - extensionASTNodes: config.extensionASTNodes.concat(extensions), - }); - } - - function extendEnumType(type) { - var _typeExtensionsMap$ty; - - const config = type.toConfig(); - const extensions = - (_typeExtensionsMap$ty = typeExtensionsMap[type.name]) !== null && - _typeExtensionsMap$ty !== void 0 - ? _typeExtensionsMap$ty - : []; - return new GraphQLEnumType({ - ...config, - values: { ...config.values, ...buildEnumValueMap(extensions) }, - extensionASTNodes: config.extensionASTNodes.concat(extensions), - }); - } - - function extendScalarType(type) { - var _typeExtensionsMap$co2; - - const config = type.toConfig(); - const extensions = - (_typeExtensionsMap$co2 = typeExtensionsMap[config.name]) !== null && - _typeExtensionsMap$co2 !== void 0 - ? _typeExtensionsMap$co2 - : []; - let specifiedByURL = config.specifiedByURL; - - for (const extensionNode of extensions) { - var _getSpecifiedByURL; - - specifiedByURL = - (_getSpecifiedByURL = getSpecifiedByURL(extensionNode)) !== null && - _getSpecifiedByURL !== void 0 - ? _getSpecifiedByURL - : specifiedByURL; - } - - return new GraphQLScalarType({ - ...config, - specifiedByURL, - extensionASTNodes: config.extensionASTNodes.concat(extensions), - }); - } - - function extendObjectType(type) { - var _typeExtensionsMap$co3; - - const config = type.toConfig(); - const extensions = - (_typeExtensionsMap$co3 = typeExtensionsMap[config.name]) !== null && - _typeExtensionsMap$co3 !== void 0 - ? _typeExtensionsMap$co3 - : []; - return new GraphQLObjectType({ - ...config, - interfaces: () => [ - ...type.getInterfaces().map(replaceNamedType), - ...buildInterfaces(extensions), - ], - fields: () => ({ - ...mapValue(config.fields, extendField), - ...buildFieldMap(extensions), - }), - extensionASTNodes: config.extensionASTNodes.concat(extensions), - }); - } - - function extendInterfaceType(type) { - var _typeExtensionsMap$co4; - - const config = type.toConfig(); - const extensions = - (_typeExtensionsMap$co4 = typeExtensionsMap[config.name]) !== null && - _typeExtensionsMap$co4 !== void 0 - ? _typeExtensionsMap$co4 - : []; - return new GraphQLInterfaceType({ - ...config, - interfaces: () => [ - ...type.getInterfaces().map(replaceNamedType), - ...buildInterfaces(extensions), - ], - fields: () => ({ - ...mapValue(config.fields, extendField), - ...buildFieldMap(extensions), - }), - extensionASTNodes: config.extensionASTNodes.concat(extensions), - }); - } - - function extendUnionType(type) { - var _typeExtensionsMap$co5; - - const config = type.toConfig(); - const extensions = - (_typeExtensionsMap$co5 = typeExtensionsMap[config.name]) !== null && - _typeExtensionsMap$co5 !== void 0 - ? _typeExtensionsMap$co5 - : []; - return new GraphQLUnionType({ - ...config, - types: () => [ - ...type.getTypes().map(replaceNamedType), - ...buildUnionTypes(extensions), - ], - extensionASTNodes: config.extensionASTNodes.concat(extensions), - }); - } - - function extendField(field) { - return { - ...field, - type: replaceType(field.type), - args: field.args && mapValue(field.args, extendArg), - }; - } - - function extendArg(arg) { - return { ...arg, type: replaceType(arg.type) }; - } - - function getOperationTypes(nodes) { - const opTypes = {}; - - for (const node of nodes) { - var _node$operationTypes; - - // FIXME: https://github.com/graphql/graphql-js/issues/2203 - const operationTypesNodes = - /* c8 ignore next */ - (_node$operationTypes = node.operationTypes) !== null && - _node$operationTypes !== void 0 - ? _node$operationTypes - : []; - - for (const operationType of operationTypesNodes) { - // Note: While this could make early assertions to get the correctly - // typed values below, that would throw immediately while type system - // validation with validateSchema() will produce more actionable results. - // @ts-expect-error - opTypes[operationType.operation] = getNamedType(operationType.type); - } - } - - return opTypes; - } - - function getNamedType(node) { - var _stdTypeMap$name2; - - const name = node.name.value; - const type = - (_stdTypeMap$name2 = stdTypeMap[name]) !== null && - _stdTypeMap$name2 !== void 0 - ? _stdTypeMap$name2 - : typeMap[name]; - - if (type === undefined) { - throw new Error(`Unknown type: "${name}".`); - } - - return type; - } - - function getWrappedType(node) { - if (node.kind === Kind.LIST_TYPE) { - return new GraphQLList(getWrappedType(node.type)); - } - - if (node.kind === Kind.NON_NULL_TYPE) { - return new GraphQLNonNull(getWrappedType(node.type)); - } - - return getNamedType(node); - } - - function buildDirective(node) { - var _node$description; - - return new GraphQLDirective({ - name: node.name.value, - description: - (_node$description = node.description) === null || - _node$description === void 0 - ? void 0 - : _node$description.value, - // @ts-expect-error - locations: node.locations.map(({ value }) => value), - isRepeatable: node.repeatable, - args: buildArgumentMap(node.arguments), - astNode: node, - }); - } - - function buildFieldMap(nodes) { - const fieldConfigMap = Object.create(null); - - for (const node of nodes) { - var _node$fields; - - // FIXME: https://github.com/graphql/graphql-js/issues/2203 - const nodeFields = - /* c8 ignore next */ - (_node$fields = node.fields) !== null && _node$fields !== void 0 - ? _node$fields - : []; - - for (const field of nodeFields) { - var _field$description; - - fieldConfigMap[field.name.value] = { - // Note: While this could make assertions to get the correctly typed - // value, that would throw immediately while type system validation - // with validateSchema() will produce more actionable results. - type: getWrappedType(field.type), - description: - (_field$description = field.description) === null || - _field$description === void 0 - ? void 0 - : _field$description.value, - args: buildArgumentMap(field.arguments), - deprecationReason: getDeprecationReason(field), - astNode: field, - }; - } - } - - return fieldConfigMap; - } - - function buildArgumentMap(args) { - // FIXME: https://github.com/graphql/graphql-js/issues/2203 - const argsNodes = - /* c8 ignore next */ - args !== null && args !== void 0 ? args : []; - const argConfigMap = Object.create(null); - - for (const arg of argsNodes) { - var _arg$description; - - // Note: While this could make assertions to get the correctly typed - // value, that would throw immediately while type system validation - // with validateSchema() will produce more actionable results. - const type = getWrappedType(arg.type); - argConfigMap[arg.name.value] = { - type, - description: - (_arg$description = arg.description) === null || - _arg$description === void 0 - ? void 0 - : _arg$description.value, - defaultValue: valueFromAST(arg.defaultValue, type), - deprecationReason: getDeprecationReason(arg), - astNode: arg, - }; - } - - return argConfigMap; - } - - function buildInputFieldMap(nodes) { - const inputFieldMap = Object.create(null); - - for (const node of nodes) { - var _node$fields2; - - // FIXME: https://github.com/graphql/graphql-js/issues/2203 - const fieldsNodes = - /* c8 ignore next */ - (_node$fields2 = node.fields) !== null && _node$fields2 !== void 0 - ? _node$fields2 - : []; - - for (const field of fieldsNodes) { - var _field$description2; - - // Note: While this could make assertions to get the correctly typed - // value, that would throw immediately while type system validation - // with validateSchema() will produce more actionable results. - const type = getWrappedType(field.type); - inputFieldMap[field.name.value] = { - type, - description: - (_field$description2 = field.description) === null || - _field$description2 === void 0 - ? void 0 - : _field$description2.value, - defaultValue: valueFromAST(field.defaultValue, type), - deprecationReason: getDeprecationReason(field), - astNode: field, - }; - } - } - - return inputFieldMap; - } - - function buildEnumValueMap(nodes) { - const enumValueMap = Object.create(null); - - for (const node of nodes) { - var _node$values; - - // FIXME: https://github.com/graphql/graphql-js/issues/2203 - const valuesNodes = - /* c8 ignore next */ - (_node$values = node.values) !== null && _node$values !== void 0 - ? _node$values - : []; - - for (const value of valuesNodes) { - var _value$description; - - enumValueMap[value.name.value] = { - description: - (_value$description = value.description) === null || - _value$description === void 0 - ? void 0 - : _value$description.value, - deprecationReason: getDeprecationReason(value), - astNode: value, - }; - } - } - - return enumValueMap; - } - - function buildInterfaces(nodes) { - // Note: While this could make assertions to get the correctly typed - // values below, that would throw immediately while type system - // validation with validateSchema() will produce more actionable results. - // @ts-expect-error - return nodes.flatMap( - // FIXME: https://github.com/graphql/graphql-js/issues/2203 - (node) => { - var _node$interfaces$map, _node$interfaces; - - return ( - /* c8 ignore next */ - (_node$interfaces$map = - (_node$interfaces = node.interfaces) === null || - _node$interfaces === void 0 - ? void 0 - : _node$interfaces.map(getNamedType)) !== null && - _node$interfaces$map !== void 0 - ? _node$interfaces$map - : [] - ); - }, - ); - } - - function buildUnionTypes(nodes) { - // Note: While this could make assertions to get the correctly typed - // values below, that would throw immediately while type system - // validation with validateSchema() will produce more actionable results. - // @ts-expect-error - return nodes.flatMap( - // FIXME: https://github.com/graphql/graphql-js/issues/2203 - (node) => { - var _node$types$map, _node$types; - - return ( - /* c8 ignore next */ - (_node$types$map = - (_node$types = node.types) === null || _node$types === void 0 - ? void 0 - : _node$types.map(getNamedType)) !== null && - _node$types$map !== void 0 - ? _node$types$map - : [] - ); - }, - ); - } - - function buildType(astNode) { - var _typeExtensionsMap$na; - - const name = astNode.name.value; - const extensionASTNodes = - (_typeExtensionsMap$na = typeExtensionsMap[name]) !== null && - _typeExtensionsMap$na !== void 0 - ? _typeExtensionsMap$na - : []; - - switch (astNode.kind) { - case Kind.OBJECT_TYPE_DEFINITION: { - var _astNode$description; - - const allNodes = [astNode, ...extensionASTNodes]; - return new GraphQLObjectType({ - name, - description: - (_astNode$description = astNode.description) === null || - _astNode$description === void 0 - ? void 0 - : _astNode$description.value, - interfaces: () => buildInterfaces(allNodes), - fields: () => buildFieldMap(allNodes), - astNode, - extensionASTNodes, - }); - } - - case Kind.INTERFACE_TYPE_DEFINITION: { - var _astNode$description2; - - const allNodes = [astNode, ...extensionASTNodes]; - return new GraphQLInterfaceType({ - name, - description: - (_astNode$description2 = astNode.description) === null || - _astNode$description2 === void 0 - ? void 0 - : _astNode$description2.value, - interfaces: () => buildInterfaces(allNodes), - fields: () => buildFieldMap(allNodes), - astNode, - extensionASTNodes, - }); - } - - case Kind.ENUM_TYPE_DEFINITION: { - var _astNode$description3; - - const allNodes = [astNode, ...extensionASTNodes]; - return new GraphQLEnumType({ - name, - description: - (_astNode$description3 = astNode.description) === null || - _astNode$description3 === void 0 - ? void 0 - : _astNode$description3.value, - values: buildEnumValueMap(allNodes), - astNode, - extensionASTNodes, - }); - } - - case Kind.UNION_TYPE_DEFINITION: { - var _astNode$description4; - - const allNodes = [astNode, ...extensionASTNodes]; - return new GraphQLUnionType({ - name, - description: - (_astNode$description4 = astNode.description) === null || - _astNode$description4 === void 0 - ? void 0 - : _astNode$description4.value, - types: () => buildUnionTypes(allNodes), - astNode, - extensionASTNodes, - }); - } - - case Kind.SCALAR_TYPE_DEFINITION: { - var _astNode$description5; - - return new GraphQLScalarType({ - name, - description: - (_astNode$description5 = astNode.description) === null || - _astNode$description5 === void 0 - ? void 0 - : _astNode$description5.value, - specifiedByURL: getSpecifiedByURL(astNode), - astNode, - extensionASTNodes, - }); - } - - case Kind.INPUT_OBJECT_TYPE_DEFINITION: { - var _astNode$description6; - - const allNodes = [astNode, ...extensionASTNodes]; - return new GraphQLInputObjectType({ - name, - description: - (_astNode$description6 = astNode.description) === null || - _astNode$description6 === void 0 - ? void 0 - : _astNode$description6.value, - fields: () => buildInputFieldMap(allNodes), - astNode, - extensionASTNodes, - }); - } - } - } -} -const stdTypeMap = keyMap( - [...specifiedScalarTypes, ...introspectionTypes], - (type) => type.name, -); -/** - * Given a field or enum value node, returns the string value for the - * deprecation reason. - */ - -function getDeprecationReason(node) { - const deprecated = getDirectiveValues(GraphQLDeprecatedDirective, node); // @ts-expect-error validated by `getDirectiveValues` - - return deprecated === null || deprecated === void 0 - ? void 0 - : deprecated.reason; -} -/** - * Given a scalar node, returns the string value for the specifiedByURL. - */ - -function getSpecifiedByURL(node) { - const specifiedBy = getDirectiveValues(GraphQLSpecifiedByDirective, node); // @ts-expect-error validated by `getDirectiveValues` - - return specifiedBy === null || specifiedBy === void 0 - ? void 0 - : specifiedBy.url; -} - -/** - * This takes the ast of a schema document produced by the parse function in - * src/language/parser.js. - * - * If no schema definition is provided, then it will look for types named Query, - * Mutation and Subscription. - * - * Given that AST it constructs a GraphQLSchema. The resulting schema - * has no resolve methods, so execution will use default resolvers. - */ -function buildASTSchema(documentAST, options) { - (documentAST != null && documentAST.kind === Kind.DOCUMENT) || - devAssert(false, 'Must provide valid Document AST.'); - - if ( - (options === null || options === void 0 ? void 0 : options.assumeValid) !== - true && - (options === null || options === void 0 - ? void 0 - : options.assumeValidSDL) !== true - ) { - assertValidSDL(documentAST); - } - - const emptySchemaConfig = { - description: undefined, - types: [], - directives: [], - extensions: Object.create(null), - extensionASTNodes: [], - assumeValid: false, - }; - const config = extendSchemaImpl(emptySchemaConfig, documentAST, options); - - if (config.astNode == null) { - for (const type of config.types) { - switch (type.name) { - // Note: While this could make early assertions to get the correctly - // typed values below, that would throw immediately while type system - // validation with validateSchema() will produce more actionable results. - case 'Query': - // @ts-expect-error validated in `validateSchema` - config.query = type; - break; - - case 'Mutation': - // @ts-expect-error validated in `validateSchema` - config.mutation = type; - break; - - case 'Subscription': - // @ts-expect-error validated in `validateSchema` - config.subscription = type; - break; - } - } - } - - const directives = [ - ...config.directives, // If specified directives were not explicitly declared, add them. - ...specifiedDirectives.filter((stdDirective) => - config.directives.every( - (directive) => directive.name !== stdDirective.name, - ), - ), - ]; - return new GraphQLSchema({ ...config, directives }); -} -/** - * A helper function to build a GraphQLSchema directly from a source - * document. - */ - -function buildSchema(source, options) { - const document = parse(source, { - noLocation: - options === null || options === void 0 ? void 0 : options.noLocation, - allowLegacyFragmentVariables: - options === null || options === void 0 - ? void 0 - : options.allowLegacyFragmentVariables, - }); - return buildASTSchema(document, { - assumeValidSDL: - options === null || options === void 0 ? void 0 : options.assumeValidSDL, - assumeValid: - options === null || options === void 0 ? void 0 : options.assumeValid, - }); -} - -const trackedSchemaSymbol = Symbol('TRACKED_SCHEMA'); -const resolversHooksSymbol = Symbol('RESOLVERS_HOOKS'); -function prepareTracedSchema(schema) { - if (!schema || schema[trackedSchemaSymbol]) { - return; - } - schema[trackedSchemaSymbol] = true; - const entries = Object.values(schema.getTypeMap()); - for (const type of entries) { - if (!isIntrospectionType(type) && isObjectType(type)) { - const fields = Object.values(type.getFields()); - for (const field of fields) { - let resolverFn = (field.resolve || defaultFieldResolver); - field.resolve = async (root, args, context, info) => { - if (context && context[resolversHooksSymbol]) { - const hooks = context[resolversHooksSymbol]; - const afterCalls = []; - for (const hook of hooks) { - const afterFn = await hook({ - root, - args, - context, - info, - resolverFn, - replaceResolverFn: newFn => { - resolverFn = newFn; - }, - }); - afterFn && afterCalls.push(afterFn); - } - try { - let result = await resolverFn(root, args, context, info); - for (const afterFn of afterCalls) { - afterFn({ - result, - setResult: newResult => { - result = newResult; - }, - }); - } - return result; - } - catch (e) { - let resultErr = e; - for (const afterFn of afterCalls) { - afterFn({ - result: resultErr, - setResult: newResult => { - resultErr = newResult; - }, - }); - } - throw resultErr; - } - } - else { - return resolverFn(root, args, context, info); - } - }; - } - } - } -} - -const envelopIsIntrospectionSymbol = Symbol('ENVELOP_IS_INTROSPECTION'); -function isIntrospectionOperationString(operation) { - return (typeof operation === 'string' ? operation : operation.body).indexOf('__schema') !== -1; -} -function getSubscribeArgs(args) { - return args.length === 1 - ? args[0] - : { - schema: args[0], - document: args[1], - rootValue: args[2], - contextValue: args[3], - variableValues: args[4], - operationName: args[5], - fieldResolver: args[6], - subscribeFieldResolver: args[7], - }; -} -/** - * Utility function for making a subscribe function that handles polymorphic arguments. - */ -const makeSubscribe = (subscribeFn) => ((...polyArgs) => subscribeFn(getSubscribeArgs(polyArgs))); -function mapAsyncIterator(source, mapper) { - const iterator = source[Symbol.asyncIterator](); - async function mapResult(result) { - var _a; - if (result.done) { - return result; - } - try { - return { value: await mapper(result.value), done: false }; - } - catch (error) { - try { - await ((_a = iterator.return) === null || _a === void 0 ? void 0 : _a.call(iterator)); - } - catch (_error) { - /* ignore error */ - } - throw error; - } - } - const stream = { - [Symbol.asyncIterator]() { - return stream; - }, - async next() { - return await mapResult(await iterator.next()); - }, - async return() { - var _a; - const promise = (_a = iterator.return) === null || _a === void 0 ? void 0 : _a.call(iterator); - return promise ? await mapResult(await promise) : { value: undefined, done: true }; - }, - async throw(error) { - var _a; - const promise = (_a = iterator.throw) === null || _a === void 0 ? void 0 : _a.call(iterator); - if (promise) { - return await mapResult(await promise); - } - // if the source has no throw method we just re-throw error - // usually throw is not called anyways - throw error; - }, - }; - return stream; -} -function getExecuteArgs(args) { - return args.length === 1 - ? args[0] - : { - schema: args[0], - document: args[1], - rootValue: args[2], - contextValue: args[3], - variableValues: args[4], - operationName: args[5], - fieldResolver: args[6], - typeResolver: args[7], - }; -} -/** - * Utility function for making a execute function that handles polymorphic arguments. - */ -const makeExecute = (executeFn) => ((...polyArgs) => executeFn(getExecuteArgs(polyArgs))); -/** - * Returns true if the provided object implements the AsyncIterator protocol via - * implementing a `Symbol.asyncIterator` method. - * - * Source: https://github.com/graphql/graphql-js/blob/main/src/jsutils/isAsyncIterable.ts - */ -function isAsyncIterable$1(maybeAsyncIterable) { - return (typeof maybeAsyncIterable === 'object' && - maybeAsyncIterable != null && - typeof maybeAsyncIterable[Symbol.asyncIterator] === 'function'); -} -/** - * A utility function for handling `onExecuteDone` hook result, for simplifying the handling of AsyncIterable returned from `execute`. - * - * @param payload The payload send to `onExecuteDone` hook function - * @param fn The handler to be executed on each result - * @returns a subscription for streamed results, or undefined in case of an non-async - */ -function handleStreamOrSingleExecutionResult(payload, fn) { - if (isAsyncIterable$1(payload.result)) { - return { onNext: fn }; - } - fn({ - args: payload.args, - result: payload.result, - setResult: payload.setResult, - }); - return undefined; -} -function finalAsyncIterator(source, onFinal) { - const iterator = source[Symbol.asyncIterator](); - let isDone = false; - const stream = { - [Symbol.asyncIterator]() { - return stream; - }, - async next() { - const result = await iterator.next(); - if (result.done && isDone === false) { - isDone = true; - onFinal(); - } - return result; - }, - async return() { - var _a; - const promise = (_a = iterator.return) === null || _a === void 0 ? void 0 : _a.call(iterator); - if (isDone === false) { - isDone = true; - onFinal(); - } - return promise ? await promise : { done: true, value: undefined }; - }, - async throw(error) { - var _a; - const promise = (_a = iterator.throw) === null || _a === void 0 ? void 0 : _a.call(iterator); - if (promise) { - return await promise; - } - // if the source has no throw method we just re-throw error - // usually throw is not called anyways - throw error; - }, - }; - return stream; -} -function errorAsyncIterator(source, onError) { - const iterator = source[Symbol.asyncIterator](); - const stream = { - [Symbol.asyncIterator]() { - return stream; - }, - async next() { - try { - return await iterator.next(); - } - catch (error) { - onError(error); - return { done: true, value: undefined }; - } - }, - async return() { - var _a; - const promise = (_a = iterator.return) === null || _a === void 0 ? void 0 : _a.call(iterator); - return promise ? await promise : { done: true, value: undefined }; - }, - async throw(error) { - var _a; - const promise = (_a = iterator.throw) === null || _a === void 0 ? void 0 : _a.call(iterator); - if (promise) { - return await promise; - } - // if the source has no throw method we just re-throw error - // usually throw is not called anyways - throw error; - }, - }; - return stream; -} - -function createEnvelopOrchestrator(plugins) { - let schema = null; - let initDone = false; - const onResolversHandlers = []; - for (const plugin of plugins) { - if (plugin.onResolverCalled) { - onResolversHandlers.push(plugin.onResolverCalled); - } - } - // Define the initial method for replacing the GraphQL schema, this is needed in order - // to allow setting the schema from the onPluginInit callback. We also need to make sure - // here not to call the same plugin that initiated the schema switch. - const replaceSchema = (newSchema, ignorePluginIndex = -1) => { - if (onResolversHandlers.length) { - prepareTracedSchema(newSchema); - } - schema = newSchema; - if (initDone) { - for (const [i, plugin] of plugins.entries()) { - if (i !== ignorePluginIndex) { - plugin.onSchemaChange && - plugin.onSchemaChange({ - schema, - replaceSchema: schemaToSet => { - replaceSchema(schemaToSet, i); - }, - }); - } - } - } - }; - const contextErrorHandlers = []; - // Iterate all plugins and trigger onPluginInit - for (const [i, plugin] of plugins.entries()) { - plugin.onPluginInit && - plugin.onPluginInit({ - plugins, - addPlugin: newPlugin => { - plugins.push(newPlugin); - }, - setSchema: modifiedSchema => replaceSchema(modifiedSchema, i), - registerContextErrorHandler: handler => contextErrorHandlers.push(handler), - }); - } - // A set of before callbacks defined here in order to allow it to be used later - const beforeCallbacks = { - init: [], - parse: [], - validate: [], - subscribe: [], - execute: [], - context: [], - }; - for (const { onContextBuilding, onExecute, onParse, onSubscribe, onValidate, onEnveloped } of plugins) { - onEnveloped && beforeCallbacks.init.push(onEnveloped); - onContextBuilding && beforeCallbacks.context.push(onContextBuilding); - onExecute && beforeCallbacks.execute.push(onExecute); - onParse && beforeCallbacks.parse.push(onParse); - onSubscribe && beforeCallbacks.subscribe.push(onSubscribe); - onValidate && beforeCallbacks.validate.push(onValidate); - } - const init = initialContext => { - for (const [i, onEnveloped] of beforeCallbacks.init.entries()) { - onEnveloped({ - context: initialContext, - extendContext: extension => { - if (!initialContext) { - return; - } - Object.assign(initialContext, extension); - }, - setSchema: modifiedSchema => replaceSchema(modifiedSchema, i), - }); - } - }; - const customParse = beforeCallbacks.parse.length - ? initialContext => (source, parseOptions) => { - let result = null; - let parseFn = parse; - const context = initialContext; - const afterCalls = []; - for (const onParse of beforeCallbacks.parse) { - const afterFn = onParse({ - context, - extendContext: extension => { - Object.assign(context, extension); - }, - params: { source, options: parseOptions }, - parseFn, - setParseFn: newFn => { - parseFn = newFn; - }, - setParsedDocument: newDoc => { - result = newDoc; - }, - }); - afterFn && afterCalls.push(afterFn); - } - if (result === null) { - try { - result = parseFn(source, parseOptions); - } - catch (e) { - result = e; - } - } - for (const afterCb of afterCalls) { - afterCb({ - context, - extendContext: extension => { - Object.assign(context, extension); - }, - replaceParseResult: newResult => { - result = newResult; - }, - result, - }); - } - if (result === null) { - throw new Error(`Failed to parse document.`); - } - if (result instanceof Error) { - throw result; - } - return result; - } - : () => parse; - const customValidate = beforeCallbacks.validate.length - ? initialContext => (schema, documentAST, rules, typeInfo, validationOptions) => { - let actualRules = rules ? [...rules] : undefined; - let validateFn = validate; - let result = null; - const context = initialContext; - const afterCalls = []; - for (const onValidate of beforeCallbacks.validate) { - const afterFn = onValidate({ - context, - extendContext: extension => { - Object.assign(context, extension); - }, - params: { - schema, - documentAST, - rules: actualRules, - typeInfo, - options: validationOptions, - }, - validateFn, - addValidationRule: rule => { - if (!actualRules) { - actualRules = [...specifiedRules]; - } - actualRules.push(rule); - }, - setValidationFn: newFn => { - validateFn = newFn; - }, - setResult: newResults => { - result = newResults; - }, - }); - afterFn && afterCalls.push(afterFn); - } - if (!result) { - result = validateFn(schema, documentAST, actualRules, typeInfo, validationOptions); - } - const valid = result.length === 0; - for (const afterCb of afterCalls) { - afterCb({ - valid, - result, - context, - extendContext: extension => { - Object.assign(context, extension); - }, - setResult: newResult => { - result = newResult; - }, - }); - } - return result; - } - : () => validate; - const customContextFactory = beforeCallbacks.context - .length - ? initialContext => async (orchestratorCtx) => { - const afterCalls = []; - // In order to have access to the "last working" context object we keep this outside of the try block: - let context = orchestratorCtx ? { ...initialContext, ...orchestratorCtx } : initialContext; - try { - let isBreakingContextBuilding = false; - for (const onContext of beforeCallbacks.context) { - const afterHookResult = await onContext({ - context, - extendContext: extension => { - context = { ...context, ...extension }; - }, - breakContextBuilding: () => { - isBreakingContextBuilding = true; - }, - }); - if (typeof afterHookResult === 'function') { - afterCalls.push(afterHookResult); - } - if (isBreakingContextBuilding === true) { - break; - } - } - for (const afterCb of afterCalls) { - afterCb({ - context, - extendContext: extension => { - context = { ...context, ...extension }; - }, - }); - } - return context; - } - catch (err) { - let error = err; - for (const errorCb of contextErrorHandlers) { - errorCb({ - context, - error, - setError: err => { - error = err; - }, - }); - } - throw error; - } - } - : initialContext => orchestratorCtx => orchestratorCtx ? { ...initialContext, ...orchestratorCtx } : initialContext; - const useCustomSubscribe = beforeCallbacks.subscribe.length || onResolversHandlers.length; - const customSubscribe = useCustomSubscribe - ? makeSubscribe(async (args) => { - let subscribeFn = subscribe; - const afterCalls = []; - const subscribeErrorHandlers = []; - let context = args.contextValue || {}; - let result; - for (const onSubscribe of beforeCallbacks.subscribe) { - const after = await onSubscribe({ - subscribeFn, - setSubscribeFn: newSubscribeFn => { - subscribeFn = newSubscribeFn; - }, - extendContext: extension => { - context = { ...context, ...extension }; - }, - args: args, - setResultAndStopExecution: stopResult => { - result = stopResult; - }, - }); - if (after) { - if (after.onSubscribeResult) { - afterCalls.push(after.onSubscribeResult); - } - if (after.onSubscribeError) { - subscribeErrorHandlers.push(after.onSubscribeError); - } - } - if (result !== undefined) { - break; - } - } - if (onResolversHandlers.length) { - context[resolversHooksSymbol] = onResolversHandlers; - } - if (result === undefined) { - result = await subscribeFn({ - ...args, - contextValue: context, - // Casted for GraphQL.js 15 compatibility - // Can be removed once we drop support for GraphQL.js 15 - }); - } - const onNextHandler = []; - const onEndHandler = []; - for (const afterCb of afterCalls) { - const hookResult = afterCb({ - args: args, - result, - setResult: newResult => { - result = newResult; - }, - }); - if (hookResult) { - if (hookResult.onNext) { - onNextHandler.push(hookResult.onNext); - } - if (hookResult.onEnd) { - onEndHandler.push(hookResult.onEnd); - } - } - } - if (onNextHandler.length && isAsyncIterable$1(result)) { - result = mapAsyncIterator(result, async (result) => { - for (const onNext of onNextHandler) { - await onNext({ - args: args, - result, - setResult: newResult => (result = newResult), - }); - } - return result; - }); - } - if (onEndHandler.length && isAsyncIterable$1(result)) { - result = finalAsyncIterator(result, () => { - for (const onEnd of onEndHandler) { - onEnd(); - } - }); - } - if (subscribeErrorHandlers.length && isAsyncIterable$1(result)) { - result = errorAsyncIterator(result, err => { - let error = err; - for (const handler of subscribeErrorHandlers) { - handler({ - error, - setError: err => { - error = err; - }, - }); - } - throw error; - }); - } - return result; - }) - : makeSubscribe(subscribe); - const useCustomExecute = beforeCallbacks.execute.length || onResolversHandlers.length; - const customExecute = useCustomExecute - ? makeExecute(async (args) => { - let executeFn = execute$1; - let result; - const afterCalls = []; - let context = args.contextValue || {}; - for (const onExecute of beforeCallbacks.execute) { - const after = await onExecute({ - executeFn, - setExecuteFn: newExecuteFn => { - executeFn = newExecuteFn; - }, - setResultAndStopExecution: stopResult => { - result = stopResult; - }, - extendContext: extension => { - if (typeof extension === 'object') { - context = { - ...context, - ...extension, - }; - } - else { - throw new Error(`Invalid context extension provided! Expected "object", got: "${JSON.stringify(extension)}" (${typeof extension})`); - } - }, - args: args, - }); - if (after === null || after === void 0 ? void 0 : after.onExecuteDone) { - afterCalls.push(after.onExecuteDone); - } - if (result !== undefined) { - break; - } - } - if (onResolversHandlers.length) { - context[resolversHooksSymbol] = onResolversHandlers; - } - if (result === undefined) { - result = (await executeFn({ - ...args, - contextValue: context, - })); - } - const onNextHandler = []; - const onEndHandler = []; - for (const afterCb of afterCalls) { - const hookResult = await afterCb({ - args: args, - result, - setResult: newResult => { - result = newResult; - }, - }); - if (hookResult) { - if (hookResult.onNext) { - onNextHandler.push(hookResult.onNext); - } - if (hookResult.onEnd) { - onEndHandler.push(hookResult.onEnd); - } - } - } - if (onNextHandler.length && isAsyncIterable$1(result)) { - result = mapAsyncIterator(result, async (result) => { - for (const onNext of onNextHandler) { - await onNext({ - args: args, - result, - setResult: newResult => { - result = newResult; - }, - }); - } - return result; - }); - } - if (onEndHandler.length && isAsyncIterable$1(result)) { - result = finalAsyncIterator(result, () => { - for (const onEnd of onEndHandler) { - onEnd(); - } - }); - } - return result; - }) - : makeExecute(execute$1); - initDone = true; - // This is done in order to trigger the first schema available, to allow plugins that needs the schema - // eagerly to have it. - if (schema) { - for (const [i, plugin] of plugins.entries()) { - plugin.onSchemaChange && - plugin.onSchemaChange({ - schema, - replaceSchema: modifiedSchema => replaceSchema(modifiedSchema, i), - }); - } - } - return { - getCurrentSchema() { - return schema; - }, - init, - parse: customParse, - validate: customValidate, - execute: customExecute, - subscribe: customSubscribe, - contextFactory: customContextFactory, - }; -} - -var _a$y; -const getTimestamp = typeof globalThis !== 'undefined' && ((_a$y = globalThis === null || globalThis === void 0 ? void 0 : globalThis.performance) === null || _a$y === void 0 ? void 0 : _a$y.now) - ? () => globalThis.performance.now() - : () => Date.now(); -const measure = () => { - const start = getTimestamp(); - return () => { - const end = getTimestamp(); - return end - start; - }; -}; -const tracingSymbol = Symbol('envelopTracing'); -function traceOrchestrator(orchestrator) { - const createTracer = (name, ctx) => { - const end = measure(); - return () => { - ctx[tracingSymbol][name] = end(); - }; - }; - return { - ...orchestrator, - init: (ctx = {}) => { - ctx[tracingSymbol] = ctx[tracingSymbol] || {}; - const done = createTracer('init', ctx || {}); - try { - return orchestrator.init(ctx); - } - finally { - done(); - } - }, - parse: (ctx = {}) => { - ctx[tracingSymbol] = ctx[tracingSymbol] || {}; - const actualFn = orchestrator.parse(ctx); - return (...args) => { - const done = createTracer('parse', ctx); - try { - return actualFn(...args); - } - finally { - done(); - } - }; - }, - validate: (ctx = {}) => { - ctx[tracingSymbol] = ctx[tracingSymbol] || {}; - const actualFn = orchestrator.validate(ctx); - return (...args) => { - const done = createTracer('validate', ctx); - try { - return actualFn(...args); - } - finally { - done(); - } - }; - }, - execute: async (argsOrSchema, document, rootValue, contextValue, variableValues, operationName, fieldResolver, typeResolver) => { - const args = argsOrSchema instanceof GraphQLSchema - ? { - schema: argsOrSchema, - document: document, - rootValue, - contextValue, - variableValues, - operationName, - fieldResolver, - typeResolver, - } - : argsOrSchema; - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore GraphQL.js types contextValue as unknown - const done = createTracer('execute', args.contextValue || {}); - try { - const result = await orchestrator.execute(args); - done(); - if (!isAsyncIterable$1(result)) { - result.extensions = result.extensions || {}; - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore GraphQL.js types contextValue as unknown - result.extensions.envelopTracing = args.contextValue[tracingSymbol]; - } - else { - // eslint-disable-next-line no-console - console.warn(`"traceOrchestrator" encountered a AsyncIterator which is not supported yet, so tracing data is not available for the operation.`); - } - return result; - } - catch (e) { - done(); - throw e; - } - }, - subscribe: async (argsOrSchema, document, rootValue, contextValue, variableValues, operationName, fieldResolver, subscribeFieldResolver) => { - const args = argsOrSchema instanceof GraphQLSchema - ? { - schema: argsOrSchema, - document: document, - rootValue, - contextValue, - variableValues, - operationName, - fieldResolver, - subscribeFieldResolver, - } - : argsOrSchema; - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore GraphQL.js types contextValue as unknown - const done = createTracer('subscribe', args.contextValue || {}); - try { - return await orchestrator.subscribe(args); - } - finally { - done(); - } - }, - contextFactory: (ctx = {}) => { - const actualFn = orchestrator.contextFactory(ctx); - return async (childCtx) => { - const done = createTracer('contextFactory', ctx); - try { - return await actualFn(childCtx); - } - finally { - done(); - } - }; - }, - }; -} - -function envelop(options) { - const plugins = options.plugins.filter(isPluginEnabled); - let orchestrator = createEnvelopOrchestrator(plugins); - if (options.enableInternalTracing) { - orchestrator = traceOrchestrator(orchestrator); - } - const getEnveloped = (initialContext = {}) => { - const typedOrchestrator = orchestrator; - typedOrchestrator.init(initialContext); - return { - parse: typedOrchestrator.parse(initialContext), - validate: typedOrchestrator.validate(initialContext), - contextFactory: typedOrchestrator.contextFactory(initialContext), - execute: typedOrchestrator.execute, - subscribe: typedOrchestrator.subscribe, - schema: typedOrchestrator.getCurrentSchema(), - }; - }; - getEnveloped._plugins = plugins; - return getEnveloped; -} - -const DEFAULT_OPTIONS = { - logFn: console.log, -}; -const useLogger = (rawOptions = DEFAULT_OPTIONS) => { - const options = { - DEFAULT_OPTIONS, - ...rawOptions, - }; - return { - onParse({ extendContext, params }) { - if (options.skipIntrospection && isIntrospectionOperationString(params.source)) { - extendContext({ - [envelopIsIntrospectionSymbol]: true, - }); - } - }, - onExecute({ args }) { - if (args.contextValue[envelopIsIntrospectionSymbol]) { - return; - } - options.logFn('execute-start', { args }); - return { - onExecuteDone: ({ result }) => { - options.logFn('execute-end', { args, result }); - }, - }; - }, - onSubscribe({ args }) { - if (args.contextValue[envelopIsIntrospectionSymbol]) { - return; - } - options.logFn('subscribe-start', { args }); - return { - onSubscribeResult: ({ result }) => { - options.logFn('subscribe-end', { args, result }); - }, - }; - }, - }; -}; - -const useSchema = (schema) => { - return { - onPluginInit({ setSchema }) { - setSchema(schema); - }, - }; -}; - -const useExtendContext = (contextFactory) => ({ - async onContextBuilding({ context, extendContext }) { - extendContext((await contextFactory(context))); - }, -}); - -const DEFAULT_ERROR_MESSAGE = 'Unexpected error.'; -class EnvelopError extends GraphQLError { - constructor(message, extensions) { - super(message, undefined, undefined, undefined, undefined, undefined, extensions); - } -} -const formatError$1 = (err, message, isDev) => { - var _a, _b, _c, _d; - if (err instanceof GraphQLError) { - if ( - /** execution error */ - (err.originalError && err.originalError instanceof EnvelopError === false) || - /** validate and parse errors */ - (err.originalError === undefined && err instanceof EnvelopError === false)) { - return new GraphQLError(message, err.nodes, err.source, err.positions, err.path, undefined, isDev - ? { - originalError: { - message: (_b = (_a = err.originalError) === null || _a === void 0 ? void 0 : _a.message) !== null && _b !== void 0 ? _b : err.message, - stack: (_d = (_c = err.originalError) === null || _c === void 0 ? void 0 : _c.stack) !== null && _d !== void 0 ? _d : err.stack, - }, - } - : undefined); - } - return err; - } - return new GraphQLError(message); -}; -const makeHandleResult = (format, message, isDev) => ({ result, setResult }) => { - if (result.errors != null) { - setResult({ ...result, errors: result.errors.map(error => format(error, message, isDev)) }); - } -}; -const useMaskedErrors = (opts) => { - var _a, _b; - const format = (_a = opts === null || opts === void 0 ? void 0 : opts.formatError) !== null && _a !== void 0 ? _a : formatError$1; - const message = (opts === null || opts === void 0 ? void 0 : opts.errorMessage) || DEFAULT_ERROR_MESSAGE; - // eslint-disable-next-line dot-notation - const isDev = (_b = opts === null || opts === void 0 ? void 0 : opts.isDev) !== null && _b !== void 0 ? _b : (typeof process !== 'undefined' ? process.env['NODE_ENV'] === 'development' : false); - const handleResult = makeHandleResult(format, message, isDev); - return { - onParse: (opts === null || opts === void 0 ? void 0 : opts.handleParseErrors) === true - ? function onParse() { - return function onParseEnd({ result, replaceParseResult }) { - if (result instanceof Error) { - replaceParseResult(format(result, message, isDev)); - } - }; - } - : undefined, - onValidate: (opts === null || opts === void 0 ? void 0 : opts.handleValidationErrors) === true - ? function onValidate() { - return function onValidateEnd({ valid, result, setResult }) { - if (valid === false) { - setResult(result.map(error => format(error, message, isDev))); - } - }; - } - : undefined, - onPluginInit(context) { - context.registerContextErrorHandler(({ error, setError }) => { - if (error instanceof GraphQLError === false && error instanceof Error) { - error = new GraphQLError(error.message, undefined, undefined, undefined, undefined, error); - } - setError(format(error, message, isDev)); - }); - }, - onExecute() { - return { - onExecuteDone(payload) { - return handleStreamOrSingleExecutionResult(payload, handleResult); - }, - }; - }, - onSubscribe() { - return { - onSubscribeResult(payload) { - return handleStreamOrSingleExecutionResult(payload, handleResult); - }, - onSubscribeError({ error, setError }) { - setError(format(error, message, isDev)); - }, - }; - }, - }; -}; - -const ANSI_CODES = { - black: '\x1b[30m', - red: '\x1b[31m', - green: '\x1b[32m', - yellow: '\x1b[33m', - blue: '\x1b[34m', - magenta: '\x1b[35m', - cyan: '\x1b[36m', - white: '\x1b[37m', - reset: '\x1b[0m', - bold: '\x1b[1m', - orange: '\x1b[48:5:166m', -}; -const titleBold = (msg) => ANSI_CODES.bold + msg + ANSI_CODES.reset; -const LEVEL_COLOR = { - warn: ANSI_CODES.orange, - info: ANSI_CODES.cyan, - error: ANSI_CODES.red, - debug: ANSI_CODES.magenta, - title: ANSI_CODES.bold, - reset: ANSI_CODES.reset, -}; -const isDebug = () => typeof process === 'object' - ? process.env.DEBUG - : // @ts-expect-error - typeof DEBUG !== 'undefined' - ? true - : false; -const prefix = [LEVEL_COLOR.title, `🧘 Yoga -`, LEVEL_COLOR.reset]; -const defaultYogaLogger = { - debug(...args) { - if (isDebug()) { - const fullMessage = [ - `🐛 `, - ...prefix, - LEVEL_COLOR.debug, - ...args, - LEVEL_COLOR.reset, - ]; - // Some environments don't have other console methods - if (console.debug) { - console.debug(...fullMessage); - } - else { - console.log(...fullMessage); - } - } - }, - info(...args) { - const fullMessage = [ - `💡 `, - ...prefix, - LEVEL_COLOR.info, - ...args, - LEVEL_COLOR.reset, - ]; - if (console.info) { - console.info(...fullMessage); - } - else { - console.log(...fullMessage); - } - }, - warn(...args) { - const fullMessage = [ - `⚠️ `, - ...prefix, - LEVEL_COLOR.warn, - ...args, - LEVEL_COLOR.reset, - ]; - if (console.warn) { - console.warn(...fullMessage); - } - else { - console.log(...fullMessage); - } - }, - error(...args) { - const fullMessage = [ - `❌ `, - ...prefix, - LEVEL_COLOR.error, - ...args, - LEVEL_COLOR.reset, - ]; - if (console.error) { - console.error(...fullMessage); - } - else { - console.log(...fullMessage); - } - }, -}; - -var iterator; -var hasRequiredIterator; - -function requireIterator () { - if (hasRequiredIterator) return iterator; - hasRequiredIterator = 1; - iterator = function (Yallist) { - Yallist.prototype[Symbol.iterator] = function* () { - for (let walker = this.head; walker; walker = walker.next) { - yield walker.value; - } - }; - }; - return iterator; -} - -var yallist = Yallist$1; - -Yallist$1.Node = Node; -Yallist$1.create = Yallist$1; - -function Yallist$1 (list) { - var self = this; - if (!(self instanceof Yallist$1)) { - self = new Yallist$1(); - } - - self.tail = null; - self.head = null; - self.length = 0; - - if (list && typeof list.forEach === 'function') { - list.forEach(function (item) { - self.push(item); - }); - } else if (arguments.length > 0) { - for (var i = 0, l = arguments.length; i < l; i++) { - self.push(arguments[i]); - } - } - - return self -} - -Yallist$1.prototype.removeNode = function (node) { - if (node.list !== this) { - throw new Error('removing node which does not belong to this list') - } - - var next = node.next; - var prev = node.prev; - - if (next) { - next.prev = prev; - } - - if (prev) { - prev.next = next; - } - - if (node === this.head) { - this.head = next; - } - if (node === this.tail) { - this.tail = prev; - } - - node.list.length--; - node.next = null; - node.prev = null; - node.list = null; - - return next -}; - -Yallist$1.prototype.unshiftNode = function (node) { - if (node === this.head) { - return - } - - if (node.list) { - node.list.removeNode(node); - } - - var head = this.head; - node.list = this; - node.next = head; - if (head) { - head.prev = node; - } - - this.head = node; - if (!this.tail) { - this.tail = node; - } - this.length++; -}; - -Yallist$1.prototype.pushNode = function (node) { - if (node === this.tail) { - return - } - - if (node.list) { - node.list.removeNode(node); - } - - var tail = this.tail; - node.list = this; - node.prev = tail; - if (tail) { - tail.next = node; - } - - this.tail = node; - if (!this.head) { - this.head = node; - } - this.length++; -}; - -Yallist$1.prototype.push = function () { - for (var i = 0, l = arguments.length; i < l; i++) { - push$1(this, arguments[i]); - } - return this.length -}; - -Yallist$1.prototype.unshift = function () { - for (var i = 0, l = arguments.length; i < l; i++) { - unshift(this, arguments[i]); - } - return this.length -}; - -Yallist$1.prototype.pop = function () { - if (!this.tail) { - return undefined - } - - var res = this.tail.value; - this.tail = this.tail.prev; - if (this.tail) { - this.tail.next = null; - } else { - this.head = null; - } - this.length--; - return res -}; - -Yallist$1.prototype.shift = function () { - if (!this.head) { - return undefined - } - - var res = this.head.value; - this.head = this.head.next; - if (this.head) { - this.head.prev = null; - } else { - this.tail = null; - } - this.length--; - return res -}; - -Yallist$1.prototype.forEach = function (fn, thisp) { - thisp = thisp || this; - for (var walker = this.head, i = 0; walker !== null; i++) { - fn.call(thisp, walker.value, i, this); - walker = walker.next; - } -}; - -Yallist$1.prototype.forEachReverse = function (fn, thisp) { - thisp = thisp || this; - for (var walker = this.tail, i = this.length - 1; walker !== null; i--) { - fn.call(thisp, walker.value, i, this); - walker = walker.prev; - } -}; - -Yallist$1.prototype.get = function (n) { - for (var i = 0, walker = this.head; walker !== null && i < n; i++) { - // abort out of the list early if we hit a cycle - walker = walker.next; - } - if (i === n && walker !== null) { - return walker.value - } -}; - -Yallist$1.prototype.getReverse = function (n) { - for (var i = 0, walker = this.tail; walker !== null && i < n; i++) { - // abort out of the list early if we hit a cycle - walker = walker.prev; - } - if (i === n && walker !== null) { - return walker.value - } -}; - -Yallist$1.prototype.map = function (fn, thisp) { - thisp = thisp || this; - var res = new Yallist$1(); - for (var walker = this.head; walker !== null;) { - res.push(fn.call(thisp, walker.value, this)); - walker = walker.next; - } - return res -}; - -Yallist$1.prototype.mapReverse = function (fn, thisp) { - thisp = thisp || this; - var res = new Yallist$1(); - for (var walker = this.tail; walker !== null;) { - res.push(fn.call(thisp, walker.value, this)); - walker = walker.prev; - } - return res -}; - -Yallist$1.prototype.reduce = function (fn, initial) { - var acc; - var walker = this.head; - if (arguments.length > 1) { - acc = initial; - } else if (this.head) { - walker = this.head.next; - acc = this.head.value; - } else { - throw new TypeError('Reduce of empty list with no initial value') - } - - for (var i = 0; walker !== null; i++) { - acc = fn(acc, walker.value, i); - walker = walker.next; - } - - return acc -}; - -Yallist$1.prototype.reduceReverse = function (fn, initial) { - var acc; - var walker = this.tail; - if (arguments.length > 1) { - acc = initial; - } else if (this.tail) { - walker = this.tail.prev; - acc = this.tail.value; - } else { - throw new TypeError('Reduce of empty list with no initial value') - } - - for (var i = this.length - 1; walker !== null; i--) { - acc = fn(acc, walker.value, i); - walker = walker.prev; - } - - return acc -}; - -Yallist$1.prototype.toArray = function () { - var arr = new Array(this.length); - for (var i = 0, walker = this.head; walker !== null; i++) { - arr[i] = walker.value; - walker = walker.next; - } - return arr -}; - -Yallist$1.prototype.toArrayReverse = function () { - var arr = new Array(this.length); - for (var i = 0, walker = this.tail; walker !== null; i++) { - arr[i] = walker.value; - walker = walker.prev; - } - return arr -}; - -Yallist$1.prototype.slice = function (from, to) { - to = to || this.length; - if (to < 0) { - to += this.length; - } - from = from || 0; - if (from < 0) { - from += this.length; - } - var ret = new Yallist$1(); - if (to < from || to < 0) { - return ret - } - if (from < 0) { - from = 0; - } - if (to > this.length) { - to = this.length; - } - for (var i = 0, walker = this.head; walker !== null && i < from; i++) { - walker = walker.next; - } - for (; walker !== null && i < to; i++, walker = walker.next) { - ret.push(walker.value); - } - return ret -}; - -Yallist$1.prototype.sliceReverse = function (from, to) { - to = to || this.length; - if (to < 0) { - to += this.length; - } - from = from || 0; - if (from < 0) { - from += this.length; - } - var ret = new Yallist$1(); - if (to < from || to < 0) { - return ret - } - if (from < 0) { - from = 0; - } - if (to > this.length) { - to = this.length; - } - for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) { - walker = walker.prev; - } - for (; walker !== null && i > from; i--, walker = walker.prev) { - ret.push(walker.value); - } - return ret -}; - -Yallist$1.prototype.splice = function (start, deleteCount, ...nodes) { - if (start > this.length) { - start = this.length - 1; - } - if (start < 0) { - start = this.length + start; - } - - for (var i = 0, walker = this.head; walker !== null && i < start; i++) { - walker = walker.next; - } - - var ret = []; - for (var i = 0; walker && i < deleteCount; i++) { - ret.push(walker.value); - walker = this.removeNode(walker); - } - if (walker === null) { - walker = this.tail; - } - - if (walker !== this.head && walker !== this.tail) { - walker = walker.prev; - } - - for (var i = 0; i < nodes.length; i++) { - walker = insert(this, walker, nodes[i]); - } - return ret; -}; - -Yallist$1.prototype.reverse = function () { - var head = this.head; - var tail = this.tail; - for (var walker = head; walker !== null; walker = walker.prev) { - var p = walker.prev; - walker.prev = walker.next; - walker.next = p; - } - this.head = tail; - this.tail = head; - return this -}; - -function insert (self, node, value) { - var inserted = node === self.head ? - new Node(value, null, node, self) : - new Node(value, node, node.next, self); - - if (inserted.next === null) { - self.tail = inserted; - } - if (inserted.prev === null) { - self.head = inserted; - } - - self.length++; - - return inserted -} - -function push$1 (self, item) { - self.tail = new Node(item, self.tail, null, self); - if (!self.head) { - self.head = self.tail; - } - self.length++; -} - -function unshift (self, item) { - self.head = new Node(item, null, self.head, self); - if (!self.tail) { - self.tail = self.head; - } - self.length++; -} - -function Node (value, prev, next, list) { - if (!(this instanceof Node)) { - return new Node(value, prev, next, list) - } - - this.list = list; - this.value = value; - - if (prev) { - prev.next = this; - this.prev = prev; - } else { - this.prev = null; - } - - if (next) { - next.prev = this; - this.next = next; - } else { - this.next = null; - } -} - -try { - // add if support for Symbol.iterator is present - requireIterator()(Yallist$1); -} catch (er) {} - -// A linked list to keep track of recently-used-ness -const Yallist = yallist; - -const MAX = Symbol('max'); -const LENGTH = Symbol('length'); -const LENGTH_CALCULATOR = Symbol('lengthCalculator'); -const ALLOW_STALE = Symbol('allowStale'); -const MAX_AGE = Symbol('maxAge'); -const DISPOSE = Symbol('dispose'); -const NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet'); -const LRU_LIST = Symbol('lruList'); -const CACHE = Symbol('cache'); -const UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet'); - -const naiveLength = () => 1; - -// lruList is a yallist where the head is the youngest -// item, and the tail is the oldest. the list contains the Hit -// objects as the entries. -// Each Hit object has a reference to its Yallist.Node. This -// never changes. -// -// cache is a Map (or PseudoMap) that matches the keys to -// the Yallist.Node object. -class LRUCache { - constructor (options) { - if (typeof options === 'number') - options = { max: options }; - - if (!options) - options = {}; - - if (options.max && (typeof options.max !== 'number' || options.max < 0)) - throw new TypeError('max must be a non-negative number') - // Kind of weird to have a default max of Infinity, but oh well. - this[MAX] = options.max || Infinity; - - const lc = options.length || naiveLength; - this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc; - this[ALLOW_STALE] = options.stale || false; - if (options.maxAge && typeof options.maxAge !== 'number') - throw new TypeError('maxAge must be a number') - this[MAX_AGE] = options.maxAge || 0; - this[DISPOSE] = options.dispose; - this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false; - this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false; - this.reset(); - } - - // resize the cache when the max changes. - set max (mL) { - if (typeof mL !== 'number' || mL < 0) - throw new TypeError('max must be a non-negative number') - - this[MAX] = mL || Infinity; - trim(this); - } - get max () { - return this[MAX] - } - - set allowStale (allowStale) { - this[ALLOW_STALE] = !!allowStale; - } - get allowStale () { - return this[ALLOW_STALE] - } - - set maxAge (mA) { - if (typeof mA !== 'number') - throw new TypeError('maxAge must be a non-negative number') - - this[MAX_AGE] = mA; - trim(this); - } - get maxAge () { - return this[MAX_AGE] - } - - // resize the cache when the lengthCalculator changes. - set lengthCalculator (lC) { - if (typeof lC !== 'function') - lC = naiveLength; - - if (lC !== this[LENGTH_CALCULATOR]) { - this[LENGTH_CALCULATOR] = lC; - this[LENGTH] = 0; - this[LRU_LIST].forEach(hit => { - hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key); - this[LENGTH] += hit.length; - }); - } - trim(this); - } - get lengthCalculator () { return this[LENGTH_CALCULATOR] } - - get length () { return this[LENGTH] } - get itemCount () { return this[LRU_LIST].length } - - rforEach (fn, thisp) { - thisp = thisp || this; - for (let walker = this[LRU_LIST].tail; walker !== null;) { - const prev = walker.prev; - forEachStep(this, fn, walker, thisp); - walker = prev; - } - } - - forEach (fn, thisp) { - thisp = thisp || this; - for (let walker = this[LRU_LIST].head; walker !== null;) { - const next = walker.next; - forEachStep(this, fn, walker, thisp); - walker = next; - } - } - - keys () { - return this[LRU_LIST].toArray().map(k => k.key) - } - - values () { - return this[LRU_LIST].toArray().map(k => k.value) - } - - reset () { - if (this[DISPOSE] && - this[LRU_LIST] && - this[LRU_LIST].length) { - this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value)); - } - - this[CACHE] = new Map(); // hash of items by key - this[LRU_LIST] = new Yallist(); // list of items in order of use recency - this[LENGTH] = 0; // length of items in the list - } - - dump () { - return this[LRU_LIST].map(hit => - isStale(this, hit) ? false : { - k: hit.key, - v: hit.value, - e: hit.now + (hit.maxAge || 0) - }).toArray().filter(h => h) - } - - dumpLru () { - return this[LRU_LIST] - } - - set (key, value, maxAge) { - maxAge = maxAge || this[MAX_AGE]; - - if (maxAge && typeof maxAge !== 'number') - throw new TypeError('maxAge must be a number') - - const now = maxAge ? Date.now() : 0; - const len = this[LENGTH_CALCULATOR](value, key); - - if (this[CACHE].has(key)) { - if (len > this[MAX]) { - del(this, this[CACHE].get(key)); - return false - } - - const node = this[CACHE].get(key); - const item = node.value; - - // dispose of the old one before overwriting - // split out into 2 ifs for better coverage tracking - if (this[DISPOSE]) { - if (!this[NO_DISPOSE_ON_SET]) - this[DISPOSE](key, item.value); - } - - item.now = now; - item.maxAge = maxAge; - item.value = value; - this[LENGTH] += len - item.length; - item.length = len; - this.get(key); - trim(this); - return true - } - - const hit = new Entry(key, value, len, now, maxAge); - - // oversized objects fall out of cache automatically. - if (hit.length > this[MAX]) { - if (this[DISPOSE]) - this[DISPOSE](key, value); - - return false - } - - this[LENGTH] += hit.length; - this[LRU_LIST].unshift(hit); - this[CACHE].set(key, this[LRU_LIST].head); - trim(this); - return true - } - - has (key) { - if (!this[CACHE].has(key)) return false - const hit = this[CACHE].get(key).value; - return !isStale(this, hit) - } - - get (key) { - return get$1(this, key, true) - } - - peek (key) { - return get$1(this, key, false) - } - - pop () { - const node = this[LRU_LIST].tail; - if (!node) - return null - - del(this, node); - return node.value - } - - del (key) { - del(this, this[CACHE].get(key)); - } - - load (arr) { - // reset the cache - this.reset(); - - const now = Date.now(); - // A previous serialized cache has the most recent items first - for (let l = arr.length - 1; l >= 0; l--) { - const hit = arr[l]; - const expiresAt = hit.e || 0; - if (expiresAt === 0) - // the item was created without expiration in a non aged cache - this.set(hit.k, hit.v); - else { - const maxAge = expiresAt - now; - // dont add already expired items - if (maxAge > 0) { - this.set(hit.k, hit.v, maxAge); - } - } - } - } - - prune () { - this[CACHE].forEach((value, key) => get$1(this, key, false)); - } -} - -const get$1 = (self, key, doUse) => { - const node = self[CACHE].get(key); - if (node) { - const hit = node.value; - if (isStale(self, hit)) { - del(self, node); - if (!self[ALLOW_STALE]) - return undefined - } else { - if (doUse) { - if (self[UPDATE_AGE_ON_GET]) - node.value.now = Date.now(); - self[LRU_LIST].unshiftNode(node); - } - } - return hit.value - } -}; - -const isStale = (self, hit) => { - if (!hit || (!hit.maxAge && !self[MAX_AGE])) - return false - - const diff = Date.now() - hit.now; - return hit.maxAge ? diff > hit.maxAge - : self[MAX_AGE] && (diff > self[MAX_AGE]) -}; - -const trim = self => { - if (self[LENGTH] > self[MAX]) { - for (let walker = self[LRU_LIST].tail; - self[LENGTH] > self[MAX] && walker !== null;) { - // We know that we're about to delete this one, and also - // what the next least recently used key will be, so just - // go ahead and set it now. - const prev = walker.prev; - del(self, walker); - walker = prev; - } - } -}; - -const del = (self, node) => { - if (node) { - const hit = node.value; - if (self[DISPOSE]) - self[DISPOSE](hit.key, hit.value); - - self[LENGTH] -= hit.length; - self[CACHE].delete(hit.key); - self[LRU_LIST].removeNode(node); - } -}; - -class Entry { - constructor (key, value, length, now, maxAge) { - this.key = key; - this.value = value; - this.length = length; - this.now = now; - this.maxAge = maxAge || 0; - } -} - -const forEachStep = (self, fn, node, thisp) => { - let hit = node.value; - if (isStale(self, hit)) { - del(self, node); - if (!self[ALLOW_STALE]) - hit = undefined; - } - if (hit) - fn.call(thisp, hit.value, hit.key, self); -}; - -var lruCache = LRUCache; - -const DEFAULT_MAX$1 = 1000; -const DEFAULT_TTL$1 = 3600000; -const rawDocumentSymbol = Symbol('rawDocument'); -const useValidationCache = (pluginOptions = {}) => { - const resultCache = typeof pluginOptions.cache !== 'undefined' - ? pluginOptions.cache - : new lruCache({ - max: DEFAULT_MAX$1, - maxAge: DEFAULT_TTL$1, - }); - return { - onSchemaChange() { - var _a, _b; - if (resultCache.reset) { - (_a = resultCache.reset) === null || _a === void 0 ? void 0 : _a.call(resultCache); - } - else if ('clear' in resultCache) { - (_b = resultCache.clear) === null || _b === void 0 ? void 0 : _b.call(resultCache); - } - }, - onParse({ params, extendContext }) { - extendContext({ [rawDocumentSymbol]: params.source.toString() }); - }, - onValidate({ params, context, setResult }) { - var _a; - const key = (_a = context[rawDocumentSymbol]) !== null && _a !== void 0 ? _a : print(params.documentAST); - const cachedResult = resultCache.get(key); - if (cachedResult !== undefined) { - setResult(cachedResult); - } - return ({ result }) => { - resultCache.set(key, result); - }; - }, - }; -}; - -const DEFAULT_MAX = 1000; -const DEFAULT_TTL = 3600000; -const useParserCache = (pluginOptions = {}) => { - const documentCache = typeof pluginOptions.documentCache !== 'undefined' - ? pluginOptions.documentCache - : new lruCache({ max: DEFAULT_MAX, maxAge: DEFAULT_TTL }); - const errorCache = typeof pluginOptions.errorCache !== 'undefined' - ? pluginOptions.errorCache - : new lruCache({ max: DEFAULT_MAX, maxAge: DEFAULT_TTL }); - return { - onParse({ params, setParsedDocument }) { - const { source } = params; - const key = source instanceof Source ? source.body : source; - const cachedError = errorCache.get(key); - if (cachedError !== undefined) { - throw cachedError; - } - const cachedDocument = documentCache.get(key); - if (cachedDocument !== undefined) { - setParsedDocument(cachedDocument); - } - return ({ result }) => { - if (result instanceof Error) { - errorCache.set(key, result); - } - else if (result !== null) { - documentCache.set(key, result); - } - }; - }, - }; -}; - -const asArray$1 = (fns) => (Array.isArray(fns) ? fns : fns ? [fns] : []); -function compareStrings(a, b) { - if (String(a) < String(b)) { - return -1; - } - if (String(a) > String(b)) { - return 1; - } - return 0; -} -function nodeToString(a) { - var _a, _b; - let name; - if ('alias' in a) { - name = (_a = a.alias) === null || _a === void 0 ? void 0 : _a.value; - } - if (name == null && 'name' in a) { - name = (_b = a.name) === null || _b === void 0 ? void 0 : _b.value; - } - if (name == null) { - name = a.kind; - } - return name; -} -function compareNodes(a, b, customFn) { - const aStr = nodeToString(a); - const bStr = nodeToString(b); - if (typeof customFn === 'function') { - return customFn(aStr, bStr); - } - return compareStrings(aStr, bStr); -} -function isSome(input) { - return input != null; -} - -function createGraphQLError(message, options) { - if (versionInfo.major >= 17) { - return new GraphQLError(message, options); - } - return new GraphQLError(message, options === null || options === void 0 ? void 0 : options.nodes, options === null || options === void 0 ? void 0 : options.source, options === null || options === void 0 ? void 0 : options.positions, options === null || options === void 0 ? void 0 : options.path, options === null || options === void 0 ? void 0 : options.originalError, options === null || options === void 0 ? void 0 : options.extensions); -} - -let AggregateErrorImpl; -if (typeof AggregateError === 'undefined') { - class AggregateErrorClass extends Error { - constructor(errors, message = '') { - super(message); - this.errors = errors; - this.name = 'AggregateError'; - Error.captureStackTrace(this, AggregateErrorClass); - } - } - AggregateErrorImpl = function (errors, message) { - return new AggregateErrorClass(errors, message); - }; -} -else { - AggregateErrorImpl = AggregateError; -} -function isAggregateError$1(error) { - return 'errors' in error && Array.isArray(error['errors']); -} - -// Taken from graphql-js -const MAX_RECURSIVE_DEPTH = 3; -/** - * Used to print values in error messages. - */ -function inspect(value) { - return formatValue(value, []); -} -function formatValue(value, seenValues) { - switch (typeof value) { - case 'string': - return JSON.stringify(value); - case 'function': - return value.name ? `[function ${value.name}]` : '[function]'; - case 'object': - return formatObjectValue(value, seenValues); - default: - return String(value); - } -} -function formatError(value) { - if (value instanceof GraphQLError) { - return value.toString(); - } - return `${value.name}: ${value.message};\n ${value.stack}`; -} -function formatObjectValue(value, previouslySeenValues) { - if (value === null) { - return 'null'; - } - if (value instanceof Error) { - if (isAggregateError$1(value)) { - return formatError(value) + '\n' + formatArray(value.errors, previouslySeenValues); - } - return formatError(value); - } - if (previouslySeenValues.includes(value)) { - return '[Circular]'; - } - const seenValues = [...previouslySeenValues, value]; - if (isJSONable(value)) { - const jsonValue = value.toJSON(); - // check for infinite recursion - if (jsonValue !== value) { - return typeof jsonValue === 'string' ? jsonValue : formatValue(jsonValue, seenValues); - } - } - else if (Array.isArray(value)) { - return formatArray(value, seenValues); - } - return formatObject(value, seenValues); -} -function isJSONable(value) { - return typeof value.toJSON === 'function'; -} -function formatObject(object, seenValues) { - const entries = Object.entries(object); - if (entries.length === 0) { - return '{}'; - } - if (seenValues.length > MAX_RECURSIVE_DEPTH) { - return '[' + getObjectTag(object) + ']'; - } - const properties = entries.map(([key, value]) => key + ': ' + formatValue(value, seenValues)); - return '{ ' + properties.join(', ') + ' }'; -} -function formatArray(array, seenValues) { - if (array.length === 0) { - return '[]'; - } - if (seenValues.length > MAX_RECURSIVE_DEPTH) { - return '[Array]'; - } - const len = array.length; - const remaining = array.length; - const items = []; - for (let i = 0; i < len; ++i) { - items.push(formatValue(array[i], seenValues)); - } - if (remaining === 1) { - items.push('... 1 more item'); - } - else if (remaining > 1) { - items.push(`... ${remaining} more items`); - } - return '[' + items.join(', ') + ']'; -} -function getObjectTag(object) { - const tag = Object.prototype.toString - .call(object) - .replace(/^\[object /, '') - .replace(/]$/, ''); - if (tag === 'Object' && typeof object.constructor === 'function') { - const name = object.constructor.name; - if (typeof name === 'string' && name !== '') { - return name; - } - } - return tag; -} - -function getDirectivesInExtensions(node, pathToDirectivesInExtensions = ['directives']) { - return pathToDirectivesInExtensions.reduce((acc, pathSegment) => (acc == null ? acc : acc[pathSegment]), node === null || node === void 0 ? void 0 : node.extensions); -} - -function astFromType(type) { - if (isNonNullType(type)) { - const innerType = astFromType(type.ofType); - if (innerType.kind === Kind.NON_NULL_TYPE) { - throw new Error(`Invalid type node ${inspect(type)}. Inner type of non-null type cannot be a non-null type.`); - } - return { - kind: Kind.NON_NULL_TYPE, - type: innerType, - }; - } - else if (isListType(type)) { - return { - kind: Kind.LIST_TYPE, - type: astFromType(type.ofType), - }; - } - return { - kind: Kind.NAMED_TYPE, - name: { - kind: Kind.NAME, - value: type.name, - }, - }; -} - -/** - * Produces a GraphQL Value AST given a JavaScript object. - * Function will match JavaScript/JSON values to GraphQL AST schema format - * by using the following mapping. - * - * | JSON Value | GraphQL Value | - * | ------------- | -------------------- | - * | Object | Input Object | - * | Array | List | - * | Boolean | Boolean | - * | String | String | - * | Number | Int / Float | - * | null | NullValue | - * - */ -function astFromValueUntyped(value) { - // only explicit null, not undefined, NaN - if (value === null) { - return { kind: Kind.NULL }; - } - // undefined - if (value === undefined) { - return null; - } - // Convert JavaScript array to GraphQL list. If the GraphQLType is a list, but - // the value is not an array, convert the value using the list's item type. - if (Array.isArray(value)) { - const valuesNodes = []; - for (const item of value) { - const itemNode = astFromValueUntyped(item); - if (itemNode != null) { - valuesNodes.push(itemNode); - } - } - return { kind: Kind.LIST, values: valuesNodes }; - } - if (typeof value === 'object') { - const fieldNodes = []; - for (const fieldName in value) { - const fieldValue = value[fieldName]; - const ast = astFromValueUntyped(fieldValue); - if (ast) { - fieldNodes.push({ - kind: Kind.OBJECT_FIELD, - name: { kind: Kind.NAME, value: fieldName }, - value: ast, - }); - } - } - return { kind: Kind.OBJECT, fields: fieldNodes }; - } - // Others serialize based on their corresponding JavaScript scalar types. - if (typeof value === 'boolean') { - return { kind: Kind.BOOLEAN, value }; - } - // JavaScript numbers can be Int or Float values. - if (typeof value === 'number' && isFinite(value)) { - const stringNum = String(value); - return integerStringRegExp.test(stringNum) - ? { kind: Kind.INT, value: stringNum } - : { kind: Kind.FLOAT, value: stringNum }; - } - if (typeof value === 'string') { - return { kind: Kind.STRING, value }; - } - throw new TypeError(`Cannot convert value to AST: ${value}.`); -} -/** - * IntValue: - * - NegativeSign? 0 - * - NegativeSign? NonZeroDigit ( Digit+ )? - */ -const integerStringRegExp = /^-?(?:0|[1-9][0-9]*)$/; - -function memoize1(fn) { - const memoize1cache = new WeakMap(); - return function memoized(a1) { - const cachedValue = memoize1cache.get(a1); - if (cachedValue === undefined) { - const newValue = fn(a1); - memoize1cache.set(a1, newValue); - return newValue; - } - return cachedValue; - }; -} - -const getRootTypeMap = memoize1(function getRootTypeMap(schema) { - const rootTypeMap = new Map(); - const queryType = schema.getQueryType(); - if (queryType) { - rootTypeMap.set('query', queryType); - } - const mutationType = schema.getMutationType(); - if (mutationType) { - rootTypeMap.set('mutation', mutationType); - } - const subscriptionType = schema.getSubscriptionType(); - if (subscriptionType) { - rootTypeMap.set('subscription', subscriptionType); - } - return rootTypeMap; -}); - -function getDocumentNodeFromSchema(schema, options = {}) { - const pathToDirectivesInExtensions = options.pathToDirectivesInExtensions; - const typesMap = schema.getTypeMap(); - const schemaNode = astFromSchema(schema, pathToDirectivesInExtensions); - const definitions = schemaNode != null ? [schemaNode] : []; - const directives = schema.getDirectives(); - for (const directive of directives) { - if (isSpecifiedDirective(directive)) { - continue; - } - definitions.push(astFromDirective(directive, schema, pathToDirectivesInExtensions)); - } - for (const typeName in typesMap) { - const type = typesMap[typeName]; - const isPredefinedScalar = isSpecifiedScalarType(type); - const isIntrospection = isIntrospectionType(type); - if (isPredefinedScalar || isIntrospection) { - continue; - } - if (isObjectType(type)) { - definitions.push(astFromObjectType(type, schema, pathToDirectivesInExtensions)); - } - else if (isInterfaceType(type)) { - definitions.push(astFromInterfaceType(type, schema, pathToDirectivesInExtensions)); - } - else if (isUnionType(type)) { - definitions.push(astFromUnionType(type, schema, pathToDirectivesInExtensions)); - } - else if (isInputObjectType(type)) { - definitions.push(astFromInputObjectType(type, schema, pathToDirectivesInExtensions)); - } - else if (isEnumType(type)) { - definitions.push(astFromEnumType(type, schema, pathToDirectivesInExtensions)); - } - else if (isScalarType(type)) { - definitions.push(astFromScalarType(type, schema, pathToDirectivesInExtensions)); - } - else { - throw new Error(`Unknown type ${type}.`); - } - } - return { - kind: Kind.DOCUMENT, - definitions, - }; -} -function astFromSchema(schema, pathToDirectivesInExtensions) { - var _a, _b; - const operationTypeMap = new Map([ - ['query', undefined], - ['mutation', undefined], - ['subscription', undefined], - ]); - const nodes = []; - if (schema.astNode != null) { - nodes.push(schema.astNode); - } - if (schema.extensionASTNodes != null) { - for (const extensionASTNode of schema.extensionASTNodes) { - nodes.push(extensionASTNode); - } - } - for (const node of nodes) { - if (node.operationTypes) { - for (const operationTypeDefinitionNode of node.operationTypes) { - operationTypeMap.set(operationTypeDefinitionNode.operation, operationTypeDefinitionNode); - } - } - } - const rootTypeMap = getRootTypeMap(schema); - for (const [operationTypeNode, operationTypeDefinitionNode] of operationTypeMap) { - const rootType = rootTypeMap.get(operationTypeNode); - if (rootType != null) { - const rootTypeAST = astFromType(rootType); - if (operationTypeDefinitionNode != null) { - operationTypeDefinitionNode.type = rootTypeAST; - } - else { - operationTypeMap.set(operationTypeNode, { - kind: Kind.OPERATION_TYPE_DEFINITION, - operation: operationTypeNode, - type: rootTypeAST, - }); - } - } - } - const operationTypes = [...operationTypeMap.values()].filter(isSome); - const directives = getDirectiveNodes(schema, schema, pathToDirectivesInExtensions); - if (!operationTypes.length && !directives.length) { - return null; - } - const schemaNode = { - kind: operationTypes != null ? Kind.SCHEMA_DEFINITION : Kind.SCHEMA_EXTENSION, - operationTypes, - // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility - directives: directives, - }; - // This code is so weird because it needs to support GraphQL.js 14 - // In GraphQL.js 14 there is no `description` value on schemaNode - schemaNode.description = - ((_b = (_a = schema.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : schema.description != null) - ? { - kind: Kind.STRING, - value: schema.description, - block: true, - } - : undefined; - return schemaNode; -} -function astFromDirective(directive, schema, pathToDirectivesInExtensions) { - var _a, _b, _c, _d; - return { - kind: Kind.DIRECTIVE_DEFINITION, - description: (_b = (_a = directive.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (directive.description - ? { - kind: Kind.STRING, - value: directive.description, - } - : undefined), - name: { - kind: Kind.NAME, - value: directive.name, - }, - arguments: (_c = directive.args) === null || _c === void 0 ? void 0 : _c.map(arg => astFromArg(arg, schema, pathToDirectivesInExtensions)), - repeatable: directive.isRepeatable, - locations: ((_d = directive.locations) === null || _d === void 0 ? void 0 : _d.map(location => ({ - kind: Kind.NAME, - value: location, - }))) || [], - }; -} -function getDirectiveNodes(entity, schema, pathToDirectivesInExtensions) { - const directivesInExtensions = getDirectivesInExtensions(entity, pathToDirectivesInExtensions); - let nodes = []; - if (entity.astNode != null) { - nodes.push(entity.astNode); - } - if ('extensionASTNodes' in entity && entity.extensionASTNodes != null) { - nodes = nodes.concat(entity.extensionASTNodes); - } - let directives; - if (directivesInExtensions != null) { - directives = makeDirectiveNodes(schema, directivesInExtensions); - } - else { - directives = []; - for (const node of nodes) { - if (node.directives) { - directives.push(...node.directives); - } - } - } - return directives; -} -function getDeprecatableDirectiveNodes(entity, schema, pathToDirectivesInExtensions) { - var _a, _b; - let directiveNodesBesidesDeprecated = []; - let deprecatedDirectiveNode = null; - const directivesInExtensions = getDirectivesInExtensions(entity, pathToDirectivesInExtensions); - let directives; - if (directivesInExtensions != null) { - directives = makeDirectiveNodes(schema, directivesInExtensions); - } - else { - directives = (_a = entity.astNode) === null || _a === void 0 ? void 0 : _a.directives; - } - if (directives != null) { - directiveNodesBesidesDeprecated = directives.filter(directive => directive.name.value !== 'deprecated'); - if (entity.deprecationReason != null) { - deprecatedDirectiveNode = (_b = directives.filter(directive => directive.name.value === 'deprecated')) === null || _b === void 0 ? void 0 : _b[0]; - } - } - if (entity.deprecationReason != null && - deprecatedDirectiveNode == null) { - deprecatedDirectiveNode = makeDeprecatedDirective(entity.deprecationReason); - } - return deprecatedDirectiveNode == null - ? directiveNodesBesidesDeprecated - : [deprecatedDirectiveNode].concat(directiveNodesBesidesDeprecated); -} -function astFromArg(arg, schema, pathToDirectivesInExtensions) { - var _a, _b, _c; - return { - kind: Kind.INPUT_VALUE_DEFINITION, - description: (_b = (_a = arg.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (arg.description - ? { - kind: Kind.STRING, - value: arg.description, - block: true, - } - : undefined), - name: { - kind: Kind.NAME, - value: arg.name, - }, - type: astFromType(arg.type), - // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility - defaultValue: arg.defaultValue !== undefined ? (_c = astFromValue(arg.defaultValue, arg.type)) !== null && _c !== void 0 ? _c : undefined : undefined, - directives: getDeprecatableDirectiveNodes(arg, schema, pathToDirectivesInExtensions), - }; -} -function astFromObjectType(type, schema, pathToDirectivesInExtensions) { - var _a, _b; - return { - kind: Kind.OBJECT_TYPE_DEFINITION, - description: (_b = (_a = type.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (type.description - ? { - kind: Kind.STRING, - value: type.description, - block: true, - } - : undefined), - name: { - kind: Kind.NAME, - value: type.name, - }, - fields: Object.values(type.getFields()).map(field => astFromField(field, schema, pathToDirectivesInExtensions)), - interfaces: Object.values(type.getInterfaces()).map(iFace => astFromType(iFace)), - directives: getDirectiveNodes(type, schema, pathToDirectivesInExtensions), - }; -} -function astFromInterfaceType(type, schema, pathToDirectivesInExtensions) { - var _a, _b; - const node = { - kind: Kind.INTERFACE_TYPE_DEFINITION, - description: (_b = (_a = type.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (type.description - ? { - kind: Kind.STRING, - value: type.description, - block: true, - } - : undefined), - name: { - kind: Kind.NAME, - value: type.name, - }, - fields: Object.values(type.getFields()).map(field => astFromField(field, schema, pathToDirectivesInExtensions)), - directives: getDirectiveNodes(type, schema, pathToDirectivesInExtensions), - }; - if ('getInterfaces' in type) { - node.interfaces = Object.values(type.getInterfaces()).map(iFace => astFromType(iFace)); - } - return node; -} -function astFromUnionType(type, schema, pathToDirectivesInExtensions) { - var _a, _b; - return { - kind: Kind.UNION_TYPE_DEFINITION, - description: (_b = (_a = type.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (type.description - ? { - kind: Kind.STRING, - value: type.description, - block: true, - } - : undefined), - name: { - kind: Kind.NAME, - value: type.name, - }, - // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility - directives: getDirectiveNodes(type, schema, pathToDirectivesInExtensions), - types: type.getTypes().map(type => astFromType(type)), - }; -} -function astFromInputObjectType(type, schema, pathToDirectivesInExtensions) { - var _a, _b; - return { - kind: Kind.INPUT_OBJECT_TYPE_DEFINITION, - description: (_b = (_a = type.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (type.description - ? { - kind: Kind.STRING, - value: type.description, - block: true, - } - : undefined), - name: { - kind: Kind.NAME, - value: type.name, - }, - fields: Object.values(type.getFields()).map(field => astFromInputField(field, schema, pathToDirectivesInExtensions)), - // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility - directives: getDirectiveNodes(type, schema, pathToDirectivesInExtensions), - }; -} -function astFromEnumType(type, schema, pathToDirectivesInExtensions) { - var _a, _b; - return { - kind: Kind.ENUM_TYPE_DEFINITION, - description: (_b = (_a = type.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (type.description - ? { - kind: Kind.STRING, - value: type.description, - block: true, - } - : undefined), - name: { - kind: Kind.NAME, - value: type.name, - }, - values: Object.values(type.getValues()).map(value => astFromEnumValue(value, schema, pathToDirectivesInExtensions)), - // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility - directives: getDirectiveNodes(type, schema, pathToDirectivesInExtensions), - }; -} -function astFromScalarType(type, schema, pathToDirectivesInExtensions) { - var _a, _b, _c; - const directivesInExtensions = getDirectivesInExtensions(type, pathToDirectivesInExtensions); - const directives = directivesInExtensions - ? makeDirectiveNodes(schema, directivesInExtensions) - : ((_a = type.astNode) === null || _a === void 0 ? void 0 : _a.directives) || []; - const specifiedByValue = (type['specifiedByUrl'] || type['specifiedByURL']); - if (specifiedByValue && !directives.some(directiveNode => directiveNode.name.value === 'specifiedBy')) { - const specifiedByArgs = { - url: specifiedByValue, - }; - directives.push(makeDirectiveNode('specifiedBy', specifiedByArgs)); - } - return { - kind: Kind.SCALAR_TYPE_DEFINITION, - description: (_c = (_b = type.astNode) === null || _b === void 0 ? void 0 : _b.description) !== null && _c !== void 0 ? _c : (type.description - ? { - kind: Kind.STRING, - value: type.description, - block: true, - } - : undefined), - name: { - kind: Kind.NAME, - value: type.name, - }, - // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility - directives: directives, - }; -} -function astFromField(field, schema, pathToDirectivesInExtensions) { - var _a, _b; - return { - kind: Kind.FIELD_DEFINITION, - description: (_b = (_a = field.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (field.description - ? { - kind: Kind.STRING, - value: field.description, - block: true, - } - : undefined), - name: { - kind: Kind.NAME, - value: field.name, - }, - arguments: field.args.map(arg => astFromArg(arg, schema, pathToDirectivesInExtensions)), - type: astFromType(field.type), - // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility - directives: getDeprecatableDirectiveNodes(field, schema, pathToDirectivesInExtensions), - }; -} -function astFromInputField(field, schema, pathToDirectivesInExtensions) { - var _a, _b, _c; - return { - kind: Kind.INPUT_VALUE_DEFINITION, - description: (_b = (_a = field.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (field.description - ? { - kind: Kind.STRING, - value: field.description, - block: true, - } - : undefined), - name: { - kind: Kind.NAME, - value: field.name, - }, - type: astFromType(field.type), - // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility - directives: getDeprecatableDirectiveNodes(field, schema, pathToDirectivesInExtensions), - defaultValue: (_c = astFromValue(field.defaultValue, field.type)) !== null && _c !== void 0 ? _c : undefined, - }; -} -function astFromEnumValue(value, schema, pathToDirectivesInExtensions) { - var _a, _b; - return { - kind: Kind.ENUM_VALUE_DEFINITION, - description: (_b = (_a = value.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (value.description - ? { - kind: Kind.STRING, - value: value.description, - block: true, - } - : undefined), - name: { - kind: Kind.NAME, - value: value.name, - }, - // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility - directives: getDeprecatableDirectiveNodes(value, schema, pathToDirectivesInExtensions), - }; -} -function makeDeprecatedDirective(deprecationReason) { - return makeDirectiveNode('deprecated', { reason: deprecationReason }, GraphQLDeprecatedDirective); -} -function makeDirectiveNode(name, args, directive) { - const directiveArguments = []; - if (directive != null) { - for (const arg of directive.args) { - const argName = arg.name; - const argValue = args[argName]; - if (argValue !== undefined) { - const value = astFromValue(argValue, arg.type); - if (value) { - directiveArguments.push({ - kind: Kind.ARGUMENT, - name: { - kind: Kind.NAME, - value: argName, - }, - value, - }); - } - } - } - } - else { - for (const argName in args) { - const argValue = args[argName]; - const value = astFromValueUntyped(argValue); - if (value) { - directiveArguments.push({ - kind: Kind.ARGUMENT, - name: { - kind: Kind.NAME, - value: argName, - }, - value, - }); - } - } - } - return { - kind: Kind.DIRECTIVE, - name: { - kind: Kind.NAME, - value: name, - }, - arguments: directiveArguments, - }; -} -function makeDirectiveNodes(schema, directiveValues) { - const directiveNodes = []; - for (const directiveName in directiveValues) { - const arrayOrSingleValue = directiveValues[directiveName]; - const directive = schema === null || schema === void 0 ? void 0 : schema.getDirective(directiveName); - if (Array.isArray(arrayOrSingleValue)) { - for (const value of arrayOrSingleValue) { - directiveNodes.push(makeDirectiveNode(directiveName, value, directive)); - } - } - else { - directiveNodes.push(makeDirectiveNode(directiveName, arrayOrSingleValue, directive)); - } - } - return directiveNodes; -} - -const MAX_LINE_LENGTH = 80; -let commentsRegistry = {}; -function resetComments() { - commentsRegistry = {}; -} -function collectComment(node) { - var _a; - const entityName = (_a = node.name) === null || _a === void 0 ? void 0 : _a.value; - if (entityName == null) { - return; - } - pushComment(node, entityName); - switch (node.kind) { - case 'EnumTypeDefinition': - if (node.values) { - for (const value of node.values) { - pushComment(value, entityName, value.name.value); - } - } - break; - case 'ObjectTypeDefinition': - case 'InputObjectTypeDefinition': - case 'InterfaceTypeDefinition': - if (node.fields) { - for (const field of node.fields) { - pushComment(field, entityName, field.name.value); - if (isFieldDefinitionNode(field) && field.arguments) { - for (const arg of field.arguments) { - pushComment(arg, entityName, field.name.value, arg.name.value); - } - } - } - } - break; - } -} -function pushComment(node, entity, field, argument) { - const comment = getComment(node); - if (typeof comment !== 'string' || comment.length === 0) { - return; - } - const keys = [entity]; - if (field) { - keys.push(field); - if (argument) { - keys.push(argument); - } - } - const path = keys.join('.'); - if (!commentsRegistry[path]) { - commentsRegistry[path] = []; - } - commentsRegistry[path].push(comment); -} -function printComment(comment) { - return '\n# ' + comment.replace(/\n/g, '\n# '); -} -/** - * Copyright (c) 2015-present, Facebook, Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ -/** - * NOTE: ==> This file has been modified just to add comments to the printed AST - * This is a temp measure, we will move to using the original non modified printer.js ASAP. - */ -/** - * Given maybeArray, print an empty string if it is null or empty, otherwise - * print all items together separated by separator if provided - */ -function join(maybeArray, separator) { - return maybeArray ? maybeArray.filter(x => x).join(separator || '') : ''; -} -function hasMultilineItems(maybeArray) { - var _a; - return (_a = maybeArray === null || maybeArray === void 0 ? void 0 : maybeArray.some(str => str.includes('\n'))) !== null && _a !== void 0 ? _a : false; -} -function addDescription(cb) { - return (node, _key, _parent, path, ancestors) => { - var _a; - const keys = []; - const parent = path.reduce((prev, key) => { - if (['fields', 'arguments', 'values'].includes(key) && prev.name) { - keys.push(prev.name.value); - } - return prev[key]; - }, ancestors[0]); - const key = [...keys, (_a = parent === null || parent === void 0 ? void 0 : parent.name) === null || _a === void 0 ? void 0 : _a.value].filter(Boolean).join('.'); - const items = []; - if (node.kind.includes('Definition') && commentsRegistry[key]) { - items.push(...commentsRegistry[key]); - } - return join([...items.map(printComment), node.description, cb(node, _key, _parent, path, ancestors)], '\n'); - }; -} -function indent(maybeString) { - return maybeString && ` ${maybeString.replace(/\n/g, '\n ')}`; -} -/** - * Given array, print each item on its own line, wrapped in an - * indented "{ }" block. - */ -function block(array) { - return array && array.length !== 0 ? `{\n${indent(join(array, '\n'))}\n}` : ''; -} -/** - * If maybeString is not null or empty, then wrap with start and end, otherwise - * print an empty string. - */ -function wrap(start, maybeString, end) { - return maybeString ? start + maybeString + (end || '') : ''; -} -/** - * Print a block string in the indented block form by adding a leading and - * trailing blank line. However, if a block string starts with whitespace and is - * a single-line, adding a leading blank line would strip that whitespace. - */ -function printBlockString(value, isDescription = false) { - const escaped = value.replace(/"""/g, '\\"""'); - return (value[0] === ' ' || value[0] === '\t') && value.indexOf('\n') === -1 - ? `"""${escaped.replace(/"$/, '"\n')}"""` - : `"""\n${isDescription ? escaped : indent(escaped)}\n"""`; -} -const printDocASTReducer = { - Name: { leave: node => node.value }, - Variable: { leave: node => '$' + node.name }, - // Document - Document: { - leave: node => join(node.definitions, '\n\n'), - }, - OperationDefinition: { - leave: node => { - const varDefs = wrap('(', join(node.variableDefinitions, ', '), ')'); - const prefix = join([node.operation, join([node.name, varDefs]), join(node.directives, ' ')], ' '); - // the query short form. - return prefix + ' ' + node.selectionSet; - }, - }, - VariableDefinition: { - leave: ({ variable, type, defaultValue, directives }) => variable + ': ' + type + wrap(' = ', defaultValue) + wrap(' ', join(directives, ' ')), - }, - SelectionSet: { leave: ({ selections }) => block(selections) }, - Field: { - leave({ alias, name, arguments: args, directives, selectionSet }) { - const prefix = wrap('', alias, ': ') + name; - let argsLine = prefix + wrap('(', join(args, ', '), ')'); - if (argsLine.length > MAX_LINE_LENGTH) { - argsLine = prefix + wrap('(\n', indent(join(args, '\n')), '\n)'); - } - return join([argsLine, join(directives, ' '), selectionSet], ' '); - }, - }, - Argument: { leave: ({ name, value }) => name + ': ' + value }, - // Fragments - FragmentSpread: { - leave: ({ name, directives }) => '...' + name + wrap(' ', join(directives, ' ')), - }, - InlineFragment: { - leave: ({ typeCondition, directives, selectionSet }) => join(['...', wrap('on ', typeCondition), join(directives, ' '), selectionSet], ' '), - }, - FragmentDefinition: { - leave: ({ name, typeCondition, variableDefinitions, directives, selectionSet }) => - // Note: fragment variable definitions are experimental and may be changed - // or removed in the future. - `fragment ${name}${wrap('(', join(variableDefinitions, ', '), ')')} ` + - `on ${typeCondition} ${wrap('', join(directives, ' '), ' ')}` + - selectionSet, - }, - // Value - IntValue: { leave: ({ value }) => value }, - FloatValue: { leave: ({ value }) => value }, - StringValue: { - leave: ({ value, block: isBlockString }) => { - if (isBlockString) { - return printBlockString(value); - } - return JSON.stringify(value); - }, - }, - BooleanValue: { leave: ({ value }) => (value ? 'true' : 'false') }, - NullValue: { leave: () => 'null' }, - EnumValue: { leave: ({ value }) => value }, - ListValue: { leave: ({ values }) => '[' + join(values, ', ') + ']' }, - ObjectValue: { leave: ({ fields }) => '{' + join(fields, ', ') + '}' }, - ObjectField: { leave: ({ name, value }) => name + ': ' + value }, - // Directive - Directive: { - leave: ({ name, arguments: args }) => '@' + name + wrap('(', join(args, ', '), ')'), - }, - // Type - NamedType: { leave: ({ name }) => name }, - ListType: { leave: ({ type }) => '[' + type + ']' }, - NonNullType: { leave: ({ type }) => type + '!' }, - // Type System Definitions - SchemaDefinition: { - leave: ({ directives, operationTypes }) => join(['schema', join(directives, ' '), block(operationTypes)], ' '), - }, - OperationTypeDefinition: { - leave: ({ operation, type }) => operation + ': ' + type, - }, - ScalarTypeDefinition: { - leave: ({ name, directives }) => join(['scalar', name, join(directives, ' ')], ' '), - }, - ObjectTypeDefinition: { - leave: ({ name, interfaces, directives, fields }) => join(['type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' '), - }, - FieldDefinition: { - leave: ({ name, arguments: args, type, directives }) => name + - (hasMultilineItems(args) - ? wrap('(\n', indent(join(args, '\n')), '\n)') - : wrap('(', join(args, ', '), ')')) + - ': ' + - type + - wrap(' ', join(directives, ' ')), - }, - InputValueDefinition: { - leave: ({ name, type, defaultValue, directives }) => join([name + ': ' + type, wrap('= ', defaultValue), join(directives, ' ')], ' '), - }, - InterfaceTypeDefinition: { - leave: ({ name, interfaces, directives, fields }) => join(['interface', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' '), - }, - UnionTypeDefinition: { - leave: ({ name, directives, types }) => join(['union', name, join(directives, ' '), wrap('= ', join(types, ' | '))], ' '), - }, - EnumTypeDefinition: { - leave: ({ name, directives, values }) => join(['enum', name, join(directives, ' '), block(values)], ' '), - }, - EnumValueDefinition: { - leave: ({ name, directives }) => join([name, join(directives, ' ')], ' '), - }, - InputObjectTypeDefinition: { - leave: ({ name, directives, fields }) => join(['input', name, join(directives, ' '), block(fields)], ' '), - }, - DirectiveDefinition: { - leave: ({ name, arguments: args, repeatable, locations }) => 'directive @' + - name + - (hasMultilineItems(args) - ? wrap('(\n', indent(join(args, '\n')), '\n)') - : wrap('(', join(args, ', '), ')')) + - (repeatable ? ' repeatable' : '') + - ' on ' + - join(locations, ' | '), - }, - SchemaExtension: { - leave: ({ directives, operationTypes }) => join(['extend schema', join(directives, ' '), block(operationTypes)], ' '), - }, - ScalarTypeExtension: { - leave: ({ name, directives }) => join(['extend scalar', name, join(directives, ' ')], ' '), - }, - ObjectTypeExtension: { - leave: ({ name, interfaces, directives, fields }) => join(['extend type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' '), - }, - InterfaceTypeExtension: { - leave: ({ name, interfaces, directives, fields }) => join(['extend interface', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' '), - }, - UnionTypeExtension: { - leave: ({ name, directives, types }) => join(['extend union', name, join(directives, ' '), wrap('= ', join(types, ' | '))], ' '), - }, - EnumTypeExtension: { - leave: ({ name, directives, values }) => join(['extend enum', name, join(directives, ' '), block(values)], ' '), - }, - InputObjectTypeExtension: { - leave: ({ name, directives, fields }) => join(['extend input', name, join(directives, ' '), block(fields)], ' '), - }, -}; -const printDocASTReducerWithComments = Object.keys(printDocASTReducer).reduce((prev, key) => ({ - ...prev, - [key]: { - leave: addDescription(printDocASTReducer[key].leave), - }, -}), {}); -/** - * Converts an AST into a string, using one set of reasonable - * formatting rules. - */ -function printWithComments(ast) { - return visit(ast, printDocASTReducerWithComments); -} -function isFieldDefinitionNode(node) { - return node.kind === 'FieldDefinition'; -} -function getComment(node) { - const rawValue = getLeadingCommentBlock(node); - if (rawValue !== undefined) { - return dedentBlockStringValue(`\n${rawValue}`); - } -} -function getLeadingCommentBlock(node) { - const loc = node.loc; - if (!loc) { - return; - } - const comments = []; - let token = loc.startToken.prev; - while (token != null && - token.kind === TokenKind.COMMENT && - token.next != null && - token.prev != null && - token.line + 1 === token.next.line && - token.line !== token.prev.line) { - const value = String(token.value); - comments.push(value); - token = token.prev; - } - return comments.length > 0 ? comments.reverse().join('\n') : undefined; -} -function dedentBlockStringValue(rawString) { - // Expand a block string's raw value into independent lines. - const lines = rawString.split(/\r\n|[\n\r]/g); - // Remove common indentation from all lines but first. - const commonIndent = getBlockStringIndentation(lines); - if (commonIndent !== 0) { - for (let i = 1; i < lines.length; i++) { - lines[i] = lines[i].slice(commonIndent); - } - } - // Remove leading and trailing blank lines. - while (lines.length > 0 && isBlank(lines[0])) { - lines.shift(); - } - while (lines.length > 0 && isBlank(lines[lines.length - 1])) { - lines.pop(); - } - // Return a string of the lines joined with U+000A. - return lines.join('\n'); -} -/** - * @internal - */ -function getBlockStringIndentation(lines) { - let commonIndent = null; - for (let i = 1; i < lines.length; i++) { - const line = lines[i]; - const indent = leadingWhitespace(line); - if (indent === line.length) { - continue; // skip empty lines - } - if (commonIndent === null || indent < commonIndent) { - commonIndent = indent; - if (commonIndent === 0) { - break; - } - } - } - return commonIndent === null ? 0 : commonIndent; -} -function leadingWhitespace(str) { - let i = 0; - while (i < str.length && (str[i] === ' ' || str[i] === '\t')) { - i++; - } - return i; -} -function isBlank(str) { - return leadingWhitespace(str) === str.length; -} - -var DirectiveLocation; -(function (DirectiveLocation) { - /** Request Definitions */ - DirectiveLocation["QUERY"] = "QUERY"; - DirectiveLocation["MUTATION"] = "MUTATION"; - DirectiveLocation["SUBSCRIPTION"] = "SUBSCRIPTION"; - DirectiveLocation["FIELD"] = "FIELD"; - DirectiveLocation["FRAGMENT_DEFINITION"] = "FRAGMENT_DEFINITION"; - DirectiveLocation["FRAGMENT_SPREAD"] = "FRAGMENT_SPREAD"; - DirectiveLocation["INLINE_FRAGMENT"] = "INLINE_FRAGMENT"; - DirectiveLocation["VARIABLE_DEFINITION"] = "VARIABLE_DEFINITION"; - /** Type System Definitions */ - DirectiveLocation["SCHEMA"] = "SCHEMA"; - DirectiveLocation["SCALAR"] = "SCALAR"; - DirectiveLocation["OBJECT"] = "OBJECT"; - DirectiveLocation["FIELD_DEFINITION"] = "FIELD_DEFINITION"; - DirectiveLocation["ARGUMENT_DEFINITION"] = "ARGUMENT_DEFINITION"; - DirectiveLocation["INTERFACE"] = "INTERFACE"; - DirectiveLocation["UNION"] = "UNION"; - DirectiveLocation["ENUM"] = "ENUM"; - DirectiveLocation["ENUM_VALUE"] = "ENUM_VALUE"; - DirectiveLocation["INPUT_OBJECT"] = "INPUT_OBJECT"; - DirectiveLocation["INPUT_FIELD_DEFINITION"] = "INPUT_FIELD_DEFINITION"; -})(DirectiveLocation || (DirectiveLocation = {})); - -var MapperKind; -(function (MapperKind) { - MapperKind["TYPE"] = "MapperKind.TYPE"; - MapperKind["SCALAR_TYPE"] = "MapperKind.SCALAR_TYPE"; - MapperKind["ENUM_TYPE"] = "MapperKind.ENUM_TYPE"; - MapperKind["COMPOSITE_TYPE"] = "MapperKind.COMPOSITE_TYPE"; - MapperKind["OBJECT_TYPE"] = "MapperKind.OBJECT_TYPE"; - MapperKind["INPUT_OBJECT_TYPE"] = "MapperKind.INPUT_OBJECT_TYPE"; - MapperKind["ABSTRACT_TYPE"] = "MapperKind.ABSTRACT_TYPE"; - MapperKind["UNION_TYPE"] = "MapperKind.UNION_TYPE"; - MapperKind["INTERFACE_TYPE"] = "MapperKind.INTERFACE_TYPE"; - MapperKind["ROOT_OBJECT"] = "MapperKind.ROOT_OBJECT"; - MapperKind["QUERY"] = "MapperKind.QUERY"; - MapperKind["MUTATION"] = "MapperKind.MUTATION"; - MapperKind["SUBSCRIPTION"] = "MapperKind.SUBSCRIPTION"; - MapperKind["DIRECTIVE"] = "MapperKind.DIRECTIVE"; - MapperKind["FIELD"] = "MapperKind.FIELD"; - MapperKind["COMPOSITE_FIELD"] = "MapperKind.COMPOSITE_FIELD"; - MapperKind["OBJECT_FIELD"] = "MapperKind.OBJECT_FIELD"; - MapperKind["ROOT_FIELD"] = "MapperKind.ROOT_FIELD"; - MapperKind["QUERY_ROOT_FIELD"] = "MapperKind.QUERY_ROOT_FIELD"; - MapperKind["MUTATION_ROOT_FIELD"] = "MapperKind.MUTATION_ROOT_FIELD"; - MapperKind["SUBSCRIPTION_ROOT_FIELD"] = "MapperKind.SUBSCRIPTION_ROOT_FIELD"; - MapperKind["INTERFACE_FIELD"] = "MapperKind.INTERFACE_FIELD"; - MapperKind["INPUT_OBJECT_FIELD"] = "MapperKind.INPUT_OBJECT_FIELD"; - MapperKind["ARGUMENT"] = "MapperKind.ARGUMENT"; - MapperKind["ENUM_VALUE"] = "MapperKind.ENUM_VALUE"; -})(MapperKind || (MapperKind = {})); - -function getObjectTypeFromTypeMap(typeMap, type) { - if (type) { - const maybeObjectType = typeMap[type.name]; - if (isObjectType(maybeObjectType)) { - return maybeObjectType; - } - } -} - -function isNamedStub(type) { - if ('getFields' in type) { - const fields = type.getFields(); - // eslint-disable-next-line no-unreachable-loop - for (const fieldName in fields) { - const field = fields[fieldName]; - return field.name === '_fake'; - } - } - return false; -} -function getBuiltInForStub(type) { - switch (type.name) { - case GraphQLInt.name: - return GraphQLInt; - case GraphQLFloat.name: - return GraphQLFloat; - case GraphQLString.name: - return GraphQLString; - case GraphQLBoolean.name: - return GraphQLBoolean; - case GraphQLID.name: - return GraphQLID; - default: - return type; - } -} - -function rewireTypes(originalTypeMap, directives) { - const referenceTypeMap = Object.create(null); - for (const typeName in originalTypeMap) { - referenceTypeMap[typeName] = originalTypeMap[typeName]; - } - const newTypeMap = Object.create(null); - for (const typeName in referenceTypeMap) { - const namedType = referenceTypeMap[typeName]; - if (namedType == null || typeName.startsWith('__')) { - continue; - } - const newName = namedType.name; - if (newName.startsWith('__')) { - continue; - } - if (newTypeMap[newName] != null) { - console.warn(`Duplicate schema type name ${newName} found; keeping the existing one found in the schema`); - continue; - } - newTypeMap[newName] = namedType; - } - for (const typeName in newTypeMap) { - newTypeMap[typeName] = rewireNamedType(newTypeMap[typeName]); - } - const newDirectives = directives.map(directive => rewireDirective(directive)); - return { - typeMap: newTypeMap, - directives: newDirectives, - }; - function rewireDirective(directive) { - if (isSpecifiedDirective(directive)) { - return directive; - } - const directiveConfig = directive.toConfig(); - directiveConfig.args = rewireArgs(directiveConfig.args); - return new GraphQLDirective(directiveConfig); - } - function rewireArgs(args) { - const rewiredArgs = {}; - for (const argName in args) { - const arg = args[argName]; - const rewiredArgType = rewireType(arg.type); - if (rewiredArgType != null) { - arg.type = rewiredArgType; - rewiredArgs[argName] = arg; - } - } - return rewiredArgs; - } - function rewireNamedType(type) { - if (isObjectType(type)) { - const config = type.toConfig(); - const newConfig = { - ...config, - fields: () => rewireFields(config.fields), - interfaces: () => rewireNamedTypes(config.interfaces), - }; - return new GraphQLObjectType(newConfig); - } - else if (isInterfaceType(type)) { - const config = type.toConfig(); - const newConfig = { - ...config, - fields: () => rewireFields(config.fields), - }; - if ('interfaces' in newConfig) { - newConfig.interfaces = () => rewireNamedTypes(config.interfaces); - } - return new GraphQLInterfaceType(newConfig); - } - else if (isUnionType(type)) { - const config = type.toConfig(); - const newConfig = { - ...config, - types: () => rewireNamedTypes(config.types), - }; - return new GraphQLUnionType(newConfig); - } - else if (isInputObjectType(type)) { - const config = type.toConfig(); - const newConfig = { - ...config, - fields: () => rewireInputFields(config.fields), - }; - return new GraphQLInputObjectType(newConfig); - } - else if (isEnumType(type)) { - const enumConfig = type.toConfig(); - return new GraphQLEnumType(enumConfig); - } - else if (isScalarType(type)) { - if (isSpecifiedScalarType(type)) { - return type; - } - const scalarConfig = type.toConfig(); - return new GraphQLScalarType(scalarConfig); - } - throw new Error(`Unexpected schema type: ${type}`); - } - function rewireFields(fields) { - const rewiredFields = {}; - for (const fieldName in fields) { - const field = fields[fieldName]; - const rewiredFieldType = rewireType(field.type); - if (rewiredFieldType != null && field.args) { - field.type = rewiredFieldType; - field.args = rewireArgs(field.args); - rewiredFields[fieldName] = field; - } - } - return rewiredFields; - } - function rewireInputFields(fields) { - const rewiredFields = {}; - for (const fieldName in fields) { - const field = fields[fieldName]; - const rewiredFieldType = rewireType(field.type); - if (rewiredFieldType != null) { - field.type = rewiredFieldType; - rewiredFields[fieldName] = field; - } - } - return rewiredFields; - } - function rewireNamedTypes(namedTypes) { - const rewiredTypes = []; - for (const namedType of namedTypes) { - const rewiredType = rewireType(namedType); - if (rewiredType != null) { - rewiredTypes.push(rewiredType); - } - } - return rewiredTypes; - } - function rewireType(type) { - if (isListType(type)) { - const rewiredType = rewireType(type.ofType); - return rewiredType != null ? new GraphQLList(rewiredType) : null; - } - else if (isNonNullType(type)) { - const rewiredType = rewireType(type.ofType); - return rewiredType != null ? new GraphQLNonNull(rewiredType) : null; - } - else if (isNamedType(type)) { - let rewiredType = referenceTypeMap[type.name]; - if (rewiredType === undefined) { - rewiredType = isNamedStub(type) ? getBuiltInForStub(type) : rewireNamedType(type); - newTypeMap[rewiredType.name] = referenceTypeMap[type.name] = rewiredType; - } - return rewiredType != null ? newTypeMap[rewiredType.name] : null; - } - return null; - } -} - -function transformInputValue(type, value, inputLeafValueTransformer = null, inputObjectValueTransformer = null) { - if (value == null) { - return value; - } - const nullableType = getNullableType(type); - if (isLeafType(nullableType)) { - return inputLeafValueTransformer != null ? inputLeafValueTransformer(nullableType, value) : value; - } - else if (isListType(nullableType)) { - return value.map((listMember) => transformInputValue(nullableType.ofType, listMember, inputLeafValueTransformer, inputObjectValueTransformer)); - } - else if (isInputObjectType(nullableType)) { - const fields = nullableType.getFields(); - const newValue = {}; - for (const key in value) { - const field = fields[key]; - if (field != null) { - newValue[key] = transformInputValue(field.type, value[key], inputLeafValueTransformer, inputObjectValueTransformer); - } - } - return inputObjectValueTransformer != null ? inputObjectValueTransformer(nullableType, newValue) : newValue; - } - // unreachable, no other possible return value -} -function serializeInputValue(type, value) { - return transformInputValue(type, value, (t, v) => { - try { - return t.serialize(v); - } - catch (_a) { - return v; - } - }); -} -function parseInputValue(type, value) { - return transformInputValue(type, value, (t, v) => { - try { - return t.parseValue(v); - } - catch (_a) { - return v; - } - }); -} - -function mapSchema(schema, schemaMapper = {}) { - const newTypeMap = mapArguments(mapFields(mapTypes(mapDefaultValues(mapEnumValues(mapTypes(mapDefaultValues(schema.getTypeMap(), schema, serializeInputValue), schema, schemaMapper, type => isLeafType(type)), schema, schemaMapper), schema, parseInputValue), schema, schemaMapper, type => !isLeafType(type)), schema, schemaMapper), schema, schemaMapper); - const originalDirectives = schema.getDirectives(); - const newDirectives = mapDirectives(originalDirectives, schema, schemaMapper); - const { typeMap, directives } = rewireTypes(newTypeMap, newDirectives); - return new GraphQLSchema({ - ...schema.toConfig(), - query: getObjectTypeFromTypeMap(typeMap, getObjectTypeFromTypeMap(newTypeMap, schema.getQueryType())), - mutation: getObjectTypeFromTypeMap(typeMap, getObjectTypeFromTypeMap(newTypeMap, schema.getMutationType())), - subscription: getObjectTypeFromTypeMap(typeMap, getObjectTypeFromTypeMap(newTypeMap, schema.getSubscriptionType())), - types: Object.values(typeMap), - directives, - }); -} -function mapTypes(originalTypeMap, schema, schemaMapper, testFn = () => true) { - const newTypeMap = {}; - for (const typeName in originalTypeMap) { - if (!typeName.startsWith('__')) { - const originalType = originalTypeMap[typeName]; - if (originalType == null || !testFn(originalType)) { - newTypeMap[typeName] = originalType; - continue; - } - const typeMapper = getTypeMapper(schema, schemaMapper, typeName); - if (typeMapper == null) { - newTypeMap[typeName] = originalType; - continue; - } - const maybeNewType = typeMapper(originalType, schema); - if (maybeNewType === undefined) { - newTypeMap[typeName] = originalType; - continue; - } - newTypeMap[typeName] = maybeNewType; - } - } - return newTypeMap; -} -function mapEnumValues(originalTypeMap, schema, schemaMapper) { - const enumValueMapper = getEnumValueMapper(schemaMapper); - if (!enumValueMapper) { - return originalTypeMap; - } - return mapTypes(originalTypeMap, schema, { - [MapperKind.ENUM_TYPE]: type => { - const config = type.toConfig(); - const originalEnumValueConfigMap = config.values; - const newEnumValueConfigMap = {}; - for (const externalValue in originalEnumValueConfigMap) { - const originalEnumValueConfig = originalEnumValueConfigMap[externalValue]; - const mappedEnumValue = enumValueMapper(originalEnumValueConfig, type.name, schema, externalValue); - if (mappedEnumValue === undefined) { - newEnumValueConfigMap[externalValue] = originalEnumValueConfig; - } - else if (Array.isArray(mappedEnumValue)) { - const [newExternalValue, newEnumValueConfig] = mappedEnumValue; - newEnumValueConfigMap[newExternalValue] = - newEnumValueConfig === undefined ? originalEnumValueConfig : newEnumValueConfig; - } - else if (mappedEnumValue !== null) { - newEnumValueConfigMap[externalValue] = mappedEnumValue; - } - } - return correctASTNodes(new GraphQLEnumType({ - ...config, - values: newEnumValueConfigMap, - })); - }, - }, type => isEnumType(type)); -} -function mapDefaultValues(originalTypeMap, schema, fn) { - const newTypeMap = mapArguments(originalTypeMap, schema, { - [MapperKind.ARGUMENT]: argumentConfig => { - if (argumentConfig.defaultValue === undefined) { - return argumentConfig; - } - const maybeNewType = getNewType(originalTypeMap, argumentConfig.type); - if (maybeNewType != null) { - return { - ...argumentConfig, - defaultValue: fn(maybeNewType, argumentConfig.defaultValue), - }; - } - }, - }); - return mapFields(newTypeMap, schema, { - [MapperKind.INPUT_OBJECT_FIELD]: inputFieldConfig => { - if (inputFieldConfig.defaultValue === undefined) { - return inputFieldConfig; - } - const maybeNewType = getNewType(newTypeMap, inputFieldConfig.type); - if (maybeNewType != null) { - return { - ...inputFieldConfig, - defaultValue: fn(maybeNewType, inputFieldConfig.defaultValue), - }; - } - }, - }); -} -function getNewType(newTypeMap, type) { - if (isListType(type)) { - const newType = getNewType(newTypeMap, type.ofType); - return newType != null ? new GraphQLList(newType) : null; - } - else if (isNonNullType(type)) { - const newType = getNewType(newTypeMap, type.ofType); - return newType != null ? new GraphQLNonNull(newType) : null; - } - else if (isNamedType(type)) { - const newType = newTypeMap[type.name]; - return newType != null ? newType : null; - } - return null; -} -function mapFields(originalTypeMap, schema, schemaMapper) { - const newTypeMap = {}; - for (const typeName in originalTypeMap) { - if (!typeName.startsWith('__')) { - const originalType = originalTypeMap[typeName]; - if (!isObjectType(originalType) && !isInterfaceType(originalType) && !isInputObjectType(originalType)) { - newTypeMap[typeName] = originalType; - continue; - } - const fieldMapper = getFieldMapper(schema, schemaMapper, typeName); - if (fieldMapper == null) { - newTypeMap[typeName] = originalType; - continue; - } - const config = originalType.toConfig(); - const originalFieldConfigMap = config.fields; - const newFieldConfigMap = {}; - for (const fieldName in originalFieldConfigMap) { - const originalFieldConfig = originalFieldConfigMap[fieldName]; - const mappedField = fieldMapper(originalFieldConfig, fieldName, typeName, schema); - if (mappedField === undefined) { - newFieldConfigMap[fieldName] = originalFieldConfig; - } - else if (Array.isArray(mappedField)) { - const [newFieldName, newFieldConfig] = mappedField; - if (newFieldConfig.astNode != null) { - newFieldConfig.astNode = { - ...newFieldConfig.astNode, - name: { - ...newFieldConfig.astNode.name, - value: newFieldName, - }, - }; - } - newFieldConfigMap[newFieldName] = newFieldConfig === undefined ? originalFieldConfig : newFieldConfig; - } - else if (mappedField !== null) { - newFieldConfigMap[fieldName] = mappedField; - } - } - if (isObjectType(originalType)) { - newTypeMap[typeName] = correctASTNodes(new GraphQLObjectType({ - ...config, - fields: newFieldConfigMap, - })); - } - else if (isInterfaceType(originalType)) { - newTypeMap[typeName] = correctASTNodes(new GraphQLInterfaceType({ - ...config, - fields: newFieldConfigMap, - })); - } - else { - newTypeMap[typeName] = correctASTNodes(new GraphQLInputObjectType({ - ...config, - fields: newFieldConfigMap, - })); - } - } - } - return newTypeMap; -} -function mapArguments(originalTypeMap, schema, schemaMapper) { - const newTypeMap = {}; - for (const typeName in originalTypeMap) { - if (!typeName.startsWith('__')) { - const originalType = originalTypeMap[typeName]; - if (!isObjectType(originalType) && !isInterfaceType(originalType)) { - newTypeMap[typeName] = originalType; - continue; - } - const argumentMapper = getArgumentMapper(schemaMapper); - if (argumentMapper == null) { - newTypeMap[typeName] = originalType; - continue; - } - const config = originalType.toConfig(); - const originalFieldConfigMap = config.fields; - const newFieldConfigMap = {}; - for (const fieldName in originalFieldConfigMap) { - const originalFieldConfig = originalFieldConfigMap[fieldName]; - const originalArgumentConfigMap = originalFieldConfig.args; - if (originalArgumentConfigMap == null) { - newFieldConfigMap[fieldName] = originalFieldConfig; - continue; - } - const argumentNames = Object.keys(originalArgumentConfigMap); - if (!argumentNames.length) { - newFieldConfigMap[fieldName] = originalFieldConfig; - continue; - } - const newArgumentConfigMap = {}; - for (const argumentName of argumentNames) { - const originalArgumentConfig = originalArgumentConfigMap[argumentName]; - const mappedArgument = argumentMapper(originalArgumentConfig, fieldName, typeName, schema); - if (mappedArgument === undefined) { - newArgumentConfigMap[argumentName] = originalArgumentConfig; - } - else if (Array.isArray(mappedArgument)) { - const [newArgumentName, newArgumentConfig] = mappedArgument; - newArgumentConfigMap[newArgumentName] = newArgumentConfig; - } - else if (mappedArgument !== null) { - newArgumentConfigMap[argumentName] = mappedArgument; - } - } - newFieldConfigMap[fieldName] = { - ...originalFieldConfig, - args: newArgumentConfigMap, - }; - } - if (isObjectType(originalType)) { - newTypeMap[typeName] = new GraphQLObjectType({ - ...config, - fields: newFieldConfigMap, - }); - } - else if (isInterfaceType(originalType)) { - newTypeMap[typeName] = new GraphQLInterfaceType({ - ...config, - fields: newFieldConfigMap, - }); - } - else { - newTypeMap[typeName] = new GraphQLInputObjectType({ - ...config, - fields: newFieldConfigMap, - }); - } - } - } - return newTypeMap; -} -function mapDirectives(originalDirectives, schema, schemaMapper) { - const directiveMapper = getDirectiveMapper(schemaMapper); - if (directiveMapper == null) { - return originalDirectives.slice(); - } - const newDirectives = []; - for (const directive of originalDirectives) { - const mappedDirective = directiveMapper(directive, schema); - if (mappedDirective === undefined) { - newDirectives.push(directive); - } - else if (mappedDirective !== null) { - newDirectives.push(mappedDirective); - } - } - return newDirectives; -} -function getTypeSpecifiers(schema, typeName) { - var _a, _b, _c; - const type = schema.getType(typeName); - const specifiers = [MapperKind.TYPE]; - if (isObjectType(type)) { - specifiers.push(MapperKind.COMPOSITE_TYPE, MapperKind.OBJECT_TYPE); - if (typeName === ((_a = schema.getQueryType()) === null || _a === void 0 ? void 0 : _a.name)) { - specifiers.push(MapperKind.ROOT_OBJECT, MapperKind.QUERY); - } - else if (typeName === ((_b = schema.getMutationType()) === null || _b === void 0 ? void 0 : _b.name)) { - specifiers.push(MapperKind.ROOT_OBJECT, MapperKind.MUTATION); - } - else if (typeName === ((_c = schema.getSubscriptionType()) === null || _c === void 0 ? void 0 : _c.name)) { - specifiers.push(MapperKind.ROOT_OBJECT, MapperKind.SUBSCRIPTION); - } - } - else if (isInputObjectType(type)) { - specifiers.push(MapperKind.INPUT_OBJECT_TYPE); - } - else if (isInterfaceType(type)) { - specifiers.push(MapperKind.COMPOSITE_TYPE, MapperKind.ABSTRACT_TYPE, MapperKind.INTERFACE_TYPE); - } - else if (isUnionType(type)) { - specifiers.push(MapperKind.COMPOSITE_TYPE, MapperKind.ABSTRACT_TYPE, MapperKind.UNION_TYPE); - } - else if (isEnumType(type)) { - specifiers.push(MapperKind.ENUM_TYPE); - } - else if (isScalarType(type)) { - specifiers.push(MapperKind.SCALAR_TYPE); - } - return specifiers; -} -function getTypeMapper(schema, schemaMapper, typeName) { - const specifiers = getTypeSpecifiers(schema, typeName); - let typeMapper; - const stack = [...specifiers]; - while (!typeMapper && stack.length > 0) { - // It is safe to use the ! operator here as we check the length. - const next = stack.pop(); - typeMapper = schemaMapper[next]; - } - return typeMapper != null ? typeMapper : null; -} -function getFieldSpecifiers(schema, typeName) { - var _a, _b, _c; - const type = schema.getType(typeName); - const specifiers = [MapperKind.FIELD]; - if (isObjectType(type)) { - specifiers.push(MapperKind.COMPOSITE_FIELD, MapperKind.OBJECT_FIELD); - if (typeName === ((_a = schema.getQueryType()) === null || _a === void 0 ? void 0 : _a.name)) { - specifiers.push(MapperKind.ROOT_FIELD, MapperKind.QUERY_ROOT_FIELD); - } - else if (typeName === ((_b = schema.getMutationType()) === null || _b === void 0 ? void 0 : _b.name)) { - specifiers.push(MapperKind.ROOT_FIELD, MapperKind.MUTATION_ROOT_FIELD); - } - else if (typeName === ((_c = schema.getSubscriptionType()) === null || _c === void 0 ? void 0 : _c.name)) { - specifiers.push(MapperKind.ROOT_FIELD, MapperKind.SUBSCRIPTION_ROOT_FIELD); - } - } - else if (isInterfaceType(type)) { - specifiers.push(MapperKind.COMPOSITE_FIELD, MapperKind.INTERFACE_FIELD); - } - else if (isInputObjectType(type)) { - specifiers.push(MapperKind.INPUT_OBJECT_FIELD); - } - return specifiers; -} -function getFieldMapper(schema, schemaMapper, typeName) { - const specifiers = getFieldSpecifiers(schema, typeName); - let fieldMapper; - const stack = [...specifiers]; - while (!fieldMapper && stack.length > 0) { - // It is safe to use the ! operator here as we check the length. - const next = stack.pop(); - // TODO: fix this as unknown cast - fieldMapper = schemaMapper[next]; - } - return fieldMapper !== null && fieldMapper !== void 0 ? fieldMapper : null; -} -function getArgumentMapper(schemaMapper) { - const argumentMapper = schemaMapper[MapperKind.ARGUMENT]; - return argumentMapper != null ? argumentMapper : null; -} -function getDirectiveMapper(schemaMapper) { - const directiveMapper = schemaMapper[MapperKind.DIRECTIVE]; - return directiveMapper != null ? directiveMapper : null; -} -function getEnumValueMapper(schemaMapper) { - const enumValueMapper = schemaMapper[MapperKind.ENUM_VALUE]; - return enumValueMapper != null ? enumValueMapper : null; -} -function correctASTNodes(type) { - if (isObjectType(type)) { - const config = type.toConfig(); - if (config.astNode != null) { - const fields = []; - for (const fieldName in config.fields) { - const fieldConfig = config.fields[fieldName]; - if (fieldConfig.astNode != null) { - fields.push(fieldConfig.astNode); - } - } - config.astNode = { - ...config.astNode, - kind: Kind.OBJECT_TYPE_DEFINITION, - fields, - }; - } - if (config.extensionASTNodes != null) { - config.extensionASTNodes = config.extensionASTNodes.map(node => ({ - ...node, - kind: Kind.OBJECT_TYPE_EXTENSION, - fields: undefined, - })); - } - return new GraphQLObjectType(config); - } - else if (isInterfaceType(type)) { - const config = type.toConfig(); - if (config.astNode != null) { - const fields = []; - for (const fieldName in config.fields) { - const fieldConfig = config.fields[fieldName]; - if (fieldConfig.astNode != null) { - fields.push(fieldConfig.astNode); - } - } - config.astNode = { - ...config.astNode, - kind: Kind.INTERFACE_TYPE_DEFINITION, - fields, - }; - } - if (config.extensionASTNodes != null) { - config.extensionASTNodes = config.extensionASTNodes.map(node => ({ - ...node, - kind: Kind.INTERFACE_TYPE_EXTENSION, - fields: undefined, - })); - } - return new GraphQLInterfaceType(config); - } - else if (isInputObjectType(type)) { - const config = type.toConfig(); - if (config.astNode != null) { - const fields = []; - for (const fieldName in config.fields) { - const fieldConfig = config.fields[fieldName]; - if (fieldConfig.astNode != null) { - fields.push(fieldConfig.astNode); - } - } - config.astNode = { - ...config.astNode, - kind: Kind.INPUT_OBJECT_TYPE_DEFINITION, - fields, - }; - } - if (config.extensionASTNodes != null) { - config.extensionASTNodes = config.extensionASTNodes.map(node => ({ - ...node, - kind: Kind.INPUT_OBJECT_TYPE_EXTENSION, - fields: undefined, - })); - } - return new GraphQLInputObjectType(config); - } - else if (isEnumType(type)) { - const config = type.toConfig(); - if (config.astNode != null) { - const values = []; - for (const enumKey in config.values) { - const enumValueConfig = config.values[enumKey]; - if (enumValueConfig.astNode != null) { - values.push(enumValueConfig.astNode); - } - } - config.astNode = { - ...config.astNode, - values, - }; - } - if (config.extensionASTNodes != null) { - config.extensionASTNodes = config.extensionASTNodes.map(node => ({ - ...node, - values: undefined, - })); - } - return new GraphQLEnumType(config); - } - else { - return type; - } -} - -// Update any references to named schema types that disagree with the named -// types found in schema.getTypeMap(). -// -// healSchema and its callers (visitSchema/visitSchemaDirectives) all modify the schema in place. -// Therefore, private variables (such as the stored implementation map and the proper root types) -// are not updated. -// -// If this causes issues, the schema could be more aggressively healed as follows: -// -// healSchema(schema); -// const config = schema.toConfig() -// const healedSchema = new GraphQLSchema({ -// ...config, -// query: schema.getType(''), -// mutation: schema.getType(''), -// subscription: schema.getType(''), -// }); -// -// One can then also -- if necessary -- assign the correct private variables to the initial schema -// as follows: -// Object.assign(schema, healedSchema); -// -// These steps are not taken automatically to preserve backwards compatibility with graphql-tools v4. -// See https://github.com/ardatan/graphql-tools/issues/1462 -// -// They were briefly taken in v5, but can now be phased out as they were only required when other -// areas of the codebase were using healSchema and visitSchema more extensively. -// -function healSchema(schema) { - healTypes(schema.getTypeMap(), schema.getDirectives()); - return schema; -} -function healTypes(originalTypeMap, directives) { - const actualNamedTypeMap = Object.create(null); - // If any of the .name properties of the GraphQLNamedType objects in - // schema.getTypeMap() have changed, the keys of the type map need to - // be updated accordingly. - for (const typeName in originalTypeMap) { - const namedType = originalTypeMap[typeName]; - if (namedType == null || typeName.startsWith('__')) { - continue; - } - const actualName = namedType.name; - if (actualName.startsWith('__')) { - continue; - } - if (actualNamedTypeMap[actualName] != null) { - console.warn(`Duplicate schema type name ${actualName} found; keeping the existing one found in the schema`); - continue; - } - actualNamedTypeMap[actualName] = namedType; - // Note: we are deliberately leaving namedType in the schema by its - // original name (which might be different from actualName), so that - // references by that name can be healed. - } - // Now add back every named type by its actual name. - for (const typeName in actualNamedTypeMap) { - const namedType = actualNamedTypeMap[typeName]; - originalTypeMap[typeName] = namedType; - } - // Directive declaration argument types can refer to named types. - for (const decl of directives) { - decl.args = decl.args.filter(arg => { - arg.type = healType(arg.type); - return arg.type !== null; - }); - } - for (const typeName in originalTypeMap) { - const namedType = originalTypeMap[typeName]; - // Heal all named types, except for dangling references, kept only to redirect. - if (!typeName.startsWith('__') && typeName in actualNamedTypeMap) { - if (namedType != null) { - healNamedType(namedType); - } - } - } - for (const typeName in originalTypeMap) { - if (!typeName.startsWith('__') && !(typeName in actualNamedTypeMap)) { - delete originalTypeMap[typeName]; - } - } - function healNamedType(type) { - if (isObjectType(type)) { - healFields(type); - healInterfaces(type); - return; - } - else if (isInterfaceType(type)) { - healFields(type); - if ('getInterfaces' in type) { - healInterfaces(type); - } - return; - } - else if (isUnionType(type)) { - healUnderlyingTypes(type); - return; - } - else if (isInputObjectType(type)) { - healInputFields(type); - return; - } - else if (isLeafType(type)) { - return; - } - throw new Error(`Unexpected schema type: ${type}`); - } - function healFields(type) { - const fieldMap = type.getFields(); - for (const [key, field] of Object.entries(fieldMap)) { - field.args - .map(arg => { - arg.type = healType(arg.type); - return arg.type === null ? null : arg; - }) - .filter(Boolean); - field.type = healType(field.type); - if (field.type === null) { - delete fieldMap[key]; - } - } - } - function healInterfaces(type) { - if ('getInterfaces' in type) { - const interfaces = type.getInterfaces(); - interfaces.push(...interfaces - .splice(0) - .map(iface => healType(iface)) - .filter(Boolean)); - } - } - function healInputFields(type) { - const fieldMap = type.getFields(); - for (const [key, field] of Object.entries(fieldMap)) { - field.type = healType(field.type); - if (field.type === null) { - delete fieldMap[key]; - } - } - } - function healUnderlyingTypes(type) { - const types = type.getTypes(); - types.push(...types - .splice(0) - .map(t => healType(t)) - .filter(Boolean)); - } - function healType(type) { - // Unwrap the two known wrapper types - if (isListType(type)) { - const healedType = healType(type.ofType); - return healedType != null ? new GraphQLList(healedType) : null; - } - else if (isNonNullType(type)) { - const healedType = healType(type.ofType); - return healedType != null ? new GraphQLNonNull(healedType) : null; - } - else if (isNamedType(type)) { - // If a type annotation on a field or an argument or a union member is - // any `GraphQLNamedType` with a `name`, then it must end up identical - // to `schema.getType(name)`, since `schema.getTypeMap()` is the source - // of truth for all named schema types. - // Note that new types can still be simply added by adding a field, as - // the official type will be undefined, not null. - const officialType = originalTypeMap[type.name]; - if (officialType && type !== officialType) { - return officialType; - } - } - return type; - } -} - -function forEachField(schema, fn) { - const typeMap = schema.getTypeMap(); - for (const typeName in typeMap) { - const type = typeMap[typeName]; - // TODO: maybe have an option to include these? - if (!getNamedType(type).name.startsWith('__') && isObjectType(type)) { - const fields = type.getFields(); - for (const fieldName in fields) { - const field = fields[fieldName]; - fn(field, typeName, fieldName); - } - } - } -} - -function forEachDefaultValue(schema, fn) { - const typeMap = schema.getTypeMap(); - for (const typeName in typeMap) { - const type = typeMap[typeName]; - if (!getNamedType(type).name.startsWith('__')) { - if (isObjectType(type)) { - const fields = type.getFields(); - for (const fieldName in fields) { - const field = fields[fieldName]; - for (const arg of field.args) { - arg.defaultValue = fn(arg.type, arg.defaultValue); - } - } - } - else if (isInputObjectType(type)) { - const fields = type.getFields(); - for (const fieldName in fields) { - const field = fields[fieldName]; - field.defaultValue = fn(field.type, field.defaultValue); - } - } - } - } -} - -function mergeDeep(sources, respectPrototype = false) { - const target = sources[0] || {}; - const output = {}; - if (respectPrototype) { - Object.setPrototypeOf(output, Object.create(Object.getPrototypeOf(target))); - } - for (const source of sources) { - if (isObject$2(target) && isObject$2(source)) { - if (respectPrototype) { - const outputPrototype = Object.getPrototypeOf(output); - const sourcePrototype = Object.getPrototypeOf(source); - if (sourcePrototype) { - for (const key of Object.getOwnPropertyNames(sourcePrototype)) { - const descriptor = Object.getOwnPropertyDescriptor(sourcePrototype, key); - if (isSome(descriptor)) { - Object.defineProperty(outputPrototype, key, descriptor); - } - } - } - } - for (const key in source) { - if (isObject$2(source[key])) { - if (!(key in output)) { - Object.assign(output, { [key]: source[key] }); - } - else { - output[key] = mergeDeep([output[key], source[key]], respectPrototype); - } - } - else { - Object.assign(output, { [key]: source[key] }); - } - } - } - } - return output; -} -function isObject$2(item) { - return item && typeof item === 'object' && !Array.isArray(item); -} - -function isAsyncIterable(value) { - return (typeof value === 'object' && - value != null && - Symbol.asyncIterator in value && - typeof value[Symbol.asyncIterator] === 'function'); -} - -function isDocumentNode(object) { - return object && typeof object === 'object' && 'kind' in object && object.kind === Kind.DOCUMENT; -} - -function assertResolversPresent(schema, resolverValidationOptions = {}) { - const { requireResolversForArgs, requireResolversForNonScalar, requireResolversForAllFields } = resolverValidationOptions; - if (requireResolversForAllFields && (requireResolversForArgs || requireResolversForNonScalar)) { - throw new TypeError('requireResolversForAllFields takes precedence over the more specific assertions. ' + - 'Please configure either requireResolversForAllFields or requireResolversForArgs / ' + - 'requireResolversForNonScalar, but not a combination of them.'); - } - forEachField(schema, (field, typeName, fieldName) => { - // requires a resolver for *every* field. - if (requireResolversForAllFields) { - expectResolver('requireResolversForAllFields', requireResolversForAllFields, field, typeName, fieldName); - } - // requires a resolver on every field that has arguments - if (requireResolversForArgs && field.args.length > 0) { - expectResolver('requireResolversForArgs', requireResolversForArgs, field, typeName, fieldName); - } - // requires a resolver on every field that returns a non-scalar type - if (requireResolversForNonScalar !== 'ignore' && !isScalarType(getNamedType(field.type))) { - expectResolver('requireResolversForNonScalar', requireResolversForNonScalar, field, typeName, fieldName); - } - }); -} -function expectResolver(validator, behavior, field, typeName, fieldName) { - if (!field.resolve) { - const message = `Resolver missing for "${typeName}.${fieldName}". -To disable this validator, use: - resolverValidationOptions: { - ${validator}: 'ignore' - }`; - if (behavior === 'error') { - throw new Error(message); - } - if (behavior === 'warn') { - console.warn(message); - } - return; - } - if (typeof field.resolve !== 'function') { - throw new Error(`Resolver "${typeName}.${fieldName}" must be a function`); - } -} - -// If we have any union or interface types throw if no there is no resolveType resolver -function checkForResolveTypeResolver(schema, requireResolversForResolveType) { - mapSchema(schema, { - [MapperKind.ABSTRACT_TYPE]: type => { - if (!type.resolveType) { - const message = `Type "${type.name}" is missing a "__resolveType" resolver. Pass 'ignore' into ` + - '"resolverValidationOptions.requireResolversForResolveType" to disable this error.'; - if (requireResolversForResolveType === 'error') { - throw new Error(message); - } - if (requireResolversForResolveType === 'warn') { - console.warn(message); - } - } - return undefined; - }, - }); -} - -function extendResolversFromInterfaces(schema, resolvers) { - const extendedResolvers = {}; - const typeMap = schema.getTypeMap(); - for (const typeName in typeMap) { - const type = typeMap[typeName]; - if ('getInterfaces' in type) { - extendedResolvers[typeName] = {}; - for (const iFace of type.getInterfaces()) { - if (resolvers[iFace.name]) { - for (const fieldName in resolvers[iFace.name]) { - if (fieldName === '__isTypeOf' || !fieldName.startsWith('__')) { - extendedResolvers[typeName][fieldName] = resolvers[iFace.name][fieldName]; - } - } - } - } - const typeResolvers = resolvers[typeName]; - extendedResolvers[typeName] = { - ...extendedResolvers[typeName], - ...typeResolvers, - }; - } - else { - const typeResolvers = resolvers[typeName]; - if (typeResolvers != null) { - extendedResolvers[typeName] = typeResolvers; - } - } - } - return extendedResolvers; -} - -function addResolversToSchema({ schema, resolvers: inputResolvers, defaultFieldResolver, resolverValidationOptions = {}, inheritResolversFromInterfaces = false, updateResolversInPlace = false, }) { - const { requireResolversToMatchSchema = 'error', requireResolversForResolveType } = resolverValidationOptions; - const resolvers = inheritResolversFromInterfaces - ? extendResolversFromInterfaces(schema, inputResolvers) - : inputResolvers; - for (const typeName in resolvers) { - const resolverValue = resolvers[typeName]; - const resolverType = typeof resolverValue; - if (resolverType !== 'object') { - throw new Error(`"${typeName}" defined in resolvers, but has invalid value "${resolverValue}". The resolver's value must be of type object.`); - } - const type = schema.getType(typeName); - if (type == null) { - if (requireResolversToMatchSchema === 'ignore') { - continue; - } - throw new Error(`"${typeName}" defined in resolvers, but not in schema`); - } - else if (isSpecifiedScalarType(type)) { - // allow -- without recommending -- overriding of specified scalar types - for (const fieldName in resolverValue) { - if (fieldName.startsWith('__')) { - type[fieldName.substring(2)] = resolverValue[fieldName]; - } - else { - type[fieldName] = resolverValue[fieldName]; - } - } - } - else if (isEnumType(type)) { - const values = type.getValues(); - for (const fieldName in resolverValue) { - if (!fieldName.startsWith('__') && - !values.some(value => value.name === fieldName) && - requireResolversToMatchSchema && - requireResolversToMatchSchema !== 'ignore') { - throw new Error(`${type.name}.${fieldName} was defined in resolvers, but not present within ${type.name}`); - } - } - } - else if (isUnionType(type)) { - for (const fieldName in resolverValue) { - if (!fieldName.startsWith('__') && - requireResolversToMatchSchema && - requireResolversToMatchSchema !== 'ignore') { - throw new Error(`${type.name}.${fieldName} was defined in resolvers, but ${type.name} is not an object or interface type`); - } - } - } - else if (isObjectType(type) || isInterfaceType(type)) { - for (const fieldName in resolverValue) { - if (!fieldName.startsWith('__')) { - const fields = type.getFields(); - const field = fields[fieldName]; - if (field == null) { - // Field present in resolver but not in schema - if (requireResolversToMatchSchema && requireResolversToMatchSchema !== 'ignore') { - throw new Error(`${typeName}.${fieldName} defined in resolvers, but not in schema`); - } - } - else { - // Field present in both the resolver and schema - const fieldResolve = resolverValue[fieldName]; - if (typeof fieldResolve !== 'function' && typeof fieldResolve !== 'object') { - throw new Error(`Resolver ${typeName}.${fieldName} must be object or function`); - } - } - } - } - } - } - schema = updateResolversInPlace - ? addResolversToExistingSchema(schema, resolvers, defaultFieldResolver) - : createNewSchemaWithResolvers(schema, resolvers, defaultFieldResolver); - if (requireResolversForResolveType && requireResolversForResolveType !== 'ignore') { - checkForResolveTypeResolver(schema, requireResolversForResolveType); - } - return schema; -} -function addResolversToExistingSchema(schema, resolvers, defaultFieldResolver) { - var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m; - const typeMap = schema.getTypeMap(); - for (const typeName in resolvers) { - const type = schema.getType(typeName); - const resolverValue = resolvers[typeName]; - if (isScalarType(type)) { - for (const fieldName in resolverValue) { - if (fieldName.startsWith('__')) { - type[fieldName.substring(2)] = resolverValue[fieldName]; - } - else if (fieldName === 'astNode' && type.astNode != null) { - type.astNode = { - ...type.astNode, - description: (_b = (_a = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : type.astNode.description, - directives: ((_c = type.astNode.directives) !== null && _c !== void 0 ? _c : []).concat((_e = (_d = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _d === void 0 ? void 0 : _d.directives) !== null && _e !== void 0 ? _e : []), - }; - } - else if (fieldName === 'extensionASTNodes' && type.extensionASTNodes != null) { - type.extensionASTNodes = type.extensionASTNodes.concat((_f = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.extensionASTNodes) !== null && _f !== void 0 ? _f : []); - } - else if (fieldName === 'extensions' && - type.extensions != null && - resolverValue.extensions != null) { - type.extensions = Object.assign(Object.create(null), type.extensions, resolverValue.extensions); - } - else { - type[fieldName] = resolverValue[fieldName]; - } - } - } - else if (isEnumType(type)) { - const config = type.toConfig(); - const enumValueConfigMap = config.values; - for (const fieldName in resolverValue) { - if (fieldName.startsWith('__')) { - config[fieldName.substring(2)] = resolverValue[fieldName]; - } - else if (fieldName === 'astNode' && config.astNode != null) { - config.astNode = { - ...config.astNode, - description: (_h = (_g = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _g === void 0 ? void 0 : _g.description) !== null && _h !== void 0 ? _h : config.astNode.description, - directives: ((_j = config.astNode.directives) !== null && _j !== void 0 ? _j : []).concat((_l = (_k = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _k === void 0 ? void 0 : _k.directives) !== null && _l !== void 0 ? _l : []), - }; - } - else if (fieldName === 'extensionASTNodes' && config.extensionASTNodes != null) { - config.extensionASTNodes = config.extensionASTNodes.concat((_m = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.extensionASTNodes) !== null && _m !== void 0 ? _m : []); - } - else if (fieldName === 'extensions' && - type.extensions != null && - resolverValue.extensions != null) { - type.extensions = Object.assign(Object.create(null), type.extensions, resolverValue.extensions); - } - else if (enumValueConfigMap[fieldName]) { - enumValueConfigMap[fieldName].value = resolverValue[fieldName]; - } - } - typeMap[typeName] = new GraphQLEnumType(config); - } - else if (isUnionType(type)) { - for (const fieldName in resolverValue) { - if (fieldName.startsWith('__')) { - type[fieldName.substring(2)] = resolverValue[fieldName]; - } - } - } - else if (isObjectType(type) || isInterfaceType(type)) { - for (const fieldName in resolverValue) { - if (fieldName.startsWith('__')) { - // this is for isTypeOf and resolveType and all the other stuff. - type[fieldName.substring(2)] = resolverValue[fieldName]; - continue; - } - const fields = type.getFields(); - const field = fields[fieldName]; - if (field != null) { - const fieldResolve = resolverValue[fieldName]; - if (typeof fieldResolve === 'function') { - // for convenience. Allows shorter syntax in resolver definition file - field.resolve = fieldResolve.bind(resolverValue); - } - else { - setFieldProperties(field, fieldResolve); - } - } - } - } - } - // serialize all default values prior to healing fields with new scalar/enum types. - forEachDefaultValue(schema, serializeInputValue); - // schema may have new scalar/enum types that require healing - healSchema(schema); - // reparse all default values with new parsing functions. - forEachDefaultValue(schema, parseInputValue); - if (defaultFieldResolver != null) { - forEachField(schema, field => { - if (!field.resolve) { - field.resolve = defaultFieldResolver; - } - }); - } - return schema; -} -function createNewSchemaWithResolvers(schema, resolvers, defaultFieldResolver) { - schema = mapSchema(schema, { - [MapperKind.SCALAR_TYPE]: type => { - var _a, _b, _c, _d, _e, _f; - const config = type.toConfig(); - const resolverValue = resolvers[type.name]; - if (!isSpecifiedScalarType(type) && resolverValue != null) { - for (const fieldName in resolverValue) { - if (fieldName.startsWith('__')) { - config[fieldName.substring(2)] = resolverValue[fieldName]; - } - else if (fieldName === 'astNode' && config.astNode != null) { - config.astNode = { - ...config.astNode, - description: (_b = (_a = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : config.astNode.description, - directives: ((_c = config.astNode.directives) !== null && _c !== void 0 ? _c : []).concat((_e = (_d = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _d === void 0 ? void 0 : _d.directives) !== null && _e !== void 0 ? _e : []), - }; - } - else if (fieldName === 'extensionASTNodes' && config.extensionASTNodes != null) { - config.extensionASTNodes = config.extensionASTNodes.concat((_f = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.extensionASTNodes) !== null && _f !== void 0 ? _f : []); - } - else if (fieldName === 'extensions' && - config.extensions != null && - resolverValue.extensions != null) { - config.extensions = Object.assign(Object.create(null), type.extensions, resolverValue.extensions); - } - else { - config[fieldName] = resolverValue[fieldName]; - } - } - return new GraphQLScalarType(config); - } - }, - [MapperKind.ENUM_TYPE]: type => { - var _a, _b, _c, _d, _e, _f; - const resolverValue = resolvers[type.name]; - const config = type.toConfig(); - const enumValueConfigMap = config.values; - if (resolverValue != null) { - for (const fieldName in resolverValue) { - if (fieldName.startsWith('__')) { - config[fieldName.substring(2)] = resolverValue[fieldName]; - } - else if (fieldName === 'astNode' && config.astNode != null) { - config.astNode = { - ...config.astNode, - description: (_b = (_a = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : config.astNode.description, - directives: ((_c = config.astNode.directives) !== null && _c !== void 0 ? _c : []).concat((_e = (_d = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _d === void 0 ? void 0 : _d.directives) !== null && _e !== void 0 ? _e : []), - }; - } - else if (fieldName === 'extensionASTNodes' && config.extensionASTNodes != null) { - config.extensionASTNodes = config.extensionASTNodes.concat((_f = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.extensionASTNodes) !== null && _f !== void 0 ? _f : []); - } - else if (fieldName === 'extensions' && - config.extensions != null && - resolverValue.extensions != null) { - config.extensions = Object.assign(Object.create(null), type.extensions, resolverValue.extensions); - } - else if (enumValueConfigMap[fieldName]) { - enumValueConfigMap[fieldName].value = resolverValue[fieldName]; - } - } - return new GraphQLEnumType(config); - } - }, - [MapperKind.UNION_TYPE]: type => { - const resolverValue = resolvers[type.name]; - if (resolverValue != null) { - const config = type.toConfig(); - if (resolverValue['__resolveType']) { - config.resolveType = resolverValue['__resolveType']; - } - return new GraphQLUnionType(config); - } - }, - [MapperKind.OBJECT_TYPE]: type => { - const resolverValue = resolvers[type.name]; - if (resolverValue != null) { - const config = type.toConfig(); - if (resolverValue['__isTypeOf']) { - config.isTypeOf = resolverValue['__isTypeOf']; - } - return new GraphQLObjectType(config); - } - }, - [MapperKind.INTERFACE_TYPE]: type => { - const resolverValue = resolvers[type.name]; - if (resolverValue != null) { - const config = type.toConfig(); - if (resolverValue['__resolveType']) { - config.resolveType = resolverValue['__resolveType']; - } - return new GraphQLInterfaceType(config); - } - }, - [MapperKind.COMPOSITE_FIELD]: (fieldConfig, fieldName, typeName) => { - const resolverValue = resolvers[typeName]; - if (resolverValue != null) { - const fieldResolve = resolverValue[fieldName]; - if (fieldResolve != null) { - const newFieldConfig = { ...fieldConfig }; - if (typeof fieldResolve === 'function') { - // for convenience. Allows shorter syntax in resolver definition file - newFieldConfig.resolve = fieldResolve.bind(resolverValue); - } - else { - setFieldProperties(newFieldConfig, fieldResolve); - } - return newFieldConfig; - } - } - }, - }); - if (defaultFieldResolver != null) { - schema = mapSchema(schema, { - [MapperKind.OBJECT_FIELD]: fieldConfig => ({ - ...fieldConfig, - resolve: fieldConfig.resolve != null ? fieldConfig.resolve : defaultFieldResolver, - }), - }); - } - return schema; -} -function setFieldProperties(field, propertiesObj) { - for (const propertyName in propertiesObj) { - field[propertyName] = propertiesObj[propertyName]; - } -} - -/** - * Deep merges multiple resolver definition objects into a single definition. - * @param resolversDefinitions Resolver definitions to be merged - * @param options Additional options - * - * ```js - * const { mergeResolvers } = require('@graphql-tools/merge'); - * const clientResolver = require('./clientResolver'); - * const productResolver = require('./productResolver'); - * - * const resolvers = mergeResolvers([ - * clientResolver, - * productResolver, - * ]); - * ``` - * - * If you don't want to manually create the array of resolver objects, you can - * also use this function along with loadFiles: - * - * ```js - * const path = require('path'); - * const { mergeResolvers } = require('@graphql-tools/merge'); - * const { loadFilesSync } = require('@graphql-tools/load-files'); - * - * const resolversArray = loadFilesSync(path.join(__dirname, './resolvers')); - * - * const resolvers = mergeResolvers(resolversArray) - * ``` - */ -function mergeResolvers(resolversDefinitions, options) { - if (!resolversDefinitions || (Array.isArray(resolversDefinitions) && resolversDefinitions.length === 0)) { - return {}; - } - if (!Array.isArray(resolversDefinitions)) { - return resolversDefinitions; - } - if (resolversDefinitions.length === 1) { - return resolversDefinitions[0] || {}; - } - const resolvers = new Array(); - for (let resolversDefinition of resolversDefinitions) { - if (Array.isArray(resolversDefinition)) { - resolversDefinition = mergeResolvers(resolversDefinition); - } - if (typeof resolversDefinition === 'object' && resolversDefinition) { - resolvers.push(resolversDefinition); - } - } - const result = mergeDeep(resolvers, true); - if (options === null || options === void 0 ? void 0 : options.exclusions) { - for (const exclusion of options.exclusions) { - const [typeName, fieldName] = exclusion.split('.'); - if (!fieldName || fieldName === '*') { - delete result[typeName]; - } - else if (result[typeName]) { - delete result[typeName][fieldName]; - } - } - } - return result; -} - -function mergeArguments$1(args1, args2, config) { - const result = deduplicateArguments([...args2, ...args1].filter(isSome)); - if (config && config.sort) { - result.sort(compareNodes); - } - return result; -} -function deduplicateArguments(args) { - return args.reduce((acc, current) => { - const dup = acc.find(arg => arg.name.value === current.name.value); - if (!dup) { - return acc.concat([current]); - } - return acc; - }, []); -} - -function directiveAlreadyExists(directivesArr, otherDirective) { - return !!directivesArr.find(directive => directive.name.value === otherDirective.name.value); -} -function nameAlreadyExists(name, namesArr) { - return namesArr.some(({ value }) => value === name.value); -} -function mergeArguments(a1, a2) { - const result = [...a2]; - for (const argument of a1) { - const existingIndex = result.findIndex(a => a.name.value === argument.name.value); - if (existingIndex > -1) { - const existingArg = result[existingIndex]; - if (existingArg.value.kind === 'ListValue') { - const source = existingArg.value.values; - const target = argument.value.values; - // merge values of two lists - existingArg.value.values = deduplicateLists(source, target, (targetVal, source) => { - const value = targetVal.value; - return !value || !source.some((sourceVal) => sourceVal.value === value); - }); - } - else { - existingArg.value = argument.value; - } - } - else { - result.push(argument); - } - } - return result; -} -function deduplicateDirectives(directives) { - return directives - .map((directive, i, all) => { - const firstAt = all.findIndex(d => d.name.value === directive.name.value); - if (firstAt !== i) { - const dup = all[firstAt]; - directive.arguments = mergeArguments(directive.arguments, dup.arguments); - return null; - } - return directive; - }) - .filter(isSome); -} -function mergeDirectives(d1 = [], d2 = [], config) { - const reverseOrder = config && config.reverseDirectives; - const asNext = reverseOrder ? d1 : d2; - const asFirst = reverseOrder ? d2 : d1; - const result = deduplicateDirectives([...asNext]); - for (const directive of asFirst) { - if (directiveAlreadyExists(result, directive)) { - const existingDirectiveIndex = result.findIndex(d => d.name.value === directive.name.value); - const existingDirective = result[existingDirectiveIndex]; - result[existingDirectiveIndex].arguments = mergeArguments(directive.arguments || [], existingDirective.arguments || []); - } - else { - result.push(directive); - } - } - return result; -} -function validateInputs(node, existingNode) { - const printedNode = print({ - ...node, - description: undefined, - }); - const printedExistingNode = print({ - ...existingNode, - description: undefined, - }); - // eslint-disable-next-line - const leaveInputs = new RegExp('(directive @w*d*)|( on .*$)', 'g'); - const sameArguments = printedNode.replace(leaveInputs, '') === printedExistingNode.replace(leaveInputs, ''); - if (!sameArguments) { - throw new Error(`Unable to merge GraphQL directive "${node.name.value}". \nExisting directive: \n\t${printedExistingNode} \nReceived directive: \n\t${printedNode}`); - } -} -function mergeDirective(node, existingNode) { - if (existingNode) { - validateInputs(node, existingNode); - return { - ...node, - locations: [ - ...existingNode.locations, - ...node.locations.filter(name => !nameAlreadyExists(name, existingNode.locations)), - ], - }; - } - return node; -} -function deduplicateLists(source, target, filterFn) { - return source.concat(target.filter(val => filterFn(val, source))); -} - -function mergeEnumValues(first, second, config) { - if (config === null || config === void 0 ? void 0 : config.consistentEnumMerge) { - const reversed = []; - if (first) { - reversed.push(...first); - } - first = second; - second = reversed; - } - const enumValueMap = new Map(); - if (first) { - for (const firstValue of first) { - enumValueMap.set(firstValue.name.value, firstValue); - } - } - if (second) { - for (const secondValue of second) { - const enumValue = secondValue.name.value; - if (enumValueMap.has(enumValue)) { - const firstValue = enumValueMap.get(enumValue); - firstValue.description = secondValue.description || firstValue.description; - firstValue.directives = mergeDirectives(secondValue.directives, firstValue.directives); - } - else { - enumValueMap.set(enumValue, secondValue); - } - } - } - const result = [...enumValueMap.values()]; - if (config && config.sort) { - result.sort(compareNodes); - } - return result; -} - -function mergeEnum(e1, e2, config) { - if (e2) { - return { - name: e1.name, - description: e1['description'] || e2['description'], - kind: (config === null || config === void 0 ? void 0 : config.convertExtensions) || e1.kind === 'EnumTypeDefinition' || e2.kind === 'EnumTypeDefinition' - ? 'EnumTypeDefinition' - : 'EnumTypeExtension', - loc: e1.loc, - directives: mergeDirectives(e1.directives, e2.directives, config), - values: mergeEnumValues(e1.values, e2.values, config), - }; - } - return (config === null || config === void 0 ? void 0 : config.convertExtensions) - ? { - ...e1, - kind: Kind.ENUM_TYPE_DEFINITION, - } - : e1; -} - -function isStringTypes(types) { - return typeof types === 'string'; -} -function isSourceTypes(types) { - return types instanceof Source; -} -function extractType(type) { - let visitedType = type; - while (visitedType.kind === Kind.LIST_TYPE || visitedType.kind === 'NonNullType') { - visitedType = visitedType.type; - } - return visitedType; -} -function isWrappingTypeNode(type) { - return type.kind !== Kind.NAMED_TYPE; -} -function isListTypeNode(type) { - return type.kind === Kind.LIST_TYPE; -} -function isNonNullTypeNode(type) { - return type.kind === Kind.NON_NULL_TYPE; -} -function printTypeNode(type) { - if (isListTypeNode(type)) { - return `[${printTypeNode(type.type)}]`; - } - if (isNonNullTypeNode(type)) { - return `${printTypeNode(type.type)}!`; - } - return type.name.value; -} -var CompareVal; -(function (CompareVal) { - CompareVal[CompareVal["A_SMALLER_THAN_B"] = -1] = "A_SMALLER_THAN_B"; - CompareVal[CompareVal["A_EQUALS_B"] = 0] = "A_EQUALS_B"; - CompareVal[CompareVal["A_GREATER_THAN_B"] = 1] = "A_GREATER_THAN_B"; -})(CompareVal || (CompareVal = {})); -function defaultStringComparator(a, b) { - if (a == null && b == null) { - return CompareVal.A_EQUALS_B; - } - if (a == null) { - return CompareVal.A_SMALLER_THAN_B; - } - if (b == null) { - return CompareVal.A_GREATER_THAN_B; - } - if (a < b) - return CompareVal.A_SMALLER_THAN_B; - if (a > b) - return CompareVal.A_GREATER_THAN_B; - return CompareVal.A_EQUALS_B; -} - -function fieldAlreadyExists(fieldsArr, otherField, config) { - const result = fieldsArr.find(field => field.name.value === otherField.name.value); - if (result && !(config === null || config === void 0 ? void 0 : config.ignoreFieldConflicts)) { - const t1 = extractType(result.type); - const t2 = extractType(otherField.type); - if (t1.name.value !== t2.name.value) { - throw new Error(`Field "${otherField.name.value}" already defined with a different type. Declared as "${t1.name.value}", but you tried to override with "${t2.name.value}"`); - } - } - return !!result; -} -function mergeFields(type, f1, f2, config) { - const result = []; - if (f2 != null) { - result.push(...f2); - } - if (f1 != null) { - for (const field of f1) { - if (fieldAlreadyExists(result, field, config)) { - const existing = result.find((f) => f.name.value === field.name.value); - if (!(config === null || config === void 0 ? void 0 : config.ignoreFieldConflicts)) { - if (config === null || config === void 0 ? void 0 : config.throwOnConflict) { - preventConflicts(type, existing, field, false); - } - else { - preventConflicts(type, existing, field, true); - } - if (isNonNullTypeNode(field.type) && !isNonNullTypeNode(existing.type)) { - existing.type = field.type; - } - } - existing.arguments = mergeArguments$1(field['arguments'] || [], existing.arguments || [], config); - existing.directives = mergeDirectives(field.directives, existing.directives, config); - existing.description = field.description || existing.description; - } - else { - result.push(field); - } - } - } - if (config && config.sort) { - result.sort(compareNodes); - } - if (config && config.exclusions) { - const exclusions = config.exclusions; - return result.filter(field => !exclusions.includes(`${type.name.value}.${field.name.value}`)); - } - return result; -} -function preventConflicts(type, a, b, ignoreNullability = false) { - const aType = printTypeNode(a.type); - const bType = printTypeNode(b.type); - if (aType !== bType && !safeChangeForFieldType(a.type, b.type, ignoreNullability)) { - throw new Error(`Field '${type.name.value}.${a.name.value}' changed type from '${aType}' to '${bType}'`); - } -} -function safeChangeForFieldType(oldType, newType, ignoreNullability = false) { - // both are named - if (!isWrappingTypeNode(oldType) && !isWrappingTypeNode(newType)) { - return oldType.toString() === newType.toString(); - } - // new is non-null - if (isNonNullTypeNode(newType)) { - const ofType = isNonNullTypeNode(oldType) ? oldType.type : oldType; - return safeChangeForFieldType(ofType, newType.type); - } - // old is non-null - if (isNonNullTypeNode(oldType)) { - return safeChangeForFieldType(newType, oldType, ignoreNullability); - } - // old is list - if (isListTypeNode(oldType)) { - return ((isListTypeNode(newType) && safeChangeForFieldType(oldType.type, newType.type)) || - (isNonNullTypeNode(newType) && safeChangeForFieldType(oldType, newType['type']))); - } - return false; -} - -function mergeInputType(node, existingNode, config) { - if (existingNode) { - try { - return { - name: node.name, - description: node['description'] || existingNode['description'], - kind: (config === null || config === void 0 ? void 0 : config.convertExtensions) || - node.kind === 'InputObjectTypeDefinition' || - existingNode.kind === 'InputObjectTypeDefinition' - ? 'InputObjectTypeDefinition' - : 'InputObjectTypeExtension', - loc: node.loc, - fields: mergeFields(node, node.fields, existingNode.fields, config), - directives: mergeDirectives(node.directives, existingNode.directives, config), - }; - } - catch (e) { - throw new Error(`Unable to merge GraphQL input type "${node.name.value}": ${e.message}`); - } - } - return (config === null || config === void 0 ? void 0 : config.convertExtensions) - ? { - ...node, - kind: Kind.INPUT_OBJECT_TYPE_DEFINITION, - } - : node; -} - -function mergeInterface(node, existingNode, config) { - if (existingNode) { - try { - return { - name: node.name, - description: node['description'] || existingNode['description'], - kind: (config === null || config === void 0 ? void 0 : config.convertExtensions) || - node.kind === 'InterfaceTypeDefinition' || - existingNode.kind === 'InterfaceTypeDefinition' - ? 'InterfaceTypeDefinition' - : 'InterfaceTypeExtension', - loc: node.loc, - fields: mergeFields(node, node.fields, existingNode.fields, config), - directives: mergeDirectives(node.directives, existingNode.directives, config), - interfaces: node['interfaces'] - ? mergeNamedTypeArray(node['interfaces'], existingNode['interfaces'], config) - : undefined, - }; - } - catch (e) { - throw new Error(`Unable to merge GraphQL interface "${node.name.value}": ${e.message}`); - } - } - return (config === null || config === void 0 ? void 0 : config.convertExtensions) - ? { - ...node, - kind: Kind.INTERFACE_TYPE_DEFINITION, - } - : node; -} - -function alreadyExists(arr, other) { - return !!arr.find(i => i.name.value === other.name.value); -} -function mergeNamedTypeArray(first = [], second = [], config = {}) { - const result = [...second, ...first.filter(d => !alreadyExists(second, d))]; - if (config && config.sort) { - result.sort(compareNodes); - } - return result; -} - -function mergeType(node, existingNode, config) { - if (existingNode) { - try { - return { - name: node.name, - description: node['description'] || existingNode['description'], - kind: (config === null || config === void 0 ? void 0 : config.convertExtensions) || - node.kind === 'ObjectTypeDefinition' || - existingNode.kind === 'ObjectTypeDefinition' - ? 'ObjectTypeDefinition' - : 'ObjectTypeExtension', - loc: node.loc, - fields: mergeFields(node, node.fields, existingNode.fields, config), - directives: mergeDirectives(node.directives, existingNode.directives, config), - interfaces: mergeNamedTypeArray(node.interfaces, existingNode.interfaces, config), - }; - } - catch (e) { - throw new Error(`Unable to merge GraphQL type "${node.name.value}": ${e.message}`); - } - } - return (config === null || config === void 0 ? void 0 : config.convertExtensions) - ? { - ...node, - kind: Kind.OBJECT_TYPE_DEFINITION, - } - : node; -} - -function mergeScalar(node, existingNode, config) { - if (existingNode) { - return { - name: node.name, - description: node['description'] || existingNode['description'], - kind: (config === null || config === void 0 ? void 0 : config.convertExtensions) || - node.kind === 'ScalarTypeDefinition' || - existingNode.kind === 'ScalarTypeDefinition' - ? 'ScalarTypeDefinition' - : 'ScalarTypeExtension', - loc: node.loc, - directives: mergeDirectives(node.directives, existingNode.directives, config), - }; - } - return (config === null || config === void 0 ? void 0 : config.convertExtensions) - ? { - ...node, - kind: Kind.SCALAR_TYPE_DEFINITION, - } - : node; -} - -function mergeUnion(first, second, config) { - if (second) { - return { - name: first.name, - description: first['description'] || second['description'], - // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility - directives: mergeDirectives(first.directives, second.directives, config), - kind: (config === null || config === void 0 ? void 0 : config.convertExtensions) || first.kind === 'UnionTypeDefinition' || second.kind === 'UnionTypeDefinition' - ? Kind.UNION_TYPE_DEFINITION - : Kind.UNION_TYPE_EXTENSION, - loc: first.loc, - types: mergeNamedTypeArray(first.types, second.types, config), - }; - } - return (config === null || config === void 0 ? void 0 : config.convertExtensions) - ? { - ...first, - kind: Kind.UNION_TYPE_DEFINITION, - } - : first; -} - -const DEFAULT_OPERATION_TYPE_NAME_MAP = { - query: 'Query', - mutation: 'Mutation', - subscription: 'Subscription', -}; -function mergeOperationTypes(opNodeList = [], existingOpNodeList = []) { - const finalOpNodeList = []; - for (const opNodeType in DEFAULT_OPERATION_TYPE_NAME_MAP) { - const opNode = opNodeList.find(n => n.operation === opNodeType) || existingOpNodeList.find(n => n.operation === opNodeType); - if (opNode) { - finalOpNodeList.push(opNode); - } - } - return finalOpNodeList; -} -function mergeSchemaDefs(node, existingNode, config) { - if (existingNode) { - return { - kind: node.kind === Kind.SCHEMA_DEFINITION || existingNode.kind === Kind.SCHEMA_DEFINITION - ? Kind.SCHEMA_DEFINITION - : Kind.SCHEMA_EXTENSION, - description: node['description'] || existingNode['description'], - directives: mergeDirectives(node.directives, existingNode.directives, config), - operationTypes: mergeOperationTypes(node.operationTypes, existingNode.operationTypes), - }; - } - return ((config === null || config === void 0 ? void 0 : config.convertExtensions) - ? { - ...node, - kind: Kind.SCHEMA_DEFINITION, - } - : node); -} - -const schemaDefSymbol = 'SCHEMA_DEF_SYMBOL'; -function isNamedDefinitionNode(definitionNode) { - return 'name' in definitionNode; -} -function mergeGraphQLNodes(nodes, config) { - var _a, _b, _c; - const mergedResultMap = {}; - for (const nodeDefinition of nodes) { - if (isNamedDefinitionNode(nodeDefinition)) { - const name = (_a = nodeDefinition.name) === null || _a === void 0 ? void 0 : _a.value; - if (config === null || config === void 0 ? void 0 : config.commentDescriptions) { - collectComment(nodeDefinition); - } - if (name == null) { - continue; - } - if (((_b = config === null || config === void 0 ? void 0 : config.exclusions) === null || _b === void 0 ? void 0 : _b.includes(name + '.*')) || ((_c = config === null || config === void 0 ? void 0 : config.exclusions) === null || _c === void 0 ? void 0 : _c.includes(name))) { - delete mergedResultMap[name]; - } - else { - switch (nodeDefinition.kind) { - case Kind.OBJECT_TYPE_DEFINITION: - case Kind.OBJECT_TYPE_EXTENSION: - mergedResultMap[name] = mergeType(nodeDefinition, mergedResultMap[name], config); - break; - case Kind.ENUM_TYPE_DEFINITION: - case Kind.ENUM_TYPE_EXTENSION: - mergedResultMap[name] = mergeEnum(nodeDefinition, mergedResultMap[name], config); - break; - case Kind.UNION_TYPE_DEFINITION: - case Kind.UNION_TYPE_EXTENSION: - mergedResultMap[name] = mergeUnion(nodeDefinition, mergedResultMap[name], config); - break; - case Kind.SCALAR_TYPE_DEFINITION: - case Kind.SCALAR_TYPE_EXTENSION: - mergedResultMap[name] = mergeScalar(nodeDefinition, mergedResultMap[name], config); - break; - case Kind.INPUT_OBJECT_TYPE_DEFINITION: - case Kind.INPUT_OBJECT_TYPE_EXTENSION: - mergedResultMap[name] = mergeInputType(nodeDefinition, mergedResultMap[name], config); - break; - case Kind.INTERFACE_TYPE_DEFINITION: - case Kind.INTERFACE_TYPE_EXTENSION: - mergedResultMap[name] = mergeInterface(nodeDefinition, mergedResultMap[name], config); - break; - case Kind.DIRECTIVE_DEFINITION: - mergedResultMap[name] = mergeDirective(nodeDefinition, mergedResultMap[name]); - break; - } - } - } - else if (nodeDefinition.kind === Kind.SCHEMA_DEFINITION || nodeDefinition.kind === Kind.SCHEMA_EXTENSION) { - mergedResultMap[schemaDefSymbol] = mergeSchemaDefs(nodeDefinition, mergedResultMap[schemaDefSymbol], config); - } - } - return mergedResultMap; -} - -function mergeTypeDefs(typeSource, config) { - resetComments(); - const doc = { - kind: Kind.DOCUMENT, - definitions: mergeGraphQLTypes(typeSource, { - useSchemaDefinition: true, - forceSchemaDefinition: false, - throwOnConflict: false, - commentDescriptions: false, - ...config, - }), - }; - let result; - if (config === null || config === void 0 ? void 0 : config.commentDescriptions) { - result = printWithComments(doc); - } - else { - result = doc; - } - resetComments(); - return result; -} -function visitTypeSources(typeSource, options, allNodes = [], visitedTypeSources = new Set()) { - if (typeSource && !visitedTypeSources.has(typeSource)) { - visitedTypeSources.add(typeSource); - if (typeof typeSource === 'function') { - visitTypeSources(typeSource(), options, allNodes, visitedTypeSources); - } - else if (Array.isArray(typeSource)) { - for (const type of typeSource) { - visitTypeSources(type, options, allNodes, visitedTypeSources); - } - } - else if (isSchema(typeSource)) { - const documentNode = getDocumentNodeFromSchema(typeSource, options); - visitTypeSources(documentNode.definitions, options, allNodes, visitedTypeSources); - } - else if (isStringTypes(typeSource) || isSourceTypes(typeSource)) { - const documentNode = parse(typeSource, options); - visitTypeSources(documentNode.definitions, options, allNodes, visitedTypeSources); - } - else if (typeof typeSource === 'object' && isDefinitionNode(typeSource)) { - allNodes.push(typeSource); - } - else if (isDocumentNode(typeSource)) { - visitTypeSources(typeSource.definitions, options, allNodes, visitedTypeSources); - } - else { - throw new Error(`typeDefs must contain only strings, documents, schemas, or functions, got ${typeof typeSource}`); - } - } - return allNodes; -} -function mergeGraphQLTypes(typeSource, config) { - var _a, _b, _c; - resetComments(); - const allNodes = visitTypeSources(typeSource, config); - const mergedNodes = mergeGraphQLNodes(allNodes, config); - if (config === null || config === void 0 ? void 0 : config.useSchemaDefinition) { - // XXX: right now we don't handle multiple schema definitions - const schemaDef = mergedNodes[schemaDefSymbol] || { - kind: Kind.SCHEMA_DEFINITION, - operationTypes: [], - }; - const operationTypes = schemaDef.operationTypes; - for (const opTypeDefNodeType in DEFAULT_OPERATION_TYPE_NAME_MAP) { - const opTypeDefNode = operationTypes.find(operationType => operationType.operation === opTypeDefNodeType); - if (!opTypeDefNode) { - const possibleRootTypeName = DEFAULT_OPERATION_TYPE_NAME_MAP[opTypeDefNodeType]; - const existingPossibleRootType = mergedNodes[possibleRootTypeName]; - if (existingPossibleRootType != null && existingPossibleRootType.name != null) { - operationTypes.push({ - kind: Kind.OPERATION_TYPE_DEFINITION, - type: { - kind: Kind.NAMED_TYPE, - name: existingPossibleRootType.name, - }, - operation: opTypeDefNodeType, - }); - } - } - } - if (((_a = schemaDef === null || schemaDef === void 0 ? void 0 : schemaDef.operationTypes) === null || _a === void 0 ? void 0 : _a.length) != null && schemaDef.operationTypes.length > 0) { - mergedNodes[schemaDefSymbol] = schemaDef; - } - } - if ((config === null || config === void 0 ? void 0 : config.forceSchemaDefinition) && !((_c = (_b = mergedNodes[schemaDefSymbol]) === null || _b === void 0 ? void 0 : _b.operationTypes) === null || _c === void 0 ? void 0 : _c.length)) { - mergedNodes[schemaDefSymbol] = { - kind: Kind.SCHEMA_DEFINITION, - operationTypes: [ - { - kind: Kind.OPERATION_TYPE_DEFINITION, - operation: 'query', - type: { - kind: Kind.NAMED_TYPE, - name: { - kind: Kind.NAME, - value: 'Query', - }, - }, - }, - ], - }; - } - const mergedNodeDefinitions = Object.values(mergedNodes); - if (config === null || config === void 0 ? void 0 : config.sort) { - const sortFn = typeof config.sort === 'function' ? config.sort : defaultStringComparator; - mergedNodeDefinitions.sort((a, b) => { var _a, _b; return sortFn((_a = a.name) === null || _a === void 0 ? void 0 : _a.value, (_b = b.name) === null || _b === void 0 ? void 0 : _b.value); }); - } - return mergedNodeDefinitions; -} - -function mergeExtensions(extensions) { - return mergeDeep(extensions); -} -function applyExtensionObject(obj, extensions) { - if (!obj) { - return; - } - obj.extensions = mergeDeep([obj.extensions || {}, extensions || {}]); -} -function applyExtensions(schema, extensions) { - applyExtensionObject(schema, extensions.schemaExtensions); - for (const [typeName, data] of Object.entries(extensions.types || {})) { - const type = schema.getType(typeName); - if (type) { - applyExtensionObject(type, data.extensions); - if (data.type === 'object' || data.type === 'interface') { - for (const [fieldName, fieldData] of Object.entries(data.fields)) { - const field = type.getFields()[fieldName]; - if (field) { - applyExtensionObject(field, fieldData.extensions); - for (const [arg, argData] of Object.entries(fieldData.arguments)) { - applyExtensionObject(field.args.find(a => a.name === arg), argData); - } - } - } - } - else if (data.type === 'input') { - for (const [fieldName, fieldData] of Object.entries(data.fields)) { - const field = type.getFields()[fieldName]; - applyExtensionObject(field, fieldData.extensions); - } - } - else if (data.type === 'enum') { - for (const [valueName, valueData] of Object.entries(data.values)) { - const value = type.getValue(valueName); - applyExtensionObject(value, valueData); - } - } - } - } - return schema; -} - -/** - * Builds a schema from the provided type definitions and resolvers. - * - * The type definitions are written using Schema Definition Language (SDL). They - * can be provided as a string, a `DocumentNode`, a function, or an array of any - * of these. If a function is provided, it will be passed no arguments and - * should return an array of strings or `DocumentNode`s. - * - * Note: You can use GraphQL magic comment provide additional syntax - * highlighting in your editor (with the appropriate editor plugin). - * - * ```js - * const typeDefs = /* GraphQL *\/ ` - * type Query { - * posts: [Post] - * author(id: Int!): Author - * } - * `; - * ``` - * - * The `resolvers` object should be a map of type names to nested object, which - * themselves map the type's fields to their appropriate resolvers. - * See the [Resolvers](/docs/resolvers) section of the documentation for more details. - * - * ```js - * const resolvers = { - * Query: { - * posts: (obj, args, ctx, info) => getAllPosts(), - * author: (obj, args, ctx, info) => getAuthorById(args.id) - * } - * }; - * ``` - * - * Once you've defined both the `typeDefs` and `resolvers`, you can create your - * schema: - * - * ```js - * const schema = makeExecutableSchema({ - * typeDefs, - * resolvers, - * }) - * ``` - */ -function makeExecutableSchema({ typeDefs, resolvers = {}, resolverValidationOptions = {}, inheritResolversFromInterfaces = false, updateResolversInPlace = false, schemaExtensions, ...otherOptions }) { - // Validate and clean up arguments - if (typeof resolverValidationOptions !== 'object') { - throw new Error('Expected `resolverValidationOptions` to be an object'); - } - if (!typeDefs) { - throw new Error('Must provide typeDefs'); - } - let schema; - if (isSchema(typeDefs)) { - schema = typeDefs; - } - else if (otherOptions === null || otherOptions === void 0 ? void 0 : otherOptions.commentDescriptions) { - const mergedTypeDefs = mergeTypeDefs(typeDefs, { - ...otherOptions, - commentDescriptions: true, - }); - schema = buildSchema(mergedTypeDefs, otherOptions); - } - else { - const mergedTypeDefs = mergeTypeDefs(typeDefs, otherOptions); - schema = buildASTSchema(mergedTypeDefs, otherOptions); - } - // We allow passing in an array of resolver maps, in which case we merge them - schema = addResolversToSchema({ - schema, - resolvers: mergeResolvers(resolvers), - resolverValidationOptions, - inheritResolversFromInterfaces, - updateResolversInPlace, - }); - if (Object.keys(resolverValidationOptions).length > 0) { - assertResolversPresent(schema, resolverValidationOptions); - } - if (schemaExtensions) { - schemaExtensions = mergeExtensions(asArray$1(schemaExtensions)); - applyExtensions(schema, schemaExtensions); - } - return schema; -} - -const { fileURLToPath } = Url; -const { createReadStream } = require$$6$1; -var handleFileRequest$1 = function handleFileRequest(url, Response) { - return new Response( - createReadStream(fileURLToPath(url)), - ) -}; - -var eventTargetPolyfill = {}; - -var hasRequiredEventTargetPolyfill; - -function requireEventTargetPolyfill () { - if (hasRequiredEventTargetPolyfill) return eventTargetPolyfill; - hasRequiredEventTargetPolyfill = 1; - const root = - (typeof globalThis !== "undefined" && globalThis) || - (typeof self !== "undefined" && self) || - (typeof commonjsGlobal !== "undefined" && commonjsGlobal); - - function isConstructor(fn) { - try { - new fn(); - } catch (error) { - return false; - } - return true; - } - - if (typeof root.Event !== "function" || !isConstructor(root.Event)) { - root.Event = (function () { - function Event(type, options) { - this.bubbles = !!options && !!options.bubbles; - this.cancelable = !!options && !!options.cancelable; - this.composed = !!options && !!options.composed; - this.type = type; - } - - return Event; - })(); - } - - if (typeof root.EventTarget === "undefined" || !isConstructor(root.Event)) { - root.EventTarget = (function () { - function EventTarget() { - this.__listeners = new Map(); - } - - EventTarget.prototype = Object.create(Object.prototype); - - EventTarget.prototype.addEventListener = function ( - type, - listener, - options - ) { - if (arguments.length < 2) { - throw new TypeError( - `TypeError: Failed to execute 'addEventListener' on 'EventTarget': 2 arguments required, but only ${arguments.length} present.` - ); - } - const __listeners = this.__listeners; - const actualType = type.toString(); - if (!__listeners.has(actualType)) { - __listeners.set(actualType, new Map()); - } - const listenersForType = __listeners.get(actualType); - if (!listenersForType.has(listener)) { - // Any given listener is only registered once - listenersForType.set(listener, options); - } - }; - - EventTarget.prototype.removeEventListener = function ( - type, - listener, - _options - ) { - if (arguments.length < 2) { - throw new TypeError( - `TypeError: Failed to execute 'addEventListener' on 'EventTarget': 2 arguments required, but only ${arguments.length} present.` - ); - } - const __listeners = this.__listeners; - const actualType = type.toString(); - if (__listeners.has(actualType)) { - const listenersForType = __listeners.get(actualType); - if (listenersForType.has(listener)) { - listenersForType.delete(listener); - } - } - }; - - EventTarget.prototype.dispatchEvent = function (event) { - if (!(event instanceof Event)) { - throw new TypeError( - `Failed to execute 'dispatchEvent' on 'EventTarget': parameter 1 is not of type 'Event'.` - ); - } - const type = event.type; - const __listeners = this.__listeners; - const listenersForType = __listeners.get(type); - if (listenersForType) { - for (const [listener, options] of listenersForType.entries()) { - try { - if (typeof listener === "function") { - // Listener functions must be executed with the EventTarget as the `this` context. - listener.call(this, event); - } else if (listener && typeof listener.handleEvent === "function") { - // Listener objects have their handleEvent method called, if they have one - listener.handleEvent(event); - } - } catch (err) { - // We need to report the error to the global error handling event, - // but we do not want to break the loop that is executing the events. - // Unfortunately, this is the best we can do, which isn't great, because the - // native EventTarget will actually do this synchronously before moving to the next - // event in the loop. - setTimeout(() => { - throw err; - }); - } - if (options && options.once) { - // If this was registered with { once: true }, we need - // to remove it now. - listenersForType.delete(listener); - } - } - } - // Since there are no cancellable events on a base EventTarget, - // this should always return true. - return true; - }; - - return EventTarget; - })(); - } - return eventTargetPolyfill; -} - -/** - * @author Toru Nagashima - * @copyright 2015 Toru Nagashima. All rights reserved. - * See LICENSE file in root directory for full license. - */ -/** - * @typedef {object} PrivateData - * @property {EventTarget} eventTarget The event target. - * @property {{type:string}} event The original event object. - * @property {number} eventPhase The current event phase. - * @property {EventTarget|null} currentTarget The current event target. - * @property {boolean} canceled The flag to prevent default. - * @property {boolean} stopped The flag to stop propagation. - * @property {boolean} immediateStopped The flag to stop propagation immediately. - * @property {Function|null} passiveListener The listener if the current listener is passive. Otherwise this is null. - * @property {number} timeStamp The unix time. - * @private - */ - -/** - * Private data for event wrappers. - * @type {WeakMap} - * @private - */ -const privateData = new WeakMap(); - -/** - * Cache for wrapper classes. - * @type {WeakMap} - * @private - */ -const wrappers = new WeakMap(); - -/** - * Get private data. - * @param {Event} event The event object to get private data. - * @returns {PrivateData} The private data of the event. - * @private - */ -function pd(event) { - const retv = privateData.get(event); - console.assert( - retv != null, - "'this' is expected an Event object, but got", - event - ); - return retv -} - -/** - * https://dom.spec.whatwg.org/#set-the-canceled-flag - * @param data {PrivateData} private data. - */ -function setCancelFlag(data) { - if (data.passiveListener != null) { - if ( - typeof console !== "undefined" && - typeof console.error === "function" - ) { - console.error( - "Unable to preventDefault inside passive event listener invocation.", - data.passiveListener - ); - } - return - } - if (!data.event.cancelable) { - return - } - - data.canceled = true; - if (typeof data.event.preventDefault === "function") { - data.event.preventDefault(); - } -} - -/** - * @see https://dom.spec.whatwg.org/#interface-event - * @private - */ -/** - * The event wrapper. - * @constructor - * @param {EventTarget} eventTarget The event target of this dispatching. - * @param {Event|{type:string}} event The original event to wrap. - */ -function Event$1(eventTarget, event) { - privateData.set(this, { - eventTarget, - event, - eventPhase: 2, - currentTarget: eventTarget, - canceled: false, - stopped: false, - immediateStopped: false, - passiveListener: null, - timeStamp: event.timeStamp || Date.now(), - }); - - // https://heycam.github.io/webidl/#Unforgeable - Object.defineProperty(this, "isTrusted", { value: false, enumerable: true }); - - // Define accessors - const keys = Object.keys(event); - for (let i = 0; i < keys.length; ++i) { - const key = keys[i]; - if (!(key in this)) { - Object.defineProperty(this, key, defineRedirectDescriptor(key)); - } - } -} - -// Should be enumerable, but class methods are not enumerable. -Event$1.prototype = { - /** - * The type of this event. - * @type {string} - */ - get type() { - return pd(this).event.type - }, - - /** - * The target of this event. - * @type {EventTarget} - */ - get target() { - return pd(this).eventTarget - }, - - /** - * The target of this event. - * @type {EventTarget} - */ - get currentTarget() { - return pd(this).currentTarget - }, - - /** - * @returns {EventTarget[]} The composed path of this event. - */ - composedPath() { - const currentTarget = pd(this).currentTarget; - if (currentTarget == null) { - return [] - } - return [currentTarget] - }, - - /** - * Constant of NONE. - * @type {number} - */ - get NONE() { - return 0 - }, - - /** - * Constant of CAPTURING_PHASE. - * @type {number} - */ - get CAPTURING_PHASE() { - return 1 - }, - - /** - * Constant of AT_TARGET. - * @type {number} - */ - get AT_TARGET() { - return 2 - }, - - /** - * Constant of BUBBLING_PHASE. - * @type {number} - */ - get BUBBLING_PHASE() { - return 3 - }, - - /** - * The target of this event. - * @type {number} - */ - get eventPhase() { - return pd(this).eventPhase - }, - - /** - * Stop event bubbling. - * @returns {void} - */ - stopPropagation() { - const data = pd(this); - - data.stopped = true; - if (typeof data.event.stopPropagation === "function") { - data.event.stopPropagation(); - } - }, - - /** - * Stop event bubbling. - * @returns {void} - */ - stopImmediatePropagation() { - const data = pd(this); - - data.stopped = true; - data.immediateStopped = true; - if (typeof data.event.stopImmediatePropagation === "function") { - data.event.stopImmediatePropagation(); - } - }, - - /** - * The flag to be bubbling. - * @type {boolean} - */ - get bubbles() { - return Boolean(pd(this).event.bubbles) - }, - - /** - * The flag to be cancelable. - * @type {boolean} - */ - get cancelable() { - return Boolean(pd(this).event.cancelable) - }, - - /** - * Cancel this event. - * @returns {void} - */ - preventDefault() { - setCancelFlag(pd(this)); - }, - - /** - * The flag to indicate cancellation state. - * @type {boolean} - */ - get defaultPrevented() { - return pd(this).canceled - }, - - /** - * The flag to be composed. - * @type {boolean} - */ - get composed() { - return Boolean(pd(this).event.composed) - }, - - /** - * The unix time of this event. - * @type {number} - */ - get timeStamp() { - return pd(this).timeStamp - }, - - /** - * The target of this event. - * @type {EventTarget} - * @deprecated - */ - get srcElement() { - return pd(this).eventTarget - }, - - /** - * The flag to stop event bubbling. - * @type {boolean} - * @deprecated - */ - get cancelBubble() { - return pd(this).stopped - }, - set cancelBubble(value) { - if (!value) { - return - } - const data = pd(this); - - data.stopped = true; - if (typeof data.event.cancelBubble === "boolean") { - data.event.cancelBubble = true; - } - }, - - /** - * The flag to indicate cancellation state. - * @type {boolean} - * @deprecated - */ - get returnValue() { - return !pd(this).canceled - }, - set returnValue(value) { - if (!value) { - setCancelFlag(pd(this)); - } - }, - - /** - * Initialize this event object. But do nothing under event dispatching. - * @param {string} type The event type. - * @param {boolean} [bubbles=false] The flag to be possible to bubble up. - * @param {boolean} [cancelable=false] The flag to be possible to cancel. - * @deprecated - */ - initEvent() { - // Do nothing. - }, -}; - -// `constructor` is not enumerable. -Object.defineProperty(Event$1.prototype, "constructor", { - value: Event$1, - configurable: true, - writable: true, -}); - -// Ensure `event instanceof window.Event` is `true`. -if (typeof window !== "undefined" && typeof window.Event !== "undefined") { - Object.setPrototypeOf(Event$1.prototype, window.Event.prototype); - - // Make association for wrappers. - wrappers.set(window.Event.prototype, Event$1); -} - -/** - * Get the property descriptor to redirect a given property. - * @param {string} key Property name to define property descriptor. - * @returns {PropertyDescriptor} The property descriptor to redirect the property. - * @private - */ -function defineRedirectDescriptor(key) { - return { - get() { - return pd(this).event[key] - }, - set(value) { - pd(this).event[key] = value; - }, - configurable: true, - enumerable: true, - } -} - -/** - * Get the property descriptor to call a given method property. - * @param {string} key Property name to define property descriptor. - * @returns {PropertyDescriptor} The property descriptor to call the method property. - * @private - */ -function defineCallDescriptor(key) { - return { - value() { - const event = pd(this).event; - return event[key].apply(event, arguments) - }, - configurable: true, - enumerable: true, - } -} - -/** - * Define new wrapper class. - * @param {Function} BaseEvent The base wrapper class. - * @param {Object} proto The prototype of the original event. - * @returns {Function} The defined wrapper class. - * @private - */ -function defineWrapper(BaseEvent, proto) { - const keys = Object.keys(proto); - if (keys.length === 0) { - return BaseEvent - } - - /** CustomEvent */ - function CustomEvent(eventTarget, event) { - BaseEvent.call(this, eventTarget, event); - } - - CustomEvent.prototype = Object.create(BaseEvent.prototype, { - constructor: { value: CustomEvent, configurable: true, writable: true }, - }); - - // Define accessors. - for (let i = 0; i < keys.length; ++i) { - const key = keys[i]; - if (!(key in BaseEvent.prototype)) { - const descriptor = Object.getOwnPropertyDescriptor(proto, key); - const isFunc = typeof descriptor.value === "function"; - Object.defineProperty( - CustomEvent.prototype, - key, - isFunc - ? defineCallDescriptor(key) - : defineRedirectDescriptor(key) - ); - } - } - - return CustomEvent -} - -/** - * Get the wrapper class of a given prototype. - * @param {Object} proto The prototype of the original event to get its wrapper. - * @returns {Function} The wrapper class. - * @private - */ -function getWrapper(proto) { - if (proto == null || proto === Object.prototype) { - return Event$1 - } - - let wrapper = wrappers.get(proto); - if (wrapper == null) { - wrapper = defineWrapper(getWrapper(Object.getPrototypeOf(proto)), proto); - wrappers.set(proto, wrapper); - } - return wrapper -} - -/** - * Wrap a given event to management a dispatching. - * @param {EventTarget} eventTarget The event target of this dispatching. - * @param {Object} event The event to wrap. - * @returns {Event} The wrapper instance. - * @private - */ -function wrapEvent(eventTarget, event) { - const Wrapper = getWrapper(Object.getPrototypeOf(event)); - return new Wrapper(eventTarget, event) -} - -/** - * Get the immediateStopped flag of a given event. - * @param {Event} event The event to get. - * @returns {boolean} The flag to stop propagation immediately. - * @private - */ -function isStopped(event) { - return pd(event).immediateStopped -} - -/** - * Set the current event phase of a given event. - * @param {Event} event The event to set current target. - * @param {number} eventPhase New event phase. - * @returns {void} - * @private - */ -function setEventPhase(event, eventPhase) { - pd(event).eventPhase = eventPhase; -} - -/** - * Set the current target of a given event. - * @param {Event} event The event to set current target. - * @param {EventTarget|null} currentTarget New current target. - * @returns {void} - * @private - */ -function setCurrentTarget(event, currentTarget) { - pd(event).currentTarget = currentTarget; -} - -/** - * Set a passive listener of a given event. - * @param {Event} event The event to set current target. - * @param {Function|null} passiveListener New passive listener. - * @returns {void} - * @private - */ -function setPassiveListener(event, passiveListener) { - pd(event).passiveListener = passiveListener; -} - -/** - * @typedef {object} ListenerNode - * @property {Function} listener - * @property {1|2|3} listenerType - * @property {boolean} passive - * @property {boolean} once - * @property {ListenerNode|null} next - * @private - */ - -/** - * @type {WeakMap>} - * @private - */ -const listenersMap = new WeakMap(); - -// Listener types -const CAPTURE = 1; -const BUBBLE = 2; -const ATTRIBUTE = 3; - -/** - * Check whether a given value is an object or not. - * @param {any} x The value to check. - * @returns {boolean} `true` if the value is an object. - */ -function isObject$1(x) { - return x !== null && typeof x === "object" //eslint-disable-line no-restricted-syntax -} - -/** - * Get listeners. - * @param {EventTarget} eventTarget The event target to get. - * @returns {Map} The listeners. - * @private - */ -function getListeners(eventTarget) { - const listeners = listenersMap.get(eventTarget); - if (listeners == null) { - throw new TypeError( - "'this' is expected an EventTarget object, but got another value." - ) - } - return listeners -} - -/** - * Get the property descriptor for the event attribute of a given event. - * @param {string} eventName The event name to get property descriptor. - * @returns {PropertyDescriptor} The property descriptor. - * @private - */ -function defineEventAttributeDescriptor(eventName) { - return { - get() { - const listeners = getListeners(this); - let node = listeners.get(eventName); - while (node != null) { - if (node.listenerType === ATTRIBUTE) { - return node.listener - } - node = node.next; - } - return null - }, - - set(listener) { - if (typeof listener !== "function" && !isObject$1(listener)) { - listener = null; // eslint-disable-line no-param-reassign - } - const listeners = getListeners(this); - - // Traverse to the tail while removing old value. - let prev = null; - let node = listeners.get(eventName); - while (node != null) { - if (node.listenerType === ATTRIBUTE) { - // Remove old value. - if (prev !== null) { - prev.next = node.next; - } else if (node.next !== null) { - listeners.set(eventName, node.next); - } else { - listeners.delete(eventName); - } - } else { - prev = node; - } - - node = node.next; - } - - // Add new value. - if (listener !== null) { - const newNode = { - listener, - listenerType: ATTRIBUTE, - passive: false, - once: false, - next: null, - }; - if (prev === null) { - listeners.set(eventName, newNode); - } else { - prev.next = newNode; - } - } - }, - configurable: true, - enumerable: true, - } -} - -/** - * Define an event attribute (e.g. `eventTarget.onclick`). - * @param {Object} eventTargetPrototype The event target prototype to define an event attrbite. - * @param {string} eventName The event name to define. - * @returns {void} - */ -function defineEventAttribute(eventTargetPrototype, eventName) { - Object.defineProperty( - eventTargetPrototype, - `on${eventName}`, - defineEventAttributeDescriptor(eventName) - ); -} - -/** - * Define a custom EventTarget with event attributes. - * @param {string[]} eventNames Event names for event attributes. - * @returns {EventTarget} The custom EventTarget. - * @private - */ -function defineCustomEventTarget(eventNames) { - /** CustomEventTarget */ - function CustomEventTarget() { - EventTarget.call(this); - } - - CustomEventTarget.prototype = Object.create(EventTarget.prototype, { - constructor: { - value: CustomEventTarget, - configurable: true, - writable: true, - }, - }); - - for (let i = 0; i < eventNames.length; ++i) { - defineEventAttribute(CustomEventTarget.prototype, eventNames[i]); - } - - return CustomEventTarget -} - -/** - * EventTarget. - * - * - This is constructor if no arguments. - * - This is a function which returns a CustomEventTarget constructor if there are arguments. - * - * For example: - * - * class A extends EventTarget {} - * class B extends EventTarget("message") {} - * class C extends EventTarget("message", "error") {} - * class D extends EventTarget(["message", "error"]) {} - */ -function EventTarget() { - /*eslint-disable consistent-return */ - if (this instanceof EventTarget) { - listenersMap.set(this, new Map()); - return - } - if (arguments.length === 1 && Array.isArray(arguments[0])) { - return defineCustomEventTarget(arguments[0]) - } - if (arguments.length > 0) { - const types = new Array(arguments.length); - for (let i = 0; i < arguments.length; ++i) { - types[i] = arguments[i]; - } - return defineCustomEventTarget(types) - } - throw new TypeError("Cannot call a class as a function") - /*eslint-enable consistent-return */ -} - -// Should be enumerable, but class methods are not enumerable. -EventTarget.prototype = { - /** - * Add a given listener to this event target. - * @param {string} eventName The event name to add. - * @param {Function} listener The listener to add. - * @param {boolean|{capture?:boolean,passive?:boolean,once?:boolean}} [options] The options for this listener. - * @returns {void} - */ - addEventListener(eventName, listener, options) { - if (listener == null) { - return - } - if (typeof listener !== "function" && !isObject$1(listener)) { - throw new TypeError("'listener' should be a function or an object.") - } - - const listeners = getListeners(this); - const optionsIsObj = isObject$1(options); - const capture = optionsIsObj - ? Boolean(options.capture) - : Boolean(options); - const listenerType = capture ? CAPTURE : BUBBLE; - const newNode = { - listener, - listenerType, - passive: optionsIsObj && Boolean(options.passive), - once: optionsIsObj && Boolean(options.once), - next: null, - }; - - // Set it as the first node if the first node is null. - let node = listeners.get(eventName); - if (node === undefined) { - listeners.set(eventName, newNode); - return - } - - // Traverse to the tail while checking duplication.. - let prev = null; - while (node != null) { - if ( - node.listener === listener && - node.listenerType === listenerType - ) { - // Should ignore duplication. - return - } - prev = node; - node = node.next; - } - - // Add it. - prev.next = newNode; - }, - - /** - * Remove a given listener from this event target. - * @param {string} eventName The event name to remove. - * @param {Function} listener The listener to remove. - * @param {boolean|{capture?:boolean,passive?:boolean,once?:boolean}} [options] The options for this listener. - * @returns {void} - */ - removeEventListener(eventName, listener, options) { - if (listener == null) { - return - } - - const listeners = getListeners(this); - const capture = isObject$1(options) - ? Boolean(options.capture) - : Boolean(options); - const listenerType = capture ? CAPTURE : BUBBLE; - - let prev = null; - let node = listeners.get(eventName); - while (node != null) { - if ( - node.listener === listener && - node.listenerType === listenerType - ) { - if (prev !== null) { - prev.next = node.next; - } else if (node.next !== null) { - listeners.set(eventName, node.next); - } else { - listeners.delete(eventName); - } - return - } - - prev = node; - node = node.next; - } - }, - - /** - * Dispatch a given event. - * @param {Event|{type:string}} event The event to dispatch. - * @returns {boolean} `false` if canceled. - */ - dispatchEvent(event) { - if (event == null || typeof event.type !== "string") { - throw new TypeError('"event.type" should be a string.') - } - - // If listeners aren't registered, terminate. - const listeners = getListeners(this); - const eventName = event.type; - let node = listeners.get(eventName); - if (node == null) { - return true - } - - // Since we cannot rewrite several properties, so wrap object. - const wrappedEvent = wrapEvent(this, event); - - // This doesn't process capturing phase and bubbling phase. - // This isn't participating in a tree. - let prev = null; - while (node != null) { - // Remove this listener if it's once - if (node.once) { - if (prev !== null) { - prev.next = node.next; - } else if (node.next !== null) { - listeners.set(eventName, node.next); - } else { - listeners.delete(eventName); - } - } else { - prev = node; - } - - // Call this listener - setPassiveListener( - wrappedEvent, - node.passive ? node.listener : null - ); - if (typeof node.listener === "function") { - try { - node.listener.call(this, wrappedEvent); - } catch (err) { - if ( - typeof console !== "undefined" && - typeof console.error === "function" - ) { - console.error(err); - } - } - } else if ( - node.listenerType !== ATTRIBUTE && - typeof node.listener.handleEvent === "function" - ) { - node.listener.handleEvent(wrappedEvent); - } - - // Break if `event.stopImmediatePropagation` was called. - if (isStopped(wrappedEvent)) { - break - } - - node = node.next; - } - setPassiveListener(wrappedEvent, null); - setEventPhase(wrappedEvent, 0); - setCurrentTarget(wrappedEvent, null); - - return !wrappedEvent.defaultPrevented - }, -}; - -// `constructor` is not enumerable. -Object.defineProperty(EventTarget.prototype, "constructor", { - value: EventTarget, - configurable: true, - writable: true, -}); - -// Ensure `eventTarget instanceof window.EventTarget` is `true`. -if ( - typeof window !== "undefined" && - typeof window.EventTarget !== "undefined" -) { - Object.setPrototypeOf(EventTarget.prototype, window.EventTarget.prototype); -} - -/** - * @author Toru Nagashima - * See LICENSE file in root directory for full license. - */ - -/** - * The signal class. - * @see https://dom.spec.whatwg.org/#abortsignal - */ -class AbortSignal$1 extends EventTarget { - /** - * AbortSignal cannot be constructed directly. - */ - constructor() { - super(); - throw new TypeError("AbortSignal cannot be constructed directly"); - } - /** - * Returns `true` if this `AbortSignal`'s `AbortController` has signaled to abort, and `false` otherwise. - */ - get aborted() { - const aborted = abortedFlags.get(this); - if (typeof aborted !== "boolean") { - throw new TypeError(`Expected 'this' to be an 'AbortSignal' object, but got ${this === null ? "null" : typeof this}`); - } - return aborted; - } -} -defineEventAttribute(AbortSignal$1.prototype, "abort"); -/** - * Create an AbortSignal object. - */ -function createAbortSignal() { - const signal = Object.create(AbortSignal$1.prototype); - EventTarget.call(signal); - abortedFlags.set(signal, false); - return signal; -} -/** - * Abort a given signal. - */ -function abortSignal$1(signal) { - if (abortedFlags.get(signal) !== false) { - return; - } - abortedFlags.set(signal, true); - signal.dispatchEvent({ type: "abort" }); -} -/** - * Aborted flag for each instances. - */ -const abortedFlags = new WeakMap(); -// Properties should be enumerable. -Object.defineProperties(AbortSignal$1.prototype, { - aborted: { enumerable: true }, -}); -// `toString()` should return `"[object AbortSignal]"` -if (typeof Symbol === "function" && typeof Symbol.toStringTag === "symbol") { - Object.defineProperty(AbortSignal$1.prototype, Symbol.toStringTag, { - configurable: true, - value: "AbortSignal", - }); -} - -/** - * The AbortController. - * @see https://dom.spec.whatwg.org/#abortcontroller - */ -class AbortController$1 { - /** - * Initialize this controller. - */ - constructor() { - signals.set(this, createAbortSignal()); - } - /** - * Returns the `AbortSignal` object associated with this object. - */ - get signal() { - return getSignal(this); - } - /** - * Abort and signal to any observers that the associated activity is to be aborted. - */ - abort() { - abortSignal$1(getSignal(this)); - } -} -/** - * Associated signals. - */ -const signals = new WeakMap(); -/** - * Get the associated signal of a given controller. - */ -function getSignal(controller) { - const signal = signals.get(controller); - if (signal == null) { - throw new TypeError(`Expected 'this' to be an 'AbortController' object, but got ${controller === null ? "null" : typeof controller}`); - } - return signal; -} -// Properties should be enumerable. -Object.defineProperties(AbortController$1.prototype, { - signal: { enumerable: true }, - abort: { enumerable: true }, -}); -if (typeof Symbol === "function" && typeof Symbol.toStringTag === "symbol") { - Object.defineProperty(AbortController$1.prototype, Symbol.toStringTag, { - configurable: true, - value: "AbortController", - }); -} - -var abortController = /*#__PURE__*/Object.freeze({ - __proto__: null, - 'default': AbortController$1, - AbortController: AbortController$1, - AbortSignal: AbortSignal$1 -}); - -var require$$2 = /*@__PURE__*/getAugmentedNamespace(abortController); - -/** - * @license - * web-streams-polyfill v4.0.0-beta.3 - * Copyright 2021 Mattias Buelens, Diwank Singh Tomer and other contributors. - * This code is released under the MIT license. - * SPDX-License-Identifier: MIT - */ -const e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol:e=>`Symbol(${e})`;function t(){}function r(e){return "object"==typeof e&&null!==e||"function"==typeof e}const o=t;function n(e,t){try{Object.defineProperty(e,"name",{value:t,configurable:!0});}catch(e){}}const a=Promise,i=Promise.prototype.then,l=Promise.resolve.bind(a),s=Promise.reject.bind(a);function u(e){return new a(e)}function c(e){return l(e)}function d(e){return s(e)}function f(e,t,r){return i.call(e,t,r)}function b(e,t,r){f(f(e,t,r),void 0,o);}function h(e,t){b(e,t);}function _(e,t){b(e,void 0,t);}function p(e,t,r){return f(e,t,r)}function m(e){f(e,void 0,o);}let y=e=>{if("function"==typeof queueMicrotask)y=queueMicrotask;else {const e=c(void 0);y=t=>f(e,t);}return y(e)};function g(e,t,r){if("function"!=typeof e)throw new TypeError("Argument is not a function");return Function.prototype.apply.call(e,t,r)}function w(e,t,r){try{return c(g(e,t,r))}catch(e){return d(e)}}class S{constructor(){this._cursor=0,this._size=0,this._front={_elements:[],_next:void 0},this._back=this._front,this._cursor=0,this._size=0;}get length(){return this._size}push(e){const t=this._back;let r=t;16383===t._elements.length&&(r={_elements:[],_next:void 0}),t._elements.push(e),r!==t&&(this._back=r,t._next=r),++this._size;}shift(){const e=this._front;let t=e;const r=this._cursor;let o=r+1;const n=e._elements,a=n[r];return 16384===o&&(t=e._next,o=0),--this._size,this._cursor=o,e!==t&&(this._front=t),n[r]=void 0,a}forEach(e){let t=this._cursor,r=this._front,o=r._elements;for(;!(t===o.length&&void 0===r._next||t===o.length&&(r=r._next,o=r._elements,t=0,0===o.length));)e(o[t]),++t;}peek(){const e=this._front,t=this._cursor;return e._elements[t]}}const v=e("[[AbortSteps]]"),R=e("[[ErrorSteps]]"),T=e("[[CancelSteps]]"),q=e("[[PullSteps]]"),C=e("[[ReleaseSteps]]");function E(e,t){e._ownerReadableStream=t,t._reader=e,"readable"===t._state?O(e):"closed"===t._state?function(e){O(e),j(e);}(e):B(e,t._storedError);}function P(e,t){return Gt(e._ownerReadableStream,t)}function W(e){const t=e._ownerReadableStream;"readable"===t._state?A(e,new TypeError("Reader was released and can no longer be used to monitor the stream's closedness")):function(e,t){B(e,t);}(e,new TypeError("Reader was released and can no longer be used to monitor the stream's closedness")),t._readableStreamController[C](),t._reader=void 0,e._ownerReadableStream=void 0;}function k(e){return new TypeError("Cannot "+e+" a stream using a released reader")}function O(e){e._closedPromise=u(((t,r)=>{e._closedPromise_resolve=t,e._closedPromise_reject=r;}));}function B(e,t){O(e),A(e,t);}function A(e,t){void 0!==e._closedPromise_reject&&(m(e._closedPromise),e._closedPromise_reject(t),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0);}function j(e){void 0!==e._closedPromise_resolve&&(e._closedPromise_resolve(void 0),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0);}const z=Number.isFinite||function(e){return "number"==typeof e&&isFinite(e)},L=Math.trunc||function(e){return e<0?Math.ceil(e):Math.floor(e)};function F(e,t){if(void 0!==e&&("object"!=typeof(r=e)&&"function"!=typeof r))throw new TypeError(`${t} is not an object.`);var r;}function I(e,t){if("function"!=typeof e)throw new TypeError(`${t} is not a function.`)}function D(e,t){if(!function(e){return "object"==typeof e&&null!==e||"function"==typeof e}(e))throw new TypeError(`${t} is not an object.`)}function $(e,t,r){if(void 0===e)throw new TypeError(`Parameter ${t} is required in '${r}'.`)}function M(e,t,r){if(void 0===e)throw new TypeError(`${t} is required in '${r}'.`)}function Y(e){return Number(e)}function Q(e){return 0===e?0:e}function N(e,t){const r=Number.MAX_SAFE_INTEGER;let o=Number(e);if(o=Q(o),!z(o))throw new TypeError(`${t} is not a finite number`);if(o=function(e){return Q(L(e))}(o),o<0||o>r)throw new TypeError(`${t} is outside the accepted range of 0 to ${r}, inclusive`);return z(o)&&0!==o?o:0}function H(e){if(!r(e))return !1;if("function"!=typeof e.getReader)return !1;try{return "boolean"==typeof e.locked}catch(e){return !1}}function x(e){if(!r(e))return !1;if("function"!=typeof e.getWriter)return !1;try{return "boolean"==typeof e.locked}catch(e){return !1}}function V(e,t){if(!Vt(e))throw new TypeError(`${t} is not a ReadableStream.`)}function U(e,t){e._reader._readRequests.push(t);}function G(e,t,r){const o=e._reader._readRequests.shift();r?o._closeSteps():o._chunkSteps(t);}function X(e){return e._reader._readRequests.length}function J(e){const t=e._reader;return void 0!==t&&!!K(t)}class ReadableStreamDefaultReader$1{constructor(e){if($(e,1,"ReadableStreamDefaultReader"),V(e,"First parameter"),Ut(e))throw new TypeError("This stream has already been locked for exclusive reading by another reader");E(this,e),this._readRequests=new S;}get closed(){return K(this)?this._closedPromise:d(ee("closed"))}cancel(e){return K(this)?void 0===this._ownerReadableStream?d(k("cancel")):P(this,e):d(ee("cancel"))}read(){if(!K(this))return d(ee("read"));if(void 0===this._ownerReadableStream)return d(k("read from"));let e,t;const r=u(((r,o)=>{e=r,t=o;}));return function(e,t){const r=e._ownerReadableStream;r._disturbed=!0,"closed"===r._state?t._closeSteps():"errored"===r._state?t._errorSteps(r._storedError):r._readableStreamController[q](t);}(this,{_chunkSteps:t=>e({value:t,done:!1}),_closeSteps:()=>e({value:void 0,done:!0}),_errorSteps:e=>t(e)}),r}releaseLock(){if(!K(this))throw ee("releaseLock");void 0!==this._ownerReadableStream&&function(e){W(e);const t=new TypeError("Reader was released");Z(e,t);}(this);}}function K(e){return !!r(e)&&(!!Object.prototype.hasOwnProperty.call(e,"_readRequests")&&e instanceof ReadableStreamDefaultReader$1)}function Z(e,t){const r=e._readRequests;e._readRequests=new S,r.forEach((e=>{e._errorSteps(t);}));}function ee(e){return new TypeError(`ReadableStreamDefaultReader.prototype.${e} can only be used on a ReadableStreamDefaultReader`)}Object.defineProperties(ReadableStreamDefaultReader$1.prototype,{cancel:{enumerable:!0},read:{enumerable:!0},releaseLock:{enumerable:!0},closed:{enumerable:!0}}),n(ReadableStreamDefaultReader$1.prototype.cancel,"cancel"),n(ReadableStreamDefaultReader$1.prototype.read,"read"),n(ReadableStreamDefaultReader$1.prototype.releaseLock,"releaseLock"),"symbol"==typeof e.toStringTag&&Object.defineProperty(ReadableStreamDefaultReader$1.prototype,e.toStringTag,{value:"ReadableStreamDefaultReader",configurable:!0});class te{constructor(e,t){this._ongoingPromise=void 0,this._isFinished=!1,this._reader=e,this._preventCancel=t;}next(){const e=()=>this._nextSteps();return this._ongoingPromise=this._ongoingPromise?p(this._ongoingPromise,e,e):e(),this._ongoingPromise}return(e){const t=()=>this._returnSteps(e);return this._ongoingPromise?p(this._ongoingPromise,t,t):t()}_nextSteps(){if(this._isFinished)return Promise.resolve({value:void 0,done:!0});const e=this._reader;return void 0===e?d(k("iterate")):f(e.read(),(e=>{var t;return this._ongoingPromise=void 0,e.done&&(this._isFinished=!0,null===(t=this._reader)||void 0===t||t.releaseLock(),this._reader=void 0),e}),(e=>{var t;throw this._ongoingPromise=void 0,this._isFinished=!0,null===(t=this._reader)||void 0===t||t.releaseLock(),this._reader=void 0,e}))}_returnSteps(e){if(this._isFinished)return Promise.resolve({value:e,done:!0});this._isFinished=!0;const t=this._reader;if(void 0===t)return d(k("finish iterating"));if(this._reader=void 0,!this._preventCancel){const r=t.cancel(e);return t.releaseLock(),p(r,(()=>({value:e,done:!0})))}return t.releaseLock(),c({value:e,done:!0})}}const re={next(){return oe(this)?this._asyncIteratorImpl.next():d(ne("next"))},return(e){return oe(this)?this._asyncIteratorImpl.return(e):d(ne("return"))}};function oe(e){if(!r(e))return !1;if(!Object.prototype.hasOwnProperty.call(e,"_asyncIteratorImpl"))return !1;try{return e._asyncIteratorImpl instanceof te}catch(e){return !1}}function ne(e){return new TypeError(`ReadableStreamAsyncIterator.${e} can only be used on a ReadableSteamAsyncIterator`)}"symbol"==typeof e.asyncIterator&&Object.defineProperty(re,e.asyncIterator,{value(){return this},writable:!0,configurable:!0});const ae=Number.isNaN||function(e){return e!=e};function ie(e,t,r,o,n){new Uint8Array(e).set(new Uint8Array(r,o,n),t);}function le(e){const t=function(e,t,r){if(e.slice)return e.slice(t,r);const o=r-t,n=new ArrayBuffer(o);return ie(n,0,e,t,o),n}(e.buffer,e.byteOffset,e.byteOffset+e.byteLength);return new Uint8Array(t)}function se(e){const t=e._queue.shift();return e._queueTotalSize-=t.size,e._queueTotalSize<0&&(e._queueTotalSize=0),t.value}function ue(e,t,r){if("number"!=typeof(o=r)||ae(o)||o<0||r===1/0)throw new RangeError("Size must be a finite, non-NaN, non-negative number.");var o;e._queue.push({value:t,size:r}),e._queueTotalSize+=r;}function ce(e){e._queue=new S,e._queueTotalSize=0;}class ReadableStreamBYOBRequest$1{constructor(){throw new TypeError("Illegal constructor")}get view(){if(!fe(this))throw Be("view");return this._view}respond(e){if(!fe(this))throw Be("respond");if($(e,1,"respond"),e=N(e,"First parameter"),void 0===this._associatedReadableByteStreamController)throw new TypeError("This BYOB request has been invalidated");this._view.buffer,function(e,t){const r=e._pendingPullIntos.peek();if("closed"===e._controlledReadableByteStream._state){if(0!==t)throw new TypeError("bytesWritten must be 0 when calling respond() on a closed stream")}else {if(0===t)throw new TypeError("bytesWritten must be greater than 0 when calling respond() on a readable stream");if(r.bytesFilled+t>r.byteLength)throw new RangeError("bytesWritten out of range")}r.buffer=r.buffer,qe(e,t);}(this._associatedReadableByteStreamController,e);}respondWithNewView(e){if(!fe(this))throw Be("respondWithNewView");if($(e,1,"respondWithNewView"),!ArrayBuffer.isView(e))throw new TypeError("You can only respond with array buffer views");if(void 0===this._associatedReadableByteStreamController)throw new TypeError("This BYOB request has been invalidated");e.buffer,function(e,t){const r=e._pendingPullIntos.peek();if("closed"===e._controlledReadableByteStream._state){if(0!==t.byteLength)throw new TypeError("The view's length must be 0 when calling respondWithNewView() on a closed stream")}else if(0===t.byteLength)throw new TypeError("The view's length must be greater than 0 when calling respondWithNewView() on a readable stream");if(r.byteOffset+r.bytesFilled!==t.byteOffset)throw new RangeError("The region specified by view does not match byobRequest");if(r.bufferByteLength!==t.buffer.byteLength)throw new RangeError("The buffer of view has different capacity than byobRequest");if(r.bytesFilled+t.byteLength>r.byteLength)throw new RangeError("The region specified by view is larger than byobRequest");const o=t.byteLength;r.buffer=t.buffer,qe(e,o);}(this._associatedReadableByteStreamController,e);}}Object.defineProperties(ReadableStreamBYOBRequest$1.prototype,{respond:{enumerable:!0},respondWithNewView:{enumerable:!0},view:{enumerable:!0}}),n(ReadableStreamBYOBRequest$1.prototype.respond,"respond"),n(ReadableStreamBYOBRequest$1.prototype.respondWithNewView,"respondWithNewView"),"symbol"==typeof e.toStringTag&&Object.defineProperty(ReadableStreamBYOBRequest$1.prototype,e.toStringTag,{value:"ReadableStreamBYOBRequest",configurable:!0});class ReadableByteStreamController$1{constructor(){throw new TypeError("Illegal constructor")}get byobRequest(){if(!de(this))throw Ae("byobRequest");return function(e){if(null===e._byobRequest&&e._pendingPullIntos.length>0){const t=e._pendingPullIntos.peek(),r=new Uint8Array(t.buffer,t.byteOffset+t.bytesFilled,t.byteLength-t.bytesFilled),o=Object.create(ReadableStreamBYOBRequest$1.prototype);!function(e,t,r){e._associatedReadableByteStreamController=t,e._view=r;}(o,e,r),e._byobRequest=o;}return e._byobRequest}(this)}get desiredSize(){if(!de(this))throw Ae("desiredSize");return ke(this)}close(){if(!de(this))throw Ae("close");if(this._closeRequested)throw new TypeError("The stream has already been closed; do not close it again!");const e=this._controlledReadableByteStream._state;if("readable"!==e)throw new TypeError(`The stream (in ${e} state) is not in the readable state and cannot be closed`);!function(e){const t=e._controlledReadableByteStream;if(e._closeRequested||"readable"!==t._state)return;if(e._queueTotalSize>0)return void(e._closeRequested=!0);if(e._pendingPullIntos.length>0){if(e._pendingPullIntos.peek().bytesFilled>0){const t=new TypeError("Insufficient bytes to fill elements in the given buffer");throw Pe(e,t),t}}Ee(e),Xt(t);}(this);}enqueue(e){if(!de(this))throw Ae("enqueue");if($(e,1,"enqueue"),!ArrayBuffer.isView(e))throw new TypeError("chunk must be an array buffer view");if(0===e.byteLength)throw new TypeError("chunk must have non-zero byteLength");if(0===e.buffer.byteLength)throw new TypeError("chunk's buffer must have non-zero byteLength");if(this._closeRequested)throw new TypeError("stream is closed or draining");const t=this._controlledReadableByteStream._state;if("readable"!==t)throw new TypeError(`The stream (in ${t} state) is not in the readable state and cannot be enqueued to`);!function(e,t){const r=e._controlledReadableByteStream;if(e._closeRequested||"readable"!==r._state)return;const o=t.buffer,n=t.byteOffset,a=t.byteLength,i=o;if(e._pendingPullIntos.length>0){const t=e._pendingPullIntos.peek();t.buffer,Re(e),t.buffer=t.buffer,"none"===t.readerType&&ge(e,t);}if(J(r))if(function(e){const t=e._controlledReadableByteStream._reader;for(;t._readRequests.length>0;){if(0===e._queueTotalSize)return;We(e,t._readRequests.shift());}}(e),0===X(r))me(e,i,n,a);else {e._pendingPullIntos.length>0&&Ce(e);G(r,new Uint8Array(i,n,a),!1);}else Le(r)?(me(e,i,n,a),Te(e)):me(e,i,n,a);be(e);}(this,e);}error(e){if(!de(this))throw Ae("error");Pe(this,e);}[T](e){he(this),ce(this);const t=this._cancelAlgorithm(e);return Ee(this),t}[q](e){const t=this._controlledReadableByteStream;if(this._queueTotalSize>0)return void We(this,e);const r=this._autoAllocateChunkSize;if(void 0!==r){let t;try{t=new ArrayBuffer(r);}catch(t){return void e._errorSteps(t)}const o={buffer:t,bufferByteLength:r,byteOffset:0,byteLength:r,bytesFilled:0,elementSize:1,viewConstructor:Uint8Array,readerType:"default"};this._pendingPullIntos.push(o);}U(t,e),be(this);}[C](){if(this._pendingPullIntos.length>0){const e=this._pendingPullIntos.peek();e.readerType="none",this._pendingPullIntos=new S,this._pendingPullIntos.push(e);}}}function de(e){return !!r(e)&&(!!Object.prototype.hasOwnProperty.call(e,"_controlledReadableByteStream")&&e instanceof ReadableByteStreamController$1)}function fe(e){return !!r(e)&&(!!Object.prototype.hasOwnProperty.call(e,"_associatedReadableByteStreamController")&&e instanceof ReadableStreamBYOBRequest$1)}function be(e){const t=function(e){const t=e._controlledReadableByteStream;if("readable"!==t._state)return !1;if(e._closeRequested)return !1;if(!e._started)return !1;if(J(t)&&X(t)>0)return !0;if(Le(t)&&ze(t)>0)return !0;if(ke(e)>0)return !0;return !1}(e);if(!t)return;if(e._pulling)return void(e._pullAgain=!0);e._pulling=!0;b(e._pullAlgorithm(),(()=>(e._pulling=!1,e._pullAgain&&(e._pullAgain=!1,be(e)),null)),(t=>(Pe(e,t),null)));}function he(e){Re(e),e._pendingPullIntos=new S;}function _e(e,t){let r=!1;"closed"===e._state&&(r=!0);const o=pe(t);"default"===t.readerType?G(e,o,r):function(e,t,r){const o=e._reader._readIntoRequests.shift();r?o._closeSteps(t):o._chunkSteps(t);}(e,o,r);}function pe(e){const t=e.bytesFilled,r=e.elementSize;return new e.viewConstructor(e.buffer,e.byteOffset,t/r)}function me(e,t,r,o){e._queue.push({buffer:t,byteOffset:r,byteLength:o}),e._queueTotalSize+=o;}function ye(e,t,r,o){let n;try{n=t.slice(r,r+o);}catch(t){throw Pe(e,t),t}me(e,n,0,o);}function ge(e,t){t.bytesFilled>0&&ye(e,t.buffer,t.byteOffset,t.bytesFilled),Ce(e);}function we(e,t){const r=t.elementSize,o=t.bytesFilled-t.bytesFilled%r,n=Math.min(e._queueTotalSize,t.byteLength-t.bytesFilled),a=t.bytesFilled+n,i=a-a%r;let l=n,s=!1;i>o&&(l=i-t.bytesFilled,s=!0);const u=e._queue;for(;l>0;){const r=u.peek(),o=Math.min(l,r.byteLength),n=t.byteOffset+t.bytesFilled;ie(t.buffer,n,r.buffer,r.byteOffset,o),r.byteLength===o?u.shift():(r.byteOffset+=o,r.byteLength-=o),e._queueTotalSize-=o,Se(e,o,t),l-=o;}return s}function Se(e,t,r){r.bytesFilled+=t;}function ve(e){0===e._queueTotalSize&&e._closeRequested?(Ee(e),Xt(e._controlledReadableByteStream)):be(e);}function Re(e){null!==e._byobRequest&&(e._byobRequest._associatedReadableByteStreamController=void 0,e._byobRequest._view=null,e._byobRequest=null);}function Te(e){for(;e._pendingPullIntos.length>0;){if(0===e._queueTotalSize)return;const t=e._pendingPullIntos.peek();we(e,t)&&(Ce(e),_e(e._controlledReadableByteStream,t));}}function qe(e,t){const r=e._pendingPullIntos.peek();Re(e);"closed"===e._controlledReadableByteStream._state?function(e,t){"none"===t.readerType&&Ce(e);const r=e._controlledReadableByteStream;if(Le(r))for(;ze(r)>0;)_e(r,Ce(e));}(e,r):function(e,t,r){if(Se(0,t,r),"none"===r.readerType)return ge(e,r),void Te(e);if(r.bytesFilled0){const t=r.byteOffset+r.bytesFilled;ye(e,r.buffer,t-o,o);}r.bytesFilled-=o,_e(e._controlledReadableByteStream,r),Te(e);}(e,t,r),be(e);}function Ce(e){return e._pendingPullIntos.shift()}function Ee(e){e._pullAlgorithm=void 0,e._cancelAlgorithm=void 0;}function Pe(e,t){const r=e._controlledReadableByteStream;"readable"===r._state&&(he(e),ce(e),Ee(e),Jt(r,t));}function We(e,t){const r=e._queue.shift();e._queueTotalSize-=r.byteLength,ve(e);const o=new Uint8Array(r.buffer,r.byteOffset,r.byteLength);t._chunkSteps(o);}function ke(e){const t=e._controlledReadableByteStream._state;return "errored"===t?null:"closed"===t?0:e._strategyHWM-e._queueTotalSize}function Oe(e,t,r){const o=Object.create(ReadableByteStreamController$1.prototype);let n,a,i;n=void 0!==t.start?()=>t.start(o):()=>{},a=void 0!==t.pull?()=>t.pull(o):()=>c(void 0),i=void 0!==t.cancel?e=>t.cancel(e):()=>c(void 0);const l=t.autoAllocateChunkSize;if(0===l)throw new TypeError("autoAllocateChunkSize must be greater than 0");!function(e,t,r,o,n,a,i){t._controlledReadableByteStream=e,t._pullAgain=!1,t._pulling=!1,t._byobRequest=null,t._queue=t._queueTotalSize=void 0,ce(t),t._closeRequested=!1,t._started=!1,t._strategyHWM=a,t._pullAlgorithm=o,t._cancelAlgorithm=n,t._autoAllocateChunkSize=i,t._pendingPullIntos=new S,e._readableStreamController=t,b(c(r()),(()=>(t._started=!0,be(t),null)),(e=>(Pe(t,e),null)));}(e,o,n,a,i,r,l);}function Be(e){return new TypeError(`ReadableStreamBYOBRequest.prototype.${e} can only be used on a ReadableStreamBYOBRequest`)}function Ae(e){return new TypeError(`ReadableByteStreamController.prototype.${e} can only be used on a ReadableByteStreamController`)}function je(e,t){e._reader._readIntoRequests.push(t);}function ze(e){return e._reader._readIntoRequests.length}function Le(e){const t=e._reader;return void 0!==t&&!!Fe(t)}Object.defineProperties(ReadableByteStreamController$1.prototype,{close:{enumerable:!0},enqueue:{enumerable:!0},error:{enumerable:!0},byobRequest:{enumerable:!0},desiredSize:{enumerable:!0}}),n(ReadableByteStreamController$1.prototype.close,"close"),n(ReadableByteStreamController$1.prototype.enqueue,"enqueue"),n(ReadableByteStreamController$1.prototype.error,"error"),"symbol"==typeof e.toStringTag&&Object.defineProperty(ReadableByteStreamController$1.prototype,e.toStringTag,{value:"ReadableByteStreamController",configurable:!0});class ReadableStreamBYOBReader$1{constructor(e){if($(e,1,"ReadableStreamBYOBReader"),V(e,"First parameter"),Ut(e))throw new TypeError("This stream has already been locked for exclusive reading by another reader");if(!de(e._readableStreamController))throw new TypeError("Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte source");E(this,e),this._readIntoRequests=new S;}get closed(){return Fe(this)?this._closedPromise:d(De("closed"))}cancel(e){return Fe(this)?void 0===this._ownerReadableStream?d(k("cancel")):P(this,e):d(De("cancel"))}read(e){if(!Fe(this))return d(De("read"));if(!ArrayBuffer.isView(e))return d(new TypeError("view must be an array buffer view"));if(0===e.byteLength)return d(new TypeError("view must have non-zero byteLength"));if(0===e.buffer.byteLength)return d(new TypeError("view's buffer must have non-zero byteLength"));if(e.buffer,void 0===this._ownerReadableStream)return d(k("read from"));let t,r;const o=u(((e,o)=>{t=e,r=o;}));return function(e,t,r){const o=e._ownerReadableStream;o._disturbed=!0,"errored"===o._state?r._errorSteps(o._storedError):function(e,t,r){const o=e._controlledReadableByteStream;let n=1;t.constructor!==DataView&&(n=t.constructor.BYTES_PER_ELEMENT);const a=t.constructor,i=t.buffer,l={buffer:i,bufferByteLength:i.byteLength,byteOffset:t.byteOffset,byteLength:t.byteLength,bytesFilled:0,elementSize:n,viewConstructor:a,readerType:"byob"};if(e._pendingPullIntos.length>0)return e._pendingPullIntos.push(l),void je(o,r);if("closed"!==o._state){if(e._queueTotalSize>0){if(we(e,l)){const t=pe(l);return ve(e),void r._chunkSteps(t)}if(e._closeRequested){const t=new TypeError("Insufficient bytes to fill elements in the given buffer");return Pe(e,t),void r._errorSteps(t)}}e._pendingPullIntos.push(l),je(o,r),be(e);}else {const e=new a(l.buffer,l.byteOffset,0);r._closeSteps(e);}}(o._readableStreamController,t,r);}(this,e,{_chunkSteps:e=>t({value:e,done:!1}),_closeSteps:e=>t({value:e,done:!0}),_errorSteps:e=>r(e)}),o}releaseLock(){if(!Fe(this))throw De("releaseLock");void 0!==this._ownerReadableStream&&function(e){W(e);const t=new TypeError("Reader was released");Ie(e,t);}(this);}}function Fe(e){return !!r(e)&&(!!Object.prototype.hasOwnProperty.call(e,"_readIntoRequests")&&e instanceof ReadableStreamBYOBReader$1)}function Ie(e,t){const r=e._readIntoRequests;e._readIntoRequests=new S,r.forEach((e=>{e._errorSteps(t);}));}function De(e){return new TypeError(`ReadableStreamBYOBReader.prototype.${e} can only be used on a ReadableStreamBYOBReader`)}function $e(e,t){const{highWaterMark:r}=e;if(void 0===r)return t;if(ae(r)||r<0)throw new RangeError("Invalid highWaterMark");return r}function Me(e){const{size:t}=e;return t||(()=>1)}function Ye(e,t){F(e,t);const r=null==e?void 0:e.highWaterMark,o=null==e?void 0:e.size;return {highWaterMark:void 0===r?void 0:Y(r),size:void 0===o?void 0:Qe(o,`${t} has member 'size' that`)}}function Qe(e,t){return I(e,t),t=>Y(e(t))}function Ne(e,t,r){return I(e,r),r=>w(e,t,[r])}function He(e,t,r){return I(e,r),()=>w(e,t,[])}function xe(e,t,r){return I(e,r),r=>g(e,t,[r])}function Ve(e,t,r){return I(e,r),(r,o)=>w(e,t,[r,o])}Object.defineProperties(ReadableStreamBYOBReader$1.prototype,{cancel:{enumerable:!0},read:{enumerable:!0},releaseLock:{enumerable:!0},closed:{enumerable:!0}}),n(ReadableStreamBYOBReader$1.prototype.cancel,"cancel"),n(ReadableStreamBYOBReader$1.prototype.read,"read"),n(ReadableStreamBYOBReader$1.prototype.releaseLock,"releaseLock"),"symbol"==typeof e.toStringTag&&Object.defineProperty(ReadableStreamBYOBReader$1.prototype,e.toStringTag,{value:"ReadableStreamBYOBReader",configurable:!0});const Ue="function"==typeof AbortController;class WritableStream$1{constructor(e={},t={}){void 0===e?e=null:D(e,"First parameter");const r=Ye(t,"Second parameter"),o=function(e,t){F(e,t);const r=null==e?void 0:e.abort,o=null==e?void 0:e.close,n=null==e?void 0:e.start,a=null==e?void 0:e.type,i=null==e?void 0:e.write;return {abort:void 0===r?void 0:Ne(r,e,`${t} has member 'abort' that`),close:void 0===o?void 0:He(o,e,`${t} has member 'close' that`),start:void 0===n?void 0:xe(n,e,`${t} has member 'start' that`),write:void 0===i?void 0:Ve(i,e,`${t} has member 'write' that`),type:a}}(e,"First parameter");var n;(n=this)._state="writable",n._storedError=void 0,n._writer=void 0,n._writableStreamController=void 0,n._writeRequests=new S,n._inFlightWriteRequest=void 0,n._closeRequest=void 0,n._inFlightCloseRequest=void 0,n._pendingAbortRequest=void 0,n._backpressure=!1;if(void 0!==o.type)throw new RangeError("Invalid type is specified");const a=Me(r);!function(e,t,r,o){const n=Object.create(WritableStreamDefaultController$1.prototype);let a,i,l,s;a=void 0!==t.start?()=>t.start(n):()=>{};i=void 0!==t.write?e=>t.write(e,n):()=>c(void 0);l=void 0!==t.close?()=>t.close():()=>c(void 0);s=void 0!==t.abort?e=>t.abort(e):()=>c(void 0);!function(e,t,r,o,n,a,i,l){t._controlledWritableStream=e,e._writableStreamController=t,t._queue=void 0,t._queueTotalSize=void 0,ce(t),t._abortReason=void 0,t._abortController=function(){if(Ue)return new AbortController}(),t._started=!1,t._strategySizeAlgorithm=l,t._strategyHWM=i,t._writeAlgorithm=o,t._closeAlgorithm=n,t._abortAlgorithm=a;const s=bt(t);nt(e,s);const u=r();b(c(u),(()=>(t._started=!0,dt(t),null)),(r=>(t._started=!0,Ze(e,r),null)));}(e,n,a,i,l,s,r,o);}(this,o,$e(r,1),a);}get locked(){if(!Ge(this))throw _t("locked");return Xe(this)}abort(e){return Ge(this)?Xe(this)?d(new TypeError("Cannot abort a stream that already has a writer")):Je(this,e):d(_t("abort"))}close(){return Ge(this)?Xe(this)?d(new TypeError("Cannot close a stream that already has a writer")):rt(this)?d(new TypeError("Cannot close an already-closing stream")):Ke(this):d(_t("close"))}getWriter(){if(!Ge(this))throw _t("getWriter");return new WritableStreamDefaultWriter$1(this)}}function Ge(e){return !!r(e)&&(!!Object.prototype.hasOwnProperty.call(e,"_writableStreamController")&&e instanceof WritableStream$1)}function Xe(e){return void 0!==e._writer}function Je(e,t){var r;if("closed"===e._state||"errored"===e._state)return c(void 0);e._writableStreamController._abortReason=t,null===(r=e._writableStreamController._abortController)||void 0===r||r.abort(t);const o=e._state;if("closed"===o||"errored"===o)return c(void 0);if(void 0!==e._pendingAbortRequest)return e._pendingAbortRequest._promise;let n=!1;"erroring"===o&&(n=!0,t=void 0);const a=u(((r,o)=>{e._pendingAbortRequest={_promise:void 0,_resolve:r,_reject:o,_reason:t,_wasAlreadyErroring:n};}));return e._pendingAbortRequest._promise=a,n||et(e,t),a}function Ke(e){const t=e._state;if("closed"===t||"errored"===t)return d(new TypeError(`The stream (in ${t} state) is not in the writable state and cannot be closed`));const r=u(((t,r)=>{const o={_resolve:t,_reject:r};e._closeRequest=o;})),o=e._writer;var n;return void 0!==o&&e._backpressure&&"writable"===t&&Et(o),ue(n=e._writableStreamController,lt,0),dt(n),r}function Ze(e,t){"writable"!==e._state?tt(e):et(e,t);}function et(e,t){const r=e._writableStreamController;e._state="erroring",e._storedError=t;const o=e._writer;void 0!==o&&it(o,t),!function(e){if(void 0===e._inFlightWriteRequest&&void 0===e._inFlightCloseRequest)return !1;return !0}(e)&&r._started&&tt(e);}function tt(e){e._state="errored",e._writableStreamController[R]();const t=e._storedError;if(e._writeRequests.forEach((e=>{e._reject(t);})),e._writeRequests=new S,void 0===e._pendingAbortRequest)return void ot(e);const r=e._pendingAbortRequest;if(e._pendingAbortRequest=void 0,r._wasAlreadyErroring)return r._reject(t),void ot(e);b(e._writableStreamController[v](r._reason),(()=>(r._resolve(),ot(e),null)),(t=>(r._reject(t),ot(e),null)));}function rt(e){return void 0!==e._closeRequest||void 0!==e._inFlightCloseRequest}function ot(e){void 0!==e._closeRequest&&(e._closeRequest._reject(e._storedError),e._closeRequest=void 0);const t=e._writer;void 0!==t&&St(t,e._storedError);}function nt(e,t){const r=e._writer;void 0!==r&&t!==e._backpressure&&(t?function(e){Rt(e);}(r):Et(r)),e._backpressure=t;}Object.defineProperties(WritableStream$1.prototype,{abort:{enumerable:!0},close:{enumerable:!0},getWriter:{enumerable:!0},locked:{enumerable:!0}}),n(WritableStream$1.prototype.abort,"abort"),n(WritableStream$1.prototype.close,"close"),n(WritableStream$1.prototype.getWriter,"getWriter"),"symbol"==typeof e.toStringTag&&Object.defineProperty(WritableStream$1.prototype,e.toStringTag,{value:"WritableStream",configurable:!0});class WritableStreamDefaultWriter$1{constructor(e){if($(e,1,"WritableStreamDefaultWriter"),function(e,t){if(!Ge(e))throw new TypeError(`${t} is not a WritableStream.`)}(e,"First parameter"),Xe(e))throw new TypeError("This stream has already been locked for exclusive writing by another writer");this._ownerWritableStream=e,e._writer=this;const t=e._state;if("writable"===t)!rt(e)&&e._backpressure?Rt(this):qt(this),gt(this);else if("erroring"===t)Tt(this,e._storedError),gt(this);else if("closed"===t)qt(this),gt(r=this),vt(r);else {const t=e._storedError;Tt(this,t),wt(this,t);}var r;}get closed(){return at(this)?this._closedPromise:d(mt("closed"))}get desiredSize(){if(!at(this))throw mt("desiredSize");if(void 0===this._ownerWritableStream)throw yt("desiredSize");return function(e){const t=e._ownerWritableStream,r=t._state;if("errored"===r||"erroring"===r)return null;if("closed"===r)return 0;return ct(t._writableStreamController)}(this)}get ready(){return at(this)?this._readyPromise:d(mt("ready"))}abort(e){return at(this)?void 0===this._ownerWritableStream?d(yt("abort")):function(e,t){return Je(e._ownerWritableStream,t)}(this,e):d(mt("abort"))}close(){if(!at(this))return d(mt("close"));const e=this._ownerWritableStream;return void 0===e?d(yt("close")):rt(e)?d(new TypeError("Cannot close an already-closing stream")):Ke(this._ownerWritableStream)}releaseLock(){if(!at(this))throw mt("releaseLock");void 0!==this._ownerWritableStream&&function(e){const t=e._ownerWritableStream,r=new TypeError("Writer was released and can no longer be used to monitor the stream's closedness");it(e,r),function(e,t){"pending"===e._closedPromiseState?St(e,t):function(e,t){wt(e,t);}(e,t);}(e,r),t._writer=void 0,e._ownerWritableStream=void 0;}(this);}write(e){return at(this)?void 0===this._ownerWritableStream?d(yt("write to")):function(e,t){const r=e._ownerWritableStream,o=r._writableStreamController,n=function(e,t){try{return e._strategySizeAlgorithm(t)}catch(t){return ft(e,t),1}}(o,t);if(r!==e._ownerWritableStream)return d(yt("write to"));const a=r._state;if("errored"===a)return d(r._storedError);if(rt(r)||"closed"===a)return d(new TypeError("The stream is closing or closed and cannot be written to"));if("erroring"===a)return d(r._storedError);const i=function(e){return u(((t,r)=>{const o={_resolve:t,_reject:r};e._writeRequests.push(o);}))}(r);return function(e,t,r){try{ue(e,t,r);}catch(t){return void ft(e,t)}const o=e._controlledWritableStream;if(!rt(o)&&"writable"===o._state){nt(o,bt(e));}dt(e);}(o,t,n),i}(this,e):d(mt("write"))}}function at(e){return !!r(e)&&(!!Object.prototype.hasOwnProperty.call(e,"_ownerWritableStream")&&e instanceof WritableStreamDefaultWriter$1)}function it(e,t){"pending"===e._readyPromiseState?Ct(e,t):function(e,t){Tt(e,t);}(e,t);}Object.defineProperties(WritableStreamDefaultWriter$1.prototype,{abort:{enumerable:!0},close:{enumerable:!0},releaseLock:{enumerable:!0},write:{enumerable:!0},closed:{enumerable:!0},desiredSize:{enumerable:!0},ready:{enumerable:!0}}),n(WritableStreamDefaultWriter$1.prototype.abort,"abort"),n(WritableStreamDefaultWriter$1.prototype.close,"close"),n(WritableStreamDefaultWriter$1.prototype.releaseLock,"releaseLock"),n(WritableStreamDefaultWriter$1.prototype.write,"write"),"symbol"==typeof e.toStringTag&&Object.defineProperty(WritableStreamDefaultWriter$1.prototype,e.toStringTag,{value:"WritableStreamDefaultWriter",configurable:!0});const lt={};class WritableStreamDefaultController$1{constructor(){throw new TypeError("Illegal constructor")}get abortReason(){if(!st(this))throw pt("abortReason");return this._abortReason}get signal(){if(!st(this))throw pt("signal");if(void 0===this._abortController)throw new TypeError("WritableStreamDefaultController.prototype.signal is not supported");return this._abortController.signal}error(e){if(!st(this))throw pt("error");"writable"===this._controlledWritableStream._state&&ht(this,e);}[v](e){const t=this._abortAlgorithm(e);return ut(this),t}[R](){ce(this);}}function st(e){return !!r(e)&&(!!Object.prototype.hasOwnProperty.call(e,"_controlledWritableStream")&&e instanceof WritableStreamDefaultController$1)}function ut(e){e._writeAlgorithm=void 0,e._closeAlgorithm=void 0,e._abortAlgorithm=void 0,e._strategySizeAlgorithm=void 0;}function ct(e){return e._strategyHWM-e._queueTotalSize}function dt(e){const t=e._controlledWritableStream;if(!e._started)return;if(void 0!==t._inFlightWriteRequest)return;if("erroring"===t._state)return void tt(t);if(0===e._queue.length)return;const r=e._queue.peek().value;r===lt?function(e){const t=e._controlledWritableStream;((function(e){e._inFlightCloseRequest=e._closeRequest,e._closeRequest=void 0;}))(t),se(e);const r=e._closeAlgorithm();ut(e),b(r,(()=>(function(e){e._inFlightCloseRequest._resolve(void 0),e._inFlightCloseRequest=void 0,"erroring"===e._state&&(e._storedError=void 0,void 0!==e._pendingAbortRequest&&(e._pendingAbortRequest._resolve(),e._pendingAbortRequest=void 0)),e._state="closed";const t=e._writer;void 0!==t&&vt(t);}(t),null)),(e=>(function(e,t){e._inFlightCloseRequest._reject(t),e._inFlightCloseRequest=void 0,void 0!==e._pendingAbortRequest&&(e._pendingAbortRequest._reject(t),e._pendingAbortRequest=void 0),Ze(e,t);}(t,e),null)));}(e):function(e,t){const r=e._controlledWritableStream;!function(e){e._inFlightWriteRequest=e._writeRequests.shift();}(r);b(e._writeAlgorithm(t),(()=>{!function(e){e._inFlightWriteRequest._resolve(void 0),e._inFlightWriteRequest=void 0;}(r);const t=r._state;if(se(e),!rt(r)&&"writable"===t){const t=bt(e);nt(r,t);}return dt(e),null}),(t=>("writable"===r._state&&ut(e),function(e,t){e._inFlightWriteRequest._reject(t),e._inFlightWriteRequest=void 0,Ze(e,t);}(r,t),null)));}(e,r);}function ft(e,t){"writable"===e._controlledWritableStream._state&&ht(e,t);}function bt(e){return ct(e)<=0}function ht(e,t){const r=e._controlledWritableStream;ut(e),et(r,t);}function _t(e){return new TypeError(`WritableStream.prototype.${e} can only be used on a WritableStream`)}function pt(e){return new TypeError(`WritableStreamDefaultController.prototype.${e} can only be used on a WritableStreamDefaultController`)}function mt(e){return new TypeError(`WritableStreamDefaultWriter.prototype.${e} can only be used on a WritableStreamDefaultWriter`)}function yt(e){return new TypeError("Cannot "+e+" a stream using a released writer")}function gt(e){e._closedPromise=u(((t,r)=>{e._closedPromise_resolve=t,e._closedPromise_reject=r,e._closedPromiseState="pending";}));}function wt(e,t){gt(e),St(e,t);}function St(e,t){void 0!==e._closedPromise_reject&&(m(e._closedPromise),e._closedPromise_reject(t),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0,e._closedPromiseState="rejected");}function vt(e){void 0!==e._closedPromise_resolve&&(e._closedPromise_resolve(void 0),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0,e._closedPromiseState="resolved");}function Rt(e){e._readyPromise=u(((t,r)=>{e._readyPromise_resolve=t,e._readyPromise_reject=r;})),e._readyPromiseState="pending";}function Tt(e,t){Rt(e),Ct(e,t);}function qt(e){Rt(e),Et(e);}function Ct(e,t){void 0!==e._readyPromise_reject&&(m(e._readyPromise),e._readyPromise_reject(t),e._readyPromise_resolve=void 0,e._readyPromise_reject=void 0,e._readyPromiseState="rejected");}function Et(e){void 0!==e._readyPromise_resolve&&(e._readyPromise_resolve(void 0),e._readyPromise_resolve=void 0,e._readyPromise_reject=void 0,e._readyPromiseState="fulfilled");}Object.defineProperties(WritableStreamDefaultController$1.prototype,{abortReason:{enumerable:!0},signal:{enumerable:!0},error:{enumerable:!0}}),"symbol"==typeof e.toStringTag&&Object.defineProperty(WritableStreamDefaultController$1.prototype,e.toStringTag,{value:"WritableStreamDefaultController",configurable:!0});const Pt="undefined"!=typeof DOMException?DOMException:void 0;const Wt=function(e){if("function"!=typeof e&&"object"!=typeof e)return !1;try{return new e,!0}catch(e){return !1}}(Pt)?Pt:function(){const e=function(e,t){this.message=e||"",this.name=t||"Error",Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor);};return e.prototype=Object.create(Error.prototype),Object.defineProperty(e.prototype,"constructor",{value:e,writable:!0,configurable:!0}),e}();function kt(e,t,r,o,n,a){const i=e.getReader(),l=t.getWriter();Vt(e)&&(e._disturbed=!0);let s,_,g,w=!1,S=!1,v="readable",R="writable",T=!1,q=!1;const C=u((e=>{g=e;}));let E=Promise.resolve(void 0);return u(((P,W)=>{let k;function O(){if(w)return;const e=u(((e,t)=>{!function r(o){o?e():f(function(){if(w)return c(!0);return f(l.ready,(()=>f(i.read(),(e=>!!e.done||(E=l.write(e.value),m(E),!1)))))}(),r,t);}(!1);}));m(e);}function B(){return v="closed",r?L():z((()=>(Ge(t)&&(T=rt(t),R=t._state),T||"closed"===R?c(void 0):"erroring"===R||"errored"===R?d(_):(T=!0,l.close()))),!1,void 0),null}function A(e){return w||(v="errored",s=e,o?L(!0,e):z((()=>l.abort(e)),!0,e)),null}function j(e){return S||(R="errored",_=e,n?L(!0,e):z((()=>i.cancel(e)),!0,e)),null}if(void 0!==a&&(k=()=>{const e=void 0!==a.reason?a.reason:new Wt("Aborted","AbortError"),t=[];o||t.push((()=>"writable"===R?l.abort(e):c(void 0))),n||t.push((()=>"readable"===v?i.cancel(e):c(void 0))),z((()=>Promise.all(t.map((e=>e())))),!0,e);},a.aborted?k():a.addEventListener("abort",k)),Vt(e)&&(v=e._state,s=e._storedError),Ge(t)&&(R=t._state,_=t._storedError,T=rt(t)),Vt(e)&&Ge(t)&&(q=!0,g()),"errored"===v)A(s);else if("erroring"===R||"errored"===R)j(_);else if("closed"===v)B();else if(T||"closed"===R){const e=new TypeError("the destination writable stream closed before all data could be piped to it");n?L(!0,e):z((()=>i.cancel(e)),!0,e);}function z(e,t,r){function o(){return "writable"!==R||T?n():h(function(){let e;return c(function t(){if(e!==E)return e=E,p(E,t,t)}())}(),n),null}function n(){return e?b(e(),(()=>F(t,r)),(e=>F(!0,e))):F(t,r),null}w||(w=!0,q?o():h(C,o));}function L(e,t){z(void 0,e,t);}function F(e,t){return S=!0,l.releaseLock(),i.releaseLock(),void 0!==a&&a.removeEventListener("abort",k),e?W(t):P(void 0),null}w||(b(i.closed,B,A),b(l.closed,(function(){return S||(R="closed"),null}),j)),q?O():y((()=>{q=!0,g(),O();}));}))}function Ot(e,t){return function(e){try{return e.getReader({mode:"byob"}).releaseLock(),!0}catch(e){return !1}}(e)?function(e){let t,r,o,n,a,i=e.getReader(),l=!1,s=!1,d=!1,f=!1,h=!1,p=!1;const m=u((e=>{a=e;}));function y(e){_(e.closed,(t=>(e!==i||(o.error(t),n.error(t),h&&p||a(void 0)),null)));}function g(){l&&(i.releaseLock(),i=e.getReader(),y(i),l=!1),b(i.read(),(e=>{var t,r;if(d=!1,f=!1,e.done)return h||o.close(),p||n.close(),null===(t=o.byobRequest)||void 0===t||t.respond(0),null===(r=n.byobRequest)||void 0===r||r.respond(0),h&&p||a(void 0),null;const l=e.value,u=l;let c=l;if(!h&&!p)try{c=le(l);}catch(e){return o.error(e),n.error(e),a(i.cancel(e)),null}return h||o.enqueue(u),p||n.enqueue(c),s=!1,d?S():f&&v(),null}),(()=>(s=!1,null)));}function w(t,r){l||(i.releaseLock(),i=e.getReader({mode:"byob"}),y(i),l=!0);const u=r?n:o,c=r?o:n;b(i.read(t),(e=>{var t;d=!1,f=!1;const o=r?p:h,n=r?h:p;if(e.done){o||u.close(),n||c.close();const r=e.value;return void 0!==r&&(o||u.byobRequest.respondWithNewView(r),n||null===(t=c.byobRequest)||void 0===t||t.respond(0)),o&&n||a(void 0),null}const l=e.value;if(n)o||u.byobRequest.respondWithNewView(l);else {let e;try{e=le(l);}catch(e){return u.error(e),c.error(e),a(i.cancel(e)),null}o||u.byobRequest.respondWithNewView(l),c.enqueue(e);}return s=!1,d?S():f&&v(),null}),(()=>(s=!1,null)));}function S(){if(s)return d=!0,c(void 0);s=!0;const e=o.byobRequest;return null===e?g():w(e.view,!1),c(void 0)}function v(){if(s)return f=!0,c(void 0);s=!0;const e=n.byobRequest;return null===e?g():w(e.view,!0),c(void 0)}function R(e){if(h=!0,t=e,p){const e=[t,r],o=i.cancel(e);a(o);}return m}function T(e){if(p=!0,r=e,h){const e=[t,r],o=i.cancel(e);a(o);}return m}const q=new ReadableStream$2({type:"bytes",start(e){o=e;},pull:S,cancel:R}),C=new ReadableStream$2({type:"bytes",start(e){n=e;},pull:v,cancel:T});return y(i),[q,C]}(e):function(e,t){const r=e.getReader();let o,n,a,i,l,s=!1,d=!1,f=!1,h=!1;const p=u((e=>{l=e;}));function m(){return s?(d=!0,c(void 0)):(s=!0,b(r.read(),(e=>{if(d=!1,e.done)return f||a.close(),h||i.close(),f&&h||l(void 0),null;const t=e.value,r=t,o=t;return f||a.enqueue(r),h||i.enqueue(o),s=!1,d&&m(),null}),(()=>(s=!1,null))),c(void 0))}function y(e){if(f=!0,o=e,h){const e=[o,n],t=r.cancel(e);l(t);}return p}function g(e){if(h=!0,n=e,f){const e=[o,n],t=r.cancel(e);l(t);}return p}const w=new ReadableStream$2({start(e){a=e;},pull:m,cancel:y}),S=new ReadableStream$2({start(e){i=e;},pull:m,cancel:g});return _(r.closed,(e=>(a.error(e),i.error(e),f&&h||l(void 0),null))),[w,S]}(e)}class ReadableStreamDefaultController$1{constructor(){throw new TypeError("Illegal constructor")}get desiredSize(){if(!Bt(this))throw Dt("desiredSize");return Lt(this)}close(){if(!Bt(this))throw Dt("close");if(!Ft(this))throw new TypeError("The stream is not in a state that permits close");!function(e){if(!Ft(e))return;const t=e._controlledReadableStream;e._closeRequested=!0,0===e._queue.length&&(jt(e),Xt(t));}(this);}enqueue(e){if(!Bt(this))throw Dt("enqueue");if(!Ft(this))throw new TypeError("The stream is not in a state that permits enqueue");return function(e,t){if(!Ft(e))return;const r=e._controlledReadableStream;if(Ut(r)&&X(r)>0)G(r,t,!1);else {let r;try{r=e._strategySizeAlgorithm(t);}catch(t){throw zt(e,t),t}try{ue(e,t,r);}catch(t){throw zt(e,t),t}}At(e);}(this,e)}error(e){if(!Bt(this))throw Dt("error");zt(this,e);}[T](e){ce(this);const t=this._cancelAlgorithm(e);return jt(this),t}[q](e){const t=this._controlledReadableStream;if(this._queue.length>0){const r=se(this);this._closeRequested&&0===this._queue.length?(jt(this),Xt(t)):At(this),e._chunkSteps(r);}else U(t,e),At(this);}[C](){}}function Bt(e){return !!r(e)&&(!!Object.prototype.hasOwnProperty.call(e,"_controlledReadableStream")&&e instanceof ReadableStreamDefaultController$1)}function At(e){const t=function(e){const t=e._controlledReadableStream;if(!Ft(e))return !1;if(!e._started)return !1;if(Ut(t)&&X(t)>0)return !0;if(Lt(e)>0)return !0;return !1}(e);if(!t)return;if(e._pulling)return void(e._pullAgain=!0);e._pulling=!0;b(e._pullAlgorithm(),(()=>(e._pulling=!1,e._pullAgain&&(e._pullAgain=!1,At(e)),null)),(t=>(zt(e,t),null)));}function jt(e){e._pullAlgorithm=void 0,e._cancelAlgorithm=void 0,e._strategySizeAlgorithm=void 0;}function zt(e,t){const r=e._controlledReadableStream;"readable"===r._state&&(ce(e),jt(e),Jt(r,t));}function Lt(e){const t=e._controlledReadableStream._state;return "errored"===t?null:"closed"===t?0:e._strategyHWM-e._queueTotalSize}function Ft(e){return !e._closeRequested&&"readable"===e._controlledReadableStream._state}function It(e,t,r,o){const n=Object.create(ReadableStreamDefaultController$1.prototype);let a,i,l;a=void 0!==t.start?()=>t.start(n):()=>{},i=void 0!==t.pull?()=>t.pull(n):()=>c(void 0),l=void 0!==t.cancel?e=>t.cancel(e):()=>c(void 0),function(e,t,r,o,n,a,i){t._controlledReadableStream=e,t._queue=void 0,t._queueTotalSize=void 0,ce(t),t._started=!1,t._closeRequested=!1,t._pullAgain=!1,t._pulling=!1,t._strategySizeAlgorithm=i,t._strategyHWM=a,t._pullAlgorithm=o,t._cancelAlgorithm=n,e._readableStreamController=t,b(c(r()),(()=>(t._started=!0,At(t),null)),(e=>(zt(t,e),null)));}(e,n,a,i,l,r,o);}function Dt(e){return new TypeError(`ReadableStreamDefaultController.prototype.${e} can only be used on a ReadableStreamDefaultController`)}function $t(e,t,r){return I(e,r),r=>w(e,t,[r])}function Mt(e,t,r){return I(e,r),r=>w(e,t,[r])}function Yt(e,t,r){return I(e,r),r=>g(e,t,[r])}function Qt(e,t){if("bytes"!==(e=`${e}`))throw new TypeError(`${t} '${e}' is not a valid enumeration value for ReadableStreamType`);return e}function Nt(e,t){if("byob"!==(e=`${e}`))throw new TypeError(`${t} '${e}' is not a valid enumeration value for ReadableStreamReaderMode`);return e}function Ht(e,t){F(e,t);const r=null==e?void 0:e.preventAbort,o=null==e?void 0:e.preventCancel,n=null==e?void 0:e.preventClose,a=null==e?void 0:e.signal;return void 0!==a&&function(e,t){if(!function(e){if("object"!=typeof e||null===e)return !1;try{return "boolean"==typeof e.aborted}catch(e){return !1}}(e))throw new TypeError(`${t} is not an AbortSignal.`)}(a,`${t} has member 'signal' that`),{preventAbort:Boolean(r),preventCancel:Boolean(o),preventClose:Boolean(n),signal:a}}function xt(e,t){F(e,t);const r=null==e?void 0:e.readable;M(r,"readable","ReadableWritablePair"),function(e,t){if(!H(e))throw new TypeError(`${t} is not a ReadableStream.`)}(r,`${t} has member 'readable' that`);const o=null==e?void 0:e.writable;return M(o,"writable","ReadableWritablePair"),function(e,t){if(!x(e))throw new TypeError(`${t} is not a WritableStream.`)}(o,`${t} has member 'writable' that`),{readable:r,writable:o}}Object.defineProperties(ReadableStreamDefaultController$1.prototype,{close:{enumerable:!0},enqueue:{enumerable:!0},error:{enumerable:!0},desiredSize:{enumerable:!0}}),n(ReadableStreamDefaultController$1.prototype.close,"close"),n(ReadableStreamDefaultController$1.prototype.enqueue,"enqueue"),n(ReadableStreamDefaultController$1.prototype.error,"error"),"symbol"==typeof e.toStringTag&&Object.defineProperty(ReadableStreamDefaultController$1.prototype,e.toStringTag,{value:"ReadableStreamDefaultController",configurable:!0});class ReadableStream$2{constructor(e={},t={}){void 0===e?e=null:D(e,"First parameter");const r=Ye(t,"Second parameter"),o=function(e,t){F(e,t);const r=e,o=null==r?void 0:r.autoAllocateChunkSize,n=null==r?void 0:r.cancel,a=null==r?void 0:r.pull,i=null==r?void 0:r.start,l=null==r?void 0:r.type;return {autoAllocateChunkSize:void 0===o?void 0:N(o,`${t} has member 'autoAllocateChunkSize' that`),cancel:void 0===n?void 0:$t(n,r,`${t} has member 'cancel' that`),pull:void 0===a?void 0:Mt(a,r,`${t} has member 'pull' that`),start:void 0===i?void 0:Yt(i,r,`${t} has member 'start' that`),type:void 0===l?void 0:Qt(l,`${t} has member 'type' that`)}}(e,"First parameter");var n;if((n=this)._state="readable",n._reader=void 0,n._storedError=void 0,n._disturbed=!1,"bytes"===o.type){if(void 0!==r.size)throw new RangeError("The strategy for a byte stream cannot have a size function");Oe(this,o,$e(r,0));}else {const e=Me(r);It(this,o,$e(r,1),e);}}get locked(){if(!Vt(this))throw Kt("locked");return Ut(this)}cancel(e){return Vt(this)?Ut(this)?d(new TypeError("Cannot cancel a stream that already has a reader")):Gt(this,e):d(Kt("cancel"))}getReader(e){if(!Vt(this))throw Kt("getReader");return void 0===function(e,t){F(e,t);const r=null==e?void 0:e.mode;return {mode:void 0===r?void 0:Nt(r,`${t} has member 'mode' that`)}}(e,"First parameter").mode?new ReadableStreamDefaultReader$1(this):function(e){return new ReadableStreamBYOBReader$1(e)}(this)}pipeThrough(e,t={}){if(!H(this))throw Kt("pipeThrough");$(e,1,"pipeThrough");const r=xt(e,"First parameter"),o=Ht(t,"Second parameter");if(this.locked)throw new TypeError("ReadableStream.prototype.pipeThrough cannot be used on a locked ReadableStream");if(r.writable.locked)throw new TypeError("ReadableStream.prototype.pipeThrough cannot be used on a locked WritableStream");return m(kt(this,r.writable,o.preventClose,o.preventAbort,o.preventCancel,o.signal)),r.readable}pipeTo(e,t={}){if(!H(this))return d(Kt("pipeTo"));if(void 0===e)return d("Parameter 1 is required in 'pipeTo'.");if(!x(e))return d(new TypeError("ReadableStream.prototype.pipeTo's first argument must be a WritableStream"));let r;try{r=Ht(t,"Second parameter");}catch(e){return d(e)}return this.locked?d(new TypeError("ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream")):e.locked?d(new TypeError("ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream")):kt(this,e,r.preventClose,r.preventAbort,r.preventCancel,r.signal)}tee(){if(!H(this))throw Kt("tee");if(this.locked)throw new TypeError("Cannot tee a stream that already has a reader");return Ot(this)}values(e){if(!H(this))throw Kt("values");return function(e,t){const r=e.getReader(),o=new te(r,t),n=Object.create(re);return n._asyncIteratorImpl=o,n}(this,function(e,t){F(e,t);const r=null==e?void 0:e.preventCancel;return {preventCancel:Boolean(r)}}(e,"First parameter").preventCancel)}}function Vt(e){return !!r(e)&&(!!Object.prototype.hasOwnProperty.call(e,"_readableStreamController")&&e instanceof ReadableStream$2)}function Ut(e){return void 0!==e._reader}function Gt(e,r){if(e._disturbed=!0,"closed"===e._state)return c(void 0);if("errored"===e._state)return d(e._storedError);Xt(e);const o=e._reader;if(void 0!==o&&Fe(o)){const e=o._readIntoRequests;o._readIntoRequests=new S,e.forEach((e=>{e._closeSteps(void 0);}));}return p(e._readableStreamController[T](r),t)}function Xt(e){e._state="closed";const t=e._reader;if(void 0!==t&&(j(t),K(t))){const e=t._readRequests;t._readRequests=new S,e.forEach((e=>{e._closeSteps();}));}}function Jt(e,t){e._state="errored",e._storedError=t;const r=e._reader;void 0!==r&&(A(r,t),K(r)?Z(r,t):Ie(r,t));}function Kt(e){return new TypeError(`ReadableStream.prototype.${e} can only be used on a ReadableStream`)}function Zt(e,t){F(e,t);const r=null==e?void 0:e.highWaterMark;return M(r,"highWaterMark","QueuingStrategyInit"),{highWaterMark:Y(r)}}Object.defineProperties(ReadableStream$2.prototype,{cancel:{enumerable:!0},getReader:{enumerable:!0},pipeThrough:{enumerable:!0},pipeTo:{enumerable:!0},tee:{enumerable:!0},values:{enumerable:!0},locked:{enumerable:!0}}),n(ReadableStream$2.prototype.cancel,"cancel"),n(ReadableStream$2.prototype.getReader,"getReader"),n(ReadableStream$2.prototype.pipeThrough,"pipeThrough"),n(ReadableStream$2.prototype.pipeTo,"pipeTo"),n(ReadableStream$2.prototype.tee,"tee"),n(ReadableStream$2.prototype.values,"values"),"symbol"==typeof e.toStringTag&&Object.defineProperty(ReadableStream$2.prototype,e.toStringTag,{value:"ReadableStream",configurable:!0}),"symbol"==typeof e.asyncIterator&&Object.defineProperty(ReadableStream$2.prototype,e.asyncIterator,{value:ReadableStream$2.prototype.values,writable:!0,configurable:!0});const er=e=>e.byteLength;n(er,"size");class ByteLengthQueuingStrategy$1{constructor(e){$(e,1,"ByteLengthQueuingStrategy"),e=Zt(e,"First parameter"),this._byteLengthQueuingStrategyHighWaterMark=e.highWaterMark;}get highWaterMark(){if(!rr(this))throw tr("highWaterMark");return this._byteLengthQueuingStrategyHighWaterMark}get size(){if(!rr(this))throw tr("size");return er}}function tr(e){return new TypeError(`ByteLengthQueuingStrategy.prototype.${e} can only be used on a ByteLengthQueuingStrategy`)}function rr(e){return !!r(e)&&(!!Object.prototype.hasOwnProperty.call(e,"_byteLengthQueuingStrategyHighWaterMark")&&e instanceof ByteLengthQueuingStrategy$1)}Object.defineProperties(ByteLengthQueuingStrategy$1.prototype,{highWaterMark:{enumerable:!0},size:{enumerable:!0}}),"symbol"==typeof e.toStringTag&&Object.defineProperty(ByteLengthQueuingStrategy$1.prototype,e.toStringTag,{value:"ByteLengthQueuingStrategy",configurable:!0});const or=()=>1;n(or,"size");class CountQueuingStrategy$1{constructor(e){$(e,1,"CountQueuingStrategy"),e=Zt(e,"First parameter"),this._countQueuingStrategyHighWaterMark=e.highWaterMark;}get highWaterMark(){if(!ar(this))throw nr("highWaterMark");return this._countQueuingStrategyHighWaterMark}get size(){if(!ar(this))throw nr("size");return or}}function nr(e){return new TypeError(`CountQueuingStrategy.prototype.${e} can only be used on a CountQueuingStrategy`)}function ar(e){return !!r(e)&&(!!Object.prototype.hasOwnProperty.call(e,"_countQueuingStrategyHighWaterMark")&&e instanceof CountQueuingStrategy$1)}function ir(e,t,r){return I(e,r),r=>w(e,t,[r])}function lr(e,t,r){return I(e,r),r=>g(e,t,[r])}function sr(e,t,r){return I(e,r),(r,o)=>w(e,t,[r,o])}Object.defineProperties(CountQueuingStrategy$1.prototype,{highWaterMark:{enumerable:!0},size:{enumerable:!0}}),"symbol"==typeof e.toStringTag&&Object.defineProperty(CountQueuingStrategy$1.prototype,e.toStringTag,{value:"CountQueuingStrategy",configurable:!0});class TransformStream$1{constructor(e={},t={},r={}){void 0===e&&(e=null);const o=Ye(t,"Second parameter"),n=Ye(r,"Third parameter"),a=function(e,t){F(e,t);const r=null==e?void 0:e.flush,o=null==e?void 0:e.readableType,n=null==e?void 0:e.start,a=null==e?void 0:e.transform,i=null==e?void 0:e.writableType;return {flush:void 0===r?void 0:ir(r,e,`${t} has member 'flush' that`),readableType:o,start:void 0===n?void 0:lr(n,e,`${t} has member 'start' that`),transform:void 0===a?void 0:sr(a,e,`${t} has member 'transform' that`),writableType:i}}(e,"First parameter");if(void 0!==a.readableType)throw new RangeError("Invalid readableType specified");if(void 0!==a.writableType)throw new RangeError("Invalid writableType specified");const i=$e(n,0),l=Me(n),s=$e(o,1),f=Me(o);let b;!function(e,t,r,o,n,a){function i(){return t}function l(t){return function(e,t){const r=e._transformStreamController;if(e._backpressure){return p(e._backpressureChangePromise,(()=>{if("erroring"===(Ge(e._writable)?e._writable._state:e._writableState))throw Ge(e._writable)?e._writable._storedError:e._writableStoredError;return pr(r,t)}))}return pr(r,t)}(e,t)}function s(t){return function(e,t){return cr(e,t),c(void 0)}(e,t)}function u(){return function(e){const t=e._transformStreamController,r=t._flushAlgorithm();return hr(t),p(r,(()=>{if("errored"===e._readableState)throw e._readableStoredError;gr(e)&&wr(e);}),(t=>{throw cr(e,t),e._readableStoredError}))}(e)}function d(){return function(e){return fr(e,!1),e._backpressureChangePromise}(e)}function f(t){return dr(e,t),c(void 0)}e._writableState="writable",e._writableStoredError=void 0,e._writableHasInFlightOperation=!1,e._writableStarted=!1,e._writable=function(e,t,r,o,n,a,i){return new WritableStream$1({start(r){e._writableController=r;try{const t=r.signal;void 0!==t&&t.addEventListener("abort",(()=>{"writable"===e._writableState&&(e._writableState="erroring",t.reason&&(e._writableStoredError=t.reason));}));}catch(e){}return p(t(),(()=>(e._writableStarted=!0,Cr(e),null)),(t=>{throw e._writableStarted=!0,Rr(e,t),t}))},write:t=>(function(e){e._writableHasInFlightOperation=!0;}(e),p(r(t),(()=>(function(e){e._writableHasInFlightOperation=!1;}(e),Cr(e),null)),(t=>{throw function(e,t){e._writableHasInFlightOperation=!1,Rr(e,t);}(e,t),t}))),close:()=>(function(e){e._writableHasInFlightOperation=!0;}(e),p(o(),(()=>(function(e){e._writableHasInFlightOperation=!1;"erroring"===e._writableState&&(e._writableStoredError=void 0);e._writableState="closed";}(e),null)),(t=>{throw function(e,t){e._writableHasInFlightOperation=!1,e._writableState,Rr(e,t);}(e,t),t}))),abort:t=>(e._writableState="errored",e._writableStoredError=t,n(t))},{highWaterMark:a,size:i})}(e,i,l,u,s,r,o),e._readableState="readable",e._readableStoredError=void 0,e._readableCloseRequested=!1,e._readablePulling=!1,e._readable=function(e,t,r,o,n,a){return new ReadableStream$2({start:r=>(e._readableController=r,t().catch((t=>{Sr(e,t);}))),pull:()=>(e._readablePulling=!0,r().catch((t=>{Sr(e,t);}))),cancel:t=>(e._readableState="closed",o(t))},{highWaterMark:n,size:a})}(e,i,d,f,n,a),e._backpressure=void 0,e._backpressureChangePromise=void 0,e._backpressureChangePromise_resolve=void 0,fr(e,!0),e._transformStreamController=void 0;}(this,u((e=>{b=e;})),s,f,i,l),function(e,t){const r=Object.create(TransformStreamDefaultController$1.prototype);let o,n;o=void 0!==t.transform?e=>t.transform(e,r):e=>{try{return _r(r,e),c(void 0)}catch(e){return d(e)}};n=void 0!==t.flush?()=>t.flush(r):()=>c(void 0);!function(e,t,r,o){t._controlledTransformStream=e,e._transformStreamController=t,t._transformAlgorithm=r,t._flushAlgorithm=o;}(e,r,o,n);}(this,a),void 0!==a.start?b(a.start(this._transformStreamController)):b(void 0);}get readable(){if(!ur(this))throw yr("readable");return this._readable}get writable(){if(!ur(this))throw yr("writable");return this._writable}}function ur(e){return !!r(e)&&(!!Object.prototype.hasOwnProperty.call(e,"_transformStreamController")&&e instanceof TransformStream$1)}function cr(e,t){Sr(e,t),dr(e,t);}function dr(e,t){hr(e._transformStreamController),function(e,t){e._writableController.error(t);"writable"===e._writableState&&Tr(e,t);}(e,t),e._backpressure&&fr(e,!1);}function fr(e,t){void 0!==e._backpressureChangePromise&&e._backpressureChangePromise_resolve(),e._backpressureChangePromise=u((t=>{e._backpressureChangePromise_resolve=t;})),e._backpressure=t;}Object.defineProperties(TransformStream$1.prototype,{readable:{enumerable:!0},writable:{enumerable:!0}}),"symbol"==typeof e.toStringTag&&Object.defineProperty(TransformStream$1.prototype,e.toStringTag,{value:"TransformStream",configurable:!0});class TransformStreamDefaultController$1{constructor(){throw new TypeError("Illegal constructor")}get desiredSize(){if(!br(this))throw mr("desiredSize");return vr(this._controlledTransformStream)}enqueue(e){if(!br(this))throw mr("enqueue");_r(this,e);}error(e){if(!br(this))throw mr("error");var t;t=e,cr(this._controlledTransformStream,t);}terminate(){if(!br(this))throw mr("terminate");!function(e){const t=e._controlledTransformStream;gr(t)&&wr(t);const r=new TypeError("TransformStream terminated");dr(t,r);}(this);}}function br(e){return !!r(e)&&(!!Object.prototype.hasOwnProperty.call(e,"_controlledTransformStream")&&e instanceof TransformStreamDefaultController$1)}function hr(e){e._transformAlgorithm=void 0,e._flushAlgorithm=void 0;}function _r(e,t){const r=e._controlledTransformStream;if(!gr(r))throw new TypeError("Readable side is not in a state that permits enqueue");try{!function(e,t){e._readablePulling=!1;try{e._readableController.enqueue(t);}catch(t){throw Sr(e,t),t}}(r,t);}catch(e){throw dr(r,e),r._readableStoredError}const o=function(e){return !function(e){if(!gr(e))return !1;if(e._readablePulling)return !0;if(vr(e)>0)return !0;return !1}(e)}(r);o!==r._backpressure&&fr(r,!0);}function pr(e,t){return p(e._transformAlgorithm(t),void 0,(t=>{throw cr(e._controlledTransformStream,t),t}))}function mr(e){return new TypeError(`TransformStreamDefaultController.prototype.${e} can only be used on a TransformStreamDefaultController`)}function yr(e){return new TypeError(`TransformStream.prototype.${e} can only be used on a TransformStream`)}function gr(e){return !e._readableCloseRequested&&"readable"===e._readableState}function wr(e){e._readableState="closed",e._readableCloseRequested=!0,e._readableController.close();}function Sr(e,t){"readable"===e._readableState&&(e._readableState="errored",e._readableStoredError=t),e._readableController.error(t);}function vr(e){return e._readableController.desiredSize}function Rr(e,t){"writable"!==e._writableState?qr(e):Tr(e,t);}function Tr(e,t){e._writableState="erroring",e._writableStoredError=t,!function(e){return e._writableHasInFlightOperation}(e)&&e._writableStarted&&qr(e);}function qr(e){e._writableState="errored";}function Cr(e){"erroring"===e._writableState&&qr(e);}Object.defineProperties(TransformStreamDefaultController$1.prototype,{enqueue:{enumerable:!0},error:{enumerable:!0},terminate:{enumerable:!0},desiredSize:{enumerable:!0}}),n(TransformStreamDefaultController$1.prototype.enqueue,"enqueue"),n(TransformStreamDefaultController$1.prototype.error,"error"),n(TransformStreamDefaultController$1.prototype.terminate,"terminate"),"symbol"==typeof e.toStringTag&&Object.defineProperty(TransformStreamDefaultController$1.prototype,e.toStringTag,{value:"TransformStreamDefaultController",configurable:!0}); - -const isFunction$1 = (value) => (typeof value === "function"); - -/*! Based on fetch-blob. MIT License. Jimmy Wärting & David Frank */ -const CHUNK_SIZE = 65536; -async function* clonePart(part) { - const end = part.byteOffset + part.byteLength; - let position = part.byteOffset; - while (position !== end) { - const size = Math.min(end - position, CHUNK_SIZE); - const chunk = part.buffer.slice(position, position + size); - position += chunk.byteLength; - yield new Uint8Array(chunk); - } -} -async function* consumeNodeBlob(blob) { - let position = 0; - while (position !== blob.size) { - const chunk = blob.slice(position, Math.min(blob.size, position + CHUNK_SIZE)); - const buffer = await chunk.arrayBuffer(); - position += buffer.byteLength; - yield new Uint8Array(buffer); - } -} -async function* consumeBlobParts(parts, clone = false) { - for (const part of parts) { - if (ArrayBuffer.isView(part)) { - if (clone) { - yield* clonePart(part); - } - else { - yield part; - } - } - else if (isFunction$1(part.stream)) { - yield* part.stream(); - } - else { - yield* consumeNodeBlob(part); - } - } -} -function* sliceBlob(blobParts, blobSize, start = 0, end) { - end !== null && end !== void 0 ? end : (end = blobSize); - let relativeStart = start < 0 - ? Math.max(blobSize + start, 0) - : Math.min(start, blobSize); - let relativeEnd = end < 0 - ? Math.max(blobSize + end, 0) - : Math.min(end, blobSize); - const span = Math.max(relativeEnd - relativeStart, 0); - let added = 0; - for (const part of blobParts) { - if (added >= span) { - break; - } - const partSize = ArrayBuffer.isView(part) ? part.byteLength : part.size; - if (relativeStart && partSize <= relativeStart) { - relativeStart -= partSize; - relativeEnd -= partSize; - } - else { - let chunk; - if (ArrayBuffer.isView(part)) { - chunk = part.subarray(relativeStart, Math.min(partSize, relativeEnd)); - added += chunk.byteLength; - } - else { - chunk = part.slice(relativeStart, Math.min(partSize, relativeEnd)); - added += chunk.size; - } - relativeEnd -= partSize; - relativeStart = 0; - yield chunk; - } - } -} - -/*! Based on fetch-blob. MIT License. Jimmy Wärting & David Frank */ -var __classPrivateFieldGet$2 = (undefined && undefined.__classPrivateFieldGet) || function (receiver, state, kind, f) { - if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); - return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); -}; -var __classPrivateFieldSet$1 = (undefined && undefined.__classPrivateFieldSet) || function (receiver, state, value, kind, f) { - if (kind === "m") throw new TypeError("Private method is not writable"); - if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); - return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; -}; -var _Blob_parts, _Blob_type, _Blob_size; -class Blob$1 { - constructor(blobParts = [], options = {}) { - _Blob_parts.set(this, []); - _Blob_type.set(this, ""); - _Blob_size.set(this, 0); - options !== null && options !== void 0 ? options : (options = {}); - if (typeof blobParts !== "object" || blobParts === null) { - throw new TypeError("Failed to construct 'Blob': " - + "The provided value cannot be converted to a sequence."); - } - if (!isFunction$1(blobParts[Symbol.iterator])) { - throw new TypeError("Failed to construct 'Blob': " - + "The object must have a callable @@iterator property."); - } - if (typeof options !== "object" && !isFunction$1(options)) { - throw new TypeError("Failed to construct 'Blob': parameter 2 cannot convert to dictionary."); - } - const encoder = new TextEncoder(); - for (const raw of blobParts) { - let part; - if (ArrayBuffer.isView(raw)) { - part = new Uint8Array(raw.buffer.slice(raw.byteOffset, raw.byteOffset + raw.byteLength)); - } - else if (raw instanceof ArrayBuffer) { - part = new Uint8Array(raw.slice(0)); - } - else if (raw instanceof Blob$1) { - part = raw; - } - else { - part = encoder.encode(String(raw)); - } - __classPrivateFieldSet$1(this, _Blob_size, __classPrivateFieldGet$2(this, _Blob_size, "f") + (ArrayBuffer.isView(part) ? part.byteLength : part.size), "f"); - __classPrivateFieldGet$2(this, _Blob_parts, "f").push(part); - } - const type = options.type === undefined ? "" : String(options.type); - __classPrivateFieldSet$1(this, _Blob_type, /^[\x20-\x7E]*$/.test(type) ? type : "", "f"); - } - static [(_Blob_parts = new WeakMap(), _Blob_type = new WeakMap(), _Blob_size = new WeakMap(), Symbol.hasInstance)](value) { - return Boolean(value - && typeof value === "object" - && isFunction$1(value.constructor) - && (isFunction$1(value.stream) - || isFunction$1(value.arrayBuffer)) - && /^(Blob|File)$/.test(value[Symbol.toStringTag])); - } - get type() { - return __classPrivateFieldGet$2(this, _Blob_type, "f"); - } - get size() { - return __classPrivateFieldGet$2(this, _Blob_size, "f"); - } - slice(start, end, contentType) { - return new Blob$1(sliceBlob(__classPrivateFieldGet$2(this, _Blob_parts, "f"), this.size, start, end), { - type: contentType - }); - } - async text() { - const decoder = new TextDecoder(); - let result = ""; - for await (const chunk of consumeBlobParts(__classPrivateFieldGet$2(this, _Blob_parts, "f"))) { - result += decoder.decode(chunk, { stream: true }); - } - result += decoder.decode(); - return result; - } - async arrayBuffer() { - const view = new Uint8Array(this.size); - let offset = 0; - for await (const chunk of consumeBlobParts(__classPrivateFieldGet$2(this, _Blob_parts, "f"))) { - view.set(chunk, offset); - offset += chunk.length; - } - return view.buffer; - } - stream() { - const iterator = consumeBlobParts(__classPrivateFieldGet$2(this, _Blob_parts, "f"), true); - return new ReadableStream$2({ - async pull(controller) { - const { value, done } = await iterator.next(); - if (done) { - return queueMicrotask(() => controller.close()); - } - controller.enqueue(value); - }, - async cancel() { - await iterator.return(); - } - }); - } - get [Symbol.toStringTag]() { - return "Blob"; - } -} -Object.defineProperties(Blob$1.prototype, { - type: { enumerable: true }, - size: { enumerable: true }, - slice: { enumerable: true }, - stream: { enumerable: true }, - text: { enumerable: true }, - arrayBuffer: { enumerable: true } -}); - -var __classPrivateFieldSet = (undefined && undefined.__classPrivateFieldSet) || function (receiver, state, value, kind, f) { - if (kind === "m") throw new TypeError("Private method is not writable"); - if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); - return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; -}; -var __classPrivateFieldGet$1 = (undefined && undefined.__classPrivateFieldGet) || function (receiver, state, kind, f) { - if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); - return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); -}; -var _File_name, _File_lastModified; -class File$1 extends Blob$1 { - constructor(fileBits, name, options = {}) { - super(fileBits, options); - _File_name.set(this, void 0); - _File_lastModified.set(this, 0); - if (arguments.length < 2) { - throw new TypeError("Failed to construct 'File': 2 arguments required, " - + `but only ${arguments.length} present.`); - } - __classPrivateFieldSet(this, _File_name, String(name), "f"); - const lastModified = options.lastModified === undefined - ? Date.now() - : Number(options.lastModified); - if (!Number.isNaN(lastModified)) { - __classPrivateFieldSet(this, _File_lastModified, lastModified, "f"); - } - } - static [(_File_name = new WeakMap(), _File_lastModified = new WeakMap(), Symbol.hasInstance)](value) { - return value instanceof Blob$1 - && value[Symbol.toStringTag] === "File" - && typeof value.name === "string"; - } - get name() { - return __classPrivateFieldGet$1(this, _File_name, "f"); - } - get lastModified() { - return __classPrivateFieldGet$1(this, _File_lastModified, "f"); - } - get webkitRelativePath() { - return ""; - } - get [Symbol.toStringTag]() { - return "File"; - } -} - -const isFile = (value) => value instanceof File$1; - -const isBlob = (value) => value instanceof Blob$1; - -const deprecateConstructorEntries = deprecate(() => { }, "Constructor \"entries\" argument is not spec-compliant " - + "and will be removed in next major release."); - -var __classPrivateFieldGet = (undefined && undefined.__classPrivateFieldGet) || function (receiver, state, kind, f) { - if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); - return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); -}; -var _FormData_instances, _FormData_entries, _FormData_setEntry; -class FormData$1 { - constructor(entries) { - _FormData_instances.add(this); - _FormData_entries.set(this, new Map()); - if (entries) { - deprecateConstructorEntries(); - entries.forEach(({ name, value, fileName }) => this.append(name, value, fileName)); - } - } - static [(_FormData_entries = new WeakMap(), _FormData_instances = new WeakSet(), Symbol.hasInstance)](value) { - return Boolean(value - && isFunction$1(value.constructor) - && value[Symbol.toStringTag] === "FormData" - && isFunction$1(value.append) - && isFunction$1(value.set) - && isFunction$1(value.get) - && isFunction$1(value.getAll) - && isFunction$1(value.has) - && isFunction$1(value.delete) - && isFunction$1(value.entries) - && isFunction$1(value.values) - && isFunction$1(value.keys) - && isFunction$1(value[Symbol.iterator]) - && isFunction$1(value.forEach)); - } - append(name, value, fileName) { - __classPrivateFieldGet(this, _FormData_instances, "m", _FormData_setEntry).call(this, { - name, - fileName, - append: true, - rawValue: value, - argsLength: arguments.length - }); - } - set(name, value, fileName) { - __classPrivateFieldGet(this, _FormData_instances, "m", _FormData_setEntry).call(this, { - name, - fileName, - append: false, - rawValue: value, - argsLength: arguments.length - }); - } - get(name) { - const field = __classPrivateFieldGet(this, _FormData_entries, "f").get(String(name)); - if (!field) { - return null; - } - return field[0]; - } - getAll(name) { - const field = __classPrivateFieldGet(this, _FormData_entries, "f").get(String(name)); - if (!field) { - return []; - } - return field.slice(); - } - has(name) { - return __classPrivateFieldGet(this, _FormData_entries, "f").has(String(name)); - } - delete(name) { - __classPrivateFieldGet(this, _FormData_entries, "f").delete(String(name)); - } - *keys() { - for (const key of __classPrivateFieldGet(this, _FormData_entries, "f").keys()) { - yield key; - } - } - *entries() { - for (const name of this.keys()) { - const values = this.getAll(name); - for (const value of values) { - yield [name, value]; - } - } - } - *values() { - for (const [, value] of this) { - yield value; - } - } - [(_FormData_setEntry = function _FormData_setEntry({ name, rawValue, append, fileName, argsLength }) { - const methodName = append ? "append" : "set"; - if (argsLength < 2) { - throw new TypeError(`Failed to execute '${methodName}' on 'FormData': ` - + `2 arguments required, but only ${argsLength} present.`); - } - name = String(name); - let value; - if (isFile(rawValue)) { - value = fileName === undefined - ? rawValue - : new File$1([rawValue], fileName, { - type: rawValue.type, - lastModified: rawValue.lastModified - }); - } - else if (isBlob(rawValue)) { - value = new File$1([rawValue], fileName === undefined ? "blob" : fileName, { - type: rawValue.type - }); - } - else if (fileName) { - throw new TypeError(`Failed to execute '${methodName}' on 'FormData': ` - + "parameter 2 is not of type 'Blob'."); - } - else { - value = String(rawValue); - } - const values = __classPrivateFieldGet(this, _FormData_entries, "f").get(name); - if (!values) { - return void __classPrivateFieldGet(this, _FormData_entries, "f").set(name, [value]); - } - if (!append) { - return void __classPrivateFieldGet(this, _FormData_entries, "f").set(name, [value]); - } - values.push(value); - }, Symbol.iterator)]() { - return this.entries(); - } - forEach(callback, thisArg) { - for (const [name, value] of this) { - callback.call(thisArg, value, name, this); - } - } - get [Symbol.toStringTag]() { - return "FormData"; - } - [inspect$2.custom]() { - return this[Symbol.toStringTag]; - } -} - -var esm = /*#__PURE__*/Object.freeze({ - __proto__: null, - FormData: FormData$1, - Blob: Blob$1, - File: File$1 -}); - -var require$$4 = /*@__PURE__*/getAugmentedNamespace(esm); - -/** - * web-streams-polyfill v3.2.1 - */ -/// -var SymbolPolyfill = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? - Symbol : - function (description) { return "Symbol(" + description + ")"; }; - -/// -function noop() { - return undefined; -} -function getGlobals() { - if (typeof self !== 'undefined') { - return self; - } - else if (typeof window !== 'undefined') { - return window; - } - else if (typeof global !== 'undefined') { - return global; - } - return undefined; -} -var globals = getGlobals(); - -function typeIsObject(x) { - return (typeof x === 'object' && x !== null) || typeof x === 'function'; -} -var rethrowAssertionErrorRejection = noop; - -var originalPromise = Promise; -var originalPromiseThen = Promise.prototype.then; -var originalPromiseResolve = Promise.resolve.bind(originalPromise); -var originalPromiseReject = Promise.reject.bind(originalPromise); -function newPromise(executor) { - return new originalPromise(executor); -} -function promiseResolvedWith(value) { - return originalPromiseResolve(value); -} -function promiseRejectedWith(reason) { - return originalPromiseReject(reason); -} -function PerformPromiseThen(promise, onFulfilled, onRejected) { - // There doesn't appear to be any way to correctly emulate the behaviour from JavaScript, so this is just an - // approximation. - return originalPromiseThen.call(promise, onFulfilled, onRejected); -} -function uponPromise(promise, onFulfilled, onRejected) { - PerformPromiseThen(PerformPromiseThen(promise, onFulfilled, onRejected), undefined, rethrowAssertionErrorRejection); -} -function uponFulfillment(promise, onFulfilled) { - uponPromise(promise, onFulfilled); -} -function uponRejection(promise, onRejected) { - uponPromise(promise, undefined, onRejected); -} -function transformPromiseWith(promise, fulfillmentHandler, rejectionHandler) { - return PerformPromiseThen(promise, fulfillmentHandler, rejectionHandler); -} -function setPromiseIsHandledToTrue(promise) { - PerformPromiseThen(promise, undefined, rethrowAssertionErrorRejection); -} -var queueMicrotask$1 = (function () { - var globalQueueMicrotask = globals && globals.queueMicrotask; - if (typeof globalQueueMicrotask === 'function') { - return globalQueueMicrotask; - } - var resolvedPromise = promiseResolvedWith(undefined); - return function (fn) { return PerformPromiseThen(resolvedPromise, fn); }; -})(); -function reflectCall(F, V, args) { - if (typeof F !== 'function') { - throw new TypeError('Argument is not a function'); - } - return Function.prototype.apply.call(F, V, args); -} -function promiseCall(F, V, args) { - try { - return promiseResolvedWith(reflectCall(F, V, args)); - } - catch (value) { - return promiseRejectedWith(value); - } -} - -// Original from Chromium -// https://chromium.googlesource.com/chromium/src/+/0aee4434a4dba42a42abaea9bfbc0cd196a63bc1/third_party/blink/renderer/core/streams/SimpleQueue.js -var QUEUE_MAX_ARRAY_SIZE = 16384; -/** - * Simple queue structure. - * - * Avoids scalability issues with using a packed array directly by using - * multiple arrays in a linked list and keeping the array size bounded. - */ -var SimpleQueue = /** @class */ (function () { - function SimpleQueue() { - this._cursor = 0; - this._size = 0; - // _front and _back are always defined. - this._front = { - _elements: [], - _next: undefined - }; - this._back = this._front; - // The cursor is used to avoid calling Array.shift(). - // It contains the index of the front element of the array inside the - // front-most node. It is always in the range [0, QUEUE_MAX_ARRAY_SIZE). - this._cursor = 0; - // When there is only one node, size === elements.length - cursor. - this._size = 0; - } - Object.defineProperty(SimpleQueue.prototype, "length", { - get: function () { - return this._size; - }, - enumerable: false, - configurable: true - }); - // For exception safety, this method is structured in order: - // 1. Read state - // 2. Calculate required state mutations - // 3. Perform state mutations - SimpleQueue.prototype.push = function (element) { - var oldBack = this._back; - var newBack = oldBack; - if (oldBack._elements.length === QUEUE_MAX_ARRAY_SIZE - 1) { - newBack = { - _elements: [], - _next: undefined - }; - } - // push() is the mutation most likely to throw an exception, so it - // goes first. - oldBack._elements.push(element); - if (newBack !== oldBack) { - this._back = newBack; - oldBack._next = newBack; - } - ++this._size; - }; - // Like push(), shift() follows the read -> calculate -> mutate pattern for - // exception safety. - SimpleQueue.prototype.shift = function () { // must not be called on an empty queue - var oldFront = this._front; - var newFront = oldFront; - var oldCursor = this._cursor; - var newCursor = oldCursor + 1; - var elements = oldFront._elements; - var element = elements[oldCursor]; - if (newCursor === QUEUE_MAX_ARRAY_SIZE) { - newFront = oldFront._next; - newCursor = 0; - } - // No mutations before this point. - --this._size; - this._cursor = newCursor; - if (oldFront !== newFront) { - this._front = newFront; - } - // Permit shifted element to be garbage collected. - elements[oldCursor] = undefined; - return element; - }; - // The tricky thing about forEach() is that it can be called - // re-entrantly. The queue may be mutated inside the callback. It is easy to - // see that push() within the callback has no negative effects since the end - // of the queue is checked for on every iteration. If shift() is called - // repeatedly within the callback then the next iteration may return an - // element that has been removed. In this case the callback will be called - // with undefined values until we either "catch up" with elements that still - // exist or reach the back of the queue. - SimpleQueue.prototype.forEach = function (callback) { - var i = this._cursor; - var node = this._front; - var elements = node._elements; - while (i !== elements.length || node._next !== undefined) { - if (i === elements.length) { - node = node._next; - elements = node._elements; - i = 0; - if (elements.length === 0) { - break; - } - } - callback(elements[i]); - ++i; - } - }; - // Return the element that would be returned if shift() was called now, - // without modifying the queue. - SimpleQueue.prototype.peek = function () { // must not be called on an empty queue - var front = this._front; - var cursor = this._cursor; - return front._elements[cursor]; - }; - return SimpleQueue; -}()); - -function ReadableStreamReaderGenericInitialize(reader, stream) { - reader._ownerReadableStream = stream; - stream._reader = reader; - if (stream._state === 'readable') { - defaultReaderClosedPromiseInitialize(reader); - } - else if (stream._state === 'closed') { - defaultReaderClosedPromiseInitializeAsResolved(reader); - } - else { - defaultReaderClosedPromiseInitializeAsRejected(reader, stream._storedError); - } -} -// A client of ReadableStreamDefaultReader and ReadableStreamBYOBReader may use these functions directly to bypass state -// check. -function ReadableStreamReaderGenericCancel(reader, reason) { - var stream = reader._ownerReadableStream; - return ReadableStreamCancel(stream, reason); -} -function ReadableStreamReaderGenericRelease(reader) { - if (reader._ownerReadableStream._state === 'readable') { - defaultReaderClosedPromiseReject(reader, new TypeError("Reader was released and can no longer be used to monitor the stream's closedness")); - } - else { - defaultReaderClosedPromiseResetToRejected(reader, new TypeError("Reader was released and can no longer be used to monitor the stream's closedness")); - } - reader._ownerReadableStream._reader = undefined; - reader._ownerReadableStream = undefined; -} -// Helper functions for the readers. -function readerLockException(name) { - return new TypeError('Cannot ' + name + ' a stream using a released reader'); -} -// Helper functions for the ReadableStreamDefaultReader. -function defaultReaderClosedPromiseInitialize(reader) { - reader._closedPromise = newPromise(function (resolve, reject) { - reader._closedPromise_resolve = resolve; - reader._closedPromise_reject = reject; - }); -} -function defaultReaderClosedPromiseInitializeAsRejected(reader, reason) { - defaultReaderClosedPromiseInitialize(reader); - defaultReaderClosedPromiseReject(reader, reason); -} -function defaultReaderClosedPromiseInitializeAsResolved(reader) { - defaultReaderClosedPromiseInitialize(reader); - defaultReaderClosedPromiseResolve(reader); -} -function defaultReaderClosedPromiseReject(reader, reason) { - if (reader._closedPromise_reject === undefined) { - return; - } - setPromiseIsHandledToTrue(reader._closedPromise); - reader._closedPromise_reject(reason); - reader._closedPromise_resolve = undefined; - reader._closedPromise_reject = undefined; -} -function defaultReaderClosedPromiseResetToRejected(reader, reason) { - defaultReaderClosedPromiseInitializeAsRejected(reader, reason); -} -function defaultReaderClosedPromiseResolve(reader) { - if (reader._closedPromise_resolve === undefined) { - return; - } - reader._closedPromise_resolve(undefined); - reader._closedPromise_resolve = undefined; - reader._closedPromise_reject = undefined; -} - -var AbortSteps = SymbolPolyfill('[[AbortSteps]]'); -var ErrorSteps = SymbolPolyfill('[[ErrorSteps]]'); -var CancelSteps = SymbolPolyfill('[[CancelSteps]]'); -var PullSteps = SymbolPolyfill('[[PullSteps]]'); - -/// -// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isFinite#Polyfill -var NumberIsFinite = Number.isFinite || function (x) { - return typeof x === 'number' && isFinite(x); -}; - -/// -// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/trunc#Polyfill -var MathTrunc = Math.trunc || function (v) { - return v < 0 ? Math.ceil(v) : Math.floor(v); -}; - -// https://heycam.github.io/webidl/#idl-dictionaries -function isDictionary(x) { - return typeof x === 'object' || typeof x === 'function'; -} -function assertDictionary(obj, context) { - if (obj !== undefined && !isDictionary(obj)) { - throw new TypeError(context + " is not an object."); - } -} -// https://heycam.github.io/webidl/#idl-callback-functions -function assertFunction(x, context) { - if (typeof x !== 'function') { - throw new TypeError(context + " is not a function."); - } -} -// https://heycam.github.io/webidl/#idl-object -function isObject(x) { - return (typeof x === 'object' && x !== null) || typeof x === 'function'; -} -function assertObject(x, context) { - if (!isObject(x)) { - throw new TypeError(context + " is not an object."); - } -} -function assertRequiredArgument(x, position, context) { - if (x === undefined) { - throw new TypeError("Parameter " + position + " is required in '" + context + "'."); - } -} -function assertRequiredField(x, field, context) { - if (x === undefined) { - throw new TypeError(field + " is required in '" + context + "'."); - } -} -// https://heycam.github.io/webidl/#idl-unrestricted-double -function convertUnrestrictedDouble(value) { - return Number(value); -} -function censorNegativeZero(x) { - return x === 0 ? 0 : x; -} -function integerPart(x) { - return censorNegativeZero(MathTrunc(x)); -} -// https://heycam.github.io/webidl/#idl-unsigned-long-long -function convertUnsignedLongLongWithEnforceRange(value, context) { - var lowerBound = 0; - var upperBound = Number.MAX_SAFE_INTEGER; - var x = Number(value); - x = censorNegativeZero(x); - if (!NumberIsFinite(x)) { - throw new TypeError(context + " is not a finite number"); - } - x = integerPart(x); - if (x < lowerBound || x > upperBound) { - throw new TypeError(context + " is outside the accepted range of " + lowerBound + " to " + upperBound + ", inclusive"); - } - if (!NumberIsFinite(x) || x === 0) { - return 0; - } - // TODO Use BigInt if supported? - // let xBigInt = BigInt(integerPart(x)); - // xBigInt = BigInt.asUintN(64, xBigInt); - // return Number(xBigInt); - return x; -} - -function assertReadableStream(x, context) { - if (!IsReadableStream(x)) { - throw new TypeError(context + " is not a ReadableStream."); - } -} - -// Abstract operations for the ReadableStream. -function AcquireReadableStreamDefaultReader(stream) { - return new ReadableStreamDefaultReader(stream); -} -// ReadableStream API exposed for controllers. -function ReadableStreamAddReadRequest(stream, readRequest) { - stream._reader._readRequests.push(readRequest); -} -function ReadableStreamFulfillReadRequest(stream, chunk, done) { - var reader = stream._reader; - var readRequest = reader._readRequests.shift(); - if (done) { - readRequest._closeSteps(); - } - else { - readRequest._chunkSteps(chunk); - } -} -function ReadableStreamGetNumReadRequests(stream) { - return stream._reader._readRequests.length; -} -function ReadableStreamHasDefaultReader(stream) { - var reader = stream._reader; - if (reader === undefined) { - return false; - } - if (!IsReadableStreamDefaultReader(reader)) { - return false; - } - return true; -} -/** - * A default reader vended by a {@link ReadableStream}. - * - * @public - */ -var ReadableStreamDefaultReader = /** @class */ (function () { - function ReadableStreamDefaultReader(stream) { - assertRequiredArgument(stream, 1, 'ReadableStreamDefaultReader'); - assertReadableStream(stream, 'First parameter'); - if (IsReadableStreamLocked(stream)) { - throw new TypeError('This stream has already been locked for exclusive reading by another reader'); - } - ReadableStreamReaderGenericInitialize(this, stream); - this._readRequests = new SimpleQueue(); - } - Object.defineProperty(ReadableStreamDefaultReader.prototype, "closed", { - /** - * Returns a promise that will be fulfilled when the stream becomes closed, - * or rejected if the stream ever errors or the reader's lock is released before the stream finishes closing. - */ - get: function () { - if (!IsReadableStreamDefaultReader(this)) { - return promiseRejectedWith(defaultReaderBrandCheckException('closed')); - } - return this._closedPromise; - }, - enumerable: false, - configurable: true - }); - /** - * If the reader is active, behaves the same as {@link ReadableStream.cancel | stream.cancel(reason)}. - */ - ReadableStreamDefaultReader.prototype.cancel = function (reason) { - if (reason === void 0) { reason = undefined; } - if (!IsReadableStreamDefaultReader(this)) { - return promiseRejectedWith(defaultReaderBrandCheckException('cancel')); - } - if (this._ownerReadableStream === undefined) { - return promiseRejectedWith(readerLockException('cancel')); - } - return ReadableStreamReaderGenericCancel(this, reason); - }; - /** - * Returns a promise that allows access to the next chunk from the stream's internal queue, if available. - * - * If reading a chunk causes the queue to become empty, more data will be pulled from the underlying source. - */ - ReadableStreamDefaultReader.prototype.read = function () { - if (!IsReadableStreamDefaultReader(this)) { - return promiseRejectedWith(defaultReaderBrandCheckException('read')); - } - if (this._ownerReadableStream === undefined) { - return promiseRejectedWith(readerLockException('read from')); - } - var resolvePromise; - var rejectPromise; - var promise = newPromise(function (resolve, reject) { - resolvePromise = resolve; - rejectPromise = reject; - }); - var readRequest = { - _chunkSteps: function (chunk) { return resolvePromise({ value: chunk, done: false }); }, - _closeSteps: function () { return resolvePromise({ value: undefined, done: true }); }, - _errorSteps: function (e) { return rejectPromise(e); } - }; - ReadableStreamDefaultReaderRead(this, readRequest); - return promise; - }; - /** - * Releases the reader's lock on the corresponding stream. After the lock is released, the reader is no longer active. - * If the associated stream is errored when the lock is released, the reader will appear errored in the same way - * from now on; otherwise, the reader will appear closed. - * - * A reader's lock cannot be released while it still has a pending read request, i.e., if a promise returned by - * the reader's {@link ReadableStreamDefaultReader.read | read()} method has not yet been settled. Attempting to - * do so will throw a `TypeError` and leave the reader locked to the stream. - */ - ReadableStreamDefaultReader.prototype.releaseLock = function () { - if (!IsReadableStreamDefaultReader(this)) { - throw defaultReaderBrandCheckException('releaseLock'); - } - if (this._ownerReadableStream === undefined) { - return; - } - if (this._readRequests.length > 0) { - throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled'); - } - ReadableStreamReaderGenericRelease(this); - }; - return ReadableStreamDefaultReader; -}()); -Object.defineProperties(ReadableStreamDefaultReader.prototype, { - cancel: { enumerable: true }, - read: { enumerable: true }, - releaseLock: { enumerable: true }, - closed: { enumerable: true } -}); -if (typeof SymbolPolyfill.toStringTag === 'symbol') { - Object.defineProperty(ReadableStreamDefaultReader.prototype, SymbolPolyfill.toStringTag, { - value: 'ReadableStreamDefaultReader', - configurable: true - }); -} -// Abstract operations for the readers. -function IsReadableStreamDefaultReader(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_readRequests')) { - return false; - } - return x instanceof ReadableStreamDefaultReader; -} -function ReadableStreamDefaultReaderRead(reader, readRequest) { - var stream = reader._ownerReadableStream; - stream._disturbed = true; - if (stream._state === 'closed') { - readRequest._closeSteps(); - } - else if (stream._state === 'errored') { - readRequest._errorSteps(stream._storedError); - } - else { - stream._readableStreamController[PullSteps](readRequest); - } -} -// Helper functions for the ReadableStreamDefaultReader. -function defaultReaderBrandCheckException(name) { - return new TypeError("ReadableStreamDefaultReader.prototype." + name + " can only be used on a ReadableStreamDefaultReader"); -} - -/// -var _a$x; -var AsyncIteratorPrototype; -if (typeof SymbolPolyfill.asyncIterator === 'symbol') { - // We're running inside a ES2018+ environment, but we're compiling to an older syntax. - // We cannot access %AsyncIteratorPrototype% without non-ES2018 syntax, but we can re-create it. - AsyncIteratorPrototype = (_a$x = {}, - // 25.1.3.1 %AsyncIteratorPrototype% [ @@asyncIterator ] ( ) - // https://tc39.github.io/ecma262/#sec-asynciteratorprototype-asynciterator - _a$x[SymbolPolyfill.asyncIterator] = function () { - return this; - }, - _a$x); - Object.defineProperty(AsyncIteratorPrototype, SymbolPolyfill.asyncIterator, { enumerable: false }); -} - -/// -var ReadableStreamAsyncIteratorImpl = /** @class */ (function () { - function ReadableStreamAsyncIteratorImpl(reader, preventCancel) { - this._ongoingPromise = undefined; - this._isFinished = false; - this._reader = reader; - this._preventCancel = preventCancel; - } - ReadableStreamAsyncIteratorImpl.prototype.next = function () { - var _this = this; - var nextSteps = function () { return _this._nextSteps(); }; - this._ongoingPromise = this._ongoingPromise ? - transformPromiseWith(this._ongoingPromise, nextSteps, nextSteps) : - nextSteps(); - return this._ongoingPromise; - }; - ReadableStreamAsyncIteratorImpl.prototype.return = function (value) { - var _this = this; - var returnSteps = function () { return _this._returnSteps(value); }; - return this._ongoingPromise ? - transformPromiseWith(this._ongoingPromise, returnSteps, returnSteps) : - returnSteps(); - }; - ReadableStreamAsyncIteratorImpl.prototype._nextSteps = function () { - var _this = this; - if (this._isFinished) { - return Promise.resolve({ value: undefined, done: true }); - } - var reader = this._reader; - if (reader._ownerReadableStream === undefined) { - return promiseRejectedWith(readerLockException('iterate')); - } - var resolvePromise; - var rejectPromise; - var promise = newPromise(function (resolve, reject) { - resolvePromise = resolve; - rejectPromise = reject; - }); - var readRequest = { - _chunkSteps: function (chunk) { - _this._ongoingPromise = undefined; - // This needs to be delayed by one microtask, otherwise we stop pulling too early which breaks a test. - // FIXME Is this a bug in the specification, or in the test? - queueMicrotask$1(function () { return resolvePromise({ value: chunk, done: false }); }); - }, - _closeSteps: function () { - _this._ongoingPromise = undefined; - _this._isFinished = true; - ReadableStreamReaderGenericRelease(reader); - resolvePromise({ value: undefined, done: true }); - }, - _errorSteps: function (reason) { - _this._ongoingPromise = undefined; - _this._isFinished = true; - ReadableStreamReaderGenericRelease(reader); - rejectPromise(reason); - } - }; - ReadableStreamDefaultReaderRead(reader, readRequest); - return promise; - }; - ReadableStreamAsyncIteratorImpl.prototype._returnSteps = function (value) { - if (this._isFinished) { - return Promise.resolve({ value: value, done: true }); - } - this._isFinished = true; - var reader = this._reader; - if (reader._ownerReadableStream === undefined) { - return promiseRejectedWith(readerLockException('finish iterating')); - } - if (!this._preventCancel) { - var result = ReadableStreamReaderGenericCancel(reader, value); - ReadableStreamReaderGenericRelease(reader); - return transformPromiseWith(result, function () { return ({ value: value, done: true }); }); - } - ReadableStreamReaderGenericRelease(reader); - return promiseResolvedWith({ value: value, done: true }); - }; - return ReadableStreamAsyncIteratorImpl; -}()); -var ReadableStreamAsyncIteratorPrototype = { - next: function () { - if (!IsReadableStreamAsyncIterator(this)) { - return promiseRejectedWith(streamAsyncIteratorBrandCheckException('next')); - } - return this._asyncIteratorImpl.next(); - }, - return: function (value) { - if (!IsReadableStreamAsyncIterator(this)) { - return promiseRejectedWith(streamAsyncIteratorBrandCheckException('return')); - } - return this._asyncIteratorImpl.return(value); - } -}; -if (AsyncIteratorPrototype !== undefined) { - Object.setPrototypeOf(ReadableStreamAsyncIteratorPrototype, AsyncIteratorPrototype); -} -// Abstract operations for the ReadableStream. -function AcquireReadableStreamAsyncIterator(stream, preventCancel) { - var reader = AcquireReadableStreamDefaultReader(stream); - var impl = new ReadableStreamAsyncIteratorImpl(reader, preventCancel); - var iterator = Object.create(ReadableStreamAsyncIteratorPrototype); - iterator._asyncIteratorImpl = impl; - return iterator; -} -function IsReadableStreamAsyncIterator(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_asyncIteratorImpl')) { - return false; - } - try { - // noinspection SuspiciousTypeOfGuard - return x._asyncIteratorImpl instanceof - ReadableStreamAsyncIteratorImpl; - } - catch (_a) { - return false; - } -} -// Helper functions for the ReadableStream. -function streamAsyncIteratorBrandCheckException(name) { - return new TypeError("ReadableStreamAsyncIterator." + name + " can only be used on a ReadableSteamAsyncIterator"); -} - -/// -// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN#Polyfill -var NumberIsNaN = Number.isNaN || function (x) { - // eslint-disable-next-line no-self-compare - return x !== x; -}; - -function CreateArrayFromList(elements) { - // We use arrays to represent lists, so this is basically a no-op. - // Do a slice though just in case we happen to depend on the unique-ness. - return elements.slice(); -} -function CopyDataBlockBytes(dest, destOffset, src, srcOffset, n) { - new Uint8Array(dest).set(new Uint8Array(src, srcOffset, n), destOffset); -} -// Not implemented correctly -function TransferArrayBuffer(O) { - return O; -} -// Not implemented correctly -// eslint-disable-next-line @typescript-eslint/no-unused-vars -function IsDetachedBuffer(O) { - return false; -} -function ArrayBufferSlice(buffer, begin, end) { - // ArrayBuffer.prototype.slice is not available on IE10 - // https://www.caniuse.com/mdn-javascript_builtins_arraybuffer_slice - if (buffer.slice) { - return buffer.slice(begin, end); - } - var length = end - begin; - var slice = new ArrayBuffer(length); - CopyDataBlockBytes(slice, 0, buffer, begin, length); - return slice; -} - -function IsNonNegativeNumber(v) { - if (typeof v !== 'number') { - return false; - } - if (NumberIsNaN(v)) { - return false; - } - if (v < 0) { - return false; - } - return true; -} -function CloneAsUint8Array(O) { - var buffer = ArrayBufferSlice(O.buffer, O.byteOffset, O.byteOffset + O.byteLength); - return new Uint8Array(buffer); -} - -function DequeueValue(container) { - var pair = container._queue.shift(); - container._queueTotalSize -= pair.size; - if (container._queueTotalSize < 0) { - container._queueTotalSize = 0; - } - return pair.value; -} -function EnqueueValueWithSize(container, value, size) { - if (!IsNonNegativeNumber(size) || size === Infinity) { - throw new RangeError('Size must be a finite, non-NaN, non-negative number.'); - } - container._queue.push({ value: value, size: size }); - container._queueTotalSize += size; -} -function PeekQueueValue(container) { - var pair = container._queue.peek(); - return pair.value; -} -function ResetQueue(container) { - container._queue = new SimpleQueue(); - container._queueTotalSize = 0; -} - -/** - * A pull-into request in a {@link ReadableByteStreamController}. - * - * @public - */ -var ReadableStreamBYOBRequest = /** @class */ (function () { - function ReadableStreamBYOBRequest() { - throw new TypeError('Illegal constructor'); - } - Object.defineProperty(ReadableStreamBYOBRequest.prototype, "view", { - /** - * Returns the view for writing in to, or `null` if the BYOB request has already been responded to. - */ - get: function () { - if (!IsReadableStreamBYOBRequest(this)) { - throw byobRequestBrandCheckException('view'); - } - return this._view; - }, - enumerable: false, - configurable: true - }); - ReadableStreamBYOBRequest.prototype.respond = function (bytesWritten) { - if (!IsReadableStreamBYOBRequest(this)) { - throw byobRequestBrandCheckException('respond'); - } - assertRequiredArgument(bytesWritten, 1, 'respond'); - bytesWritten = convertUnsignedLongLongWithEnforceRange(bytesWritten, 'First parameter'); - if (this._associatedReadableByteStreamController === undefined) { - throw new TypeError('This BYOB request has been invalidated'); - } - if (IsDetachedBuffer(this._view.buffer)) ; - ReadableByteStreamControllerRespond(this._associatedReadableByteStreamController, bytesWritten); - }; - ReadableStreamBYOBRequest.prototype.respondWithNewView = function (view) { - if (!IsReadableStreamBYOBRequest(this)) { - throw byobRequestBrandCheckException('respondWithNewView'); - } - assertRequiredArgument(view, 1, 'respondWithNewView'); - if (!ArrayBuffer.isView(view)) { - throw new TypeError('You can only respond with array buffer views'); - } - if (this._associatedReadableByteStreamController === undefined) { - throw new TypeError('This BYOB request has been invalidated'); - } - if (IsDetachedBuffer(view.buffer)) ; - ReadableByteStreamControllerRespondWithNewView(this._associatedReadableByteStreamController, view); - }; - return ReadableStreamBYOBRequest; -}()); -Object.defineProperties(ReadableStreamBYOBRequest.prototype, { - respond: { enumerable: true }, - respondWithNewView: { enumerable: true }, - view: { enumerable: true } -}); -if (typeof SymbolPolyfill.toStringTag === 'symbol') { - Object.defineProperty(ReadableStreamBYOBRequest.prototype, SymbolPolyfill.toStringTag, { - value: 'ReadableStreamBYOBRequest', - configurable: true - }); -} -/** - * Allows control of a {@link ReadableStream | readable byte stream}'s state and internal queue. - * - * @public - */ -var ReadableByteStreamController = /** @class */ (function () { - function ReadableByteStreamController() { - throw new TypeError('Illegal constructor'); - } - Object.defineProperty(ReadableByteStreamController.prototype, "byobRequest", { - /** - * Returns the current BYOB pull request, or `null` if there isn't one. - */ - get: function () { - if (!IsReadableByteStreamController(this)) { - throw byteStreamControllerBrandCheckException('byobRequest'); - } - return ReadableByteStreamControllerGetBYOBRequest(this); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(ReadableByteStreamController.prototype, "desiredSize", { - /** - * Returns the desired size to fill the controlled stream's internal queue. It can be negative, if the queue is - * over-full. An underlying byte source ought to use this information to determine when and how to apply backpressure. - */ - get: function () { - if (!IsReadableByteStreamController(this)) { - throw byteStreamControllerBrandCheckException('desiredSize'); - } - return ReadableByteStreamControllerGetDesiredSize(this); - }, - enumerable: false, - configurable: true - }); - /** - * Closes the controlled readable stream. Consumers will still be able to read any previously-enqueued chunks from - * the stream, but once those are read, the stream will become closed. - */ - ReadableByteStreamController.prototype.close = function () { - if (!IsReadableByteStreamController(this)) { - throw byteStreamControllerBrandCheckException('close'); - } - if (this._closeRequested) { - throw new TypeError('The stream has already been closed; do not close it again!'); - } - var state = this._controlledReadableByteStream._state; - if (state !== 'readable') { - throw new TypeError("The stream (in " + state + " state) is not in the readable state and cannot be closed"); - } - ReadableByteStreamControllerClose(this); - }; - ReadableByteStreamController.prototype.enqueue = function (chunk) { - if (!IsReadableByteStreamController(this)) { - throw byteStreamControllerBrandCheckException('enqueue'); - } - assertRequiredArgument(chunk, 1, 'enqueue'); - if (!ArrayBuffer.isView(chunk)) { - throw new TypeError('chunk must be an array buffer view'); - } - if (chunk.byteLength === 0) { - throw new TypeError('chunk must have non-zero byteLength'); - } - if (chunk.buffer.byteLength === 0) { - throw new TypeError("chunk's buffer must have non-zero byteLength"); - } - if (this._closeRequested) { - throw new TypeError('stream is closed or draining'); - } - var state = this._controlledReadableByteStream._state; - if (state !== 'readable') { - throw new TypeError("The stream (in " + state + " state) is not in the readable state and cannot be enqueued to"); - } - ReadableByteStreamControllerEnqueue(this, chunk); - }; - /** - * Errors the controlled readable stream, making all future interactions with it fail with the given error `e`. - */ - ReadableByteStreamController.prototype.error = function (e) { - if (e === void 0) { e = undefined; } - if (!IsReadableByteStreamController(this)) { - throw byteStreamControllerBrandCheckException('error'); - } - ReadableByteStreamControllerError(this, e); - }; - /** @internal */ - ReadableByteStreamController.prototype[CancelSteps] = function (reason) { - ReadableByteStreamControllerClearPendingPullIntos(this); - ResetQueue(this); - var result = this._cancelAlgorithm(reason); - ReadableByteStreamControllerClearAlgorithms(this); - return result; - }; - /** @internal */ - ReadableByteStreamController.prototype[PullSteps] = function (readRequest) { - var stream = this._controlledReadableByteStream; - if (this._queueTotalSize > 0) { - var entry = this._queue.shift(); - this._queueTotalSize -= entry.byteLength; - ReadableByteStreamControllerHandleQueueDrain(this); - var view = new Uint8Array(entry.buffer, entry.byteOffset, entry.byteLength); - readRequest._chunkSteps(view); - return; - } - var autoAllocateChunkSize = this._autoAllocateChunkSize; - if (autoAllocateChunkSize !== undefined) { - var buffer = void 0; - try { - buffer = new ArrayBuffer(autoAllocateChunkSize); - } - catch (bufferE) { - readRequest._errorSteps(bufferE); - return; - } - var pullIntoDescriptor = { - buffer: buffer, - bufferByteLength: autoAllocateChunkSize, - byteOffset: 0, - byteLength: autoAllocateChunkSize, - bytesFilled: 0, - elementSize: 1, - viewConstructor: Uint8Array, - readerType: 'default' - }; - this._pendingPullIntos.push(pullIntoDescriptor); - } - ReadableStreamAddReadRequest(stream, readRequest); - ReadableByteStreamControllerCallPullIfNeeded(this); - }; - return ReadableByteStreamController; -}()); -Object.defineProperties(ReadableByteStreamController.prototype, { - close: { enumerable: true }, - enqueue: { enumerable: true }, - error: { enumerable: true }, - byobRequest: { enumerable: true }, - desiredSize: { enumerable: true } -}); -if (typeof SymbolPolyfill.toStringTag === 'symbol') { - Object.defineProperty(ReadableByteStreamController.prototype, SymbolPolyfill.toStringTag, { - value: 'ReadableByteStreamController', - configurable: true - }); -} -// Abstract operations for the ReadableByteStreamController. -function IsReadableByteStreamController(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_controlledReadableByteStream')) { - return false; - } - return x instanceof ReadableByteStreamController; -} -function IsReadableStreamBYOBRequest(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_associatedReadableByteStreamController')) { - return false; - } - return x instanceof ReadableStreamBYOBRequest; -} -function ReadableByteStreamControllerCallPullIfNeeded(controller) { - var shouldPull = ReadableByteStreamControllerShouldCallPull(controller); - if (!shouldPull) { - return; - } - if (controller._pulling) { - controller._pullAgain = true; - return; - } - controller._pulling = true; - // TODO: Test controller argument - var pullPromise = controller._pullAlgorithm(); - uponPromise(pullPromise, function () { - controller._pulling = false; - if (controller._pullAgain) { - controller._pullAgain = false; - ReadableByteStreamControllerCallPullIfNeeded(controller); - } - }, function (e) { - ReadableByteStreamControllerError(controller, e); - }); -} -function ReadableByteStreamControllerClearPendingPullIntos(controller) { - ReadableByteStreamControllerInvalidateBYOBRequest(controller); - controller._pendingPullIntos = new SimpleQueue(); -} -function ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor) { - var done = false; - if (stream._state === 'closed') { - done = true; - } - var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor); - if (pullIntoDescriptor.readerType === 'default') { - ReadableStreamFulfillReadRequest(stream, filledView, done); - } - else { - ReadableStreamFulfillReadIntoRequest(stream, filledView, done); - } -} -function ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor) { - var bytesFilled = pullIntoDescriptor.bytesFilled; - var elementSize = pullIntoDescriptor.elementSize; - return new pullIntoDescriptor.viewConstructor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, bytesFilled / elementSize); -} -function ReadableByteStreamControllerEnqueueChunkToQueue(controller, buffer, byteOffset, byteLength) { - controller._queue.push({ buffer: buffer, byteOffset: byteOffset, byteLength: byteLength }); - controller._queueTotalSize += byteLength; -} -function ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) { - var elementSize = pullIntoDescriptor.elementSize; - var currentAlignedBytes = pullIntoDescriptor.bytesFilled - pullIntoDescriptor.bytesFilled % elementSize; - var maxBytesToCopy = Math.min(controller._queueTotalSize, pullIntoDescriptor.byteLength - pullIntoDescriptor.bytesFilled); - var maxBytesFilled = pullIntoDescriptor.bytesFilled + maxBytesToCopy; - var maxAlignedBytes = maxBytesFilled - maxBytesFilled % elementSize; - var totalBytesToCopyRemaining = maxBytesToCopy; - var ready = false; - if (maxAlignedBytes > currentAlignedBytes) { - totalBytesToCopyRemaining = maxAlignedBytes - pullIntoDescriptor.bytesFilled; - ready = true; - } - var queue = controller._queue; - while (totalBytesToCopyRemaining > 0) { - var headOfQueue = queue.peek(); - var bytesToCopy = Math.min(totalBytesToCopyRemaining, headOfQueue.byteLength); - var destStart = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled; - CopyDataBlockBytes(pullIntoDescriptor.buffer, destStart, headOfQueue.buffer, headOfQueue.byteOffset, bytesToCopy); - if (headOfQueue.byteLength === bytesToCopy) { - queue.shift(); - } - else { - headOfQueue.byteOffset += bytesToCopy; - headOfQueue.byteLength -= bytesToCopy; - } - controller._queueTotalSize -= bytesToCopy; - ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesToCopy, pullIntoDescriptor); - totalBytesToCopyRemaining -= bytesToCopy; - } - return ready; -} -function ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, size, pullIntoDescriptor) { - pullIntoDescriptor.bytesFilled += size; -} -function ReadableByteStreamControllerHandleQueueDrain(controller) { - if (controller._queueTotalSize === 0 && controller._closeRequested) { - ReadableByteStreamControllerClearAlgorithms(controller); - ReadableStreamClose(controller._controlledReadableByteStream); - } - else { - ReadableByteStreamControllerCallPullIfNeeded(controller); - } -} -function ReadableByteStreamControllerInvalidateBYOBRequest(controller) { - if (controller._byobRequest === null) { - return; - } - controller._byobRequest._associatedReadableByteStreamController = undefined; - controller._byobRequest._view = null; - controller._byobRequest = null; -} -function ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller) { - while (controller._pendingPullIntos.length > 0) { - if (controller._queueTotalSize === 0) { - return; - } - var pullIntoDescriptor = controller._pendingPullIntos.peek(); - if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor)) { - ReadableByteStreamControllerShiftPendingPullInto(controller); - ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableByteStream, pullIntoDescriptor); - } - } -} -function ReadableByteStreamControllerPullInto(controller, view, readIntoRequest) { - var stream = controller._controlledReadableByteStream; - var elementSize = 1; - if (view.constructor !== DataView) { - elementSize = view.constructor.BYTES_PER_ELEMENT; - } - var ctor = view.constructor; - // try { - var buffer = TransferArrayBuffer(view.buffer); - // } catch (e) { - // readIntoRequest._errorSteps(e); - // return; - // } - var pullIntoDescriptor = { - buffer: buffer, - bufferByteLength: buffer.byteLength, - byteOffset: view.byteOffset, - byteLength: view.byteLength, - bytesFilled: 0, - elementSize: elementSize, - viewConstructor: ctor, - readerType: 'byob' - }; - if (controller._pendingPullIntos.length > 0) { - controller._pendingPullIntos.push(pullIntoDescriptor); - // No ReadableByteStreamControllerCallPullIfNeeded() call since: - // - No change happens on desiredSize - // - The source has already been notified of that there's at least 1 pending read(view) - ReadableStreamAddReadIntoRequest(stream, readIntoRequest); - return; - } - if (stream._state === 'closed') { - var emptyView = new ctor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, 0); - readIntoRequest._closeSteps(emptyView); - return; - } - if (controller._queueTotalSize > 0) { - if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor)) { - var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor); - ReadableByteStreamControllerHandleQueueDrain(controller); - readIntoRequest._chunkSteps(filledView); - return; - } - if (controller._closeRequested) { - var e = new TypeError('Insufficient bytes to fill elements in the given buffer'); - ReadableByteStreamControllerError(controller, e); - readIntoRequest._errorSteps(e); - return; - } - } - controller._pendingPullIntos.push(pullIntoDescriptor); - ReadableStreamAddReadIntoRequest(stream, readIntoRequest); - ReadableByteStreamControllerCallPullIfNeeded(controller); -} -function ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor) { - var stream = controller._controlledReadableByteStream; - if (ReadableStreamHasBYOBReader(stream)) { - while (ReadableStreamGetNumReadIntoRequests(stream) > 0) { - var pullIntoDescriptor = ReadableByteStreamControllerShiftPendingPullInto(controller); - ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor); - } - } -} -function ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, pullIntoDescriptor) { - ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesWritten, pullIntoDescriptor); - if (pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize) { - return; - } - ReadableByteStreamControllerShiftPendingPullInto(controller); - var remainderSize = pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize; - if (remainderSize > 0) { - var end = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled; - var remainder = ArrayBufferSlice(pullIntoDescriptor.buffer, end - remainderSize, end); - ReadableByteStreamControllerEnqueueChunkToQueue(controller, remainder, 0, remainder.byteLength); - } - pullIntoDescriptor.bytesFilled -= remainderSize; - ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableByteStream, pullIntoDescriptor); - ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller); -} -function ReadableByteStreamControllerRespondInternal(controller, bytesWritten) { - var firstDescriptor = controller._pendingPullIntos.peek(); - ReadableByteStreamControllerInvalidateBYOBRequest(controller); - var state = controller._controlledReadableByteStream._state; - if (state === 'closed') { - ReadableByteStreamControllerRespondInClosedState(controller); - } - else { - ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, firstDescriptor); - } - ReadableByteStreamControllerCallPullIfNeeded(controller); -} -function ReadableByteStreamControllerShiftPendingPullInto(controller) { - var descriptor = controller._pendingPullIntos.shift(); - return descriptor; -} -function ReadableByteStreamControllerShouldCallPull(controller) { - var stream = controller._controlledReadableByteStream; - if (stream._state !== 'readable') { - return false; - } - if (controller._closeRequested) { - return false; - } - if (!controller._started) { - return false; - } - if (ReadableStreamHasDefaultReader(stream) && ReadableStreamGetNumReadRequests(stream) > 0) { - return true; - } - if (ReadableStreamHasBYOBReader(stream) && ReadableStreamGetNumReadIntoRequests(stream) > 0) { - return true; - } - var desiredSize = ReadableByteStreamControllerGetDesiredSize(controller); - if (desiredSize > 0) { - return true; - } - return false; -} -function ReadableByteStreamControllerClearAlgorithms(controller) { - controller._pullAlgorithm = undefined; - controller._cancelAlgorithm = undefined; -} -// A client of ReadableByteStreamController may use these functions directly to bypass state check. -function ReadableByteStreamControllerClose(controller) { - var stream = controller._controlledReadableByteStream; - if (controller._closeRequested || stream._state !== 'readable') { - return; - } - if (controller._queueTotalSize > 0) { - controller._closeRequested = true; - return; - } - if (controller._pendingPullIntos.length > 0) { - var firstPendingPullInto = controller._pendingPullIntos.peek(); - if (firstPendingPullInto.bytesFilled > 0) { - var e = new TypeError('Insufficient bytes to fill elements in the given buffer'); - ReadableByteStreamControllerError(controller, e); - throw e; - } - } - ReadableByteStreamControllerClearAlgorithms(controller); - ReadableStreamClose(stream); -} -function ReadableByteStreamControllerEnqueue(controller, chunk) { - var stream = controller._controlledReadableByteStream; - if (controller._closeRequested || stream._state !== 'readable') { - return; - } - var buffer = chunk.buffer; - var byteOffset = chunk.byteOffset; - var byteLength = chunk.byteLength; - var transferredBuffer = TransferArrayBuffer(buffer); - if (controller._pendingPullIntos.length > 0) { - var firstPendingPullInto = controller._pendingPullIntos.peek(); - if (IsDetachedBuffer(firstPendingPullInto.buffer)) ; - firstPendingPullInto.buffer = TransferArrayBuffer(firstPendingPullInto.buffer); - } - ReadableByteStreamControllerInvalidateBYOBRequest(controller); - if (ReadableStreamHasDefaultReader(stream)) { - if (ReadableStreamGetNumReadRequests(stream) === 0) { - ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength); - } - else { - if (controller._pendingPullIntos.length > 0) { - ReadableByteStreamControllerShiftPendingPullInto(controller); - } - var transferredView = new Uint8Array(transferredBuffer, byteOffset, byteLength); - ReadableStreamFulfillReadRequest(stream, transferredView, false); - } - } - else if (ReadableStreamHasBYOBReader(stream)) { - // TODO: Ideally in this branch detaching should happen only if the buffer is not consumed fully. - ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength); - ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller); - } - else { - ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength); - } - ReadableByteStreamControllerCallPullIfNeeded(controller); -} -function ReadableByteStreamControllerError(controller, e) { - var stream = controller._controlledReadableByteStream; - if (stream._state !== 'readable') { - return; - } - ReadableByteStreamControllerClearPendingPullIntos(controller); - ResetQueue(controller); - ReadableByteStreamControllerClearAlgorithms(controller); - ReadableStreamError(stream, e); -} -function ReadableByteStreamControllerGetBYOBRequest(controller) { - if (controller._byobRequest === null && controller._pendingPullIntos.length > 0) { - var firstDescriptor = controller._pendingPullIntos.peek(); - var view = new Uint8Array(firstDescriptor.buffer, firstDescriptor.byteOffset + firstDescriptor.bytesFilled, firstDescriptor.byteLength - firstDescriptor.bytesFilled); - var byobRequest = Object.create(ReadableStreamBYOBRequest.prototype); - SetUpReadableStreamBYOBRequest(byobRequest, controller, view); - controller._byobRequest = byobRequest; - } - return controller._byobRequest; -} -function ReadableByteStreamControllerGetDesiredSize(controller) { - var state = controller._controlledReadableByteStream._state; - if (state === 'errored') { - return null; - } - if (state === 'closed') { - return 0; - } - return controller._strategyHWM - controller._queueTotalSize; -} -function ReadableByteStreamControllerRespond(controller, bytesWritten) { - var firstDescriptor = controller._pendingPullIntos.peek(); - var state = controller._controlledReadableByteStream._state; - if (state === 'closed') { - if (bytesWritten !== 0) { - throw new TypeError('bytesWritten must be 0 when calling respond() on a closed stream'); - } - } - else { - if (bytesWritten === 0) { - throw new TypeError('bytesWritten must be greater than 0 when calling respond() on a readable stream'); - } - if (firstDescriptor.bytesFilled + bytesWritten > firstDescriptor.byteLength) { - throw new RangeError('bytesWritten out of range'); - } - } - firstDescriptor.buffer = TransferArrayBuffer(firstDescriptor.buffer); - ReadableByteStreamControllerRespondInternal(controller, bytesWritten); -} -function ReadableByteStreamControllerRespondWithNewView(controller, view) { - var firstDescriptor = controller._pendingPullIntos.peek(); - var state = controller._controlledReadableByteStream._state; - if (state === 'closed') { - if (view.byteLength !== 0) { - throw new TypeError('The view\'s length must be 0 when calling respondWithNewView() on a closed stream'); - } - } - else { - if (view.byteLength === 0) { - throw new TypeError('The view\'s length must be greater than 0 when calling respondWithNewView() on a readable stream'); - } - } - if (firstDescriptor.byteOffset + firstDescriptor.bytesFilled !== view.byteOffset) { - throw new RangeError('The region specified by view does not match byobRequest'); - } - if (firstDescriptor.bufferByteLength !== view.buffer.byteLength) { - throw new RangeError('The buffer of view has different capacity than byobRequest'); - } - if (firstDescriptor.bytesFilled + view.byteLength > firstDescriptor.byteLength) { - throw new RangeError('The region specified by view is larger than byobRequest'); - } - var viewByteLength = view.byteLength; - firstDescriptor.buffer = TransferArrayBuffer(view.buffer); - ReadableByteStreamControllerRespondInternal(controller, viewByteLength); -} -function SetUpReadableByteStreamController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, autoAllocateChunkSize) { - controller._controlledReadableByteStream = stream; - controller._pullAgain = false; - controller._pulling = false; - controller._byobRequest = null; - // Need to set the slots so that the assert doesn't fire. In the spec the slots already exist implicitly. - controller._queue = controller._queueTotalSize = undefined; - ResetQueue(controller); - controller._closeRequested = false; - controller._started = false; - controller._strategyHWM = highWaterMark; - controller._pullAlgorithm = pullAlgorithm; - controller._cancelAlgorithm = cancelAlgorithm; - controller._autoAllocateChunkSize = autoAllocateChunkSize; - controller._pendingPullIntos = new SimpleQueue(); - stream._readableStreamController = controller; - var startResult = startAlgorithm(); - uponPromise(promiseResolvedWith(startResult), function () { - controller._started = true; - ReadableByteStreamControllerCallPullIfNeeded(controller); - }, function (r) { - ReadableByteStreamControllerError(controller, r); - }); -} -function SetUpReadableByteStreamControllerFromUnderlyingSource(stream, underlyingByteSource, highWaterMark) { - var controller = Object.create(ReadableByteStreamController.prototype); - var startAlgorithm = function () { return undefined; }; - var pullAlgorithm = function () { return promiseResolvedWith(undefined); }; - var cancelAlgorithm = function () { return promiseResolvedWith(undefined); }; - if (underlyingByteSource.start !== undefined) { - startAlgorithm = function () { return underlyingByteSource.start(controller); }; - } - if (underlyingByteSource.pull !== undefined) { - pullAlgorithm = function () { return underlyingByteSource.pull(controller); }; - } - if (underlyingByteSource.cancel !== undefined) { - cancelAlgorithm = function (reason) { return underlyingByteSource.cancel(reason); }; - } - var autoAllocateChunkSize = underlyingByteSource.autoAllocateChunkSize; - if (autoAllocateChunkSize === 0) { - throw new TypeError('autoAllocateChunkSize must be greater than 0'); - } - SetUpReadableByteStreamController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, autoAllocateChunkSize); -} -function SetUpReadableStreamBYOBRequest(request, controller, view) { - request._associatedReadableByteStreamController = controller; - request._view = view; -} -// Helper functions for the ReadableStreamBYOBRequest. -function byobRequestBrandCheckException(name) { - return new TypeError("ReadableStreamBYOBRequest.prototype." + name + " can only be used on a ReadableStreamBYOBRequest"); -} -// Helper functions for the ReadableByteStreamController. -function byteStreamControllerBrandCheckException(name) { - return new TypeError("ReadableByteStreamController.prototype." + name + " can only be used on a ReadableByteStreamController"); -} - -// Abstract operations for the ReadableStream. -function AcquireReadableStreamBYOBReader(stream) { - return new ReadableStreamBYOBReader(stream); -} -// ReadableStream API exposed for controllers. -function ReadableStreamAddReadIntoRequest(stream, readIntoRequest) { - stream._reader._readIntoRequests.push(readIntoRequest); -} -function ReadableStreamFulfillReadIntoRequest(stream, chunk, done) { - var reader = stream._reader; - var readIntoRequest = reader._readIntoRequests.shift(); - if (done) { - readIntoRequest._closeSteps(chunk); - } - else { - readIntoRequest._chunkSteps(chunk); - } -} -function ReadableStreamGetNumReadIntoRequests(stream) { - return stream._reader._readIntoRequests.length; -} -function ReadableStreamHasBYOBReader(stream) { - var reader = stream._reader; - if (reader === undefined) { - return false; - } - if (!IsReadableStreamBYOBReader(reader)) { - return false; - } - return true; -} -/** - * A BYOB reader vended by a {@link ReadableStream}. - * - * @public - */ -var ReadableStreamBYOBReader = /** @class */ (function () { - function ReadableStreamBYOBReader(stream) { - assertRequiredArgument(stream, 1, 'ReadableStreamBYOBReader'); - assertReadableStream(stream, 'First parameter'); - if (IsReadableStreamLocked(stream)) { - throw new TypeError('This stream has already been locked for exclusive reading by another reader'); - } - if (!IsReadableByteStreamController(stream._readableStreamController)) { - throw new TypeError('Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte ' + - 'source'); - } - ReadableStreamReaderGenericInitialize(this, stream); - this._readIntoRequests = new SimpleQueue(); - } - Object.defineProperty(ReadableStreamBYOBReader.prototype, "closed", { - /** - * Returns a promise that will be fulfilled when the stream becomes closed, or rejected if the stream ever errors or - * the reader's lock is released before the stream finishes closing. - */ - get: function () { - if (!IsReadableStreamBYOBReader(this)) { - return promiseRejectedWith(byobReaderBrandCheckException('closed')); - } - return this._closedPromise; - }, - enumerable: false, - configurable: true - }); - /** - * If the reader is active, behaves the same as {@link ReadableStream.cancel | stream.cancel(reason)}. - */ - ReadableStreamBYOBReader.prototype.cancel = function (reason) { - if (reason === void 0) { reason = undefined; } - if (!IsReadableStreamBYOBReader(this)) { - return promiseRejectedWith(byobReaderBrandCheckException('cancel')); - } - if (this._ownerReadableStream === undefined) { - return promiseRejectedWith(readerLockException('cancel')); - } - return ReadableStreamReaderGenericCancel(this, reason); - }; - /** - * Attempts to reads bytes into view, and returns a promise resolved with the result. - * - * If reading a chunk causes the queue to become empty, more data will be pulled from the underlying source. - */ - ReadableStreamBYOBReader.prototype.read = function (view) { - if (!IsReadableStreamBYOBReader(this)) { - return promiseRejectedWith(byobReaderBrandCheckException('read')); - } - if (!ArrayBuffer.isView(view)) { - return promiseRejectedWith(new TypeError('view must be an array buffer view')); - } - if (view.byteLength === 0) { - return promiseRejectedWith(new TypeError('view must have non-zero byteLength')); - } - if (view.buffer.byteLength === 0) { - return promiseRejectedWith(new TypeError("view's buffer must have non-zero byteLength")); - } - if (IsDetachedBuffer(view.buffer)) ; - if (this._ownerReadableStream === undefined) { - return promiseRejectedWith(readerLockException('read from')); - } - var resolvePromise; - var rejectPromise; - var promise = newPromise(function (resolve, reject) { - resolvePromise = resolve; - rejectPromise = reject; - }); - var readIntoRequest = { - _chunkSteps: function (chunk) { return resolvePromise({ value: chunk, done: false }); }, - _closeSteps: function (chunk) { return resolvePromise({ value: chunk, done: true }); }, - _errorSteps: function (e) { return rejectPromise(e); } - }; - ReadableStreamBYOBReaderRead(this, view, readIntoRequest); - return promise; - }; - /** - * Releases the reader's lock on the corresponding stream. After the lock is released, the reader is no longer active. - * If the associated stream is errored when the lock is released, the reader will appear errored in the same way - * from now on; otherwise, the reader will appear closed. - * - * A reader's lock cannot be released while it still has a pending read request, i.e., if a promise returned by - * the reader's {@link ReadableStreamBYOBReader.read | read()} method has not yet been settled. Attempting to - * do so will throw a `TypeError` and leave the reader locked to the stream. - */ - ReadableStreamBYOBReader.prototype.releaseLock = function () { - if (!IsReadableStreamBYOBReader(this)) { - throw byobReaderBrandCheckException('releaseLock'); - } - if (this._ownerReadableStream === undefined) { - return; - } - if (this._readIntoRequests.length > 0) { - throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled'); - } - ReadableStreamReaderGenericRelease(this); - }; - return ReadableStreamBYOBReader; -}()); -Object.defineProperties(ReadableStreamBYOBReader.prototype, { - cancel: { enumerable: true }, - read: { enumerable: true }, - releaseLock: { enumerable: true }, - closed: { enumerable: true } -}); -if (typeof SymbolPolyfill.toStringTag === 'symbol') { - Object.defineProperty(ReadableStreamBYOBReader.prototype, SymbolPolyfill.toStringTag, { - value: 'ReadableStreamBYOBReader', - configurable: true - }); -} -// Abstract operations for the readers. -function IsReadableStreamBYOBReader(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_readIntoRequests')) { - return false; - } - return x instanceof ReadableStreamBYOBReader; -} -function ReadableStreamBYOBReaderRead(reader, view, readIntoRequest) { - var stream = reader._ownerReadableStream; - stream._disturbed = true; - if (stream._state === 'errored') { - readIntoRequest._errorSteps(stream._storedError); - } - else { - ReadableByteStreamControllerPullInto(stream._readableStreamController, view, readIntoRequest); - } -} -// Helper functions for the ReadableStreamBYOBReader. -function byobReaderBrandCheckException(name) { - return new TypeError("ReadableStreamBYOBReader.prototype." + name + " can only be used on a ReadableStreamBYOBReader"); -} - -function ExtractHighWaterMark(strategy, defaultHWM) { - var highWaterMark = strategy.highWaterMark; - if (highWaterMark === undefined) { - return defaultHWM; - } - if (NumberIsNaN(highWaterMark) || highWaterMark < 0) { - throw new RangeError('Invalid highWaterMark'); - } - return highWaterMark; -} -function ExtractSizeAlgorithm(strategy) { - var size = strategy.size; - if (!size) { - return function () { return 1; }; - } - return size; -} - -function convertQueuingStrategy(init, context) { - assertDictionary(init, context); - var highWaterMark = init === null || init === void 0 ? void 0 : init.highWaterMark; - var size = init === null || init === void 0 ? void 0 : init.size; - return { - highWaterMark: highWaterMark === undefined ? undefined : convertUnrestrictedDouble(highWaterMark), - size: size === undefined ? undefined : convertQueuingStrategySize(size, context + " has member 'size' that") - }; -} -function convertQueuingStrategySize(fn, context) { - assertFunction(fn, context); - return function (chunk) { return convertUnrestrictedDouble(fn(chunk)); }; -} - -function convertUnderlyingSink(original, context) { - assertDictionary(original, context); - var abort = original === null || original === void 0 ? void 0 : original.abort; - var close = original === null || original === void 0 ? void 0 : original.close; - var start = original === null || original === void 0 ? void 0 : original.start; - var type = original === null || original === void 0 ? void 0 : original.type; - var write = original === null || original === void 0 ? void 0 : original.write; - return { - abort: abort === undefined ? - undefined : - convertUnderlyingSinkAbortCallback(abort, original, context + " has member 'abort' that"), - close: close === undefined ? - undefined : - convertUnderlyingSinkCloseCallback(close, original, context + " has member 'close' that"), - start: start === undefined ? - undefined : - convertUnderlyingSinkStartCallback(start, original, context + " has member 'start' that"), - write: write === undefined ? - undefined : - convertUnderlyingSinkWriteCallback(write, original, context + " has member 'write' that"), - type: type - }; -} -function convertUnderlyingSinkAbortCallback(fn, original, context) { - assertFunction(fn, context); - return function (reason) { return promiseCall(fn, original, [reason]); }; -} -function convertUnderlyingSinkCloseCallback(fn, original, context) { - assertFunction(fn, context); - return function () { return promiseCall(fn, original, []); }; -} -function convertUnderlyingSinkStartCallback(fn, original, context) { - assertFunction(fn, context); - return function (controller) { return reflectCall(fn, original, [controller]); }; -} -function convertUnderlyingSinkWriteCallback(fn, original, context) { - assertFunction(fn, context); - return function (chunk, controller) { return promiseCall(fn, original, [chunk, controller]); }; -} - -function assertWritableStream(x, context) { - if (!IsWritableStream(x)) { - throw new TypeError(context + " is not a WritableStream."); - } -} - -function isAbortSignal(value) { - if (typeof value !== 'object' || value === null) { - return false; - } - try { - return typeof value.aborted === 'boolean'; - } - catch (_a) { - // AbortSignal.prototype.aborted throws if its brand check fails - return false; - } -} -var supportsAbortController = typeof AbortController === 'function'; -/** - * Construct a new AbortController, if supported by the platform. - * - * @internal - */ -function createAbortController() { - if (supportsAbortController) { - return new AbortController(); - } - return undefined; -} - -/** - * A writable stream represents a destination for data, into which you can write. - * - * @public - */ -var WritableStream = /** @class */ (function () { - function WritableStream(rawUnderlyingSink, rawStrategy) { - if (rawUnderlyingSink === void 0) { rawUnderlyingSink = {}; } - if (rawStrategy === void 0) { rawStrategy = {}; } - if (rawUnderlyingSink === undefined) { - rawUnderlyingSink = null; - } - else { - assertObject(rawUnderlyingSink, 'First parameter'); - } - var strategy = convertQueuingStrategy(rawStrategy, 'Second parameter'); - var underlyingSink = convertUnderlyingSink(rawUnderlyingSink, 'First parameter'); - InitializeWritableStream(this); - var type = underlyingSink.type; - if (type !== undefined) { - throw new RangeError('Invalid type is specified'); - } - var sizeAlgorithm = ExtractSizeAlgorithm(strategy); - var highWaterMark = ExtractHighWaterMark(strategy, 1); - SetUpWritableStreamDefaultControllerFromUnderlyingSink(this, underlyingSink, highWaterMark, sizeAlgorithm); - } - Object.defineProperty(WritableStream.prototype, "locked", { - /** - * Returns whether or not the writable stream is locked to a writer. - */ - get: function () { - if (!IsWritableStream(this)) { - throw streamBrandCheckException$2('locked'); - } - return IsWritableStreamLocked(this); - }, - enumerable: false, - configurable: true - }); - /** - * Aborts the stream, signaling that the producer can no longer successfully write to the stream and it is to be - * immediately moved to an errored state, with any queued-up writes discarded. This will also execute any abort - * mechanism of the underlying sink. - * - * The returned promise will fulfill if the stream shuts down successfully, or reject if the underlying sink signaled - * that there was an error doing so. Additionally, it will reject with a `TypeError` (without attempting to cancel - * the stream) if the stream is currently locked. - */ - WritableStream.prototype.abort = function (reason) { - if (reason === void 0) { reason = undefined; } - if (!IsWritableStream(this)) { - return promiseRejectedWith(streamBrandCheckException$2('abort')); - } - if (IsWritableStreamLocked(this)) { - return promiseRejectedWith(new TypeError('Cannot abort a stream that already has a writer')); - } - return WritableStreamAbort(this, reason); - }; - /** - * Closes the stream. The underlying sink will finish processing any previously-written chunks, before invoking its - * close behavior. During this time any further attempts to write will fail (without erroring the stream). - * - * The method returns a promise that will fulfill if all remaining chunks are successfully written and the stream - * successfully closes, or rejects if an error is encountered during this process. Additionally, it will reject with - * a `TypeError` (without attempting to cancel the stream) if the stream is currently locked. - */ - WritableStream.prototype.close = function () { - if (!IsWritableStream(this)) { - return promiseRejectedWith(streamBrandCheckException$2('close')); - } - if (IsWritableStreamLocked(this)) { - return promiseRejectedWith(new TypeError('Cannot close a stream that already has a writer')); - } - if (WritableStreamCloseQueuedOrInFlight(this)) { - return promiseRejectedWith(new TypeError('Cannot close an already-closing stream')); - } - return WritableStreamClose(this); - }; - /** - * Creates a {@link WritableStreamDefaultWriter | writer} and locks the stream to the new writer. While the stream - * is locked, no other writer can be acquired until this one is released. - * - * This functionality is especially useful for creating abstractions that desire the ability to write to a stream - * without interruption or interleaving. By getting a writer for the stream, you can ensure nobody else can write at - * the same time, which would cause the resulting written data to be unpredictable and probably useless. - */ - WritableStream.prototype.getWriter = function () { - if (!IsWritableStream(this)) { - throw streamBrandCheckException$2('getWriter'); - } - return AcquireWritableStreamDefaultWriter(this); - }; - return WritableStream; -}()); -Object.defineProperties(WritableStream.prototype, { - abort: { enumerable: true }, - close: { enumerable: true }, - getWriter: { enumerable: true }, - locked: { enumerable: true } -}); -if (typeof SymbolPolyfill.toStringTag === 'symbol') { - Object.defineProperty(WritableStream.prototype, SymbolPolyfill.toStringTag, { - value: 'WritableStream', - configurable: true - }); -} -// Abstract operations for the WritableStream. -function AcquireWritableStreamDefaultWriter(stream) { - return new WritableStreamDefaultWriter(stream); -} -// Throws if and only if startAlgorithm throws. -function CreateWritableStream(startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm) { - if (highWaterMark === void 0) { highWaterMark = 1; } - if (sizeAlgorithm === void 0) { sizeAlgorithm = function () { return 1; }; } - var stream = Object.create(WritableStream.prototype); - InitializeWritableStream(stream); - var controller = Object.create(WritableStreamDefaultController.prototype); - SetUpWritableStreamDefaultController(stream, controller, startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm); - return stream; -} -function InitializeWritableStream(stream) { - stream._state = 'writable'; - // The error that will be reported by new method calls once the state becomes errored. Only set when [[state]] is - // 'erroring' or 'errored'. May be set to an undefined value. - stream._storedError = undefined; - stream._writer = undefined; - // Initialize to undefined first because the constructor of the controller checks this - // variable to validate the caller. - stream._writableStreamController = undefined; - // This queue is placed here instead of the writer class in order to allow for passing a writer to the next data - // producer without waiting for the queued writes to finish. - stream._writeRequests = new SimpleQueue(); - // Write requests are removed from _writeRequests when write() is called on the underlying sink. This prevents - // them from being erroneously rejected on error. If a write() call is in-flight, the request is stored here. - stream._inFlightWriteRequest = undefined; - // The promise that was returned from writer.close(). Stored here because it may be fulfilled after the writer - // has been detached. - stream._closeRequest = undefined; - // Close request is removed from _closeRequest when close() is called on the underlying sink. This prevents it - // from being erroneously rejected on error. If a close() call is in-flight, the request is stored here. - stream._inFlightCloseRequest = undefined; - // The promise that was returned from writer.abort(). This may also be fulfilled after the writer has detached. - stream._pendingAbortRequest = undefined; - // The backpressure signal set by the controller. - stream._backpressure = false; -} -function IsWritableStream(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_writableStreamController')) { - return false; - } - return x instanceof WritableStream; -} -function IsWritableStreamLocked(stream) { - if (stream._writer === undefined) { - return false; - } - return true; -} -function WritableStreamAbort(stream, reason) { - var _a; - if (stream._state === 'closed' || stream._state === 'errored') { - return promiseResolvedWith(undefined); - } - stream._writableStreamController._abortReason = reason; - (_a = stream._writableStreamController._abortController) === null || _a === void 0 ? void 0 : _a.abort(); - // TypeScript narrows the type of `stream._state` down to 'writable' | 'erroring', - // but it doesn't know that signaling abort runs author code that might have changed the state. - // Widen the type again by casting to WritableStreamState. - var state = stream._state; - if (state === 'closed' || state === 'errored') { - return promiseResolvedWith(undefined); - } - if (stream._pendingAbortRequest !== undefined) { - return stream._pendingAbortRequest._promise; - } - var wasAlreadyErroring = false; - if (state === 'erroring') { - wasAlreadyErroring = true; - // reason will not be used, so don't keep a reference to it. - reason = undefined; - } - var promise = newPromise(function (resolve, reject) { - stream._pendingAbortRequest = { - _promise: undefined, - _resolve: resolve, - _reject: reject, - _reason: reason, - _wasAlreadyErroring: wasAlreadyErroring - }; - }); - stream._pendingAbortRequest._promise = promise; - if (!wasAlreadyErroring) { - WritableStreamStartErroring(stream, reason); - } - return promise; -} -function WritableStreamClose(stream) { - var state = stream._state; - if (state === 'closed' || state === 'errored') { - return promiseRejectedWith(new TypeError("The stream (in " + state + " state) is not in the writable state and cannot be closed")); - } - var promise = newPromise(function (resolve, reject) { - var closeRequest = { - _resolve: resolve, - _reject: reject - }; - stream._closeRequest = closeRequest; - }); - var writer = stream._writer; - if (writer !== undefined && stream._backpressure && state === 'writable') { - defaultWriterReadyPromiseResolve(writer); - } - WritableStreamDefaultControllerClose(stream._writableStreamController); - return promise; -} -// WritableStream API exposed for controllers. -function WritableStreamAddWriteRequest(stream) { - var promise = newPromise(function (resolve, reject) { - var writeRequest = { - _resolve: resolve, - _reject: reject - }; - stream._writeRequests.push(writeRequest); - }); - return promise; -} -function WritableStreamDealWithRejection(stream, error) { - var state = stream._state; - if (state === 'writable') { - WritableStreamStartErroring(stream, error); - return; - } - WritableStreamFinishErroring(stream); -} -function WritableStreamStartErroring(stream, reason) { - var controller = stream._writableStreamController; - stream._state = 'erroring'; - stream._storedError = reason; - var writer = stream._writer; - if (writer !== undefined) { - WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, reason); - } - if (!WritableStreamHasOperationMarkedInFlight(stream) && controller._started) { - WritableStreamFinishErroring(stream); - } -} -function WritableStreamFinishErroring(stream) { - stream._state = 'errored'; - stream._writableStreamController[ErrorSteps](); - var storedError = stream._storedError; - stream._writeRequests.forEach(function (writeRequest) { - writeRequest._reject(storedError); - }); - stream._writeRequests = new SimpleQueue(); - if (stream._pendingAbortRequest === undefined) { - WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream); - return; - } - var abortRequest = stream._pendingAbortRequest; - stream._pendingAbortRequest = undefined; - if (abortRequest._wasAlreadyErroring) { - abortRequest._reject(storedError); - WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream); - return; - } - var promise = stream._writableStreamController[AbortSteps](abortRequest._reason); - uponPromise(promise, function () { - abortRequest._resolve(); - WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream); - }, function (reason) { - abortRequest._reject(reason); - WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream); - }); -} -function WritableStreamFinishInFlightWrite(stream) { - stream._inFlightWriteRequest._resolve(undefined); - stream._inFlightWriteRequest = undefined; -} -function WritableStreamFinishInFlightWriteWithError(stream, error) { - stream._inFlightWriteRequest._reject(error); - stream._inFlightWriteRequest = undefined; - WritableStreamDealWithRejection(stream, error); -} -function WritableStreamFinishInFlightClose(stream) { - stream._inFlightCloseRequest._resolve(undefined); - stream._inFlightCloseRequest = undefined; - var state = stream._state; - if (state === 'erroring') { - // The error was too late to do anything, so it is ignored. - stream._storedError = undefined; - if (stream._pendingAbortRequest !== undefined) { - stream._pendingAbortRequest._resolve(); - stream._pendingAbortRequest = undefined; - } - } - stream._state = 'closed'; - var writer = stream._writer; - if (writer !== undefined) { - defaultWriterClosedPromiseResolve(writer); - } -} -function WritableStreamFinishInFlightCloseWithError(stream, error) { - stream._inFlightCloseRequest._reject(error); - stream._inFlightCloseRequest = undefined; - // Never execute sink abort() after sink close(). - if (stream._pendingAbortRequest !== undefined) { - stream._pendingAbortRequest._reject(error); - stream._pendingAbortRequest = undefined; - } - WritableStreamDealWithRejection(stream, error); -} -// TODO(ricea): Fix alphabetical order. -function WritableStreamCloseQueuedOrInFlight(stream) { - if (stream._closeRequest === undefined && stream._inFlightCloseRequest === undefined) { - return false; - } - return true; -} -function WritableStreamHasOperationMarkedInFlight(stream) { - if (stream._inFlightWriteRequest === undefined && stream._inFlightCloseRequest === undefined) { - return false; - } - return true; -} -function WritableStreamMarkCloseRequestInFlight(stream) { - stream._inFlightCloseRequest = stream._closeRequest; - stream._closeRequest = undefined; -} -function WritableStreamMarkFirstWriteRequestInFlight(stream) { - stream._inFlightWriteRequest = stream._writeRequests.shift(); -} -function WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream) { - if (stream._closeRequest !== undefined) { - stream._closeRequest._reject(stream._storedError); - stream._closeRequest = undefined; - } - var writer = stream._writer; - if (writer !== undefined) { - defaultWriterClosedPromiseReject(writer, stream._storedError); - } -} -function WritableStreamUpdateBackpressure(stream, backpressure) { - var writer = stream._writer; - if (writer !== undefined && backpressure !== stream._backpressure) { - if (backpressure) { - defaultWriterReadyPromiseReset(writer); - } - else { - defaultWriterReadyPromiseResolve(writer); - } - } - stream._backpressure = backpressure; -} -/** - * A default writer vended by a {@link WritableStream}. - * - * @public - */ -var WritableStreamDefaultWriter = /** @class */ (function () { - function WritableStreamDefaultWriter(stream) { - assertRequiredArgument(stream, 1, 'WritableStreamDefaultWriter'); - assertWritableStream(stream, 'First parameter'); - if (IsWritableStreamLocked(stream)) { - throw new TypeError('This stream has already been locked for exclusive writing by another writer'); - } - this._ownerWritableStream = stream; - stream._writer = this; - var state = stream._state; - if (state === 'writable') { - if (!WritableStreamCloseQueuedOrInFlight(stream) && stream._backpressure) { - defaultWriterReadyPromiseInitialize(this); - } - else { - defaultWriterReadyPromiseInitializeAsResolved(this); - } - defaultWriterClosedPromiseInitialize(this); - } - else if (state === 'erroring') { - defaultWriterReadyPromiseInitializeAsRejected(this, stream._storedError); - defaultWriterClosedPromiseInitialize(this); - } - else if (state === 'closed') { - defaultWriterReadyPromiseInitializeAsResolved(this); - defaultWriterClosedPromiseInitializeAsResolved(this); - } - else { - var storedError = stream._storedError; - defaultWriterReadyPromiseInitializeAsRejected(this, storedError); - defaultWriterClosedPromiseInitializeAsRejected(this, storedError); - } - } - Object.defineProperty(WritableStreamDefaultWriter.prototype, "closed", { - /** - * Returns a promise that will be fulfilled when the stream becomes closed, or rejected if the stream ever errors or - * the writer’s lock is released before the stream finishes closing. - */ - get: function () { - if (!IsWritableStreamDefaultWriter(this)) { - return promiseRejectedWith(defaultWriterBrandCheckException('closed')); - } - return this._closedPromise; - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(WritableStreamDefaultWriter.prototype, "desiredSize", { - /** - * Returns the desired size to fill the stream’s internal queue. It can be negative, if the queue is over-full. - * A producer can use this information to determine the right amount of data to write. - * - * It will be `null` if the stream cannot be successfully written to (due to either being errored, or having an abort - * queued up). It will return zero if the stream is closed. And the getter will throw an exception if invoked when - * the writer’s lock is released. - */ - get: function () { - if (!IsWritableStreamDefaultWriter(this)) { - throw defaultWriterBrandCheckException('desiredSize'); - } - if (this._ownerWritableStream === undefined) { - throw defaultWriterLockException('desiredSize'); - } - return WritableStreamDefaultWriterGetDesiredSize(this); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(WritableStreamDefaultWriter.prototype, "ready", { - /** - * Returns a promise that will be fulfilled when the desired size to fill the stream’s internal queue transitions - * from non-positive to positive, signaling that it is no longer applying backpressure. Once the desired size dips - * back to zero or below, the getter will return a new promise that stays pending until the next transition. - * - * If the stream becomes errored or aborted, or the writer’s lock is released, the returned promise will become - * rejected. - */ - get: function () { - if (!IsWritableStreamDefaultWriter(this)) { - return promiseRejectedWith(defaultWriterBrandCheckException('ready')); - } - return this._readyPromise; - }, - enumerable: false, - configurable: true - }); - /** - * If the reader is active, behaves the same as {@link WritableStream.abort | stream.abort(reason)}. - */ - WritableStreamDefaultWriter.prototype.abort = function (reason) { - if (reason === void 0) { reason = undefined; } - if (!IsWritableStreamDefaultWriter(this)) { - return promiseRejectedWith(defaultWriterBrandCheckException('abort')); - } - if (this._ownerWritableStream === undefined) { - return promiseRejectedWith(defaultWriterLockException('abort')); - } - return WritableStreamDefaultWriterAbort(this, reason); - }; - /** - * If the reader is active, behaves the same as {@link WritableStream.close | stream.close()}. - */ - WritableStreamDefaultWriter.prototype.close = function () { - if (!IsWritableStreamDefaultWriter(this)) { - return promiseRejectedWith(defaultWriterBrandCheckException('close')); - } - var stream = this._ownerWritableStream; - if (stream === undefined) { - return promiseRejectedWith(defaultWriterLockException('close')); - } - if (WritableStreamCloseQueuedOrInFlight(stream)) { - return promiseRejectedWith(new TypeError('Cannot close an already-closing stream')); - } - return WritableStreamDefaultWriterClose(this); - }; - /** - * Releases the writer’s lock on the corresponding stream. After the lock is released, the writer is no longer active. - * If the associated stream is errored when the lock is released, the writer will appear errored in the same way from - * now on; otherwise, the writer will appear closed. - * - * Note that the lock can still be released even if some ongoing writes have not yet finished (i.e. even if the - * promises returned from previous calls to {@link WritableStreamDefaultWriter.write | write()} have not yet settled). - * It’s not necessary to hold the lock on the writer for the duration of the write; the lock instead simply prevents - * other producers from writing in an interleaved manner. - */ - WritableStreamDefaultWriter.prototype.releaseLock = function () { - if (!IsWritableStreamDefaultWriter(this)) { - throw defaultWriterBrandCheckException('releaseLock'); - } - var stream = this._ownerWritableStream; - if (stream === undefined) { - return; - } - WritableStreamDefaultWriterRelease(this); - }; - WritableStreamDefaultWriter.prototype.write = function (chunk) { - if (chunk === void 0) { chunk = undefined; } - if (!IsWritableStreamDefaultWriter(this)) { - return promiseRejectedWith(defaultWriterBrandCheckException('write')); - } - if (this._ownerWritableStream === undefined) { - return promiseRejectedWith(defaultWriterLockException('write to')); - } - return WritableStreamDefaultWriterWrite(this, chunk); - }; - return WritableStreamDefaultWriter; -}()); -Object.defineProperties(WritableStreamDefaultWriter.prototype, { - abort: { enumerable: true }, - close: { enumerable: true }, - releaseLock: { enumerable: true }, - write: { enumerable: true }, - closed: { enumerable: true }, - desiredSize: { enumerable: true }, - ready: { enumerable: true } -}); -if (typeof SymbolPolyfill.toStringTag === 'symbol') { - Object.defineProperty(WritableStreamDefaultWriter.prototype, SymbolPolyfill.toStringTag, { - value: 'WritableStreamDefaultWriter', - configurable: true - }); -} -// Abstract operations for the WritableStreamDefaultWriter. -function IsWritableStreamDefaultWriter(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_ownerWritableStream')) { - return false; - } - return x instanceof WritableStreamDefaultWriter; -} -// A client of WritableStreamDefaultWriter may use these functions directly to bypass state check. -function WritableStreamDefaultWriterAbort(writer, reason) { - var stream = writer._ownerWritableStream; - return WritableStreamAbort(stream, reason); -} -function WritableStreamDefaultWriterClose(writer) { - var stream = writer._ownerWritableStream; - return WritableStreamClose(stream); -} -function WritableStreamDefaultWriterCloseWithErrorPropagation(writer) { - var stream = writer._ownerWritableStream; - var state = stream._state; - if (WritableStreamCloseQueuedOrInFlight(stream) || state === 'closed') { - return promiseResolvedWith(undefined); - } - if (state === 'errored') { - return promiseRejectedWith(stream._storedError); - } - return WritableStreamDefaultWriterClose(writer); -} -function WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, error) { - if (writer._closedPromiseState === 'pending') { - defaultWriterClosedPromiseReject(writer, error); - } - else { - defaultWriterClosedPromiseResetToRejected(writer, error); - } -} -function WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, error) { - if (writer._readyPromiseState === 'pending') { - defaultWriterReadyPromiseReject(writer, error); - } - else { - defaultWriterReadyPromiseResetToRejected(writer, error); - } -} -function WritableStreamDefaultWriterGetDesiredSize(writer) { - var stream = writer._ownerWritableStream; - var state = stream._state; - if (state === 'errored' || state === 'erroring') { - return null; - } - if (state === 'closed') { - return 0; - } - return WritableStreamDefaultControllerGetDesiredSize(stream._writableStreamController); -} -function WritableStreamDefaultWriterRelease(writer) { - var stream = writer._ownerWritableStream; - var releasedError = new TypeError("Writer was released and can no longer be used to monitor the stream's closedness"); - WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, releasedError); - // The state transitions to "errored" before the sink abort() method runs, but the writer.closed promise is not - // rejected until afterwards. This means that simply testing state will not work. - WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, releasedError); - stream._writer = undefined; - writer._ownerWritableStream = undefined; -} -function WritableStreamDefaultWriterWrite(writer, chunk) { - var stream = writer._ownerWritableStream; - var controller = stream._writableStreamController; - var chunkSize = WritableStreamDefaultControllerGetChunkSize(controller, chunk); - if (stream !== writer._ownerWritableStream) { - return promiseRejectedWith(defaultWriterLockException('write to')); - } - var state = stream._state; - if (state === 'errored') { - return promiseRejectedWith(stream._storedError); - } - if (WritableStreamCloseQueuedOrInFlight(stream) || state === 'closed') { - return promiseRejectedWith(new TypeError('The stream is closing or closed and cannot be written to')); - } - if (state === 'erroring') { - return promiseRejectedWith(stream._storedError); - } - var promise = WritableStreamAddWriteRequest(stream); - WritableStreamDefaultControllerWrite(controller, chunk, chunkSize); - return promise; -} -var closeSentinel = {}; -/** - * Allows control of a {@link WritableStream | writable stream}'s state and internal queue. - * - * @public - */ -var WritableStreamDefaultController = /** @class */ (function () { - function WritableStreamDefaultController() { - throw new TypeError('Illegal constructor'); - } - Object.defineProperty(WritableStreamDefaultController.prototype, "abortReason", { - /** - * The reason which was passed to `WritableStream.abort(reason)` when the stream was aborted. - * - * @deprecated - * This property has been removed from the specification, see https://github.com/whatwg/streams/pull/1177. - * Use {@link WritableStreamDefaultController.signal}'s `reason` instead. - */ - get: function () { - if (!IsWritableStreamDefaultController(this)) { - throw defaultControllerBrandCheckException$2('abortReason'); - } - return this._abortReason; - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(WritableStreamDefaultController.prototype, "signal", { - /** - * An `AbortSignal` that can be used to abort the pending write or close operation when the stream is aborted. - */ - get: function () { - if (!IsWritableStreamDefaultController(this)) { - throw defaultControllerBrandCheckException$2('signal'); - } - if (this._abortController === undefined) { - // Older browsers or older Node versions may not support `AbortController` or `AbortSignal`. - // We don't want to bundle and ship an `AbortController` polyfill together with our polyfill, - // so instead we only implement support for `signal` if we find a global `AbortController` constructor. - throw new TypeError('WritableStreamDefaultController.prototype.signal is not supported'); - } - return this._abortController.signal; - }, - enumerable: false, - configurable: true - }); - /** - * Closes the controlled writable stream, making all future interactions with it fail with the given error `e`. - * - * This method is rarely used, since usually it suffices to return a rejected promise from one of the underlying - * sink's methods. However, it can be useful for suddenly shutting down a stream in response to an event outside the - * normal lifecycle of interactions with the underlying sink. - */ - WritableStreamDefaultController.prototype.error = function (e) { - if (e === void 0) { e = undefined; } - if (!IsWritableStreamDefaultController(this)) { - throw defaultControllerBrandCheckException$2('error'); - } - var state = this._controlledWritableStream._state; - if (state !== 'writable') { - // The stream is closed, errored or will be soon. The sink can't do anything useful if it gets an error here, so - // just treat it as a no-op. - return; - } - WritableStreamDefaultControllerError(this, e); - }; - /** @internal */ - WritableStreamDefaultController.prototype[AbortSteps] = function (reason) { - var result = this._abortAlgorithm(reason); - WritableStreamDefaultControllerClearAlgorithms(this); - return result; - }; - /** @internal */ - WritableStreamDefaultController.prototype[ErrorSteps] = function () { - ResetQueue(this); - }; - return WritableStreamDefaultController; -}()); -Object.defineProperties(WritableStreamDefaultController.prototype, { - abortReason: { enumerable: true }, - signal: { enumerable: true }, - error: { enumerable: true } -}); -if (typeof SymbolPolyfill.toStringTag === 'symbol') { - Object.defineProperty(WritableStreamDefaultController.prototype, SymbolPolyfill.toStringTag, { - value: 'WritableStreamDefaultController', - configurable: true - }); -} -// Abstract operations implementing interface required by the WritableStream. -function IsWritableStreamDefaultController(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_controlledWritableStream')) { - return false; - } - return x instanceof WritableStreamDefaultController; -} -function SetUpWritableStreamDefaultController(stream, controller, startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm) { - controller._controlledWritableStream = stream; - stream._writableStreamController = controller; - // Need to set the slots so that the assert doesn't fire. In the spec the slots already exist implicitly. - controller._queue = undefined; - controller._queueTotalSize = undefined; - ResetQueue(controller); - controller._abortReason = undefined; - controller._abortController = createAbortController(); - controller._started = false; - controller._strategySizeAlgorithm = sizeAlgorithm; - controller._strategyHWM = highWaterMark; - controller._writeAlgorithm = writeAlgorithm; - controller._closeAlgorithm = closeAlgorithm; - controller._abortAlgorithm = abortAlgorithm; - var backpressure = WritableStreamDefaultControllerGetBackpressure(controller); - WritableStreamUpdateBackpressure(stream, backpressure); - var startResult = startAlgorithm(); - var startPromise = promiseResolvedWith(startResult); - uponPromise(startPromise, function () { - controller._started = true; - WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller); - }, function (r) { - controller._started = true; - WritableStreamDealWithRejection(stream, r); - }); -} -function SetUpWritableStreamDefaultControllerFromUnderlyingSink(stream, underlyingSink, highWaterMark, sizeAlgorithm) { - var controller = Object.create(WritableStreamDefaultController.prototype); - var startAlgorithm = function () { return undefined; }; - var writeAlgorithm = function () { return promiseResolvedWith(undefined); }; - var closeAlgorithm = function () { return promiseResolvedWith(undefined); }; - var abortAlgorithm = function () { return promiseResolvedWith(undefined); }; - if (underlyingSink.start !== undefined) { - startAlgorithm = function () { return underlyingSink.start(controller); }; - } - if (underlyingSink.write !== undefined) { - writeAlgorithm = function (chunk) { return underlyingSink.write(chunk, controller); }; - } - if (underlyingSink.close !== undefined) { - closeAlgorithm = function () { return underlyingSink.close(); }; - } - if (underlyingSink.abort !== undefined) { - abortAlgorithm = function (reason) { return underlyingSink.abort(reason); }; - } - SetUpWritableStreamDefaultController(stream, controller, startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm); -} -// ClearAlgorithms may be called twice. Erroring the same stream in multiple ways will often result in redundant calls. -function WritableStreamDefaultControllerClearAlgorithms(controller) { - controller._writeAlgorithm = undefined; - controller._closeAlgorithm = undefined; - controller._abortAlgorithm = undefined; - controller._strategySizeAlgorithm = undefined; -} -function WritableStreamDefaultControllerClose(controller) { - EnqueueValueWithSize(controller, closeSentinel, 0); - WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller); -} -function WritableStreamDefaultControllerGetChunkSize(controller, chunk) { - try { - return controller._strategySizeAlgorithm(chunk); - } - catch (chunkSizeE) { - WritableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE); - return 1; - } -} -function WritableStreamDefaultControllerGetDesiredSize(controller) { - return controller._strategyHWM - controller._queueTotalSize; -} -function WritableStreamDefaultControllerWrite(controller, chunk, chunkSize) { - try { - EnqueueValueWithSize(controller, chunk, chunkSize); - } - catch (enqueueE) { - WritableStreamDefaultControllerErrorIfNeeded(controller, enqueueE); - return; - } - var stream = controller._controlledWritableStream; - if (!WritableStreamCloseQueuedOrInFlight(stream) && stream._state === 'writable') { - var backpressure = WritableStreamDefaultControllerGetBackpressure(controller); - WritableStreamUpdateBackpressure(stream, backpressure); - } - WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller); -} -// Abstract operations for the WritableStreamDefaultController. -function WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller) { - var stream = controller._controlledWritableStream; - if (!controller._started) { - return; - } - if (stream._inFlightWriteRequest !== undefined) { - return; - } - var state = stream._state; - if (state === 'erroring') { - WritableStreamFinishErroring(stream); - return; - } - if (controller._queue.length === 0) { - return; - } - var value = PeekQueueValue(controller); - if (value === closeSentinel) { - WritableStreamDefaultControllerProcessClose(controller); - } - else { - WritableStreamDefaultControllerProcessWrite(controller, value); - } -} -function WritableStreamDefaultControllerErrorIfNeeded(controller, error) { - if (controller._controlledWritableStream._state === 'writable') { - WritableStreamDefaultControllerError(controller, error); - } -} -function WritableStreamDefaultControllerProcessClose(controller) { - var stream = controller._controlledWritableStream; - WritableStreamMarkCloseRequestInFlight(stream); - DequeueValue(controller); - var sinkClosePromise = controller._closeAlgorithm(); - WritableStreamDefaultControllerClearAlgorithms(controller); - uponPromise(sinkClosePromise, function () { - WritableStreamFinishInFlightClose(stream); - }, function (reason) { - WritableStreamFinishInFlightCloseWithError(stream, reason); - }); -} -function WritableStreamDefaultControllerProcessWrite(controller, chunk) { - var stream = controller._controlledWritableStream; - WritableStreamMarkFirstWriteRequestInFlight(stream); - var sinkWritePromise = controller._writeAlgorithm(chunk); - uponPromise(sinkWritePromise, function () { - WritableStreamFinishInFlightWrite(stream); - var state = stream._state; - DequeueValue(controller); - if (!WritableStreamCloseQueuedOrInFlight(stream) && state === 'writable') { - var backpressure = WritableStreamDefaultControllerGetBackpressure(controller); - WritableStreamUpdateBackpressure(stream, backpressure); - } - WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller); - }, function (reason) { - if (stream._state === 'writable') { - WritableStreamDefaultControllerClearAlgorithms(controller); - } - WritableStreamFinishInFlightWriteWithError(stream, reason); - }); -} -function WritableStreamDefaultControllerGetBackpressure(controller) { - var desiredSize = WritableStreamDefaultControllerGetDesiredSize(controller); - return desiredSize <= 0; -} -// A client of WritableStreamDefaultController may use these functions directly to bypass state check. -function WritableStreamDefaultControllerError(controller, error) { - var stream = controller._controlledWritableStream; - WritableStreamDefaultControllerClearAlgorithms(controller); - WritableStreamStartErroring(stream, error); -} -// Helper functions for the WritableStream. -function streamBrandCheckException$2(name) { - return new TypeError("WritableStream.prototype." + name + " can only be used on a WritableStream"); -} -// Helper functions for the WritableStreamDefaultController. -function defaultControllerBrandCheckException$2(name) { - return new TypeError("WritableStreamDefaultController.prototype." + name + " can only be used on a WritableStreamDefaultController"); -} -// Helper functions for the WritableStreamDefaultWriter. -function defaultWriterBrandCheckException(name) { - return new TypeError("WritableStreamDefaultWriter.prototype." + name + " can only be used on a WritableStreamDefaultWriter"); -} -function defaultWriterLockException(name) { - return new TypeError('Cannot ' + name + ' a stream using a released writer'); -} -function defaultWriterClosedPromiseInitialize(writer) { - writer._closedPromise = newPromise(function (resolve, reject) { - writer._closedPromise_resolve = resolve; - writer._closedPromise_reject = reject; - writer._closedPromiseState = 'pending'; - }); -} -function defaultWriterClosedPromiseInitializeAsRejected(writer, reason) { - defaultWriterClosedPromiseInitialize(writer); - defaultWriterClosedPromiseReject(writer, reason); -} -function defaultWriterClosedPromiseInitializeAsResolved(writer) { - defaultWriterClosedPromiseInitialize(writer); - defaultWriterClosedPromiseResolve(writer); -} -function defaultWriterClosedPromiseReject(writer, reason) { - if (writer._closedPromise_reject === undefined) { - return; - } - setPromiseIsHandledToTrue(writer._closedPromise); - writer._closedPromise_reject(reason); - writer._closedPromise_resolve = undefined; - writer._closedPromise_reject = undefined; - writer._closedPromiseState = 'rejected'; -} -function defaultWriterClosedPromiseResetToRejected(writer, reason) { - defaultWriterClosedPromiseInitializeAsRejected(writer, reason); -} -function defaultWriterClosedPromiseResolve(writer) { - if (writer._closedPromise_resolve === undefined) { - return; - } - writer._closedPromise_resolve(undefined); - writer._closedPromise_resolve = undefined; - writer._closedPromise_reject = undefined; - writer._closedPromiseState = 'resolved'; -} -function defaultWriterReadyPromiseInitialize(writer) { - writer._readyPromise = newPromise(function (resolve, reject) { - writer._readyPromise_resolve = resolve; - writer._readyPromise_reject = reject; - }); - writer._readyPromiseState = 'pending'; -} -function defaultWriterReadyPromiseInitializeAsRejected(writer, reason) { - defaultWriterReadyPromiseInitialize(writer); - defaultWriterReadyPromiseReject(writer, reason); -} -function defaultWriterReadyPromiseInitializeAsResolved(writer) { - defaultWriterReadyPromiseInitialize(writer); - defaultWriterReadyPromiseResolve(writer); -} -function defaultWriterReadyPromiseReject(writer, reason) { - if (writer._readyPromise_reject === undefined) { - return; - } - setPromiseIsHandledToTrue(writer._readyPromise); - writer._readyPromise_reject(reason); - writer._readyPromise_resolve = undefined; - writer._readyPromise_reject = undefined; - writer._readyPromiseState = 'rejected'; -} -function defaultWriterReadyPromiseReset(writer) { - defaultWriterReadyPromiseInitialize(writer); -} -function defaultWriterReadyPromiseResetToRejected(writer, reason) { - defaultWriterReadyPromiseInitializeAsRejected(writer, reason); -} -function defaultWriterReadyPromiseResolve(writer) { - if (writer._readyPromise_resolve === undefined) { - return; - } - writer._readyPromise_resolve(undefined); - writer._readyPromise_resolve = undefined; - writer._readyPromise_reject = undefined; - writer._readyPromiseState = 'fulfilled'; -} - -/// -var NativeDOMException = typeof DOMException !== 'undefined' ? DOMException : undefined; - -/// -function isDOMExceptionConstructor(ctor) { - if (!(typeof ctor === 'function' || typeof ctor === 'object')) { - return false; - } - try { - new ctor(); - return true; - } - catch (_a) { - return false; - } -} -function createDOMExceptionPolyfill() { - // eslint-disable-next-line no-shadow - var ctor = function DOMException(message, name) { - this.message = message || ''; - this.name = name || 'Error'; - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - }; - ctor.prototype = Object.create(Error.prototype); - Object.defineProperty(ctor.prototype, 'constructor', { value: ctor, writable: true, configurable: true }); - return ctor; -} -// eslint-disable-next-line no-redeclare -var DOMException$1 = isDOMExceptionConstructor(NativeDOMException) ? NativeDOMException : createDOMExceptionPolyfill(); - -function ReadableStreamPipeTo(source, dest, preventClose, preventAbort, preventCancel, signal) { - var reader = AcquireReadableStreamDefaultReader(source); - var writer = AcquireWritableStreamDefaultWriter(dest); - source._disturbed = true; - var shuttingDown = false; - // This is used to keep track of the spec's requirement that we wait for ongoing writes during shutdown. - var currentWrite = promiseResolvedWith(undefined); - return newPromise(function (resolve, reject) { - var abortAlgorithm; - if (signal !== undefined) { - abortAlgorithm = function () { - var error = new DOMException$1('Aborted', 'AbortError'); - var actions = []; - if (!preventAbort) { - actions.push(function () { - if (dest._state === 'writable') { - return WritableStreamAbort(dest, error); - } - return promiseResolvedWith(undefined); - }); - } - if (!preventCancel) { - actions.push(function () { - if (source._state === 'readable') { - return ReadableStreamCancel(source, error); - } - return promiseResolvedWith(undefined); - }); - } - shutdownWithAction(function () { return Promise.all(actions.map(function (action) { return action(); })); }, true, error); - }; - if (signal.aborted) { - abortAlgorithm(); - return; - } - signal.addEventListener('abort', abortAlgorithm); - } - // Using reader and writer, read all chunks from this and write them to dest - // - Backpressure must be enforced - // - Shutdown must stop all activity - function pipeLoop() { - return newPromise(function (resolveLoop, rejectLoop) { - function next(done) { - if (done) { - resolveLoop(); - } - else { - // Use `PerformPromiseThen` instead of `uponPromise` to avoid - // adding unnecessary `.catch(rethrowAssertionErrorRejection)` handlers - PerformPromiseThen(pipeStep(), next, rejectLoop); - } - } - next(false); - }); - } - function pipeStep() { - if (shuttingDown) { - return promiseResolvedWith(true); - } - return PerformPromiseThen(writer._readyPromise, function () { - return newPromise(function (resolveRead, rejectRead) { - ReadableStreamDefaultReaderRead(reader, { - _chunkSteps: function (chunk) { - currentWrite = PerformPromiseThen(WritableStreamDefaultWriterWrite(writer, chunk), undefined, noop); - resolveRead(false); - }, - _closeSteps: function () { return resolveRead(true); }, - _errorSteps: rejectRead - }); - }); - }); - } - // Errors must be propagated forward - isOrBecomesErrored(source, reader._closedPromise, function (storedError) { - if (!preventAbort) { - shutdownWithAction(function () { return WritableStreamAbort(dest, storedError); }, true, storedError); - } - else { - shutdown(true, storedError); - } - }); - // Errors must be propagated backward - isOrBecomesErrored(dest, writer._closedPromise, function (storedError) { - if (!preventCancel) { - shutdownWithAction(function () { return ReadableStreamCancel(source, storedError); }, true, storedError); - } - else { - shutdown(true, storedError); - } - }); - // Closing must be propagated forward - isOrBecomesClosed(source, reader._closedPromise, function () { - if (!preventClose) { - shutdownWithAction(function () { return WritableStreamDefaultWriterCloseWithErrorPropagation(writer); }); - } - else { - shutdown(); - } - }); - // Closing must be propagated backward - if (WritableStreamCloseQueuedOrInFlight(dest) || dest._state === 'closed') { - var destClosed_1 = new TypeError('the destination writable stream closed before all data could be piped to it'); - if (!preventCancel) { - shutdownWithAction(function () { return ReadableStreamCancel(source, destClosed_1); }, true, destClosed_1); - } - else { - shutdown(true, destClosed_1); - } - } - setPromiseIsHandledToTrue(pipeLoop()); - function waitForWritesToFinish() { - // Another write may have started while we were waiting on this currentWrite, so we have to be sure to wait - // for that too. - var oldCurrentWrite = currentWrite; - return PerformPromiseThen(currentWrite, function () { return oldCurrentWrite !== currentWrite ? waitForWritesToFinish() : undefined; }); - } - function isOrBecomesErrored(stream, promise, action) { - if (stream._state === 'errored') { - action(stream._storedError); - } - else { - uponRejection(promise, action); - } - } - function isOrBecomesClosed(stream, promise, action) { - if (stream._state === 'closed') { - action(); - } - else { - uponFulfillment(promise, action); - } - } - function shutdownWithAction(action, originalIsError, originalError) { - if (shuttingDown) { - return; - } - shuttingDown = true; - if (dest._state === 'writable' && !WritableStreamCloseQueuedOrInFlight(dest)) { - uponFulfillment(waitForWritesToFinish(), doTheRest); - } - else { - doTheRest(); - } - function doTheRest() { - uponPromise(action(), function () { return finalize(originalIsError, originalError); }, function (newError) { return finalize(true, newError); }); - } - } - function shutdown(isError, error) { - if (shuttingDown) { - return; - } - shuttingDown = true; - if (dest._state === 'writable' && !WritableStreamCloseQueuedOrInFlight(dest)) { - uponFulfillment(waitForWritesToFinish(), function () { return finalize(isError, error); }); - } - else { - finalize(isError, error); - } - } - function finalize(isError, error) { - WritableStreamDefaultWriterRelease(writer); - ReadableStreamReaderGenericRelease(reader); - if (signal !== undefined) { - signal.removeEventListener('abort', abortAlgorithm); - } - if (isError) { - reject(error); - } - else { - resolve(undefined); - } - } - }); -} - -/** - * Allows control of a {@link ReadableStream | readable stream}'s state and internal queue. - * - * @public - */ -var ReadableStreamDefaultController = /** @class */ (function () { - function ReadableStreamDefaultController() { - throw new TypeError('Illegal constructor'); - } - Object.defineProperty(ReadableStreamDefaultController.prototype, "desiredSize", { - /** - * Returns the desired size to fill the controlled stream's internal queue. It can be negative, if the queue is - * over-full. An underlying source ought to use this information to determine when and how to apply backpressure. - */ - get: function () { - if (!IsReadableStreamDefaultController(this)) { - throw defaultControllerBrandCheckException$1('desiredSize'); - } - return ReadableStreamDefaultControllerGetDesiredSize(this); - }, - enumerable: false, - configurable: true - }); - /** - * Closes the controlled readable stream. Consumers will still be able to read any previously-enqueued chunks from - * the stream, but once those are read, the stream will become closed. - */ - ReadableStreamDefaultController.prototype.close = function () { - if (!IsReadableStreamDefaultController(this)) { - throw defaultControllerBrandCheckException$1('close'); - } - if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(this)) { - throw new TypeError('The stream is not in a state that permits close'); - } - ReadableStreamDefaultControllerClose(this); - }; - ReadableStreamDefaultController.prototype.enqueue = function (chunk) { - if (chunk === void 0) { chunk = undefined; } - if (!IsReadableStreamDefaultController(this)) { - throw defaultControllerBrandCheckException$1('enqueue'); - } - if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(this)) { - throw new TypeError('The stream is not in a state that permits enqueue'); - } - return ReadableStreamDefaultControllerEnqueue(this, chunk); - }; - /** - * Errors the controlled readable stream, making all future interactions with it fail with the given error `e`. - */ - ReadableStreamDefaultController.prototype.error = function (e) { - if (e === void 0) { e = undefined; } - if (!IsReadableStreamDefaultController(this)) { - throw defaultControllerBrandCheckException$1('error'); - } - ReadableStreamDefaultControllerError(this, e); - }; - /** @internal */ - ReadableStreamDefaultController.prototype[CancelSteps] = function (reason) { - ResetQueue(this); - var result = this._cancelAlgorithm(reason); - ReadableStreamDefaultControllerClearAlgorithms(this); - return result; - }; - /** @internal */ - ReadableStreamDefaultController.prototype[PullSteps] = function (readRequest) { - var stream = this._controlledReadableStream; - if (this._queue.length > 0) { - var chunk = DequeueValue(this); - if (this._closeRequested && this._queue.length === 0) { - ReadableStreamDefaultControllerClearAlgorithms(this); - ReadableStreamClose(stream); - } - else { - ReadableStreamDefaultControllerCallPullIfNeeded(this); - } - readRequest._chunkSteps(chunk); - } - else { - ReadableStreamAddReadRequest(stream, readRequest); - ReadableStreamDefaultControllerCallPullIfNeeded(this); - } - }; - return ReadableStreamDefaultController; -}()); -Object.defineProperties(ReadableStreamDefaultController.prototype, { - close: { enumerable: true }, - enqueue: { enumerable: true }, - error: { enumerable: true }, - desiredSize: { enumerable: true } -}); -if (typeof SymbolPolyfill.toStringTag === 'symbol') { - Object.defineProperty(ReadableStreamDefaultController.prototype, SymbolPolyfill.toStringTag, { - value: 'ReadableStreamDefaultController', - configurable: true - }); -} -// Abstract operations for the ReadableStreamDefaultController. -function IsReadableStreamDefaultController(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_controlledReadableStream')) { - return false; - } - return x instanceof ReadableStreamDefaultController; -} -function ReadableStreamDefaultControllerCallPullIfNeeded(controller) { - var shouldPull = ReadableStreamDefaultControllerShouldCallPull(controller); - if (!shouldPull) { - return; - } - if (controller._pulling) { - controller._pullAgain = true; - return; - } - controller._pulling = true; - var pullPromise = controller._pullAlgorithm(); - uponPromise(pullPromise, function () { - controller._pulling = false; - if (controller._pullAgain) { - controller._pullAgain = false; - ReadableStreamDefaultControllerCallPullIfNeeded(controller); - } - }, function (e) { - ReadableStreamDefaultControllerError(controller, e); - }); -} -function ReadableStreamDefaultControllerShouldCallPull(controller) { - var stream = controller._controlledReadableStream; - if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(controller)) { - return false; - } - if (!controller._started) { - return false; - } - if (IsReadableStreamLocked(stream) && ReadableStreamGetNumReadRequests(stream) > 0) { - return true; - } - var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller); - if (desiredSize > 0) { - return true; - } - return false; -} -function ReadableStreamDefaultControllerClearAlgorithms(controller) { - controller._pullAlgorithm = undefined; - controller._cancelAlgorithm = undefined; - controller._strategySizeAlgorithm = undefined; -} -// A client of ReadableStreamDefaultController may use these functions directly to bypass state check. -function ReadableStreamDefaultControllerClose(controller) { - if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(controller)) { - return; - } - var stream = controller._controlledReadableStream; - controller._closeRequested = true; - if (controller._queue.length === 0) { - ReadableStreamDefaultControllerClearAlgorithms(controller); - ReadableStreamClose(stream); - } -} -function ReadableStreamDefaultControllerEnqueue(controller, chunk) { - if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(controller)) { - return; - } - var stream = controller._controlledReadableStream; - if (IsReadableStreamLocked(stream) && ReadableStreamGetNumReadRequests(stream) > 0) { - ReadableStreamFulfillReadRequest(stream, chunk, false); - } - else { - var chunkSize = void 0; - try { - chunkSize = controller._strategySizeAlgorithm(chunk); - } - catch (chunkSizeE) { - ReadableStreamDefaultControllerError(controller, chunkSizeE); - throw chunkSizeE; - } - try { - EnqueueValueWithSize(controller, chunk, chunkSize); - } - catch (enqueueE) { - ReadableStreamDefaultControllerError(controller, enqueueE); - throw enqueueE; - } - } - ReadableStreamDefaultControllerCallPullIfNeeded(controller); -} -function ReadableStreamDefaultControllerError(controller, e) { - var stream = controller._controlledReadableStream; - if (stream._state !== 'readable') { - return; - } - ResetQueue(controller); - ReadableStreamDefaultControllerClearAlgorithms(controller); - ReadableStreamError(stream, e); -} -function ReadableStreamDefaultControllerGetDesiredSize(controller) { - var state = controller._controlledReadableStream._state; - if (state === 'errored') { - return null; - } - if (state === 'closed') { - return 0; - } - return controller._strategyHWM - controller._queueTotalSize; -} -// This is used in the implementation of TransformStream. -function ReadableStreamDefaultControllerHasBackpressure(controller) { - if (ReadableStreamDefaultControllerShouldCallPull(controller)) { - return false; - } - return true; -} -function ReadableStreamDefaultControllerCanCloseOrEnqueue(controller) { - var state = controller._controlledReadableStream._state; - if (!controller._closeRequested && state === 'readable') { - return true; - } - return false; -} -function SetUpReadableStreamDefaultController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm) { - controller._controlledReadableStream = stream; - controller._queue = undefined; - controller._queueTotalSize = undefined; - ResetQueue(controller); - controller._started = false; - controller._closeRequested = false; - controller._pullAgain = false; - controller._pulling = false; - controller._strategySizeAlgorithm = sizeAlgorithm; - controller._strategyHWM = highWaterMark; - controller._pullAlgorithm = pullAlgorithm; - controller._cancelAlgorithm = cancelAlgorithm; - stream._readableStreamController = controller; - var startResult = startAlgorithm(); - uponPromise(promiseResolvedWith(startResult), function () { - controller._started = true; - ReadableStreamDefaultControllerCallPullIfNeeded(controller); - }, function (r) { - ReadableStreamDefaultControllerError(controller, r); - }); -} -function SetUpReadableStreamDefaultControllerFromUnderlyingSource(stream, underlyingSource, highWaterMark, sizeAlgorithm) { - var controller = Object.create(ReadableStreamDefaultController.prototype); - var startAlgorithm = function () { return undefined; }; - var pullAlgorithm = function () { return promiseResolvedWith(undefined); }; - var cancelAlgorithm = function () { return promiseResolvedWith(undefined); }; - if (underlyingSource.start !== undefined) { - startAlgorithm = function () { return underlyingSource.start(controller); }; - } - if (underlyingSource.pull !== undefined) { - pullAlgorithm = function () { return underlyingSource.pull(controller); }; - } - if (underlyingSource.cancel !== undefined) { - cancelAlgorithm = function (reason) { return underlyingSource.cancel(reason); }; - } - SetUpReadableStreamDefaultController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm); -} -// Helper functions for the ReadableStreamDefaultController. -function defaultControllerBrandCheckException$1(name) { - return new TypeError("ReadableStreamDefaultController.prototype." + name + " can only be used on a ReadableStreamDefaultController"); -} - -function ReadableStreamTee(stream, cloneForBranch2) { - if (IsReadableByteStreamController(stream._readableStreamController)) { - return ReadableByteStreamTee(stream); - } - return ReadableStreamDefaultTee(stream); -} -function ReadableStreamDefaultTee(stream, cloneForBranch2) { - var reader = AcquireReadableStreamDefaultReader(stream); - var reading = false; - var readAgain = false; - var canceled1 = false; - var canceled2 = false; - var reason1; - var reason2; - var branch1; - var branch2; - var resolveCancelPromise; - var cancelPromise = newPromise(function (resolve) { - resolveCancelPromise = resolve; - }); - function pullAlgorithm() { - if (reading) { - readAgain = true; - return promiseResolvedWith(undefined); - } - reading = true; - var readRequest = { - _chunkSteps: function (chunk) { - // This needs to be delayed a microtask because it takes at least a microtask to detect errors (using - // reader._closedPromise below), and we want errors in stream to error both branches immediately. We cannot let - // successful synchronously-available reads get ahead of asynchronously-available errors. - queueMicrotask$1(function () { - readAgain = false; - var chunk1 = chunk; - var chunk2 = chunk; - // There is no way to access the cloning code right now in the reference implementation. - // If we add one then we'll need an implementation for serializable objects. - // if (!canceled2 && cloneForBranch2) { - // chunk2 = StructuredDeserialize(StructuredSerialize(chunk2)); - // } - if (!canceled1) { - ReadableStreamDefaultControllerEnqueue(branch1._readableStreamController, chunk1); - } - if (!canceled2) { - ReadableStreamDefaultControllerEnqueue(branch2._readableStreamController, chunk2); - } - reading = false; - if (readAgain) { - pullAlgorithm(); - } - }); - }, - _closeSteps: function () { - reading = false; - if (!canceled1) { - ReadableStreamDefaultControllerClose(branch1._readableStreamController); - } - if (!canceled2) { - ReadableStreamDefaultControllerClose(branch2._readableStreamController); - } - if (!canceled1 || !canceled2) { - resolveCancelPromise(undefined); - } - }, - _errorSteps: function () { - reading = false; - } - }; - ReadableStreamDefaultReaderRead(reader, readRequest); - return promiseResolvedWith(undefined); - } - function cancel1Algorithm(reason) { - canceled1 = true; - reason1 = reason; - if (canceled2) { - var compositeReason = CreateArrayFromList([reason1, reason2]); - var cancelResult = ReadableStreamCancel(stream, compositeReason); - resolveCancelPromise(cancelResult); - } - return cancelPromise; - } - function cancel2Algorithm(reason) { - canceled2 = true; - reason2 = reason; - if (canceled1) { - var compositeReason = CreateArrayFromList([reason1, reason2]); - var cancelResult = ReadableStreamCancel(stream, compositeReason); - resolveCancelPromise(cancelResult); - } - return cancelPromise; - } - function startAlgorithm() { - // do nothing - } - branch1 = CreateReadableStream(startAlgorithm, pullAlgorithm, cancel1Algorithm); - branch2 = CreateReadableStream(startAlgorithm, pullAlgorithm, cancel2Algorithm); - uponRejection(reader._closedPromise, function (r) { - ReadableStreamDefaultControllerError(branch1._readableStreamController, r); - ReadableStreamDefaultControllerError(branch2._readableStreamController, r); - if (!canceled1 || !canceled2) { - resolveCancelPromise(undefined); - } - }); - return [branch1, branch2]; -} -function ReadableByteStreamTee(stream) { - var reader = AcquireReadableStreamDefaultReader(stream); - var reading = false; - var readAgainForBranch1 = false; - var readAgainForBranch2 = false; - var canceled1 = false; - var canceled2 = false; - var reason1; - var reason2; - var branch1; - var branch2; - var resolveCancelPromise; - var cancelPromise = newPromise(function (resolve) { - resolveCancelPromise = resolve; - }); - function forwardReaderError(thisReader) { - uponRejection(thisReader._closedPromise, function (r) { - if (thisReader !== reader) { - return; - } - ReadableByteStreamControllerError(branch1._readableStreamController, r); - ReadableByteStreamControllerError(branch2._readableStreamController, r); - if (!canceled1 || !canceled2) { - resolveCancelPromise(undefined); - } - }); - } - function pullWithDefaultReader() { - if (IsReadableStreamBYOBReader(reader)) { - ReadableStreamReaderGenericRelease(reader); - reader = AcquireReadableStreamDefaultReader(stream); - forwardReaderError(reader); - } - var readRequest = { - _chunkSteps: function (chunk) { - // This needs to be delayed a microtask because it takes at least a microtask to detect errors (using - // reader._closedPromise below), and we want errors in stream to error both branches immediately. We cannot let - // successful synchronously-available reads get ahead of asynchronously-available errors. - queueMicrotask$1(function () { - readAgainForBranch1 = false; - readAgainForBranch2 = false; - var chunk1 = chunk; - var chunk2 = chunk; - if (!canceled1 && !canceled2) { - try { - chunk2 = CloneAsUint8Array(chunk); - } - catch (cloneE) { - ReadableByteStreamControllerError(branch1._readableStreamController, cloneE); - ReadableByteStreamControllerError(branch2._readableStreamController, cloneE); - resolveCancelPromise(ReadableStreamCancel(stream, cloneE)); - return; - } - } - if (!canceled1) { - ReadableByteStreamControllerEnqueue(branch1._readableStreamController, chunk1); - } - if (!canceled2) { - ReadableByteStreamControllerEnqueue(branch2._readableStreamController, chunk2); - } - reading = false; - if (readAgainForBranch1) { - pull1Algorithm(); - } - else if (readAgainForBranch2) { - pull2Algorithm(); - } - }); - }, - _closeSteps: function () { - reading = false; - if (!canceled1) { - ReadableByteStreamControllerClose(branch1._readableStreamController); - } - if (!canceled2) { - ReadableByteStreamControllerClose(branch2._readableStreamController); - } - if (branch1._readableStreamController._pendingPullIntos.length > 0) { - ReadableByteStreamControllerRespond(branch1._readableStreamController, 0); - } - if (branch2._readableStreamController._pendingPullIntos.length > 0) { - ReadableByteStreamControllerRespond(branch2._readableStreamController, 0); - } - if (!canceled1 || !canceled2) { - resolveCancelPromise(undefined); - } - }, - _errorSteps: function () { - reading = false; - } - }; - ReadableStreamDefaultReaderRead(reader, readRequest); - } - function pullWithBYOBReader(view, forBranch2) { - if (IsReadableStreamDefaultReader(reader)) { - ReadableStreamReaderGenericRelease(reader); - reader = AcquireReadableStreamBYOBReader(stream); - forwardReaderError(reader); - } - var byobBranch = forBranch2 ? branch2 : branch1; - var otherBranch = forBranch2 ? branch1 : branch2; - var readIntoRequest = { - _chunkSteps: function (chunk) { - // This needs to be delayed a microtask because it takes at least a microtask to detect errors (using - // reader._closedPromise below), and we want errors in stream to error both branches immediately. We cannot let - // successful synchronously-available reads get ahead of asynchronously-available errors. - queueMicrotask$1(function () { - readAgainForBranch1 = false; - readAgainForBranch2 = false; - var byobCanceled = forBranch2 ? canceled2 : canceled1; - var otherCanceled = forBranch2 ? canceled1 : canceled2; - if (!otherCanceled) { - var clonedChunk = void 0; - try { - clonedChunk = CloneAsUint8Array(chunk); - } - catch (cloneE) { - ReadableByteStreamControllerError(byobBranch._readableStreamController, cloneE); - ReadableByteStreamControllerError(otherBranch._readableStreamController, cloneE); - resolveCancelPromise(ReadableStreamCancel(stream, cloneE)); - return; - } - if (!byobCanceled) { - ReadableByteStreamControllerRespondWithNewView(byobBranch._readableStreamController, chunk); - } - ReadableByteStreamControllerEnqueue(otherBranch._readableStreamController, clonedChunk); - } - else if (!byobCanceled) { - ReadableByteStreamControllerRespondWithNewView(byobBranch._readableStreamController, chunk); - } - reading = false; - if (readAgainForBranch1) { - pull1Algorithm(); - } - else if (readAgainForBranch2) { - pull2Algorithm(); - } - }); - }, - _closeSteps: function (chunk) { - reading = false; - var byobCanceled = forBranch2 ? canceled2 : canceled1; - var otherCanceled = forBranch2 ? canceled1 : canceled2; - if (!byobCanceled) { - ReadableByteStreamControllerClose(byobBranch._readableStreamController); - } - if (!otherCanceled) { - ReadableByteStreamControllerClose(otherBranch._readableStreamController); - } - if (chunk !== undefined) { - if (!byobCanceled) { - ReadableByteStreamControllerRespondWithNewView(byobBranch._readableStreamController, chunk); - } - if (!otherCanceled && otherBranch._readableStreamController._pendingPullIntos.length > 0) { - ReadableByteStreamControllerRespond(otherBranch._readableStreamController, 0); - } - } - if (!byobCanceled || !otherCanceled) { - resolveCancelPromise(undefined); - } - }, - _errorSteps: function () { - reading = false; - } - }; - ReadableStreamBYOBReaderRead(reader, view, readIntoRequest); - } - function pull1Algorithm() { - if (reading) { - readAgainForBranch1 = true; - return promiseResolvedWith(undefined); - } - reading = true; - var byobRequest = ReadableByteStreamControllerGetBYOBRequest(branch1._readableStreamController); - if (byobRequest === null) { - pullWithDefaultReader(); - } - else { - pullWithBYOBReader(byobRequest._view, false); - } - return promiseResolvedWith(undefined); - } - function pull2Algorithm() { - if (reading) { - readAgainForBranch2 = true; - return promiseResolvedWith(undefined); - } - reading = true; - var byobRequest = ReadableByteStreamControllerGetBYOBRequest(branch2._readableStreamController); - if (byobRequest === null) { - pullWithDefaultReader(); - } - else { - pullWithBYOBReader(byobRequest._view, true); - } - return promiseResolvedWith(undefined); - } - function cancel1Algorithm(reason) { - canceled1 = true; - reason1 = reason; - if (canceled2) { - var compositeReason = CreateArrayFromList([reason1, reason2]); - var cancelResult = ReadableStreamCancel(stream, compositeReason); - resolveCancelPromise(cancelResult); - } - return cancelPromise; - } - function cancel2Algorithm(reason) { - canceled2 = true; - reason2 = reason; - if (canceled1) { - var compositeReason = CreateArrayFromList([reason1, reason2]); - var cancelResult = ReadableStreamCancel(stream, compositeReason); - resolveCancelPromise(cancelResult); - } - return cancelPromise; - } - function startAlgorithm() { - return; - } - branch1 = CreateReadableByteStream(startAlgorithm, pull1Algorithm, cancel1Algorithm); - branch2 = CreateReadableByteStream(startAlgorithm, pull2Algorithm, cancel2Algorithm); - forwardReaderError(reader); - return [branch1, branch2]; -} - -function convertUnderlyingDefaultOrByteSource(source, context) { - assertDictionary(source, context); - var original = source; - var autoAllocateChunkSize = original === null || original === void 0 ? void 0 : original.autoAllocateChunkSize; - var cancel = original === null || original === void 0 ? void 0 : original.cancel; - var pull = original === null || original === void 0 ? void 0 : original.pull; - var start = original === null || original === void 0 ? void 0 : original.start; - var type = original === null || original === void 0 ? void 0 : original.type; - return { - autoAllocateChunkSize: autoAllocateChunkSize === undefined ? - undefined : - convertUnsignedLongLongWithEnforceRange(autoAllocateChunkSize, context + " has member 'autoAllocateChunkSize' that"), - cancel: cancel === undefined ? - undefined : - convertUnderlyingSourceCancelCallback(cancel, original, context + " has member 'cancel' that"), - pull: pull === undefined ? - undefined : - convertUnderlyingSourcePullCallback(pull, original, context + " has member 'pull' that"), - start: start === undefined ? - undefined : - convertUnderlyingSourceStartCallback(start, original, context + " has member 'start' that"), - type: type === undefined ? undefined : convertReadableStreamType(type, context + " has member 'type' that") - }; -} -function convertUnderlyingSourceCancelCallback(fn, original, context) { - assertFunction(fn, context); - return function (reason) { return promiseCall(fn, original, [reason]); }; -} -function convertUnderlyingSourcePullCallback(fn, original, context) { - assertFunction(fn, context); - return function (controller) { return promiseCall(fn, original, [controller]); }; -} -function convertUnderlyingSourceStartCallback(fn, original, context) { - assertFunction(fn, context); - return function (controller) { return reflectCall(fn, original, [controller]); }; -} -function convertReadableStreamType(type, context) { - type = "" + type; - if (type !== 'bytes') { - throw new TypeError(context + " '" + type + "' is not a valid enumeration value for ReadableStreamType"); - } - return type; -} - -function convertReaderOptions(options, context) { - assertDictionary(options, context); - var mode = options === null || options === void 0 ? void 0 : options.mode; - return { - mode: mode === undefined ? undefined : convertReadableStreamReaderMode(mode, context + " has member 'mode' that") - }; -} -function convertReadableStreamReaderMode(mode, context) { - mode = "" + mode; - if (mode !== 'byob') { - throw new TypeError(context + " '" + mode + "' is not a valid enumeration value for ReadableStreamReaderMode"); - } - return mode; -} - -function convertIteratorOptions(options, context) { - assertDictionary(options, context); - var preventCancel = options === null || options === void 0 ? void 0 : options.preventCancel; - return { preventCancel: Boolean(preventCancel) }; -} - -function convertPipeOptions(options, context) { - assertDictionary(options, context); - var preventAbort = options === null || options === void 0 ? void 0 : options.preventAbort; - var preventCancel = options === null || options === void 0 ? void 0 : options.preventCancel; - var preventClose = options === null || options === void 0 ? void 0 : options.preventClose; - var signal = options === null || options === void 0 ? void 0 : options.signal; - if (signal !== undefined) { - assertAbortSignal(signal, context + " has member 'signal' that"); - } - return { - preventAbort: Boolean(preventAbort), - preventCancel: Boolean(preventCancel), - preventClose: Boolean(preventClose), - signal: signal - }; -} -function assertAbortSignal(signal, context) { - if (!isAbortSignal(signal)) { - throw new TypeError(context + " is not an AbortSignal."); - } -} - -function convertReadableWritablePair(pair, context) { - assertDictionary(pair, context); - var readable = pair === null || pair === void 0 ? void 0 : pair.readable; - assertRequiredField(readable, 'readable', 'ReadableWritablePair'); - assertReadableStream(readable, context + " has member 'readable' that"); - var writable = pair === null || pair === void 0 ? void 0 : pair.writable; - assertRequiredField(writable, 'writable', 'ReadableWritablePair'); - assertWritableStream(writable, context + " has member 'writable' that"); - return { readable: readable, writable: writable }; -} - -/** - * A readable stream represents a source of data, from which you can read. - * - * @public - */ -var ReadableStream$1 = /** @class */ (function () { - function ReadableStream(rawUnderlyingSource, rawStrategy) { - if (rawUnderlyingSource === void 0) { rawUnderlyingSource = {}; } - if (rawStrategy === void 0) { rawStrategy = {}; } - if (rawUnderlyingSource === undefined) { - rawUnderlyingSource = null; - } - else { - assertObject(rawUnderlyingSource, 'First parameter'); - } - var strategy = convertQueuingStrategy(rawStrategy, 'Second parameter'); - var underlyingSource = convertUnderlyingDefaultOrByteSource(rawUnderlyingSource, 'First parameter'); - InitializeReadableStream(this); - if (underlyingSource.type === 'bytes') { - if (strategy.size !== undefined) { - throw new RangeError('The strategy for a byte stream cannot have a size function'); - } - var highWaterMark = ExtractHighWaterMark(strategy, 0); - SetUpReadableByteStreamControllerFromUnderlyingSource(this, underlyingSource, highWaterMark); - } - else { - var sizeAlgorithm = ExtractSizeAlgorithm(strategy); - var highWaterMark = ExtractHighWaterMark(strategy, 1); - SetUpReadableStreamDefaultControllerFromUnderlyingSource(this, underlyingSource, highWaterMark, sizeAlgorithm); - } - } - Object.defineProperty(ReadableStream.prototype, "locked", { - /** - * Whether or not the readable stream is locked to a {@link ReadableStreamDefaultReader | reader}. - */ - get: function () { - if (!IsReadableStream(this)) { - throw streamBrandCheckException$1('locked'); - } - return IsReadableStreamLocked(this); - }, - enumerable: false, - configurable: true - }); - /** - * Cancels the stream, signaling a loss of interest in the stream by a consumer. - * - * The supplied `reason` argument will be given to the underlying source's {@link UnderlyingSource.cancel | cancel()} - * method, which might or might not use it. - */ - ReadableStream.prototype.cancel = function (reason) { - if (reason === void 0) { reason = undefined; } - if (!IsReadableStream(this)) { - return promiseRejectedWith(streamBrandCheckException$1('cancel')); - } - if (IsReadableStreamLocked(this)) { - return promiseRejectedWith(new TypeError('Cannot cancel a stream that already has a reader')); - } - return ReadableStreamCancel(this, reason); - }; - ReadableStream.prototype.getReader = function (rawOptions) { - if (rawOptions === void 0) { rawOptions = undefined; } - if (!IsReadableStream(this)) { - throw streamBrandCheckException$1('getReader'); - } - var options = convertReaderOptions(rawOptions, 'First parameter'); - if (options.mode === undefined) { - return AcquireReadableStreamDefaultReader(this); - } - return AcquireReadableStreamBYOBReader(this); - }; - ReadableStream.prototype.pipeThrough = function (rawTransform, rawOptions) { - if (rawOptions === void 0) { rawOptions = {}; } - if (!IsReadableStream(this)) { - throw streamBrandCheckException$1('pipeThrough'); - } - assertRequiredArgument(rawTransform, 1, 'pipeThrough'); - var transform = convertReadableWritablePair(rawTransform, 'First parameter'); - var options = convertPipeOptions(rawOptions, 'Second parameter'); - if (IsReadableStreamLocked(this)) { - throw new TypeError('ReadableStream.prototype.pipeThrough cannot be used on a locked ReadableStream'); - } - if (IsWritableStreamLocked(transform.writable)) { - throw new TypeError('ReadableStream.prototype.pipeThrough cannot be used on a locked WritableStream'); - } - var promise = ReadableStreamPipeTo(this, transform.writable, options.preventClose, options.preventAbort, options.preventCancel, options.signal); - setPromiseIsHandledToTrue(promise); - return transform.readable; - }; - ReadableStream.prototype.pipeTo = function (destination, rawOptions) { - if (rawOptions === void 0) { rawOptions = {}; } - if (!IsReadableStream(this)) { - return promiseRejectedWith(streamBrandCheckException$1('pipeTo')); - } - if (destination === undefined) { - return promiseRejectedWith("Parameter 1 is required in 'pipeTo'."); - } - if (!IsWritableStream(destination)) { - return promiseRejectedWith(new TypeError("ReadableStream.prototype.pipeTo's first argument must be a WritableStream")); - } - var options; - try { - options = convertPipeOptions(rawOptions, 'Second parameter'); - } - catch (e) { - return promiseRejectedWith(e); - } - if (IsReadableStreamLocked(this)) { - return promiseRejectedWith(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream')); - } - if (IsWritableStreamLocked(destination)) { - return promiseRejectedWith(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream')); - } - return ReadableStreamPipeTo(this, destination, options.preventClose, options.preventAbort, options.preventCancel, options.signal); - }; - /** - * Tees this readable stream, returning a two-element array containing the two resulting branches as - * new {@link ReadableStream} instances. - * - * Teeing a stream will lock it, preventing any other consumer from acquiring a reader. - * To cancel the stream, cancel both of the resulting branches; a composite cancellation reason will then be - * propagated to the stream's underlying source. - * - * Note that the chunks seen in each branch will be the same object. If the chunks are not immutable, - * this could allow interference between the two branches. - */ - ReadableStream.prototype.tee = function () { - if (!IsReadableStream(this)) { - throw streamBrandCheckException$1('tee'); - } - var branches = ReadableStreamTee(this); - return CreateArrayFromList(branches); - }; - ReadableStream.prototype.values = function (rawOptions) { - if (rawOptions === void 0) { rawOptions = undefined; } - if (!IsReadableStream(this)) { - throw streamBrandCheckException$1('values'); - } - var options = convertIteratorOptions(rawOptions, 'First parameter'); - return AcquireReadableStreamAsyncIterator(this, options.preventCancel); - }; - return ReadableStream; -}()); -Object.defineProperties(ReadableStream$1.prototype, { - cancel: { enumerable: true }, - getReader: { enumerable: true }, - pipeThrough: { enumerable: true }, - pipeTo: { enumerable: true }, - tee: { enumerable: true }, - values: { enumerable: true }, - locked: { enumerable: true } -}); -if (typeof SymbolPolyfill.toStringTag === 'symbol') { - Object.defineProperty(ReadableStream$1.prototype, SymbolPolyfill.toStringTag, { - value: 'ReadableStream', - configurable: true - }); -} -if (typeof SymbolPolyfill.asyncIterator === 'symbol') { - Object.defineProperty(ReadableStream$1.prototype, SymbolPolyfill.asyncIterator, { - value: ReadableStream$1.prototype.values, - writable: true, - configurable: true - }); -} -// Abstract operations for the ReadableStream. -// Throws if and only if startAlgorithm throws. -function CreateReadableStream(startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm) { - if (highWaterMark === void 0) { highWaterMark = 1; } - if (sizeAlgorithm === void 0) { sizeAlgorithm = function () { return 1; }; } - var stream = Object.create(ReadableStream$1.prototype); - InitializeReadableStream(stream); - var controller = Object.create(ReadableStreamDefaultController.prototype); - SetUpReadableStreamDefaultController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm); - return stream; -} -// Throws if and only if startAlgorithm throws. -function CreateReadableByteStream(startAlgorithm, pullAlgorithm, cancelAlgorithm) { - var stream = Object.create(ReadableStream$1.prototype); - InitializeReadableStream(stream); - var controller = Object.create(ReadableByteStreamController.prototype); - SetUpReadableByteStreamController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, 0, undefined); - return stream; -} -function InitializeReadableStream(stream) { - stream._state = 'readable'; - stream._reader = undefined; - stream._storedError = undefined; - stream._disturbed = false; -} -function IsReadableStream(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_readableStreamController')) { - return false; - } - return x instanceof ReadableStream$1; -} -function IsReadableStreamLocked(stream) { - if (stream._reader === undefined) { - return false; - } - return true; -} -// ReadableStream API exposed for controllers. -function ReadableStreamCancel(stream, reason) { - stream._disturbed = true; - if (stream._state === 'closed') { - return promiseResolvedWith(undefined); - } - if (stream._state === 'errored') { - return promiseRejectedWith(stream._storedError); - } - ReadableStreamClose(stream); - var reader = stream._reader; - if (reader !== undefined && IsReadableStreamBYOBReader(reader)) { - reader._readIntoRequests.forEach(function (readIntoRequest) { - readIntoRequest._closeSteps(undefined); - }); - reader._readIntoRequests = new SimpleQueue(); - } - var sourceCancelPromise = stream._readableStreamController[CancelSteps](reason); - return transformPromiseWith(sourceCancelPromise, noop); -} -function ReadableStreamClose(stream) { - stream._state = 'closed'; - var reader = stream._reader; - if (reader === undefined) { - return; - } - defaultReaderClosedPromiseResolve(reader); - if (IsReadableStreamDefaultReader(reader)) { - reader._readRequests.forEach(function (readRequest) { - readRequest._closeSteps(); - }); - reader._readRequests = new SimpleQueue(); - } -} -function ReadableStreamError(stream, e) { - stream._state = 'errored'; - stream._storedError = e; - var reader = stream._reader; - if (reader === undefined) { - return; - } - defaultReaderClosedPromiseReject(reader, e); - if (IsReadableStreamDefaultReader(reader)) { - reader._readRequests.forEach(function (readRequest) { - readRequest._errorSteps(e); - }); - reader._readRequests = new SimpleQueue(); - } - else { - reader._readIntoRequests.forEach(function (readIntoRequest) { - readIntoRequest._errorSteps(e); - }); - reader._readIntoRequests = new SimpleQueue(); - } -} -// Helper functions for the ReadableStream. -function streamBrandCheckException$1(name) { - return new TypeError("ReadableStream.prototype." + name + " can only be used on a ReadableStream"); -} - -function convertQueuingStrategyInit(init, context) { - assertDictionary(init, context); - var highWaterMark = init === null || init === void 0 ? void 0 : init.highWaterMark; - assertRequiredField(highWaterMark, 'highWaterMark', 'QueuingStrategyInit'); - return { - highWaterMark: convertUnrestrictedDouble(highWaterMark) - }; -} - -// The size function must not have a prototype property nor be a constructor -var byteLengthSizeFunction = function (chunk) { - return chunk.byteLength; -}; -try { - Object.defineProperty(byteLengthSizeFunction, 'name', { - value: 'size', - configurable: true - }); -} -catch (_a) { - // This property is non-configurable in older browsers, so ignore if this throws. - // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name#browser_compatibility -} -/** - * A queuing strategy that counts the number of bytes in each chunk. - * - * @public - */ -var ByteLengthQueuingStrategy = /** @class */ (function () { - function ByteLengthQueuingStrategy(options) { - assertRequiredArgument(options, 1, 'ByteLengthQueuingStrategy'); - options = convertQueuingStrategyInit(options, 'First parameter'); - this._byteLengthQueuingStrategyHighWaterMark = options.highWaterMark; - } - Object.defineProperty(ByteLengthQueuingStrategy.prototype, "highWaterMark", { - /** - * Returns the high water mark provided to the constructor. - */ - get: function () { - if (!IsByteLengthQueuingStrategy(this)) { - throw byteLengthBrandCheckException('highWaterMark'); - } - return this._byteLengthQueuingStrategyHighWaterMark; - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(ByteLengthQueuingStrategy.prototype, "size", { - /** - * Measures the size of `chunk` by returning the value of its `byteLength` property. - */ - get: function () { - if (!IsByteLengthQueuingStrategy(this)) { - throw byteLengthBrandCheckException('size'); - } - return byteLengthSizeFunction; - }, - enumerable: false, - configurable: true - }); - return ByteLengthQueuingStrategy; -}()); -Object.defineProperties(ByteLengthQueuingStrategy.prototype, { - highWaterMark: { enumerable: true }, - size: { enumerable: true } -}); -if (typeof SymbolPolyfill.toStringTag === 'symbol') { - Object.defineProperty(ByteLengthQueuingStrategy.prototype, SymbolPolyfill.toStringTag, { - value: 'ByteLengthQueuingStrategy', - configurable: true - }); -} -// Helper functions for the ByteLengthQueuingStrategy. -function byteLengthBrandCheckException(name) { - return new TypeError("ByteLengthQueuingStrategy.prototype." + name + " can only be used on a ByteLengthQueuingStrategy"); -} -function IsByteLengthQueuingStrategy(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_byteLengthQueuingStrategyHighWaterMark')) { - return false; - } - return x instanceof ByteLengthQueuingStrategy; -} - -// The size function must not have a prototype property nor be a constructor -var countSizeFunction = function () { - return 1; -}; -try { - Object.defineProperty(countSizeFunction, 'name', { - value: 'size', - configurable: true - }); -} -catch (_a) { - // This property is non-configurable in older browsers, so ignore if this throws. - // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name#browser_compatibility -} -/** - * A queuing strategy that counts the number of chunks. - * - * @public - */ -var CountQueuingStrategy = /** @class */ (function () { - function CountQueuingStrategy(options) { - assertRequiredArgument(options, 1, 'CountQueuingStrategy'); - options = convertQueuingStrategyInit(options, 'First parameter'); - this._countQueuingStrategyHighWaterMark = options.highWaterMark; - } - Object.defineProperty(CountQueuingStrategy.prototype, "highWaterMark", { - /** - * Returns the high water mark provided to the constructor. - */ - get: function () { - if (!IsCountQueuingStrategy(this)) { - throw countBrandCheckException('highWaterMark'); - } - return this._countQueuingStrategyHighWaterMark; - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(CountQueuingStrategy.prototype, "size", { - /** - * Measures the size of `chunk` by always returning 1. - * This ensures that the total queue size is a count of the number of chunks in the queue. - */ - get: function () { - if (!IsCountQueuingStrategy(this)) { - throw countBrandCheckException('size'); - } - return countSizeFunction; - }, - enumerable: false, - configurable: true - }); - return CountQueuingStrategy; -}()); -Object.defineProperties(CountQueuingStrategy.prototype, { - highWaterMark: { enumerable: true }, - size: { enumerable: true } -}); -if (typeof SymbolPolyfill.toStringTag === 'symbol') { - Object.defineProperty(CountQueuingStrategy.prototype, SymbolPolyfill.toStringTag, { - value: 'CountQueuingStrategy', - configurable: true - }); -} -// Helper functions for the CountQueuingStrategy. -function countBrandCheckException(name) { - return new TypeError("CountQueuingStrategy.prototype." + name + " can only be used on a CountQueuingStrategy"); -} -function IsCountQueuingStrategy(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_countQueuingStrategyHighWaterMark')) { - return false; - } - return x instanceof CountQueuingStrategy; -} - -function convertTransformer(original, context) { - assertDictionary(original, context); - var flush = original === null || original === void 0 ? void 0 : original.flush; - var readableType = original === null || original === void 0 ? void 0 : original.readableType; - var start = original === null || original === void 0 ? void 0 : original.start; - var transform = original === null || original === void 0 ? void 0 : original.transform; - var writableType = original === null || original === void 0 ? void 0 : original.writableType; - return { - flush: flush === undefined ? - undefined : - convertTransformerFlushCallback(flush, original, context + " has member 'flush' that"), - readableType: readableType, - start: start === undefined ? - undefined : - convertTransformerStartCallback(start, original, context + " has member 'start' that"), - transform: transform === undefined ? - undefined : - convertTransformerTransformCallback(transform, original, context + " has member 'transform' that"), - writableType: writableType - }; -} -function convertTransformerFlushCallback(fn, original, context) { - assertFunction(fn, context); - return function (controller) { return promiseCall(fn, original, [controller]); }; -} -function convertTransformerStartCallback(fn, original, context) { - assertFunction(fn, context); - return function (controller) { return reflectCall(fn, original, [controller]); }; -} -function convertTransformerTransformCallback(fn, original, context) { - assertFunction(fn, context); - return function (chunk, controller) { return promiseCall(fn, original, [chunk, controller]); }; -} - -// Class TransformStream -/** - * A transform stream consists of a pair of streams: a {@link WritableStream | writable stream}, - * known as its writable side, and a {@link ReadableStream | readable stream}, known as its readable side. - * In a manner specific to the transform stream in question, writes to the writable side result in new data being - * made available for reading from the readable side. - * - * @public - */ -var TransformStream = /** @class */ (function () { - function TransformStream(rawTransformer, rawWritableStrategy, rawReadableStrategy) { - if (rawTransformer === void 0) { rawTransformer = {}; } - if (rawWritableStrategy === void 0) { rawWritableStrategy = {}; } - if (rawReadableStrategy === void 0) { rawReadableStrategy = {}; } - if (rawTransformer === undefined) { - rawTransformer = null; - } - var writableStrategy = convertQueuingStrategy(rawWritableStrategy, 'Second parameter'); - var readableStrategy = convertQueuingStrategy(rawReadableStrategy, 'Third parameter'); - var transformer = convertTransformer(rawTransformer, 'First parameter'); - if (transformer.readableType !== undefined) { - throw new RangeError('Invalid readableType specified'); - } - if (transformer.writableType !== undefined) { - throw new RangeError('Invalid writableType specified'); - } - var readableHighWaterMark = ExtractHighWaterMark(readableStrategy, 0); - var readableSizeAlgorithm = ExtractSizeAlgorithm(readableStrategy); - var writableHighWaterMark = ExtractHighWaterMark(writableStrategy, 1); - var writableSizeAlgorithm = ExtractSizeAlgorithm(writableStrategy); - var startPromise_resolve; - var startPromise = newPromise(function (resolve) { - startPromise_resolve = resolve; - }); - InitializeTransformStream(this, startPromise, writableHighWaterMark, writableSizeAlgorithm, readableHighWaterMark, readableSizeAlgorithm); - SetUpTransformStreamDefaultControllerFromTransformer(this, transformer); - if (transformer.start !== undefined) { - startPromise_resolve(transformer.start(this._transformStreamController)); - } - else { - startPromise_resolve(undefined); - } - } - Object.defineProperty(TransformStream.prototype, "readable", { - /** - * The readable side of the transform stream. - */ - get: function () { - if (!IsTransformStream(this)) { - throw streamBrandCheckException('readable'); - } - return this._readable; - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(TransformStream.prototype, "writable", { - /** - * The writable side of the transform stream. - */ - get: function () { - if (!IsTransformStream(this)) { - throw streamBrandCheckException('writable'); - } - return this._writable; - }, - enumerable: false, - configurable: true - }); - return TransformStream; -}()); -Object.defineProperties(TransformStream.prototype, { - readable: { enumerable: true }, - writable: { enumerable: true } -}); -if (typeof SymbolPolyfill.toStringTag === 'symbol') { - Object.defineProperty(TransformStream.prototype, SymbolPolyfill.toStringTag, { - value: 'TransformStream', - configurable: true - }); -} -function InitializeTransformStream(stream, startPromise, writableHighWaterMark, writableSizeAlgorithm, readableHighWaterMark, readableSizeAlgorithm) { - function startAlgorithm() { - return startPromise; - } - function writeAlgorithm(chunk) { - return TransformStreamDefaultSinkWriteAlgorithm(stream, chunk); - } - function abortAlgorithm(reason) { - return TransformStreamDefaultSinkAbortAlgorithm(stream, reason); - } - function closeAlgorithm() { - return TransformStreamDefaultSinkCloseAlgorithm(stream); - } - stream._writable = CreateWritableStream(startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, writableHighWaterMark, writableSizeAlgorithm); - function pullAlgorithm() { - return TransformStreamDefaultSourcePullAlgorithm(stream); - } - function cancelAlgorithm(reason) { - TransformStreamErrorWritableAndUnblockWrite(stream, reason); - return promiseResolvedWith(undefined); - } - stream._readable = CreateReadableStream(startAlgorithm, pullAlgorithm, cancelAlgorithm, readableHighWaterMark, readableSizeAlgorithm); - // The [[backpressure]] slot is set to undefined so that it can be initialised by TransformStreamSetBackpressure. - stream._backpressure = undefined; - stream._backpressureChangePromise = undefined; - stream._backpressureChangePromise_resolve = undefined; - TransformStreamSetBackpressure(stream, true); - stream._transformStreamController = undefined; -} -function IsTransformStream(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_transformStreamController')) { - return false; - } - return x instanceof TransformStream; -} -// This is a no-op if both sides are already errored. -function TransformStreamError(stream, e) { - ReadableStreamDefaultControllerError(stream._readable._readableStreamController, e); - TransformStreamErrorWritableAndUnblockWrite(stream, e); -} -function TransformStreamErrorWritableAndUnblockWrite(stream, e) { - TransformStreamDefaultControllerClearAlgorithms(stream._transformStreamController); - WritableStreamDefaultControllerErrorIfNeeded(stream._writable._writableStreamController, e); - if (stream._backpressure) { - // Pretend that pull() was called to permit any pending write() calls to complete. TransformStreamSetBackpressure() - // cannot be called from enqueue() or pull() once the ReadableStream is errored, so this will will be the final time - // _backpressure is set. - TransformStreamSetBackpressure(stream, false); - } -} -function TransformStreamSetBackpressure(stream, backpressure) { - // Passes also when called during construction. - if (stream._backpressureChangePromise !== undefined) { - stream._backpressureChangePromise_resolve(); - } - stream._backpressureChangePromise = newPromise(function (resolve) { - stream._backpressureChangePromise_resolve = resolve; - }); - stream._backpressure = backpressure; -} -// Class TransformStreamDefaultController -/** - * Allows control of the {@link ReadableStream} and {@link WritableStream} of the associated {@link TransformStream}. - * - * @public - */ -var TransformStreamDefaultController = /** @class */ (function () { - function TransformStreamDefaultController() { - throw new TypeError('Illegal constructor'); - } - Object.defineProperty(TransformStreamDefaultController.prototype, "desiredSize", { - /** - * Returns the desired size to fill the readable side’s internal queue. It can be negative, if the queue is over-full. - */ - get: function () { - if (!IsTransformStreamDefaultController(this)) { - throw defaultControllerBrandCheckException('desiredSize'); - } - var readableController = this._controlledTransformStream._readable._readableStreamController; - return ReadableStreamDefaultControllerGetDesiredSize(readableController); - }, - enumerable: false, - configurable: true - }); - TransformStreamDefaultController.prototype.enqueue = function (chunk) { - if (chunk === void 0) { chunk = undefined; } - if (!IsTransformStreamDefaultController(this)) { - throw defaultControllerBrandCheckException('enqueue'); - } - TransformStreamDefaultControllerEnqueue(this, chunk); - }; - /** - * Errors both the readable side and the writable side of the controlled transform stream, making all future - * interactions with it fail with the given error `e`. Any chunks queued for transformation will be discarded. - */ - TransformStreamDefaultController.prototype.error = function (reason) { - if (reason === void 0) { reason = undefined; } - if (!IsTransformStreamDefaultController(this)) { - throw defaultControllerBrandCheckException('error'); - } - TransformStreamDefaultControllerError(this, reason); - }; - /** - * Closes the readable side and errors the writable side of the controlled transform stream. This is useful when the - * transformer only needs to consume a portion of the chunks written to the writable side. - */ - TransformStreamDefaultController.prototype.terminate = function () { - if (!IsTransformStreamDefaultController(this)) { - throw defaultControllerBrandCheckException('terminate'); - } - TransformStreamDefaultControllerTerminate(this); - }; - return TransformStreamDefaultController; -}()); -Object.defineProperties(TransformStreamDefaultController.prototype, { - enqueue: { enumerable: true }, - error: { enumerable: true }, - terminate: { enumerable: true }, - desiredSize: { enumerable: true } -}); -if (typeof SymbolPolyfill.toStringTag === 'symbol') { - Object.defineProperty(TransformStreamDefaultController.prototype, SymbolPolyfill.toStringTag, { - value: 'TransformStreamDefaultController', - configurable: true - }); -} -// Transform Stream Default Controller Abstract Operations -function IsTransformStreamDefaultController(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_controlledTransformStream')) { - return false; - } - return x instanceof TransformStreamDefaultController; -} -function SetUpTransformStreamDefaultController(stream, controller, transformAlgorithm, flushAlgorithm) { - controller._controlledTransformStream = stream; - stream._transformStreamController = controller; - controller._transformAlgorithm = transformAlgorithm; - controller._flushAlgorithm = flushAlgorithm; -} -function SetUpTransformStreamDefaultControllerFromTransformer(stream, transformer) { - var controller = Object.create(TransformStreamDefaultController.prototype); - var transformAlgorithm = function (chunk) { - try { - TransformStreamDefaultControllerEnqueue(controller, chunk); - return promiseResolvedWith(undefined); - } - catch (transformResultE) { - return promiseRejectedWith(transformResultE); - } - }; - var flushAlgorithm = function () { return promiseResolvedWith(undefined); }; - if (transformer.transform !== undefined) { - transformAlgorithm = function (chunk) { return transformer.transform(chunk, controller); }; - } - if (transformer.flush !== undefined) { - flushAlgorithm = function () { return transformer.flush(controller); }; - } - SetUpTransformStreamDefaultController(stream, controller, transformAlgorithm, flushAlgorithm); -} -function TransformStreamDefaultControllerClearAlgorithms(controller) { - controller._transformAlgorithm = undefined; - controller._flushAlgorithm = undefined; -} -function TransformStreamDefaultControllerEnqueue(controller, chunk) { - var stream = controller._controlledTransformStream; - var readableController = stream._readable._readableStreamController; - if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(readableController)) { - throw new TypeError('Readable side is not in a state that permits enqueue'); - } - // We throttle transform invocations based on the backpressure of the ReadableStream, but we still - // accept TransformStreamDefaultControllerEnqueue() calls. - try { - ReadableStreamDefaultControllerEnqueue(readableController, chunk); - } - catch (e) { - // This happens when readableStrategy.size() throws. - TransformStreamErrorWritableAndUnblockWrite(stream, e); - throw stream._readable._storedError; - } - var backpressure = ReadableStreamDefaultControllerHasBackpressure(readableController); - if (backpressure !== stream._backpressure) { - TransformStreamSetBackpressure(stream, true); - } -} -function TransformStreamDefaultControllerError(controller, e) { - TransformStreamError(controller._controlledTransformStream, e); -} -function TransformStreamDefaultControllerPerformTransform(controller, chunk) { - var transformPromise = controller._transformAlgorithm(chunk); - return transformPromiseWith(transformPromise, undefined, function (r) { - TransformStreamError(controller._controlledTransformStream, r); - throw r; - }); -} -function TransformStreamDefaultControllerTerminate(controller) { - var stream = controller._controlledTransformStream; - var readableController = stream._readable._readableStreamController; - ReadableStreamDefaultControllerClose(readableController); - var error = new TypeError('TransformStream terminated'); - TransformStreamErrorWritableAndUnblockWrite(stream, error); -} -// TransformStreamDefaultSink Algorithms -function TransformStreamDefaultSinkWriteAlgorithm(stream, chunk) { - var controller = stream._transformStreamController; - if (stream._backpressure) { - var backpressureChangePromise = stream._backpressureChangePromise; - return transformPromiseWith(backpressureChangePromise, function () { - var writable = stream._writable; - var state = writable._state; - if (state === 'erroring') { - throw writable._storedError; - } - return TransformStreamDefaultControllerPerformTransform(controller, chunk); - }); - } - return TransformStreamDefaultControllerPerformTransform(controller, chunk); -} -function TransformStreamDefaultSinkAbortAlgorithm(stream, reason) { - // abort() is not called synchronously, so it is possible for abort() to be called when the stream is already - // errored. - TransformStreamError(stream, reason); - return promiseResolvedWith(undefined); -} -function TransformStreamDefaultSinkCloseAlgorithm(stream) { - // stream._readable cannot change after construction, so caching it across a call to user code is safe. - var readable = stream._readable; - var controller = stream._transformStreamController; - var flushPromise = controller._flushAlgorithm(); - TransformStreamDefaultControllerClearAlgorithms(controller); - // Return a promise that is fulfilled with undefined on success. - return transformPromiseWith(flushPromise, function () { - if (readable._state === 'errored') { - throw readable._storedError; - } - ReadableStreamDefaultControllerClose(readable._readableStreamController); - }, function (r) { - TransformStreamError(stream, r); - throw readable._storedError; - }); -} -// TransformStreamDefaultSource Algorithms -function TransformStreamDefaultSourcePullAlgorithm(stream) { - // Invariant. Enforced by the promises returned by start() and pull(). - TransformStreamSetBackpressure(stream, false); - // Prevent the next pull() call until there is backpressure. - return stream._backpressureChangePromise; -} -// Helper functions for the TransformStreamDefaultController. -function defaultControllerBrandCheckException(name) { - return new TypeError("TransformStreamDefaultController.prototype." + name + " can only be used on a TransformStreamDefaultController"); -} -// Helper functions for the TransformStream. -function streamBrandCheckException(name) { - return new TypeError("TransformStream.prototype." + name + " can only be used on a TransformStream"); -} - -var ponyfill = /*#__PURE__*/Object.freeze({ - __proto__: null, - ByteLengthQueuingStrategy: ByteLengthQueuingStrategy, - CountQueuingStrategy: CountQueuingStrategy, - ReadableByteStreamController: ReadableByteStreamController, - ReadableStream: ReadableStream$1, - ReadableStreamBYOBReader: ReadableStreamBYOBReader, - ReadableStreamBYOBRequest: ReadableStreamBYOBRequest, - ReadableStreamDefaultController: ReadableStreamDefaultController, - ReadableStreamDefaultReader: ReadableStreamDefaultReader, - TransformStream: TransformStream, - TransformStreamDefaultController: TransformStreamDefaultController, - WritableStream: WritableStream, - WritableStreamDefaultController: WritableStreamDefaultController, - WritableStreamDefaultWriter: WritableStreamDefaultWriter -}); - -var require$$6 = /*@__PURE__*/getAugmentedNamespace(ponyfill); - -/*! - * MIT License - * - * Copyright (c) 2017-2022 Peculiar Ventures, LLC - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */ - -const ARRAY_BUFFER_NAME = "[object ArrayBuffer]"; -class BufferSourceConverter { - static isArrayBuffer(data) { - return Object.prototype.toString.call(data) === ARRAY_BUFFER_NAME; - } - static toArrayBuffer(data) { - if (this.isArrayBuffer(data)) { - return data; - } - if (data.byteLength === data.buffer.byteLength) { - return data.buffer; - } - return this.toUint8Array(data).slice().buffer; - } - static toUint8Array(data) { - return this.toView(data, Uint8Array); - } - static toView(data, type) { - if (data.constructor === type) { - return data; - } - if (this.isArrayBuffer(data)) { - return new type(data); - } - if (this.isArrayBufferView(data)) { - return new type(data.buffer, data.byteOffset, data.byteLength); - } - throw new TypeError("The provided value is not of type '(ArrayBuffer or ArrayBufferView)'"); - } - static isBufferSource(data) { - return this.isArrayBufferView(data) - || this.isArrayBuffer(data); - } - static isArrayBufferView(data) { - return ArrayBuffer.isView(data) - || (data && this.isArrayBuffer(data.buffer)); - } - static isEqual(a, b) { - const aView = BufferSourceConverter.toUint8Array(a); - const bView = BufferSourceConverter.toUint8Array(b); - if (aView.length !== bView.byteLength) { - return false; - } - for (let i = 0; i < aView.length; i++) { - if (aView[i] !== bView[i]) { - return false; - } - } - return true; - } - static concat(...args) { - if (Array.isArray(args[0])) { - const buffers = args[0]; - let size = 0; - for (const buffer of buffers) { - size += buffer.byteLength; - } - const res = new Uint8Array(size); - let offset = 0; - for (const buffer of buffers) { - const view = this.toUint8Array(buffer); - res.set(view, offset); - offset += view.length; - } - if (args[1]) { - return this.toView(res, args[1]); - } - return res.buffer; - } - else { - return this.concat(args); - } - } -} - -class Utf8Converter { - static fromString(text) { - const s = unescape(encodeURIComponent(text)); - const uintArray = new Uint8Array(s.length); - for (let i = 0; i < s.length; i++) { - uintArray[i] = s.charCodeAt(i); - } - return uintArray.buffer; - } - static toString(buffer) { - const buf = BufferSourceConverter.toUint8Array(buffer); - let encodedString = ""; - for (let i = 0; i < buf.length; i++) { - encodedString += String.fromCharCode(buf[i]); - } - const decodedString = decodeURIComponent(escape(encodedString)); - return decodedString; - } -} -class Utf16Converter { - static toString(buffer, littleEndian = false) { - const arrayBuffer = BufferSourceConverter.toArrayBuffer(buffer); - const dataView = new DataView(arrayBuffer); - let res = ""; - for (let i = 0; i < arrayBuffer.byteLength; i += 2) { - const code = dataView.getUint16(i, littleEndian); - res += String.fromCharCode(code); - } - return res; - } - static fromString(text, littleEndian = false) { - const res = new ArrayBuffer(text.length * 2); - const dataView = new DataView(res); - for (let i = 0; i < text.length; i++) { - dataView.setUint16(i * 2, text.charCodeAt(i), littleEndian); - } - return res; - } -} -class Convert { - static isHex(data) { - return typeof data === "string" - && /^[a-z0-9]+$/i.test(data); - } - static isBase64(data) { - return typeof data === "string" - && /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(data); - } - static isBase64Url(data) { - return typeof data === "string" - && /^[a-zA-Z0-9-_]+$/i.test(data); - } - static ToString(buffer, enc = "utf8") { - const buf = BufferSourceConverter.toUint8Array(buffer); - switch (enc.toLowerCase()) { - case "utf8": - return this.ToUtf8String(buf); - case "binary": - return this.ToBinary(buf); - case "hex": - return this.ToHex(buf); - case "base64": - return this.ToBase64(buf); - case "base64url": - return this.ToBase64Url(buf); - case "utf16le": - return Utf16Converter.toString(buf, true); - case "utf16": - case "utf16be": - return Utf16Converter.toString(buf); - default: - throw new Error(`Unknown type of encoding '${enc}'`); - } - } - static FromString(str, enc = "utf8") { - if (!str) { - return new ArrayBuffer(0); - } - switch (enc.toLowerCase()) { - case "utf8": - return this.FromUtf8String(str); - case "binary": - return this.FromBinary(str); - case "hex": - return this.FromHex(str); - case "base64": - return this.FromBase64(str); - case "base64url": - return this.FromBase64Url(str); - case "utf16le": - return Utf16Converter.fromString(str, true); - case "utf16": - case "utf16be": - return Utf16Converter.fromString(str); - default: - throw new Error(`Unknown type of encoding '${enc}'`); - } - } - static ToBase64(buffer) { - const buf = BufferSourceConverter.toUint8Array(buffer); - if (typeof btoa !== "undefined") { - const binary = this.ToString(buf, "binary"); - return btoa(binary); - } - else { - return Buffer.from(buf).toString("base64"); - } - } - static FromBase64(base64) { - const formatted = this.formatString(base64); - if (!formatted) { - return new ArrayBuffer(0); - } - if (!Convert.isBase64(formatted)) { - throw new TypeError("Argument 'base64Text' is not Base64 encoded"); - } - if (typeof atob !== "undefined") { - return this.FromBinary(atob(formatted)); - } - else { - return new Uint8Array(Buffer.from(formatted, "base64")).buffer; - } - } - static FromBase64Url(base64url) { - const formatted = this.formatString(base64url); - if (!formatted) { - return new ArrayBuffer(0); - } - if (!Convert.isBase64Url(formatted)) { - throw new TypeError("Argument 'base64url' is not Base64Url encoded"); - } - return this.FromBase64(this.Base64Padding(formatted.replace(/\-/g, "+").replace(/\_/g, "/"))); - } - static ToBase64Url(data) { - return this.ToBase64(data).replace(/\+/g, "-").replace(/\//g, "_").replace(/\=/g, ""); - } - static FromUtf8String(text, encoding = Convert.DEFAULT_UTF8_ENCODING) { - switch (encoding) { - case "ascii": - return this.FromBinary(text); - case "utf8": - return Utf8Converter.fromString(text); - case "utf16": - case "utf16be": - return Utf16Converter.fromString(text); - case "utf16le": - case "usc2": - return Utf16Converter.fromString(text, true); - default: - throw new Error(`Unknown type of encoding '${encoding}'`); - } - } - static ToUtf8String(buffer, encoding = Convert.DEFAULT_UTF8_ENCODING) { - switch (encoding) { - case "ascii": - return this.ToBinary(buffer); - case "utf8": - return Utf8Converter.toString(buffer); - case "utf16": - case "utf16be": - return Utf16Converter.toString(buffer); - case "utf16le": - case "usc2": - return Utf16Converter.toString(buffer, true); - default: - throw new Error(`Unknown type of encoding '${encoding}'`); - } - } - static FromBinary(text) { - const stringLength = text.length; - const resultView = new Uint8Array(stringLength); - for (let i = 0; i < stringLength; i++) { - resultView[i] = text.charCodeAt(i); - } - return resultView.buffer; - } - static ToBinary(buffer) { - const buf = BufferSourceConverter.toUint8Array(buffer); - let res = ""; - for (let i = 0; i < buf.length; i++) { - res += String.fromCharCode(buf[i]); - } - return res; - } - static ToHex(buffer) { - const buf = BufferSourceConverter.toUint8Array(buffer); - const splitter = ""; - const res = []; - const len = buf.length; - for (let i = 0; i < len; i++) { - const char = buf[i].toString(16).padStart(2, "0"); - res.push(char); - } - return res.join(splitter); - } - static FromHex(hexString) { - let formatted = this.formatString(hexString); - if (!formatted) { - return new ArrayBuffer(0); - } - if (!Convert.isHex(formatted)) { - throw new TypeError("Argument 'hexString' is not HEX encoded"); - } - if (formatted.length % 2) { - formatted = `0${formatted}`; - } - const res = new Uint8Array(formatted.length / 2); - for (let i = 0; i < formatted.length; i = i + 2) { - const c = formatted.slice(i, i + 2); - res[i / 2] = parseInt(c, 16); - } - return res.buffer; - } - static ToUtf16String(buffer, littleEndian = false) { - return Utf16Converter.toString(buffer, littleEndian); - } - static FromUtf16String(text, littleEndian = false) { - return Utf16Converter.fromString(text, littleEndian); - } - static Base64Padding(base64) { - const padCount = 4 - (base64.length % 4); - if (padCount < 4) { - for (let i = 0; i < padCount; i++) { - base64 += "="; - } - } - return base64; - } - static formatString(data) { - return (data === null || data === void 0 ? void 0 : data.replace(/[\n\r\t ]/g, "")) || ""; - } -} -Convert.DEFAULT_UTF8_ENCODING = "utf8"; -function combine(...buf) { - const totalByteLength = buf.map((item) => item.byteLength).reduce((prev, cur) => prev + cur); - const res = new Uint8Array(totalByteLength); - let currentPos = 0; - buf.map((item) => new Uint8Array(item)).forEach((arr) => { - for (const item2 of arr) { - res[currentPos++] = item2; - } - }); - return res.buffer; -} - -/*! - Copyright (c) Peculiar Ventures, LLC -*/ -function utilFromBase(inputBuffer, inputBase) { - let result = 0; - if (inputBuffer.length === 1) { - return inputBuffer[0]; - } - for (let i = (inputBuffer.length - 1); i >= 0; i--) { - result += inputBuffer[(inputBuffer.length - 1) - i] * Math.pow(2, inputBase * i); - } - return result; -} -function utilToBase(value, base, reserved = (-1)) { - const internalReserved = reserved; - let internalValue = value; - let result = 0; - let biggest = Math.pow(2, base); - for (let i = 1; i < 8; i++) { - if (value < biggest) { - let retBuf; - if (internalReserved < 0) { - retBuf = new ArrayBuffer(i); - result = i; - } - else { - if (internalReserved < i) { - return (new ArrayBuffer(0)); - } - retBuf = new ArrayBuffer(internalReserved); - result = internalReserved; - } - const retView = new Uint8Array(retBuf); - for (let j = (i - 1); j >= 0; j--) { - const basis = Math.pow(2, j * base); - retView[result - j - 1] = Math.floor(internalValue / basis); - internalValue -= (retView[result - j - 1]) * basis; - } - return retBuf; - } - biggest *= Math.pow(2, base); - } - return new ArrayBuffer(0); -} -function utilConcatView(...views) { - let outputLength = 0; - let prevLength = 0; - for (const view of views) { - outputLength += view.length; - } - const retBuf = new ArrayBuffer(outputLength); - const retView = new Uint8Array(retBuf); - for (const view of views) { - retView.set(view, prevLength); - prevLength += view.length; - } - return retView; -} -function utilDecodeTC() { - const buf = new Uint8Array(this.valueHex); - if (this.valueHex.byteLength >= 2) { - const condition1 = (buf[0] === 0xFF) && (buf[1] & 0x80); - const condition2 = (buf[0] === 0x00) && ((buf[1] & 0x80) === 0x00); - if (condition1 || condition2) { - this.warnings.push("Needlessly long format"); - } - } - const bigIntBuffer = new ArrayBuffer(this.valueHex.byteLength); - const bigIntView = new Uint8Array(bigIntBuffer); - for (let i = 0; i < this.valueHex.byteLength; i++) { - bigIntView[i] = 0; - } - bigIntView[0] = (buf[0] & 0x80); - const bigInt = utilFromBase(bigIntView, 8); - const smallIntBuffer = new ArrayBuffer(this.valueHex.byteLength); - const smallIntView = new Uint8Array(smallIntBuffer); - for (let j = 0; j < this.valueHex.byteLength; j++) { - smallIntView[j] = buf[j]; - } - smallIntView[0] &= 0x7F; - const smallInt = utilFromBase(smallIntView, 8); - return (smallInt - bigInt); -} -function utilEncodeTC(value) { - const modValue = (value < 0) ? (value * (-1)) : value; - let bigInt = 128; - for (let i = 1; i < 8; i++) { - if (modValue <= bigInt) { - if (value < 0) { - const smallInt = bigInt - modValue; - const retBuf = utilToBase(smallInt, 8, i); - const retView = new Uint8Array(retBuf); - retView[0] |= 0x80; - return retBuf; - } - let retBuf = utilToBase(modValue, 8, i); - let retView = new Uint8Array(retBuf); - if (retView[0] & 0x80) { - const tempBuf = retBuf.slice(0); - const tempView = new Uint8Array(tempBuf); - retBuf = new ArrayBuffer(retBuf.byteLength + 1); - retView = new Uint8Array(retBuf); - for (let k = 0; k < tempBuf.byteLength; k++) { - retView[k + 1] = tempView[k]; - } - retView[0] = 0x00; - } - return retBuf; - } - bigInt *= Math.pow(2, 8); - } - return (new ArrayBuffer(0)); -} -function isEqualBuffer(inputBuffer1, inputBuffer2) { - if (inputBuffer1.byteLength !== inputBuffer2.byteLength) { - return false; - } - const view1 = new Uint8Array(inputBuffer1); - const view2 = new Uint8Array(inputBuffer2); - for (let i = 0; i < view1.length; i++) { - if (view1[i] !== view2[i]) { - return false; - } - } - return true; -} -function padNumber(inputNumber, fullLength) { - const str = inputNumber.toString(10); - if (fullLength < str.length) { - return ""; - } - const dif = fullLength - str.length; - const padding = new Array(dif); - for (let i = 0; i < dif; i++) { - padding[i] = "0"; - } - const paddingString = padding.join(""); - return paddingString.concat(str); -} - -/*! - * Copyright (c) 2014, GMO GlobalSign - * Copyright (c) 2015-2022, Peculiar Ventures - * All rights reserved. - * - * Author 2014-2019, Yury Strozhevsky - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright notice, this - * list of conditions and the following disclaimer in the documentation and/or - * other materials provided with the distribution. - * - * * Neither the name of the copyright holder nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - */ - -function assertBigInt() { - if (typeof BigInt === "undefined") { - throw new Error("BigInt is not defined. Your environment doesn't implement BigInt."); - } -} -function concat(buffers) { - let outputLength = 0; - let prevLength = 0; - for (let i = 0; i < buffers.length; i++) { - const buffer = buffers[i]; - outputLength += buffer.byteLength; - } - const retView = new Uint8Array(outputLength); - for (let i = 0; i < buffers.length; i++) { - const buffer = buffers[i]; - retView.set(new Uint8Array(buffer), prevLength); - prevLength += buffer.byteLength; - } - return retView.buffer; -} -function checkBufferParams(baseBlock, inputBuffer, inputOffset, inputLength) { - if (!(inputBuffer instanceof Uint8Array)) { - baseBlock.error = "Wrong parameter: inputBuffer must be 'Uint8Array'"; - return false; - } - if (!inputBuffer.byteLength) { - baseBlock.error = "Wrong parameter: inputBuffer has zero length"; - return false; - } - if (inputOffset < 0) { - baseBlock.error = "Wrong parameter: inputOffset less than zero"; - return false; - } - if (inputLength < 0) { - baseBlock.error = "Wrong parameter: inputLength less than zero"; - return false; - } - if ((inputBuffer.byteLength - inputOffset - inputLength) < 0) { - baseBlock.error = "End of input reached before message was fully decoded (inconsistent offset and length values)"; - return false; - } - return true; -} - -class ViewWriter { - constructor() { - this.items = []; - } - write(buf) { - this.items.push(buf); - } - final() { - return concat(this.items); - } -} - -const powers2 = [new Uint8Array([1])]; -const digitsString = "0123456789"; -const NAME = "name"; -const VALUE_HEX_VIEW = "valueHexView"; -const IS_HEX_ONLY = "isHexOnly"; -const ID_BLOCK = "idBlock"; -const TAG_CLASS = "tagClass"; -const TAG_NUMBER = "tagNumber"; -const IS_CONSTRUCTED = "isConstructed"; -const FROM_BER = "fromBER"; -const TO_BER = "toBER"; -const LOCAL = "local"; -const EMPTY_STRING = ""; -const EMPTY_BUFFER = new ArrayBuffer(0); -const EMPTY_VIEW = new Uint8Array(0); -const END_OF_CONTENT_NAME = "EndOfContent"; -const OCTET_STRING_NAME = "OCTET STRING"; -const BIT_STRING_NAME = "BIT STRING"; - -function HexBlock(BaseClass) { - var _a; - return _a = class Some extends BaseClass { - constructor(...args) { - var _a; - super(...args); - const params = args[0] || {}; - this.isHexOnly = (_a = params.isHexOnly) !== null && _a !== void 0 ? _a : false; - this.valueHexView = params.valueHex ? BufferSourceConverter.toUint8Array(params.valueHex) : EMPTY_VIEW; - } - get valueHex() { - return this.valueHexView.slice().buffer; - } - set valueHex(value) { - this.valueHexView = new Uint8Array(value); - } - fromBER(inputBuffer, inputOffset, inputLength) { - const view = inputBuffer instanceof ArrayBuffer ? new Uint8Array(inputBuffer) : inputBuffer; - if (!checkBufferParams(this, view, inputOffset, inputLength)) { - return -1; - } - const endLength = inputOffset + inputLength; - this.valueHexView = view.subarray(inputOffset, endLength); - if (!this.valueHexView.length) { - this.warnings.push("Zero buffer length"); - return inputOffset; - } - this.blockLength = inputLength; - return endLength; - } - toBER(sizeOnly = false) { - if (!this.isHexOnly) { - this.error = "Flag 'isHexOnly' is not set, abort"; - return EMPTY_BUFFER; - } - if (sizeOnly) { - return new ArrayBuffer(this.valueHexView.byteLength); - } - return (this.valueHexView.byteLength === this.valueHexView.buffer.byteLength) - ? this.valueHexView.buffer - : this.valueHexView.slice().buffer; - } - toJSON() { - return { - ...super.toJSON(), - isHexOnly: this.isHexOnly, - valueHex: Convert.ToHex(this.valueHexView), - }; - } - }, - _a.NAME = "hexBlock", - _a; -} - -class LocalBaseBlock { - constructor({ blockLength = 0, error = EMPTY_STRING, warnings = [], valueBeforeDecode = EMPTY_VIEW, } = {}) { - this.blockLength = blockLength; - this.error = error; - this.warnings = warnings; - this.valueBeforeDecodeView = BufferSourceConverter.toUint8Array(valueBeforeDecode); - } - static blockName() { - return this.NAME; - } - get valueBeforeDecode() { - return this.valueBeforeDecodeView.slice().buffer; - } - set valueBeforeDecode(value) { - this.valueBeforeDecodeView = new Uint8Array(value); - } - toJSON() { - return { - blockName: this.constructor.NAME, - blockLength: this.blockLength, - error: this.error, - warnings: this.warnings, - valueBeforeDecode: Convert.ToHex(this.valueBeforeDecodeView), - }; - } -} -LocalBaseBlock.NAME = "baseBlock"; - -class ValueBlock extends LocalBaseBlock { - fromBER(inputBuffer, inputOffset, inputLength) { - throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'"); - } - toBER(sizeOnly, writer) { - throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'"); - } -} -ValueBlock.NAME = "valueBlock"; - -class LocalIdentificationBlock extends HexBlock(LocalBaseBlock) { - constructor({ idBlock = {}, } = {}) { - var _a, _b, _c, _d; - super(); - if (idBlock) { - this.isHexOnly = (_a = idBlock.isHexOnly) !== null && _a !== void 0 ? _a : false; - this.valueHexView = idBlock.valueHex ? BufferSourceConverter.toUint8Array(idBlock.valueHex) : EMPTY_VIEW; - this.tagClass = (_b = idBlock.tagClass) !== null && _b !== void 0 ? _b : -1; - this.tagNumber = (_c = idBlock.tagNumber) !== null && _c !== void 0 ? _c : -1; - this.isConstructed = (_d = idBlock.isConstructed) !== null && _d !== void 0 ? _d : false; - } - else { - this.tagClass = -1; - this.tagNumber = -1; - this.isConstructed = false; - } - } - toBER(sizeOnly = false) { - let firstOctet = 0; - switch (this.tagClass) { - case 1: - firstOctet |= 0x00; - break; - case 2: - firstOctet |= 0x40; - break; - case 3: - firstOctet |= 0x80; - break; - case 4: - firstOctet |= 0xC0; - break; - default: - this.error = "Unknown tag class"; - return EMPTY_BUFFER; - } - if (this.isConstructed) - firstOctet |= 0x20; - if (this.tagNumber < 31 && !this.isHexOnly) { - const retView = new Uint8Array(1); - if (!sizeOnly) { - let number = this.tagNumber; - number &= 0x1F; - firstOctet |= number; - retView[0] = firstOctet; - } - return retView.buffer; - } - if (!this.isHexOnly) { - const encodedBuf = utilToBase(this.tagNumber, 7); - const encodedView = new Uint8Array(encodedBuf); - const size = encodedBuf.byteLength; - const retView = new Uint8Array(size + 1); - retView[0] = (firstOctet | 0x1F); - if (!sizeOnly) { - for (let i = 0; i < (size - 1); i++) - retView[i + 1] = encodedView[i] | 0x80; - retView[size] = encodedView[size - 1]; - } - return retView.buffer; - } - const retView = new Uint8Array(this.valueHexView.byteLength + 1); - retView[0] = (firstOctet | 0x1F); - if (!sizeOnly) { - const curView = this.valueHexView; - for (let i = 0; i < (curView.length - 1); i++) - retView[i + 1] = curView[i] | 0x80; - retView[this.valueHexView.byteLength] = curView[curView.length - 1]; - } - return retView.buffer; - } - fromBER(inputBuffer, inputOffset, inputLength) { - const inputView = BufferSourceConverter.toUint8Array(inputBuffer); - if (!checkBufferParams(this, inputView, inputOffset, inputLength)) { - return -1; - } - const intBuffer = inputView.subarray(inputOffset, inputOffset + inputLength); - if (intBuffer.length === 0) { - this.error = "Zero buffer length"; - return -1; - } - const tagClassMask = intBuffer[0] & 0xC0; - switch (tagClassMask) { - case 0x00: - this.tagClass = (1); - break; - case 0x40: - this.tagClass = (2); - break; - case 0x80: - this.tagClass = (3); - break; - case 0xC0: - this.tagClass = (4); - break; - default: - this.error = "Unknown tag class"; - return -1; - } - this.isConstructed = (intBuffer[0] & 0x20) === 0x20; - this.isHexOnly = false; - const tagNumberMask = intBuffer[0] & 0x1F; - if (tagNumberMask !== 0x1F) { - this.tagNumber = (tagNumberMask); - this.blockLength = 1; - } - else { - let count = 1; - let intTagNumberBuffer = this.valueHexView = new Uint8Array(255); - let tagNumberBufferMaxLength = 255; - while (intBuffer[count] & 0x80) { - intTagNumberBuffer[count - 1] = intBuffer[count] & 0x7F; - count++; - if (count >= intBuffer.length) { - this.error = "End of input reached before message was fully decoded"; - return -1; - } - if (count === tagNumberBufferMaxLength) { - tagNumberBufferMaxLength += 255; - const tempBufferView = new Uint8Array(tagNumberBufferMaxLength); - for (let i = 0; i < intTagNumberBuffer.length; i++) - tempBufferView[i] = intTagNumberBuffer[i]; - intTagNumberBuffer = this.valueHexView = new Uint8Array(tagNumberBufferMaxLength); - } - } - this.blockLength = (count + 1); - intTagNumberBuffer[count - 1] = intBuffer[count] & 0x7F; - const tempBufferView = new Uint8Array(count); - for (let i = 0; i < count; i++) - tempBufferView[i] = intTagNumberBuffer[i]; - intTagNumberBuffer = this.valueHexView = new Uint8Array(count); - intTagNumberBuffer.set(tempBufferView); - if (this.blockLength <= 9) - this.tagNumber = utilFromBase(intTagNumberBuffer, 7); - else { - this.isHexOnly = true; - this.warnings.push("Tag too long, represented as hex-coded"); - } - } - if (((this.tagClass === 1)) && - (this.isConstructed)) { - switch (this.tagNumber) { - case 1: - case 2: - case 5: - case 6: - case 9: - case 13: - case 14: - case 23: - case 24: - case 31: - case 32: - case 33: - case 34: - this.error = "Constructed encoding used for primitive type"; - return -1; - } - } - return (inputOffset + this.blockLength); - } - toJSON() { - return { - ...super.toJSON(), - tagClass: this.tagClass, - tagNumber: this.tagNumber, - isConstructed: this.isConstructed, - }; - } -} -LocalIdentificationBlock.NAME = "identificationBlock"; - -class LocalLengthBlock extends LocalBaseBlock { - constructor({ lenBlock = {}, } = {}) { - var _a, _b, _c; - super(); - this.isIndefiniteForm = (_a = lenBlock.isIndefiniteForm) !== null && _a !== void 0 ? _a : false; - this.longFormUsed = (_b = lenBlock.longFormUsed) !== null && _b !== void 0 ? _b : false; - this.length = (_c = lenBlock.length) !== null && _c !== void 0 ? _c : 0; - } - fromBER(inputBuffer, inputOffset, inputLength) { - const view = BufferSourceConverter.toUint8Array(inputBuffer); - if (!checkBufferParams(this, view, inputOffset, inputLength)) { - return -1; - } - const intBuffer = view.subarray(inputOffset, inputOffset + inputLength); - if (intBuffer.length === 0) { - this.error = "Zero buffer length"; - return -1; - } - if (intBuffer[0] === 0xFF) { - this.error = "Length block 0xFF is reserved by standard"; - return -1; - } - this.isIndefiniteForm = intBuffer[0] === 0x80; - if (this.isIndefiniteForm) { - this.blockLength = 1; - return (inputOffset + this.blockLength); - } - this.longFormUsed = !!(intBuffer[0] & 0x80); - if (this.longFormUsed === false) { - this.length = (intBuffer[0]); - this.blockLength = 1; - return (inputOffset + this.blockLength); - } - const count = intBuffer[0] & 0x7F; - if (count > 8) { - this.error = "Too big integer"; - return -1; - } - if ((count + 1) > intBuffer.length) { - this.error = "End of input reached before message was fully decoded"; - return -1; - } - const lenOffset = inputOffset + 1; - const lengthBufferView = view.subarray(lenOffset, lenOffset + count); - if (lengthBufferView[count - 1] === 0x00) - this.warnings.push("Needlessly long encoded length"); - this.length = utilFromBase(lengthBufferView, 8); - if (this.longFormUsed && (this.length <= 127)) - this.warnings.push("Unnecessary usage of long length form"); - this.blockLength = count + 1; - return (inputOffset + this.blockLength); - } - toBER(sizeOnly = false) { - let retBuf; - let retView; - if (this.length > 127) - this.longFormUsed = true; - if (this.isIndefiniteForm) { - retBuf = new ArrayBuffer(1); - if (sizeOnly === false) { - retView = new Uint8Array(retBuf); - retView[0] = 0x80; - } - return retBuf; - } - if (this.longFormUsed) { - const encodedBuf = utilToBase(this.length, 8); - if (encodedBuf.byteLength > 127) { - this.error = "Too big length"; - return (EMPTY_BUFFER); - } - retBuf = new ArrayBuffer(encodedBuf.byteLength + 1); - if (sizeOnly) - return retBuf; - const encodedView = new Uint8Array(encodedBuf); - retView = new Uint8Array(retBuf); - retView[0] = encodedBuf.byteLength | 0x80; - for (let i = 0; i < encodedBuf.byteLength; i++) - retView[i + 1] = encodedView[i]; - return retBuf; - } - retBuf = new ArrayBuffer(1); - if (sizeOnly === false) { - retView = new Uint8Array(retBuf); - retView[0] = this.length; - } - return retBuf; - } - toJSON() { - return { - ...super.toJSON(), - isIndefiniteForm: this.isIndefiniteForm, - longFormUsed: this.longFormUsed, - length: this.length, - }; - } -} -LocalLengthBlock.NAME = "lengthBlock"; - -const typeStore = {}; - -class BaseBlock extends LocalBaseBlock { - constructor({ name = EMPTY_STRING, optional = false, primitiveSchema, ...parameters } = {}, valueBlockType) { - super(parameters); - this.name = name; - this.optional = optional; - if (primitiveSchema) { - this.primitiveSchema = primitiveSchema; - } - this.idBlock = new LocalIdentificationBlock(parameters); - this.lenBlock = new LocalLengthBlock(parameters); - this.valueBlock = valueBlockType ? new valueBlockType(parameters) : new ValueBlock(parameters); - } - fromBER(inputBuffer, inputOffset, inputLength) { - const resultOffset = this.valueBlock.fromBER(inputBuffer, inputOffset, (this.lenBlock.isIndefiniteForm) ? inputLength : this.lenBlock.length); - if (resultOffset === -1) { - this.error = this.valueBlock.error; - return resultOffset; - } - if (!this.idBlock.error.length) - this.blockLength += this.idBlock.blockLength; - if (!this.lenBlock.error.length) - this.blockLength += this.lenBlock.blockLength; - if (!this.valueBlock.error.length) - this.blockLength += this.valueBlock.blockLength; - return resultOffset; - } - toBER(sizeOnly, writer) { - const _writer = writer || new ViewWriter(); - if (!writer) { - prepareIndefiniteForm(this); - } - const idBlockBuf = this.idBlock.toBER(sizeOnly); - _writer.write(idBlockBuf); - if (this.lenBlock.isIndefiniteForm) { - _writer.write(new Uint8Array([0x80]).buffer); - this.valueBlock.toBER(sizeOnly, _writer); - _writer.write(new ArrayBuffer(2)); - } - else { - const valueBlockBuf = this.valueBlock.toBER(sizeOnly); - this.lenBlock.length = valueBlockBuf.byteLength; - const lenBlockBuf = this.lenBlock.toBER(sizeOnly); - _writer.write(lenBlockBuf); - _writer.write(valueBlockBuf); - } - if (!writer) { - return _writer.final(); - } - return EMPTY_BUFFER; - } - toJSON() { - const object = { - ...super.toJSON(), - idBlock: this.idBlock.toJSON(), - lenBlock: this.lenBlock.toJSON(), - valueBlock: this.valueBlock.toJSON(), - name: this.name, - optional: this.optional, - }; - if (this.primitiveSchema) - object.primitiveSchema = this.primitiveSchema.toJSON(); - return object; - } - toString(encoding = "ascii") { - if (encoding === "ascii") { - return this.onAsciiEncoding(); - } - return Convert.ToHex(this.toBER()); - } - onAsciiEncoding() { - return `${this.constructor.NAME} : ${Convert.ToHex(this.valueBlock.valueBeforeDecodeView)}`; - } - isEqual(other) { - if (this === other) { - return true; - } - if (!(other instanceof this.constructor)) { - return false; - } - const thisRaw = this.toBER(); - const otherRaw = other.toBER(); - return isEqualBuffer(thisRaw, otherRaw); - } -} -BaseBlock.NAME = "BaseBlock"; -function prepareIndefiniteForm(baseBlock) { - if (baseBlock instanceof typeStore.Constructed) { - for (const value of baseBlock.valueBlock.value) { - if (prepareIndefiniteForm(value)) { - baseBlock.lenBlock.isIndefiniteForm = true; - } - } - } - return !!baseBlock.lenBlock.isIndefiniteForm; -} - -class BaseStringBlock extends BaseBlock { - constructor({ value = EMPTY_STRING, ...parameters } = {}, stringValueBlockType) { - super(parameters, stringValueBlockType); - if (value) { - this.fromString(value); - } - } - getValue() { - return this.valueBlock.value; - } - setValue(value) { - this.valueBlock.value = value; - } - fromBER(inputBuffer, inputOffset, inputLength) { - const resultOffset = this.valueBlock.fromBER(inputBuffer, inputOffset, (this.lenBlock.isIndefiniteForm) ? inputLength : this.lenBlock.length); - if (resultOffset === -1) { - this.error = this.valueBlock.error; - return resultOffset; - } - this.fromBuffer(this.valueBlock.valueHexView); - if (!this.idBlock.error.length) - this.blockLength += this.idBlock.blockLength; - if (!this.lenBlock.error.length) - this.blockLength += this.lenBlock.blockLength; - if (!this.valueBlock.error.length) - this.blockLength += this.valueBlock.blockLength; - return resultOffset; - } - onAsciiEncoding() { - return `${this.constructor.NAME} : '${this.valueBlock.value}'`; - } -} -BaseStringBlock.NAME = "BaseStringBlock"; - -class LocalPrimitiveValueBlock extends HexBlock(ValueBlock) { - constructor({ isHexOnly = true, ...parameters } = {}) { - super(parameters); - this.isHexOnly = isHexOnly; - } -} -LocalPrimitiveValueBlock.NAME = "PrimitiveValueBlock"; - -var _a$w; -class Primitive extends BaseBlock { - constructor(parameters = {}) { - super(parameters, LocalPrimitiveValueBlock); - this.idBlock.isConstructed = false; - } -} -_a$w = Primitive; -(() => { - typeStore.Primitive = _a$w; -})(); -Primitive.NAME = "PRIMITIVE"; - -function localChangeType(inputObject, newType) { - if (inputObject instanceof newType) { - return inputObject; - } - const newObject = new newType(); - newObject.idBlock = inputObject.idBlock; - newObject.lenBlock = inputObject.lenBlock; - newObject.warnings = inputObject.warnings; - newObject.valueBeforeDecodeView = inputObject.valueBeforeDecodeView; - return newObject; -} -function localFromBER(inputBuffer, inputOffset = 0, inputLength = inputBuffer.length) { - const incomingOffset = inputOffset; - let returnObject = new BaseBlock({}, ValueBlock); - const baseBlock = new LocalBaseBlock(); - if (!checkBufferParams(baseBlock, inputBuffer, inputOffset, inputLength)) { - returnObject.error = baseBlock.error; - return { - offset: -1, - result: returnObject - }; - } - const intBuffer = inputBuffer.subarray(inputOffset, inputOffset + inputLength); - if (!intBuffer.length) { - returnObject.error = "Zero buffer length"; - return { - offset: -1, - result: returnObject - }; - } - let resultOffset = returnObject.idBlock.fromBER(inputBuffer, inputOffset, inputLength); - if (returnObject.idBlock.warnings.length) { - returnObject.warnings.concat(returnObject.idBlock.warnings); - } - if (resultOffset === -1) { - returnObject.error = returnObject.idBlock.error; - return { - offset: -1, - result: returnObject - }; - } - inputOffset = resultOffset; - inputLength -= returnObject.idBlock.blockLength; - resultOffset = returnObject.lenBlock.fromBER(inputBuffer, inputOffset, inputLength); - if (returnObject.lenBlock.warnings.length) { - returnObject.warnings.concat(returnObject.lenBlock.warnings); - } - if (resultOffset === -1) { - returnObject.error = returnObject.lenBlock.error; - return { - offset: -1, - result: returnObject - }; - } - inputOffset = resultOffset; - inputLength -= returnObject.lenBlock.blockLength; - if (!returnObject.idBlock.isConstructed && - returnObject.lenBlock.isIndefiniteForm) { - returnObject.error = "Indefinite length form used for primitive encoding form"; - return { - offset: -1, - result: returnObject - }; - } - let newASN1Type = BaseBlock; - switch (returnObject.idBlock.tagClass) { - case 1: - if ((returnObject.idBlock.tagNumber >= 37) && - (returnObject.idBlock.isHexOnly === false)) { - returnObject.error = "UNIVERSAL 37 and upper tags are reserved by ASN.1 standard"; - return { - offset: -1, - result: returnObject - }; - } - switch (returnObject.idBlock.tagNumber) { - case 0: - if ((returnObject.idBlock.isConstructed) && - (returnObject.lenBlock.length > 0)) { - returnObject.error = "Type [UNIVERSAL 0] is reserved"; - return { - offset: -1, - result: returnObject - }; - } - newASN1Type = typeStore.EndOfContent; - break; - case 1: - newASN1Type = typeStore.Boolean; - break; - case 2: - newASN1Type = typeStore.Integer; - break; - case 3: - newASN1Type = typeStore.BitString; - break; - case 4: - newASN1Type = typeStore.OctetString; - break; - case 5: - newASN1Type = typeStore.Null; - break; - case 6: - newASN1Type = typeStore.ObjectIdentifier; - break; - case 10: - newASN1Type = typeStore.Enumerated; - break; - case 12: - newASN1Type = typeStore.Utf8String; - break; - case 13: - newASN1Type = typeStore.RelativeObjectIdentifier; - break; - case 14: - newASN1Type = typeStore.TIME; - break; - case 15: - returnObject.error = "[UNIVERSAL 15] is reserved by ASN.1 standard"; - return { - offset: -1, - result: returnObject - }; - case 16: - newASN1Type = typeStore.Sequence; - break; - case 17: - newASN1Type = typeStore.Set; - break; - case 18: - newASN1Type = typeStore.NumericString; - break; - case 19: - newASN1Type = typeStore.PrintableString; - break; - case 20: - newASN1Type = typeStore.TeletexString; - break; - case 21: - newASN1Type = typeStore.VideotexString; - break; - case 22: - newASN1Type = typeStore.IA5String; - break; - case 23: - newASN1Type = typeStore.UTCTime; - break; - case 24: - newASN1Type = typeStore.GeneralizedTime; - break; - case 25: - newASN1Type = typeStore.GraphicString; - break; - case 26: - newASN1Type = typeStore.VisibleString; - break; - case 27: - newASN1Type = typeStore.GeneralString; - break; - case 28: - newASN1Type = typeStore.UniversalString; - break; - case 29: - newASN1Type = typeStore.CharacterString; - break; - case 30: - newASN1Type = typeStore.BmpString; - break; - case 31: - newASN1Type = typeStore.DATE; - break; - case 32: - newASN1Type = typeStore.TimeOfDay; - break; - case 33: - newASN1Type = typeStore.DateTime; - break; - case 34: - newASN1Type = typeStore.Duration; - break; - default: { - const newObject = returnObject.idBlock.isConstructed - ? new typeStore.Constructed() - : new typeStore.Primitive(); - newObject.idBlock = returnObject.idBlock; - newObject.lenBlock = returnObject.lenBlock; - newObject.warnings = returnObject.warnings; - returnObject = newObject; - } - } - break; - case 2: - case 3: - case 4: - default: { - newASN1Type = returnObject.idBlock.isConstructed - ? typeStore.Constructed - : typeStore.Primitive; - } - } - returnObject = localChangeType(returnObject, newASN1Type); - resultOffset = returnObject.fromBER(inputBuffer, inputOffset, returnObject.lenBlock.isIndefiniteForm ? inputLength : returnObject.lenBlock.length); - returnObject.valueBeforeDecodeView = inputBuffer.subarray(incomingOffset, incomingOffset + returnObject.blockLength); - return { - offset: resultOffset, - result: returnObject - }; -} -function fromBER(inputBuffer) { - if (!inputBuffer.byteLength) { - const result = new BaseBlock({}, ValueBlock); - result.error = "Input buffer has zero length"; - return { - offset: -1, - result - }; - } - return localFromBER(BufferSourceConverter.toUint8Array(inputBuffer).slice(), 0, inputBuffer.byteLength); -} - -function checkLen(indefiniteLength, length) { - if (indefiniteLength) { - return 1; - } - return length; -} -class LocalConstructedValueBlock extends ValueBlock { - constructor({ value = [], isIndefiniteForm = false, ...parameters } = {}) { - super(parameters); - this.value = value; - this.isIndefiniteForm = isIndefiniteForm; - } - fromBER(inputBuffer, inputOffset, inputLength) { - const view = BufferSourceConverter.toUint8Array(inputBuffer); - if (!checkBufferParams(this, view, inputOffset, inputLength)) { - return -1; - } - this.valueBeforeDecodeView = view.subarray(inputOffset, inputOffset + inputLength); - if (this.valueBeforeDecodeView.length === 0) { - this.warnings.push("Zero buffer length"); - return inputOffset; - } - let currentOffset = inputOffset; - while (checkLen(this.isIndefiniteForm, inputLength) > 0) { - const returnObject = localFromBER(view, currentOffset, inputLength); - if (returnObject.offset === -1) { - this.error = returnObject.result.error; - this.warnings.concat(returnObject.result.warnings); - return -1; - } - currentOffset = returnObject.offset; - this.blockLength += returnObject.result.blockLength; - inputLength -= returnObject.result.blockLength; - this.value.push(returnObject.result); - if (this.isIndefiniteForm && returnObject.result.constructor.NAME === END_OF_CONTENT_NAME) { - break; - } - } - if (this.isIndefiniteForm) { - if (this.value[this.value.length - 1].constructor.NAME === END_OF_CONTENT_NAME) { - this.value.pop(); - } - else { - this.warnings.push("No EndOfContent block encoded"); - } - } - return currentOffset; - } - toBER(sizeOnly, writer) { - const _writer = writer || new ViewWriter(); - for (let i = 0; i < this.value.length; i++) { - this.value[i].toBER(sizeOnly, _writer); - } - if (!writer) { - return _writer.final(); - } - return EMPTY_BUFFER; - } - toJSON() { - const object = { - ...super.toJSON(), - isIndefiniteForm: this.isIndefiniteForm, - value: [], - }; - for (const value of this.value) { - object.value.push(value.toJSON()); - } - return object; - } -} -LocalConstructedValueBlock.NAME = "ConstructedValueBlock"; - -var _a$v; -class Constructed extends BaseBlock { - constructor(parameters = {}) { - super(parameters, LocalConstructedValueBlock); - this.idBlock.isConstructed = true; - } - fromBER(inputBuffer, inputOffset, inputLength) { - this.valueBlock.isIndefiniteForm = this.lenBlock.isIndefiniteForm; - const resultOffset = this.valueBlock.fromBER(inputBuffer, inputOffset, (this.lenBlock.isIndefiniteForm) ? inputLength : this.lenBlock.length); - if (resultOffset === -1) { - this.error = this.valueBlock.error; - return resultOffset; - } - if (!this.idBlock.error.length) - this.blockLength += this.idBlock.blockLength; - if (!this.lenBlock.error.length) - this.blockLength += this.lenBlock.blockLength; - if (!this.valueBlock.error.length) - this.blockLength += this.valueBlock.blockLength; - return resultOffset; - } - onAsciiEncoding() { - const values = []; - for (const value of this.valueBlock.value) { - values.push(value.toString("ascii").split("\n").map(o => ` ${o}`).join("\n")); - } - const blockName = this.idBlock.tagClass === 3 - ? `[${this.idBlock.tagNumber}]` - : this.constructor.NAME; - return values.length - ? `${blockName} :\n${values.join("\n")}` - : `${blockName} :`; - } -} -_a$v = Constructed; -(() => { - typeStore.Constructed = _a$v; -})(); -Constructed.NAME = "CONSTRUCTED"; - -class LocalEndOfContentValueBlock extends ValueBlock { - fromBER(inputBuffer, inputOffset, inputLength) { - return inputOffset; - } - toBER(sizeOnly) { - return EMPTY_BUFFER; - } -} -LocalEndOfContentValueBlock.override = "EndOfContentValueBlock"; - -var _a$u; -class EndOfContent extends BaseBlock { - constructor(parameters = {}) { - super(parameters, LocalEndOfContentValueBlock); - this.idBlock.tagClass = 1; - this.idBlock.tagNumber = 0; - } -} -_a$u = EndOfContent; -(() => { - typeStore.EndOfContent = _a$u; -})(); -EndOfContent.NAME = END_OF_CONTENT_NAME; - -var _a$t; -class Null extends BaseBlock { - constructor(parameters = {}) { - super(parameters, ValueBlock); - this.idBlock.tagClass = 1; - this.idBlock.tagNumber = 5; - } - fromBER(inputBuffer, inputOffset, inputLength) { - if (this.lenBlock.length > 0) - this.warnings.push("Non-zero length of value block for Null type"); - if (!this.idBlock.error.length) - this.blockLength += this.idBlock.blockLength; - if (!this.lenBlock.error.length) - this.blockLength += this.lenBlock.blockLength; - this.blockLength += inputLength; - if ((inputOffset + inputLength) > inputBuffer.byteLength) { - this.error = "End of input reached before message was fully decoded (inconsistent offset and length values)"; - return -1; - } - return (inputOffset + inputLength); - } - toBER(sizeOnly, writer) { - const retBuf = new ArrayBuffer(2); - if (!sizeOnly) { - const retView = new Uint8Array(retBuf); - retView[0] = 0x05; - retView[1] = 0x00; - } - if (writer) { - writer.write(retBuf); - } - return retBuf; - } - onAsciiEncoding() { - return `${this.constructor.NAME}`; - } -} -_a$t = Null; -(() => { - typeStore.Null = _a$t; -})(); -Null.NAME = "NULL"; - -class LocalBooleanValueBlock extends HexBlock(ValueBlock) { - constructor({ value, ...parameters } = {}) { - super(parameters); - if (parameters.valueHex) { - this.valueHexView = BufferSourceConverter.toUint8Array(parameters.valueHex); - } - else { - this.valueHexView = new Uint8Array(1); - } - if (value) { - this.value = value; - } - } - get value() { - for (const octet of this.valueHexView) { - if (octet > 0) { - return true; - } - } - return false; - } - set value(value) { - this.valueHexView[0] = value ? 0xFF : 0x00; - } - fromBER(inputBuffer, inputOffset, inputLength) { - const inputView = BufferSourceConverter.toUint8Array(inputBuffer); - if (!checkBufferParams(this, inputView, inputOffset, inputLength)) { - return -1; - } - this.valueHexView = inputView.subarray(inputOffset, inputOffset + inputLength); - if (inputLength > 1) - this.warnings.push("Boolean value encoded in more then 1 octet"); - this.isHexOnly = true; - utilDecodeTC.call(this); - this.blockLength = inputLength; - return (inputOffset + inputLength); - } - toBER() { - return this.valueHexView.slice(); - } - toJSON() { - return { - ...super.toJSON(), - value: this.value, - }; - } -} -LocalBooleanValueBlock.NAME = "BooleanValueBlock"; - -var _a$s; -class Boolean$1 extends BaseBlock { - constructor(parameters = {}) { - super(parameters, LocalBooleanValueBlock); - this.idBlock.tagClass = 1; - this.idBlock.tagNumber = 1; - } - getValue() { - return this.valueBlock.value; - } - setValue(value) { - this.valueBlock.value = value; - } - onAsciiEncoding() { - return `${this.constructor.NAME} : ${this.getValue}`; - } -} -_a$s = Boolean$1; -(() => { - typeStore.Boolean = _a$s; -})(); -Boolean$1.NAME = "BOOLEAN"; - -class LocalOctetStringValueBlock extends HexBlock(LocalConstructedValueBlock) { - constructor({ isConstructed = false, ...parameters } = {}) { - super(parameters); - this.isConstructed = isConstructed; - } - fromBER(inputBuffer, inputOffset, inputLength) { - let resultOffset = 0; - if (this.isConstructed) { - this.isHexOnly = false; - resultOffset = LocalConstructedValueBlock.prototype.fromBER.call(this, inputBuffer, inputOffset, inputLength); - if (resultOffset === -1) - return resultOffset; - for (let i = 0; i < this.value.length; i++) { - const currentBlockName = this.value[i].constructor.NAME; - if (currentBlockName === END_OF_CONTENT_NAME) { - if (this.isIndefiniteForm) - break; - else { - this.error = "EndOfContent is unexpected, OCTET STRING may consists of OCTET STRINGs only"; - return -1; - } - } - if (currentBlockName !== OCTET_STRING_NAME) { - this.error = "OCTET STRING may consists of OCTET STRINGs only"; - return -1; - } - } - } - else { - this.isHexOnly = true; - resultOffset = super.fromBER(inputBuffer, inputOffset, inputLength); - this.blockLength = inputLength; - } - return resultOffset; - } - toBER(sizeOnly, writer) { - if (this.isConstructed) - return LocalConstructedValueBlock.prototype.toBER.call(this, sizeOnly, writer); - return sizeOnly - ? new ArrayBuffer(this.valueHexView.byteLength) - : this.valueHexView.slice().buffer; - } - toJSON() { - return { - ...super.toJSON(), - isConstructed: this.isConstructed, - }; - } -} -LocalOctetStringValueBlock.NAME = "OctetStringValueBlock"; - -var _a$r; -class OctetString extends BaseBlock { - constructor({ idBlock = {}, lenBlock = {}, ...parameters } = {}) { - var _b, _c; - (_b = parameters.isConstructed) !== null && _b !== void 0 ? _b : (parameters.isConstructed = !!((_c = parameters.value) === null || _c === void 0 ? void 0 : _c.length)); - super({ - idBlock: { - isConstructed: parameters.isConstructed, - ...idBlock, - }, - lenBlock: { - ...lenBlock, - isIndefiniteForm: !!parameters.isIndefiniteForm, - }, - ...parameters, - }, LocalOctetStringValueBlock); - this.idBlock.tagClass = 1; - this.idBlock.tagNumber = 4; - } - fromBER(inputBuffer, inputOffset, inputLength) { - this.valueBlock.isConstructed = this.idBlock.isConstructed; - this.valueBlock.isIndefiniteForm = this.lenBlock.isIndefiniteForm; - if (inputLength === 0) { - if (this.idBlock.error.length === 0) - this.blockLength += this.idBlock.blockLength; - if (this.lenBlock.error.length === 0) - this.blockLength += this.lenBlock.blockLength; - return inputOffset; - } - if (!this.valueBlock.isConstructed) { - const view = inputBuffer instanceof ArrayBuffer ? new Uint8Array(inputBuffer) : inputBuffer; - const buf = view.subarray(inputOffset, inputOffset + inputLength); - try { - if (buf.byteLength) { - const asn = localFromBER(buf, 0, buf.byteLength); - if (asn.offset !== -1 && asn.offset === inputLength) { - this.valueBlock.value = [asn.result]; - } - } - } - catch (e) { - } - } - return super.fromBER(inputBuffer, inputOffset, inputLength); - } - onAsciiEncoding() { - if (this.valueBlock.isConstructed || (this.valueBlock.value && this.valueBlock.value.length)) { - return Constructed.prototype.onAsciiEncoding.call(this); - } - return `${this.constructor.NAME} : ${Convert.ToHex(this.valueBlock.valueHexView)}`; - } - getValue() { - if (!this.idBlock.isConstructed) { - return this.valueBlock.valueHexView.slice().buffer; - } - const array = []; - for (const content of this.valueBlock.value) { - if (content instanceof OctetString) { - array.push(content.valueBlock.valueHexView); - } - } - return BufferSourceConverter.concat(array); - } -} -_a$r = OctetString; -(() => { - typeStore.OctetString = _a$r; -})(); -OctetString.NAME = OCTET_STRING_NAME; - -class LocalBitStringValueBlock extends HexBlock(LocalConstructedValueBlock) { - constructor({ unusedBits = 0, isConstructed = false, ...parameters } = {}) { - super(parameters); - this.unusedBits = unusedBits; - this.isConstructed = isConstructed; - this.blockLength = this.valueHexView.byteLength; - } - fromBER(inputBuffer, inputOffset, inputLength) { - if (!inputLength) { - return inputOffset; - } - let resultOffset = -1; - if (this.isConstructed) { - resultOffset = LocalConstructedValueBlock.prototype.fromBER.call(this, inputBuffer, inputOffset, inputLength); - if (resultOffset === -1) - return resultOffset; - for (const value of this.value) { - const currentBlockName = value.constructor.NAME; - if (currentBlockName === END_OF_CONTENT_NAME) { - if (this.isIndefiniteForm) - break; - else { - this.error = "EndOfContent is unexpected, BIT STRING may consists of BIT STRINGs only"; - return -1; - } - } - if (currentBlockName !== BIT_STRING_NAME) { - this.error = "BIT STRING may consists of BIT STRINGs only"; - return -1; - } - const valueBlock = value.valueBlock; - if ((this.unusedBits > 0) && (valueBlock.unusedBits > 0)) { - this.error = "Using of \"unused bits\" inside constructive BIT STRING allowed for least one only"; - return -1; - } - this.unusedBits = valueBlock.unusedBits; - } - return resultOffset; - } - const inputView = BufferSourceConverter.toUint8Array(inputBuffer); - if (!checkBufferParams(this, inputView, inputOffset, inputLength)) { - return -1; - } - const intBuffer = inputView.subarray(inputOffset, inputOffset + inputLength); - this.unusedBits = intBuffer[0]; - if (this.unusedBits > 7) { - this.error = "Unused bits for BitString must be in range 0-7"; - return -1; - } - if (!this.unusedBits) { - const buf = intBuffer.subarray(1); - try { - if (buf.byteLength) { - const asn = localFromBER(buf, 0, buf.byteLength); - if (asn.offset !== -1 && asn.offset === (inputLength - 1)) { - this.value = [asn.result]; - } - } - } - catch (e) { - } - } - this.valueHexView = intBuffer.subarray(1); - this.blockLength = intBuffer.length; - return (inputOffset + inputLength); - } - toBER(sizeOnly, writer) { - if (this.isConstructed) { - return LocalConstructedValueBlock.prototype.toBER.call(this, sizeOnly, writer); - } - if (sizeOnly) { - return new ArrayBuffer(this.valueHexView.byteLength + 1); - } - if (!this.valueHexView.byteLength) { - return EMPTY_BUFFER; - } - const retView = new Uint8Array(this.valueHexView.length + 1); - retView[0] = this.unusedBits; - retView.set(this.valueHexView, 1); - return retView.buffer; - } - toJSON() { - return { - ...super.toJSON(), - unusedBits: this.unusedBits, - isConstructed: this.isConstructed, - }; - } -} -LocalBitStringValueBlock.NAME = "BitStringValueBlock"; - -var _a$q; -class BitString extends BaseBlock { - constructor({ idBlock = {}, lenBlock = {}, ...parameters } = {}) { - var _b, _c; - (_b = parameters.isConstructed) !== null && _b !== void 0 ? _b : (parameters.isConstructed = !!((_c = parameters.value) === null || _c === void 0 ? void 0 : _c.length)); - super({ - idBlock: { - isConstructed: parameters.isConstructed, - ...idBlock, - }, - lenBlock: { - ...lenBlock, - isIndefiniteForm: !!parameters.isIndefiniteForm, - }, - ...parameters, - }, LocalBitStringValueBlock); - this.idBlock.tagClass = 1; - this.idBlock.tagNumber = 3; - } - fromBER(inputBuffer, inputOffset, inputLength) { - this.valueBlock.isConstructed = this.idBlock.isConstructed; - this.valueBlock.isIndefiniteForm = this.lenBlock.isIndefiniteForm; - return super.fromBER(inputBuffer, inputOffset, inputLength); - } - onAsciiEncoding() { - if (this.valueBlock.isConstructed || (this.valueBlock.value && this.valueBlock.value.length)) { - return Constructed.prototype.onAsciiEncoding.call(this); - } - else { - const bits = []; - const valueHex = this.valueBlock.valueHexView; - for (const byte of valueHex) { - bits.push(byte.toString(2).padStart(8, "0")); - } - const bitsStr = bits.join(""); - return `${this.constructor.NAME} : ${bitsStr.substring(0, bitsStr.length - this.valueBlock.unusedBits)}`; - } - } -} -_a$q = BitString; -(() => { - typeStore.BitString = _a$q; -})(); -BitString.NAME = BIT_STRING_NAME; - -var _a$p; -function viewAdd(first, second) { - const c = new Uint8Array([0]); - const firstView = new Uint8Array(first); - const secondView = new Uint8Array(second); - let firstViewCopy = firstView.slice(0); - const firstViewCopyLength = firstViewCopy.length - 1; - const secondViewCopy = secondView.slice(0); - const secondViewCopyLength = secondViewCopy.length - 1; - let value = 0; - const max = (secondViewCopyLength < firstViewCopyLength) ? firstViewCopyLength : secondViewCopyLength; - let counter = 0; - for (let i = max; i >= 0; i--, counter++) { - switch (true) { - case (counter < secondViewCopy.length): - value = firstViewCopy[firstViewCopyLength - counter] + secondViewCopy[secondViewCopyLength - counter] + c[0]; - break; - default: - value = firstViewCopy[firstViewCopyLength - counter] + c[0]; - } - c[0] = value / 10; - switch (true) { - case (counter >= firstViewCopy.length): - firstViewCopy = utilConcatView(new Uint8Array([value % 10]), firstViewCopy); - break; - default: - firstViewCopy[firstViewCopyLength - counter] = value % 10; - } - } - if (c[0] > 0) - firstViewCopy = utilConcatView(c, firstViewCopy); - return firstViewCopy; -} -function power2(n) { - if (n >= powers2.length) { - for (let p = powers2.length; p <= n; p++) { - const c = new Uint8Array([0]); - let digits = (powers2[p - 1]).slice(0); - for (let i = (digits.length - 1); i >= 0; i--) { - const newValue = new Uint8Array([(digits[i] << 1) + c[0]]); - c[0] = newValue[0] / 10; - digits[i] = newValue[0] % 10; - } - if (c[0] > 0) - digits = utilConcatView(c, digits); - powers2.push(digits); - } - } - return powers2[n]; -} -function viewSub(first, second) { - let b = 0; - const firstView = new Uint8Array(first); - const secondView = new Uint8Array(second); - const firstViewCopy = firstView.slice(0); - const firstViewCopyLength = firstViewCopy.length - 1; - const secondViewCopy = secondView.slice(0); - const secondViewCopyLength = secondViewCopy.length - 1; - let value; - let counter = 0; - for (let i = secondViewCopyLength; i >= 0; i--, counter++) { - value = firstViewCopy[firstViewCopyLength - counter] - secondViewCopy[secondViewCopyLength - counter] - b; - switch (true) { - case (value < 0): - b = 1; - firstViewCopy[firstViewCopyLength - counter] = value + 10; - break; - default: - b = 0; - firstViewCopy[firstViewCopyLength - counter] = value; - } - } - if (b > 0) { - for (let i = (firstViewCopyLength - secondViewCopyLength + 1); i >= 0; i--, counter++) { - value = firstViewCopy[firstViewCopyLength - counter] - b; - if (value < 0) { - b = 1; - firstViewCopy[firstViewCopyLength - counter] = value + 10; - } - else { - b = 0; - firstViewCopy[firstViewCopyLength - counter] = value; - break; - } - } - } - return firstViewCopy.slice(); -} -class LocalIntegerValueBlock extends HexBlock(ValueBlock) { - constructor({ value, ...parameters } = {}) { - super(parameters); - this._valueDec = 0; - if (parameters.valueHex) { - this.setValueHex(); - } - if (value !== undefined) { - this.valueDec = value; - } - } - setValueHex() { - if (this.valueHexView.length >= 4) { - this.warnings.push("Too big Integer for decoding, hex only"); - this.isHexOnly = true; - this._valueDec = 0; - } - else { - this.isHexOnly = false; - if (this.valueHexView.length > 0) { - this._valueDec = utilDecodeTC.call(this); - } - } - } - set valueDec(v) { - this._valueDec = v; - this.isHexOnly = false; - this.valueHexView = new Uint8Array(utilEncodeTC(v)); - } - get valueDec() { - return this._valueDec; - } - fromDER(inputBuffer, inputOffset, inputLength, expectedLength = 0) { - const offset = this.fromBER(inputBuffer, inputOffset, inputLength); - if (offset === -1) - return offset; - const view = this.valueHexView; - if ((view[0] === 0x00) && ((view[1] & 0x80) !== 0)) { - this.valueHexView = view.subarray(1); - } - else { - if (expectedLength !== 0) { - if (view.length < expectedLength) { - if ((expectedLength - view.length) > 1) - expectedLength = view.length + 1; - this.valueHexView = view.subarray(expectedLength - view.length); - } - } - } - return offset; - } - toDER(sizeOnly = false) { - const view = this.valueHexView; - switch (true) { - case ((view[0] & 0x80) !== 0): - { - const updatedView = new Uint8Array(this.valueHexView.length + 1); - updatedView[0] = 0x00; - updatedView.set(view, 1); - this.valueHexView = updatedView; - } - break; - case ((view[0] === 0x00) && ((view[1] & 0x80) === 0)): - { - this.valueHexView = this.valueHexView.subarray(1); - } - break; - } - return this.toBER(sizeOnly); - } - fromBER(inputBuffer, inputOffset, inputLength) { - const resultOffset = super.fromBER(inputBuffer, inputOffset, inputLength); - if (resultOffset === -1) { - return resultOffset; - } - this.setValueHex(); - return resultOffset; - } - toBER(sizeOnly) { - return sizeOnly - ? new ArrayBuffer(this.valueHexView.length) - : this.valueHexView.slice().buffer; - } - toJSON() { - return { - ...super.toJSON(), - valueDec: this.valueDec, - }; - } - toString() { - const firstBit = (this.valueHexView.length * 8) - 1; - let digits = new Uint8Array((this.valueHexView.length * 8) / 3); - let bitNumber = 0; - let currentByte; - const asn1View = this.valueHexView; - let result = ""; - let flag = false; - for (let byteNumber = (asn1View.byteLength - 1); byteNumber >= 0; byteNumber--) { - currentByte = asn1View[byteNumber]; - for (let i = 0; i < 8; i++) { - if ((currentByte & 1) === 1) { - switch (bitNumber) { - case firstBit: - digits = viewSub(power2(bitNumber), digits); - result = "-"; - break; - default: - digits = viewAdd(digits, power2(bitNumber)); - } - } - bitNumber++; - currentByte >>= 1; - } - } - for (let i = 0; i < digits.length; i++) { - if (digits[i]) - flag = true; - if (flag) - result += digitsString.charAt(digits[i]); - } - if (flag === false) - result += digitsString.charAt(0); - return result; - } -} -_a$p = LocalIntegerValueBlock; -LocalIntegerValueBlock.NAME = "IntegerValueBlock"; -(() => { - Object.defineProperty(_a$p.prototype, "valueHex", { - set: function (v) { - this.valueHexView = new Uint8Array(v); - this.setValueHex(); - }, - get: function () { - return this.valueHexView.slice().buffer; - }, - }); -})(); - -var _a$o; -class Integer extends BaseBlock { - constructor(parameters = {}) { - super(parameters, LocalIntegerValueBlock); - this.idBlock.tagClass = 1; - this.idBlock.tagNumber = 2; - } - toBigInt() { - assertBigInt(); - return BigInt(this.valueBlock.toString()); - } - static fromBigInt(value) { - assertBigInt(); - const bigIntValue = BigInt(value); - const writer = new ViewWriter(); - const hex = bigIntValue.toString(16).replace(/^-/, ""); - const view = new Uint8Array(Convert.FromHex(hex)); - if (bigIntValue < 0) { - const first = new Uint8Array(view.length + (view[0] & 0x80 ? 1 : 0)); - first[0] |= 0x80; - const firstInt = BigInt(`0x${Convert.ToHex(first)}`); - const secondInt = firstInt + bigIntValue; - const second = BufferSourceConverter.toUint8Array(Convert.FromHex(secondInt.toString(16))); - second[0] |= 0x80; - writer.write(second); - } - else { - if (view[0] & 0x80) { - writer.write(new Uint8Array([0])); - } - writer.write(view); - } - const res = new Integer({ - valueHex: writer.final(), - }); - return res; - } - convertToDER() { - const integer = new Integer({ valueHex: this.valueBlock.valueHexView }); - integer.valueBlock.toDER(); - return integer; - } - convertFromDER() { - return new Integer({ - valueHex: this.valueBlock.valueHexView[0] === 0 - ? this.valueBlock.valueHexView.subarray(1) - : this.valueBlock.valueHexView, - }); - } - onAsciiEncoding() { - return `${this.constructor.NAME} : ${this.valueBlock.toString()}`; - } -} -_a$o = Integer; -(() => { - typeStore.Integer = _a$o; -})(); -Integer.NAME = "INTEGER"; - -var _a$n; -class Enumerated extends Integer { - constructor(parameters = {}) { - super(parameters); - this.idBlock.tagClass = 1; - this.idBlock.tagNumber = 10; - } -} -_a$n = Enumerated; -(() => { - typeStore.Enumerated = _a$n; -})(); -Enumerated.NAME = "ENUMERATED"; - -class LocalSidValueBlock extends HexBlock(ValueBlock) { - constructor({ valueDec = -1, isFirstSid = false, ...parameters } = {}) { - super(parameters); - this.valueDec = valueDec; - this.isFirstSid = isFirstSid; - } - fromBER(inputBuffer, inputOffset, inputLength) { - if (!inputLength) { - return inputOffset; - } - const inputView = BufferSourceConverter.toUint8Array(inputBuffer); - if (!checkBufferParams(this, inputView, inputOffset, inputLength)) { - return -1; - } - const intBuffer = inputView.subarray(inputOffset, inputOffset + inputLength); - this.valueHexView = new Uint8Array(inputLength); - for (let i = 0; i < inputLength; i++) { - this.valueHexView[i] = intBuffer[i] & 0x7F; - this.blockLength++; - if ((intBuffer[i] & 0x80) === 0x00) - break; - } - const tempView = new Uint8Array(this.blockLength); - for (let i = 0; i < this.blockLength; i++) { - tempView[i] = this.valueHexView[i]; - } - this.valueHexView = tempView; - if ((intBuffer[this.blockLength - 1] & 0x80) !== 0x00) { - this.error = "End of input reached before message was fully decoded"; - return -1; - } - if (this.valueHexView[0] === 0x00) - this.warnings.push("Needlessly long format of SID encoding"); - if (this.blockLength <= 8) - this.valueDec = utilFromBase(this.valueHexView, 7); - else { - this.isHexOnly = true; - this.warnings.push("Too big SID for decoding, hex only"); - } - return (inputOffset + this.blockLength); - } - set valueBigInt(value) { - assertBigInt(); - let bits = BigInt(value).toString(2); - while (bits.length % 7) { - bits = "0" + bits; - } - const bytes = new Uint8Array(bits.length / 7); - for (let i = 0; i < bytes.length; i++) { - bytes[i] = parseInt(bits.slice(i * 7, i * 7 + 7), 2) + (i + 1 < bytes.length ? 0x80 : 0); - } - this.fromBER(bytes.buffer, 0, bytes.length); - } - toBER(sizeOnly) { - if (this.isHexOnly) { - if (sizeOnly) - return (new ArrayBuffer(this.valueHexView.byteLength)); - const curView = this.valueHexView; - const retView = new Uint8Array(this.blockLength); - for (let i = 0; i < (this.blockLength - 1); i++) - retView[i] = curView[i] | 0x80; - retView[this.blockLength - 1] = curView[this.blockLength - 1]; - return retView.buffer; - } - const encodedBuf = utilToBase(this.valueDec, 7); - if (encodedBuf.byteLength === 0) { - this.error = "Error during encoding SID value"; - return EMPTY_BUFFER; - } - const retView = new Uint8Array(encodedBuf.byteLength); - if (!sizeOnly) { - const encodedView = new Uint8Array(encodedBuf); - const len = encodedBuf.byteLength - 1; - for (let i = 0; i < len; i++) - retView[i] = encodedView[i] | 0x80; - retView[len] = encodedView[len]; - } - return retView; - } - toString() { - let result = ""; - if (this.isHexOnly) - result = Convert.ToHex(this.valueHexView); - else { - if (this.isFirstSid) { - let sidValue = this.valueDec; - if (this.valueDec <= 39) - result = "0."; - else { - if (this.valueDec <= 79) { - result = "1."; - sidValue -= 40; - } - else { - result = "2."; - sidValue -= 80; - } - } - result += sidValue.toString(); - } - else - result = this.valueDec.toString(); - } - return result; - } - toJSON() { - return { - ...super.toJSON(), - valueDec: this.valueDec, - isFirstSid: this.isFirstSid, - }; - } -} -LocalSidValueBlock.NAME = "sidBlock"; - -class LocalObjectIdentifierValueBlock extends ValueBlock { - constructor({ value = EMPTY_STRING, ...parameters } = {}) { - super(parameters); - this.value = []; - if (value) { - this.fromString(value); - } - } - fromBER(inputBuffer, inputOffset, inputLength) { - let resultOffset = inputOffset; - while (inputLength > 0) { - const sidBlock = new LocalSidValueBlock(); - resultOffset = sidBlock.fromBER(inputBuffer, resultOffset, inputLength); - if (resultOffset === -1) { - this.blockLength = 0; - this.error = sidBlock.error; - return resultOffset; - } - if (this.value.length === 0) - sidBlock.isFirstSid = true; - this.blockLength += sidBlock.blockLength; - inputLength -= sidBlock.blockLength; - this.value.push(sidBlock); - } - return resultOffset; - } - toBER(sizeOnly) { - const retBuffers = []; - for (let i = 0; i < this.value.length; i++) { - const valueBuf = this.value[i].toBER(sizeOnly); - if (valueBuf.byteLength === 0) { - this.error = this.value[i].error; - return EMPTY_BUFFER; - } - retBuffers.push(valueBuf); - } - return concat(retBuffers); - } - fromString(string) { - this.value = []; - let pos1 = 0; - let pos2 = 0; - let sid = ""; - let flag = false; - do { - pos2 = string.indexOf(".", pos1); - if (pos2 === -1) - sid = string.substring(pos1); - else - sid = string.substring(pos1, pos2); - pos1 = pos2 + 1; - if (flag) { - const sidBlock = this.value[0]; - let plus = 0; - switch (sidBlock.valueDec) { - case 0: - break; - case 1: - plus = 40; - break; - case 2: - plus = 80; - break; - default: - this.value = []; - return; - } - const parsedSID = parseInt(sid, 10); - if (isNaN(parsedSID)) - return; - sidBlock.valueDec = parsedSID + plus; - flag = false; - } - else { - const sidBlock = new LocalSidValueBlock(); - if (sid > Number.MAX_SAFE_INTEGER) { - assertBigInt(); - const sidValue = BigInt(sid); - sidBlock.valueBigInt = sidValue; - } - else { - sidBlock.valueDec = parseInt(sid, 10); - if (isNaN(sidBlock.valueDec)) - return; - } - if (!this.value.length) { - sidBlock.isFirstSid = true; - flag = true; - } - this.value.push(sidBlock); - } - } while (pos2 !== -1); - } - toString() { - let result = ""; - let isHexOnly = false; - for (let i = 0; i < this.value.length; i++) { - isHexOnly = this.value[i].isHexOnly; - let sidStr = this.value[i].toString(); - if (i !== 0) - result = `${result}.`; - if (isHexOnly) { - sidStr = `{${sidStr}}`; - if (this.value[i].isFirstSid) - result = `2.{${sidStr} - 80}`; - else - result += sidStr; - } - else - result += sidStr; - } - return result; - } - toJSON() { - const object = { - ...super.toJSON(), - value: this.toString(), - sidArray: [], - }; - for (let i = 0; i < this.value.length; i++) { - object.sidArray.push(this.value[i].toJSON()); - } - return object; - } -} -LocalObjectIdentifierValueBlock.NAME = "ObjectIdentifierValueBlock"; - -var _a$m; -class ObjectIdentifier$1 extends BaseBlock { - constructor(parameters = {}) { - super(parameters, LocalObjectIdentifierValueBlock); - this.idBlock.tagClass = 1; - this.idBlock.tagNumber = 6; - } - getValue() { - return this.valueBlock.toString(); - } - setValue(value) { - this.valueBlock.fromString(value); - } - onAsciiEncoding() { - return `${this.constructor.NAME} : ${this.valueBlock.toString() || "empty"}`; - } - toJSON() { - return { - ...super.toJSON(), - value: this.getValue(), - }; - } -} -_a$m = ObjectIdentifier$1; -(() => { - typeStore.ObjectIdentifier = _a$m; -})(); -ObjectIdentifier$1.NAME = "OBJECT IDENTIFIER"; - -class LocalRelativeSidValueBlock extends HexBlock(LocalBaseBlock) { - constructor({ valueDec = 0, ...parameters } = {}) { - super(parameters); - this.valueDec = valueDec; - } - fromBER(inputBuffer, inputOffset, inputLength) { - if (inputLength === 0) - return inputOffset; - const inputView = BufferSourceConverter.toUint8Array(inputBuffer); - if (!checkBufferParams(this, inputView, inputOffset, inputLength)) - return -1; - const intBuffer = inputView.subarray(inputOffset, inputOffset + inputLength); - this.valueHexView = new Uint8Array(inputLength); - for (let i = 0; i < inputLength; i++) { - this.valueHexView[i] = intBuffer[i] & 0x7F; - this.blockLength++; - if ((intBuffer[i] & 0x80) === 0x00) - break; - } - const tempView = new Uint8Array(this.blockLength); - for (let i = 0; i < this.blockLength; i++) - tempView[i] = this.valueHexView[i]; - this.valueHexView = tempView; - if ((intBuffer[this.blockLength - 1] & 0x80) !== 0x00) { - this.error = "End of input reached before message was fully decoded"; - return -1; - } - if (this.valueHexView[0] === 0x00) - this.warnings.push("Needlessly long format of SID encoding"); - if (this.blockLength <= 8) - this.valueDec = utilFromBase(this.valueHexView, 7); - else { - this.isHexOnly = true; - this.warnings.push("Too big SID for decoding, hex only"); - } - return (inputOffset + this.blockLength); - } - toBER(sizeOnly) { - if (this.isHexOnly) { - if (sizeOnly) - return (new ArrayBuffer(this.valueHexView.byteLength)); - const curView = this.valueHexView; - const retView = new Uint8Array(this.blockLength); - for (let i = 0; i < (this.blockLength - 1); i++) - retView[i] = curView[i] | 0x80; - retView[this.blockLength - 1] = curView[this.blockLength - 1]; - return retView.buffer; - } - const encodedBuf = utilToBase(this.valueDec, 7); - if (encodedBuf.byteLength === 0) { - this.error = "Error during encoding SID value"; - return EMPTY_BUFFER; - } - const retView = new Uint8Array(encodedBuf.byteLength); - if (!sizeOnly) { - const encodedView = new Uint8Array(encodedBuf); - const len = encodedBuf.byteLength - 1; - for (let i = 0; i < len; i++) - retView[i] = encodedView[i] | 0x80; - retView[len] = encodedView[len]; - } - return retView.buffer; - } - toString() { - let result = ""; - if (this.isHexOnly) - result = Convert.ToHex(this.valueHexView); - else { - result = this.valueDec.toString(); - } - return result; - } - toJSON() { - return { - ...super.toJSON(), - valueDec: this.valueDec, - }; - } -} -LocalRelativeSidValueBlock.NAME = "relativeSidBlock"; - -class LocalRelativeObjectIdentifierValueBlock extends ValueBlock { - constructor({ value = EMPTY_STRING, ...parameters } = {}) { - super(parameters); - this.value = []; - if (value) { - this.fromString(value); - } - } - fromBER(inputBuffer, inputOffset, inputLength) { - let resultOffset = inputOffset; - while (inputLength > 0) { - const sidBlock = new LocalRelativeSidValueBlock(); - resultOffset = sidBlock.fromBER(inputBuffer, resultOffset, inputLength); - if (resultOffset === -1) { - this.blockLength = 0; - this.error = sidBlock.error; - return resultOffset; - } - this.blockLength += sidBlock.blockLength; - inputLength -= sidBlock.blockLength; - this.value.push(sidBlock); - } - return resultOffset; - } - toBER(sizeOnly, writer) { - const retBuffers = []; - for (let i = 0; i < this.value.length; i++) { - const valueBuf = this.value[i].toBER(sizeOnly); - if (valueBuf.byteLength === 0) { - this.error = this.value[i].error; - return EMPTY_BUFFER; - } - retBuffers.push(valueBuf); - } - return concat(retBuffers); - } - fromString(string) { - this.value = []; - let pos1 = 0; - let pos2 = 0; - let sid = ""; - do { - pos2 = string.indexOf(".", pos1); - if (pos2 === -1) - sid = string.substring(pos1); - else - sid = string.substring(pos1, pos2); - pos1 = pos2 + 1; - const sidBlock = new LocalRelativeSidValueBlock(); - sidBlock.valueDec = parseInt(sid, 10); - if (isNaN(sidBlock.valueDec)) - return true; - this.value.push(sidBlock); - } while (pos2 !== -1); - return true; - } - toString() { - let result = ""; - let isHexOnly = false; - for (let i = 0; i < this.value.length; i++) { - isHexOnly = this.value[i].isHexOnly; - let sidStr = this.value[i].toString(); - if (i !== 0) - result = `${result}.`; - if (isHexOnly) { - sidStr = `{${sidStr}}`; - result += sidStr; - } - else - result += sidStr; - } - return result; - } - toJSON() { - const object = { - ...super.toJSON(), - value: this.toString(), - sidArray: [], - }; - for (let i = 0; i < this.value.length; i++) - object.sidArray.push(this.value[i].toJSON()); - return object; - } -} -LocalRelativeObjectIdentifierValueBlock.NAME = "RelativeObjectIdentifierValueBlock"; - -var _a$l; -class RelativeObjectIdentifier extends BaseBlock { - constructor(parameters = {}) { - super(parameters, LocalRelativeObjectIdentifierValueBlock); - this.idBlock.tagClass = 1; - this.idBlock.tagNumber = 13; - } - getValue() { - return this.valueBlock.toString(); - } - setValue(value) { - this.valueBlock.fromString(value); - } - onAsciiEncoding() { - return `${this.constructor.NAME} : ${this.valueBlock.toString() || "empty"}`; - } - toJSON() { - return { - ...super.toJSON(), - value: this.getValue(), - }; - } -} -_a$l = RelativeObjectIdentifier; -(() => { - typeStore.RelativeObjectIdentifier = _a$l; -})(); -RelativeObjectIdentifier.NAME = "RelativeObjectIdentifier"; - -var _a$k; -class Sequence extends Constructed { - constructor(parameters = {}) { - super(parameters); - this.idBlock.tagClass = 1; - this.idBlock.tagNumber = 16; - } -} -_a$k = Sequence; -(() => { - typeStore.Sequence = _a$k; -})(); -Sequence.NAME = "SEQUENCE"; - -var _a$j; -class Set$1 extends Constructed { - constructor(parameters = {}) { - super(parameters); - this.idBlock.tagClass = 1; - this.idBlock.tagNumber = 17; - } -} -_a$j = Set$1; -(() => { - typeStore.Set = _a$j; -})(); -Set$1.NAME = "SET"; - -class LocalStringValueBlock extends HexBlock(ValueBlock) { - constructor({ ...parameters } = {}) { - super(parameters); - this.isHexOnly = true; - this.value = EMPTY_STRING; - } - toJSON() { - return { - ...super.toJSON(), - value: this.value, - }; - } -} -LocalStringValueBlock.NAME = "StringValueBlock"; - -class LocalSimpleStringValueBlock extends LocalStringValueBlock { -} -LocalSimpleStringValueBlock.NAME = "SimpleStringValueBlock"; - -class LocalSimpleStringBlock extends BaseStringBlock { - constructor({ ...parameters } = {}) { - super(parameters, LocalSimpleStringValueBlock); - } - fromBuffer(inputBuffer) { - this.valueBlock.value = String.fromCharCode.apply(null, BufferSourceConverter.toUint8Array(inputBuffer)); - } - fromString(inputString) { - const strLen = inputString.length; - const view = this.valueBlock.valueHexView = new Uint8Array(strLen); - for (let i = 0; i < strLen; i++) - view[i] = inputString.charCodeAt(i); - this.valueBlock.value = inputString; - } -} -LocalSimpleStringBlock.NAME = "SIMPLE STRING"; - -class LocalUtf8StringValueBlock extends LocalSimpleStringBlock { - fromBuffer(inputBuffer) { - this.valueBlock.valueHexView = BufferSourceConverter.toUint8Array(inputBuffer); - try { - this.valueBlock.value = Convert.ToUtf8String(inputBuffer); - } - catch (ex) { - this.warnings.push(`Error during "decodeURIComponent": ${ex}, using raw string`); - this.valueBlock.value = Convert.ToBinary(inputBuffer); - } - } - fromString(inputString) { - this.valueBlock.valueHexView = new Uint8Array(Convert.FromUtf8String(inputString)); - this.valueBlock.value = inputString; - } -} -LocalUtf8StringValueBlock.NAME = "Utf8StringValueBlock"; - -var _a$i; -class Utf8String extends LocalUtf8StringValueBlock { - constructor(parameters = {}) { - super(parameters); - this.idBlock.tagClass = 1; - this.idBlock.tagNumber = 12; - } -} -_a$i = Utf8String; -(() => { - typeStore.Utf8String = _a$i; -})(); -Utf8String.NAME = "UTF8String"; - -class LocalBmpStringValueBlock extends LocalSimpleStringBlock { - fromBuffer(inputBuffer) { - this.valueBlock.value = Convert.ToUtf16String(inputBuffer); - this.valueBlock.valueHexView = BufferSourceConverter.toUint8Array(inputBuffer); - } - fromString(inputString) { - this.valueBlock.value = inputString; - this.valueBlock.valueHexView = new Uint8Array(Convert.FromUtf16String(inputString)); - } -} -LocalBmpStringValueBlock.NAME = "BmpStringValueBlock"; - -var _a$h; -class BmpString extends LocalBmpStringValueBlock { - constructor({ ...parameters } = {}) { - super(parameters); - this.idBlock.tagClass = 1; - this.idBlock.tagNumber = 30; - } -} -_a$h = BmpString; -(() => { - typeStore.BmpString = _a$h; -})(); -BmpString.NAME = "BMPString"; - -class LocalUniversalStringValueBlock extends LocalSimpleStringBlock { - fromBuffer(inputBuffer) { - const copyBuffer = ArrayBuffer.isView(inputBuffer) ? inputBuffer.slice().buffer : inputBuffer.slice(0); - const valueView = new Uint8Array(copyBuffer); - for (let i = 0; i < valueView.length; i += 4) { - valueView[i] = valueView[i + 3]; - valueView[i + 1] = valueView[i + 2]; - valueView[i + 2] = 0x00; - valueView[i + 3] = 0x00; - } - this.valueBlock.value = String.fromCharCode.apply(null, new Uint32Array(copyBuffer)); - } - fromString(inputString) { - const strLength = inputString.length; - const valueHexView = this.valueBlock.valueHexView = new Uint8Array(strLength * 4); - for (let i = 0; i < strLength; i++) { - const codeBuf = utilToBase(inputString.charCodeAt(i), 8); - const codeView = new Uint8Array(codeBuf); - if (codeView.length > 4) - continue; - const dif = 4 - codeView.length; - for (let j = (codeView.length - 1); j >= 0; j--) - valueHexView[i * 4 + j + dif] = codeView[j]; - } - this.valueBlock.value = inputString; - } -} -LocalUniversalStringValueBlock.NAME = "UniversalStringValueBlock"; - -var _a$g; -class UniversalString extends LocalUniversalStringValueBlock { - constructor({ ...parameters } = {}) { - super(parameters); - this.idBlock.tagClass = 1; - this.idBlock.tagNumber = 28; - } -} -_a$g = UniversalString; -(() => { - typeStore.UniversalString = _a$g; -})(); -UniversalString.NAME = "UniversalString"; - -var _a$f; -class NumericString extends LocalSimpleStringBlock { - constructor(parameters = {}) { - super(parameters); - this.idBlock.tagClass = 1; - this.idBlock.tagNumber = 18; - } -} -_a$f = NumericString; -(() => { - typeStore.NumericString = _a$f; -})(); -NumericString.NAME = "NumericString"; - -var _a$e; -class PrintableString extends LocalSimpleStringBlock { - constructor(parameters = {}) { - super(parameters); - this.idBlock.tagClass = 1; - this.idBlock.tagNumber = 19; - } -} -_a$e = PrintableString; -(() => { - typeStore.PrintableString = _a$e; -})(); -PrintableString.NAME = "PrintableString"; - -var _a$d; -class TeletexString extends LocalSimpleStringBlock { - constructor(parameters = {}) { - super(parameters); - this.idBlock.tagClass = 1; - this.idBlock.tagNumber = 20; - } -} -_a$d = TeletexString; -(() => { - typeStore.TeletexString = _a$d; -})(); -TeletexString.NAME = "TeletexString"; - -var _a$c; -class VideotexString extends LocalSimpleStringBlock { - constructor(parameters = {}) { - super(parameters); - this.idBlock.tagClass = 1; - this.idBlock.tagNumber = 21; - } -} -_a$c = VideotexString; -(() => { - typeStore.VideotexString = _a$c; -})(); -VideotexString.NAME = "VideotexString"; - -var _a$b; -class IA5String extends LocalSimpleStringBlock { - constructor(parameters = {}) { - super(parameters); - this.idBlock.tagClass = 1; - this.idBlock.tagNumber = 22; - } -} -_a$b = IA5String; -(() => { - typeStore.IA5String = _a$b; -})(); -IA5String.NAME = "IA5String"; - -var _a$a; -class GraphicString extends LocalSimpleStringBlock { - constructor(parameters = {}) { - super(parameters); - this.idBlock.tagClass = 1; - this.idBlock.tagNumber = 25; - } -} -_a$a = GraphicString; -(() => { - typeStore.GraphicString = _a$a; -})(); -GraphicString.NAME = "GraphicString"; - -var _a$9; -class VisibleString extends LocalSimpleStringBlock { - constructor(parameters = {}) { - super(parameters); - this.idBlock.tagClass = 1; - this.idBlock.tagNumber = 26; - } -} -_a$9 = VisibleString; -(() => { - typeStore.VisibleString = _a$9; -})(); -VisibleString.NAME = "VisibleString"; - -var _a$8; -class GeneralString extends LocalSimpleStringBlock { - constructor(parameters = {}) { - super(parameters); - this.idBlock.tagClass = 1; - this.idBlock.tagNumber = 27; - } -} -_a$8 = GeneralString; -(() => { - typeStore.GeneralString = _a$8; -})(); -GeneralString.NAME = "GeneralString"; - -var _a$7; -class CharacterString extends LocalSimpleStringBlock { - constructor(parameters = {}) { - super(parameters); - this.idBlock.tagClass = 1; - this.idBlock.tagNumber = 29; - } -} -_a$7 = CharacterString; -(() => { - typeStore.CharacterString = _a$7; -})(); -CharacterString.NAME = "CharacterString"; - -var _a$6; -class UTCTime extends VisibleString { - constructor({ value, valueDate, ...parameters } = {}) { - super(parameters); - this.year = 0; - this.month = 0; - this.day = 0; - this.hour = 0; - this.minute = 0; - this.second = 0; - if (value) { - this.fromString(value); - this.valueBlock.valueHexView = new Uint8Array(value.length); - for (let i = 0; i < value.length; i++) - this.valueBlock.valueHexView[i] = value.charCodeAt(i); - } - if (valueDate) { - this.fromDate(valueDate); - this.valueBlock.valueHexView = new Uint8Array(this.toBuffer()); - } - this.idBlock.tagClass = 1; - this.idBlock.tagNumber = 23; - } - fromBuffer(inputBuffer) { - this.fromString(String.fromCharCode.apply(null, BufferSourceConverter.toUint8Array(inputBuffer))); - } - toBuffer() { - const str = this.toString(); - const buffer = new ArrayBuffer(str.length); - const view = new Uint8Array(buffer); - for (let i = 0; i < str.length; i++) - view[i] = str.charCodeAt(i); - return buffer; - } - fromDate(inputDate) { - this.year = inputDate.getUTCFullYear(); - this.month = inputDate.getUTCMonth() + 1; - this.day = inputDate.getUTCDate(); - this.hour = inputDate.getUTCHours(); - this.minute = inputDate.getUTCMinutes(); - this.second = inputDate.getUTCSeconds(); - } - toDate() { - return (new Date(Date.UTC(this.year, this.month - 1, this.day, this.hour, this.minute, this.second))); - } - fromString(inputString) { - const parser = /(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})Z/ig; - const parserArray = parser.exec(inputString); - if (parserArray === null) { - this.error = "Wrong input string for conversion"; - return; - } - const year = parseInt(parserArray[1], 10); - if (year >= 50) - this.year = 1900 + year; - else - this.year = 2000 + year; - this.month = parseInt(parserArray[2], 10); - this.day = parseInt(parserArray[3], 10); - this.hour = parseInt(parserArray[4], 10); - this.minute = parseInt(parserArray[5], 10); - this.second = parseInt(parserArray[6], 10); - } - toString(encoding = "iso") { - if (encoding === "iso") { - const outputArray = new Array(7); - outputArray[0] = padNumber(((this.year < 2000) ? (this.year - 1900) : (this.year - 2000)), 2); - outputArray[1] = padNumber(this.month, 2); - outputArray[2] = padNumber(this.day, 2); - outputArray[3] = padNumber(this.hour, 2); - outputArray[4] = padNumber(this.minute, 2); - outputArray[5] = padNumber(this.second, 2); - outputArray[6] = "Z"; - return outputArray.join(""); - } - return super.toString(encoding); - } - onAsciiEncoding() { - return `${this.constructor.NAME} : ${this.toDate().toISOString()}`; - } - toJSON() { - return { - ...super.toJSON(), - year: this.year, - month: this.month, - day: this.day, - hour: this.hour, - minute: this.minute, - second: this.second, - }; - } -} -_a$6 = UTCTime; -(() => { - typeStore.UTCTime = _a$6; -})(); -UTCTime.NAME = "UTCTime"; - -var _a$5; -class GeneralizedTime extends UTCTime { - constructor(parameters = {}) { - var _b; - super(parameters); - (_b = this.millisecond) !== null && _b !== void 0 ? _b : (this.millisecond = 0); - this.idBlock.tagClass = 1; - this.idBlock.tagNumber = 24; - } - fromDate(inputDate) { - super.fromDate(inputDate); - this.millisecond = inputDate.getUTCMilliseconds(); - } - toDate() { - return (new Date(Date.UTC(this.year, this.month - 1, this.day, this.hour, this.minute, this.second, this.millisecond))); - } - fromString(inputString) { - let isUTC = false; - let timeString = ""; - let dateTimeString = ""; - let fractionPart = 0; - let parser; - let hourDifference = 0; - let minuteDifference = 0; - if (inputString[inputString.length - 1] === "Z") { - timeString = inputString.substring(0, inputString.length - 1); - isUTC = true; - } - else { - const number = new Number(inputString[inputString.length - 1]); - if (isNaN(number.valueOf())) - throw new Error("Wrong input string for conversion"); - timeString = inputString; - } - if (isUTC) { - if (timeString.indexOf("+") !== -1) - throw new Error("Wrong input string for conversion"); - if (timeString.indexOf("-") !== -1) - throw new Error("Wrong input string for conversion"); - } - else { - let multiplier = 1; - let differencePosition = timeString.indexOf("+"); - let differenceString = ""; - if (differencePosition === -1) { - differencePosition = timeString.indexOf("-"); - multiplier = -1; - } - if (differencePosition !== -1) { - differenceString = timeString.substring(differencePosition + 1); - timeString = timeString.substring(0, differencePosition); - if ((differenceString.length !== 2) && (differenceString.length !== 4)) - throw new Error("Wrong input string for conversion"); - let number = parseInt(differenceString.substring(0, 2), 10); - if (isNaN(number.valueOf())) - throw new Error("Wrong input string for conversion"); - hourDifference = multiplier * number; - if (differenceString.length === 4) { - number = parseInt(differenceString.substring(2, 4), 10); - if (isNaN(number.valueOf())) - throw new Error("Wrong input string for conversion"); - minuteDifference = multiplier * number; - } - } - } - let fractionPointPosition = timeString.indexOf("."); - if (fractionPointPosition === -1) - fractionPointPosition = timeString.indexOf(","); - if (fractionPointPosition !== -1) { - const fractionPartCheck = new Number(`0${timeString.substring(fractionPointPosition)}`); - if (isNaN(fractionPartCheck.valueOf())) - throw new Error("Wrong input string for conversion"); - fractionPart = fractionPartCheck.valueOf(); - dateTimeString = timeString.substring(0, fractionPointPosition); - } - else - dateTimeString = timeString; - switch (true) { - case (dateTimeString.length === 8): - parser = /(\d{4})(\d{2})(\d{2})/ig; - if (fractionPointPosition !== -1) - throw new Error("Wrong input string for conversion"); - break; - case (dateTimeString.length === 10): - parser = /(\d{4})(\d{2})(\d{2})(\d{2})/ig; - if (fractionPointPosition !== -1) { - let fractionResult = 60 * fractionPart; - this.minute = Math.floor(fractionResult); - fractionResult = 60 * (fractionResult - this.minute); - this.second = Math.floor(fractionResult); - fractionResult = 1000 * (fractionResult - this.second); - this.millisecond = Math.floor(fractionResult); - } - break; - case (dateTimeString.length === 12): - parser = /(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})/ig; - if (fractionPointPosition !== -1) { - let fractionResult = 60 * fractionPart; - this.second = Math.floor(fractionResult); - fractionResult = 1000 * (fractionResult - this.second); - this.millisecond = Math.floor(fractionResult); - } - break; - case (dateTimeString.length === 14): - parser = /(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/ig; - if (fractionPointPosition !== -1) { - const fractionResult = 1000 * fractionPart; - this.millisecond = Math.floor(fractionResult); - } - break; - default: - throw new Error("Wrong input string for conversion"); - } - const parserArray = parser.exec(dateTimeString); - if (parserArray === null) - throw new Error("Wrong input string for conversion"); - for (let j = 1; j < parserArray.length; j++) { - switch (j) { - case 1: - this.year = parseInt(parserArray[j], 10); - break; - case 2: - this.month = parseInt(parserArray[j], 10); - break; - case 3: - this.day = parseInt(parserArray[j], 10); - break; - case 4: - this.hour = parseInt(parserArray[j], 10) + hourDifference; - break; - case 5: - this.minute = parseInt(parserArray[j], 10) + minuteDifference; - break; - case 6: - this.second = parseInt(parserArray[j], 10); - break; - default: - throw new Error("Wrong input string for conversion"); - } - } - if (isUTC === false) { - const tempDate = new Date(this.year, this.month, this.day, this.hour, this.minute, this.second, this.millisecond); - this.year = tempDate.getUTCFullYear(); - this.month = tempDate.getUTCMonth(); - this.day = tempDate.getUTCDay(); - this.hour = tempDate.getUTCHours(); - this.minute = tempDate.getUTCMinutes(); - this.second = tempDate.getUTCSeconds(); - this.millisecond = tempDate.getUTCMilliseconds(); - } - } - toString(encoding = "iso") { - if (encoding === "iso") { - const outputArray = []; - outputArray.push(padNumber(this.year, 4)); - outputArray.push(padNumber(this.month, 2)); - outputArray.push(padNumber(this.day, 2)); - outputArray.push(padNumber(this.hour, 2)); - outputArray.push(padNumber(this.minute, 2)); - outputArray.push(padNumber(this.second, 2)); - if (this.millisecond !== 0) { - outputArray.push("."); - outputArray.push(padNumber(this.millisecond, 3)); - } - outputArray.push("Z"); - return outputArray.join(""); - } - return super.toString(encoding); - } - toJSON() { - return { - ...super.toJSON(), - millisecond: this.millisecond, - }; - } -} -_a$5 = GeneralizedTime; -(() => { - typeStore.GeneralizedTime = _a$5; -})(); -GeneralizedTime.NAME = "GeneralizedTime"; - -var _a$4; -class DATE extends Utf8String { - constructor(parameters = {}) { - super(parameters); - this.idBlock.tagClass = 1; - this.idBlock.tagNumber = 31; - } -} -_a$4 = DATE; -(() => { - typeStore.DATE = _a$4; -})(); -DATE.NAME = "DATE"; - -var _a$3; -class TimeOfDay extends Utf8String { - constructor(parameters = {}) { - super(parameters); - this.idBlock.tagClass = 1; - this.idBlock.tagNumber = 32; - } -} -_a$3 = TimeOfDay; -(() => { - typeStore.TimeOfDay = _a$3; -})(); -TimeOfDay.NAME = "TimeOfDay"; - -var _a$2; -class DateTime extends Utf8String { - constructor(parameters = {}) { - super(parameters); - this.idBlock.tagClass = 1; - this.idBlock.tagNumber = 33; - } -} -_a$2 = DateTime; -(() => { - typeStore.DateTime = _a$2; -})(); -DateTime.NAME = "DateTime"; - -var _a$1; -class Duration extends Utf8String { - constructor(parameters = {}) { - super(parameters); - this.idBlock.tagClass = 1; - this.idBlock.tagNumber = 34; - } -} -_a$1 = Duration; -(() => { - typeStore.Duration = _a$1; -})(); -Duration.NAME = "Duration"; - -var _a; -class TIME extends Utf8String { - constructor(parameters = {}) { - super(parameters); - this.idBlock.tagClass = 1; - this.idBlock.tagNumber = 14; - } -} -_a = TIME; -(() => { - typeStore.TIME = _a; -})(); -TIME.NAME = "TIME"; - -class Any { - constructor({ name = EMPTY_STRING, optional = false, } = {}) { - this.name = name; - this.optional = optional; - } -} - -class Choice extends Any { - constructor({ value = [], ...parameters } = {}) { - super(parameters); - this.value = value; - } -} - -class Repeated extends Any { - constructor({ value = new Any(), local = false, ...parameters } = {}) { - super(parameters); - this.value = value; - this.local = local; - } -} - -class RawData { - constructor({ data = EMPTY_VIEW } = {}) { - this.dataView = BufferSourceConverter.toUint8Array(data); - } - get data() { - return this.dataView.slice().buffer; - } - set data(value) { - this.dataView = BufferSourceConverter.toUint8Array(value); - } - fromBER(inputBuffer, inputOffset, inputLength) { - const endLength = inputOffset + inputLength; - this.dataView = BufferSourceConverter.toUint8Array(inputBuffer).subarray(inputOffset, endLength); - return endLength; - } - toBER(sizeOnly) { - return this.dataView.slice().buffer; - } -} - -function compareSchema(root, inputData, inputSchema) { - if (inputSchema instanceof Choice) { - for (let j = 0; j < inputSchema.value.length; j++) { - const result = compareSchema(root, inputData, inputSchema.value[j]); - if (result.verified) { - return { - verified: true, - result: root - }; - } - } - { - const _result = { - verified: false, - result: { - error: "Wrong values for Choice type" - }, - }; - if (inputSchema.hasOwnProperty(NAME)) - _result.name = inputSchema.name; - return _result; - } - } - if (inputSchema instanceof Any) { - if (inputSchema.hasOwnProperty(NAME)) - root[inputSchema.name] = inputData; - return { - verified: true, - result: root - }; - } - if ((root instanceof Object) === false) { - return { - verified: false, - result: { error: "Wrong root object" } - }; - } - if ((inputData instanceof Object) === false) { - return { - verified: false, - result: { error: "Wrong ASN.1 data" } - }; - } - if ((inputSchema instanceof Object) === false) { - return { - verified: false, - result: { error: "Wrong ASN.1 schema" } - }; - } - if ((ID_BLOCK in inputSchema) === false) { - return { - verified: false, - result: { error: "Wrong ASN.1 schema" } - }; - } - if ((FROM_BER in inputSchema.idBlock) === false) { - return { - verified: false, - result: { error: "Wrong ASN.1 schema" } - }; - } - if ((TO_BER in inputSchema.idBlock) === false) { - return { - verified: false, - result: { error: "Wrong ASN.1 schema" } - }; - } - const encodedId = inputSchema.idBlock.toBER(false); - if (encodedId.byteLength === 0) { - return { - verified: false, - result: { error: "Error encoding idBlock for ASN.1 schema" } - }; - } - const decodedOffset = inputSchema.idBlock.fromBER(encodedId, 0, encodedId.byteLength); - if (decodedOffset === -1) { - return { - verified: false, - result: { error: "Error decoding idBlock for ASN.1 schema" } - }; - } - if (inputSchema.idBlock.hasOwnProperty(TAG_CLASS) === false) { - return { - verified: false, - result: { error: "Wrong ASN.1 schema" } - }; - } - if (inputSchema.idBlock.tagClass !== inputData.idBlock.tagClass) { - return { - verified: false, - result: root - }; - } - if (inputSchema.idBlock.hasOwnProperty(TAG_NUMBER) === false) { - return { - verified: false, - result: { error: "Wrong ASN.1 schema" } - }; - } - if (inputSchema.idBlock.tagNumber !== inputData.idBlock.tagNumber) { - return { - verified: false, - result: root - }; - } - if (inputSchema.idBlock.hasOwnProperty(IS_CONSTRUCTED) === false) { - return { - verified: false, - result: { error: "Wrong ASN.1 schema" } - }; - } - if (inputSchema.idBlock.isConstructed !== inputData.idBlock.isConstructed) { - return { - verified: false, - result: root - }; - } - if (!(IS_HEX_ONLY in inputSchema.idBlock)) { - return { - verified: false, - result: { error: "Wrong ASN.1 schema" } - }; - } - if (inputSchema.idBlock.isHexOnly !== inputData.idBlock.isHexOnly) { - return { - verified: false, - result: root - }; - } - if (inputSchema.idBlock.isHexOnly) { - if ((VALUE_HEX_VIEW in inputSchema.idBlock) === false) { - return { - verified: false, - result: { error: "Wrong ASN.1 schema" } - }; - } - const schemaView = inputSchema.idBlock.valueHexView; - const asn1View = inputData.idBlock.valueHexView; - if (schemaView.length !== asn1View.length) { - return { - verified: false, - result: root - }; - } - for (let i = 0; i < schemaView.length; i++) { - if (schemaView[i] !== asn1View[1]) { - return { - verified: false, - result: root - }; - } - } - } - if (inputSchema.name) { - inputSchema.name = inputSchema.name.replace(/^\s+|\s+$/g, EMPTY_STRING); - if (inputSchema.name) - root[inputSchema.name] = inputData; - } - if (inputSchema instanceof typeStore.Constructed) { - let admission = 0; - let result = { - verified: false, - result: { - error: "Unknown error", - } - }; - let maxLength = inputSchema.valueBlock.value.length; - if (maxLength > 0) { - if (inputSchema.valueBlock.value[0] instanceof Repeated) { - maxLength = inputData.valueBlock.value.length; - } - } - if (maxLength === 0) { - return { - verified: true, - result: root - }; - } - if ((inputData.valueBlock.value.length === 0) && - (inputSchema.valueBlock.value.length !== 0)) { - let _optional = true; - for (let i = 0; i < inputSchema.valueBlock.value.length; i++) - _optional = _optional && (inputSchema.valueBlock.value[i].optional || false); - if (_optional) { - return { - verified: true, - result: root - }; - } - if (inputSchema.name) { - inputSchema.name = inputSchema.name.replace(/^\s+|\s+$/g, EMPTY_STRING); - if (inputSchema.name) - delete root[inputSchema.name]; - } - root.error = "Inconsistent object length"; - return { - verified: false, - result: root - }; - } - for (let i = 0; i < maxLength; i++) { - if ((i - admission) >= inputData.valueBlock.value.length) { - if (inputSchema.valueBlock.value[i].optional === false) { - const _result = { - verified: false, - result: root - }; - root.error = "Inconsistent length between ASN.1 data and schema"; - if (inputSchema.name) { - inputSchema.name = inputSchema.name.replace(/^\s+|\s+$/g, EMPTY_STRING); - if (inputSchema.name) { - delete root[inputSchema.name]; - _result.name = inputSchema.name; - } - } - return _result; - } - } - else { - if (inputSchema.valueBlock.value[0] instanceof Repeated) { - result = compareSchema(root, inputData.valueBlock.value[i], inputSchema.valueBlock.value[0].value); - if (result.verified === false) { - if (inputSchema.valueBlock.value[0].optional) - admission++; - else { - if (inputSchema.name) { - inputSchema.name = inputSchema.name.replace(/^\s+|\s+$/g, EMPTY_STRING); - if (inputSchema.name) - delete root[inputSchema.name]; - } - return result; - } - } - if ((NAME in inputSchema.valueBlock.value[0]) && (inputSchema.valueBlock.value[0].name.length > 0)) { - let arrayRoot = {}; - if ((LOCAL in inputSchema.valueBlock.value[0]) && (inputSchema.valueBlock.value[0].local)) - arrayRoot = inputData; - else - arrayRoot = root; - if (typeof arrayRoot[inputSchema.valueBlock.value[0].name] === "undefined") - arrayRoot[inputSchema.valueBlock.value[0].name] = []; - arrayRoot[inputSchema.valueBlock.value[0].name].push(inputData.valueBlock.value[i]); - } - } - else { - result = compareSchema(root, inputData.valueBlock.value[i - admission], inputSchema.valueBlock.value[i]); - if (result.verified === false) { - if (inputSchema.valueBlock.value[i].optional) - admission++; - else { - if (inputSchema.name) { - inputSchema.name = inputSchema.name.replace(/^\s+|\s+$/g, EMPTY_STRING); - if (inputSchema.name) - delete root[inputSchema.name]; - } - return result; - } - } - } - } - } - if (result.verified === false) { - const _result = { - verified: false, - result: root - }; - if (inputSchema.name) { - inputSchema.name = inputSchema.name.replace(/^\s+|\s+$/g, EMPTY_STRING); - if (inputSchema.name) { - delete root[inputSchema.name]; - _result.name = inputSchema.name; - } - } - return _result; - } - return { - verified: true, - result: root - }; - } - if (inputSchema.primitiveSchema && - (VALUE_HEX_VIEW in inputData.valueBlock)) { - const asn1 = localFromBER(inputData.valueBlock.valueHexView); - if (asn1.offset === -1) { - const _result = { - verified: false, - result: asn1.result - }; - if (inputSchema.name) { - inputSchema.name = inputSchema.name.replace(/^\s+|\s+$/g, EMPTY_STRING); - if (inputSchema.name) { - delete root[inputSchema.name]; - _result.name = inputSchema.name; - } - } - return _result; - } - return compareSchema(root, asn1.result, inputSchema.primitiveSchema); - } - return { - verified: true, - result: root - }; -} -function verifySchema(inputBuffer, inputSchema) { - if ((inputSchema instanceof Object) === false) { - return { - verified: false, - result: { error: "Wrong ASN.1 schema type" } - }; - } - const asn1 = localFromBER(BufferSourceConverter.toUint8Array(inputBuffer)); - if (asn1.offset === -1) { - return { - verified: false, - result: asn1.result - }; - } - return compareSchema(asn1.result, asn1.result, inputSchema); -} - -var asn1js = /*#__PURE__*/Object.freeze({ - __proto__: null, - Any: Any, - BaseBlock: BaseBlock, - BaseStringBlock: BaseStringBlock, - BitString: BitString, - BmpString: BmpString, - Boolean: Boolean$1, - CharacterString: CharacterString, - Choice: Choice, - Constructed: Constructed, - DATE: DATE, - DateTime: DateTime, - Duration: Duration, - EndOfContent: EndOfContent, - Enumerated: Enumerated, - GeneralString: GeneralString, - GeneralizedTime: GeneralizedTime, - GraphicString: GraphicString, - HexBlock: HexBlock, - IA5String: IA5String, - Integer: Integer, - Null: Null, - NumericString: NumericString, - ObjectIdentifier: ObjectIdentifier$1, - OctetString: OctetString, - Primitive: Primitive, - PrintableString: PrintableString, - RawData: RawData, - RelativeObjectIdentifier: RelativeObjectIdentifier, - Repeated: Repeated, - Sequence: Sequence, - Set: Set$1, - TIME: TIME, - TeletexString: TeletexString, - TimeOfDay: TimeOfDay, - UTCTime: UTCTime, - UniversalString: UniversalString, - Utf8String: Utf8String, - ValueBlock: ValueBlock, - VideotexString: VideotexString, - ViewWriter: ViewWriter, - VisibleString: VisibleString, - compareSchema: compareSchema, - fromBER: fromBER, - verifySchema: verifySchema -}); - -var AsnTypeTypes; -(function (AsnTypeTypes) { - AsnTypeTypes[AsnTypeTypes["Sequence"] = 0] = "Sequence"; - AsnTypeTypes[AsnTypeTypes["Set"] = 1] = "Set"; - AsnTypeTypes[AsnTypeTypes["Choice"] = 2] = "Choice"; -})(AsnTypeTypes || (AsnTypeTypes = {})); -var AsnPropTypes; -(function (AsnPropTypes) { - AsnPropTypes[AsnPropTypes["Any"] = 1] = "Any"; - AsnPropTypes[AsnPropTypes["Boolean"] = 2] = "Boolean"; - AsnPropTypes[AsnPropTypes["OctetString"] = 3] = "OctetString"; - AsnPropTypes[AsnPropTypes["BitString"] = 4] = "BitString"; - AsnPropTypes[AsnPropTypes["Integer"] = 5] = "Integer"; - AsnPropTypes[AsnPropTypes["Enumerated"] = 6] = "Enumerated"; - AsnPropTypes[AsnPropTypes["ObjectIdentifier"] = 7] = "ObjectIdentifier"; - AsnPropTypes[AsnPropTypes["Utf8String"] = 8] = "Utf8String"; - AsnPropTypes[AsnPropTypes["BmpString"] = 9] = "BmpString"; - AsnPropTypes[AsnPropTypes["UniversalString"] = 10] = "UniversalString"; - AsnPropTypes[AsnPropTypes["NumericString"] = 11] = "NumericString"; - AsnPropTypes[AsnPropTypes["PrintableString"] = 12] = "PrintableString"; - AsnPropTypes[AsnPropTypes["TeletexString"] = 13] = "TeletexString"; - AsnPropTypes[AsnPropTypes["VideotexString"] = 14] = "VideotexString"; - AsnPropTypes[AsnPropTypes["IA5String"] = 15] = "IA5String"; - AsnPropTypes[AsnPropTypes["GraphicString"] = 16] = "GraphicString"; - AsnPropTypes[AsnPropTypes["VisibleString"] = 17] = "VisibleString"; - AsnPropTypes[AsnPropTypes["GeneralString"] = 18] = "GeneralString"; - AsnPropTypes[AsnPropTypes["CharacterString"] = 19] = "CharacterString"; - AsnPropTypes[AsnPropTypes["UTCTime"] = 20] = "UTCTime"; - AsnPropTypes[AsnPropTypes["GeneralizedTime"] = 21] = "GeneralizedTime"; - AsnPropTypes[AsnPropTypes["DATE"] = 22] = "DATE"; - AsnPropTypes[AsnPropTypes["TimeOfDay"] = 23] = "TimeOfDay"; - AsnPropTypes[AsnPropTypes["DateTime"] = 24] = "DateTime"; - AsnPropTypes[AsnPropTypes["Duration"] = 25] = "Duration"; - AsnPropTypes[AsnPropTypes["TIME"] = 26] = "TIME"; - AsnPropTypes[AsnPropTypes["Null"] = 27] = "Null"; -})(AsnPropTypes || (AsnPropTypes = {})); - -const AsnAnyConverter = { - fromASN: (value) => value instanceof Null ? null : value.valueBeforeDecodeView, - toASN: (value) => { - if (value === null) { - return new Null(); - } - const schema = fromBER(value); - if (schema.result.error) { - throw new Error(schema.result.error); - } - return schema.result; - }, -}; -const AsnIntegerConverter = { - fromASN: (value) => value.valueBlock.valueHexView.byteLength >= 4 - ? value.valueBlock.toString() - : value.valueBlock.valueDec, - toASN: (value) => new Integer({ value: +value }), -}; -const AsnEnumeratedConverter = { - fromASN: (value) => value.valueBlock.valueDec, - toASN: (value) => new Enumerated({ value }), -}; -const AsnBitStringConverter = { - fromASN: (value) => value.valueBlock.valueHexView, - toASN: (value) => new BitString({ valueHex: value }), -}; -const AsnObjectIdentifierConverter = { - fromASN: (value) => value.valueBlock.toString(), - toASN: (value) => new ObjectIdentifier$1({ value }), -}; -const AsnBooleanConverter = { - fromASN: (value) => value.valueBlock.value, - toASN: (value) => new Boolean$1({ value }), -}; -const AsnOctetStringConverter = { - fromASN: (value) => value.valueBlock.valueHexView, - toASN: (value) => new OctetString({ valueHex: value }), -}; -function createStringConverter(Asn1Type) { - return { - fromASN: (value) => value.valueBlock.value, - toASN: (value) => new Asn1Type({ value }), - }; -} -const AsnUtf8StringConverter = createStringConverter(Utf8String); -const AsnBmpStringConverter = createStringConverter(BmpString); -const AsnUniversalStringConverter = createStringConverter(UniversalString); -const AsnNumericStringConverter = createStringConverter(NumericString); -const AsnPrintableStringConverter = createStringConverter(PrintableString); -const AsnTeletexStringConverter = createStringConverter(TeletexString); -const AsnVideotexStringConverter = createStringConverter(VideotexString); -const AsnIA5StringConverter = createStringConverter(IA5String); -const AsnGraphicStringConverter = createStringConverter(GraphicString); -const AsnVisibleStringConverter = createStringConverter(VisibleString); -const AsnGeneralStringConverter = createStringConverter(GeneralString); -const AsnCharacterStringConverter = createStringConverter(CharacterString); -const AsnUTCTimeConverter = { - fromASN: (value) => value.toDate(), - toASN: (value) => new UTCTime({ valueDate: value }), -}; -const AsnGeneralizedTimeConverter = { - fromASN: (value) => value.toDate(), - toASN: (value) => new GeneralizedTime({ valueDate: value }), -}; -const AsnNullConverter = { - fromASN: () => null, - toASN: () => { - return new Null(); - }, -}; -function defaultConverter(type) { - switch (type) { - case AsnPropTypes.Any: - return AsnAnyConverter; - case AsnPropTypes.BitString: - return AsnBitStringConverter; - case AsnPropTypes.BmpString: - return AsnBmpStringConverter; - case AsnPropTypes.Boolean: - return AsnBooleanConverter; - case AsnPropTypes.CharacterString: - return AsnCharacterStringConverter; - case AsnPropTypes.Enumerated: - return AsnEnumeratedConverter; - case AsnPropTypes.GeneralString: - return AsnGeneralStringConverter; - case AsnPropTypes.GeneralizedTime: - return AsnGeneralizedTimeConverter; - case AsnPropTypes.GraphicString: - return AsnGraphicStringConverter; - case AsnPropTypes.IA5String: - return AsnIA5StringConverter; - case AsnPropTypes.Integer: - return AsnIntegerConverter; - case AsnPropTypes.Null: - return AsnNullConverter; - case AsnPropTypes.NumericString: - return AsnNumericStringConverter; - case AsnPropTypes.ObjectIdentifier: - return AsnObjectIdentifierConverter; - case AsnPropTypes.OctetString: - return AsnOctetStringConverter; - case AsnPropTypes.PrintableString: - return AsnPrintableStringConverter; - case AsnPropTypes.TeletexString: - return AsnTeletexStringConverter; - case AsnPropTypes.UTCTime: - return AsnUTCTimeConverter; - case AsnPropTypes.UniversalString: - return AsnUniversalStringConverter; - case AsnPropTypes.Utf8String: - return AsnUtf8StringConverter; - case AsnPropTypes.VideotexString: - return AsnVideotexStringConverter; - case AsnPropTypes.VisibleString: - return AsnVisibleStringConverter; - default: - return null; - } -} - -function isConvertible$1(target) { - if (typeof target === "function" && target.prototype) { - if (target.prototype.toASN && target.prototype.fromASN) { - return true; - } - else { - return isConvertible$1(target.prototype); - } - } - else { - return !!(target && typeof target === "object" && "toASN" in target && "fromASN" in target); - } -} -function isTypeOfArray(target) { - var _a; - if (target) { - const proto = Object.getPrototypeOf(target); - if (((_a = proto === null || proto === void 0 ? void 0 : proto.prototype) === null || _a === void 0 ? void 0 : _a.constructor) === Array) { - return true; - } - return isTypeOfArray(proto); - } - return false; -} -function isArrayEqual(bytes1, bytes2) { - if (!(bytes1 && bytes2)) { - return false; - } - if (bytes1.byteLength !== bytes2.byteLength) { - return false; - } - const b1 = new Uint8Array(bytes1); - const b2 = new Uint8Array(bytes2); - for (let i = 0; i < bytes1.byteLength; i++) { - if (b1[i] !== b2[i]) { - return false; - } - } - return true; -} - -class AsnSchemaStorage { - constructor() { - this.items = new WeakMap(); - } - has(target) { - return this.items.has(target); - } - get(target, checkSchema = false) { - const schema = this.items.get(target); - if (!schema) { - throw new Error(`Cannot get schema for '${target.prototype.constructor.name}' target`); - } - if (checkSchema && !schema.schema) { - throw new Error(`Schema '${target.prototype.constructor.name}' doesn't contain ASN.1 schema. Call 'AsnSchemaStorage.cache'.`); - } - return schema; - } - cache(target) { - const schema = this.get(target); - if (!schema.schema) { - schema.schema = this.create(target, true); - } - } - createDefault(target) { - const schema = { - type: AsnTypeTypes.Sequence, - items: {}, - }; - const parentSchema = this.findParentSchema(target); - if (parentSchema) { - Object.assign(schema, parentSchema); - schema.items = Object.assign({}, schema.items, parentSchema.items); - } - return schema; - } - create(target, useNames) { - const schema = this.items.get(target) || this.createDefault(target); - const asn1Value = []; - for (const key in schema.items) { - const item = schema.items[key]; - const name = useNames ? key : ""; - let asn1Item; - if (typeof (item.type) === "number") { - const Asn1TypeName = AsnPropTypes[item.type]; - const Asn1Type = asn1js[Asn1TypeName]; - if (!Asn1Type) { - throw new Error(`Cannot get ASN1 class by name '${Asn1TypeName}'`); - } - asn1Item = new Asn1Type({ name }); - } - else if (isConvertible$1(item.type)) { - const instance = new item.type(); - asn1Item = instance.toSchema(name); - } - else if (item.optional) { - const itemSchema = this.get(item.type); - if (itemSchema.type === AsnTypeTypes.Choice) { - asn1Item = new Any({ name }); - } - else { - asn1Item = this.create(item.type, false); - asn1Item.name = name; - } - } - else { - asn1Item = new Any({ name }); - } - const optional = !!item.optional || item.defaultValue !== undefined; - if (item.repeated) { - asn1Item.name = ""; - const Container = item.repeated === "set" - ? Set$1 - : Sequence; - asn1Item = new Container({ - name: "", - value: [ - new Repeated({ - name, - value: asn1Item, - }), - ], - }); - } - if (item.context !== null && item.context !== undefined) { - if (item.implicit) { - if (typeof item.type === "number" || isConvertible$1(item.type)) { - const Container = item.repeated - ? Constructed - : Primitive; - asn1Value.push(new Container({ - name, - optional, - idBlock: { - tagClass: 3, - tagNumber: item.context, - }, - })); - } - else { - this.cache(item.type); - const isRepeated = !!item.repeated; - let value = !isRepeated - ? this.get(item.type, true).schema - : asn1Item; - value = "valueBlock" in value ? value.valueBlock.value : value.value; - asn1Value.push(new Constructed({ - name: !isRepeated ? name : "", - optional, - idBlock: { - tagClass: 3, - tagNumber: item.context, - }, - value: value, - })); - } - } - else { - asn1Value.push(new Constructed({ - optional, - idBlock: { - tagClass: 3, - tagNumber: item.context, - }, - value: [asn1Item], - })); - } - } - else { - asn1Item.optional = optional; - asn1Value.push(asn1Item); - } - } - switch (schema.type) { - case AsnTypeTypes.Sequence: - return new Sequence({ value: asn1Value, name: "" }); - case AsnTypeTypes.Set: - return new Set$1({ value: asn1Value, name: "" }); - case AsnTypeTypes.Choice: - return new Choice({ value: asn1Value, name: "" }); - default: - throw new Error(`Unsupported ASN1 type in use`); - } - } - set(target, schema) { - this.items.set(target, schema); - return this; - } - findParentSchema(target) { - const parent = target.__proto__; - if (parent) { - const schema = this.items.get(parent); - return schema || this.findParentSchema(parent); - } - return null; - } -} - -const schemaStorage$1 = new AsnSchemaStorage(); - -const AsnType = (options) => (target) => { - let schema; - if (!schemaStorage$1.has(target)) { - schema = schemaStorage$1.createDefault(target); - schemaStorage$1.set(target, schema); - } - else { - schema = schemaStorage$1.get(target); - } - Object.assign(schema, options); -}; -const AsnProp = (options) => (target, propertyKey) => { - let schema; - if (!schemaStorage$1.has(target.constructor)) { - schema = schemaStorage$1.createDefault(target.constructor); - schemaStorage$1.set(target.constructor, schema); - } - else { - schema = schemaStorage$1.get(target.constructor); - } - const copyOptions = Object.assign({}, options); - if (typeof copyOptions.type === "number" && !copyOptions.converter) { - const defaultConverter$1 = defaultConverter(options.type); - if (!defaultConverter$1) { - throw new Error(`Cannot get default converter for property '${propertyKey}' of ${target.constructor.name}`); - } - copyOptions.converter = defaultConverter$1; - } - schema.items[propertyKey] = copyOptions; -}; - -class AsnSchemaValidationError extends Error { - constructor() { - super(...arguments); - this.schemas = []; - } -} - -class AsnParser { - static parse(data, target) { - const asn1Parsed = fromBER(data); - if (asn1Parsed.result.error) { - throw new Error(asn1Parsed.result.error); - } - const res = this.fromASN(asn1Parsed.result, target); - return res; - } - static fromASN(asn1Schema, target) { - var _a; - try { - if (isConvertible$1(target)) { - const value = new target(); - return value.fromASN(asn1Schema); - } - const schema = schemaStorage$1.get(target); - schemaStorage$1.cache(target); - let targetSchema = schema.schema; - if (asn1Schema.constructor === Constructed && schema.type !== AsnTypeTypes.Choice) { - targetSchema = new Constructed({ - idBlock: { - tagClass: 3, - tagNumber: asn1Schema.idBlock.tagNumber, - }, - value: schema.schema.valueBlock.value, - }); - for (const key in schema.items) { - delete asn1Schema[key]; - } - } - const asn1ComparedSchema = compareSchema({}, asn1Schema, targetSchema); - if (!asn1ComparedSchema.verified) { - throw new AsnSchemaValidationError(`Data does not match to ${target.name} ASN1 schema. ${asn1ComparedSchema.result.error}`); - } - const res = new target(); - if (isTypeOfArray(target)) { - if (!("value" in asn1Schema.valueBlock && Array.isArray(asn1Schema.valueBlock.value))) { - throw new Error(`Cannot get items from the ASN.1 parsed value. ASN.1 object is not constructed.`); - } - const itemType = schema.itemType; - if (typeof itemType === "number") { - const converter = defaultConverter(itemType); - if (!converter) { - throw new Error(`Cannot get default converter for array item of ${target.name} ASN1 schema`); - } - return target.from(asn1Schema.valueBlock.value, (element) => converter.fromASN(element)); - } - else { - return target.from(asn1Schema.valueBlock.value, (element) => this.fromASN(element, itemType)); - } - } - for (const key in schema.items) { - const asn1SchemaValue = asn1ComparedSchema.result[key]; - if (!asn1SchemaValue) { - continue; - } - const schemaItem = schema.items[key]; - const schemaItemType = schemaItem.type; - if (typeof schemaItemType === "number" || isConvertible$1(schemaItemType)) { - const converter = (_a = schemaItem.converter) !== null && _a !== void 0 ? _a : (isConvertible$1(schemaItemType) - ? new schemaItemType() - : null); - if (!converter) { - throw new Error("Converter is empty"); - } - if (schemaItem.repeated) { - if (schemaItem.implicit) { - const Container = schemaItem.repeated === "sequence" - ? Sequence - : Set$1; - const newItem = new Container(); - newItem.valueBlock = asn1SchemaValue.valueBlock; - const newItemAsn = fromBER(newItem.toBER(false)); - if (newItemAsn.offset === -1) { - throw new Error(`Cannot parse the child item. ${newItemAsn.result.error}`); - } - if (!("value" in newItemAsn.result.valueBlock && Array.isArray(newItemAsn.result.valueBlock.value))) { - throw new Error("Cannot get items from the ASN.1 parsed value. ASN.1 object is not constructed."); - } - const value = newItemAsn.result.valueBlock.value; - res[key] = Array.from(value, (element) => converter.fromASN(element)); - } - else { - res[key] = Array.from(asn1SchemaValue, (element) => converter.fromASN(element)); - } - } - else { - let value = asn1SchemaValue; - if (schemaItem.implicit) { - let newItem; - if (isConvertible$1(schemaItemType)) { - newItem = new schemaItemType().toSchema(""); - } - else { - const Asn1TypeName = AsnPropTypes[schemaItemType]; - const Asn1Type = asn1js[Asn1TypeName]; - if (!Asn1Type) { - throw new Error(`Cannot get '${Asn1TypeName}' class from asn1js module`); - } - newItem = new Asn1Type(); - } - newItem.valueBlock = value.valueBlock; - value = fromBER(newItem.toBER(false)).result; - } - res[key] = converter.fromASN(value); - } - } - else { - if (schemaItem.repeated) { - if (!Array.isArray(asn1SchemaValue)) { - throw new Error("Cannot get list of items from the ASN.1 parsed value. ASN.1 value should be iterable."); - } - res[key] = Array.from(asn1SchemaValue, (element) => this.fromASN(element, schemaItemType)); - } - else { - res[key] = this.fromASN(asn1SchemaValue, schemaItemType); - } - } - } - return res; - } - catch (error) { - if (error instanceof AsnSchemaValidationError) { - error.schemas.push(target.name); - } - throw error; - } - } -} - -class AsnSerializer { - static serialize(obj) { - if (obj instanceof BaseBlock) { - return obj.toBER(false); - } - return this.toASN(obj).toBER(false); - } - static toASN(obj) { - if (obj && typeof obj === "object" && isConvertible$1(obj)) { - return obj.toASN(); - } - if (!(obj && typeof obj === "object")) { - throw new TypeError("Parameter 1 should be type of Object."); - } - const target = obj.constructor; - const schema = schemaStorage$1.get(target); - schemaStorage$1.cache(target); - let asn1Value = []; - if (schema.itemType) { - if (!Array.isArray(obj)) { - throw new TypeError("Parameter 1 should be type of Array."); - } - if (typeof schema.itemType === "number") { - const converter = defaultConverter(schema.itemType); - if (!converter) { - throw new Error(`Cannot get default converter for array item of ${target.name} ASN1 schema`); - } - asn1Value = obj.map((o) => converter.toASN(o)); - } - else { - asn1Value = obj.map((o) => this.toAsnItem({ type: schema.itemType }, "[]", target, o)); - } - } - else { - for (const key in schema.items) { - const schemaItem = schema.items[key]; - const objProp = obj[key]; - if (objProp === undefined - || schemaItem.defaultValue === objProp - || (typeof schemaItem.defaultValue === "object" && typeof objProp === "object" - && isArrayEqual(this.serialize(schemaItem.defaultValue), this.serialize(objProp)))) { - continue; - } - const asn1Item = AsnSerializer.toAsnItem(schemaItem, key, target, objProp); - if (typeof schemaItem.context === "number") { - if (schemaItem.implicit) { - if (!schemaItem.repeated - && (typeof schemaItem.type === "number" || isConvertible$1(schemaItem.type))) { - const value = {}; - value.valueHex = asn1Item instanceof Null ? asn1Item.valueBeforeDecodeView : asn1Item.valueBlock.toBER(); - asn1Value.push(new Primitive({ - optional: schemaItem.optional, - idBlock: { - tagClass: 3, - tagNumber: schemaItem.context, - }, - ...value, - })); - } - else { - asn1Value.push(new Constructed({ - optional: schemaItem.optional, - idBlock: { - tagClass: 3, - tagNumber: schemaItem.context, - }, - value: asn1Item.valueBlock.value, - })); - } - } - else { - asn1Value.push(new Constructed({ - optional: schemaItem.optional, - idBlock: { - tagClass: 3, - tagNumber: schemaItem.context, - }, - value: [asn1Item], - })); - } - } - else if (schemaItem.repeated) { - asn1Value = asn1Value.concat(asn1Item); - } - else { - asn1Value.push(asn1Item); - } - } - } - let asnSchema; - switch (schema.type) { - case AsnTypeTypes.Sequence: - asnSchema = new Sequence({ value: asn1Value }); - break; - case AsnTypeTypes.Set: - asnSchema = new Set$1({ value: asn1Value }); - break; - case AsnTypeTypes.Choice: - if (!asn1Value[0]) { - throw new Error(`Schema '${target.name}' has wrong data. Choice cannot be empty.`); - } - asnSchema = asn1Value[0]; - break; - } - return asnSchema; - } - static toAsnItem(schemaItem, key, target, objProp) { - let asn1Item; - if (typeof (schemaItem.type) === "number") { - const converter = schemaItem.converter; - if (!converter) { - throw new Error(`Property '${key}' doesn't have converter for type ${AsnPropTypes[schemaItem.type]} in schema '${target.name}'`); - } - if (schemaItem.repeated) { - if (!Array.isArray(objProp)) { - throw new TypeError("Parameter 'objProp' should be type of Array."); - } - const items = Array.from(objProp, (element) => converter.toASN(element)); - const Container = schemaItem.repeated === "sequence" - ? Sequence - : Set$1; - asn1Item = new Container({ - value: items, - }); - } - else { - asn1Item = converter.toASN(objProp); - } - } - else { - if (schemaItem.repeated) { - if (!Array.isArray(objProp)) { - throw new TypeError("Parameter 'objProp' should be type of Array."); - } - const items = Array.from(objProp, (element) => this.toASN(element)); - const Container = schemaItem.repeated === "sequence" - ? Sequence - : Set$1; - asn1Item = new Container({ - value: items, - }); - } - else { - asn1Item = this.toASN(objProp); - } - } - return asn1Item; - } -} - -class AsnConvert { - static serialize(obj) { - return AsnSerializer.serialize(obj); - } - static parse(data, target) { - return AsnParser.parse(data, target); - } - static toString(data) { - const buf = BufferSourceConverter.isBufferSource(data) - ? BufferSourceConverter.toArrayBuffer(data) - : AsnConvert.serialize(data); - const asn = fromBER(buf); - if (asn.offset === -1) { - throw new Error(`Cannot decode ASN.1 data. ${asn.result.error}`); - } - return asn.result.toString(); - } -} - -/****************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */ - -function __decorate(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -} - -/** - * Copyright (c) 2020, Peculiar Ventures, All rights reserved. - */ - -class JsonError extends Error { - constructor(message, innerError) { - super(innerError - ? `${message}. See the inner exception for more details.` - : message); - this.message = message; - this.innerError = innerError; - } -} - -class TransformError extends JsonError { - constructor(schema, message, innerError) { - super(message, innerError); - this.schema = schema; - } -} - -class ParserError extends TransformError { - constructor(schema, message, innerError) { - super(schema, `JSON doesn't match to '${schema.target.name}' schema. ${message}`, innerError); - } -} - -class ValidationError extends JsonError { -} - -class SerializerError extends JsonError { - constructor(schemaName, message, innerError) { - super(`Cannot serialize by '${schemaName}' schema. ${message}`, innerError); - this.schemaName = schemaName; - } -} - -class KeyError extends ParserError { - constructor(schema, keys, errors = {}) { - super(schema, "Some keys doesn't match to schema"); - this.keys = keys; - this.errors = errors; - } -} - -var JsonPropTypes; -(function (JsonPropTypes) { - JsonPropTypes[JsonPropTypes["Any"] = 0] = "Any"; - JsonPropTypes[JsonPropTypes["Boolean"] = 1] = "Boolean"; - JsonPropTypes[JsonPropTypes["Number"] = 2] = "Number"; - JsonPropTypes[JsonPropTypes["String"] = 3] = "String"; -})(JsonPropTypes || (JsonPropTypes = {})); - -function checkType(value, type) { - switch (type) { - case JsonPropTypes.Boolean: - return typeof value === "boolean"; - case JsonPropTypes.Number: - return typeof value === "number"; - case JsonPropTypes.String: - return typeof value === "string"; - } - return true; -} -function throwIfTypeIsWrong(value, type) { - if (!checkType(value, type)) { - throw new TypeError(`Value must be ${JsonPropTypes[type]}`); - } -} -function isConvertible(target) { - if (target && target.prototype) { - if (target.prototype.toJSON && target.prototype.fromJSON) { - return true; - } - else { - return isConvertible(target.prototype); - } - } - else { - return !!(target && target.toJSON && target.fromJSON); - } -} - -class JsonSchemaStorage { - constructor() { - this.items = new Map(); - } - has(target) { - return this.items.has(target) || !!this.findParentSchema(target); - } - get(target) { - const schema = this.items.get(target) || this.findParentSchema(target); - if (!schema) { - throw new Error("Cannot get schema for current target"); - } - return schema; - } - create(target) { - const schema = { names: {} }; - const parentSchema = this.findParentSchema(target); - if (parentSchema) { - Object.assign(schema, parentSchema); - schema.names = {}; - for (const name in parentSchema.names) { - schema.names[name] = Object.assign({}, parentSchema.names[name]); - } - } - schema.target = target; - return schema; - } - set(target, schema) { - this.items.set(target, schema); - return this; - } - findParentSchema(target) { - const parent = target.__proto__; - if (parent) { - const schema = this.items.get(parent); - return schema || this.findParentSchema(parent); - } - return null; - } -} - -const DEFAULT_SCHEMA = "default"; -const schemaStorage = new JsonSchemaStorage(); - -class PatternValidation { - constructor(pattern) { - this.pattern = new RegExp(pattern); - } - validate(value) { - const pattern = new RegExp(this.pattern.source, this.pattern.flags); - if (typeof value !== "string") { - throw new ValidationError("Incoming value must be string"); - } - if (!pattern.exec(value)) { - throw new ValidationError(`Value doesn't match to pattern '${pattern.toString()}'`); - } - } -} - -class InclusiveValidation { - constructor(min = Number.MIN_VALUE, max = Number.MAX_VALUE) { - this.min = min; - this.max = max; - } - validate(value) { - throwIfTypeIsWrong(value, JsonPropTypes.Number); - if (!(this.min <= value && value <= this.max)) { - const min = this.min === Number.MIN_VALUE ? "MIN" : this.min; - const max = this.max === Number.MAX_VALUE ? "MAX" : this.max; - throw new ValidationError(`Value doesn't match to diapason [${min},${max}]`); - } - } -} - -class ExclusiveValidation { - constructor(min = Number.MIN_VALUE, max = Number.MAX_VALUE) { - this.min = min; - this.max = max; - } - validate(value) { - throwIfTypeIsWrong(value, JsonPropTypes.Number); - if (!(this.min < value && value < this.max)) { - const min = this.min === Number.MIN_VALUE ? "MIN" : this.min; - const max = this.max === Number.MAX_VALUE ? "MAX" : this.max; - throw new ValidationError(`Value doesn't match to diapason (${min},${max})`); - } - } -} - -class LengthValidation { - constructor(length, minLength, maxLength) { - this.length = length; - this.minLength = minLength; - this.maxLength = maxLength; - } - validate(value) { - if (this.length !== undefined) { - if (value.length !== this.length) { - throw new ValidationError(`Value length must be exactly ${this.length}.`); - } - return; - } - if (this.minLength !== undefined) { - if (value.length < this.minLength) { - throw new ValidationError(`Value length must be more than ${this.minLength}.`); - } - } - if (this.maxLength !== undefined) { - if (value.length > this.maxLength) { - throw new ValidationError(`Value length must be less than ${this.maxLength}.`); - } - } - } -} - -class EnumerationValidation { - constructor(enumeration) { - this.enumeration = enumeration; - } - validate(value) { - throwIfTypeIsWrong(value, JsonPropTypes.String); - if (!this.enumeration.includes(value)) { - throw new ValidationError(`Value must be one of ${this.enumeration.map((v) => `'${v}'`).join(", ")}`); - } - } -} - -class JsonTransform { - static checkValues(data, schemaItem) { - const values = Array.isArray(data) ? data : [data]; - for (const value of values) { - for (const validation of schemaItem.validations) { - if (validation instanceof LengthValidation && schemaItem.repeated) { - validation.validate(data); - } - else { - validation.validate(value); - } - } - } - } - static checkTypes(value, schemaItem) { - if (schemaItem.repeated && !Array.isArray(value)) { - throw new TypeError("Value must be Array"); - } - if (typeof schemaItem.type === "number") { - const values = Array.isArray(value) ? value : [value]; - for (const v of values) { - throwIfTypeIsWrong(v, schemaItem.type); - } - } - } - static getSchemaByName(schema, name = DEFAULT_SCHEMA) { - return { ...schema.names[DEFAULT_SCHEMA], ...schema.names[name] }; - } -} - -class JsonSerializer extends JsonTransform { - static serialize(obj, options, replacer, space) { - const json = this.toJSON(obj, options); - return JSON.stringify(json, replacer, space); - } - static toJSON(obj, options = {}) { - let res; - let targetSchema = options.targetSchema; - const schemaName = options.schemaName || DEFAULT_SCHEMA; - if (isConvertible(obj)) { - return obj.toJSON(); - } - if (Array.isArray(obj)) { - res = []; - for (const item of obj) { - res.push(this.toJSON(item, options)); - } - } - else if (typeof obj === "object") { - if (targetSchema && !schemaStorage.has(targetSchema)) { - throw new JsonError("Cannot get schema for `targetSchema` param"); - } - targetSchema = (targetSchema || obj.constructor); - if (schemaStorage.has(targetSchema)) { - const schema = schemaStorage.get(targetSchema); - res = {}; - const namedSchema = this.getSchemaByName(schema, schemaName); - for (const key in namedSchema) { - try { - const item = namedSchema[key]; - const objItem = obj[key]; - let value; - if ((item.optional && objItem === undefined) - || (item.defaultValue !== undefined && objItem === item.defaultValue)) { - continue; - } - if (!item.optional && objItem === undefined) { - throw new SerializerError(targetSchema.name, `Property '${key}' is required.`); - } - if (typeof item.type === "number") { - if (item.converter) { - if (item.repeated) { - value = objItem.map((el) => item.converter.toJSON(el, obj)); - } - else { - value = item.converter.toJSON(objItem, obj); - } - } - else { - value = objItem; - } - } - else { - if (item.repeated) { - value = objItem.map((el) => this.toJSON(el, { schemaName })); - } - else { - value = this.toJSON(objItem, { schemaName }); - } - } - this.checkTypes(value, item); - this.checkValues(value, item); - res[item.name || key] = value; - } - catch (e) { - if (e instanceof SerializerError) { - throw e; - } - else { - throw new SerializerError(schema.target.name, `Property '${key}' is wrong. ${e.message}`, e); - } - } - } - } - else { - res = {}; - for (const key in obj) { - res[key] = this.toJSON(obj[key], { schemaName }); - } - } - } - else { - res = obj; - } - return res; - } -} - -class JsonParser extends JsonTransform { - static parse(data, options) { - const obj = JSON.parse(data); - return this.fromJSON(obj, options); - } - static fromJSON(target, options) { - const targetSchema = options.targetSchema; - const schemaName = options.schemaName || DEFAULT_SCHEMA; - const obj = new targetSchema(); - if (isConvertible(obj)) { - return obj.fromJSON(target); - } - const schema = schemaStorage.get(targetSchema); - const namedSchema = this.getSchemaByName(schema, schemaName); - const keyErrors = {}; - if (options.strictProperty && !Array.isArray(target)) { - JsonParser.checkStrictProperty(target, namedSchema, schema); - } - for (const key in namedSchema) { - try { - const item = namedSchema[key]; - const name = item.name || key; - const value = target[name]; - if (value === undefined && (item.optional || item.defaultValue !== undefined)) { - continue; - } - if (!item.optional && value === undefined) { - throw new ParserError(schema, `Property '${name}' is required.`); - } - this.checkTypes(value, item); - this.checkValues(value, item); - if (typeof (item.type) === "number") { - if (item.converter) { - if (item.repeated) { - obj[key] = value.map((el) => item.converter.fromJSON(el, obj)); - } - else { - obj[key] = item.converter.fromJSON(value, obj); - } - } - else { - obj[key] = value; - } - } - else { - const newOptions = { - ...options, - targetSchema: item.type, - schemaName, - }; - if (item.repeated) { - obj[key] = value.map((el) => this.fromJSON(el, newOptions)); - } - else { - obj[key] = this.fromJSON(value, newOptions); - } - } - } - catch (e) { - if (!(e instanceof ParserError)) { - e = new ParserError(schema, `Property '${key}' is wrong. ${e.message}`, e); - } - if (options.strictAllKeys) { - keyErrors[key] = e; - } - else { - throw e; - } - } - } - const keys = Object.keys(keyErrors); - if (keys.length) { - throw new KeyError(schema, keys, keyErrors); - } - return obj; - } - static checkStrictProperty(target, namedSchema, schema) { - const jsonProps = Object.keys(target); - const schemaProps = Object.keys(namedSchema); - const keys = []; - for (const key of jsonProps) { - if (schemaProps.indexOf(key) === -1) { - keys.push(key); - } - } - if (keys.length) { - throw new KeyError(schema, keys); - } - } -} - -function getValidations(item) { - const validations = []; - if (item.pattern) { - validations.push(new PatternValidation(item.pattern)); - } - if (item.type === JsonPropTypes.Number || item.type === JsonPropTypes.Any) { - if (item.minInclusive !== undefined || item.maxInclusive !== undefined) { - validations.push(new InclusiveValidation(item.minInclusive, item.maxInclusive)); - } - if (item.minExclusive !== undefined || item.maxExclusive !== undefined) { - validations.push(new ExclusiveValidation(item.minExclusive, item.maxExclusive)); - } - if (item.enumeration !== undefined) { - validations.push(new EnumerationValidation(item.enumeration)); - } - } - if (item.type === JsonPropTypes.String || item.repeated || item.type === JsonPropTypes.Any) { - if (item.length !== undefined || item.minLength !== undefined || item.maxLength !== undefined) { - validations.push(new LengthValidation(item.length, item.minLength, item.maxLength)); - } - } - return validations; -} -const JsonProp = (options = {}) => (target, propertyKey) => { - const errorMessage = `Cannot set type for ${propertyKey} property of ${target.constructor.name} schema`; - let schema; - if (!schemaStorage.has(target.constructor)) { - schema = schemaStorage.create(target.constructor); - schemaStorage.set(target.constructor, schema); - } - else { - schema = schemaStorage.get(target.constructor); - if (schema.target !== target.constructor) { - schema = schemaStorage.create(target.constructor); - schemaStorage.set(target.constructor, schema); - } - } - const defaultSchema = { - type: JsonPropTypes.Any, - validations: [], - }; - const copyOptions = Object.assign(defaultSchema, options); - copyOptions.validations = getValidations(copyOptions); - if (typeof copyOptions.type !== "number") { - if (!schemaStorage.has(copyOptions.type) && !isConvertible(copyOptions.type)) { - throw new Error(`${errorMessage}. Assigning type doesn't have schema.`); - } - } - let schemaNames; - if (Array.isArray(options.schema)) { - schemaNames = options.schema; - } - else { - schemaNames = [options.schema || DEFAULT_SCHEMA]; - } - for (const schemaName of schemaNames) { - if (!schema.names[schemaName]) { - schema.names[schemaName] = {}; - } - const namedSchema = schema.names[schemaName]; - namedSchema[propertyKey] = copyOptions; - } -}; - -/*! - Copyright (c) Peculiar Ventures, LLC -*/ - -class CryptoError extends Error { -} - -class AlgorithmError extends CryptoError { -} - -class UnsupportedOperationError extends CryptoError { - constructor(methodName) { - super(`Unsupported operation: ${methodName ? `${methodName}` : ""}`); - } -} - -class OperationError extends CryptoError { -} - -class RequiredPropertyError extends CryptoError { - constructor(propName) { - super(`${propName}: Missing required property`); - } -} - -function isJWK(data) { - return typeof data === "object" && "kty" in data; -} - -class ProviderCrypto { - async digest(...args) { - this.checkDigest.apply(this, args); - return this.onDigest.apply(this, args); - } - checkDigest(algorithm, data) { - this.checkAlgorithmName(algorithm); - } - async onDigest(algorithm, data) { - throw new UnsupportedOperationError("digest"); - } - async generateKey(...args) { - this.checkGenerateKey.apply(this, args); - return this.onGenerateKey.apply(this, args); - } - checkGenerateKey(algorithm, extractable, keyUsages, ...args) { - this.checkAlgorithmName(algorithm); - this.checkGenerateKeyParams(algorithm); - if (!(keyUsages && keyUsages.length)) { - throw new TypeError(`Usages cannot be empty when creating a key.`); - } - let allowedUsages; - if (Array.isArray(this.usages)) { - allowedUsages = this.usages; - } - else { - allowedUsages = this.usages.privateKey.concat(this.usages.publicKey); - } - this.checkKeyUsages(keyUsages, allowedUsages); - } - checkGenerateKeyParams(algorithm) { - } - async onGenerateKey(algorithm, extractable, keyUsages, ...args) { - throw new UnsupportedOperationError("generateKey"); - } - async sign(...args) { - this.checkSign.apply(this, args); - return this.onSign.apply(this, args); - } - checkSign(algorithm, key, data, ...args) { - this.checkAlgorithmName(algorithm); - this.checkAlgorithmParams(algorithm); - this.checkCryptoKey(key, "sign"); - } - async onSign(algorithm, key, data, ...args) { - throw new UnsupportedOperationError("sign"); - } - async verify(...args) { - this.checkVerify.apply(this, args); - return this.onVerify.apply(this, args); - } - checkVerify(algorithm, key, signature, data, ...args) { - this.checkAlgorithmName(algorithm); - this.checkAlgorithmParams(algorithm); - this.checkCryptoKey(key, "verify"); - } - async onVerify(algorithm, key, signature, data, ...args) { - throw new UnsupportedOperationError("verify"); - } - async encrypt(...args) { - this.checkEncrypt.apply(this, args); - return this.onEncrypt.apply(this, args); - } - checkEncrypt(algorithm, key, data, options = {}, ...args) { - this.checkAlgorithmName(algorithm); - this.checkAlgorithmParams(algorithm); - this.checkCryptoKey(key, options.keyUsage ? "encrypt" : void 0); - } - async onEncrypt(algorithm, key, data, ...args) { - throw new UnsupportedOperationError("encrypt"); - } - async decrypt(...args) { - this.checkDecrypt.apply(this, args); - return this.onDecrypt.apply(this, args); - } - checkDecrypt(algorithm, key, data, options = {}, ...args) { - this.checkAlgorithmName(algorithm); - this.checkAlgorithmParams(algorithm); - this.checkCryptoKey(key, options.keyUsage ? "decrypt" : void 0); - } - async onDecrypt(algorithm, key, data, ...args) { - throw new UnsupportedOperationError("decrypt"); - } - async deriveBits(...args) { - this.checkDeriveBits.apply(this, args); - return this.onDeriveBits.apply(this, args); - } - checkDeriveBits(algorithm, baseKey, length, options = {}, ...args) { - this.checkAlgorithmName(algorithm); - this.checkAlgorithmParams(algorithm); - this.checkCryptoKey(baseKey, options.keyUsage ? "deriveBits" : void 0); - if (length % 8 !== 0) { - throw new OperationError("length: Is not multiple of 8"); - } - } - async onDeriveBits(algorithm, baseKey, length, ...args) { - throw new UnsupportedOperationError("deriveBits"); - } - async exportKey(...args) { - this.checkExportKey.apply(this, args); - return this.onExportKey.apply(this, args); - } - checkExportKey(format, key, ...args) { - this.checkKeyFormat(format); - this.checkCryptoKey(key); - if (!key.extractable) { - throw new CryptoError("key: Is not extractable"); - } - } - async onExportKey(format, key, ...args) { - throw new UnsupportedOperationError("exportKey"); - } - async importKey(...args) { - this.checkImportKey.apply(this, args); - return this.onImportKey.apply(this, args); - } - checkImportKey(format, keyData, algorithm, extractable, keyUsages, ...args) { - this.checkKeyFormat(format); - this.checkKeyData(format, keyData); - this.checkAlgorithmName(algorithm); - this.checkImportParams(algorithm); - if (Array.isArray(this.usages)) { - this.checkKeyUsages(keyUsages, this.usages); - } - } - async onImportKey(format, keyData, algorithm, extractable, keyUsages, ...args) { - throw new UnsupportedOperationError("importKey"); - } - checkAlgorithmName(algorithm) { - if (algorithm.name.toLowerCase() !== this.name.toLowerCase()) { - throw new AlgorithmError("Unrecognized name"); - } - } - checkAlgorithmParams(algorithm) { - } - checkDerivedKeyParams(algorithm) { - } - checkKeyUsages(usages, allowed) { - for (const usage of usages) { - if (allowed.indexOf(usage) === -1) { - throw new TypeError("Cannot create a key using the specified key usages"); - } - } - } - checkCryptoKey(key, keyUsage) { - this.checkAlgorithmName(key.algorithm); - if (keyUsage && key.usages.indexOf(keyUsage) === -1) { - throw new CryptoError(`key does not match that of operation`); - } - } - checkRequiredProperty(data, propName) { - if (!(propName in data)) { - throw new RequiredPropertyError(propName); - } - } - checkHashAlgorithm(algorithm, hashAlgorithms) { - for (const item of hashAlgorithms) { - if (item.toLowerCase() === algorithm.name.toLowerCase()) { - return; - } - } - throw new OperationError(`hash: Must be one of ${hashAlgorithms.join(", ")}`); - } - checkImportParams(algorithm) { - } - checkKeyFormat(format) { - switch (format) { - case "raw": - case "pkcs8": - case "spki": - case "jwk": - break; - default: - throw new TypeError("format: Is invalid value. Must be 'jwk', 'raw', 'spki', or 'pkcs8'"); - } - } - checkKeyData(format, keyData) { - if (!keyData) { - throw new TypeError("keyData: Cannot be empty on empty on key importing"); - } - if (format === "jwk") { - if (!isJWK(keyData)) { - throw new TypeError("keyData: Is not JsonWebToken"); - } - } - else if (!BufferSourceConverter.isBufferSource(keyData)) { - throw new TypeError("keyData: Is not ArrayBufferView or ArrayBuffer"); - } - } - prepareData(data) { - return BufferSourceConverter.toArrayBuffer(data); - } -} - -class AesProvider extends ProviderCrypto { - checkGenerateKeyParams(algorithm) { - this.checkRequiredProperty(algorithm, "length"); - if (typeof algorithm.length !== "number") { - throw new TypeError("length: Is not of type Number"); - } - switch (algorithm.length) { - case 128: - case 192: - case 256: - break; - default: - throw new TypeError("length: Must be 128, 192, or 256"); - } - } - checkDerivedKeyParams(algorithm) { - this.checkGenerateKeyParams(algorithm); - } -} - -class AesCbcProvider$1 extends AesProvider { - constructor() { - super(...arguments); - this.name = "AES-CBC"; - this.usages = ["encrypt", "decrypt", "wrapKey", "unwrapKey"]; - } - checkAlgorithmParams(algorithm) { - this.checkRequiredProperty(algorithm, "iv"); - if (!(algorithm.iv instanceof ArrayBuffer || ArrayBuffer.isView(algorithm.iv))) { - throw new TypeError("iv: Is not of type '(ArrayBuffer or ArrayBufferView)'"); - } - if (algorithm.iv.byteLength !== 16) { - throw new TypeError("iv: Must have length 16 bytes"); - } - } -} - -class AesCmacProvider$1 extends AesProvider { - constructor() { - super(...arguments); - this.name = "AES-CMAC"; - this.usages = ["sign", "verify"]; - } - checkAlgorithmParams(algorithm) { - this.checkRequiredProperty(algorithm, "length"); - if (typeof algorithm.length !== "number") { - throw new TypeError("length: Is not a Number"); - } - if (algorithm.length < 1) { - throw new OperationError("length: Must be more than 0"); - } - } -} - -class AesCtrProvider$1 extends AesProvider { - constructor() { - super(...arguments); - this.name = "AES-CTR"; - this.usages = ["encrypt", "decrypt", "wrapKey", "unwrapKey"]; - } - checkAlgorithmParams(algorithm) { - this.checkRequiredProperty(algorithm, "counter"); - if (!(algorithm.counter instanceof ArrayBuffer || ArrayBuffer.isView(algorithm.counter))) { - throw new TypeError("counter: Is not of type '(ArrayBuffer or ArrayBufferView)'"); - } - if (algorithm.counter.byteLength !== 16) { - throw new TypeError("iv: Must have length 16 bytes"); - } - this.checkRequiredProperty(algorithm, "length"); - if (typeof algorithm.length !== "number") { - throw new TypeError("length: Is not a Number"); - } - if (algorithm.length < 1) { - throw new OperationError("length: Must be more than 0"); - } - } -} - -class AesEcbProvider$1 extends AesProvider { - constructor() { - super(...arguments); - this.name = "AES-ECB"; - this.usages = ["encrypt", "decrypt", "wrapKey", "unwrapKey"]; - } -} - -class AesGcmProvider$1 extends AesProvider { - constructor() { - super(...arguments); - this.name = "AES-GCM"; - this.usages = ["encrypt", "decrypt", "wrapKey", "unwrapKey"]; - } - checkAlgorithmParams(algorithm) { - this.checkRequiredProperty(algorithm, "iv"); - if (!(algorithm.iv instanceof ArrayBuffer || ArrayBuffer.isView(algorithm.iv))) { - throw new TypeError("iv: Is not of type '(ArrayBuffer or ArrayBufferView)'"); - } - if (algorithm.iv.byteLength < 1) { - throw new OperationError("iv: Must have length more than 0 and less than 2^64 - 1"); - } - if (!("tagLength" in algorithm)) { - algorithm.tagLength = 128; - } - switch (algorithm.tagLength) { - case 32: - case 64: - case 96: - case 104: - case 112: - case 120: - case 128: - break; - default: - throw new OperationError("tagLength: Must be one of 32, 64, 96, 104, 112, 120 or 128"); - } - } -} - -class AesKwProvider$1 extends AesProvider { - constructor() { - super(...arguments); - this.name = "AES-KW"; - this.usages = ["wrapKey", "unwrapKey"]; - } -} - -class DesProvider extends ProviderCrypto { - constructor() { - super(...arguments); - this.usages = ["encrypt", "decrypt", "wrapKey", "unwrapKey"]; - } - checkAlgorithmParams(algorithm) { - if (this.ivSize) { - this.checkRequiredProperty(algorithm, "iv"); - if (!(algorithm.iv instanceof ArrayBuffer || ArrayBuffer.isView(algorithm.iv))) { - throw new TypeError("iv: Is not of type '(ArrayBuffer or ArrayBufferView)'"); - } - if (algorithm.iv.byteLength !== this.ivSize) { - throw new TypeError(`iv: Must have length ${this.ivSize} bytes`); - } - } - } - checkGenerateKeyParams(algorithm) { - this.checkRequiredProperty(algorithm, "length"); - if (typeof algorithm.length !== "number") { - throw new TypeError("length: Is not of type Number"); - } - if (algorithm.length !== this.keySizeBits) { - throw new OperationError(`algorithm.length: Must be ${this.keySizeBits}`); - } - } - checkDerivedKeyParams(algorithm) { - this.checkGenerateKeyParams(algorithm); - } -} - -class RsaProvider extends ProviderCrypto { - constructor() { - super(...arguments); - this.hashAlgorithms = ["SHA-1", "SHA-256", "SHA-384", "SHA-512"]; - } - checkGenerateKeyParams(algorithm) { - this.checkRequiredProperty(algorithm, "hash"); - this.checkHashAlgorithm(algorithm.hash, this.hashAlgorithms); - this.checkRequiredProperty(algorithm, "publicExponent"); - if (!(algorithm.publicExponent && algorithm.publicExponent instanceof Uint8Array)) { - throw new TypeError("publicExponent: Missing or not a Uint8Array"); - } - const publicExponent = Convert.ToBase64(algorithm.publicExponent); - if (!(publicExponent === "Aw==" || publicExponent === "AQAB")) { - throw new TypeError("publicExponent: Must be [3] or [1,0,1]"); - } - this.checkRequiredProperty(algorithm, "modulusLength"); - if (algorithm.modulusLength % 8 - || algorithm.modulusLength < 256 - || algorithm.modulusLength > 16384) { - throw new TypeError("The modulus length must be a multiple of 8 bits and >= 256 and <= 16384"); - } - } - checkImportParams(algorithm) { - this.checkRequiredProperty(algorithm, "hash"); - this.checkHashAlgorithm(algorithm.hash, this.hashAlgorithms); - } -} - -class RsaSsaProvider$1 extends RsaProvider { - constructor() { - super(...arguments); - this.name = "RSASSA-PKCS1-v1_5"; - this.usages = { - privateKey: ["sign"], - publicKey: ["verify"], - }; - } -} - -class RsaPssProvider$1 extends RsaProvider { - constructor() { - super(...arguments); - this.name = "RSA-PSS"; - this.usages = { - privateKey: ["sign"], - publicKey: ["verify"], - }; - } - checkAlgorithmParams(algorithm) { - this.checkRequiredProperty(algorithm, "saltLength"); - if (typeof algorithm.saltLength !== "number") { - throw new TypeError("saltLength: Is not a Number"); - } - if (algorithm.saltLength < 0) { - throw new RangeError("saltLength: Must be positive number"); - } - } -} - -class RsaOaepProvider$1 extends RsaProvider { - constructor() { - super(...arguments); - this.name = "RSA-OAEP"; - this.usages = { - privateKey: ["decrypt", "unwrapKey"], - publicKey: ["encrypt", "wrapKey"], - }; - } - checkAlgorithmParams(algorithm) { - if (algorithm.label - && !(algorithm.label instanceof ArrayBuffer || ArrayBuffer.isView(algorithm.label))) { - throw new TypeError("label: Is not of type '(ArrayBuffer or ArrayBufferView)'"); - } - } -} - -class EllipticProvider extends ProviderCrypto { - checkGenerateKeyParams(algorithm) { - this.checkRequiredProperty(algorithm, "namedCurve"); - this.checkNamedCurve(algorithm.namedCurve); - } - checkNamedCurve(namedCurve) { - for (const item of this.namedCurves) { - if (item.toLowerCase() === namedCurve.toLowerCase()) { - return; - } - } - throw new OperationError(`namedCurve: Must be one of ${this.namedCurves.join(", ")}`); - } -} - -class EcdsaProvider$1 extends EllipticProvider { - constructor() { - super(...arguments); - this.name = "ECDSA"; - this.hashAlgorithms = ["SHA-1", "SHA-256", "SHA-384", "SHA-512"]; - this.usages = { - privateKey: ["sign"], - publicKey: ["verify"], - }; - this.namedCurves = ["P-256", "P-384", "P-521", "K-256"]; - } - checkAlgorithmParams(algorithm) { - this.checkRequiredProperty(algorithm, "hash"); - this.checkHashAlgorithm(algorithm.hash, this.hashAlgorithms); - } -} - -const KEY_TYPES = ["secret", "private", "public"]; -class CryptoKey$1 { - static create(algorithm, type, extractable, usages) { - const key = new this(); - key.algorithm = algorithm; - key.type = type; - key.extractable = extractable; - key.usages = usages; - return key; - } - static isKeyType(data) { - return KEY_TYPES.indexOf(data) !== -1; - } - get [Symbol.toStringTag]() { - return "CryptoKey"; - } -} - -class EcdhProvider$1 extends EllipticProvider { - constructor() { - super(...arguments); - this.name = "ECDH"; - this.usages = { - privateKey: ["deriveBits", "deriveKey"], - publicKey: [], - }; - this.namedCurves = ["P-256", "P-384", "P-521", "K-256"]; - } - checkAlgorithmParams(algorithm) { - this.checkRequiredProperty(algorithm, "public"); - if (!(algorithm.public instanceof CryptoKey$1)) { - throw new TypeError("public: Is not a CryptoKey"); - } - if (algorithm.public.type !== "public") { - throw new OperationError("public: Is not a public key"); - } - if (algorithm.public.algorithm.name !== this.name) { - throw new OperationError(`public: Is not ${this.name} key`); - } - } -} - -class EcdhEsProvider$1 extends EcdhProvider$1 { - constructor() { - super(...arguments); - this.name = "ECDH-ES"; - this.namedCurves = ["X25519", "X448"]; - } -} - -class EdDsaProvider$1 extends EllipticProvider { - constructor() { - super(...arguments); - this.name = "EdDSA"; - this.usages = { - privateKey: ["sign"], - publicKey: ["verify"], - }; - this.namedCurves = ["Ed25519", "Ed448"]; - } -} - -let ObjectIdentifier = class ObjectIdentifier { - constructor(value) { - if (value) { - this.value = value; - } - } -}; -__decorate([ - AsnProp({ type: AsnPropTypes.ObjectIdentifier }) -], ObjectIdentifier.prototype, "value", void 0); -ObjectIdentifier = __decorate([ - AsnType({ type: AsnTypeTypes.Choice }) -], ObjectIdentifier); - -class AlgorithmIdentifier { - constructor(params) { - Object.assign(this, params); - } -} -__decorate([ - AsnProp({ - type: AsnPropTypes.ObjectIdentifier, - }) -], AlgorithmIdentifier.prototype, "algorithm", void 0); -__decorate([ - AsnProp({ - type: AsnPropTypes.Any, - optional: true, - }) -], AlgorithmIdentifier.prototype, "parameters", void 0); - -class PrivateKeyInfo { - constructor() { - this.version = 0; - this.privateKeyAlgorithm = new AlgorithmIdentifier(); - this.privateKey = new ArrayBuffer(0); - } -} -__decorate([ - AsnProp({ type: AsnPropTypes.Integer }) -], PrivateKeyInfo.prototype, "version", void 0); -__decorate([ - AsnProp({ type: AlgorithmIdentifier }) -], PrivateKeyInfo.prototype, "privateKeyAlgorithm", void 0); -__decorate([ - AsnProp({ type: AsnPropTypes.OctetString }) -], PrivateKeyInfo.prototype, "privateKey", void 0); -__decorate([ - AsnProp({ type: AsnPropTypes.Any, optional: true }) -], PrivateKeyInfo.prototype, "attributes", void 0); - -class PublicKeyInfo { - constructor() { - this.publicKeyAlgorithm = new AlgorithmIdentifier(); - this.publicKey = new ArrayBuffer(0); - } -} -__decorate([ - AsnProp({ type: AlgorithmIdentifier }) -], PublicKeyInfo.prototype, "publicKeyAlgorithm", void 0); -__decorate([ - AsnProp({ type: AsnPropTypes.BitString }) -], PublicKeyInfo.prototype, "publicKey", void 0); - -const JsonBase64UrlArrayBufferConverter = { - fromJSON: (value) => Convert.FromBase64Url(value), - toJSON: (value) => Convert.ToBase64Url(new Uint8Array(value)), -}; - -const AsnIntegerArrayBufferConverter = { - fromASN: (value) => { - const valueHex = value.valueBlock.valueHex; - return !(new Uint8Array(valueHex)[0]) - ? value.valueBlock.valueHex.slice(1) - : value.valueBlock.valueHex; - }, - toASN: (value) => { - const valueHex = new Uint8Array(value)[0] > 127 - ? combine(new Uint8Array([0]).buffer, value) - : value; - return new Integer({ valueHex }); - }, -}; - -class RsaPrivateKey$1 { - constructor() { - this.version = 0; - this.modulus = new ArrayBuffer(0); - this.publicExponent = new ArrayBuffer(0); - this.privateExponent = new ArrayBuffer(0); - this.prime1 = new ArrayBuffer(0); - this.prime2 = new ArrayBuffer(0); - this.exponent1 = new ArrayBuffer(0); - this.exponent2 = new ArrayBuffer(0); - this.coefficient = new ArrayBuffer(0); - } -} -__decorate([ - AsnProp({ type: AsnPropTypes.Integer, converter: AsnIntegerConverter }) -], RsaPrivateKey$1.prototype, "version", void 0); -__decorate([ - AsnProp({ type: AsnPropTypes.Integer, converter: AsnIntegerArrayBufferConverter }), - JsonProp({ name: "n", converter: JsonBase64UrlArrayBufferConverter }) -], RsaPrivateKey$1.prototype, "modulus", void 0); -__decorate([ - AsnProp({ type: AsnPropTypes.Integer, converter: AsnIntegerArrayBufferConverter }), - JsonProp({ name: "e", converter: JsonBase64UrlArrayBufferConverter }) -], RsaPrivateKey$1.prototype, "publicExponent", void 0); -__decorate([ - AsnProp({ type: AsnPropTypes.Integer, converter: AsnIntegerArrayBufferConverter }), - JsonProp({ name: "d", converter: JsonBase64UrlArrayBufferConverter }) -], RsaPrivateKey$1.prototype, "privateExponent", void 0); -__decorate([ - AsnProp({ type: AsnPropTypes.Integer, converter: AsnIntegerArrayBufferConverter }), - JsonProp({ name: "p", converter: JsonBase64UrlArrayBufferConverter }) -], RsaPrivateKey$1.prototype, "prime1", void 0); -__decorate([ - AsnProp({ type: AsnPropTypes.Integer, converter: AsnIntegerArrayBufferConverter }), - JsonProp({ name: "q", converter: JsonBase64UrlArrayBufferConverter }) -], RsaPrivateKey$1.prototype, "prime2", void 0); -__decorate([ - AsnProp({ type: AsnPropTypes.Integer, converter: AsnIntegerArrayBufferConverter }), - JsonProp({ name: "dp", converter: JsonBase64UrlArrayBufferConverter }) -], RsaPrivateKey$1.prototype, "exponent1", void 0); -__decorate([ - AsnProp({ type: AsnPropTypes.Integer, converter: AsnIntegerArrayBufferConverter }), - JsonProp({ name: "dq", converter: JsonBase64UrlArrayBufferConverter }) -], RsaPrivateKey$1.prototype, "exponent2", void 0); -__decorate([ - AsnProp({ type: AsnPropTypes.Integer, converter: AsnIntegerArrayBufferConverter }), - JsonProp({ name: "qi", converter: JsonBase64UrlArrayBufferConverter }) -], RsaPrivateKey$1.prototype, "coefficient", void 0); -__decorate([ - AsnProp({ type: AsnPropTypes.Any, optional: true }) -], RsaPrivateKey$1.prototype, "otherPrimeInfos", void 0); - -class RsaPublicKey$1 { - constructor() { - this.modulus = new ArrayBuffer(0); - this.publicExponent = new ArrayBuffer(0); - } -} -__decorate([ - AsnProp({ type: AsnPropTypes.Integer, converter: AsnIntegerArrayBufferConverter }), - JsonProp({ name: "n", converter: JsonBase64UrlArrayBufferConverter }) -], RsaPublicKey$1.prototype, "modulus", void 0); -__decorate([ - AsnProp({ type: AsnPropTypes.Integer, converter: AsnIntegerArrayBufferConverter }), - JsonProp({ name: "e", converter: JsonBase64UrlArrayBufferConverter }) -], RsaPublicKey$1.prototype, "publicExponent", void 0); - -let EcPublicKey$1 = class EcPublicKey { - constructor(value) { - this.value = new ArrayBuffer(0); - if (value) { - this.value = value; - } - } - toJSON() { - let bytes = new Uint8Array(this.value); - if (bytes[0] !== 0x04) { - throw new CryptoError("Wrong ECPoint. Current version supports only Uncompressed (0x04) point"); - } - bytes = new Uint8Array(this.value.slice(1)); - const size = bytes.length / 2; - const offset = 0; - const json = { - x: Convert.ToBase64Url(bytes.buffer.slice(offset, offset + size)), - y: Convert.ToBase64Url(bytes.buffer.slice(offset + size, offset + size + size)), - }; - return json; - } - fromJSON(json) { - if (!("x" in json)) { - throw new Error("x: Missing required property"); - } - if (!("y" in json)) { - throw new Error("y: Missing required property"); - } - const x = Convert.FromBase64Url(json.x); - const y = Convert.FromBase64Url(json.y); - const value = combine(new Uint8Array([0x04]).buffer, x, y); - this.value = new Uint8Array(value).buffer; - return this; - } -}; -__decorate([ - AsnProp({ type: AsnPropTypes.OctetString }) -], EcPublicKey$1.prototype, "value", void 0); -EcPublicKey$1 = __decorate([ - AsnType({ type: AsnTypeTypes.Choice }) -], EcPublicKey$1); - -class EcPrivateKey$1 { - constructor() { - this.version = 1; - this.privateKey = new ArrayBuffer(0); - } - fromJSON(json) { - if (!("d" in json)) { - throw new Error("d: Missing required property"); - } - this.privateKey = Convert.FromBase64Url(json.d); - if ("x" in json) { - const publicKey = new EcPublicKey$1(); - publicKey.fromJSON(json); - this.publicKey = AsnSerializer.toASN(publicKey).valueBlock.valueHex; - } - return this; - } - toJSON() { - const jwk = {}; - jwk.d = Convert.ToBase64Url(this.privateKey); - if (this.publicKey) { - Object.assign(jwk, new EcPublicKey$1(this.publicKey).toJSON()); - } - return jwk; - } -} -__decorate([ - AsnProp({ type: AsnPropTypes.Integer, converter: AsnIntegerConverter }) -], EcPrivateKey$1.prototype, "version", void 0); -__decorate([ - AsnProp({ type: AsnPropTypes.OctetString }) -], EcPrivateKey$1.prototype, "privateKey", void 0); -__decorate([ - AsnProp({ context: 0, type: AsnPropTypes.Any, optional: true }) -], EcPrivateKey$1.prototype, "parameters", void 0); -__decorate([ - AsnProp({ context: 1, type: AsnPropTypes.BitString, optional: true }) -], EcPrivateKey$1.prototype, "publicKey", void 0); - -const AsnIntegerWithoutPaddingConverter = { - fromASN: (value) => { - const bytes = new Uint8Array(value.valueBlock.valueHex); - return (bytes[0] === 0) - ? bytes.buffer.slice(1) - : bytes.buffer; - }, - toASN: (value) => { - const bytes = new Uint8Array(value); - if (bytes[0] > 127) { - const newValue = new Uint8Array(bytes.length + 1); - newValue.set(bytes, 1); - return new Integer({ valueHex: newValue.buffer }); - } - return new Integer({ valueHex: value }); - }, -}; - -var index$2 = /*#__PURE__*/Object.freeze({ - __proto__: null, - AsnIntegerWithoutPaddingConverter: AsnIntegerWithoutPaddingConverter -}); - -class EcUtils { - static decodePoint(data, pointSize) { - const view = BufferSourceConverter.toUint8Array(data); - if ((view.length === 0) || (view[0] !== 4)) { - throw new Error("Only uncompressed point format supported"); - } - const n = (view.length - 1) / 2; - if (n !== (Math.ceil(pointSize / 8))) { - throw new Error("Point does not match field size"); - } - const xb = view.slice(1, n + 1); - const yb = view.slice(n + 1, n + 1 + n); - return { x: xb, y: yb }; - } - static encodePoint(point, pointSize) { - const size = Math.ceil(pointSize / 8); - if (point.x.byteLength !== size || point.y.byteLength !== size) { - throw new Error("X,Y coordinates don't match point size criteria"); - } - const x = BufferSourceConverter.toUint8Array(point.x); - const y = BufferSourceConverter.toUint8Array(point.y); - const res = new Uint8Array(size * 2 + 1); - res[0] = 4; - res.set(x, 1); - res.set(y, size + 1); - return res; - } - static getSize(pointSize) { - return Math.ceil(pointSize / 8); - } - static encodeSignature(signature, pointSize) { - const size = this.getSize(pointSize); - const r = BufferSourceConverter.toUint8Array(signature.r); - const s = BufferSourceConverter.toUint8Array(signature.s); - const res = new Uint8Array(size * 2); - res.set(this.padStart(r, size)); - res.set(this.padStart(s, size), size); - return res; - } - static decodeSignature(data, pointSize) { - const size = this.getSize(pointSize); - const view = BufferSourceConverter.toUint8Array(data); - if (view.length !== (size * 2)) { - throw new Error("Incorrect size of the signature"); - } - const r = view.slice(0, size); - const s = view.slice(size); - return { - r: this.trimStart(r), - s: this.trimStart(s), - }; - } - static trimStart(data) { - let i = 0; - while ((i < data.length - 1) && (data[i] === 0)) { - i++; - } - if (i === 0) { - return data; - } - return data.slice(i, data.length); - } - static padStart(data, size) { - if (size === data.length) { - return data; - } - const res = new Uint8Array(size); - res.set(data, size - data.length); - return res; - } -} - -class EcDsaSignature { - constructor() { - this.r = new ArrayBuffer(0); - this.s = new ArrayBuffer(0); - } - static fromWebCryptoSignature(value) { - const pointSize = value.byteLength / 2; - const point = EcUtils.decodeSignature(value, pointSize * 8); - const ecSignature = new EcDsaSignature(); - ecSignature.r = BufferSourceConverter.toArrayBuffer(point.r); - ecSignature.s = BufferSourceConverter.toArrayBuffer(point.s); - return ecSignature; - } - toWebCryptoSignature(pointSize) { - pointSize !== null && pointSize !== void 0 ? pointSize : (pointSize = Math.max(this.r.byteLength, this.s.byteLength) * 8); - const signature = EcUtils.encodeSignature(this, pointSize); - return signature.buffer; - } -} -__decorate([ - AsnProp({ type: AsnPropTypes.Integer, converter: AsnIntegerWithoutPaddingConverter }) -], EcDsaSignature.prototype, "r", void 0); -__decorate([ - AsnProp({ type: AsnPropTypes.Integer, converter: AsnIntegerWithoutPaddingConverter }) -], EcDsaSignature.prototype, "s", void 0); - -class OneAsymmetricKey extends PrivateKeyInfo { -} -__decorate([ - AsnProp({ context: 1, implicit: true, type: AsnPropTypes.BitString, optional: true }) -], OneAsymmetricKey.prototype, "publicKey", void 0); - -let EdPrivateKey$1 = class EdPrivateKey { - constructor() { - this.value = new ArrayBuffer(0); - } - fromJSON(json) { - if (!json.d) { - throw new Error("d: Missing required property"); - } - this.value = Convert.FromBase64Url(json.d); - return this; - } - toJSON() { - const jwk = { - d: Convert.ToBase64Url(this.value), - }; - return jwk; - } -}; -__decorate([ - AsnProp({ type: AsnPropTypes.OctetString }) -], EdPrivateKey$1.prototype, "value", void 0); -EdPrivateKey$1 = __decorate([ - AsnType({ type: AsnTypeTypes.Choice }) -], EdPrivateKey$1); - -let EdPublicKey$1 = class EdPublicKey { - constructor(value) { - this.value = new ArrayBuffer(0); - if (value) { - this.value = value; - } - } - toJSON() { - const json = { - x: Convert.ToBase64Url(this.value), - }; - return json; - } - fromJSON(json) { - if (!("x" in json)) { - throw new Error("x: Missing required property"); - } - this.value = Convert.FromBase64Url(json.x); - return this; - } -}; -__decorate([ - AsnProp({ type: AsnPropTypes.BitString }) -], EdPublicKey$1.prototype, "value", void 0); -EdPublicKey$1 = __decorate([ - AsnType({ type: AsnTypeTypes.Choice }) -], EdPublicKey$1); - -let CurvePrivateKey = class CurvePrivateKey { -}; -__decorate([ - AsnProp({ type: AsnPropTypes.OctetString }), - JsonProp({ type: JsonPropTypes.String, converter: JsonBase64UrlArrayBufferConverter }) -], CurvePrivateKey.prototype, "d", void 0); -CurvePrivateKey = __decorate([ - AsnType({ type: AsnTypeTypes.Choice }) -], CurvePrivateKey); - -const idSecp256r1 = "1.2.840.10045.3.1.7"; -const idEllipticCurve = "1.3.132.0"; -const idSecp384r1 = `${idEllipticCurve}.34`; -const idSecp521r1 = `${idEllipticCurve}.35`; -const idSecp256k1 = `${idEllipticCurve}.10`; -const idVersionOne = "1.3.36.3.3.2.8.1.1"; -const idBrainpoolP160r1 = `${idVersionOne}.1`; -const idBrainpoolP160t1 = `${idVersionOne}.2`; -const idBrainpoolP192r1 = `${idVersionOne}.3`; -const idBrainpoolP192t1 = `${idVersionOne}.4`; -const idBrainpoolP224r1 = `${idVersionOne}.5`; -const idBrainpoolP224t1 = `${idVersionOne}.6`; -const idBrainpoolP256r1 = `${idVersionOne}.7`; -const idBrainpoolP256t1 = `${idVersionOne}.8`; -const idBrainpoolP320r1 = `${idVersionOne}.9`; -const idBrainpoolP320t1 = `${idVersionOne}.10`; -const idBrainpoolP384r1 = `${idVersionOne}.11`; -const idBrainpoolP384t1 = `${idVersionOne}.12`; -const idBrainpoolP512r1 = `${idVersionOne}.13`; -const idBrainpoolP512t1 = `${idVersionOne}.14`; -const idX25519 = "1.3.101.110"; -const idX448 = "1.3.101.111"; -const idEd25519 = "1.3.101.112"; -const idEd448 = "1.3.101.113"; - -var index$1 = /*#__PURE__*/Object.freeze({ - __proto__: null, - converters: index$2, - get ObjectIdentifier () { return ObjectIdentifier; }, - AlgorithmIdentifier: AlgorithmIdentifier, - PrivateKeyInfo: PrivateKeyInfo, - PublicKeyInfo: PublicKeyInfo, - RsaPrivateKey: RsaPrivateKey$1, - RsaPublicKey: RsaPublicKey$1, - EcPrivateKey: EcPrivateKey$1, - get EcPublicKey () { return EcPublicKey$1; }, - EcDsaSignature: EcDsaSignature, - OneAsymmetricKey: OneAsymmetricKey, - get EdPrivateKey () { return EdPrivateKey$1; }, - get EdPublicKey () { return EdPublicKey$1; }, - get CurvePrivateKey () { return CurvePrivateKey; }, - idSecp256r1: idSecp256r1, - idEllipticCurve: idEllipticCurve, - idSecp384r1: idSecp384r1, - idSecp521r1: idSecp521r1, - idSecp256k1: idSecp256k1, - idVersionOne: idVersionOne, - idBrainpoolP160r1: idBrainpoolP160r1, - idBrainpoolP160t1: idBrainpoolP160t1, - idBrainpoolP192r1: idBrainpoolP192r1, - idBrainpoolP192t1: idBrainpoolP192t1, - idBrainpoolP224r1: idBrainpoolP224r1, - idBrainpoolP224t1: idBrainpoolP224t1, - idBrainpoolP256r1: idBrainpoolP256r1, - idBrainpoolP256t1: idBrainpoolP256t1, - idBrainpoolP320r1: idBrainpoolP320r1, - idBrainpoolP320t1: idBrainpoolP320t1, - idBrainpoolP384r1: idBrainpoolP384r1, - idBrainpoolP384t1: idBrainpoolP384t1, - idBrainpoolP512r1: idBrainpoolP512r1, - idBrainpoolP512t1: idBrainpoolP512t1, - idX25519: idX25519, - idX448: idX448, - idEd25519: idEd25519, - idEd448: idEd448 -}); - -class EcCurves { - constructor() { } - static register(item) { - const oid = new ObjectIdentifier(); - oid.value = item.id; - const raw = AsnConvert.serialize(oid); - this.items.push({ - ...item, - raw, - }); - this.names.push(item.name); - } - static find(nameOrId) { - nameOrId = nameOrId.toUpperCase(); - for (const item of this.items) { - if (item.name.toUpperCase() === nameOrId || item.id.toUpperCase() === nameOrId) { - return item; - } - } - return null; - } - static get(nameOrId) { - const res = this.find(nameOrId); - if (!res) { - throw new Error(`Unsupported EC named curve '${nameOrId}'`); - } - return res; - } -} -EcCurves.items = []; -EcCurves.names = []; -EcCurves.register({ name: "P-256", id: idSecp256r1, size: 256 }); -EcCurves.register({ name: "P-384", id: idSecp384r1, size: 384 }); -EcCurves.register({ name: "P-521", id: idSecp521r1, size: 521 }); -EcCurves.register({ name: "K-256", id: idSecp256k1, size: 256 }); -EcCurves.register({ name: "brainpoolP160r1", id: idBrainpoolP160r1, size: 160 }); -EcCurves.register({ name: "brainpoolP160t1", id: idBrainpoolP160t1, size: 160 }); -EcCurves.register({ name: "brainpoolP192r1", id: idBrainpoolP192r1, size: 192 }); -EcCurves.register({ name: "brainpoolP192t1", id: idBrainpoolP192t1, size: 192 }); -EcCurves.register({ name: "brainpoolP224r1", id: idBrainpoolP224r1, size: 224 }); -EcCurves.register({ name: "brainpoolP224t1", id: idBrainpoolP224t1, size: 224 }); -EcCurves.register({ name: "brainpoolP256r1", id: idBrainpoolP256r1, size: 256 }); -EcCurves.register({ name: "brainpoolP256t1", id: idBrainpoolP256t1, size: 256 }); -EcCurves.register({ name: "brainpoolP320r1", id: idBrainpoolP320r1, size: 320 }); -EcCurves.register({ name: "brainpoolP320t1", id: idBrainpoolP320t1, size: 320 }); -EcCurves.register({ name: "brainpoolP384r1", id: idBrainpoolP384r1, size: 384 }); -EcCurves.register({ name: "brainpoolP384t1", id: idBrainpoolP384t1, size: 384 }); -EcCurves.register({ name: "brainpoolP512r1", id: idBrainpoolP512r1, size: 512 }); -EcCurves.register({ name: "brainpoolP512t1", id: idBrainpoolP512t1, size: 512 }); - -class HmacProvider$1 extends ProviderCrypto { - constructor() { - super(...arguments); - this.name = "HMAC"; - this.hashAlgorithms = ["SHA-1", "SHA-256", "SHA-384", "SHA-512"]; - this.usages = ["sign", "verify"]; - } - getDefaultLength(algName) { - switch (algName.toUpperCase()) { - case "SHA-1": - case "SHA-256": - case "SHA-384": - case "SHA-512": - return 512; - default: - throw new Error(`Unknown algorithm name '${algName}'`); - } - } - checkGenerateKeyParams(algorithm) { - this.checkRequiredProperty(algorithm, "hash"); - this.checkHashAlgorithm(algorithm.hash, this.hashAlgorithms); - if ("length" in algorithm) { - if (typeof algorithm.length !== "number") { - throw new TypeError("length: Is not a Number"); - } - if (algorithm.length < 1) { - throw new RangeError("length: Number is out of range"); - } - } - } - checkImportParams(algorithm) { - this.checkRequiredProperty(algorithm, "hash"); - this.checkHashAlgorithm(algorithm.hash, this.hashAlgorithms); - } -} - -class Pbkdf2Provider$1 extends ProviderCrypto { - constructor() { - super(...arguments); - this.name = "PBKDF2"; - this.hashAlgorithms = ["SHA-1", "SHA-256", "SHA-384", "SHA-512"]; - this.usages = ["deriveBits", "deriveKey"]; - } - checkAlgorithmParams(algorithm) { - this.checkRequiredProperty(algorithm, "hash"); - this.checkHashAlgorithm(algorithm.hash, this.hashAlgorithms); - this.checkRequiredProperty(algorithm, "salt"); - if (!(algorithm.salt instanceof ArrayBuffer || ArrayBuffer.isView(algorithm.salt))) { - throw new TypeError("salt: Is not of type '(ArrayBuffer or ArrayBufferView)'"); - } - this.checkRequiredProperty(algorithm, "iterations"); - if (typeof algorithm.iterations !== "number") { - throw new TypeError("iterations: Is not a Number"); - } - if (algorithm.iterations < 1) { - throw new TypeError("iterations: Is less than 1"); - } - } - checkImportKey(format, keyData, algorithm, extractable, keyUsages, ...args) { - super.checkImportKey(format, keyData, algorithm, extractable, keyUsages); - if (extractable) { - throw new SyntaxError("extractable: Must be 'false'"); - } - } -} - -class HkdfProvider$1 extends ProviderCrypto { - constructor() { - super(...arguments); - this.name = "HKDF"; - this.hashAlgorithms = ["SHA-1", "SHA-256", "SHA-384", "SHA-512"]; - this.usages = ["deriveKey", "deriveBits"]; - } - checkAlgorithmParams(algorithm) { - this.checkRequiredProperty(algorithm, "hash"); - this.checkHashAlgorithm(algorithm.hash, this.hashAlgorithms); - this.checkRequiredProperty(algorithm, "salt"); - if (!BufferSourceConverter.isBufferSource(algorithm.salt)) { - throw new TypeError("salt: Is not of type '(ArrayBuffer or ArrayBufferView)'"); - } - this.checkRequiredProperty(algorithm, "info"); - if (!BufferSourceConverter.isBufferSource(algorithm.info)) { - throw new TypeError("salt: Is not of type '(ArrayBuffer or ArrayBufferView)'"); - } - } - checkImportKey(format, keyData, algorithm, extractable, keyUsages, ...args) { - super.checkImportKey(format, keyData, algorithm, extractable, keyUsages); - if (extractable) { - throw new SyntaxError("extractable: Must be 'false'"); - } - } -} - -class ShakeProvider extends ProviderCrypto { - constructor() { - super(...arguments); - this.usages = []; - this.defaultLength = 0; - } - digest(...args) { - args[0] = { length: this.defaultLength, ...args[0] }; - return super.digest.apply(this, args); - } - checkDigest(algorithm, data) { - super.checkDigest(algorithm, data); - const length = algorithm.length || 0; - if (typeof length !== "number") { - throw new TypeError("length: Is not a Number"); - } - if (length < 0) { - throw new TypeError("length: Is negative"); - } - } -} - -class Shake128Provider$1 extends ShakeProvider { - constructor() { - super(...arguments); - this.name = "shake128"; - this.defaultLength = 16; - } -} - -class Shake256Provider$1 extends ShakeProvider { - constructor() { - super(...arguments); - this.name = "shake256"; - this.defaultLength = 32; - } -} - -class Crypto$1 { - get [Symbol.toStringTag]() { - return "Crypto"; - } - randomUUID() { - const b = this.getRandomValues(new Uint8Array(16)); - b[6] = (b[6] & 0x0f) | 0x40; - b[8] = (b[8] & 0x3f) | 0x80; - const uuid = Convert.ToHex(b).toLowerCase(); - return `${uuid.substring(0, 8)}-${uuid.substring(8, 12)}-${uuid.substring(12, 16)}-${uuid.substring(16)}`; - } -} - -class ProviderStorage { - constructor() { - this.items = {}; - } - get(algorithmName) { - return this.items[algorithmName.toLowerCase()] || null; - } - set(provider) { - this.items[provider.name.toLowerCase()] = provider; - } - removeAt(algorithmName) { - const provider = this.get(algorithmName.toLowerCase()); - if (provider) { - delete this.items[algorithmName]; - } - return provider; - } - has(name) { - return !!this.get(name); - } - get length() { - return Object.keys(this.items).length; - } - get algorithms() { - const algorithms = []; - for (const key in this.items) { - const provider = this.items[key]; - algorithms.push(provider.name); - } - return algorithms.sort(); - } -} - -class SubtleCrypto$1 { - constructor() { - this.providers = new ProviderStorage(); - } - static isHashedAlgorithm(data) { - return data - && typeof data === "object" - && "name" in data - && "hash" in data - ? true - : false; - } - get [Symbol.toStringTag]() { - return "SubtleCrypto"; - } - async digest(...args) { - this.checkRequiredArguments(args, 2, "digest"); - const [algorithm, data, ...params] = args; - const preparedAlgorithm = this.prepareAlgorithm(algorithm); - const preparedData = BufferSourceConverter.toArrayBuffer(data); - const provider = this.getProvider(preparedAlgorithm.name); - const result = await provider.digest(preparedAlgorithm, preparedData, ...params); - return result; - } - async generateKey(...args) { - this.checkRequiredArguments(args, 3, "generateKey"); - const [algorithm, extractable, keyUsages, ...params] = args; - const preparedAlgorithm = this.prepareAlgorithm(algorithm); - const provider = this.getProvider(preparedAlgorithm.name); - const result = await provider.generateKey({ ...preparedAlgorithm, name: provider.name }, extractable, keyUsages, ...params); - return result; - } - async sign(...args) { - this.checkRequiredArguments(args, 3, "sign"); - const [algorithm, key, data, ...params] = args; - this.checkCryptoKey(key); - const preparedAlgorithm = this.prepareAlgorithm(algorithm); - const preparedData = BufferSourceConverter.toArrayBuffer(data); - const provider = this.getProvider(preparedAlgorithm.name); - const result = await provider.sign({ ...preparedAlgorithm, name: provider.name }, key, preparedData, ...params); - return result; - } - async verify(...args) { - this.checkRequiredArguments(args, 4, "verify"); - const [algorithm, key, signature, data, ...params] = args; - this.checkCryptoKey(key); - const preparedAlgorithm = this.prepareAlgorithm(algorithm); - const preparedData = BufferSourceConverter.toArrayBuffer(data); - const preparedSignature = BufferSourceConverter.toArrayBuffer(signature); - const provider = this.getProvider(preparedAlgorithm.name); - const result = await provider.verify({ ...preparedAlgorithm, name: provider.name }, key, preparedSignature, preparedData, ...params); - return result; - } - async encrypt(...args) { - this.checkRequiredArguments(args, 3, "encrypt"); - const [algorithm, key, data, ...params] = args; - this.checkCryptoKey(key); - const preparedAlgorithm = this.prepareAlgorithm(algorithm); - const preparedData = BufferSourceConverter.toArrayBuffer(data); - const provider = this.getProvider(preparedAlgorithm.name); - const result = await provider.encrypt({ ...preparedAlgorithm, name: provider.name }, key, preparedData, { keyUsage: true }, ...params); - return result; - } - async decrypt(...args) { - this.checkRequiredArguments(args, 3, "decrypt"); - const [algorithm, key, data, ...params] = args; - this.checkCryptoKey(key); - const preparedAlgorithm = this.prepareAlgorithm(algorithm); - const preparedData = BufferSourceConverter.toArrayBuffer(data); - const provider = this.getProvider(preparedAlgorithm.name); - const result = await provider.decrypt({ ...preparedAlgorithm, name: provider.name }, key, preparedData, { keyUsage: true }, ...params); - return result; - } - async deriveBits(...args) { - this.checkRequiredArguments(args, 3, "deriveBits"); - const [algorithm, baseKey, length, ...params] = args; - this.checkCryptoKey(baseKey); - const preparedAlgorithm = this.prepareAlgorithm(algorithm); - const provider = this.getProvider(preparedAlgorithm.name); - const result = await provider.deriveBits({ ...preparedAlgorithm, name: provider.name }, baseKey, length, { keyUsage: true }, ...params); - return result; - } - async deriveKey(...args) { - this.checkRequiredArguments(args, 5, "deriveKey"); - const [algorithm, baseKey, derivedKeyType, extractable, keyUsages, ...params] = args; - const preparedDerivedKeyType = this.prepareAlgorithm(derivedKeyType); - const importProvider = this.getProvider(preparedDerivedKeyType.name); - importProvider.checkDerivedKeyParams(preparedDerivedKeyType); - const preparedAlgorithm = this.prepareAlgorithm(algorithm); - const provider = this.getProvider(preparedAlgorithm.name); - provider.checkCryptoKey(baseKey, "deriveKey"); - const derivedBits = await provider.deriveBits({ ...preparedAlgorithm, name: provider.name }, baseKey, derivedKeyType.length || 512, { keyUsage: false }, ...params); - return this.importKey("raw", derivedBits, derivedKeyType, extractable, keyUsages, ...params); - } - async exportKey(...args) { - this.checkRequiredArguments(args, 2, "exportKey"); - const [format, key, ...params] = args; - this.checkCryptoKey(key); - const provider = this.getProvider(key.algorithm.name); - const result = await provider.exportKey(format, key, ...params); - return result; - } - async importKey(...args) { - this.checkRequiredArguments(args, 5, "importKey"); - const [format, keyData, algorithm, extractable, keyUsages, ...params] = args; - const preparedAlgorithm = this.prepareAlgorithm(algorithm); - const provider = this.getProvider(preparedAlgorithm.name); - if (["pkcs8", "spki", "raw"].indexOf(format) !== -1) { - const preparedData = BufferSourceConverter.toArrayBuffer(keyData); - return provider.importKey(format, preparedData, { ...preparedAlgorithm, name: provider.name }, extractable, keyUsages, ...params); - } - else { - if (!keyData.kty) { - throw new TypeError("keyData: Is not JSON"); - } - } - return provider.importKey(format, keyData, { ...preparedAlgorithm, name: provider.name }, extractable, keyUsages, ...params); - } - async wrapKey(format, key, wrappingKey, wrapAlgorithm, ...args) { - let keyData = await this.exportKey(format, key, ...args); - if (format === "jwk") { - const json = JSON.stringify(keyData); - keyData = Convert.FromUtf8String(json); - } - const preparedAlgorithm = this.prepareAlgorithm(wrapAlgorithm); - const preparedData = BufferSourceConverter.toArrayBuffer(keyData); - const provider = this.getProvider(preparedAlgorithm.name); - return provider.encrypt({ ...preparedAlgorithm, name: provider.name }, wrappingKey, preparedData, { keyUsage: false }, ...args); - } - async unwrapKey(format, wrappedKey, unwrappingKey, unwrapAlgorithm, unwrappedKeyAlgorithm, extractable, keyUsages, ...args) { - const preparedAlgorithm = this.prepareAlgorithm(unwrapAlgorithm); - const preparedData = BufferSourceConverter.toArrayBuffer(wrappedKey); - const provider = this.getProvider(preparedAlgorithm.name); - let keyData = await provider.decrypt({ ...preparedAlgorithm, name: provider.name }, unwrappingKey, preparedData, { keyUsage: false }, ...args); - if (format === "jwk") { - try { - keyData = JSON.parse(Convert.ToUtf8String(keyData)); - } - catch (e) { - const error = new TypeError("wrappedKey: Is not a JSON"); - error.internal = e; - throw error; - } - } - return this.importKey(format, keyData, unwrappedKeyAlgorithm, extractable, keyUsages, ...args); - } - checkRequiredArguments(args, size, methodName) { - if (args.length < size) { - throw new TypeError(`Failed to execute '${methodName}' on 'SubtleCrypto': ${size} arguments required, but only ${args.length} present`); - } - } - prepareAlgorithm(algorithm) { - if (typeof algorithm === "string") { - return { - name: algorithm, - }; - } - if (SubtleCrypto$1.isHashedAlgorithm(algorithm)) { - const preparedAlgorithm = { ...algorithm }; - preparedAlgorithm.hash = this.prepareAlgorithm(algorithm.hash); - return preparedAlgorithm; - } - return { ...algorithm }; - } - getProvider(name) { - const provider = this.providers.get(name); - if (!provider) { - throw new AlgorithmError("Unrecognized name"); - } - return provider; - } - checkCryptoKey(key) { - if (!(key instanceof CryptoKey$1)) { - throw new TypeError(`Key is not of type 'CryptoKey'`); - } - } -} - -/*! - Copyright (c) Peculiar Ventures, LLC -*/ - -const JsonBase64UrlConverter = { - fromJSON: (value) => Buffer.from(Convert.FromBase64Url(value)), - toJSON: (value) => Convert.ToBase64Url(value), -}; - -class CryptoKey extends CryptoKey$1 { - constructor() { - super(...arguments); - this.data = Buffer.alloc(0); - this.algorithm = { name: "" }; - this.extractable = false; - this.type = "secret"; - this.usages = []; - this.kty = "oct"; - this.alg = ""; - } -} -__decorate([ - JsonProp({ name: "ext", type: JsonPropTypes.Boolean, optional: true }) -], CryptoKey.prototype, "extractable", void 0); -__decorate([ - JsonProp({ name: "key_ops", type: JsonPropTypes.String, repeated: true, optional: true }) -], CryptoKey.prototype, "usages", void 0); -__decorate([ - JsonProp({ type: JsonPropTypes.String }) -], CryptoKey.prototype, "kty", void 0); -__decorate([ - JsonProp({ type: JsonPropTypes.String, optional: true }) -], CryptoKey.prototype, "alg", void 0); - -class SymmetricKey extends CryptoKey { - constructor() { - super(...arguments); - this.kty = "oct"; - this.type = "secret"; - } -} - -class AsymmetricKey extends CryptoKey { -} - -class AesCryptoKey extends SymmetricKey { - get alg() { - switch (this.algorithm.name.toUpperCase()) { - case "AES-CBC": - return `A${this.algorithm.length}CBC`; - case "AES-CTR": - return `A${this.algorithm.length}CTR`; - case "AES-GCM": - return `A${this.algorithm.length}GCM`; - case "AES-KW": - return `A${this.algorithm.length}KW`; - case "AES-CMAC": - return `A${this.algorithm.length}CMAC`; - case "AES-ECB": - return `A${this.algorithm.length}ECB`; - default: - throw new AlgorithmError("Unsupported algorithm name"); - } - } - set alg(value) { - } -} -__decorate([ - JsonProp({ name: "k", converter: JsonBase64UrlConverter }) -], AesCryptoKey.prototype, "data", void 0); - -const keyStorage = new WeakMap(); -function getCryptoKey(key) { - const res = keyStorage.get(key); - if (!res) { - throw new OperationError("Cannot get CryptoKey from secure storage"); - } - return res; -} -function setCryptoKey(value) { - const key = CryptoKey$1.create(value.algorithm, value.type, value.extractable, value.usages); - Object.freeze(key); - keyStorage.set(key, value); - return key; -} - -class AesCrypto { - static async generateKey(algorithm, extractable, keyUsages) { - const key = new AesCryptoKey(); - key.algorithm = algorithm; - key.extractable = extractable; - key.usages = keyUsages; - key.data = crypto__default__default.randomBytes(algorithm.length >> 3); - return key; - } - static async exportKey(format, key) { - if (!(key instanceof AesCryptoKey)) { - throw new Error("key: Is not AesCryptoKey"); - } - switch (format.toLowerCase()) { - case "jwk": - return JsonSerializer.toJSON(key); - case "raw": - return new Uint8Array(key.data).buffer; - default: - throw new OperationError("format: Must be 'jwk' or 'raw'"); - } - } - static async importKey(format, keyData, algorithm, extractable, keyUsages) { - let key; - switch (format.toLowerCase()) { - case "jwk": - key = JsonParser.fromJSON(keyData, { targetSchema: AesCryptoKey }); - break; - case "raw": - key = new AesCryptoKey(); - key.data = Buffer.from(keyData); - break; - default: - throw new OperationError("format: Must be 'jwk' or 'raw'"); - } - key.algorithm = algorithm; - key.algorithm.length = key.data.length << 3; - key.extractable = extractable; - key.usages = keyUsages; - switch (key.algorithm.length) { - case 128: - case 192: - case 256: - break; - default: - throw new OperationError("keyData: Is wrong key length"); - } - return key; - } - static async encrypt(algorithm, key, data) { - switch (algorithm.name.toUpperCase()) { - case "AES-CBC": - return this.encryptAesCBC(algorithm, key, Buffer.from(data)); - case "AES-CTR": - return this.encryptAesCTR(algorithm, key, Buffer.from(data)); - case "AES-GCM": - return this.encryptAesGCM(algorithm, key, Buffer.from(data)); - case "AES-KW": - return this.encryptAesKW(algorithm, key, Buffer.from(data)); - case "AES-ECB": - return this.encryptAesECB(algorithm, key, Buffer.from(data)); - default: - throw new OperationError("algorithm: Is not recognized"); - } - } - static async decrypt(algorithm, key, data) { - if (!(key instanceof AesCryptoKey)) { - throw new Error("key: Is not AesCryptoKey"); - } - switch (algorithm.name.toUpperCase()) { - case "AES-CBC": - return this.decryptAesCBC(algorithm, key, Buffer.from(data)); - case "AES-CTR": - return this.decryptAesCTR(algorithm, key, Buffer.from(data)); - case "AES-GCM": - return this.decryptAesGCM(algorithm, key, Buffer.from(data)); - case "AES-KW": - return this.decryptAesKW(algorithm, key, Buffer.from(data)); - case "AES-ECB": - return this.decryptAesECB(algorithm, key, Buffer.from(data)); - default: - throw new OperationError("algorithm: Is not recognized"); - } - } - static async encryptAesCBC(algorithm, key, data) { - const cipher = crypto__default__default.createCipheriv(`aes-${key.algorithm.length}-cbc`, key.data, new Uint8Array(algorithm.iv)); - let enc = cipher.update(data); - enc = Buffer.concat([enc, cipher.final()]); - const res = new Uint8Array(enc).buffer; - return res; - } - static async decryptAesCBC(algorithm, key, data) { - const decipher = crypto__default__default.createDecipheriv(`aes-${key.algorithm.length}-cbc`, key.data, new Uint8Array(algorithm.iv)); - let dec = decipher.update(data); - dec = Buffer.concat([dec, decipher.final()]); - return new Uint8Array(dec).buffer; - } - static async encryptAesCTR(algorithm, key, data) { - const cipher = crypto__default__default.createCipheriv(`aes-${key.algorithm.length}-ctr`, key.data, Buffer.from(algorithm.counter)); - let enc = cipher.update(data); - enc = Buffer.concat([enc, cipher.final()]); - const res = new Uint8Array(enc).buffer; - return res; - } - static async decryptAesCTR(algorithm, key, data) { - const decipher = crypto__default__default.createDecipheriv(`aes-${key.algorithm.length}-ctr`, key.data, new Uint8Array(algorithm.counter)); - let dec = decipher.update(data); - dec = Buffer.concat([dec, decipher.final()]); - return new Uint8Array(dec).buffer; - } - static async encryptAesGCM(algorithm, key, data) { - const cipher = crypto__default__default.createCipheriv(`aes-${key.algorithm.length}-gcm`, key.data, Buffer.from(algorithm.iv), { - authTagLength: (algorithm.tagLength || 128) >> 3, - }); - if (algorithm.additionalData) { - cipher.setAAD(Buffer.from(algorithm.additionalData)); - } - let enc = cipher.update(data); - enc = Buffer.concat([enc, cipher.final(), cipher.getAuthTag()]); - const res = new Uint8Array(enc).buffer; - return res; - } - static async decryptAesGCM(algorithm, key, data) { - const decipher = crypto__default__default.createDecipheriv(`aes-${key.algorithm.length}-gcm`, key.data, new Uint8Array(algorithm.iv)); - const tagLength = (algorithm.tagLength || 128) >> 3; - const enc = data.slice(0, data.length - tagLength); - const tag = data.slice(data.length - tagLength); - if (algorithm.additionalData) { - decipher.setAAD(Buffer.from(algorithm.additionalData)); - } - decipher.setAuthTag(tag); - let dec = decipher.update(enc); - dec = Buffer.concat([dec, decipher.final()]); - return new Uint8Array(dec).buffer; - } - static async encryptAesKW(algorithm, key, data) { - const cipher = crypto__default__default.createCipheriv(`id-aes${key.algorithm.length}-wrap`, key.data, this.AES_KW_IV); - let enc = cipher.update(data); - enc = Buffer.concat([enc, cipher.final()]); - return new Uint8Array(enc).buffer; - } - static async decryptAesKW(algorithm, key, data) { - const decipher = crypto__default__default.createDecipheriv(`id-aes${key.algorithm.length}-wrap`, key.data, this.AES_KW_IV); - let dec = decipher.update(data); - dec = Buffer.concat([dec, decipher.final()]); - return new Uint8Array(dec).buffer; - } - static async encryptAesECB(algorithm, key, data) { - const cipher = crypto__default__default.createCipheriv(`aes-${key.algorithm.length}-ecb`, key.data, new Uint8Array(0)); - let enc = cipher.update(data); - enc = Buffer.concat([enc, cipher.final()]); - const res = new Uint8Array(enc).buffer; - return res; - } - static async decryptAesECB(algorithm, key, data) { - const decipher = crypto__default__default.createDecipheriv(`aes-${key.algorithm.length}-ecb`, key.data, new Uint8Array(0)); - let dec = decipher.update(data); - dec = Buffer.concat([dec, decipher.final()]); - return new Uint8Array(dec).buffer; - } -} -AesCrypto.AES_KW_IV = Buffer.from("A6A6A6A6A6A6A6A6", "hex"); - -class AesCbcProvider extends AesCbcProvider$1 { - async onGenerateKey(algorithm, extractable, keyUsages) { - const key = await AesCrypto.generateKey({ - name: this.name, - length: algorithm.length, - }, extractable, keyUsages); - return setCryptoKey(key); - } - async onEncrypt(algorithm, key, data) { - return AesCrypto.encrypt(algorithm, getCryptoKey(key), new Uint8Array(data)); - } - async onDecrypt(algorithm, key, data) { - return AesCrypto.decrypt(algorithm, getCryptoKey(key), new Uint8Array(data)); - } - async onExportKey(format, key) { - return AesCrypto.exportKey(format, getCryptoKey(key)); - } - async onImportKey(format, keyData, algorithm, extractable, keyUsages) { - const key = await AesCrypto.importKey(format, keyData, { name: algorithm.name }, extractable, keyUsages); - return setCryptoKey(key); - } - checkCryptoKey(key, keyUsage) { - super.checkCryptoKey(key, keyUsage); - if (!(getCryptoKey(key) instanceof AesCryptoKey)) { - throw new TypeError("key: Is not a AesCryptoKey"); - } - } -} - -const zero = Buffer.from([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]); -const rb = Buffer.from([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 135]); -const blockSize = 16; -function bitShiftLeft(buffer) { - const shifted = Buffer.alloc(buffer.length); - const last = buffer.length - 1; - for (let index = 0; index < last; index++) { - shifted[index] = buffer[index] << 1; - if (buffer[index + 1] & 0x80) { - shifted[index] += 0x01; - } - } - shifted[last] = buffer[last] << 1; - return shifted; -} -function xor(a, b) { - const length = Math.min(a.length, b.length); - const output = Buffer.alloc(length); - for (let index = 0; index < length; index++) { - output[index] = a[index] ^ b[index]; - } - return output; -} -function aes(key, message) { - const cipher = crypto__default.createCipheriv(`aes${key.length << 3}`, key, zero); - const result = cipher.update(message); - cipher.final(); - return result; -} -function getMessageBlock(message, blockIndex) { - const block = Buffer.alloc(blockSize); - const start = blockIndex * blockSize; - const end = start + blockSize; - message.copy(block, 0, start, end); - return block; -} -function getPaddedMessageBlock(message, blockIndex) { - const block = Buffer.alloc(blockSize); - const start = blockIndex * blockSize; - const end = message.length; - block.fill(0); - message.copy(block, 0, start, end); - block[end - start] = 0x80; - return block; -} -function generateSubkeys(key) { - const l = aes(key, zero); - let subkey1 = bitShiftLeft(l); - if (l[0] & 0x80) { - subkey1 = xor(subkey1, rb); - } - let subkey2 = bitShiftLeft(subkey1); - if (subkey1[0] & 0x80) { - subkey2 = xor(subkey2, rb); - } - return { subkey1, subkey2 }; -} -function aesCmac(key, message) { - const subkeys = generateSubkeys(key); - let blockCount = Math.ceil(message.length / blockSize); - let lastBlockCompleteFlag; - let lastBlock; - if (blockCount === 0) { - blockCount = 1; - lastBlockCompleteFlag = false; - } - else { - lastBlockCompleteFlag = (message.length % blockSize === 0); - } - const lastBlockIndex = blockCount - 1; - if (lastBlockCompleteFlag) { - lastBlock = xor(getMessageBlock(message, lastBlockIndex), subkeys.subkey1); - } - else { - lastBlock = xor(getPaddedMessageBlock(message, lastBlockIndex), subkeys.subkey2); - } - let x = zero; - let y; - for (let index = 0; index < lastBlockIndex; index++) { - y = xor(x, getMessageBlock(message, index)); - x = aes(key, y); - } - y = xor(lastBlock, x); - return aes(key, y); -} -class AesCmacProvider extends AesCmacProvider$1 { - async onGenerateKey(algorithm, extractable, keyUsages) { - const key = await AesCrypto.generateKey({ - name: this.name, - length: algorithm.length, - }, extractable, keyUsages); - return setCryptoKey(key); - } - async onSign(algorithm, key, data) { - const result = aesCmac(getCryptoKey(key).data, Buffer.from(data)); - return new Uint8Array(result).buffer; - } - async onVerify(algorithm, key, signature, data) { - const signature2 = await this.sign(algorithm, key, data); - return Buffer.from(signature).compare(Buffer.from(signature2)) === 0; - } - async onExportKey(format, key) { - return AesCrypto.exportKey(format, getCryptoKey(key)); - } - async onImportKey(format, keyData, algorithm, extractable, keyUsages) { - const res = await AesCrypto.importKey(format, keyData, { name: algorithm.name }, extractable, keyUsages); - return setCryptoKey(res); - } - checkCryptoKey(key, keyUsage) { - super.checkCryptoKey(key, keyUsage); - if (!(getCryptoKey(key) instanceof AesCryptoKey)) { - throw new TypeError("key: Is not a AesCryptoKey"); - } - } -} - -class AesCtrProvider extends AesCtrProvider$1 { - async onGenerateKey(algorithm, extractable, keyUsages) { - const key = await AesCrypto.generateKey({ - name: this.name, - length: algorithm.length, - }, extractable, keyUsages); - return setCryptoKey(key); - } - async onEncrypt(algorithm, key, data) { - return AesCrypto.encrypt(algorithm, getCryptoKey(key), new Uint8Array(data)); - } - async onDecrypt(algorithm, key, data) { - return AesCrypto.decrypt(algorithm, getCryptoKey(key), new Uint8Array(data)); - } - async onExportKey(format, key) { - return AesCrypto.exportKey(format, getCryptoKey(key)); - } - async onImportKey(format, keyData, algorithm, extractable, keyUsages) { - const res = await AesCrypto.importKey(format, keyData, { name: algorithm.name }, extractable, keyUsages); - return setCryptoKey(res); - } - checkCryptoKey(key, keyUsage) { - super.checkCryptoKey(key, keyUsage); - if (!(getCryptoKey(key) instanceof AesCryptoKey)) { - throw new TypeError("key: Is not a AesCryptoKey"); - } - } -} - -class AesGcmProvider extends AesGcmProvider$1 { - async onGenerateKey(algorithm, extractable, keyUsages) { - const key = await AesCrypto.generateKey({ - name: this.name, - length: algorithm.length, - }, extractable, keyUsages); - return setCryptoKey(key); - } - async onEncrypt(algorithm, key, data) { - return AesCrypto.encrypt(algorithm, getCryptoKey(key), new Uint8Array(data)); - } - async onDecrypt(algorithm, key, data) { - return AesCrypto.decrypt(algorithm, getCryptoKey(key), new Uint8Array(data)); - } - async onExportKey(format, key) { - return AesCrypto.exportKey(format, getCryptoKey(key)); - } - async onImportKey(format, keyData, algorithm, extractable, keyUsages) { - const res = await AesCrypto.importKey(format, keyData, { name: algorithm.name }, extractable, keyUsages); - return setCryptoKey(res); - } - checkCryptoKey(key, keyUsage) { - super.checkCryptoKey(key, keyUsage); - if (!(getCryptoKey(key) instanceof AesCryptoKey)) { - throw new TypeError("key: Is not a AesCryptoKey"); - } - } -} - -class AesKwProvider extends AesKwProvider$1 { - async onGenerateKey(algorithm, extractable, keyUsages) { - const res = await AesCrypto.generateKey({ - name: this.name, - length: algorithm.length, - }, extractable, keyUsages); - return setCryptoKey(res); - } - async onExportKey(format, key) { - return AesCrypto.exportKey(format, getCryptoKey(key)); - } - async onImportKey(format, keyData, algorithm, extractable, keyUsages) { - const res = await AesCrypto.importKey(format, keyData, { name: algorithm.name }, extractable, keyUsages); - return setCryptoKey(res); - } - async onEncrypt(algorithm, key, data) { - return AesCrypto.encrypt(algorithm, getCryptoKey(key), new Uint8Array(data)); - } - async onDecrypt(algorithm, key, data) { - return AesCrypto.decrypt(algorithm, getCryptoKey(key), new Uint8Array(data)); - } - checkCryptoKey(key, keyUsage) { - super.checkCryptoKey(key, keyUsage); - if (!(getCryptoKey(key) instanceof AesCryptoKey)) { - throw new TypeError("key: Is not a AesCryptoKey"); - } - } -} - -class AesEcbProvider extends AesEcbProvider$1 { - async onGenerateKey(algorithm, extractable, keyUsages) { - const key = await AesCrypto.generateKey({ - name: this.name, - length: algorithm.length, - }, extractable, keyUsages); - return setCryptoKey(key); - } - async onEncrypt(algorithm, key, data) { - return AesCrypto.encrypt(algorithm, getCryptoKey(key), new Uint8Array(data)); - } - async onDecrypt(algorithm, key, data) { - return AesCrypto.decrypt(algorithm, getCryptoKey(key), new Uint8Array(data)); - } - async onExportKey(format, key) { - return AesCrypto.exportKey(format, getCryptoKey(key)); - } - async onImportKey(format, keyData, algorithm, extractable, keyUsages) { - const res = await AesCrypto.importKey(format, keyData, { name: algorithm.name }, extractable, keyUsages); - return setCryptoKey(res); - } - checkCryptoKey(key, keyUsage) { - super.checkCryptoKey(key, keyUsage); - if (!(getCryptoKey(key) instanceof AesCryptoKey)) { - throw new TypeError("key: Is not a AesCryptoKey"); - } - } -} - -class DesCryptoKey extends SymmetricKey { - get alg() { - switch (this.algorithm.name.toUpperCase()) { - case "DES-CBC": - return `DES-CBC`; - case "DES-EDE3-CBC": - return `3DES-CBC`; - default: - throw new AlgorithmError("Unsupported algorithm name"); - } - } - set alg(value) { - } -} -__decorate([ - JsonProp({ name: "k", converter: JsonBase64UrlConverter }) -], DesCryptoKey.prototype, "data", void 0); - -class DesCrypto { - static async generateKey(algorithm, extractable, keyUsages) { - const key = new DesCryptoKey(); - key.algorithm = algorithm; - key.extractable = extractable; - key.usages = keyUsages; - key.data = crypto__default__default.randomBytes(algorithm.length >> 3); - return key; - } - static async exportKey(format, key) { - switch (format.toLowerCase()) { - case "jwk": - return JsonSerializer.toJSON(key); - case "raw": - return new Uint8Array(key.data).buffer; - default: - throw new OperationError("format: Must be 'jwk' or 'raw'"); - } - } - static async importKey(format, keyData, algorithm, extractable, keyUsages) { - let key; - switch (format.toLowerCase()) { - case "jwk": - key = JsonParser.fromJSON(keyData, { targetSchema: DesCryptoKey }); - break; - case "raw": - key = new DesCryptoKey(); - key.data = Buffer.from(keyData); - break; - default: - throw new OperationError("format: Must be 'jwk' or 'raw'"); - } - key.algorithm = algorithm; - key.extractable = extractable; - key.usages = keyUsages; - return key; - } - static async encrypt(algorithm, key, data) { - switch (algorithm.name.toUpperCase()) { - case "DES-CBC": - return this.encryptDesCBC(algorithm, key, Buffer.from(data)); - case "DES-EDE3-CBC": - return this.encryptDesEDE3CBC(algorithm, key, Buffer.from(data)); - default: - throw new OperationError("algorithm: Is not recognized"); - } - } - static async decrypt(algorithm, key, data) { - if (!(key instanceof DesCryptoKey)) { - throw new Error("key: Is not DesCryptoKey"); - } - switch (algorithm.name.toUpperCase()) { - case "DES-CBC": - return this.decryptDesCBC(algorithm, key, Buffer.from(data)); - case "DES-EDE3-CBC": - return this.decryptDesEDE3CBC(algorithm, key, Buffer.from(data)); - default: - throw new OperationError("algorithm: Is not recognized"); - } - } - static async encryptDesCBC(algorithm, key, data) { - const cipher = crypto__default__default.createCipheriv(`des-cbc`, key.data, new Uint8Array(algorithm.iv)); - let enc = cipher.update(data); - enc = Buffer.concat([enc, cipher.final()]); - const res = new Uint8Array(enc).buffer; - return res; - } - static async decryptDesCBC(algorithm, key, data) { - const decipher = crypto__default__default.createDecipheriv(`des-cbc`, key.data, new Uint8Array(algorithm.iv)); - let dec = decipher.update(data); - dec = Buffer.concat([dec, decipher.final()]); - return new Uint8Array(dec).buffer; - } - static async encryptDesEDE3CBC(algorithm, key, data) { - const cipher = crypto__default__default.createCipheriv(`des-ede3-cbc`, key.data, Buffer.from(algorithm.iv)); - let enc = cipher.update(data); - enc = Buffer.concat([enc, cipher.final()]); - const res = new Uint8Array(enc).buffer; - return res; - } - static async decryptDesEDE3CBC(algorithm, key, data) { - const decipher = crypto__default__default.createDecipheriv(`des-ede3-cbc`, key.data, new Uint8Array(algorithm.iv)); - let dec = decipher.update(data); - dec = Buffer.concat([dec, decipher.final()]); - return new Uint8Array(dec).buffer; - } -} - -class DesCbcProvider extends DesProvider { - constructor() { - super(...arguments); - this.keySizeBits = 64; - this.ivSize = 8; - this.name = "DES-CBC"; - } - async onGenerateKey(algorithm, extractable, keyUsages) { - const key = await DesCrypto.generateKey({ - name: this.name, - length: this.keySizeBits, - }, extractable, keyUsages); - return setCryptoKey(key); - } - async onEncrypt(algorithm, key, data) { - return DesCrypto.encrypt(algorithm, getCryptoKey(key), new Uint8Array(data)); - } - async onDecrypt(algorithm, key, data) { - return DesCrypto.decrypt(algorithm, getCryptoKey(key), new Uint8Array(data)); - } - async onExportKey(format, key) { - return DesCrypto.exportKey(format, getCryptoKey(key)); - } - async onImportKey(format, keyData, algorithm, extractable, keyUsages) { - const key = await DesCrypto.importKey(format, keyData, { name: this.name, length: this.keySizeBits }, extractable, keyUsages); - if (key.data.length !== (this.keySizeBits >> 3)) { - throw new OperationError("keyData: Wrong key size"); - } - return setCryptoKey(key); - } - checkCryptoKey(key, keyUsage) { - super.checkCryptoKey(key, keyUsage); - if (!(getCryptoKey(key) instanceof DesCryptoKey)) { - throw new TypeError("key: Is not a DesCryptoKey"); - } - } -} - -class DesEde3CbcProvider extends DesProvider { - constructor() { - super(...arguments); - this.keySizeBits = 192; - this.ivSize = 8; - this.name = "DES-EDE3-CBC"; - } - async onGenerateKey(algorithm, extractable, keyUsages) { - const key = await DesCrypto.generateKey({ - name: this.name, - length: this.keySizeBits, - }, extractable, keyUsages); - return setCryptoKey(key); - } - async onEncrypt(algorithm, key, data) { - return DesCrypto.encrypt(algorithm, getCryptoKey(key), new Uint8Array(data)); - } - async onDecrypt(algorithm, key, data) { - return DesCrypto.decrypt(algorithm, getCryptoKey(key), new Uint8Array(data)); - } - async onExportKey(format, key) { - return DesCrypto.exportKey(format, getCryptoKey(key)); - } - async onImportKey(format, keyData, algorithm, extractable, keyUsages) { - const key = await DesCrypto.importKey(format, keyData, { name: this.name, length: this.keySizeBits }, extractable, keyUsages); - if (key.data.length !== (this.keySizeBits >> 3)) { - throw new OperationError("keyData: Wrong key size"); - } - return setCryptoKey(key); - } - checkCryptoKey(key, keyUsage) { - super.checkCryptoKey(key, keyUsage); - if (!(getCryptoKey(key) instanceof DesCryptoKey)) { - throw new TypeError("key: Is not a DesCryptoKey"); - } - } -} - -function getJwkAlgorithm(algorithm) { - switch (algorithm.name.toUpperCase()) { - case "RSA-OAEP": { - const mdSize = /(\d+)$/.exec(algorithm.hash.name)[1]; - return `RSA-OAEP${mdSize !== "1" ? `-${mdSize}` : ""}`; - } - case "RSASSA-PKCS1-V1_5": - return `RS${/(\d+)$/.exec(algorithm.hash.name)[1]}`; - case "RSA-PSS": - return `PS${/(\d+)$/.exec(algorithm.hash.name)[1]}`; - case "RSA-PKCS1": - return `RS1`; - default: - throw new OperationError("algorithm: Is not recognized"); - } -} - -class RsaPrivateKey extends AsymmetricKey { - constructor() { - super(...arguments); - this.type = "private"; - } - getKey() { - const keyInfo = AsnParser.parse(this.data, index$1.PrivateKeyInfo); - return AsnParser.parse(keyInfo.privateKey, index$1.RsaPrivateKey); - } - toJSON() { - const key = this.getKey(); - const json = { - kty: "RSA", - alg: getJwkAlgorithm(this.algorithm), - key_ops: this.usages, - ext: this.extractable, - }; - return Object.assign(json, JsonSerializer.toJSON(key)); - } - fromJSON(json) { - const key = JsonParser.fromJSON(json, { targetSchema: index$1.RsaPrivateKey }); - const keyInfo = new index$1.PrivateKeyInfo(); - keyInfo.privateKeyAlgorithm.algorithm = "1.2.840.113549.1.1.1"; - keyInfo.privateKeyAlgorithm.parameters = null; - keyInfo.privateKey = AsnSerializer.serialize(key); - this.data = Buffer.from(AsnSerializer.serialize(keyInfo)); - } -} - -class RsaPublicKey extends AsymmetricKey { - constructor() { - super(...arguments); - this.type = "public"; - } - getKey() { - const keyInfo = AsnParser.parse(this.data, index$1.PublicKeyInfo); - return AsnParser.parse(keyInfo.publicKey, index$1.RsaPublicKey); - } - toJSON() { - const key = this.getKey(); - const json = { - kty: "RSA", - alg: getJwkAlgorithm(this.algorithm), - key_ops: this.usages, - ext: this.extractable, - }; - return Object.assign(json, JsonSerializer.toJSON(key)); - } - fromJSON(json) { - const key = JsonParser.fromJSON(json, { targetSchema: index$1.RsaPublicKey }); - const keyInfo = new index$1.PublicKeyInfo(); - keyInfo.publicKeyAlgorithm.algorithm = "1.2.840.113549.1.1.1"; - keyInfo.publicKeyAlgorithm.parameters = null; - keyInfo.publicKey = AsnSerializer.serialize(key); - this.data = Buffer.from(AsnSerializer.serialize(keyInfo)); - } -} - -class RsaCrypto { - static async generateKey(algorithm, extractable, keyUsages) { - const privateKey = new RsaPrivateKey(); - privateKey.algorithm = algorithm; - privateKey.extractable = extractable; - privateKey.usages = keyUsages.filter((usage) => this.privateKeyUsages.indexOf(usage) !== -1); - const publicKey = new RsaPublicKey(); - publicKey.algorithm = algorithm; - publicKey.extractable = true; - publicKey.usages = keyUsages.filter((usage) => this.publicKeyUsages.indexOf(usage) !== -1); - const publicExponent = Buffer.concat([ - Buffer.alloc(4 - algorithm.publicExponent.byteLength, 0), - Buffer.from(algorithm.publicExponent), - ]).readInt32BE(0); - const keys = crypto__default__default.generateKeyPairSync("rsa", { - modulusLength: algorithm.modulusLength, - publicExponent, - publicKeyEncoding: { - format: "der", - type: "spki", - }, - privateKeyEncoding: { - format: "der", - type: "pkcs8", - }, - }); - privateKey.data = keys.privateKey; - publicKey.data = keys.publicKey; - const res = { - privateKey, - publicKey, - }; - return res; - } - static async exportKey(format, key) { - switch (format.toLowerCase()) { - case "jwk": - return JsonSerializer.toJSON(key); - case "pkcs8": - case "spki": - return new Uint8Array(key.data).buffer; - default: - throw new OperationError("format: Must be 'jwk', 'pkcs8' or 'spki'"); - } - } - static async importKey(format, keyData, algorithm, extractable, keyUsages) { - switch (format.toLowerCase()) { - case "jwk": { - const jwk = keyData; - if (jwk.d) { - const asnKey = JsonParser.fromJSON(keyData, { targetSchema: index$1.RsaPrivateKey }); - return this.importPrivateKey(asnKey, algorithm, extractable, keyUsages); - } - else { - const asnKey = JsonParser.fromJSON(keyData, { targetSchema: index$1.RsaPublicKey }); - return this.importPublicKey(asnKey, algorithm, extractable, keyUsages); - } - } - case "spki": { - const keyInfo = AsnParser.parse(new Uint8Array(keyData), index$1.PublicKeyInfo); - const asnKey = AsnParser.parse(keyInfo.publicKey, index$1.RsaPublicKey); - return this.importPublicKey(asnKey, algorithm, extractable, keyUsages); - } - case "pkcs8": { - const keyInfo = AsnParser.parse(new Uint8Array(keyData), index$1.PrivateKeyInfo); - const asnKey = AsnParser.parse(keyInfo.privateKey, index$1.RsaPrivateKey); - return this.importPrivateKey(asnKey, algorithm, extractable, keyUsages); - } - default: - throw new OperationError("format: Must be 'jwk', 'pkcs8' or 'spki'"); - } - } - static async sign(algorithm, key, data) { - switch (algorithm.name.toUpperCase()) { - case "RSA-PSS": - case "RSASSA-PKCS1-V1_5": - return this.signRsa(algorithm, key, data); - default: - throw new OperationError("algorithm: Is not recognized"); - } - } - static async verify(algorithm, key, signature, data) { - switch (algorithm.name.toUpperCase()) { - case "RSA-PSS": - case "RSASSA-PKCS1-V1_5": - return this.verifySSA(algorithm, key, data, signature); - default: - throw new OperationError("algorithm: Is not recognized"); - } - } - static async encrypt(algorithm, key, data) { - switch (algorithm.name.toUpperCase()) { - case "RSA-OAEP": - return this.encryptOAEP(algorithm, key, data); - default: - throw new OperationError("algorithm: Is not recognized"); - } - } - static async decrypt(algorithm, key, data) { - switch (algorithm.name.toUpperCase()) { - case "RSA-OAEP": - return this.decryptOAEP(algorithm, key, data); - default: - throw new OperationError("algorithm: Is not recognized"); - } - } - static importPrivateKey(asnKey, algorithm, extractable, keyUsages) { - const keyInfo = new index$1.PrivateKeyInfo(); - keyInfo.privateKeyAlgorithm.algorithm = "1.2.840.113549.1.1.1"; - keyInfo.privateKeyAlgorithm.parameters = null; - keyInfo.privateKey = AsnSerializer.serialize(asnKey); - const key = new RsaPrivateKey(); - key.data = Buffer.from(AsnSerializer.serialize(keyInfo)); - key.algorithm = Object.assign({}, algorithm); - key.algorithm.publicExponent = new Uint8Array(asnKey.publicExponent); - key.algorithm.modulusLength = asnKey.modulus.byteLength << 3; - key.extractable = extractable; - key.usages = keyUsages; - return key; - } - static importPublicKey(asnKey, algorithm, extractable, keyUsages) { - const keyInfo = new index$1.PublicKeyInfo(); - keyInfo.publicKeyAlgorithm.algorithm = "1.2.840.113549.1.1.1"; - keyInfo.publicKeyAlgorithm.parameters = null; - keyInfo.publicKey = AsnSerializer.serialize(asnKey); - const key = new RsaPublicKey(); - key.data = Buffer.from(AsnSerializer.serialize(keyInfo)); - key.algorithm = Object.assign({}, algorithm); - key.algorithm.publicExponent = new Uint8Array(asnKey.publicExponent); - key.algorithm.modulusLength = asnKey.modulus.byteLength << 3; - key.extractable = extractable; - key.usages = keyUsages; - return key; - } - static getCryptoAlgorithm(alg) { - switch (alg.hash.name.toUpperCase()) { - case "SHA-1": - return "RSA-SHA1"; - case "SHA-256": - return "RSA-SHA256"; - case "SHA-384": - return "RSA-SHA384"; - case "SHA-512": - return "RSA-SHA512"; - case "SHA3-256": - return "RSA-SHA3-256"; - case "SHA3-384": - return "RSA-SHA3-384"; - case "SHA3-512": - return "RSA-SHA3-512"; - default: - throw new OperationError("algorithm.hash: Is not recognized"); - } - } - static signRsa(algorithm, key, data) { - const cryptoAlg = this.getCryptoAlgorithm(key.algorithm); - const signer = crypto__default__default.createSign(cryptoAlg); - signer.update(Buffer.from(data)); - if (!key.pem) { - key.pem = `-----BEGIN PRIVATE KEY-----\n${key.data.toString("base64")}\n-----END PRIVATE KEY-----`; - } - const options = { - key: key.pem, - }; - if (algorithm.name.toUpperCase() === "RSA-PSS") { - options.padding = crypto__default__default.constants.RSA_PKCS1_PSS_PADDING; - options.saltLength = algorithm.saltLength; - } - const signature = signer.sign(options); - return new Uint8Array(signature).buffer; - } - static verifySSA(algorithm, key, data, signature) { - const cryptoAlg = this.getCryptoAlgorithm(key.algorithm); - const signer = crypto__default__default.createVerify(cryptoAlg); - signer.update(Buffer.from(data)); - if (!key.pem) { - key.pem = `-----BEGIN PUBLIC KEY-----\n${key.data.toString("base64")}\n-----END PUBLIC KEY-----`; - } - const options = { - key: key.pem, - }; - if (algorithm.name.toUpperCase() === "RSA-PSS") { - options.padding = crypto__default__default.constants.RSA_PKCS1_PSS_PADDING; - options.saltLength = algorithm.saltLength; - } - const ok = signer.verify(options, signature); - return ok; - } - static encryptOAEP(algorithm, key, data) { - const options = { - key: `-----BEGIN PUBLIC KEY-----\n${key.data.toString("base64")}\n-----END PUBLIC KEY-----`, - padding: crypto__default__default.constants.RSA_PKCS1_OAEP_PADDING, - }; - if (algorithm.label) ; - return new Uint8Array(crypto__default__default.publicEncrypt(options, data)).buffer; - } - static decryptOAEP(algorithm, key, data) { - const options = { - key: `-----BEGIN PRIVATE KEY-----\n${key.data.toString("base64")}\n-----END PRIVATE KEY-----`, - padding: crypto__default__default.constants.RSA_PKCS1_OAEP_PADDING, - }; - if (algorithm.label) ; - return new Uint8Array(crypto__default__default.privateDecrypt(options, data)).buffer; - } -} -RsaCrypto.publicKeyUsages = ["verify", "encrypt", "wrapKey"]; -RsaCrypto.privateKeyUsages = ["sign", "decrypt", "unwrapKey"]; - -class RsaSsaProvider extends RsaSsaProvider$1 { - constructor() { - super(...arguments); - this.hashAlgorithms = [ - "SHA-1", "SHA-256", "SHA-384", "SHA-512", - "shake128", "shake256", - "SHA3-256", "SHA3-384", "SHA3-512" - ]; - } - async onGenerateKey(algorithm, extractable, keyUsages) { - const keys = await RsaCrypto.generateKey({ - ...algorithm, - name: this.name, - }, extractable, keyUsages); - return { - privateKey: setCryptoKey(keys.privateKey), - publicKey: setCryptoKey(keys.publicKey), - }; - } - async onSign(algorithm, key, data) { - return RsaCrypto.sign(algorithm, getCryptoKey(key), new Uint8Array(data)); - } - async onVerify(algorithm, key, signature, data) { - return RsaCrypto.verify(algorithm, getCryptoKey(key), new Uint8Array(signature), new Uint8Array(data)); - } - async onExportKey(format, key) { - return RsaCrypto.exportKey(format, getCryptoKey(key)); - } - async onImportKey(format, keyData, algorithm, extractable, keyUsages) { - const key = await RsaCrypto.importKey(format, keyData, { ...algorithm, name: this.name }, extractable, keyUsages); - return setCryptoKey(key); - } - checkCryptoKey(key, keyUsage) { - super.checkCryptoKey(key, keyUsage); - const internalKey = getCryptoKey(key); - if (!(internalKey instanceof RsaPrivateKey || internalKey instanceof RsaPublicKey)) { - throw new TypeError("key: Is not RSA CryptoKey"); - } - } -} - -class RsaPssProvider extends RsaPssProvider$1 { - constructor() { - super(...arguments); - this.hashAlgorithms = [ - "SHA-1", "SHA-256", "SHA-384", "SHA-512", - "shake128", "shake256", - "SHA3-256", "SHA3-384", "SHA3-512" - ]; - } - async onGenerateKey(algorithm, extractable, keyUsages) { - const keys = await RsaCrypto.generateKey({ - ...algorithm, - name: this.name, - }, extractable, keyUsages); - return { - privateKey: setCryptoKey(keys.privateKey), - publicKey: setCryptoKey(keys.publicKey), - }; - } - async onSign(algorithm, key, data) { - return RsaCrypto.sign(algorithm, getCryptoKey(key), new Uint8Array(data)); - } - async onVerify(algorithm, key, signature, data) { - return RsaCrypto.verify(algorithm, getCryptoKey(key), new Uint8Array(signature), new Uint8Array(data)); - } - async onExportKey(format, key) { - return RsaCrypto.exportKey(format, getCryptoKey(key)); - } - async onImportKey(format, keyData, algorithm, extractable, keyUsages) { - const key = await RsaCrypto.importKey(format, keyData, { ...algorithm, name: this.name }, extractable, keyUsages); - return setCryptoKey(key); - } - checkCryptoKey(key, keyUsage) { - super.checkCryptoKey(key, keyUsage); - const internalKey = getCryptoKey(key); - if (!(internalKey instanceof RsaPrivateKey || internalKey instanceof RsaPublicKey)) { - throw new TypeError("key: Is not RSA CryptoKey"); - } - } -} - -class ShaCrypto { - static size(algorithm) { - switch (algorithm.name.toUpperCase()) { - case "SHA-1": - return 160; - case "SHA-256": - case "SHA3-256": - return 256; - case "SHA-384": - case "SHA3-384": - return 384; - case "SHA-512": - case "SHA3-512": - return 512; - default: - throw new Error("Unrecognized name"); - } - } - static getAlgorithmName(algorithm) { - switch (algorithm.name.toUpperCase()) { - case "SHA-1": - return "sha1"; - case "SHA-256": - return "sha256"; - case "SHA-384": - return "sha384"; - case "SHA-512": - return "sha512"; - case "SHA3-256": - return "sha3-256"; - case "SHA3-384": - return "sha3-384"; - case "SHA3-512": - return "sha3-512"; - default: - throw new Error("Unrecognized name"); - } - } - static digest(algorithm, data) { - const hashAlg = this.getAlgorithmName(algorithm); - const hash = crypto__default__default.createHash(hashAlg) - .update(Buffer.from(data)).digest(); - return new Uint8Array(hash).buffer; - } -} - -class RsaOaepProvider extends RsaOaepProvider$1 { - async onGenerateKey(algorithm, extractable, keyUsages) { - const keys = await RsaCrypto.generateKey({ - ...algorithm, - name: this.name, - }, extractable, keyUsages); - return { - privateKey: setCryptoKey(keys.privateKey), - publicKey: setCryptoKey(keys.publicKey), - }; - } - async onEncrypt(algorithm, key, data) { - const internalKey = getCryptoKey(key); - const dataView = new Uint8Array(data); - const keySize = Math.ceil(internalKey.algorithm.modulusLength >> 3); - const hashSize = ShaCrypto.size(internalKey.algorithm.hash) >> 3; - const dataLength = dataView.byteLength; - const psLength = keySize - dataLength - 2 * hashSize - 2; - if (dataLength > keySize - 2 * hashSize - 2) { - throw new Error("Data too large"); - } - const message = new Uint8Array(keySize); - const seed = message.subarray(1, hashSize + 1); - const dataBlock = message.subarray(hashSize + 1); - dataBlock.set(dataView, hashSize + psLength + 1); - const labelHash = crypto__default__default.createHash(internalKey.algorithm.hash.name.replace("-", "")) - .update(BufferSourceConverter.toUint8Array(algorithm.label || new Uint8Array(0))) - .digest(); - dataBlock.set(labelHash, 0); - dataBlock[hashSize + psLength] = 1; - crypto__default__default.randomFillSync(seed); - const dataBlockMask = this.mgf1(internalKey.algorithm.hash, seed, dataBlock.length); - for (let i = 0; i < dataBlock.length; i++) { - dataBlock[i] ^= dataBlockMask[i]; - } - const seedMask = this.mgf1(internalKey.algorithm.hash, dataBlock, seed.length); - for (let i = 0; i < seed.length; i++) { - seed[i] ^= seedMask[i]; - } - if (!internalKey.pem) { - internalKey.pem = `-----BEGIN PUBLIC KEY-----\n${internalKey.data.toString("base64")}\n-----END PUBLIC KEY-----`; - } - const pkcs0 = crypto__default__default.publicEncrypt({ - key: internalKey.pem, - padding: crypto__default__default.constants.RSA_NO_PADDING, - }, Buffer.from(message)); - return new Uint8Array(pkcs0).buffer; - } - async onDecrypt(algorithm, key, data) { - const internalKey = getCryptoKey(key); - const keySize = Math.ceil(internalKey.algorithm.modulusLength >> 3); - const hashSize = ShaCrypto.size(internalKey.algorithm.hash) >> 3; - const dataLength = data.byteLength; - if (dataLength !== keySize) { - throw new Error("Bad data"); - } - if (!internalKey.pem) { - internalKey.pem = `-----BEGIN PRIVATE KEY-----\n${internalKey.data.toString("base64")}\n-----END PRIVATE KEY-----`; - } - let pkcs0 = crypto__default__default.privateDecrypt({ - key: internalKey.pem, - padding: crypto__default__default.constants.RSA_NO_PADDING, - }, Buffer.from(data)); - const z = pkcs0[0]; - const seed = pkcs0.subarray(1, hashSize + 1); - const dataBlock = pkcs0.subarray(hashSize + 1); - if (z !== 0) { - throw new Error("Decryption failed"); - } - const seedMask = this.mgf1(internalKey.algorithm.hash, dataBlock, seed.length); - for (let i = 0; i < seed.length; i++) { - seed[i] ^= seedMask[i]; - } - const dataBlockMask = this.mgf1(internalKey.algorithm.hash, seed, dataBlock.length); - for (let i = 0; i < dataBlock.length; i++) { - dataBlock[i] ^= dataBlockMask[i]; - } - const labelHash = crypto__default__default.createHash(internalKey.algorithm.hash.name.replace("-", "")) - .update(BufferSourceConverter.toUint8Array(algorithm.label || new Uint8Array(0))) - .digest(); - for (let i = 0; i < hashSize; i++) { - if (labelHash[i] !== dataBlock[i]) { - throw new Error("Decryption failed"); - } - } - let psEnd = hashSize; - for (; psEnd < dataBlock.length; psEnd++) { - const psz = dataBlock[psEnd]; - if (psz === 1) { - break; - } - if (psz !== 0) { - throw new Error("Decryption failed"); - } - } - if (psEnd === dataBlock.length) { - throw new Error("Decryption failed"); - } - pkcs0 = dataBlock.subarray(psEnd + 1); - return new Uint8Array(pkcs0).buffer; - } - async onExportKey(format, key) { - return RsaCrypto.exportKey(format, getCryptoKey(key)); - } - async onImportKey(format, keyData, algorithm, extractable, keyUsages) { - const key = await RsaCrypto.importKey(format, keyData, { ...algorithm, name: this.name }, extractable, keyUsages); - return setCryptoKey(key); - } - checkCryptoKey(key, keyUsage) { - super.checkCryptoKey(key, keyUsage); - const internalKey = getCryptoKey(key); - if (!(internalKey instanceof RsaPrivateKey || internalKey instanceof RsaPublicKey)) { - throw new TypeError("key: Is not RSA CryptoKey"); - } - } - mgf1(algorithm, seed, length = 0) { - const hashSize = ShaCrypto.size(algorithm) >> 3; - const mask = new Uint8Array(length); - const counter = new Uint8Array(4); - const chunks = Math.ceil(length / hashSize); - for (let i = 0; i < chunks; i++) { - counter[0] = i >>> 24; - counter[1] = (i >>> 16) & 255; - counter[2] = (i >>> 8) & 255; - counter[3] = i & 255; - const submask = mask.subarray(i * hashSize); - let chunk = crypto__default__default.createHash(algorithm.name.replace("-", "")) - .update(seed) - .update(counter) - .digest(); - if (chunk.length > submask.length) { - chunk = chunk.subarray(0, submask.length); - } - submask.set(chunk); - } - return mask; - } -} - -class RsaEsProvider extends ProviderCrypto { - constructor() { - super(...arguments); - this.name = "RSAES-PKCS1-v1_5"; - this.usages = { - publicKey: ["encrypt", "wrapKey"], - privateKey: ["decrypt", "unwrapKey"], - }; - } - async onGenerateKey(algorithm, extractable, keyUsages) { - const keys = await RsaCrypto.generateKey({ - ...algorithm, - name: this.name, - }, extractable, keyUsages); - return { - privateKey: setCryptoKey(keys.privateKey), - publicKey: setCryptoKey(keys.publicKey), - }; - } - checkGenerateKeyParams(algorithm) { - this.checkRequiredProperty(algorithm, "publicExponent"); - if (!(algorithm.publicExponent && algorithm.publicExponent instanceof Uint8Array)) { - throw new TypeError("publicExponent: Missing or not a Uint8Array"); - } - const publicExponent = Convert.ToBase64(algorithm.publicExponent); - if (!(publicExponent === "Aw==" || publicExponent === "AQAB")) { - throw new TypeError("publicExponent: Must be [3] or [1,0,1]"); - } - this.checkRequiredProperty(algorithm, "modulusLength"); - switch (algorithm.modulusLength) { - case 1024: - case 2048: - case 4096: - break; - default: - throw new TypeError("modulusLength: Must be 1024, 2048, or 4096"); - } - } - async onEncrypt(algorithm, key, data) { - const options = this.toCryptoOptions(key); - const enc = crypto__default.publicEncrypt(options, new Uint8Array(data)); - return new Uint8Array(enc).buffer; - } - async onDecrypt(algorithm, key, data) { - const options = this.toCryptoOptions(key); - const dec = crypto__default.privateDecrypt(options, new Uint8Array(data)); - return new Uint8Array(dec).buffer; - } - async onExportKey(format, key) { - return RsaCrypto.exportKey(format, getCryptoKey(key)); - } - async onImportKey(format, keyData, algorithm, extractable, keyUsages) { - const key = await RsaCrypto.importKey(format, keyData, { ...algorithm, name: this.name }, extractable, keyUsages); - return setCryptoKey(key); - } - checkCryptoKey(key, keyUsage) { - super.checkCryptoKey(key, keyUsage); - const internalKey = getCryptoKey(key); - if (!(internalKey instanceof RsaPrivateKey || internalKey instanceof RsaPublicKey)) { - throw new TypeError("key: Is not RSA CryptoKey"); - } - } - toCryptoOptions(key) { - const type = key.type.toUpperCase(); - return { - key: `-----BEGIN ${type} KEY-----\n${getCryptoKey(key).data.toString("base64")}\n-----END ${type} KEY-----`, - padding: crypto__default.constants.RSA_PKCS1_PADDING, - }; - } -} - -const namedOIDs = { - "1.2.840.10045.3.1.7": "P-256", - "P-256": "1.2.840.10045.3.1.7", - "1.3.132.0.34": "P-384", - "P-384": "1.3.132.0.34", - "1.3.132.0.35": "P-521", - "P-521": "1.3.132.0.35", - "1.3.132.0.10": "K-256", - "K-256": "1.3.132.0.10", - "brainpoolP160r1": "1.3.36.3.3.2.8.1.1.1", - "1.3.36.3.3.2.8.1.1.1": "brainpoolP160r1", - "brainpoolP160t1": "1.3.36.3.3.2.8.1.1.2", - "1.3.36.3.3.2.8.1.1.2": "brainpoolP160t1", - "brainpoolP192r1": "1.3.36.3.3.2.8.1.1.3", - "1.3.36.3.3.2.8.1.1.3": "brainpoolP192r1", - "brainpoolP192t1": "1.3.36.3.3.2.8.1.1.4", - "1.3.36.3.3.2.8.1.1.4": "brainpoolP192t1", - "brainpoolP224r1": "1.3.36.3.3.2.8.1.1.5", - "1.3.36.3.3.2.8.1.1.5": "brainpoolP224r1", - "brainpoolP224t1": "1.3.36.3.3.2.8.1.1.6", - "1.3.36.3.3.2.8.1.1.6": "brainpoolP224t1", - "brainpoolP256r1": "1.3.36.3.3.2.8.1.1.7", - "1.3.36.3.3.2.8.1.1.7": "brainpoolP256r1", - "brainpoolP256t1": "1.3.36.3.3.2.8.1.1.8", - "1.3.36.3.3.2.8.1.1.8": "brainpoolP256t1", - "brainpoolP320r1": "1.3.36.3.3.2.8.1.1.9", - "1.3.36.3.3.2.8.1.1.9": "brainpoolP320r1", - "brainpoolP320t1": "1.3.36.3.3.2.8.1.1.10", - "1.3.36.3.3.2.8.1.1.10": "brainpoolP320t1", - "brainpoolP384r1": "1.3.36.3.3.2.8.1.1.11", - "1.3.36.3.3.2.8.1.1.11": "brainpoolP384r1", - "brainpoolP384t1": "1.3.36.3.3.2.8.1.1.12", - "1.3.36.3.3.2.8.1.1.12": "brainpoolP384t1", - "brainpoolP512r1": "1.3.36.3.3.2.8.1.1.13", - "1.3.36.3.3.2.8.1.1.13": "brainpoolP512r1", - "brainpoolP512t1": "1.3.36.3.3.2.8.1.1.14", - "1.3.36.3.3.2.8.1.1.14": "brainpoolP512t1", -}; -function getOidByNamedCurve$1(namedCurve) { - const oid = namedOIDs[namedCurve]; - if (!oid) { - throw new OperationError(`Cannot convert WebCrypto named curve '${namedCurve}' to OID`); - } - return oid; -} - -class EcPrivateKey extends AsymmetricKey { - constructor() { - super(...arguments); - this.type = "private"; - } - getKey() { - const keyInfo = AsnParser.parse(this.data, index$1.PrivateKeyInfo); - return AsnParser.parse(keyInfo.privateKey, index$1.EcPrivateKey); - } - toJSON() { - const key = this.getKey(); - const json = { - kty: "EC", - crv: this.algorithm.namedCurve, - key_ops: this.usages, - ext: this.extractable, - }; - return Object.assign(json, JsonSerializer.toJSON(key)); - } - fromJSON(json) { - if (!json.crv) { - throw new OperationError(`Cannot get named curve from JWK. Property 'crv' is required`); - } - const keyInfo = new index$1.PrivateKeyInfo(); - keyInfo.privateKeyAlgorithm.algorithm = "1.2.840.10045.2.1"; - keyInfo.privateKeyAlgorithm.parameters = AsnSerializer.serialize(new index$1.ObjectIdentifier(getOidByNamedCurve$1(json.crv))); - const key = JsonParser.fromJSON(json, { targetSchema: index$1.EcPrivateKey }); - keyInfo.privateKey = AsnSerializer.serialize(key); - this.data = Buffer.from(AsnSerializer.serialize(keyInfo)); - return this; - } -} - -class EcPublicKey extends AsymmetricKey { - constructor() { - super(...arguments); - this.type = "public"; - } - getKey() { - const keyInfo = AsnParser.parse(this.data, index$1.PublicKeyInfo); - return new index$1.EcPublicKey(keyInfo.publicKey); - } - toJSON() { - const key = this.getKey(); - const json = { - kty: "EC", - crv: this.algorithm.namedCurve, - key_ops: this.usages, - ext: this.extractable, - }; - return Object.assign(json, JsonSerializer.toJSON(key)); - } - fromJSON(json) { - if (!json.crv) { - throw new OperationError(`Cannot get named curve from JWK. Property 'crv' is required`); - } - const key = JsonParser.fromJSON(json, { targetSchema: index$1.EcPublicKey }); - const keyInfo = new index$1.PublicKeyInfo(); - keyInfo.publicKeyAlgorithm.algorithm = "1.2.840.10045.2.1"; - keyInfo.publicKeyAlgorithm.parameters = AsnSerializer.serialize(new index$1.ObjectIdentifier(getOidByNamedCurve$1(json.crv))); - keyInfo.publicKey = AsnSerializer.toASN(key).valueHex; - this.data = Buffer.from(AsnSerializer.serialize(keyInfo)); - return this; - } -} - -class Sha1Provider extends ProviderCrypto { - constructor() { - super(...arguments); - this.name = "SHA-1"; - this.usages = []; - } - async onDigest(algorithm, data) { - return ShaCrypto.digest(algorithm, data); - } -} - -class Sha256Provider extends ProviderCrypto { - constructor() { - super(...arguments); - this.name = "SHA-256"; - this.usages = []; - } - async onDigest(algorithm, data) { - return ShaCrypto.digest(algorithm, data); - } -} - -class Sha384Provider extends ProviderCrypto { - constructor() { - super(...arguments); - this.name = "SHA-384"; - this.usages = []; - } - async onDigest(algorithm, data) { - return ShaCrypto.digest(algorithm, data); - } -} - -class Sha512Provider extends ProviderCrypto { - constructor() { - super(...arguments); - this.name = "SHA-512"; - this.usages = []; - } - async onDigest(algorithm, data) { - return ShaCrypto.digest(algorithm, data); - } -} - -class Sha3256Provider extends ProviderCrypto { - constructor() { - super(...arguments); - this.name = "SHA3-256"; - this.usages = []; - } - async onDigest(algorithm, data) { - return ShaCrypto.digest(algorithm, data); - } -} - -class Sha3384Provider extends ProviderCrypto { - constructor() { - super(...arguments); - this.name = "SHA3-384"; - this.usages = []; - } - async onDigest(algorithm, data) { - return ShaCrypto.digest(algorithm, data); - } -} - -class Sha3512Provider extends ProviderCrypto { - constructor() { - super(...arguments); - this.name = "SHA3-512"; - this.usages = []; - } - async onDigest(algorithm, data) { - return ShaCrypto.digest(algorithm, data); - } -} - -class EcCrypto { - static async generateKey(algorithm, extractable, keyUsages) { - const privateKey = new EcPrivateKey(); - privateKey.algorithm = algorithm; - privateKey.extractable = extractable; - privateKey.usages = keyUsages.filter((usage) => this.privateKeyUsages.indexOf(usage) !== -1); - const publicKey = new EcPublicKey(); - publicKey.algorithm = algorithm; - publicKey.extractable = true; - publicKey.usages = keyUsages.filter((usage) => this.publicKeyUsages.indexOf(usage) !== -1); - const keys = crypto__default__default.generateKeyPairSync("ec", { - namedCurve: this.getOpenSSLNamedCurve(algorithm.namedCurve), - publicKeyEncoding: { - format: "der", - type: "spki", - }, - privateKeyEncoding: { - format: "der", - type: "pkcs8", - }, - }); - privateKey.data = keys.privateKey; - publicKey.data = keys.publicKey; - const res = { - privateKey, - publicKey, - }; - return res; - } - static async sign(algorithm, key, data) { - const cryptoAlg = ShaCrypto.getAlgorithmName(algorithm.hash); - const signer = crypto__default__default.createSign(cryptoAlg); - signer.update(Buffer.from(data)); - if (!key.pem) { - key.pem = `-----BEGIN PRIVATE KEY-----\n${key.data.toString("base64")}\n-----END PRIVATE KEY-----`; - } - const options = { - key: key.pem, - }; - const signature = signer.sign(options); - const ecSignature = AsnParser.parse(signature, index$1.EcDsaSignature); - const signatureRaw = EcUtils.encodeSignature(ecSignature, EcCurves.get(key.algorithm.namedCurve).size); - return signatureRaw.buffer; - } - static async verify(algorithm, key, signature, data) { - const cryptoAlg = ShaCrypto.getAlgorithmName(algorithm.hash); - const signer = crypto__default__default.createVerify(cryptoAlg); - signer.update(Buffer.from(data)); - if (!key.pem) { - key.pem = `-----BEGIN PUBLIC KEY-----\n${key.data.toString("base64")}\n-----END PUBLIC KEY-----`; - } - const options = { - key: key.pem, - }; - const ecSignature = new index$1.EcDsaSignature(); - const namedCurve = EcCurves.get(key.algorithm.namedCurve); - const signaturePoint = EcUtils.decodeSignature(signature, namedCurve.size); - ecSignature.r = BufferSourceConverter.toArrayBuffer(signaturePoint.r); - ecSignature.s = BufferSourceConverter.toArrayBuffer(signaturePoint.s); - const ecSignatureRaw = Buffer.from(AsnSerializer.serialize(ecSignature)); - const ok = signer.verify(options, ecSignatureRaw); - return ok; - } - static async deriveBits(algorithm, baseKey, length) { - const cryptoAlg = this.getOpenSSLNamedCurve(baseKey.algorithm.namedCurve); - const ecdh = crypto__default__default.createECDH(cryptoAlg); - const asnPrivateKey = AsnParser.parse(baseKey.data, index$1.PrivateKeyInfo); - const asnEcPrivateKey = AsnParser.parse(asnPrivateKey.privateKey, index$1.EcPrivateKey); - ecdh.setPrivateKey(Buffer.from(asnEcPrivateKey.privateKey)); - const asnPublicKey = AsnParser.parse(algorithm.public.data, index$1.PublicKeyInfo); - const bits = ecdh.computeSecret(Buffer.from(asnPublicKey.publicKey)); - return new Uint8Array(bits).buffer.slice(0, length >> 3); - } - static async exportKey(format, key) { - switch (format.toLowerCase()) { - case "jwk": - return JsonSerializer.toJSON(key); - case "pkcs8": - case "spki": - return new Uint8Array(key.data).buffer; - case "raw": { - const publicKeyInfo = AsnParser.parse(key.data, index$1.PublicKeyInfo); - return publicKeyInfo.publicKey; - } - default: - throw new OperationError("format: Must be 'jwk', 'raw', pkcs8' or 'spki'"); - } - } - static async importKey(format, keyData, algorithm, extractable, keyUsages) { - switch (format.toLowerCase()) { - case "jwk": { - const jwk = keyData; - if (jwk.d) { - const asnKey = JsonParser.fromJSON(keyData, { targetSchema: index$1.EcPrivateKey }); - return this.importPrivateKey(asnKey, algorithm, extractable, keyUsages); - } - else { - const asnKey = JsonParser.fromJSON(keyData, { targetSchema: index$1.EcPublicKey }); - return this.importPublicKey(asnKey, algorithm, extractable, keyUsages); - } - } - case "raw": { - const asnKey = new index$1.EcPublicKey(keyData); - return this.importPublicKey(asnKey, algorithm, extractable, keyUsages); - } - case "spki": { - const keyInfo = AsnParser.parse(new Uint8Array(keyData), index$1.PublicKeyInfo); - const asnKey = new index$1.EcPublicKey(keyInfo.publicKey); - this.assertKeyParameters(keyInfo.publicKeyAlgorithm.parameters, algorithm.namedCurve); - return this.importPublicKey(asnKey, algorithm, extractable, keyUsages); - } - case "pkcs8": { - const keyInfo = AsnParser.parse(new Uint8Array(keyData), index$1.PrivateKeyInfo); - const asnKey = AsnParser.parse(keyInfo.privateKey, index$1.EcPrivateKey); - this.assertKeyParameters(keyInfo.privateKeyAlgorithm.parameters, algorithm.namedCurve); - return this.importPrivateKey(asnKey, algorithm, extractable, keyUsages); - } - default: - throw new OperationError("format: Must be 'jwk', 'raw', 'pkcs8' or 'spki'"); - } - } - static assertKeyParameters(parameters, namedCurve) { - if (!parameters) { - throw new CryptoError("Key info doesn't have required parameters"); - } - let namedCurveIdentifier = ""; - try { - namedCurveIdentifier = AsnParser.parse(parameters, index$1.ObjectIdentifier).value; - } - catch (e) { - throw new CryptoError("Cannot read key info parameters"); - } - if (getOidByNamedCurve$1(namedCurve) !== namedCurveIdentifier) { - throw new CryptoError("Key info parameter doesn't match to named curve"); - } - } - static async importPrivateKey(asnKey, algorithm, extractable, keyUsages) { - const keyInfo = new index$1.PrivateKeyInfo(); - keyInfo.privateKeyAlgorithm.algorithm = "1.2.840.10045.2.1"; - keyInfo.privateKeyAlgorithm.parameters = AsnSerializer.serialize(new index$1.ObjectIdentifier(getOidByNamedCurve$1(algorithm.namedCurve))); - keyInfo.privateKey = AsnSerializer.serialize(asnKey); - const key = new EcPrivateKey(); - key.data = Buffer.from(AsnSerializer.serialize(keyInfo)); - key.algorithm = Object.assign({}, algorithm); - key.extractable = extractable; - key.usages = keyUsages; - return key; - } - static async importPublicKey(asnKey, algorithm, extractable, keyUsages) { - const keyInfo = new index$1.PublicKeyInfo(); - keyInfo.publicKeyAlgorithm.algorithm = "1.2.840.10045.2.1"; - const namedCurve = getOidByNamedCurve$1(algorithm.namedCurve); - keyInfo.publicKeyAlgorithm.parameters = AsnSerializer.serialize(new index$1.ObjectIdentifier(namedCurve)); - keyInfo.publicKey = asnKey.value; - const key = new EcPublicKey(); - key.data = Buffer.from(AsnSerializer.serialize(keyInfo)); - key.algorithm = Object.assign({}, algorithm); - key.extractable = extractable; - key.usages = keyUsages; - return key; - } - static getOpenSSLNamedCurve(curve) { - switch (curve.toUpperCase()) { - case "P-256": - return "prime256v1"; - case "K-256": - return "secp256k1"; - case "P-384": - return "secp384r1"; - case "P-521": - return "secp521r1"; - default: - return curve; - } - } -} -EcCrypto.publicKeyUsages = ["verify"]; -EcCrypto.privateKeyUsages = ["sign", "deriveKey", "deriveBits"]; - -class EcdsaProvider extends EcdsaProvider$1 { - constructor() { - super(...arguments); - this.namedCurves = EcCurves.names; - this.hashAlgorithms = [ - "SHA-1", "SHA-256", "SHA-384", "SHA-512", - "shake128", "shake256", - "SHA3-256", "SHA3-384", "SHA3-512" - ]; - } - async onGenerateKey(algorithm, extractable, keyUsages) { - const keys = await EcCrypto.generateKey({ - ...algorithm, - name: this.name, - }, extractable, keyUsages); - return { - privateKey: setCryptoKey(keys.privateKey), - publicKey: setCryptoKey(keys.publicKey), - }; - } - async onSign(algorithm, key, data) { - return EcCrypto.sign(algorithm, getCryptoKey(key), new Uint8Array(data)); - } - async onVerify(algorithm, key, signature, data) { - return EcCrypto.verify(algorithm, getCryptoKey(key), new Uint8Array(signature), new Uint8Array(data)); - } - async onExportKey(format, key) { - return EcCrypto.exportKey(format, getCryptoKey(key)); - } - async onImportKey(format, keyData, algorithm, extractable, keyUsages) { - const key = await EcCrypto.importKey(format, keyData, { ...algorithm, name: this.name }, extractable, keyUsages); - return setCryptoKey(key); - } - checkCryptoKey(key, keyUsage) { - super.checkCryptoKey(key, keyUsage); - const internalKey = getCryptoKey(key); - if (!(internalKey instanceof EcPrivateKey || internalKey instanceof EcPublicKey)) { - throw new TypeError("key: Is not EC CryptoKey"); - } - } -} - -class EcdhProvider extends EcdhProvider$1 { - constructor() { - super(...arguments); - this.namedCurves = EcCurves.names; - } - async onGenerateKey(algorithm, extractable, keyUsages) { - const keys = await EcCrypto.generateKey({ - ...algorithm, - name: this.name, - }, extractable, keyUsages); - return { - privateKey: setCryptoKey(keys.privateKey), - publicKey: setCryptoKey(keys.publicKey), - }; - } - async onExportKey(format, key) { - return EcCrypto.exportKey(format, getCryptoKey(key)); - } - async onImportKey(format, keyData, algorithm, extractable, keyUsages) { - const key = await EcCrypto.importKey(format, keyData, { ...algorithm, name: this.name }, extractable, keyUsages); - return setCryptoKey(key); - } - checkCryptoKey(key, keyUsage) { - super.checkCryptoKey(key, keyUsage); - const internalKey = getCryptoKey(key); - if (!(internalKey instanceof EcPrivateKey || internalKey instanceof EcPublicKey)) { - throw new TypeError("key: Is not EC CryptoKey"); - } - } - async onDeriveBits(algorithm, baseKey, length) { - const bits = await EcCrypto.deriveBits({ ...algorithm, public: getCryptoKey(algorithm.public) }, getCryptoKey(baseKey), length); - return bits; - } -} - -const edOIDs = { - [index$1.idEd448]: "Ed448", - "ed448": index$1.idEd448, - [index$1.idX448]: "X448", - "x448": index$1.idX448, - [index$1.idEd25519]: "Ed25519", - "ed25519": index$1.idEd25519, - [index$1.idX25519]: "X25519", - "x25519": index$1.idX25519, -}; -function getOidByNamedCurve(namedCurve) { - const oid = edOIDs[namedCurve.toLowerCase()]; - if (!oid) { - throw new OperationError(`Cannot convert WebCrypto named curve '${namedCurve}' to OID`); - } - return oid; -} - -class EdPrivateKey extends AsymmetricKey { - constructor() { - super(...arguments); - this.type = "private"; - } - getKey() { - const keyInfo = AsnParser.parse(this.data, index$1.PrivateKeyInfo); - return AsnParser.parse(keyInfo.privateKey, index$1.CurvePrivateKey); - } - toJSON() { - const key = this.getKey(); - const json = { - kty: "OKP", - crv: this.algorithm.namedCurve, - key_ops: this.usages, - ext: this.extractable, - }; - return Object.assign(json, JsonSerializer.toJSON(key)); - } - fromJSON(json) { - if (!json.crv) { - throw new OperationError(`Cannot get named curve from JWK. Property 'crv' is required`); - } - const keyInfo = new index$1.PrivateKeyInfo(); - keyInfo.privateKeyAlgorithm.algorithm = getOidByNamedCurve(json.crv); - const key = JsonParser.fromJSON(json, { targetSchema: index$1.CurvePrivateKey }); - keyInfo.privateKey = AsnSerializer.serialize(key); - this.data = Buffer.from(AsnSerializer.serialize(keyInfo)); - return this; - } -} - -class EdPublicKey extends AsymmetricKey { - constructor() { - super(...arguments); - this.type = "public"; - } - getKey() { - const keyInfo = AsnParser.parse(this.data, index$1.PublicKeyInfo); - return keyInfo.publicKey; - } - toJSON() { - const key = this.getKey(); - const json = { - kty: "OKP", - crv: this.algorithm.namedCurve, - key_ops: this.usages, - ext: this.extractable, - }; - return Object.assign(json, { - x: Convert.ToBase64Url(key) - }); - } - fromJSON(json) { - if (!json.crv) { - throw new OperationError(`Cannot get named curve from JWK. Property 'crv' is required`); - } - if (!json.x) { - throw new OperationError(`Cannot get property from JWK. Property 'x' is required`); - } - const keyInfo = new index$1.PublicKeyInfo(); - keyInfo.publicKeyAlgorithm.algorithm = getOidByNamedCurve(json.crv); - keyInfo.publicKey = Convert.FromBase64Url(json.x); - this.data = Buffer.from(AsnSerializer.serialize(keyInfo)); - return this; - } -} - -class EdCrypto { - static async generateKey(algorithm, extractable, keyUsages) { - const privateKey = new EdPrivateKey(); - privateKey.algorithm = algorithm; - privateKey.extractable = extractable; - privateKey.usages = keyUsages.filter((usage) => this.privateKeyUsages.indexOf(usage) !== -1); - const publicKey = new EdPublicKey(); - publicKey.algorithm = algorithm; - publicKey.extractable = true; - publicKey.usages = keyUsages.filter((usage) => this.publicKeyUsages.indexOf(usage) !== -1); - const type = algorithm.namedCurve.toLowerCase(); - const keys = crypto__default__default.generateKeyPairSync(type, { - publicKeyEncoding: { - format: "der", - type: "spki", - }, - privateKeyEncoding: { - format: "der", - type: "pkcs8", - }, - }); - privateKey.data = keys.privateKey; - publicKey.data = keys.publicKey; - const res = { - privateKey, - publicKey, - }; - return res; - } - static async sign(algorithm, key, data) { - if (!key.pem) { - key.pem = `-----BEGIN PRIVATE KEY-----\n${key.data.toString("base64")}\n-----END PRIVATE KEY-----`; - } - const options = { - key: key.pem, - }; - const signature = crypto__default__default.sign(null, Buffer.from(data), options); - return BufferSourceConverter.toArrayBuffer(signature); - } - static async verify(algorithm, key, signature, data) { - if (!key.pem) { - key.pem = `-----BEGIN PUBLIC KEY-----\n${key.data.toString("base64")}\n-----END PUBLIC KEY-----`; - } - const options = { - key: key.pem, - }; - const ok = crypto__default__default.verify(null, Buffer.from(data), options, Buffer.from(signature)); - return ok; - } - static async deriveBits(algorithm, baseKey, length) { - const publicKey = crypto__default__default.createPublicKey({ - key: algorithm.public.data, - format: "der", - type: "spki", - }); - const privateKey = crypto__default__default.createPrivateKey({ - key: baseKey.data, - format: "der", - type: "pkcs8", - }); - const bits = crypto__default__default.diffieHellman({ - publicKey, - privateKey, - }); - return new Uint8Array(bits).buffer.slice(0, length >> 3); - } - static async exportKey(format, key) { - switch (format.toLowerCase()) { - case "jwk": - return JsonSerializer.toJSON(key); - case "pkcs8": - case "spki": - return new Uint8Array(key.data).buffer; - case "raw": { - const publicKeyInfo = AsnParser.parse(key.data, index$1.PublicKeyInfo); - return publicKeyInfo.publicKey; - } - default: - throw new OperationError("format: Must be 'jwk', 'raw', pkcs8' or 'spki'"); - } - } - static async importKey(format, keyData, algorithm, extractable, keyUsages) { - switch (format.toLowerCase()) { - case "jwk": { - const jwk = keyData; - if (jwk.d) { - const asnKey = JsonParser.fromJSON(keyData, { targetSchema: index$1.CurvePrivateKey }); - return this.importPrivateKey(asnKey, algorithm, extractable, keyUsages); - } - else { - if (!jwk.x) { - throw new TypeError("keyData: Cannot get required 'x' filed"); - } - return this.importPublicKey(Convert.FromBase64Url(jwk.x), algorithm, extractable, keyUsages); - } - } - case "raw": { - return this.importPublicKey(keyData, algorithm, extractable, keyUsages); - } - case "spki": { - const keyInfo = AsnParser.parse(new Uint8Array(keyData), index$1.PublicKeyInfo); - return this.importPublicKey(keyInfo.publicKey, algorithm, extractable, keyUsages); - } - case "pkcs8": { - const keyInfo = AsnParser.parse(new Uint8Array(keyData), index$1.PrivateKeyInfo); - const asnKey = AsnParser.parse(keyInfo.privateKey, index$1.CurvePrivateKey); - return this.importPrivateKey(asnKey, algorithm, extractable, keyUsages); - } - default: - throw new OperationError("format: Must be 'jwk', 'raw', 'pkcs8' or 'spki'"); - } - } - static importPrivateKey(asnKey, algorithm, extractable, keyUsages) { - const key = new EdPrivateKey(); - key.fromJSON({ - crv: algorithm.namedCurve, - d: Convert.ToBase64Url(asnKey.d), - }); - key.algorithm = Object.assign({}, algorithm); - key.extractable = extractable; - key.usages = keyUsages; - return key; - } - static async importPublicKey(asnKey, algorithm, extractable, keyUsages) { - const key = new EdPublicKey(); - key.fromJSON({ - crv: algorithm.namedCurve, - x: Convert.ToBase64Url(asnKey), - }); - key.algorithm = Object.assign({}, algorithm); - key.extractable = extractable; - key.usages = keyUsages; - return key; - } -} -EdCrypto.publicKeyUsages = ["verify"]; -EdCrypto.privateKeyUsages = ["sign", "deriveKey", "deriveBits"]; - -class EdDsaProvider extends EdDsaProvider$1 { - async onGenerateKey(algorithm, extractable, keyUsages) { - const keys = await EdCrypto.generateKey({ - name: this.name, - namedCurve: algorithm.namedCurve.replace(/^ed/i, "Ed"), - }, extractable, keyUsages); - return { - privateKey: setCryptoKey(keys.privateKey), - publicKey: setCryptoKey(keys.publicKey), - }; - } - async onSign(algorithm, key, data) { - return EdCrypto.sign(algorithm, getCryptoKey(key), new Uint8Array(data)); - } - async onVerify(algorithm, key, signature, data) { - return EdCrypto.verify(algorithm, getCryptoKey(key), new Uint8Array(signature), new Uint8Array(data)); - } - async onExportKey(format, key) { - return EdCrypto.exportKey(format, getCryptoKey(key)); - } - async onImportKey(format, keyData, algorithm, extractable, keyUsages) { - const key = await EdCrypto.importKey(format, keyData, { ...algorithm, name: this.name }, extractable, keyUsages); - return setCryptoKey(key); - } -} - -class EcdhEsProvider extends EcdhEsProvider$1 { - async onGenerateKey(algorithm, extractable, keyUsages) { - const keys = await EdCrypto.generateKey({ - name: this.name, - namedCurve: algorithm.namedCurve.toUpperCase(), - }, extractable, keyUsages); - return { - privateKey: setCryptoKey(keys.privateKey), - publicKey: setCryptoKey(keys.publicKey), - }; - } - async onDeriveBits(algorithm, baseKey, length) { - const bits = await EdCrypto.deriveBits({ ...algorithm, public: getCryptoKey(algorithm.public) }, getCryptoKey(baseKey), length); - return bits; - } - async onExportKey(format, key) { - return EdCrypto.exportKey(format, getCryptoKey(key)); - } - async onImportKey(format, keyData, algorithm, extractable, keyUsages) { - const key = await EdCrypto.importKey(format, keyData, { ...algorithm, name: this.name }, extractable, keyUsages); - return setCryptoKey(key); - } -} - -class PbkdfCryptoKey extends CryptoKey { -} - -class Pbkdf2Provider extends Pbkdf2Provider$1 { - async onDeriveBits(algorithm, baseKey, length) { - return new Promise((resolve, reject) => { - const salt = BufferSourceConverter.toArrayBuffer(algorithm.salt); - const hash = algorithm.hash.name.replace("-", ""); - crypto__default__default.pbkdf2(getCryptoKey(baseKey).data, Buffer.from(salt), algorithm.iterations, length >> 3, hash, (err, derivedBits) => { - if (err) { - reject(err); - } - else { - resolve(new Uint8Array(derivedBits).buffer); - } - }); - }); - } - async onImportKey(format, keyData, algorithm, extractable, keyUsages) { - if (format === "raw") { - const key = new PbkdfCryptoKey(); - key.data = Buffer.from(keyData); - key.algorithm = { name: this.name }; - key.extractable = false; - key.usages = keyUsages; - return setCryptoKey(key); - } - throw new OperationError("format: Must be 'raw'"); - } - checkCryptoKey(key, keyUsage) { - super.checkCryptoKey(key, keyUsage); - if (!(getCryptoKey(key) instanceof PbkdfCryptoKey)) { - throw new TypeError("key: Is not PBKDF CryptoKey"); - } - } -} - -class HmacCryptoKey extends CryptoKey { - get alg() { - const hash = this.algorithm.hash.name.toUpperCase(); - return `HS${hash.replace("SHA-", "")}`; - } - set alg(value) { - } -} -__decorate([ - JsonProp({ name: "k", converter: JsonBase64UrlConverter }) -], HmacCryptoKey.prototype, "data", void 0); - -class HmacProvider extends HmacProvider$1 { - async onGenerateKey(algorithm, extractable, keyUsages) { - const length = (algorithm.length || this.getDefaultLength(algorithm.hash.name)) >> 3 << 3; - const key = new HmacCryptoKey(); - key.algorithm = { - ...algorithm, - length, - name: this.name, - }; - key.extractable = extractable; - key.usages = keyUsages; - key.data = crypto__default__default.randomBytes(length >> 3); - return setCryptoKey(key); - } - async onSign(algorithm, key, data) { - const cryptoAlg = ShaCrypto.getAlgorithmName(key.algorithm.hash); - const hmac = crypto__default__default.createHmac(cryptoAlg, getCryptoKey(key).data) - .update(Buffer.from(data)).digest(); - return new Uint8Array(hmac).buffer; - } - async onVerify(algorithm, key, signature, data) { - const cryptoAlg = ShaCrypto.getAlgorithmName(key.algorithm.hash); - const hmac = crypto__default__default.createHmac(cryptoAlg, getCryptoKey(key).data) - .update(Buffer.from(data)).digest(); - return hmac.compare(Buffer.from(signature)) === 0; - } - async onImportKey(format, keyData, algorithm, extractable, keyUsages) { - let key; - switch (format.toLowerCase()) { - case "jwk": - key = JsonParser.fromJSON(keyData, { targetSchema: HmacCryptoKey }); - break; - case "raw": - key = new HmacCryptoKey(); - key.data = Buffer.from(keyData); - break; - default: - throw new OperationError("format: Must be 'jwk' or 'raw'"); - } - key.algorithm = { - hash: { name: algorithm.hash.name }, - name: this.name, - length: key.data.length << 3, - }; - key.extractable = extractable; - key.usages = keyUsages; - return setCryptoKey(key); - } - async onExportKey(format, key) { - switch (format.toLowerCase()) { - case "jwk": - return JsonSerializer.toJSON(getCryptoKey(key)); - case "raw": - return new Uint8Array(getCryptoKey(key).data).buffer; - default: - throw new OperationError("format: Must be 'jwk' or 'raw'"); - } - } - checkCryptoKey(key, keyUsage) { - super.checkCryptoKey(key, keyUsage); - if (!(getCryptoKey(key) instanceof HmacCryptoKey)) { - throw new TypeError("key: Is not HMAC CryptoKey"); - } - } -} - -class HkdfCryptoKey extends CryptoKey { -} - -class HkdfProvider extends HkdfProvider$1 { - async onImportKey(format, keyData, algorithm, extractable, keyUsages) { - if (format.toLowerCase() !== "raw") { - throw new OperationError("Operation not supported"); - } - const key = new HkdfCryptoKey(); - key.data = Buffer.from(keyData); - key.algorithm = { name: this.name }; - key.extractable = extractable; - key.usages = keyUsages; - return setCryptoKey(key); - } - async onDeriveBits(params, baseKey, length) { - const hash = params.hash.name.replace("-", ""); - const hashLength = crypto__default__default.createHash(hash).digest().length; - const byteLength = length / 8; - const info = BufferSourceConverter.toUint8Array(params.info); - const PRK = crypto__default__default.createHmac(hash, BufferSourceConverter.toUint8Array(params.salt)) - .update(BufferSourceConverter.toUint8Array(getCryptoKey(baseKey).data)) - .digest(); - const blocks = [Buffer.alloc(0)]; - const blockCount = Math.ceil(byteLength / hashLength) + 1; - for (let i = 1; i < blockCount; ++i) { - blocks.push(crypto__default__default.createHmac(hash, PRK) - .update(Buffer.concat([blocks[i - 1], info, Buffer.from([i])])) - .digest()); - } - return Buffer.concat(blocks).slice(0, byteLength); - } - checkCryptoKey(key, keyUsage) { - super.checkCryptoKey(key, keyUsage); - if (!(getCryptoKey(key) instanceof HkdfCryptoKey)) { - throw new TypeError("key: Is not HKDF CryptoKey"); - } - } -} - -class ShakeCrypto { - static digest(algorithm, data) { - const hash = crypto__default__default.createHash(algorithm.name.toLowerCase(), { outputLength: algorithm.length }) - .update(Buffer.from(data)).digest(); - return new Uint8Array(hash).buffer; - } -} - -class Shake128Provider extends Shake128Provider$1 { - async onDigest(algorithm, data) { - return ShakeCrypto.digest(algorithm, data); - } -} - -class Shake256Provider extends Shake256Provider$1 { - async onDigest(algorithm, data) { - return ShakeCrypto.digest(algorithm, data); - } -} - -class SubtleCrypto extends SubtleCrypto$1 { - constructor() { - var _a; - super(); - this.providers.set(new AesCbcProvider()); - this.providers.set(new AesCtrProvider()); - this.providers.set(new AesGcmProvider()); - this.providers.set(new AesCmacProvider()); - this.providers.set(new AesKwProvider()); - this.providers.set(new AesEcbProvider()); - this.providers.set(new DesCbcProvider()); - this.providers.set(new DesEde3CbcProvider()); - this.providers.set(new RsaSsaProvider()); - this.providers.set(new RsaPssProvider()); - this.providers.set(new RsaOaepProvider()); - this.providers.set(new RsaEsProvider()); - this.providers.set(new EcdsaProvider()); - this.providers.set(new EcdhProvider()); - this.providers.set(new Sha1Provider()); - this.providers.set(new Sha256Provider()); - this.providers.set(new Sha384Provider()); - this.providers.set(new Sha512Provider()); - this.providers.set(new Pbkdf2Provider()); - this.providers.set(new HmacProvider()); - this.providers.set(new HkdfProvider()); - const nodeMajorVersion = (_a = /^v(\d+)/.exec(process$1.version)) === null || _a === void 0 ? void 0 : _a[1]; - if (nodeMajorVersion && parseInt(nodeMajorVersion, 10) >= 12) { - this.providers.set(new Shake128Provider()); - this.providers.set(new Shake256Provider()); - } - const hashes = crypto__default.getHashes(); - if (hashes.includes("sha3-256")) { - this.providers.set(new Sha3256Provider()); - } - if (hashes.includes("sha3-384")) { - this.providers.set(new Sha3384Provider()); - } - if (hashes.includes("sha3-512")) { - this.providers.set(new Sha3512Provider()); - } - if (nodeMajorVersion && parseInt(nodeMajorVersion, 10) >= 14) { - this.providers.set(new EdDsaProvider()); - this.providers.set(new EcdhEsProvider()); - } - } -} - -class Crypto extends Crypto$1 { - constructor() { - super(...arguments); - this.subtle = new SubtleCrypto(); - } - getRandomValues(array) { - if (!ArrayBuffer.isView(array)) { - throw new TypeError("Failed to execute 'getRandomValues' on 'Crypto': parameter 1 is not of type 'ArrayBufferView'"); - } - const buffer = Buffer.from(array.buffer, array.byteOffset, array.byteLength); - crypto__default__default.randomFillSync(buffer); - return array; - } -} - -var webcrypto_es = /*#__PURE__*/Object.freeze({ - __proto__: null, - Crypto: Crypto, - CryptoKey: CryptoKey$1 -}); - -var require$$8 = /*@__PURE__*/getAugmentedNamespace(webcrypto_es); - -var utils$1; -var hasRequiredUtils$1; - -function requireUtils$1 () { - if (hasRequiredUtils$1) return utils$1; - hasRequiredUtils$1 = 1; - - function parseContentType(str) { - if (str.length === 0) - return; - - const params = Object.create(null); - let i = 0; - - // Parse type - for (; i < str.length; ++i) { - const code = str.charCodeAt(i); - if (TOKEN[code] !== 1) { - if (code !== 47/* '/' */ || i === 0) - return; - break; - } - } - // Check for type without subtype - if (i === str.length) - return; - - const type = str.slice(0, i).toLowerCase(); - - // Parse subtype - const subtypeStart = ++i; - for (; i < str.length; ++i) { - const code = str.charCodeAt(i); - if (TOKEN[code] !== 1) { - // Make sure we have a subtype - if (i === subtypeStart) - return; - - if (parseContentTypeParams(str, i, params) === undefined) - return; - break; - } - } - // Make sure we have a subtype - if (i === subtypeStart) - return; - - const subtype = str.slice(subtypeStart, i).toLowerCase(); - - return { type, subtype, params }; - } - - function parseContentTypeParams(str, i, params) { - while (i < str.length) { - // Consume whitespace - for (; i < str.length; ++i) { - const code = str.charCodeAt(i); - if (code !== 32/* ' ' */ && code !== 9/* '\t' */) - break; - } - - // Ended on whitespace - if (i === str.length) - break; - - // Check for malformed parameter - if (str.charCodeAt(i++) !== 59/* ';' */) - return; - - // Consume whitespace - for (; i < str.length; ++i) { - const code = str.charCodeAt(i); - if (code !== 32/* ' ' */ && code !== 9/* '\t' */) - break; - } - - // Ended on whitespace (malformed) - if (i === str.length) - return; - - let name; - const nameStart = i; - // Parse parameter name - for (; i < str.length; ++i) { - const code = str.charCodeAt(i); - if (TOKEN[code] !== 1) { - if (code !== 61/* '=' */) - return; - break; - } - } - - // No value (malformed) - if (i === str.length) - return; - - name = str.slice(nameStart, i); - ++i; // Skip over '=' - - // No value (malformed) - if (i === str.length) - return; - - let value = ''; - let valueStart; - if (str.charCodeAt(i) === 34/* '"' */) { - valueStart = ++i; - let escaping = false; - // Parse quoted value - for (; i < str.length; ++i) { - const code = str.charCodeAt(i); - if (code === 92/* '\\' */) { - if (escaping) { - valueStart = i; - escaping = false; - } else { - value += str.slice(valueStart, i); - escaping = true; - } - continue; - } - if (code === 34/* '"' */) { - if (escaping) { - valueStart = i; - escaping = false; - continue; - } - value += str.slice(valueStart, i); - break; - } - if (escaping) { - valueStart = i - 1; - escaping = false; - } - // Invalid unescaped quoted character (malformed) - if (QDTEXT[code] !== 1) - return; - } - - // No end quote (malformed) - if (i === str.length) - return; - - ++i; // Skip over double quote - } else { - valueStart = i; - // Parse unquoted value - for (; i < str.length; ++i) { - const code = str.charCodeAt(i); - if (TOKEN[code] !== 1) { - // No value (malformed) - if (i === valueStart) - return; - break; - } - } - value = str.slice(valueStart, i); - } - - name = name.toLowerCase(); - if (params[name] === undefined) - params[name] = value; - } - - return params; - } - - function parseDisposition(str, defDecoder) { - if (str.length === 0) - return; - - const params = Object.create(null); - let i = 0; - - for (; i < str.length; ++i) { - const code = str.charCodeAt(i); - if (TOKEN[code] !== 1) { - if (parseDispositionParams(str, i, params, defDecoder) === undefined) - return; - break; - } - } - - const type = str.slice(0, i).toLowerCase(); - - return { type, params }; - } - - function parseDispositionParams(str, i, params, defDecoder) { - while (i < str.length) { - // Consume whitespace - for (; i < str.length; ++i) { - const code = str.charCodeAt(i); - if (code !== 32/* ' ' */ && code !== 9/* '\t' */) - break; - } - - // Ended on whitespace - if (i === str.length) - break; - - // Check for malformed parameter - if (str.charCodeAt(i++) !== 59/* ';' */) - return; - - // Consume whitespace - for (; i < str.length; ++i) { - const code = str.charCodeAt(i); - if (code !== 32/* ' ' */ && code !== 9/* '\t' */) - break; - } - - // Ended on whitespace (malformed) - if (i === str.length) - return; - - let name; - const nameStart = i; - // Parse parameter name - for (; i < str.length; ++i) { - const code = str.charCodeAt(i); - if (TOKEN[code] !== 1) { - if (code === 61/* '=' */) - break; - return; - } - } - - // No value (malformed) - if (i === str.length) - return; - - let value = ''; - let valueStart; - let charset; - //~ let lang; - name = str.slice(nameStart, i); - if (name.charCodeAt(name.length - 1) === 42/* '*' */) { - // Extended value - - const charsetStart = ++i; - // Parse charset name - for (; i < str.length; ++i) { - const code = str.charCodeAt(i); - if (CHARSET[code] !== 1) { - if (code !== 39/* '\'' */) - return; - break; - } - } - - // Incomplete charset (malformed) - if (i === str.length) - return; - - charset = str.slice(charsetStart, i); - ++i; // Skip over the '\'' - - //~ const langStart = ++i; - // Parse language name - for (; i < str.length; ++i) { - const code = str.charCodeAt(i); - if (code === 39/* '\'' */) - break; - } - - // Incomplete language (malformed) - if (i === str.length) - return; - - //~ lang = str.slice(langStart, i); - ++i; // Skip over the '\'' - - // No value (malformed) - if (i === str.length) - return; - - valueStart = i; - - let encode = 0; - // Parse value - for (; i < str.length; ++i) { - const code = str.charCodeAt(i); - if (EXTENDED_VALUE[code] !== 1) { - if (code === 37/* '%' */) { - let hexUpper; - let hexLower; - if (i + 2 < str.length - && (hexUpper = HEX_VALUES[str.charCodeAt(i + 1)]) !== -1 - && (hexLower = HEX_VALUES[str.charCodeAt(i + 2)]) !== -1) { - const byteVal = (hexUpper << 4) + hexLower; - value += str.slice(valueStart, i); - value += String.fromCharCode(byteVal); - i += 2; - valueStart = i + 1; - if (byteVal >= 128) - encode = 2; - else if (encode === 0) - encode = 1; - continue; - } - // '%' disallowed in non-percent encoded contexts (malformed) - return; - } - break; - } - } - - value += str.slice(valueStart, i); - value = convertToUTF8(value, charset, encode); - if (value === undefined) - return; - } else { - // Non-extended value - - ++i; // Skip over '=' - - // No value (malformed) - if (i === str.length) - return; - - if (str.charCodeAt(i) === 34/* '"' */) { - valueStart = ++i; - let escaping = false; - // Parse quoted value - for (; i < str.length; ++i) { - const code = str.charCodeAt(i); - if (code === 92/* '\\' */) { - if (escaping) { - valueStart = i; - escaping = false; - } else { - value += str.slice(valueStart, i); - escaping = true; - } - continue; - } - if (code === 34/* '"' */) { - if (escaping) { - valueStart = i; - escaping = false; - continue; - } - value += str.slice(valueStart, i); - break; - } - if (escaping) { - valueStart = i - 1; - escaping = false; - } - // Invalid unescaped quoted character (malformed) - if (QDTEXT[code] !== 1) - return; - } - - // No end quote (malformed) - if (i === str.length) - return; - - ++i; // Skip over double quote - } else { - valueStart = i; - // Parse unquoted value - for (; i < str.length; ++i) { - const code = str.charCodeAt(i); - if (TOKEN[code] !== 1) { - // No value (malformed) - if (i === valueStart) - return; - break; - } - } - value = str.slice(valueStart, i); - } - - value = defDecoder(value, 2); - if (value === undefined) - return; - } - - name = name.toLowerCase(); - if (params[name] === undefined) - params[name] = value; - } - - return params; - } - - function getDecoder(charset) { - let lc; - while (true) { - switch (charset) { - case 'utf-8': - case 'utf8': - return decoders.utf8; - case 'latin1': - case 'ascii': // TODO: Make these a separate, strict decoder? - case 'us-ascii': - case 'iso-8859-1': - case 'iso8859-1': - case 'iso88591': - case 'iso_8859-1': - case 'windows-1252': - case 'iso_8859-1:1987': - case 'cp1252': - case 'x-cp1252': - return decoders.latin1; - case 'utf16le': - case 'utf-16le': - case 'ucs2': - case 'ucs-2': - return decoders.utf16le; - case 'base64': - return decoders.base64; - default: - if (lc === undefined) { - lc = true; - charset = charset.toLowerCase(); - continue; - } - return decoders.other.bind(charset); - } - } - } - - const decoders = { - utf8: (data, hint) => { - if (data.length === 0) - return ''; - if (typeof data === 'string') { - // If `data` never had any percent-encoded bytes or never had any that - // were outside of the ASCII range, then we can safely just return the - // input since UTF-8 is ASCII compatible - if (hint < 2) - return data; - - data = Buffer.from(data, 'latin1'); - } - return data.utf8Slice(0, data.length); - }, - - latin1: (data, hint) => { - if (data.length === 0) - return ''; - if (typeof data === 'string') - return data; - return data.latin1Slice(0, data.length); - }, - - utf16le: (data, hint) => { - if (data.length === 0) - return ''; - if (typeof data === 'string') - data = Buffer.from(data, 'latin1'); - return data.ucs2Slice(0, data.length); - }, - - base64: (data, hint) => { - if (data.length === 0) - return ''; - if (typeof data === 'string') - data = Buffer.from(data, 'latin1'); - return data.base64Slice(0, data.length); - }, - - other: (data, hint) => { - if (data.length === 0) - return ''; - if (typeof data === 'string') - data = Buffer.from(data, 'latin1'); - try { - const decoder = new TextDecoder(this); - return decoder.decode(data); - } catch {} - }, - }; - - function convertToUTF8(data, charset, hint) { - const decode = getDecoder(charset); - if (decode) - return decode(data, hint); - } - - function basename(path) { - if (typeof path !== 'string') - return ''; - for (let i = path.length - 1; i >= 0; --i) { - switch (path.charCodeAt(i)) { - case 0x2F: // '/' - case 0x5C: // '\' - path = path.slice(i + 1); - return (path === '..' || path === '.' ? '' : path); - } - } - return (path === '..' || path === '.' ? '' : path); - } - - const TOKEN = [ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - ]; - - const QDTEXT = [ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - ]; - - const CHARSET = [ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - ]; - - const EXTENDED_VALUE = [ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - ]; - - /* eslint-disable no-multi-spaces */ - const HEX_VALUES = [ - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, -1, -1, - -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - ]; - /* eslint-enable no-multi-spaces */ - - utils$1 = { - basename, - convertToUTF8, - getDecoder, - parseContentType, - parseDisposition, - }; - return utils$1; -} - -var sbmh; -var hasRequiredSbmh; - -function requireSbmh () { - if (hasRequiredSbmh) return sbmh; - hasRequiredSbmh = 1; - /* - Based heavily on the Streaming Boyer-Moore-Horspool C++ implementation - by Hongli Lai at: https://github.com/FooBarWidget/boyer-moore-horspool - */ - function memcmp(buf1, pos1, buf2, pos2, num) { - for (let i = 0; i < num; ++i) { - if (buf1[pos1 + i] !== buf2[pos2 + i]) - return false; - } - return true; - } - - class SBMH { - constructor(needle, cb) { - if (typeof cb !== 'function') - throw new Error('Missing match callback'); - - if (typeof needle === 'string') - needle = Buffer.from(needle); - else if (!Buffer.isBuffer(needle)) - throw new Error(`Expected Buffer for needle, got ${typeof needle}`); - - const needleLen = needle.length; - - this.maxMatches = Infinity; - this.matches = 0; - - this._cb = cb; - this._lookbehindSize = 0; - this._needle = needle; - this._bufPos = 0; - - this._lookbehind = Buffer.allocUnsafe(needleLen); - - // Initialize occurrence table. - this._occ = [ - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, - needleLen, needleLen, needleLen, needleLen - ]; - - // Populate occurrence table with analysis of the needle, ignoring the last - // letter. - if (needleLen > 1) { - for (let i = 0; i < needleLen - 1; ++i) - this._occ[needle[i]] = needleLen - 1 - i; - } - } - - reset() { - this.matches = 0; - this._lookbehindSize = 0; - this._bufPos = 0; - } - - push(chunk, pos) { - let result; - if (!Buffer.isBuffer(chunk)) - chunk = Buffer.from(chunk, 'latin1'); - const chunkLen = chunk.length; - this._bufPos = pos || 0; - while (result !== chunkLen && this.matches < this.maxMatches) - result = feed(this, chunk); - return result; - } - - destroy() { - const lbSize = this._lookbehindSize; - if (lbSize) - this._cb(false, this._lookbehind, 0, lbSize, false); - this.reset(); - } - } - - function feed(self, data) { - const len = data.length; - const needle = self._needle; - const needleLen = needle.length; - - // Positive: points to a position in `data` - // pos == 3 points to data[3] - // Negative: points to a position in the lookbehind buffer - // pos == -2 points to lookbehind[lookbehindSize - 2] - let pos = -self._lookbehindSize; - const lastNeedleCharPos = needleLen - 1; - const lastNeedleChar = needle[lastNeedleCharPos]; - const end = len - needleLen; - const occ = self._occ; - const lookbehind = self._lookbehind; - - if (pos < 0) { - // Lookbehind buffer is not empty. Perform Boyer-Moore-Horspool - // search with character lookup code that considers both the - // lookbehind buffer and the current round's haystack data. - // - // Loop until - // there is a match. - // or until - // we've moved past the position that requires the - // lookbehind buffer. In this case we switch to the - // optimized loop. - // or until - // the character to look at lies outside the haystack. - while (pos < 0 && pos <= end) { - const nextPos = pos + lastNeedleCharPos; - const ch = (nextPos < 0 - ? lookbehind[self._lookbehindSize + nextPos] - : data[nextPos]); - - if (ch === lastNeedleChar - && matchNeedle(self, data, pos, lastNeedleCharPos)) { - self._lookbehindSize = 0; - ++self.matches; - if (pos > -self._lookbehindSize) - self._cb(true, lookbehind, 0, self._lookbehindSize + pos, false); - else - self._cb(true, undefined, 0, 0, true); - - return (self._bufPos = pos + needleLen); - } - - pos += occ[ch]; - } - - // No match. - - // There's too few data for Boyer-Moore-Horspool to run, - // so let's use a different algorithm to skip as much as - // we can. - // Forward pos until - // the trailing part of lookbehind + data - // looks like the beginning of the needle - // or until - // pos == 0 - while (pos < 0 && !matchNeedle(self, data, pos, len - pos)) - ++pos; - - if (pos < 0) { - // Cut off part of the lookbehind buffer that has - // been processed and append the entire haystack - // into it. - const bytesToCutOff = self._lookbehindSize + pos; - - if (bytesToCutOff > 0) { - // The cut off data is guaranteed not to contain the needle. - self._cb(false, lookbehind, 0, bytesToCutOff, false); - } - - self._lookbehindSize -= bytesToCutOff; - lookbehind.copy(lookbehind, 0, bytesToCutOff, self._lookbehindSize); - lookbehind.set(data, self._lookbehindSize); - self._lookbehindSize += len; - - self._bufPos = len; - return len; - } - - // Discard lookbehind buffer. - self._cb(false, lookbehind, 0, self._lookbehindSize, false); - self._lookbehindSize = 0; - } - - pos += self._bufPos; - - const firstNeedleChar = needle[0]; - - // Lookbehind buffer is now empty. Perform Boyer-Moore-Horspool - // search with optimized character lookup code that only considers - // the current round's haystack data. - while (pos <= end) { - const ch = data[pos + lastNeedleCharPos]; - - if (ch === lastNeedleChar - && data[pos] === firstNeedleChar - && memcmp(needle, 0, data, pos, lastNeedleCharPos)) { - ++self.matches; - if (pos > 0) - self._cb(true, data, self._bufPos, pos, true); - else - self._cb(true, undefined, 0, 0, true); - - return (self._bufPos = pos + needleLen); - } - - pos += occ[ch]; - } - - // There was no match. If there's trailing haystack data that we cannot - // match yet using the Boyer-Moore-Horspool algorithm (because the trailing - // data is less than the needle size) then match using a modified - // algorithm that starts matching from the beginning instead of the end. - // Whatever trailing data is left after running this algorithm is added to - // the lookbehind buffer. - while (pos < len) { - if (data[pos] !== firstNeedleChar - || !memcmp(data, pos, needle, 0, len - pos)) { - ++pos; - continue; - } - data.copy(lookbehind, 0, pos, len); - self._lookbehindSize = len - pos; - break; - } - - // Everything until `pos` is guaranteed not to contain needle data. - if (pos > 0) - self._cb(false, data, self._bufPos, pos < len ? pos : len, true); - - self._bufPos = len; - return len; - } - - function matchNeedle(self, data, pos, len) { - const lb = self._lookbehind; - const lbSize = self._lookbehindSize; - const needle = self._needle; - - for (let i = 0; i < len; ++i, ++pos) { - const ch = (pos < 0 ? lb[lbSize + pos] : data[pos]); - if (ch !== needle[i]) - return false; - } - return true; - } - - sbmh = SBMH; - return sbmh; -} - -var multipart; -var hasRequiredMultipart; - -function requireMultipart () { - if (hasRequiredMultipart) return multipart; - hasRequiredMultipart = 1; - - const { Readable, Writable } = Stream$2; - - const StreamSearch = requireSbmh(); - - const { - basename, - convertToUTF8, - getDecoder, - parseContentType, - parseDisposition, - } = requireUtils$1(); - - const BUF_CRLF = Buffer.from('\r\n'); - const BUF_CR = Buffer.from('\r'); - const BUF_DASH = Buffer.from('-'); - - function noop() {} - - const MAX_HEADER_PAIRS = 2000; // From node - const MAX_HEADER_SIZE = 16 * 1024; // From node (its default value) - - const HPARSER_NAME = 0; - const HPARSER_PRE_OWS = 1; - const HPARSER_VALUE = 2; - class HeaderParser { - constructor(cb) { - this.header = Object.create(null); - this.pairCount = 0; - this.byteCount = 0; - this.state = HPARSER_NAME; - this.name = ''; - this.value = ''; - this.crlf = 0; - this.cb = cb; - } - - reset() { - this.header = Object.create(null); - this.pairCount = 0; - this.byteCount = 0; - this.state = HPARSER_NAME; - this.name = ''; - this.value = ''; - this.crlf = 0; - } - - push(chunk, pos, end) { - let start = pos; - while (pos < end) { - switch (this.state) { - case HPARSER_NAME: { - let done = false; - for (; pos < end; ++pos) { - if (this.byteCount === MAX_HEADER_SIZE) - return -1; - ++this.byteCount; - const code = chunk[pos]; - if (TOKEN[code] !== 1) { - if (code !== 58/* ':' */) - return -1; - this.name += chunk.latin1Slice(start, pos); - if (this.name.length === 0) - return -1; - ++pos; - done = true; - this.state = HPARSER_PRE_OWS; - break; - } - } - if (!done) { - this.name += chunk.latin1Slice(start, pos); - break; - } - // FALLTHROUGH - } - case HPARSER_PRE_OWS: { - // Skip optional whitespace - let done = false; - for (; pos < end; ++pos) { - if (this.byteCount === MAX_HEADER_SIZE) - return -1; - ++this.byteCount; - const code = chunk[pos]; - if (code !== 32/* ' ' */ && code !== 9/* '\t' */) { - start = pos; - done = true; - this.state = HPARSER_VALUE; - break; - } - } - if (!done) - break; - // FALLTHROUGH - } - case HPARSER_VALUE: - switch (this.crlf) { - case 0: // Nothing yet - for (; pos < end; ++pos) { - if (this.byteCount === MAX_HEADER_SIZE) - return -1; - ++this.byteCount; - const code = chunk[pos]; - if (FIELD_VCHAR[code] !== 1) { - if (code !== 13/* '\r' */) - return -1; - ++this.crlf; - break; - } - } - this.value += chunk.latin1Slice(start, pos++); - break; - case 1: // Received CR - if (this.byteCount === MAX_HEADER_SIZE) - return -1; - ++this.byteCount; - if (chunk[pos++] !== 10/* '\n' */) - return -1; - ++this.crlf; - break; - case 2: { // Received CR LF - if (this.byteCount === MAX_HEADER_SIZE) - return -1; - ++this.byteCount; - const code = chunk[pos]; - if (code === 32/* ' ' */ || code === 9/* '\t' */) { - // Folded value - start = pos; - this.crlf = 0; - } else { - if (++this.pairCount < MAX_HEADER_PAIRS) { - this.name = this.name.toLowerCase(); - if (this.header[this.name] === undefined) - this.header[this.name] = [this.value]; - else - this.header[this.name].push(this.value); - } - if (code === 13/* '\r' */) { - ++this.crlf; - ++pos; - } else { - // Assume start of next header field name - start = pos; - this.crlf = 0; - this.state = HPARSER_NAME; - this.name = ''; - this.value = ''; - } - } - break; - } - case 3: { // Received CR LF CR - if (this.byteCount === MAX_HEADER_SIZE) - return -1; - ++this.byteCount; - if (chunk[pos++] !== 10/* '\n' */) - return -1; - // End of header - const header = this.header; - this.reset(); - this.cb(header); - return pos; - } - } - break; - } - } - - return pos; - } - } - - class FileStream extends Readable { - constructor(opts, owner) { - super(opts); - this.truncated = false; - this._readcb = null; - this.once('end', () => { - // We need to make sure that we call any outstanding _writecb() that is - // associated with this file so that processing of the rest of the form - // can continue. This may not happen if the file stream ends right after - // backpressure kicks in, so we force it here. - this._read(); - if (--owner._fileEndsLeft === 0 && owner._finalcb) { - const cb = owner._finalcb; - owner._finalcb = null; - // Make sure other 'end' event handlers get a chance to be executed - // before busboy's 'finish' event is emitted - process.nextTick(cb); - } - }); - } - _read(n) { - const cb = this._readcb; - if (cb) { - this._readcb = null; - cb(); - } - } - } - - const ignoreData = { - push: (chunk, pos) => {}, - destroy: () => {}, - }; - - function callAndUnsetCb(self, err) { - const cb = self._writecb; - self._writecb = null; - if (err) - self.destroy(err); - else if (cb) - cb(); - } - - function nullDecoder(val, hint) { - return val; - } - - class Multipart extends Writable { - constructor(cfg) { - const streamOpts = { - autoDestroy: true, - emitClose: true, - highWaterMark: (typeof cfg.highWaterMark === 'number' - ? cfg.highWaterMark - : undefined), - }; - super(streamOpts); - - if (!cfg.conType.params || typeof cfg.conType.params.boundary !== 'string') - throw new Error('Multipart: Boundary not found'); - - const boundary = cfg.conType.params.boundary; - const paramDecoder = (typeof cfg.defParamCharset === 'string' - && cfg.defParamCharset - ? getDecoder(cfg.defParamCharset) - : nullDecoder); - const defCharset = (cfg.defCharset || 'utf8'); - const preservePath = cfg.preservePath; - const fileOpts = { - autoDestroy: true, - emitClose: true, - highWaterMark: (typeof cfg.fileHwm === 'number' - ? cfg.fileHwm - : undefined), - }; - - const limits = cfg.limits; - const fieldSizeLimit = (limits && typeof limits.fieldSize === 'number' - ? limits.fieldSize - : 1 * 1024 * 1024); - const fileSizeLimit = (limits && typeof limits.fileSize === 'number' - ? limits.fileSize - : Infinity); - const filesLimit = (limits && typeof limits.files === 'number' - ? limits.files - : Infinity); - const fieldsLimit = (limits && typeof limits.fields === 'number' - ? limits.fields - : Infinity); - const partsLimit = (limits && typeof limits.parts === 'number' - ? limits.parts - : Infinity); - - let parts = -1; // Account for initial boundary - let fields = 0; - let files = 0; - let skipPart = false; - - this._fileEndsLeft = 0; - this._fileStream = undefined; - this._complete = false; - let fileSize = 0; - - let field; - let fieldSize = 0; - let partCharset; - let partEncoding; - let partType; - let partName; - let partTruncated = false; - - let hitFilesLimit = false; - let hitFieldsLimit = false; - - this._hparser = null; - const hparser = new HeaderParser((header) => { - this._hparser = null; - skipPart = false; - - partType = 'text/plain'; - partCharset = defCharset; - partEncoding = '7bit'; - partName = undefined; - partTruncated = false; - - let filename; - if (!header['content-disposition']) { - skipPart = true; - return; - } - - const disp = parseDisposition(header['content-disposition'][0], - paramDecoder); - if (!disp || disp.type !== 'form-data') { - skipPart = true; - return; - } - - if (disp.params) { - if (disp.params.name) - partName = disp.params.name; - - if (disp.params['filename*']) - filename = disp.params['filename*']; - else if (disp.params.filename) - filename = disp.params.filename; - - if (filename !== undefined && !preservePath) - filename = basename(filename); - } - - if (header['content-type']) { - const conType = parseContentType(header['content-type'][0]); - if (conType) { - partType = `${conType.type}/${conType.subtype}`; - if (conType.params && typeof conType.params.charset === 'string') - partCharset = conType.params.charset.toLowerCase(); - } - } - - if (header['content-transfer-encoding']) - partEncoding = header['content-transfer-encoding'][0].toLowerCase(); - - if (partType === 'application/octet-stream' || filename !== undefined) { - // File - - if (files === filesLimit) { - if (!hitFilesLimit) { - hitFilesLimit = true; - this.emit('filesLimit'); - } - skipPart = true; - return; - } - ++files; - - if (this.listenerCount('file') === 0) { - skipPart = true; - return; - } - - fileSize = 0; - this._fileStream = new FileStream(fileOpts, this); - ++this._fileEndsLeft; - this.emit( - 'file', - partName, - this._fileStream, - { filename, - encoding: partEncoding, - mimeType: partType } - ); - } else { - // Non-file - - if (fields === fieldsLimit) { - if (!hitFieldsLimit) { - hitFieldsLimit = true; - this.emit('fieldsLimit'); - } - skipPart = true; - return; - } - ++fields; - - if (this.listenerCount('field') === 0) { - skipPart = true; - return; - } - - field = []; - fieldSize = 0; - } - }); - - let matchPostBoundary = 0; - const ssCb = (isMatch, data, start, end, isDataSafe) => { - retrydata: - while (data) { - if (this._hparser !== null) { - const ret = this._hparser.push(data, start, end); - if (ret === -1) { - this._hparser = null; - hparser.reset(); - this.emit('error', new Error('Malformed part header')); - break; - } - start = ret; - } - - if (start === end) - break; - - if (matchPostBoundary !== 0) { - if (matchPostBoundary === 1) { - switch (data[start]) { - case 45: // '-' - // Try matching '--' after boundary - matchPostBoundary = 2; - ++start; - break; - case 13: // '\r' - // Try matching CR LF before header - matchPostBoundary = 3; - ++start; - break; - default: - matchPostBoundary = 0; - } - if (start === end) - return; - } - - if (matchPostBoundary === 2) { - matchPostBoundary = 0; - if (data[start] === 45/* '-' */) { - // End of multipart data - this._complete = true; - this._bparser = ignoreData; - return; - } - // We saw something other than '-', so put the dash we consumed - // "back" - const writecb = this._writecb; - this._writecb = noop; - ssCb(false, BUF_DASH, 0, 1, false); - this._writecb = writecb; - } else if (matchPostBoundary === 3) { - matchPostBoundary = 0; - if (data[start] === 10/* '\n' */) { - ++start; - if (parts >= partsLimit) - break; - // Prepare the header parser - this._hparser = hparser; - if (start === end) - break; - // Process the remaining data as a header - continue retrydata; - } else { - // We saw something other than LF, so put the CR we consumed - // "back" - const writecb = this._writecb; - this._writecb = noop; - ssCb(false, BUF_CR, 0, 1, false); - this._writecb = writecb; - } - } - } - - if (!skipPart) { - if (this._fileStream) { - let chunk; - const actualLen = Math.min(end - start, fileSizeLimit - fileSize); - if (!isDataSafe) { - chunk = Buffer.allocUnsafe(actualLen); - data.copy(chunk, 0, start, start + actualLen); - } else { - chunk = data.slice(start, start + actualLen); - } - - fileSize += chunk.length; - if (fileSize === fileSizeLimit) { - if (chunk.length > 0) - this._fileStream.push(chunk); - this._fileStream.emit('limit'); - this._fileStream.truncated = true; - skipPart = true; - } else if (!this._fileStream.push(chunk)) { - if (this._writecb) - this._fileStream._readcb = this._writecb; - this._writecb = null; - } - } else if (field !== undefined) { - let chunk; - const actualLen = Math.min( - end - start, - fieldSizeLimit - fieldSize - ); - if (!isDataSafe) { - chunk = Buffer.allocUnsafe(actualLen); - data.copy(chunk, 0, start, start + actualLen); - } else { - chunk = data.slice(start, start + actualLen); - } - - fieldSize += actualLen; - field.push(chunk); - if (fieldSize === fieldSizeLimit) { - skipPart = true; - partTruncated = true; - } - } - } - - break; - } - - if (isMatch) { - matchPostBoundary = 1; - - if (this._fileStream) { - // End the active file stream if the previous part was a file - this._fileStream.push(null); - this._fileStream = null; - } else if (field !== undefined) { - let data; - switch (field.length) { - case 0: - data = ''; - break; - case 1: - data = convertToUTF8(field[0], partCharset, 0); - break; - default: - data = convertToUTF8( - Buffer.concat(field, fieldSize), - partCharset, - 0 - ); - } - field = undefined; - fieldSize = 0; - this.emit( - 'field', - partName, - data, - { nameTruncated: false, - valueTruncated: partTruncated, - encoding: partEncoding, - mimeType: partType } - ); - } - - if (++parts === partsLimit) - this.emit('partsLimit'); - } - }; - this._bparser = new StreamSearch(`\r\n--${boundary}`, ssCb); - - this._writecb = null; - this._finalcb = null; - - // Just in case there is no preamble - this.write(BUF_CRLF); - } - - static detect(conType) { - return (conType.type === 'multipart' && conType.subtype === 'form-data'); - } - - _write(chunk, enc, cb) { - this._writecb = cb; - this._bparser.push(chunk, 0); - if (this._writecb) - callAndUnsetCb(this); - } - - _destroy(err, cb) { - this._hparser = null; - this._bparser = ignoreData; - if (!err) - err = checkEndState(this); - const fileStream = this._fileStream; - if (fileStream) { - this._fileStream = null; - fileStream.destroy(err); - } - cb(err); - } - - _final(cb) { - this._bparser.destroy(); - if (!this._complete) - return cb(new Error('Unexpected end of form')); - if (this._fileEndsLeft) - this._finalcb = finalcb.bind(null, this, cb); - else - finalcb(this, cb); - } - } - - function finalcb(self, cb, err) { - if (err) - return cb(err); - err = checkEndState(self); - cb(err); - } - - function checkEndState(self) { - if (self._hparser) - return new Error('Malformed part header'); - const fileStream = self._fileStream; - if (fileStream) { - self._fileStream = null; - fileStream.destroy(new Error('Unexpected end of file')); - } - if (!self._complete) - return new Error('Unexpected end of form'); - } - - const TOKEN = [ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - ]; - - const FIELD_VCHAR = [ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - ]; - - multipart = Multipart; - return multipart; -} - -var urlencoded; -var hasRequiredUrlencoded; - -function requireUrlencoded () { - if (hasRequiredUrlencoded) return urlencoded; - hasRequiredUrlencoded = 1; - - const { Writable } = Stream$2; - - const { getDecoder } = requireUtils$1(); - - class URLEncoded extends Writable { - constructor(cfg) { - const streamOpts = { - autoDestroy: true, - emitClose: true, - highWaterMark: (typeof cfg.highWaterMark === 'number' - ? cfg.highWaterMark - : undefined), - }; - super(streamOpts); - - let charset = (cfg.defCharset || 'utf8'); - if (cfg.conType.params && typeof cfg.conType.params.charset === 'string') - charset = cfg.conType.params.charset; - - this.charset = charset; - - const limits = cfg.limits; - this.fieldSizeLimit = (limits && typeof limits.fieldSize === 'number' - ? limits.fieldSize - : 1 * 1024 * 1024); - this.fieldsLimit = (limits && typeof limits.fields === 'number' - ? limits.fields - : Infinity); - this.fieldNameSizeLimit = ( - limits && typeof limits.fieldNameSize === 'number' - ? limits.fieldNameSize - : 100 - ); - - this._inKey = true; - this._keyTrunc = false; - this._valTrunc = false; - this._bytesKey = 0; - this._bytesVal = 0; - this._fields = 0; - this._key = ''; - this._val = ''; - this._byte = -2; - this._lastPos = 0; - this._encode = 0; - this._decoder = getDecoder(charset); - } - - static detect(conType) { - return (conType.type === 'application' - && conType.subtype === 'x-www-form-urlencoded'); - } - - _write(chunk, enc, cb) { - if (this._fields >= this.fieldsLimit) - return cb(); - - let i = 0; - const len = chunk.length; - this._lastPos = 0; - - // Check if we last ended mid-percent-encoded byte - if (this._byte !== -2) { - i = readPctEnc(this, chunk, i, len); - if (i === -1) - return cb(new Error('Malformed urlencoded form')); - if (i >= len) - return cb(); - if (this._inKey) - ++this._bytesKey; - else - ++this._bytesVal; - } - - main: - while (i < len) { - if (this._inKey) { - // Parsing key - - i = skipKeyBytes(this, chunk, i, len); - - while (i < len) { - switch (chunk[i]) { - case 61: // '=' - if (this._lastPos < i) - this._key += chunk.latin1Slice(this._lastPos, i); - this._lastPos = ++i; - this._key = this._decoder(this._key, this._encode); - this._encode = 0; - this._inKey = false; - continue main; - case 38: // '&' - if (this._lastPos < i) - this._key += chunk.latin1Slice(this._lastPos, i); - this._lastPos = ++i; - this._key = this._decoder(this._key, this._encode); - this._encode = 0; - if (this._bytesKey > 0) { - this.emit( - 'field', - this._key, - '', - { nameTruncated: this._keyTrunc, - valueTruncated: false, - encoding: this.charset, - mimeType: 'text/plain' } - ); - } - this._key = ''; - this._val = ''; - this._keyTrunc = false; - this._valTrunc = false; - this._bytesKey = 0; - this._bytesVal = 0; - if (++this._fields >= this.fieldsLimit) { - this.emit('fieldsLimit'); - return cb(); - } - continue; - case 43: // '+' - if (this._lastPos < i) - this._key += chunk.latin1Slice(this._lastPos, i); - this._key += ' '; - this._lastPos = i + 1; - break; - case 37: // '%' - if (this._encode === 0) - this._encode = 1; - if (this._lastPos < i) - this._key += chunk.latin1Slice(this._lastPos, i); - this._lastPos = i + 1; - this._byte = -1; - i = readPctEnc(this, chunk, i + 1, len); - if (i === -1) - return cb(new Error('Malformed urlencoded form')); - if (i >= len) - return cb(); - ++this._bytesKey; - i = skipKeyBytes(this, chunk, i, len); - continue; - } - ++i; - ++this._bytesKey; - i = skipKeyBytes(this, chunk, i, len); - } - if (this._lastPos < i) - this._key += chunk.latin1Slice(this._lastPos, i); - } else { - // Parsing value - - i = skipValBytes(this, chunk, i, len); - - while (i < len) { - switch (chunk[i]) { - case 38: // '&' - if (this._lastPos < i) - this._val += chunk.latin1Slice(this._lastPos, i); - this._lastPos = ++i; - this._inKey = true; - this._val = this._decoder(this._val, this._encode); - this._encode = 0; - if (this._bytesKey > 0 || this._bytesVal > 0) { - this.emit( - 'field', - this._key, - this._val, - { nameTruncated: this._keyTrunc, - valueTruncated: this._valTrunc, - encoding: this.charset, - mimeType: 'text/plain' } - ); - } - this._key = ''; - this._val = ''; - this._keyTrunc = false; - this._valTrunc = false; - this._bytesKey = 0; - this._bytesVal = 0; - if (++this._fields >= this.fieldsLimit) { - this.emit('fieldsLimit'); - return cb(); - } - continue main; - case 43: // '+' - if (this._lastPos < i) - this._val += chunk.latin1Slice(this._lastPos, i); - this._val += ' '; - this._lastPos = i + 1; - break; - case 37: // '%' - if (this._encode === 0) - this._encode = 1; - if (this._lastPos < i) - this._val += chunk.latin1Slice(this._lastPos, i); - this._lastPos = i + 1; - this._byte = -1; - i = readPctEnc(this, chunk, i + 1, len); - if (i === -1) - return cb(new Error('Malformed urlencoded form')); - if (i >= len) - return cb(); - ++this._bytesVal; - i = skipValBytes(this, chunk, i, len); - continue; - } - ++i; - ++this._bytesVal; - i = skipValBytes(this, chunk, i, len); - } - if (this._lastPos < i) - this._val += chunk.latin1Slice(this._lastPos, i); - } - } - - cb(); - } - - _final(cb) { - if (this._byte !== -2) - return cb(new Error('Malformed urlencoded form')); - if (!this._inKey || this._bytesKey > 0 || this._bytesVal > 0) { - if (this._inKey) - this._key = this._decoder(this._key, this._encode); - else - this._val = this._decoder(this._val, this._encode); - this.emit( - 'field', - this._key, - this._val, - { nameTruncated: this._keyTrunc, - valueTruncated: this._valTrunc, - encoding: this.charset, - mimeType: 'text/plain' } - ); - } - cb(); - } - } - - function readPctEnc(self, chunk, pos, len) { - if (pos >= len) - return len; - - if (self._byte === -1) { - // We saw a '%' but no hex characters yet - const hexUpper = HEX_VALUES[chunk[pos++]]; - if (hexUpper === -1) - return -1; - - if (hexUpper >= 8) - self._encode = 2; // Indicate high bits detected - - if (pos < len) { - // Both hex characters are in this chunk - const hexLower = HEX_VALUES[chunk[pos++]]; - if (hexLower === -1) - return -1; - - if (self._inKey) - self._key += String.fromCharCode((hexUpper << 4) + hexLower); - else - self._val += String.fromCharCode((hexUpper << 4) + hexLower); - - self._byte = -2; - self._lastPos = pos; - } else { - // Only one hex character was available in this chunk - self._byte = hexUpper; - } - } else { - // We saw only one hex character so far - const hexLower = HEX_VALUES[chunk[pos++]]; - if (hexLower === -1) - return -1; - - if (self._inKey) - self._key += String.fromCharCode((self._byte << 4) + hexLower); - else - self._val += String.fromCharCode((self._byte << 4) + hexLower); - - self._byte = -2; - self._lastPos = pos; - } - - return pos; - } - - function skipKeyBytes(self, chunk, pos, len) { - // Skip bytes if we've truncated - if (self._bytesKey > self.fieldNameSizeLimit) { - if (!self._keyTrunc) { - if (self._lastPos < pos) - self._key += chunk.latin1Slice(self._lastPos, pos - 1); - } - self._keyTrunc = true; - for (; pos < len; ++pos) { - const code = chunk[pos]; - if (code === 61/* '=' */ || code === 38/* '&' */) - break; - ++self._bytesKey; - } - self._lastPos = pos; - } - - return pos; - } - - function skipValBytes(self, chunk, pos, len) { - // Skip bytes if we've truncated - if (self._bytesVal > self.fieldSizeLimit) { - if (!self._valTrunc) { - if (self._lastPos < pos) - self._val += chunk.latin1Slice(self._lastPos, pos - 1); - } - self._valTrunc = true; - for (; pos < len; ++pos) { - if (chunk[pos] === 38/* '&' */) - break; - ++self._bytesVal; - } - self._lastPos = pos; - } - - return pos; - } - - /* eslint-disable no-multi-spaces */ - const HEX_VALUES = [ - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, -1, -1, - -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - ]; - /* eslint-enable no-multi-spaces */ - - urlencoded = URLEncoded; - return urlencoded; -} - -var lib; -var hasRequiredLib; - -function requireLib () { - if (hasRequiredLib) return lib; - hasRequiredLib = 1; - - const { parseContentType } = requireUtils$1(); - - function getInstance(cfg) { - const headers = cfg.headers; - const conType = parseContentType(headers['content-type']); - if (!conType) - throw new Error('Malformed content type'); - - for (const type of TYPES) { - const matched = type.detect(conType); - if (!matched) - continue; - - const instanceCfg = { - limits: cfg.limits, - headers, - conType, - highWaterMark: undefined, - fileHwm: undefined, - defCharset: undefined, - defParamCharset: undefined, - preservePath: false, - }; - if (cfg.highWaterMark) - instanceCfg.highWaterMark = cfg.highWaterMark; - if (cfg.fileHwm) - instanceCfg.fileHwm = cfg.fileHwm; - instanceCfg.defCharset = cfg.defCharset; - instanceCfg.defParamCharset = cfg.defParamCharset; - instanceCfg.preservePath = cfg.preservePath; - return new type(instanceCfg); - } - - throw new Error(`Unsupported content type: ${headers['content-type']}`); - } - - // Note: types are explicitly listed here for easier bundling - // See: https://github.com/mscdex/busboy/issues/121 - const TYPES = [ - requireMultipart(), - requireUrlencoded(), - ].filter(function(typemod) { return typeof typemod.detect === 'function'; }); - - lib = (cfg) => { - if (typeof cfg !== 'object' || cfg === null) - cfg = {}; - - if (typeof cfg.headers !== 'object' - || cfg.headers === null - || typeof cfg.headers['content-type'] !== 'string') { - throw new Error('Missing Content-Type'); - } - - return getInstance(cfg); - }; - return lib; -} - -var getFormDataMethod; -var hasRequiredGetFormDataMethod; - -function requireGetFormDataMethod () { - if (hasRequiredGetFormDataMethod) return getFormDataMethod; - hasRequiredGetFormDataMethod = 1; - const busboy = requireLib(); - const streams = Stream$2; - - getFormDataMethod = function getFormDataMethod(File, limits) { - return function formData() { - if (this.body == null) { - return null; - } - const contentType = this.headers.get('Content-Type'); - const nodeReadable = this.body.on ? this.body : streams.Readable.from(this.body); - const bb = busboy({ - headers: { - 'content-type': contentType - }, - limits, - defParamCharset: 'utf-8' - }); - return new Promise((resolve, reject) => { - const formData = new Map(); - bb.on('file', (name, fileStream, { filename, mimeType }) => { - const chunks = []; - fileStream.on('limit', () => { - reject(new Error(`File size limit exceeded: ${limits.fileSize} bytes`)); - }); - fileStream.on('data', (chunk) => { - chunks.push(chunk); - }); - fileStream.on('close', () => { - formData.set(name, new File(chunks, filename, { type: mimeType })); - }); - }); - bb.on('field', (name, value, { nameTruncated, valueTruncated }) => { - if (nameTruncated) { - reject(new Error(`Field name size exceeded: ${limits.fieldNameSize} bytes`)); - } - if (valueTruncated) { - reject(new Error(`Field value size exceeded: ${limits.fieldSize} bytes`)); - } - formData.set(name, value); - }); - bb.on('partsLimit', () => { - reject(new Error(`Parts limit exceeded: ${limits.parts}`)); - }); - bb.on('filesLimit', () => { - reject(new Error(`Files limit exceeded: ${limits.files}`)); - }); - bb.on('fieldsLimit', () => { - reject(new Error(`Fields limit exceeded: ${limits.fields}`)); - }); - bb.on('close', () => { - resolve(formData); - }); - bb.on('error', err => { - reject(err); - }); - nodeReadable.pipe(bb); - }) - } - }; - return getFormDataMethod; -} - -var undici = {}; - -var symbols$1; -var hasRequiredSymbols$1; - -function requireSymbols$1 () { - if (hasRequiredSymbols$1) return symbols$1; - hasRequiredSymbols$1 = 1; - symbols$1 = { - kClose: Symbol('close'), - kDestroy: Symbol('destroy'), - kDispatch: Symbol('dispatch'), - kUrl: Symbol('url'), - kWriting: Symbol('writing'), - kResuming: Symbol('resuming'), - kQueue: Symbol('queue'), - kConnect: Symbol('connect'), - kConnecting: Symbol('connecting'), - kHeadersList: Symbol('headers list'), - kKeepAliveDefaultTimeout: Symbol('default keep alive timeout'), - kKeepAliveMaxTimeout: Symbol('max keep alive timeout'), - kKeepAliveTimeoutThreshold: Symbol('keep alive timeout threshold'), - kKeepAliveTimeoutValue: Symbol('keep alive timeout'), - kKeepAlive: Symbol('keep alive'), - kHeadersTimeout: Symbol('headers timeout'), - kBodyTimeout: Symbol('body timeout'), - kServerName: Symbol('server name'), - kHost: Symbol('host'), - kNoRef: Symbol('no ref'), - kBodyUsed: Symbol('used'), - kRunning: Symbol('running'), - kBlocking: Symbol('blocking'), - kPending: Symbol('pending'), - kSize: Symbol('size'), - kBusy: Symbol('busy'), - kQueued: Symbol('queued'), - kFree: Symbol('free'), - kConnected: Symbol('connected'), - kClosed: Symbol('closed'), - kNeedDrain: Symbol('need drain'), - kReset: Symbol('reset'), - kDestroyed: Symbol('destroyed'), - kMaxHeadersSize: Symbol('max headers size'), - kRunningIdx: Symbol('running index'), - kPendingIdx: Symbol('pending index'), - kError: Symbol('error'), - kClients: Symbol('clients'), - kClient: Symbol('client'), - kParser: Symbol('parser'), - kOnDestroyed: Symbol('destroy callbacks'), - kPipelining: Symbol('pipelinig'), - kSocket: Symbol('socket'), - kHostHeader: Symbol('host header'), - kConnector: Symbol('connector'), - kStrictContentLength: Symbol('strict content length'), - kMaxRedirections: Symbol('maxRedirections'), - kMaxRequests: Symbol('maxRequestsPerClient'), - kProxy: Symbol('proxy agent options'), - kCounter: Symbol('socket request counter') - }; - return symbols$1; -} - -var errors; -var hasRequiredErrors; - -function requireErrors () { - if (hasRequiredErrors) return errors; - hasRequiredErrors = 1; - - class UndiciError extends Error { - constructor (message) { - super(message); - this.name = 'UndiciError'; - this.code = 'UND_ERR'; - } - } - - class ConnectTimeoutError extends UndiciError { - constructor (message) { - super(message); - Error.captureStackTrace(this, ConnectTimeoutError); - this.name = 'ConnectTimeoutError'; - this.message = message || 'Connect Timeout Error'; - this.code = 'UND_ERR_CONNECT_TIMEOUT'; - } - } - - class HeadersTimeoutError extends UndiciError { - constructor (message) { - super(message); - Error.captureStackTrace(this, HeadersTimeoutError); - this.name = 'HeadersTimeoutError'; - this.message = message || 'Headers Timeout Error'; - this.code = 'UND_ERR_HEADERS_TIMEOUT'; - } - } - - class HeadersOverflowError extends UndiciError { - constructor (message) { - super(message); - Error.captureStackTrace(this, HeadersOverflowError); - this.name = 'HeadersOverflowError'; - this.message = message || 'Headers Overflow Error'; - this.code = 'UND_ERR_HEADERS_OVERFLOW'; - } - } - - class BodyTimeoutError extends UndiciError { - constructor (message) { - super(message); - Error.captureStackTrace(this, BodyTimeoutError); - this.name = 'BodyTimeoutError'; - this.message = message || 'Body Timeout Error'; - this.code = 'UND_ERR_BODY_TIMEOUT'; - } - } - - class ResponseStatusCodeError extends UndiciError { - constructor (message, statusCode, headers, body) { - super(message); - Error.captureStackTrace(this, ResponseStatusCodeError); - this.name = 'ResponseStatusCodeError'; - this.message = message || 'Response Status Code Error'; - this.code = 'UND_ERR_RESPONSE_STATUS_CODE'; - this.body = body; - this.status = statusCode; - this.statusCode = statusCode; - this.headers = headers; - } - } - - class InvalidArgumentError extends UndiciError { - constructor (message) { - super(message); - Error.captureStackTrace(this, InvalidArgumentError); - this.name = 'InvalidArgumentError'; - this.message = message || 'Invalid Argument Error'; - this.code = 'UND_ERR_INVALID_ARG'; - } - } - - class InvalidReturnValueError extends UndiciError { - constructor (message) { - super(message); - Error.captureStackTrace(this, InvalidReturnValueError); - this.name = 'InvalidReturnValueError'; - this.message = message || 'Invalid Return Value Error'; - this.code = 'UND_ERR_INVALID_RETURN_VALUE'; - } - } - - class RequestAbortedError extends UndiciError { - constructor (message) { - super(message); - Error.captureStackTrace(this, RequestAbortedError); - this.name = 'AbortError'; - this.message = message || 'Request aborted'; - this.code = 'UND_ERR_ABORTED'; - } - } - - class InformationalError extends UndiciError { - constructor (message) { - super(message); - Error.captureStackTrace(this, InformationalError); - this.name = 'InformationalError'; - this.message = message || 'Request information'; - this.code = 'UND_ERR_INFO'; - } - } - - class RequestContentLengthMismatchError extends UndiciError { - constructor (message) { - super(message); - Error.captureStackTrace(this, RequestContentLengthMismatchError); - this.name = 'RequestContentLengthMismatchError'; - this.message = message || 'Request body length does not match content-length header'; - this.code = 'UND_ERR_REQ_CONTENT_LENGTH_MISMATCH'; - } - } - - class ResponseContentLengthMismatchError extends UndiciError { - constructor (message) { - super(message); - Error.captureStackTrace(this, ResponseContentLengthMismatchError); - this.name = 'ResponseContentLengthMismatchError'; - this.message = message || 'Response body length does not match content-length header'; - this.code = 'UND_ERR_RES_CONTENT_LENGTH_MISMATCH'; - } - } - - class ClientDestroyedError extends UndiciError { - constructor (message) { - super(message); - Error.captureStackTrace(this, ClientDestroyedError); - this.name = 'ClientDestroyedError'; - this.message = message || 'The client is destroyed'; - this.code = 'UND_ERR_DESTROYED'; - } - } - - class ClientClosedError extends UndiciError { - constructor (message) { - super(message); - Error.captureStackTrace(this, ClientClosedError); - this.name = 'ClientClosedError'; - this.message = message || 'The client is closed'; - this.code = 'UND_ERR_CLOSED'; - } - } - - class SocketError extends UndiciError { - constructor (message, socket) { - super(message); - Error.captureStackTrace(this, SocketError); - this.name = 'SocketError'; - this.message = message || 'Socket error'; - this.code = 'UND_ERR_SOCKET'; - this.socket = socket; - } - } - - class NotSupportedError extends UndiciError { - constructor (message) { - super(message); - Error.captureStackTrace(this, NotSupportedError); - this.name = 'NotSupportedError'; - this.message = message || 'Not supported error'; - this.code = 'UND_ERR_NOT_SUPPORTED'; - } - } - - class BalancedPoolMissingUpstreamError extends UndiciError { - constructor (message) { - super(message); - Error.captureStackTrace(this, NotSupportedError); - this.name = 'MissingUpstreamError'; - this.message = message || 'No upstream has been added to the BalancedPool'; - this.code = 'UND_ERR_BPL_MISSING_UPSTREAM'; - } - } - - class HTTPParserError extends Error { - constructor (message, code, data) { - super(message); - Error.captureStackTrace(this, HTTPParserError); - this.name = 'HTTPParserError'; - this.code = code ? `HPE_${code}` : undefined; - this.data = data ? data.toString() : undefined; - } - } - - errors = { - HTTPParserError, - UndiciError, - HeadersTimeoutError, - HeadersOverflowError, - BodyTimeoutError, - RequestContentLengthMismatchError, - ConnectTimeoutError, - ResponseStatusCodeError, - InvalidArgumentError, - InvalidReturnValueError, - RequestAbortedError, - ClientDestroyedError, - ClientClosedError, - InformationalError, - SocketError, - NotSupportedError, - ResponseContentLengthMismatchError, - BalancedPoolMissingUpstreamError - }; - return errors; -} - -var util$1; -var hasRequiredUtil$1; - -function requireUtil$1 () { - if (hasRequiredUtil$1) return util$1; - hasRequiredUtil$1 = 1; - - const assert = require$$0$3; - const { kDestroyed, kBodyUsed } = requireSymbols$1(); - const { IncomingMessage } = http$1; - const stream = Stream$2; - const net = require$$4$1; - const { InvalidArgumentError } = requireErrors(); - const { Blob } = require$$6$2; - const nodeUtil = require$$0$2; - - function nop () {} - - function isStream (obj) { - return obj && typeof obj.pipe === 'function' - } - - // based on https://github.com/node-fetch/fetch-blob/blob/8ab587d34080de94140b54f07168451e7d0b655e/index.js#L229-L241 (MIT License) - function isBlobLike (object) { - return (Blob && object instanceof Blob) || ( - object && - typeof object === 'object' && - (typeof object.stream === 'function' || - typeof object.arrayBuffer === 'function') && - /^(Blob|File)$/.test(object[Symbol.toStringTag]) - ) - } - - function isObject (val) { - return val !== null && typeof val === 'object' - } - - // this escapes all non-uri friendly characters - function encode (val) { - return encodeURIComponent(val) - } - - // based on https://github.com/axios/axios/blob/63e559fa609c40a0a460ae5d5a18c3470ffc6c9e/lib/helpers/buildURL.js (MIT license) - function buildURL (url, queryParams) { - if (url.includes('?') || url.includes('#')) { - throw new Error('Query params cannot be passed when url already contains "?" or "#".') - } - if (!isObject(queryParams)) { - throw new Error('Query params must be an object') - } - - const parts = []; - for (let [key, val] of Object.entries(queryParams)) { - if (val === null || typeof val === 'undefined') { - continue - } - - if (!Array.isArray(val)) { - val = [val]; - } - - for (const v of val) { - if (isObject(v)) { - throw new Error('Passing object as a query param is not supported, please serialize to string up-front') - } - parts.push(encode(key) + '=' + encode(v)); - } - } - - const serializedParams = parts.join('&'); - - if (serializedParams) { - url += '?' + serializedParams; - } - - return url - } - - function parseURL (url) { - if (typeof url === 'string') { - url = new URL(url); - } - - if (!url || typeof url !== 'object') { - throw new InvalidArgumentError('invalid url') - } - - if (url.port != null && url.port !== '' && !Number.isFinite(parseInt(url.port))) { - throw new InvalidArgumentError('invalid port') - } - - if (url.path != null && typeof url.path !== 'string') { - throw new InvalidArgumentError('invalid path') - } - - if (url.pathname != null && typeof url.pathname !== 'string') { - throw new InvalidArgumentError('invalid pathname') - } - - if (url.hostname != null && typeof url.hostname !== 'string') { - throw new InvalidArgumentError('invalid hostname') - } - - if (url.origin != null && typeof url.origin !== 'string') { - throw new InvalidArgumentError('invalid origin') - } - - if (!/^https?:/.test(url.origin || url.protocol)) { - throw new InvalidArgumentError('invalid protocol') - } - - if (!(url instanceof URL)) { - const port = url.port != null - ? url.port - : (url.protocol === 'https:' ? 443 : 80); - let origin = url.origin != null - ? url.origin - : `${url.protocol}//${url.hostname}:${port}`; - let path = url.path != null - ? url.path - : `${url.pathname || ''}${url.search || ''}`; - - if (origin.endsWith('/')) { - origin = origin.substring(0, origin.length - 1); - } - - if (path && !path.startsWith('/')) { - path = `/${path}`; - } - // new URL(path, origin) is unsafe when `path` contains an absolute URL - // From https://developer.mozilla.org/en-US/docs/Web/API/URL/URL: - // If first parameter is a relative URL, second param is required, and will be used as the base URL. - // If first parameter is an absolute URL, a given second param will be ignored. - url = new URL(origin + path); - } - - return url - } - - function parseOrigin (url) { - url = parseURL(url); - - if (url.pathname !== '/' || url.search || url.hash) { - throw new InvalidArgumentError('invalid url') - } - - return url - } - - function getHostname (host) { - if (host[0] === '[') { - const idx = host.indexOf(']'); - - assert(idx !== -1); - return host.substr(1, idx - 1) - } - - const idx = host.indexOf(':'); - if (idx === -1) return host - - return host.substr(0, idx) - } - - // IP addresses are not valid server names per RFC6066 - // > Currently, the only server names supported are DNS hostnames - function getServerName (host) { - if (!host) { - return null - } - - assert.strictEqual(typeof host, 'string'); - - const servername = getHostname(host); - if (net.isIP(servername)) { - return '' - } - - return servername - } - - function deepClone (obj) { - return JSON.parse(JSON.stringify(obj)) - } - - function isAsyncIterable (obj) { - return !!(obj != null && typeof obj[Symbol.asyncIterator] === 'function') - } - - function isIterable (obj) { - return !!(obj != null && (typeof obj[Symbol.iterator] === 'function' || typeof obj[Symbol.asyncIterator] === 'function')) - } - - function bodyLength (body) { - if (body == null) { - return 0 - } else if (isStream(body)) { - const state = body._readableState; - return state && state.ended === true && Number.isFinite(state.length) - ? state.length - : null - } else if (isBlobLike(body)) { - return body.size != null ? body.size : null - } else if (isBuffer(body)) { - return body.byteLength - } - - return null - } - - function isDestroyed (stream) { - return !stream || !!(stream.destroyed || stream[kDestroyed]) - } - - function isReadableAborted (stream) { - const state = stream && stream._readableState; - return isDestroyed(stream) && state && !state.endEmitted - } - - function destroy (stream, err) { - if (!isStream(stream) || isDestroyed(stream)) { - return - } - - if (typeof stream.destroy === 'function') { - if (Object.getPrototypeOf(stream).constructor === IncomingMessage) { - // See: https://github.com/nodejs/node/pull/38505/files - stream.socket = null; - } - stream.destroy(err); - } else if (err) { - process.nextTick((stream, err) => { - stream.emit('error', err); - }, stream, err); - } - - if (stream.destroyed !== true) { - stream[kDestroyed] = true; - } - } - - const KEEPALIVE_TIMEOUT_EXPR = /timeout=(\d+)/; - function parseKeepAliveTimeout (val) { - const m = val.toString().match(KEEPALIVE_TIMEOUT_EXPR); - return m ? parseInt(m[1], 10) * 1000 : null - } - - function parseHeaders (headers, obj = {}) { - for (let i = 0; i < headers.length; i += 2) { - const key = headers[i].toString().toLowerCase(); - let val = obj[key]; - if (!val) { - if (Array.isArray(headers[i + 1])) { - obj[key] = headers[i + 1]; - } else { - obj[key] = headers[i + 1].toString(); - } - } else { - if (!Array.isArray(val)) { - val = [val]; - obj[key] = val; - } - val.push(headers[i + 1].toString()); - } - } - return obj - } - - function parseRawHeaders (headers) { - return headers.map(header => header.toString()) - } - - function isBuffer (buffer) { - // See, https://github.com/mcollina/undici/pull/319 - return buffer instanceof Uint8Array || Buffer.isBuffer(buffer) - } - - function validateHandler (handler, method, upgrade) { - if (!handler || typeof handler !== 'object') { - throw new InvalidArgumentError('handler must be an object') - } - - if (typeof handler.onConnect !== 'function') { - throw new InvalidArgumentError('invalid onConnect method') - } - - if (typeof handler.onError !== 'function') { - throw new InvalidArgumentError('invalid onError method') - } - - if (typeof handler.onBodySent !== 'function' && handler.onBodySent !== undefined) { - throw new InvalidArgumentError('invalid onBodySent method') - } - - if (upgrade || method === 'CONNECT') { - if (typeof handler.onUpgrade !== 'function') { - throw new InvalidArgumentError('invalid onUpgrade method') - } - } else { - if (typeof handler.onHeaders !== 'function') { - throw new InvalidArgumentError('invalid onHeaders method') - } - - if (typeof handler.onData !== 'function') { - throw new InvalidArgumentError('invalid onData method') - } - - if (typeof handler.onComplete !== 'function') { - throw new InvalidArgumentError('invalid onComplete method') - } - } - } - - // A body is disturbed if it has been read from and it cannot - // be re-used without losing state or data. - function isDisturbed (body) { - return !!(body && ( - stream.isDisturbed - ? stream.isDisturbed(body) || body[kBodyUsed] // TODO (fix): Why is body[kBodyUsed] needed? - : body[kBodyUsed] || - body.readableDidRead || - (body._readableState && body._readableState.dataEmitted) || - isReadableAborted(body) - )) - } - - function isErrored (body) { - return !!(body && ( - stream.isErrored - ? stream.isErrored(body) - : /state: 'errored'/.test(nodeUtil.inspect(body) - ))) - } - - function isReadable (body) { - return !!(body && ( - stream.isReadable - ? stream.isReadable(body) - : /state: 'readable'/.test(nodeUtil.inspect(body) - ))) - } - - function getSocketInfo (socket) { - return { - localAddress: socket.localAddress, - localPort: socket.localPort, - remoteAddress: socket.remoteAddress, - remotePort: socket.remotePort, - remoteFamily: socket.remoteFamily, - timeout: socket.timeout, - bytesWritten: socket.bytesWritten, - bytesRead: socket.bytesRead - } - } - - let ReadableStream; - function ReadableStreamFrom (iterable) { - if (!ReadableStream) { - ReadableStream = require$$10.ReadableStream; - } - - if (ReadableStream.from) { - // https://github.com/whatwg/streams/pull/1083 - return ReadableStream.from(iterable) - } - - let iterator; - return new ReadableStream( - { - async start () { - iterator = iterable[Symbol.asyncIterator](); - }, - async pull (controller) { - const { done, value } = await iterator.next(); - if (done) { - queueMicrotask(() => { - controller.close(); - }); - } else { - const buf = Buffer.isBuffer(value) ? value : Buffer.from(value); - controller.enqueue(new Uint8Array(buf)); - } - return controller.desiredSize > 0 - }, - async cancel (reason) { - await iterator.return(); - } - }, - 0 - ) - } - - function isFormDataLike (chunk) { - return chunk && chunk.constructor && chunk.constructor.name === 'FormData' - } - - const kEnumerableProperty = Object.create(null); - kEnumerableProperty.enumerable = true; - - util$1 = { - kEnumerableProperty, - nop, - isDisturbed, - isErrored, - isReadable, - toUSVString: nodeUtil.toUSVString || ((val) => `${val}`), - isReadableAborted, - isBlobLike, - parseOrigin, - parseURL, - getServerName, - isStream, - isIterable, - isAsyncIterable, - isDestroyed, - parseRawHeaders, - parseHeaders, - parseKeepAliveTimeout, - destroy, - bodyLength, - deepClone, - ReadableStreamFrom, - isBuffer, - validateHandler, - getSocketInfo, - isFormDataLike, - buildURL - }; - return util$1; -} - -var constants$1; -var hasRequiredConstants$1; - -function requireConstants$1 () { - if (hasRequiredConstants$1) return constants$1; - hasRequiredConstants$1 = 1; - - const corsSafeListedMethods = ['GET', 'HEAD', 'POST']; - - const nullBodyStatus = [101, 204, 205, 304]; - - const redirectStatus = [301, 302, 303, 307, 308]; - - const referrerPolicy = [ - '', - 'no-referrer', - 'no-referrer-when-downgrade', - 'same-origin', - 'origin', - 'strict-origin', - 'origin-when-cross-origin', - 'strict-origin-when-cross-origin', - 'unsafe-url' - ]; - - const requestRedirect = ['follow', 'manual', 'error']; - - const safeMethods = ['GET', 'HEAD', 'OPTIONS', 'TRACE']; - - const requestMode = ['navigate', 'same-origin', 'no-cors', 'cors']; - - const requestCredentials = ['omit', 'same-origin', 'include']; - - const requestCache = [ - 'default', - 'no-store', - 'reload', - 'no-cache', - 'force-cache', - 'only-if-cached' - ]; - - const requestBodyHeader = [ - 'content-encoding', - 'content-language', - 'content-location', - 'content-type' - ]; - - // http://fetch.spec.whatwg.org/#forbidden-method - const forbiddenMethods = ['CONNECT', 'TRACE', 'TRACK']; - - const subresource = [ - 'audio', - 'audioworklet', - 'font', - 'image', - 'manifest', - 'paintworklet', - 'script', - 'style', - 'track', - 'video', - 'xslt', - '' - ]; - - /** @type {globalThis['DOMException']} */ - const DOMException = globalThis.DOMException ?? (() => { - // DOMException was only made a global in Node v17.0.0, - // but fetch supports >= v16.8. - try { - atob('~'); - } catch (err) { - return Object.getPrototypeOf(err).constructor - } - })(); - - constants$1 = { - DOMException, - subresource, - forbiddenMethods, - requestBodyHeader, - referrerPolicy, - requestRedirect, - requestMode, - requestCredentials, - requestCache, - redirectStatus, - corsSafeListedMethods, - nullBodyStatus, - safeMethods - }; - return constants$1; -} - -var symbols; -var hasRequiredSymbols; - -function requireSymbols () { - if (hasRequiredSymbols) return symbols; - hasRequiredSymbols = 1; - - symbols = { - kUrl: Symbol('url'), - kHeaders: Symbol('headers'), - kSignal: Symbol('signal'), - kState: Symbol('state'), - kGuard: Symbol('guard'), - kRealm: Symbol('realm') - }; - return symbols; -} - -var webidl_1; -var hasRequiredWebidl; - -function requireWebidl () { - if (hasRequiredWebidl) return webidl_1; - hasRequiredWebidl = 1; - - const { types } = require$$0$2; - const { hasOwn, toUSVString } = requireUtil(); - - const webidl = {}; - webidl.converters = {}; - webidl.util = {}; - webidl.errors = {}; - - /** - * - * @param {{ - * header: string - * message: string - * }} message - */ - webidl.errors.exception = function (message) { - throw new TypeError(`${message.header}: ${message.message}`) - }; - - /** - * Throw an error when conversion from one type to another has failed - * @param {{ - * prefix: string - * argument: string - * types: string[] - * }} context - */ - webidl.errors.conversionFailed = function (context) { - const plural = context.types.length === 1 ? '' : ' one of'; - const message = - `${context.argument} could not be converted to` + - `${plural}: ${context.types.join(', ')}.`; - - return webidl.errors.exception({ - header: context.prefix, - message - }) - }; - - /** - * Throw an error when an invalid argument is provided - * @param {{ - * prefix: string - * value: string - * type: string - * }} context - */ - webidl.errors.invalidArgument = function (context) { - return webidl.errors.exception({ - header: context.prefix, - message: `"${context.value}" is an invalid ${context.type}.` - }) - }; - - // https://tc39.es/ecma262/#sec-ecmascript-data-types-and-values - webidl.util.Type = function (V) { - switch (typeof V) { - case 'undefined': return 'Undefined' - case 'boolean': return 'Boolean' - case 'string': return 'String' - case 'symbol': return 'Symbol' - case 'number': return 'Number' - case 'bigint': return 'BigInt' - case 'function': - case 'object': { - if (V === null) { - return 'Null' - } - - return 'Object' - } - } - }; - - // https://webidl.spec.whatwg.org/#abstract-opdef-converttoint - webidl.util.ConvertToInt = function (V, bitLength, signedness, opts = {}) { - let upperBound; - let lowerBound; - - // 1. If bitLength is 64, then: - if (bitLength === 64) { - // 1. Let upperBound be 2^53 − 1. - upperBound = Math.pow(2, 53) - 1; - - // 2. If signedness is "unsigned", then let lowerBound be 0. - if (signedness === 'unsigned') { - lowerBound = 0; - } else { - // 3. Otherwise let lowerBound be −2^53 + 1. - lowerBound = Math.pow(-2, 53) + 1; - } - } else if (signedness === 'unsigned') { - // 2. Otherwise, if signedness is "unsigned", then: - - // 1. Let lowerBound be 0. - lowerBound = 0; - - // 2. Let upperBound be 2^bitLength − 1. - upperBound = Math.pow(2, bitLength) - 1; - } else { - // 3. Otherwise: - - // 1. Let lowerBound be -2^bitLength − 1. - lowerBound = Math.pow(-2, bitLength) - 1; - - // 2. Let upperBound be 2^bitLength − 1 − 1. - upperBound = Math.pow(2, bitLength - 1) - 1; - } - - // 4. Let x be ? ToNumber(V). - let x = Number(V); - - // 5. If x is −0, then set x to +0. - if (Object.is(-0, x)) { - x = 0; - } - - // 6. If the conversion is to an IDL type associated - // with the [EnforceRange] extended attribute, then: - if (opts.enforceRange === true) { - // 1. If x is NaN, +∞, or −∞, then throw a TypeError. - if ( - Number.isNaN(x) || - x === Number.POSITIVE_INFINITY || - x === Number.NEGATIVE_INFINITY - ) { - webidl.errors.exception({ - header: 'Integer conversion', - message: `Could not convert ${V} to an integer.` - }); - } - - // 2. Set x to IntegerPart(x). - x = webidl.util.IntegerPart(x); - - // 3. If x < lowerBound or x > upperBound, then - // throw a TypeError. - if (x < lowerBound || x > upperBound) { - webidl.errors.exception({ - header: 'Integer conversion', - message: `Value must be between ${lowerBound}-${upperBound}, got ${x}.` - }); - } - - // 4. Return x. - return x - } - - // 7. If x is not NaN and the conversion is to an IDL - // type associated with the [Clamp] extended - // attribute, then: - if (!Number.isNaN(x) && opts.clamp === true) { - // 1. Set x to min(max(x, lowerBound), upperBound). - x = Math.min(Math.max(x, lowerBound), upperBound); - - // 2. Round x to the nearest integer, choosing the - // even integer if it lies halfway between two, - // and choosing +0 rather than −0. - if (Math.floor(x) % 2 === 0) { - x = Math.floor(x); - } else { - x = Math.ceil(x); - } - - // 3. Return x. - return x - } - - // 8. If x is NaN, +0, +∞, or −∞, then return +0. - if ( - Number.isNaN(x) || - Object.is(0, x) || - x === Number.POSITIVE_INFINITY || - x === Number.NEGATIVE_INFINITY - ) { - return 0 - } - - // 9. Set x to IntegerPart(x). - x = webidl.util.IntegerPart(x); - - // 10. Set x to x modulo 2^bitLength. - x = x % Math.pow(2, bitLength); - - // 11. If signedness is "signed" and x ≥ 2^bitLength − 1, - // then return x − 2^bitLength. - if (signedness === 'signed' && x >= Math.pow(2, bitLength) - 1) { - return x - Math.pow(2, bitLength) - } - - // 12. Otherwise, return x. - return x - }; - - // https://webidl.spec.whatwg.org/#abstract-opdef-integerpart - webidl.util.IntegerPart = function (n) { - // 1. Let r be floor(abs(n)). - const r = Math.floor(Math.abs(n)); - - // 2. If n < 0, then return -1 × r. - if (n < 0) { - return -1 * r - } - - // 3. Otherwise, return r. - return r - }; - - // https://webidl.spec.whatwg.org/#es-sequence - webidl.sequenceConverter = function (converter) { - return (V) => { - // 1. If Type(V) is not Object, throw a TypeError. - if (webidl.util.Type(V) !== 'Object') { - webidl.errors.exception({ - header: 'Sequence', - message: `Value of type ${webidl.util.Type(V)} is not an Object.` - }); - } - - // 2. Let method be ? GetMethod(V, @@iterator). - /** @type {Generator} */ - const method = V?.[Symbol.iterator]?.(); - const seq = []; - - // 3. If method is undefined, throw a TypeError. - if ( - method === undefined || - typeof method.next !== 'function' - ) { - webidl.errors.exception({ - header: 'Sequence', - message: 'Object is not an iterator.' - }); - } - - // https://webidl.spec.whatwg.org/#create-sequence-from-iterable - while (true) { - const { done, value } = method.next(); - - if (done) { - break - } - - seq.push(converter(value)); - } - - return seq - } - }; - - webidl.recordConverter = function (keyConverter, valueConverter) { - return (V) => { - const record = {}; - const type = webidl.util.Type(V); - - if (type === 'Undefined' || type === 'Null') { - return record - } - - if (type !== 'Object') { - webidl.errors.exception({ - header: 'Record', - message: `Expected ${V} to be an Object type.` - }); - } - - for (let [key, value] of Object.entries(V)) { - key = keyConverter(key); - value = valueConverter(value); - - record[key] = value; - } - - return record - } - }; - - webidl.interfaceConverter = function (i) { - return (V, opts = {}) => { - if (opts.strict !== false && !(V instanceof i)) { - webidl.errors.exception({ - header: i.name, - message: `Expected ${V} to be an instance of ${i.name}.` - }); - } - - return V - } - }; - - /** - * @param {{ - * key: string, - * defaultValue?: any, - * required?: boolean, - * converter: (...args: unknown[]) => unknown, - * allowedValues?: any[] - * }[]} converters - * @returns - */ - webidl.dictionaryConverter = function (converters) { - return (dictionary) => { - const type = webidl.util.Type(dictionary); - const dict = {}; - - if (type !== 'Null' && type !== 'Undefined' && type !== 'Object') { - webidl.errors.exception({ - header: 'Dictionary', - message: `Expected ${dictionary} to be one of: Null, Undefined, Object.` - }); - } - - for (const options of converters) { - const { key, defaultValue, required, converter } = options; - - if (required === true) { - if (!hasOwn(dictionary, key)) { - webidl.errors.exception({ - header: 'Dictionary', - message: `Missing required key "${key}".` - }); - } - } - - let value = dictionary[key]; - const hasDefault = hasOwn(options, 'defaultValue'); - - // Only use defaultValue if value is undefined and - // a defaultValue options was provided. - if (hasDefault && value !== null) { - value = value ?? defaultValue; - } - - // A key can be optional and have no default value. - // When this happens, do not perform a conversion, - // and do not assign the key a value. - if (required || hasDefault || value !== undefined) { - value = converter(value); - - if ( - options.allowedValues && - !options.allowedValues.includes(value) - ) { - webidl.errors.exception({ - header: 'Dictionary', - message: `${value} is not an accepted type. Expected one of ${options.allowedValues.join(', ')}.` - }); - } - - dict[key] = value; - } - } - - return dict - } - }; - - webidl.nullableConverter = function (converter) { - return (V) => { - if (V === null) { - return V - } - - return converter(V) - } - }; - - // https://webidl.spec.whatwg.org/#es-DOMString - webidl.converters.DOMString = function (V, opts = {}) { - // 1. If V is null and the conversion is to an IDL type - // associated with the [LegacyNullToEmptyString] - // extended attribute, then return the DOMString value - // that represents the empty string. - if (V === null && opts.legacyNullToEmptyString) { - return '' - } - - // 2. Let x be ? ToString(V). - if (typeof V === 'symbol') { - throw new TypeError('Could not convert argument of type symbol to string.') - } - - // 3. Return the IDL DOMString value that represents the - // same sequence of code units as the one the - // ECMAScript String value x represents. - return String(V) - }; - - // https://webidl.spec.whatwg.org/#es-ByteString - webidl.converters.ByteString = function (V) { - // 1. Let x be ? ToString(V). - // Note: DOMString converter perform ? ToString(V) - const x = webidl.converters.DOMString(V); - - // 2. If the value of any element of x is greater than - // 255, then throw a TypeError. - for (let index = 0; index < x.length; index++) { - const charCode = x.charCodeAt(index); - - if (charCode > 255) { - throw new TypeError( - 'Cannot convert argument to a ByteString because the character at' + - `index ${index} has a value of ${charCode} which is greater than 255.` - ) - } - } - - // 3. Return an IDL ByteString value whose length is the - // length of x, and where the value of each element is - // the value of the corresponding element of x. - return x - }; - - // https://webidl.spec.whatwg.org/#es-USVString - // TODO: ensure that util.toUSVString follows webidl spec - webidl.converters.USVString = toUSVString; - - // https://webidl.spec.whatwg.org/#es-boolean - webidl.converters.boolean = function (V) { - // 1. Let x be the result of computing ToBoolean(V). - const x = Boolean(V); - - // 2. Return the IDL boolean value that is the one that represents - // the same truth value as the ECMAScript Boolean value x. - return x - }; - - // https://webidl.spec.whatwg.org/#es-any - webidl.converters.any = function (V) { - return V - }; - - // https://webidl.spec.whatwg.org/#es-long-long - webidl.converters['long long'] = function (V, opts) { - // 1. Let x be ? ConvertToInt(V, 64, "signed"). - const x = webidl.util.ConvertToInt(V, 64, 'signed', opts); - - // 2. Return the IDL long long value that represents - // the same numeric value as x. - return x - }; - - // https://webidl.spec.whatwg.org/#es-unsigned-short - webidl.converters['unsigned short'] = function (V) { - // 1. Let x be ? ConvertToInt(V, 16, "unsigned"). - const x = webidl.util.ConvertToInt(V, 16, 'unsigned'); - - // 2. Return the IDL unsigned short value that represents - // the same numeric value as x. - return x - }; - - // https://webidl.spec.whatwg.org/#idl-ArrayBuffer - webidl.converters.ArrayBuffer = function (V, opts = {}) { - // 1. If Type(V) is not Object, or V does not have an - // [[ArrayBufferData]] internal slot, then throw a - // TypeError. - // see: https://tc39.es/ecma262/#sec-properties-of-the-arraybuffer-instances - // see: https://tc39.es/ecma262/#sec-properties-of-the-sharedarraybuffer-instances - if ( - webidl.util.Type(V) !== 'Object' || - !types.isAnyArrayBuffer(V) - ) { - webidl.errors.conversionFailed({ - prefix: `${V}`, - argument: `${V}`, - types: ['ArrayBuffer'] - }); - } - - // 2. If the conversion is not to an IDL type associated - // with the [AllowShared] extended attribute, and - // IsSharedArrayBuffer(V) is true, then throw a - // TypeError. - if (opts.allowShared === false && types.isSharedArrayBuffer(V)) { - webidl.errors.exception({ - header: 'ArrayBuffer', - message: 'SharedArrayBuffer is not allowed.' - }); - } - - // 3. If the conversion is not to an IDL type associated - // with the [AllowResizable] extended attribute, and - // IsResizableArrayBuffer(V) is true, then throw a - // TypeError. - // Note: resizable ArrayBuffers are currently a proposal. - - // 4. Return the IDL ArrayBuffer value that is a - // reference to the same object as V. - return V - }; - - webidl.converters.TypedArray = function (V, T, opts = {}) { - // 1. Let T be the IDL type V is being converted to. - - // 2. If Type(V) is not Object, or V does not have a - // [[TypedArrayName]] internal slot with a value - // equal to T’s name, then throw a TypeError. - if ( - webidl.util.Type(V) !== 'Object' || - !types.isTypedArray(V) || - V.constructor.name !== T.name - ) { - webidl.errors.conversionFailed({ - prefix: `${T.name}`, - argument: `${V}`, - types: [T.name] - }); - } - - // 3. If the conversion is not to an IDL type associated - // with the [AllowShared] extended attribute, and - // IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is - // true, then throw a TypeError. - if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) { - webidl.errors.exception({ - header: 'ArrayBuffer', - message: 'SharedArrayBuffer is not allowed.' - }); - } - - // 4. If the conversion is not to an IDL type associated - // with the [AllowResizable] extended attribute, and - // IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is - // true, then throw a TypeError. - // Note: resizable array buffers are currently a proposal - - // 5. Return the IDL value of type T that is a reference - // to the same object as V. - return V - }; - - webidl.converters.DataView = function (V, opts = {}) { - // 1. If Type(V) is not Object, or V does not have a - // [[DataView]] internal slot, then throw a TypeError. - if (webidl.util.Type(V) !== 'Object' || !types.isDataView(V)) { - webidl.errors.exception({ - header: 'DataView', - message: 'Object is not a DataView.' - }); - } - - // 2. If the conversion is not to an IDL type associated - // with the [AllowShared] extended attribute, and - // IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is true, - // then throw a TypeError. - if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) { - webidl.errors.exception({ - header: 'ArrayBuffer', - message: 'SharedArrayBuffer is not allowed.' - }); - } - - // 3. If the conversion is not to an IDL type associated - // with the [AllowResizable] extended attribute, and - // IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is - // true, then throw a TypeError. - // Note: resizable ArrayBuffers are currently a proposal - - // 4. Return the IDL DataView value that is a reference - // to the same object as V. - return V - }; - - // https://webidl.spec.whatwg.org/#BufferSource - webidl.converters.BufferSource = function (V, opts = {}) { - if (types.isAnyArrayBuffer(V)) { - return webidl.converters.ArrayBuffer(V, opts) - } - - if (types.isTypedArray(V)) { - return webidl.converters.TypedArray(V, V.constructor) - } - - if (types.isDataView(V)) { - return webidl.converters.DataView(V, opts) - } - - throw new TypeError(`Could not convert ${V} to a BufferSource.`) - }; - - webidl.converters['sequence'] = webidl.sequenceConverter( - webidl.converters.ByteString - ); - - webidl.converters['sequence>'] = webidl.sequenceConverter( - webidl.converters['sequence'] - ); - - webidl.converters['record'] = webidl.recordConverter( - webidl.converters.ByteString, - webidl.converters.ByteString - ); - - webidl_1 = { - webidl - }; - return webidl_1; -} - -var file; -var hasRequiredFile; - -function requireFile () { - if (hasRequiredFile) return file; - hasRequiredFile = 1; - - const { Blob } = require$$6$2; - const { types } = require$$0$2; - const { kState } = requireSymbols(); - const { isBlobLike } = requireUtil(); - const { webidl } = requireWebidl(); - - class File extends Blob { - constructor (fileBits, fileName, options = {}) { - // The File constructor is invoked with two or three parameters, depending - // on whether the optional dictionary parameter is used. When the File() - // constructor is invoked, user agents must run the following steps: - if (arguments.length < 2) { - throw new TypeError('2 arguments required') - } - - fileBits = webidl.converters['sequence'](fileBits); - fileName = webidl.converters.USVString(fileName); - options = webidl.converters.FilePropertyBag(options); - - // 1. Let bytes be the result of processing blob parts given fileBits and - // options. - // Note: Blob handles this for us - - // 2. Let n be the fileName argument to the constructor. - const n = fileName; - - // 3. Process FilePropertyBag dictionary argument by running the following - // substeps: - - // 1. If the type member is provided and is not the empty string, let t - // be set to the type dictionary member. If t contains any characters - // outside the range U+0020 to U+007E, then set t to the empty string - // and return from these substeps. - // 2. Convert every character in t to ASCII lowercase. - // Note: Blob handles both of these steps for us - - // 3. If the lastModified member is provided, let d be set to the - // lastModified dictionary member. If it is not provided, set d to the - // current date and time represented as the number of milliseconds since - // the Unix Epoch (which is the equivalent of Date.now() [ECMA-262]). - const d = options.lastModified; - - // 4. Return a new File object F such that: - // F refers to the bytes byte sequence. - // F.size is set to the number of total bytes in bytes. - // F.name is set to n. - // F.type is set to t. - // F.lastModified is set to d. - - super(processBlobParts(fileBits, options), { type: options.type }); - this[kState] = { - name: n, - lastModified: d - }; - } - - get name () { - if (!(this instanceof File)) { - throw new TypeError('Illegal invocation') - } - - return this[kState].name - } - - get lastModified () { - if (!(this instanceof File)) { - throw new TypeError('Illegal invocation') - } - - return this[kState].lastModified - } - - get [Symbol.toStringTag] () { - return this.constructor.name - } - } - - class FileLike { - constructor (blobLike, fileName, options = {}) { - // TODO: argument idl type check - - // The File constructor is invoked with two or three parameters, depending - // on whether the optional dictionary parameter is used. When the File() - // constructor is invoked, user agents must run the following steps: - - // 1. Let bytes be the result of processing blob parts given fileBits and - // options. - - // 2. Let n be the fileName argument to the constructor. - const n = fileName; - - // 3. Process FilePropertyBag dictionary argument by running the following - // substeps: - - // 1. If the type member is provided and is not the empty string, let t - // be set to the type dictionary member. If t contains any characters - // outside the range U+0020 to U+007E, then set t to the empty string - // and return from these substeps. - // TODO - const t = options.type; - - // 2. Convert every character in t to ASCII lowercase. - // TODO - - // 3. If the lastModified member is provided, let d be set to the - // lastModified dictionary member. If it is not provided, set d to the - // current date and time represented as the number of milliseconds since - // the Unix Epoch (which is the equivalent of Date.now() [ECMA-262]). - const d = options.lastModified ?? Date.now(); - - // 4. Return a new File object F such that: - // F refers to the bytes byte sequence. - // F.size is set to the number of total bytes in bytes. - // F.name is set to n. - // F.type is set to t. - // F.lastModified is set to d. - - this[kState] = { - blobLike, - name: n, - type: t, - lastModified: d - }; - } - - stream (...args) { - if (!(this instanceof FileLike)) { - throw new TypeError('Illegal invocation') - } - - return this[kState].blobLike.stream(...args) - } - - arrayBuffer (...args) { - if (!(this instanceof FileLike)) { - throw new TypeError('Illegal invocation') - } - - return this[kState].blobLike.arrayBuffer(...args) - } - - slice (...args) { - if (!(this instanceof FileLike)) { - throw new TypeError('Illegal invocation') - } - - return this[kState].blobLike.slice(...args) - } - - text (...args) { - if (!(this instanceof FileLike)) { - throw new TypeError('Illegal invocation') - } - - return this[kState].blobLike.text(...args) - } - - get size () { - if (!(this instanceof FileLike)) { - throw new TypeError('Illegal invocation') - } - - return this[kState].blobLike.size - } - - get type () { - if (!(this instanceof FileLike)) { - throw new TypeError('Illegal invocation') - } - - return this[kState].blobLike.type - } - - get name () { - if (!(this instanceof FileLike)) { - throw new TypeError('Illegal invocation') - } - - return this[kState].name - } - - get lastModified () { - if (!(this instanceof FileLike)) { - throw new TypeError('Illegal invocation') - } - - return this[kState].lastModified - } - - get [Symbol.toStringTag] () { - return 'File' - } - } - - webidl.converters.Blob = webidl.interfaceConverter(Blob); - - webidl.converters.BlobPart = function (V, opts) { - if (webidl.util.Type(V) === 'Object') { - if (isBlobLike(V)) { - return webidl.converters.Blob(V, { strict: false }) - } - - return webidl.converters.BufferSource(V, opts) - } else { - return webidl.converters.USVString(V, opts) - } - }; - - webidl.converters['sequence'] = webidl.sequenceConverter( - webidl.converters.BlobPart - ); - - // https://www.w3.org/TR/FileAPI/#dfn-FilePropertyBag - webidl.converters.FilePropertyBag = webidl.dictionaryConverter([ - { - key: 'lastModified', - converter: webidl.converters['long long'], - get defaultValue () { - return Date.now() - } - }, - { - key: 'type', - converter: webidl.converters.DOMString, - defaultValue: '' - }, - { - key: 'endings', - converter: (value) => { - value = webidl.converters.DOMString(value); - value = value.toLowerCase(); - - if (value !== 'native') { - value = 'transparent'; - } - - return value - }, - defaultValue: 'transparent' - } - ]); - - /** - * @see https://www.w3.org/TR/FileAPI/#process-blob-parts - * @param {(NodeJS.TypedArray|Blob|string)[]} parts - * @param {{ type: string, endings: string }} options - */ - function processBlobParts (parts, options) { - // 1. Let bytes be an empty sequence of bytes. - /** @type {NodeJS.TypedArray[]} */ - const bytes = []; - - // 2. For each element in parts: - for (const element of parts) { - // 1. If element is a USVString, run the following substeps: - if (typeof element === 'string') { - // 1. Let s be element. - let s = element; - - // 2. If the endings member of options is "native", set s - // to the result of converting line endings to native - // of element. - if (options.endings === 'native') { - s = convertLineEndingsNative(s); - } - - // 3. Append the result of UTF-8 encoding s to bytes. - bytes.push(new TextEncoder().encode(s)); - } else if ( - types.isAnyArrayBuffer(element) || - types.isTypedArray(element) - ) { - // 2. If element is a BufferSource, get a copy of the - // bytes held by the buffer source, and append those - // bytes to bytes. - if (!element.buffer) { // ArrayBuffer - bytes.push(new Uint8Array(element)); - } else { - bytes.push( - new Uint8Array(element.buffer, element.byteOffset, element.byteLength) - ); - } - } else if (isBlobLike(element)) { - // 3. If element is a Blob, append the bytes it represents - // to bytes. - bytes.push(element); - } - } - - // 3. Return bytes. - return bytes - } - - /** - * @see https://www.w3.org/TR/FileAPI/#convert-line-endings-to-native - * @param {string} s - */ - function convertLineEndingsNative (s) { - // 1. Let native line ending be be the code point U+000A LF. - let nativeLineEnding = '\n'; - - // 2. If the underlying platform’s conventions are to - // represent newlines as a carriage return and line feed - // sequence, set native line ending to the code point - // U+000D CR followed by the code point U+000A LF. - if (process.platform === 'win32') { - nativeLineEnding = '\r\n'; - } - - return s.replace(/\r?\n/g, nativeLineEnding) - } - - file = { File, FileLike }; - return file; -} - -var util; -var hasRequiredUtil; - -function requireUtil () { - if (hasRequiredUtil) return util; - hasRequiredUtil = 1; - - const { redirectStatus } = requireConstants$1(); - const { performance } = require$$1$3; - const { isBlobLike, toUSVString, ReadableStreamFrom } = requireUtil$1(); - const assert = require$$0$3; - const { isUint8Array } = require$$4$2; - - let File; - - // https://nodejs.org/api/crypto.html#determining-if-crypto-support-is-unavailable - /** @type {import('crypto')|undefined} */ - let crypto; - - try { - crypto = require('crypto'); - } catch { - - } - - // https://fetch.spec.whatwg.org/#block-bad-port - const badPorts = [ - '1', '7', '9', '11', '13', '15', '17', '19', '20', '21', '22', '23', '25', '37', '42', '43', '53', '69', '77', '79', - '87', '95', '101', '102', '103', '104', '109', '110', '111', '113', '115', '117', '119', '123', '135', '137', - '139', '143', '161', '179', '389', '427', '465', '512', '513', '514', '515', '526', '530', '531', '532', - '540', '548', '554', '556', '563', '587', '601', '636', '989', '990', '993', '995', '1719', '1720', '1723', - '2049', '3659', '4045', '5060', '5061', '6000', '6566', '6665', '6666', '6667', '6668', '6669', '6697', - '10080' - ]; - - function responseURL (response) { - // https://fetch.spec.whatwg.org/#responses - // A response has an associated URL. It is a pointer to the last URL - // in response’s URL list and null if response’s URL list is empty. - const urlList = response.urlList; - const length = urlList.length; - return length === 0 ? null : urlList[length - 1].toString() - } - - // https://fetch.spec.whatwg.org/#concept-response-location-url - function responseLocationURL (response, requestFragment) { - // 1. If response’s status is not a redirect status, then return null. - if (!redirectStatus.includes(response.status)) { - return null - } - - // 2. Let location be the result of extracting header list values given - // `Location` and response’s header list. - let location = response.headersList.get('location'); - - // 3. If location is a value, then set location to the result of parsing - // location with response’s URL. - location = location ? new URL(location, responseURL(response)) : null; - - // 4. If location is a URL whose fragment is null, then set location’s - // fragment to requestFragment. - if (location && !location.hash) { - location.hash = requestFragment; - } - - // 5. Return location. - return location - } - - /** @returns {URL} */ - function requestCurrentURL (request) { - return request.urlList[request.urlList.length - 1] - } - - function requestBadPort (request) { - // 1. Let url be request’s current URL. - const url = requestCurrentURL(request); - - // 2. If url’s scheme is an HTTP(S) scheme and url’s port is a bad port, - // then return blocked. - if (/^https?:/.test(url.protocol) && badPorts.includes(url.port)) { - return 'blocked' - } - - // 3. Return allowed. - return 'allowed' - } - - function isFileLike (object) { - if (!File) { - File = requireFile().File; - } - return object instanceof File || ( - object && - (typeof object.stream === 'function' || - typeof object.arrayBuffer === 'function') && - /^(File)$/.test(object[Symbol.toStringTag]) - ) - } - - function isErrorLike (object) { - return object instanceof Error || ( - object?.constructor?.name === 'Error' || - object?.constructor?.name === 'DOMException' - ) - } - - // Check whether |statusText| is a ByteString and - // matches the Reason-Phrase token production. - // RFC 2616: https://tools.ietf.org/html/rfc2616 - // RFC 7230: https://tools.ietf.org/html/rfc7230 - // "reason-phrase = *( HTAB / SP / VCHAR / obs-text )" - // https://github.com/chromium/chromium/blob/94.0.4604.1/third_party/blink/renderer/core/fetch/response.cc#L116 - function isValidReasonPhrase (statusText) { - for (let i = 0; i < statusText.length; ++i) { - const c = statusText.charCodeAt(i); - if ( - !( - ( - c === 0x09 || // HTAB - (c >= 0x20 && c <= 0x7e) || // SP / VCHAR - (c >= 0x80 && c <= 0xff) - ) // obs-text - ) - ) { - return false - } - } - return true - } - - function isTokenChar (c) { - return !( - c >= 0x7f || - c <= 0x20 || - c === '(' || - c === ')' || - c === '<' || - c === '>' || - c === '@' || - c === ',' || - c === ';' || - c === ':' || - c === '\\' || - c === '"' || - c === '/' || - c === '[' || - c === ']' || - c === '?' || - c === '=' || - c === '{' || - c === '}' - ) - } - - // See RFC 7230, Section 3.2.6. - // https://github.com/chromium/chromium/blob/d7da0240cae77824d1eda25745c4022757499131/third_party/blink/renderer/platform/network/http_parsers.cc#L321 - function isValidHTTPToken (characters) { - if (!characters || typeof characters !== 'string') { - return false - } - for (let i = 0; i < characters.length; ++i) { - const c = characters.charCodeAt(i); - if (c > 0x7f || !isTokenChar(c)) { - return false - } - } - return true - } - - // https://fetch.spec.whatwg.org/#header-name - // https://github.com/chromium/chromium/blob/b3d37e6f94f87d59e44662d6078f6a12de845d17/net/http/http_util.cc#L342 - function isValidHeaderName (potentialValue) { - if (potentialValue.length === 0) { - return false - } - - for (const char of potentialValue) { - if (!isValidHTTPToken(char)) { - return false - } - } - - return true - } - - /** - * @see https://fetch.spec.whatwg.org/#header-value - * @param {string} potentialValue - */ - function isValidHeaderValue (potentialValue) { - // - Has no leading or trailing HTTP tab or space bytes. - // - Contains no 0x00 (NUL) or HTTP newline bytes. - if ( - potentialValue.startsWith('\t') || - potentialValue.startsWith(' ') || - potentialValue.endsWith('\t') || - potentialValue.endsWith(' ') - ) { - return false - } - - if ( - potentialValue.includes('\0') || - potentialValue.includes('\r') || - potentialValue.includes('\n') - ) { - return false - } - - return true - } - - // https://w3c.github.io/webappsec-referrer-policy/#set-requests-referrer-policy-on-redirect - function setRequestReferrerPolicyOnRedirect (request, actualResponse) { - } - - // https://fetch.spec.whatwg.org/#cross-origin-resource-policy-check - function crossOriginResourcePolicyCheck () { - // TODO - return 'allowed' - } - - // https://fetch.spec.whatwg.org/#concept-cors-check - function corsCheck () { - // TODO - return 'success' - } - - // https://fetch.spec.whatwg.org/#concept-tao-check - function TAOCheck () { - // TODO - return 'success' - } - - function appendFetchMetadata (httpRequest) { - // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-dest-header - // TODO - - // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-mode-header - - // 1. Assert: r’s url is a potentially trustworthy URL. - // TODO - - // 2. Let header be a Structured Header whose value is a token. - let header = null; - - // 3. Set header’s value to r’s mode. - header = httpRequest.mode; - - // 4. Set a structured field value `Sec-Fetch-Mode`/header in r’s header list. - httpRequest.headersList.set('sec-fetch-mode', header); - - // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-site-header - // TODO - - // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-user-header - // TODO - } - - // https://fetch.spec.whatwg.org/#append-a-request-origin-header - function appendRequestOriginHeader (request) { - // 1. Let serializedOrigin be the result of byte-serializing a request origin with request. - let serializedOrigin = request.origin; - - // 2. If request’s response tainting is "cors" or request’s mode is "websocket", then append (`Origin`, serializedOrigin) to request’s header list. - if (request.responseTainting === 'cors' || request.mode === 'websocket') { - if (serializedOrigin) { - request.headersList.append('Origin', serializedOrigin); - } - - // 3. Otherwise, if request’s method is neither `GET` nor `HEAD`, then: - } else if (request.method !== 'GET' && request.method !== 'HEAD') { - // 1. Switch on request’s referrer policy: - switch (request.referrerPolicy) { - case 'no-referrer': - // Set serializedOrigin to `null`. - serializedOrigin = null; - break - case 'no-referrer-when-downgrade': - case 'strict-origin': - case 'strict-origin-when-cross-origin': - // If request’s origin is a tuple origin, its scheme is "https", and request’s current URL’s scheme is not "https", then set serializedOrigin to `null`. - if (/^https:/.test(request.origin) && !/^https:/.test(requestCurrentURL(request))) { - serializedOrigin = null; - } - break - case 'same-origin': - // If request’s origin is not same origin with request’s current URL’s origin, then set serializedOrigin to `null`. - if (!sameOrigin(request, requestCurrentURL(request))) { - serializedOrigin = null; - } - break - // Do nothing. - } - - if (serializedOrigin) { - // 2. Append (`Origin`, serializedOrigin) to request’s header list. - request.headersList.append('Origin', serializedOrigin); - } - } - } - - function coarsenedSharedCurrentTime (crossOriginIsolatedCapability) { - // TODO - return performance.now() - } - - // https://fetch.spec.whatwg.org/#create-an-opaque-timing-info - function createOpaqueTimingInfo (timingInfo) { - return { - startTime: timingInfo.startTime ?? 0, - redirectStartTime: 0, - redirectEndTime: 0, - postRedirectStartTime: timingInfo.startTime ?? 0, - finalServiceWorkerStartTime: 0, - finalNetworkResponseStartTime: 0, - finalNetworkRequestStartTime: 0, - endTime: 0, - encodedBodySize: 0, - decodedBodySize: 0, - finalConnectionTimingInfo: null - } - } - - // https://html.spec.whatwg.org/multipage/origin.html#policy-container - function makePolicyContainer () { - // TODO - return {} - } - - // https://html.spec.whatwg.org/multipage/origin.html#clone-a-policy-container - function clonePolicyContainer () { - // TODO - return {} - } - - // https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer - function determineRequestsReferrer (request) { - // TODO - return 'no-referrer' - } - - /** - * @see https://w3c.github.io/webappsec-subresource-integrity/#does-response-match-metadatalist - * @param {Uint8Array} bytes - * @param {string} metadataList - */ - function bytesMatch (bytes, metadataList) { - // If node is not built with OpenSSL support, we cannot check - // a request's integrity, so allow it by default (the spec will - // allow requests if an invalid hash is given, as precedence). - /* istanbul ignore if: only if node is built with --without-ssl */ - if (crypto === undefined) { - return true - } - - // 1. Let parsedMetadata be the result of parsing metadataList. - const parsedMetadata = parseMetadata(metadataList); - - // 2. If parsedMetadata is no metadata, return true. - if (parsedMetadata === 'no metadata') { - return true - } - - // 3. If parsedMetadata is the empty set, return true. - if (parsedMetadata.length === 0) { - return true - } - - // 4. Let metadata be the result of getting the strongest - // metadata from parsedMetadata. - // Note: this will only work for SHA- algorithms and it's lazy *at best*. - const metadata = parsedMetadata.sort((c, d) => d.algo.localeCompare(c.algo)); - - // 5. For each item in metadata: - for (const item of metadata) { - // 1. Let algorithm be the alg component of item. - const algorithm = item.algo; - - // 2. Let expectedValue be the val component of item. - const expectedValue = item.hash; - - // 3. Let actualValue be the result of applying algorithm to bytes. - // Note: "applying algorithm to bytes" converts the result to base64 - const actualValue = crypto.createHash(algorithm).update(bytes).digest('base64'); - - // 4. If actualValue is a case-sensitive match for expectedValue, - // return true. - if (actualValue === expectedValue) { - return true +function requireGraphqlWs () { + if (hasRequiredGraphqlWs) return graphqlWs; + hasRequiredGraphqlWs = 1; + var __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + }; + var __awaiter = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + var __generator = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } - } - - // 6. Return false. - return false - } - - // https://w3c.github.io/webappsec-subresource-integrity/#grammardef-hash-with-options - // hash-algo is defined in Content Security Policy 2 Section 4.2 - // base64-value is similary defined there - // VCHAR is defined https://www.rfc-editor.org/rfc/rfc5234#appendix-B.1 - const parseHashWithOptions = /((?sha256|sha384|sha512)-(?[A-z0-9+/]{1}.*={1,2}))( +[\x21-\x7e]?)?/i; - - /** - * @see https://w3c.github.io/webappsec-subresource-integrity/#parse-metadata - * @param {string} metadata - */ - function parseMetadata (metadata) { - // 1. Let result be the empty set. - /** @type {{ algo: string, hash: string }[]} */ - const result = []; - - // 2. Let empty be equal to true. - let empty = true; - - const supportedHashes = crypto.getHashes(); - - // 3. For each token returned by splitting metadata on spaces: - for (const token of metadata.split(' ')) { - // 1. Set empty to false. - empty = false; - - // 2. Parse token as a hash-with-options. - const parsedToken = parseHashWithOptions.exec(token); - - // 3. If token does not parse, continue to the next token. - if (parsedToken === null || parsedToken.groups === undefined) { - // Note: Chromium blocks the request at this point, but Firefox - // gives a warning that an invalid integrity was given. The - // correct behavior is to ignore these, and subsequently not - // check the integrity of the resource. - continue + }; + Object.defineProperty(graphqlWs, "__esModule", { value: true }); + graphqlWs.GraphQLWebSocketClient = void 0; + var types_1 = types; + var _1 = requireDist(); + var CONNECTION_INIT = 'connection_init'; + var CONNECTION_ACK = 'connection_ack'; + var PING = 'ping'; + var PONG = 'pong'; + var SUBSCRIBE = 'subscribe'; + var NEXT = 'next'; + var ERROR = 'error'; + var COMPLETE = 'complete'; + var GraphQLWebSocketMessage = /** @class */ (function () { + function GraphQLWebSocketMessage(type, payload, id) { + this._type = type; + this._payload = payload; + this._id = id; } - - // 4. Let algorithm be the hash-algo component of token. - const algorithm = parsedToken.groups.algo; - - // 5. If algorithm is a hash function recognized by the user - // agent, add the parsed token to result. - if (supportedHashes.includes(algorithm.toLowerCase())) { - result.push(parsedToken.groups); + Object.defineProperty(GraphQLWebSocketMessage.prototype, "type", { + get: function () { + return this._type; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(GraphQLWebSocketMessage.prototype, "id", { + get: function () { + return this._id; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(GraphQLWebSocketMessage.prototype, "payload", { + get: function () { + return this._payload; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(GraphQLWebSocketMessage.prototype, "text", { + get: function () { + var result = { type: this.type }; + if (this.id != null && this.id != undefined) + result.id = this.id; + if (this.payload != null && this.payload != undefined) + result.payload = this.payload; + return JSON.stringify(result); + }, + enumerable: false, + configurable: true + }); + GraphQLWebSocketMessage.parse = function (data, f) { + var _a = JSON.parse(data), type = _a.type, payload = _a.payload, id = _a.id; + return new GraphQLWebSocketMessage(type, f(payload), id); + }; + return GraphQLWebSocketMessage; + }()); + var GraphQLWebSocketClient = /** @class */ (function () { + function GraphQLWebSocketClient(socket, _a) { + var _this = this; + var onInit = _a.onInit, onAcknowledged = _a.onAcknowledged, onPing = _a.onPing, onPong = _a.onPong; + this.socketState = { acknowledged: false, lastRequestId: 0, subscriptions: {} }; + this.socket = socket; + socket.onopen = function (e) { return __awaiter(_this, void 0, void 0, function () { + var _a, _b, _c, _d; + return __generator(this, function (_e) { + switch (_e.label) { + case 0: + this.socketState.acknowledged = false; + this.socketState.subscriptions = {}; + _b = (_a = socket).send; + _c = ConnectionInit; + if (!onInit) return [3 /*break*/, 2]; + return [4 /*yield*/, onInit()]; + case 1: + _d = _e.sent(); + return [3 /*break*/, 3]; + case 2: + _d = null; + _e.label = 3; + case 3: + _b.apply(_a, [_c.apply(void 0, [_d]).text]); + return [2 /*return*/]; + } + }); + }); }; + socket.onclose = function (e) { + _this.socketState.acknowledged = false; + _this.socketState.subscriptions = {}; + }; + socket.onerror = function (e) { + console.error(e); + }; + socket.onmessage = function (e) { + try { + var message = parseMessage(e.data); + switch (message.type) { + case CONNECTION_ACK: { + if (_this.socketState.acknowledged) { + console.warn('Duplicate CONNECTION_ACK message ignored'); + } + else { + _this.socketState.acknowledged = true; + if (onAcknowledged) + onAcknowledged(message.payload); + } + return; + } + case PING: { + if (onPing) + onPing(message.payload).then(function (r) { return socket.send(Pong(r).text); }); + else + socket.send(Pong(null).text); + return; + } + case PONG: { + if (onPong) + onPong(message.payload); + return; + } + } + if (!_this.socketState.acknowledged) { + // Web-socket connection not acknowledged + return; + } + if (message.id === undefined || message.id === null || !_this.socketState.subscriptions[message.id]) { + // No subscription identifer or subscription indentifier is not found + return; + } + var _a = _this.socketState.subscriptions[message.id], query = _a.query, variables = _a.variables, subscriber = _a.subscriber; + switch (message.type) { + case NEXT: { + if (!message.payload.errors && message.payload.data) { + subscriber.next && subscriber.next(message.payload.data); + } + if (message.payload.errors) { + subscriber.error && + subscriber.error(new types_1.ClientError(__assign(__assign({}, message.payload), { status: 200 }), { query: query, variables: variables })); + } + else { + } + return; + } + case ERROR: { + subscriber.error && + subscriber.error(new types_1.ClientError({ errors: message.payload, status: 200 }, { query: query, variables: variables })); + return; + } + case COMPLETE: { + subscriber.complete && subscriber.complete(); + delete _this.socketState.subscriptions[message.id]; + return; + } + } + } + catch (e) { + // Unexpected errors while handling graphql-ws message + console.error(e); + socket.close(1006); + } + socket.close(4400, 'Unknown graphql-ws message.'); + }; } - } - - // 4. Return no metadata if empty is true, otherwise return result. - if (empty === true) { - return 'no metadata' - } - - return result - } - - // https://w3c.github.io/webappsec-upgrade-insecure-requests/#upgrade-request - function tryUpgradeRequestToAPotentiallyTrustworthyURL (request) { - // TODO - } - - /** - * @link {https://html.spec.whatwg.org/multipage/origin.html#same-origin} - * @param {URL} A - * @param {URL} B - */ - function sameOrigin (A, B) { - // 1. If A and B are the same opaque origin, then return true. - // "opaque origin" is an internal value we cannot access, ignore. - - // 2. If A and B are both tuple origins and their schemes, - // hosts, and port are identical, then return true. - if (A.protocol === B.protocol && A.hostname === B.hostname && A.port === B.port) { - return true - } - - // 3. Return false. - return false - } - - function createDeferredPromise () { - let res; - let rej; - const promise = new Promise((resolve, reject) => { - res = resolve; - rej = reject; - }); - - return { promise, resolve: res, reject: rej } + GraphQLWebSocketClient.prototype.makeSubscribe = function (query, operationName, variables, subscriber) { + var _this = this; + var subscriptionId = (this.socketState.lastRequestId++).toString(); + this.socketState.subscriptions[subscriptionId] = { query: query, variables: variables, subscriber: subscriber }; + this.socket.send(Subscribe(subscriptionId, { query: query, operationName: operationName, variables: variables }).text); + return function () { + _this.socket.send(Complete(subscriptionId).text); + delete _this.socketState.subscriptions[subscriptionId]; + }; + }; + GraphQLWebSocketClient.prototype.rawRequest = function (query, variables) { + var _this = this; + return new Promise(function (resolve, reject) { + var result; + _this.rawSubscribe(query, { + next: function (data, extensions) { return (result = { data: data, extensions: extensions }); }, + error: reject, + complete: function () { return resolve(result); }, + }, variables); + }); + }; + GraphQLWebSocketClient.prototype.request = function (document, variables) { + var _this = this; + return new Promise(function (resolve, reject) { + var result; + _this.subscribe(document, { + next: function (data) { return (result = data); }, + error: reject, + complete: function () { return resolve(result); }, + }, variables); + }); + }; + GraphQLWebSocketClient.prototype.subscribe = function (document, subscriber, variables) { + var _a = _1.resolveRequestDocument(document), query = _a.query, operationName = _a.operationName; + return this.makeSubscribe(query, operationName, variables, subscriber); + }; + GraphQLWebSocketClient.prototype.rawSubscribe = function (query, subscriber, variables) { + return this.makeSubscribe(query, undefined, variables, subscriber); + }; + GraphQLWebSocketClient.prototype.ping = function (payload) { + this.socket.send(Ping(payload).text); + }; + GraphQLWebSocketClient.prototype.close = function () { + this.socket.close(1000); + }; + GraphQLWebSocketClient.PROTOCOL = 'graphql-transport-ws'; + return GraphQLWebSocketClient; + }()); + graphqlWs.GraphQLWebSocketClient = GraphQLWebSocketClient; + // Helper functions + function parseMessage(data, f) { + if (f === void 0) { f = function (a) { return a; }; } + var m = GraphQLWebSocketMessage.parse(data, f); + return m; } - - function isAborted (fetchParams) { - return fetchParams.controller.state === 'aborted' + function ConnectionInit(payload) { + return new GraphQLWebSocketMessage(CONNECTION_INIT, payload); } - - function isCancelled (fetchParams) { - return fetchParams.controller.state === 'aborted' || - fetchParams.controller.state === 'terminated' + function Ping(payload) { + return new GraphQLWebSocketMessage(PING, payload, undefined); } - - // https://fetch.spec.whatwg.org/#concept-method-normalize - function normalizeMethod (method) { - return /^(DELETE|GET|HEAD|OPTIONS|POST|PUT)$/i.test(method) - ? method.toUpperCase() - : method + function Pong(payload) { + return new GraphQLWebSocketMessage(PONG, payload, undefined); } - - // https://infra.spec.whatwg.org/#serialize-a-javascript-value-to-a-json-string - function serializeJavascriptValueToJSONString (value) { - // 1. Let result be ? Call(%JSON.stringify%, undefined, « value »). - const result = JSON.stringify(value); - - // 2. If result is undefined, then throw a TypeError. - if (result === undefined) { - throw new TypeError('Value is not JSON serializable') - } - - // 3. Assert: result is a string. - assert(typeof result === 'string'); - - // 4. Return result. - return result + function Subscribe(id, payload) { + return new GraphQLWebSocketMessage(SUBSCRIBE, payload, id); } - - // https://tc39.es/ecma262/#sec-%25iteratorprototype%25-object - const esIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())); - - // https://webidl.spec.whatwg.org/#dfn-iterator-prototype-object - function makeIterator (iterator, name) { - const i = { - next () { - if (Object.getPrototypeOf(this) !== i) { - throw new TypeError( - `'next' called on an object that does not implement interface ${name} Iterator.` - ) - } - - return iterator.next() - }, - // The class string of an iterator prototype object for a given interface is the - // result of concatenating the identifier of the interface and the string " Iterator". - [Symbol.toStringTag]: `${name} Iterator` - }; - - // The [[Prototype]] internal slot of an iterator prototype object must be %IteratorPrototype%. - Object.setPrototypeOf(i, esIteratorPrototype); - // esIteratorPrototype needs to be the prototype of i - // which is the prototype of an empty object. Yes, it's confusing. - return Object.setPrototypeOf({}, i) + function Complete(id) { + return new GraphQLWebSocketMessage(COMPLETE, undefined, id); } + + return graphqlWs; +} - /** - * @see https://fetch.spec.whatwg.org/#body-fully-read - */ - async function fullyReadBody (body, processBody, processBodyError) { - // 1. If taskDestination is null, then set taskDestination to - // the result of starting a new parallel queue. - - // 2. Let promise be the result of fully reading body as promise - // given body. - try { - /** @type {Uint8Array[]} */ - const chunks = []; - let length = 0; - - const reader = body.stream.getReader(); - - while (true) { - const { done, value } = await reader.read(); - - if (done === true) { - break - } - - // read-loop chunk steps - assert(isUint8Array(value)); - - chunks.push(value); - length += value.byteLength; - } - - // 3. Let fulfilledSteps given a byte sequence bytes be to queue - // a fetch task to run processBody given bytes, with - // taskDestination. - const fulfilledSteps = (bytes) => queueMicrotask(() => { - processBody(bytes); - }); - - fulfilledSteps(Buffer.concat(chunks, length)); - } catch (err) { - // 4. Let rejectedSteps be to queue a fetch task to run - // processBodyError, with taskDestination. - queueMicrotask(() => processBodyError(err)); - } - - // 5. React to promise with fulfilledSteps and rejectedSteps. - } +var hasRequiredDist; - /** - * Fetch supports node >= 16.8.0, but Object.hasOwn was added in v16.9.0. - */ - const hasOwn = Object.hasOwn || ((dict, key) => Object.prototype.hasOwnProperty.call(dict, key)); - - util = { - isAborted, - isCancelled, - createDeferredPromise, - ReadableStreamFrom, - toUSVString, - tryUpgradeRequestToAPotentiallyTrustworthyURL, - coarsenedSharedCurrentTime, - determineRequestsReferrer, - makePolicyContainer, - clonePolicyContainer, - appendFetchMetadata, - appendRequestOriginHeader, - TAOCheck, - corsCheck, - crossOriginResourcePolicyCheck, - createOpaqueTimingInfo, - setRequestReferrerPolicyOnRedirect, - isValidHTTPToken, - requestBadPort, - requestCurrentURL, - responseURL, - responseLocationURL, - isBlobLike, - isFileLike, - isValidReasonPhrase, - sameOrigin, - normalizeMethod, - serializeJavascriptValueToJSONString, - makeIterator, - isValidHeaderName, - isValidHeaderValue, - hasOwn, - isErrorLike, - fullyReadBody, - bytesMatch - }; - return util; +function requireDist () { + if (hasRequiredDist) return dist; + hasRequiredDist = 1; + (function (exports) { + var __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + }; + var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); + }) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; + })); + var __setModuleDefault = (commonjsGlobal && commonjsGlobal.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + }) : function(o, v) { + o["default"] = v; + }); + var __importStar = (commonjsGlobal && commonjsGlobal.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; + }; + var __awaiter = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + var __generator = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } + }; + var __rest = (commonjsGlobal && commonjsGlobal.__rest) || function (s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; + }; + var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.GraphQLWebSocketClient = exports.gql = exports.resolveRequestDocument = exports.batchRequests = exports.request = exports.rawRequest = exports.GraphQLClient = exports.ClientError = void 0; + var cross_fetch_1 = __importStar(browserPonyfill.exports), CrossFetch = cross_fetch_1; + var parser_1 = require$$1; + var printer_1 = require$$2; + var createRequestBody_1 = __importDefault(createRequestBody$1); + var defaultJsonSerializer_1 = defaultJsonSerializer; + var parseArgs_1 = parseArgs; + var types_1 = types; + Object.defineProperty(exports, "ClientError", { enumerable: true, get: function () { return types_1.ClientError; } }); + /** + * Convert the given headers configuration into a plain object. + */ + var resolveHeaders = function (headers) { + var oHeaders = {}; + if (headers) { + if ((typeof Headers !== 'undefined' && headers instanceof Headers) || + (CrossFetch && CrossFetch.Headers && headers instanceof CrossFetch.Headers)) { + oHeaders = HeadersInstanceToPlainObject(headers); + } + else if (Array.isArray(headers)) { + headers.forEach(function (_a) { + var name = _a[0], value = _a[1]; + oHeaders[name] = value; + }); + } + else { + oHeaders = headers; + } + } + return oHeaders; + }; + /** + * Clean a GraphQL document to send it via a GET query + * + * @param {string} str GraphQL query + * @returns {string} Cleaned query + */ + var queryCleanner = function (str) { return str.replace(/([\s,]|#[^\n\r]+)+/g, ' ').trim(); }; + /** + * Create query string for GraphQL request + * + * @param {object} param0 - + * + * @param {string|string[]} param0.query the GraphQL document or array of document if it's a batch request + * @param {string|undefined} param0.operationName the GraphQL operation name + * @param {any|any[]} param0.variables the GraphQL variables to use + */ + var buildGetQueryParams = function (_a) { + var query = _a.query, variables = _a.variables, operationName = _a.operationName, jsonSerializer = _a.jsonSerializer; + if (!Array.isArray(query)) { + var search = ["query=" + encodeURIComponent(queryCleanner(query))]; + if (variables) { + search.push("variables=" + encodeURIComponent(jsonSerializer.stringify(variables))); + } + if (operationName) { + search.push("operationName=" + encodeURIComponent(operationName)); + } + return search.join('&'); + } + if (typeof variables !== 'undefined' && !Array.isArray(variables)) { + throw new Error('Cannot create query with given variable type, array expected'); + } + // Batch support + var payload = query.reduce(function (accu, currentQuery, index) { + accu.push({ + query: queryCleanner(currentQuery), + variables: variables ? jsonSerializer.stringify(variables[index]) : undefined, + }); + return accu; + }, []); + return "query=" + encodeURIComponent(jsonSerializer.stringify(payload)); + }; + /** + * Fetch data using POST method + */ + var post = function (_a) { + var url = _a.url, query = _a.query, variables = _a.variables, operationName = _a.operationName, headers = _a.headers, fetch = _a.fetch, fetchOptions = _a.fetchOptions, middleware = _a.middleware; + return __awaiter(void 0, void 0, void 0, function () { + var body, options; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + body = createRequestBody_1.default(query, variables, operationName, fetchOptions.jsonSerializer); + options = __assign({ method: 'POST', headers: __assign(__assign({}, (typeof body === 'string' ? { 'Content-Type': 'application/json' } : {})), headers), body: body }, fetchOptions); + if (!middleware) return [3 /*break*/, 2]; + return [4 /*yield*/, Promise.resolve(middleware(options))]; + case 1: + options = _b.sent(); + _b.label = 2; + case 2: return [4 /*yield*/, fetch(url, options)]; + case 3: return [2 /*return*/, _b.sent()]; + } + }); + }); + }; + /** + * Fetch data using GET method + */ + var get = function (_a) { + var url = _a.url, query = _a.query, variables = _a.variables, operationName = _a.operationName, headers = _a.headers, fetch = _a.fetch, fetchOptions = _a.fetchOptions, middleware = _a.middleware; + return __awaiter(void 0, void 0, void 0, function () { + var queryParams, options; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + queryParams = buildGetQueryParams({ + query: query, + variables: variables, + operationName: operationName, + jsonSerializer: fetchOptions.jsonSerializer, + }); + options = __assign({ method: 'GET', headers: headers }, fetchOptions); + if (!middleware) return [3 /*break*/, 2]; + return [4 /*yield*/, Promise.resolve(middleware(options))]; + case 1: + options = _b.sent(); + _b.label = 2; + case 2: return [4 /*yield*/, fetch(url + "?" + queryParams, options)]; + case 3: return [2 /*return*/, _b.sent()]; + } + }); + }); + }; + /** + * GraphQL Client. + */ + var GraphQLClient = /** @class */ (function () { + function GraphQLClient(url, options) { + if (options === void 0) { options = {}; } + this.url = url; + this.options = options; + } + GraphQLClient.prototype.rawRequest = function (queryOrOptions, variables, requestHeaders) { + return __awaiter(this, void 0, void 0, function () { + var rawRequestOptions, _a, headers, _b, fetch, _c, method, requestMiddleware, responseMiddleware, fetchOptions, url, operationName; + return __generator(this, function (_d) { + rawRequestOptions = parseArgs_1.parseRawRequestArgs(queryOrOptions, variables, requestHeaders); + _a = this.options, headers = _a.headers, _b = _a.fetch, fetch = _b === void 0 ? cross_fetch_1.default : _b, _c = _a.method, method = _c === void 0 ? 'POST' : _c, requestMiddleware = _a.requestMiddleware, responseMiddleware = _a.responseMiddleware, fetchOptions = __rest(_a, ["headers", "fetch", "method", "requestMiddleware", "responseMiddleware"]); + url = this.url; + if (rawRequestOptions.signal !== undefined) { + fetchOptions.signal = rawRequestOptions.signal; + } + operationName = resolveRequestDocument(rawRequestOptions.query).operationName; + return [2 /*return*/, makeRequest({ + url: url, + query: rawRequestOptions.query, + variables: rawRequestOptions.variables, + headers: __assign(__assign({}, resolveHeaders(callOrIdentity(headers))), resolveHeaders(rawRequestOptions.requestHeaders)), + operationName: operationName, + fetch: fetch, + method: method, + fetchOptions: fetchOptions, + middleware: requestMiddleware, + }) + .then(function (response) { + if (responseMiddleware) { + responseMiddleware(response); + } + return response; + }) + .catch(function (error) { + if (responseMiddleware) { + responseMiddleware(error); + } + throw error; + })]; + }); + }); + }; + GraphQLClient.prototype.request = function (documentOrOptions) { + var variablesAndRequestHeaders = []; + for (var _i = 1; _i < arguments.length; _i++) { + variablesAndRequestHeaders[_i - 1] = arguments[_i]; + } + var variables = variablesAndRequestHeaders[0], requestHeaders = variablesAndRequestHeaders[1]; + var requestOptions = parseArgs_1.parseRequestArgs(documentOrOptions, variables, requestHeaders); + var _a = this.options, headers = _a.headers, _b = _a.fetch, fetch = _b === void 0 ? cross_fetch_1.default : _b, _c = _a.method, method = _c === void 0 ? 'POST' : _c, requestMiddleware = _a.requestMiddleware, responseMiddleware = _a.responseMiddleware, fetchOptions = __rest(_a, ["headers", "fetch", "method", "requestMiddleware", "responseMiddleware"]); + var url = this.url; + if (requestOptions.signal !== undefined) { + fetchOptions.signal = requestOptions.signal; + } + var _d = resolveRequestDocument(requestOptions.document), query = _d.query, operationName = _d.operationName; + return makeRequest({ + url: url, + query: query, + variables: requestOptions.variables, + headers: __assign(__assign({}, resolveHeaders(callOrIdentity(headers))), resolveHeaders(requestOptions.requestHeaders)), + operationName: operationName, + fetch: fetch, + method: method, + fetchOptions: fetchOptions, + middleware: requestMiddleware, + }) + .then(function (response) { + if (responseMiddleware) { + responseMiddleware(response); + } + return response.data; + }) + .catch(function (error) { + if (responseMiddleware) { + responseMiddleware(error); + } + throw error; + }); + }; + GraphQLClient.prototype.batchRequests = function (documentsOrOptions, requestHeaders) { + var batchRequestOptions = parseArgs_1.parseBatchRequestArgs(documentsOrOptions, requestHeaders); + var _a = this.options, headers = _a.headers, _b = _a.fetch, fetch = _b === void 0 ? cross_fetch_1.default : _b, _c = _a.method, method = _c === void 0 ? 'POST' : _c, requestMiddleware = _a.requestMiddleware, responseMiddleware = _a.responseMiddleware, fetchOptions = __rest(_a, ["headers", "fetch", "method", "requestMiddleware", "responseMiddleware"]); + var url = this.url; + if (batchRequestOptions.signal !== undefined) { + fetchOptions.signal = batchRequestOptions.signal; + } + var queries = batchRequestOptions.documents.map(function (_a) { + var document = _a.document; + return resolveRequestDocument(document).query; + }); + var variables = batchRequestOptions.documents.map(function (_a) { + var variables = _a.variables; + return variables; + }); + return makeRequest({ + url: url, + query: queries, + variables: variables, + headers: __assign(__assign({}, resolveHeaders(callOrIdentity(headers))), resolveHeaders(batchRequestOptions.requestHeaders)), + operationName: undefined, + fetch: fetch, + method: method, + fetchOptions: fetchOptions, + middleware: requestMiddleware, + }) + .then(function (response) { + if (responseMiddleware) { + responseMiddleware(response); + } + return response.data; + }) + .catch(function (error) { + if (responseMiddleware) { + responseMiddleware(error); + } + throw error; + }); + }; + GraphQLClient.prototype.setHeaders = function (headers) { + this.options.headers = headers; + return this; + }; + /** + * Attach a header to the client. All subsequent requests will have this header. + */ + GraphQLClient.prototype.setHeader = function (key, value) { + var _a; + var headers = this.options.headers; + if (headers) { + // todo what if headers is in nested array form... ? + //@ts-ignore + headers[key] = value; + } + else { + this.options.headers = (_a = {}, _a[key] = value, _a); + } + return this; + }; + /** + * Change the client endpoint. All subsequent requests will send to this endpoint. + */ + GraphQLClient.prototype.setEndpoint = function (value) { + this.url = value; + return this; + }; + return GraphQLClient; + }()); + exports.GraphQLClient = GraphQLClient; + function makeRequest(_a) { + var url = _a.url, query = _a.query, variables = _a.variables, headers = _a.headers, operationName = _a.operationName, fetch = _a.fetch, _b = _a.method, method = _b === void 0 ? 'POST' : _b, fetchOptions = _a.fetchOptions, middleware = _a.middleware; + return __awaiter(this, void 0, void 0, function () { + var fetcher, isBathchingQuery, response, result, successfullyReceivedData, successfullyPassedErrorPolicy, headers_1, status_1, rest, data, errorResult; + return __generator(this, function (_c) { + switch (_c.label) { + case 0: + fetcher = method.toUpperCase() === 'POST' ? post : get; + isBathchingQuery = Array.isArray(query); + return [4 /*yield*/, fetcher({ + url: url, + query: query, + variables: variables, + operationName: operationName, + headers: headers, + fetch: fetch, + fetchOptions: fetchOptions, + middleware: middleware, + })]; + case 1: + response = _c.sent(); + return [4 /*yield*/, getResult(response, fetchOptions.jsonSerializer)]; + case 2: + result = _c.sent(); + successfullyReceivedData = isBathchingQuery && Array.isArray(result) ? !result.some(function (_a) { + var data = _a.data; + return !data; + }) : !!result.data; + successfullyPassedErrorPolicy = !result.errors || fetchOptions.errorPolicy === 'all' || fetchOptions.errorPolicy === 'ignore'; + if (response.ok && successfullyPassedErrorPolicy && successfullyReceivedData) { + headers_1 = response.headers, status_1 = response.status; + result.errors, rest = __rest(result, ["errors"]); + data = fetchOptions.errorPolicy === 'ignore' ? rest : result; + return [2 /*return*/, __assign(__assign({}, (isBathchingQuery ? { data: data } : data)), { headers: headers_1, status: status_1 })]; + } + else { + errorResult = typeof result === 'string' ? { error: result } : result; + throw new types_1.ClientError(__assign(__assign({}, errorResult), { status: response.status, headers: response.headers }), { query: query, variables: variables }); + } + } + }); + }); + } + function rawRequest(urlOrOptions, query, variables, requestHeaders) { + return __awaiter(this, void 0, void 0, function () { + var requestOptions, client; + return __generator(this, function (_a) { + requestOptions = parseArgs_1.parseRawRequestExtendedArgs(urlOrOptions, query, variables, requestHeaders); + client = new GraphQLClient(requestOptions.url); + return [2 /*return*/, client.rawRequest(__assign({}, requestOptions))]; + }); + }); + } + exports.rawRequest = rawRequest; + function request(urlOrOptions, document) { + var variablesAndRequestHeaders = []; + for (var _i = 2; _i < arguments.length; _i++) { + variablesAndRequestHeaders[_i - 2] = arguments[_i]; + } + return __awaiter(this, void 0, void 0, function () { + var variables, requestHeaders, requestOptions, client; + return __generator(this, function (_a) { + variables = variablesAndRequestHeaders[0], requestHeaders = variablesAndRequestHeaders[1]; + requestOptions = parseArgs_1.parseRequestExtendedArgs(urlOrOptions, document, variables, requestHeaders); + client = new GraphQLClient(requestOptions.url); + return [2 /*return*/, client.request(__assign({}, requestOptions))]; + }); + }); + } + exports.request = request; + function batchRequests(urlOrOptions, documents, requestHeaders) { + return __awaiter(this, void 0, void 0, function () { + var requestOptions, client; + return __generator(this, function (_a) { + requestOptions = parseArgs_1.parseBatchRequestsExtendedArgs(urlOrOptions, documents, requestHeaders); + client = new GraphQLClient(requestOptions.url); + return [2 /*return*/, client.batchRequests(__assign({}, requestOptions))]; + }); + }); + } + exports.batchRequests = batchRequests; + exports.default = request; + /** + * todo + */ + function getResult(response, jsonSerializer) { + if (jsonSerializer === void 0) { jsonSerializer = defaultJsonSerializer_1.defaultJsonSerializer; } + return __awaiter(this, void 0, void 0, function () { + var contentType, _a, _b; + return __generator(this, function (_c) { + switch (_c.label) { + case 0: + response.headers.forEach(function (value, key) { + if (key.toLowerCase() === 'content-type') { + contentType = value; + } + }); + if (!(contentType && contentType.toLowerCase().startsWith('application/json'))) return [3 /*break*/, 2]; + _b = (_a = jsonSerializer).parse; + return [4 /*yield*/, response.text()]; + case 1: return [2 /*return*/, _b.apply(_a, [_c.sent()])]; + case 2: return [2 /*return*/, response.text()]; + } + }); + }); + } + /** + * helpers + */ + function extractOperationName(document) { + var _a; + var operationName = undefined; + var operationDefinitions = document.definitions.filter(function (definition) { return definition.kind === 'OperationDefinition'; }); + if (operationDefinitions.length === 1) { + operationName = (_a = operationDefinitions[0].name) === null || _a === void 0 ? void 0 : _a.value; + } + return operationName; + } + function resolveRequestDocument(document) { + if (typeof document === 'string') { + var operationName_1 = undefined; + try { + var parsedDocument = parser_1.parse(document); + operationName_1 = extractOperationName(parsedDocument); + } + catch (err) { + // Failed parsing the document, the operationName will be undefined + } + return { query: document, operationName: operationName_1 }; + } + var operationName = extractOperationName(document); + return { query: printer_1.print(document), operationName: operationName }; + } + exports.resolveRequestDocument = resolveRequestDocument; + function callOrIdentity(value) { + return typeof value === 'function' ? value() : value; + } + /** + * Convenience passthrough template tag to get the benefits of tooling for the gql template tag. This does not actually parse the input into a GraphQL DocumentNode like graphql-tag package does. It just returns the string with any variables given interpolated. Can save you a bit of performance and having to install another package. + * + * @example + * + * import { gql } from 'graphql-request' + * + * await request('https://foo.bar/graphql', gql`...`) + * + * @remarks + * + * Several tools in the Node GraphQL ecosystem are hardcoded to specially treat any template tag named "gql". For example see this prettier issue: https://github.com/prettier/prettier/issues/4360. Using this template tag has no runtime effect beyond variable interpolation. + */ + function gql(chunks) { + var variables = []; + for (var _i = 1; _i < arguments.length; _i++) { + variables[_i - 1] = arguments[_i]; + } + return chunks.reduce(function (accumulator, chunk, index) { return "" + accumulator + chunk + (index in variables ? variables[index] : ''); }, ''); + } + exports.gql = gql; + /** + * Convert Headers instance into regular object + */ + function HeadersInstanceToPlainObject(headers) { + var o = {}; + headers.forEach(function (v, k) { + o[k] = v; + }); + return o; + } + var graphql_ws_1 = requireGraphqlWs(); + Object.defineProperty(exports, "GraphQLWebSocketClient", { enumerable: true, get: function () { return graphql_ws_1.GraphQLWebSocketClient; } }); + +} (dist)); + return dist; } -var formdata; -var hasRequiredFormdata; - -function requireFormdata () { - if (hasRequiredFormdata) return formdata; - hasRequiredFormdata = 1; - - const { isBlobLike, isFileLike, toUSVString, makeIterator } = requireUtil(); - const { kState } = requireSymbols(); - const { File, FileLike } = requireFile(); - const { webidl } = requireWebidl(); - const { Blob } = require$$6$2; - - // https://xhr.spec.whatwg.org/#formdata - class FormData { - static name = 'FormData' - - constructor (form) { - if (arguments.length > 0 && form != null) { - webidl.errors.conversionFailed({ - prefix: 'FormData constructor', - argument: 'Argument 1', - types: ['null'] - }); - } - - this[kState] = []; - } - - append (name, value, filename = undefined) { - if (!(this instanceof FormData)) { - throw new TypeError('Illegal invocation') - } - - if (arguments.length < 2) { - throw new TypeError( - `Failed to execute 'append' on 'FormData': 2 arguments required, but only ${arguments.length} present.` - ) - } - - if (arguments.length === 3 && !isBlobLike(value)) { - throw new TypeError( - "Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'" - ) - } - - // 1. Let value be value if given; otherwise blobValue. - - name = webidl.converters.USVString(name); - value = isBlobLike(value) - ? webidl.converters.Blob(value, { strict: false }) - : webidl.converters.USVString(value); - filename = arguments.length === 3 - ? webidl.converters.USVString(filename) - : undefined; - - // 2. Let entry be the result of creating an entry with - // name, value, and filename if given. - const entry = makeEntry(name, value, filename); - - // 3. Append entry to this’s entry list. - this[kState].push(entry); - } - - delete (name) { - if (!(this instanceof FormData)) { - throw new TypeError('Illegal invocation') - } - - if (arguments.length < 1) { - throw new TypeError( - `Failed to execute 'delete' on 'FormData': 1 arguments required, but only ${arguments.length} present.` - ) - } - - name = webidl.converters.USVString(name); - - // The delete(name) method steps are to remove all entries whose name - // is name from this’s entry list. - const next = []; - for (const entry of this[kState]) { - if (entry.name !== name) { - next.push(entry); - } - } - - this[kState] = next; - } - - get (name) { - if (!(this instanceof FormData)) { - throw new TypeError('Illegal invocation') - } - - if (arguments.length < 1) { - throw new TypeError( - `Failed to execute 'get' on 'FormData': 1 arguments required, but only ${arguments.length} present.` - ) - } - - name = webidl.converters.USVString(name); - - // 1. If there is no entry whose name is name in this’s entry list, - // then return null. - const idx = this[kState].findIndex((entry) => entry.name === name); - if (idx === -1) { - return null - } - - // 2. Return the value of the first entry whose name is name from - // this’s entry list. - return this[kState][idx].value - } - - getAll (name) { - if (!(this instanceof FormData)) { - throw new TypeError('Illegal invocation') - } - - if (arguments.length < 1) { - throw new TypeError( - `Failed to execute 'getAll' on 'FormData': 1 arguments required, but only ${arguments.length} present.` - ) - } - - name = webidl.converters.USVString(name); - - // 1. If there is no entry whose name is name in this’s entry list, - // then return the empty list. - // 2. Return the values of all entries whose name is name, in order, - // from this’s entry list. - return this[kState] - .filter((entry) => entry.name === name) - .map((entry) => entry.value) - } - - has (name) { - if (!(this instanceof FormData)) { - throw new TypeError('Illegal invocation') - } - - if (arguments.length < 1) { - throw new TypeError( - `Failed to execute 'has' on 'FormData': 1 arguments required, but only ${arguments.length} present.` - ) - } - - name = webidl.converters.USVString(name); - - // The has(name) method steps are to return true if there is an entry - // whose name is name in this’s entry list; otherwise false. - return this[kState].findIndex((entry) => entry.name === name) !== -1 - } - - set (name, value, filename = undefined) { - if (!(this instanceof FormData)) { - throw new TypeError('Illegal invocation') - } - - if (arguments.length < 2) { - throw new TypeError( - `Failed to execute 'set' on 'FormData': 2 arguments required, but only ${arguments.length} present.` - ) - } - - if (arguments.length === 3 && !isBlobLike(value)) { - throw new TypeError( - "Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'" - ) - } - - // The set(name, value) and set(name, blobValue, filename) method steps - // are: - - // 1. Let value be value if given; otherwise blobValue. - - name = webidl.converters.USVString(name); - value = isBlobLike(value) - ? webidl.converters.Blob(value, { strict: false }) - : webidl.converters.USVString(value); - filename = arguments.length === 3 - ? toUSVString(filename) - : undefined; - - // 2. Let entry be the result of creating an entry with name, value, and - // filename if given. - const entry = makeEntry(name, value, filename); - - // 3. If there are entries in this’s entry list whose name is name, then - // replace the first such entry with entry and remove the others. - const idx = this[kState].findIndex((entry) => entry.name === name); - if (idx !== -1) { - this[kState] = [ - ...this[kState].slice(0, idx), - entry, - ...this[kState].slice(idx + 1).filter((entry) => entry.name !== name) - ]; - } else { - // 4. Otherwise, append entry to this’s entry list. - this[kState].push(entry); - } - } - - get [Symbol.toStringTag] () { - return this.constructor.name - } - - entries () { - if (!(this instanceof FormData)) { - throw new TypeError('Illegal invocation') - } - - return makeIterator( - makeIterable(this[kState], 'entries'), - 'FormData' - ) - } - - keys () { - if (!(this instanceof FormData)) { - throw new TypeError('Illegal invocation') - } - - return makeIterator( - makeIterable(this[kState], 'keys'), - 'FormData' - ) - } - - values () { - if (!(this instanceof FormData)) { - throw new TypeError('Illegal invocation') - } - - return makeIterator( - makeIterable(this[kState], 'values'), - 'FormData' - ) - } - - /** - * @param {(value: string, key: string, self: FormData) => void} callbackFn - * @param {unknown} thisArg - */ - forEach (callbackFn, thisArg = globalThis) { - if (!(this instanceof FormData)) { - throw new TypeError('Illegal invocation') - } - - if (arguments.length < 1) { - throw new TypeError( - `Failed to execute 'forEach' on 'FormData': 1 argument required, but only ${arguments.length} present.` - ) - } - - if (typeof callbackFn !== 'function') { - throw new TypeError( - "Failed to execute 'forEach' on 'FormData': parameter 1 is not of type 'Function'." - ) - } - - for (const [key, value] of this) { - callbackFn.apply(thisArg, [value, key, this]); - } - } - } - - FormData.prototype[Symbol.iterator] = FormData.prototype.entries; - - /** - * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#create-an-entry - * @param {string} name - * @param {string|Blob} value - * @param {?string} filename - * @returns - */ - function makeEntry (name, value, filename) { - // 1. Set name to the result of converting name into a scalar value string. - // "To convert a string into a scalar value string, replace any surrogates - // with U+FFFD." - // see: https://nodejs.org/dist/latest-v18.x/docs/api/buffer.html#buftostringencoding-start-end - name = Buffer.from(name).toString('utf8'); - - // 2. If value is a string, then set value to the result of converting - // value into a scalar value string. - if (typeof value === 'string') { - value = Buffer.from(value).toString('utf8'); - } else { - // 3. Otherwise: - - // 1. If value is not a File object, then set value to a new File object, - // representing the same bytes, whose name attribute value is "blob" - if (!isFileLike(value)) { - value = value instanceof Blob - ? new File([value], 'blob', { type: value.type }) - : new FileLike(value, 'blob', { type: value.type }); - } - - // 2. If filename is given, then set value to a new File object, - // representing the same bytes, whose name attribute is filename. - if (filename !== undefined) { - value = value instanceof File - ? new File([value], filename, { type: value.type }) - : new FileLike(value, filename, { type: value.type }); - } - } - - // 4. Return an entry whose name is name and whose value is value. - return { name, value } - } - - function * makeIterable (entries, type) { - // The value pairs to iterate over are this’s entry list’s entries - // with the key being the name and the value being the value. - for (const { name, value } of entries) { - if (type === 'entries') { - yield [name, value]; - } else if (type === 'values') { - yield value; - } else { - yield name; - } - } - } +var distExports = requireDist(); - formdata = { FormData }; - return formdata; +/** + * This enum is used only internally in order to create nominal type for the disabled plugin + */ +var EnableIfBranded; +(function (EnableIfBranded) { + EnableIfBranded[EnableIfBranded["DisabledPlugin"] = 0] = "DisabledPlugin"; +})(EnableIfBranded || (EnableIfBranded = {})); +function isPluginEnabled(t) { + return t !== EnableIfBranded.DisabledPlugin && t !== null; +} +/** + * Utility function to enable a plugin. + */ +function enableIf(condition, plugin) { + if (condition) { + return typeof plugin === 'function' ? plugin() : plugin; + } + return EnableIfBranded.DisabledPlugin; } -var body; -var hasRequiredBody; - -function requireBody () { - if (hasRequiredBody) return body; - hasRequiredBody = 1; - - const util = requireUtil$1(); - const { ReadableStreamFrom, toUSVString, isBlobLike } = requireUtil(); - const { FormData } = requireFormdata(); - const { kState } = requireSymbols(); - const { webidl } = requireWebidl(); - const { Blob } = require$$6$2; - const { kBodyUsed } = requireSymbols$1(); - const assert = require$$0$3; - const { NotSupportedError } = requireErrors(); - const { isErrored } = requireUtil$1(); - const { isUint8Array, isArrayBuffer } = require$$4$2; - - let ReadableStream; - - async function * blobGen (blob) { - yield * blob.stream(); - } - - // https://fetch.spec.whatwg.org/#concept-bodyinit-extract - function extractBody (object, keepalive = false) { - if (!ReadableStream) { - ReadableStream = require$$10.ReadableStream; - } - - // 1. Let stream be object if object is a ReadableStream object. - // Otherwise, let stream be a new ReadableStream, and set up stream. - let stream = null; - - // 2. Let action be null. - let action = null; - - // 3. Let source be null. - let source = null; - - // 4. Let length be null. - let length = null; - - // 5. Let Content-Type be null. - let contentType = null; - - // 6. Switch on object: - if (object == null) ; else if (object instanceof URLSearchParams) { - // URLSearchParams - - // spec says to run application/x-www-form-urlencoded on body.list - // this is implemented in Node.js as apart of an URLSearchParams instance toString method - // See: https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L490 - // and https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L1100 - - // Set source to the result of running the application/x-www-form-urlencoded serializer with object’s list. - source = object.toString(); - - // Set Content-Type to `application/x-www-form-urlencoded;charset=UTF-8`. - contentType = 'application/x-www-form-urlencoded;charset=UTF-8'; - } else if (isArrayBuffer(object)) { - // BufferSource/ArrayBuffer - - // Set source to a copy of the bytes held by object. - source = new Uint8Array(object.slice()); - } else if (ArrayBuffer.isView(object)) { - // BufferSource/ArrayBufferView - - // Set source to a copy of the bytes held by object. - source = new Uint8Array(object.buffer.slice(object.byteOffset, object.byteOffset + object.byteLength)); - } else if (util.isFormDataLike(object)) { - const boundary = '----formdata-undici-' + Math.random(); - const prefix = `--${boundary}\r\nContent-Disposition: form-data`; - - /*! formdata-polyfill. MIT License. Jimmy Wärting */ - const escape = (str) => - str.replace(/\n/g, '%0A').replace(/\r/g, '%0D').replace(/"/g, '%22'); - const normalizeLinefeeds = (value) => value.replace(/\r?\n|\r/g, '\r\n'); - - // Set action to this step: run the multipart/form-data - // encoding algorithm, with object’s entry list and UTF-8. - action = async function * (object) { - const enc = new TextEncoder(); - - for (const [name, value] of object) { - if (typeof value === 'string') { - yield enc.encode( - prefix + - `; name="${escape(normalizeLinefeeds(name))}"` + - `\r\n\r\n${normalizeLinefeeds(value)}\r\n` - ); - } else { - yield enc.encode( - prefix + - `; name="${escape(normalizeLinefeeds(name))}"` + - (value.name ? `; filename="${escape(value.name)}"` : '') + - '\r\n' + - `Content-Type: ${ - value.type || 'application/octet-stream' - }\r\n\r\n` - ); - - yield * blobGen(value); - - yield enc.encode('\r\n'); - } - } - - yield enc.encode(`--${boundary}--`); - }; +// Note: This file is autogenerated using "resources/gen-version.js" script and +/** + * An object containing the components of the GraphQL.js version string + */ - // Set source to object. - source = object; +const versionInfo = Object.freeze({ + major: 16, + minor: 6, + patch: 0, + preReleaseTag: null, +}); - // Set length to unclear, see html/6424 for improving this. - // TODO +/** + * Returns true if the value acts like a Promise, i.e. has a "then" function, + * otherwise returns false. + */ +function isPromise(value) { + return ( + typeof (value === null || value === void 0 ? void 0 : value.then) === + 'function' + ); +} - // Set Content-Type to `multipart/form-data; boundary=`, - // followed by the multipart/form-data boundary string generated - // by the multipart/form-data encoding algorithm. - contentType = 'multipart/form-data; boundary=' + boundary; - } else if (isBlobLike(object)) { - // Blob +const MAX_SUGGESTIONS = 5; +/** + * Given [ A, B, C ] return ' Did you mean A, B, or C?'. + */ - // Set action to this step: read object. - action = blobGen; +function didYouMean(firstArg, secondArg) { + const [subMessage, suggestionsArg] = secondArg + ? [firstArg, secondArg] + : [undefined, firstArg]; + let message = ' Did you mean '; - // Set source to object. - source = object; + if (subMessage) { + message += subMessage + ' '; + } - // Set length to object’s size. - length = object.size; + const suggestions = suggestionsArg.map((x) => `"${x}"`); - // If object’s type attribute is not the empty byte sequence, set - // Content-Type to its value. - if (object.type) { - contentType = object.type; - } - } else if (typeof object[Symbol.asyncIterator] === 'function') { - // If keepalive is true, then throw a TypeError. - if (keepalive) { - throw new TypeError('keepalive') - } + switch (suggestions.length) { + case 0: + return ''; - // If object is disturbed or locked, then throw a TypeError. - if (util.isDisturbed(object) || object.locked) { - throw new TypeError( - 'Response body object should not be disturbed or locked' - ) - } + case 1: + return message + suggestions[0] + '?'; - stream = - object instanceof ReadableStream ? object : ReadableStreamFrom(object); - } else { - // TODO: byte sequence? - // TODO: scalar value string? - // TODO: else? - source = toUSVString(object); - contentType = 'text/plain;charset=UTF-8'; - } + case 2: + return message + suggestions[0] + ' or ' + suggestions[1] + '?'; + } - // 7. If source is a byte sequence, then set action to a - // step that returns source and length to source’s length. - // TODO: What is a "byte sequence?" - if (typeof source === 'string' || util.isBuffer(source)) { - length = Buffer.byteLength(source); - } + const selected = suggestions.slice(0, MAX_SUGGESTIONS); + const lastItem = selected.pop(); + return message + selected.join(', ') + ', or ' + lastItem + '?'; +} - // 8. If action is non-null, then run these steps in in parallel: - if (action != null) { - // Run action. - let iterator; - stream = new ReadableStream({ - async start () { - iterator = action(object)[Symbol.asyncIterator](); - }, - async pull (controller) { - const { value, done } = await iterator.next(); - if (done) { - // When running action is done, close stream. - queueMicrotask(() => { - controller.close(); - }); - } else { - // Whenever one or more bytes are available and stream is not errored, - // enqueue a Uint8Array wrapping an ArrayBuffer containing the available - // bytes into stream. - if (!isErrored(stream)) { - controller.enqueue(new Uint8Array(value)); - } - } - return controller.desiredSize > 0 - }, - async cancel (reason) { - await iterator.return(); - } - }); - } else if (!stream) { - // TODO: Spec doesn't say anything about this? - stream = new ReadableStream({ - async pull (controller) { - controller.enqueue( - typeof source === 'string' ? new TextEncoder().encode(source) : source - ); - queueMicrotask(() => { - controller.close(); - }); - } - }); - } +/** + * Returns the first argument it receives. + */ +function identityFunc(x) { + return x; +} - // 9. Let body be a body whose stream is stream, source is source, - // and length is length. - const body = { stream, source, length }; +/** + * Creates a keyed JS object from an array, given a function to produce the keys + * for each value in the array. + * + * This provides a convenient lookup for the array items if the key function + * produces unique results. + * ```ts + * const phoneBook = [ + * { name: 'Jon', num: '555-1234' }, + * { name: 'Jenny', num: '867-5309' } + * ] + * + * const entriesByName = keyMap( + * phoneBook, + * entry => entry.name + * ) + * + * // { + * // Jon: { name: 'Jon', num: '555-1234' }, + * // Jenny: { name: 'Jenny', num: '867-5309' } + * // } + * + * const jennyEntry = entriesByName['Jenny'] + * + * // { name: 'Jenny', num: '857-6309' } + * ``` + */ +function keyMap(list, keyFn) { + const result = Object.create(null); - // 10. Return body and Content-Type. - return [body, contentType] - } + for (const item of list) { + result[keyFn(item)] = item; + } - // https://fetch.spec.whatwg.org/#bodyinit-safely-extract - function safelyExtractBody (object, keepalive = false) { - if (!ReadableStream) { - // istanbul ignore next - ReadableStream = require$$10.ReadableStream; - } + return result; +} - // To safely extract a body and a `Content-Type` value from - // a byte sequence or BodyInit object object, run these steps: +/** + * Creates a keyed JS object from an array, given a function to produce the keys + * and a function to produce the values from each item in the array. + * ```ts + * const phoneBook = [ + * { name: 'Jon', num: '555-1234' }, + * { name: 'Jenny', num: '867-5309' } + * ] + * + * // { Jon: '555-1234', Jenny: '867-5309' } + * const phonesByName = keyValMap( + * phoneBook, + * entry => entry.name, + * entry => entry.num + * ) + * ``` + */ +function keyValMap(list, keyFn, valFn) { + const result = Object.create(null); - // 1. If object is a ReadableStream object, then: - if (object instanceof ReadableStream) { - // Assert: object is neither disturbed nor locked. - // istanbul ignore next - assert(!util.isDisturbed(object), 'disturbed'); - // istanbul ignore next - assert(!object.locked, 'locked'); - } + for (const item of list) { + result[keyFn(item)] = valFn(item); + } - // 2. Return the results of extracting object. - return extractBody(object, keepalive) - } + return result; +} - function cloneBody (body) { - // To clone a body body, run these steps: +/** + * Creates an object map with the same keys as `map` and values generated by + * running each value of `map` thru `fn`. + */ +function mapValue(map, fn) { + const result = Object.create(null); - // https://fetch.spec.whatwg.org/#concept-body-clone + for (const key of Object.keys(map)) { + result[key] = fn(map[key], key); + } - // 1. Let « out1, out2 » be the result of teeing body’s stream. - const [out1, out2] = body.stream.tee(); + return result; +} - // 2. Set body’s stream to out1. - body.stream = out1; +/** + * Returns a number indicating whether a reference string comes before, or after, + * or is the same as the given string in natural sort order. + * + * See: https://en.wikipedia.org/wiki/Natural_sort_order + * + */ +function naturalCompare(aStr, bStr) { + let aIndex = 0; + let bIndex = 0; - // 3. Return a body whose stream is out2 and other members are copied from body. - return { - stream: out2, - length: body.length, - source: body.source - } - } + while (aIndex < aStr.length && bIndex < bStr.length) { + let aChar = aStr.charCodeAt(aIndex); + let bChar = bStr.charCodeAt(bIndex); - async function * consumeBody (body) { - if (body) { - if (isUint8Array(body)) { - yield body; - } else { - const stream = body.stream; + if (isDigit(aChar) && isDigit(bChar)) { + let aNum = 0; - if (util.isDisturbed(stream)) { - throw new TypeError('disturbed') - } + do { + ++aIndex; + aNum = aNum * 10 + aChar - DIGIT_0; + aChar = aStr.charCodeAt(aIndex); + } while (isDigit(aChar) && aNum > 0); - if (stream.locked) { - throw new TypeError('locked') - } + let bNum = 0; - // Compat. - stream[kBodyUsed] = true; + do { + ++bIndex; + bNum = bNum * 10 + bChar - DIGIT_0; + bChar = bStr.charCodeAt(bIndex); + } while (isDigit(bChar) && bNum > 0); - yield * stream; - } - } - } + if (aNum < bNum) { + return -1; + } - function bodyMixinMethods (instance) { - const methods = { - async blob () { - if (!(this instanceof instance)) { - throw new TypeError('Illegal invocation') - } + if (aNum > bNum) { + return 1; + } + } else { + if (aChar < bChar) { + return -1; + } - const chunks = []; + if (aChar > bChar) { + return 1; + } - for await (const chunk of consumeBody(this[kState].body)) { - if (!isUint8Array(chunk)) { - throw new TypeError('Expected Uint8Array chunk') - } + ++aIndex; + ++bIndex; + } + } - // Assemble one final large blob with Uint8Array's can exhaust memory. - // That's why we create create multiple blob's and using references - chunks.push(new Blob([chunk])); - } + return aStr.length - bStr.length; +} +const DIGIT_0 = 48; +const DIGIT_9 = 57; - return new Blob(chunks, { type: this.headers.get('Content-Type') || '' }) - }, +function isDigit(code) { + return !isNaN(code) && DIGIT_0 <= code && code <= DIGIT_9; +} - async arrayBuffer () { - if (!(this instanceof instance)) { - throw new TypeError('Illegal invocation') - } +/** + * Given an invalid input string and a list of valid options, returns a filtered + * list of valid options sorted based on their similarity with the input. + */ - const contentLength = this.headers.get('content-length'); - const encoded = this.headers.has('content-encoding'); +function suggestionList(input, options) { + const optionsByDistance = Object.create(null); + const lexicalDistance = new LexicalDistance(input); + const threshold = Math.floor(input.length * 0.4) + 1; - // if we have content length and no encoding, then we can - // pre allocate the buffer and just read the data into it - if (!encoded && contentLength) { - const buffer = new Uint8Array(contentLength); - let offset = 0; + for (const option of options) { + const distance = lexicalDistance.measure(option, threshold); - for await (const chunk of consumeBody(this[kState].body)) { - if (!isUint8Array(chunk)) { - throw new TypeError('Expected Uint8Array chunk') - } + if (distance !== undefined) { + optionsByDistance[option] = distance; + } + } - buffer.set(chunk, offset); - offset += chunk.length; - } + return Object.keys(optionsByDistance).sort((a, b) => { + const distanceDiff = optionsByDistance[a] - optionsByDistance[b]; + return distanceDiff !== 0 ? distanceDiff : naturalCompare(a, b); + }); +} +/** + * Computes the lexical distance between strings A and B. + * + * The "distance" between two strings is given by counting the minimum number + * of edits needed to transform string A into string B. An edit can be an + * insertion, deletion, or substitution of a single character, or a swap of two + * adjacent characters. + * + * Includes a custom alteration from Damerau-Levenshtein to treat case changes + * as a single edit which helps identify mis-cased values with an edit distance + * of 1. + * + * This distance can be useful for detecting typos in input or sorting + */ - return buffer.buffer - } +class LexicalDistance { + constructor(input) { + this._input = input; + this._inputLowerCase = input.toLowerCase(); + this._inputArray = stringToArray(this._inputLowerCase); + this._rows = [ + new Array(input.length + 1).fill(0), + new Array(input.length + 1).fill(0), + new Array(input.length + 1).fill(0), + ]; + } - // if we don't have content length, then we have to allocate 2x the - // size of the body, once for consumed data, and once for the final buffer + measure(option, threshold) { + if (this._input === option) { + return 0; + } - // This could be optimized by using growable ArrayBuffer, but it's not - // implemented yet. https://github.com/tc39/proposal-resizablearraybuffer + const optionLowerCase = option.toLowerCase(); // Any case change counts as a single edit - const chunks = []; - let size = 0; + if (this._inputLowerCase === optionLowerCase) { + return 1; + } - for await (const chunk of consumeBody(this[kState].body)) { - if (!isUint8Array(chunk)) { - throw new TypeError('Expected Uint8Array chunk') - } + let a = stringToArray(optionLowerCase); + let b = this._inputArray; - chunks.push(chunk); - size += chunk.byteLength; - } + if (a.length < b.length) { + const tmp = a; + a = b; + b = tmp; + } - const buffer = new Uint8Array(size); - let offset = 0; + const aLength = a.length; + const bLength = b.length; - for (const chunk of chunks) { - buffer.set(chunk, offset); - offset += chunk.byteLength; - } + if (aLength - bLength > threshold) { + return undefined; + } - return buffer.buffer - }, + const rows = this._rows; - async text () { - if (!(this instanceof instance)) { - throw new TypeError('Illegal invocation') - } + for (let j = 0; j <= bLength; j++) { + rows[0][j] = j; + } - let result = ''; - const textDecoder = new TextDecoder(); + for (let i = 1; i <= aLength; i++) { + const upRow = rows[(i - 1) % 3]; + const currentRow = rows[i % 3]; + let smallestCell = (currentRow[0] = i); - for await (const chunk of consumeBody(this[kState].body)) { - if (!isUint8Array(chunk)) { - throw new TypeError('Expected Uint8Array chunk') - } + for (let j = 1; j <= bLength; j++) { + const cost = a[i - 1] === b[j - 1] ? 0 : 1; + let currentCell = Math.min( + upRow[j] + 1, // delete + currentRow[j - 1] + 1, // insert + upRow[j - 1] + cost, // substitute + ); - result += textDecoder.decode(chunk, { stream: true }); - } + if (i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b[j - 1]) { + // transposition + const doubleDiagonalCell = rows[(i - 2) % 3][j - 2]; + currentCell = Math.min(currentCell, doubleDiagonalCell + 1); + } - // flush - result += textDecoder.decode(); + if (currentCell < smallestCell) { + smallestCell = currentCell; + } - return result - }, + currentRow[j] = currentCell; + } // Early exit, since distance can't go smaller than smallest element of the previous row. - async json () { - if (!(this instanceof instance)) { - throw new TypeError('Illegal invocation') - } + if (smallestCell > threshold) { + return undefined; + } + } - return JSON.parse(await this.text()) - }, + const distance = rows[aLength % 3][bLength]; + return distance <= threshold ? distance : undefined; + } +} - async formData () { - if (!(this instanceof instance)) { - throw new TypeError('Illegal invocation') - } +function stringToArray(str) { + const strLength = str.length; + const array = new Array(strLength); - const contentType = this.headers.get('Content-Type'); + for (let i = 0; i < strLength; ++i) { + array[i] = str.charCodeAt(i); + } - // If mimeType’s essence is "multipart/form-data", then: - if (/multipart\/form-data/.test(contentType)) { - throw new NotSupportedError('multipart/form-data not supported') - } else if (/application\/x-www-form-urlencoded/.test(contentType)) { - // Otherwise, if mimeType’s essence is "application/x-www-form-urlencoded", then: + return array; +} - // 1. Let entries be the result of parsing bytes. - let entries; - try { - let text = ''; - // application/x-www-form-urlencoded parser will keep the BOM. - // https://url.spec.whatwg.org/#concept-urlencoded-parser - const textDecoder = new TextDecoder('utf-8', { ignoreBOM: true }); - for await (const chunk of consumeBody(this[kState].body)) { - if (!isUint8Array(chunk)) { - throw new TypeError('Expected Uint8Array chunk') - } - text += textDecoder.decode(chunk, { stream: true }); - } - text += textDecoder.decode(); - entries = new URLSearchParams(text); - } catch (err) { - // istanbul ignore next: Unclear when new URLSearchParams can fail on a string. - // 2. If entries is failure, then throw a TypeError. - throw Object.assign(new TypeError(), { cause: err }) - } +function toObjMap(obj) { + if (obj == null) { + return Object.create(null); + } - // 3. Return a new FormData object whose entries are entries. - const formData = new FormData(); - for (const [name, value] of entries) { - formData.append(name, value); - } - return formData - } else { - // Otherwise, throw a TypeError. - webidl.errors.exception({ - header: `${instance.name}.formData`, - value: 'Could not parse content as FormData.' - }); - } - } - }; + if (Object.getPrototypeOf(obj) === null) { + return obj; + } - return methods - } + const map = Object.create(null); - const properties = { - body: { - enumerable: true, - get () { - if (!this || !this[kState]) { - throw new TypeError('Illegal invocation') - } + for (const [key, value] of Object.entries(obj)) { + map[key] = value; + } - return this[kState].body ? this[kState].body.stream : null - } - }, - bodyUsed: { - enumerable: true, - get () { - if (!this || !this[kState]) { - throw new TypeError('Illegal invocation') - } + return map; +} - return !!this[kState].body && util.isDisturbed(this[kState].body.stream) - } - } - }; +/** + * Produces a JavaScript value given a GraphQL Value AST. + * + * Unlike `valueFromAST()`, no type is provided. The resulting JavaScript value + * will reflect the provided GraphQL value AST. + * + * | GraphQL Value | JavaScript Value | + * | -------------------- | ---------------- | + * | Input Object | Object | + * | List | Array | + * | Boolean | Boolean | + * | String / Enum | String | + * | Int / Float | Number | + * | Null | null | + * + */ - function mixinBody (prototype) { - Object.assign(prototype.prototype, bodyMixinMethods(prototype)); - Object.defineProperties(prototype.prototype, properties); - } +function valueFromASTUntyped(valueNode, variables) { + switch (valueNode.kind) { + case Kind.NULL: + return null; - body = { - extractBody, - safelyExtractBody, - cloneBody, - mixinBody - }; - return body; -} + case Kind.INT: + return parseInt(valueNode.value, 10); -var request$1; -var hasRequiredRequest$1; + case Kind.FLOAT: + return parseFloat(valueNode.value); -function requireRequest$1 () { - if (hasRequiredRequest$1) return request$1; - hasRequiredRequest$1 = 1; + case Kind.STRING: + case Kind.ENUM: + case Kind.BOOLEAN: + return valueNode.value; - const { - InvalidArgumentError, - NotSupportedError - } = requireErrors(); - const assert = require$$0$3; - const util = requireUtil$1(); + case Kind.LIST: + return valueNode.values.map((node) => + valueFromASTUntyped(node, variables), + ); - // tokenRegExp and headerCharRegex have been lifted from - // https://github.com/nodejs/node/blob/main/lib/_http_common.js + case Kind.OBJECT: + return keyValMap( + valueNode.fields, + (field) => field.name.value, + (field) => valueFromASTUntyped(field.value, variables), + ); - /** - * Verifies that the given val is a valid HTTP token - * per the rules defined in RFC 7230 - * See https://tools.ietf.org/html/rfc7230#section-3.2.6 - */ - const tokenRegExp = /^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/; + case Kind.VARIABLE: + return variables === null || variables === void 0 + ? void 0 + : variables[valueNode.name.value]; + } +} - /** - * Matches if val contains an invalid field-vchar - * field-value = *( field-content / obs-fold ) - * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ] - * field-vchar = VCHAR / obs-text - */ - const headerCharRegex = /[^\t\x20-\x7e\x80-\xff]/; - - // Verifies that a given path is valid does not contain control chars \x00 to \x20 - const invalidPathRegex = /[^\u0021-\u00ff]/; - - const kHandler = Symbol('handler'); - - const channels = {}; - - let extractBody; - - const nodeVersion = process.versions.node.split('.'); - const nodeMajor = Number(nodeVersion[0]); - const nodeMinor = Number(nodeVersion[1]); - - try { - const diagnosticsChannel = require('diagnostics_channel'); - channels.create = diagnosticsChannel.channel('undici:request:create'); - channels.bodySent = diagnosticsChannel.channel('undici:request:bodySent'); - channels.headers = diagnosticsChannel.channel('undici:request:headers'); - channels.trailers = diagnosticsChannel.channel('undici:request:trailers'); - channels.error = diagnosticsChannel.channel('undici:request:error'); - } catch { - channels.create = { hasSubscribers: false }; - channels.bodySent = { hasSubscribers: false }; - channels.headers = { hasSubscribers: false }; - channels.trailers = { hasSubscribers: false }; - channels.error = { hasSubscribers: false }; - } +/** + * Upholds the spec rules about naming. + */ - class Request { - constructor (origin, { - path, - method, - body, - headers, - query, - idempotent, - blocking, - upgrade, - headersTimeout, - bodyTimeout, - throwOnError - }, handler) { - if (typeof path !== 'string') { - throw new InvalidArgumentError('path must be a string') - } else if ( - path[0] !== '/' && - !(path.startsWith('http://') || path.startsWith('https://')) && - method !== 'CONNECT' - ) { - throw new InvalidArgumentError('path must be an absolute URL or start with a slash') - } else if (invalidPathRegex.exec(path) !== null) { - throw new InvalidArgumentError('invalid request path') - } +function assertName(name) { + name != null || devAssert(false, 'Must provide name.'); + typeof name === 'string' || devAssert(false, 'Expected name to be a string.'); - if (typeof method !== 'string') { - throw new InvalidArgumentError('method must be a string') - } else if (tokenRegExp.exec(method) === null) { - throw new InvalidArgumentError('invalid request method') - } + if (name.length === 0) { + throw new GraphQLError('Expected name to be a non-empty string.'); + } - if (upgrade && typeof upgrade !== 'string') { - throw new InvalidArgumentError('upgrade must be a string') - } + for (let i = 1; i < name.length; ++i) { + if (!isNameContinue(name.charCodeAt(i))) { + throw new GraphQLError( + `Names must only contain [_a-zA-Z0-9] but "${name}" does not.`, + ); + } + } - if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) { - throw new InvalidArgumentError('invalid headersTimeout') - } + if (!isNameStart(name.charCodeAt(0))) { + throw new GraphQLError( + `Names must start with [_a-zA-Z] but "${name}" does not.`, + ); + } - if (bodyTimeout != null && (!Number.isFinite(bodyTimeout) || bodyTimeout < 0)) { - throw new InvalidArgumentError('invalid bodyTimeout') - } + return name; +} +/** + * Upholds the spec rules about naming enum values. + * + * @internal + */ - this.headersTimeout = headersTimeout; +function assertEnumValueName(name) { + if (name === 'true' || name === 'false' || name === 'null') { + throw new GraphQLError(`Enum values cannot be named: ${name}`); + } - this.bodyTimeout = bodyTimeout; + return assertName(name); +} - this.throwOnError = throwOnError === true; +function isType(type) { + return ( + isScalarType(type) || + isObjectType(type) || + isInterfaceType(type) || + isUnionType(type) || + isEnumType(type) || + isInputObjectType(type) || + isListType(type) || + isNonNullType(type) + ); +} +/** + * There are predicates for each kind of GraphQL type. + */ - this.method = method; +function isScalarType(type) { + return instanceOf(type, GraphQLScalarType); +} +function isObjectType(type) { + return instanceOf(type, GraphQLObjectType); +} +function isInterfaceType(type) { + return instanceOf(type, GraphQLInterfaceType); +} +function isUnionType(type) { + return instanceOf(type, GraphQLUnionType); +} +function isEnumType(type) { + return instanceOf(type, GraphQLEnumType); +} +function isInputObjectType(type) { + return instanceOf(type, GraphQLInputObjectType); +} +function isListType(type) { + return instanceOf(type, GraphQLList); +} +function isNonNullType(type) { + return instanceOf(type, GraphQLNonNull); +} +/** + * These types may be used as input types for arguments and directives. + */ - if (body == null) { - this.body = null; - } else if (util.isStream(body)) { - this.body = body; - } else if (util.isBuffer(body)) { - this.body = body.byteLength ? body : null; - } else if (ArrayBuffer.isView(body)) { - this.body = body.buffer.byteLength ? Buffer.from(body.buffer, body.byteOffset, body.byteLength) : null; - } else if (body instanceof ArrayBuffer) { - this.body = body.byteLength ? Buffer.from(body) : null; - } else if (typeof body === 'string') { - this.body = body.length ? Buffer.from(body) : null; - } else if (util.isFormDataLike(body) || util.isIterable(body) || util.isBlobLike(body)) { - this.body = body; - } else { - throw new InvalidArgumentError('body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable') - } +function isInputType(type) { + return ( + isScalarType(type) || + isEnumType(type) || + isInputObjectType(type) || + (isWrappingType(type) && isInputType(type.ofType)) + ); +} +/** + * These types may be used as output types as the result of fields. + */ - this.completed = false; +function isOutputType(type) { + return ( + isScalarType(type) || + isObjectType(type) || + isInterfaceType(type) || + isUnionType(type) || + isEnumType(type) || + (isWrappingType(type) && isOutputType(type.ofType)) + ); +} +/** + * These types may describe types which may be leaf values. + */ - this.aborted = false; +function isLeafType(type) { + return isScalarType(type) || isEnumType(type); +} +/** + * These types may describe the parent context of a selection set. + */ - this.upgrade = upgrade || null; +function isCompositeType(type) { + return isObjectType(type) || isInterfaceType(type) || isUnionType(type); +} +/** + * These types may describe the parent context of a selection set. + */ - this.path = query ? util.buildURL(path, query) : path; +function isAbstractType(type) { + return isInterfaceType(type) || isUnionType(type); +} +/** + * List Type Wrapper + * + * A list is a wrapping type which points to another type. + * Lists are often created within the context of defining the fields of + * an object type. + * + * Example: + * + * ```ts + * const PersonType = new GraphQLObjectType({ + * name: 'Person', + * fields: () => ({ + * parents: { type: new GraphQLList(PersonType) }, + * children: { type: new GraphQLList(PersonType) }, + * }) + * }) + * ``` + */ - this.origin = origin; +class GraphQLList { + constructor(ofType) { + isType(ofType) || + devAssert(false, `Expected ${inspect$1(ofType)} to be a GraphQL type.`); + this.ofType = ofType; + } - this.idempotent = idempotent == null - ? method === 'HEAD' || method === 'GET' - : idempotent; + get [Symbol.toStringTag]() { + return 'GraphQLList'; + } - this.blocking = blocking == null ? false : blocking; + toString() { + return '[' + String(this.ofType) + ']'; + } - this.host = null; + toJSON() { + return this.toString(); + } +} +/** + * Non-Null Type Wrapper + * + * A non-null is a wrapping type which points to another type. + * Non-null types enforce that their values are never null and can ensure + * an error is raised if this ever occurs during a request. It is useful for + * fields which you can make a strong guarantee on non-nullability, for example + * usually the id field of a database row will never be null. + * + * Example: + * + * ```ts + * const RowType = new GraphQLObjectType({ + * name: 'Row', + * fields: () => ({ + * id: { type: new GraphQLNonNull(GraphQLString) }, + * }) + * }) + * ``` + * Note: the enforcement of non-nullability occurs within the executor. + */ - this.contentLength = null; +class GraphQLNonNull { + constructor(ofType) { + isNullableType(ofType) || + devAssert( + false, + `Expected ${inspect$1(ofType)} to be a GraphQL nullable type.`, + ); + this.ofType = ofType; + } - this.contentType = null; + get [Symbol.toStringTag]() { + return 'GraphQLNonNull'; + } - this.headers = ''; + toString() { + return String(this.ofType) + '!'; + } - if (Array.isArray(headers)) { - if (headers.length % 2 !== 0) { - throw new InvalidArgumentError('headers array must be even') - } - for (let i = 0; i < headers.length; i += 2) { - processHeader(this, headers[i], headers[i + 1]); - } - } else if (headers && typeof headers === 'object') { - const keys = Object.keys(headers); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - processHeader(this, key, headers[key]); - } - } else if (headers != null) { - throw new InvalidArgumentError('headers must be an object or an array') - } + toJSON() { + return this.toString(); + } +} +/** + * These types wrap and modify other types + */ - if (util.isFormDataLike(this.body)) { - if (nodeMajor < 16 || (nodeMajor === 16 && nodeMinor < 8)) { - throw new InvalidArgumentError('Form-Data bodies are only supported in node v16.8 and newer.') - } +function isWrappingType(type) { + return isListType(type) || isNonNullType(type); +} +/** + * These types can all accept null as a value. + */ - if (!extractBody) { - extractBody = requireBody().extractBody; - } +function isNullableType(type) { + return isType(type) && !isNonNullType(type); +} +function getNullableType(type) { + if (type) { + return isNonNullType(type) ? type.ofType : type; + } +} +/** + * These named types do not include modifiers like List or NonNull. + */ - const [bodyStream, contentType] = extractBody(body); - if (this.contentType == null) { - this.contentType = contentType; - this.headers += `content-type: ${contentType}\r\n`; - } - this.body = bodyStream.stream; - } else if (util.isBlobLike(body) && this.contentType == null && body.type) { - this.contentType = body.type; - this.headers += `content-type: ${body.type}\r\n`; - } +function isNamedType(type) { + return ( + isScalarType(type) || + isObjectType(type) || + isInterfaceType(type) || + isUnionType(type) || + isEnumType(type) || + isInputObjectType(type) + ); +} +function getNamedType(type) { + if (type) { + let unwrappedType = type; - util.validateHandler(handler, method, upgrade); + while (isWrappingType(unwrappedType)) { + unwrappedType = unwrappedType.ofType; + } - this.servername = util.getServerName(this.host); + return unwrappedType; + } +} +/** + * Used while defining GraphQL types to allow for circular references in + * otherwise immutable type definitions. + */ - this[kHandler] = handler; +function resolveReadonlyArrayThunk(thunk) { + return typeof thunk === 'function' ? thunk() : thunk; +} +function resolveObjMapThunk(thunk) { + return typeof thunk === 'function' ? thunk() : thunk; +} +/** + * Custom extensions + * + * @remarks + * Use a unique identifier name for your extension, for example the name of + * your library or project. Do not use a shortened identifier as this increases + * the risk of conflicts. We recommend you add at most one extension field, + * an object which can contain all the values you need. + */ - if (channels.create.hasSubscribers) { - channels.create.publish({ request: this }); - } - } +/** + * Scalar Type Definition + * + * The leaf values of any request and input values to arguments are + * Scalars (or Enums) and are defined with a name and a series of functions + * used to parse input from ast or variables and to ensure validity. + * + * If a type's serialize function returns `null` or does not return a value + * (i.e. it returns `undefined`) then an error will be raised and a `null` + * value will be returned in the response. It is always better to validate + * + * Example: + * + * ```ts + * const OddType = new GraphQLScalarType({ + * name: 'Odd', + * serialize(value) { + * if (!Number.isFinite(value)) { + * throw new Error( + * `Scalar "Odd" cannot represent "${value}" since it is not a finite number.`, + * ); + * } + * + * if (value % 2 === 0) { + * throw new Error(`Scalar "Odd" cannot represent "${value}" since it is even.`); + * } + * return value; + * } + * }); + * ``` + */ +class GraphQLScalarType { + constructor(config) { + var _config$parseValue, + _config$serialize, + _config$parseLiteral, + _config$extensionASTN; - onBodySent (chunk) { - if (this[kHandler].onBodySent) { - try { - this[kHandler].onBodySent(chunk); - } catch (err) { - this.onError(err); - } - } - } + const parseValue = + (_config$parseValue = config.parseValue) !== null && + _config$parseValue !== void 0 + ? _config$parseValue + : identityFunc; + this.name = assertName(config.name); + this.description = config.description; + this.specifiedByURL = config.specifiedByURL; + this.serialize = + (_config$serialize = config.serialize) !== null && + _config$serialize !== void 0 + ? _config$serialize + : identityFunc; + this.parseValue = parseValue; + this.parseLiteral = + (_config$parseLiteral = config.parseLiteral) !== null && + _config$parseLiteral !== void 0 + ? _config$parseLiteral + : (node, variables) => parseValue(valueFromASTUntyped(node, variables)); + this.extensions = toObjMap(config.extensions); + this.astNode = config.astNode; + this.extensionASTNodes = + (_config$extensionASTN = config.extensionASTNodes) !== null && + _config$extensionASTN !== void 0 + ? _config$extensionASTN + : []; + config.specifiedByURL == null || + typeof config.specifiedByURL === 'string' || + devAssert( + false, + `${this.name} must provide "specifiedByURL" as a string, ` + + `but got: ${inspect$1(config.specifiedByURL)}.`, + ); + config.serialize == null || + typeof config.serialize === 'function' || + devAssert( + false, + `${this.name} must provide "serialize" function. If this custom Scalar is also used as an input type, ensure "parseValue" and "parseLiteral" functions are also provided.`, + ); - onRequestSent () { - if (channels.bodySent.hasSubscribers) { - channels.bodySent.publish({ request: this }); - } - } + if (config.parseLiteral) { + (typeof config.parseValue === 'function' && + typeof config.parseLiteral === 'function') || + devAssert( + false, + `${this.name} must provide both "parseValue" and "parseLiteral" functions.`, + ); + } + } - onConnect (abort) { - assert(!this.aborted); - assert(!this.completed); + get [Symbol.toStringTag]() { + return 'GraphQLScalarType'; + } - return this[kHandler].onConnect(abort) - } + toConfig() { + return { + name: this.name, + description: this.description, + specifiedByURL: this.specifiedByURL, + serialize: this.serialize, + parseValue: this.parseValue, + parseLiteral: this.parseLiteral, + extensions: this.extensions, + astNode: this.astNode, + extensionASTNodes: this.extensionASTNodes, + }; + } - onHeaders (statusCode, headers, resume, statusText) { - assert(!this.aborted); - assert(!this.completed); + toString() { + return this.name; + } - if (channels.headers.hasSubscribers) { - channels.headers.publish({ request: this, response: { statusCode, headers, statusText } }); - } + toJSON() { + return this.toString(); + } +} - return this[kHandler].onHeaders(statusCode, headers, resume, statusText) - } +/** + * Object Type Definition + * + * Almost all of the GraphQL types you define will be object types. Object types + * have a name, but most importantly describe their fields. + * + * Example: + * + * ```ts + * const AddressType = new GraphQLObjectType({ + * name: 'Address', + * fields: { + * street: { type: GraphQLString }, + * number: { type: GraphQLInt }, + * formatted: { + * type: GraphQLString, + * resolve(obj) { + * return obj.number + ' ' + obj.street + * } + * } + * } + * }); + * ``` + * + * When two types need to refer to each other, or a type needs to refer to + * itself in a field, you can use a function expression (aka a closure or a + * thunk) to supply the fields lazily. + * + * Example: + * + * ```ts + * const PersonType = new GraphQLObjectType({ + * name: 'Person', + * fields: () => ({ + * name: { type: GraphQLString }, + * bestFriend: { type: PersonType }, + * }) + * }); + * ``` + */ +class GraphQLObjectType { + constructor(config) { + var _config$extensionASTN2; - onData (chunk) { - assert(!this.aborted); - assert(!this.completed); + this.name = assertName(config.name); + this.description = config.description; + this.isTypeOf = config.isTypeOf; + this.extensions = toObjMap(config.extensions); + this.astNode = config.astNode; + this.extensionASTNodes = + (_config$extensionASTN2 = config.extensionASTNodes) !== null && + _config$extensionASTN2 !== void 0 + ? _config$extensionASTN2 + : []; - return this[kHandler].onData(chunk) - } + this._fields = () => defineFieldMap(config); - onUpgrade (statusCode, headers, socket) { - assert(!this.aborted); - assert(!this.completed); + this._interfaces = () => defineInterfaces(config); - return this[kHandler].onUpgrade(statusCode, headers, socket) - } + config.isTypeOf == null || + typeof config.isTypeOf === 'function' || + devAssert( + false, + `${this.name} must provide "isTypeOf" as a function, ` + + `but got: ${inspect$1(config.isTypeOf)}.`, + ); + } - onComplete (trailers) { - assert(!this.aborted); + get [Symbol.toStringTag]() { + return 'GraphQLObjectType'; + } - this.completed = true; - if (channels.trailers.hasSubscribers) { - channels.trailers.publish({ request: this, trailers }); - } - return this[kHandler].onComplete(trailers) - } + getFields() { + if (typeof this._fields === 'function') { + this._fields = this._fields(); + } - onError (error) { - if (channels.error.hasSubscribers) { - channels.error.publish({ request: this, error }); - } + return this._fields; + } - if (this.aborted) { - return - } - this.aborted = true; - return this[kHandler].onError(error) - } + getInterfaces() { + if (typeof this._interfaces === 'function') { + this._interfaces = this._interfaces(); + } - addHeader (key, value) { - processHeader(this, key, value); - return this - } - } + return this._interfaces; + } - function processHeader (request, key, val) { - if (val && typeof val === 'object') { - throw new InvalidArgumentError(`invalid ${key} header`) - } else if (val === undefined) { - return - } + toConfig() { + return { + name: this.name, + description: this.description, + interfaces: this.getInterfaces(), + fields: fieldsToFieldsConfig(this.getFields()), + isTypeOf: this.isTypeOf, + extensions: this.extensions, + astNode: this.astNode, + extensionASTNodes: this.extensionASTNodes, + }; + } - if ( - request.host === null && - key.length === 4 && - key.toLowerCase() === 'host' - ) { - // Consumed by Client - request.host = val; - } else if ( - request.contentLength === null && - key.length === 14 && - key.toLowerCase() === 'content-length' - ) { - request.contentLength = parseInt(val, 10); - if (!Number.isFinite(request.contentLength)) { - throw new InvalidArgumentError('invalid content-length header') - } - } else if ( - request.contentType === null && - key.length === 12 && - key.toLowerCase() === 'content-type' && - headerCharRegex.exec(val) === null - ) { - request.contentType = val; - request.headers += `${key}: ${val}\r\n`; - } else if ( - key.length === 17 && - key.toLowerCase() === 'transfer-encoding' - ) { - throw new InvalidArgumentError('invalid transfer-encoding header') - } else if ( - key.length === 10 && - key.toLowerCase() === 'connection' - ) { - throw new InvalidArgumentError('invalid connection header') - } else if ( - key.length === 10 && - key.toLowerCase() === 'keep-alive' - ) { - throw new InvalidArgumentError('invalid keep-alive header') - } else if ( - key.length === 7 && - key.toLowerCase() === 'upgrade' - ) { - throw new InvalidArgumentError('invalid upgrade header') - } else if ( - key.length === 6 && - key.toLowerCase() === 'expect' - ) { - throw new NotSupportedError('expect header not supported') - } else if (tokenRegExp.exec(key) === null) { - throw new InvalidArgumentError('invalid header key') - } else if (headerCharRegex.exec(val) !== null) { - throw new InvalidArgumentError(`invalid ${key} header`) - } else { - request.headers += `${key}: ${val}\r\n`; - } - } + toString() { + return this.name; + } - request$1 = Request; - return request$1; + toJSON() { + return this.toString(); + } } -var dispatcher; -var hasRequiredDispatcher; - -function requireDispatcher () { - if (hasRequiredDispatcher) return dispatcher; - hasRequiredDispatcher = 1; - - const EventEmitter = require$$0$4; - - class Dispatcher extends EventEmitter { - dispatch () { - throw new Error('not implemented') - } - - close () { - throw new Error('not implemented') - } - - destroy () { - throw new Error('not implemented') - } - } +function defineInterfaces(config) { + var _config$interfaces; - dispatcher = Dispatcher; - return dispatcher; + const interfaces = resolveReadonlyArrayThunk( + (_config$interfaces = config.interfaces) !== null && + _config$interfaces !== void 0 + ? _config$interfaces + : [], + ); + Array.isArray(interfaces) || + devAssert( + false, + `${config.name} interfaces must be an Array or a function which returns an Array.`, + ); + return interfaces; } -var dispatcherBase; -var hasRequiredDispatcherBase; +function defineFieldMap(config) { + const fieldMap = resolveObjMapThunk(config.fields); + isPlainObj(fieldMap) || + devAssert( + false, + `${config.name} fields must be an object with field names as keys or a function which returns such an object.`, + ); + return mapValue(fieldMap, (fieldConfig, fieldName) => { + var _fieldConfig$args; -function requireDispatcherBase () { - if (hasRequiredDispatcherBase) return dispatcherBase; - hasRequiredDispatcherBase = 1; + isPlainObj(fieldConfig) || + devAssert( + false, + `${config.name}.${fieldName} field config must be an object.`, + ); + fieldConfig.resolve == null || + typeof fieldConfig.resolve === 'function' || + devAssert( + false, + `${config.name}.${fieldName} field resolver must be a function if ` + + `provided, but got: ${inspect$1(fieldConfig.resolve)}.`, + ); + const argsConfig = + (_fieldConfig$args = fieldConfig.args) !== null && + _fieldConfig$args !== void 0 + ? _fieldConfig$args + : {}; + isPlainObj(argsConfig) || + devAssert( + false, + `${config.name}.${fieldName} args must be an object with argument names as keys.`, + ); + return { + name: assertName(fieldName), + description: fieldConfig.description, + type: fieldConfig.type, + args: defineArguments(argsConfig), + resolve: fieldConfig.resolve, + subscribe: fieldConfig.subscribe, + deprecationReason: fieldConfig.deprecationReason, + extensions: toObjMap(fieldConfig.extensions), + astNode: fieldConfig.astNode, + }; + }); +} - const Dispatcher = requireDispatcher(); - const { - ClientDestroyedError, - ClientClosedError, - InvalidArgumentError - } = requireErrors(); - const { kDestroy, kClose, kDispatch } = requireSymbols$1(); +function defineArguments(config) { + return Object.entries(config).map(([argName, argConfig]) => ({ + name: assertName(argName), + description: argConfig.description, + type: argConfig.type, + defaultValue: argConfig.defaultValue, + deprecationReason: argConfig.deprecationReason, + extensions: toObjMap(argConfig.extensions), + astNode: argConfig.astNode, + })); +} - const kDestroyed = Symbol('destroyed'); - const kClosed = Symbol('closed'); - const kOnDestroyed = Symbol('onDestroyed'); - const kOnClosed = Symbol('onClosed'); +function isPlainObj(obj) { + return isObjectLike(obj) && !Array.isArray(obj); +} - class DispatcherBase extends Dispatcher { - constructor () { - super(); +function fieldsToFieldsConfig(fields) { + return mapValue(fields, (field) => ({ + description: field.description, + type: field.type, + args: argsToArgsConfig(field.args), + resolve: field.resolve, + subscribe: field.subscribe, + deprecationReason: field.deprecationReason, + extensions: field.extensions, + astNode: field.astNode, + })); +} +/** + * @internal + */ - this[kDestroyed] = false; - this[kOnDestroyed] = []; - this[kClosed] = false; - this[kOnClosed] = []; - } +function argsToArgsConfig(args) { + return keyValMap( + args, + (arg) => arg.name, + (arg) => ({ + description: arg.description, + type: arg.type, + defaultValue: arg.defaultValue, + deprecationReason: arg.deprecationReason, + extensions: arg.extensions, + astNode: arg.astNode, + }), + ); +} +function isRequiredArgument(arg) { + return isNonNullType(arg.type) && arg.defaultValue === undefined; +} - get destroyed () { - return this[kDestroyed] - } +/** + * Interface Type Definition + * + * When a field can return one of a heterogeneous set of types, a Interface type + * is used to describe what types are possible, what fields are in common across + * all types, as well as a function to determine which type is actually used + * when the field is resolved. + * + * Example: + * + * ```ts + * const EntityType = new GraphQLInterfaceType({ + * name: 'Entity', + * fields: { + * name: { type: GraphQLString } + * } + * }); + * ``` + */ +class GraphQLInterfaceType { + constructor(config) { + var _config$extensionASTN3; - get closed () { - return this[kClosed] - } + this.name = assertName(config.name); + this.description = config.description; + this.resolveType = config.resolveType; + this.extensions = toObjMap(config.extensions); + this.astNode = config.astNode; + this.extensionASTNodes = + (_config$extensionASTN3 = config.extensionASTNodes) !== null && + _config$extensionASTN3 !== void 0 + ? _config$extensionASTN3 + : []; + this._fields = defineFieldMap.bind(undefined, config); + this._interfaces = defineInterfaces.bind(undefined, config); + config.resolveType == null || + typeof config.resolveType === 'function' || + devAssert( + false, + `${this.name} must provide "resolveType" as a function, ` + + `but got: ${inspect$1(config.resolveType)}.`, + ); + } - close (callback) { - if (callback === undefined) { - return new Promise((resolve, reject) => { - this.close((err, data) => { - return err ? reject(err) : resolve(data) - }); - }) - } + get [Symbol.toStringTag]() { + return 'GraphQLInterfaceType'; + } - if (typeof callback !== 'function') { - throw new InvalidArgumentError('invalid callback') - } + getFields() { + if (typeof this._fields === 'function') { + this._fields = this._fields(); + } - if (this[kDestroyed]) { - queueMicrotask(() => callback(new ClientDestroyedError(), null)); - return - } + return this._fields; + } - if (this[kClosed]) { - if (this[kOnClosed]) { - this[kOnClosed].push(callback); - } else { - queueMicrotask(() => callback(null, null)); - } - return - } + getInterfaces() { + if (typeof this._interfaces === 'function') { + this._interfaces = this._interfaces(); + } - this[kClosed] = true; - this[kOnClosed].push(callback); + return this._interfaces; + } - const onClosed = () => { - const callbacks = this[kOnClosed]; - this[kOnClosed] = null; - for (let i = 0; i < callbacks.length; i++) { - callbacks[i](null, null); - } - }; + toConfig() { + return { + name: this.name, + description: this.description, + interfaces: this.getInterfaces(), + fields: fieldsToFieldsConfig(this.getFields()), + resolveType: this.resolveType, + extensions: this.extensions, + astNode: this.astNode, + extensionASTNodes: this.extensionASTNodes, + }; + } - // Should not error. - this[kClose]() - .then(() => this.destroy()) - .then(() => { - queueMicrotask(onClosed); - }); - } + toString() { + return this.name; + } - destroy (err, callback) { - if (typeof err === 'function') { - callback = err; - err = null; - } + toJSON() { + return this.toString(); + } +} - if (callback === undefined) { - return new Promise((resolve, reject) => { - this.destroy(err, (err, data) => { - return err ? /* istanbul ignore next: should never error */ reject(err) : resolve(data) - }); - }) - } +/** + * Union Type Definition + * + * When a field can return one of a heterogeneous set of types, a Union type + * is used to describe what types are possible as well as providing a function + * to determine which type is actually used when the field is resolved. + * + * Example: + * + * ```ts + * const PetType = new GraphQLUnionType({ + * name: 'Pet', + * types: [ DogType, CatType ], + * resolveType(value) { + * if (value instanceof Dog) { + * return DogType; + * } + * if (value instanceof Cat) { + * return CatType; + * } + * } + * }); + * ``` + */ +class GraphQLUnionType { + constructor(config) { + var _config$extensionASTN4; - if (typeof callback !== 'function') { - throw new InvalidArgumentError('invalid callback') - } + this.name = assertName(config.name); + this.description = config.description; + this.resolveType = config.resolveType; + this.extensions = toObjMap(config.extensions); + this.astNode = config.astNode; + this.extensionASTNodes = + (_config$extensionASTN4 = config.extensionASTNodes) !== null && + _config$extensionASTN4 !== void 0 + ? _config$extensionASTN4 + : []; + this._types = defineTypes.bind(undefined, config); + config.resolveType == null || + typeof config.resolveType === 'function' || + devAssert( + false, + `${this.name} must provide "resolveType" as a function, ` + + `but got: ${inspect$1(config.resolveType)}.`, + ); + } - if (this[kDestroyed]) { - if (this[kOnDestroyed]) { - this[kOnDestroyed].push(callback); - } else { - queueMicrotask(() => callback(null, null)); - } - return - } + get [Symbol.toStringTag]() { + return 'GraphQLUnionType'; + } - if (!err) { - err = new ClientDestroyedError(); - } + getTypes() { + if (typeof this._types === 'function') { + this._types = this._types(); + } - this[kDestroyed] = true; - this[kOnDestroyed].push(callback); + return this._types; + } - const onDestroyed = () => { - const callbacks = this[kOnDestroyed]; - this[kOnDestroyed] = null; - for (let i = 0; i < callbacks.length; i++) { - callbacks[i](null, null); - } - }; + toConfig() { + return { + name: this.name, + description: this.description, + types: this.getTypes(), + resolveType: this.resolveType, + extensions: this.extensions, + astNode: this.astNode, + extensionASTNodes: this.extensionASTNodes, + }; + } - // Should not error. - this[kDestroy](err).then(() => { - queueMicrotask(onDestroyed); - }); - } + toString() { + return this.name; + } - dispatch (opts, handler) { - if (!handler || typeof handler !== 'object') { - throw new InvalidArgumentError('handler must be an object') - } + toJSON() { + return this.toString(); + } +} - try { - if (!opts || typeof opts !== 'object') { - throw new InvalidArgumentError('opts must be an object.') - } +function defineTypes(config) { + const types = resolveReadonlyArrayThunk(config.types); + Array.isArray(types) || + devAssert( + false, + `Must provide Array of types or a function which returns such an array for Union ${config.name}.`, + ); + return types; +} - if (this[kDestroyed]) { - throw new ClientDestroyedError() - } +/** + * Enum Type Definition + * + * Some leaf values of requests and input values are Enums. GraphQL serializes + * Enum values as strings, however internally Enums can be represented by any + * kind of type, often integers. + * + * Example: + * + * ```ts + * const RGBType = new GraphQLEnumType({ + * name: 'RGB', + * values: { + * RED: { value: 0 }, + * GREEN: { value: 1 }, + * BLUE: { value: 2 } + * } + * }); + * ``` + * + * Note: If a value is not provided in a definition, the name of the enum value + * will be used as its internal value. + */ +class GraphQLEnumType { + /* */ + constructor(config) { + var _config$extensionASTN5; - if (this[kClosed]) { - throw new ClientClosedError() - } + this.name = assertName(config.name); + this.description = config.description; + this.extensions = toObjMap(config.extensions); + this.astNode = config.astNode; + this.extensionASTNodes = + (_config$extensionASTN5 = config.extensionASTNodes) !== null && + _config$extensionASTN5 !== void 0 + ? _config$extensionASTN5 + : []; + this._values = defineEnumValues(this.name, config.values); + this._valueLookup = new Map( + this._values.map((enumValue) => [enumValue.value, enumValue]), + ); + this._nameLookup = keyMap(this._values, (value) => value.name); + } - return this[kDispatch](opts, handler) - } catch (err) { - if (typeof handler.onError !== 'function') { - throw new InvalidArgumentError('invalid onError method') - } + get [Symbol.toStringTag]() { + return 'GraphQLEnumType'; + } - handler.onError(err); + getValues() { + return this._values; + } - return false - } - } - } + getValue(name) { + return this._nameLookup[name]; + } - dispatcherBase = DispatcherBase; - return dispatcherBase; -} + serialize(outputValue) { + const enumValue = this._valueLookup.get(outputValue); -var redirect$1; -var hasRequiredRedirect; + if (enumValue === undefined) { + throw new GraphQLError( + `Enum "${this.name}" cannot represent value: ${inspect$1(outputValue)}`, + ); + } -function requireRedirect () { - if (hasRequiredRedirect) return redirect$1; - hasRequiredRedirect = 1; + return enumValue.name; + } - const util = requireUtil$1(); - const { kBodyUsed } = requireSymbols$1(); - const assert = require$$0$3; - const { InvalidArgumentError } = requireErrors(); - const EE = require$$0$4; + parseValue(inputValue) /* T */ + { + if (typeof inputValue !== 'string') { + const valueStr = inspect$1(inputValue); + throw new GraphQLError( + `Enum "${this.name}" cannot represent non-string value: ${valueStr}.` + + didYouMeanEnumValue(this, valueStr), + ); + } - const redirectableStatusCodes = [300, 301, 302, 303, 307, 308]; + const enumValue = this.getValue(inputValue); - const kBody = Symbol('body'); + if (enumValue == null) { + throw new GraphQLError( + `Value "${inputValue}" does not exist in "${this.name}" enum.` + + didYouMeanEnumValue(this, inputValue), + ); + } - class BodyAsyncIterable { - constructor (body) { - this[kBody] = body; - this[kBodyUsed] = false; - } + return enumValue.value; + } - async * [Symbol.asyncIterator] () { - assert(!this[kBodyUsed], 'disturbed'); - this[kBodyUsed] = true; - yield * this[kBody]; - } - } + parseLiteral(valueNode, _variables) /* T */ + { + // Note: variables will be resolved to a value before calling this function. + if (valueNode.kind !== Kind.ENUM) { + const valueStr = print(valueNode); + throw new GraphQLError( + `Enum "${this.name}" cannot represent non-enum value: ${valueStr}.` + + didYouMeanEnumValue(this, valueStr), + { + nodes: valueNode, + }, + ); + } - class RedirectHandler { - constructor (dispatcher, maxRedirections, opts, handler) { - if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) { - throw new InvalidArgumentError('maxRedirections must be a positive number') - } + const enumValue = this.getValue(valueNode.value); - util.validateHandler(handler, opts.method, opts.upgrade); - - this.dispatcher = dispatcher; - this.location = null; - this.abort = null; - this.opts = { ...opts, maxRedirections: 0 }; // opts must be a copy - this.maxRedirections = maxRedirections; - this.handler = handler; - this.history = []; - - if (util.isStream(this.opts.body)) { - // TODO (fix): Provide some way for the user to cache the file to e.g. /tmp - // so that it can be dispatched again? - // TODO (fix): Do we need 100-expect support to provide a way to do this properly? - if (util.bodyLength(this.opts.body) === 0) { - this.opts.body - .on('data', function () { - assert(false); - }); - } + if (enumValue == null) { + const valueStr = print(valueNode); + throw new GraphQLError( + `Value "${valueStr}" does not exist in "${this.name}" enum.` + + didYouMeanEnumValue(this, valueStr), + { + nodes: valueNode, + }, + ); + } - if (typeof this.opts.body.readableDidRead !== 'boolean') { - this.opts.body[kBodyUsed] = false; - EE.prototype.on.call(this.opts.body, 'data', function () { - this[kBodyUsed] = true; - }); - } - } else if (this.opts.body && typeof this.opts.body.pipeTo === 'function') { - // TODO (fix): We can't access ReadableStream internal state - // to determine whether or not it has been disturbed. This is just - // a workaround. - this.opts.body = new BodyAsyncIterable(this.opts.body); - } else if ( - this.opts.body && - typeof this.opts.body !== 'string' && - !ArrayBuffer.isView(this.opts.body) && - util.isIterable(this.opts.body) - ) { - // TODO: Should we allow re-using iterable if !this.opts.idempotent - // or through some other flag? - this.opts.body = new BodyAsyncIterable(this.opts.body); - } - } + return enumValue.value; + } - onConnect (abort) { - this.abort = abort; - this.handler.onConnect(abort, { history: this.history }); - } + toConfig() { + const values = keyValMap( + this.getValues(), + (value) => value.name, + (value) => ({ + description: value.description, + value: value.value, + deprecationReason: value.deprecationReason, + extensions: value.extensions, + astNode: value.astNode, + }), + ); + return { + name: this.name, + description: this.description, + values, + extensions: this.extensions, + astNode: this.astNode, + extensionASTNodes: this.extensionASTNodes, + }; + } - onUpgrade (statusCode, headers, socket) { - this.handler.onUpgrade(statusCode, headers, socket); - } + toString() { + return this.name; + } - onError (error) { - this.handler.onError(error); - } + toJSON() { + return this.toString(); + } +} - onHeaders (statusCode, headers, resume, statusText) { - this.location = this.history.length >= this.maxRedirections || util.isDisturbed(this.opts.body) - ? null - : parseLocation(statusCode, headers); +function didYouMeanEnumValue(enumType, unknownValueStr) { + const allNames = enumType.getValues().map((value) => value.name); + const suggestedValues = suggestionList(unknownValueStr, allNames); + return didYouMean('the enum value', suggestedValues); +} - if (this.opts.origin) { - this.history.push(new URL(this.opts.path, this.opts.origin)); - } +function defineEnumValues(typeName, valueMap) { + isPlainObj(valueMap) || + devAssert( + false, + `${typeName} values must be an object with value names as keys.`, + ); + return Object.entries(valueMap).map(([valueName, valueConfig]) => { + isPlainObj(valueConfig) || + devAssert( + false, + `${typeName}.${valueName} must refer to an object with a "value" key ` + + `representing an internal value but got: ${inspect$1(valueConfig)}.`, + ); + return { + name: assertEnumValueName(valueName), + description: valueConfig.description, + value: valueConfig.value !== undefined ? valueConfig.value : valueName, + deprecationReason: valueConfig.deprecationReason, + extensions: toObjMap(valueConfig.extensions), + astNode: valueConfig.astNode, + }; + }); +} - if (!this.location) { - return this.handler.onHeaders(statusCode, headers, resume, statusText) - } +/** + * Input Object Type Definition + * + * An input object defines a structured collection of fields which may be + * supplied to a field argument. + * + * Using `NonNull` will ensure that a value must be provided by the query + * + * Example: + * + * ```ts + * const GeoPoint = new GraphQLInputObjectType({ + * name: 'GeoPoint', + * fields: { + * lat: { type: new GraphQLNonNull(GraphQLFloat) }, + * lon: { type: new GraphQLNonNull(GraphQLFloat) }, + * alt: { type: GraphQLFloat, defaultValue: 0 }, + * } + * }); + * ``` + */ +class GraphQLInputObjectType { + constructor(config) { + var _config$extensionASTN6; - const { origin, pathname, search } = util.parseURL(new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin))); - const path = search ? `${pathname}${search}` : pathname; - - // Remove headers referring to the original URL. - // By default it is Host only, unless it's a 303 (see below), which removes also all Content-* headers. - // https://tools.ietf.org/html/rfc7231#section-6.4 - this.opts.headers = cleanRequestHeaders(this.opts.headers, statusCode === 303, this.opts.origin !== origin); - this.opts.path = path; - this.opts.origin = origin; - this.opts.maxRedirections = 0; - - // https://tools.ietf.org/html/rfc7231#section-6.4.4 - // In case of HTTP 303, always replace method to be either HEAD or GET - if (statusCode === 303 && this.opts.method !== 'HEAD') { - this.opts.method = 'GET'; - this.opts.body = null; - } - } + this.name = assertName(config.name); + this.description = config.description; + this.extensions = toObjMap(config.extensions); + this.astNode = config.astNode; + this.extensionASTNodes = + (_config$extensionASTN6 = config.extensionASTNodes) !== null && + _config$extensionASTN6 !== void 0 + ? _config$extensionASTN6 + : []; + this._fields = defineInputFieldMap.bind(undefined, config); + } - onData (chunk) { - if (this.location) ; else { - return this.handler.onData(chunk) - } - } + get [Symbol.toStringTag]() { + return 'GraphQLInputObjectType'; + } - onComplete (trailers) { - if (this.location) { - /* - https://tools.ietf.org/html/rfc7231#section-6.4 + getFields() { + if (typeof this._fields === 'function') { + this._fields = this._fields(); + } - TLDR: undici always ignores 3xx response trailers as they are not expected in case of redirections - and neither are useful if present. + return this._fields; + } - See comment on onData method above for more detailed informations. - */ + toConfig() { + const fields = mapValue(this.getFields(), (field) => ({ + description: field.description, + type: field.type, + defaultValue: field.defaultValue, + deprecationReason: field.deprecationReason, + extensions: field.extensions, + astNode: field.astNode, + })); + return { + name: this.name, + description: this.description, + fields, + extensions: this.extensions, + astNode: this.astNode, + extensionASTNodes: this.extensionASTNodes, + }; + } - this.location = null; - this.abort = null; + toString() { + return this.name; + } - this.dispatcher.dispatch(this.opts, this); - } else { - this.handler.onComplete(trailers); - } - } + toJSON() { + return this.toString(); + } +} - onBodySent (chunk) { - if (this.handler.onBodySent) { - this.handler.onBodySent(chunk); - } - } - } +function defineInputFieldMap(config) { + const fieldMap = resolveObjMapThunk(config.fields); + isPlainObj(fieldMap) || + devAssert( + false, + `${config.name} fields must be an object with field names as keys or a function which returns such an object.`, + ); + return mapValue(fieldMap, (fieldConfig, fieldName) => { + !('resolve' in fieldConfig) || + devAssert( + false, + `${config.name}.${fieldName} field has a resolve property, but Input Types cannot define resolvers.`, + ); + return { + name: assertName(fieldName), + description: fieldConfig.description, + type: fieldConfig.type, + defaultValue: fieldConfig.defaultValue, + deprecationReason: fieldConfig.deprecationReason, + extensions: toObjMap(fieldConfig.extensions), + astNode: fieldConfig.astNode, + }; + }); +} - function parseLocation (statusCode, headers) { - if (redirectableStatusCodes.indexOf(statusCode) === -1) { - return null - } +function isRequiredInputField(field) { + return isNonNullType(field.type) && field.defaultValue === undefined; +} - for (let i = 0; i < headers.length; i += 2) { - if (headers[i].toString().toLowerCase() === 'location') { - return headers[i + 1] - } - } - } +/** + * Provided two types, return true if the types are equal (invariant). + */ +function isEqualType(typeA, typeB) { + // Equivalent types are equal. + if (typeA === typeB) { + return true; + } // If either type is non-null, the other must also be non-null. - // https://tools.ietf.org/html/rfc7231#section-6.4.4 - function shouldRemoveHeader (header, removeContent, unknownOrigin) { - return ( - (header.length === 4 && header.toString().toLowerCase() === 'host') || - (removeContent && header.toString().toLowerCase().indexOf('content-') === 0) || - (unknownOrigin && header.length === 13 && header.toString().toLowerCase() === 'authorization') || - (unknownOrigin && header.length === 6 && header.toString().toLowerCase() === 'cookie') - ) - } + if (isNonNullType(typeA) && isNonNullType(typeB)) { + return isEqualType(typeA.ofType, typeB.ofType); + } // If either type is a list, the other must also be a list. - // https://tools.ietf.org/html/rfc7231#section-6.4 - function cleanRequestHeaders (headers, removeContent, unknownOrigin) { - const ret = []; - if (Array.isArray(headers)) { - for (let i = 0; i < headers.length; i += 2) { - if (!shouldRemoveHeader(headers[i], removeContent, unknownOrigin)) { - ret.push(headers[i], headers[i + 1]); - } - } - } else if (headers && typeof headers === 'object') { - for (const key of Object.keys(headers)) { - if (!shouldRemoveHeader(key, removeContent, unknownOrigin)) { - ret.push(key, headers[key]); - } - } - } else { - assert(headers == null, 'headers must be an object or an array'); - } - return ret - } + if (isListType(typeA) && isListType(typeB)) { + return isEqualType(typeA.ofType, typeB.ofType); + } // Otherwise the types are not equal. - redirect$1 = RedirectHandler; - return redirect$1; + return false; } +/** + * Provided a type and a super type, return true if the first type is either + * equal or a subset of the second super type (covariant). + */ -var connect; -var hasRequiredConnect; - -function requireConnect () { - if (hasRequiredConnect) return connect; - hasRequiredConnect = 1; - - const net = require$$4$1; - const assert = require$$0$3; - const util = requireUtil$1(); - const { InvalidArgumentError, ConnectTimeoutError } = requireErrors(); - let tls; // include tls conditionally since it is not always available +function isTypeSubTypeOf(schema, maybeSubType, superType) { + // Equivalent type is a valid subtype + if (maybeSubType === superType) { + return true; + } // If superType is non-null, maybeSubType must also be non-null. - // TODO: session re-use does not wait for the first - // connection to resolve the session and might therefore - // resolve the same servername multiple times even when - // re-use is enabled. + if (isNonNullType(superType)) { + if (isNonNullType(maybeSubType)) { + return isTypeSubTypeOf(schema, maybeSubType.ofType, superType.ofType); + } - function buildConnector ({ maxCachedSessions, socketPath, timeout, ...opts }) { - if (maxCachedSessions != null && (!Number.isInteger(maxCachedSessions) || maxCachedSessions < 0)) { - throw new InvalidArgumentError('maxCachedSessions must be a positive integer or zero') - } + return false; + } - const options = { path: socketPath, ...opts }; - const sessionCache = new Map(); - timeout = timeout == null ? 10e3 : timeout; - maxCachedSessions = maxCachedSessions == null ? 100 : maxCachedSessions; + if (isNonNullType(maybeSubType)) { + // If superType is nullable, maybeSubType may be non-null or nullable. + return isTypeSubTypeOf(schema, maybeSubType.ofType, superType); + } // If superType type is a list, maybeSubType type must also be a list. - return function connect ({ hostname, host, protocol, port, servername, httpSocket }, callback) { - let socket; - if (protocol === 'https:') { - if (!tls) { - tls = require$$4$3; - } - servername = servername || options.servername || util.getServerName(host) || null; + if (isListType(superType)) { + if (isListType(maybeSubType)) { + return isTypeSubTypeOf(schema, maybeSubType.ofType, superType.ofType); + } - const sessionKey = servername || hostname; - const session = sessionCache.get(sessionKey) || null; + return false; + } - assert(sessionKey); + if (isListType(maybeSubType)) { + // If superType is not a list, maybeSubType must also be not a list. + return false; + } // If superType type is an abstract type, check if it is super type of maybeSubType. + // Otherwise, the child type is not a valid subtype of the parent type. - socket = tls.connect({ - highWaterMark: 16384, // TLS in node can't have bigger HWM anyway... - ...options, - servername, - session, - socket: httpSocket, // upgrade socket connection - port: port || 443, - host: hostname - }); + return ( + isAbstractType(superType) && + (isInterfaceType(maybeSubType) || isObjectType(maybeSubType)) && + schema.isSubType(superType, maybeSubType) + ); +} +/** + * Provided two composite types, determine if they "overlap". Two composite + * types overlap when the Sets of possible concrete types for each intersect. + * + * This is often used to determine if a fragment of a given type could possibly + * be visited in a context of another type. + * + * This function is commutative. + */ - socket - .on('session', function (session) { - // cache is disabled - if (maxCachedSessions === 0) { - return - } +function doTypesOverlap(schema, typeA, typeB) { + // Equivalent types overlap + if (typeA === typeB) { + return true; + } - if (sessionCache.size >= maxCachedSessions) { - // remove the oldest session - const { value: oldestKey } = sessionCache.keys().next(); - sessionCache.delete(oldestKey); - } + if (isAbstractType(typeA)) { + if (isAbstractType(typeB)) { + // If both types are abstract, then determine if there is any intersection + // between possible concrete types of each. + return schema + .getPossibleTypes(typeA) + .some((type) => schema.isSubType(typeB, type)); + } // Determine if the latter type is a possible concrete type of the former. - sessionCache.set(sessionKey, session); - }) - .on('error', function (err) { - if (sessionKey && err.code !== 'UND_ERR_INFO') { - // TODO (fix): Only delete for session related errors. - sessionCache.delete(sessionKey); - } - }); - } else { - assert(!httpSocket, 'httpSocket can only be sent on TLS update'); - socket = net.connect({ - highWaterMark: 64 * 1024, // Same as nodejs fs streams. - ...options, - port: port || 80, - host: hostname - }); - } + return schema.isSubType(typeA, typeB); + } - const cancelTimeout = setupTimeout(() => onConnectTimeout(socket), timeout); + if (isAbstractType(typeB)) { + // Determine if the former type is a possible concrete type of the latter. + return schema.isSubType(typeB, typeA); + } // Otherwise the types do not overlap. - socket - .setNoDelay(true) - .once(protocol === 'https:' ? 'secureConnect' : 'connect', function () { - cancelTimeout(); + return false; +} - if (callback) { - const cb = callback; - callback = null; - cb(null, this); - } - }) - .on('error', function (err) { - cancelTimeout(); - - if (callback) { - const cb = callback; - callback = null; - cb(err); - } - }); +/** + * Maximum possible Int value as per GraphQL Spec (32-bit signed integer). + * n.b. This differs from JavaScript's numbers that are IEEE 754 doubles safe up-to 2^53 - 1 + * */ - return socket - } - } +const GRAPHQL_MAX_INT = 2147483647; +/** + * Minimum possible Int value as per GraphQL Spec (32-bit signed integer). + * n.b. This differs from JavaScript's numbers that are IEEE 754 doubles safe starting at -(2^53 - 1) + * */ - function setupTimeout (onConnectTimeout, timeout) { - if (!timeout) { - return () => {} - } +const GRAPHQL_MIN_INT = -2147483648; +const GraphQLInt = new GraphQLScalarType({ + name: 'Int', + description: + 'The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.', - let s1 = null; - let s2 = null; - const timeoutId = setTimeout(() => { - // setImmediate is added to make sure that we priotorise socket error events over timeouts - s1 = setImmediate(() => { - if (process.platform === 'win32') { - // Windows needs an extra setImmediate probably due to implementation differences in the socket logic - s2 = setImmediate(() => onConnectTimeout()); - } else { - onConnectTimeout(); - } - }); - }, timeout); - return () => { - clearTimeout(timeoutId); - clearImmediate(s1); - clearImmediate(s2); - } - } + serialize(outputValue) { + const coercedValue = serializeObject(outputValue); - function onConnectTimeout (socket) { - util.destroy(socket, new ConnectTimeoutError()); - } + if (typeof coercedValue === 'boolean') { + return coercedValue ? 1 : 0; + } - connect = buildConnector; - return connect; -} + let num = coercedValue; -var constants = {}; + if (typeof coercedValue === 'string' && coercedValue !== '') { + num = Number(coercedValue); + } -var utils = {}; + if (typeof num !== 'number' || !Number.isInteger(num)) { + throw new GraphQLError( + `Int cannot represent non-integer value: ${inspect$1(coercedValue)}`, + ); + } -var hasRequiredUtils; + if (num > GRAPHQL_MAX_INT || num < GRAPHQL_MIN_INT) { + throw new GraphQLError( + 'Int cannot represent non 32-bit signed integer value: ' + + inspect$1(coercedValue), + ); + } -function requireUtils () { - if (hasRequiredUtils) return utils; - hasRequiredUtils = 1; - Object.defineProperty(utils, "__esModule", { value: true }); - utils.enumToMap = void 0; - function enumToMap(obj) { - const res = {}; - Object.keys(obj).forEach((key) => { - const value = obj[key]; - if (typeof value === 'number') { - res[key] = value; - } - }); - return res; - } - utils.enumToMap = enumToMap; - - return utils; -} + return num; + }, -var hasRequiredConstants; + parseValue(inputValue) { + if (typeof inputValue !== 'number' || !Number.isInteger(inputValue)) { + throw new GraphQLError( + `Int cannot represent non-integer value: ${inspect$1(inputValue)}`, + ); + } -function requireConstants () { - if (hasRequiredConstants) return constants; - hasRequiredConstants = 1; - (function (exports) { - Object.defineProperty(exports, "__esModule", { value: true }); - exports.SPECIAL_HEADERS = exports.HEADER_STATE = exports.MINOR = exports.MAJOR = exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS = exports.TOKEN = exports.STRICT_TOKEN = exports.HEX = exports.URL_CHAR = exports.STRICT_URL_CHAR = exports.USERINFO_CHARS = exports.MARK = exports.ALPHANUM = exports.NUM = exports.HEX_MAP = exports.NUM_MAP = exports.ALPHA = exports.FINISH = exports.H_METHOD_MAP = exports.METHOD_MAP = exports.METHODS_RTSP = exports.METHODS_ICE = exports.METHODS_HTTP = exports.METHODS = exports.LENIENT_FLAGS = exports.FLAGS = exports.TYPE = exports.ERROR = void 0; - const utils_1 = requireUtils(); - (function (ERROR) { - ERROR[ERROR["OK"] = 0] = "OK"; - ERROR[ERROR["INTERNAL"] = 1] = "INTERNAL"; - ERROR[ERROR["STRICT"] = 2] = "STRICT"; - ERROR[ERROR["LF_EXPECTED"] = 3] = "LF_EXPECTED"; - ERROR[ERROR["UNEXPECTED_CONTENT_LENGTH"] = 4] = "UNEXPECTED_CONTENT_LENGTH"; - ERROR[ERROR["CLOSED_CONNECTION"] = 5] = "CLOSED_CONNECTION"; - ERROR[ERROR["INVALID_METHOD"] = 6] = "INVALID_METHOD"; - ERROR[ERROR["INVALID_URL"] = 7] = "INVALID_URL"; - ERROR[ERROR["INVALID_CONSTANT"] = 8] = "INVALID_CONSTANT"; - ERROR[ERROR["INVALID_VERSION"] = 9] = "INVALID_VERSION"; - ERROR[ERROR["INVALID_HEADER_TOKEN"] = 10] = "INVALID_HEADER_TOKEN"; - ERROR[ERROR["INVALID_CONTENT_LENGTH"] = 11] = "INVALID_CONTENT_LENGTH"; - ERROR[ERROR["INVALID_CHUNK_SIZE"] = 12] = "INVALID_CHUNK_SIZE"; - ERROR[ERROR["INVALID_STATUS"] = 13] = "INVALID_STATUS"; - ERROR[ERROR["INVALID_EOF_STATE"] = 14] = "INVALID_EOF_STATE"; - ERROR[ERROR["INVALID_TRANSFER_ENCODING"] = 15] = "INVALID_TRANSFER_ENCODING"; - ERROR[ERROR["CB_MESSAGE_BEGIN"] = 16] = "CB_MESSAGE_BEGIN"; - ERROR[ERROR["CB_HEADERS_COMPLETE"] = 17] = "CB_HEADERS_COMPLETE"; - ERROR[ERROR["CB_MESSAGE_COMPLETE"] = 18] = "CB_MESSAGE_COMPLETE"; - ERROR[ERROR["CB_CHUNK_HEADER"] = 19] = "CB_CHUNK_HEADER"; - ERROR[ERROR["CB_CHUNK_COMPLETE"] = 20] = "CB_CHUNK_COMPLETE"; - ERROR[ERROR["PAUSED"] = 21] = "PAUSED"; - ERROR[ERROR["PAUSED_UPGRADE"] = 22] = "PAUSED_UPGRADE"; - ERROR[ERROR["PAUSED_H2_UPGRADE"] = 23] = "PAUSED_H2_UPGRADE"; - ERROR[ERROR["USER"] = 24] = "USER"; - })(exports.ERROR || (exports.ERROR = {})); - (function (TYPE) { - TYPE[TYPE["BOTH"] = 0] = "BOTH"; - TYPE[TYPE["REQUEST"] = 1] = "REQUEST"; - TYPE[TYPE["RESPONSE"] = 2] = "RESPONSE"; - })(exports.TYPE || (exports.TYPE = {})); - (function (FLAGS) { - FLAGS[FLAGS["CONNECTION_KEEP_ALIVE"] = 1] = "CONNECTION_KEEP_ALIVE"; - FLAGS[FLAGS["CONNECTION_CLOSE"] = 2] = "CONNECTION_CLOSE"; - FLAGS[FLAGS["CONNECTION_UPGRADE"] = 4] = "CONNECTION_UPGRADE"; - FLAGS[FLAGS["CHUNKED"] = 8] = "CHUNKED"; - FLAGS[FLAGS["UPGRADE"] = 16] = "UPGRADE"; - FLAGS[FLAGS["CONTENT_LENGTH"] = 32] = "CONTENT_LENGTH"; - FLAGS[FLAGS["SKIPBODY"] = 64] = "SKIPBODY"; - FLAGS[FLAGS["TRAILING"] = 128] = "TRAILING"; - // 1 << 8 is unused - FLAGS[FLAGS["TRANSFER_ENCODING"] = 512] = "TRANSFER_ENCODING"; - })(exports.FLAGS || (exports.FLAGS = {})); - (function (LENIENT_FLAGS) { - LENIENT_FLAGS[LENIENT_FLAGS["HEADERS"] = 1] = "HEADERS"; - LENIENT_FLAGS[LENIENT_FLAGS["CHUNKED_LENGTH"] = 2] = "CHUNKED_LENGTH"; - LENIENT_FLAGS[LENIENT_FLAGS["KEEP_ALIVE"] = 4] = "KEEP_ALIVE"; - })(exports.LENIENT_FLAGS || (exports.LENIENT_FLAGS = {})); - var METHODS; - (function (METHODS) { - METHODS[METHODS["DELETE"] = 0] = "DELETE"; - METHODS[METHODS["GET"] = 1] = "GET"; - METHODS[METHODS["HEAD"] = 2] = "HEAD"; - METHODS[METHODS["POST"] = 3] = "POST"; - METHODS[METHODS["PUT"] = 4] = "PUT"; - /* pathological */ - METHODS[METHODS["CONNECT"] = 5] = "CONNECT"; - METHODS[METHODS["OPTIONS"] = 6] = "OPTIONS"; - METHODS[METHODS["TRACE"] = 7] = "TRACE"; - /* WebDAV */ - METHODS[METHODS["COPY"] = 8] = "COPY"; - METHODS[METHODS["LOCK"] = 9] = "LOCK"; - METHODS[METHODS["MKCOL"] = 10] = "MKCOL"; - METHODS[METHODS["MOVE"] = 11] = "MOVE"; - METHODS[METHODS["PROPFIND"] = 12] = "PROPFIND"; - METHODS[METHODS["PROPPATCH"] = 13] = "PROPPATCH"; - METHODS[METHODS["SEARCH"] = 14] = "SEARCH"; - METHODS[METHODS["UNLOCK"] = 15] = "UNLOCK"; - METHODS[METHODS["BIND"] = 16] = "BIND"; - METHODS[METHODS["REBIND"] = 17] = "REBIND"; - METHODS[METHODS["UNBIND"] = 18] = "UNBIND"; - METHODS[METHODS["ACL"] = 19] = "ACL"; - /* subversion */ - METHODS[METHODS["REPORT"] = 20] = "REPORT"; - METHODS[METHODS["MKACTIVITY"] = 21] = "MKACTIVITY"; - METHODS[METHODS["CHECKOUT"] = 22] = "CHECKOUT"; - METHODS[METHODS["MERGE"] = 23] = "MERGE"; - /* upnp */ - METHODS[METHODS["M-SEARCH"] = 24] = "M-SEARCH"; - METHODS[METHODS["NOTIFY"] = 25] = "NOTIFY"; - METHODS[METHODS["SUBSCRIBE"] = 26] = "SUBSCRIBE"; - METHODS[METHODS["UNSUBSCRIBE"] = 27] = "UNSUBSCRIBE"; - /* RFC-5789 */ - METHODS[METHODS["PATCH"] = 28] = "PATCH"; - METHODS[METHODS["PURGE"] = 29] = "PURGE"; - /* CalDAV */ - METHODS[METHODS["MKCALENDAR"] = 30] = "MKCALENDAR"; - /* RFC-2068, section 19.6.1.2 */ - METHODS[METHODS["LINK"] = 31] = "LINK"; - METHODS[METHODS["UNLINK"] = 32] = "UNLINK"; - /* icecast */ - METHODS[METHODS["SOURCE"] = 33] = "SOURCE"; - /* RFC-7540, section 11.6 */ - METHODS[METHODS["PRI"] = 34] = "PRI"; - /* RFC-2326 RTSP */ - METHODS[METHODS["DESCRIBE"] = 35] = "DESCRIBE"; - METHODS[METHODS["ANNOUNCE"] = 36] = "ANNOUNCE"; - METHODS[METHODS["SETUP"] = 37] = "SETUP"; - METHODS[METHODS["PLAY"] = 38] = "PLAY"; - METHODS[METHODS["PAUSE"] = 39] = "PAUSE"; - METHODS[METHODS["TEARDOWN"] = 40] = "TEARDOWN"; - METHODS[METHODS["GET_PARAMETER"] = 41] = "GET_PARAMETER"; - METHODS[METHODS["SET_PARAMETER"] = 42] = "SET_PARAMETER"; - METHODS[METHODS["REDIRECT"] = 43] = "REDIRECT"; - METHODS[METHODS["RECORD"] = 44] = "RECORD"; - /* RAOP */ - METHODS[METHODS["FLUSH"] = 45] = "FLUSH"; - })(METHODS = exports.METHODS || (exports.METHODS = {})); - exports.METHODS_HTTP = [ - METHODS.DELETE, - METHODS.GET, - METHODS.HEAD, - METHODS.POST, - METHODS.PUT, - METHODS.CONNECT, - METHODS.OPTIONS, - METHODS.TRACE, - METHODS.COPY, - METHODS.LOCK, - METHODS.MKCOL, - METHODS.MOVE, - METHODS.PROPFIND, - METHODS.PROPPATCH, - METHODS.SEARCH, - METHODS.UNLOCK, - METHODS.BIND, - METHODS.REBIND, - METHODS.UNBIND, - METHODS.ACL, - METHODS.REPORT, - METHODS.MKACTIVITY, - METHODS.CHECKOUT, - METHODS.MERGE, - METHODS['M-SEARCH'], - METHODS.NOTIFY, - METHODS.SUBSCRIBE, - METHODS.UNSUBSCRIBE, - METHODS.PATCH, - METHODS.PURGE, - METHODS.MKCALENDAR, - METHODS.LINK, - METHODS.UNLINK, - METHODS.PRI, - // TODO(indutny): should we allow it with HTTP? - METHODS.SOURCE, - ]; - exports.METHODS_ICE = [ - METHODS.SOURCE, - ]; - exports.METHODS_RTSP = [ - METHODS.OPTIONS, - METHODS.DESCRIBE, - METHODS.ANNOUNCE, - METHODS.SETUP, - METHODS.PLAY, - METHODS.PAUSE, - METHODS.TEARDOWN, - METHODS.GET_PARAMETER, - METHODS.SET_PARAMETER, - METHODS.REDIRECT, - METHODS.RECORD, - METHODS.FLUSH, - // For AirPlay - METHODS.GET, - METHODS.POST, - ]; - exports.METHOD_MAP = utils_1.enumToMap(METHODS); - exports.H_METHOD_MAP = {}; - Object.keys(exports.METHOD_MAP).forEach((key) => { - if (/^H/.test(key)) { - exports.H_METHOD_MAP[key] = exports.METHOD_MAP[key]; - } - }); - (function (FINISH) { - FINISH[FINISH["SAFE"] = 0] = "SAFE"; - FINISH[FINISH["SAFE_WITH_CB"] = 1] = "SAFE_WITH_CB"; - FINISH[FINISH["UNSAFE"] = 2] = "UNSAFE"; - })(exports.FINISH || (exports.FINISH = {})); - exports.ALPHA = []; - for (let i = 'A'.charCodeAt(0); i <= 'Z'.charCodeAt(0); i++) { - // Upper case - exports.ALPHA.push(String.fromCharCode(i)); - // Lower case - exports.ALPHA.push(String.fromCharCode(i + 0x20)); - } - exports.NUM_MAP = { - 0: 0, 1: 1, 2: 2, 3: 3, 4: 4, - 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, - }; - exports.HEX_MAP = { - 0: 0, 1: 1, 2: 2, 3: 3, 4: 4, - 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, - A: 0XA, B: 0XB, C: 0XC, D: 0XD, E: 0XE, F: 0XF, - a: 0xa, b: 0xb, c: 0xc, d: 0xd, e: 0xe, f: 0xf, - }; - exports.NUM = [ - '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', - ]; - exports.ALPHANUM = exports.ALPHA.concat(exports.NUM); - exports.MARK = ['-', '_', '.', '!', '~', '*', '\'', '(', ')']; - exports.USERINFO_CHARS = exports.ALPHANUM - .concat(exports.MARK) - .concat(['%', ';', ':', '&', '=', '+', '$', ',']); - // TODO(indutny): use RFC - exports.STRICT_URL_CHAR = [ - '!', '"', '$', '%', '&', '\'', - '(', ')', '*', '+', ',', '-', '.', '/', - ':', ';', '<', '=', '>', - '@', '[', '\\', ']', '^', '_', - '`', - '{', '|', '}', '~', - ].concat(exports.ALPHANUM); - exports.URL_CHAR = exports.STRICT_URL_CHAR - .concat(['\t', '\f']); - // All characters with 0x80 bit set to 1 - for (let i = 0x80; i <= 0xff; i++) { - exports.URL_CHAR.push(i); - } - exports.HEX = exports.NUM.concat(['a', 'b', 'c', 'd', 'e', 'f', 'A', 'B', 'C', 'D', 'E', 'F']); - /* Tokens as defined by rfc 2616. Also lowercases them. - * token = 1* - * separators = "(" | ")" | "<" | ">" | "@" - * | "," | ";" | ":" | "\" | <"> - * | "/" | "[" | "]" | "?" | "=" - * | "{" | "}" | SP | HT - */ - exports.STRICT_TOKEN = [ - '!', '#', '$', '%', '&', '\'', - '*', '+', '-', '.', - '^', '_', '`', - '|', '~', - ].concat(exports.ALPHANUM); - exports.TOKEN = exports.STRICT_TOKEN.concat([' ']); - /* - * Verify that a char is a valid visible (printable) US-ASCII - * character or %x80-FF - */ - exports.HEADER_CHARS = ['\t']; - for (let i = 32; i <= 255; i++) { - if (i !== 127) { - exports.HEADER_CHARS.push(i); - } - } - // ',' = \x44 - exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS.filter((c) => c !== 44); - exports.MAJOR = exports.NUM_MAP; - exports.MINOR = exports.MAJOR; - var HEADER_STATE; - (function (HEADER_STATE) { - HEADER_STATE[HEADER_STATE["GENERAL"] = 0] = "GENERAL"; - HEADER_STATE[HEADER_STATE["CONNECTION"] = 1] = "CONNECTION"; - HEADER_STATE[HEADER_STATE["CONTENT_LENGTH"] = 2] = "CONTENT_LENGTH"; - HEADER_STATE[HEADER_STATE["TRANSFER_ENCODING"] = 3] = "TRANSFER_ENCODING"; - HEADER_STATE[HEADER_STATE["UPGRADE"] = 4] = "UPGRADE"; - HEADER_STATE[HEADER_STATE["CONNECTION_KEEP_ALIVE"] = 5] = "CONNECTION_KEEP_ALIVE"; - HEADER_STATE[HEADER_STATE["CONNECTION_CLOSE"] = 6] = "CONNECTION_CLOSE"; - HEADER_STATE[HEADER_STATE["CONNECTION_UPGRADE"] = 7] = "CONNECTION_UPGRADE"; - HEADER_STATE[HEADER_STATE["TRANSFER_ENCODING_CHUNKED"] = 8] = "TRANSFER_ENCODING_CHUNKED"; - })(HEADER_STATE = exports.HEADER_STATE || (exports.HEADER_STATE = {})); - exports.SPECIAL_HEADERS = { - 'connection': HEADER_STATE.CONNECTION, - 'content-length': HEADER_STATE.CONTENT_LENGTH, - 'proxy-connection': HEADER_STATE.CONNECTION, - 'transfer-encoding': HEADER_STATE.TRANSFER_ENCODING, - 'upgrade': HEADER_STATE.UPGRADE, - }; - -} (constants)); - return constants; -} - -var llhttp_wasm; -var hasRequiredLlhttp_wasm; - -function requireLlhttp_wasm () { - if (hasRequiredLlhttp_wasm) return llhttp_wasm; - hasRequiredLlhttp_wasm = 1; - llhttp_wasm = 'AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAzk4AwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAYGAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAAMEBQFwAQ4OBQMBAAIGCAF/AUGAuAQLB/UEHwZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAJGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAKGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQA1DGxsaHR0cF9hbGxvYwAMBm1hbGxvYwA6C2xsaHR0cF9mcmVlAA0EZnJlZQA8D2xsaHR0cF9nZXRfdHlwZQAOFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAPFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAQEWxsaHR0cF9nZXRfbWV0aG9kABEWbGxodHRwX2dldF9zdGF0dXNfY29kZQASEmxsaHR0cF9nZXRfdXBncmFkZQATDGxsaHR0cF9yZXNldAAUDmxsaHR0cF9leGVjdXRlABUUbGxodHRwX3NldHRpbmdzX2luaXQAFg1sbGh0dHBfZmluaXNoABcMbGxodHRwX3BhdXNlABgNbGxodHRwX3Jlc3VtZQAZG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAaEGxsaHR0cF9nZXRfZXJybm8AGxdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAcF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uAB0UbGxodHRwX2dldF9lcnJvcl9wb3MAHhFsbGh0dHBfZXJybm9fbmFtZQAfEmxsaHR0cF9tZXRob2RfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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f2pB5ABJDQAgAEHMAUYNACAAQbACRg0AQQQhBSAEQYgEcUGABEYNAiAEQShxRQ0CC0EADwtBAEEDIAApAyBQGyEFCyAFC10BAn9BACEBAkAgAC0AKEEBRg0AIAAvATIiAkGcf2pB5ABJDQAgAkHMAUYNACACQbACRg0AIAAvATAiAEHAAHENAEEBIQEgAEGIBHFBgARGDQAgAEEocUUhAQsgAQuiAQEDfwJAAkACQCAALQAqRQ0AIAAtACtFDQBBACEDIAAvATAiBEECcUUNAQwCC0EAIQMgAC8BMCIEQQFxRQ0BC0EBIQMgAC0AKEEBRg0AIAAvATIiBUGcf2pB5ABJDQAgBUHMAUYNACAFQbACRg0AIARBwABxDQBBACEDIARBiARxQYAERg0AIARBKHFBAEchAwsgAEEAOwEwIABBADoALyADC5QBAQJ/AkACQAJAIAAtACpFDQAgAC0AK0UNAEEAIQEgAC8BMCICQQJxRQ0BDAILQQAhASAALwEwIgJBAXFFDQELQQEhASAALQAoQQFGDQAgAC8BMiIAQZx/akHkAEkNACAAQcwBRg0AIABBsAJGDQAgAkHAAHENAEEAIQEgAkGIBHFBgARGDQAgAkEocUEARyEBCyABC08AIABBGGpCADcDACAAQgA3AwAgAEEwakIANwMAIABBKGpCADcDACAAQSBqQgA3AwAgAEEQakIANwMAIABBCGpCADcDACAAQbwBNgIcQQALewEBfwJAIAAoAgwiAw0AAkAgACgCBEUNACAAIAE2AgQLAkAgACABIAIQuICAgAAiAw0AIAAoAgwPCyAAIAM2AhxBACEDIAAoAgQiAUUNACAAIAEgAiAAKAIIEYGAgIAAACIBRQ0AIAAgAjYCFCAAIAE2AgwgASEDCyADC9POAQMcfwN+BX8jgICAgABBEGsiAySAgICAACABIQQgASEFIAEhBiABIQcgASEIIAEhCSABIQogASELIAEhDCABIQ0gASEOIAEhDyABIRAgASERIAEhEiABIRMgASEUIAEhFSABIRYgASEXIAEhGCABIRkgASEaIAEhGyABIRwgASEdAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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HgwTC0GZASEeDBILQZ0BIR4MEQtBmgEhHgwQC0EBIR4MDwtBmwEhHgwOC0GcASEeDA0LQZ4BIR4MDAtBoAEhHgwLC0GfASEeDAoLQaEBIR4MCQtBogEhHgwIC0GjASEeDAcLQaQBIR4MBgtBpQEhHgwFC0GmASEeDAQLQacBIR4MAwtBqAEhHgwCC0GpASEeDAELQa8BIR4LA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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AbsBuwG7AbsBuwG7AbsBuwG7AQG7AQsgCEEBaiEBQdQAIR4MmAILIAhBAWohAUHVACEeDJcCC0HnACEeIAEiIiACRg2mAiACICJrIAAoAgAiJmohIyAiIQggJiEBAkADQCAILQAAIAFB7bOAgABqLQAARw25ASABQQJGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICM2AgAMpwILIABBADYCACAiICZrQQNqIQFBECEeDLYBC0HoACEeIAEiIiACRg2lAiACICJrIAAoAgAiJmohIyAiIQggJiEBAkADQCAILQAAIAFB9rKAgABqLQAARw24ASABQQVGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICM2AgAMpgILIABBADYCACAiICZrQQZqIQFBFiEeDLUBC0HpACEeIAEiIiACRg2kAiACICJrIAAoAgAiJmohIyAiIQggJiEBAkADQCAILQAAIAFB/LKAgABqLQAARw23ASABQQNGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICM2AgAMpQILIABBADYCACAiICZrQQRqIQFBBSEeDLQBCwJAIAEiCCACRw0AQeoAIR4MpAILIAgtAABB2QBHDbUBIAhBAWohAUEIIR4MswELAkAgASIIIAJHDQBB6wAhHgyjAgsCQAJAIAgtAABBsn9qDgMAtgEBtgELIAhBAWohAUHZACEeDJMCCyAIQQFqIQFB2gAhHgySAgsCQCABIgggAkcNAEHsACEeDKICCwJAAkAgCC0AAEG4f2oOCAC1AbUBtQG1AbUBtQEBtQELIAhBAWohAUHYACEeDJICCyAIQQFqIQFB2wAhHgyRAgtB7QAhHiABIiIgAkYNoAIgAiAiayAAKAIAIiZqISMgIiEIICYhAQJAA0AgCC0AACABQYCzgIAAai0AAEcNswEgAUECRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAjNgIADKECC0EAIR4gAEEANgIAICIgJmtBA2ohAQywAQtB7gAhHiABIiIgAkYNnwIgAiAiayAAKAIAIiZqISMgIiEIICYhAQJAA0AgCC0AACABQYOzgIAAai0AAEcNsgEgAUEERg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAjNgIADKACCyAAQQA2AgAgIiAma0EFaiEBQSMhHgyvAQsCQCABIgggAkcNAEHvACEeDJ8CCwJAAkAgCC0AAEG0f2oOCACyAbIBsgGyAbIBsgEBsgELIAhBAWohAUHdACEeDI8CCyAIQQFqIQFB3gAhHgyOAgsCQCABIgggAkcNAEHwACEeDJ4CCyAILQAAQcUARw2vASAIQQFqIQEM3gELQfEAIR4gASIiIAJGDZwCIAIgImsgACgCACImaiEjICIhCCAmIQECQANAIAgtAAAgAUGIs4CAAGotAABHDa8BIAFBA0YNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgIzYCAAydAgsgAEEANgIAICIgJmtBBGohAUEtIR4MrAELQfIAIR4gASIiIAJGDZsCIAIgImsgACgCACImaiEjICIhCCAmIQECQANAIAgtAAAgAUHQs4CAAGotAABHDa4BIAFBCEYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgIzYCAAycAgsgAEEANgIAICIgJmtBCWohAUEpIR4MqwELAkAgASIBIAJHDQBB8wAhHgybAgtBASEeIAEtAABB3wBHDaoBIAFBAWohAQzcAQtB9AAhHiABIiIgAkYNmQIgAiAiayAAKAIAIiZqISMgIiEIICYhAQNAIAgtAAAgAUGMs4CAAGotAABHDasBIAFBAUYN9wEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICM2AgAMmQILAkAgASIeIAJHDQBB9QAhHgyZAgsgAiAeayAAKAIAIiJqISYgHiEIICIhAQJAA0AgCC0AACABQY6zgIAAai0AAEcNqwEgAUECRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAmNgIAQfUAIR4MmQILIABBADYCACAeICJrQQNqIQFBAiEeDKgBCwJAIAEiHiACRw0AQfYAIR4MmAILIAIgHmsgACgCACIiaiEmIB4hCCAiIQECQANAIAgtAAAgAUHws4CAAGotAABHDaoBIAFBAUYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgJjYCAEH2ACEeDJgCCyAAQQA2AgAgHiAia0ECaiEBQR8hHgynAQsCQCABIh4gAkcNAEH3ACEeDJcCCyACIB5rIAAoAgAiImohJiAeIQggIiEBAkADQCAILQAAIAFB8rOAgABqLQAARw2pASABQQFGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICY2AgBB9wAhHgyXAgsgAEEANgIAIB4gImtBAmohAUEJIR4MpgELAkAgASIIIAJHDQBB+AAhHgyWAgsCQAJAIAgtAABBt39qDgcAqQGpAakBqQGpAQGpAQsgCEEBaiEBQeYAIR4MhgILIAhBAWohAUHnACEeDIUCCwJAIAEiHiACRw0AQfkAIR4MlQILIAIgHmsgACgCACIiaiEmIB4hCCAiIQECQANAIAgtAAAgAUGRs4CAAGotAABHDacBIAFBBUYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgJjYCAEH5ACEeDJUCCyAAQQA2AgAgHiAia0EGaiEBQRghHgykAQsCQCABIh4gAkcNAEH6ACEeDJQCCyACIB5rIAAoAgAiImohJiAeIQggIiEBAkADQCAILQAAIAFBl7OAgABqLQAARw2mASABQQJGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICY2AgBB+gAhHgyUAgsgAEEANgIAIB4gImtBA2ohAUEXIR4MowELAkAgASIeIAJHDQBB+wAhHgyTAgsgAiAeayAAKAIAIiJqISYgHiEIICIhAQJAA0AgCC0AACABQZqzgIAAai0AAEcNpQEgAUEGRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAmNgIAQfsAIR4MkwILIABBADYCACAeICJrQQdqIQFBFSEeDKIBCwJAIAEiHiACRw0AQfwAIR4MkgILIAIgHmsgACgCACIiaiEmIB4hCCAiIQECQANAIAgtAAAgAUGhs4CAAGotAABHDaQBIAFBBUYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgJjYCAEH8ACEeDJICCyAAQQA2AgAgHiAia0EGaiEBQR4hHgyhAQsCQCABIgggAkcNAEH9ACEeDJECCyAILQAAQcwARw2iASAIQQFqIQFBCiEeDKABCwJAIAEiCCACRw0AQf4AIR4MkAILAkACQCAILQAAQb9/ag4PAKMBowGjAaMBowGjAaMBowGjAaMBowGjAaMBAaMBCyAIQQFqIQFB7AAhHgyAAgsgCEEBaiEBQe0AIR4M/wELAkAgASIIIAJHDQBB/wAhHgyPAgsCQAJAIAgtAABBv39qDgMAogEBogELIAhBAWohAUHrACEeDP8BCyAIQQFqIQFB7gAhHgz+AQsCQCABIh4gAkcNAEGAASEeDI4CCyACIB5rIAAoAgAiImohJiAeIQggIiEBAkADQCAILQAAIAFBp7OAgABqLQAARw2gASABQQFGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICY2AgBBgAEhHgyOAgsgAEEANgIAIB4gImtBAmohAUELIR4MnQELAkAgASIIIAJHDQBBgQEhHgyNAgsCQAJAAkACQCAILQAAQVNqDiMAogGiAaIBogGiAaIBogGiAaIBogGiAaIBogGiAaIBogGiAaIBogGiAaIBogGiAQGiAaIBogGiAaIBAqIBogGiAQOiAQsgCEEBaiEBQekAIR4M/wELIAhBAWohAUHqACEeDP4BCyAIQQFqIQFB7wAhHgz9AQsgCEEBaiEBQfAAIR4M/AELAkAgASIeIAJHDQBBggEhHgyMAgsgAiAeayAAKAIAIiJqISYgHiEIICIhAQJAA0AgCC0AACABQamzgIAAai0AAEcNngEgAUEERg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAmNgIAQYIBIR4MjAILIABBADYCACAeICJrQQVqIQFBGSEeDJsBCwJAIAEiIiACRw0AQYMBIR4MiwILIAIgImsgACgCACImaiEeICIhCCAmIQECQANAIAgtAAAgAUGus4CAAGotAABHDZ0BIAFBBUYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgHjYCAEGDASEeDIsCCyAAQQA2AgBBBiEeICIgJmtBBmohAQyaAQsCQCABIh4gAkcNAEGEASEeDIoCCyACIB5rIAAoAgAiImohJiAeIQggIiEBAkADQCAILQAAIAFBtLOAgABqLQAARw2cASABQQFGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICY2AgBBhAEhHgyKAgsgAEEANgIAIB4gImtBAmohAUEcIR4MmQELAkAgASIeIAJHDQBBhQEhHgyJAgsgAiAeayAAKAIAIiJqISYgHiEIICIhAQJAA0AgCC0AACABQbazgIAAai0AAEcNmwEgAUEBRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAmNgIAQYUBIR4MiQILIABBADYCACAeICJrQQJqIQFBJyEeDJgBCwJAIAEiCCACRw0AQYYBIR4MiAILAkACQCAILQAAQax/ag4CAAGbAQsgCEEBaiEBQfQAIR4M+AELIAhBAWohAUH1ACEeDPcBCwJAIAEiHiAC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IiEBDDELIABBxAA2AhwgACAiNgIUIAAgATYCDEEAIR4MeQsgACgCBCEBIABBADYCBAJAIAAgASAiEKSAgIAAIgENACAiIQEMMQsgAEHFADYCHCAAICI2AhQgACABNgIMQQAhHgx4CyAAKAIEIQEgAEEANgIEAkAgACABICIQpICAgAAiAQ0AICIhAQw1CyAAQdAANgIcIAAgIjYCFCAAIAE2AgxBACEeDHcLIABBADYCHCAAICI2AhQgAEHQjICAADYCECAAQQc2AgxBACEeDHYLIABBADYCHCAAIAE2AhQgAEHQjICAADYCECAAQQc2AgxBACEeDHULQQAhHiAAQQA2AhwgACAiNgIUIABBv5SAgAA2AhAgAEEHNgIMDHQLIABBADYCHCAAICI2AhQgAEG/lICAADYCECAAQQc2AgxBACEeDHMLIABBADYCHCAAICI2AhQgAEHUjoCAADYCECAAQQc2AgxBACEeDHILIABBADYCHCAAIAE2AhQgAEHBk4CAADYCECAAQQY2AgxBACEeDHELIABBADYCACAiICZrQQZqIQFBJCEeCyAAIB46ACkgASEBDE4LIABBADYCAAtBACEeIABBADYCHCAAIAg2AhQgAEGklICAADYCECAAQQY2AgwMbQsgACgCBCETIABBADYCBCAAIBMgHhCmgICAACITDQEgHkEBaiETC0GdASEeDFsLIABBqgE2AhwgACATNgIMIAAgHkEBajYCFEEAIR4MagsgACgCBCEUIABBADYCBCAAIBQgHhCmgICAACIUDQEgHkEBaiEUC0GaASEeDFgLIABBqwE2AhwgACAUNgIMIAAgHkEBajYCFEEAIR4MZwsgAEEANgIcIAAgFTYCFCAAQfOKgIAANgIQIABBDTYCDEEAIR4MZgsgAEEANgIcIAAgFjYCFCAAQc6NgIAANgIQIABBCTYCDEEAIR4MZQtBASEeCyAAIB46ACsgF0EBaiEWDC4LIABBADYCHCAAIBc2AhQgAEGijYCAADYCECAAQQk2AgxBACEeDGILIABBADYCHCAAIBg2AhQgAEHFioCAADYCECAAQQk2AgxBACEeDGELQQEhHgsgACAeOgAqIBlBAWohGAwsCyAAQQA2AhwgACAZNgIUIABBuI2AgAA2AhAgAEEJNgIMQQAhHgxeCyAAQQA2AhwgACAZNgIUIABB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QR9GG3QhAiAEKAIAIQYCQANAIAYiBCgCBEF4cSAARg0BIAJBHXYhBiACQQF0IQIgBCAGQQRxakEQaiIDKAIAIgYNAAsgAyABNgIAIAFBGGogBDYCACABIAE2AgwgASABNgIIDAELIAQoAggiACABNgIMIAQgATYCCCABQRhqQQA2AgAgASAENgIMIAEgADYCCAtBAEEAKAKotICAAEF/aiIBQX8gARs2Aqi0gIAACwtOAAJAIAANAD8AQRB0DwsCQCAAQf//A3ENACAAQX9MDQACQCAAQRB2QAAiAEF/Rw0AQQBBMDYC+LeAgABBfw8LIABBEHQPCxC/gICAAAALBAAAAAsLjiwBAEGACAuGLAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASW52YWxpZCBjaGFyIGluIHVybCBxdWVyeQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2JvZHkAQ29udGVudC1MZW5ndGggb3ZlcmZsb3cAQ2h1bmsgc2l6ZSBvdmVyZmxvdwBSZXNwb25zZSBvdmVyZmxvdwBJbnZhbGlkIG1ldGhvZCBmb3IgSFRUUC94LnggcmVxdWVzdABJbnZhbGlkIG1ldGhvZCBmb3IgUlRTUC94LnggcmVxdWVzdABFeHBlY3RlZCBTT1VSQ0UgbWV0aG9kIGZvciBJQ0UveC54IHJlcXVlc3QASW52YWxpZCBjaGFyIGluIHVybCBmcmFnbWVudCBzdGFydABFeHBlY3RlZCBkb3QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9zdGF0dXMASW52YWxpZCByZXNwb25zZSBzdGF0dXMASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgcGFyYW1ldGVycwBVc2VyIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19oZWFkZXJgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNlcnZlcgBJbnZhbGlkIGhlYWRlciB2YWx1ZSBjaGFyAEludmFsaWQgaGVhZGVyIGZpZWxkIGNoYXIASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciBoZWFkZXIgdmFsdWUATWlzc2luZyBleHBlY3RlZCBMRiBhZnRlciBoZWFkZXIgdmFsdWUASW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlciB2YWx1ZQBQYXVzZWQgYnkgb25faGVhZGVyc19jb21wbGV0ZQBJbnZhbGlkIEVPRiBzdGF0ZQBvbl9jaHVua19oZWFkZXIgcGF1c2UAb25fbWVzc2FnZV9iZWdpbiBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9tZXNzYWdlX2NvbXBsZXRlIHBhdXNlAFBhdXNlIG9uIENPTk5FQ1QvVXBncmFkZQBQYXVzZSBvbiBQUkkvVXBncmFkZQBFeHBlY3RlZCBIVFRQLzIgQ29ubmVjdGlvbiBQcmVmYWNlAEV4cGVjdGVkIHNwYWNlIGFmdGVyIG1ldGhvZABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl9maWVsZABQYXVzZWQASW52YWxpZCB3b3JkIGVuY291bnRlcmVkAEludmFsaWQgbWV0aG9kIGVuY291bnRlcmVkAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2NoZW1hAFJlcXVlc3QgaGFzIGludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYABNS0FDVElWSVRZAENPUFkATk9USUZZAFBMQVkAUFVUAENIRUNLT1VUAFBPU1QAUkVQT1JUAEhQRV9JTlZBTElEX0NPTlNUQU5UAEdFVABIUEVfU1RSSUNUAFJFRElSRUNUAENPTk5FQ1QASFBFX0lOVkFMSURfU1RBVFVTAE9QVElPTlMAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABURUFSRE9XTgBIUEVfQ0xPU0VEX0NPTk5FQ1RJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASFBFX0lOVkFMSURfVVJMAE1LQ09MAEFDTABIUEVfSU5URVJOQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAEhQRV9JTlZBTElEX0NPTlRFTlRfTEVOR1RIAEhQRV9VTkVYUEVDVEVEX0NPTlRFTlRfTEVOR1RIAEZMVVNIAFBST1BQQVRDSABNLVNFQVJDSABIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBIUEVfQ0JfSEVBREVSU19DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX01FU1NBR0VfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBQQVVTRQBQVVJHRQBNRVJHRQBIUEVfUEFVU0VEX1VQR1JBREUASFBFX1BBVVNFRF9IMl9VUEdSQURFAFNPVVJDRQBBTk5PVU5DRQBUUkFDRQBERVNDUklCRQBVTlNVQlNDUklCRQBSRUNPUkQASFBFX0lOVkFMSURfTUVUSE9EAFBST1BGSU5EAFVO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AAAAAAAAAAAAAAAEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAQAAAgAAAAAAAAAAAAAAAAAAAAAAAAMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAIAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOT1VOQ0VFQ0tPVVRORUNURVRFQ1JJQkVMVVNIRVRFQURTRUFSQ0hSR0VDVElWSVRZTEVOREFSVkVPVElGWVBUSU9OU0NIU0VBWVNUQVRDSEdFT1JESVJFQ1RPUlRSQ0hQQVJBTUVURVJVUkNFQlNDUklCRUFSRE9XTkFDRUlORE5LQ0tVQlNDUklCRUhUVFAvQURUUC8='; - return llhttp_wasm; -} - -var llhttp_simd_wasm; -var hasRequiredLlhttp_simd_wasm; - -function requireLlhttp_simd_wasm () { - if (hasRequiredLlhttp_simd_wasm) return llhttp_simd_wasm; - hasRequiredLlhttp_simd_wasm = 1; - llhttp_simd_wasm = 'AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAzk4AwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAYGAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAAMEBQFwAQ4OBQMBAAIGCAF/AUGAuAQLB/UEHwZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAJGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAKGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQA1DGxsaHR0cF9hbGxvYwAMBm1hbGxvYwA6C2xsaHR0cF9mcmVlAA0EZnJlZQA8D2xsaHR0cF9nZXRfdHlwZQAOFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAPFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAQEWxsaHR0cF9nZXRfbWV0aG9kABEWbGxodHRwX2dldF9zdGF0dXNfY29kZQASEmxsaHR0cF9nZXRfdXBncmFkZQATDGxsaHR0cF9yZXNldAAUDmxsaHR0cF9leGVjdXRlABUUbGxodHRwX3NldHRpbmdzX2luaXQAFg1sbGh0dHBfZmluaXNoABcMbGxodHRwX3BhdXNlABgNbGxodHRwX3Jlc3VtZQAZG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAaEGxsaHR0cF9nZXRfZXJybm8AGxdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAcF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uAB0UbGxodHRwX2dldF9lcnJvcl9wb3MAHhFsbGh0dHBfZXJybm9fbmFtZQAfEmxsaHR0cF9tZXRob2RfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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ASEeDBELQZoBIR4MEAtBASEeDA8LQZsBIR4MDgtBnAEhHgwNC0GeASEeDAwLQaABIR4MCwtBnwEhHgwKC0GhASEeDAkLQaIBIR4MCAtBowEhHgwHC0GkASEeDAYLQaUBIR4MBQtBpgEhHgwEC0GnASEeDAMLQagBIR4MAgtBqQEhHgwBC0GvASEeCwNAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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IAgtAABBtH9qDggAsgGyAbIBsgGyAbIBAbIBCyAIQQFqIQFB3QAhHgyPAgsgCEEBaiEBQd4AIR4MjgILAkAgASIIIAJHDQBB8AAhHgyeAgsgCC0AAEHFAEcNrwEgCEEBaiEBDN4BC0HxACEeIAEiIiACRg2cAiACICJrIAAoAgAiJmohIyAiIQggJiEBAkADQCAILQAAIAFBiLOAgABqLQAARw2vASABQQNGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICM2AgAMnQILIABBADYCACAiICZrQQRqIQFBLSEeDKwBC0HyACEeIAEiIiACRg2bAiACICJrIAAoAgAiJmohIyAiIQggJiEBAkADQCAILQAAIAFB0LOAgABqLQAARw2uASABQQhGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICM2AgAMnAILIABBADYCACAiICZrQQlqIQFBKSEeDKsBCwJAIAEiASACRw0AQfMAIR4MmwILQQEhHiABLQAAQd8ARw2qASABQQFqIQEM3AELQfQAIR4gASIiIAJGDZkCIAIgImsgACgCACImaiEjICIhCCAmIQEDQCAILQAAIAFBjLOAgABqLQAARw2rASABQQFGDfcBIAFBAWohASAIQQFqIgggAkcNAAsgACAjNgIADJkCCwJAIAEiHiACRw0AQfUAIR4MmQILIAIgHmsgACgCACIiaiEmIB4hCCAiIQECQANAIAgtAAAgAUGOs4CAAGotAABHDasBIAFBAkYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgJjYCAEH1ACEeDJkCCyAAQQA2AgAgHiAia0EDaiEBQQIhHgyoAQsCQCABIh4gAkcNAEH2ACEeDJgCCyACIB5rIAAoAgAiImohJiAeIQggIiEBAkADQCAILQAAIAFB8LOAgABqLQAARw2qASABQQFGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICY2AgBB9gAhHgyYAgsgAEEANgIAIB4gImtBAmohAUEfIR4MpwELAkAgASIeIAJHDQBB9wAhHgyXAgsgAiAeayAAKAIAIiJqISYgHiEIICIhAQJAA0AgCC0AACABQfKzgIAAai0AAEcNqQEgAUEBRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAmNgIAQfcAIR4MlwILIABBADYCACAeICJrQQJq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LwEwQRByOwEwDIcBCyAAQTY2AhwgACABNgIMIAAgHEEBajYCFEEAIR4MoAELIAEtAABBOkcNAiAAKAIEIR4gAEEANgIEIAAgHiABEKiAgIAAIh4NASABQQFqIQELQTEhHgyOAQsgAEE2NgIcIAAgHjYCDCAAIAFBAWo2AhRBACEeDJ0BCyAAQQA2AhwgACABNgIUIABBh46AgAA2AhAgAEEKNgIMQQAhHgycAQsgAUEBaiEBCyAAQYASOwEqIAAgASACEKWAgIAAGiABIQELQawBIR4MiQELIAAoAgQhHiAAQQA2AgQCQCAAIB4gARCkgICAACIeDQAgASEBDFALIABBxAA2AhwgACABNgIUIAAgHjYCDEEAIR4MmAELIABBADYCHCAAICI2AhQgAEHlmICAADYCECAAQQc2AgwgAEEANgIAQQAhHgyXAQsgACgCBCEeIABBADYCBAJAIAAgHiABEKSAgIAAIh4NACABIQEMTwsgAEHFADYCHCAAIAE2AhQgACAeNgIMQQAhHgyWAQtBACEeIABBADYCHCAAIAE2AhQgAEHrjYCAADYCECAAQQk2AgwMlQELQQEhHgsgACAeOgArIAFBAWohASAALQApQSJGDYsBDEwLIABBADYCHCAAIAE2AhQgAEGijYCAADYCECAAQQk2AgxBACEeDJIBCyAAQQA2AhwgACABNgIUIABBxYqAgAA2AhAgAEEJNgIMQQAhHgyRAQtBASEeCyAAIB46ACogAUEBaiEBDEoLIABBADYCHCAAIAE2AhQgAEG4jYCAADYCECAAQQk2AgxBACEeDI4BCyAAQQA2AgAgJiAja0EEaiEBAkAgAC0AKUEjTw0AIAEhAQxKCyAAQQA2AhwgACABNgIUIABBr4mAgAA2AhAgAEEINgIMQQAhHgyNAQsgAEEANgIAC0EAIR4gAEEANgIcIAAgATYCFCAAQbmbgIAANgIQIABBCDYCDAyLAQsgAEEANgIAICYgI2tBA2ohAQJAIAAtAClBIUcNACABIQEMRwsgAEEANgIcIAAgATYCFCAAQfeJgIAANgIQIABBCDYCDEEAIR4MigELIABBADYCACAmICNrQQRqIQECQCAALQApIh5BXWpBC08NACABIQEMRgsCQCAeQQZLDQBBASAedEHKAHFFDQAgASEBDEYLQQAhHiAAQQA2AhwgACAB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HiAAQQA2AhwgACABNgIUIABB6pCAgAA2AhAgAEEZNgIMDAILIABBIDYCHCAAIAg2AgwgACABQQFqNgIUQQAhHgwBCwJAIAEiASACRw0AQRQhHgwBCyAAQYmAgIAANgIIIAAgATYCBEETIR4LIANBEGokgICAgAAgHguvAQECfyABKAIAIQYCQAJAIAIgA0YNACAEIAZqIQQgBiADaiACayEHIAIgBkF/cyAFaiIGaiEFA0ACQCACLQAAIAQtAABGDQBBAiEEDAMLAkAgBg0AQQAhBCAFIQIMAwsgBkF/aiEGIARBAWohBCACQQFqIgIgA0cNAAsgByEGIAMhAgsgAEEBNgIAIAEgBjYCACAAIAI2AgQPCyABQQA2AgAgACAENgIAIAAgAjYCBAsKACAAELuAgIAAC5U3AQt/I4CAgIAAQRBrIgEkgICAgAACQEEAKAKgtICAAA0AQQAQvoCAgABBgLiEgABrIgJB2QBJDQBBACEDAkBBACgC4LeAgAAiBA0AQQBCfzcC7LeAgABBAEKAgISAgIDAADcC5LeAgABBACABQQhqQXBxQdiq1aoFcyIENgLgt4CAAEEAQQA2AvS3gIAAQQBBADYCxLeAgAALQQAgAjYCzLeAgABBAEGAuISAADYCyLeAgABBAEGAuISAADYCmLSAgABBACAENgKstICAAEEAQX82Aqi0gIAAA0AgA0HEtICAAGogA0G4tICAAGoiBDYCACAEIANBsLSAgABqIgU2AgAgA0G8tICAAGogBTYCACADQcy0gIAAaiADQcC0gIAAaiIFNgIAIAUgBDYCACADQdS0gIAAaiADQci0gIAAaiIENgIAIAQgBTYCACADQdC0gIAAaiAENgIAIANBIGoiA0GAAkcNAAtBgLiEgABBeEGAuISAAGtBD3FBAEGAuISAAEEIakEPcRsiA2oiBEEEaiACIANrQUhqIgNBAXI2AgBBAEEAKALwt4CAADYCpLSAgABBACAENgKgtICAAEEAIAM2ApS0gIAAIAJBgLiEgABqQUxqQTg2AgALAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB7AFLDQACQEEAKAKItICAACIGQRAgAEETakFwcSAAQQtJGyICQQN2IgR2IgNBA3FFDQAgA0EBcSAEckEBcyIFQQN0IgBBuLSAgABqKAIAIgRBCGohAwJA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AkADQCAGIgQoAgRBeHEgAEYNASACQR12IQYgAkEBdCECIAQgBkEEcWpBEGoiAygCACIGDQALIAMgATYCACABQRhqIAQ2AgAgASABNgIMIAEgATYCCAwBCyAEKAIIIgAgATYCDCAEIAE2AgggAUEYakEANgIAIAEgBDYCDCABIAA2AggLQQBBACgCqLSAgABBf2oiAUF/IAEbNgKotICAAAsLTgACQCAADQA/AEEQdA8LAkAgAEH//wNxDQAgAEF/TA0AAkAgAEEQdkAAIgBBf0cNAEEAQTA2Avi3gIAAQX8PCyAAQRB0DwsQv4CAgAAACwQAAAALC44sAQBBgAgLhiwBAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEludmFsaWQgY2hhciBpbiB1cmwgcXVlcnkAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9ib2R5AENvbnRlbnQtTGVuZ3RoIG92ZXJmbG93AENodW5rIHNpemUgb3ZlcmZsb3cAUmVzcG9uc2Ugb3ZlcmZsb3cASW52YWxpZCBtZXRob2QgZm9yIEhUVFAveC54IHJlcXVlc3QASW52YWxpZCBtZXRob2QgZm9yIFJUU1AveC54IHJlcXVlc3QARXhwZWN0ZWQgU09VUkNFIG1ldGhvZCBmb3IgSUNFL3gueCByZXF1ZXN0AEludmFsaWQgY2hhciBpbiB1cmwgZnJhZ21lbnQgc3RhcnQARXhwZWN0ZWQgZG90AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fc3RhdHVzAEludmFsaWQgcmVzcG9uc2Ugc3RhdHVzAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHBhcmFtZXRlcnMAVXNlciBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfaGVhZGVyYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9iZWdpbmAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzZXJ2ZXIASW52YWxpZCBoZWFkZXIgdmFsdWUgY2hhcgBJbnZhbGlkIGhlYWRlciBmaWVsZCBjaGFyAEludmFsaWQgbWlub3IgdmVyc2lvbgBJbnZhbGlkIG1ham9yIHZlcnNpb24ARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgdmVyc2lvbgBFeHBlY3RlZCBDUkxGIGFmdGVyIHZlcnNpb24ASW52YWxpZCBoZWFkZXIgdG9rZW4AU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl91cmwASW52YWxpZCBjaGFyYWN0ZXJzIGluIHVybABVbmV4cGVjdGVkIHN0YXJ0IGNoYXIgaW4gdXJsAERvdWJsZSBAIGluIHVybABFbXB0eSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXJhY3RlciBpbiBDb250ZW50LUxlbmd0aABEdXBsaWNhdGUgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyIGluIHVybCBwYXRoAENvbnRlbnQtTGVuZ3RoIGNhbid0IGJlIHByZXNlbnQgd2l0aCBUcmFuc2Zlci1FbmNvZGluZwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBzaXplAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX3ZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AATUtBQ1RJVklUWQBDT1BZAE5PVElGWQBQTEFZAFBVVABDSEVDS09VVABQT1NUAFJFUE9SVABIUEVfSU5WQUxJRF9DT05TVEFOVABHRVQASFBFX1NUUklDVABSRURJUkVDVABDT05ORUNUAEhQRV9JTlZBTElEX1NUQVRVUwBPUFRJT05TAFNFVF9QQVJBTUVURVIAR0VUX1BBUkFNRVRFUgBIUEVfVVNFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAE1LQ0FMRU5EQVIAU0VUVVAAVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAEhQRV9JTlZBTElEX1VSTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAEhQRV9PSwBVTkxJTksAVU5MT0NLAFBSSQBIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gASFBFX0lOVkFMSURfVFJBTlNGRVJfRU5DT0RJTkcARXhwZWN0ZWQgQ1JMRgBIUEVfSU5WQUxJRF9DSFVOS19TSVpFAE1PVkUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX0NIVU5LX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAERFTEVURQBIUEVfSU5WQUxJRF9FT0ZfU1RBVEUAUEFVU0UAUFVSR0UATUVSR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABQUk9QRklORABVTkJJTkQAUkVCSU5EAEhQ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BQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAAABAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAEAAAIAAAAAAAAAAAAAAAAAAAAAAAADBAAABAQEBAQEBAQEBAQFBAQEBAQEBAQEBAQEAAQABgcEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAACAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRU9SRElSRUNUT1JUUkNIUEFSQU1FVEVSVVJDRUJTQ1JJQkVBUkRPV05BQ0VJTkROS0NLVUJTQ1JJQkVIVFRQL0FEVFAv'; - return llhttp_simd_wasm; -} - -var client; -var hasRequiredClient; - -function requireClient () { - if (hasRequiredClient) return client; - hasRequiredClient = 1; - - /* global WebAssembly */ - - const assert = require$$0$3; - const net = require$$4$1; - const util = requireUtil$1(); - const Request = requireRequest$1(); - const DispatcherBase = requireDispatcherBase(); - const RedirectHandler = requireRedirect(); - const { - RequestContentLengthMismatchError, - ResponseContentLengthMismatchError, - InvalidArgumentError, - RequestAbortedError, - HeadersTimeoutError, - HeadersOverflowError, - SocketError, - InformationalError, - BodyTimeoutError, - HTTPParserError - } = requireErrors(); - const buildConnector = requireConnect(); - const { - kUrl, - kReset, - kServerName, - kClient, - kBusy, - kParser, - kConnect, - kBlocking, - kResuming, - kRunning, - kPending, - kSize, - kWriting, - kQueue, - kConnected, - kConnecting, - kNeedDrain, - kNoRef, - kKeepAliveDefaultTimeout, - kHostHeader, - kPendingIdx, - kRunningIdx, - kError, - kPipelining, - kSocket, - kKeepAliveTimeoutValue, - kMaxHeadersSize, - kKeepAliveMaxTimeout, - kKeepAliveTimeoutThreshold, - kHeadersTimeout, - kBodyTimeout, - kStrictContentLength, - kConnector, - kMaxRedirections, - kMaxRequests, - kCounter, - kClose, - kDestroy, - kDispatch - } = requireSymbols$1(); - - const kClosedResolve = Symbol('kClosedResolve'); - - const channels = {}; - - try { - const diagnosticsChannel = require('diagnostics_channel'); - channels.sendHeaders = diagnosticsChannel.channel('undici:client:sendHeaders'); - channels.beforeConnect = diagnosticsChannel.channel('undici:client:beforeConnect'); - channels.connectError = diagnosticsChannel.channel('undici:client:connectError'); - channels.connected = diagnosticsChannel.channel('undici:client:connected'); - } catch { - channels.sendHeaders = { hasSubscribers: false }; - channels.beforeConnect = { hasSubscribers: false }; - channels.connectError = { hasSubscribers: false }; - channels.connected = { hasSubscribers: false }; - } + if (inputValue > GRAPHQL_MAX_INT || inputValue < GRAPHQL_MIN_INT) { + throw new GraphQLError( + `Int cannot represent non 32-bit signed integer value: ${inputValue}`, + ); + } - class Client extends DispatcherBase { - constructor (url, { - maxHeaderSize, - headersTimeout, - socketTimeout, - requestTimeout, - connectTimeout, - bodyTimeout, - idleTimeout, - keepAlive, - keepAliveTimeout, - maxKeepAliveTimeout, - keepAliveMaxTimeout, - keepAliveTimeoutThreshold, - socketPath, - pipelining, - tls, - strictContentLength, - maxCachedSessions, - maxRedirections, - connect, - maxRequestsPerClient - } = {}) { - super(); - - if (keepAlive !== undefined) { - throw new InvalidArgumentError('unsupported keepAlive, use pipelining=0 instead') - } + return inputValue; + }, - if (socketTimeout !== undefined) { - throw new InvalidArgumentError('unsupported socketTimeout, use headersTimeout & bodyTimeout instead') - } + parseLiteral(valueNode) { + if (valueNode.kind !== Kind.INT) { + throw new GraphQLError( + `Int cannot represent non-integer value: ${print(valueNode)}`, + { + nodes: valueNode, + }, + ); + } - if (requestTimeout !== undefined) { - throw new InvalidArgumentError('unsupported requestTimeout, use headersTimeout & bodyTimeout instead') - } + const num = parseInt(valueNode.value, 10); - if (idleTimeout !== undefined) { - throw new InvalidArgumentError('unsupported idleTimeout, use keepAliveTimeout instead') - } + if (num > GRAPHQL_MAX_INT || num < GRAPHQL_MIN_INT) { + throw new GraphQLError( + `Int cannot represent non 32-bit signed integer value: ${valueNode.value}`, + { + nodes: valueNode, + }, + ); + } - if (maxKeepAliveTimeout !== undefined) { - throw new InvalidArgumentError('unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead') - } + return num; + }, +}); +const GraphQLFloat = new GraphQLScalarType({ + name: 'Float', + description: + 'The `Float` scalar type represents signed double-precision fractional values as specified by [IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point).', - if (maxHeaderSize != null && !Number.isFinite(maxHeaderSize)) { - throw new InvalidArgumentError('invalid maxHeaderSize') - } + serialize(outputValue) { + const coercedValue = serializeObject(outputValue); - if (socketPath != null && typeof socketPath !== 'string') { - throw new InvalidArgumentError('invalid socketPath') - } + if (typeof coercedValue === 'boolean') { + return coercedValue ? 1 : 0; + } - if (connectTimeout != null && (!Number.isFinite(connectTimeout) || connectTimeout < 0)) { - throw new InvalidArgumentError('invalid connectTimeout') - } + let num = coercedValue; - if (keepAliveTimeout != null && (!Number.isFinite(keepAliveTimeout) || keepAliveTimeout <= 0)) { - throw new InvalidArgumentError('invalid keepAliveTimeout') - } + if (typeof coercedValue === 'string' && coercedValue !== '') { + num = Number(coercedValue); + } - if (keepAliveMaxTimeout != null && (!Number.isFinite(keepAliveMaxTimeout) || keepAliveMaxTimeout <= 0)) { - throw new InvalidArgumentError('invalid keepAliveMaxTimeout') - } + if (typeof num !== 'number' || !Number.isFinite(num)) { + throw new GraphQLError( + `Float cannot represent non numeric value: ${inspect$1(coercedValue)}`, + ); + } - if (keepAliveTimeoutThreshold != null && !Number.isFinite(keepAliveTimeoutThreshold)) { - throw new InvalidArgumentError('invalid keepAliveTimeoutThreshold') - } + return num; + }, - if (headersTimeout != null && (!Number.isInteger(headersTimeout) || headersTimeout < 0)) { - throw new InvalidArgumentError('headersTimeout must be a positive integer or zero') - } + parseValue(inputValue) { + if (typeof inputValue !== 'number' || !Number.isFinite(inputValue)) { + throw new GraphQLError( + `Float cannot represent non numeric value: ${inspect$1(inputValue)}`, + ); + } - if (bodyTimeout != null && (!Number.isInteger(bodyTimeout) || bodyTimeout < 0)) { - throw new InvalidArgumentError('bodyTimeout must be a positive integer or zero') - } + return inputValue; + }, - if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') { - throw new InvalidArgumentError('connect must be a function or an object') - } + parseLiteral(valueNode) { + if (valueNode.kind !== Kind.FLOAT && valueNode.kind !== Kind.INT) { + throw new GraphQLError( + `Float cannot represent non numeric value: ${print(valueNode)}`, + valueNode, + ); + } - if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) { - throw new InvalidArgumentError('maxRedirections must be a positive number') - } + return parseFloat(valueNode.value); + }, +}); +const GraphQLString = new GraphQLScalarType({ + name: 'String', + description: + 'The `String` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.', - if (maxRequestsPerClient != null && (!Number.isInteger(maxRequestsPerClient) || maxRequestsPerClient < 0)) { - throw new InvalidArgumentError('maxRequestsPerClient must be a positive number') - } + serialize(outputValue) { + const coercedValue = serializeObject(outputValue); // Serialize string, boolean and number values to a string, but do not + // attempt to coerce object, function, symbol, or other types as strings. - if (typeof connect !== 'function') { - connect = buildConnector({ - ...tls, - maxCachedSessions, - socketPath, - timeout: connectTimeout, - ...connect - }); - } + if (typeof coercedValue === 'string') { + return coercedValue; + } - this[kUrl] = util.parseOrigin(url); - this[kConnector] = connect; - this[kSocket] = null; - this[kPipelining] = pipelining != null ? pipelining : 1; - this[kMaxHeadersSize] = maxHeaderSize || 16384; - this[kKeepAliveDefaultTimeout] = keepAliveTimeout == null ? 4e3 : keepAliveTimeout; - this[kKeepAliveMaxTimeout] = keepAliveMaxTimeout == null ? 600e3 : keepAliveMaxTimeout; - this[kKeepAliveTimeoutThreshold] = keepAliveTimeoutThreshold == null ? 1e3 : keepAliveTimeoutThreshold; - this[kKeepAliveTimeoutValue] = this[kKeepAliveDefaultTimeout]; - this[kServerName] = null; - this[kResuming] = 0; // 0, idle, 1, scheduled, 2 resuming - this[kNeedDrain] = 0; // 0, idle, 1, scheduled, 2 resuming - this[kHostHeader] = `host: ${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ''}\r\n`; - this[kBodyTimeout] = bodyTimeout != null ? bodyTimeout : 30e3; - this[kHeadersTimeout] = headersTimeout != null ? headersTimeout : 30e3; - this[kStrictContentLength] = strictContentLength == null ? true : strictContentLength; - this[kMaxRedirections] = maxRedirections; - this[kMaxRequests] = maxRequestsPerClient; - this[kClosedResolve] = null; - - // kQueue is built up of 3 sections separated by - // the kRunningIdx and kPendingIdx indices. - // | complete | running | pending | - // ^ kRunningIdx ^ kPendingIdx ^ kQueue.length - // kRunningIdx points to the first running element. - // kPendingIdx points to the first pending element. - // This implements a fast queue with an amortized - // time of O(1). - - this[kQueue] = []; - this[kRunningIdx] = 0; - this[kPendingIdx] = 0; - } + if (typeof coercedValue === 'boolean') { + return coercedValue ? 'true' : 'false'; + } - get pipelining () { - return this[kPipelining] - } + if (typeof coercedValue === 'number' && Number.isFinite(coercedValue)) { + return coercedValue.toString(); + } - set pipelining (value) { - this[kPipelining] = value; - resume(this, true); - } + throw new GraphQLError( + `String cannot represent value: ${inspect$1(outputValue)}`, + ); + }, - get [kPending] () { - return this[kQueue].length - this[kPendingIdx] - } + parseValue(inputValue) { + if (typeof inputValue !== 'string') { + throw new GraphQLError( + `String cannot represent a non string value: ${inspect$1(inputValue)}`, + ); + } - get [kRunning] () { - return this[kPendingIdx] - this[kRunningIdx] - } + return inputValue; + }, - get [kSize] () { - return this[kQueue].length - this[kRunningIdx] - } + parseLiteral(valueNode) { + if (valueNode.kind !== Kind.STRING) { + throw new GraphQLError( + `String cannot represent a non string value: ${print(valueNode)}`, + { + nodes: valueNode, + }, + ); + } - get [kConnected] () { - return !!this[kSocket] && !this[kConnecting] && !this[kSocket].destroyed - } + return valueNode.value; + }, +}); +const GraphQLBoolean = new GraphQLScalarType({ + name: 'Boolean', + description: 'The `Boolean` scalar type represents `true` or `false`.', - get [kBusy] () { - const socket = this[kSocket]; - return ( - (socket && (socket[kReset] || socket[kWriting] || socket[kBlocking])) || - (this[kSize] >= (this[kPipelining] || 1)) || - this[kPending] > 0 - ) - } + serialize(outputValue) { + const coercedValue = serializeObject(outputValue); - /* istanbul ignore: only used for test */ - [kConnect] (cb) { - connect(this); - this.once('connect', cb); - } + if (typeof coercedValue === 'boolean') { + return coercedValue; + } - [kDispatch] (opts, handler) { - const { maxRedirections = this[kMaxRedirections] } = opts; - if (maxRedirections) { - handler = new RedirectHandler(this, maxRedirections, opts, handler); - } + if (Number.isFinite(coercedValue)) { + return coercedValue !== 0; + } - const origin = opts.origin || this[kUrl].origin; + throw new GraphQLError( + `Boolean cannot represent a non boolean value: ${inspect$1(coercedValue)}`, + ); + }, - const request = new Request(origin, opts, handler); + parseValue(inputValue) { + if (typeof inputValue !== 'boolean') { + throw new GraphQLError( + `Boolean cannot represent a non boolean value: ${inspect$1(inputValue)}`, + ); + } - this[kQueue].push(request); - if (this[kResuming]) ; else if (util.bodyLength(request.body) == null && util.isIterable(request.body)) { - // Wait a tick in case stream/iterator is ended in the same tick. - this[kResuming] = 1; - process.nextTick(resume, this); - } else { - resume(this, true); - } + return inputValue; + }, - if (this[kResuming] && this[kNeedDrain] !== 2 && this[kBusy]) { - this[kNeedDrain] = 2; - } + parseLiteral(valueNode) { + if (valueNode.kind !== Kind.BOOLEAN) { + throw new GraphQLError( + `Boolean cannot represent a non boolean value: ${print(valueNode)}`, + { + nodes: valueNode, + }, + ); + } - return this[kNeedDrain] < 2 - } + return valueNode.value; + }, +}); +const GraphQLID = new GraphQLScalarType({ + name: 'ID', + description: + 'The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `"4"`) or integer (such as `4`) input value will be accepted as an ID.', - async [kClose] () { - return new Promise((resolve) => { - if (!this[kSize]) { - this.destroy(resolve); - } else { - this[kClosedResolve] = resolve; - } - }) - } + serialize(outputValue) { + const coercedValue = serializeObject(outputValue); - async [kDestroy] (err) { - return new Promise((resolve) => { - const requests = this[kQueue].splice(this[kPendingIdx]); - for (let i = 0; i < requests.length; i++) { - const request = requests[i]; - errorRequest(this, request, err); - } + if (typeof coercedValue === 'string') { + return coercedValue; + } - const callback = () => { - if (this[kClosedResolve]) { - this[kClosedResolve](); - this[kClosedResolve] = null; - } - resolve(); - }; + if (Number.isInteger(coercedValue)) { + return String(coercedValue); + } - if (!this[kSocket]) { - queueMicrotask(callback); - } else { - util.destroy(this[kSocket].on('close', callback), err); - } + throw new GraphQLError( + `ID cannot represent value: ${inspect$1(outputValue)}`, + ); + }, - resume(this); - }) - } - } + parseValue(inputValue) { + if (typeof inputValue === 'string') { + return inputValue; + } - const constants = requireConstants(); - const EMPTY_BUF = Buffer.alloc(0); + if (typeof inputValue === 'number' && Number.isInteger(inputValue)) { + return inputValue.toString(); + } - async function lazyllhttp () { - const llhttpWasmData = process.env.JEST_WORKER_ID ? requireLlhttp_wasm() : undefined; + throw new GraphQLError(`ID cannot represent value: ${inspect$1(inputValue)}`); + }, - let mod; - try { - mod = await WebAssembly.compile(Buffer.from(requireLlhttp_simd_wasm(), 'base64')); - } catch (e) { - /* istanbul ignore next */ - - // We could check if the error was caused by the simd option not - // being enabled, but the occurring of this other error - // * https://github.com/emscripten-core/emscripten/issues/11495 - // got me to remove that check to avoid breaking Node 12. - mod = await WebAssembly.compile(Buffer.from(llhttpWasmData || requireLlhttp_wasm(), 'base64')); - } + parseLiteral(valueNode) { + if (valueNode.kind !== Kind.STRING && valueNode.kind !== Kind.INT) { + throw new GraphQLError( + 'ID cannot represent a non-string and non-integer value: ' + + print(valueNode), + { + nodes: valueNode, + }, + ); + } - return await WebAssembly.instantiate(mod, { - env: { - /* eslint-disable camelcase */ - - wasm_on_url: (p, at, len) => { - /* istanbul ignore next */ - return 0 - }, - wasm_on_status: (p, at, len) => { - assert.strictEqual(currentParser.ptr, p); - const start = at - currentBufferPtr; - const end = start + len; - return currentParser.onStatus(currentBufferRef.slice(start, end)) || 0 - }, - wasm_on_message_begin: (p) => { - assert.strictEqual(currentParser.ptr, p); - return currentParser.onMessageBegin() || 0 - }, - wasm_on_header_field: (p, at, len) => { - assert.strictEqual(currentParser.ptr, p); - const start = at - currentBufferPtr; - const end = start + len; - return currentParser.onHeaderField(currentBufferRef.slice(start, end)) || 0 - }, - wasm_on_header_value: (p, at, len) => { - assert.strictEqual(currentParser.ptr, p); - const start = at - currentBufferPtr; - const end = start + len; - return currentParser.onHeaderValue(currentBufferRef.slice(start, end)) || 0 - }, - wasm_on_headers_complete: (p, statusCode, upgrade, shouldKeepAlive) => { - assert.strictEqual(currentParser.ptr, p); - return currentParser.onHeadersComplete(statusCode, Boolean(upgrade), Boolean(shouldKeepAlive)) || 0 - }, - wasm_on_body: (p, at, len) => { - assert.strictEqual(currentParser.ptr, p); - const start = at - currentBufferPtr; - const end = start + len; - return currentParser.onBody(currentBufferRef.slice(start, end)) || 0 - }, - wasm_on_message_complete: (p) => { - assert.strictEqual(currentParser.ptr, p); - return currentParser.onMessageComplete() || 0 - } + return valueNode.value; + }, +}); +const specifiedScalarTypes = Object.freeze([ + GraphQLString, + GraphQLInt, + GraphQLFloat, + GraphQLBoolean, + GraphQLID, +]); +function isSpecifiedScalarType(type) { + return specifiedScalarTypes.some(({ name }) => type.name === name); +} // Support serializing objects with custom valueOf() or toJSON() functions - +// a common way to represent a complex value which can be represented as +// a string (ex: MongoDB id objects). - /* eslint-enable camelcase */ - } - }) - } +function serializeObject(outputValue) { + if (isObjectLike(outputValue)) { + if (typeof outputValue.valueOf === 'function') { + const valueOfResult = outputValue.valueOf(); - let llhttpInstance = null; - let llhttpPromise = lazyllhttp() - .catch(() => { - }); - - let currentParser = null; - let currentBufferRef = null; - let currentBufferSize = 0; - let currentBufferPtr = null; - - const TIMEOUT_HEADERS = 1; - const TIMEOUT_BODY = 2; - const TIMEOUT_IDLE = 3; - - class Parser { - constructor (client, socket, { exports }) { - assert(Number.isFinite(client[kMaxHeadersSize]) && client[kMaxHeadersSize] > 0); - - this.llhttp = exports; - this.ptr = this.llhttp.llhttp_alloc(constants.TYPE.RESPONSE); - this.client = client; - this.socket = socket; - this.timeout = null; - this.timeoutValue = null; - this.timeoutType = null; - this.statusCode = null; - this.statusText = ''; - this.upgrade = false; - this.headers = []; - this.headersSize = 0; - this.headersMaxSize = client[kMaxHeadersSize]; - this.shouldKeepAlive = false; - this.paused = false; - this.resume = this.resume.bind(this); - - this.bytesRead = 0; - - this.keepAlive = ''; - this.contentLength = ''; - } + if (!isObjectLike(valueOfResult)) { + return valueOfResult; + } + } - setTimeout (value, type) { - this.timeoutType = type; - if (value !== this.timeoutValue) { - clearTimeout(this.timeout); - if (value) { - this.timeout = setTimeout(onParserTimeout, value, this); - // istanbul ignore else: only for jest - if (this.timeout.unref) { - this.timeout.unref(); - } - } else { - this.timeout = null; - } - this.timeoutValue = value; - } else if (this.timeout) { - // istanbul ignore else: only for jest - if (this.timeout.refresh) { - this.timeout.refresh(); - } - } - } + if (typeof outputValue.toJSON === 'function') { + return outputValue.toJSON(); + } + } - resume () { - if (this.socket.destroyed || !this.paused) { - return - } + return outputValue; +} - assert(this.ptr != null); - assert(currentParser == null); +/** + * Test if the given value is a GraphQL directive. + */ - this.llhttp.llhttp_resume(this.ptr); +function isDirective(directive) { + return instanceOf(directive, GraphQLDirective); +} +/** + * Custom extensions + * + * @remarks + * Use a unique identifier name for your extension, for example the name of + * your library or project. Do not use a shortened identifier as this increases + * the risk of conflicts. We recommend you add at most one extension field, + * an object which can contain all the values you need. + */ - assert(this.timeoutType === TIMEOUT_BODY); - if (this.timeout) { - // istanbul ignore else: only for jest - if (this.timeout.refresh) { - this.timeout.refresh(); - } - } +/** + * Directives are used by the GraphQL runtime as a way of modifying execution + * behavior. Type system creators will usually not create these directly. + */ +class GraphQLDirective { + constructor(config) { + var _config$isRepeatable, _config$args; - this.paused = false; - this.execute(this.socket.read() || EMPTY_BUF); // Flush parser. - this.readMore(); - } + this.name = assertName(config.name); + this.description = config.description; + this.locations = config.locations; + this.isRepeatable = + (_config$isRepeatable = config.isRepeatable) !== null && + _config$isRepeatable !== void 0 + ? _config$isRepeatable + : false; + this.extensions = toObjMap(config.extensions); + this.astNode = config.astNode; + Array.isArray(config.locations) || + devAssert(false, `@${config.name} locations must be an Array.`); + const args = + (_config$args = config.args) !== null && _config$args !== void 0 + ? _config$args + : {}; + (isObjectLike(args) && !Array.isArray(args)) || + devAssert( + false, + `@${config.name} args must be an object with argument names as keys.`, + ); + this.args = defineArguments(args); + } - readMore () { - while (!this.paused && this.ptr) { - const chunk = this.socket.read(); - if (chunk === null) { - break - } - this.execute(chunk); - } - } + get [Symbol.toStringTag]() { + return 'GraphQLDirective'; + } - execute (data) { - assert(this.ptr != null); - assert(currentParser == null); - assert(!this.paused); + toConfig() { + return { + name: this.name, + description: this.description, + locations: this.locations, + args: argsToArgsConfig(this.args), + isRepeatable: this.isRepeatable, + extensions: this.extensions, + astNode: this.astNode, + }; + } - const { socket, llhttp } = this; + toString() { + return '@' + this.name; + } - if (data.length > currentBufferSize) { - if (currentBufferPtr) { - llhttp.free(currentBufferPtr); - } - currentBufferSize = Math.ceil(data.length / 4096) * 4096; - currentBufferPtr = llhttp.malloc(currentBufferSize); - } + toJSON() { + return this.toString(); + } +} - new Uint8Array(llhttp.memory.buffer, currentBufferPtr, currentBufferSize).set(data); - - // Call `execute` on the wasm parser. - // We pass the `llhttp_parser` pointer address, the pointer address of buffer view data, - // and finally the length of bytes to parse. - // The return value is an error code or `constants.ERROR.OK`. - try { - let ret; - - try { - currentBufferRef = data; - currentParser = this; - ret = llhttp.llhttp_execute(this.ptr, currentBufferPtr, data.length); - /* eslint-disable-next-line no-useless-catch */ - } catch (err) { - /* istanbul ignore next: difficult to make a test case for */ - throw err - } finally { - currentParser = null; - currentBufferRef = null; - } +/** + * Used to conditionally include fields or fragments. + */ +const GraphQLIncludeDirective = new GraphQLDirective({ + name: 'include', + description: + 'Directs the executor to include this field or fragment only when the `if` argument is true.', + locations: [ + DirectiveLocation$1.FIELD, + DirectiveLocation$1.FRAGMENT_SPREAD, + DirectiveLocation$1.INLINE_FRAGMENT, + ], + args: { + if: { + type: new GraphQLNonNull(GraphQLBoolean), + description: 'Included when true.', + }, + }, +}); +/** + * Used to conditionally skip (exclude) fields or fragments. + */ - const offset = llhttp.llhttp_get_error_pos(this.ptr) - currentBufferPtr; - - if (ret === constants.ERROR.PAUSED_UPGRADE) { - this.onUpgrade(data.slice(offset)); - } else if (ret === constants.ERROR.PAUSED) { - this.paused = true; - socket.unshift(data.slice(offset)); - } else if (ret !== constants.ERROR.OK) { - const ptr = llhttp.llhttp_get_error_reason(this.ptr); - let message = ''; - /* istanbul ignore else: difficult to make a test case for */ - if (ptr) { - const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0); - message = Buffer.from(llhttp.memory.buffer, ptr, len).toString(); - } - throw new HTTPParserError(message, constants.ERROR[ret], data.slice(offset)) - } - } catch (err) { - util.destroy(socket, err); - } - } +const GraphQLSkipDirective = new GraphQLDirective({ + name: 'skip', + description: + 'Directs the executor to skip this field or fragment when the `if` argument is true.', + locations: [ + DirectiveLocation$1.FIELD, + DirectiveLocation$1.FRAGMENT_SPREAD, + DirectiveLocation$1.INLINE_FRAGMENT, + ], + args: { + if: { + type: new GraphQLNonNull(GraphQLBoolean), + description: 'Skipped when true.', + }, + }, +}); +/** + * Constant string used for default reason for a deprecation. + */ - finish () { - try { - try { - currentParser = this; - } finally { - currentParser = null; - } - } catch (err) { - /* istanbul ignore next: difficult to make a test case for */ - util.destroy(this.socket, err); - } - } +const DEFAULT_DEPRECATION_REASON = 'No longer supported'; +/** + * Used to declare element of a GraphQL schema as deprecated. + */ - destroy () { - assert(this.ptr != null); - assert(currentParser == null); +const GraphQLDeprecatedDirective = new GraphQLDirective({ + name: 'deprecated', + description: 'Marks an element of a GraphQL schema as no longer supported.', + locations: [ + DirectiveLocation$1.FIELD_DEFINITION, + DirectiveLocation$1.ARGUMENT_DEFINITION, + DirectiveLocation$1.INPUT_FIELD_DEFINITION, + DirectiveLocation$1.ENUM_VALUE, + ], + args: { + reason: { + type: GraphQLString, + description: + 'Explains why this element was deprecated, usually also including a suggestion for how to access supported similar data. Formatted using the Markdown syntax, as specified by [CommonMark](https://commonmark.org/).', + defaultValue: DEFAULT_DEPRECATION_REASON, + }, + }, +}); +/** + * Used to provide a URL for specifying the behavior of custom scalar definitions. + */ - this.llhttp.llhttp_free(this.ptr); - this.ptr = null; +const GraphQLSpecifiedByDirective = new GraphQLDirective({ + name: 'specifiedBy', + description: 'Exposes a URL that specifies the behavior of this scalar.', + locations: [DirectiveLocation$1.SCALAR], + args: { + url: { + type: new GraphQLNonNull(GraphQLString), + description: 'The URL that specifies the behavior of this scalar.', + }, + }, +}); +/** + * The full list of specified directives. + */ - clearTimeout(this.timeout); - this.timeout = null; - this.timeoutValue = null; - this.timeoutType = null; +const specifiedDirectives = Object.freeze([ + GraphQLIncludeDirective, + GraphQLSkipDirective, + GraphQLDeprecatedDirective, + GraphQLSpecifiedByDirective, +]); +function isSpecifiedDirective(directive) { + return specifiedDirectives.some(({ name }) => name === directive.name); +} - this.paused = false; - } +/** + * Returns true if the provided object is an Object (i.e. not a string literal) + * and implements the Iterator protocol. + * + * This may be used in place of [Array.isArray()][isArray] to determine if + * an object should be iterated-over e.g. Array, Map, Set, Int8Array, + * TypedArray, etc. but excludes string literals. + * + * @example + * ```ts + * isIterableObject([ 1, 2, 3 ]) // true + * isIterableObject(new Map()) // true + * isIterableObject('ABC') // false + * isIterableObject({ key: 'value' }) // false + * isIterableObject({ length: 1, 0: 'Alpha' }) // false + * ``` + */ +function isIterableObject(maybeIterable) { + return ( + typeof maybeIterable === 'object' && + typeof (maybeIterable === null || maybeIterable === void 0 + ? void 0 + : maybeIterable[Symbol.iterator]) === 'function' + ); +} - onStatus (buf) { - this.statusText = buf.toString(); - } +/** + * Produces a GraphQL Value AST given a JavaScript object. + * Function will match JavaScript/JSON values to GraphQL AST schema format + * by using suggested GraphQLInputType. For example: + * + * astFromValue("value", GraphQLString) + * + * A GraphQL type must be provided, which will be used to interpret different + * JavaScript values. + * + * | JSON Value | GraphQL Value | + * | ------------- | -------------------- | + * | Object | Input Object | + * | Array | List | + * | Boolean | Boolean | + * | String | String / Enum Value | + * | Number | Int / Float | + * | Unknown | Enum Value | + * | null | NullValue | + * + */ - onMessageBegin () { - const { socket, client } = this; +function astFromValue(value, type) { + if (isNonNullType(type)) { + const astValue = astFromValue(value, type.ofType); - /* istanbul ignore next: difficult to make a test case for */ - if (socket.destroyed) { - return -1 - } + if ( + (astValue === null || astValue === void 0 ? void 0 : astValue.kind) === + Kind.NULL + ) { + return null; + } - const request = client[kQueue][client[kRunningIdx]]; - if (!request) { - return -1 - } - } + return astValue; + } // only explicit null, not undefined, NaN - onHeaderField (buf) { - const len = this.headers.length; + if (value === null) { + return { + kind: Kind.NULL, + }; + } // undefined - if ((len & 1) === 0) { - this.headers.push(buf); - } else { - this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf]); - } + if (value === undefined) { + return null; + } // Convert JavaScript array to GraphQL list. If the GraphQLType is a list, but + // the value is not an array, convert the value using the list's item type. - this.trackHeader(buf.length); - } + if (isListType(type)) { + const itemType = type.ofType; - onHeaderValue (buf) { - let len = this.headers.length; + if (isIterableObject(value)) { + const valuesNodes = []; - if ((len & 1) === 1) { - this.headers.push(buf); - len += 1; - } else { - this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf]); - } + for (const item of value) { + const itemNode = astFromValue(item, itemType); - const key = this.headers[len - 2]; - if (key.length === 10 && key.toString().toLowerCase() === 'keep-alive') { - this.keepAlive += buf.toString(); - } else if (key.length === 14 && key.toString().toLowerCase() === 'content-length') { - this.contentLength += buf.toString(); - } + if (itemNode != null) { + valuesNodes.push(itemNode); + } + } - this.trackHeader(buf.length); - } + return { + kind: Kind.LIST, + values: valuesNodes, + }; + } - trackHeader (len) { - this.headersSize += len; - if (this.headersSize >= this.headersMaxSize) { - util.destroy(this.socket, new HeadersOverflowError()); - } - } + return astFromValue(value, itemType); + } // Populate the fields of the input object by creating ASTs from each value + // in the JavaScript object according to the fields in the input type. - onUpgrade (head) { - const { upgrade, client, socket, headers, statusCode } = this; + if (isInputObjectType(type)) { + if (!isObjectLike(value)) { + return null; + } - assert(upgrade); + const fieldNodes = []; - const request = client[kQueue][client[kRunningIdx]]; - assert(request); + for (const field of Object.values(type.getFields())) { + const fieldValue = astFromValue(value[field.name], field.type); - assert(!socket.destroyed); - assert(socket === client[kSocket]); - assert(!this.paused); - assert(request.upgrade || request.method === 'CONNECT'); + if (fieldValue) { + fieldNodes.push({ + kind: Kind.OBJECT_FIELD, + name: { + kind: Kind.NAME, + value: field.name, + }, + value: fieldValue, + }); + } + } - this.statusCode = null; - this.statusText = ''; - this.shouldKeepAlive = null; + return { + kind: Kind.OBJECT, + fields: fieldNodes, + }; + } - assert(this.headers.length % 2 === 0); - this.headers = []; - this.headersSize = 0; + if (isLeafType(type)) { + // Since value is an internally represented value, it must be serialized + // to an externally represented value before converting into an AST. + const serialized = type.serialize(value); - socket.unshift(head); + if (serialized == null) { + return null; + } // Others serialize based on their corresponding JavaScript scalar types. - socket[kParser].destroy(); - socket[kParser] = null; + if (typeof serialized === 'boolean') { + return { + kind: Kind.BOOLEAN, + value: serialized, + }; + } // JavaScript numbers can be Int or Float values. - socket[kClient] = null; - socket[kError] = null; - socket - .removeListener('error', onSocketError) - .removeListener('readable', onSocketReadable) - .removeListener('end', onSocketEnd) - .removeListener('close', onSocketClose); + if (typeof serialized === 'number' && Number.isFinite(serialized)) { + const stringNum = String(serialized); + return integerStringRegExp$1.test(stringNum) + ? { + kind: Kind.INT, + value: stringNum, + } + : { + kind: Kind.FLOAT, + value: stringNum, + }; + } - client[kSocket] = null; - client[kQueue][client[kRunningIdx]++] = null; - client.emit('disconnect', client[kUrl], [client], new InformationalError('upgrade')); + if (typeof serialized === 'string') { + // Enum types use Enum literals. + if (isEnumType(type)) { + return { + kind: Kind.ENUM, + value: serialized, + }; + } // ID types can use Int literals. - try { - request.onUpgrade(statusCode, headers, socket); - } catch (err) { - util.destroy(socket, err); - } + if (type === GraphQLID && integerStringRegExp$1.test(serialized)) { + return { + kind: Kind.INT, + value: serialized, + }; + } - resume(client); - } + return { + kind: Kind.STRING, + value: serialized, + }; + } - onHeadersComplete (statusCode, upgrade, shouldKeepAlive) { - const { client, socket, headers, statusText } = this; + throw new TypeError(`Cannot convert value to AST: ${inspect$1(serialized)}.`); + } + /* c8 ignore next 3 */ + // Not reachable, all possible types have been considered. - /* istanbul ignore next: difficult to make a test case for */ - if (socket.destroyed) { - return -1 - } + invariant$1(false, 'Unexpected input type: ' + inspect$1(type)); +} +/** + * IntValue: + * - NegativeSign? 0 + * - NegativeSign? NonZeroDigit ( Digit+ )? + */ - const request = client[kQueue][client[kRunningIdx]]; +const integerStringRegExp$1 = /^-?(?:0|[1-9][0-9]*)$/; - /* istanbul ignore next: difficult to make a test case for */ - if (!request) { - return -1 - } +const __Schema = new GraphQLObjectType({ + name: '__Schema', + description: + 'A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, as well as the entry points for query, mutation, and subscription operations.', + fields: () => ({ + description: { + type: GraphQLString, + resolve: (schema) => schema.description, + }, + types: { + description: 'A list of all types supported by this server.', + type: new GraphQLNonNull(new GraphQLList(new GraphQLNonNull(__Type))), - assert(!this.upgrade); - assert(this.statusCode < 200); + resolve(schema) { + return Object.values(schema.getTypeMap()); + }, + }, + queryType: { + description: 'The type that query operations will be rooted at.', + type: new GraphQLNonNull(__Type), + resolve: (schema) => schema.getQueryType(), + }, + mutationType: { + description: + 'If this server supports mutation, the type that mutation operations will be rooted at.', + type: __Type, + resolve: (schema) => schema.getMutationType(), + }, + subscriptionType: { + description: + 'If this server support subscription, the type that subscription operations will be rooted at.', + type: __Type, + resolve: (schema) => schema.getSubscriptionType(), + }, + directives: { + description: 'A list of all directives supported by this server.', + type: new GraphQLNonNull( + new GraphQLList(new GraphQLNonNull(__Directive)), + ), + resolve: (schema) => schema.getDirectives(), + }, + }), +}); +const __Directive = new GraphQLObjectType({ + name: '__Directive', + description: + "A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document.\n\nIn some cases, you need to provide options to alter GraphQL's execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to the executor.", + fields: () => ({ + name: { + type: new GraphQLNonNull(GraphQLString), + resolve: (directive) => directive.name, + }, + description: { + type: GraphQLString, + resolve: (directive) => directive.description, + }, + isRepeatable: { + type: new GraphQLNonNull(GraphQLBoolean), + resolve: (directive) => directive.isRepeatable, + }, + locations: { + type: new GraphQLNonNull( + new GraphQLList(new GraphQLNonNull(__DirectiveLocation)), + ), + resolve: (directive) => directive.locations, + }, + args: { + type: new GraphQLNonNull( + new GraphQLList(new GraphQLNonNull(__InputValue)), + ), + args: { + includeDeprecated: { + type: GraphQLBoolean, + defaultValue: false, + }, + }, - if (statusCode === 100) { - util.destroy(socket, new SocketError('bad response', util.getSocketInfo(socket))); - return -1 - } + resolve(field, { includeDeprecated }) { + return includeDeprecated + ? field.args + : field.args.filter((arg) => arg.deprecationReason == null); + }, + }, + }), +}); +const __DirectiveLocation = new GraphQLEnumType({ + name: '__DirectiveLocation', + description: + 'A Directive can be adjacent to many parts of the GraphQL language, a __DirectiveLocation describes one such possible adjacencies.', + values: { + QUERY: { + value: DirectiveLocation$1.QUERY, + description: 'Location adjacent to a query operation.', + }, + MUTATION: { + value: DirectiveLocation$1.MUTATION, + description: 'Location adjacent to a mutation operation.', + }, + SUBSCRIPTION: { + value: DirectiveLocation$1.SUBSCRIPTION, + description: 'Location adjacent to a subscription operation.', + }, + FIELD: { + value: DirectiveLocation$1.FIELD, + description: 'Location adjacent to a field.', + }, + FRAGMENT_DEFINITION: { + value: DirectiveLocation$1.FRAGMENT_DEFINITION, + description: 'Location adjacent to a fragment definition.', + }, + FRAGMENT_SPREAD: { + value: DirectiveLocation$1.FRAGMENT_SPREAD, + description: 'Location adjacent to a fragment spread.', + }, + INLINE_FRAGMENT: { + value: DirectiveLocation$1.INLINE_FRAGMENT, + description: 'Location adjacent to an inline fragment.', + }, + VARIABLE_DEFINITION: { + value: DirectiveLocation$1.VARIABLE_DEFINITION, + description: 'Location adjacent to a variable definition.', + }, + SCHEMA: { + value: DirectiveLocation$1.SCHEMA, + description: 'Location adjacent to a schema definition.', + }, + SCALAR: { + value: DirectiveLocation$1.SCALAR, + description: 'Location adjacent to a scalar definition.', + }, + OBJECT: { + value: DirectiveLocation$1.OBJECT, + description: 'Location adjacent to an object type definition.', + }, + FIELD_DEFINITION: { + value: DirectiveLocation$1.FIELD_DEFINITION, + description: 'Location adjacent to a field definition.', + }, + ARGUMENT_DEFINITION: { + value: DirectiveLocation$1.ARGUMENT_DEFINITION, + description: 'Location adjacent to an argument definition.', + }, + INTERFACE: { + value: DirectiveLocation$1.INTERFACE, + description: 'Location adjacent to an interface definition.', + }, + UNION: { + value: DirectiveLocation$1.UNION, + description: 'Location adjacent to a union definition.', + }, + ENUM: { + value: DirectiveLocation$1.ENUM, + description: 'Location adjacent to an enum definition.', + }, + ENUM_VALUE: { + value: DirectiveLocation$1.ENUM_VALUE, + description: 'Location adjacent to an enum value definition.', + }, + INPUT_OBJECT: { + value: DirectiveLocation$1.INPUT_OBJECT, + description: 'Location adjacent to an input object type definition.', + }, + INPUT_FIELD_DEFINITION: { + value: DirectiveLocation$1.INPUT_FIELD_DEFINITION, + description: 'Location adjacent to an input object field definition.', + }, + }, +}); +const __Type = new GraphQLObjectType({ + name: '__Type', + description: + 'The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.\n\nDepending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name, description and optional `specifiedByURL`, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.', + fields: () => ({ + kind: { + type: new GraphQLNonNull(__TypeKind), - /* this can only happen if server is misbehaving */ - if (upgrade && !request.upgrade) { - util.destroy(socket, new SocketError('bad upgrade', util.getSocketInfo(socket))); - return -1 - } + resolve(type) { + if (isScalarType(type)) { + return TypeKind.SCALAR; + } - assert.strictEqual(this.timeoutType, TIMEOUT_HEADERS); + if (isObjectType(type)) { + return TypeKind.OBJECT; + } - this.statusCode = statusCode; - this.shouldKeepAlive = shouldKeepAlive; + if (isInterfaceType(type)) { + return TypeKind.INTERFACE; + } - if (this.statusCode >= 200) { - const bodyTimeout = request.bodyTimeout != null - ? request.bodyTimeout - : client[kBodyTimeout]; - this.setTimeout(bodyTimeout, TIMEOUT_BODY); - } else if (this.timeout) { - // istanbul ignore else: only for jest - if (this.timeout.refresh) { - this.timeout.refresh(); - } - } + if (isUnionType(type)) { + return TypeKind.UNION; + } - if (request.method === 'CONNECT') { - assert(client[kRunning] === 1); - this.upgrade = true; - return 2 - } + if (isEnumType(type)) { + return TypeKind.ENUM; + } - if (upgrade) { - assert(client[kRunning] === 1); - this.upgrade = true; - return 2 - } + if (isInputObjectType(type)) { + return TypeKind.INPUT_OBJECT; + } - assert(this.headers.length % 2 === 0); - this.headers = []; - this.headersSize = 0; + if (isListType(type)) { + return TypeKind.LIST; + } - if (shouldKeepAlive && client[kPipelining]) { - const keepAliveTimeout = this.keepAlive ? util.parseKeepAliveTimeout(this.keepAlive) : null; + if (isNonNullType(type)) { + return TypeKind.NON_NULL; + } + /* c8 ignore next 3 */ + // Not reachable, all possible types have been considered) - if (keepAliveTimeout != null) { - const timeout = Math.min( - keepAliveTimeout - client[kKeepAliveTimeoutThreshold], - client[kKeepAliveMaxTimeout] - ); - if (timeout <= 0) { - socket[kReset] = true; - } else { - client[kKeepAliveTimeoutValue] = timeout; - } - } else { - client[kKeepAliveTimeoutValue] = client[kKeepAliveDefaultTimeout]; - } - } else { - // Stop more requests from being dispatched. - socket[kReset] = true; - } + invariant$1(false, `Unexpected type: "${inspect$1(type)}".`); + }, + }, + name: { + type: GraphQLString, + resolve: (type) => ('name' in type ? type.name : undefined), + }, + description: { + type: GraphQLString, + resolve: ( + type, // FIXME: add test case + ) => + /* c8 ignore next */ + 'description' in type ? type.description : undefined, + }, + specifiedByURL: { + type: GraphQLString, + resolve: (obj) => + 'specifiedByURL' in obj ? obj.specifiedByURL : undefined, + }, + fields: { + type: new GraphQLList(new GraphQLNonNull(__Field)), + args: { + includeDeprecated: { + type: GraphQLBoolean, + defaultValue: false, + }, + }, - let pause; - try { - pause = request.onHeaders(statusCode, headers, this.resume, statusText) === false; - } catch (err) { - util.destroy(socket, err); - return -1 - } + resolve(type, { includeDeprecated }) { + if (isObjectType(type) || isInterfaceType(type)) { + const fields = Object.values(type.getFields()); + return includeDeprecated + ? fields + : fields.filter((field) => field.deprecationReason == null); + } + }, + }, + interfaces: { + type: new GraphQLList(new GraphQLNonNull(__Type)), - if (request.method === 'HEAD') { - assert(socket[kReset]); - return 1 - } + resolve(type) { + if (isObjectType(type) || isInterfaceType(type)) { + return type.getInterfaces(); + } + }, + }, + possibleTypes: { + type: new GraphQLList(new GraphQLNonNull(__Type)), - if (statusCode < 200) { - return 1 - } + resolve(type, _args, _context, { schema }) { + if (isAbstractType(type)) { + return schema.getPossibleTypes(type); + } + }, + }, + enumValues: { + type: new GraphQLList(new GraphQLNonNull(__EnumValue)), + args: { + includeDeprecated: { + type: GraphQLBoolean, + defaultValue: false, + }, + }, - if (socket[kBlocking]) { - socket[kBlocking] = false; - resume(client); - } + resolve(type, { includeDeprecated }) { + if (isEnumType(type)) { + const values = type.getValues(); + return includeDeprecated + ? values + : values.filter((field) => field.deprecationReason == null); + } + }, + }, + inputFields: { + type: new GraphQLList(new GraphQLNonNull(__InputValue)), + args: { + includeDeprecated: { + type: GraphQLBoolean, + defaultValue: false, + }, + }, - return pause ? constants.ERROR.PAUSED : 0 - } + resolve(type, { includeDeprecated }) { + if (isInputObjectType(type)) { + const values = Object.values(type.getFields()); + return includeDeprecated + ? values + : values.filter((field) => field.deprecationReason == null); + } + }, + }, + ofType: { + type: __Type, + resolve: (type) => ('ofType' in type ? type.ofType : undefined), + }, + }), +}); +const __Field = new GraphQLObjectType({ + name: '__Field', + description: + 'Object and Interface types are described by a list of Fields, each of which has a name, potentially a list of arguments, and a return type.', + fields: () => ({ + name: { + type: new GraphQLNonNull(GraphQLString), + resolve: (field) => field.name, + }, + description: { + type: GraphQLString, + resolve: (field) => field.description, + }, + args: { + type: new GraphQLNonNull( + new GraphQLList(new GraphQLNonNull(__InputValue)), + ), + args: { + includeDeprecated: { + type: GraphQLBoolean, + defaultValue: false, + }, + }, - onBody (buf) { - const { client, socket, statusCode } = this; + resolve(field, { includeDeprecated }) { + return includeDeprecated + ? field.args + : field.args.filter((arg) => arg.deprecationReason == null); + }, + }, + type: { + type: new GraphQLNonNull(__Type), + resolve: (field) => field.type, + }, + isDeprecated: { + type: new GraphQLNonNull(GraphQLBoolean), + resolve: (field) => field.deprecationReason != null, + }, + deprecationReason: { + type: GraphQLString, + resolve: (field) => field.deprecationReason, + }, + }), +}); +const __InputValue = new GraphQLObjectType({ + name: '__InputValue', + description: + 'Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.', + fields: () => ({ + name: { + type: new GraphQLNonNull(GraphQLString), + resolve: (inputValue) => inputValue.name, + }, + description: { + type: GraphQLString, + resolve: (inputValue) => inputValue.description, + }, + type: { + type: new GraphQLNonNull(__Type), + resolve: (inputValue) => inputValue.type, + }, + defaultValue: { + type: GraphQLString, + description: + 'A GraphQL-formatted string representing the default value for this input value.', - if (socket.destroyed) { - return -1 - } + resolve(inputValue) { + const { type, defaultValue } = inputValue; + const valueAST = astFromValue(defaultValue, type); + return valueAST ? print(valueAST) : null; + }, + }, + isDeprecated: { + type: new GraphQLNonNull(GraphQLBoolean), + resolve: (field) => field.deprecationReason != null, + }, + deprecationReason: { + type: GraphQLString, + resolve: (obj) => obj.deprecationReason, + }, + }), +}); +const __EnumValue = new GraphQLObjectType({ + name: '__EnumValue', + description: + 'One possible value for a given Enum. Enum values are unique values, not a placeholder for a string or numeric value. However an Enum value is returned in a JSON response as a string.', + fields: () => ({ + name: { + type: new GraphQLNonNull(GraphQLString), + resolve: (enumValue) => enumValue.name, + }, + description: { + type: GraphQLString, + resolve: (enumValue) => enumValue.description, + }, + isDeprecated: { + type: new GraphQLNonNull(GraphQLBoolean), + resolve: (enumValue) => enumValue.deprecationReason != null, + }, + deprecationReason: { + type: GraphQLString, + resolve: (enumValue) => enumValue.deprecationReason, + }, + }), +}); +var TypeKind; - const request = client[kQueue][client[kRunningIdx]]; - assert(request); +(function (TypeKind) { + TypeKind['SCALAR'] = 'SCALAR'; + TypeKind['OBJECT'] = 'OBJECT'; + TypeKind['INTERFACE'] = 'INTERFACE'; + TypeKind['UNION'] = 'UNION'; + TypeKind['ENUM'] = 'ENUM'; + TypeKind['INPUT_OBJECT'] = 'INPUT_OBJECT'; + TypeKind['LIST'] = 'LIST'; + TypeKind['NON_NULL'] = 'NON_NULL'; +})(TypeKind || (TypeKind = {})); +const __TypeKind = new GraphQLEnumType({ + name: '__TypeKind', + description: 'An enum describing what kind of type a given `__Type` is.', + values: { + SCALAR: { + value: TypeKind.SCALAR, + description: 'Indicates this type is a scalar.', + }, + OBJECT: { + value: TypeKind.OBJECT, + description: + 'Indicates this type is an object. `fields` and `interfaces` are valid fields.', + }, + INTERFACE: { + value: TypeKind.INTERFACE, + description: + 'Indicates this type is an interface. `fields`, `interfaces`, and `possibleTypes` are valid fields.', + }, + UNION: { + value: TypeKind.UNION, + description: + 'Indicates this type is a union. `possibleTypes` is a valid field.', + }, + ENUM: { + value: TypeKind.ENUM, + description: + 'Indicates this type is an enum. `enumValues` is a valid field.', + }, + INPUT_OBJECT: { + value: TypeKind.INPUT_OBJECT, + description: + 'Indicates this type is an input object. `inputFields` is a valid field.', + }, + LIST: { + value: TypeKind.LIST, + description: 'Indicates this type is a list. `ofType` is a valid field.', + }, + NON_NULL: { + value: TypeKind.NON_NULL, + description: + 'Indicates this type is a non-null. `ofType` is a valid field.', + }, + }, +}); +/** + * Note that these are GraphQLField and not GraphQLFieldConfig, + * so the format for args is different. + */ - assert.strictEqual(this.timeoutType, TIMEOUT_BODY); - if (this.timeout) { - // istanbul ignore else: only for jest - if (this.timeout.refresh) { - this.timeout.refresh(); - } - } +const SchemaMetaFieldDef = { + name: '__schema', + type: new GraphQLNonNull(__Schema), + description: 'Access the current type schema of this server.', + args: [], + resolve: (_source, _args, _context, { schema }) => schema, + deprecationReason: undefined, + extensions: Object.create(null), + astNode: undefined, +}; +const TypeMetaFieldDef = { + name: '__type', + type: __Type, + description: 'Request the type information of a single type.', + args: [ + { + name: 'name', + description: undefined, + type: new GraphQLNonNull(GraphQLString), + defaultValue: undefined, + deprecationReason: undefined, + extensions: Object.create(null), + astNode: undefined, + }, + ], + resolve: (_source, { name }, _context, { schema }) => schema.getType(name), + deprecationReason: undefined, + extensions: Object.create(null), + astNode: undefined, +}; +const TypeNameMetaFieldDef = { + name: '__typename', + type: new GraphQLNonNull(GraphQLString), + description: 'The name of the current Object type at runtime.', + args: [], + resolve: (_source, _args, _context, { parentType }) => parentType.name, + deprecationReason: undefined, + extensions: Object.create(null), + astNode: undefined, +}; +const introspectionTypes = Object.freeze([ + __Schema, + __Directive, + __DirectiveLocation, + __Type, + __Field, + __InputValue, + __EnumValue, + __TypeKind, +]); +function isIntrospectionType(type) { + return introspectionTypes.some(({ name }) => type.name === name); +} - assert(statusCode >= 200); +/** + * Test if the given value is a GraphQL schema. + */ - this.bytesRead += buf.length; +function isSchema(schema) { + return instanceOf(schema, GraphQLSchema); +} +function assertSchema(schema) { + if (!isSchema(schema)) { + throw new Error(`Expected ${inspect$1(schema)} to be a GraphQL schema.`); + } - try { - if (request.onData(buf) === false) { - return constants.ERROR.PAUSED - } - } catch (err) { - util.destroy(socket, err); - return -1 - } - } + return schema; +} +/** + * Custom extensions + * + * @remarks + * Use a unique identifier name for your extension, for example the name of + * your library or project. Do not use a shortened identifier as this increases + * the risk of conflicts. We recommend you add at most one extension field, + * an object which can contain all the values you need. + */ - onMessageComplete () { - const { client, socket, statusCode, upgrade, headers, contentLength, bytesRead, shouldKeepAlive } = this; +/** + * Schema Definition + * + * A Schema is created by supplying the root types of each type of operation, + * query and mutation (optional). A schema definition is then supplied to the + * validator and executor. + * + * Example: + * + * ```ts + * const MyAppSchema = new GraphQLSchema({ + * query: MyAppQueryRootType, + * mutation: MyAppMutationRootType, + * }) + * ``` + * + * Note: When the schema is constructed, by default only the types that are + * reachable by traversing the root types are included, other types must be + * explicitly referenced. + * + * Example: + * + * ```ts + * const characterInterface = new GraphQLInterfaceType({ + * name: 'Character', + * ... + * }); + * + * const humanType = new GraphQLObjectType({ + * name: 'Human', + * interfaces: [characterInterface], + * ... + * }); + * + * const droidType = new GraphQLObjectType({ + * name: 'Droid', + * interfaces: [characterInterface], + * ... + * }); + * + * const schema = new GraphQLSchema({ + * query: new GraphQLObjectType({ + * name: 'Query', + * fields: { + * hero: { type: characterInterface, ... }, + * } + * }), + * ... + * // Since this schema references only the `Character` interface it's + * // necessary to explicitly list the types that implement it if + * // you want them to be included in the final schema. + * types: [humanType, droidType], + * }) + * ``` + * + * Note: If an array of `directives` are provided to GraphQLSchema, that will be + * the exact list of directives represented and allowed. If `directives` is not + * provided then a default set of the specified directives (e.g. `@include` and + * `@skip`) will be used. If you wish to provide *additional* directives to these + * specified directives, you must explicitly declare them. Example: + * + * ```ts + * const MyAppSchema = new GraphQLSchema({ + * ... + * directives: specifiedDirectives.concat([ myCustomDirective ]), + * }) + * ``` + */ +class GraphQLSchema { + // Used as a cache for validateSchema(). + constructor(config) { + var _config$extensionASTN, _config$directives; - if (socket.destroyed && (!statusCode || shouldKeepAlive)) { - return -1 - } + // If this schema was built from a source known to be valid, then it may be + // marked with assumeValid to avoid an additional type system validation. + this.__validationErrors = config.assumeValid === true ? [] : undefined; // Check for common mistakes during construction to produce early errors. - if (upgrade) { - return - } + isObjectLike(config) || + devAssert(false, 'Must provide configuration object.'); + !config.types || + Array.isArray(config.types) || + devAssert( + false, + `"types" must be Array if provided but got: ${inspect$1(config.types)}.`, + ); + !config.directives || + Array.isArray(config.directives) || + devAssert( + false, + '"directives" must be Array if provided but got: ' + + `${inspect$1(config.directives)}.`, + ); + this.description = config.description; + this.extensions = toObjMap(config.extensions); + this.astNode = config.astNode; + this.extensionASTNodes = + (_config$extensionASTN = config.extensionASTNodes) !== null && + _config$extensionASTN !== void 0 + ? _config$extensionASTN + : []; + this._queryType = config.query; + this._mutationType = config.mutation; + this._subscriptionType = config.subscription; // Provide specified directives (e.g. @include and @skip) by default. - const request = client[kQueue][client[kRunningIdx]]; - assert(request); + this._directives = + (_config$directives = config.directives) !== null && + _config$directives !== void 0 + ? _config$directives + : specifiedDirectives; // To preserve order of user-provided types, we add first to add them to + // the set of "collected" types, so `collectReferencedTypes` ignore them. - assert(statusCode >= 100); + const allReferencedTypes = new Set(config.types); - this.statusCode = null; - this.statusText = ''; - this.bytesRead = 0; - this.contentLength = ''; - this.keepAlive = ''; + if (config.types != null) { + for (const type of config.types) { + // When we ready to process this type, we remove it from "collected" types + // and then add it together with all dependent types in the correct position. + allReferencedTypes.delete(type); + collectReferencedTypes(type, allReferencedTypes); + } + } - assert(this.headers.length % 2 === 0); - this.headers = []; - this.headersSize = 0; + if (this._queryType != null) { + collectReferencedTypes(this._queryType, allReferencedTypes); + } - if (statusCode < 200) { - return - } + if (this._mutationType != null) { + collectReferencedTypes(this._mutationType, allReferencedTypes); + } - /* istanbul ignore next: should be handled by llhttp? */ - if (request.method !== 'HEAD' && contentLength && bytesRead !== parseInt(contentLength, 10)) { - util.destroy(socket, new ResponseContentLengthMismatchError()); - return -1 - } + if (this._subscriptionType != null) { + collectReferencedTypes(this._subscriptionType, allReferencedTypes); + } - try { - request.onComplete(headers); - } catch (err) { - errorRequest(client, request, err); - } + for (const directive of this._directives) { + // Directives are not validated until validateSchema() is called. + if (isDirective(directive)) { + for (const arg of directive.args) { + collectReferencedTypes(arg.type, allReferencedTypes); + } + } + } - client[kQueue][client[kRunningIdx]++] = null; - - if (socket[kWriting]) { - assert.strictEqual(client[kRunning], 0); - // Response completed before request. - util.destroy(socket, new InformationalError('reset')); - return constants.ERROR.PAUSED - } else if (!shouldKeepAlive) { - util.destroy(socket, new InformationalError('reset')); - return constants.ERROR.PAUSED - } else if (socket[kReset] && client[kRunning] === 0) { - // Destroy socket once all requests have completed. - // The request at the tail of the pipeline is the one - // that requested reset and no further requests should - // have been queued since then. - util.destroy(socket, new InformationalError('reset')); - return constants.ERROR.PAUSED - } else if (client[kPipelining] === 1) { - // We must wait a full event loop cycle to reuse this socket to make sure - // that non-spec compliant servers are not closing the connection even if they - // said they won't. - setImmediate(resume, client); - } else { - resume(client); - } - } - } + collectReferencedTypes(__Schema, allReferencedTypes); // Storing the resulting map for reference by the schema. - function onParserTimeout (parser) { - const { socket, timeoutType, client } = parser; + this._typeMap = Object.create(null); + this._subTypeMap = Object.create(null); // Keep track of all implementations by interface name. - /* istanbul ignore else */ - if (timeoutType === TIMEOUT_HEADERS) { - if (!socket[kWriting] || socket.writableNeedDrain || client[kRunning] > 1) { - assert(!parser.paused, 'cannot be paused while waiting for headers'); - util.destroy(socket, new HeadersTimeoutError()); - } - } else if (timeoutType === TIMEOUT_BODY) { - if (!parser.paused) { - util.destroy(socket, new BodyTimeoutError()); - } - } else if (timeoutType === TIMEOUT_IDLE) { - assert(client[kRunning] === 0 && client[kKeepAliveTimeoutValue]); - util.destroy(socket, new InformationalError('socket idle timeout')); - } - } + this._implementationsMap = Object.create(null); - function onSocketReadable () { - const { [kParser]: parser } = this; - parser.readMore(); - } + for (const namedType of allReferencedTypes) { + if (namedType == null) { + continue; + } - function onSocketError (err) { - const { [kParser]: parser } = this; + const typeName = namedType.name; + typeName || + devAssert( + false, + 'One of the provided types for building the Schema is missing a name.', + ); - assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID'); + if (this._typeMap[typeName] !== undefined) { + throw new Error( + `Schema must contain uniquely named types but contains multiple types named "${typeName}".`, + ); + } - // On Mac OS, we get an ECONNRESET even if there is a full body to be forwarded - // to the user. - if (err.code === 'ECONNRESET' && parser.statusCode && !parser.shouldKeepAlive) { - // We treat all incoming data so for as a valid response. - parser.finish(); - return - } + this._typeMap[typeName] = namedType; - this[kError] = err; + if (isInterfaceType(namedType)) { + // Store implementations by interface. + for (const iface of namedType.getInterfaces()) { + if (isInterfaceType(iface)) { + let implementations = this._implementationsMap[iface.name]; - onError(this[kClient], err); - } + if (implementations === undefined) { + implementations = this._implementationsMap[iface.name] = { + objects: [], + interfaces: [], + }; + } - function onError (client, err) { - if ( - client[kRunning] === 0 && - err.code !== 'UND_ERR_INFO' && - err.code !== 'UND_ERR_SOCKET' - ) { - // Error is not caused by running request and not a recoverable - // socket error. - - assert(client[kPendingIdx] === client[kRunningIdx]); - - const requests = client[kQueue].splice(client[kRunningIdx]); - for (let i = 0; i < requests.length; i++) { - const request = requests[i]; - errorRequest(client, request, err); - } - assert(client[kSize] === 0); - } - } + implementations.interfaces.push(namedType); + } + } + } else if (isObjectType(namedType)) { + // Store implementations by objects. + for (const iface of namedType.getInterfaces()) { + if (isInterfaceType(iface)) { + let implementations = this._implementationsMap[iface.name]; - function onSocketEnd () { - const { [kParser]: parser } = this; + if (implementations === undefined) { + implementations = this._implementationsMap[iface.name] = { + objects: [], + interfaces: [], + }; + } - if (parser.statusCode && !parser.shouldKeepAlive) { - // We treat all incoming data so far as a valid response. - parser.finish(); - return - } + implementations.objects.push(namedType); + } + } + } + } + } - util.destroy(this, new SocketError('other side closed', util.getSocketInfo(this))); - } + get [Symbol.toStringTag]() { + return 'GraphQLSchema'; + } - function onSocketClose () { - const { [kClient]: client } = this; + getQueryType() { + return this._queryType; + } - this[kParser].destroy(); - this[kParser] = null; + getMutationType() { + return this._mutationType; + } - const err = this[kError] || new SocketError('closed', util.getSocketInfo(this)); + getSubscriptionType() { + return this._subscriptionType; + } - client[kSocket] = null; + getRootType(operation) { + switch (operation) { + case OperationTypeNode.QUERY: + return this.getQueryType(); - if (client.destroyed) { - assert(client[kPending] === 0); + case OperationTypeNode.MUTATION: + return this.getMutationType(); - // Fail entire queue. - const requests = client[kQueue].splice(client[kRunningIdx]); - for (let i = 0; i < requests.length; i++) { - const request = requests[i]; - errorRequest(client, request, err); - } - } else if (client[kRunning] > 0 && err.code !== 'UND_ERR_INFO') { - // Fail head of pipeline. - const request = client[kQueue][client[kRunningIdx]]; - client[kQueue][client[kRunningIdx]++] = null; + case OperationTypeNode.SUBSCRIPTION: + return this.getSubscriptionType(); + } + } - errorRequest(client, request, err); - } + getTypeMap() { + return this._typeMap; + } - client[kPendingIdx] = client[kRunningIdx]; + getType(name) { + return this.getTypeMap()[name]; + } - assert(client[kRunning] === 0); + getPossibleTypes(abstractType) { + return isUnionType(abstractType) + ? abstractType.getTypes() + : this.getImplementations(abstractType).objects; + } - client.emit('disconnect', client[kUrl], [client], err); + getImplementations(interfaceType) { + const implementations = this._implementationsMap[interfaceType.name]; + return implementations !== null && implementations !== void 0 + ? implementations + : { + objects: [], + interfaces: [], + }; + } - resume(client); - } + isSubType(abstractType, maybeSubType) { + let map = this._subTypeMap[abstractType.name]; - async function connect (client) { - assert(!client[kConnecting]); - assert(!client[kSocket]); + if (map === undefined) { + map = Object.create(null); - let { host, hostname, protocol, port } = client[kUrl]; + if (isUnionType(abstractType)) { + for (const type of abstractType.getTypes()) { + map[type.name] = true; + } + } else { + const implementations = this.getImplementations(abstractType); - // Resolve ipv6 - if (hostname[0] === '[') { - const idx = hostname.indexOf(']'); + for (const type of implementations.objects) { + map[type.name] = true; + } - assert(idx !== -1); - const ip = hostname.substr(1, idx - 1); + for (const type of implementations.interfaces) { + map[type.name] = true; + } + } - assert(net.isIP(ip)); - hostname = ip; - } + this._subTypeMap[abstractType.name] = map; + } - client[kConnecting] = true; - - if (channels.beforeConnect.hasSubscribers) { - channels.beforeConnect.publish({ - connectParams: { - host, - hostname, - protocol, - port, - servername: client[kServerName] - }, - connector: client[kConnector] - }); - } + return map[maybeSubType.name] !== undefined; + } - try { - const socket = await new Promise((resolve, reject) => { - client[kConnector]({ - host, - hostname, - protocol, - port, - servername: client[kServerName] - }, (err, socket) => { - if (err) { - reject(err); - } else { - resolve(socket); - } - }); - }); + getDirectives() { + return this._directives; + } - if (!llhttpInstance) { - llhttpInstance = await llhttpPromise; - llhttpPromise = null; - } + getDirective(name) { + return this.getDirectives().find((directive) => directive.name === name); + } - client[kConnecting] = false; - - assert(socket); - - client[kSocket] = socket; - - socket[kNoRef] = false; - socket[kWriting] = false; - socket[kReset] = false; - socket[kBlocking] = false; - socket[kError] = null; - socket[kParser] = new Parser(client, socket, llhttpInstance); - socket[kClient] = client; - socket[kCounter] = 0; - socket[kMaxRequests] = client[kMaxRequests]; - socket - .on('error', onSocketError) - .on('readable', onSocketReadable) - .on('end', onSocketEnd) - .on('close', onSocketClose); - - if (channels.connected.hasSubscribers) { - channels.connected.publish({ - connectParams: { - host, - hostname, - protocol, - port, - servername: client[kServerName] - }, - connector: client[kConnector], - socket - }); - } - client.emit('connect', client[kUrl], [client]); - } catch (err) { - client[kConnecting] = false; - - if (channels.connectError.hasSubscribers) { - channels.connectError.publish({ - connectParams: { - host, - hostname, - protocol, - port, - servername: client[kServerName] - }, - connector: client[kConnector], - error: err - }); - } + toConfig() { + return { + description: this.description, + query: this.getQueryType(), + mutation: this.getMutationType(), + subscription: this.getSubscriptionType(), + types: Object.values(this.getTypeMap()), + directives: this.getDirectives(), + extensions: this.extensions, + astNode: this.astNode, + extensionASTNodes: this.extensionASTNodes, + assumeValid: this.__validationErrors !== undefined, + }; + } +} - if (err.code === 'ERR_TLS_CERT_ALTNAME_INVALID') { - assert(client[kRunning] === 0); - while (client[kPending] > 0 && client[kQueue][client[kPendingIdx]].servername === client[kServerName]) { - const request = client[kQueue][client[kPendingIdx]++]; - errorRequest(client, request, err); - } - } else { - onError(client, err); - } +function collectReferencedTypes(type, typeSet) { + const namedType = getNamedType(type); - client.emit('connectionError', client[kUrl], [client], err); - } + if (!typeSet.has(namedType)) { + typeSet.add(namedType); - resume(client); - } + if (isUnionType(namedType)) { + for (const memberType of namedType.getTypes()) { + collectReferencedTypes(memberType, typeSet); + } + } else if (isObjectType(namedType) || isInterfaceType(namedType)) { + for (const interfaceType of namedType.getInterfaces()) { + collectReferencedTypes(interfaceType, typeSet); + } - function emitDrain (client) { - client[kNeedDrain] = 0; - client.emit('drain', client[kUrl], [client]); - } + for (const field of Object.values(namedType.getFields())) { + collectReferencedTypes(field.type, typeSet); - function resume (client, sync) { - if (client[kResuming] === 2) { - return - } + for (const arg of field.args) { + collectReferencedTypes(arg.type, typeSet); + } + } + } else if (isInputObjectType(namedType)) { + for (const field of Object.values(namedType.getFields())) { + collectReferencedTypes(field.type, typeSet); + } + } + } - client[kResuming] = 2; + return typeSet; +} - _resume(client, sync); - client[kResuming] = 0; +/** + * Implements the "Type Validation" sub-sections of the specification's + * "Type System" section. + * + * Validation runs synchronously, returning an array of encountered errors, or + * an empty array if no errors were encountered and the Schema is valid. + */ - if (client[kRunningIdx] > 256) { - client[kQueue].splice(0, client[kRunningIdx]); - client[kPendingIdx] -= client[kRunningIdx]; - client[kRunningIdx] = 0; - } - } +function validateSchema(schema) { + // First check to ensure the provided value is in fact a GraphQLSchema. + assertSchema(schema); // If this Schema has already been validated, return the previous results. - function _resume (client, sync) { - while (true) { - if (client.destroyed) { - assert(client[kPending] === 0); - return - } + if (schema.__validationErrors) { + return schema.__validationErrors; + } // Validate the schema, producing a list of errors. - if (client.closed && !client[kSize]) { - client.destroy(); - return - } + const context = new SchemaValidationContext(schema); + validateRootTypes(context); + validateDirectives(context); + validateTypes(context); // Persist the results of validation before returning to ensure validation + // does not run multiple times for this schema. - const socket = client[kSocket]; + const errors = context.getErrors(); + schema.__validationErrors = errors; + return errors; +} +/** + * Utility function which asserts a schema is valid by throwing an error if + * it is invalid. + */ - if (socket) { - if (client[kSize] === 0) { - if (!socket[kNoRef] && socket.unref) { - socket.unref(); - socket[kNoRef] = true; - } - } else if (socket[kNoRef] && socket.ref) { - socket.ref(); - socket[kNoRef] = false; - } +function assertValidSchema(schema) { + const errors = validateSchema(schema); - if (client[kSize] === 0) { - if (socket[kParser].timeoutType !== TIMEOUT_IDLE) { - socket[kParser].setTimeout(client[kKeepAliveTimeoutValue], TIMEOUT_IDLE); - } - } else if (client[kRunning] > 0 && socket[kParser].statusCode < 200) { - if (socket[kParser].timeoutType !== TIMEOUT_HEADERS) { - const request = client[kQueue][client[kRunningIdx]]; - const headersTimeout = request.headersTimeout != null - ? request.headersTimeout - : client[kHeadersTimeout]; - socket[kParser].setTimeout(headersTimeout, TIMEOUT_HEADERS); - } - } - } + if (errors.length !== 0) { + throw new Error(errors.map((error) => error.message).join('\n\n')); + } +} - if (client[kBusy]) { - client[kNeedDrain] = 2; - } else if (client[kNeedDrain] === 2) { - if (sync) { - client[kNeedDrain] = 1; - process.nextTick(emitDrain, client); - } else { - emitDrain(client); - } - continue - } +class SchemaValidationContext { + constructor(schema) { + this._errors = []; + this.schema = schema; + } - if (client[kPending] === 0) { - return - } + reportError(message, nodes) { + const _nodes = Array.isArray(nodes) ? nodes.filter(Boolean) : nodes; - if (client[kRunning] >= (client[kPipelining] || 1)) { - return - } + this._errors.push( + new GraphQLError(message, { + nodes: _nodes, + }), + ); + } - const request = client[kQueue][client[kPendingIdx]]; + getErrors() { + return this._errors; + } +} - if (client[kUrl].protocol === 'https:' && client[kServerName] !== request.servername) { - if (client[kRunning] > 0) { - return - } +function validateRootTypes(context) { + const schema = context.schema; + const queryType = schema.getQueryType(); - client[kServerName] = request.servername; + if (!queryType) { + context.reportError('Query root type must be provided.', schema.astNode); + } else if (!isObjectType(queryType)) { + var _getOperationTypeNode; - if (socket && socket.servername !== request.servername) { - util.destroy(socket, new InformationalError('servername changed')); - return - } - } + context.reportError( + `Query root type must be Object type, it cannot be ${inspect$1( + queryType, + )}.`, + (_getOperationTypeNode = getOperationTypeNode( + schema, + OperationTypeNode.QUERY, + )) !== null && _getOperationTypeNode !== void 0 + ? _getOperationTypeNode + : queryType.astNode, + ); + } - if (client[kConnecting]) { - return - } + const mutationType = schema.getMutationType(); - if (!socket) { - connect(client); - continue - } + if (mutationType && !isObjectType(mutationType)) { + var _getOperationTypeNode2; - if (socket.destroyed || socket[kWriting] || socket[kReset] || socket[kBlocking]) { - return - } + context.reportError( + 'Mutation root type must be Object type if provided, it cannot be ' + + `${inspect$1(mutationType)}.`, + (_getOperationTypeNode2 = getOperationTypeNode( + schema, + OperationTypeNode.MUTATION, + )) !== null && _getOperationTypeNode2 !== void 0 + ? _getOperationTypeNode2 + : mutationType.astNode, + ); + } - if (client[kRunning] > 0 && !request.idempotent) { - // Non-idempotent request cannot be retried. - // Ensure that no other requests are inflight and - // could cause failure. - return - } + const subscriptionType = schema.getSubscriptionType(); - if (client[kRunning] > 0 && (request.upgrade || request.method === 'CONNECT')) { - // Don't dispatch an upgrade until all preceding requests have completed. - // A misbehaving server might upgrade the connection before all pipelined - // request has completed. - return - } + if (subscriptionType && !isObjectType(subscriptionType)) { + var _getOperationTypeNode3; - if (util.isStream(request.body) && util.bodyLength(request.body) === 0) { - request.body - .on('data', /* istanbul ignore next */ function () { - /* istanbul ignore next */ - assert(false); - }) - .on('error', function (err) { - errorRequest(client, request, err); - }) - .on('end', function () { - util.destroy(this); - }); + context.reportError( + 'Subscription root type must be Object type if provided, it cannot be ' + + `${inspect$1(subscriptionType)}.`, + (_getOperationTypeNode3 = getOperationTypeNode( + schema, + OperationTypeNode.SUBSCRIPTION, + )) !== null && _getOperationTypeNode3 !== void 0 + ? _getOperationTypeNode3 + : subscriptionType.astNode, + ); + } +} - request.body = null; - } +function getOperationTypeNode(schema, operation) { + var _flatMap$find; - if (client[kRunning] > 0 && - (util.isStream(request.body) || util.isAsyncIterable(request.body))) { - // Request with stream or iterator body can error while other requests - // are inflight and indirectly error those as well. - // Ensure this doesn't happen by waiting for inflight - // to complete before dispatching. - - // Request with stream or iterator body cannot be retried. - // Ensure that no other requests are inflight and - // could cause failure. - return - } + return (_flatMap$find = [schema.astNode, ...schema.extensionASTNodes] + .flatMap( + // FIXME: https://github.com/graphql/graphql-js/issues/2203 + (schemaNode) => { + var _schemaNode$operation; - if (!request.aborted && write(client, request)) { - client[kPendingIdx]++; - } else { - client[kQueue].splice(client[kPendingIdx], 1); - } - } - } + return ( + /* c8 ignore next */ + (_schemaNode$operation = + schemaNode === null || schemaNode === void 0 + ? void 0 + : schemaNode.operationTypes) !== null && + _schemaNode$operation !== void 0 + ? _schemaNode$operation + : [] + ); + }, + ) + .find((operationNode) => operationNode.operation === operation)) === null || + _flatMap$find === void 0 + ? void 0 + : _flatMap$find.type; +} - function write (client, request) { - const { body, method, path, host, upgrade, headers, blocking } = request; +function validateDirectives(context) { + for (const directive of context.schema.getDirectives()) { + // Ensure all directives are in fact GraphQL directives. + if (!isDirective(directive)) { + context.reportError( + `Expected directive but got: ${inspect$1(directive)}.`, + directive === null || directive === void 0 ? void 0 : directive.astNode, + ); + continue; + } // Ensure they are named correctly. - // https://tools.ietf.org/html/rfc7231#section-4.3.1 - // https://tools.ietf.org/html/rfc7231#section-4.3.2 - // https://tools.ietf.org/html/rfc7231#section-4.3.5 + validateName(context, directive); // TODO: Ensure proper locations. + // Ensure the arguments are valid. - // Sending a payload body on a request that does not - // expect it can cause undefined behavior on some - // servers and corrupt connection state. Do not - // re-use the connection for further requests. + for (const arg of directive.args) { + // Ensure they are named correctly. + validateName(context, arg); // Ensure the type is an input type. - const expectsPayload = ( - method === 'PUT' || - method === 'POST' || - method === 'PATCH' - ); + if (!isInputType(arg.type)) { + context.reportError( + `The type of @${directive.name}(${arg.name}:) must be Input Type ` + + `but got: ${inspect$1(arg.type)}.`, + arg.astNode, + ); + } - if (body && typeof body.read === 'function') { - // Try to read EOF in order to get length. - body.read(0); - } + if (isRequiredArgument(arg) && arg.deprecationReason != null) { + var _arg$astNode; - let contentLength = util.bodyLength(body); + context.reportError( + `Required argument @${directive.name}(${arg.name}:) cannot be deprecated.`, + [ + getDeprecatedDirectiveNode(arg.astNode), + (_arg$astNode = arg.astNode) === null || _arg$astNode === void 0 + ? void 0 + : _arg$astNode.type, + ], + ); + } + } + } +} - if (contentLength === null) { - contentLength = request.contentLength; - } +function validateName(context, node) { + // Ensure names are valid, however introspection types opt out. + if (node.name.startsWith('__')) { + context.reportError( + `Name "${node.name}" must not begin with "__", which is reserved by GraphQL introspection.`, + node.astNode, + ); + } +} - if (contentLength === 0 && !expectsPayload) { - // https://tools.ietf.org/html/rfc7230#section-3.3.2 - // A user agent SHOULD NOT send a Content-Length header field when - // the request message does not contain a payload body and the method - // semantics do not anticipate such a body. +function validateTypes(context) { + const validateInputObjectCircularRefs = + createInputObjectCircularRefsValidator(context); + const typeMap = context.schema.getTypeMap(); - contentLength = null; - } + for (const type of Object.values(typeMap)) { + // Ensure all provided types are in fact GraphQL type. + if (!isNamedType(type)) { + context.reportError( + `Expected GraphQL named type but got: ${inspect$1(type)}.`, + type.astNode, + ); + continue; + } // Ensure it is named correctly (excluding introspection types). - if (request.contentLength !== null && request.contentLength !== contentLength) { - if (client[kStrictContentLength]) { - errorRequest(client, request, new RequestContentLengthMismatchError()); - return false - } + if (!isIntrospectionType(type)) { + validateName(context, type); + } - process.emitWarning(new RequestContentLengthMismatchError()); - } + if (isObjectType(type)) { + // Ensure fields are valid + validateFields(context, type); // Ensure objects implement the interfaces they claim to. - const socket = client[kSocket]; + validateInterfaces(context, type); + } else if (isInterfaceType(type)) { + // Ensure fields are valid. + validateFields(context, type); // Ensure interfaces implement the interfaces they claim to. - try { - request.onConnect((err) => { - if (request.aborted || request.completed) { - return - } + validateInterfaces(context, type); + } else if (isUnionType(type)) { + // Ensure Unions include valid member types. + validateUnionMembers(context, type); + } else if (isEnumType(type)) { + // Ensure Enums have valid values. + validateEnumValues(context, type); + } else if (isInputObjectType(type)) { + // Ensure Input Object fields are valid. + validateInputFields(context, type); // Ensure Input Objects do not contain non-nullable circular references - errorRequest(client, request, err || new RequestAbortedError()); + validateInputObjectCircularRefs(type); + } + } +} - util.destroy(socket, new InformationalError('aborted')); - }); - } catch (err) { - errorRequest(client, request, err); - } +function validateFields(context, type) { + const fields = Object.values(type.getFields()); // Objects and Interfaces both must define one or more fields. - if (request.aborted) { - return false - } + if (fields.length === 0) { + context.reportError(`Type ${type.name} must define one or more fields.`, [ + type.astNode, + ...type.extensionASTNodes, + ]); + } - if (method === 'HEAD') { - // https://github.com/mcollina/undici/issues/258 + for (const field of fields) { + // Ensure they are named correctly. + validateName(context, field); // Ensure the type is an output type - // Close after a HEAD request to interop with misbehaving servers - // that may send a body in the response. + if (!isOutputType(field.type)) { + var _field$astNode; - socket[kReset] = true; - } + context.reportError( + `The type of ${type.name}.${field.name} must be Output Type ` + + `but got: ${inspect$1(field.type)}.`, + (_field$astNode = field.astNode) === null || _field$astNode === void 0 + ? void 0 + : _field$astNode.type, + ); + } // Ensure the arguments are valid - if (upgrade || method === 'CONNECT') { - // On CONNECT or upgrade, block pipeline from dispatching further - // requests on this connection. + for (const arg of field.args) { + const argName = arg.name; // Ensure they are named correctly. - socket[kReset] = true; - } + validateName(context, arg); // Ensure the type is an input type - if (client[kMaxRequests] && socket[kCounter]++ >= client[kMaxRequests]) { - socket[kReset] = true; - } + if (!isInputType(arg.type)) { + var _arg$astNode2; - if (blocking) { - socket[kBlocking] = true; - } + context.reportError( + `The type of ${type.name}.${field.name}(${argName}:) must be Input ` + + `Type but got: ${inspect$1(arg.type)}.`, + (_arg$astNode2 = arg.astNode) === null || _arg$astNode2 === void 0 + ? void 0 + : _arg$astNode2.type, + ); + } - let header = `${method} ${path} HTTP/1.1\r\n`; + if (isRequiredArgument(arg) && arg.deprecationReason != null) { + var _arg$astNode3; - if (typeof host === 'string') { - header += `host: ${host}\r\n`; - } else { - header += client[kHostHeader]; - } + context.reportError( + `Required argument ${type.name}.${field.name}(${argName}:) cannot be deprecated.`, + [ + getDeprecatedDirectiveNode(arg.astNode), + (_arg$astNode3 = arg.astNode) === null || _arg$astNode3 === void 0 + ? void 0 + : _arg$astNode3.type, + ], + ); + } + } + } +} - if (upgrade) { - header += `connection: upgrade\r\nupgrade: ${upgrade}\r\n`; - } else if (client[kPipelining]) { - header += 'connection: keep-alive\r\n'; - } else { - header += 'connection: close\r\n'; - } +function validateInterfaces(context, type) { + const ifaceTypeNames = Object.create(null); - if (headers) { - header += headers; - } + for (const iface of type.getInterfaces()) { + if (!isInterfaceType(iface)) { + context.reportError( + `Type ${inspect$1(type)} must only implement Interface types, ` + + `it cannot implement ${inspect$1(iface)}.`, + getAllImplementsInterfaceNodes(type, iface), + ); + continue; + } - if (channels.sendHeaders.hasSubscribers) { - channels.sendHeaders.publish({ request, headers: header, socket }); - } + if (type === iface) { + context.reportError( + `Type ${type.name} cannot implement itself because it would create a circular reference.`, + getAllImplementsInterfaceNodes(type, iface), + ); + continue; + } - /* istanbul ignore else: assertion */ - if (!body) { - if (contentLength === 0) { - socket.write(`${header}content-length: 0\r\n\r\n`, 'ascii'); - } else { - assert(contentLength === null, 'no body must not have content length'); - socket.write(`${header}\r\n`, 'ascii'); - } - request.onRequestSent(); - } else if (util.isBuffer(body)) { - assert(contentLength === body.byteLength, 'buffer body must have content length'); - - socket.cork(); - socket.write(`${header}content-length: ${contentLength}\r\n\r\n`, 'ascii'); - socket.write(body); - socket.uncork(); - request.onBodySent(body); - request.onRequestSent(); - if (!expectsPayload) { - socket[kReset] = true; - } - } else if (util.isBlobLike(body)) { - if (typeof body.stream === 'function') { - writeIterable({ body: body.stream(), client, request, socket, contentLength, header, expectsPayload }); - } else { - writeBlob({ body, client, request, socket, contentLength, header, expectsPayload }); - } - } else if (util.isStream(body)) { - writeStream({ body, client, request, socket, contentLength, header, expectsPayload }); - } else if (util.isIterable(body)) { - writeIterable({ body, client, request, socket, contentLength, header, expectsPayload }); - } else { - assert(false); - } + if (ifaceTypeNames[iface.name]) { + context.reportError( + `Type ${type.name} can only implement ${iface.name} once.`, + getAllImplementsInterfaceNodes(type, iface), + ); + continue; + } - return true - } + ifaceTypeNames[iface.name] = true; + validateTypeImplementsAncestors(context, type, iface); + validateTypeImplementsInterface(context, type, iface); + } +} - function writeStream ({ body, client, request, socket, contentLength, header, expectsPayload }) { - assert(contentLength !== 0 || client[kRunning] === 0, 'stream body cannot be pipelined'); +function validateTypeImplementsInterface(context, type, iface) { + const typeFieldMap = type.getFields(); // Assert each interface field is implemented. - let finished = false; + for (const ifaceField of Object.values(iface.getFields())) { + const fieldName = ifaceField.name; + const typeField = typeFieldMap[fieldName]; // Assert interface field exists on type. - const writer = new AsyncWriter({ socket, request, contentLength, client, expectsPayload, header }); + if (!typeField) { + context.reportError( + `Interface field ${iface.name}.${fieldName} expected but ${type.name} does not provide it.`, + [ifaceField.astNode, type.astNode, ...type.extensionASTNodes], + ); + continue; + } // Assert interface field type is satisfied by type field type, by being + // a valid subtype. (covariant) - const onData = function (chunk) { - try { - assert(!finished); + if (!isTypeSubTypeOf(context.schema, typeField.type, ifaceField.type)) { + var _ifaceField$astNode, _typeField$astNode; - if (!writer.write(chunk) && this.pause) { - this.pause(); - } - } catch (err) { - util.destroy(this, err); - } - }; - const onDrain = function () { - assert(!finished); + context.reportError( + `Interface field ${iface.name}.${fieldName} expects type ` + + `${inspect$1(ifaceField.type)} but ${type.name}.${fieldName} ` + + `is type ${inspect$1(typeField.type)}.`, + [ + (_ifaceField$astNode = ifaceField.astNode) === null || + _ifaceField$astNode === void 0 + ? void 0 + : _ifaceField$astNode.type, + (_typeField$astNode = typeField.astNode) === null || + _typeField$astNode === void 0 + ? void 0 + : _typeField$astNode.type, + ], + ); + } // Assert each interface field arg is implemented. - if (body.resume) { - body.resume(); - } - }; - const onAbort = function () { - onFinished(new RequestAbortedError()); - }; - const onFinished = function (err) { - if (finished) { - return - } + for (const ifaceArg of ifaceField.args) { + const argName = ifaceArg.name; + const typeArg = typeField.args.find((arg) => arg.name === argName); // Assert interface field arg exists on object field. - finished = true; + if (!typeArg) { + context.reportError( + `Interface field argument ${iface.name}.${fieldName}(${argName}:) expected but ${type.name}.${fieldName} does not provide it.`, + [ifaceArg.astNode, typeField.astNode], + ); + continue; + } // Assert interface field arg type matches object field arg type. + // (invariant) + // TODO: change to contravariant? - assert(socket.destroyed || (socket[kWriting] && client[kRunning] <= 1)); + if (!isEqualType(ifaceArg.type, typeArg.type)) { + var _ifaceArg$astNode, _typeArg$astNode; - socket - .off('drain', onDrain) - .off('error', onFinished); + context.reportError( + `Interface field argument ${iface.name}.${fieldName}(${argName}:) ` + + `expects type ${inspect$1(ifaceArg.type)} but ` + + `${type.name}.${fieldName}(${argName}:) is type ` + + `${inspect$1(typeArg.type)}.`, + [ + (_ifaceArg$astNode = ifaceArg.astNode) === null || + _ifaceArg$astNode === void 0 + ? void 0 + : _ifaceArg$astNode.type, + (_typeArg$astNode = typeArg.astNode) === null || + _typeArg$astNode === void 0 + ? void 0 + : _typeArg$astNode.type, + ], + ); + } // TODO: validate default values? + } // Assert additional arguments must not be required. - body - .removeListener('data', onData) - .removeListener('end', onFinished) - .removeListener('error', onFinished) - .removeListener('close', onAbort); - - if (!err) { - try { - writer.end(); - } catch (er) { - err = er; - } - } + for (const typeArg of typeField.args) { + const argName = typeArg.name; + const ifaceArg = ifaceField.args.find((arg) => arg.name === argName); - writer.destroy(err); + if (!ifaceArg && isRequiredArgument(typeArg)) { + context.reportError( + `Object field ${type.name}.${fieldName} includes required argument ${argName} that is missing from the Interface field ${iface.name}.${fieldName}.`, + [typeArg.astNode, ifaceField.astNode], + ); + } + } + } +} - if (err && (err.code !== 'UND_ERR_INFO' || err.message !== 'reset')) { - util.destroy(body, err); - } else { - util.destroy(body); - } - }; +function validateTypeImplementsAncestors(context, type, iface) { + const ifaceInterfaces = type.getInterfaces(); - body - .on('data', onData) - .on('end', onFinished) - .on('error', onFinished) - .on('close', onAbort); + for (const transitive of iface.getInterfaces()) { + if (!ifaceInterfaces.includes(transitive)) { + context.reportError( + transitive === type + ? `Type ${type.name} cannot implement ${iface.name} because it would create a circular reference.` + : `Type ${type.name} must implement ${transitive.name} because it is implemented by ${iface.name}.`, + [ + ...getAllImplementsInterfaceNodes(iface, transitive), + ...getAllImplementsInterfaceNodes(type, iface), + ], + ); + } + } +} - if (body.resume) { - body.resume(); - } +function validateUnionMembers(context, union) { + const memberTypes = union.getTypes(); - socket - .on('drain', onDrain) - .on('error', onFinished); - } + if (memberTypes.length === 0) { + context.reportError( + `Union type ${union.name} must define one or more member types.`, + [union.astNode, ...union.extensionASTNodes], + ); + } - async function writeBlob ({ body, client, request, socket, contentLength, header, expectsPayload }) { - assert(contentLength === body.size, 'blob body must have content length'); + const includedTypeNames = Object.create(null); - try { - if (contentLength != null && contentLength !== body.size) { - throw new RequestContentLengthMismatchError() - } + for (const memberType of memberTypes) { + if (includedTypeNames[memberType.name]) { + context.reportError( + `Union type ${union.name} can only include type ${memberType.name} once.`, + getUnionMemberTypeNodes(union, memberType.name), + ); + continue; + } - const buffer = Buffer.from(await body.arrayBuffer()); + includedTypeNames[memberType.name] = true; - socket.cork(); - socket.write(`${header}content-length: ${contentLength}\r\n\r\n`, 'ascii'); - socket.write(buffer); - socket.uncork(); + if (!isObjectType(memberType)) { + context.reportError( + `Union type ${union.name} can only include Object types, ` + + `it cannot include ${inspect$1(memberType)}.`, + getUnionMemberTypeNodes(union, String(memberType)), + ); + } + } +} - request.onBodySent(buffer); - request.onRequestSent(); +function validateEnumValues(context, enumType) { + const enumValues = enumType.getValues(); - if (!expectsPayload) { - socket[kReset] = true; - } + if (enumValues.length === 0) { + context.reportError( + `Enum type ${enumType.name} must define one or more values.`, + [enumType.astNode, ...enumType.extensionASTNodes], + ); + } - resume(client); - } catch (err) { - util.destroy(socket, err); - } - } + for (const enumValue of enumValues) { + // Ensure valid name. + validateName(context, enumValue); + } +} - async function writeIterable ({ body, client, request, socket, contentLength, header, expectsPayload }) { - assert(contentLength !== 0 || client[kRunning] === 0, 'iterator body cannot be pipelined'); +function validateInputFields(context, inputObj) { + const fields = Object.values(inputObj.getFields()); - let callback = null; - function onDrain () { - if (callback) { - const cb = callback; - callback = null; - cb(); - } - } + if (fields.length === 0) { + context.reportError( + `Input Object type ${inputObj.name} must define one or more fields.`, + [inputObj.astNode, ...inputObj.extensionASTNodes], + ); + } // Ensure the arguments are valid - const waitForDrain = () => new Promise((resolve, reject) => { - assert(callback === null); + for (const field of fields) { + // Ensure they are named correctly. + validateName(context, field); // Ensure the type is an input type - if (socket[kError]) { - reject(socket[kError]); - } else { - callback = resolve; - } - }); + if (!isInputType(field.type)) { + var _field$astNode2; - socket - .on('close', onDrain) - .on('drain', onDrain); + context.reportError( + `The type of ${inputObj.name}.${field.name} must be Input Type ` + + `but got: ${inspect$1(field.type)}.`, + (_field$astNode2 = field.astNode) === null || _field$astNode2 === void 0 + ? void 0 + : _field$astNode2.type, + ); + } - const writer = new AsyncWriter({ socket, request, contentLength, client, expectsPayload, header }); - try { - // It's up to the user to somehow abort the async iterable. - for await (const chunk of body) { - if (socket[kError]) { - throw socket[kError] - } + if (isRequiredInputField(field) && field.deprecationReason != null) { + var _field$astNode3; - if (!writer.write(chunk)) { - await waitForDrain(); - } - } + context.reportError( + `Required input field ${inputObj.name}.${field.name} cannot be deprecated.`, + [ + getDeprecatedDirectiveNode(field.astNode), + (_field$astNode3 = field.astNode) === null || + _field$astNode3 === void 0 + ? void 0 + : _field$astNode3.type, + ], + ); + } + } +} - writer.end(); - } catch (err) { - writer.destroy(err); - } finally { - socket - .off('close', onDrain) - .off('drain', onDrain); - } - } +function createInputObjectCircularRefsValidator(context) { + // Modified copy of algorithm from 'src/validation/rules/NoFragmentCycles.js'. + // Tracks already visited types to maintain O(N) and to ensure that cycles + // are not redundantly reported. + const visitedTypes = Object.create(null); // Array of types nodes used to produce meaningful errors - class AsyncWriter { - constructor ({ socket, request, contentLength, client, expectsPayload, header }) { - this.socket = socket; - this.request = request; - this.contentLength = contentLength; - this.client = client; - this.bytesWritten = 0; - this.expectsPayload = expectsPayload; - this.header = header; - - socket[kWriting] = true; - } + const fieldPath = []; // Position in the type path - write (chunk) { - const { socket, request, contentLength, client, bytesWritten, expectsPayload, header } = this; + const fieldPathIndexByTypeName = Object.create(null); + return detectCycleRecursive; // This does a straight-forward DFS to find cycles. + // It does not terminate when a cycle was found but continues to explore + // the graph to find all possible cycles. - if (socket[kError]) { - throw socket[kError] - } + function detectCycleRecursive(inputObj) { + if (visitedTypes[inputObj.name]) { + return; + } - if (socket.destroyed) { - return false - } + visitedTypes[inputObj.name] = true; + fieldPathIndexByTypeName[inputObj.name] = fieldPath.length; + const fields = Object.values(inputObj.getFields()); - const len = Buffer.byteLength(chunk); - if (!len) { - return true - } + for (const field of fields) { + if (isNonNullType(field.type) && isInputObjectType(field.type.ofType)) { + const fieldType = field.type.ofType; + const cycleIndex = fieldPathIndexByTypeName[fieldType.name]; + fieldPath.push(field); - // We should defer writing chunks. - if (contentLength !== null && bytesWritten + len > contentLength) { - if (client[kStrictContentLength]) { - throw new RequestContentLengthMismatchError() - } + if (cycleIndex === undefined) { + detectCycleRecursive(fieldType); + } else { + const cyclePath = fieldPath.slice(cycleIndex); + const pathStr = cyclePath.map((fieldObj) => fieldObj.name).join('.'); + context.reportError( + `Cannot reference Input Object "${fieldType.name}" within itself through a series of non-null fields: "${pathStr}".`, + cyclePath.map((fieldObj) => fieldObj.astNode), + ); + } - process.emitWarning(new RequestContentLengthMismatchError()); - } + fieldPath.pop(); + } + } - if (bytesWritten === 0) { - if (!expectsPayload) { - socket[kReset] = true; - } + fieldPathIndexByTypeName[inputObj.name] = undefined; + } +} - if (contentLength === null) { - socket.write(`${header}transfer-encoding: chunked\r\n`, 'ascii'); - } else { - socket.write(`${header}content-length: ${contentLength}\r\n\r\n`, 'ascii'); - } - } +function getAllImplementsInterfaceNodes(type, iface) { + const { astNode, extensionASTNodes } = type; + const nodes = + astNode != null ? [astNode, ...extensionASTNodes] : extensionASTNodes; // FIXME: https://github.com/graphql/graphql-js/issues/2203 - if (contentLength === null) { - socket.write(`\r\n${len.toString(16)}\r\n`, 'ascii'); - } + return nodes + .flatMap((typeNode) => { + var _typeNode$interfaces; - this.bytesWritten += len; + return ( + /* c8 ignore next */ + (_typeNode$interfaces = typeNode.interfaces) !== null && + _typeNode$interfaces !== void 0 + ? _typeNode$interfaces + : [] + ); + }) + .filter((ifaceNode) => ifaceNode.name.value === iface.name); +} - const ret = socket.write(chunk); +function getUnionMemberTypeNodes(union, typeName) { + const { astNode, extensionASTNodes } = union; + const nodes = + astNode != null ? [astNode, ...extensionASTNodes] : extensionASTNodes; // FIXME: https://github.com/graphql/graphql-js/issues/2203 - request.onBodySent(chunk); + return nodes + .flatMap((unionNode) => { + var _unionNode$types; - if (!ret) { - if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) { - // istanbul ignore else: only for jest - if (socket[kParser].timeout.refresh) { - socket[kParser].timeout.refresh(); - } - } - } + return ( + /* c8 ignore next */ + (_unionNode$types = unionNode.types) !== null && + _unionNode$types !== void 0 + ? _unionNode$types + : [] + ); + }) + .filter((typeNode) => typeNode.name.value === typeName); +} - return ret - } +function getDeprecatedDirectiveNode(definitionNode) { + var _definitionNode$direc; - end () { - const { socket, contentLength, client, bytesWritten, expectsPayload, header, request } = this; - request.onRequestSent(); + return definitionNode === null || definitionNode === void 0 + ? void 0 + : (_definitionNode$direc = definitionNode.directives) === null || + _definitionNode$direc === void 0 + ? void 0 + : _definitionNode$direc.find( + (node) => node.name.value === GraphQLDeprecatedDirective.name, + ); +} - socket[kWriting] = false; +function typeFromAST(schema, typeNode) { + switch (typeNode.kind) { + case Kind.LIST_TYPE: { + const innerType = typeFromAST(schema, typeNode.type); + return innerType && new GraphQLList(innerType); + } - if (socket[kError]) { - throw socket[kError] - } + case Kind.NON_NULL_TYPE: { + const innerType = typeFromAST(schema, typeNode.type); + return innerType && new GraphQLNonNull(innerType); + } - if (socket.destroyed) { - return - } + case Kind.NAMED_TYPE: + return schema.getType(typeNode.name.value); + } +} - if (bytesWritten === 0) { - if (expectsPayload) { - // https://tools.ietf.org/html/rfc7230#section-3.3.2 - // A user agent SHOULD send a Content-Length in a request message when - // no Transfer-Encoding is sent and the request method defines a meaning - // for an enclosed payload body. +/** + * TypeInfo is a utility class which, given a GraphQL schema, can keep track + * of the current field and type definitions at any point in a GraphQL document + * AST during a recursive descent by calling `enter(node)` and `leave(node)`. + */ - socket.write(`${header}content-length: 0\r\n\r\n`, 'ascii'); - } else { - socket.write(`${header}\r\n`, 'ascii'); - } - } else if (contentLength === null) { - socket.write('\r\n0\r\n\r\n', 'ascii'); - } +class TypeInfo { + constructor( + schema, + /** + * Initial type may be provided in rare cases to facilitate traversals + * beginning somewhere other than documents. + */ + initialType, + /** @deprecated will be removed in 17.0.0 */ + getFieldDefFn, + ) { + this._schema = schema; + this._typeStack = []; + this._parentTypeStack = []; + this._inputTypeStack = []; + this._fieldDefStack = []; + this._defaultValueStack = []; + this._directive = null; + this._argument = null; + this._enumValue = null; + this._getFieldDef = + getFieldDefFn !== null && getFieldDefFn !== void 0 + ? getFieldDefFn + : getFieldDef$1; - if (contentLength !== null && bytesWritten !== contentLength) { - if (client[kStrictContentLength]) { - throw new RequestContentLengthMismatchError() - } else { - process.emitWarning(new RequestContentLengthMismatchError()); - } - } + if (initialType) { + if (isInputType(initialType)) { + this._inputTypeStack.push(initialType); + } - if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) { - // istanbul ignore else: only for jest - if (socket[kParser].timeout.refresh) { - socket[kParser].timeout.refresh(); - } - } + if (isCompositeType(initialType)) { + this._parentTypeStack.push(initialType); + } - resume(client); - } + if (isOutputType(initialType)) { + this._typeStack.push(initialType); + } + } + } - destroy (err) { - const { socket, client } = this; + get [Symbol.toStringTag]() { + return 'TypeInfo'; + } - socket[kWriting] = false; + getType() { + if (this._typeStack.length > 0) { + return this._typeStack[this._typeStack.length - 1]; + } + } - if (err) { - assert(client[kRunning] <= 1, 'pipeline should only contain this request'); - util.destroy(socket, err); - } - } - } + getParentType() { + if (this._parentTypeStack.length > 0) { + return this._parentTypeStack[this._parentTypeStack.length - 1]; + } + } - function errorRequest (client, request, err) { - try { - request.onError(err); - assert(request.aborted); - } catch (err) { - client.emit('error', err); - } - } + getInputType() { + if (this._inputTypeStack.length > 0) { + return this._inputTypeStack[this._inputTypeStack.length - 1]; + } + } - client = Client; - return client; -} - -/* eslint-disable */ - -var fixedQueue; -var hasRequiredFixedQueue; - -function requireFixedQueue () { - if (hasRequiredFixedQueue) return fixedQueue; - hasRequiredFixedQueue = 1; - - // Extracted from node/lib/internal/fixed_queue.js - - // Currently optimal queue size, tested on V8 6.0 - 6.6. Must be power of two. - const kSize = 2048; - const kMask = kSize - 1; - - // The FixedQueue is implemented as a singly-linked list of fixed-size - // circular buffers. It looks something like this: - // - // head tail - // | | - // v v - // +-----------+ <-----\ +-----------+ <------\ +-----------+ - // | [null] | \----- | next | \------- | next | - // +-----------+ +-----------+ +-----------+ - // | item | <-- bottom | item | <-- bottom | [empty] | - // | item | | item | | [empty] | - // | item | | item | | [empty] | - // | item | | item | | [empty] | - // | item | | item | bottom --> | item | - // | item | | item | | item | - // | ... | | ... | | ... | - // | item | | item | | item | - // | item | | item | | item | - // | [empty] | <-- top | item | | item | - // | [empty] | | item | | item | - // | [empty] | | [empty] | <-- top top --> | [empty] | - // +-----------+ +-----------+ +-----------+ - // - // Or, if there is only one circular buffer, it looks something - // like either of these: - // - // head tail head tail - // | | | | - // v v v v - // +-----------+ +-----------+ - // | [null] | | [null] | - // +-----------+ +-----------+ - // | [empty] | | item | - // | [empty] | | item | - // | item | <-- bottom top --> | [empty] | - // | item | | [empty] | - // | [empty] | <-- top bottom --> | item | - // | [empty] | | item | - // +-----------+ +-----------+ - // - // Adding a value means moving `top` forward by one, removing means - // moving `bottom` forward by one. After reaching the end, the queue - // wraps around. - // - // When `top === bottom` the current queue is empty and when - // `top + 1 === bottom` it's full. This wastes a single space of storage - // but allows much quicker checks. - - class FixedCircularBuffer { - constructor() { - this.bottom = 0; - this.top = 0; - this.list = new Array(kSize); - this.next = null; - } + getParentInputType() { + if (this._inputTypeStack.length > 1) { + return this._inputTypeStack[this._inputTypeStack.length - 2]; + } + } - isEmpty() { - return this.top === this.bottom; - } + getFieldDef() { + if (this._fieldDefStack.length > 0) { + return this._fieldDefStack[this._fieldDefStack.length - 1]; + } + } - isFull() { - return ((this.top + 1) & kMask) === this.bottom; - } + getDefaultValue() { + if (this._defaultValueStack.length > 0) { + return this._defaultValueStack[this._defaultValueStack.length - 1]; + } + } - push(data) { - this.list[this.top] = data; - this.top = (this.top + 1) & kMask; - } + getDirective() { + return this._directive; + } - shift() { - const nextItem = this.list[this.bottom]; - if (nextItem === undefined) - return null; - this.list[this.bottom] = undefined; - this.bottom = (this.bottom + 1) & kMask; - return nextItem; - } - } + getArgument() { + return this._argument; + } - fixedQueue = class FixedQueue { - constructor() { - this.head = this.tail = new FixedCircularBuffer(); - } + getEnumValue() { + return this._enumValue; + } - isEmpty() { - return this.head.isEmpty(); - } + enter(node) { + const schema = this._schema; // Note: many of the types below are explicitly typed as "unknown" to drop + // any assumptions of a valid schema to ensure runtime types are properly + // checked before continuing since TypeInfo is used as part of validation + // which occurs before guarantees of schema and document validity. - push(data) { - if (this.head.isFull()) { - // Head is full: Creates a new queue, sets the old queue's `.next` to it, - // and sets it as the new main queue. - this.head = this.head.next = new FixedCircularBuffer(); - } - this.head.push(data); - } + switch (node.kind) { + case Kind.SELECTION_SET: { + const namedType = getNamedType(this.getType()); - shift() { - const tail = this.tail; - const next = tail.shift(); - if (tail.isEmpty() && tail.next !== null) { - // If there is another queue, it forms the new tail. - this.tail = tail.next; - } - return next; - } - }; - return fixedQueue; -} + this._parentTypeStack.push( + isCompositeType(namedType) ? namedType : undefined, + ); -var poolStats; -var hasRequiredPoolStats; + break; + } -function requirePoolStats () { - if (hasRequiredPoolStats) return poolStats; - hasRequiredPoolStats = 1; - const { kFree, kConnected, kPending, kQueued, kRunning, kSize } = requireSymbols$1(); - const kPool = Symbol('pool'); + case Kind.FIELD: { + const parentType = this.getParentType(); + let fieldDef; + let fieldType; - class PoolStats { - constructor (pool) { - this[kPool] = pool; - } + if (parentType) { + fieldDef = this._getFieldDef(schema, parentType, node); - get connected () { - return this[kPool][kConnected] - } + if (fieldDef) { + fieldType = fieldDef.type; + } + } - get free () { - return this[kPool][kFree] - } + this._fieldDefStack.push(fieldDef); - get pending () { - return this[kPool][kPending] - } + this._typeStack.push(isOutputType(fieldType) ? fieldType : undefined); - get queued () { - return this[kPool][kQueued] - } + break; + } - get running () { - return this[kPool][kRunning] - } + case Kind.DIRECTIVE: + this._directive = schema.getDirective(node.name.value); + break; - get size () { - return this[kPool][kSize] - } - } + case Kind.OPERATION_DEFINITION: { + const rootType = schema.getRootType(node.operation); - poolStats = PoolStats; - return poolStats; -} + this._typeStack.push(isObjectType(rootType) ? rootType : undefined); -var poolBase; -var hasRequiredPoolBase; + break; + } -function requirePoolBase () { - if (hasRequiredPoolBase) return poolBase; - hasRequiredPoolBase = 1; + case Kind.INLINE_FRAGMENT: + case Kind.FRAGMENT_DEFINITION: { + const typeConditionAST = node.typeCondition; + const outputType = typeConditionAST + ? typeFromAST(schema, typeConditionAST) + : getNamedType(this.getType()); - const DispatcherBase = requireDispatcherBase(); - const FixedQueue = requireFixedQueue(); - const { kConnected, kSize, kRunning, kPending, kQueued, kBusy, kFree, kUrl, kClose, kDestroy, kDispatch } = requireSymbols$1(); - const PoolStats = requirePoolStats(); + this._typeStack.push(isOutputType(outputType) ? outputType : undefined); - const kClients = Symbol('clients'); - const kNeedDrain = Symbol('needDrain'); - const kQueue = Symbol('queue'); - const kClosedResolve = Symbol('closed resolve'); - const kOnDrain = Symbol('onDrain'); - const kOnConnect = Symbol('onConnect'); - const kOnDisconnect = Symbol('onDisconnect'); - const kOnConnectionError = Symbol('onConnectionError'); - const kGetDispatcher = Symbol('get dispatcher'); - const kAddClient = Symbol('add client'); - const kRemoveClient = Symbol('remove client'); - const kStats = Symbol('stats'); + break; + } - class PoolBase extends DispatcherBase { - constructor () { - super(); + case Kind.VARIABLE_DEFINITION: { + const inputType = typeFromAST(schema, node.type); - this[kQueue] = new FixedQueue(); - this[kClients] = []; - this[kQueued] = 0; + this._inputTypeStack.push( + isInputType(inputType) ? inputType : undefined, + ); - const pool = this; + break; + } - this[kOnDrain] = function onDrain (origin, targets) { - const queue = pool[kQueue]; + case Kind.ARGUMENT: { + var _this$getDirective; - let needDrain = false; + let argDef; + let argType; + const fieldOrDirective = + (_this$getDirective = this.getDirective()) !== null && + _this$getDirective !== void 0 + ? _this$getDirective + : this.getFieldDef(); - while (!needDrain) { - const item = queue.shift(); - if (!item) { - break - } - pool[kQueued]--; - needDrain = !this.dispatch(item.opts, item.handler); - } + if (fieldOrDirective) { + argDef = fieldOrDirective.args.find( + (arg) => arg.name === node.name.value, + ); - this[kNeedDrain] = needDrain; + if (argDef) { + argType = argDef.type; + } + } - if (!this[kNeedDrain] && pool[kNeedDrain]) { - pool[kNeedDrain] = false; - pool.emit('drain', origin, [pool, ...targets]); - } + this._argument = argDef; - if (pool[kClosedResolve] && queue.isEmpty()) { - Promise - .all(pool[kClients].map(c => c.close())) - .then(pool[kClosedResolve]); - } - }; + this._defaultValueStack.push(argDef ? argDef.defaultValue : undefined); - this[kOnConnect] = (origin, targets) => { - pool.emit('connect', origin, [pool, ...targets]); - }; + this._inputTypeStack.push(isInputType(argType) ? argType : undefined); - this[kOnDisconnect] = (origin, targets, err) => { - pool.emit('disconnect', origin, [pool, ...targets], err); - }; + break; + } - this[kOnConnectionError] = (origin, targets, err) => { - pool.emit('connectionError', origin, [pool, ...targets], err); - }; + case Kind.LIST: { + const listType = getNullableType(this.getInputType()); + const itemType = isListType(listType) ? listType.ofType : listType; // List positions never have a default value. - this[kStats] = new PoolStats(this); - } + this._defaultValueStack.push(undefined); - get [kBusy] () { - return this[kNeedDrain] - } + this._inputTypeStack.push(isInputType(itemType) ? itemType : undefined); - get [kConnected] () { - return this[kClients].filter(client => client[kConnected]).length - } + break; + } - get [kFree] () { - return this[kClients].filter(client => client[kConnected] && !client[kNeedDrain]).length - } + case Kind.OBJECT_FIELD: { + const objectType = getNamedType(this.getInputType()); + let inputFieldType; + let inputField; - get [kPending] () { - let ret = this[kQueued]; - for (const { [kPending]: pending } of this[kClients]) { - ret += pending; - } - return ret - } + if (isInputObjectType(objectType)) { + inputField = objectType.getFields()[node.name.value]; - get [kRunning] () { - let ret = 0; - for (const { [kRunning]: running } of this[kClients]) { - ret += running; - } - return ret - } + if (inputField) { + inputFieldType = inputField.type; + } + } - get [kSize] () { - let ret = this[kQueued]; - for (const { [kSize]: size } of this[kClients]) { - ret += size; - } - return ret - } + this._defaultValueStack.push( + inputField ? inputField.defaultValue : undefined, + ); - get stats () { - return this[kStats] - } + this._inputTypeStack.push( + isInputType(inputFieldType) ? inputFieldType : undefined, + ); - async [kClose] () { - if (this[kQueue].isEmpty()) { - return Promise.all(this[kClients].map(c => c.close())) - } else { - return new Promise((resolve) => { - this[kClosedResolve] = resolve; - }) - } - } + break; + } - async [kDestroy] (err) { - while (true) { - const item = this[kQueue].shift(); - if (!item) { - break - } - item.handler.onError(err); - } + case Kind.ENUM: { + const enumType = getNamedType(this.getInputType()); + let enumValue; - return Promise.all(this[kClients].map(c => c.destroy(err))) - } + if (isEnumType(enumType)) { + enumValue = enumType.getValue(node.value); + } - [kDispatch] (opts, handler) { - const dispatcher = this[kGetDispatcher](); + this._enumValue = enumValue; + break; + } + } + } - if (!dispatcher) { - this[kNeedDrain] = true; - this[kQueue].push({ opts, handler }); - this[kQueued]++; - } else if (!dispatcher.dispatch(opts, handler)) { - dispatcher[kNeedDrain] = true; - this[kNeedDrain] = !this[kGetDispatcher](); - } + leave(node) { + switch (node.kind) { + case Kind.SELECTION_SET: + this._parentTypeStack.pop(); - return !this[kNeedDrain] - } + break; - [kAddClient] (client) { - client - .on('drain', this[kOnDrain]) - .on('connect', this[kOnConnect]) - .on('disconnect', this[kOnDisconnect]) - .on('connectionError', this[kOnConnectionError]); + case Kind.FIELD: + this._fieldDefStack.pop(); - this[kClients].push(client); + this._typeStack.pop(); - if (this[kNeedDrain]) { - process.nextTick(() => { - if (this[kNeedDrain]) { - this[kOnDrain](client[kUrl], [this, client]); - } - }); - } + break; - return this - } + case Kind.DIRECTIVE: + this._directive = null; + break; - [kRemoveClient] (client) { - client.close(() => { - const idx = this[kClients].indexOf(client); - if (idx !== -1) { - this[kClients].splice(idx, 1); - } - }); + case Kind.OPERATION_DEFINITION: + case Kind.INLINE_FRAGMENT: + case Kind.FRAGMENT_DEFINITION: + this._typeStack.pop(); - this[kNeedDrain] = this[kClients].some(dispatcher => ( - !dispatcher[kNeedDrain] && - dispatcher.closed !== true && - dispatcher.destroyed !== true - )); - } - } + break; - poolBase = { - PoolBase, - kClients, - kNeedDrain, - kAddClient, - kRemoveClient, - kGetDispatcher - }; - return poolBase; -} - -var pool; -var hasRequiredPool; - -function requirePool () { - if (hasRequiredPool) return pool; - hasRequiredPool = 1; - - const { - PoolBase, - kClients, - kNeedDrain, - kAddClient, - kGetDispatcher - } = requirePoolBase(); - const Client = requireClient(); - const { - InvalidArgumentError - } = requireErrors(); - const util = requireUtil$1(); - const { kUrl } = requireSymbols$1(); - const buildConnector = requireConnect(); - - const kOptions = Symbol('options'); - const kConnections = Symbol('connections'); - const kFactory = Symbol('factory'); - - function defaultFactory (origin, opts) { - return new Client(origin, opts) - } + case Kind.VARIABLE_DEFINITION: + this._inputTypeStack.pop(); - class Pool extends PoolBase { - constructor (origin, { - connections, - factory = defaultFactory, - connect, - connectTimeout, - tls, - maxCachedSessions, - socketPath, - ...options - } = {}) { - super(); - - if (connections != null && (!Number.isFinite(connections) || connections < 0)) { - throw new InvalidArgumentError('invalid connections') - } + break; - if (typeof factory !== 'function') { - throw new InvalidArgumentError('factory must be a function.') - } + case Kind.ARGUMENT: + this._argument = null; - if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') { - throw new InvalidArgumentError('connect must be a function or an object') - } + this._defaultValueStack.pop(); - if (typeof connect !== 'function') { - connect = buildConnector({ - ...tls, - maxCachedSessions, - socketPath, - timeout: connectTimeout == null ? 10e3 : connectTimeout, - ...connect - }); - } + this._inputTypeStack.pop(); - this[kConnections] = connections || null; - this[kUrl] = util.parseOrigin(origin); - this[kOptions] = { ...util.deepClone(options), connect }; - this[kFactory] = factory; - } + break; - [kGetDispatcher] () { - let dispatcher = this[kClients].find(dispatcher => !dispatcher[kNeedDrain]); + case Kind.LIST: + case Kind.OBJECT_FIELD: + this._defaultValueStack.pop(); - if (dispatcher) { - return dispatcher - } + this._inputTypeStack.pop(); - if (!this[kConnections] || this[kClients].length < this[kConnections]) { - dispatcher = this[kFactory](this[kUrl], this[kOptions]); - this[kAddClient](dispatcher); - } + break; - return dispatcher - } - } + case Kind.ENUM: + this._enumValue = null; + break; + } + } +} - pool = Pool; - return pool; -} - -var balancedPool; -var hasRequiredBalancedPool; - -function requireBalancedPool () { - if (hasRequiredBalancedPool) return balancedPool; - hasRequiredBalancedPool = 1; - - const { - BalancedPoolMissingUpstreamError, - InvalidArgumentError - } = requireErrors(); - const { - PoolBase, - kClients, - kNeedDrain, - kAddClient, - kRemoveClient, - kGetDispatcher - } = requirePoolBase(); - const Pool = requirePool(); - const { kUrl } = requireSymbols$1(); - const { parseOrigin } = requireUtil$1(); - const kFactory = Symbol('factory'); - - const kOptions = Symbol('options'); - const kGreatestCommonDivisor = Symbol('kGreatestCommonDivisor'); - const kCurrentWeight = Symbol('kCurrentWeight'); - const kIndex = Symbol('kIndex'); - const kWeight = Symbol('kWeight'); - const kMaxWeightPerServer = Symbol('kMaxWeightPerServer'); - const kErrorPenalty = Symbol('kErrorPenalty'); - - function getGreatestCommonDivisor (a, b) { - if (b === 0) return a - return getGreatestCommonDivisor(b, a % b) - } +/** + * Not exactly the same as the executor's definition of getFieldDef, in this + * statically evaluated environment we do not always have an Object type, + * and need to handle Interface and Union types. + */ +function getFieldDef$1(schema, parentType, fieldNode) { + const name = fieldNode.name.value; - function defaultFactory (origin, opts) { - return new Pool(origin, opts) - } + if ( + name === SchemaMetaFieldDef.name && + schema.getQueryType() === parentType + ) { + return SchemaMetaFieldDef; + } - class BalancedPool extends PoolBase { - constructor (upstreams = [], { factory = defaultFactory, ...opts } = {}) { - super(); + if (name === TypeMetaFieldDef.name && schema.getQueryType() === parentType) { + return TypeMetaFieldDef; + } - this[kOptions] = opts; - this[kIndex] = -1; - this[kCurrentWeight] = 0; + if (name === TypeNameMetaFieldDef.name && isCompositeType(parentType)) { + return TypeNameMetaFieldDef; + } - this[kMaxWeightPerServer] = this[kOptions].maxWeightPerServer || 100; - this[kErrorPenalty] = this[kOptions].errorPenalty || 15; + if (isObjectType(parentType) || isInterfaceType(parentType)) { + return parentType.getFields()[name]; + } +} +/** + * Creates a new visitor instance which maintains a provided TypeInfo instance + * along with visiting visitor. + */ - if (!Array.isArray(upstreams)) { - upstreams = [upstreams]; - } +function visitWithTypeInfo(typeInfo, visitor) { + return { + enter(...args) { + const node = args[0]; + typeInfo.enter(node); + const fn = getEnterLeaveForKind(visitor, node.kind).enter; - if (typeof factory !== 'function') { - throw new InvalidArgumentError('factory must be a function.') - } + if (fn) { + const result = fn.apply(visitor, args); - this[kFactory] = factory; + if (result !== undefined) { + typeInfo.leave(node); - for (const upstream of upstreams) { - this.addUpstream(upstream); - } - this._updateBalancedPoolStats(); - } + if (isNode(result)) { + typeInfo.enter(result); + } + } - addUpstream (upstream) { - const upstreamOrigin = parseOrigin(upstream).origin; + return result; + } + }, - if (this[kClients].find((pool) => ( - pool[kUrl].origin === upstreamOrigin && - pool.closed !== true && - pool.destroyed !== true - ))) { - return this - } - const pool = this[kFactory](upstreamOrigin, Object.assign({}, this[kOptions])); + leave(...args) { + const node = args[0]; + const fn = getEnterLeaveForKind(visitor, node.kind).leave; + let result; - this[kAddClient](pool); - pool.on('connect', () => { - pool[kWeight] = Math.min(this[kMaxWeightPerServer], pool[kWeight] + this[kErrorPenalty]); - }); + if (fn) { + result = fn.apply(visitor, args); + } - pool.on('connectionError', () => { - pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty]); - this._updateBalancedPoolStats(); - }); + typeInfo.leave(node); + return result; + }, + }; +} - pool.on('disconnect', (...args) => { - const err = args[2]; - if (err && err.code === 'UND_ERR_SOCKET') { - // decrease the weight of the pool. - pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty]); - this._updateBalancedPoolStats(); - } - }); +function isDefinitionNode(node) { + return ( + isExecutableDefinitionNode(node) || + isTypeSystemDefinitionNode(node) || + isTypeSystemExtensionNode(node) + ); +} +function isExecutableDefinitionNode(node) { + return ( + node.kind === Kind.OPERATION_DEFINITION || + node.kind === Kind.FRAGMENT_DEFINITION + ); +} +function isTypeSystemDefinitionNode(node) { + return ( + node.kind === Kind.SCHEMA_DEFINITION || + isTypeDefinitionNode(node) || + node.kind === Kind.DIRECTIVE_DEFINITION + ); +} +function isTypeDefinitionNode(node) { + return ( + node.kind === Kind.SCALAR_TYPE_DEFINITION || + node.kind === Kind.OBJECT_TYPE_DEFINITION || + node.kind === Kind.INTERFACE_TYPE_DEFINITION || + node.kind === Kind.UNION_TYPE_DEFINITION || + node.kind === Kind.ENUM_TYPE_DEFINITION || + node.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION + ); +} +function isTypeSystemExtensionNode(node) { + return node.kind === Kind.SCHEMA_EXTENSION || isTypeExtensionNode(node); +} +function isTypeExtensionNode(node) { + return ( + node.kind === Kind.SCALAR_TYPE_EXTENSION || + node.kind === Kind.OBJECT_TYPE_EXTENSION || + node.kind === Kind.INTERFACE_TYPE_EXTENSION || + node.kind === Kind.UNION_TYPE_EXTENSION || + node.kind === Kind.ENUM_TYPE_EXTENSION || + node.kind === Kind.INPUT_OBJECT_TYPE_EXTENSION + ); +} - for (const client of this[kClients]) { - client[kWeight] = this[kMaxWeightPerServer]; - } +/** + * Executable definitions + * + * A GraphQL document is only valid for execution if all definitions are either + * operation or fragment definitions. + * + * See https://spec.graphql.org/draft/#sec-Executable-Definitions + */ +function ExecutableDefinitionsRule(context) { + return { + Document(node) { + for (const definition of node.definitions) { + if (!isExecutableDefinitionNode(definition)) { + const defName = + definition.kind === Kind.SCHEMA_DEFINITION || + definition.kind === Kind.SCHEMA_EXTENSION + ? 'schema' + : '"' + definition.name.value + '"'; + context.reportError( + new GraphQLError(`The ${defName} definition is not executable.`, { + nodes: definition, + }), + ); + } + } - this._updateBalancedPoolStats(); + return false; + }, + }; +} - return this - } +/** + * Fields on correct type + * + * A GraphQL document is only valid if all fields selected are defined by the + * parent type, or are an allowed meta field such as __typename. + * + * See https://spec.graphql.org/draft/#sec-Field-Selections + */ +function FieldsOnCorrectTypeRule(context) { + return { + Field(node) { + const type = context.getParentType(); - _updateBalancedPoolStats () { - this[kGreatestCommonDivisor] = this[kClients].map(p => p[kWeight]).reduce(getGreatestCommonDivisor, 0); - } + if (type) { + const fieldDef = context.getFieldDef(); - removeUpstream (upstream) { - const upstreamOrigin = parseOrigin(upstream).origin; + if (!fieldDef) { + // This field doesn't exist, lets look for suggestions. + const schema = context.getSchema(); + const fieldName = node.name.value; // First determine if there are any suggested types to condition on. - const pool = this[kClients].find((pool) => ( - pool[kUrl].origin === upstreamOrigin && - pool.closed !== true && - pool.destroyed !== true - )); + let suggestion = didYouMean( + 'to use an inline fragment on', + getSuggestedTypeNames(schema, type, fieldName), + ); // If there are no suggested types, then perhaps this was a typo? - if (pool) { - this[kRemoveClient](pool); - } + if (suggestion === '') { + suggestion = didYouMean(getSuggestedFieldNames(type, fieldName)); + } // Report an error, including helpful suggestions. - return this - } + context.reportError( + new GraphQLError( + `Cannot query field "${fieldName}" on type "${type.name}".` + + suggestion, + { + nodes: node, + }, + ), + ); + } + } + }, + }; +} +/** + * Go through all of the implementations of type, as well as the interfaces that + * they implement. If any of those types include the provided field, suggest them, + * sorted by how often the type is referenced. + */ - get upstreams () { - return this[kClients] - .filter(dispatcher => dispatcher.closed !== true && dispatcher.destroyed !== true) - .map((p) => p[kUrl].origin) - } +function getSuggestedTypeNames(schema, type, fieldName) { + if (!isAbstractType(type)) { + // Must be an Object type, which does not have possible fields. + return []; + } - [kGetDispatcher] () { - // We validate that pools is greater than 0, - // otherwise we would have to wait until an upstream - // is added, which might never happen. - if (this[kClients].length === 0) { - throw new BalancedPoolMissingUpstreamError() - } + const suggestedTypes = new Set(); + const usageCount = Object.create(null); - const dispatcher = this[kClients].find(dispatcher => ( - !dispatcher[kNeedDrain] && - dispatcher.closed !== true && - dispatcher.destroyed !== true - )); + for (const possibleType of schema.getPossibleTypes(type)) { + if (!possibleType.getFields()[fieldName]) { + continue; + } // This object type defines this field. - if (!dispatcher) { - return - } + suggestedTypes.add(possibleType); + usageCount[possibleType.name] = 1; - const allClientsBusy = this[kClients].map(pool => pool[kNeedDrain]).reduce((a, b) => a && b, true); + for (const possibleInterface of possibleType.getInterfaces()) { + var _usageCount$possibleI; - if (allClientsBusy) { - return - } + if (!possibleInterface.getFields()[fieldName]) { + continue; + } // This interface type defines this field. - let counter = 0; + suggestedTypes.add(possibleInterface); + usageCount[possibleInterface.name] = + ((_usageCount$possibleI = usageCount[possibleInterface.name]) !== + null && _usageCount$possibleI !== void 0 + ? _usageCount$possibleI + : 0) + 1; + } + } - let maxWeightIndex = this[kClients].findIndex(pool => !pool[kNeedDrain]); + return [...suggestedTypes] + .sort((typeA, typeB) => { + // Suggest both interface and object types based on how common they are. + const usageCountDiff = usageCount[typeB.name] - usageCount[typeA.name]; - while (counter++ < this[kClients].length) { - this[kIndex] = (this[kIndex] + 1) % this[kClients].length; - const pool = this[kClients][this[kIndex]]; + if (usageCountDiff !== 0) { + return usageCountDiff; + } // Suggest super types first followed by subtypes - // find pool index with the largest weight - if (pool[kWeight] > this[kClients][maxWeightIndex][kWeight] && !pool[kNeedDrain]) { - maxWeightIndex = this[kIndex]; - } + if (isInterfaceType(typeA) && schema.isSubType(typeA, typeB)) { + return -1; + } - // decrease the current weight every `this[kClients].length`. - if (this[kIndex] === 0) { - // Set the current weight to the next lower weight. - this[kCurrentWeight] = this[kCurrentWeight] - this[kGreatestCommonDivisor]; + if (isInterfaceType(typeB) && schema.isSubType(typeB, typeA)) { + return 1; + } - if (this[kCurrentWeight] <= 0) { - this[kCurrentWeight] = this[kMaxWeightPerServer]; - } - } - if (pool[kWeight] >= this[kCurrentWeight] && (!pool[kNeedDrain])) { - return pool - } - } + return naturalCompare(typeA.name, typeB.name); + }) + .map((x) => x.name); +} +/** + * For the field name provided, determine if there are any similar field names + * that may be the result of a typo. + */ - this[kCurrentWeight] = this[kClients][maxWeightIndex][kWeight]; - this[kIndex] = maxWeightIndex; - return this[kClients][maxWeightIndex] - } - } +function getSuggestedFieldNames(type, fieldName) { + if (isObjectType(type) || isInterfaceType(type)) { + const possibleFieldNames = Object.keys(type.getFields()); + return suggestionList(fieldName, possibleFieldNames); + } // Otherwise, must be a Union type, which does not define fields. - balancedPool = BalancedPool; - return balancedPool; + return []; } -var dispatcherWeakref; -var hasRequiredDispatcherWeakref; - -function requireDispatcherWeakref () { - if (hasRequiredDispatcherWeakref) return dispatcherWeakref; - hasRequiredDispatcherWeakref = 1; - - /* istanbul ignore file: only for Node 12 */ - - const { kConnected, kSize } = requireSymbols$1(); - - class CompatWeakRef { - constructor (value) { - this.value = value; - } - - deref () { - return this.value[kConnected] === 0 && this.value[kSize] === 0 - ? undefined - : this.value - } - } - - class CompatFinalizer { - constructor (finalizer) { - this.finalizer = finalizer; - } +/** + * Fragments on composite type + * + * Fragments use a type condition to determine if they apply, since fragments + * can only be spread into a composite type (object, interface, or union), the + * type condition must also be a composite type. + * + * See https://spec.graphql.org/draft/#sec-Fragments-On-Composite-Types + */ +function FragmentsOnCompositeTypesRule(context) { + return { + InlineFragment(node) { + const typeCondition = node.typeCondition; - register (dispatcher, key) { - dispatcher.on('disconnect', () => { - if (dispatcher[kConnected] === 0 && dispatcher[kSize] === 0) { - this.finalizer(key); - } - }); - } - } + if (typeCondition) { + const type = typeFromAST(context.getSchema(), typeCondition); - dispatcherWeakref = function () { - return { - WeakRef: commonjsGlobal.WeakRef || CompatWeakRef, - FinalizationRegistry: commonjsGlobal.FinalizationRegistry || CompatFinalizer - } - }; - return dispatcherWeakref; -} - -var agent; -var hasRequiredAgent; - -function requireAgent () { - if (hasRequiredAgent) return agent; - hasRequiredAgent = 1; - - const { InvalidArgumentError } = requireErrors(); - const { kClients, kRunning, kClose, kDestroy, kDispatch } = requireSymbols$1(); - const DispatcherBase = requireDispatcherBase(); - const Pool = requirePool(); - const Client = requireClient(); - const util = requireUtil$1(); - const RedirectHandler = requireRedirect(); - const { WeakRef, FinalizationRegistry } = requireDispatcherWeakref()(); - - const kOnConnect = Symbol('onConnect'); - const kOnDisconnect = Symbol('onDisconnect'); - const kOnConnectionError = Symbol('onConnectionError'); - const kMaxRedirections = Symbol('maxRedirections'); - const kOnDrain = Symbol('onDrain'); - const kFactory = Symbol('factory'); - const kFinalizer = Symbol('finalizer'); - const kOptions = Symbol('options'); - - function defaultFactory (origin, opts) { - return opts && opts.connections === 1 - ? new Client(origin, opts) - : new Pool(origin, opts) - } + if (type && !isCompositeType(type)) { + const typeStr = print(typeCondition); + context.reportError( + new GraphQLError( + `Fragment cannot condition on non composite type "${typeStr}".`, + { + nodes: typeCondition, + }, + ), + ); + } + } + }, - class Agent extends DispatcherBase { - constructor ({ factory = defaultFactory, maxRedirections = 0, connect, ...options } = {}) { - super(); + FragmentDefinition(node) { + const type = typeFromAST(context.getSchema(), node.typeCondition); - if (typeof factory !== 'function') { - throw new InvalidArgumentError('factory must be a function.') - } + if (type && !isCompositeType(type)) { + const typeStr = print(node.typeCondition); + context.reportError( + new GraphQLError( + `Fragment "${node.name.value}" cannot condition on non composite type "${typeStr}".`, + { + nodes: node.typeCondition, + }, + ), + ); + } + }, + }; +} - if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') { - throw new InvalidArgumentError('connect must be a function or an object') - } +/** + * Known argument names + * + * A GraphQL field is only valid if all supplied arguments are defined by + * that field. + * + * See https://spec.graphql.org/draft/#sec-Argument-Names + * See https://spec.graphql.org/draft/#sec-Directives-Are-In-Valid-Locations + */ +function KnownArgumentNamesRule(context) { + return { + // eslint-disable-next-line new-cap + ...KnownArgumentNamesOnDirectivesRule(context), - if (!Number.isInteger(maxRedirections) || maxRedirections < 0) { - throw new InvalidArgumentError('maxRedirections must be a positive number') - } + Argument(argNode) { + const argDef = context.getArgument(); + const fieldDef = context.getFieldDef(); + const parentType = context.getParentType(); - if (connect && typeof connect !== 'function') { - connect = { ...connect }; - } + if (!argDef && fieldDef && parentType) { + const argName = argNode.name.value; + const knownArgsNames = fieldDef.args.map((arg) => arg.name); + const suggestions = suggestionList(argName, knownArgsNames); + context.reportError( + new GraphQLError( + `Unknown argument "${argName}" on field "${parentType.name}.${fieldDef.name}".` + + didYouMean(suggestions), + { + nodes: argNode, + }, + ), + ); + } + }, + }; +} +/** + * @internal + */ - this[kOptions] = { ...util.deepClone(options), connect }; - this[kMaxRedirections] = maxRedirections; - this[kFactory] = factory; - this[kClients] = new Map(); - this[kFinalizer] = new FinalizationRegistry(/* istanbul ignore next: gc is undeterministic */ key => { - const ref = this[kClients].get(key); - if (ref !== undefined && ref.deref() === undefined) { - this[kClients].delete(key); - } - }); +function KnownArgumentNamesOnDirectivesRule(context) { + const directiveArgs = Object.create(null); + const schema = context.getSchema(); + const definedDirectives = schema + ? schema.getDirectives() + : specifiedDirectives; - const agent = this; + for (const directive of definedDirectives) { + directiveArgs[directive.name] = directive.args.map((arg) => arg.name); + } - this[kOnDrain] = (origin, targets) => { - agent.emit('drain', origin, [agent, ...targets]); - }; + const astDefinitions = context.getDocument().definitions; - this[kOnConnect] = (origin, targets) => { - agent.emit('connect', origin, [agent, ...targets]); - }; + for (const def of astDefinitions) { + if (def.kind === Kind.DIRECTIVE_DEFINITION) { + var _def$arguments; - this[kOnDisconnect] = (origin, targets, err) => { - agent.emit('disconnect', origin, [agent, ...targets], err); - }; + // FIXME: https://github.com/graphql/graphql-js/issues/2203 - this[kOnConnectionError] = (origin, targets, err) => { - agent.emit('connectionError', origin, [agent, ...targets], err); - }; - } + /* c8 ignore next */ + const argsNodes = + (_def$arguments = def.arguments) !== null && _def$arguments !== void 0 + ? _def$arguments + : []; + directiveArgs[def.name.value] = argsNodes.map((arg) => arg.name.value); + } + } - get [kRunning] () { - let ret = 0; - for (const ref of this[kClients].values()) { - const client = ref.deref(); - /* istanbul ignore next: gc is undeterministic */ - if (client) { - ret += client[kRunning]; - } - } - return ret - } + return { + Directive(directiveNode) { + const directiveName = directiveNode.name.value; + const knownArgs = directiveArgs[directiveName]; - [kDispatch] (opts, handler) { - let key; - if (opts.origin && (typeof opts.origin === 'string' || opts.origin instanceof URL)) { - key = String(opts.origin); - } else { - throw new InvalidArgumentError('opts.origin must be a non-empty string or URL.') - } + if (directiveNode.arguments && knownArgs) { + for (const argNode of directiveNode.arguments) { + const argName = argNode.name.value; - const ref = this[kClients].get(key); + if (!knownArgs.includes(argName)) { + const suggestions = suggestionList(argName, knownArgs); + context.reportError( + new GraphQLError( + `Unknown argument "${argName}" on directive "@${directiveName}".` + + didYouMean(suggestions), + { + nodes: argNode, + }, + ), + ); + } + } + } - let dispatcher = ref ? ref.deref() : null; - if (!dispatcher) { - dispatcher = this[kFactory](opts.origin, this[kOptions]) - .on('drain', this[kOnDrain]) - .on('connect', this[kOnConnect]) - .on('disconnect', this[kOnDisconnect]) - .on('connectionError', this[kOnConnectionError]); + return false; + }, + }; +} - this[kClients].set(key, new WeakRef(dispatcher)); - this[kFinalizer].register(dispatcher, key); - } +/** + * Known directives + * + * A GraphQL document is only valid if all `@directives` are known by the + * schema and legally positioned. + * + * See https://spec.graphql.org/draft/#sec-Directives-Are-Defined + */ +function KnownDirectivesRule(context) { + const locationsMap = Object.create(null); + const schema = context.getSchema(); + const definedDirectives = schema + ? schema.getDirectives() + : specifiedDirectives; - const { maxRedirections = this[kMaxRedirections] } = opts; - if (maxRedirections != null && maxRedirections !== 0) { - opts = { ...opts, maxRedirections: 0 }; // Stop sub dispatcher from also redirecting. - handler = new RedirectHandler(this, maxRedirections, opts, handler); - } + for (const directive of definedDirectives) { + locationsMap[directive.name] = directive.locations; + } - return dispatcher.dispatch(opts, handler) - } + const astDefinitions = context.getDocument().definitions; - async [kClose] () { - const closePromises = []; - for (const ref of this[kClients].values()) { - const client = ref.deref(); - /* istanbul ignore else: gc is undeterministic */ - if (client) { - closePromises.push(client.close()); - } - } + for (const def of astDefinitions) { + if (def.kind === Kind.DIRECTIVE_DEFINITION) { + locationsMap[def.name.value] = def.locations.map((name) => name.value); + } + } - await Promise.all(closePromises); - } + return { + Directive(node, _key, _parent, _path, ancestors) { + const name = node.name.value; + const locations = locationsMap[name]; - async [kDestroy] (err) { - const destroyPromises = []; - for (const ref of this[kClients].values()) { - const client = ref.deref(); - /* istanbul ignore else: gc is undeterministic */ - if (client) { - destroyPromises.push(client.destroy(err)); - } - } + if (!locations) { + context.reportError( + new GraphQLError(`Unknown directive "@${name}".`, { + nodes: node, + }), + ); + return; + } - await Promise.all(destroyPromises); - } - } + const candidateLocation = getDirectiveLocationForASTPath(ancestors); - agent = Agent; - return agent; + if (candidateLocation && !locations.includes(candidateLocation)) { + context.reportError( + new GraphQLError( + `Directive "@${name}" may not be used on ${candidateLocation}.`, + { + nodes: node, + }, + ), + ); + } + }, + }; } -var api$1 = {}; - -var readable; -var hasRequiredReadable; - -function requireReadable () { - if (hasRequiredReadable) return readable; - hasRequiredReadable = 1; - - const assert = require$$0$3; - const { Readable } = Stream$2; - const { RequestAbortedError, NotSupportedError } = requireErrors(); - const util = requireUtil$1(); - const { ReadableStreamFrom, toUSVString } = requireUtil$1(); +function getDirectiveLocationForASTPath(ancestors) { + const appliedTo = ancestors[ancestors.length - 1]; + 'kind' in appliedTo || invariant$1(false); - let Blob; + switch (appliedTo.kind) { + case Kind.OPERATION_DEFINITION: + return getDirectiveLocationForOperation(appliedTo.operation); - const kConsume = Symbol('kConsume'); - const kReading = Symbol('kReading'); - const kBody = Symbol('kBody'); - const kAbort = Symbol('abort'); - const kContentType = Symbol('kContentType'); + case Kind.FIELD: + return DirectiveLocation$1.FIELD; - readable = class BodyReadable extends Readable { - constructor (resume, abort, contentType = '') { - super({ - autoDestroy: true, - read: resume, - highWaterMark: 64 * 1024 // Same as nodejs fs streams. - }); + case Kind.FRAGMENT_SPREAD: + return DirectiveLocation$1.FRAGMENT_SPREAD; - this._readableState.dataEmitted = false; + case Kind.INLINE_FRAGMENT: + return DirectiveLocation$1.INLINE_FRAGMENT; - this[kAbort] = abort; - this[kConsume] = null; - this[kBody] = null; - this[kContentType] = contentType; + case Kind.FRAGMENT_DEFINITION: + return DirectiveLocation$1.FRAGMENT_DEFINITION; - // Is stream being consumed through Readable API? - // This is an optimization so that we avoid checking - // for 'data' and 'readable' listeners in the hot path - // inside push(). - this[kReading] = false; - } + case Kind.VARIABLE_DEFINITION: + return DirectiveLocation$1.VARIABLE_DEFINITION; - destroy (err) { - if (this.destroyed) { - // Node < 16 - return this - } + case Kind.SCHEMA_DEFINITION: + case Kind.SCHEMA_EXTENSION: + return DirectiveLocation$1.SCHEMA; - if (!err && !this._readableState.endEmitted) { - err = new RequestAbortedError(); - } + case Kind.SCALAR_TYPE_DEFINITION: + case Kind.SCALAR_TYPE_EXTENSION: + return DirectiveLocation$1.SCALAR; - if (err) { - this[kAbort](); - } + case Kind.OBJECT_TYPE_DEFINITION: + case Kind.OBJECT_TYPE_EXTENSION: + return DirectiveLocation$1.OBJECT; - return super.destroy(err) - } + case Kind.FIELD_DEFINITION: + return DirectiveLocation$1.FIELD_DEFINITION; - emit (ev, ...args) { - if (ev === 'data') { - // Node < 16.7 - this._readableState.dataEmitted = true; - } else if (ev === 'error') { - // Node < 16 - this._readableState.errorEmitted = true; - } - return super.emit(ev, ...args) - } + case Kind.INTERFACE_TYPE_DEFINITION: + case Kind.INTERFACE_TYPE_EXTENSION: + return DirectiveLocation$1.INTERFACE; - on (ev, ...args) { - if (ev === 'data' || ev === 'readable') { - this[kReading] = true; - } - return super.on(ev, ...args) - } + case Kind.UNION_TYPE_DEFINITION: + case Kind.UNION_TYPE_EXTENSION: + return DirectiveLocation$1.UNION; - addListener (ev, ...args) { - return this.on(ev, ...args) - } + case Kind.ENUM_TYPE_DEFINITION: + case Kind.ENUM_TYPE_EXTENSION: + return DirectiveLocation$1.ENUM; - off (ev, ...args) { - const ret = super.off(ev, ...args); - if (ev === 'data' || ev === 'readable') { - this[kReading] = ( - this.listenerCount('data') > 0 || - this.listenerCount('readable') > 0 - ); - } - return ret - } + case Kind.ENUM_VALUE_DEFINITION: + return DirectiveLocation$1.ENUM_VALUE; - removeListener (ev, ...args) { - return this.off(ev, ...args) - } + case Kind.INPUT_OBJECT_TYPE_DEFINITION: + case Kind.INPUT_OBJECT_TYPE_EXTENSION: + return DirectiveLocation$1.INPUT_OBJECT; - push (chunk) { - if (this[kConsume] && chunk !== null && this.readableLength === 0) { - consumePush(this[kConsume], chunk); - return this[kReading] ? super.push(chunk) : true - } - return super.push(chunk) - } + case Kind.INPUT_VALUE_DEFINITION: { + const parentNode = ancestors[ancestors.length - 3]; + 'kind' in parentNode || invariant$1(false); + return parentNode.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION + ? DirectiveLocation$1.INPUT_FIELD_DEFINITION + : DirectiveLocation$1.ARGUMENT_DEFINITION; + } + // Not reachable, all possible types have been considered. - // https://fetch.spec.whatwg.org/#dom-body-text - async text () { - return consume(this, 'text') - } + /* c8 ignore next */ - // https://fetch.spec.whatwg.org/#dom-body-json - async json () { - return consume(this, 'json') - } + default: + invariant$1(false, 'Unexpected kind: ' + inspect$1(appliedTo.kind)); + } +} - // https://fetch.spec.whatwg.org/#dom-body-blob - async blob () { - return consume(this, 'blob') - } +function getDirectiveLocationForOperation(operation) { + switch (operation) { + case OperationTypeNode.QUERY: + return DirectiveLocation$1.QUERY; - // https://fetch.spec.whatwg.org/#dom-body-arraybuffer - async arrayBuffer () { - return consume(this, 'arrayBuffer') - } + case OperationTypeNode.MUTATION: + return DirectiveLocation$1.MUTATION; - // https://fetch.spec.whatwg.org/#dom-body-formdata - async formData () { - // TODO: Implement. - throw new NotSupportedError() - } + case OperationTypeNode.SUBSCRIPTION: + return DirectiveLocation$1.SUBSCRIPTION; + } +} - // https://fetch.spec.whatwg.org/#dom-body-bodyused - get bodyUsed () { - return util.isDisturbed(this) - } +/** + * Known fragment names + * + * A GraphQL document is only valid if all `...Fragment` fragment spreads refer + * to fragments defined in the same document. + * + * See https://spec.graphql.org/draft/#sec-Fragment-spread-target-defined + */ +function KnownFragmentNamesRule(context) { + return { + FragmentSpread(node) { + const fragmentName = node.name.value; + const fragment = context.getFragment(fragmentName); - // https://fetch.spec.whatwg.org/#dom-body-body - get body () { - if (!this[kBody]) { - this[kBody] = ReadableStreamFrom(this); - if (this[kConsume]) { - // TODO: Is this the best way to force a lock? - this[kBody].getReader(); // Ensure stream is locked. - assert(this[kBody].locked); - } - } - return this[kBody] - } + if (!fragment) { + context.reportError( + new GraphQLError(`Unknown fragment "${fragmentName}".`, { + nodes: node.name, + }), + ); + } + }, + }; +} - async dump (opts) { - let limit = opts && Number.isFinite(opts.limit) ? opts.limit : 262144; - try { - for await (const chunk of this) { - limit -= Buffer.byteLength(chunk); - if (limit < 0) { - return - } - } - } catch { - // Do nothing... - } - } - }; +/** + * Known type names + * + * A GraphQL document is only valid if referenced types (specifically + * variable definitions and fragment conditions) are defined by the type schema. + * + * See https://spec.graphql.org/draft/#sec-Fragment-Spread-Type-Existence + */ +function KnownTypeNamesRule(context) { + const schema = context.getSchema(); + const existingTypesMap = schema ? schema.getTypeMap() : Object.create(null); + const definedTypes = Object.create(null); - // https://streams.spec.whatwg.org/#readablestream-locked - function isLocked (self) { - // Consume is an implicit lock. - return (self[kBody] && self[kBody].locked === true) || self[kConsume] - } + for (const def of context.getDocument().definitions) { + if (isTypeDefinitionNode(def)) { + definedTypes[def.name.value] = true; + } + } - // https://fetch.spec.whatwg.org/#body-unusable - function isUnusable (self) { - return util.isDisturbed(self) || isLocked(self) - } + const typeNames = [ + ...Object.keys(existingTypesMap), + ...Object.keys(definedTypes), + ]; + return { + NamedType(node, _1, parent, _2, ancestors) { + const typeName = node.name.value; - async function consume (stream, type) { - if (isUnusable(stream)) { - throw new TypeError('unusable') - } + if (!existingTypesMap[typeName] && !definedTypes[typeName]) { + var _ancestors$; - assert(!stream[kConsume]); + const definitionNode = + (_ancestors$ = ancestors[2]) !== null && _ancestors$ !== void 0 + ? _ancestors$ + : parent; + const isSDL = definitionNode != null && isSDLNode(definitionNode); - return new Promise((resolve, reject) => { - stream[kConsume] = { - type, - stream, - resolve, - reject, - length: 0, - body: [] - }; + if (isSDL && standardTypeNames.includes(typeName)) { + return; + } - stream - .on('error', function (err) { - consumeFinish(this[kConsume], err); - }) - .on('close', function () { - if (this[kConsume].body !== null) { - consumeFinish(this[kConsume], new RequestAbortedError()); - } - }); + const suggestedTypes = suggestionList( + typeName, + isSDL ? standardTypeNames.concat(typeNames) : typeNames, + ); + context.reportError( + new GraphQLError( + `Unknown type "${typeName}".` + didYouMean(suggestedTypes), + { + nodes: node, + }, + ), + ); + } + }, + }; +} +const standardTypeNames = [...specifiedScalarTypes, ...introspectionTypes].map( + (type) => type.name, +); - process.nextTick(consumeStart, stream[kConsume]); - }) - } +function isSDLNode(value) { + return ( + 'kind' in value && + (isTypeSystemDefinitionNode(value) || isTypeSystemExtensionNode(value)) + ); +} - function consumeStart (consume) { - if (consume.body === null) { - return - } +/** + * Lone anonymous operation + * + * A GraphQL document is only valid if when it contains an anonymous operation + * (the query short-hand) that it contains only that one operation definition. + * + * See https://spec.graphql.org/draft/#sec-Lone-Anonymous-Operation + */ +function LoneAnonymousOperationRule(context) { + let operationCount = 0; + return { + Document(node) { + operationCount = node.definitions.filter( + (definition) => definition.kind === Kind.OPERATION_DEFINITION, + ).length; + }, - const { _readableState: state } = consume.stream; + OperationDefinition(node) { + if (!node.name && operationCount > 1) { + context.reportError( + new GraphQLError( + 'This anonymous operation must be the only defined operation.', + { + nodes: node, + }, + ), + ); + } + }, + }; +} - for (const chunk of state.buffer) { - consumePush(consume, chunk); - } +/** + * Lone Schema definition + * + * A GraphQL document is only valid if it contains only one schema definition. + */ +function LoneSchemaDefinitionRule(context) { + var _ref, _ref2, _oldSchema$astNode; - if (state.endEmitted) { - consumeEnd(this[kConsume]); - } else { - consume.stream.on('end', function () { - consumeEnd(this[kConsume]); - }); - } + const oldSchema = context.getSchema(); + const alreadyDefined = + (_ref = + (_ref2 = + (_oldSchema$astNode = + oldSchema === null || oldSchema === void 0 + ? void 0 + : oldSchema.astNode) !== null && _oldSchema$astNode !== void 0 + ? _oldSchema$astNode + : oldSchema === null || oldSchema === void 0 + ? void 0 + : oldSchema.getQueryType()) !== null && _ref2 !== void 0 + ? _ref2 + : oldSchema === null || oldSchema === void 0 + ? void 0 + : oldSchema.getMutationType()) !== null && _ref !== void 0 + ? _ref + : oldSchema === null || oldSchema === void 0 + ? void 0 + : oldSchema.getSubscriptionType(); + let schemaDefinitionsCount = 0; + return { + SchemaDefinition(node) { + if (alreadyDefined) { + context.reportError( + new GraphQLError( + 'Cannot define a new schema within a schema extension.', + { + nodes: node, + }, + ), + ); + return; + } - consume.stream.resume(); + if (schemaDefinitionsCount > 0) { + context.reportError( + new GraphQLError('Must provide only one schema definition.', { + nodes: node, + }), + ); + } - while (consume.stream.read() != null) { - // Loop - } - } + ++schemaDefinitionsCount; + }, + }; +} - function consumeEnd (consume) { - const { type, body, resolve, stream, length } = consume; +/** + * No fragment cycles + * + * The graph of fragment spreads must not form any cycles including spreading itself. + * Otherwise an operation could infinitely spread or infinitely execute on cycles in the underlying data. + * + * See https://spec.graphql.org/draft/#sec-Fragment-spreads-must-not-form-cycles + */ +function NoFragmentCyclesRule(context) { + // Tracks already visited fragments to maintain O(N) and to ensure that cycles + // are not redundantly reported. + const visitedFrags = Object.create(null); // Array of AST nodes used to produce meaningful errors - try { - if (type === 'text') { - resolve(toUSVString(Buffer.concat(body))); - } else if (type === 'json') { - resolve(JSON.parse(Buffer.concat(body))); - } else if (type === 'arrayBuffer') { - const dst = new Uint8Array(length); - - let pos = 0; - for (const buf of body) { - dst.set(buf, pos); - pos += buf.byteLength; - } + const spreadPath = []; // Position in the spread path - resolve(dst); - } else if (type === 'blob') { - if (!Blob) { - Blob = require('buffer').Blob; - } - resolve(new Blob(body, { type: stream[kContentType] })); - } + const spreadPathIndexByName = Object.create(null); + return { + OperationDefinition: () => false, - consumeFinish(consume); - } catch (err) { - stream.destroy(err); - } - } + FragmentDefinition(node) { + detectCycleRecursive(node); + return false; + }, + }; // This does a straight-forward DFS to find cycles. + // It does not terminate when a cycle was found but continues to explore + // the graph to find all possible cycles. - function consumePush (consume, chunk) { - consume.length += chunk.length; - consume.body.push(chunk); - } + function detectCycleRecursive(fragment) { + if (visitedFrags[fragment.name.value]) { + return; + } - function consumeFinish (consume, err) { - if (consume.body === null) { - return - } + const fragmentName = fragment.name.value; + visitedFrags[fragmentName] = true; + const spreadNodes = context.getFragmentSpreads(fragment.selectionSet); - if (err) { - consume.reject(err); - } else { - consume.resolve(); - } + if (spreadNodes.length === 0) { + return; + } - consume.type = null; - consume.stream = null; - consume.resolve = null; - consume.reject = null; - consume.length = 0; - consume.body = null; - } - return readable; -} + spreadPathIndexByName[fragmentName] = spreadPath.length; -var abortSignal; -var hasRequiredAbortSignal; + for (const spreadNode of spreadNodes) { + const spreadName = spreadNode.name.value; + const cycleIndex = spreadPathIndexByName[spreadName]; + spreadPath.push(spreadNode); -function requireAbortSignal () { - if (hasRequiredAbortSignal) return abortSignal; - hasRequiredAbortSignal = 1; - const { RequestAbortedError } = requireErrors(); + if (cycleIndex === undefined) { + const spreadFragment = context.getFragment(spreadName); - const kListener = Symbol('kListener'); - const kSignal = Symbol('kSignal'); + if (spreadFragment) { + detectCycleRecursive(spreadFragment); + } + } else { + const cyclePath = spreadPath.slice(cycleIndex); + const viaPath = cyclePath + .slice(0, -1) + .map((s) => '"' + s.name.value + '"') + .join(', '); + context.reportError( + new GraphQLError( + `Cannot spread fragment "${spreadName}" within itself` + + (viaPath !== '' ? ` via ${viaPath}.` : '.'), + { + nodes: cyclePath, + }, + ), + ); + } - function abort (self) { - if (self.abort) { - self.abort(); - } else { - self.onError(new RequestAbortedError()); - } - } + spreadPath.pop(); + } - function addSignal (self, signal) { - self[kSignal] = null; - self[kListener] = null; + spreadPathIndexByName[fragmentName] = undefined; + } +} - if (!signal) { - return - } +/** + * No undefined variables + * + * A GraphQL operation is only valid if all variables encountered, both directly + * and via fragment spreads, are defined by that operation. + * + * See https://spec.graphql.org/draft/#sec-All-Variable-Uses-Defined + */ +function NoUndefinedVariablesRule(context) { + let variableNameDefined = Object.create(null); + return { + OperationDefinition: { + enter() { + variableNameDefined = Object.create(null); + }, - if (signal.aborted) { - abort(self); - return - } + leave(operation) { + const usages = context.getRecursiveVariableUsages(operation); - self[kSignal] = signal; - self[kListener] = () => { - abort(self); - }; + for (const { node } of usages) { + const varName = node.name.value; - if ('addEventListener' in self[kSignal]) { - self[kSignal].addEventListener('abort', self[kListener]); - } else { - self[kSignal].addListener('abort', self[kListener]); - } - } + if (variableNameDefined[varName] !== true) { + context.reportError( + new GraphQLError( + operation.name + ? `Variable "$${varName}" is not defined by operation "${operation.name.value}".` + : `Variable "$${varName}" is not defined.`, + { + nodes: [node, operation], + }, + ), + ); + } + } + }, + }, - function removeSignal (self) { - if (!self[kSignal]) { - return - } + VariableDefinition(node) { + variableNameDefined[node.variable.name.value] = true; + }, + }; +} - if ('removeEventListener' in self[kSignal]) { - self[kSignal].removeEventListener('abort', self[kListener]); - } else { - self[kSignal].removeListener('abort', self[kListener]); - } +/** + * No unused fragments + * + * A GraphQL document is only valid if all fragment definitions are spread + * within operations, or spread within other fragments spread within operations. + * + * See https://spec.graphql.org/draft/#sec-Fragments-Must-Be-Used + */ +function NoUnusedFragmentsRule(context) { + const operationDefs = []; + const fragmentDefs = []; + return { + OperationDefinition(node) { + operationDefs.push(node); + return false; + }, - self[kSignal] = null; - self[kListener] = null; - } + FragmentDefinition(node) { + fragmentDefs.push(node); + return false; + }, - abortSignal = { - addSignal, - removeSignal - }; - return abortSignal; -} - -var apiRequest; -var hasRequiredApiRequest; - -function requireApiRequest () { - if (hasRequiredApiRequest) return apiRequest; - hasRequiredApiRequest = 1; - - const Readable = requireReadable(); - const { - InvalidArgumentError, - RequestAbortedError, - ResponseStatusCodeError - } = requireErrors(); - const util = requireUtil$1(); - const { AsyncResource } = require$$3; - const { addSignal, removeSignal } = requireAbortSignal(); - - class RequestHandler extends AsyncResource { - constructor (opts, callback) { - if (!opts || typeof opts !== 'object') { - throw new InvalidArgumentError('invalid opts') - } + Document: { + leave() { + const fragmentNameUsed = Object.create(null); - const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError } = opts; + for (const operation of operationDefs) { + for (const fragment of context.getRecursivelyReferencedFragments( + operation, + )) { + fragmentNameUsed[fragment.name.value] = true; + } + } - try { - if (typeof callback !== 'function') { - throw new InvalidArgumentError('invalid callback') - } + for (const fragmentDef of fragmentDefs) { + const fragName = fragmentDef.name.value; - if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { - throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget') - } + if (fragmentNameUsed[fragName] !== true) { + context.reportError( + new GraphQLError(`Fragment "${fragName}" is never used.`, { + nodes: fragmentDef, + }), + ); + } + } + }, + }, + }; +} - if (method === 'CONNECT') { - throw new InvalidArgumentError('invalid method') - } +/** + * No unused variables + * + * A GraphQL operation is only valid if all variables defined by an operation + * are used, either directly or within a spread fragment. + * + * See https://spec.graphql.org/draft/#sec-All-Variables-Used + */ +function NoUnusedVariablesRule(context) { + let variableDefs = []; + return { + OperationDefinition: { + enter() { + variableDefs = []; + }, - if (onInfo && typeof onInfo !== 'function') { - throw new InvalidArgumentError('invalid onInfo callback') - } + leave(operation) { + const variableNameUsed = Object.create(null); + const usages = context.getRecursiveVariableUsages(operation); - super('UNDICI_REQUEST'); - } catch (err) { - if (util.isStream(body)) { - util.destroy(body.on('error', util.nop), err); - } - throw err - } + for (const { node } of usages) { + variableNameUsed[node.name.value] = true; + } - this.responseHeaders = responseHeaders || null; - this.opaque = opaque || null; - this.callback = callback; - this.res = null; - this.abort = null; - this.body = body; - this.trailers = {}; - this.context = null; - this.onInfo = onInfo || null; - this.throwOnError = throwOnError; - - if (util.isStream(body)) { - body.on('error', (err) => { - this.onError(err); - }); - } + for (const variableDef of variableDefs) { + const variableName = variableDef.variable.name.value; - addSignal(this, signal); - } + if (variableNameUsed[variableName] !== true) { + context.reportError( + new GraphQLError( + operation.name + ? `Variable "$${variableName}" is never used in operation "${operation.name.value}".` + : `Variable "$${variableName}" is never used.`, + { + nodes: variableDef, + }, + ), + ); + } + } + }, + }, - onConnect (abort, context) { - if (!this.callback) { - throw new RequestAbortedError() - } + VariableDefinition(def) { + variableDefs.push(def); + }, + }; +} - this.abort = abort; - this.context = context; - } +/** + * Sort ValueNode. + * + * This function returns a sorted copy of the given ValueNode. + * + * @internal + */ - onHeaders (statusCode, rawHeaders, resume, statusMessage) { - const { callback, opaque, abort, context } = this; +function sortValueNode(valueNode) { + switch (valueNode.kind) { + case Kind.OBJECT: + return { ...valueNode, fields: sortFields(valueNode.fields) }; - if (statusCode < 200) { - if (this.onInfo) { - const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); - this.onInfo({ statusCode, headers }); - } - return - } + case Kind.LIST: + return { ...valueNode, values: valueNode.values.map(sortValueNode) }; - const parsedHeaders = util.parseHeaders(rawHeaders); - const contentType = parsedHeaders['content-type']; - const body = new Readable(resume, abort, contentType); + case Kind.INT: + case Kind.FLOAT: + case Kind.STRING: + case Kind.BOOLEAN: + case Kind.NULL: + case Kind.ENUM: + case Kind.VARIABLE: + return valueNode; + } +} - this.callback = null; - this.res = body; - const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); +function sortFields(fields) { + return fields + .map((fieldNode) => ({ + ...fieldNode, + value: sortValueNode(fieldNode.value), + })) + .sort((fieldA, fieldB) => + naturalCompare(fieldA.name.value, fieldB.name.value), + ); +} - if (callback !== null) { - if (this.throwOnError && statusCode >= 400) { - this.runInAsyncScope(getResolveErrorBodyCallback, null, - { callback, body, contentType, statusCode, statusMessage, headers } - ); - return - } +function reasonMessage(reason) { + if (Array.isArray(reason)) { + return reason + .map( + ([responseName, subReason]) => + `subfields "${responseName}" conflict because ` + + reasonMessage(subReason), + ) + .join(' and '); + } - this.runInAsyncScope(callback, null, null, { - statusCode, - headers, - trailers: this.trailers, - opaque, - body, - context - }); - } - } + return reason; +} +/** + * Overlapping fields can be merged + * + * A selection set is only valid if all fields (including spreading any + * fragments) either correspond to distinct response names or can be merged + * without ambiguity. + * + * See https://spec.graphql.org/draft/#sec-Field-Selection-Merging + */ - onData (chunk) { - const { res } = this; - return res.push(chunk) - } +function OverlappingFieldsCanBeMergedRule(context) { + // A memoization for when two fragments are compared "between" each other for + // conflicts. Two fragments may be compared many times, so memoizing this can + // dramatically improve the performance of this validator. + const comparedFragmentPairs = new PairSet(); // A cache for the "field map" and list of fragment names found in any given + // selection set. Selection sets may be asked for this information multiple + // times, so this improves the performance of this validator. - onComplete (trailers) { - const { res } = this; + const cachedFieldsAndFragmentNames = new Map(); + return { + SelectionSet(selectionSet) { + const conflicts = findConflictsWithinSelectionSet( + context, + cachedFieldsAndFragmentNames, + comparedFragmentPairs, + context.getParentType(), + selectionSet, + ); - removeSignal(this); + for (const [[responseName, reason], fields1, fields2] of conflicts) { + const reasonMsg = reasonMessage(reason); + context.reportError( + new GraphQLError( + `Fields "${responseName}" conflict because ${reasonMsg}. Use different aliases on the fields to fetch both if this was intentional.`, + { + nodes: fields1.concat(fields2), + }, + ), + ); + } + }, + }; +} - util.parseHeaders(trailers, this.trailers); +/** + * Algorithm: + * + * Conflicts occur when two fields exist in a query which will produce the same + * response name, but represent differing values, thus creating a conflict. + * The algorithm below finds all conflicts via making a series of comparisons + * between fields. In order to compare as few fields as possible, this makes + * a series of comparisons "within" sets of fields and "between" sets of fields. + * + * Given any selection set, a collection produces both a set of fields by + * also including all inline fragments, as well as a list of fragments + * referenced by fragment spreads. + * + * A) Each selection set represented in the document first compares "within" its + * collected set of fields, finding any conflicts between every pair of + * overlapping fields. + * Note: This is the *only time* that a the fields "within" a set are compared + * to each other. After this only fields "between" sets are compared. + * + * B) Also, if any fragment is referenced in a selection set, then a + * comparison is made "between" the original set of fields and the + * referenced fragment. + * + * C) Also, if multiple fragments are referenced, then comparisons + * are made "between" each referenced fragment. + * + * D) When comparing "between" a set of fields and a referenced fragment, first + * a comparison is made between each field in the original set of fields and + * each field in the the referenced set of fields. + * + * E) Also, if any fragment is referenced in the referenced selection set, + * then a comparison is made "between" the original set of fields and the + * referenced fragment (recursively referring to step D). + * + * F) When comparing "between" two fragments, first a comparison is made between + * each field in the first referenced set of fields and each field in the the + * second referenced set of fields. + * + * G) Also, any fragments referenced by the first must be compared to the + * second, and any fragments referenced by the second must be compared to the + * first (recursively referring to step F). + * + * H) When comparing two fields, if both have selection sets, then a comparison + * is made "between" both selection sets, first comparing the set of fields in + * the first selection set with the set of fields in the second. + * + * I) Also, if any fragment is referenced in either selection set, then a + * comparison is made "between" the other set of fields and the + * referenced fragment. + * + * J) Also, if two fragments are referenced in both selection sets, then a + * comparison is made "between" the two fragments. + * + */ +// Find all conflicts found "within" a selection set, including those found +// via spreading in fragments. Called when visiting each SelectionSet in the +// GraphQL Document. +function findConflictsWithinSelectionSet( + context, + cachedFieldsAndFragmentNames, + comparedFragmentPairs, + parentType, + selectionSet, +) { + const conflicts = []; + const [fieldMap, fragmentNames] = getFieldsAndFragmentNames( + context, + cachedFieldsAndFragmentNames, + parentType, + selectionSet, + ); // (A) Find find all conflicts "within" the fields of this selection set. + // Note: this is the *only place* `collectConflictsWithin` is called. - res.push(null); - } + collectConflictsWithin( + context, + conflicts, + cachedFieldsAndFragmentNames, + comparedFragmentPairs, + fieldMap, + ); - onError (err) { - const { res, callback, body, opaque } = this; + if (fragmentNames.length !== 0) { + // (B) Then collect conflicts between these fields and those represented by + // each spread fragment name found. + for (let i = 0; i < fragmentNames.length; i++) { + collectConflictsBetweenFieldsAndFragment( + context, + conflicts, + cachedFieldsAndFragmentNames, + comparedFragmentPairs, + false, + fieldMap, + fragmentNames[i], + ); // (C) Then compare this fragment with all other fragments found in this + // selection set to collect conflicts between fragments spread together. + // This compares each item in the list of fragment names to every other + // item in that same list (except for itself). - removeSignal(this); + for (let j = i + 1; j < fragmentNames.length; j++) { + collectConflictsBetweenFragments( + context, + conflicts, + cachedFieldsAndFragmentNames, + comparedFragmentPairs, + false, + fragmentNames[i], + fragmentNames[j], + ); + } + } + } - if (callback) { - // TODO: Does this need queueMicrotask? - this.callback = null; - queueMicrotask(() => { - this.runInAsyncScope(callback, null, err, { opaque }); - }); - } + return conflicts; +} // Collect all conflicts found between a set of fields and a fragment reference +// including via spreading in any nested fragments. - if (res) { - this.res = null; - // Ensure all queued handlers are invoked before destroying res. - queueMicrotask(() => { - util.destroy(res, err); - }); - } +function collectConflictsBetweenFieldsAndFragment( + context, + conflicts, + cachedFieldsAndFragmentNames, + comparedFragmentPairs, + areMutuallyExclusive, + fieldMap, + fragmentName, +) { + const fragment = context.getFragment(fragmentName); - if (body) { - this.body = null; - util.destroy(body, err); - } - } - } + if (!fragment) { + return; + } - async function getResolveErrorBodyCallback ({ callback, body, contentType, statusCode, statusMessage, headers }) { - if (statusCode === 204 || !contentType) { - body.dump(); - process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers)); - return - } + const [fieldMap2, referencedFragmentNames] = + getReferencedFieldsAndFragmentNames( + context, + cachedFieldsAndFragmentNames, + fragment, + ); // Do not compare a fragment's fieldMap to itself. - try { - if (contentType.startsWith('application/json')) { - const payload = await body.json(); - process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers, payload)); - return - } + if (fieldMap === fieldMap2) { + return; + } // (D) First collect any conflicts between the provided collection of fields + // and the collection of fields represented by the given fragment. - if (contentType.startsWith('text/')) { - const payload = await body.text(); - process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers, payload)); - return - } - } catch (err) { - // Process in a fallback if error - } + collectConflictsBetween( + context, + conflicts, + cachedFieldsAndFragmentNames, + comparedFragmentPairs, + areMutuallyExclusive, + fieldMap, + fieldMap2, + ); // (E) Then collect any conflicts between the provided collection of fields + // and any fragment names found in the given fragment. - body.dump(); - process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers)); - } + for (const referencedFragmentName of referencedFragmentNames) { + // Memoize so two fragments are not compared for conflicts more than once. + if ( + comparedFragmentPairs.has( + referencedFragmentName, + fragmentName, + areMutuallyExclusive, + ) + ) { + continue; + } - function request (opts, callback) { - if (callback === undefined) { - return new Promise((resolve, reject) => { - request.call(this, opts, (err, data) => { - return err ? reject(err) : resolve(data) - }); - }) - } + comparedFragmentPairs.add( + referencedFragmentName, + fragmentName, + areMutuallyExclusive, + ); + collectConflictsBetweenFieldsAndFragment( + context, + conflicts, + cachedFieldsAndFragmentNames, + comparedFragmentPairs, + areMutuallyExclusive, + fieldMap, + referencedFragmentName, + ); + } +} // Collect all conflicts found between two fragments, including via spreading in +// any nested fragments. - try { - this.dispatch(opts, new RequestHandler(opts, callback)); - } catch (err) { - if (typeof callback !== 'function') { - throw err - } - const opaque = opts && opts.opaque; - queueMicrotask(() => callback(err, { opaque })); - } - } +function collectConflictsBetweenFragments( + context, + conflicts, + cachedFieldsAndFragmentNames, + comparedFragmentPairs, + areMutuallyExclusive, + fragmentName1, + fragmentName2, +) { + // No need to compare a fragment to itself. + if (fragmentName1 === fragmentName2) { + return; + } // Memoize so two fragments are not compared for conflicts more than once. - apiRequest = request; - return apiRequest; -} + if ( + comparedFragmentPairs.has( + fragmentName1, + fragmentName2, + areMutuallyExclusive, + ) + ) { + return; + } -var apiStream; -var hasRequiredApiStream; + comparedFragmentPairs.add(fragmentName1, fragmentName2, areMutuallyExclusive); + const fragment1 = context.getFragment(fragmentName1); + const fragment2 = context.getFragment(fragmentName2); -function requireApiStream () { - if (hasRequiredApiStream) return apiStream; - hasRequiredApiStream = 1; + if (!fragment1 || !fragment2) { + return; + } - const { finished } = Stream$2; - const { - InvalidArgumentError, - InvalidReturnValueError, - RequestAbortedError - } = requireErrors(); - const util = requireUtil$1(); - const { AsyncResource } = require$$3; - const { addSignal, removeSignal } = requireAbortSignal(); + const [fieldMap1, referencedFragmentNames1] = + getReferencedFieldsAndFragmentNames( + context, + cachedFieldsAndFragmentNames, + fragment1, + ); + const [fieldMap2, referencedFragmentNames2] = + getReferencedFieldsAndFragmentNames( + context, + cachedFieldsAndFragmentNames, + fragment2, + ); // (F) First, collect all conflicts between these two collections of fields + // (not including any nested fragments). - class StreamHandler extends AsyncResource { - constructor (opts, factory, callback) { - if (!opts || typeof opts !== 'object') { - throw new InvalidArgumentError('invalid opts') - } + collectConflictsBetween( + context, + conflicts, + cachedFieldsAndFragmentNames, + comparedFragmentPairs, + areMutuallyExclusive, + fieldMap1, + fieldMap2, + ); // (G) Then collect conflicts between the first fragment and any nested + // fragments spread in the second fragment. - const { signal, method, opaque, body, onInfo, responseHeaders } = opts; + for (const referencedFragmentName2 of referencedFragmentNames2) { + collectConflictsBetweenFragments( + context, + conflicts, + cachedFieldsAndFragmentNames, + comparedFragmentPairs, + areMutuallyExclusive, + fragmentName1, + referencedFragmentName2, + ); + } // (G) Then collect conflicts between the second fragment and any nested + // fragments spread in the first fragment. - try { - if (typeof callback !== 'function') { - throw new InvalidArgumentError('invalid callback') - } + for (const referencedFragmentName1 of referencedFragmentNames1) { + collectConflictsBetweenFragments( + context, + conflicts, + cachedFieldsAndFragmentNames, + comparedFragmentPairs, + areMutuallyExclusive, + referencedFragmentName1, + fragmentName2, + ); + } +} // Find all conflicts found between two selection sets, including those found +// via spreading in fragments. Called when determining if conflicts exist +// between the sub-fields of two overlapping fields. - if (typeof factory !== 'function') { - throw new InvalidArgumentError('invalid factory') - } +function findConflictsBetweenSubSelectionSets( + context, + cachedFieldsAndFragmentNames, + comparedFragmentPairs, + areMutuallyExclusive, + parentType1, + selectionSet1, + parentType2, + selectionSet2, +) { + const conflicts = []; + const [fieldMap1, fragmentNames1] = getFieldsAndFragmentNames( + context, + cachedFieldsAndFragmentNames, + parentType1, + selectionSet1, + ); + const [fieldMap2, fragmentNames2] = getFieldsAndFragmentNames( + context, + cachedFieldsAndFragmentNames, + parentType2, + selectionSet2, + ); // (H) First, collect all conflicts between these two collections of field. - if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { - throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget') - } + collectConflictsBetween( + context, + conflicts, + cachedFieldsAndFragmentNames, + comparedFragmentPairs, + areMutuallyExclusive, + fieldMap1, + fieldMap2, + ); // (I) Then collect conflicts between the first collection of fields and + // those referenced by each fragment name associated with the second. - if (method === 'CONNECT') { - throw new InvalidArgumentError('invalid method') - } + for (const fragmentName2 of fragmentNames2) { + collectConflictsBetweenFieldsAndFragment( + context, + conflicts, + cachedFieldsAndFragmentNames, + comparedFragmentPairs, + areMutuallyExclusive, + fieldMap1, + fragmentName2, + ); + } // (I) Then collect conflicts between the second collection of fields and + // those referenced by each fragment name associated with the first. - if (onInfo && typeof onInfo !== 'function') { - throw new InvalidArgumentError('invalid onInfo callback') - } + for (const fragmentName1 of fragmentNames1) { + collectConflictsBetweenFieldsAndFragment( + context, + conflicts, + cachedFieldsAndFragmentNames, + comparedFragmentPairs, + areMutuallyExclusive, + fieldMap2, + fragmentName1, + ); + } // (J) Also collect conflicts between any fragment names by the first and + // fragment names by the second. This compares each item in the first set of + // names to each item in the second set of names. - super('UNDICI_STREAM'); - } catch (err) { - if (util.isStream(body)) { - util.destroy(body.on('error', util.nop), err); - } - throw err - } + for (const fragmentName1 of fragmentNames1) { + for (const fragmentName2 of fragmentNames2) { + collectConflictsBetweenFragments( + context, + conflicts, + cachedFieldsAndFragmentNames, + comparedFragmentPairs, + areMutuallyExclusive, + fragmentName1, + fragmentName2, + ); + } + } - this.responseHeaders = responseHeaders || null; - this.opaque = opaque || null; - this.factory = factory; - this.callback = callback; - this.res = null; - this.abort = null; - this.context = null; - this.trailers = null; - this.body = body; - this.onInfo = onInfo || null; - - if (util.isStream(body)) { - body.on('error', (err) => { - this.onError(err); - }); - } + return conflicts; +} // Collect all Conflicts "within" one collection of fields. - addSignal(this, signal); - } +function collectConflictsWithin( + context, + conflicts, + cachedFieldsAndFragmentNames, + comparedFragmentPairs, + fieldMap, +) { + // A field map is a keyed collection, where each key represents a response + // name and the value at that key is a list of all fields which provide that + // response name. For every response name, if there are multiple fields, they + // must be compared to find a potential conflict. + for (const [responseName, fields] of Object.entries(fieldMap)) { + // This compares every field in the list to every other field in this list + // (except to itself). If the list only has one item, nothing needs to + // be compared. + if (fields.length > 1) { + for (let i = 0; i < fields.length; i++) { + for (let j = i + 1; j < fields.length; j++) { + const conflict = findConflict( + context, + cachedFieldsAndFragmentNames, + comparedFragmentPairs, + false, // within one collection is never mutually exclusive + responseName, + fields[i], + fields[j], + ); - onConnect (abort, context) { - if (!this.callback) { - throw new RequestAbortedError() - } + if (conflict) { + conflicts.push(conflict); + } + } + } + } + } +} // Collect all Conflicts between two collections of fields. This is similar to, +// but different from the `collectConflictsWithin` function above. This check +// assumes that `collectConflictsWithin` has already been called on each +// provided collection of fields. This is true because this validator traverses +// each individual selection set. - this.abort = abort; - this.context = context; - } +function collectConflictsBetween( + context, + conflicts, + cachedFieldsAndFragmentNames, + comparedFragmentPairs, + parentFieldsAreMutuallyExclusive, + fieldMap1, + fieldMap2, +) { + // A field map is a keyed collection, where each key represents a response + // name and the value at that key is a list of all fields which provide that + // response name. For any response name which appears in both provided field + // maps, each field from the first field map must be compared to every field + // in the second field map to find potential conflicts. + for (const [responseName, fields1] of Object.entries(fieldMap1)) { + const fields2 = fieldMap2[responseName]; - onHeaders (statusCode, rawHeaders, resume) { - const { factory, opaque, context } = this; + if (fields2) { + for (const field1 of fields1) { + for (const field2 of fields2) { + const conflict = findConflict( + context, + cachedFieldsAndFragmentNames, + comparedFragmentPairs, + parentFieldsAreMutuallyExclusive, + responseName, + field1, + field2, + ); - if (statusCode < 200) { - if (this.onInfo) { - const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); - this.onInfo({ statusCode, headers }); - } - return - } + if (conflict) { + conflicts.push(conflict); + } + } + } + } + } +} // Determines if there is a conflict between two particular fields, including +// comparing their sub-fields. - this.factory = null; - const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); - const res = this.runInAsyncScope(factory, null, { - statusCode, - headers, - opaque, - context - }); +function findConflict( + context, + cachedFieldsAndFragmentNames, + comparedFragmentPairs, + parentFieldsAreMutuallyExclusive, + responseName, + field1, + field2, +) { + const [parentType1, node1, def1] = field1; + const [parentType2, node2, def2] = field2; // If it is known that two fields could not possibly apply at the same + // time, due to the parent types, then it is safe to permit them to diverge + // in aliased field or arguments used as they will not present any ambiguity + // by differing. + // It is known that two parent types could never overlap if they are + // different Object types. Interface or Union types might overlap - if not + // in the current state of the schema, then perhaps in some future version, + // thus may not safely diverge. - if ( - !res || - typeof res.write !== 'function' || - typeof res.end !== 'function' || - typeof res.on !== 'function' - ) { - throw new InvalidReturnValueError('expected Writable') - } + const areMutuallyExclusive = + parentFieldsAreMutuallyExclusive || + (parentType1 !== parentType2 && + isObjectType(parentType1) && + isObjectType(parentType2)); - res.on('drain', resume); - // TODO: Avoid finished. It registers an unecessary amount of listeners. - finished(res, { readable: false }, (err) => { - const { callback, res, opaque, trailers, abort } = this; + if (!areMutuallyExclusive) { + // Two aliases must refer to the same field. + const name1 = node1.name.value; + const name2 = node2.name.value; - this.res = null; - if (err || !res.readable) { - util.destroy(res, err); - } + if (name1 !== name2) { + return [ + [responseName, `"${name1}" and "${name2}" are different fields`], + [node1], + [node2], + ]; + } // Two field calls must have the same arguments. - this.callback = null; - this.runInAsyncScope(callback, null, err || null, { opaque, trailers }); + if (stringifyArguments(node1) !== stringifyArguments(node2)) { + return [ + [responseName, 'they have differing arguments'], + [node1], + [node2], + ]; + } + } // The return type for each field. - if (err) { - abort(); - } - }); + const type1 = def1 === null || def1 === void 0 ? void 0 : def1.type; + const type2 = def2 === null || def2 === void 0 ? void 0 : def2.type; - this.res = res; + if (type1 && type2 && doTypesConflict(type1, type2)) { + return [ + [ + responseName, + `they return conflicting types "${inspect$1(type1)}" and "${inspect$1( + type2, + )}"`, + ], + [node1], + [node2], + ]; + } // Collect and compare sub-fields. Use the same "visited fragment names" list + // for both collections so fields in a fragment reference are never + // compared to themselves. - const needDrain = res.writableNeedDrain !== undefined - ? res.writableNeedDrain - : res._writableState && res._writableState.needDrain; + const selectionSet1 = node1.selectionSet; + const selectionSet2 = node2.selectionSet; - return needDrain !== true - } + if (selectionSet1 && selectionSet2) { + const conflicts = findConflictsBetweenSubSelectionSets( + context, + cachedFieldsAndFragmentNames, + comparedFragmentPairs, + areMutuallyExclusive, + getNamedType(type1), + selectionSet1, + getNamedType(type2), + selectionSet2, + ); + return subfieldConflicts(conflicts, responseName, node1, node2); + } +} - onData (chunk) { - const { res } = this; +function stringifyArguments(fieldNode) { + var _fieldNode$arguments; - return res.write(chunk) - } + // FIXME https://github.com/graphql/graphql-js/issues/2203 + const args = + /* c8 ignore next */ + (_fieldNode$arguments = fieldNode.arguments) !== null && + _fieldNode$arguments !== void 0 + ? _fieldNode$arguments + : []; + const inputObjectWithArgs = { + kind: Kind.OBJECT, + fields: args.map((argNode) => ({ + kind: Kind.OBJECT_FIELD, + name: argNode.name, + value: argNode.value, + })), + }; + return print(sortValueNode(inputObjectWithArgs)); +} // Two types conflict if both types could not apply to a value simultaneously. +// Composite types are ignored as their individual field types will be compared +// later recursively. However List and Non-Null types must match. - onComplete (trailers) { - const { res } = this; +function doTypesConflict(type1, type2) { + if (isListType(type1)) { + return isListType(type2) + ? doTypesConflict(type1.ofType, type2.ofType) + : true; + } - removeSignal(this); + if (isListType(type2)) { + return true; + } - this.trailers = util.parseHeaders(trailers); + if (isNonNullType(type1)) { + return isNonNullType(type2) + ? doTypesConflict(type1.ofType, type2.ofType) + : true; + } - res.end(); - } + if (isNonNullType(type2)) { + return true; + } - onError (err) { - const { res, callback, opaque, body } = this; + if (isLeafType(type1) || isLeafType(type2)) { + return type1 !== type2; + } - removeSignal(this); + return false; +} // Given a selection set, return the collection of fields (a mapping of response +// name to field nodes and definitions) as well as a list of fragment names +// referenced via fragment spreads. - this.factory = null; +function getFieldsAndFragmentNames( + context, + cachedFieldsAndFragmentNames, + parentType, + selectionSet, +) { + const cached = cachedFieldsAndFragmentNames.get(selectionSet); - if (res) { - this.res = null; - util.destroy(res, err); - } else if (callback) { - this.callback = null; - queueMicrotask(() => { - this.runInAsyncScope(callback, null, err, { opaque }); - }); - } + if (cached) { + return cached; + } - if (body) { - this.body = null; - util.destroy(body, err); - } - } - } + const nodeAndDefs = Object.create(null); + const fragmentNames = Object.create(null); - function stream (opts, factory, callback) { - if (callback === undefined) { - return new Promise((resolve, reject) => { - stream.call(this, opts, factory, (err, data) => { - return err ? reject(err) : resolve(data) - }); - }) - } + _collectFieldsAndFragmentNames( + context, + parentType, + selectionSet, + nodeAndDefs, + fragmentNames, + ); - try { - this.dispatch(opts, new StreamHandler(opts, factory, callback)); - } catch (err) { - if (typeof callback !== 'function') { - throw err - } - const opaque = opts && opts.opaque; - queueMicrotask(() => callback(err, { opaque })); - } - } + const result = [nodeAndDefs, Object.keys(fragmentNames)]; + cachedFieldsAndFragmentNames.set(selectionSet, result); + return result; +} // Given a reference to a fragment, return the represented collection of fields +// as well as a list of nested fragment names referenced via fragment spreads. - apiStream = stream; - return apiStream; -} +function getReferencedFieldsAndFragmentNames( + context, + cachedFieldsAndFragmentNames, + fragment, +) { + // Short-circuit building a type from the node if possible. + const cached = cachedFieldsAndFragmentNames.get(fragment.selectionSet); -var apiPipeline; -var hasRequiredApiPipeline; + if (cached) { + return cached; + } -function requireApiPipeline () { - if (hasRequiredApiPipeline) return apiPipeline; - hasRequiredApiPipeline = 1; + const fragmentType = typeFromAST(context.getSchema(), fragment.typeCondition); + return getFieldsAndFragmentNames( + context, + cachedFieldsAndFragmentNames, + fragmentType, + fragment.selectionSet, + ); +} - const { - Readable, - Duplex, - PassThrough - } = Stream$2; - const { - InvalidArgumentError, - InvalidReturnValueError, - RequestAbortedError - } = requireErrors(); - const util = requireUtil$1(); - const { AsyncResource } = require$$3; - const { addSignal, removeSignal } = requireAbortSignal(); - const assert = require$$0$3; +function _collectFieldsAndFragmentNames( + context, + parentType, + selectionSet, + nodeAndDefs, + fragmentNames, +) { + for (const selection of selectionSet.selections) { + switch (selection.kind) { + case Kind.FIELD: { + const fieldName = selection.name.value; + let fieldDef; - const kResume = Symbol('resume'); + if (isObjectType(parentType) || isInterfaceType(parentType)) { + fieldDef = parentType.getFields()[fieldName]; + } - class PipelineRequest extends Readable { - constructor () { - super({ autoDestroy: true }); + const responseName = selection.alias + ? selection.alias.value + : fieldName; - this[kResume] = null; - } + if (!nodeAndDefs[responseName]) { + nodeAndDefs[responseName] = []; + } - _read () { - const { [kResume]: resume } = this; + nodeAndDefs[responseName].push([parentType, selection, fieldDef]); + break; + } - if (resume) { - this[kResume] = null; - resume(); - } - } + case Kind.FRAGMENT_SPREAD: + fragmentNames[selection.name.value] = true; + break; - _destroy (err, callback) { - this._read(); + case Kind.INLINE_FRAGMENT: { + const typeCondition = selection.typeCondition; + const inlineFragmentType = typeCondition + ? typeFromAST(context.getSchema(), typeCondition) + : parentType; - callback(err); - } - } + _collectFieldsAndFragmentNames( + context, + inlineFragmentType, + selection.selectionSet, + nodeAndDefs, + fragmentNames, + ); - class PipelineResponse extends Readable { - constructor (resume) { - super({ autoDestroy: true }); - this[kResume] = resume; - } + break; + } + } + } +} // Given a series of Conflicts which occurred between two sub-fields, generate +// a single Conflict. - _read () { - this[kResume](); - } +function subfieldConflicts(conflicts, responseName, node1, node2) { + if (conflicts.length > 0) { + return [ + [responseName, conflicts.map(([reason]) => reason)], + [node1, ...conflicts.map(([, fields1]) => fields1).flat()], + [node2, ...conflicts.map(([, , fields2]) => fields2).flat()], + ]; + } +} +/** + * A way to keep track of pairs of things when the ordering of the pair does not matter. + */ - _destroy (err, callback) { - if (!err && !this._readableState.endEmitted) { - err = new RequestAbortedError(); - } +class PairSet { + constructor() { + this._data = new Map(); + } - callback(err); - } - } + has(a, b, areMutuallyExclusive) { + var _this$_data$get; - class PipelineHandler extends AsyncResource { - constructor (opts, handler) { - if (!opts || typeof opts !== 'object') { - throw new InvalidArgumentError('invalid opts') - } + const [key1, key2] = a < b ? [a, b] : [b, a]; + const result = + (_this$_data$get = this._data.get(key1)) === null || + _this$_data$get === void 0 + ? void 0 + : _this$_data$get.get(key2); - if (typeof handler !== 'function') { - throw new InvalidArgumentError('invalid handler') - } + if (result === undefined) { + return false; + } // areMutuallyExclusive being false is a superset of being true, hence if + // we want to know if this PairSet "has" these two with no exclusivity, + // we have to ensure it was added as such. - const { signal, method, opaque, onInfo, responseHeaders } = opts; + return areMutuallyExclusive ? true : areMutuallyExclusive === result; + } - if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { - throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget') - } + add(a, b, areMutuallyExclusive) { + const [key1, key2] = a < b ? [a, b] : [b, a]; - if (method === 'CONNECT') { - throw new InvalidArgumentError('invalid method') - } + const map = this._data.get(key1); - if (onInfo && typeof onInfo !== 'function') { - throw new InvalidArgumentError('invalid onInfo callback') - } + if (map === undefined) { + this._data.set(key1, new Map([[key2, areMutuallyExclusive]])); + } else { + map.set(key2, areMutuallyExclusive); + } + } +} - super('UNDICI_PIPELINE'); +/** + * Possible fragment spread + * + * A fragment spread is only valid if the type condition could ever possibly + * be true: if there is a non-empty intersection of the possible parent types, + * and possible types which pass the type condition. + */ +function PossibleFragmentSpreadsRule(context) { + return { + InlineFragment(node) { + const fragType = context.getType(); + const parentType = context.getParentType(); - this.opaque = opaque || null; - this.responseHeaders = responseHeaders || null; - this.handler = handler; - this.abort = null; - this.context = null; - this.onInfo = onInfo || null; + if ( + isCompositeType(fragType) && + isCompositeType(parentType) && + !doTypesOverlap(context.getSchema(), fragType, parentType) + ) { + const parentTypeStr = inspect$1(parentType); + const fragTypeStr = inspect$1(fragType); + context.reportError( + new GraphQLError( + `Fragment cannot be spread here as objects of type "${parentTypeStr}" can never be of type "${fragTypeStr}".`, + { + nodes: node, + }, + ), + ); + } + }, - this.req = new PipelineRequest().on('error', util.nop); + FragmentSpread(node) { + const fragName = node.name.value; + const fragType = getFragmentType(context, fragName); + const parentType = context.getParentType(); - this.ret = new Duplex({ - readableObjectMode: opts.objectMode, - autoDestroy: true, - read: () => { - const { body } = this; + if ( + fragType && + parentType && + !doTypesOverlap(context.getSchema(), fragType, parentType) + ) { + const parentTypeStr = inspect$1(parentType); + const fragTypeStr = inspect$1(fragType); + context.reportError( + new GraphQLError( + `Fragment "${fragName}" cannot be spread here as objects of type "${parentTypeStr}" can never be of type "${fragTypeStr}".`, + { + nodes: node, + }, + ), + ); + } + }, + }; +} - if (body && body.resume) { - body.resume(); - } - }, - write: (chunk, encoding, callback) => { - const { req } = this; +function getFragmentType(context, name) { + const frag = context.getFragment(name); - if (req.push(chunk, encoding) || req._readableState.destroyed) { - callback(); - } else { - req[kResume] = callback; - } - }, - destroy: (err, callback) => { - const { body, req, res, ret, abort } = this; + if (frag) { + const type = typeFromAST(context.getSchema(), frag.typeCondition); - if (!err && !ret._readableState.endEmitted) { - err = new RequestAbortedError(); - } + if (isCompositeType(type)) { + return type; + } + } +} - if (abort && err) { - abort(); - } +/** + * Possible type extension + * + * A type extension is only valid if the type is defined and has the same kind. + */ +function PossibleTypeExtensionsRule(context) { + const schema = context.getSchema(); + const definedTypes = Object.create(null); - util.destroy(body, err); - util.destroy(req, err); - util.destroy(res, err); + for (const def of context.getDocument().definitions) { + if (isTypeDefinitionNode(def)) { + definedTypes[def.name.value] = def; + } + } - removeSignal(this); + return { + ScalarTypeExtension: checkExtension, + ObjectTypeExtension: checkExtension, + InterfaceTypeExtension: checkExtension, + UnionTypeExtension: checkExtension, + EnumTypeExtension: checkExtension, + InputObjectTypeExtension: checkExtension, + }; - callback(err); - } - }).on('prefinish', () => { - const { req } = this; + function checkExtension(node) { + const typeName = node.name.value; + const defNode = definedTypes[typeName]; + const existingType = + schema === null || schema === void 0 ? void 0 : schema.getType(typeName); + let expectedKind; - // Node < 15 does not call _final in same tick. - req.push(null); - }); + if (defNode) { + expectedKind = defKindToExtKind[defNode.kind]; + } else if (existingType) { + expectedKind = typeToExtKind(existingType); + } - this.res = null; + if (expectedKind) { + if (expectedKind !== node.kind) { + const kindStr = extensionKindToTypeName(node.kind); + context.reportError( + new GraphQLError(`Cannot extend non-${kindStr} type "${typeName}".`, { + nodes: defNode ? [defNode, node] : node, + }), + ); + } + } else { + const allTypeNames = Object.keys({ + ...definedTypes, + ...(schema === null || schema === void 0 + ? void 0 + : schema.getTypeMap()), + }); + const suggestedTypes = suggestionList(typeName, allTypeNames); + context.reportError( + new GraphQLError( + `Cannot extend type "${typeName}" because it is not defined.` + + didYouMean(suggestedTypes), + { + nodes: node.name, + }, + ), + ); + } + } +} +const defKindToExtKind = { + [Kind.SCALAR_TYPE_DEFINITION]: Kind.SCALAR_TYPE_EXTENSION, + [Kind.OBJECT_TYPE_DEFINITION]: Kind.OBJECT_TYPE_EXTENSION, + [Kind.INTERFACE_TYPE_DEFINITION]: Kind.INTERFACE_TYPE_EXTENSION, + [Kind.UNION_TYPE_DEFINITION]: Kind.UNION_TYPE_EXTENSION, + [Kind.ENUM_TYPE_DEFINITION]: Kind.ENUM_TYPE_EXTENSION, + [Kind.INPUT_OBJECT_TYPE_DEFINITION]: Kind.INPUT_OBJECT_TYPE_EXTENSION, +}; - addSignal(this, signal); - } +function typeToExtKind(type) { + if (isScalarType(type)) { + return Kind.SCALAR_TYPE_EXTENSION; + } - onConnect (abort, context) { - const { ret, res } = this; + if (isObjectType(type)) { + return Kind.OBJECT_TYPE_EXTENSION; + } - assert(!res, 'pipeline cannot be retried'); + if (isInterfaceType(type)) { + return Kind.INTERFACE_TYPE_EXTENSION; + } - if (ret.destroyed) { - throw new RequestAbortedError() - } + if (isUnionType(type)) { + return Kind.UNION_TYPE_EXTENSION; + } - this.abort = abort; - this.context = context; - } + if (isEnumType(type)) { + return Kind.ENUM_TYPE_EXTENSION; + } - onHeaders (statusCode, rawHeaders, resume) { - const { opaque, handler, context } = this; + if (isInputObjectType(type)) { + return Kind.INPUT_OBJECT_TYPE_EXTENSION; + } + /* c8 ignore next 3 */ + // Not reachable. All possible types have been considered - if (statusCode < 200) { - if (this.onInfo) { - const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); - this.onInfo({ statusCode, headers }); - } - return - } + invariant$1(false, 'Unexpected type: ' + inspect$1(type)); +} - this.res = new PipelineResponse(resume); - - let body; - try { - this.handler = null; - const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); - body = this.runInAsyncScope(handler, null, { - statusCode, - headers, - opaque, - body: this.res, - context - }); - } catch (err) { - this.res.on('error', util.nop); - throw err - } +function extensionKindToTypeName(kind) { + switch (kind) { + case Kind.SCALAR_TYPE_EXTENSION: + return 'scalar'; - if (!body || typeof body.on !== 'function') { - throw new InvalidReturnValueError('expected Readable') - } + case Kind.OBJECT_TYPE_EXTENSION: + return 'object'; - body - .on('data', (chunk) => { - const { ret, body } = this; + case Kind.INTERFACE_TYPE_EXTENSION: + return 'interface'; - if (!ret.push(chunk) && body.pause) { - body.pause(); - } - }) - .on('error', (err) => { - const { ret } = this; - - util.destroy(ret, err); - }) - .on('end', () => { - const { ret } = this; - - ret.push(null); - }) - .on('close', () => { - const { ret } = this; - - if (!ret._readableState.ended) { - util.destroy(ret, new RequestAbortedError()); - } - }); + case Kind.UNION_TYPE_EXTENSION: + return 'union'; - this.body = body; - } + case Kind.ENUM_TYPE_EXTENSION: + return 'enum'; - onData (chunk) { - const { res } = this; - return res.push(chunk) - } + case Kind.INPUT_OBJECT_TYPE_EXTENSION: + return 'input object'; + // Not reachable. All possible types have been considered - onComplete (trailers) { - const { res } = this; - res.push(null); - } + /* c8 ignore next */ - onError (err) { - const { ret } = this; - this.handler = null; - util.destroy(ret, err); - } - } + default: + invariant$1(false, 'Unexpected kind: ' + inspect$1(kind)); + } +} - function pipeline (opts, handler) { - try { - const pipelineHandler = new PipelineHandler(opts, handler); - this.dispatch({ ...opts, body: pipelineHandler.req }, pipelineHandler); - return pipelineHandler.ret - } catch (err) { - return new PassThrough().destroy(err) - } - } +/** + * Provided required arguments + * + * A field or directive is only valid if all required (non-null without a + * default value) field arguments have been provided. + */ +function ProvidedRequiredArgumentsRule(context) { + return { + // eslint-disable-next-line new-cap + ...ProvidedRequiredArgumentsOnDirectivesRule(context), + Field: { + // Validate on leave to allow for deeper errors to appear first. + leave(fieldNode) { + var _fieldNode$arguments; - apiPipeline = pipeline; - return apiPipeline; -} + const fieldDef = context.getFieldDef(); -var apiUpgrade; -var hasRequiredApiUpgrade; + if (!fieldDef) { + return false; + } -function requireApiUpgrade () { - if (hasRequiredApiUpgrade) return apiUpgrade; - hasRequiredApiUpgrade = 1; + const providedArgs = new Set( // FIXME: https://github.com/graphql/graphql-js/issues/2203 + /* c8 ignore next */ + (_fieldNode$arguments = fieldNode.arguments) === null || + _fieldNode$arguments === void 0 + ? void 0 + : _fieldNode$arguments.map((arg) => arg.name.value), + ); - const { InvalidArgumentError, RequestAbortedError, SocketError } = requireErrors(); - const { AsyncResource } = require$$3; - const util = requireUtil$1(); - const { addSignal, removeSignal } = requireAbortSignal(); - const assert = require$$0$3; + for (const argDef of fieldDef.args) { + if (!providedArgs.has(argDef.name) && isRequiredArgument(argDef)) { + const argTypeStr = inspect$1(argDef.type); + context.reportError( + new GraphQLError( + `Field "${fieldDef.name}" argument "${argDef.name}" of type "${argTypeStr}" is required, but it was not provided.`, + { + nodes: fieldNode, + }, + ), + ); + } + } + }, + }, + }; +} +/** + * @internal + */ - class UpgradeHandler extends AsyncResource { - constructor (opts, callback) { - if (!opts || typeof opts !== 'object') { - throw new InvalidArgumentError('invalid opts') - } +function ProvidedRequiredArgumentsOnDirectivesRule(context) { + var _schema$getDirectives; - if (typeof callback !== 'function') { - throw new InvalidArgumentError('invalid callback') - } + const requiredArgsMap = Object.create(null); + const schema = context.getSchema(); + const definedDirectives = + (_schema$getDirectives = + schema === null || schema === void 0 + ? void 0 + : schema.getDirectives()) !== null && _schema$getDirectives !== void 0 + ? _schema$getDirectives + : specifiedDirectives; - const { signal, opaque, responseHeaders } = opts; + for (const directive of definedDirectives) { + requiredArgsMap[directive.name] = keyMap( + directive.args.filter(isRequiredArgument), + (arg) => arg.name, + ); + } - if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { - throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget') - } + const astDefinitions = context.getDocument().definitions; - super('UNDICI_UPGRADE'); + for (const def of astDefinitions) { + if (def.kind === Kind.DIRECTIVE_DEFINITION) { + var _def$arguments; - this.responseHeaders = responseHeaders || null; - this.opaque = opaque || null; - this.callback = callback; - this.abort = null; - this.context = null; + // FIXME: https://github.com/graphql/graphql-js/issues/2203 - addSignal(this, signal); - } + /* c8 ignore next */ + const argNodes = + (_def$arguments = def.arguments) !== null && _def$arguments !== void 0 + ? _def$arguments + : []; + requiredArgsMap[def.name.value] = keyMap( + argNodes.filter(isRequiredArgumentNode), + (arg) => arg.name.value, + ); + } + } - onConnect (abort, context) { - if (!this.callback) { - throw new RequestAbortedError() - } + return { + Directive: { + // Validate on leave to allow for deeper errors to appear first. + leave(directiveNode) { + const directiveName = directiveNode.name.value; + const requiredArgs = requiredArgsMap[directiveName]; - this.abort = abort; - this.context = null; - } + if (requiredArgs) { + var _directiveNode$argume; - onHeaders () { - throw new SocketError('bad upgrade', null) - } + // FIXME: https://github.com/graphql/graphql-js/issues/2203 - onUpgrade (statusCode, rawHeaders, socket) { - const { callback, opaque, context } = this; + /* c8 ignore next */ + const argNodes = + (_directiveNode$argume = directiveNode.arguments) !== null && + _directiveNode$argume !== void 0 + ? _directiveNode$argume + : []; + const argNodeMap = new Set(argNodes.map((arg) => arg.name.value)); - assert.strictEqual(statusCode, 101); + for (const [argName, argDef] of Object.entries(requiredArgs)) { + if (!argNodeMap.has(argName)) { + const argType = isType(argDef.type) + ? inspect$1(argDef.type) + : print(argDef.type); + context.reportError( + new GraphQLError( + `Directive "@${directiveName}" argument "${argName}" of type "${argType}" is required, but it was not provided.`, + { + nodes: directiveNode, + }, + ), + ); + } + } + } + }, + }, + }; +} - removeSignal(this); +function isRequiredArgumentNode(arg) { + return arg.type.kind === Kind.NON_NULL_TYPE && arg.defaultValue == null; +} - this.callback = null; - const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); - this.runInAsyncScope(callback, null, null, { - headers, - socket, - opaque, - context - }); - } +/** + * Scalar leafs + * + * A GraphQL document is valid only if all leaf fields (fields without + * sub selections) are of scalar or enum types. + */ +function ScalarLeafsRule(context) { + return { + Field(node) { + const type = context.getType(); + const selectionSet = node.selectionSet; - onError (err) { - const { callback, opaque } = this; + if (type) { + if (isLeafType(getNamedType(type))) { + if (selectionSet) { + const fieldName = node.name.value; + const typeStr = inspect$1(type); + context.reportError( + new GraphQLError( + `Field "${fieldName}" must not have a selection since type "${typeStr}" has no subfields.`, + { + nodes: selectionSet, + }, + ), + ); + } + } else if (!selectionSet) { + const fieldName = node.name.value; + const typeStr = inspect$1(type); + context.reportError( + new GraphQLError( + `Field "${fieldName}" of type "${typeStr}" must have a selection of subfields. Did you mean "${fieldName} { ... }"?`, + { + nodes: node, + }, + ), + ); + } + } + }, + }; +} - removeSignal(this); +/** + * Build a string describing the path. + */ +function printPathArray(path) { + return path + .map((key) => + typeof key === 'number' ? '[' + key.toString() + ']' : '.' + key, + ) + .join(''); +} - if (callback) { - this.callback = null; - queueMicrotask(() => { - this.runInAsyncScope(callback, null, err, { opaque }); - }); - } - } - } +/** + * Given a Path and a key, return a new Path containing the new key. + */ +function addPath(prev, key, typename) { + return { + prev, + key, + typename, + }; +} +/** + * Given a Path, return an Array of the path keys. + */ - function upgrade (opts, callback) { - if (callback === undefined) { - return new Promise((resolve, reject) => { - upgrade.call(this, opts, (err, data) => { - return err ? reject(err) : resolve(data) - }); - }) - } +function pathToArray(path) { + const flattened = []; + let curr = path; - try { - const upgradeHandler = new UpgradeHandler(opts, callback); - this.dispatch({ - ...opts, - method: opts.method || 'GET', - upgrade: opts.protocol || 'Websocket' - }, upgradeHandler); - } catch (err) { - if (typeof callback !== 'function') { - throw err - } - const opaque = opts && opts.opaque; - queueMicrotask(() => callback(err, { opaque })); - } - } + while (curr) { + flattened.push(curr.key); + curr = curr.prev; + } - apiUpgrade = upgrade; - return apiUpgrade; + return flattened.reverse(); } -var apiConnect; -var hasRequiredApiConnect; - -function requireApiConnect () { - if (hasRequiredApiConnect) return apiConnect; - hasRequiredApiConnect = 1; +/** + * Coerces a JavaScript value given a GraphQL Input Type. + */ +function coerceInputValue(inputValue, type, onError = defaultOnError) { + return coerceInputValueImpl(inputValue, type, onError, undefined); +} - const { InvalidArgumentError, RequestAbortedError, SocketError } = requireErrors(); - const { AsyncResource } = require$$3; - const util = requireUtil$1(); - const { addSignal, removeSignal } = requireAbortSignal(); +function defaultOnError(path, invalidValue, error) { + let errorPrefix = 'Invalid value ' + inspect$1(invalidValue); - class ConnectHandler extends AsyncResource { - constructor (opts, callback) { - if (!opts || typeof opts !== 'object') { - throw new InvalidArgumentError('invalid opts') - } + if (path.length > 0) { + errorPrefix += ` at "value${printPathArray(path)}"`; + } - if (typeof callback !== 'function') { - throw new InvalidArgumentError('invalid callback') - } + error.message = errorPrefix + ': ' + error.message; + throw error; +} - const { signal, opaque, responseHeaders } = opts; +function coerceInputValueImpl(inputValue, type, onError, path) { + if (isNonNullType(type)) { + if (inputValue != null) { + return coerceInputValueImpl(inputValue, type.ofType, onError, path); + } - if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { - throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget') - } + onError( + pathToArray(path), + inputValue, + new GraphQLError( + `Expected non-nullable type "${inspect$1(type)}" not to be null.`, + ), + ); + return; + } - super('UNDICI_CONNECT'); + if (inputValue == null) { + // Explicitly return the value null. + return null; + } - this.opaque = opaque || null; - this.responseHeaders = responseHeaders || null; - this.callback = callback; - this.abort = null; + if (isListType(type)) { + const itemType = type.ofType; - addSignal(this, signal); - } + if (isIterableObject(inputValue)) { + return Array.from(inputValue, (itemValue, index) => { + const itemPath = addPath(path, index, undefined); + return coerceInputValueImpl(itemValue, itemType, onError, itemPath); + }); + } // Lists accept a non-list value as a list of one. - onConnect (abort, context) { - if (!this.callback) { - throw new RequestAbortedError() - } + return [coerceInputValueImpl(inputValue, itemType, onError, path)]; + } - this.abort = abort; - this.context = context; - } + if (isInputObjectType(type)) { + if (!isObjectLike(inputValue)) { + onError( + pathToArray(path), + inputValue, + new GraphQLError(`Expected type "${type.name}" to be an object.`), + ); + return; + } - onHeaders () { - throw new SocketError('bad connect', null) - } + const coercedValue = {}; + const fieldDefs = type.getFields(); - onUpgrade (statusCode, rawHeaders, socket) { - const { callback, opaque, context } = this; + for (const field of Object.values(fieldDefs)) { + const fieldValue = inputValue[field.name]; - removeSignal(this); + if (fieldValue === undefined) { + if (field.defaultValue !== undefined) { + coercedValue[field.name] = field.defaultValue; + } else if (isNonNullType(field.type)) { + const typeStr = inspect$1(field.type); + onError( + pathToArray(path), + inputValue, + new GraphQLError( + `Field "${field.name}" of required type "${typeStr}" was not provided.`, + ), + ); + } - this.callback = null; - const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); - this.runInAsyncScope(callback, null, null, { - statusCode, - headers, - socket, - opaque, - context - }); - } + continue; + } - onError (err) { - const { callback, opaque } = this; + coercedValue[field.name] = coerceInputValueImpl( + fieldValue, + field.type, + onError, + addPath(path, field.name, type.name), + ); + } // Ensure every provided field is defined. - removeSignal(this); + for (const fieldName of Object.keys(inputValue)) { + if (!fieldDefs[fieldName]) { + const suggestions = suggestionList( + fieldName, + Object.keys(type.getFields()), + ); + onError( + pathToArray(path), + inputValue, + new GraphQLError( + `Field "${fieldName}" is not defined by type "${type.name}".` + + didYouMean(suggestions), + ), + ); + } + } - if (callback) { - this.callback = null; - queueMicrotask(() => { - this.runInAsyncScope(callback, null, err, { opaque }); - }); - } - } - } + return coercedValue; + } - function connect (opts, callback) { - if (callback === undefined) { - return new Promise((resolve, reject) => { - connect.call(this, opts, (err, data) => { - return err ? reject(err) : resolve(data) - }); - }) - } + if (isLeafType(type)) { + let parseResult; // Scalars and Enums determine if a input value is valid via parseValue(), + // which can throw to indicate failure. If it throws, maintain a reference + // to the original error. - try { - const connectHandler = new ConnectHandler(opts, callback); - this.dispatch({ ...opts, method: 'CONNECT' }, connectHandler); - } catch (err) { - if (typeof callback !== 'function') { - throw err - } - const opaque = opts && opts.opaque; - queueMicrotask(() => callback(err, { opaque })); - } - } + try { + parseResult = type.parseValue(inputValue); + } catch (error) { + if (error instanceof GraphQLError) { + onError(pathToArray(path), inputValue, error); + } else { + onError( + pathToArray(path), + inputValue, + new GraphQLError(`Expected type "${type.name}". ` + error.message, { + originalError: error, + }), + ); + } - apiConnect = connect; - return apiConnect; -} + return; + } -var hasRequiredApi; + if (parseResult === undefined) { + onError( + pathToArray(path), + inputValue, + new GraphQLError(`Expected type "${type.name}".`), + ); + } -function requireApi () { - if (hasRequiredApi) return api$1; - hasRequiredApi = 1; + return parseResult; + } + /* c8 ignore next 3 */ + // Not reachable, all possible types have been considered. - api$1.request = requireApiRequest(); - api$1.stream = requireApiStream(); - api$1.pipeline = requireApiPipeline(); - api$1.upgrade = requireApiUpgrade(); - api$1.connect = requireApiConnect(); - return api$1; + invariant$1(false, 'Unexpected input type: ' + inspect$1(type)); } -var mockErrors; -var hasRequiredMockErrors; - -function requireMockErrors () { - if (hasRequiredMockErrors) return mockErrors; - hasRequiredMockErrors = 1; - - const { UndiciError } = requireErrors(); - - class MockNotMatchedError extends UndiciError { - constructor (message) { - super(message); - Error.captureStackTrace(this, MockNotMatchedError); - this.name = 'MockNotMatchedError'; - this.message = message || 'The request does not match any registered mock dispatches'; - this.code = 'UND_MOCK_ERR_MOCK_NOT_MATCHED'; - } - } +/** + * Produces a JavaScript value given a GraphQL Value AST. + * + * A GraphQL type must be provided, which will be used to interpret different + * GraphQL Value literals. + * + * Returns `undefined` when the value could not be validly coerced according to + * the provided type. + * + * | GraphQL Value | JSON Value | + * | -------------------- | ------------- | + * | Input Object | Object | + * | List | Array | + * | Boolean | Boolean | + * | String | String | + * | Int / Float | Number | + * | Enum Value | Unknown | + * | NullValue | null | + * + */ - mockErrors = { - MockNotMatchedError - }; - return mockErrors; -} - -var mockSymbols; -var hasRequiredMockSymbols; - -function requireMockSymbols () { - if (hasRequiredMockSymbols) return mockSymbols; - hasRequiredMockSymbols = 1; - - mockSymbols = { - kAgent: Symbol('agent'), - kOptions: Symbol('options'), - kFactory: Symbol('factory'), - kDispatches: Symbol('dispatches'), - kDispatchKey: Symbol('dispatch key'), - kDefaultHeaders: Symbol('default headers'), - kDefaultTrailers: Symbol('default trailers'), - kContentLength: Symbol('content length'), - kMockAgent: Symbol('mock agent'), - kMockAgentSet: Symbol('mock agent set'), - kMockAgentGet: Symbol('mock agent get'), - kMockDispatch: Symbol('mock dispatch'), - kClose: Symbol('close'), - kOriginalClose: Symbol('original agent close'), - kOrigin: Symbol('origin'), - kIsMockActive: Symbol('is mock active'), - kNetConnect: Symbol('net connect'), - kGetNetConnect: Symbol('get net connect'), - kConnected: Symbol('connected') - }; - return mockSymbols; -} +function valueFromAST(valueNode, type, variables) { + if (!valueNode) { + // When there is no node, then there is also no value. + // Importantly, this is different from returning the value null. + return; + } -var mockUtils; -var hasRequiredMockUtils; + if (valueNode.kind === Kind.VARIABLE) { + const variableName = valueNode.name.value; -function requireMockUtils () { - if (hasRequiredMockUtils) return mockUtils; - hasRequiredMockUtils = 1; + if (variables == null || variables[variableName] === undefined) { + // No valid return value. + return; + } - const { MockNotMatchedError } = requireMockErrors(); - const { - kDispatches, - kMockAgent, - kOriginalDispatch, - kOrigin, - kGetNetConnect - } = requireMockSymbols(); - const { buildURL, nop } = requireUtil$1(); + const variableValue = variables[variableName]; - function matchValue (match, value) { - if (typeof match === 'string') { - return match === value - } - if (match instanceof RegExp) { - return match.test(value) - } - if (typeof match === 'function') { - return match(value) === true - } - return false - } + if (variableValue === null && isNonNullType(type)) { + return; // Invalid: intentionally return no value. + } // Note: This does no further checking that this variable is correct. + // This assumes that this query has been validated and the variable + // usage here is of the correct type. - function lowerCaseEntries (headers) { - return Object.fromEntries( - Object.entries(headers).map(([headerName, headerValue]) => { - return [headerName.toLocaleLowerCase(), headerValue] - }) - ) - } + return variableValue; + } - /** - * @param {import('../../index').Headers|string[]|Record} headers - * @param {string} key - */ - function getHeaderByName (headers, key) { - if (Array.isArray(headers)) { - for (let i = 0; i < headers.length; i += 2) { - if (headers[i].toLocaleLowerCase() === key.toLocaleLowerCase()) { - return headers[i + 1] - } - } + if (isNonNullType(type)) { + if (valueNode.kind === Kind.NULL) { + return; // Invalid: intentionally return no value. + } - return undefined - } else if (typeof headers.get === 'function') { - return headers.get(key) - } else { - return lowerCaseEntries(headers)[key.toLocaleLowerCase()] - } - } + return valueFromAST(valueNode, type.ofType, variables); + } - /** @param {string[]} headers */ - function buildHeadersFromArray (headers) { // fetch HeadersList - const clone = headers.slice(); - const entries = []; - for (let index = 0; index < clone.length; index += 2) { - entries.push([clone[index], clone[index + 1]]); - } - return Object.fromEntries(entries) - } + if (valueNode.kind === Kind.NULL) { + // This is explicitly returning the value null. + return null; + } - function matchHeaders (mockDispatch, headers) { - if (typeof mockDispatch.headers === 'function') { - if (Array.isArray(headers)) { // fetch HeadersList - headers = buildHeadersFromArray(headers); - } - return mockDispatch.headers(headers ? lowerCaseEntries(headers) : {}) - } - if (typeof mockDispatch.headers === 'undefined') { - return true - } - if (typeof headers !== 'object' || typeof mockDispatch.headers !== 'object') { - return false - } + if (isListType(type)) { + const itemType = type.ofType; - for (const [matchHeaderName, matchHeaderValue] of Object.entries(mockDispatch.headers)) { - const headerValue = getHeaderByName(headers, matchHeaderName); + if (valueNode.kind === Kind.LIST) { + const coercedValues = []; - if (!matchValue(matchHeaderValue, headerValue)) { - return false - } - } - return true - } + for (const itemNode of valueNode.values) { + if (isMissingVariable(itemNode, variables)) { + // If an array contains a missing variable, it is either coerced to + // null or if the item type is non-null, it considered invalid. + if (isNonNullType(itemType)) { + return; // Invalid: intentionally return no value. + } - function safeUrl (path) { - if (typeof path !== 'string') { - return path - } + coercedValues.push(null); + } else { + const itemValue = valueFromAST(itemNode, itemType, variables); - const pathSegments = path.split('?'); + if (itemValue === undefined) { + return; // Invalid: intentionally return no value. + } - if (pathSegments.length !== 2) { - return path - } + coercedValues.push(itemValue); + } + } - const qp = new URLSearchParams(pathSegments.pop()); - qp.sort(); - return [...pathSegments, qp.toString()].join('?') - } + return coercedValues; + } - function matchKey (mockDispatch, { path, method, body, headers }) { - const pathMatch = matchValue(mockDispatch.path, path); - const methodMatch = matchValue(mockDispatch.method, method); - const bodyMatch = typeof mockDispatch.body !== 'undefined' ? matchValue(mockDispatch.body, body) : true; - const headersMatch = matchHeaders(mockDispatch, headers); - return pathMatch && methodMatch && bodyMatch && headersMatch - } + const coercedValue = valueFromAST(valueNode, itemType, variables); - function getResponseData (data) { - if (Buffer.isBuffer(data)) { - return data - } else if (typeof data === 'object') { - return JSON.stringify(data) - } else { - return data.toString() - } - } + if (coercedValue === undefined) { + return; // Invalid: intentionally return no value. + } - function getMockDispatch (mockDispatches, key) { - const basePath = key.query ? buildURL(key.path, key.query) : key.path; - const resolvedPath = typeof basePath === 'string' ? safeUrl(basePath) : basePath; + return [coercedValue]; + } - // Match path - let matchedMockDispatches = mockDispatches.filter(({ consumed }) => !consumed).filter(({ path }) => matchValue(safeUrl(path), resolvedPath)); - if (matchedMockDispatches.length === 0) { - throw new MockNotMatchedError(`Mock dispatch not matched for path '${resolvedPath}'`) - } + if (isInputObjectType(type)) { + if (valueNode.kind !== Kind.OBJECT) { + return; // Invalid: intentionally return no value. + } - // Match method - matchedMockDispatches = matchedMockDispatches.filter(({ method }) => matchValue(method, key.method)); - if (matchedMockDispatches.length === 0) { - throw new MockNotMatchedError(`Mock dispatch not matched for method '${key.method}'`) - } + const coercedObj = Object.create(null); + const fieldNodes = keyMap(valueNode.fields, (field) => field.name.value); - // Match body - matchedMockDispatches = matchedMockDispatches.filter(({ body }) => typeof body !== 'undefined' ? matchValue(body, key.body) : true); - if (matchedMockDispatches.length === 0) { - throw new MockNotMatchedError(`Mock dispatch not matched for body '${key.body}'`) - } + for (const field of Object.values(type.getFields())) { + const fieldNode = fieldNodes[field.name]; - // Match headers - matchedMockDispatches = matchedMockDispatches.filter((mockDispatch) => matchHeaders(mockDispatch, key.headers)); - if (matchedMockDispatches.length === 0) { - throw new MockNotMatchedError(`Mock dispatch not matched for headers '${typeof key.headers === 'object' ? JSON.stringify(key.headers) : key.headers}'`) - } + if (!fieldNode || isMissingVariable(fieldNode.value, variables)) { + if (field.defaultValue !== undefined) { + coercedObj[field.name] = field.defaultValue; + } else if (isNonNullType(field.type)) { + return; // Invalid: intentionally return no value. + } - return matchedMockDispatches[0] - } + continue; + } - function addMockDispatch (mockDispatches, key, data) { - const baseData = { timesInvoked: 0, times: 1, persist: false, consumed: false }; - const replyData = typeof data === 'function' ? { callback: data } : { ...data }; - const newMockDispatch = { ...baseData, ...key, pending: true, data: { error: null, ...replyData } }; - mockDispatches.push(newMockDispatch); - return newMockDispatch - } + const fieldValue = valueFromAST(fieldNode.value, field.type, variables); - function deleteMockDispatch (mockDispatches, key) { - const index = mockDispatches.findIndex(dispatch => { - if (!dispatch.consumed) { - return false - } - return matchKey(dispatch, key) - }); - if (index !== -1) { - mockDispatches.splice(index, 1); - } - } + if (fieldValue === undefined) { + return; // Invalid: intentionally return no value. + } - function buildKey (opts) { - const { path, method, body, headers, query } = opts; - return { - path, - method, - body, - headers, - query - } - } + coercedObj[field.name] = fieldValue; + } - function generateKeyValues (data) { - return Object.entries(data).reduce((keyValuePairs, [key, value]) => [...keyValuePairs, key, value], []) - } + return coercedObj; + } - /** - * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Status - * @param {number} statusCode - */ - function getStatusText (statusCode) { - switch (statusCode) { - case 100: return 'Continue' - case 101: return 'Switching Protocols' - case 102: return 'Processing' - case 103: return 'Early Hints' - case 200: return 'OK' - case 201: return 'Created' - case 202: return 'Accepted' - case 203: return 'Non-Authoritative Information' - case 204: return 'No Content' - case 205: return 'Reset Content' - case 206: return 'Partial Content' - case 207: return 'Multi-Status' - case 208: return 'Already Reported' - case 226: return 'IM Used' - case 300: return 'Multiple Choice' - case 301: return 'Moved Permanently' - case 302: return 'Found' - case 303: return 'See Other' - case 304: return 'Not Modified' - case 305: return 'Use Proxy' - case 306: return 'unused' - case 307: return 'Temporary Redirect' - case 308: return 'Permanent Redirect' - case 400: return 'Bad Request' - case 401: return 'Unauthorized' - case 402: return 'Payment Required' - case 403: return 'Forbidden' - case 404: return 'Not Found' - case 405: return 'Method Not Allowed' - case 406: return 'Not Acceptable' - case 407: return 'Proxy Authentication Required' - case 408: return 'Request Timeout' - case 409: return 'Conflict' - case 410: return 'Gone' - case 411: return 'Length Required' - case 412: return 'Precondition Failed' - case 413: return 'Payload Too Large' - case 414: return 'URI Too Large' - case 415: return 'Unsupported Media Type' - case 416: return 'Range Not Satisfiable' - case 417: return 'Expectation Failed' - case 418: return 'I\'m a teapot' - case 421: return 'Misdirected Request' - case 422: return 'Unprocessable Entity' - case 423: return 'Locked' - case 424: return 'Failed Dependency' - case 425: return 'Too Early' - case 426: return 'Upgrade Required' - case 428: return 'Precondition Required' - case 429: return 'Too Many Requests' - case 431: return 'Request Header Fields Too Large' - case 451: return 'Unavailable For Legal Reasons' - case 500: return 'Internal Server Error' - case 501: return 'Not Implemented' - case 502: return 'Bad Gateway' - case 503: return 'Service Unavailable' - case 504: return 'Gateway Timeout' - case 505: return 'HTTP Version Not Supported' - case 506: return 'Variant Also Negotiates' - case 507: return 'Insufficient Storage' - case 508: return 'Loop Detected' - case 510: return 'Not Extended' - case 511: return 'Network Authentication Required' - default: return 'unknown' - } - } + if (isLeafType(type)) { + // Scalars and Enums fulfill parsing a literal value via parseLiteral(). + // Invalid values represent a failure to parse correctly, in which case + // no value is returned. + let result; - async function getResponse (body) { - const buffers = []; - for await (const data of body) { - buffers.push(data); - } - return Buffer.concat(buffers).toString('utf8') - } + try { + result = type.parseLiteral(valueNode, variables); + } catch (_error) { + return; // Invalid: intentionally return no value. + } - /** - * Mock dispatch function used to simulate undici dispatches - */ - function mockDispatch (opts, handler) { - // Get mock dispatch from built key - const key = buildKey(opts); - const mockDispatch = getMockDispatch(this[kDispatches], key); + if (result === undefined) { + return; // Invalid: intentionally return no value. + } - mockDispatch.timesInvoked++; + return result; + } + /* c8 ignore next 3 */ + // Not reachable, all possible input types have been considered. - // Here's where we resolve a callback if a callback is present for the dispatch data. - if (mockDispatch.data.callback) { - mockDispatch.data = { ...mockDispatch.data, ...mockDispatch.data.callback(opts) }; - } + invariant$1(false, 'Unexpected input type: ' + inspect$1(type)); +} // Returns true if the provided valueNode is a variable which is not defined +// in the set of variables. - // Parse mockDispatch data - const { data: { statusCode, data, headers, trailers, error }, delay, persist } = mockDispatch; - const { timesInvoked, times } = mockDispatch; +function isMissingVariable(valueNode, variables) { + return ( + valueNode.kind === Kind.VARIABLE && + (variables == null || variables[valueNode.name.value] === undefined) + ); +} - // If it's used up and not persistent, mark as consumed - mockDispatch.consumed = !persist && timesInvoked >= times; - mockDispatch.pending = timesInvoked < times; +/** + * Prepares an object map of variableValues of the correct type based on the + * provided variable definitions and arbitrary input. If the input cannot be + * parsed to match the variable definitions, a GraphQLError will be thrown. + * + * Note: The returned value is a plain Object with a prototype, since it is + * exposed to user code. Care should be taken to not pull values from the + * Object prototype. + */ +function getVariableValues(schema, varDefNodes, inputs, options) { + const errors = []; + const maxErrors = + options === null || options === void 0 ? void 0 : options.maxErrors; - // If specified, trigger dispatch error - if (error !== null) { - deleteMockDispatch(this[kDispatches], key); - handler.onError(error); - return true - } + try { + const coerced = coerceVariableValues( + schema, + varDefNodes, + inputs, + (error) => { + if (maxErrors != null && errors.length >= maxErrors) { + throw new GraphQLError( + 'Too many errors processing variables, error limit reached. Execution aborted.', + ); + } - // Handle the request with a delay if necessary - if (typeof delay === 'number' && delay > 0) { - setTimeout(() => { - handleReply(this[kDispatches]); - }, delay); - } else { - handleReply(this[kDispatches]); - } + errors.push(error); + }, + ); - function handleReply (mockDispatches) { - // fetch's HeadersList is a 1D string array - const optsHeaders = Array.isArray(opts.headers) - ? buildHeadersFromArray(opts.headers) - : opts.headers; - const responseData = getResponseData( - typeof data === 'function' ? data({ ...opts, headers: optsHeaders }) : data - ); - const responseHeaders = generateKeyValues(headers); - const responseTrailers = generateKeyValues(trailers); - - handler.abort = nop; - handler.onHeaders(statusCode, responseHeaders, resume, getStatusText(statusCode)); - handler.onData(Buffer.from(responseData)); - handler.onComplete(responseTrailers); - deleteMockDispatch(mockDispatches, key); - } + if (errors.length === 0) { + return { + coerced, + }; + } + } catch (error) { + errors.push(error); + } - function resume () {} + return { + errors, + }; +} - return true - } +function coerceVariableValues(schema, varDefNodes, inputs, onError) { + const coercedValues = {}; - function buildMockDispatch () { - const agent = this[kMockAgent]; - const origin = this[kOrigin]; - const originalDispatch = this[kOriginalDispatch]; - - return function dispatch (opts, handler) { - if (agent.isMockActive) { - try { - mockDispatch.call(this, opts, handler); - } catch (error) { - if (error instanceof MockNotMatchedError) { - const netConnect = agent[kGetNetConnect](); - if (netConnect === false) { - throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect disabled)`) - } - if (checkNetConnect(netConnect, origin)) { - originalDispatch.call(this, opts, handler); - } else { - throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect is not enabled for this origin)`) - } - } else { - throw error - } - } - } else { - originalDispatch.call(this, opts, handler); - } - } - } + for (const varDefNode of varDefNodes) { + const varName = varDefNode.variable.name.value; + const varType = typeFromAST(schema, varDefNode.type); - function checkNetConnect (netConnect, origin) { - const url = new URL(origin); - if (netConnect === true) { - return true - } else if (Array.isArray(netConnect) && netConnect.some((matcher) => matchValue(matcher, url.host))) { - return true - } - return false - } + if (!isInputType(varType)) { + // Must use input types for variables. This should be caught during + // validation, however is checked again here for safety. + const varTypeStr = print(varDefNode.type); + onError( + new GraphQLError( + `Variable "$${varName}" expected value of type "${varTypeStr}" which cannot be used as an input type.`, + { + nodes: varDefNode.type, + }, + ), + ); + continue; + } - function buildMockOptions (opts) { - if (opts) { - const { agent, ...mockOptions } = opts; - return mockOptions - } - } + if (!hasOwnProperty(inputs, varName)) { + if (varDefNode.defaultValue) { + coercedValues[varName] = valueFromAST(varDefNode.defaultValue, varType); + } else if (isNonNullType(varType)) { + const varTypeStr = inspect$1(varType); + onError( + new GraphQLError( + `Variable "$${varName}" of required type "${varTypeStr}" was not provided.`, + { + nodes: varDefNode, + }, + ), + ); + } - mockUtils = { - getResponseData, - getMockDispatch, - addMockDispatch, - deleteMockDispatch, - buildKey, - generateKeyValues, - matchValue, - getResponse, - getStatusText, - mockDispatch, - buildMockDispatch, - checkNetConnect, - buildMockOptions, - getHeaderByName - }; - return mockUtils; -} + continue; + } -var mockInterceptor = {}; + const value = inputs[varName]; -var hasRequiredMockInterceptor; + if (value === null && isNonNullType(varType)) { + const varTypeStr = inspect$1(varType); + onError( + new GraphQLError( + `Variable "$${varName}" of non-null type "${varTypeStr}" must not be null.`, + { + nodes: varDefNode, + }, + ), + ); + continue; + } -function requireMockInterceptor () { - if (hasRequiredMockInterceptor) return mockInterceptor; - hasRequiredMockInterceptor = 1; + coercedValues[varName] = coerceInputValue( + value, + varType, + (path, invalidValue, error) => { + let prefix = + `Variable "$${varName}" got invalid value ` + inspect$1(invalidValue); - const { getResponseData, buildKey, addMockDispatch } = requireMockUtils(); - const { - kDispatches, - kDispatchKey, - kDefaultHeaders, - kDefaultTrailers, - kContentLength, - kMockDispatch - } = requireMockSymbols(); - const { InvalidArgumentError } = requireErrors(); - const { buildURL } = requireUtil$1(); + if (path.length > 0) { + prefix += ` at "${varName}${printPathArray(path)}"`; + } - /** - * Defines the scope API for an interceptor reply - */ - class MockScope { - constructor (mockDispatch) { - this[kMockDispatch] = mockDispatch; - } + onError( + new GraphQLError(prefix + '; ' + error.message, { + nodes: varDefNode, + originalError: error.originalError, + }), + ); + }, + ); + } - /** - * Delay a reply by a set amount in ms. - */ - delay (waitInMs) { - if (typeof waitInMs !== 'number' || !Number.isInteger(waitInMs) || waitInMs <= 0) { - throw new InvalidArgumentError('waitInMs must be a valid integer > 0') - } + return coercedValues; +} +/** + * Prepares an object map of argument values given a list of argument + * definitions and list of argument AST nodes. + * + * Note: The returned value is a plain Object with a prototype, since it is + * exposed to user code. Care should be taken to not pull values from the + * Object prototype. + */ - this[kMockDispatch].delay = waitInMs; - return this - } +function getArgumentValues(def, node, variableValues) { + var _node$arguments; - /** - * For a defined reply, never mark as consumed. - */ - persist () { - this[kMockDispatch].persist = true; - return this - } + const coercedValues = {}; // FIXME: https://github.com/graphql/graphql-js/issues/2203 - /** - * Allow one to define a reply for a set amount of matching requests. - */ - times (repeatTimes) { - if (typeof repeatTimes !== 'number' || !Number.isInteger(repeatTimes) || repeatTimes <= 0) { - throw new InvalidArgumentError('repeatTimes must be a valid integer > 0') - } + /* c8 ignore next */ - this[kMockDispatch].times = repeatTimes; - return this - } - } + const argumentNodes = + (_node$arguments = node.arguments) !== null && _node$arguments !== void 0 + ? _node$arguments + : []; + const argNodeMap = keyMap(argumentNodes, (arg) => arg.name.value); - /** - * Defines an interceptor for a Mock - */ - class MockInterceptor { - constructor (opts, mockDispatches) { - if (typeof opts !== 'object') { - throw new InvalidArgumentError('opts must be an object') - } - if (typeof opts.path === 'undefined') { - throw new InvalidArgumentError('opts.path must be defined') - } - if (typeof opts.method === 'undefined') { - opts.method = 'GET'; - } - // See https://github.com/nodejs/undici/issues/1245 - // As per RFC 3986, clients are not supposed to send URI - // fragments to servers when they retrieve a document, - if (typeof opts.path === 'string') { - if (opts.query) { - opts.path = buildURL(opts.path, opts.query); - } else { - // Matches https://github.com/nodejs/undici/blob/main/lib/fetch/index.js#L1811 - const parsedURL = new URL(opts.path, 'data://'); - opts.path = parsedURL.pathname + parsedURL.search; - } - } - if (typeof opts.method === 'string') { - opts.method = opts.method.toUpperCase(); - } + for (const argDef of def.args) { + const name = argDef.name; + const argType = argDef.type; + const argumentNode = argNodeMap[name]; - this[kDispatchKey] = buildKey(opts); - this[kDispatches] = mockDispatches; - this[kDefaultHeaders] = {}; - this[kDefaultTrailers] = {}; - this[kContentLength] = false; - } + if (!argumentNode) { + if (argDef.defaultValue !== undefined) { + coercedValues[name] = argDef.defaultValue; + } else if (isNonNullType(argType)) { + throw new GraphQLError( + `Argument "${name}" of required type "${inspect$1(argType)}" ` + + 'was not provided.', + { + nodes: node, + }, + ); + } - createMockScopeDispatchData (statusCode, data, responseOptions = {}) { - const responseData = getResponseData(data); - const contentLength = this[kContentLength] ? { 'content-length': responseData.length } : {}; - const headers = { ...this[kDefaultHeaders], ...contentLength, ...responseOptions.headers }; - const trailers = { ...this[kDefaultTrailers], ...responseOptions.trailers }; + continue; + } - return { statusCode, data, headers, trailers } - } + const valueNode = argumentNode.value; + let isNull = valueNode.kind === Kind.NULL; - validateReplyParameters (statusCode, data, responseOptions) { - if (typeof statusCode === 'undefined') { - throw new InvalidArgumentError('statusCode must be defined') - } - if (typeof data === 'undefined') { - throw new InvalidArgumentError('data must be defined') - } - if (typeof responseOptions !== 'object') { - throw new InvalidArgumentError('responseOptions must be an object') - } - } + if (valueNode.kind === Kind.VARIABLE) { + const variableName = valueNode.name.value; - /** - * Mock an undici request with a defined reply. - */ - reply (replyData) { - // Values of reply aren't available right now as they - // can only be available when the reply callback is invoked. - if (typeof replyData === 'function') { - // We'll first wrap the provided callback in another function, - // this function will properly resolve the data from the callback - // when invoked. - const wrappedDefaultsCallback = (opts) => { - // Our reply options callback contains the parameter for statusCode, data and options. - const resolvedData = replyData(opts); - - // Check if it is in the right format - if (typeof resolvedData !== 'object') { - throw new InvalidArgumentError('reply options callback must return an object') - } + if ( + variableValues == null || + !hasOwnProperty(variableValues, variableName) + ) { + if (argDef.defaultValue !== undefined) { + coercedValues[name] = argDef.defaultValue; + } else if (isNonNullType(argType)) { + throw new GraphQLError( + `Argument "${name}" of required type "${inspect$1(argType)}" ` + + `was provided the variable "$${variableName}" which was not provided a runtime value.`, + { + nodes: valueNode, + }, + ); + } - const { statusCode, data = '', responseOptions = {} } = resolvedData; - this.validateReplyParameters(statusCode, data, responseOptions); - // Since the values can be obtained immediately we return them - // from this higher order function that will be resolved later. - return { - ...this.createMockScopeDispatchData(statusCode, data, responseOptions) - } - }; + continue; + } - // Add usual dispatch data, but this time set the data parameter to function that will eventually provide data. - const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], wrappedDefaultsCallback); - return new MockScope(newMockDispatch) - } + isNull = variableValues[variableName] == null; + } - // We can have either one or three parameters, if we get here, - // we should have 1-3 parameters. So we spread the arguments of - // this function to obtain the parameters, since replyData will always - // just be the statusCode. - const [statusCode, data = '', responseOptions = {}] = [...arguments]; - this.validateReplyParameters(statusCode, data, responseOptions); - - // Send in-already provided data like usual - const dispatchData = this.createMockScopeDispatchData(statusCode, data, responseOptions); - const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], dispatchData); - return new MockScope(newMockDispatch) - } + if (isNull && isNonNullType(argType)) { + throw new GraphQLError( + `Argument "${name}" of non-null type "${inspect$1(argType)}" ` + + 'must not be null.', + { + nodes: valueNode, + }, + ); + } - /** - * Mock an undici request with a defined error. - */ - replyWithError (error) { - if (typeof error === 'undefined') { - throw new InvalidArgumentError('error must be defined') - } + const coercedValue = valueFromAST(valueNode, argType, variableValues); - const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], { error }); - return new MockScope(newMockDispatch) - } + if (coercedValue === undefined) { + // Note: ValuesOfCorrectTypeRule validation should catch this before + // execution. This is a runtime check to ensure execution does not + // continue with an invalid argument value. + throw new GraphQLError( + `Argument "${name}" has invalid value ${print(valueNode)}.`, + { + nodes: valueNode, + }, + ); + } - /** - * Set default reply headers on the interceptor for subsequent replies - */ - defaultReplyHeaders (headers) { - if (typeof headers === 'undefined') { - throw new InvalidArgumentError('headers must be defined') - } + coercedValues[name] = coercedValue; + } - this[kDefaultHeaders] = headers; - return this - } + return coercedValues; +} +/** + * Prepares an object map of argument values given a directive definition + * and a AST node which may contain directives. Optionally also accepts a map + * of variable values. + * + * If the directive does not exist on the node, returns undefined. + * + * Note: The returned value is a plain Object with a prototype, since it is + * exposed to user code. Care should be taken to not pull values from the + * Object prototype. + */ - /** - * Set default reply trailers on the interceptor for subsequent replies - */ - defaultReplyTrailers (trailers) { - if (typeof trailers === 'undefined') { - throw new InvalidArgumentError('trailers must be defined') - } +function getDirectiveValues(directiveDef, node, variableValues) { + var _node$directives; - this[kDefaultTrailers] = trailers; - return this - } + const directiveNode = + (_node$directives = node.directives) === null || _node$directives === void 0 + ? void 0 + : _node$directives.find( + (directive) => directive.name.value === directiveDef.name, + ); - /** - * Set reply content length header for replies on the interceptor - */ - replyContentLength () { - this[kContentLength] = true; - return this - } - } + if (directiveNode) { + return getArgumentValues(directiveDef, directiveNode, variableValues); + } +} - mockInterceptor.MockInterceptor = MockInterceptor; - mockInterceptor.MockScope = MockScope; - return mockInterceptor; -} - -var mockClient; -var hasRequiredMockClient; - -function requireMockClient () { - if (hasRequiredMockClient) return mockClient; - hasRequiredMockClient = 1; - - const { promisify } = require$$0$2; - const Client = requireClient(); - const { buildMockDispatch } = requireMockUtils(); - const { - kDispatches, - kMockAgent, - kClose, - kOriginalClose, - kOrigin, - kOriginalDispatch, - kConnected - } = requireMockSymbols(); - const { MockInterceptor } = requireMockInterceptor(); - const Symbols = requireSymbols$1(); - const { InvalidArgumentError } = requireErrors(); +function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} - /** - * MockClient provides an API that extends the Client to influence the mockDispatches. - */ - class MockClient extends Client { - constructor (origin, opts) { - super(origin, opts); +/** + * Given a selectionSet, collects all of the fields and returns them. + * + * CollectFields requires the "runtime type" of an object. For a field that + * returns an Interface or Union type, the "runtime type" will be the actual + * object type returned by that field. + * + * @internal + */ - if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') { - throw new InvalidArgumentError('Argument opts.agent must implement Agent') - } +function collectFields( + schema, + fragments, + variableValues, + runtimeType, + selectionSet, +) { + const fields = new Map(); + collectFieldsImpl( + schema, + fragments, + variableValues, + runtimeType, + selectionSet, + fields, + new Set(), + ); + return fields; +} +/** + * Given an array of field nodes, collects all of the subfields of the passed + * in fields, and returns them at the end. + * + * CollectSubFields requires the "return type" of an object. For a field that + * returns an Interface or Union type, the "return type" will be the actual + * object type returned by that field. + * + * @internal + */ - this[kMockAgent] = opts.agent; - this[kOrigin] = origin; - this[kDispatches] = []; - this[kConnected] = 1; - this[kOriginalDispatch] = this.dispatch; - this[kOriginalClose] = this.close.bind(this); +function collectSubfields$1( + schema, + fragments, + variableValues, + returnType, + fieldNodes, +) { + const subFieldNodes = new Map(); + const visitedFragmentNames = new Set(); - this.dispatch = buildMockDispatch.call(this); - this.close = this[kClose]; - } + for (const node of fieldNodes) { + if (node.selectionSet) { + collectFieldsImpl( + schema, + fragments, + variableValues, + returnType, + node.selectionSet, + subFieldNodes, + visitedFragmentNames, + ); + } + } - get [Symbols.kConnected] () { - return this[kConnected] - } + return subFieldNodes; +} - /** - * Sets up the base interceptor for mocking replies from undici. - */ - intercept (opts) { - return new MockInterceptor(opts, this[kDispatches]) - } +function collectFieldsImpl( + schema, + fragments, + variableValues, + runtimeType, + selectionSet, + fields, + visitedFragmentNames, +) { + for (const selection of selectionSet.selections) { + switch (selection.kind) { + case Kind.FIELD: { + if (!shouldIncludeNode(variableValues, selection)) { + continue; + } - async [kClose] () { - await promisify(this[kOriginalClose])(); - this[kConnected] = 0; - this[kMockAgent][Symbols.kClients].delete(this[kOrigin]); - } - } + const name = getFieldEntryKey(selection); + const fieldList = fields.get(name); - mockClient = MockClient; - return mockClient; -} - -var mockPool; -var hasRequiredMockPool; - -function requireMockPool () { - if (hasRequiredMockPool) return mockPool; - hasRequiredMockPool = 1; - - const { promisify } = require$$0$2; - const Pool = requirePool(); - const { buildMockDispatch } = requireMockUtils(); - const { - kDispatches, - kMockAgent, - kClose, - kOriginalClose, - kOrigin, - kOriginalDispatch, - kConnected - } = requireMockSymbols(); - const { MockInterceptor } = requireMockInterceptor(); - const Symbols = requireSymbols$1(); - const { InvalidArgumentError } = requireErrors(); + if (fieldList !== undefined) { + fieldList.push(selection); + } else { + fields.set(name, [selection]); + } - /** - * MockPool provides an API that extends the Pool to influence the mockDispatches. - */ - class MockPool extends Pool { - constructor (origin, opts) { - super(origin, opts); + break; + } - if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') { - throw new InvalidArgumentError('Argument opts.agent must implement Agent') - } + case Kind.INLINE_FRAGMENT: { + if ( + !shouldIncludeNode(variableValues, selection) || + !doesFragmentConditionMatch(schema, selection, runtimeType) + ) { + continue; + } - this[kMockAgent] = opts.agent; - this[kOrigin] = origin; - this[kDispatches] = []; - this[kConnected] = 1; - this[kOriginalDispatch] = this.dispatch; - this[kOriginalClose] = this.close.bind(this); + collectFieldsImpl( + schema, + fragments, + variableValues, + runtimeType, + selection.selectionSet, + fields, + visitedFragmentNames, + ); + break; + } - this.dispatch = buildMockDispatch.call(this); - this.close = this[kClose]; - } + case Kind.FRAGMENT_SPREAD: { + const fragName = selection.name.value; - get [Symbols.kConnected] () { - return this[kConnected] - } + if ( + visitedFragmentNames.has(fragName) || + !shouldIncludeNode(variableValues, selection) + ) { + continue; + } - /** - * Sets up the base interceptor for mocking replies from undici. - */ - intercept (opts) { - return new MockInterceptor(opts, this[kDispatches]) - } + visitedFragmentNames.add(fragName); + const fragment = fragments[fragName]; - async [kClose] () { - await promisify(this[kOriginalClose])(); - this[kConnected] = 0; - this[kMockAgent][Symbols.kClients].delete(this[kOrigin]); - } - } + if ( + !fragment || + !doesFragmentConditionMatch(schema, fragment, runtimeType) + ) { + continue; + } - mockPool = MockPool; - return mockPool; + collectFieldsImpl( + schema, + fragments, + variableValues, + runtimeType, + fragment.selectionSet, + fields, + visitedFragmentNames, + ); + break; + } + } + } } +/** + * Determines if a field should be included based on the `@include` and `@skip` + * directives, where `@skip` has higher precedence than `@include`. + */ -var pluralizer; -var hasRequiredPluralizer; - -function requirePluralizer () { - if (hasRequiredPluralizer) return pluralizer; - hasRequiredPluralizer = 1; +function shouldIncludeNode(variableValues, node) { + const skip = getDirectiveValues(GraphQLSkipDirective, node, variableValues); - const singulars = { - pronoun: 'it', - is: 'is', - was: 'was', - this: 'this' - }; + if ((skip === null || skip === void 0 ? void 0 : skip.if) === true) { + return false; + } - const plurals = { - pronoun: 'they', - is: 'are', - was: 'were', - this: 'these' - }; + const include = getDirectiveValues( + GraphQLIncludeDirective, + node, + variableValues, + ); - pluralizer = class Pluralizer { - constructor (singular, plural) { - this.singular = singular; - this.plural = plural; - } + if ( + (include === null || include === void 0 ? void 0 : include.if) === false + ) { + return false; + } - pluralize (count) { - const one = count === 1; - const keys = one ? singulars : plurals; - const noun = one ? this.singular : this.plural; - return { ...keys, count, noun } - } - }; - return pluralizer; + return true; } +/** + * Determines if a fragment is applicable to the given type. + */ -var pendingInterceptorsFormatter; -var hasRequiredPendingInterceptorsFormatter; +function doesFragmentConditionMatch(schema, fragment, type) { + const typeConditionNode = fragment.typeCondition; -function requirePendingInterceptorsFormatter () { - if (hasRequiredPendingInterceptorsFormatter) return pendingInterceptorsFormatter; - hasRequiredPendingInterceptorsFormatter = 1; + if (!typeConditionNode) { + return true; + } - const { Transform } = Stream$2; - const { Console } = require$$1$4; + const conditionalType = typeFromAST(schema, typeConditionNode); - /** - * Gets the output of `console.table(…)` as a string. - */ - pendingInterceptorsFormatter = class PendingInterceptorsFormatter { - constructor ({ disableColors } = {}) { - this.transform = new Transform({ - transform (chunk, _enc, cb) { - cb(null, chunk); - } - }); + if (conditionalType === type) { + return true; + } - this.logger = new Console({ - stdout: this.transform, - inspectOptions: { - colors: !disableColors && !process.env.CI - } - }); - } + if (isAbstractType(conditionalType)) { + return schema.isSubType(conditionalType, type); + } - format (pendingInterceptors) { - const withPrettyHeaders = pendingInterceptors.map( - ({ method, path, data: { statusCode }, persist, times, timesInvoked, origin }) => ({ - Method: method, - Origin: origin, - Path: path, - 'Status code': statusCode, - Persistent: persist ? '✅' : '❌', - Invocations: timesInvoked, - Remaining: persist ? Infinity : times - timesInvoked - })); - - this.logger.table(withPrettyHeaders); - return this.transform.read().toString() - } - }; - return pendingInterceptorsFormatter; -} - -var mockAgent; -var hasRequiredMockAgent; - -function requireMockAgent () { - if (hasRequiredMockAgent) return mockAgent; - hasRequiredMockAgent = 1; - - const { kClients } = requireSymbols$1(); - const Agent = requireAgent(); - const { - kAgent, - kMockAgentSet, - kMockAgentGet, - kDispatches, - kIsMockActive, - kNetConnect, - kGetNetConnect, - kOptions, - kFactory - } = requireMockSymbols(); - const MockClient = requireMockClient(); - const MockPool = requireMockPool(); - const { matchValue, buildMockOptions } = requireMockUtils(); - const { InvalidArgumentError, UndiciError } = requireErrors(); - const Dispatcher = requireDispatcher(); - const Pluralizer = requirePluralizer(); - const PendingInterceptorsFormatter = requirePendingInterceptorsFormatter(); - - class FakeWeakRef { - constructor (value) { - this.value = value; - } + return false; +} +/** + * Implements the logic to compute the key of a given field's entry + */ - deref () { - return this.value - } - } +function getFieldEntryKey(node) { + return node.alias ? node.alias.value : node.name.value; +} - class MockAgent extends Dispatcher { - constructor (opts) { - super(opts); +/** + * Subscriptions must only include a non-introspection field. + * + * A GraphQL subscription is valid only if it contains a single root field and + * that root field is not an introspection field. + * + * See https://spec.graphql.org/draft/#sec-Single-root-field + */ +function SingleFieldSubscriptionsRule(context) { + return { + OperationDefinition(node) { + if (node.operation === 'subscription') { + const schema = context.getSchema(); + const subscriptionType = schema.getSubscriptionType(); - this[kNetConnect] = true; - this[kIsMockActive] = true; + if (subscriptionType) { + const operationName = node.name ? node.name.value : null; + const variableValues = Object.create(null); + const document = context.getDocument(); + const fragments = Object.create(null); - // Instantiate Agent and encapsulate - if ((opts && opts.agent && typeof opts.agent.dispatch !== 'function')) { - throw new InvalidArgumentError('Argument opts.agent must implement Agent') - } - const agent = opts && opts.agent ? opts.agent : new Agent(opts); - this[kAgent] = agent; + for (const definition of document.definitions) { + if (definition.kind === Kind.FRAGMENT_DEFINITION) { + fragments[definition.name.value] = definition; + } + } - this[kClients] = agent[kClients]; - this[kOptions] = buildMockOptions(opts); - } + const fields = collectFields( + schema, + fragments, + variableValues, + subscriptionType, + node.selectionSet, + ); - get (origin) { - let dispatcher = this[kMockAgentGet](origin); + if (fields.size > 1) { + const fieldSelectionLists = [...fields.values()]; + const extraFieldSelectionLists = fieldSelectionLists.slice(1); + const extraFieldSelections = extraFieldSelectionLists.flat(); + context.reportError( + new GraphQLError( + operationName != null + ? `Subscription "${operationName}" must select only one top level field.` + : 'Anonymous Subscription must select only one top level field.', + { + nodes: extraFieldSelections, + }, + ), + ); + } - if (!dispatcher) { - dispatcher = this[kFactory](origin); - this[kMockAgentSet](origin, dispatcher); - } - return dispatcher - } + for (const fieldNodes of fields.values()) { + const field = fieldNodes[0]; + const fieldName = field.name.value; - dispatch (opts, handler) { - // Call MockAgent.get to perform additional setup before dispatching as normal - this.get(opts.origin); - return this[kAgent].dispatch(opts, handler) - } + if (fieldName.startsWith('__')) { + context.reportError( + new GraphQLError( + operationName != null + ? `Subscription "${operationName}" must not select an introspection top level field.` + : 'Anonymous Subscription must not select an introspection top level field.', + { + nodes: fieldNodes, + }, + ), + ); + } + } + } + } + }, + }; +} - async close () { - await this[kAgent].close(); - this[kClients].clear(); - } +/** + * Groups array items into a Map, given a function to produce grouping key. + */ +function groupBy(list, keyFn) { + const result = new Map(); - deactivate () { - this[kIsMockActive] = false; - } + for (const item of list) { + const key = keyFn(item); + const group = result.get(key); - activate () { - this[kIsMockActive] = true; - } + if (group === undefined) { + result.set(key, [item]); + } else { + group.push(item); + } + } - enableNetConnect (matcher) { - if (typeof matcher === 'string' || typeof matcher === 'function' || matcher instanceof RegExp) { - if (Array.isArray(this[kNetConnect])) { - this[kNetConnect].push(matcher); - } else { - this[kNetConnect] = [matcher]; - } - } else if (typeof matcher === 'undefined') { - this[kNetConnect] = true; - } else { - throw new InvalidArgumentError('Unsupported matcher. Must be one of String|Function|RegExp.') - } - } + return result; +} - disableNetConnect () { - this[kNetConnect] = false; - } +/** + * Unique argument definition names + * + * A GraphQL Object or Interface type is only valid if all its fields have uniquely named arguments. + * A GraphQL Directive is only valid if all its arguments are uniquely named. + */ +function UniqueArgumentDefinitionNamesRule(context) { + return { + DirectiveDefinition(directiveNode) { + var _directiveNode$argume; - // This is required to bypass issues caused by using global symbols - see: - // https://github.com/nodejs/undici/issues/1447 - get isMockActive () { - return this[kIsMockActive] - } + // FIXME: https://github.com/graphql/graphql-js/issues/2203 - [kMockAgentSet] (origin, dispatcher) { - this[kClients].set(origin, new FakeWeakRef(dispatcher)); - } + /* c8 ignore next */ + const argumentNodes = + (_directiveNode$argume = directiveNode.arguments) !== null && + _directiveNode$argume !== void 0 + ? _directiveNode$argume + : []; + return checkArgUniqueness(`@${directiveNode.name.value}`, argumentNodes); + }, - [kFactory] (origin) { - const mockOptions = Object.assign({ agent: this }, this[kOptions]); - return this[kOptions] && this[kOptions].connections === 1 - ? new MockClient(origin, mockOptions) - : new MockPool(origin, mockOptions) - } + InterfaceTypeDefinition: checkArgUniquenessPerField, + InterfaceTypeExtension: checkArgUniquenessPerField, + ObjectTypeDefinition: checkArgUniquenessPerField, + ObjectTypeExtension: checkArgUniquenessPerField, + }; - [kMockAgentGet] (origin) { - // First check if we can immediately find it - const ref = this[kClients].get(origin); - if (ref) { - return ref.deref() - } + function checkArgUniquenessPerField(typeNode) { + var _typeNode$fields; - // If the origin is not a string create a dummy parent pool and return to user - if (typeof origin !== 'string') { - const dispatcher = this[kFactory]('http://localhost:9999'); - this[kMockAgentSet](origin, dispatcher); - return dispatcher - } + const typeName = typeNode.name.value; // FIXME: https://github.com/graphql/graphql-js/issues/2203 - // If we match, create a pool and assign the same dispatches - for (const [keyMatcher, nonExplicitRef] of Array.from(this[kClients])) { - const nonExplicitDispatcher = nonExplicitRef.deref(); - if (nonExplicitDispatcher && typeof keyMatcher !== 'string' && matchValue(keyMatcher, origin)) { - const dispatcher = this[kFactory](origin); - this[kMockAgentSet](origin, dispatcher); - dispatcher[kDispatches] = nonExplicitDispatcher[kDispatches]; - return dispatcher - } - } - } + /* c8 ignore next */ - [kGetNetConnect] () { - return this[kNetConnect] - } + const fieldNodes = + (_typeNode$fields = typeNode.fields) !== null && + _typeNode$fields !== void 0 + ? _typeNode$fields + : []; - pendingInterceptors () { - const mockAgentClients = this[kClients]; + for (const fieldDef of fieldNodes) { + var _fieldDef$arguments; - return Array.from(mockAgentClients.entries()) - .flatMap(([origin, scope]) => scope.deref()[kDispatches].map(dispatch => ({ ...dispatch, origin }))) - .filter(({ pending }) => pending) - } + const fieldName = fieldDef.name.value; // FIXME: https://github.com/graphql/graphql-js/issues/2203 - assertNoPendingInterceptors ({ pendingInterceptorsFormatter = new PendingInterceptorsFormatter() } = {}) { - const pending = this.pendingInterceptors(); + /* c8 ignore next */ - if (pending.length === 0) { - return - } + const argumentNodes = + (_fieldDef$arguments = fieldDef.arguments) !== null && + _fieldDef$arguments !== void 0 + ? _fieldDef$arguments + : []; + checkArgUniqueness(`${typeName}.${fieldName}`, argumentNodes); + } - const pluralizer = new Pluralizer('interceptor', 'interceptors').pluralize(pending.length); + return false; + } - throw new UndiciError(` -${pluralizer.count} ${pluralizer.noun} ${pluralizer.is} pending: + function checkArgUniqueness(parentName, argumentNodes) { + const seenArgs = groupBy(argumentNodes, (arg) => arg.name.value); -${pendingInterceptorsFormatter.format(pending)} -`.trim()) - } - } + for (const [argName, argNodes] of seenArgs) { + if (argNodes.length > 1) { + context.reportError( + new GraphQLError( + `Argument "${parentName}(${argName}:)" can only be defined once.`, + { + nodes: argNodes.map((node) => node.name), + }, + ), + ); + } + } - mockAgent = MockAgent; - return mockAgent; + return false; + } } -var proxyAgent; -var hasRequiredProxyAgent; +/** + * Unique argument names + * + * A GraphQL field or directive is only valid if all supplied arguments are + * uniquely named. + * + * See https://spec.graphql.org/draft/#sec-Argument-Names + */ +function UniqueArgumentNamesRule(context) { + return { + Field: checkArgUniqueness, + Directive: checkArgUniqueness, + }; -function requireProxyAgent () { - if (hasRequiredProxyAgent) return proxyAgent; - hasRequiredProxyAgent = 1; + function checkArgUniqueness(parentNode) { + var _parentNode$arguments; - const { kClose, kDestroy } = requireSymbols$1(); - const Client = requireAgent(); - const Agent = requireAgent(); - const DispatcherBase = requireDispatcherBase(); - const { InvalidArgumentError, RequestAbortedError } = requireErrors(); - const buildConnector = requireConnect(); + // FIXME: https://github.com/graphql/graphql-js/issues/2203 - const kAgent = Symbol('proxy agent'); - const kClient = Symbol('proxy client'); - const kProxyHeaders = Symbol('proxy headers'); - const kRequestTls = Symbol('request tls settings'); - const kProxyTls = Symbol('proxy tls settings'); - const kConnectEndpoint = Symbol('connect endpoint function'); + /* c8 ignore next */ + const argumentNodes = + (_parentNode$arguments = parentNode.arguments) !== null && + _parentNode$arguments !== void 0 + ? _parentNode$arguments + : []; + const seenArgs = groupBy(argumentNodes, (arg) => arg.name.value); - function defaultProtocolPort (protocol) { - return protocol === 'https:' ? 443 : 80 - } + for (const [argName, argNodes] of seenArgs) { + if (argNodes.length > 1) { + context.reportError( + new GraphQLError( + `There can be only one argument named "${argName}".`, + { + nodes: argNodes.map((node) => node.name), + }, + ), + ); + } + } + } +} - class ProxyAgent extends DispatcherBase { - constructor (opts) { - super(opts); +/** + * Unique directive names + * + * A GraphQL document is only valid if all defined directives have unique names. + */ +function UniqueDirectiveNamesRule(context) { + const knownDirectiveNames = Object.create(null); + const schema = context.getSchema(); + return { + DirectiveDefinition(node) { + const directiveName = node.name.value; - if (typeof opts === 'string') { - opts = { uri: opts }; - } + if ( + schema !== null && + schema !== void 0 && + schema.getDirective(directiveName) + ) { + context.reportError( + new GraphQLError( + `Directive "@${directiveName}" already exists in the schema. It cannot be redefined.`, + { + nodes: node.name, + }, + ), + ); + return; + } - if (!opts || !opts.uri) { - throw new InvalidArgumentError('Proxy opts.uri is mandatory') - } + if (knownDirectiveNames[directiveName]) { + context.reportError( + new GraphQLError( + `There can be only one directive named "@${directiveName}".`, + { + nodes: [knownDirectiveNames[directiveName], node.name], + }, + ), + ); + } else { + knownDirectiveNames[directiveName] = node.name; + } - this[kRequestTls] = opts.requestTls; - this[kProxyTls] = opts.proxyTls; - this[kProxyHeaders] = {}; + return false; + }, + }; +} - if (opts.auth) { - this[kProxyHeaders]['proxy-authorization'] = `Basic ${opts.auth}`; - } +/** + * Unique directive names per location + * + * A GraphQL document is only valid if all non-repeatable directives at + * a given location are uniquely named. + * + * See https://spec.graphql.org/draft/#sec-Directives-Are-Unique-Per-Location + */ +function UniqueDirectivesPerLocationRule(context) { + const uniqueDirectiveMap = Object.create(null); + const schema = context.getSchema(); + const definedDirectives = schema + ? schema.getDirectives() + : specifiedDirectives; - const { origin, port } = new URL(opts.uri); - - const connect = buildConnector({ ...opts.proxyTls }); - this[kConnectEndpoint] = buildConnector({ ...opts.requestTls }); - this[kClient] = new Client({ origin: opts.origin, connect }); - this[kAgent] = new Agent({ - ...opts, - connect: async (opts, callback) => { - let requestedHost = opts.host; - if (!opts.port) { - requestedHost += `:${defaultProtocolPort(opts.protocol)}`; - } - try { - const { socket, statusCode } = await this[kClient].connect({ - origin, - port, - path: requestedHost, - signal: opts.signal, - headers: { - ...this[kProxyHeaders], - host: opts.host - } - }); - if (statusCode !== 200) { - socket.on('error', () => {}).destroy(); - callback(new RequestAbortedError('Proxy response !== 200 when HTTP Tunneling')); - } - if (opts.protocol !== 'https:') { - callback(null, socket); - return - } - let servername; - if (this[kRequestTls]) { - servername = this[kRequestTls].servername; - } else { - servername = opts.servername; - } - this[kConnectEndpoint]({ ...opts, servername, httpSocket: socket }, callback); - } catch (err) { - callback(err); - } - } - }); - } + for (const directive of definedDirectives) { + uniqueDirectiveMap[directive.name] = !directive.isRepeatable; + } - dispatch (opts, handler) { - const { host } = new URL(opts.origin); - const headers = buildHeaders(opts.headers); - throwIfProxyAuthIsSent(headers); - return this[kAgent].dispatch( - { - ...opts, - headers: { - ...headers, - host - } - }, - handler - ) - } + const astDefinitions = context.getDocument().definitions; - async [kClose] () { - await this[kAgent].close(); - await this[kClient].close(); - } + for (const def of astDefinitions) { + if (def.kind === Kind.DIRECTIVE_DEFINITION) { + uniqueDirectiveMap[def.name.value] = !def.repeatable; + } + } - async [kDestroy] () { - await this[kAgent].destroy(); - await this[kClient].destroy(); - } - } + const schemaDirectives = Object.create(null); + const typeDirectivesMap = Object.create(null); + return { + // Many different AST nodes may contain directives. Rather than listing + // them all, just listen for entering any node, and check to see if it + // defines any directives. + enter(node) { + if (!('directives' in node) || !node.directives) { + return; + } - /** - * @param {string[] | Record} headers - * @returns {Record} - */ - function buildHeaders (headers) { - // When using undici.fetch, the headers list is stored - // as an array. - if (Array.isArray(headers)) { - /** @type {Record} */ - const headersPair = {}; - - for (let i = 0; i < headers.length; i += 2) { - headersPair[headers[i]] = headers[i + 1]; - } + let seenDirectives; - return headersPair - } + if ( + node.kind === Kind.SCHEMA_DEFINITION || + node.kind === Kind.SCHEMA_EXTENSION + ) { + seenDirectives = schemaDirectives; + } else if (isTypeDefinitionNode(node) || isTypeExtensionNode(node)) { + const typeName = node.name.value; + seenDirectives = typeDirectivesMap[typeName]; - return headers - } + if (seenDirectives === undefined) { + typeDirectivesMap[typeName] = seenDirectives = Object.create(null); + } + } else { + seenDirectives = Object.create(null); + } - /** - * @param {Record} headers - * - * Previous versions of ProxyAgent suggests the Proxy-Authorization in request headers - * Nevertheless, it was changed and to avoid a security vulnerability by end users - * this check was created. - * It should be removed in the next major version for performance reasons - */ - function throwIfProxyAuthIsSent (headers) { - const existProxyAuth = headers && Object.keys(headers) - .find((key) => key.toLowerCase() === 'proxy-authorization'); - if (existProxyAuth) { - throw new InvalidArgumentError('Proxy-Authorization should be sent in ProxyAgent constructor') - } - } + for (const directive of node.directives) { + const directiveName = directive.name.value; - proxyAgent = ProxyAgent; - return proxyAgent; + if (uniqueDirectiveMap[directiveName]) { + if (seenDirectives[directiveName]) { + context.reportError( + new GraphQLError( + `The directive "@${directiveName}" can only be used once at this location.`, + { + nodes: [seenDirectives[directiveName], directive], + }, + ), + ); + } else { + seenDirectives[directiveName] = directive; + } + } + } + }, + }; } -var global$1; -var hasRequiredGlobal; - -function requireGlobal () { - if (hasRequiredGlobal) return global$1; - hasRequiredGlobal = 1; +/** + * Unique enum value names + * + * A GraphQL enum type is only valid if all its values are uniquely named. + */ +function UniqueEnumValueNamesRule(context) { + const schema = context.getSchema(); + const existingTypeMap = schema ? schema.getTypeMap() : Object.create(null); + const knownValueNames = Object.create(null); + return { + EnumTypeDefinition: checkValueUniqueness, + EnumTypeExtension: checkValueUniqueness, + }; - // We include a version number for the Dispatcher API. In case of breaking changes, - // this version number must be increased to avoid conflicts. - const globalDispatcher = Symbol.for('undici.globalDispatcher.1'); - const { InvalidArgumentError } = requireErrors(); - const Agent = requireAgent(); + function checkValueUniqueness(node) { + var _node$values; - if (getGlobalDispatcher() === undefined) { - setGlobalDispatcher(new Agent()); - } + const typeName = node.name.value; - function setGlobalDispatcher (agent) { - if (!agent || typeof agent.dispatch !== 'function') { - throw new InvalidArgumentError('Argument agent must implement Agent') - } - Object.defineProperty(globalThis, globalDispatcher, { - value: agent, - writable: true, - enumerable: false, - configurable: false - }); - } + if (!knownValueNames[typeName]) { + knownValueNames[typeName] = Object.create(null); + } // FIXME: https://github.com/graphql/graphql-js/issues/2203 - function getGlobalDispatcher () { - return globalThis[globalDispatcher] - } + /* c8 ignore next */ - global$1 = { - setGlobalDispatcher, - getGlobalDispatcher - }; - return global$1; -} + const valueNodes = + (_node$values = node.values) !== null && _node$values !== void 0 + ? _node$values + : []; + const valueNames = knownValueNames[typeName]; -var headers; -var hasRequiredHeaders; + for (const valueDef of valueNodes) { + const valueName = valueDef.name.value; + const existingType = existingTypeMap[typeName]; -function requireHeaders () { - if (hasRequiredHeaders) return headers; - hasRequiredHeaders = 1; + if (isEnumType(existingType) && existingType.getValue(valueName)) { + context.reportError( + new GraphQLError( + `Enum value "${typeName}.${valueName}" already exists in the schema. It cannot also be defined in this type extension.`, + { + nodes: valueDef.name, + }, + ), + ); + } else if (valueNames[valueName]) { + context.reportError( + new GraphQLError( + `Enum value "${typeName}.${valueName}" can only be defined once.`, + { + nodes: [valueNames[valueName], valueDef.name], + }, + ), + ); + } else { + valueNames[valueName] = valueDef.name; + } + } - const { kHeadersList } = requireSymbols$1(); - const { kGuard } = requireSymbols(); - const { kEnumerableProperty } = requireUtil$1(); - const { - makeIterator, - isValidHeaderName, - isValidHeaderValue - } = requireUtil(); - const { webidl } = requireWebidl(); + return false; + } +} - const kHeadersMap = Symbol('headers map'); - const kHeadersSortedMap = Symbol('headers map sorted'); +/** + * Unique field definition names + * + * A GraphQL complex type is only valid if all its fields are uniquely named. + */ +function UniqueFieldDefinitionNamesRule(context) { + const schema = context.getSchema(); + const existingTypeMap = schema ? schema.getTypeMap() : Object.create(null); + const knownFieldNames = Object.create(null); + return { + InputObjectTypeDefinition: checkFieldUniqueness, + InputObjectTypeExtension: checkFieldUniqueness, + InterfaceTypeDefinition: checkFieldUniqueness, + InterfaceTypeExtension: checkFieldUniqueness, + ObjectTypeDefinition: checkFieldUniqueness, + ObjectTypeExtension: checkFieldUniqueness, + }; - /** - * @see https://fetch.spec.whatwg.org/#concept-header-value-normalize - * @param {string} potentialValue - */ - function headerValueNormalize (potentialValue) { - // To normalize a byte sequence potentialValue, remove - // any leading and trailing HTTP whitespace bytes from - // potentialValue. - return potentialValue.replace( - /^[\r\n\t ]+|[\r\n\t ]+$/g, - '' - ) - } + function checkFieldUniqueness(node) { + var _node$fields; - function fill (headers, object) { - // To fill a Headers object headers with a given object object, run these steps: - - // 1. If object is a sequence, then for each header in object: - // Note: webidl conversion to array has already been done. - if (Array.isArray(object)) { - for (const header of object) { - // 1. If header does not contain exactly two items, then throw a TypeError. - if (header.length !== 2) { - webidl.errors.exception({ - header: 'Headers constructor', - message: `expected name/value pair to be length 2, found ${header.length}.` - }); - } + const typeName = node.name.value; - // 2. Append (header’s first item, header’s second item) to headers. - headers.append(header[0], header[1]); - } - } else if (typeof object === 'object' && object !== null) { - // Note: null should throw + if (!knownFieldNames[typeName]) { + knownFieldNames[typeName] = Object.create(null); + } // FIXME: https://github.com/graphql/graphql-js/issues/2203 - // 2. Otherwise, object is a record, then for each key → value in object, - // append (key, value) to headers - for (const [key, value] of Object.entries(object)) { - headers.append(key, value); - } - } else { - webidl.errors.conversionFailed({ - prefix: 'Headers constructor', - argument: 'Argument 1', - types: ['sequence>', 'record'] - }); - } - } + /* c8 ignore next */ - class HeadersList { - constructor (init) { - if (init instanceof HeadersList) { - this[kHeadersMap] = new Map(init[kHeadersMap]); - this[kHeadersSortedMap] = init[kHeadersSortedMap]; - } else { - this[kHeadersMap] = new Map(init); - this[kHeadersSortedMap] = null; - } - } + const fieldNodes = + (_node$fields = node.fields) !== null && _node$fields !== void 0 + ? _node$fields + : []; + const fieldNames = knownFieldNames[typeName]; - // https://fetch.spec.whatwg.org/#header-list-contains - contains (name) { - // A header list list contains a header name name if list - // contains a header whose name is a byte-case-insensitive - // match for name. - name = name.toLowerCase(); + for (const fieldDef of fieldNodes) { + const fieldName = fieldDef.name.value; - return this[kHeadersMap].has(name) - } + if (hasField(existingTypeMap[typeName], fieldName)) { + context.reportError( + new GraphQLError( + `Field "${typeName}.${fieldName}" already exists in the schema. It cannot also be defined in this type extension.`, + { + nodes: fieldDef.name, + }, + ), + ); + } else if (fieldNames[fieldName]) { + context.reportError( + new GraphQLError( + `Field "${typeName}.${fieldName}" can only be defined once.`, + { + nodes: [fieldNames[fieldName], fieldDef.name], + }, + ), + ); + } else { + fieldNames[fieldName] = fieldDef.name; + } + } - clear () { - this[kHeadersMap].clear(); - this[kHeadersSortedMap] = null; - } + return false; + } +} - // https://fetch.spec.whatwg.org/#concept-header-list-append - append (name, value) { - this[kHeadersSortedMap] = null; +function hasField(type, fieldName) { + if (isObjectType(type) || isInterfaceType(type) || isInputObjectType(type)) { + return type.getFields()[fieldName] != null; + } - // 1. If list contains name, then set name to the first such - // header’s name. - name = name.toLowerCase(); - const exists = this[kHeadersMap].get(name); + return false; +} - // 2. Append (name, value) to list. - if (exists) { - this[kHeadersMap].set(name, `${exists}, ${value}`); - } else { - this[kHeadersMap].set(name, `${value}`); - } - } +/** + * Unique fragment names + * + * A GraphQL document is only valid if all defined fragments have unique names. + * + * See https://spec.graphql.org/draft/#sec-Fragment-Name-Uniqueness + */ +function UniqueFragmentNamesRule(context) { + const knownFragmentNames = Object.create(null); + return { + OperationDefinition: () => false, - // https://fetch.spec.whatwg.org/#concept-header-list-set - set (name, value) { - this[kHeadersSortedMap] = null; - name = name.toLowerCase(); + FragmentDefinition(node) { + const fragmentName = node.name.value; - // 1. If list contains name, then set the value of - // the first such header to value and remove the - // others. - // 2. Otherwise, append header (name, value) to list. - return this[kHeadersMap].set(name, value) - } + if (knownFragmentNames[fragmentName]) { + context.reportError( + new GraphQLError( + `There can be only one fragment named "${fragmentName}".`, + { + nodes: [knownFragmentNames[fragmentName], node.name], + }, + ), + ); + } else { + knownFragmentNames[fragmentName] = node.name; + } - // https://fetch.spec.whatwg.org/#concept-header-list-delete - delete (name) { - this[kHeadersSortedMap] = null; + return false; + }, + }; +} - name = name.toLowerCase(); - return this[kHeadersMap].delete(name) - } +/** + * Unique input field names + * + * A GraphQL input object value is only valid if all supplied fields are + * uniquely named. + * + * See https://spec.graphql.org/draft/#sec-Input-Object-Field-Uniqueness + */ +function UniqueInputFieldNamesRule(context) { + const knownNameStack = []; + let knownNames = Object.create(null); + return { + ObjectValue: { + enter() { + knownNameStack.push(knownNames); + knownNames = Object.create(null); + }, - // https://fetch.spec.whatwg.org/#concept-header-list-get - get (name) { - name = name.toLowerCase(); + leave() { + const prevKnownNames = knownNameStack.pop(); + prevKnownNames || invariant$1(false); + knownNames = prevKnownNames; + }, + }, - // 1. If list does not contain name, then return null. - if (!this.contains(name)) { - return null - } + ObjectField(node) { + const fieldName = node.name.value; - // 2. Return the values of all headers in list whose name - // is a byte-case-insensitive match for name, - // separated from each other by 0x2C 0x20, in order. - return this[kHeadersMap].get(name) ?? null - } + if (knownNames[fieldName]) { + context.reportError( + new GraphQLError( + `There can be only one input field named "${fieldName}".`, + { + nodes: [knownNames[fieldName], node.name], + }, + ), + ); + } else { + knownNames[fieldName] = node.name; + } + }, + }; +} - has (name) { - name = name.toLowerCase(); - return this[kHeadersMap].has(name) - } +/** + * Unique operation names + * + * A GraphQL document is only valid if all defined operations have unique names. + * + * See https://spec.graphql.org/draft/#sec-Operation-Name-Uniqueness + */ +function UniqueOperationNamesRule(context) { + const knownOperationNames = Object.create(null); + return { + OperationDefinition(node) { + const operationName = node.name; - keys () { - return this[kHeadersMap].keys() - } + if (operationName) { + if (knownOperationNames[operationName.value]) { + context.reportError( + new GraphQLError( + `There can be only one operation named "${operationName.value}".`, + { + nodes: [ + knownOperationNames[operationName.value], + operationName, + ], + }, + ), + ); + } else { + knownOperationNames[operationName.value] = operationName; + } + } - values () { - return this[kHeadersMap].values() - } + return false; + }, - entries () { - return this[kHeadersMap].entries() - } + FragmentDefinition: () => false, + }; +} - [Symbol.iterator] () { - return this[kHeadersMap][Symbol.iterator]() - } - } +/** + * Unique operation types + * + * A GraphQL document is only valid if it has only one type per operation. + */ +function UniqueOperationTypesRule(context) { + const schema = context.getSchema(); + const definedOperationTypes = Object.create(null); + const existingOperationTypes = schema + ? { + query: schema.getQueryType(), + mutation: schema.getMutationType(), + subscription: schema.getSubscriptionType(), + } + : {}; + return { + SchemaDefinition: checkOperationTypes, + SchemaExtension: checkOperationTypes, + }; - // https://fetch.spec.whatwg.org/#headers-class - class Headers { - constructor (init = undefined) { - this[kHeadersList] = new HeadersList(); + function checkOperationTypes(node) { + var _node$operationTypes; - // The new Headers(init) constructor steps are: + // See: https://github.com/graphql/graphql-js/issues/2203 - // 1. Set this’s guard to "none". - this[kGuard] = 'none'; + /* c8 ignore next */ + const operationTypesNodes = + (_node$operationTypes = node.operationTypes) !== null && + _node$operationTypes !== void 0 + ? _node$operationTypes + : []; - // 2. If init is given, then fill this with init. - if (init !== undefined) { - init = webidl.converters.HeadersInit(init); - fill(this, init); - } - } + for (const operationType of operationTypesNodes) { + const operation = operationType.operation; + const alreadyDefinedOperationType = definedOperationTypes[operation]; - get [Symbol.toStringTag] () { - return this.constructor.name - } + if (existingOperationTypes[operation]) { + context.reportError( + new GraphQLError( + `Type for ${operation} already defined in the schema. It cannot be redefined.`, + { + nodes: operationType, + }, + ), + ); + } else if (alreadyDefinedOperationType) { + context.reportError( + new GraphQLError( + `There can be only one ${operation} type in schema.`, + { + nodes: [alreadyDefinedOperationType, operationType], + }, + ), + ); + } else { + definedOperationTypes[operation] = operationType; + } + } - // https://fetch.spec.whatwg.org/#dom-headers-append - append (name, value) { - if (!(this instanceof Headers)) { - throw new TypeError('Illegal invocation') - } + return false; + } +} - if (arguments.length < 2) { - throw new TypeError( - `Failed to execute 'append' on 'Headers': 2 arguments required, but only ${arguments.length} present.` - ) - } +/** + * Unique type names + * + * A GraphQL document is only valid if all defined types have unique names. + */ +function UniqueTypeNamesRule(context) { + const knownTypeNames = Object.create(null); + const schema = context.getSchema(); + return { + ScalarTypeDefinition: checkTypeName, + ObjectTypeDefinition: checkTypeName, + InterfaceTypeDefinition: checkTypeName, + UnionTypeDefinition: checkTypeName, + EnumTypeDefinition: checkTypeName, + InputObjectTypeDefinition: checkTypeName, + }; - name = webidl.converters.ByteString(name); - value = webidl.converters.ByteString(value); + function checkTypeName(node) { + const typeName = node.name.value; - // 1. Normalize value. - value = headerValueNormalize(value); + if (schema !== null && schema !== void 0 && schema.getType(typeName)) { + context.reportError( + new GraphQLError( + `Type "${typeName}" already exists in the schema. It cannot also be defined in this type definition.`, + { + nodes: node.name, + }, + ), + ); + return; + } - // 2. If name is not a header name or value is not a - // header value, then throw a TypeError. - if (!isValidHeaderName(name)) { - webidl.errors.invalidArgument({ - prefix: 'Headers.append', - value: name, - type: 'header name' - }); - } else if (!isValidHeaderValue(value)) { - webidl.errors.invalidArgument({ - prefix: 'Headers.append', - value, - type: 'header value' - }); - } + if (knownTypeNames[typeName]) { + context.reportError( + new GraphQLError(`There can be only one type named "${typeName}".`, { + nodes: [knownTypeNames[typeName], node.name], + }), + ); + } else { + knownTypeNames[typeName] = node.name; + } - // 3. If headers’s guard is "immutable", then throw a TypeError. - // 4. Otherwise, if headers’s guard is "request" and name is a - // forbidden header name, return. - // Note: undici does not implement forbidden header names - if (this[kGuard] === 'immutable') { - throw new TypeError('immutable') - } else if (this[kGuard] === 'request-no-cors') ; - - // 6. Otherwise, if headers’s guard is "response" and name is a - // forbidden response-header name, return. - - // 7. Append (name, value) to headers’s header list. - // 8. If headers’s guard is "request-no-cors", then remove - // privileged no-CORS request headers from headers - return this[kHeadersList].append(name, value) - } + return false; + } +} - // https://fetch.spec.whatwg.org/#dom-headers-delete - delete (name) { - if (!(this instanceof Headers)) { - throw new TypeError('Illegal invocation') - } +/** + * Unique variable names + * + * A GraphQL operation is only valid if all its variables are uniquely named. + */ +function UniqueVariableNamesRule(context) { + return { + OperationDefinition(operationNode) { + var _operationNode$variab; - if (arguments.length < 1) { - throw new TypeError( - `Failed to execute 'delete' on 'Headers': 1 argument required, but only ${arguments.length} present.` - ) - } + // See: https://github.com/graphql/graphql-js/issues/2203 - name = webidl.converters.ByteString(name); + /* c8 ignore next */ + const variableDefinitions = + (_operationNode$variab = operationNode.variableDefinitions) !== null && + _operationNode$variab !== void 0 + ? _operationNode$variab + : []; + const seenVariableDefinitions = groupBy( + variableDefinitions, + (node) => node.variable.name.value, + ); - // 1. If name is not a header name, then throw a TypeError. - if (!isValidHeaderName(name)) { - webidl.errors.invalidArgument({ - prefix: 'Headers.delete', - value: name, - type: 'header name' - }); - } + for (const [variableName, variableNodes] of seenVariableDefinitions) { + if (variableNodes.length > 1) { + context.reportError( + new GraphQLError( + `There can be only one variable named "$${variableName}".`, + { + nodes: variableNodes.map((node) => node.variable.name), + }, + ), + ); + } + } + }, + }; +} - // 2. If this’s guard is "immutable", then throw a TypeError. - // 3. Otherwise, if this’s guard is "request" and name is a - // forbidden header name, return. - // 4. Otherwise, if this’s guard is "request-no-cors", name - // is not a no-CORS-safelisted request-header name, and - // name is not a privileged no-CORS request-header name, - // return. - // 5. Otherwise, if this’s guard is "response" and name is - // a forbidden response-header name, return. - // Note: undici does not implement forbidden header names - if (this[kGuard] === 'immutable') { - throw new TypeError('immutable') - } else if (this[kGuard] === 'request-no-cors') ; - - // 6. If this’s header list does not contain name, then - // return. - if (!this[kHeadersList].contains(name)) { - return - } +/** + * Value literals of correct type + * + * A GraphQL document is only valid if all value literals are of the type + * expected at their position. + * + * See https://spec.graphql.org/draft/#sec-Values-of-Correct-Type + */ +function ValuesOfCorrectTypeRule(context) { + return { + ListValue(node) { + // Note: TypeInfo will traverse into a list's item type, so look to the + // parent input type to check if it is a list. + const type = getNullableType(context.getParentInputType()); - // 7. Delete name from this’s header list. - // 8. If this’s guard is "request-no-cors", then remove - // privileged no-CORS request headers from this. - return this[kHeadersList].delete(name) - } + if (!isListType(type)) { + isValidValueNode(context, node); + return false; // Don't traverse further. + } + }, - // https://fetch.spec.whatwg.org/#dom-headers-get - get (name) { - if (!(this instanceof Headers)) { - throw new TypeError('Illegal invocation') - } + ObjectValue(node) { + const type = getNamedType(context.getInputType()); - if (arguments.length < 1) { - throw new TypeError( - `Failed to execute 'get' on 'Headers': 1 argument required, but only ${arguments.length} present.` - ) - } + if (!isInputObjectType(type)) { + isValidValueNode(context, node); + return false; // Don't traverse further. + } // Ensure every required field exists. - name = webidl.converters.ByteString(name); + const fieldNodeMap = keyMap(node.fields, (field) => field.name.value); - // 1. If name is not a header name, then throw a TypeError. - if (!isValidHeaderName(name)) { - webidl.errors.invalidArgument({ - prefix: 'Headers.get', - value: name, - type: 'header name' - }); - } + for (const fieldDef of Object.values(type.getFields())) { + const fieldNode = fieldNodeMap[fieldDef.name]; - // 2. Return the result of getting name from this’s header - // list. - return this[kHeadersList].get(name) - } + if (!fieldNode && isRequiredInputField(fieldDef)) { + const typeStr = inspect$1(fieldDef.type); + context.reportError( + new GraphQLError( + `Field "${type.name}.${fieldDef.name}" of required type "${typeStr}" was not provided.`, + { + nodes: node, + }, + ), + ); + } + } + }, - // https://fetch.spec.whatwg.org/#dom-headers-has - has (name) { - if (!(this instanceof Headers)) { - throw new TypeError('Illegal invocation') - } + ObjectField(node) { + const parentType = getNamedType(context.getParentInputType()); + const fieldType = context.getInputType(); - if (arguments.length < 1) { - throw new TypeError( - `Failed to execute 'has' on 'Headers': 1 argument required, but only ${arguments.length} present.` - ) - } + if (!fieldType && isInputObjectType(parentType)) { + const suggestions = suggestionList( + node.name.value, + Object.keys(parentType.getFields()), + ); + context.reportError( + new GraphQLError( + `Field "${node.name.value}" is not defined by type "${parentType.name}".` + + didYouMean(suggestions), + { + nodes: node, + }, + ), + ); + } + }, - name = webidl.converters.ByteString(name); + NullValue(node) { + const type = context.getInputType(); - // 1. If name is not a header name, then throw a TypeError. - if (!isValidHeaderName(name)) { - webidl.errors.invalidArgument({ - prefix: 'Headers.has', - value: name, - type: 'header name' - }); - } + if (isNonNullType(type)) { + context.reportError( + new GraphQLError( + `Expected value of type "${inspect$1(type)}", found ${print(node)}.`, + { + nodes: node, + }, + ), + ); + } + }, - // 2. Return true if this’s header list contains name; - // otherwise false. - return this[kHeadersList].contains(name) - } + EnumValue: (node) => isValidValueNode(context, node), + IntValue: (node) => isValidValueNode(context, node), + FloatValue: (node) => isValidValueNode(context, node), + StringValue: (node) => isValidValueNode(context, node), + BooleanValue: (node) => isValidValueNode(context, node), + }; +} +/** + * Any value literal may be a valid representation of a Scalar, depending on + * that scalar type. + */ - // https://fetch.spec.whatwg.org/#dom-headers-set - set (name, value) { - if (!(this instanceof Headers)) { - throw new TypeError('Illegal invocation') - } +function isValidValueNode(context, node) { + // Report any error at the full type expected by the location. + const locationType = context.getInputType(); - if (arguments.length < 2) { - throw new TypeError( - `Failed to execute 'set' on 'Headers': 2 arguments required, but only ${arguments.length} present.` - ) - } + if (!locationType) { + return; + } - name = webidl.converters.ByteString(name); - value = webidl.converters.ByteString(value); + const type = getNamedType(locationType); - // 1. Normalize value. - value = headerValueNormalize(value); + if (!isLeafType(type)) { + const typeStr = inspect$1(locationType); + context.reportError( + new GraphQLError( + `Expected value of type "${typeStr}", found ${print(node)}.`, + { + nodes: node, + }, + ), + ); + return; + } // Scalars and Enums determine if a literal value is valid via parseLiteral(), + // which may throw or return an invalid value to indicate failure. - // 2. If name is not a header name or value is not a - // header value, then throw a TypeError. - if (!isValidHeaderName(name)) { - webidl.errors.invalidArgument({ - prefix: 'Headers.set', - value: name, - type: 'header name' - }); - } else if (!isValidHeaderValue(value)) { - webidl.errors.invalidArgument({ - prefix: 'Headers.set', - value, - type: 'header value' - }); - } + try { + const parseResult = type.parseLiteral( + node, + undefined, + /* variables */ + ); - // 3. If this’s guard is "immutable", then throw a TypeError. - // 4. Otherwise, if this’s guard is "request" and name is a - // forbidden header name, return. - // 5. Otherwise, if this’s guard is "request-no-cors" and - // name/value is not a no-CORS-safelisted request-header, - // return. - // 6. Otherwise, if this’s guard is "response" and name is a - // forbidden response-header name, return. - // Note: undici does not implement forbidden header names - if (this[kGuard] === 'immutable') { - throw new TypeError('immutable') - } else if (this[kGuard] === 'request-no-cors') ; - - // 7. Set (name, value) in this’s header list. - // 8. If this’s guard is "request-no-cors", then remove - // privileged no-CORS request headers from this - return this[kHeadersList].set(name, value) - } + if (parseResult === undefined) { + const typeStr = inspect$1(locationType); + context.reportError( + new GraphQLError( + `Expected value of type "${typeStr}", found ${print(node)}.`, + { + nodes: node, + }, + ), + ); + } + } catch (error) { + const typeStr = inspect$1(locationType); - get [kHeadersSortedMap] () { - this[kHeadersList][kHeadersSortedMap] ??= new Map([...this[kHeadersList]].sort((a, b) => a[0] < b[0] ? -1 : 1)); - return this[kHeadersList][kHeadersSortedMap] - } + if (error instanceof GraphQLError) { + context.reportError(error); + } else { + context.reportError( + new GraphQLError( + `Expected value of type "${typeStr}", found ${print(node)}; ` + + error.message, + { + nodes: node, + originalError: error, + }, + ), + ); + } + } +} - keys () { - if (!(this instanceof Headers)) { - throw new TypeError('Illegal invocation') - } +/** + * Variables are input types + * + * A GraphQL operation is only valid if all the variables it defines are of + * input types (scalar, enum, or input object). + * + * See https://spec.graphql.org/draft/#sec-Variables-Are-Input-Types + */ +function VariablesAreInputTypesRule(context) { + return { + VariableDefinition(node) { + const type = typeFromAST(context.getSchema(), node.type); - return makeIterator(this[kHeadersSortedMap].keys(), 'Headers') - } + if (type !== undefined && !isInputType(type)) { + const variableName = node.variable.name.value; + const typeName = print(node.type); + context.reportError( + new GraphQLError( + `Variable "$${variableName}" cannot be non-input type "${typeName}".`, + { + nodes: node.type, + }, + ), + ); + } + }, + }; +} - values () { - if (!(this instanceof Headers)) { - throw new TypeError('Illegal invocation') - } +/** + * Variables in allowed position + * + * Variable usages must be compatible with the arguments they are passed to. + * + * See https://spec.graphql.org/draft/#sec-All-Variable-Usages-are-Allowed + */ +function VariablesInAllowedPositionRule(context) { + let varDefMap = Object.create(null); + return { + OperationDefinition: { + enter() { + varDefMap = Object.create(null); + }, - return makeIterator(this[kHeadersSortedMap].values(), 'Headers') - } + leave(operation) { + const usages = context.getRecursiveVariableUsages(operation); - entries () { - if (!(this instanceof Headers)) { - throw new TypeError('Illegal invocation') - } + for (const { node, type, defaultValue } of usages) { + const varName = node.name.value; + const varDef = varDefMap[varName]; - return makeIterator(this[kHeadersSortedMap].entries(), 'Headers') - } + if (varDef && type) { + // A var type is allowed if it is the same or more strict (e.g. is + // a subtype of) than the expected type. It can be more strict if + // the variable type is non-null when the expected type is nullable. + // If both are list types, the variable item type can be more strict + // than the expected item type (contravariant). + const schema = context.getSchema(); + const varType = typeFromAST(schema, varDef.type); - /** - * @param {(value: string, key: string, self: Headers) => void} callbackFn - * @param {unknown} thisArg - */ - forEach (callbackFn, thisArg = globalThis) { - if (!(this instanceof Headers)) { - throw new TypeError('Illegal invocation') - } + if ( + varType && + !allowedVariableUsage( + schema, + varType, + varDef.defaultValue, + type, + defaultValue, + ) + ) { + const varTypeStr = inspect$1(varType); + const typeStr = inspect$1(type); + context.reportError( + new GraphQLError( + `Variable "$${varName}" of type "${varTypeStr}" used in position expecting type "${typeStr}".`, + { + nodes: [varDef, node], + }, + ), + ); + } + } + } + }, + }, - if (arguments.length < 1) { - throw new TypeError( - `Failed to execute 'forEach' on 'Headers': 1 argument required, but only ${arguments.length} present.` - ) - } + VariableDefinition(node) { + varDefMap[node.variable.name.value] = node; + }, + }; +} +/** + * Returns true if the variable is allowed in the location it was found, + * which includes considering if default values exist for either the variable + * or the location at which it is located. + */ - if (typeof callbackFn !== 'function') { - throw new TypeError( - "Failed to execute 'forEach' on 'Headers': parameter 1 is not of type 'Function'." - ) - } +function allowedVariableUsage( + schema, + varType, + varDefaultValue, + locationType, + locationDefaultValue, +) { + if (isNonNullType(locationType) && !isNonNullType(varType)) { + const hasNonNullVariableDefaultValue = + varDefaultValue != null && varDefaultValue.kind !== Kind.NULL; + const hasLocationDefaultValue = locationDefaultValue !== undefined; - for (const [key, value] of this) { - callbackFn.apply(thisArg, [value, key, this]); - } - } + if (!hasNonNullVariableDefaultValue && !hasLocationDefaultValue) { + return false; + } - [Symbol.for('nodejs.util.inspect.custom')] () { - if (!(this instanceof Headers)) { - throw new TypeError('Illegal invocation') - } + const nullableLocationType = locationType.ofType; + return isTypeSubTypeOf(schema, varType, nullableLocationType); + } - return this[kHeadersList] - } - } + return isTypeSubTypeOf(schema, varType, locationType); +} - Headers.prototype[Symbol.iterator] = Headers.prototype.entries; - - Object.defineProperties(Headers.prototype, { - append: kEnumerableProperty, - delete: kEnumerableProperty, - get: kEnumerableProperty, - has: kEnumerableProperty, - set: kEnumerableProperty, - keys: kEnumerableProperty, - values: kEnumerableProperty, - entries: kEnumerableProperty, - forEach: kEnumerableProperty - }); +// Spec Section: "Executable Definitions" - webidl.converters.HeadersInit = function (V) { - if (webidl.util.Type(V) === 'Object') { - if (V[Symbol.iterator]) { - return webidl.converters['sequence>'](V) - } +/** + * This set includes all validation rules defined by the GraphQL spec. + * + * The order of the rules in this list has been adjusted to lead to the + * most clear output when encountering multiple validation errors. + */ +const specifiedRules = Object.freeze([ + ExecutableDefinitionsRule, + UniqueOperationNamesRule, + LoneAnonymousOperationRule, + SingleFieldSubscriptionsRule, + KnownTypeNamesRule, + FragmentsOnCompositeTypesRule, + VariablesAreInputTypesRule, + ScalarLeafsRule, + FieldsOnCorrectTypeRule, + UniqueFragmentNamesRule, + KnownFragmentNamesRule, + NoUnusedFragmentsRule, + PossibleFragmentSpreadsRule, + NoFragmentCyclesRule, + UniqueVariableNamesRule, + NoUndefinedVariablesRule, + NoUnusedVariablesRule, + KnownDirectivesRule, + UniqueDirectivesPerLocationRule, + KnownArgumentNamesRule, + UniqueArgumentNamesRule, + ValuesOfCorrectTypeRule, + ProvidedRequiredArgumentsRule, + VariablesInAllowedPositionRule, + OverlappingFieldsCanBeMergedRule, + UniqueInputFieldNamesRule, +]); +/** + * @internal + */ - return webidl.converters['record'](V) - } +const specifiedSDLRules = Object.freeze([ + LoneSchemaDefinitionRule, + UniqueOperationTypesRule, + UniqueTypeNamesRule, + UniqueEnumValueNamesRule, + UniqueFieldDefinitionNamesRule, + UniqueArgumentDefinitionNamesRule, + UniqueDirectiveNamesRule, + KnownTypeNamesRule, + KnownDirectivesRule, + UniqueDirectivesPerLocationRule, + PossibleTypeExtensionsRule, + KnownArgumentNamesOnDirectivesRule, + UniqueArgumentNamesRule, + UniqueInputFieldNamesRule, + ProvidedRequiredArgumentsOnDirectivesRule, +]); - webidl.errors.conversionFailed({ - prefix: 'Headers constructor', - argument: 'Argument 1', - types: ['sequence>', 'record'] - }); - }; +/** + * An instance of this class is passed as the "this" context to all validators, + * allowing access to commonly useful contextual information from within a + * validation rule. + */ +class ASTValidationContext { + constructor(ast, onError) { + this._ast = ast; + this._fragments = undefined; + this._fragmentSpreads = new Map(); + this._recursivelyReferencedFragments = new Map(); + this._onError = onError; + } - headers = { - fill, - Headers, - HeadersList - }; - return headers; -} - -var response; -var hasRequiredResponse; - -function requireResponse () { - if (hasRequiredResponse) return response; - hasRequiredResponse = 1; - - const { Headers, HeadersList, fill } = requireHeaders(); - const { extractBody, cloneBody, mixinBody } = requireBody(); - const util = requireUtil$1(); - const { kEnumerableProperty } = util; - const { - responseURL, - isValidReasonPhrase, - isCancelled, - isAborted, - isBlobLike, - serializeJavascriptValueToJSONString, - isErrorLike - } = requireUtil(); - const { - redirectStatus, - nullBodyStatus, - DOMException - } = requireConstants$1(); - const { kState, kHeaders, kGuard, kRealm } = requireSymbols(); - const { webidl } = requireWebidl(); - const { FormData } = requireFormdata(); - const { kHeadersList } = requireSymbols$1(); - const assert = require$$0$3; - const { types } = require$$0$2; - - const ReadableStream = globalThis.ReadableStream || require$$10.ReadableStream; - - // https://fetch.spec.whatwg.org/#response-class - class Response { - // Creates network error Response. - static error () { - // TODO - const relevantRealm = { settingsObject: {} }; - - // The static error() method steps are to return the result of creating a - // Response object, given a new network error, "immutable", and this’s - // relevant Realm. - const responseObject = new Response(); - responseObject[kState] = makeNetworkError(); - responseObject[kRealm] = relevantRealm; - responseObject[kHeaders][kHeadersList] = responseObject[kState].headersList; - responseObject[kHeaders][kGuard] = 'immutable'; - responseObject[kHeaders][kRealm] = relevantRealm; - return responseObject - } + get [Symbol.toStringTag]() { + return 'ASTValidationContext'; + } - // https://fetch.spec.whatwg.org/#dom-response-json - static json (data, init = {}) { - if (arguments.length === 0) { - throw new TypeError( - 'Failed to execute \'json\' on \'Response\': 1 argument required, but 0 present.' - ) - } + reportError(error) { + this._onError(error); + } - if (init !== null) { - init = webidl.converters.ResponseInit(init); - } + getDocument() { + return this._ast; + } - // 1. Let bytes the result of running serialize a JavaScript value to JSON bytes on data. - const bytes = new TextEncoder('utf-8').encode( - serializeJavascriptValueToJSONString(data) - ); + getFragment(name) { + let fragments; - // 2. Let body be the result of extracting bytes. - const body = extractBody(bytes); + if (this._fragments) { + fragments = this._fragments; + } else { + fragments = Object.create(null); - // 3. Let responseObject be the result of creating a Response object, given a new response, - // "response", and this’s relevant Realm. - const relevantRealm = { settingsObject: {} }; - const responseObject = new Response(); - responseObject[kRealm] = relevantRealm; - responseObject[kHeaders][kGuard] = 'response'; - responseObject[kHeaders][kRealm] = relevantRealm; + for (const defNode of this.getDocument().definitions) { + if (defNode.kind === Kind.FRAGMENT_DEFINITION) { + fragments[defNode.name.value] = defNode; + } + } - // 4. Perform initialize a response given responseObject, init, and (body, "application/json"). - initializeResponse(responseObject, init, { body: body[0], type: 'application/json' }); + this._fragments = fragments; + } - // 5. Return responseObject. - return responseObject - } + return fragments[name]; + } - // Creates a redirect Response that redirects to url with status status. - static redirect (url, status = 302) { - const relevantRealm = { settingsObject: {} }; + getFragmentSpreads(node) { + let spreads = this._fragmentSpreads.get(node); - if (arguments.length < 1) { - throw new TypeError( - `Failed to execute 'redirect' on 'Response': 1 argument required, but only ${arguments.length} present.` - ) - } + if (!spreads) { + spreads = []; + const setsToVisit = [node]; + let set; - url = webidl.converters.USVString(url); - status = webidl.converters['unsigned short'](status); - - // 1. Let parsedURL be the result of parsing url with current settings - // object’s API base URL. - // 2. If parsedURL is failure, then throw a TypeError. - // TODO: base-URL? - let parsedURL; - try { - parsedURL = new URL(url); - } catch (err) { - throw Object.assign(new TypeError('Failed to parse URL from ' + url), { - cause: err - }) - } + while ((set = setsToVisit.pop())) { + for (const selection of set.selections) { + if (selection.kind === Kind.FRAGMENT_SPREAD) { + spreads.push(selection); + } else if (selection.selectionSet) { + setsToVisit.push(selection.selectionSet); + } + } + } - // 3. If status is not a redirect status, then throw a RangeError. - if (!redirectStatus.includes(status)) { - throw new RangeError('Invalid status code') - } + this._fragmentSpreads.set(node, spreads); + } - // 4. Let responseObject be the result of creating a Response object, - // given a new response, "immutable", and this’s relevant Realm. - const responseObject = new Response(); - responseObject[kRealm] = relevantRealm; - responseObject[kHeaders][kGuard] = 'immutable'; - responseObject[kHeaders][kRealm] = relevantRealm; + return spreads; + } - // 5. Set responseObject’s response’s status to status. - responseObject[kState].status = status; + getRecursivelyReferencedFragments(operation) { + let fragments = this._recursivelyReferencedFragments.get(operation); - // 6. Let value be parsedURL, serialized and isomorphic encoded. - // TODO: isomorphic encoded? - const value = parsedURL.toString(); + if (!fragments) { + fragments = []; + const collectedNames = Object.create(null); + const nodesToVisit = [operation.selectionSet]; + let node; - // 7. Append `Location`/value to responseObject’s response’s header list. - responseObject[kState].headersList.append('location', value); + while ((node = nodesToVisit.pop())) { + for (const spread of this.getFragmentSpreads(node)) { + const fragName = spread.name.value; - // 8. Return responseObject. - return responseObject - } + if (collectedNames[fragName] !== true) { + collectedNames[fragName] = true; + const fragment = this.getFragment(fragName); - // https://fetch.spec.whatwg.org/#dom-response - constructor (body = null, init = {}) { - if (body !== null) { - body = webidl.converters.BodyInit(body); - } + if (fragment) { + fragments.push(fragment); + nodesToVisit.push(fragment.selectionSet); + } + } + } + } - init = webidl.converters.ResponseInit(init); + this._recursivelyReferencedFragments.set(operation, fragments); + } - // TODO - this[kRealm] = { settingsObject: {} }; + return fragments; + } +} +class SDLValidationContext extends ASTValidationContext { + constructor(ast, schema, onError) { + super(ast, onError); + this._schema = schema; + } - // 1. Set this’s response to a new response. - this[kState] = makeResponse({}); + get [Symbol.toStringTag]() { + return 'SDLValidationContext'; + } - // 2. Set this’s headers to a new Headers object with this’s relevant - // Realm, whose header list is this’s response’s header list and guard - // is "response". - this[kHeaders] = new Headers(); - this[kHeaders][kGuard] = 'response'; - this[kHeaders][kHeadersList] = this[kState].headersList; - this[kHeaders][kRealm] = this[kRealm]; + getSchema() { + return this._schema; + } +} +class ValidationContext extends ASTValidationContext { + constructor(schema, ast, typeInfo, onError) { + super(ast, onError); + this._schema = schema; + this._typeInfo = typeInfo; + this._variableUsages = new Map(); + this._recursiveVariableUsages = new Map(); + } - // 3. Let bodyWithType be null. - let bodyWithType = null; + get [Symbol.toStringTag]() { + return 'ValidationContext'; + } - // 4. If body is non-null, then set bodyWithType to the result of extracting body. - if (body != null) { - const [extractedBody, type] = extractBody(body); - bodyWithType = { body: extractedBody, type }; - } + getSchema() { + return this._schema; + } - // 5. Perform initialize a response given this, init, and bodyWithType. - initializeResponse(this, init, bodyWithType); - } + getVariableUsages(node) { + let usages = this._variableUsages.get(node); - get [Symbol.toStringTag] () { - return this.constructor.name - } + if (!usages) { + const newUsages = []; + const typeInfo = new TypeInfo(this._schema); + visit( + node, + visitWithTypeInfo(typeInfo, { + VariableDefinition: () => false, - // Returns response’s type, e.g., "cors". - get type () { - if (!(this instanceof Response)) { - throw new TypeError('Illegal invocation') - } + Variable(variable) { + newUsages.push({ + node: variable, + type: typeInfo.getInputType(), + defaultValue: typeInfo.getDefaultValue(), + }); + }, + }), + ); + usages = newUsages; - // The type getter steps are to return this’s response’s type. - return this[kState].type - } + this._variableUsages.set(node, usages); + } - // Returns response’s URL, if it has one; otherwise the empty string. - get url () { - if (!(this instanceof Response)) { - throw new TypeError('Illegal invocation') - } + return usages; + } - // The url getter steps are to return the empty string if this’s - // response’s URL is null; otherwise this’s response’s URL, - // serialized with exclude fragment set to true. - let url = responseURL(this[kState]); + getRecursiveVariableUsages(operation) { + let usages = this._recursiveVariableUsages.get(operation); - if (url == null) { - return '' - } + if (!usages) { + usages = this.getVariableUsages(operation); - if (url.hash) { - url = new URL(url); - url.hash = ''; - } + for (const frag of this.getRecursivelyReferencedFragments(operation)) { + usages = usages.concat(this.getVariableUsages(frag)); + } - return url.toString() - } + this._recursiveVariableUsages.set(operation, usages); + } - // Returns whether response was obtained through a redirect. - get redirected () { - if (!(this instanceof Response)) { - throw new TypeError('Illegal invocation') - } + return usages; + } - // The redirected getter steps are to return true if this’s response’s URL - // list has more than one item; otherwise false. - return this[kState].urlList.length > 1 - } + getType() { + return this._typeInfo.getType(); + } - // Returns response’s status. - get status () { - if (!(this instanceof Response)) { - throw new TypeError('Illegal invocation') - } + getParentType() { + return this._typeInfo.getParentType(); + } - // The status getter steps are to return this’s response’s status. - return this[kState].status - } + getInputType() { + return this._typeInfo.getInputType(); + } - // Returns whether response’s status is an ok status. - get ok () { - if (!(this instanceof Response)) { - throw new TypeError('Illegal invocation') - } + getParentInputType() { + return this._typeInfo.getParentInputType(); + } - // The ok getter steps are to return true if this’s response’s status is an - // ok status; otherwise false. - return this[kState].status >= 200 && this[kState].status <= 299 - } + getFieldDef() { + return this._typeInfo.getFieldDef(); + } - // Returns response’s status message. - get statusText () { - if (!(this instanceof Response)) { - throw new TypeError('Illegal invocation') - } + getDirective() { + return this._typeInfo.getDirective(); + } - // The statusText getter steps are to return this’s response’s status - // message. - return this[kState].statusText - } + getArgument() { + return this._typeInfo.getArgument(); + } - // Returns response’s headers as Headers. - get headers () { - if (!(this instanceof Response)) { - throw new TypeError('Illegal invocation') - } + getEnumValue() { + return this._typeInfo.getEnumValue(); + } +} - // The headers getter steps are to return this’s headers. - return this[kHeaders] - } +/** + * Implements the "Validation" section of the spec. + * + * Validation runs synchronously, returning an array of encountered errors, or + * an empty array if no errors were encountered and the document is valid. + * + * A list of specific validation rules may be provided. If not provided, the + * default list of rules defined by the GraphQL specification will be used. + * + * Each validation rules is a function which returns a visitor + * (see the language/visitor API). Visitor methods are expected to return + * GraphQLErrors, or Arrays of GraphQLErrors when invalid. + * + * Validate will stop validation after a `maxErrors` limit has been reached. + * Attackers can send pathologically invalid queries to induce a DoS attack, + * so by default `maxErrors` set to 100 errors. + * + * Optionally a custom TypeInfo instance may be provided. If not provided, one + * will be created from the provided schema. + */ - // Returns a clone of response. - clone () { - if (!(this instanceof Response)) { - throw new TypeError('Illegal invocation') - } +function validate( + schema, + documentAST, + rules = specifiedRules, + options, + /** @deprecated will be removed in 17.0.0 */ + typeInfo = new TypeInfo(schema), +) { + var _options$maxErrors; - // 1. If this is unusable, then throw a TypeError. - if (this.bodyUsed || (this.body && this.body.locked)) { - webidl.errors.exception({ - header: 'Response.clone', - message: 'Body has already been consumed.' - }); - } + const maxErrors = + (_options$maxErrors = + options === null || options === void 0 ? void 0 : options.maxErrors) !== + null && _options$maxErrors !== void 0 + ? _options$maxErrors + : 100; + documentAST || devAssert(false, 'Must provide document.'); // If the schema used for validation is invalid, throw an error. - // 2. Let clonedResponse be the result of cloning this’s response. - const clonedResponse = cloneResponse(this[kState]); + assertValidSchema(schema); + const abortObj = Object.freeze({}); + const errors = []; + const context = new ValidationContext( + schema, + documentAST, + typeInfo, + (error) => { + if (errors.length >= maxErrors) { + errors.push( + new GraphQLError( + 'Too many validation errors, error limit reached. Validation aborted.', + ), + ); // eslint-disable-next-line @typescript-eslint/no-throw-literal - // 3. Return the result of creating a Response object, given - // clonedResponse, this’s headers’s guard, and this’s relevant Realm. - const clonedResponseObject = new Response(); - clonedResponseObject[kState] = clonedResponse; - clonedResponseObject[kRealm] = this[kRealm]; - clonedResponseObject[kHeaders][kHeadersList] = clonedResponse.headersList; - clonedResponseObject[kHeaders][kGuard] = this[kHeaders][kGuard]; - clonedResponseObject[kHeaders][kRealm] = this[kHeaders][kRealm]; + throw abortObj; + } - return clonedResponseObject - } - } + errors.push(error); + }, + ); // This uses a specialized visitor which runs multiple visitors in parallel, + // while maintaining the visitor skip and break API. - mixinBody(Response); - - Object.defineProperties(Response.prototype, { - type: kEnumerableProperty, - url: kEnumerableProperty, - status: kEnumerableProperty, - ok: kEnumerableProperty, - redirected: kEnumerableProperty, - statusText: kEnumerableProperty, - headers: kEnumerableProperty, - clone: kEnumerableProperty - }); + const visitor = visitInParallel(rules.map((rule) => rule(context))); // Visit the whole document with each instance of all provided rules. - // https://fetch.spec.whatwg.org/#concept-response-clone - function cloneResponse (response) { - // To clone a response response, run these steps: - - // 1. If response is a filtered response, then return a new identical - // filtered response whose internal response is a clone of response’s - // internal response. - if (response.internalResponse) { - return filterResponse( - cloneResponse(response.internalResponse), - response.type - ) - } + try { + visit(documentAST, visitWithTypeInfo(typeInfo, visitor)); + } catch (e) { + if (e !== abortObj) { + throw e; + } + } - // 2. Let newResponse be a copy of response, except for its body. - const newResponse = makeResponse({ ...response, body: null }); + return errors; +} +/** + * @internal + */ - // 3. If response’s body is non-null, then set newResponse’s body to the - // result of cloning response’s body. - if (response.body != null) { - newResponse.body = cloneBody(response.body); - } +function validateSDL( + documentAST, + schemaToExtend, + rules = specifiedSDLRules, +) { + const errors = []; + const context = new SDLValidationContext( + documentAST, + schemaToExtend, + (error) => { + errors.push(error); + }, + ); + const visitors = rules.map((rule) => rule(context)); + visit(documentAST, visitInParallel(visitors)); + return errors; +} +/** + * Utility function which asserts a SDL document is valid by throwing an error + * if it is invalid. + * + * @internal + */ - // 4. Return newResponse. - return newResponse - } +function assertValidSDL(documentAST) { + const errors = validateSDL(documentAST); - function makeResponse (init) { - return { - aborted: false, - rangeRequested: false, - timingAllowPassed: false, - requestIncludesCredentials: false, - type: 'default', - status: 200, - timingInfo: null, - cacheState: '', - statusText: '', - ...init, - headersList: init.headersList - ? new HeadersList(init.headersList) - : new HeadersList(), - urlList: init.urlList ? [...init.urlList] : [] - } - } + if (errors.length !== 0) { + throw new Error(errors.map((error) => error.message).join('\n\n')); + } +} - function makeNetworkError (reason) { - const isError = isErrorLike(reason); - return makeResponse({ - type: 'error', - status: 0, - error: isError - ? reason - : new Error(reason ? String(reason) : reason, { - cause: isError ? reason : undefined - }), - aborted: reason && reason.name === 'AbortError' - }) - } +/** + * Memoizes the provided three-argument function. + */ +function memoize3(fn) { + let cache0; + return function memoized(a1, a2, a3) { + if (cache0 === undefined) { + cache0 = new WeakMap(); + } - function makeFilteredResponse (response, state) { - state = { - internalResponse: response, - ...state - }; + let cache1 = cache0.get(a1); - return new Proxy(response, { - get (target, p) { - return p in state ? state[p] : target[p] - }, - set (target, p, value) { - assert(!(p in state)); - target[p] = value; - return true - } - }) - } + if (cache1 === undefined) { + cache1 = new WeakMap(); + cache0.set(a1, cache1); + } - // https://fetch.spec.whatwg.org/#concept-filtered-response - function filterResponse (response, type) { - // Set response to the following filtered response with response as its - // internal response, depending on request’s response tainting: - if (type === 'basic') { - // A basic filtered response is a filtered response whose type is "basic" - // and header list excludes any headers in internal response’s header list - // whose name is a forbidden response-header name. - - // Note: undici does not implement forbidden response-header names - return makeFilteredResponse(response, { - type: 'basic', - headersList: response.headersList - }) - } else if (type === 'cors') { - // A CORS filtered response is a filtered response whose type is "cors" - // and header list excludes any headers in internal response’s header - // list whose name is not a CORS-safelisted response-header name, given - // internal response’s CORS-exposed header-name list. - - // Note: undici does not implement CORS-safelisted response-header names - return makeFilteredResponse(response, { - type: 'cors', - headersList: response.headersList - }) - } else if (type === 'opaque') { - // An opaque filtered response is a filtered response whose type is - // "opaque", URL list is the empty list, status is 0, status message - // is the empty byte sequence, header list is empty, and body is null. - - return makeFilteredResponse(response, { - type: 'opaque', - urlList: Object.freeze([]), - status: 0, - statusText: '', - body: null - }) - } else if (type === 'opaqueredirect') { - // An opaque-redirect filtered response is a filtered response whose type - // is "opaqueredirect", status is 0, status message is the empty byte - // sequence, header list is empty, and body is null. - - return makeFilteredResponse(response, { - type: 'opaqueredirect', - status: 0, - statusText: '', - headersList: [], - body: null - }) - } else { - assert(false); - } - } + let cache2 = cache1.get(a2); - // https://fetch.spec.whatwg.org/#appropriate-network-error - function makeAppropriateNetworkError (fetchParams) { - // 1. Assert: fetchParams is canceled. - assert(isCancelled(fetchParams)); + if (cache2 === undefined) { + cache2 = new WeakMap(); + cache1.set(a2, cache2); + } - // 2. Return an aborted network error if fetchParams is aborted; - // otherwise return a network error. - return isAborted(fetchParams) - ? makeNetworkError(new DOMException('The operation was aborted.', 'AbortError')) - : makeNetworkError(fetchParams.controller.terminated.reason) - } + let fnResult = cache2.get(a3); - // https://whatpr.org/fetch/1392.html#initialize-a-response - function initializeResponse (response, init, body) { - // 1. If init["status"] is not in the range 200 to 599, inclusive, then - // throw a RangeError. - if (init.status !== null && (init.status < 200 || init.status > 599)) { - throw new RangeError('init["status"] must be in the range of 200 to 599, inclusive.') - } + if (fnResult === undefined) { + fnResult = fn(a1, a2, a3); + cache2.set(a3, fnResult); + } - // 2. If init["statusText"] does not match the reason-phrase token production, - // then throw a TypeError. - if ('statusText' in init && init.statusText != null) { - // See, https://datatracker.ietf.org/doc/html/rfc7230#section-3.1.2: - // reason-phrase = *( HTAB / SP / VCHAR / obs-text ) - if (!isValidReasonPhrase(String(init.statusText))) { - throw new TypeError('Invalid statusText') - } - } + return fnResult; + }; +} - // 3. Set response’s response’s status to init["status"]. - if ('status' in init && init.status != null) { - response[kState].status = init.status; - } +/** + * This function transforms a JS object `ObjMap>` into + * a `Promise>` + * + * This is akin to bluebird's `Promise.props`, but implemented only using + * `Promise.all` so it will work with any implementation of ES6 promises. + */ +function promiseForObject(object) { + return Promise.all(Object.values(object)).then((resolvedValues) => { + const resolvedObject = Object.create(null); - // 4. Set response’s response’s status message to init["statusText"]. - if ('statusText' in init && init.statusText != null) { - response[kState].statusText = init.statusText; - } + for (const [i, key] of Object.keys(object).entries()) { + resolvedObject[key] = resolvedValues[i]; + } - // 5. If init["headers"] exists, then fill response’s headers with init["headers"]. - if ('headers' in init && init.headers != null) { - fill(response[kState].headersList, init.headers); - } + return resolvedObject; + }); +} - // 6. If body was given, then: - if (body) { - // 1. If response's status is a null body status, then throw a TypeError. - if (nullBodyStatus.includes(response.status)) { - webidl.errors.exception({ - header: 'Response constructor', - message: 'Invalid response status code.' - }); - } +/** + * Similar to Array.prototype.reduce(), however the reducing callback may return + * a Promise, in which case reduction will continue after each promise resolves. + * + * If the callback does not return a Promise, then this function will also not + * return a Promise. + */ +function promiseReduce(values, callbackFn, initialValue) { + let accumulator = initialValue; - // 2. Set response's body to body's body. - response[kState].body = body.body; + for (const value of values) { + accumulator = isPromise(accumulator) + ? accumulator.then((resolved) => callbackFn(resolved, value)) + : callbackFn(accumulator, value); + } - // 3. If body's type is non-null and response's header list does not contain - // `Content-Type`, then append (`Content-Type`, body's type) to response's header list. - if (body.type != null && !response[kState].headersList.has('Content-Type')) { - response[kState].headersList.append('content-type', body.type); - } - } - } + return accumulator; +} - webidl.converters.ReadableStream = webidl.interfaceConverter( - ReadableStream - ); +/** + * Sometimes a non-error is thrown, wrap it as an Error instance to ensure a consistent Error interface. + */ - webidl.converters.FormData = webidl.interfaceConverter( - FormData - ); +function toError(thrownValue) { + return thrownValue instanceof Error + ? thrownValue + : new NonErrorThrown(thrownValue); +} - webidl.converters.URLSearchParams = webidl.interfaceConverter( - URLSearchParams - ); +class NonErrorThrown extends Error { + constructor(thrownValue) { + super('Unexpected error value: ' + inspect$1(thrownValue)); + this.name = 'NonErrorThrown'; + this.thrownValue = thrownValue; + } +} - // https://fetch.spec.whatwg.org/#typedefdef-xmlhttprequestbodyinit - webidl.converters.XMLHttpRequestBodyInit = function (V) { - if (typeof V === 'string') { - return webidl.converters.USVString(V) - } +/** + * Given an arbitrary value, presumably thrown while attempting to execute a + * GraphQL operation, produce a new GraphQLError aware of the location in the + * document responsible for the original Error. + */ - if (isBlobLike(V)) { - return webidl.converters.Blob(V) - } +function locatedError(rawOriginalError, nodes, path) { + var _nodes; - if ( - types.isAnyArrayBuffer(V) || - types.isTypedArray(V) || - types.isDataView(V) - ) { - return webidl.converters.BufferSource(V) - } + const originalError = toError(rawOriginalError); // Note: this uses a brand-check to support GraphQL errors originating from other contexts. - if (V instanceof FormData) { - return webidl.converters.FormData(V) - } + if (isLocatedGraphQLError(originalError)) { + return originalError; + } - if (V instanceof URLSearchParams) { - return webidl.converters.URLSearchParams(V) - } + return new GraphQLError(originalError.message, { + nodes: + (_nodes = originalError.nodes) !== null && _nodes !== void 0 + ? _nodes + : nodes, + source: originalError.source, + positions: originalError.positions, + path, + originalError, + }); +} - return webidl.converters.DOMString(V) - }; +function isLocatedGraphQLError(error) { + return Array.isArray(error.path); +} - // https://fetch.spec.whatwg.org/#bodyinit - webidl.converters.BodyInit = function (V) { - if (V instanceof ReadableStream) { - return webidl.converters.ReadableStream(V) - } +/** + * A memoized collection of relevant subfields with regard to the return + * type. Memoizing ensures the subfields are not repeatedly calculated, which + * saves overhead when resolving lists of values. + */ - // Note: the spec doesn't include async iterables, - // this is an undici extension. - if (V?.[Symbol.asyncIterator]) { - return V - } +const collectSubfields = memoize3((exeContext, returnType, fieldNodes) => + collectSubfields$1( + exeContext.schema, + exeContext.fragments, + exeContext.variableValues, + returnType, + fieldNodes, + ), +); +/** + * Terminology + * + * "Definitions" are the generic name for top-level statements in the document. + * Examples of this include: + * 1) Operations (such as a query) + * 2) Fragments + * + * "Operations" are a generic name for requests in the document. + * Examples of this include: + * 1) query, + * 2) mutation + * + * "Selections" are the definitions that can appear legally and at + * single level of the query. These include: + * 1) field references e.g `a` + * 2) fragment "spreads" e.g. `...c` + * 3) inline fragment "spreads" e.g. `...on Type { a }` + */ - return webidl.converters.XMLHttpRequestBodyInit(V) - }; +/** + * Data that must be available at all points during query execution. + * + * Namely, schema of the type system that is currently executing, + * and the fragments defined in the query document + */ - webidl.converters.ResponseInit = webidl.dictionaryConverter([ - { - key: 'status', - converter: webidl.converters['unsigned short'], - defaultValue: 200 - }, - { - key: 'statusText', - converter: webidl.converters.ByteString, - defaultValue: '' - }, - { - key: 'headers', - converter: webidl.converters.HeadersInit - } - ]); - - response = { - makeNetworkError, - makeResponse, - makeAppropriateNetworkError, - filterResponse, - Response - }; - return response; -} - -/* globals AbortController */ - -var request; -var hasRequiredRequest; - -function requireRequest () { - if (hasRequiredRequest) return request; - hasRequiredRequest = 1; - - const { extractBody, mixinBody, cloneBody } = requireBody(); - const { Headers, fill: fillHeaders, HeadersList } = requireHeaders(); - const { FinalizationRegistry } = requireDispatcherWeakref()(); - const util = requireUtil$1(); - const { - isValidHTTPToken, - sameOrigin, - normalizeMethod - } = requireUtil(); - const { - forbiddenMethods, - corsSafeListedMethods, - referrerPolicy, - requestRedirect, - requestMode, - requestCredentials, - requestCache - } = requireConstants$1(); - const { kEnumerableProperty } = util; - const { kHeaders, kSignal, kState, kGuard, kRealm } = requireSymbols(); - const { webidl } = requireWebidl(); - const { kHeadersList } = requireSymbols$1(); - const assert = require$$0$3; - - let TransformStream; - - const kInit = Symbol('init'); - - const requestFinalizer = new FinalizationRegistry(({ signal, abort }) => { - signal.removeEventListener('abort', abort); - }); +/** + * Implements the "Executing requests" section of the GraphQL specification. + * + * Returns either a synchronous ExecutionResult (if all encountered resolvers + * are synchronous), or a Promise of an ExecutionResult that will eventually be + * resolved and never rejected. + * + * If the arguments to this function do not result in a legal execution context, + * a GraphQLError will be thrown immediately explaining the invalid input. + */ +function execute$1(args) { + // Temporary for v15 to v16 migration. Remove in v17 + arguments.length < 2 || + devAssert( + false, + 'graphql@16 dropped long-deprecated support for positional arguments, please pass an object instead.', + ); + const { schema, document, variableValues, rootValue } = args; // If arguments are missing or incorrect, throw an error. - // https://fetch.spec.whatwg.org/#request-class - class Request { - // https://fetch.spec.whatwg.org/#dom-request - constructor (input, init = {}) { - if (input === kInit) { - return - } + assertValidExecutionArguments(schema, document, variableValues); // If a valid execution context cannot be created due to incorrect arguments, + // a "Response" with only errors is returned. - if (arguments.length < 1) { - throw new TypeError( - `Failed to construct 'Request': 1 argument required, but only ${arguments.length} present.` - ) - } + const exeContext = buildExecutionContext(args); // Return early errors if execution context failed. - input = webidl.converters.RequestInfo(input); - init = webidl.converters.RequestInit(init); + if (!('schema' in exeContext)) { + return { + errors: exeContext, + }; + } // Return a Promise that will eventually resolve to the data described by + // The "Response" section of the GraphQL specification. + // + // If errors are encountered while executing a GraphQL field, only that + // field and its descendants will be omitted, and sibling fields will still + // be executed. An execution which encounters errors will still result in a + // resolved Promise. + // + // Errors from sub-fields of a NonNull type may propagate to the top level, + // at which point we still log the error and null the parent field, which + // in this case is the entire response. - // TODO - this[kRealm] = { settingsObject: {} }; + try { + const { operation } = exeContext; + const result = executeOperation(exeContext, operation, rootValue); - // 1. Let request be null. - let request = null; + if (isPromise(result)) { + return result.then( + (data) => buildResponse(data, exeContext.errors), + (error) => { + exeContext.errors.push(error); + return buildResponse(null, exeContext.errors); + }, + ); + } - // 2. Let fallbackMode be null. - let fallbackMode = null; + return buildResponse(result, exeContext.errors); + } catch (error) { + exeContext.errors.push(error); + return buildResponse(null, exeContext.errors); + } +} +/** + * Given a completed execution context and data, build the `{ errors, data }` + * response defined by the "Response" section of the GraphQL specification. + */ - // 3. Let baseURL be this’s relevant settings object’s API base URL. - const baseUrl = this[kRealm].settingsObject.baseUrl; +function buildResponse(data, errors) { + return errors.length === 0 + ? { + data, + } + : { + errors, + data, + }; +} +/** + * Essential assertions before executing to provide developer feedback for + * improper use of the GraphQL library. + * + * @internal + */ - // 4. Let signal be null. - let signal = null; +function assertValidExecutionArguments( + schema, + document, + rawVariableValues, +) { + document || devAssert(false, 'Must provide document.'); // If the schema used for execution is invalid, throw an error. - // 5. If input is a string, then: - if (typeof input === 'string') { - // 1. Let parsedURL be the result of parsing input with baseURL. - // 2. If parsedURL is failure, then throw a TypeError. - let parsedURL; - try { - parsedURL = new URL(input, baseUrl); - } catch (err) { - throw new TypeError('Failed to parse URL from ' + input, { cause: err }) - } + assertValidSchema(schema); // Variables, if provided, must be an object. - // 3. If parsedURL includes credentials, then throw a TypeError. - if (parsedURL.username || parsedURL.password) { - throw new TypeError( - 'Request cannot be constructed from a URL that includes credentials: ' + - input - ) - } + rawVariableValues == null || + isObjectLike(rawVariableValues) || + devAssert( + false, + 'Variables must be provided as an Object where each property is a variable value. Perhaps look to see if an unparsed JSON string was provided.', + ); +} +/** + * Constructs a ExecutionContext object from the arguments passed to + * execute, which we will pass throughout the other execution methods. + * + * Throws a GraphQLError if a valid execution context cannot be created. + * + * @internal + */ - // 4. Set request to a new request whose URL is parsedURL. - request = makeRequest({ urlList: [parsedURL] }); +function buildExecutionContext(args) { + var _definition$name, _operation$variableDe; - // 5. Set fallbackMode to "cors". - fallbackMode = 'cors'; - } else { - // 6. Otherwise: + const { + schema, + document, + rootValue, + contextValue, + variableValues: rawVariableValues, + operationName, + fieldResolver, + typeResolver, + subscribeFieldResolver, + } = args; + let operation; + const fragments = Object.create(null); - // 7. Assert: input is a Request object. - assert(input instanceof Request); + for (const definition of document.definitions) { + switch (definition.kind) { + case Kind.OPERATION_DEFINITION: + if (operationName == null) { + if (operation !== undefined) { + return [ + new GraphQLError( + 'Must provide operation name if query contains multiple operations.', + ), + ]; + } - // 8. Set request to input’s request. - request = input[kState]; + operation = definition; + } else if ( + ((_definition$name = definition.name) === null || + _definition$name === void 0 + ? void 0 + : _definition$name.value) === operationName + ) { + operation = definition; + } - // 9. Set signal to input’s signal. - signal = input[kSignal]; - } + break; - // 7. Let origin be this’s relevant settings object’s origin. - const origin = this[kRealm].settingsObject.origin; + case Kind.FRAGMENT_DEFINITION: + fragments[definition.name.value] = definition; + break; + } + } - // 8. Let window be "client". - let window = 'client'; + if (!operation) { + if (operationName != null) { + return [new GraphQLError(`Unknown operation named "${operationName}".`)]; + } - // 9. If request’s window is an environment settings object and its origin - // is same origin with origin, then set window to request’s window. - if ( - request.window?.constructor?.name === 'EnvironmentSettingsObject' && - sameOrigin(request.window, origin) - ) { - window = request.window; - } + return [new GraphQLError('Must provide an operation.')]; + } // FIXME: https://github.com/graphql/graphql-js/issues/2203 - // 10. If init["window"] exists and is non-null, then throw a TypeError. - if (init.window !== undefined && init.window != null) { - throw new TypeError(`'window' option '${window}' must be null`) - } + /* c8 ignore next */ - // 11. If init["window"] exists, then set window to "no-window". - if (init.window !== undefined) { - window = 'no-window'; - } + const variableDefinitions = + (_operation$variableDe = operation.variableDefinitions) !== null && + _operation$variableDe !== void 0 + ? _operation$variableDe + : []; + const coercedVariableValues = getVariableValues( + schema, + variableDefinitions, + rawVariableValues !== null && rawVariableValues !== void 0 + ? rawVariableValues + : {}, + { + maxErrors: 50, + }, + ); - // 12. Set request to a new request with the following properties: - request = makeRequest({ - // URL request’s URL. - // undici implementation note: this is set as the first item in request's urlList in makeRequest - // method request’s method. - method: request.method, - // header list A copy of request’s header list. - // undici implementation note: headersList is cloned in makeRequest - headersList: request.headersList, - // unsafe-request flag Set. - unsafeRequest: request.unsafeRequest, - // client This’s relevant settings object. - client: this[kRealm].settingsObject, - // window window. - window, - // priority request’s priority. - priority: request.priority, - // origin request’s origin. The propagation of the origin is only significant for navigation requests - // being handled by a service worker. In this scenario a request can have an origin that is different - // from the current client. - origin: request.origin, - // referrer request’s referrer. - referrer: request.referrer, - // referrer policy request’s referrer policy. - referrerPolicy: request.referrerPolicy, - // mode request’s mode. - mode: request.mode, - // credentials mode request’s credentials mode. - credentials: request.credentials, - // cache mode request’s cache mode. - cache: request.cache, - // redirect mode request’s redirect mode. - redirect: request.redirect, - // integrity metadata request’s integrity metadata. - integrity: request.integrity, - // keepalive request’s keepalive. - keepalive: request.keepalive, - // reload-navigation flag request’s reload-navigation flag. - reloadNavigation: request.reloadNavigation, - // history-navigation flag request’s history-navigation flag. - historyNavigation: request.historyNavigation, - // URL list A clone of request’s URL list. - urlList: [...request.urlList] - }); + if (coercedVariableValues.errors) { + return coercedVariableValues.errors; + } - // 13. If init is not empty, then: - if (Object.keys(init).length > 0) { - // 1. If request’s mode is "navigate", then set it to "same-origin". - if (request.mode === 'navigate') { - request.mode = 'same-origin'; - } + return { + schema, + fragments, + rootValue, + contextValue, + operation, + variableValues: coercedVariableValues.coerced, + fieldResolver: + fieldResolver !== null && fieldResolver !== void 0 + ? fieldResolver + : defaultFieldResolver, + typeResolver: + typeResolver !== null && typeResolver !== void 0 + ? typeResolver + : defaultTypeResolver, + subscribeFieldResolver: + subscribeFieldResolver !== null && subscribeFieldResolver !== void 0 + ? subscribeFieldResolver + : defaultFieldResolver, + errors: [], + }; +} +/** + * Implements the "Executing operations" section of the spec. + */ - // 2. Unset request’s reload-navigation flag. - request.reloadNavigation = false; +function executeOperation(exeContext, operation, rootValue) { + const rootType = exeContext.schema.getRootType(operation.operation); - // 3. Unset request’s history-navigation flag. - request.historyNavigation = false; + if (rootType == null) { + throw new GraphQLError( + `Schema is not configured to execute ${operation.operation} operation.`, + { + nodes: operation, + }, + ); + } - // 4. Set request’s origin to "client". - request.origin = 'client'; + const rootFields = collectFields( + exeContext.schema, + exeContext.fragments, + exeContext.variableValues, + rootType, + operation.selectionSet, + ); + const path = undefined; - // 5. Set request’s referrer to "client" - request.referrer = 'client'; + switch (operation.operation) { + case OperationTypeNode.QUERY: + return executeFields(exeContext, rootType, rootValue, path, rootFields); - // 6. Set request’s referrer policy to the empty string. - request.referrerPolicy = ''; + case OperationTypeNode.MUTATION: + return executeFieldsSerially( + exeContext, + rootType, + rootValue, + path, + rootFields, + ); - // 7. Set request’s URL to request’s current URL. - request.url = request.urlList[request.urlList.length - 1]; + case OperationTypeNode.SUBSCRIPTION: + // TODO: deprecate `subscribe` and move all logic here + // Temporary solution until we finish merging execute and subscribe together + return executeFields(exeContext, rootType, rootValue, path, rootFields); + } +} +/** + * Implements the "Executing selection sets" section of the spec + * for fields that must be executed serially. + */ - // 8. Set request’s URL list to « request’s URL ». - request.urlList = [request.url]; - } +function executeFieldsSerially( + exeContext, + parentType, + sourceValue, + path, + fields, +) { + return promiseReduce( + fields.entries(), + (results, [responseName, fieldNodes]) => { + const fieldPath = addPath(path, responseName, parentType.name); + const result = executeField( + exeContext, + parentType, + sourceValue, + fieldNodes, + fieldPath, + ); - // 14. If init["referrer"] exists, then: - if (init.referrer !== undefined) { - // 1. Let referrer be init["referrer"]. - const referrer = init.referrer; + if (result === undefined) { + return results; + } - // 2. If referrer is the empty string, then set request’s referrer to "no-referrer". - if (referrer === '') { - request.referrer = 'no-referrer'; - } else { - // 1. Let parsedReferrer be the result of parsing referrer with - // baseURL. - // 2. If parsedReferrer is failure, then throw a TypeError. - let parsedReferrer; - try { - parsedReferrer = new URL(referrer, baseUrl); - } catch (err) { - throw new TypeError(`Referrer "${referrer}" is not a valid URL.`, { cause: err }) - } + if (isPromise(result)) { + return result.then((resolvedResult) => { + results[responseName] = resolvedResult; + return results; + }); + } - // 3. If one of the following is true - // parsedReferrer’s cannot-be-a-base-URL is true, scheme is "about", - // and path contains a single string "client" - // parsedReferrer’s origin is not same origin with origin - // then set request’s referrer to "client". - // TODO + results[responseName] = result; + return results; + }, + Object.create(null), + ); +} +/** + * Implements the "Executing selection sets" section of the spec + * for fields that may be executed in parallel. + */ - // 4. Otherwise, set request’s referrer to parsedReferrer. - request.referrer = parsedReferrer; - } - } +function executeFields(exeContext, parentType, sourceValue, path, fields) { + const results = Object.create(null); + let containsPromise = false; - // 15. If init["referrerPolicy"] exists, then set request’s referrer policy - // to it. - if (init.referrerPolicy !== undefined) { - request.referrerPolicy = init.referrerPolicy; - if (!referrerPolicy.includes(request.referrerPolicy)) { - throw new TypeError( - `Failed to construct 'Request': The provided value '${request.referrerPolicy}' is not a valid enum value of type ReferrerPolicy.` - ) - } - } + for (const [responseName, fieldNodes] of fields.entries()) { + const fieldPath = addPath(path, responseName, parentType.name); + const result = executeField( + exeContext, + parentType, + sourceValue, + fieldNodes, + fieldPath, + ); - // 16. Let mode be init["mode"] if it exists, and fallbackMode otherwise. - let mode; - if (init.mode !== undefined) { - mode = init.mode; - if (!requestMode.includes(mode)) { - throw new TypeError( - `Failed to construct 'Request': The provided value '${request.mode}' is not a valid enum value of type RequestMode.` - ) - } - } else { - mode = fallbackMode; - } + if (result !== undefined) { + results[responseName] = result; - // 17. If mode is "navigate", then throw a TypeError. - if (mode === 'navigate') { - webidl.errors.exception({ - header: 'Request constructor', - message: 'invalid request mode navigate.' - }); - } + if (isPromise(result)) { + containsPromise = true; + } + } + } // If there are no promises, we can just return the object - // 18. If mode is non-null, set request’s mode to mode. - if (mode != null) { - request.mode = mode; - } + if (!containsPromise) { + return results; + } // Otherwise, results is a map from field name to the result of resolving that + // field, which is possibly a promise. Return a promise that will return this + // same map, but with any promises replaced with the values they resolved to. - // 19. If init["credentials"] exists, then set request’s credentials mode - // to it. - if (init.credentials !== undefined) { - request.credentials = init.credentials; - if (!requestCredentials.includes(request.credentials)) { - throw new TypeError( - `Failed to construct 'Request': The provided value '${request.credentials}' is not a valid enum value of type RequestCredentials.` - ) - } - } + return promiseForObject(results); +} +/** + * Implements the "Executing fields" section of the spec + * In particular, this function figures out the value that the field returns by + * calling its resolve function, then calls completeValue to complete promises, + * serialize scalars, or execute the sub-selection-set for objects. + */ - // 18. If init["cache"] exists, then set request’s cache mode to it. - if (init.cache !== undefined) { - request.cache = init.cache; - if (!requestCache.includes(request.cache)) { - throw new TypeError( - `Failed to construct 'Request': The provided value '${request.cache}' is not a valid enum value of type RequestCache.` - ) - } - } +function executeField(exeContext, parentType, source, fieldNodes, path) { + var _fieldDef$resolve; - // 21. If request’s cache mode is "only-if-cached" and request’s mode is - // not "same-origin", then throw a TypeError. - if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') { - throw new TypeError( - "'only-if-cached' can be set only with 'same-origin' mode" - ) - } + const fieldDef = getFieldDef(exeContext.schema, parentType, fieldNodes[0]); - // 22. If init["redirect"] exists, then set request’s redirect mode to it. - if (init.redirect !== undefined) { - request.redirect = init.redirect; - if (!requestRedirect.includes(request.redirect)) { - throw new TypeError( - `Failed to construct 'Request': The provided value '${request.redirect}' is not a valid enum value of type RequestRedirect.` - ) - } - } + if (!fieldDef) { + return; + } - // 23. If init["integrity"] exists, then set request’s integrity metadata to it. - if (init.integrity !== undefined && init.integrity != null) { - request.integrity = String(init.integrity); - } + const returnType = fieldDef.type; + const resolveFn = + (_fieldDef$resolve = fieldDef.resolve) !== null && + _fieldDef$resolve !== void 0 + ? _fieldDef$resolve + : exeContext.fieldResolver; + const info = buildResolveInfo( + exeContext, + fieldDef, + fieldNodes, + parentType, + path, + ); // Get the resolve function, regardless of if its result is normal or abrupt (error). - // 24. If init["keepalive"] exists, then set request’s keepalive to it. - if (init.keepalive !== undefined) { - request.keepalive = Boolean(init.keepalive); - } + try { + // Build a JS object of arguments from the field.arguments AST, using the + // variables scope to fulfill any variable references. + // TODO: find a way to memoize, in case this field is within a List type. + const args = getArgumentValues( + fieldDef, + fieldNodes[0], + exeContext.variableValues, + ); // The resolve function's optional third argument is a context value that + // is provided to every resolve function within an execution. It is commonly + // used to represent an authenticated user, or request-specific caches. - // 25. If init["method"] exists, then: - if (init.method !== undefined) { - // 1. Let method be init["method"]. - let method = init.method; + const contextValue = exeContext.contextValue; + const result = resolveFn(source, args, contextValue, info); + let completed; - // 2. If method is not a method or method is a forbidden method, then - // throw a TypeError. - if (!isValidHTTPToken(init.method)) { - throw TypeError(`'${init.method}' is not a valid HTTP method.`) - } + if (isPromise(result)) { + completed = result.then((resolved) => + completeValue(exeContext, returnType, fieldNodes, info, path, resolved), + ); + } else { + completed = completeValue( + exeContext, + returnType, + fieldNodes, + info, + path, + result, + ); + } - if (forbiddenMethods.indexOf(method.toUpperCase()) !== -1) { - throw TypeError(`'${init.method}' HTTP method is unsupported.`) - } + if (isPromise(completed)) { + // Note: we don't rely on a `catch` method, but we do expect "thenable" + // to take a second callback for the error case. + return completed.then(undefined, (rawError) => { + const error = locatedError(rawError, fieldNodes, pathToArray(path)); + return handleFieldError(error, returnType, exeContext); + }); + } - // 3. Normalize method. - method = normalizeMethod(init.method); + return completed; + } catch (rawError) { + const error = locatedError(rawError, fieldNodes, pathToArray(path)); + return handleFieldError(error, returnType, exeContext); + } +} +/** + * @internal + */ - // 4. Set request’s method to method. - request.method = method; - } +function buildResolveInfo( + exeContext, + fieldDef, + fieldNodes, + parentType, + path, +) { + // The resolve function's optional fourth argument is a collection of + // information about the current execution state. + return { + fieldName: fieldDef.name, + fieldNodes, + returnType: fieldDef.type, + parentType, + path, + schema: exeContext.schema, + fragments: exeContext.fragments, + rootValue: exeContext.rootValue, + operation: exeContext.operation, + variableValues: exeContext.variableValues, + }; +} - // 26. If init["signal"] exists, then set signal to it. - if (init.signal !== undefined) { - signal = init.signal; - } +function handleFieldError(error, returnType, exeContext) { + // If the field type is non-nullable, then it is resolved without any + // protection from errors, however it still properly locates the error. + if (isNonNullType(returnType)) { + throw error; + } // Otherwise, error protection is applied, logging the error and resolving + // a null value for this field if one is encountered. - // 27. Set this’s request to request. - this[kState] = request; - - // 28. Set this’s signal to a new AbortSignal object with this’s relevant - // Realm. - const ac = new AbortController(); - this[kSignal] = ac.signal; - this[kSignal][kRealm] = this[kRealm]; - - // 29. If signal is not null, then make this’s signal follow signal. - if (signal != null) { - if ( - !signal || - typeof signal.aborted !== 'boolean' || - typeof signal.addEventListener !== 'function' - ) { - throw new TypeError( - "Failed to construct 'Request': member signal is not of type AbortSignal." - ) - } + exeContext.errors.push(error); + return null; +} +/** + * Implements the instructions for completeValue as defined in the + * "Value Completion" section of the spec. + * + * If the field type is Non-Null, then this recursively completes the value + * for the inner type. It throws a field error if that completion returns null, + * as per the "Nullability" section of the spec. + * + * If the field type is a List, then this recursively completes the value + * for the inner type on each item in the list. + * + * If the field type is a Scalar or Enum, ensures the completed value is a legal + * value of the type by calling the `serialize` method of GraphQL type + * definition. + * + * If the field is an abstract type, determine the runtime type of the value + * and then complete based on that type + * + * Otherwise, the field type expects a sub-selection set, and will complete the + * value by executing all sub-selections. + */ - if (signal.aborted) { - ac.abort(signal.reason); - } else { - const abort = () => ac.abort(signal.reason); - signal.addEventListener('abort', abort, { once: true }); - requestFinalizer.register(this, { signal, abort }); - } - } +function completeValue(exeContext, returnType, fieldNodes, info, path, result) { + // If result is an Error, throw a located error. + if (result instanceof Error) { + throw result; + } // If field type is NonNull, complete for inner type, and throw field error + // if result is null. - // 30. Set this’s headers to a new Headers object with this’s relevant - // Realm, whose header list is request’s header list and guard is - // "request". - this[kHeaders] = new Headers(); - this[kHeaders][kHeadersList] = request.headersList; - this[kHeaders][kGuard] = 'request'; - this[kHeaders][kRealm] = this[kRealm]; - - // 31. If this’s request’s mode is "no-cors", then: - if (mode === 'no-cors') { - // 1. If this’s request’s method is not a CORS-safelisted method, - // then throw a TypeError. - if (!corsSafeListedMethods.includes(request.method)) { - throw new TypeError( - `'${request.method} is unsupported in no-cors mode.` - ) - } + if (isNonNullType(returnType)) { + const completed = completeValue( + exeContext, + returnType.ofType, + fieldNodes, + info, + path, + result, + ); - // 2. Set this’s headers’s guard to "request-no-cors". - this[kHeaders][kGuard] = 'request-no-cors'; - } + if (completed === null) { + throw new Error( + `Cannot return null for non-nullable field ${info.parentType.name}.${info.fieldName}.`, + ); + } - // 32. If init is not empty, then: - if (Object.keys(init).length !== 0) { - // 1. Let headers be a copy of this’s headers and its associated header - // list. - let headers = new Headers(this[kHeaders]); + return completed; + } // If result value is null or undefined then return null. - // 2. If init["headers"] exists, then set headers to init["headers"]. - if (init.headers !== undefined) { - headers = init.headers; - } + if (result == null) { + return null; + } // If field type is List, complete each item in the list with the inner type - // 3. Empty this’s headers’s header list. - this[kHeaders][kHeadersList].clear(); + if (isListType(returnType)) { + return completeListValue( + exeContext, + returnType, + fieldNodes, + info, + path, + result, + ); + } // If field type is a leaf type, Scalar or Enum, serialize to a valid value, + // returning null if serialization is not possible. - // 4. If headers is a Headers object, then for each header in its header - // list, append header’s name/header’s value to this’s headers. - if (headers.constructor.name === 'Headers') { - for (const [key, val] of headers) { - this[kHeaders].append(key, val); - } - } else { - // 5. Otherwise, fill this’s headers with headers. - fillHeaders(this[kHeaders], headers); - } - } + if (isLeafType(returnType)) { + return completeLeafValue(returnType, result); + } // If field type is an abstract type, Interface or Union, determine the + // runtime Object type and complete for that type. - // 33. Let inputBody be input’s request’s body if input is a Request - // object; otherwise null. - const inputBody = input instanceof Request ? input[kState].body : null; - - // 34. If either init["body"] exists and is non-null or inputBody is - // non-null, and request’s method is `GET` or `HEAD`, then throw a - // TypeError. - if ( - ((init.body !== undefined && init.body != null) || inputBody != null) && - (request.method === 'GET' || request.method === 'HEAD') - ) { - throw new TypeError('Request with GET/HEAD method cannot have body.') - } + if (isAbstractType(returnType)) { + return completeAbstractValue( + exeContext, + returnType, + fieldNodes, + info, + path, + result, + ); + } // If field type is Object, execute and complete all sub-selections. - // 35. Let initBody be null. - let initBody = null; - - // 36. If init["body"] exists and is non-null, then: - if (init.body !== undefined && init.body != null) { - // 1. Let Content-Type be null. - // 2. Set initBody and Content-Type to the result of extracting - // init["body"], with keepalive set to request’s keepalive. - const [extractedBody, contentType] = extractBody( - init.body, - request.keepalive - ); - initBody = extractedBody; - - // 3, If Content-Type is non-null and this’s headers’s header list does - // not contain `Content-Type`, then append `Content-Type`/Content-Type to - // this’s headers. - if (contentType && !this[kHeaders].has('content-type')) { - this[kHeaders].append('content-type', contentType); - } - } + if (isObjectType(returnType)) { + return completeObjectValue( + exeContext, + returnType, + fieldNodes, + info, + path, + result, + ); + } + /* c8 ignore next 6 */ + // Not reachable, all possible output types have been considered. - // 37. Let inputOrInitBody be initBody if it is non-null; otherwise - // inputBody. - const inputOrInitBody = initBody ?? inputBody; - - // 38. If inputOrInitBody is non-null and inputOrInitBody’s source is - // null, then: - if (inputOrInitBody != null && inputOrInitBody.source == null) { - // 1. If this’s request’s mode is neither "same-origin" nor "cors", - // then throw a TypeError. - if (request.mode !== 'same-origin' && request.mode !== 'cors') { - throw new TypeError( - 'If request is made from ReadableStream, mode should be "same-origin" or "cors"' - ) - } + invariant$1( + false, + 'Cannot complete value of unexpected output type: ' + inspect$1(returnType), + ); +} +/** + * Complete a list value by completing each item in the list with the + * inner type + */ - // 2. Set this’s request’s use-CORS-preflight flag. - request.useCORSPreflightFlag = true; - } +function completeListValue( + exeContext, + returnType, + fieldNodes, + info, + path, + result, +) { + if (!isIterableObject(result)) { + throw new GraphQLError( + `Expected Iterable, but did not find one for field "${info.parentType.name}.${info.fieldName}".`, + ); + } // This is specified as a simple map, however we're optimizing the path + // where the list contains no Promises by avoiding creating another Promise. - // 39. Let finalBody be inputOrInitBody. - let finalBody = inputOrInitBody; + const itemType = returnType.ofType; + let containsPromise = false; + const completedResults = Array.from(result, (item, index) => { + // No need to modify the info object containing the path, + // since from here on it is not ever accessed by resolver functions. + const itemPath = addPath(path, index, undefined); - // 40. If initBody is null and inputBody is non-null, then: - if (initBody == null && inputBody != null) { - // 1. If input is unusable, then throw a TypeError. - if (util.isDisturbed(inputBody.stream) || inputBody.stream.locked) { - throw new TypeError( - 'Cannot construct a Request with a Request object that has already been used.' - ) - } + try { + let completedItem; - // 2. Set finalBody to the result of creating a proxy for inputBody. - if (!TransformStream) { - TransformStream = require$$10.TransformStream; - } + if (isPromise(item)) { + completedItem = item.then((resolved) => + completeValue( + exeContext, + itemType, + fieldNodes, + info, + itemPath, + resolved, + ), + ); + } else { + completedItem = completeValue( + exeContext, + itemType, + fieldNodes, + info, + itemPath, + item, + ); + } - // https://streams.spec.whatwg.org/#readablestream-create-a-proxy - const identityTransform = new TransformStream(); - inputBody.stream.pipeThrough(identityTransform); - finalBody = { - source: inputBody.source, - length: inputBody.length, - stream: identityTransform.readable - }; - } + if (isPromise(completedItem)) { + containsPromise = true; // Note: we don't rely on a `catch` method, but we do expect "thenable" + // to take a second callback for the error case. - // 41. Set this’s request’s body to finalBody. - this[kState].body = finalBody; - } + return completedItem.then(undefined, (rawError) => { + const error = locatedError( + rawError, + fieldNodes, + pathToArray(itemPath), + ); + return handleFieldError(error, itemType, exeContext); + }); + } - get [Symbol.toStringTag] () { - return this.constructor.name - } + return completedItem; + } catch (rawError) { + const error = locatedError(rawError, fieldNodes, pathToArray(itemPath)); + return handleFieldError(error, itemType, exeContext); + } + }); + return containsPromise ? Promise.all(completedResults) : completedResults; +} +/** + * Complete a Scalar or Enum by serializing to a valid value, returning + * null if serialization is not possible. + */ - // Returns request’s HTTP method, which is "GET" by default. - get method () { - if (!(this instanceof Request)) { - throw new TypeError('Illegal invocation') - } +function completeLeafValue(returnType, result) { + const serializedResult = returnType.serialize(result); - // The method getter steps are to return this’s request’s method. - return this[kState].method - } + if (serializedResult == null) { + throw new Error( + `Expected \`${inspect$1(returnType)}.serialize(${inspect$1(result)})\` to ` + + `return non-nullable value, returned: ${inspect$1(serializedResult)}`, + ); + } - // Returns the URL of request as a string. - get url () { - if (!(this instanceof Request)) { - throw new TypeError('Illegal invocation') - } + return serializedResult; +} +/** + * Complete a value of an abstract type by determining the runtime object type + * of that value, then complete the value for that type. + */ - // The url getter steps are to return this’s request’s URL, serialized. - return this[kState].url.toString() - } +function completeAbstractValue( + exeContext, + returnType, + fieldNodes, + info, + path, + result, +) { + var _returnType$resolveTy; - // Returns a Headers object consisting of the headers associated with request. - // Note that headers added in the network layer by the user agent will not - // be accounted for in this object, e.g., the "Host" header. - get headers () { - if (!(this instanceof Request)) { - throw new TypeError('Illegal invocation') - } + const resolveTypeFn = + (_returnType$resolveTy = returnType.resolveType) !== null && + _returnType$resolveTy !== void 0 + ? _returnType$resolveTy + : exeContext.typeResolver; + const contextValue = exeContext.contextValue; + const runtimeType = resolveTypeFn(result, contextValue, info, returnType); - // The headers getter steps are to return this’s headers. - return this[kHeaders] - } + if (isPromise(runtimeType)) { + return runtimeType.then((resolvedRuntimeType) => + completeObjectValue( + exeContext, + ensureValidRuntimeType( + resolvedRuntimeType, + exeContext, + returnType, + fieldNodes, + info, + result, + ), + fieldNodes, + info, + path, + result, + ), + ); + } - // Returns the kind of resource requested by request, e.g., "document" - // or "script". - get destination () { - if (!(this instanceof Request)) { - throw new TypeError('Illegal invocation') - } + return completeObjectValue( + exeContext, + ensureValidRuntimeType( + runtimeType, + exeContext, + returnType, + fieldNodes, + info, + result, + ), + fieldNodes, + info, + path, + result, + ); +} - // The destination getter are to return this’s request’s destination. - return this[kState].destination - } +function ensureValidRuntimeType( + runtimeTypeName, + exeContext, + returnType, + fieldNodes, + info, + result, +) { + if (runtimeTypeName == null) { + throw new GraphQLError( + `Abstract type "${returnType.name}" must resolve to an Object type at runtime for field "${info.parentType.name}.${info.fieldName}". Either the "${returnType.name}" type should provide a "resolveType" function or each possible type should provide an "isTypeOf" function.`, + fieldNodes, + ); + } // releases before 16.0.0 supported returning `GraphQLObjectType` from `resolveType` + // TODO: remove in 17.0.0 release - // Returns the referrer of request. Its value can be a same-origin URL if - // explicitly set in init, the empty string to indicate no referrer, and - // "about:client" when defaulting to the global’s default. This is used - // during fetching to determine the value of the `Referer` header of the - // request being made. - get referrer () { - if (!(this instanceof Request)) { - throw new TypeError('Illegal invocation') - } + if (isObjectType(runtimeTypeName)) { + throw new GraphQLError( + 'Support for returning GraphQLObjectType from resolveType was removed in graphql-js@16.0.0 please return type name instead.', + ); + } - // 1. If this’s request’s referrer is "no-referrer", then return the - // empty string. - if (this[kState].referrer === 'no-referrer') { - return '' - } + if (typeof runtimeTypeName !== 'string') { + throw new GraphQLError( + `Abstract type "${returnType.name}" must resolve to an Object type at runtime for field "${info.parentType.name}.${info.fieldName}" with ` + + `value ${inspect$1(result)}, received "${inspect$1(runtimeTypeName)}".`, + ); + } - // 2. If this’s request’s referrer is "client", then return - // "about:client". - if (this[kState].referrer === 'client') { - return 'about:client' - } + const runtimeType = exeContext.schema.getType(runtimeTypeName); - // Return this’s request’s referrer, serialized. - return this[kState].referrer.toString() - } + if (runtimeType == null) { + throw new GraphQLError( + `Abstract type "${returnType.name}" was resolved to a type "${runtimeTypeName}" that does not exist inside the schema.`, + { + nodes: fieldNodes, + }, + ); + } - // Returns the referrer policy associated with request. - // This is used during fetching to compute the value of the request’s - // referrer. - get referrerPolicy () { - if (!(this instanceof Request)) { - throw new TypeError('Illegal invocation') - } + if (!isObjectType(runtimeType)) { + throw new GraphQLError( + `Abstract type "${returnType.name}" was resolved to a non-object type "${runtimeTypeName}".`, + { + nodes: fieldNodes, + }, + ); + } - // The referrerPolicy getter steps are to return this’s request’s referrer policy. - return this[kState].referrerPolicy - } + if (!exeContext.schema.isSubType(returnType, runtimeType)) { + throw new GraphQLError( + `Runtime Object type "${runtimeType.name}" is not a possible type for "${returnType.name}".`, + { + nodes: fieldNodes, + }, + ); + } - // Returns the mode associated with request, which is a string indicating - // whether the request will use CORS, or will be restricted to same-origin - // URLs. - get mode () { - if (!(this instanceof Request)) { - throw new TypeError('Illegal invocation') - } + return runtimeType; +} +/** + * Complete an Object value by executing all sub-selections. + */ - // The mode getter steps are to return this’s request’s mode. - return this[kState].mode - } +function completeObjectValue( + exeContext, + returnType, + fieldNodes, + info, + path, + result, +) { + // Collect sub-fields to execute to complete this value. + const subFieldNodes = collectSubfields(exeContext, returnType, fieldNodes); // If there is an isTypeOf predicate function, call it with the + // current result. If isTypeOf returns false, then raise an error rather + // than continuing execution. - // Returns the credentials mode associated with request, - // which is a string indicating whether credentials will be sent with the - // request always, never, or only when sent to a same-origin URL. - get credentials () { - // The credentials getter steps are to return this’s request’s credentials mode. - return this[kState].credentials - } + if (returnType.isTypeOf) { + const isTypeOf = returnType.isTypeOf(result, exeContext.contextValue, info); - // Returns the cache mode associated with request, - // which is a string indicating how the request will - // interact with the browser’s cache when fetching. - get cache () { - if (!(this instanceof Request)) { - throw new TypeError('Illegal invocation') - } + if (isPromise(isTypeOf)) { + return isTypeOf.then((resolvedIsTypeOf) => { + if (!resolvedIsTypeOf) { + throw invalidReturnTypeError(returnType, result, fieldNodes); + } - // The cache getter steps are to return this’s request’s cache mode. - return this[kState].cache - } + return executeFields( + exeContext, + returnType, + result, + path, + subFieldNodes, + ); + }); + } - // Returns the redirect mode associated with request, - // which is a string indicating how redirects for the - // request will be handled during fetching. A request - // will follow redirects by default. - get redirect () { - if (!(this instanceof Request)) { - throw new TypeError('Illegal invocation') - } + if (!isTypeOf) { + throw invalidReturnTypeError(returnType, result, fieldNodes); + } + } - // The redirect getter steps are to return this’s request’s redirect mode. - return this[kState].redirect - } + return executeFields(exeContext, returnType, result, path, subFieldNodes); +} - // Returns request’s subresource integrity metadata, which is a - // cryptographic hash of the resource being fetched. Its value - // consists of multiple hashes separated by whitespace. [SRI] - get integrity () { - if (!(this instanceof Request)) { - throw new TypeError('Illegal invocation') - } +function invalidReturnTypeError(returnType, result, fieldNodes) { + return new GraphQLError( + `Expected value of type "${returnType.name}" but got: ${inspect$1(result)}.`, + { + nodes: fieldNodes, + }, + ); +} +/** + * If a resolveType function is not given, then a default resolve behavior is + * used which attempts two strategies: + * + * First, See if the provided value has a `__typename` field defined, if so, use + * that value as name of the resolved type. + * + * Otherwise, test each possible type for the abstract type by calling + * isTypeOf for the object being coerced, returning the first type that matches. + */ - // The integrity getter steps are to return this’s request’s integrity - // metadata. - return this[kState].integrity - } +const defaultTypeResolver = function ( + value, + contextValue, + info, + abstractType, +) { + // First, look for `__typename`. + if (isObjectLike(value) && typeof value.__typename === 'string') { + return value.__typename; + } // Otherwise, test each possible type. - // Returns a boolean indicating whether or not request can outlive the - // global in which it was created. - get keepalive () { - if (!(this instanceof Request)) { - throw new TypeError('Illegal invocation') - } + const possibleTypes = info.schema.getPossibleTypes(abstractType); + const promisedIsTypeOfResults = []; - // The keepalive getter steps are to return this’s request’s keepalive. - return this[kState].keepalive - } + for (let i = 0; i < possibleTypes.length; i++) { + const type = possibleTypes[i]; - // Returns a boolean indicating whether or not request is for a reload - // navigation. - get isReloadNavigation () { - if (!(this instanceof Request)) { - throw new TypeError('Illegal invocation') - } + if (type.isTypeOf) { + const isTypeOfResult = type.isTypeOf(value, contextValue, info); - // The isReloadNavigation getter steps are to return true if this’s - // request’s reload-navigation flag is set; otherwise false. - return this[kState].reloadNavigation - } + if (isPromise(isTypeOfResult)) { + promisedIsTypeOfResults[i] = isTypeOfResult; + } else if (isTypeOfResult) { + return type.name; + } + } + } - // Returns a boolean indicating whether or not request is for a history - // navigation (a.k.a. back-foward navigation). - get isHistoryNavigation () { - if (!(this instanceof Request)) { - throw new TypeError('Illegal invocation') - } + if (promisedIsTypeOfResults.length) { + return Promise.all(promisedIsTypeOfResults).then((isTypeOfResults) => { + for (let i = 0; i < isTypeOfResults.length; i++) { + if (isTypeOfResults[i]) { + return possibleTypes[i].name; + } + } + }); + } +}; +/** + * If a resolve function is not given, then a default resolve behavior is used + * which takes the property of the source object of the same name as the field + * and returns it as the result, or if it's a function, returns the result + * of calling that function while passing along args and context value. + */ - // The isHistoryNavigation getter steps are to return true if this’s request’s - // history-navigation flag is set; otherwise false. - return this[kState].historyNavigation - } +const defaultFieldResolver = function ( + source, + args, + contextValue, + info, +) { + // ensure source is a value for which property access is acceptable. + if (isObjectLike(source) || typeof source === 'function') { + const property = source[info.fieldName]; - // Returns the signal associated with request, which is an AbortSignal - // object indicating whether or not request has been aborted, and its - // abort event handler. - get signal () { - if (!(this instanceof Request)) { - throw new TypeError('Illegal invocation') - } + if (typeof property === 'function') { + return source[info.fieldName](args, contextValue, info); + } - // The signal getter steps are to return this’s signal. - return this[kSignal] - } + return property; + } +}; +/** + * This method looks up the field on the given type definition. + * It has special casing for the three introspection fields, + * __schema, __type and __typename. __typename is special because + * it can always be queried as a field, even in situations where no + * other fields are allowed, like on a Union. __schema and __type + * could get automatically added to the query type, but that would + * require mutating type definitions, which would cause issues. + * + * @internal + */ - // Returns a clone of request. - clone () { - if (!(this instanceof Request)) { - throw new TypeError('Illegal invocation') - } +function getFieldDef(schema, parentType, fieldNode) { + const fieldName = fieldNode.name.value; - // 1. If this is unusable, then throw a TypeError. - if (this.bodyUsed || this.body?.locked) { - throw new TypeError('unusable') - } + if ( + fieldName === SchemaMetaFieldDef.name && + schema.getQueryType() === parentType + ) { + return SchemaMetaFieldDef; + } else if ( + fieldName === TypeMetaFieldDef.name && + schema.getQueryType() === parentType + ) { + return TypeMetaFieldDef; + } else if (fieldName === TypeNameMetaFieldDef.name) { + return TypeNameMetaFieldDef; + } - // 2. Let clonedRequest be the result of cloning this’s request. - const clonedRequest = cloneRequest(this[kState]); - - // 3. Let clonedRequestObject be the result of creating a Request object, - // given clonedRequest, this’s headers’s guard, and this’s relevant Realm. - const clonedRequestObject = new Request(kInit); - clonedRequestObject[kState] = clonedRequest; - clonedRequestObject[kRealm] = this[kRealm]; - clonedRequestObject[kHeaders] = new Headers(); - clonedRequestObject[kHeaders][kHeadersList] = clonedRequest.headersList; - clonedRequestObject[kHeaders][kGuard] = this[kHeaders][kGuard]; - clonedRequestObject[kHeaders][kRealm] = this[kHeaders][kRealm]; - - // 4. Make clonedRequestObject’s signal follow this’s signal. - const ac = new AbortController(); - if (this.signal.aborted) { - ac.abort(this.signal.reason); - } else { - this.signal.addEventListener( - 'abort', - () => { - ac.abort(this.signal.reason); - }, - { once: true } - ); - } - clonedRequestObject[kSignal] = ac.signal; + return parentType.getFields()[fieldName]; +} - // 4. Return clonedRequestObject. - return clonedRequestObject - } - } +/** + * Returns true if the provided object implements the AsyncIterator protocol via + * implementing a `Symbol.asyncIterator` method. + */ +function isAsyncIterable$2(maybeAsyncIterable) { + return ( + typeof (maybeAsyncIterable === null || maybeAsyncIterable === void 0 + ? void 0 + : maybeAsyncIterable[Symbol.asyncIterator]) === 'function' + ); +} - mixinBody(Request); - - function makeRequest (init) { - // https://fetch.spec.whatwg.org/#requests - const request = { - method: 'GET', - localURLsOnly: false, - unsafeRequest: false, - body: null, - client: null, - reservedClient: null, - replacesClientId: '', - window: 'client', - keepalive: false, - serviceWorkers: 'all', - initiator: '', - destination: '', - priority: null, - origin: 'client', - policyContainer: 'client', - referrer: 'client', - referrerPolicy: '', - mode: 'no-cors', - useCORSPreflightFlag: false, - credentials: 'same-origin', - useCredentials: false, - cache: 'default', - redirect: 'follow', - integrity: '', - cryptoGraphicsNonceMetadata: '', - parserMetadata: '', - reloadNavigation: false, - historyNavigation: false, - userActivation: false, - taintedOrigin: false, - redirectCount: 0, - responseTainting: 'basic', - preventNoCacheCacheControlHeaderModification: false, - done: false, - timingAllowFailed: false, - ...init, - headersList: init.headersList - ? new HeadersList(init.headersList) - : new HeadersList() - }; - request.url = request.urlList[0]; - return request - } +/** + * Given an AsyncIterable and a callback function, return an AsyncIterator + * which produces values mapped via calling the callback function. + */ +function mapAsyncIterator$1(iterable, callback) { + const iterator = iterable[Symbol.asyncIterator](); - // https://fetch.spec.whatwg.org/#concept-request-clone - function cloneRequest (request) { - // To clone a request request, run these steps: + async function mapResult(result) { + if (result.done) { + return result; + } - // 1. Let newRequest be a copy of request, except for its body. - const newRequest = makeRequest({ ...request, body: null }); + try { + return { + value: await callback(result.value), + done: false, + }; + } catch (error) { + /* c8 ignore start */ + // FIXME: add test case + if (typeof iterator.return === 'function') { + try { + await iterator.return(); + } catch (_e) { + /* ignore error */ + } + } - // 2. If request’s body is non-null, set newRequest’s body to the - // result of cloning request’s body. - if (request.body != null) { - newRequest.body = cloneBody(request.body); - } + throw error; + /* c8 ignore stop */ + } + } - // 3. Return newRequest. - return newRequest - } + return { + async next() { + return mapResult(await iterator.next()); + }, - Object.defineProperties(Request.prototype, { - method: kEnumerableProperty, - url: kEnumerableProperty, - headers: kEnumerableProperty, - redirect: kEnumerableProperty, - clone: kEnumerableProperty, - signal: kEnumerableProperty - }); + async return() { + // If iterator.return() does not exist, then type R must be undefined. + return typeof iterator.return === 'function' + ? mapResult(await iterator.return()) + : { + value: undefined, + done: true, + }; + }, - webidl.converters.Request = webidl.interfaceConverter( - Request - ); + async throw(error) { + if (typeof iterator.throw === 'function') { + return mapResult(await iterator.throw(error)); + } - // https://fetch.spec.whatwg.org/#requestinfo - webidl.converters.RequestInfo = function (V) { - if (typeof V === 'string') { - return webidl.converters.USVString(V) - } + throw error; + }, - if (V instanceof Request) { - return webidl.converters.Request(V) - } + [Symbol.asyncIterator]() { + return this; + }, + }; +} - return webidl.converters.USVString(V) - }; +/** + * Implements the "Subscribe" algorithm described in the GraphQL specification. + * + * Returns a Promise which resolves to either an AsyncIterator (if successful) + * or an ExecutionResult (error). The promise will be rejected if the schema or + * other arguments to this function are invalid, or if the resolved event stream + * is not an async iterable. + * + * If the client-provided arguments to this function do not result in a + * compliant subscription, a GraphQL Response (ExecutionResult) with + * descriptive errors and no data will be returned. + * + * If the source stream could not be created due to faulty subscription + * resolver logic or underlying systems, the promise will resolve to a single + * ExecutionResult containing `errors` and no `data`. + * + * If the operation succeeded, the promise resolves to an AsyncIterator, which + * yields a stream of ExecutionResults representing the response stream. + * + * Accepts either an object with named arguments, or individual arguments. + */ - webidl.converters.AbortSignal = webidl.interfaceConverter( - AbortSignal - ); - - // https://fetch.spec.whatwg.org/#requestinit - webidl.converters.RequestInit = webidl.dictionaryConverter([ - { - key: 'method', - converter: webidl.converters.ByteString - }, - { - key: 'headers', - converter: webidl.converters.HeadersInit - }, - { - key: 'body', - converter: webidl.nullableConverter( - webidl.converters.BodyInit - ) - }, - { - key: 'referrer', - converter: webidl.converters.USVString - }, - { - key: 'referrerPolicy', - converter: webidl.converters.DOMString, - // https://w3c.github.io/webappsec-referrer-policy/#referrer-policy - allowedValues: [ - '', 'no-referrer', 'no-referrer-when-downgrade', - 'same-origin', 'origin', 'strict-origin', - 'origin-when-cross-origin', 'strict-origin-when-cross-origin', - 'unsafe-url' - ] - }, - { - key: 'mode', - converter: webidl.converters.DOMString, - // https://fetch.spec.whatwg.org/#concept-request-mode - allowedValues: [ - 'same-origin', 'cors', 'no-cors', 'navigate', 'websocket' - ] - }, - { - key: 'credentials', - converter: webidl.converters.DOMString, - // https://fetch.spec.whatwg.org/#requestcredentials - allowedValues: [ - 'omit', 'same-origin', 'include' - ] - }, - { - key: 'cache', - converter: webidl.converters.DOMString, - // https://fetch.spec.whatwg.org/#requestcache - allowedValues: [ - 'default', 'no-store', 'reload', 'no-cache', 'force-cache', - 'only-if-cached' - ] - }, - { - key: 'redirect', - converter: webidl.converters.DOMString, - // https://fetch.spec.whatwg.org/#requestredirect - allowedValues: [ - 'follow', 'error', 'manual' - ] - }, - { - key: 'integrity', - converter: webidl.converters.DOMString - }, - { - key: 'keepalive', - converter: webidl.converters.boolean - }, - { - key: 'signal', - converter: webidl.nullableConverter( - (signal) => webidl.converters.AbortSignal( - signal, - { strict: false } - ) - ) - }, - { - key: 'window', - converter: webidl.converters.any - } - ]); - - request = { Request, makeRequest }; - return request; -} - -var dataURL; -var hasRequiredDataURL; - -function requireDataURL () { - if (hasRequiredDataURL) return dataURL; - hasRequiredDataURL = 1; - const assert = require$$0$3; - const { atob } = require$$6$2; - - const encoder = new TextEncoder(); - - // https://fetch.spec.whatwg.org/#data-url-processor - /** @param {URL} dataURL */ - function dataURLProcessor (dataURL) { - // 1. Assert: dataURL’s scheme is "data". - assert(dataURL.protocol === 'data:'); - - // 2. Let input be the result of running the URL - // serializer on dataURL with exclude fragment - // set to true. - let input = URLSerializer(dataURL, true); - - // 3. Remove the leading "data:" string from input. - input = input.slice(5); - - // 4. Let position point at the start of input. - const position = { position: 0 }; - - // 5. Let mimeType be the result of collecting a - // sequence of code points that are not equal - // to U+002C (,), given position. - let mimeType = collectASequenceOfCodePoints( - (char) => char !== ',', - input, - position - ); - - // 6. Strip leading and trailing ASCII whitespace - // from mimeType. - // Note: This will only remove U+0020 SPACE code - // points, if any. - // Undici implementation note: we need to store the - // length because if the mimetype has spaces removed, - // the wrong amount will be sliced from the input in - // step #9 - const mimeTypeLength = mimeType.length; - mimeType = mimeType.replace(/^(\u0020)+|(\u0020)+$/g, ''); - - // 7. If position is past the end of input, then - // return failure - if (position.position >= input.length) { - return 'failure' - } +async function subscribe(args) { + // Temporary for v15 to v16 migration. Remove in v17 + arguments.length < 2 || + devAssert( + false, + 'graphql@16 dropped long-deprecated support for positional arguments, please pass an object instead.', + ); + const resultOrStream = await createSourceEventStream(args); - // 8. Advance position by 1. - position.position++; - - // 9. Let encodedBody be the remainder of input. - const encodedBody = input.slice(mimeTypeLength + 1); - - // 10. Let body be the percent-decoding of encodedBody. - /** @type {Uint8Array|string} */ - let body = stringPercentDecode(encodedBody); - - // 11. If mimeType ends with U+003B (;), followed by - // zero or more U+0020 SPACE, followed by an ASCII - // case-insensitive match for "base64", then: - if (/;(\u0020){0,}base64$/i.test(mimeType)) { - // 1. Let stringBody be the isomorphic decode of body. - const stringBody = decodeURIComponent(new TextDecoder('utf-8').decode(body)); - // 2. Set body to the forgiving-base64 decode of - // stringBody. - body = forgivingBase64(stringBody); - - // 3. If body is failure, then return failure. - if (body === 'failure') { - return 'failure' - } + if (!isAsyncIterable$2(resultOrStream)) { + return resultOrStream; + } // For each payload yielded from a subscription, map it over the normal + // GraphQL `execute` function, with `payload` as the rootValue. + // This implements the "MapSourceToResponseEvent" algorithm described in + // the GraphQL specification. The `execute` function provides the + // "ExecuteSubscriptionEvent" algorithm, as it is nearly identical to the + // "ExecuteQuery" algorithm, for which `execute` is also used. - // 4. Remove the last 6 code points from mimeType. - mimeType = mimeType.slice(0, -6); + const mapSourceToResponse = (payload) => + execute$1({ ...args, rootValue: payload }); // Map every source value to a ExecutionResult value as described above. - // 5. Remove trailing U+0020 SPACE code points from mimeType, - // if any. - mimeType = mimeType.replace(/(\u0020)+$/, ''); + return mapAsyncIterator$1(resultOrStream, mapSourceToResponse); +} - // 6. Remove the last U+003B (;) code point from mimeType. - mimeType = mimeType.slice(0, -1); - } +function toNormalizedArgs(args) { + const firstArg = args[0]; - // 12. If mimeType starts with U+003B (;), then prepend - // "text/plain" to mimeType. - if (mimeType.startsWith(';')) { - mimeType = 'text/plain' + mimeType; - } + if (firstArg && 'document' in firstArg) { + return firstArg; + } - // 13. Let mimeTypeRecord be the result of parsing - // mimeType. - let mimeTypeRecord = parseMIMEType(mimeType); + return { + schema: firstArg, + // FIXME: when underlying TS bug fixed, see https://github.com/microsoft/TypeScript/issues/31613 + document: args[1], + rootValue: args[2], + contextValue: args[3], + variableValues: args[4], + operationName: args[5], + subscribeFieldResolver: args[6], + }; +} +/** + * Implements the "CreateSourceEventStream" algorithm described in the + * GraphQL specification, resolving the subscription source event stream. + * + * Returns a Promise which resolves to either an AsyncIterable (if successful) + * or an ExecutionResult (error). The promise will be rejected if the schema or + * other arguments to this function are invalid, or if the resolved event stream + * is not an async iterable. + * + * If the client-provided arguments to this function do not result in a + * compliant subscription, a GraphQL Response (ExecutionResult) with + * descriptive errors and no data will be returned. + * + * If the the source stream could not be created due to faulty subscription + * resolver logic or underlying systems, the promise will resolve to a single + * ExecutionResult containing `errors` and no `data`. + * + * If the operation succeeded, the promise resolves to the AsyncIterable for the + * event stream returned by the resolver. + * + * A Source Event Stream represents a sequence of events, each of which triggers + * a GraphQL execution for that event. + * + * This may be useful when hosting the stateful subscription service in a + * different process or machine than the stateless GraphQL execution engine, + * or otherwise separating these two steps. For more on this, see the + * "Supporting Subscriptions at Scale" information in the GraphQL specification. + */ - // 14. If mimeTypeRecord is failure, then set - // mimeTypeRecord to text/plain;charset=US-ASCII. - if (mimeTypeRecord === 'failure') { - mimeTypeRecord = parseMIMEType('text/plain;charset=US-ASCII'); - } +async function createSourceEventStream(...rawArgs) { + const args = toNormalizedArgs(rawArgs); + const { schema, document, variableValues } = args; // If arguments are missing or incorrectly typed, this is an internal + // developer mistake which should throw an early error. - // 15. Return a new data: URL struct whose MIME - // type is mimeTypeRecord and body is body. - // https://fetch.spec.whatwg.org/#data-url-struct - return { mimeType: mimeTypeRecord, body } - } + assertValidExecutionArguments(schema, document, variableValues); // If a valid execution context cannot be created due to incorrect arguments, + // a "Response" with only errors is returned. - // https://url.spec.whatwg.org/#concept-url-serializer - /** - * @param {URL} url - * @param {boolean} excludeFragment - */ - function URLSerializer (url, excludeFragment = false) { - // 1. Let output be url’s scheme and U+003A (:) concatenated. - let output = url.protocol; - - // 2. If url’s host is non-null: - if (url.host.length > 0) { - // 1. Append "//" to output. - output += '//'; - - // 2. If url includes credentials, then: - if (url.username.length > 0 || url.password.length > 0) { - // 1. Append url’s username to output. - output += url.username; - - // 2. If url’s password is not the empty string, then append U+003A (:), - // followed by url’s password, to output. - if (url.password.length > 0) { - output += ':' + url.password; - } + const exeContext = buildExecutionContext(args); // Return early errors if execution context failed. - // 3. Append U+0040 (@) to output. - output += '@'; - } + if (!('schema' in exeContext)) { + return { + errors: exeContext, + }; + } - // 3. Append url’s host, serialized, to output. - output += decodeURIComponent(url.host); + try { + const eventStream = await executeSubscription(exeContext); // Assert field returned an event stream, otherwise yield an error. - // 4. If url’s port is non-null, append U+003A (:) followed by url’s port, - // serialized, to output. - if (url.port.length > 0) { - output += ':' + url.port; - } - } + if (!isAsyncIterable$2(eventStream)) { + throw new Error( + 'Subscription field must return Async Iterable. ' + + `Received: ${inspect$1(eventStream)}.`, + ); + } - // 3. If url’s host is null, url does not have an opaque path, - // url’s path’s size is greater than 1, and url’s path[0] - // is the empty string, then append U+002F (/) followed by - // U+002E (.) to output. - // Note: This prevents web+demo:/.//not-a-host/ or web+demo:/path/..//not-a-host/, - // when parsed and then serialized, from ending up as web+demo://not-a-host/ - // (they end up as web+demo:/.//not-a-host/). - // Undici implementation note: url's path[0] can never be an - // empty string, so we have to slightly alter what the spec says. - if ( - url.host.length === 0 && - url.pathname.length > 1 && - url.href.slice(url.protocol.length + 1)[0] === '.' - ) { - output += '/.'; - } + return eventStream; + } catch (error) { + // If it GraphQLError, report it as an ExecutionResult, containing only errors and no data. + // Otherwise treat the error as a system-class error and re-throw it. + if (error instanceof GraphQLError) { + return { + errors: [error], + }; + } - // 4. Append the result of URL path serializing url to output. - output += url.pathname; + throw error; + } +} - // 5. If url’s query is non-null, append U+003F (?), - // followed by url’s query, to output. - if (url.search.length > 0) { - output += url.search; - } +async function executeSubscription(exeContext) { + const { schema, fragments, operation, variableValues, rootValue } = + exeContext; + const rootType = schema.getSubscriptionType(); - // 6. If exclude fragment is false and url’s fragment is non-null, - // then append U+0023 (#), followed by url’s fragment, to output. - if (excludeFragment === false && url.hash.length > 0) { - output += url.hash; - } + if (rootType == null) { + throw new GraphQLError( + 'Schema is not configured to execute subscription operation.', + { + nodes: operation, + }, + ); + } - // 7. Return output. - return output - } + const rootFields = collectFields( + schema, + fragments, + variableValues, + rootType, + operation.selectionSet, + ); + const [responseName, fieldNodes] = [...rootFields.entries()][0]; + const fieldDef = getFieldDef(schema, rootType, fieldNodes[0]); - // https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points - /** - * @param {(char: string) => boolean} condition - * @param {string} input - * @param {{ position: number }} position - */ - function collectASequenceOfCodePoints (condition, input, position) { - // 1. Let result be the empty string. - let result = ''; - - // 2. While position doesn’t point past the end of input and the - // code point at position within input meets the condition condition: - while (position.position < input.length && condition(input[position.position])) { - // 1. Append that code point to the end of result. - result += input[position.position]; - - // 2. Advance position by 1. - position.position++; - } + if (!fieldDef) { + const fieldName = fieldNodes[0].name.value; + throw new GraphQLError( + `The subscription field "${fieldName}" is not defined.`, + { + nodes: fieldNodes, + }, + ); + } - // 3. Return result. - return result - } + const path = addPath(undefined, responseName, rootType.name); + const info = buildResolveInfo( + exeContext, + fieldDef, + fieldNodes, + rootType, + path, + ); - // https://url.spec.whatwg.org/#string-percent-decode - /** @param {string} input */ - function stringPercentDecode (input) { - // 1. Let bytes be the UTF-8 encoding of input. - const bytes = encoder.encode(input); + try { + var _fieldDef$subscribe; - // 2. Return the percent-decoding of bytes. - return percentDecode(bytes) - } + // Implements the "ResolveFieldEventStream" algorithm from GraphQL specification. + // It differs from "ResolveFieldValue" due to providing a different `resolveFn`. + // Build a JS object of arguments from the field.arguments AST, using the + // variables scope to fulfill any variable references. + const args = getArgumentValues(fieldDef, fieldNodes[0], variableValues); // The resolve function's optional third argument is a context value that + // is provided to every resolve function within an execution. It is commonly + // used to represent an authenticated user, or request-specific caches. - // https://url.spec.whatwg.org/#percent-decode - /** @param {Uint8Array} input */ - function percentDecode (input) { - // 1. Let output be an empty byte sequence. - /** @type {number[]} */ - const output = []; - - // 2. For each byte byte in input: - for (let i = 0; i < input.length; i++) { - const byte = input[i]; - - // 1. If byte is not 0x25 (%), then append byte to output. - if (byte !== 0x25) { - output.push(byte); - - // 2. Otherwise, if byte is 0x25 (%) and the next two bytes - // after byte in input are not in the ranges - // 0x30 (0) to 0x39 (9), 0x41 (A) to 0x46 (F), - // and 0x61 (a) to 0x66 (f), all inclusive, append byte - // to output. - } else if ( - byte === 0x25 && - !/^[0-9A-Fa-f]{2}$/i.test(String.fromCharCode(input[i + 1], input[i + 2])) - ) { - output.push(0x25); - - // 3. Otherwise: - } else { - // 1. Let bytePoint be the two bytes after byte in input, - // decoded, and then interpreted as hexadecimal number. - const nextTwoBytes = String.fromCharCode(input[i + 1], input[i + 2]); - const bytePoint = Number.parseInt(nextTwoBytes, 16); + const contextValue = exeContext.contextValue; // Call the `subscribe()` resolver or the default resolver to produce an + // AsyncIterable yielding raw payloads. - // 2. Append a byte whose value is bytePoint to output. - output.push(bytePoint); + const resolveFn = + (_fieldDef$subscribe = fieldDef.subscribe) !== null && + _fieldDef$subscribe !== void 0 + ? _fieldDef$subscribe + : exeContext.subscribeFieldResolver; + const eventStream = await resolveFn(rootValue, args, contextValue, info); - // 3. Skip the next two bytes in input. - i += 2; - } - } + if (eventStream instanceof Error) { + throw eventStream; + } - // 3. Return output. - return Uint8Array.from(output) - } + return eventStream; + } catch (error) { + throw locatedError(error, fieldNodes, pathToArray(path)); + } +} - // https://mimesniff.spec.whatwg.org/#parse-a-mime-type - /** @param {string} input */ - function parseMIMEType (input) { - // 1. Remove any leading and trailing HTTP whitespace - // from input. - input = input.trim(); - - // 2. Let position be a position variable for input, - // initially pointing at the start of input. - const position = { position: 0 }; - - // 3. Let type be the result of collecting a sequence - // of code points that are not U+002F (/) from - // input, given position. - const type = collectASequenceOfCodePoints( - (char) => char !== '/', - input, - position - ); - - // 4. If type is the empty string or does not solely - // contain HTTP token code points, then return failure. - // https://mimesniff.spec.whatwg.org/#http-token-code-point - if (type.length === 0 || !/^[!#$%&'*+-.^_|~A-z0-9]+$/.test(type)) { - return 'failure' - } +/** + * Returns an operation AST given a document AST and optionally an operation + * name. If a name is not provided, an operation is only returned if only one is + * provided in the document. + */ - // 5. If position is past the end of input, then return - // failure - if (position.position > input.length) { - return 'failure' - } +function getOperationAST(documentAST, operationName) { + let operation = null; - // 6. Advance position by 1. (This skips past U+002F (/).) - position.position++; - - // 7. Let subtype be the result of collecting a sequence of - // code points that are not U+003B (;) from input, given - // position. - let subtype = collectASequenceOfCodePoints( - (char) => char !== ';', - input, - position - ); - - // 8. Remove any trailing HTTP whitespace from subtype. - subtype = subtype.trim(); - - // 9. If subtype is the empty string or does not solely - // contain HTTP token code points, then return failure. - if (subtype.length === 0 || !/^[!#$%&'*+-.^_|~A-z0-9]+$/.test(subtype)) { - return 'failure' - } + for (const definition of documentAST.definitions) { + if (definition.kind === Kind.OPERATION_DEFINITION) { + var _definition$name; - // 10. Let mimeType be a new MIME type record whose type - // is type, in ASCII lowercase, and subtype is subtype, - // in ASCII lowercase. - // https://mimesniff.spec.whatwg.org/#mime-type - const mimeType = { - type: type.toLowerCase(), - subtype: subtype.toLowerCase(), - /** @type {Map} */ - parameters: new Map() - }; + if (operationName == null) { + // If no operation name was provided, only return an Operation if there + // is one defined in the document. Upon encountering the second, return + // null. + if (operation) { + return null; + } - // 11. While position is not past the end of input: - while (position.position < input.length) { - // 1. Advance position by 1. (This skips past U+003B (;).) - position.position++; - - // 2. Collect a sequence of code points that are HTTP - // whitespace from input given position. - collectASequenceOfCodePoints( - // https://fetch.spec.whatwg.org/#http-whitespace - (char) => /(\u000A|\u000D|\u0009|\u0020)/.test(char), // eslint-disable-line - input, - position - ); - - // 3. Let parameterName be the result of collecting a - // sequence of code points that are not U+003B (;) - // or U+003D (=) from input, given position. - let parameterName = collectASequenceOfCodePoints( - (char) => char !== ';' && char !== '=', - input, - position - ); - - // 4. Set parameterName to parameterName, in ASCII - // lowercase. - parameterName = parameterName.toLowerCase(); - - // 5. If position is not past the end of input, then: - if (position.position < input.length) { - // 1. If the code point at position within input is - // U+003B (;), then continue. - if (input[position.position] === ';') { - continue - } + operation = definition; + } else if ( + ((_definition$name = definition.name) === null || + _definition$name === void 0 + ? void 0 + : _definition$name.value) === operationName + ) { + return definition; + } + } + } - // 2. Advance position by 1. (This skips past U+003D (=).) - position.position++; - } + return operation; +} - // 6. If position is past the end of input, then break. - if (position.position > input.length) { - break - } +/** + * @internal + */ - // 7. Let parameterValue be null. - let parameterValue = null; - - // 8. If the code point at position within input is - // U+0022 ("), then: - if (input[position.position] === '"') { - // 1. Set parameterValue to the result of collecting - // an HTTP quoted string from input, given position - // and the extract-value flag. - // Undici implementation note: extract-value is never - // defined or mentioned anywhere. - parameterValue = collectAnHTTPQuotedString(input, position/*, extractValue */); - - // 2. Collect a sequence of code points that are not - // U+003B (;) from input, given position. - collectASequenceOfCodePoints( - (char) => char !== ';', - input, - position - ); - - // 9. Otherwise: - } else { - // 1. Set parameterValue to the result of collecting - // a sequence of code points that are not U+003B (;) - // from input, given position. - parameterValue = collectASequenceOfCodePoints( - (char) => char !== ';', - input, - position - ); - - // 2. Remove any trailing HTTP whitespace from parameterValue. - parameterValue = parameterValue.trim(); - - // 3. If parameterValue is the empty string, then continue. - if (parameterValue.length === 0) { - continue - } - } +function extendSchemaImpl(schemaConfig, documentAST, options) { + var _schemaDef, _schemaDef$descriptio, _schemaDef2, _options$assumeValid; - // 10. If all of the following are true - // - parameterName is not the empty string - // - parameterName solely contains HTTP token code points - // - parameterValue solely contains HTTP quoted-string token code points - // - mimeType’s parameters[parameterName] does not exist - // then set mimeType’s parameters[parameterName] to parameterValue. - if ( - parameterName.length !== 0 && - /^[!#$%&'*+-.^_|~A-z0-9]+$/.test(parameterName) && - // https://mimesniff.spec.whatwg.org/#http-quoted-string-token-code-point - !/^(\u0009|\x{0020}-\x{007E}|\x{0080}-\x{00FF})+$/.test(parameterValue) && // eslint-disable-line - !mimeType.parameters.has(parameterName) - ) { - mimeType.parameters.set(parameterName, parameterValue); - } - } + // Collect the type definitions and extensions found in the document. + const typeDefs = []; + const typeExtensionsMap = Object.create(null); // New directives and types are separate because a directives and types can + // have the same name. For example, a type named "skip". - // 12. Return mimeType. - return mimeType - } + const directiveDefs = []; + let schemaDef; // Schema extensions are collected which may add additional operation types. - // https://infra.spec.whatwg.org/#forgiving-base64-decode - /** @param {string} data */ - function forgivingBase64 (data) { - // 1. Remove all ASCII whitespace from data. - data = data.replace(/[\u0009\u000A\u000C\u000D\u0020]/g, ''); // eslint-disable-line - - // 2. If data’s code point length divides by 4 leaving - // no remainder, then: - if (data.length % 4 === 0) { - // 1. If data ends with one or two U+003D (=) code points, - // then remove them from data. - data = data.replace(/=?=$/, ''); - } + const schemaExtensions = []; - // 3. If data’s code point length divides by 4 leaving - // a remainder of 1, then return failure. - if (data.length % 4 === 1) { - return 'failure' - } + for (const def of documentAST.definitions) { + if (def.kind === Kind.SCHEMA_DEFINITION) { + schemaDef = def; + } else if (def.kind === Kind.SCHEMA_EXTENSION) { + schemaExtensions.push(def); + } else if (isTypeDefinitionNode(def)) { + typeDefs.push(def); + } else if (isTypeExtensionNode(def)) { + const extendedTypeName = def.name.value; + const existingTypeExtensions = typeExtensionsMap[extendedTypeName]; + typeExtensionsMap[extendedTypeName] = existingTypeExtensions + ? existingTypeExtensions.concat([def]) + : [def]; + } else if (def.kind === Kind.DIRECTIVE_DEFINITION) { + directiveDefs.push(def); + } + } // If this document contains no new types, extensions, or directives then + // return the same unmodified GraphQLSchema instance. - // 4. If data contains a code point that is not one of - // U+002B (+) - // U+002F (/) - // ASCII alphanumeric - // then return failure. - if (/[^+/0-9A-Za-z]/.test(data)) { - return 'failure' - } + if ( + Object.keys(typeExtensionsMap).length === 0 && + typeDefs.length === 0 && + directiveDefs.length === 0 && + schemaExtensions.length === 0 && + schemaDef == null + ) { + return schemaConfig; + } - const binary = atob(data); - const bytes = new Uint8Array(binary.length); + const typeMap = Object.create(null); - for (let byte = 0; byte < binary.length; byte++) { - bytes[byte] = binary.charCodeAt(byte); - } + for (const existingType of schemaConfig.types) { + typeMap[existingType.name] = extendNamedType(existingType); + } - return bytes - } + for (const typeNode of typeDefs) { + var _stdTypeMap$name; - // https://fetch.spec.whatwg.org/#collect-an-http-quoted-string - // tests: https://fetch.spec.whatwg.org/#example-http-quoted-string - /** - * @param {string} input - * @param {{ position: number }} position - * @param {boolean?} extractValue - */ - function collectAnHTTPQuotedString (input, position, extractValue) { - // 1. Let positionStart be position. - const positionStart = position.position; - - // 2. Let value be the empty string. - let value = ''; - - // 3. Assert: the code point at position within input - // is U+0022 ("). - assert(input[position.position] === '"'); - - // 4. Advance position by 1. - position.position++; - - // 5. While true: - while (true) { - // 1. Append the result of collecting a sequence of code points - // that are not U+0022 (") or U+005C (\) from input, given - // position, to value. - value += collectASequenceOfCodePoints( - (char) => char !== '"' && char !== '\\', - input, - position - ); - - // 2. If position is past the end of input, then break. - if (position.position >= input.length) { - break - } + const name = typeNode.name.value; + typeMap[name] = + (_stdTypeMap$name = stdTypeMap[name]) !== null && + _stdTypeMap$name !== void 0 + ? _stdTypeMap$name + : buildType(typeNode); + } - // 3. Let quoteOrBackslash be the code point at position within - // input. - const quoteOrBackslash = input[position.position]; + const operationTypes = { + // Get the extended root operation types. + query: schemaConfig.query && replaceNamedType(schemaConfig.query), + mutation: schemaConfig.mutation && replaceNamedType(schemaConfig.mutation), + subscription: + schemaConfig.subscription && replaceNamedType(schemaConfig.subscription), + // Then, incorporate schema definition and all schema extensions. + ...(schemaDef && getOperationTypes([schemaDef])), + ...getOperationTypes(schemaExtensions), + }; // Then produce and return a Schema config with these types. - // 4. Advance position by 1. - position.position++; + return { + description: + (_schemaDef = schemaDef) === null || _schemaDef === void 0 + ? void 0 + : (_schemaDef$descriptio = _schemaDef.description) === null || + _schemaDef$descriptio === void 0 + ? void 0 + : _schemaDef$descriptio.value, + ...operationTypes, + types: Object.values(typeMap), + directives: [ + ...schemaConfig.directives.map(replaceDirective), + ...directiveDefs.map(buildDirective), + ], + extensions: Object.create(null), + astNode: + (_schemaDef2 = schemaDef) !== null && _schemaDef2 !== void 0 + ? _schemaDef2 + : schemaConfig.astNode, + extensionASTNodes: schemaConfig.extensionASTNodes.concat(schemaExtensions), + assumeValid: + (_options$assumeValid = + options === null || options === void 0 + ? void 0 + : options.assumeValid) !== null && _options$assumeValid !== void 0 + ? _options$assumeValid + : false, + }; // Below are functions used for producing this schema that have closed over + // this scope and have access to the schema, cache, and newly defined types. - // 5. If quoteOrBackslash is U+005C (\), then: - if (quoteOrBackslash === '\\') { - // 1. If position is past the end of input, then append - // U+005C (\) to value and break. - if (position.position >= input.length) { - value += '\\'; - break - } + function replaceType(type) { + if (isListType(type)) { + // @ts-expect-error + return new GraphQLList(replaceType(type.ofType)); + } - // 2. Append the code point at position within input to value. - value += input[position.position]; + if (isNonNullType(type)) { + // @ts-expect-error + return new GraphQLNonNull(replaceType(type.ofType)); + } // @ts-expect-error FIXME - // 3. Advance position by 1. - position.position++; + return replaceNamedType(type); + } - // 6. Otherwise: - } else { - // 1. Assert: quoteOrBackslash is U+0022 ("). - assert(quoteOrBackslash === '"'); + function replaceNamedType(type) { + // Note: While this could make early assertions to get the correctly + // typed values, that would throw immediately while type system + // validation with validateSchema() will produce more actionable results. + return typeMap[type.name]; + } - // 2. Break. - break - } - } + function replaceDirective(directive) { + const config = directive.toConfig(); + return new GraphQLDirective({ + ...config, + args: mapValue(config.args, extendArg), + }); + } - // 6. If the extract-value flag is set, then return value. - if (extractValue) { - return value - } + function extendNamedType(type) { + if (isIntrospectionType(type) || isSpecifiedScalarType(type)) { + // Builtin types are not extended. + return type; + } - // 7. Return the code points from positionStart to position, - // inclusive, within input. - return input.slice(positionStart, position.position) - } + if (isScalarType(type)) { + return extendScalarType(type); + } - dataURL = { - dataURLProcessor, - URLSerializer, - collectASequenceOfCodePoints, - stringPercentDecode, - parseMIMEType, - collectAnHTTPQuotedString - }; - return dataURL; -} - -var fetch_1; -var hasRequiredFetch; - -function requireFetch () { - if (hasRequiredFetch) return fetch_1; - hasRequiredFetch = 1; - - const { - Response, - makeNetworkError, - makeAppropriateNetworkError, - filterResponse, - makeResponse - } = requireResponse(); - const { Headers } = requireHeaders(); - const { Request, makeRequest } = requireRequest(); - const zlib$1 = zlib; - const { - bytesMatch, - makePolicyContainer, - clonePolicyContainer, - requestBadPort, - TAOCheck, - appendRequestOriginHeader, - responseLocationURL, - requestCurrentURL, - setRequestReferrerPolicyOnRedirect, - tryUpgradeRequestToAPotentiallyTrustworthyURL, - createOpaqueTimingInfo, - appendFetchMetadata, - corsCheck, - crossOriginResourcePolicyCheck, - determineRequestsReferrer, - coarsenedSharedCurrentTime, - createDeferredPromise, - isBlobLike, - sameOrigin, - isCancelled, - isAborted, - isErrorLike, - fullyReadBody - } = requireUtil(); - const { kState, kHeaders, kGuard, kRealm } = requireSymbols(); - const assert = require$$0$3; - const { safelyExtractBody, extractBody } = requireBody(); - const { - redirectStatus, - nullBodyStatus, - safeMethods, - requestBodyHeader, - subresource, - DOMException - } = requireConstants$1(); - const { kHeadersList } = requireSymbols$1(); - const EE = require$$0$4; - const { Readable, pipeline } = Stream$2; - const { isErrored, isReadable } = requireUtil$1(); - const { dataURLProcessor } = requireDataURL(); - const { TransformStream } = require$$10; - - /** @type {import('buffer').resolveObjectURL} */ - let resolveObjectURL; - let ReadableStream; - - const nodeVersion = process.versions.node.split('.'); - const nodeMajor = Number(nodeVersion[0]); - const nodeMinor = Number(nodeVersion[1]); - - class Fetch extends EE { - constructor (dispatcher) { - super(); - - this.dispatcher = dispatcher; - this.connection = null; - this.dump = false; - this.state = 'ongoing'; - } + if (isObjectType(type)) { + return extendObjectType(type); + } - terminate (reason) { - if (this.state !== 'ongoing') { - return - } + if (isInterfaceType(type)) { + return extendInterfaceType(type); + } - this.state = 'terminated'; - this.connection?.destroy(reason); - this.emit('terminated', reason); - } + if (isUnionType(type)) { + return extendUnionType(type); + } - abort () { - if (this.state !== 'ongoing') { - return - } + if (isEnumType(type)) { + return extendEnumType(type); + } - const reason = new DOMException('The operation was aborted.', 'AbortError'); + if (isInputObjectType(type)) { + return extendInputObjectType(type); + } + /* c8 ignore next 3 */ + // Not reachable, all possible type definition nodes have been considered. - this.state = 'aborted'; - this.connection?.destroy(reason); - this.emit('terminated', reason); - } - } + invariant$1(false, 'Unexpected type: ' + inspect$1(type)); + } - // https://fetch.spec.whatwg.org/#fetch-method - async function fetch (input, init = {}) { - if (arguments.length < 1) { - throw new TypeError( - `Failed to execute 'fetch' on 'Window': 1 argument required, but only ${arguments.length} present.` - ) - } + function extendInputObjectType(type) { + var _typeExtensionsMap$co; - // 1. Let p be a new promise. - const p = createDeferredPromise(); + const config = type.toConfig(); + const extensions = + (_typeExtensionsMap$co = typeExtensionsMap[config.name]) !== null && + _typeExtensionsMap$co !== void 0 + ? _typeExtensionsMap$co + : []; + return new GraphQLInputObjectType({ + ...config, + fields: () => ({ + ...mapValue(config.fields, (field) => ({ + ...field, + type: replaceType(field.type), + })), + ...buildInputFieldMap(extensions), + }), + extensionASTNodes: config.extensionASTNodes.concat(extensions), + }); + } - // 2. Let requestObject be the result of invoking the initial value of - // Request as constructor with input and init as arguments. If this throws - // an exception, reject p with it and return p. - let requestObject; + function extendEnumType(type) { + var _typeExtensionsMap$ty; - try { - requestObject = new Request(input, init); - } catch (e) { - p.reject(e); - return p.promise - } + const config = type.toConfig(); + const extensions = + (_typeExtensionsMap$ty = typeExtensionsMap[type.name]) !== null && + _typeExtensionsMap$ty !== void 0 + ? _typeExtensionsMap$ty + : []; + return new GraphQLEnumType({ + ...config, + values: { ...config.values, ...buildEnumValueMap(extensions) }, + extensionASTNodes: config.extensionASTNodes.concat(extensions), + }); + } - // 3. Let request be requestObject’s request. - const request = requestObject[kState]; + function extendScalarType(type) { + var _typeExtensionsMap$co2; - // 4. If requestObject’s signal’s aborted flag is set, then: - if (requestObject.signal.aborted) { - // 1. Abort fetch with p, request, and null. - abortFetch(p, request, null); + const config = type.toConfig(); + const extensions = + (_typeExtensionsMap$co2 = typeExtensionsMap[config.name]) !== null && + _typeExtensionsMap$co2 !== void 0 + ? _typeExtensionsMap$co2 + : []; + let specifiedByURL = config.specifiedByURL; - // 2. Return p. - return p.promise - } + for (const extensionNode of extensions) { + var _getSpecifiedByURL; - // 5. Let globalObject be request’s client’s global object. - const globalObject = request.client.globalObject; + specifiedByURL = + (_getSpecifiedByURL = getSpecifiedByURL(extensionNode)) !== null && + _getSpecifiedByURL !== void 0 + ? _getSpecifiedByURL + : specifiedByURL; + } - // 6. If globalObject is a ServiceWorkerGlobalScope object, then set - // request’s service-workers mode to "none". - if (globalObject?.constructor?.name === 'ServiceWorkerGlobalScope') { - request.serviceWorkers = 'none'; - } + return new GraphQLScalarType({ + ...config, + specifiedByURL, + extensionASTNodes: config.extensionASTNodes.concat(extensions), + }); + } - // 7. Let responseObject be null. - let responseObject = null; + function extendObjectType(type) { + var _typeExtensionsMap$co3; - // 8. Let relevantRealm be this’s relevant Realm. - const relevantRealm = null; + const config = type.toConfig(); + const extensions = + (_typeExtensionsMap$co3 = typeExtensionsMap[config.name]) !== null && + _typeExtensionsMap$co3 !== void 0 + ? _typeExtensionsMap$co3 + : []; + return new GraphQLObjectType({ + ...config, + interfaces: () => [ + ...type.getInterfaces().map(replaceNamedType), + ...buildInterfaces(extensions), + ], + fields: () => ({ + ...mapValue(config.fields, extendField), + ...buildFieldMap(extensions), + }), + extensionASTNodes: config.extensionASTNodes.concat(extensions), + }); + } - // 9. Let locallyAborted be false. - let locallyAborted = false; + function extendInterfaceType(type) { + var _typeExtensionsMap$co4; - // 10. Let controller be null. - let controller = null; + const config = type.toConfig(); + const extensions = + (_typeExtensionsMap$co4 = typeExtensionsMap[config.name]) !== null && + _typeExtensionsMap$co4 !== void 0 + ? _typeExtensionsMap$co4 + : []; + return new GraphQLInterfaceType({ + ...config, + interfaces: () => [ + ...type.getInterfaces().map(replaceNamedType), + ...buildInterfaces(extensions), + ], + fields: () => ({ + ...mapValue(config.fields, extendField), + ...buildFieldMap(extensions), + }), + extensionASTNodes: config.extensionASTNodes.concat(extensions), + }); + } - // 11. Add the following abort steps to requestObject’s signal: - requestObject.signal.addEventListener( - 'abort', - () => { - // 1. Set locallyAborted to true. - locallyAborted = true; + function extendUnionType(type) { + var _typeExtensionsMap$co5; - // 2. Abort fetch with p, request, and responseObject. - abortFetch(p, request, responseObject); + const config = type.toConfig(); + const extensions = + (_typeExtensionsMap$co5 = typeExtensionsMap[config.name]) !== null && + _typeExtensionsMap$co5 !== void 0 + ? _typeExtensionsMap$co5 + : []; + return new GraphQLUnionType({ + ...config, + types: () => [ + ...type.getTypes().map(replaceNamedType), + ...buildUnionTypes(extensions), + ], + extensionASTNodes: config.extensionASTNodes.concat(extensions), + }); + } - // 3. If controller is not null, then abort controller. - if (controller != null) { - controller.abort(); - } - }, - { once: true } - ); - - // 12. Let handleFetchDone given response response be to finalize and - // report timing with response, globalObject, and "fetch". - const handleFetchDone = (response) => - finalizeAndReportTiming(response, 'fetch'); - - // 13. Set controller to the result of calling fetch given request, - // with processResponseEndOfBody set to handleFetchDone, and processResponse - // given response being these substeps: - - const processResponse = (response) => { - // 1. If locallyAborted is true, terminate these substeps. - if (locallyAborted) { - return - } + function extendField(field) { + return { + ...field, + type: replaceType(field.type), + args: field.args && mapValue(field.args, extendArg), + }; + } - // 2. If response’s aborted flag is set, then abort fetch with p, - // request, and responseObject, and terminate these substeps. - if (response.aborted) { - abortFetch(p, request, responseObject); - return - } + function extendArg(arg) { + return { ...arg, type: replaceType(arg.type) }; + } - // 3. If response is a network error, then reject p with a TypeError - // and terminate these substeps. - if (response.type === 'error') { - p.reject( - Object.assign(new TypeError('fetch failed'), { cause: response.error }) - ); - return - } + function getOperationTypes(nodes) { + const opTypes = {}; - // 4. Set responseObject to the result of creating a Response object, - // given response, "immutable", and relevantRealm. - responseObject = new Response(); - responseObject[kState] = response; - responseObject[kRealm] = relevantRealm; - responseObject[kHeaders][kHeadersList] = response.headersList; - responseObject[kHeaders][kGuard] = 'immutable'; - responseObject[kHeaders][kRealm] = relevantRealm; - - // 5. Resolve p with responseObject. - p.resolve(responseObject); - }; + for (const node of nodes) { + var _node$operationTypes; - controller = fetching({ - request, - processResponseEndOfBody: handleFetchDone, - processResponse, - dispatcher: this // undici - }); + // FIXME: https://github.com/graphql/graphql-js/issues/2203 + const operationTypesNodes = + /* c8 ignore next */ + (_node$operationTypes = node.operationTypes) !== null && + _node$operationTypes !== void 0 + ? _node$operationTypes + : []; - // 14. Return p. - return p.promise - } + for (const operationType of operationTypesNodes) { + // Note: While this could make early assertions to get the correctly + // typed values below, that would throw immediately while type system + // validation with validateSchema() will produce more actionable results. + // @ts-expect-error + opTypes[operationType.operation] = getNamedType(operationType.type); + } + } - // https://fetch.spec.whatwg.org/#finalize-and-report-timing - function finalizeAndReportTiming (response, initiatorType = 'other') { - // 1. If response is an aborted network error, then return. - if (response.type === 'error' && response.aborted) { - return - } + return opTypes; + } - // 2. If response’s URL list is null or empty, then return. - if (!response.urlList?.length) { - return - } + function getNamedType(node) { + var _stdTypeMap$name2; - // 3. Let originalURL be response’s URL list[0]. - const originalURL = response.urlList[0]; + const name = node.name.value; + const type = + (_stdTypeMap$name2 = stdTypeMap[name]) !== null && + _stdTypeMap$name2 !== void 0 + ? _stdTypeMap$name2 + : typeMap[name]; - // 4. Let timingInfo be response’s timing info. - let timingInfo = response.timingInfo; + if (type === undefined) { + throw new Error(`Unknown type: "${name}".`); + } - // 5. Let cacheState be response’s cache state. - let cacheState = response.cacheState; + return type; + } - // 6. If originalURL’s scheme is not an HTTP(S) scheme, then return. - if (!/^https?:/.test(originalURL.protocol)) { - return - } + function getWrappedType(node) { + if (node.kind === Kind.LIST_TYPE) { + return new GraphQLList(getWrappedType(node.type)); + } - // 7. If timingInfo is null, then return. - if (timingInfo === null) { - return - } + if (node.kind === Kind.NON_NULL_TYPE) { + return new GraphQLNonNull(getWrappedType(node.type)); + } - // 8. If response’s timing allow passed flag is not set, then: - if (!timingInfo.timingAllowPassed) { - // 1. Set timingInfo to a the result of creating an opaque timing info for timingInfo. - timingInfo = createOpaqueTimingInfo({ - startTime: timingInfo.startTime - }); + return getNamedType(node); + } - // 2. Set cacheState to the empty string. - cacheState = ''; - } + function buildDirective(node) { + var _node$description; - // 9. Set timingInfo’s end time to the coarsened shared current time - // given global’s relevant settings object’s cross-origin isolated - // capability. - // TODO: given global’s relevant settings object’s cross-origin isolated - // capability? - response.timingInfo.endTime = coarsenedSharedCurrentTime(); - - // 10. Set response’s timing info to timingInfo. - response.timingInfo = timingInfo; - - // 11. Mark resource timing for timingInfo, originalURL, initiatorType, - // global, and cacheState. - markResourceTiming( - timingInfo, - originalURL, - initiatorType, - globalThis, - cacheState - ); - } + return new GraphQLDirective({ + name: node.name.value, + description: + (_node$description = node.description) === null || + _node$description === void 0 + ? void 0 + : _node$description.value, + // @ts-expect-error + locations: node.locations.map(({ value }) => value), + isRepeatable: node.repeatable, + args: buildArgumentMap(node.arguments), + astNode: node, + }); + } - // https://w3c.github.io/resource-timing/#dfn-mark-resource-timing - function markResourceTiming (timingInfo, originalURL, initiatorType, globalThis, cacheState) { - if (nodeMajor >= 18 && nodeMinor >= 2) { - performance.markResourceTiming(timingInfo, originalURL, initiatorType, globalThis, cacheState); - } - } + function buildFieldMap(nodes) { + const fieldConfigMap = Object.create(null); - // https://fetch.spec.whatwg.org/#abort-fetch - function abortFetch (p, request, responseObject) { - // 1. Let error be an "AbortError" DOMException. - const error = new DOMException('The operation was aborted.', 'AbortError'); - - // 2. Reject promise with error. - p.reject(error); - - // 3. If request’s body is not null and is readable, then cancel request’s - // body with error. - if (request.body != null && isReadable(request.body?.stream)) { - request.body.stream.cancel(error).catch((err) => { - if (err.code === 'ERR_INVALID_STATE') { - // Node bug? - return - } - throw err - }); - } + for (const node of nodes) { + var _node$fields; - // 4. If responseObject is null, then return. - if (responseObject == null) { - return - } + // FIXME: https://github.com/graphql/graphql-js/issues/2203 + const nodeFields = + /* c8 ignore next */ + (_node$fields = node.fields) !== null && _node$fields !== void 0 + ? _node$fields + : []; - // 5. Let response be responseObject’s response. - const response = responseObject[kState]; + for (const field of nodeFields) { + var _field$description; - // 6. If response’s body is not null and is readable, then error response’s - // body with error. - if (response.body != null && isReadable(response.body?.stream)) { - response.body.stream.cancel(error).catch((err) => { - if (err.code === 'ERR_INVALID_STATE') { - // Node bug? - return - } - throw err - }); - } - } + fieldConfigMap[field.name.value] = { + // Note: While this could make assertions to get the correctly typed + // value, that would throw immediately while type system validation + // with validateSchema() will produce more actionable results. + type: getWrappedType(field.type), + description: + (_field$description = field.description) === null || + _field$description === void 0 + ? void 0 + : _field$description.value, + args: buildArgumentMap(field.arguments), + deprecationReason: getDeprecationReason(field), + astNode: field, + }; + } + } - // https://fetch.spec.whatwg.org/#fetching - function fetching ({ - request, - processRequestBodyChunkLength, - processRequestEndOfBody, - processResponse, - processResponseEndOfBody, - processResponseConsumeBody, - useParallelQueue = false, - dispatcher // undici - }) { - // 1. Let taskDestination be null. - let taskDestination = null; - - // 2. Let crossOriginIsolatedCapability be false. - let crossOriginIsolatedCapability = false; - - // 3. If request’s client is non-null, then: - if (request.client != null) { - // 1. Set taskDestination to request’s client’s global object. - taskDestination = request.client.globalObject; - - // 2. Set crossOriginIsolatedCapability to request’s client’s cross-origin - // isolated capability. - crossOriginIsolatedCapability = - request.client.crossOriginIsolatedCapability; - } + return fieldConfigMap; + } - // 4. If useParallelQueue is true, then set taskDestination to the result of - // starting a new parallel queue. - // TODO - - // 5. Let timingInfo be a new fetch timing info whose start time and - // post-redirect start time are the coarsened shared current time given - // crossOriginIsolatedCapability. - const currenTime = coarsenedSharedCurrentTime(crossOriginIsolatedCapability); - const timingInfo = createOpaqueTimingInfo({ - startTime: currenTime - }); - - // 6. Let fetchParams be a new fetch params whose - // request is request, - // timing info is timingInfo, - // process request body chunk length is processRequestBodyChunkLength, - // process request end-of-body is processRequestEndOfBody, - // process response is processResponse, - // process response consume body is processResponseConsumeBody, - // process response end-of-body is processResponseEndOfBody, - // task destination is taskDestination, - // and cross-origin isolated capability is crossOriginIsolatedCapability. - const fetchParams = { - controller: new Fetch(dispatcher), - request, - timingInfo, - processRequestBodyChunkLength, - processRequestEndOfBody, - processResponse, - processResponseConsumeBody, - processResponseEndOfBody, - taskDestination, - crossOriginIsolatedCapability - }; + function buildArgumentMap(args) { + // FIXME: https://github.com/graphql/graphql-js/issues/2203 + const argsNodes = + /* c8 ignore next */ + args !== null && args !== void 0 ? args : []; + const argConfigMap = Object.create(null); - // 7. If request’s body is a byte sequence, then set request’s body to the - // first return value of safely extracting request’s body. - // NOTE: Since fetching is only called from fetch, body should already be - // extracted. - assert(!request.body || request.body.stream); - - // 8. If request’s window is "client", then set request’s window to request’s - // client, if request’s client’s global object is a Window object; otherwise - // "no-window". - if (request.window === 'client') { - // TODO: What if request.client is null? - request.window = - request.client?.globalObject?.constructor?.name === 'Window' - ? request.client - : 'no-window'; - } + for (const arg of argsNodes) { + var _arg$description; - // 9. If request’s origin is "client", then set request’s origin to request’s - // client’s origin. - if (request.origin === 'client') { - // TODO: What if request.client is null? - request.origin = request.client?.origin; - } + // Note: While this could make assertions to get the correctly typed + // value, that would throw immediately while type system validation + // with validateSchema() will produce more actionable results. + const type = getWrappedType(arg.type); + argConfigMap[arg.name.value] = { + type, + description: + (_arg$description = arg.description) === null || + _arg$description === void 0 + ? void 0 + : _arg$description.value, + defaultValue: valueFromAST(arg.defaultValue, type), + deprecationReason: getDeprecationReason(arg), + astNode: arg, + }; + } - // 10. If all of the following conditions are true: - // TODO - - // 11. If request’s policy container is "client", then: - if (request.policyContainer === 'client') { - // 1. If request’s client is non-null, then set request’s policy - // container to a clone of request’s client’s policy container. [HTML] - if (request.client != null) { - request.policyContainer = clonePolicyContainer( - request.client.policyContainer - ); - } else { - // 2. Otherwise, set request’s policy container to a new policy - // container. - request.policyContainer = makePolicyContainer(); - } - } + return argConfigMap; + } - // 12. If request’s header list does not contain `Accept`, then: - if (!request.headersList.has('accept')) { - // 1. Let value be `*/*`. - const value = '*/*'; - - // 2. A user agent should set value to the first matching statement, if - // any, switching on request’s destination: - // "document" - // "frame" - // "iframe" - // `text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8` - // "image" - // `image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5` - // "style" - // `text/css,*/*;q=0.1` - // TODO - - // 3. Append `Accept`/value to request’s header list. - request.headersList.append('accept', value); - } + function buildInputFieldMap(nodes) { + const inputFieldMap = Object.create(null); - // 13. If request’s header list does not contain `Accept-Language`, then - // user agents should append `Accept-Language`/an appropriate value to - // request’s header list. - if (!request.headersList.has('accept-language')) { - request.headersList.append('accept-language', '*'); - } + for (const node of nodes) { + var _node$fields2; - // 14. If request’s priority is null, then use request’s initiator and - // destination appropriately in setting request’s priority to a - // user-agent-defined object. - if (request.priority === null) ; + // FIXME: https://github.com/graphql/graphql-js/issues/2203 + const fieldsNodes = + /* c8 ignore next */ + (_node$fields2 = node.fields) !== null && _node$fields2 !== void 0 + ? _node$fields2 + : []; - // 15. If request is a subresource request, then: - if (subresource.includes(request.destination)) ; + for (const field of fieldsNodes) { + var _field$description2; - // 16. Run main fetch given fetchParams. - mainFetch(fetchParams) - .catch(err => { - fetchParams.controller.terminate(err); - }); + // Note: While this could make assertions to get the correctly typed + // value, that would throw immediately while type system validation + // with validateSchema() will produce more actionable results. + const type = getWrappedType(field.type); + inputFieldMap[field.name.value] = { + type, + description: + (_field$description2 = field.description) === null || + _field$description2 === void 0 + ? void 0 + : _field$description2.value, + defaultValue: valueFromAST(field.defaultValue, type), + deprecationReason: getDeprecationReason(field), + astNode: field, + }; + } + } - // 17. Return fetchParam's controller - return fetchParams.controller - } + return inputFieldMap; + } - // https://fetch.spec.whatwg.org/#concept-main-fetch - async function mainFetch (fetchParams, recursive = false) { - // 1. Let request be fetchParams’s request. - const request = fetchParams.request; - - // 2. Let response be null. - let response = null; - - // 3. If request’s local-URLs-only flag is set and request’s current URL is - // not local, then set response to a network error. - if ( - request.localURLsOnly && - !/^(about|blob|data):/.test(requestCurrentURL(request).protocol) - ) { - response = makeNetworkError('local URLs only'); - } + function buildEnumValueMap(nodes) { + const enumValueMap = Object.create(null); - // 4. Run report Content Security Policy violations for request. - // TODO + for (const node of nodes) { + var _node$values; - // 5. Upgrade request to a potentially trustworthy URL, if appropriate. - tryUpgradeRequestToAPotentiallyTrustworthyURL(request); + // FIXME: https://github.com/graphql/graphql-js/issues/2203 + const valuesNodes = + /* c8 ignore next */ + (_node$values = node.values) !== null && _node$values !== void 0 + ? _node$values + : []; - // 6. If should request be blocked due to a bad port, should fetching request - // be blocked as mixed content, or should request be blocked by Content - // Security Policy returns blocked, then set response to a network error. - if (requestBadPort(request) === 'blocked') { - response = makeNetworkError('bad port'); - } - // TODO: should fetching request be blocked as mixed content? - // TODO: should request be blocked by Content Security Policy? + for (const value of valuesNodes) { + var _value$description; - // 7. If request’s referrer policy is the empty string, then set request’s - // referrer policy to request’s policy container’s referrer policy. - if (request.referrerPolicy === '') { - request.referrerPolicy = request.policyContainer.referrerPolicy; - } + enumValueMap[value.name.value] = { + description: + (_value$description = value.description) === null || + _value$description === void 0 + ? void 0 + : _value$description.value, + deprecationReason: getDeprecationReason(value), + astNode: value, + }; + } + } - // 8. If request’s referrer is not "no-referrer", then set request’s - // referrer to the result of invoking determine request’s referrer. - if (request.referrer !== 'no-referrer') { - request.referrer = determineRequestsReferrer(request); - } + return enumValueMap; + } - // 9. Set request’s current URL’s scheme to "https" if all of the following - // conditions are true: - // - request’s current URL’s scheme is "http" - // - request’s current URL’s host is a domain - // - Matching request’s current URL’s host per Known HSTS Host Domain Name - // Matching results in either a superdomain match with an asserted - // includeSubDomains directive or a congruent match (with or without an - // asserted includeSubDomains directive). [HSTS] - // TODO - - // 10. If recursive is false, then run the remaining steps in parallel. - // TODO - - // 11. If response is null, then set response to the result of running - // the steps corresponding to the first matching statement: - if (response === null) { - response = await (async () => { - const currentURL = requestCurrentURL(request); - - if ( - // - request’s current URL’s origin is same origin with request’s origin, - // and request’s response tainting is "basic" - (sameOrigin(currentURL, request.url) && request.responseTainting === 'basic') || - // request’s current URL’s scheme is "data" - (currentURL.protocol === 'data:') || - // - request’s mode is "navigate" or "websocket" - (request.mode === 'navigate' || request.mode === 'websocket') - ) { - // 1. Set request’s response tainting to "basic". - request.responseTainting = 'basic'; - - // 2. Return the result of running scheme fetch given fetchParams. - return await schemeFetch(fetchParams) - } + function buildInterfaces(nodes) { + // Note: While this could make assertions to get the correctly typed + // values below, that would throw immediately while type system + // validation with validateSchema() will produce more actionable results. + // @ts-expect-error + return nodes.flatMap( + // FIXME: https://github.com/graphql/graphql-js/issues/2203 + (node) => { + var _node$interfaces$map, _node$interfaces; - // request’s mode is "same-origin" - if (request.mode === 'same-origin') { - // 1. Return a network error. - return makeNetworkError('request mode cannot be "same-origin"') - } + return ( + /* c8 ignore next */ + (_node$interfaces$map = + (_node$interfaces = node.interfaces) === null || + _node$interfaces === void 0 + ? void 0 + : _node$interfaces.map(getNamedType)) !== null && + _node$interfaces$map !== void 0 + ? _node$interfaces$map + : [] + ); + }, + ); + } - // request’s mode is "no-cors" - if (request.mode === 'no-cors') { - // 1. If request’s redirect mode is not "follow", then return a network - // error. - if (request.redirect !== 'follow') { - return makeNetworkError( - 'redirect mode cannot be "follow" for "no-cors" request' - ) - } + function buildUnionTypes(nodes) { + // Note: While this could make assertions to get the correctly typed + // values below, that would throw immediately while type system + // validation with validateSchema() will produce more actionable results. + // @ts-expect-error + return nodes.flatMap( + // FIXME: https://github.com/graphql/graphql-js/issues/2203 + (node) => { + var _node$types$map, _node$types; - // 2. Set request’s response tainting to "opaque". - request.responseTainting = 'opaque'; + return ( + /* c8 ignore next */ + (_node$types$map = + (_node$types = node.types) === null || _node$types === void 0 + ? void 0 + : _node$types.map(getNamedType)) !== null && + _node$types$map !== void 0 + ? _node$types$map + : [] + ); + }, + ); + } - // 3. Return the result of running scheme fetch given fetchParams. - return await schemeFetch(fetchParams) - } + function buildType(astNode) { + var _typeExtensionsMap$na; - // request’s current URL’s scheme is not an HTTP(S) scheme - if (!/^https?:/.test(requestCurrentURL(request).protocol)) { - // Return a network error. - return makeNetworkError('URL scheme must be a HTTP(S) scheme') - } + const name = astNode.name.value; + const extensionASTNodes = + (_typeExtensionsMap$na = typeExtensionsMap[name]) !== null && + _typeExtensionsMap$na !== void 0 + ? _typeExtensionsMap$na + : []; - // - request’s use-CORS-preflight flag is set - // - request’s unsafe-request flag is set and either request’s method is - // not a CORS-safelisted method or CORS-unsafe request-header names with - // request’s header list is not empty - // 1. Set request’s response tainting to "cors". - // 2. Let corsWithPreflightResponse be the result of running HTTP fetch - // given fetchParams and true. - // 3. If corsWithPreflightResponse is a network error, then clear cache - // entries using request. - // 4. Return corsWithPreflightResponse. - // TODO - - // Otherwise - // 1. Set request’s response tainting to "cors". - request.responseTainting = 'cors'; - - // 2. Return the result of running HTTP fetch given fetchParams. - return await httpFetch(fetchParams) - })(); - } + switch (astNode.kind) { + case Kind.OBJECT_TYPE_DEFINITION: { + var _astNode$description; - // 12. If recursive is true, then return response. - if (recursive) { - return response - } + const allNodes = [astNode, ...extensionASTNodes]; + return new GraphQLObjectType({ + name, + description: + (_astNode$description = astNode.description) === null || + _astNode$description === void 0 + ? void 0 + : _astNode$description.value, + interfaces: () => buildInterfaces(allNodes), + fields: () => buildFieldMap(allNodes), + astNode, + extensionASTNodes, + }); + } - // 13. If response is not a network error and response is not a filtered - // response, then: - if (response.status !== 0 && !response.internalResponse) { - // If request’s response tainting is "cors", then: - if (request.responseTainting === 'cors') ; - - // Set response to the following filtered response with response as its - // internal response, depending on request’s response tainting: - if (request.responseTainting === 'basic') { - response = filterResponse(response, 'basic'); - } else if (request.responseTainting === 'cors') { - response = filterResponse(response, 'cors'); - } else if (request.responseTainting === 'opaque') { - response = filterResponse(response, 'opaque'); - } else { - assert(false); - } - } + case Kind.INTERFACE_TYPE_DEFINITION: { + var _astNode$description2; - // 14. Let internalResponse be response, if response is a network error, - // and response’s internal response otherwise. - let internalResponse = - response.status === 0 ? response : response.internalResponse; + const allNodes = [astNode, ...extensionASTNodes]; + return new GraphQLInterfaceType({ + name, + description: + (_astNode$description2 = astNode.description) === null || + _astNode$description2 === void 0 + ? void 0 + : _astNode$description2.value, + interfaces: () => buildInterfaces(allNodes), + fields: () => buildFieldMap(allNodes), + astNode, + extensionASTNodes, + }); + } - // 15. If internalResponse’s URL list is empty, then set it to a clone of - // request’s URL list. - if (internalResponse.urlList.length === 0) { - internalResponse.urlList.push(...request.urlList); - } + case Kind.ENUM_TYPE_DEFINITION: { + var _astNode$description3; - // 16. If request’s timing allow failed flag is unset, then set - // internalResponse’s timing allow passed flag. - if (!request.timingAllowFailed) { - response.timingAllowPassed = true; - } + const allNodes = [astNode, ...extensionASTNodes]; + return new GraphQLEnumType({ + name, + description: + (_astNode$description3 = astNode.description) === null || + _astNode$description3 === void 0 + ? void 0 + : _astNode$description3.value, + values: buildEnumValueMap(allNodes), + astNode, + extensionASTNodes, + }); + } - // 17. If response is not a network error and any of the following returns - // blocked - // - should internalResponse to request be blocked as mixed content - // - should internalResponse to request be blocked by Content Security Policy - // - should internalResponse to request be blocked due to its MIME type - // - should internalResponse to request be blocked due to nosniff - // TODO - - // 18. If response’s type is "opaque", internalResponse’s status is 206, - // internalResponse’s range-requested flag is set, and request’s header - // list does not contain `Range`, then set response and internalResponse - // to a network error. - if ( - response.type === 'opaque' && - internalResponse.status === 206 && - internalResponse.rangeRequested && - !request.headers.has('range') - ) { - response = internalResponse = makeNetworkError(); - } + case Kind.UNION_TYPE_DEFINITION: { + var _astNode$description4; - // 19. If response is not a network error and either request’s method is - // `HEAD` or `CONNECT`, or internalResponse’s status is a null body status, - // set internalResponse’s body to null and disregard any enqueuing toward - // it (if any). - if ( - response.status !== 0 && - (request.method === 'HEAD' || - request.method === 'CONNECT' || - nullBodyStatus.includes(internalResponse.status)) - ) { - internalResponse.body = null; - fetchParams.controller.dump = true; - } + const allNodes = [astNode, ...extensionASTNodes]; + return new GraphQLUnionType({ + name, + description: + (_astNode$description4 = astNode.description) === null || + _astNode$description4 === void 0 + ? void 0 + : _astNode$description4.value, + types: () => buildUnionTypes(allNodes), + astNode, + extensionASTNodes, + }); + } - // 20. If request’s integrity metadata is not the empty string, then: - if (request.integrity) { - // 1. Let processBodyError be this step: run fetch finale given fetchParams - // and a network error. - const processBodyError = (reason) => - fetchFinale(fetchParams, makeNetworkError(reason)); - - // 2. If request’s response tainting is "opaque", or response’s body is null, - // then run processBodyError and abort these steps. - if (request.responseTainting === 'opaque' || response.body == null) { - processBodyError(response.error); - return - } + case Kind.SCALAR_TYPE_DEFINITION: { + var _astNode$description5; - // 3. Let processBody given bytes be these steps: - const processBody = (bytes) => { - // 1. If bytes do not match request’s integrity metadata, - // then run processBodyError and abort these steps. [SRI] - if (!bytesMatch(bytes, request.integrity)) { - processBodyError('integrity mismatch'); - return - } + return new GraphQLScalarType({ + name, + description: + (_astNode$description5 = astNode.description) === null || + _astNode$description5 === void 0 + ? void 0 + : _astNode$description5.value, + specifiedByURL: getSpecifiedByURL(astNode), + astNode, + extensionASTNodes, + }); + } - // 2. Set response’s body to the first return value of safely - // extracting bytes. - response.body = safelyExtractBody(bytes)[0]; + case Kind.INPUT_OBJECT_TYPE_DEFINITION: { + var _astNode$description6; - // 3. Run fetch finale given fetchParams and response. - fetchFinale(fetchParams, response); - }; + const allNodes = [astNode, ...extensionASTNodes]; + return new GraphQLInputObjectType({ + name, + description: + (_astNode$description6 = astNode.description) === null || + _astNode$description6 === void 0 + ? void 0 + : _astNode$description6.value, + fields: () => buildInputFieldMap(allNodes), + astNode, + extensionASTNodes, + }); + } + } + } +} +const stdTypeMap = keyMap( + [...specifiedScalarTypes, ...introspectionTypes], + (type) => type.name, +); +/** + * Given a field or enum value node, returns the string value for the + * deprecation reason. + */ - // 4. Fully read response’s body given processBody and processBodyError. - await fullyReadBody(response.body, processBody, processBodyError); - } else { - // 21. Otherwise, run fetch finale given fetchParams and response. - fetchFinale(fetchParams, response); - } - } +function getDeprecationReason(node) { + const deprecated = getDirectiveValues(GraphQLDeprecatedDirective, node); // @ts-expect-error validated by `getDirectiveValues` - // https://fetch.spec.whatwg.org/#concept-scheme-fetch - // given a fetch params fetchParams - async function schemeFetch (fetchParams) { - // let request be fetchParams’s request - const { request } = fetchParams; - - const { - protocol: scheme, - pathname: path - } = requestCurrentURL(request); - - // switch on request’s current URL’s scheme, and run the associated steps: - switch (scheme) { - case 'about:': { - // If request’s current URL’s path is the string "blank", then return a new response - // whose status message is `OK`, header list is « (`Content-Type`, `text/html;charset=utf-8`) », - // and body is the empty byte sequence. - if (path === 'blank') { - const resp = makeResponse({ - statusText: 'OK', - headersList: [ - ['content-type', 'text/html;charset=utf-8'] - ] - }); + return deprecated === null || deprecated === void 0 + ? void 0 + : deprecated.reason; +} +/** + * Given a scalar node, returns the string value for the specifiedByURL. + */ - resp.urlList = [new URL('about:blank')]; - return resp - } +function getSpecifiedByURL(node) { + const specifiedBy = getDirectiveValues(GraphQLSpecifiedByDirective, node); // @ts-expect-error validated by `getDirectiveValues` - // Otherwise, return a network error. - return makeNetworkError('invalid path called') - } - case 'blob:': { - resolveObjectURL = resolveObjectURL || require$$6$2.resolveObjectURL; - - // 1. Run these steps, but abort when the ongoing fetch is terminated: - // 1. Let blob be request’s current URL’s blob URL entry’s object. - // https://w3c.github.io/FileAPI/#blob-url-entry - // P.S. Thank God this method is available in node. - const currentURL = requestCurrentURL(request); - - // https://github.com/web-platform-tests/wpt/blob/7b0ebaccc62b566a1965396e5be7bb2bc06f841f/FileAPI/url/resources/fetch-tests.js#L52-L56 - // Buffer.resolveObjectURL does not ignore URL queries. - if (currentURL.search.length !== 0) { - return makeNetworkError('NetworkError when attempting to fetch resource.') - } + return specifiedBy === null || specifiedBy === void 0 + ? void 0 + : specifiedBy.url; +} - const blob = resolveObjectURL(currentURL.toString()); +/** + * This takes the ast of a schema document produced by the parse function in + * src/language/parser.js. + * + * If no schema definition is provided, then it will look for types named Query, + * Mutation and Subscription. + * + * Given that AST it constructs a GraphQLSchema. The resulting schema + * has no resolve methods, so execution will use default resolvers. + */ +function buildASTSchema(documentAST, options) { + (documentAST != null && documentAST.kind === Kind.DOCUMENT) || + devAssert(false, 'Must provide valid Document AST.'); - // 2. If request’s method is not `GET` or blob is not a Blob object, then return a network error. [FILEAPI] - if (request.method !== 'GET' || !isBlobLike(blob)) { - return makeNetworkError('invalid method') - } + if ( + (options === null || options === void 0 ? void 0 : options.assumeValid) !== + true && + (options === null || options === void 0 + ? void 0 + : options.assumeValidSDL) !== true + ) { + assertValidSDL(documentAST); + } - // 3. Let response be a new response whose status message is `OK`. - const response = makeResponse({ statusText: 'OK', urlList: [currentURL] }); + const emptySchemaConfig = { + description: undefined, + types: [], + directives: [], + extensions: Object.create(null), + extensionASTNodes: [], + assumeValid: false, + }; + const config = extendSchemaImpl(emptySchemaConfig, documentAST, options); - // 4. Append (`Content-Length`, blob’s size attribute value) to response’s header list. - response.headersList.set('content-length', `${blob.size}`); + if (config.astNode == null) { + for (const type of config.types) { + switch (type.name) { + // Note: While this could make early assertions to get the correctly + // typed values below, that would throw immediately while type system + // validation with validateSchema() will produce more actionable results. + case 'Query': + // @ts-expect-error validated in `validateSchema` + config.query = type; + break; - // 5. Append (`Content-Type`, blob’s type attribute value) to response’s header list. - response.headersList.set('content-type', blob.type); + case 'Mutation': + // @ts-expect-error validated in `validateSchema` + config.mutation = type; + break; - // 6. Set response’s body to the result of performing the read operation on blob. - // TODO (fix): This needs to read? - response.body = extractBody(blob)[0]; + case 'Subscription': + // @ts-expect-error validated in `validateSchema` + config.subscription = type; + break; + } + } + } - // 7. Return response. - return response + const directives = [ + ...config.directives, // If specified directives were not explicitly declared, add them. + ...specifiedDirectives.filter((stdDirective) => + config.directives.every( + (directive) => directive.name !== stdDirective.name, + ), + ), + ]; + return new GraphQLSchema({ ...config, directives }); +} +/** + * A helper function to build a GraphQLSchema directly from a source + * document. + */ - // 2. If aborted, then return the appropriate network error for fetchParams. - // TODO - } - case 'data:': { - // 1. Let dataURLStruct be the result of running the - // data: URL processor on request’s current URL. - const currentURL = requestCurrentURL(request); - const dataURLStruct = dataURLProcessor(currentURL); - - // 2. If dataURLStruct is failure, then return a - // network error. - if (dataURLStruct === 'failure') { - return makeNetworkError('failed to fetch the data URL') - } +function buildSchema(source, options) { + const document = parse(source, { + noLocation: + options === null || options === void 0 ? void 0 : options.noLocation, + allowLegacyFragmentVariables: + options === null || options === void 0 + ? void 0 + : options.allowLegacyFragmentVariables, + }); + return buildASTSchema(document, { + assumeValidSDL: + options === null || options === void 0 ? void 0 : options.assumeValidSDL, + assumeValid: + options === null || options === void 0 ? void 0 : options.assumeValid, + }); +} + +const trackedSchemaSymbol = Symbol('TRACKED_SCHEMA'); +const resolversHooksSymbol = Symbol('RESOLVERS_HOOKS'); +function prepareTracedSchema(schema) { + if (!schema || schema[trackedSchemaSymbol]) { + return; + } + schema[trackedSchemaSymbol] = true; + const entries = Object.values(schema.getTypeMap()); + for (const type of entries) { + if (!isIntrospectionType(type) && isObjectType(type)) { + const fields = Object.values(type.getFields()); + for (const field of fields) { + let resolverFn = (field.resolve || defaultFieldResolver); + field.resolve = async (root, args, context, info) => { + if (context && context[resolversHooksSymbol]) { + const hooks = context[resolversHooksSymbol]; + const afterCalls = []; + for (const hook of hooks) { + const afterFn = await hook({ + root, + args, + context, + info, + resolverFn, + replaceResolverFn: newFn => { + resolverFn = newFn; + }, + }); + afterFn && afterCalls.push(afterFn); + } + try { + let result = await resolverFn(root, args, context, info); + for (const afterFn of afterCalls) { + afterFn({ + result, + setResult: newResult => { + result = newResult; + }, + }); + } + return result; + } + catch (e) { + let resultErr = e; + for (const afterFn of afterCalls) { + afterFn({ + result: resultErr, + setResult: newResult => { + resultErr = newResult; + }, + }); + } + throw resultErr; + } + } + else { + return resolverFn(root, args, context, info); + } + }; + } + } + } +} - // 3. Let mimeType be dataURLStruct’s MIME type, serialized. - const { mimeType } = dataURLStruct; +const envelopIsIntrospectionSymbol = Symbol('ENVELOP_IS_INTROSPECTION'); +function isIntrospectionOperationString(operation) { + return (typeof operation === 'string' ? operation : operation.body).indexOf('__schema') !== -1; +} +function getSubscribeArgs(args) { + return args.length === 1 + ? args[0] + : { + schema: args[0], + document: args[1], + rootValue: args[2], + contextValue: args[3], + variableValues: args[4], + operationName: args[5], + fieldResolver: args[6], + subscribeFieldResolver: args[7], + }; +} +/** + * Utility function for making a subscribe function that handles polymorphic arguments. + */ +const makeSubscribe = (subscribeFn) => ((...polyArgs) => subscribeFn(getSubscribeArgs(polyArgs))); +function mapAsyncIterator(source, mapper) { + const iterator = source[Symbol.asyncIterator](); + async function mapResult(result) { + var _a; + if (result.done) { + return result; + } + try { + return { value: await mapper(result.value), done: false }; + } + catch (error) { + try { + await ((_a = iterator.return) === null || _a === void 0 ? void 0 : _a.call(iterator)); + } + catch (_error) { + /* ignore error */ + } + throw error; + } + } + const stream = { + [Symbol.asyncIterator]() { + return stream; + }, + async next() { + return await mapResult(await iterator.next()); + }, + async return() { + var _a; + const promise = (_a = iterator.return) === null || _a === void 0 ? void 0 : _a.call(iterator); + return promise ? await mapResult(await promise) : { value: undefined, done: true }; + }, + async throw(error) { + var _a; + const promise = (_a = iterator.throw) === null || _a === void 0 ? void 0 : _a.call(iterator); + if (promise) { + return await mapResult(await promise); + } + // if the source has no throw method we just re-throw error + // usually throw is not called anyways + throw error; + }, + }; + return stream; +} +function getExecuteArgs(args) { + return args.length === 1 + ? args[0] + : { + schema: args[0], + document: args[1], + rootValue: args[2], + contextValue: args[3], + variableValues: args[4], + operationName: args[5], + fieldResolver: args[6], + typeResolver: args[7], + }; +} +/** + * Utility function for making a execute function that handles polymorphic arguments. + */ +const makeExecute = (executeFn) => ((...polyArgs) => executeFn(getExecuteArgs(polyArgs))); +/** + * Returns true if the provided object implements the AsyncIterator protocol via + * implementing a `Symbol.asyncIterator` method. + * + * Source: https://github.com/graphql/graphql-js/blob/main/src/jsutils/isAsyncIterable.ts + */ +function isAsyncIterable$1(maybeAsyncIterable) { + return (typeof maybeAsyncIterable === 'object' && + maybeAsyncIterable != null && + typeof maybeAsyncIterable[Symbol.asyncIterator] === 'function'); +} +/** + * A utility function for handling `onExecuteDone` hook result, for simplifying the handling of AsyncIterable returned from `execute`. + * + * @param payload The payload send to `onExecuteDone` hook function + * @param fn The handler to be executed on each result + * @returns a subscription for streamed results, or undefined in case of an non-async + */ +function handleStreamOrSingleExecutionResult(payload, fn) { + if (isAsyncIterable$1(payload.result)) { + return { onNext: fn }; + } + fn({ + args: payload.args, + result: payload.result, + setResult: payload.setResult, + }); + return undefined; +} +function finalAsyncIterator(source, onFinal) { + const iterator = source[Symbol.asyncIterator](); + let isDone = false; + const stream = { + [Symbol.asyncIterator]() { + return stream; + }, + async next() { + const result = await iterator.next(); + if (result.done && isDone === false) { + isDone = true; + onFinal(); + } + return result; + }, + async return() { + var _a; + const promise = (_a = iterator.return) === null || _a === void 0 ? void 0 : _a.call(iterator); + if (isDone === false) { + isDone = true; + onFinal(); + } + return promise ? await promise : { done: true, value: undefined }; + }, + async throw(error) { + var _a; + const promise = (_a = iterator.throw) === null || _a === void 0 ? void 0 : _a.call(iterator); + if (promise) { + return await promise; + } + // if the source has no throw method we just re-throw error + // usually throw is not called anyways + throw error; + }, + }; + return stream; +} +function errorAsyncIterator(source, onError) { + const iterator = source[Symbol.asyncIterator](); + const stream = { + [Symbol.asyncIterator]() { + return stream; + }, + async next() { + try { + return await iterator.next(); + } + catch (error) { + onError(error); + return { done: true, value: undefined }; + } + }, + async return() { + var _a; + const promise = (_a = iterator.return) === null || _a === void 0 ? void 0 : _a.call(iterator); + return promise ? await promise : { done: true, value: undefined }; + }, + async throw(error) { + var _a; + const promise = (_a = iterator.throw) === null || _a === void 0 ? void 0 : _a.call(iterator); + if (promise) { + return await promise; + } + // if the source has no throw method we just re-throw error + // usually throw is not called anyways + throw error; + }, + }; + return stream; +} - /** @type {string} */ - let contentType = `${mimeType.type}/${mimeType.subtype}`; - const contentTypeParams = []; +function createEnvelopOrchestrator(plugins) { + let schema = null; + let initDone = false; + const onResolversHandlers = []; + for (const plugin of plugins) { + if (plugin.onResolverCalled) { + onResolversHandlers.push(plugin.onResolverCalled); + } + } + // Define the initial method for replacing the GraphQL schema, this is needed in order + // to allow setting the schema from the onPluginInit callback. We also need to make sure + // here not to call the same plugin that initiated the schema switch. + const replaceSchema = (newSchema, ignorePluginIndex = -1) => { + if (onResolversHandlers.length) { + prepareTracedSchema(newSchema); + } + schema = newSchema; + if (initDone) { + for (const [i, plugin] of plugins.entries()) { + if (i !== ignorePluginIndex) { + plugin.onSchemaChange && + plugin.onSchemaChange({ + schema, + replaceSchema: schemaToSet => { + replaceSchema(schemaToSet, i); + }, + }); + } + } + } + }; + const contextErrorHandlers = []; + // Iterate all plugins and trigger onPluginInit + for (const [i, plugin] of plugins.entries()) { + plugin.onPluginInit && + plugin.onPluginInit({ + plugins, + addPlugin: newPlugin => { + plugins.push(newPlugin); + }, + setSchema: modifiedSchema => replaceSchema(modifiedSchema, i), + registerContextErrorHandler: handler => contextErrorHandlers.push(handler), + }); + } + // A set of before callbacks defined here in order to allow it to be used later + const beforeCallbacks = { + init: [], + parse: [], + validate: [], + subscribe: [], + execute: [], + context: [], + }; + for (const { onContextBuilding, onExecute, onParse, onSubscribe, onValidate, onEnveloped } of plugins) { + onEnveloped && beforeCallbacks.init.push(onEnveloped); + onContextBuilding && beforeCallbacks.context.push(onContextBuilding); + onExecute && beforeCallbacks.execute.push(onExecute); + onParse && beforeCallbacks.parse.push(onParse); + onSubscribe && beforeCallbacks.subscribe.push(onSubscribe); + onValidate && beforeCallbacks.validate.push(onValidate); + } + const init = initialContext => { + for (const [i, onEnveloped] of beforeCallbacks.init.entries()) { + onEnveloped({ + context: initialContext, + extendContext: extension => { + if (!initialContext) { + return; + } + Object.assign(initialContext, extension); + }, + setSchema: modifiedSchema => replaceSchema(modifiedSchema, i), + }); + } + }; + const customParse = beforeCallbacks.parse.length + ? initialContext => (source, parseOptions) => { + let result = null; + let parseFn = parse; + const context = initialContext; + const afterCalls = []; + for (const onParse of beforeCallbacks.parse) { + const afterFn = onParse({ + context, + extendContext: extension => { + Object.assign(context, extension); + }, + params: { source, options: parseOptions }, + parseFn, + setParseFn: newFn => { + parseFn = newFn; + }, + setParsedDocument: newDoc => { + result = newDoc; + }, + }); + afterFn && afterCalls.push(afterFn); + } + if (result === null) { + try { + result = parseFn(source, parseOptions); + } + catch (e) { + result = e; + } + } + for (const afterCb of afterCalls) { + afterCb({ + context, + extendContext: extension => { + Object.assign(context, extension); + }, + replaceParseResult: newResult => { + result = newResult; + }, + result, + }); + } + if (result === null) { + throw new Error(`Failed to parse document.`); + } + if (result instanceof Error) { + throw result; + } + return result; + } + : () => parse; + const customValidate = beforeCallbacks.validate.length + ? initialContext => (schema, documentAST, rules, typeInfo, validationOptions) => { + let actualRules = rules ? [...rules] : undefined; + let validateFn = validate; + let result = null; + const context = initialContext; + const afterCalls = []; + for (const onValidate of beforeCallbacks.validate) { + const afterFn = onValidate({ + context, + extendContext: extension => { + Object.assign(context, extension); + }, + params: { + schema, + documentAST, + rules: actualRules, + typeInfo, + options: validationOptions, + }, + validateFn, + addValidationRule: rule => { + if (!actualRules) { + actualRules = [...specifiedRules]; + } + actualRules.push(rule); + }, + setValidationFn: newFn => { + validateFn = newFn; + }, + setResult: newResults => { + result = newResults; + }, + }); + afterFn && afterCalls.push(afterFn); + } + if (!result) { + result = validateFn(schema, documentAST, actualRules, typeInfo, validationOptions); + } + const valid = result.length === 0; + for (const afterCb of afterCalls) { + afterCb({ + valid, + result, + context, + extendContext: extension => { + Object.assign(context, extension); + }, + setResult: newResult => { + result = newResult; + }, + }); + } + return result; + } + : () => validate; + const customContextFactory = beforeCallbacks.context + .length + ? initialContext => async (orchestratorCtx) => { + const afterCalls = []; + // In order to have access to the "last working" context object we keep this outside of the try block: + let context = orchestratorCtx ? { ...initialContext, ...orchestratorCtx } : initialContext; + try { + let isBreakingContextBuilding = false; + for (const onContext of beforeCallbacks.context) { + const afterHookResult = await onContext({ + context, + extendContext: extension => { + context = { ...context, ...extension }; + }, + breakContextBuilding: () => { + isBreakingContextBuilding = true; + }, + }); + if (typeof afterHookResult === 'function') { + afterCalls.push(afterHookResult); + } + if (isBreakingContextBuilding === true) { + break; + } + } + for (const afterCb of afterCalls) { + afterCb({ + context, + extendContext: extension => { + context = { ...context, ...extension }; + }, + }); + } + return context; + } + catch (err) { + let error = err; + for (const errorCb of contextErrorHandlers) { + errorCb({ + context, + error, + setError: err => { + error = err; + }, + }); + } + throw error; + } + } + : initialContext => orchestratorCtx => orchestratorCtx ? { ...initialContext, ...orchestratorCtx } : initialContext; + const useCustomSubscribe = beforeCallbacks.subscribe.length || onResolversHandlers.length; + const customSubscribe = useCustomSubscribe + ? makeSubscribe(async (args) => { + let subscribeFn = subscribe; + const afterCalls = []; + const subscribeErrorHandlers = []; + let context = args.contextValue || {}; + let result; + for (const onSubscribe of beforeCallbacks.subscribe) { + const after = await onSubscribe({ + subscribeFn, + setSubscribeFn: newSubscribeFn => { + subscribeFn = newSubscribeFn; + }, + extendContext: extension => { + context = { ...context, ...extension }; + }, + args: args, + setResultAndStopExecution: stopResult => { + result = stopResult; + }, + }); + if (after) { + if (after.onSubscribeResult) { + afterCalls.push(after.onSubscribeResult); + } + if (after.onSubscribeError) { + subscribeErrorHandlers.push(after.onSubscribeError); + } + } + if (result !== undefined) { + break; + } + } + if (onResolversHandlers.length) { + context[resolversHooksSymbol] = onResolversHandlers; + } + if (result === undefined) { + result = await subscribeFn({ + ...args, + contextValue: context, + // Casted for GraphQL.js 15 compatibility + // Can be removed once we drop support for GraphQL.js 15 + }); + } + const onNextHandler = []; + const onEndHandler = []; + for (const afterCb of afterCalls) { + const hookResult = afterCb({ + args: args, + result, + setResult: newResult => { + result = newResult; + }, + }); + if (hookResult) { + if (hookResult.onNext) { + onNextHandler.push(hookResult.onNext); + } + if (hookResult.onEnd) { + onEndHandler.push(hookResult.onEnd); + } + } + } + if (onNextHandler.length && isAsyncIterable$1(result)) { + result = mapAsyncIterator(result, async (result) => { + for (const onNext of onNextHandler) { + await onNext({ + args: args, + result, + setResult: newResult => (result = newResult), + }); + } + return result; + }); + } + if (onEndHandler.length && isAsyncIterable$1(result)) { + result = finalAsyncIterator(result, () => { + for (const onEnd of onEndHandler) { + onEnd(); + } + }); + } + if (subscribeErrorHandlers.length && isAsyncIterable$1(result)) { + result = errorAsyncIterator(result, err => { + let error = err; + for (const handler of subscribeErrorHandlers) { + handler({ + error, + setError: err => { + error = err; + }, + }); + } + throw error; + }); + } + return result; + }) + : makeSubscribe(subscribe); + const useCustomExecute = beforeCallbacks.execute.length || onResolversHandlers.length; + const customExecute = useCustomExecute + ? makeExecute(async (args) => { + let executeFn = execute$1; + let result; + const afterCalls = []; + let context = args.contextValue || {}; + for (const onExecute of beforeCallbacks.execute) { + const after = await onExecute({ + executeFn, + setExecuteFn: newExecuteFn => { + executeFn = newExecuteFn; + }, + setResultAndStopExecution: stopResult => { + result = stopResult; + }, + extendContext: extension => { + if (typeof extension === 'object') { + context = { + ...context, + ...extension, + }; + } + else { + throw new Error(`Invalid context extension provided! Expected "object", got: "${JSON.stringify(extension)}" (${typeof extension})`); + } + }, + args: args, + }); + if (after === null || after === void 0 ? void 0 : after.onExecuteDone) { + afterCalls.push(after.onExecuteDone); + } + if (result !== undefined) { + break; + } + } + if (onResolversHandlers.length) { + context[resolversHooksSymbol] = onResolversHandlers; + } + if (result === undefined) { + result = (await executeFn({ + ...args, + contextValue: context, + })); + } + const onNextHandler = []; + const onEndHandler = []; + for (const afterCb of afterCalls) { + const hookResult = await afterCb({ + args: args, + result, + setResult: newResult => { + result = newResult; + }, + }); + if (hookResult) { + if (hookResult.onNext) { + onNextHandler.push(hookResult.onNext); + } + if (hookResult.onEnd) { + onEndHandler.push(hookResult.onEnd); + } + } + } + if (onNextHandler.length && isAsyncIterable$1(result)) { + result = mapAsyncIterator(result, async (result) => { + for (const onNext of onNextHandler) { + await onNext({ + args: args, + result, + setResult: newResult => { + result = newResult; + }, + }); + } + return result; + }); + } + if (onEndHandler.length && isAsyncIterable$1(result)) { + result = finalAsyncIterator(result, () => { + for (const onEnd of onEndHandler) { + onEnd(); + } + }); + } + return result; + }) + : makeExecute(execute$1); + initDone = true; + // This is done in order to trigger the first schema available, to allow plugins that needs the schema + // eagerly to have it. + if (schema) { + for (const [i, plugin] of plugins.entries()) { + plugin.onSchemaChange && + plugin.onSchemaChange({ + schema, + replaceSchema: modifiedSchema => replaceSchema(modifiedSchema, i), + }); + } + } + return { + getCurrentSchema() { + return schema; + }, + init, + parse: customParse, + validate: customValidate, + execute: customExecute, + subscribe: customSubscribe, + contextFactory: customContextFactory, + }; +} - if (mimeType.parameters.size > 0) { - contentType += ';'; - } +var _a; +const getTimestamp = typeof globalThis !== 'undefined' && ((_a = globalThis === null || globalThis === void 0 ? void 0 : globalThis.performance) === null || _a === void 0 ? void 0 : _a.now) + ? () => globalThis.performance.now() + : () => Date.now(); +const measure = () => { + const start = getTimestamp(); + return () => { + const end = getTimestamp(); + return end - start; + }; +}; +const tracingSymbol = Symbol('envelopTracing'); +function traceOrchestrator(orchestrator) { + const createTracer = (name, ctx) => { + const end = measure(); + return () => { + ctx[tracingSymbol][name] = end(); + }; + }; + return { + ...orchestrator, + init: (ctx = {}) => { + ctx[tracingSymbol] = ctx[tracingSymbol] || {}; + const done = createTracer('init', ctx || {}); + try { + return orchestrator.init(ctx); + } + finally { + done(); + } + }, + parse: (ctx = {}) => { + ctx[tracingSymbol] = ctx[tracingSymbol] || {}; + const actualFn = orchestrator.parse(ctx); + return (...args) => { + const done = createTracer('parse', ctx); + try { + return actualFn(...args); + } + finally { + done(); + } + }; + }, + validate: (ctx = {}) => { + ctx[tracingSymbol] = ctx[tracingSymbol] || {}; + const actualFn = orchestrator.validate(ctx); + return (...args) => { + const done = createTracer('validate', ctx); + try { + return actualFn(...args); + } + finally { + done(); + } + }; + }, + execute: async (argsOrSchema, document, rootValue, contextValue, variableValues, operationName, fieldResolver, typeResolver) => { + const args = argsOrSchema instanceof GraphQLSchema + ? { + schema: argsOrSchema, + document: document, + rootValue, + contextValue, + variableValues, + operationName, + fieldResolver, + typeResolver, + } + : argsOrSchema; + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore GraphQL.js types contextValue as unknown + const done = createTracer('execute', args.contextValue || {}); + try { + const result = await orchestrator.execute(args); + done(); + if (!isAsyncIterable$1(result)) { + result.extensions = result.extensions || {}; + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore GraphQL.js types contextValue as unknown + result.extensions.envelopTracing = args.contextValue[tracingSymbol]; + } + else { + // eslint-disable-next-line no-console + console.warn(`"traceOrchestrator" encountered a AsyncIterator which is not supported yet, so tracing data is not available for the operation.`); + } + return result; + } + catch (e) { + done(); + throw e; + } + }, + subscribe: async (argsOrSchema, document, rootValue, contextValue, variableValues, operationName, fieldResolver, subscribeFieldResolver) => { + const args = argsOrSchema instanceof GraphQLSchema + ? { + schema: argsOrSchema, + document: document, + rootValue, + contextValue, + variableValues, + operationName, + fieldResolver, + subscribeFieldResolver, + } + : argsOrSchema; + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore GraphQL.js types contextValue as unknown + const done = createTracer('subscribe', args.contextValue || {}); + try { + return await orchestrator.subscribe(args); + } + finally { + done(); + } + }, + contextFactory: (ctx = {}) => { + const actualFn = orchestrator.contextFactory(ctx); + return async (childCtx) => { + const done = createTracer('contextFactory', ctx); + try { + return await actualFn(childCtx); + } + finally { + done(); + } + }; + }, + }; +} - for (const [key, value] of mimeType.parameters) { - if (value.length > 0) { - contentTypeParams.push(`${key}=${value}`); - } else { - contentTypeParams.push(key); - } - } +function envelop(options) { + const plugins = options.plugins.filter(isPluginEnabled); + let orchestrator = createEnvelopOrchestrator(plugins); + if (options.enableInternalTracing) { + orchestrator = traceOrchestrator(orchestrator); + } + const getEnveloped = (initialContext = {}) => { + const typedOrchestrator = orchestrator; + typedOrchestrator.init(initialContext); + return { + parse: typedOrchestrator.parse(initialContext), + validate: typedOrchestrator.validate(initialContext), + contextFactory: typedOrchestrator.contextFactory(initialContext), + execute: typedOrchestrator.execute, + subscribe: typedOrchestrator.subscribe, + schema: typedOrchestrator.getCurrentSchema(), + }; + }; + getEnveloped._plugins = plugins; + return getEnveloped; +} - contentType += contentTypeParams.join(','); - - // 4. Return a response whose status message is `OK`, - // header list is « (`Content-Type`, mimeType) », - // and body is dataURLStruct’s body. - return makeResponse({ - statusText: 'OK', - headersList: [ - ['content-type', contentType] - ], - body: extractBody(dataURLStruct.body)[0] - }) - } - case 'file:': { - // For now, unfortunate as it is, file URLs are left as an exercise for the reader. - // When in doubt, return a network error. - return makeNetworkError('not implemented... yet...') - } - case 'http:': - case 'https:': { - // Return the result of running HTTP fetch given fetchParams. +const DEFAULT_OPTIONS = { + logFn: console.log, +}; +const useLogger = (rawOptions = DEFAULT_OPTIONS) => { + const options = { + DEFAULT_OPTIONS, + ...rawOptions, + }; + return { + onParse({ extendContext, params }) { + if (options.skipIntrospection && isIntrospectionOperationString(params.source)) { + extendContext({ + [envelopIsIntrospectionSymbol]: true, + }); + } + }, + onExecute({ args }) { + if (args.contextValue[envelopIsIntrospectionSymbol]) { + return; + } + options.logFn('execute-start', { args }); + return { + onExecuteDone: ({ result }) => { + options.logFn('execute-end', { args, result }); + }, + }; + }, + onSubscribe({ args }) { + if (args.contextValue[envelopIsIntrospectionSymbol]) { + return; + } + options.logFn('subscribe-start', { args }); + return { + onSubscribeResult: ({ result }) => { + options.logFn('subscribe-end', { args, result }); + }, + }; + }, + }; +}; - return await httpFetch(fetchParams) - .catch((err) => makeNetworkError(err)) - } - default: { - return makeNetworkError('unknown scheme') - } - } - } +const useSchema = (schema) => { + return { + onPluginInit({ setSchema }) { + setSchema(schema); + }, + }; +}; - // https://fetch.spec.whatwg.org/#finalize-response - function finalizeResponse (fetchParams, response) { - // 1. Set fetchParams’s request’s done flag. - fetchParams.request.done = true; +const useExtendContext = (contextFactory) => ({ + async onContextBuilding({ context, extendContext }) { + extendContext((await contextFactory(context))); + }, +}); - // 2, If fetchParams’s process response done is not null, then queue a fetch - // task to run fetchParams’s process response done given response, with - // fetchParams’s task destination. - if (fetchParams.processResponseDone != null) { - queueMicrotask(() => fetchParams.processResponseDone(response)); - } - } +const DEFAULT_ERROR_MESSAGE = 'Unexpected error.'; +class EnvelopError extends GraphQLError { + constructor(message, extensions) { + super(message, undefined, undefined, undefined, undefined, undefined, extensions); + } +} +const formatError$1 = (err, message, isDev) => { + var _a, _b, _c, _d; + if (err instanceof GraphQLError) { + if ( + /** execution error */ + (err.originalError && err.originalError instanceof EnvelopError === false) || + /** validate and parse errors */ + (err.originalError === undefined && err instanceof EnvelopError === false)) { + return new GraphQLError(message, err.nodes, err.source, err.positions, err.path, undefined, isDev + ? { + originalError: { + message: (_b = (_a = err.originalError) === null || _a === void 0 ? void 0 : _a.message) !== null && _b !== void 0 ? _b : err.message, + stack: (_d = (_c = err.originalError) === null || _c === void 0 ? void 0 : _c.stack) !== null && _d !== void 0 ? _d : err.stack, + }, + } + : undefined); + } + return err; + } + return new GraphQLError(message); +}; +const makeHandleResult = (format, message, isDev) => ({ result, setResult }) => { + if (result.errors != null) { + setResult({ ...result, errors: result.errors.map(error => format(error, message, isDev)) }); + } +}; +const useMaskedErrors = (opts) => { + var _a, _b; + const format = (_a = opts === null || opts === void 0 ? void 0 : opts.formatError) !== null && _a !== void 0 ? _a : formatError$1; + const message = (opts === null || opts === void 0 ? void 0 : opts.errorMessage) || DEFAULT_ERROR_MESSAGE; + // eslint-disable-next-line dot-notation + const isDev = (_b = opts === null || opts === void 0 ? void 0 : opts.isDev) !== null && _b !== void 0 ? _b : (typeof process !== 'undefined' ? process.env['NODE_ENV'] === 'development' : false); + const handleResult = makeHandleResult(format, message, isDev); + return { + onParse: (opts === null || opts === void 0 ? void 0 : opts.handleParseErrors) === true + ? function onParse() { + return function onParseEnd({ result, replaceParseResult }) { + if (result instanceof Error) { + replaceParseResult(format(result, message, isDev)); + } + }; + } + : undefined, + onValidate: (opts === null || opts === void 0 ? void 0 : opts.handleValidationErrors) === true + ? function onValidate() { + return function onValidateEnd({ valid, result, setResult }) { + if (valid === false) { + setResult(result.map(error => format(error, message, isDev))); + } + }; + } + : undefined, + onPluginInit(context) { + context.registerContextErrorHandler(({ error, setError }) => { + if (error instanceof GraphQLError === false && error instanceof Error) { + error = new GraphQLError(error.message, undefined, undefined, undefined, undefined, error); + } + setError(format(error, message, isDev)); + }); + }, + onExecute() { + return { + onExecuteDone(payload) { + return handleStreamOrSingleExecutionResult(payload, handleResult); + }, + }; + }, + onSubscribe() { + return { + onSubscribeResult(payload) { + return handleStreamOrSingleExecutionResult(payload, handleResult); + }, + onSubscribeError({ error, setError }) { + setError(format(error, message, isDev)); + }, + }; + }, + }; +}; - // https://fetch.spec.whatwg.org/#fetch-finale - async function fetchFinale (fetchParams, response) { - // 1. If response is a network error, then: - if (response.type === 'error') { - // 1. Set response’s URL list to « fetchParams’s request’s URL list[0] ». - response.urlList = [fetchParams.request.urlList[0]]; - - // 2. Set response’s timing info to the result of creating an opaque timing - // info for fetchParams’s timing info. - response.timingInfo = createOpaqueTimingInfo({ - startTime: fetchParams.timingInfo.startTime - }); - } +const ANSI_CODES = { + black: '\x1b[30m', + red: '\x1b[31m', + green: '\x1b[32m', + yellow: '\x1b[33m', + blue: '\x1b[34m', + magenta: '\x1b[35m', + cyan: '\x1b[36m', + white: '\x1b[37m', + reset: '\x1b[0m', + bold: '\x1b[1m', + orange: '\x1b[48:5:166m', +}; +const titleBold = (msg) => ANSI_CODES.bold + msg + ANSI_CODES.reset; +const LEVEL_COLOR = { + warn: ANSI_CODES.orange, + info: ANSI_CODES.cyan, + error: ANSI_CODES.red, + debug: ANSI_CODES.magenta, + title: ANSI_CODES.bold, + reset: ANSI_CODES.reset, +}; +const isDebug = () => typeof process === 'object' + ? process.env.DEBUG + : // @ts-expect-error + typeof DEBUG !== 'undefined' + ? true + : false; +const prefix = [LEVEL_COLOR.title, `🧘 Yoga -`, LEVEL_COLOR.reset]; +const defaultYogaLogger = { + debug(...args) { + if (isDebug()) { + const fullMessage = [ + `🐛 `, + ...prefix, + LEVEL_COLOR.debug, + ...args, + LEVEL_COLOR.reset, + ]; + // Some environments don't have other console methods + if (console.debug) { + console.debug(...fullMessage); + } + else { + console.log(...fullMessage); + } + } + }, + info(...args) { + const fullMessage = [ + `💡 `, + ...prefix, + LEVEL_COLOR.info, + ...args, + LEVEL_COLOR.reset, + ]; + if (console.info) { + console.info(...fullMessage); + } + else { + console.log(...fullMessage); + } + }, + warn(...args) { + const fullMessage = [ + `⚠️ `, + ...prefix, + LEVEL_COLOR.warn, + ...args, + LEVEL_COLOR.reset, + ]; + if (console.warn) { + console.warn(...fullMessage); + } + else { + console.log(...fullMessage); + } + }, + error(...args) { + const fullMessage = [ + `❌ `, + ...prefix, + LEVEL_COLOR.error, + ...args, + LEVEL_COLOR.reset, + ]; + if (console.error) { + console.error(...fullMessage); + } + else { + console.log(...fullMessage); + } + }, +}; - // 2. Let processResponseEndOfBody be the following steps: - const processResponseEndOfBody = () => { - // 1. Set fetchParams’s request’s done flag. - fetchParams.request.done = true; +var iterator; +var hasRequiredIterator; - // If fetchParams’s process response end-of-body is not null, - // then queue a fetch task to run fetchParams’s process response - // end-of-body given response with fetchParams’s task destination. - if (fetchParams.processResponseEndOfBody != null) { - queueMicrotask(() => fetchParams.processResponseEndOfBody(response)); +function requireIterator () { + if (hasRequiredIterator) return iterator; + hasRequiredIterator = 1; + iterator = function (Yallist) { + Yallist.prototype[Symbol.iterator] = function* () { + for (let walker = this.head; walker; walker = walker.next) { + yield walker.value; } }; + }; + return iterator; +} - // 3. If fetchParams’s process response is non-null, then queue a fetch task - // to run fetchParams’s process response given response, with fetchParams’s - // task destination. - if (fetchParams.processResponse != null) { - queueMicrotask(() => fetchParams.processResponse(response)); - } - - // 4. If response’s body is null, then run processResponseEndOfBody. - if (response.body == null) { - processResponseEndOfBody(); - } else { - // 5. Otherwise: - - // 1. Let transformStream be a new a TransformStream. - - // 2. Let identityTransformAlgorithm be an algorithm which, given chunk, - // enqueues chunk in transformStream. - const identityTransformAlgorithm = (chunk, controller) => { - controller.enqueue(chunk); - }; - - // 3. Set up transformStream with transformAlgorithm set to identityTransformAlgorithm - // and flushAlgorithm set to processResponseEndOfBody. - const transformStream = new TransformStream({ - start () {}, - transform: identityTransformAlgorithm, - flush: processResponseEndOfBody - }); - - // 4. Set response’s body to the result of piping response’s body through transformStream. - response.body = { stream: response.body.stream.pipeThrough(transformStream) }; - } - - // 6. If fetchParams’s process response consume body is non-null, then: - if (fetchParams.processResponseConsumeBody != null) { - // 1. Let processBody given nullOrBytes be this step: run fetchParams’s - // process response consume body given response and nullOrBytes. - const processBody = (nullOrBytes) => fetchParams.processResponseConsumeBody(response, nullOrBytes); - - // 2. Let processBodyError be this step: run fetchParams’s process - // response consume body given response and failure. - const processBodyError = (failure) => fetchParams.processResponseConsumeBody(response, failure); - - // 3. If response’s body is null, then queue a fetch task to run processBody - // given null, with fetchParams’s task destination. - if (response.body == null) { - queueMicrotask(() => processBody(null)); - } else { - // 4. Otherwise, fully read response’s body given processBody, processBodyError, - // and fetchParams’s task destination. - await fullyReadBody(response.body, processBody, processBodyError); - } - } - } - - // https://fetch.spec.whatwg.org/#http-fetch - async function httpFetch (fetchParams) { - // 1. Let request be fetchParams’s request. - const request = fetchParams.request; - - // 2. Let response be null. - let response = null; - - // 3. Let actualResponse be null. - let actualResponse = null; - - // 4. Let timingInfo be fetchParams’s timing info. - const timingInfo = fetchParams.timingInfo; - - // 5. If request’s service-workers mode is "all", then: - if (request.serviceWorkers === 'all') ; - - // 6. If response is null, then: - if (response === null) { - // 1. If makeCORSPreflight is true and one of these conditions is true: - // TODO - - // 2. If request’s redirect mode is "follow", then set request’s - // service-workers mode to "none". - if (request.redirect === 'follow') { - request.serviceWorkers = 'none'; - } - - // 3. Set response and actualResponse to the result of running - // HTTP-network-or-cache fetch given fetchParams. - actualResponse = response = await httpNetworkOrCacheFetch(fetchParams); - - // 4. If request’s response tainting is "cors" and a CORS check - // for request and response returns failure, then return a network error. - if ( - request.responseTainting === 'cors' && - corsCheck(request, response) === 'failure' - ) { - return makeNetworkError('cors failure') - } - - // 5. If the TAO check for request and response returns failure, then set - // request’s timing allow failed flag. - if (TAOCheck(request, response) === 'failure') { - request.timingAllowFailed = true; - } - } - - // 7. If either request’s response tainting or response’s type - // is "opaque", and the cross-origin resource policy check with - // request’s origin, request’s client, request’s destination, - // and actualResponse returns blocked, then return a network error. - if ( - (request.responseTainting === 'opaque' || response.type === 'opaque') && - crossOriginResourcePolicyCheck( - request.origin, - request.client, - request.destination, - actualResponse - ) === 'blocked' - ) { - return makeNetworkError('blocked') - } - - // 8. If actualResponse’s status is a redirect status, then: - if (redirectStatus.includes(actualResponse.status)) { - // 1. If actualResponse’s status is not 303, request’s body is not null, - // and the connection uses HTTP/2, then user agents may, and are even - // encouraged to, transmit an RST_STREAM frame. - // See, https://github.com/whatwg/fetch/issues/1288 - fetchParams.controller.connection.destroy(); - - // 2. Switch on request’s redirect mode: - if (request.redirect === 'error') { - // Set response to a network error. - response = makeNetworkError('unexpected redirect'); - } else if (request.redirect === 'manual') { - // Set response to an opaque-redirect filtered response whose internal - // response is actualResponse. - // NOTE(spec): On the web this would return an `opaqueredirect` response, - // but that doesn't make sense server side. - // See https://github.com/nodejs/undici/issues/1193. - response = actualResponse; - } else if (request.redirect === 'follow') { - // Set response to the result of running HTTP-redirect fetch given - // fetchParams and response. - response = await httpRedirectFetch(fetchParams, response); - } else { - assert(false); - } - } - - // 9. Set response’s timing info to timingInfo. - response.timingInfo = timingInfo; - - // 10. Return response. - return response - } - - // https://fetch.spec.whatwg.org/#http-redirect-fetch - async function httpRedirectFetch (fetchParams, response) { - // 1. Let request be fetchParams’s request. - const request = fetchParams.request; - - // 2. Let actualResponse be response, if response is not a filtered response, - // and response’s internal response otherwise. - const actualResponse = response.internalResponse - ? response.internalResponse - : response; - - // 3. Let locationURL be actualResponse’s location URL given request’s current - // URL’s fragment. - let locationURL; - - try { - locationURL = responseLocationURL( - actualResponse, - requestCurrentURL(request).hash - ); - - // 4. If locationURL is null, then return response. - if (locationURL == null) { - return response - } - } catch (err) { - // 5. If locationURL is failure, then return a network error. - return makeNetworkError(err) - } - - // 6. If locationURL’s scheme is not an HTTP(S) scheme, then return a network - // error. - if (!/^https?:/.test(locationURL.protocol)) { - return makeNetworkError('URL scheme must be a HTTP(S) scheme') - } - - // 7. If request’s redirect count is twenty, return a network error. - if (request.redirectCount === 20) { - return makeNetworkError('redirect count exceeded') - } +var yallist = Yallist$1; - // 8. Increase request’s redirect count by one. - request.redirectCount += 1; - - // 9. If request’s mode is "cors", locationURL includes credentials, and - // request’s origin is not same origin with locationURL’s origin, then return - // a network error. - if ( - request.mode === 'cors' && - (locationURL.username || locationURL.password) && - !sameOrigin(request, locationURL) - ) { - return makeNetworkError('cross origin not allowed for request mode "cors"') - } +Yallist$1.Node = Node; +Yallist$1.create = Yallist$1; - // 10. If request’s response tainting is "cors" and locationURL includes - // credentials, then return a network error. - if ( - request.responseTainting === 'cors' && - (locationURL.username || locationURL.password) - ) { - return makeNetworkError( - 'URL cannot contain credentials for request mode "cors"' - ) - } +function Yallist$1 (list) { + var self = this; + if (!(self instanceof Yallist$1)) { + self = new Yallist$1(); + } - // 11. If actualResponse’s status is not 303, request’s body is non-null, - // and request’s body’s source is null, then return a network error. - if ( - actualResponse.status !== 303 && - request.body != null && - request.body.source == null - ) { - return makeNetworkError() - } + self.tail = null; + self.head = null; + self.length = 0; - // 12. If one of the following is true - // - actualResponse’s status is 301 or 302 and request’s method is `POST` - // - actualResponse’s status is 303 and request’s method is not `GET` or `HEAD` - if ( - ([301, 302].includes(actualResponse.status) && request.method === 'POST') || - (actualResponse.status === 303 && - !['GET', 'HEAD'].includes(request.method)) - ) { - // then: - // 1. Set request’s method to `GET` and request’s body to null. - request.method = 'GET'; - request.body = null; - - // 2. For each headerName of request-body-header name, delete headerName from - // request’s header list. - for (const headerName of requestBodyHeader) { - request.headersList.delete(headerName); - } - } + if (list && typeof list.forEach === 'function') { + list.forEach(function (item) { + self.push(item); + }); + } else if (arguments.length > 0) { + for (var i = 0, l = arguments.length; i < l; i++) { + self.push(arguments[i]); + } + } - // 13. If request’s body is non-null, then set request’s body to the first return - // value of safely extracting request’s body’s source. - if (request.body != null) { - assert(request.body.source); - request.body = safelyExtractBody(request.body.source)[0]; - } + return self +} - // 14. Let timingInfo be fetchParams’s timing info. - const timingInfo = fetchParams.timingInfo; +Yallist$1.prototype.removeNode = function (node) { + if (node.list !== this) { + throw new Error('removing node which does not belong to this list') + } - // 15. Set timingInfo’s redirect end time and post-redirect start time to the - // coarsened shared current time given fetchParams’s cross-origin isolated - // capability. - timingInfo.redirectEndTime = timingInfo.postRedirectStartTime = - coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability); + var next = node.next; + var prev = node.prev; - // 16. If timingInfo’s redirect start time is 0, then set timingInfo’s - // redirect start time to timingInfo’s start time. - if (timingInfo.redirectStartTime === 0) { - timingInfo.redirectStartTime = timingInfo.startTime; - } + if (next) { + next.prev = prev; + } - // 17. Append locationURL to request’s URL list. - request.urlList.push(locationURL); + if (prev) { + prev.next = next; + } - // 18. Invoke set request’s referrer policy on redirect on request and - // actualResponse. - setRequestReferrerPolicyOnRedirect(request, actualResponse); + if (node === this.head) { + this.head = next; + } + if (node === this.tail) { + this.tail = prev; + } - // 19. Return the result of running main fetch given fetchParams and true. - return mainFetch(fetchParams, true) - } + node.list.length--; + node.next = null; + node.prev = null; + node.list = null; - // https://fetch.spec.whatwg.org/#http-network-or-cache-fetch - async function httpNetworkOrCacheFetch ( - fetchParams, - isAuthenticationFetch = false, - isNewConnectionFetch = false - ) { - // 1. Let request be fetchParams’s request. - const request = fetchParams.request; + return next +}; - // 2. Let httpFetchParams be null. - let httpFetchParams = null; +Yallist$1.prototype.unshiftNode = function (node) { + if (node === this.head) { + return + } - // 3. Let httpRequest be null. - let httpRequest = null; + if (node.list) { + node.list.removeNode(node); + } - // 4. Let response be null. - let response = null; + var head = this.head; + node.list = this; + node.next = head; + if (head) { + head.prev = node; + } - // 8. Run these steps, but abort when the ongoing fetch is terminated: + this.head = node; + if (!this.tail) { + this.tail = node; + } + this.length++; +}; - // 1. If request’s window is "no-window" and request’s redirect mode is - // "error", then set httpFetchParams to fetchParams and httpRequest to - // request. - if (request.window === 'no-window' && request.redirect === 'error') { - httpFetchParams = fetchParams; - httpRequest = request; - } else { - // Otherwise: +Yallist$1.prototype.pushNode = function (node) { + if (node === this.tail) { + return + } - // 1. Set httpRequest to a clone of request. - httpRequest = makeRequest(request); + if (node.list) { + node.list.removeNode(node); + } - // 2. Set httpFetchParams to a copy of fetchParams. - httpFetchParams = { ...fetchParams }; + var tail = this.tail; + node.list = this; + node.prev = tail; + if (tail) { + tail.next = node; + } - // 3. Set httpFetchParams’s request to httpRequest. - httpFetchParams.request = httpRequest; - } + this.tail = node; + if (!this.head) { + this.head = node; + } + this.length++; +}; - // 3. Let includeCredentials be true if one of - const includeCredentials = - request.credentials === 'include' || - (request.credentials === 'same-origin' && - request.responseTainting === 'basic'); - - // 4. Let contentLength be httpRequest’s body’s length, if httpRequest’s - // body is non-null; otherwise null. - const contentLength = httpRequest.body ? httpRequest.body.length : null; - - // 5. Let contentLengthHeaderValue be null. - let contentLengthHeaderValue = null; - - // 6. If httpRequest’s body is null and httpRequest’s method is `POST` or - // `PUT`, then set contentLengthHeaderValue to `0`. - if ( - httpRequest.body == null && - ['POST', 'PUT'].includes(httpRequest.method) - ) { - contentLengthHeaderValue = '0'; - } +Yallist$1.prototype.push = function () { + for (var i = 0, l = arguments.length; i < l; i++) { + push$1(this, arguments[i]); + } + return this.length +}; - // 7. If contentLength is non-null, then set contentLengthHeaderValue to - // contentLength, serialized and isomorphic encoded. - if (contentLength != null) { - // TODO: isomorphic encoded - contentLengthHeaderValue = String(contentLength); - } +Yallist$1.prototype.unshift = function () { + for (var i = 0, l = arguments.length; i < l; i++) { + unshift(this, arguments[i]); + } + return this.length +}; - // 8. If contentLengthHeaderValue is non-null, then append - // `Content-Length`/contentLengthHeaderValue to httpRequest’s header - // list. - if (contentLengthHeaderValue != null) { - httpRequest.headersList.append('content-length', contentLengthHeaderValue); - } +Yallist$1.prototype.pop = function () { + if (!this.tail) { + return undefined + } - // 9. If contentLengthHeaderValue is non-null, then append (`Content-Length`, - // contentLengthHeaderValue) to httpRequest’s header list. + var res = this.tail.value; + this.tail = this.tail.prev; + if (this.tail) { + this.tail.next = null; + } else { + this.head = null; + } + this.length--; + return res +}; - // 10. If contentLength is non-null and httpRequest’s keepalive is true, - // then: - if (contentLength != null && httpRequest.keepalive) ; +Yallist$1.prototype.shift = function () { + if (!this.head) { + return undefined + } - // 11. If httpRequest’s referrer is a URL, then append - // `Referer`/httpRequest’s referrer, serialized and isomorphic encoded, - // to httpRequest’s header list. - if (httpRequest.referrer instanceof URL) { - // TODO: isomorphic encoded - httpRequest.headersList.append('referer', httpRequest.referrer.href); - } + var res = this.head.value; + this.head = this.head.next; + if (this.head) { + this.head.prev = null; + } else { + this.tail = null; + } + this.length--; + return res +}; - // 12. Append a request `Origin` header for httpRequest. - appendRequestOriginHeader(httpRequest); +Yallist$1.prototype.forEach = function (fn, thisp) { + thisp = thisp || this; + for (var walker = this.head, i = 0; walker !== null; i++) { + fn.call(thisp, walker.value, i, this); + walker = walker.next; + } +}; - // 13. Append the Fetch metadata headers for httpRequest. [FETCH-METADATA] - appendFetchMetadata(httpRequest); +Yallist$1.prototype.forEachReverse = function (fn, thisp) { + thisp = thisp || this; + for (var walker = this.tail, i = this.length - 1; walker !== null; i--) { + fn.call(thisp, walker.value, i, this); + walker = walker.prev; + } +}; - // 14. If httpRequest’s header list does not contain `User-Agent`, then - // user agents should append `User-Agent`/default `User-Agent` value to - // httpRequest’s header list. - if (!httpRequest.headersList.has('user-agent')) { - httpRequest.headersList.append('user-agent', 'undici'); - } +Yallist$1.prototype.get = function (n) { + for (var i = 0, walker = this.head; walker !== null && i < n; i++) { + // abort out of the list early if we hit a cycle + walker = walker.next; + } + if (i === n && walker !== null) { + return walker.value + } +}; - // 15. If httpRequest’s cache mode is "default" and httpRequest’s header - // list contains `If-Modified-Since`, `If-None-Match`, - // `If-Unmodified-Since`, `If-Match`, or `If-Range`, then set - // httpRequest’s cache mode to "no-store". - if ( - httpRequest.cache === 'default' && - (httpRequest.headersList.has('if-modified-since') || - httpRequest.headersList.has('if-none-match') || - httpRequest.headersList.has('if-unmodified-since') || - httpRequest.headersList.has('if-match') || - httpRequest.headersList.has('if-range')) - ) { - httpRequest.cache = 'no-store'; - } +Yallist$1.prototype.getReverse = function (n) { + for (var i = 0, walker = this.tail; walker !== null && i < n; i++) { + // abort out of the list early if we hit a cycle + walker = walker.prev; + } + if (i === n && walker !== null) { + return walker.value + } +}; - // 16. If httpRequest’s cache mode is "no-cache", httpRequest’s prevent - // no-cache cache-control header modification flag is unset, and - // httpRequest’s header list does not contain `Cache-Control`, then append - // `Cache-Control`/`max-age=0` to httpRequest’s header list. - if ( - httpRequest.cache === 'no-cache' && - !httpRequest.preventNoCacheCacheControlHeaderModification && - !httpRequest.headersList.has('cache-control') - ) { - httpRequest.headersList.append('cache-control', 'max-age=0'); - } +Yallist$1.prototype.map = function (fn, thisp) { + thisp = thisp || this; + var res = new Yallist$1(); + for (var walker = this.head; walker !== null;) { + res.push(fn.call(thisp, walker.value, this)); + walker = walker.next; + } + return res +}; - // 17. If httpRequest’s cache mode is "no-store" or "reload", then: - if (httpRequest.cache === 'no-store' || httpRequest.cache === 'reload') { - // 1. If httpRequest’s header list does not contain `Pragma`, then append - // `Pragma`/`no-cache` to httpRequest’s header list. - if (!httpRequest.headersList.has('pragma')) { - httpRequest.headersList.append('pragma', 'no-cache'); - } +Yallist$1.prototype.mapReverse = function (fn, thisp) { + thisp = thisp || this; + var res = new Yallist$1(); + for (var walker = this.tail; walker !== null;) { + res.push(fn.call(thisp, walker.value, this)); + walker = walker.prev; + } + return res +}; - // 2. If httpRequest’s header list does not contain `Cache-Control`, - // then append `Cache-Control`/`no-cache` to httpRequest’s header list. - if (!httpRequest.headersList.has('cache-control')) { - httpRequest.headersList.append('cache-control', 'no-cache'); - } - } +Yallist$1.prototype.reduce = function (fn, initial) { + var acc; + var walker = this.head; + if (arguments.length > 1) { + acc = initial; + } else if (this.head) { + walker = this.head.next; + acc = this.head.value; + } else { + throw new TypeError('Reduce of empty list with no initial value') + } - // 18. If httpRequest’s header list contains `Range`, then append - // `Accept-Encoding`/`identity` to httpRequest’s header list. - if (httpRequest.headersList.has('range')) { - httpRequest.headersList.append('accept-encoding', 'identity'); - } + for (var i = 0; walker !== null; i++) { + acc = fn(acc, walker.value, i); + walker = walker.next; + } - // 19. Modify httpRequest’s header list per HTTP. Do not append a given - // header if httpRequest’s header list contains that header’s name. - // TODO: https://github.com/whatwg/fetch/issues/1285#issuecomment-896560129 - if (!httpRequest.headersList.has('accept-encoding')) { - if (/^https:/.test(requestCurrentURL(httpRequest).protocol)) { - httpRequest.headersList.append('accept-encoding', 'br, gzip, deflate'); - } else { - httpRequest.headersList.append('accept-encoding', 'gzip, deflate'); - } - } + return acc +}; - // 21. If there’s a proxy-authentication entry, use it as appropriate. - // TODO: proxy-authentication +Yallist$1.prototype.reduceReverse = function (fn, initial) { + var acc; + var walker = this.tail; + if (arguments.length > 1) { + acc = initial; + } else if (this.tail) { + walker = this.tail.prev; + acc = this.tail.value; + } else { + throw new TypeError('Reduce of empty list with no initial value') + } - // 22. Set httpCache to the result of determining the HTTP cache - // partition, given httpRequest. - // TODO: cache + for (var i = this.length - 1; walker !== null; i--) { + acc = fn(acc, walker.value, i); + walker = walker.prev; + } - // 23. If httpCache is null, then set httpRequest’s cache mode to - // "no-store". - { - httpRequest.cache = 'no-store'; - } + return acc +}; - // 24. If httpRequest’s cache mode is neither "no-store" nor "reload", - // then: - if (httpRequest.mode !== 'no-store' && httpRequest.mode !== 'reload') ; +Yallist$1.prototype.toArray = function () { + var arr = new Array(this.length); + for (var i = 0, walker = this.head; walker !== null; i++) { + arr[i] = walker.value; + walker = walker.next; + } + return arr +}; - // 9. If aborted, then return the appropriate network error for fetchParams. - // TODO +Yallist$1.prototype.toArrayReverse = function () { + var arr = new Array(this.length); + for (var i = 0, walker = this.tail; walker !== null; i++) { + arr[i] = walker.value; + walker = walker.prev; + } + return arr +}; - // 10. If response is null, then: - if (response == null) { - // 1. If httpRequest’s cache mode is "only-if-cached", then return a - // network error. - if (httpRequest.mode === 'only-if-cached') { - return makeNetworkError('only if cached') - } +Yallist$1.prototype.slice = function (from, to) { + to = to || this.length; + if (to < 0) { + to += this.length; + } + from = from || 0; + if (from < 0) { + from += this.length; + } + var ret = new Yallist$1(); + if (to < from || to < 0) { + return ret + } + if (from < 0) { + from = 0; + } + if (to > this.length) { + to = this.length; + } + for (var i = 0, walker = this.head; walker !== null && i < from; i++) { + walker = walker.next; + } + for (; walker !== null && i < to; i++, walker = walker.next) { + ret.push(walker.value); + } + return ret +}; - // 2. Let forwardResponse be the result of running HTTP-network fetch - // given httpFetchParams, includeCredentials, and isNewConnectionFetch. - const forwardResponse = await httpNetworkFetch( - httpFetchParams, - includeCredentials, - isNewConnectionFetch - ); - - // 3. If httpRequest’s method is unsafe and forwardResponse’s status is - // in the range 200 to 399, inclusive, invalidate appropriate stored - // responses in httpCache, as per the "Invalidation" chapter of HTTP - // Caching, and set storedResponse to null. [HTTP-CACHING] - if ( - !safeMethods.includes(httpRequest.method) && - forwardResponse.status >= 200 && - forwardResponse.status <= 399 - ) ; - - // 5. If response is null, then: - if (response == null) { - // 1. Set response to forwardResponse. - response = forwardResponse; - - // 2. Store httpRequest and forwardResponse in httpCache, as per the - // "Storing Responses in Caches" chapter of HTTP Caching. [HTTP-CACHING] - // TODO: cache - } - } +Yallist$1.prototype.sliceReverse = function (from, to) { + to = to || this.length; + if (to < 0) { + to += this.length; + } + from = from || 0; + if (from < 0) { + from += this.length; + } + var ret = new Yallist$1(); + if (to < from || to < 0) { + return ret + } + if (from < 0) { + from = 0; + } + if (to > this.length) { + to = this.length; + } + for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) { + walker = walker.prev; + } + for (; walker !== null && i > from; i--, walker = walker.prev) { + ret.push(walker.value); + } + return ret +}; - // 11. Set response’s URL list to a clone of httpRequest’s URL list. - response.urlList = [...httpRequest.urlList]; +Yallist$1.prototype.splice = function (start, deleteCount, ...nodes) { + if (start > this.length) { + start = this.length - 1; + } + if (start < 0) { + start = this.length + start; + } - // 12. If httpRequest’s header list contains `Range`, then set response’s - // range-requested flag. - if (httpRequest.headersList.has('range')) { - response.rangeRequested = true; - } + for (var i = 0, walker = this.head; walker !== null && i < start; i++) { + walker = walker.next; + } - // 13. Set response’s request-includes-credentials to includeCredentials. - response.requestIncludesCredentials = includeCredentials; + var ret = []; + for (var i = 0; walker && i < deleteCount; i++) { + ret.push(walker.value); + walker = this.removeNode(walker); + } + if (walker === null) { + walker = this.tail; + } - // 14. If response’s status is 401, httpRequest’s response tainting is not - // "cors", includeCredentials is true, and request’s window is an environment - // settings object, then: - // TODO + if (walker !== this.head && walker !== this.tail) { + walker = walker.prev; + } - // 15. If response’s status is 407, then: - if (response.status === 407) { - // 1. If request’s window is "no-window", then return a network error. - if (request.window === 'no-window') { - return makeNetworkError() - } + for (var i = 0; i < nodes.length; i++) { + walker = insert(this, walker, nodes[i]); + } + return ret; +}; - // 2. ??? +Yallist$1.prototype.reverse = function () { + var head = this.head; + var tail = this.tail; + for (var walker = head; walker !== null; walker = walker.prev) { + var p = walker.prev; + walker.prev = walker.next; + walker.next = p; + } + this.head = tail; + this.tail = head; + return this +}; - // 3. If fetchParams is canceled, then return the appropriate network error for fetchParams. - if (isCancelled(fetchParams)) { - return makeAppropriateNetworkError(fetchParams) - } +function insert (self, node, value) { + var inserted = node === self.head ? + new Node(value, null, node, self) : + new Node(value, node, node.next, self); - // 4. Prompt the end user as appropriate in request’s window and store - // the result as a proxy-authentication entry. [HTTP-AUTH] - // TODO: Invoke some kind of callback? + if (inserted.next === null) { + self.tail = inserted; + } + if (inserted.prev === null) { + self.head = inserted; + } - // 5. Set response to the result of running HTTP-network-or-cache fetch given - // fetchParams. - // TODO - return makeNetworkError('proxy authentication required') - } + self.length++; - // 16. If all of the following are true - if ( - // response’s status is 421 - response.status === 421 && - // isNewConnectionFetch is false - !isNewConnectionFetch && - // request’s body is null, or request’s body is non-null and request’s body’s source is non-null - (request.body == null || request.body.source != null) - ) { - // then: - - // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams. - if (isCancelled(fetchParams)) { - return makeAppropriateNetworkError(fetchParams) - } + return inserted +} - // 2. Set response to the result of running HTTP-network-or-cache - // fetch given fetchParams, isAuthenticationFetch, and true. +function push$1 (self, item) { + self.tail = new Node(item, self.tail, null, self); + if (!self.head) { + self.head = self.tail; + } + self.length++; +} - // TODO (spec): The spec doesn't specify this but we need to cancel - // the active response before we can start a new one. - // https://github.com/whatwg/fetch/issues/1293 - fetchParams.controller.connection.destroy(); +function unshift (self, item) { + self.head = new Node(item, null, self.head, self); + if (!self.tail) { + self.tail = self.head; + } + self.length++; +} - response = await httpNetworkOrCacheFetch( - fetchParams, - isAuthenticationFetch, - true - ); - } +function Node (value, prev, next, list) { + if (!(this instanceof Node)) { + return new Node(value, prev, next, list) + } - // 18. Return response. - return response - } + this.list = list; + this.value = value; - // https://fetch.spec.whatwg.org/#http-network-fetch - async function httpNetworkFetch ( - fetchParams, - includeCredentials = false, - forceNewConnection = false - ) { - assert(!fetchParams.controller.connection || fetchParams.controller.connection.destroyed); - - fetchParams.controller.connection = { - abort: null, - destroyed: false, - destroy (err) { - if (!this.destroyed) { - this.destroyed = true; - this.abort?.(err ?? new DOMException('The operation was aborted.', 'AbortError')); - } - } - }; + if (prev) { + prev.next = this; + this.prev = prev; + } else { + this.prev = null; + } - // 1. Let request be fetchParams’s request. - const request = fetchParams.request; + if (next) { + next.prev = this; + this.next = next; + } else { + this.next = null; + } +} - // 2. Let response be null. - let response = null; +try { + // add if support for Symbol.iterator is present + requireIterator()(Yallist$1); +} catch (er) {} - // 3. Let timingInfo be fetchParams’s timing info. - const timingInfo = fetchParams.timingInfo; +// A linked list to keep track of recently-used-ness +const Yallist = yallist; - // 5. If httpCache is null, then set request’s cache mode to "no-store". - { - request.cache = 'no-store'; - } +const MAX = Symbol('max'); +const LENGTH = Symbol('length'); +const LENGTH_CALCULATOR = Symbol('lengthCalculator'); +const ALLOW_STALE = Symbol('allowStale'); +const MAX_AGE = Symbol('maxAge'); +const DISPOSE = Symbol('dispose'); +const NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet'); +const LRU_LIST = Symbol('lruList'); +const CACHE = Symbol('cache'); +const UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet'); - // 8. Switch on request’s mode: - if (request.mode === 'websocket') ; +const naiveLength = () => 1; - // 9. Run these steps, but abort when the ongoing fetch is terminated: +// lruList is a yallist where the head is the youngest +// item, and the tail is the oldest. the list contains the Hit +// objects as the entries. +// Each Hit object has a reference to its Yallist.Node. This +// never changes. +// +// cache is a Map (or PseudoMap) that matches the keys to +// the Yallist.Node object. +class LRUCache { + constructor (options) { + if (typeof options === 'number') + options = { max: options }; - // 1. If connection is failure, then return a network error. + if (!options) + options = {}; - // 2. Set timingInfo’s final connection timing info to the result of - // calling clamp and coarsen connection timing info with connection’s - // timing info, timingInfo’s post-redirect start time, and fetchParams’s - // cross-origin isolated capability. + if (options.max && (typeof options.max !== 'number' || options.max < 0)) + throw new TypeError('max must be a non-negative number') + // Kind of weird to have a default max of Infinity, but oh well. + this[MAX] = options.max || Infinity; - // 3. If connection is not an HTTP/2 connection, request’s body is non-null, - // and request’s body’s source is null, then append (`Transfer-Encoding`, - // `chunked`) to request’s header list. + const lc = options.length || naiveLength; + this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc; + this[ALLOW_STALE] = options.stale || false; + if (options.maxAge && typeof options.maxAge !== 'number') + throw new TypeError('maxAge must be a number') + this[MAX_AGE] = options.maxAge || 0; + this[DISPOSE] = options.dispose; + this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false; + this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false; + this.reset(); + } - // 4. Set timingInfo’s final network-request start time to the coarsened - // shared current time given fetchParams’s cross-origin isolated - // capability. + // resize the cache when the max changes. + set max (mL) { + if (typeof mL !== 'number' || mL < 0) + throw new TypeError('max must be a non-negative number') - // 5. Set response to the result of making an HTTP request over connection - // using request with the following caveats: + this[MAX] = mL || Infinity; + trim(this); + } + get max () { + return this[MAX] + } - // - Follow the relevant requirements from HTTP. [HTTP] [HTTP-SEMANTICS] - // [HTTP-COND] [HTTP-CACHING] [HTTP-AUTH] + set allowStale (allowStale) { + this[ALLOW_STALE] = !!allowStale; + } + get allowStale () { + return this[ALLOW_STALE] + } - // - If request’s body is non-null, and request’s body’s source is null, - // then the user agent may have a buffer of up to 64 kibibytes and store - // a part of request’s body in that buffer. If the user agent reads from - // request’s body beyond that buffer’s size and the user agent needs to - // resend request, then instead return a network error. + set maxAge (mA) { + if (typeof mA !== 'number') + throw new TypeError('maxAge must be a non-negative number') - // - Set timingInfo’s final network-response start time to the coarsened - // shared current time given fetchParams’s cross-origin isolated capability, - // immediately after the user agent’s HTTP parser receives the first byte - // of the response (e.g., frame header bytes for HTTP/2 or response status - // line for HTTP/1.x). + this[MAX_AGE] = mA; + trim(this); + } + get maxAge () { + return this[MAX_AGE] + } - // - Wait until all the headers are transmitted. + // resize the cache when the lengthCalculator changes. + set lengthCalculator (lC) { + if (typeof lC !== 'function') + lC = naiveLength; - // - Any responses whose status is in the range 100 to 199, inclusive, - // and is not 101, are to be ignored, except for the purposes of setting - // timingInfo’s final network-response start time above. + if (lC !== this[LENGTH_CALCULATOR]) { + this[LENGTH_CALCULATOR] = lC; + this[LENGTH] = 0; + this[LRU_LIST].forEach(hit => { + hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key); + this[LENGTH] += hit.length; + }); + } + trim(this); + } + get lengthCalculator () { return this[LENGTH_CALCULATOR] } - // - If request’s header list contains `Transfer-Encoding`/`chunked` and - // response is transferred via HTTP/1.0 or older, then return a network - // error. + get length () { return this[LENGTH] } + get itemCount () { return this[LRU_LIST].length } - // - If the HTTP request results in a TLS client certificate dialog, then: + rforEach (fn, thisp) { + thisp = thisp || this; + for (let walker = this[LRU_LIST].tail; walker !== null;) { + const prev = walker.prev; + forEachStep(this, fn, walker, thisp); + walker = prev; + } + } - // 1. If request’s window is an environment settings object, make the - // dialog available in request’s window. + forEach (fn, thisp) { + thisp = thisp || this; + for (let walker = this[LRU_LIST].head; walker !== null;) { + const next = walker.next; + forEachStep(this, fn, walker, thisp); + walker = next; + } + } - // 2. Otherwise, return a network error. + keys () { + return this[LRU_LIST].toArray().map(k => k.key) + } - // To transmit request’s body body, run these steps: - let requestBody = null; - // 1. If body is null and fetchParams’s process request end-of-body is - // non-null, then queue a fetch task given fetchParams’s process request - // end-of-body and fetchParams’s task destination. - if (request.body == null && fetchParams.processRequestEndOfBody) { - queueMicrotask(() => fetchParams.processRequestEndOfBody()); - } else if (request.body != null) { - // 2. Otherwise, if body is non-null: + values () { + return this[LRU_LIST].toArray().map(k => k.value) + } - // 1. Let processBodyChunk given bytes be these steps: - const processBodyChunk = async function * (bytes) { - // 1. If the ongoing fetch is terminated, then abort these steps. - if (isCancelled(fetchParams)) { - return - } + reset () { + if (this[DISPOSE] && + this[LRU_LIST] && + this[LRU_LIST].length) { + this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value)); + } - // 2. Run this step in parallel: transmit bytes. - yield bytes; + this[CACHE] = new Map(); // hash of items by key + this[LRU_LIST] = new Yallist(); // list of items in order of use recency + this[LENGTH] = 0; // length of items in the list + } - // 3. If fetchParams’s process request body is non-null, then run - // fetchParams’s process request body given bytes’s length. - fetchParams.processRequestBodyChunkLength?.(bytes.byteLength); - }; + dump () { + return this[LRU_LIST].map(hit => + isStale(this, hit) ? false : { + k: hit.key, + v: hit.value, + e: hit.now + (hit.maxAge || 0) + }).toArray().filter(h => h) + } - // 2. Let processEndOfBody be these steps: - const processEndOfBody = () => { - // 1. If fetchParams is canceled, then abort these steps. - if (isCancelled(fetchParams)) { - return - } + dumpLru () { + return this[LRU_LIST] + } - // 2. If fetchParams’s process request end-of-body is non-null, - // then run fetchParams’s process request end-of-body. - if (fetchParams.processRequestEndOfBody) { - fetchParams.processRequestEndOfBody(); - } - }; + set (key, value, maxAge) { + maxAge = maxAge || this[MAX_AGE]; - // 3. Let processBodyError given e be these steps: - const processBodyError = (e) => { - // 1. If fetchParams is canceled, then abort these steps. - if (isCancelled(fetchParams)) { - return - } + if (maxAge && typeof maxAge !== 'number') + throw new TypeError('maxAge must be a number') - // 2. If e is an "AbortError" DOMException, then abort fetchParams’s controller. - if (e.name === 'AbortError') { - fetchParams.controller.abort(); - } else { - fetchParams.controller.terminate(e); - } - }; + const now = maxAge ? Date.now() : 0; + const len = this[LENGTH_CALCULATOR](value, key); - // 4. Incrementally read request’s body given processBodyChunk, processEndOfBody, - // processBodyError, and fetchParams’s task destination. - requestBody = (async function * () { - try { - for await (const bytes of request.body.stream) { - yield * processBodyChunk(bytes); - } - processEndOfBody(); - } catch (err) { - processBodyError(err); - } - })(); - } + if (this[CACHE].has(key)) { + if (len > this[MAX]) { + del(this, this[CACHE].get(key)); + return false + } - try { - const { body, status, statusText, headersList } = await dispatch({ body: requestBody }); + const node = this[CACHE].get(key); + const item = node.value; - const iterator = body[Symbol.asyncIterator](); - fetchParams.controller.next = () => iterator.next(); + // dispose of the old one before overwriting + // split out into 2 ifs for better coverage tracking + if (this[DISPOSE]) { + if (!this[NO_DISPOSE_ON_SET]) + this[DISPOSE](key, item.value); + } - response = makeResponse({ status, statusText, headersList }); - } catch (err) { - // 10. If aborted, then: - if (err.name === 'AbortError') { - // 1. If connection uses HTTP/2, then transmit an RST_STREAM frame. - fetchParams.controller.connection.destroy(); + item.now = now; + item.maxAge = maxAge; + item.value = value; + this[LENGTH] += len - item.length; + item.length = len; + this.get(key); + trim(this); + return true + } - // 2. Return the appropriate network error for fetchParams. - return makeAppropriateNetworkError(fetchParams) - } + const hit = new Entry(key, value, len, now, maxAge); - return makeNetworkError(err) - } + // oversized objects fall out of cache automatically. + if (hit.length > this[MAX]) { + if (this[DISPOSE]) + this[DISPOSE](key, value); - // 11. Let pullAlgorithm be an action that resumes the ongoing fetch - // if it is suspended. - const pullAlgorithm = () => { - fetchParams.controller.resume(); - }; + return false + } - // 12. Let cancelAlgorithm be an algorithm that aborts fetchParams’s - // controller. - const cancelAlgorithm = () => { - fetchParams.controller.abort(); - }; + this[LENGTH] += hit.length; + this[LRU_LIST].unshift(hit); + this[CACHE].set(key, this[LRU_LIST].head); + trim(this); + return true + } - // 13. Let highWaterMark be a non-negative, non-NaN number, chosen by - // the user agent. - // TODO + has (key) { + if (!this[CACHE].has(key)) return false + const hit = this[CACHE].get(key).value; + return !isStale(this, hit) + } - // 14. Let sizeAlgorithm be an algorithm that accepts a chunk object - // and returns a non-negative, non-NaN, non-infinite number, chosen by the user agent. - // TODO + get (key) { + return get$1(this, key, true) + } - // 15. Let stream be a new ReadableStream. - // 16. Set up stream with pullAlgorithm set to pullAlgorithm, - // cancelAlgorithm set to cancelAlgorithm, highWaterMark set to - // highWaterMark, and sizeAlgorithm set to sizeAlgorithm. - if (!ReadableStream) { - ReadableStream = require$$10.ReadableStream; - } + peek (key) { + return get$1(this, key, false) + } - const stream = new ReadableStream( - { - async start (controller) { - fetchParams.controller.controller = controller; - }, - async pull (controller) { - await pullAlgorithm(); - }, - async cancel (reason) { - await cancelAlgorithm(); - } - }, - { highWaterMark: 0 } - ); - - // 17. Run these steps, but abort when the ongoing fetch is terminated: - - // 1. Set response’s body to a new body whose stream is stream. - response.body = { stream }; - - // 2. If response is not a network error and request’s cache mode is - // not "no-store", then update response in httpCache for request. - // TODO - - // 3. If includeCredentials is true and the user agent is not configured - // to block cookies for request (see section 7 of [COOKIES]), then run the - // "set-cookie-string" parsing algorithm (see section 5.2 of [COOKIES]) on - // the value of each header whose name is a byte-case-insensitive match for - // `Set-Cookie` in response’s header list, if any, and request’s current URL. - // TODO - - // 18. If aborted, then: - // TODO - - // 19. Run these steps in parallel: - - // 1. Run these steps, but abort when fetchParams is canceled: - fetchParams.controller.on('terminated', onAborted); - fetchParams.controller.resume = async () => { - // 1. While true - while (true) { - // 1-3. See onData... - - // 4. Set bytes to the result of handling content codings given - // codings and bytes. - let bytes; - try { - const { done, value } = await fetchParams.controller.next(); - - if (isAborted(fetchParams)) { - break - } + pop () { + const node = this[LRU_LIST].tail; + if (!node) + return null - bytes = done ? undefined : value; - } catch (err) { - if (fetchParams.controller.ended && !timingInfo.encodedBodySize) { - // zlib doesn't like empty streams. - bytes = undefined; - } else { - bytes = err; - } - } + del(this, node); + return node.value + } - if (bytes === undefined) { - // 2. Otherwise, if the bytes transmission for response’s message - // body is done normally and stream is readable, then close - // stream, finalize response for fetchParams and response, and - // abort these in-parallel steps. - try { - fetchParams.controller.controller.close(); - } catch (err) { - // TODO (fix): How/Why can this happen? Do we have a bug? - if (!/Controller is already closed/.test(err)) { - throw err - } - } + del (key) { + del(this, this[CACHE].get(key)); + } - finalizeResponse(fetchParams, response); + load (arr) { + // reset the cache + this.reset(); - return - } + const now = Date.now(); + // A previous serialized cache has the most recent items first + for (let l = arr.length - 1; l >= 0; l--) { + const hit = arr[l]; + const expiresAt = hit.e || 0; + if (expiresAt === 0) + // the item was created without expiration in a non aged cache + this.set(hit.k, hit.v); + else { + const maxAge = expiresAt - now; + // dont add already expired items + if (maxAge > 0) { + this.set(hit.k, hit.v, maxAge); + } + } + } + } - // 5. Increase timingInfo’s decoded body size by bytes’s length. - timingInfo.decodedBodySize += bytes?.byteLength ?? 0; + prune () { + this[CACHE].forEach((value, key) => get$1(this, key, false)); + } +} - // 6. If bytes is failure, then terminate fetchParams’s controller. - if (isErrorLike(bytes)) { - fetchParams.controller.terminate(bytes); - return - } +const get$1 = (self, key, doUse) => { + const node = self[CACHE].get(key); + if (node) { + const hit = node.value; + if (isStale(self, hit)) { + del(self, node); + if (!self[ALLOW_STALE]) + return undefined + } else { + if (doUse) { + if (self[UPDATE_AGE_ON_GET]) + node.value.now = Date.now(); + self[LRU_LIST].unshiftNode(node); + } + } + return hit.value + } +}; - // 7. Enqueue a Uint8Array wrapping an ArrayBuffer containing bytes - // into stream. - fetchParams.controller.controller.enqueue(new Uint8Array(bytes)); +const isStale = (self, hit) => { + if (!hit || (!hit.maxAge && !self[MAX_AGE])) + return false - // 8. If stream is errored, then terminate the ongoing fetch. - if (isErrored(stream)) { - fetchParams.controller.terminate(); - return - } + const diff = Date.now() - hit.now; + return hit.maxAge ? diff > hit.maxAge + : self[MAX_AGE] && (diff > self[MAX_AGE]) +}; - // 9. If stream doesn’t need more data ask the user agent to suspend - // the ongoing fetch. - if (!fetchParams.controller.controller.desiredSize) { - return - } - } - }; +const trim = self => { + if (self[LENGTH] > self[MAX]) { + for (let walker = self[LRU_LIST].tail; + self[LENGTH] > self[MAX] && walker !== null;) { + // We know that we're about to delete this one, and also + // what the next least recently used key will be, so just + // go ahead and set it now. + const prev = walker.prev; + del(self, walker); + walker = prev; + } + } +}; - // 2. If aborted, then: - function onAborted (reason) { - // 2. If fetchParams is aborted, then: - if (isAborted(fetchParams)) { - // 1. Set response’s aborted flag. - response.aborted = true; - - // 2. If stream is readable, error stream with an "AbortError" DOMException. - if (isReadable(stream)) { - fetchParams.controller.controller.error( - new DOMException('The operation was aborted.', 'AbortError') - ); - } - } else { - // 3. Otherwise, if stream is readable, error stream with a TypeError. - if (isReadable(stream)) { - fetchParams.controller.controller.error(new TypeError('terminated', { - cause: isErrorLike(reason) ? reason : undefined - })); - } - } +const del = (self, node) => { + if (node) { + const hit = node.value; + if (self[DISPOSE]) + self[DISPOSE](hit.key, hit.value); - // 4. If connection uses HTTP/2, then transmit an RST_STREAM frame. - // 5. Otherwise, the user agent should close connection unless it would be bad for performance to do so. - fetchParams.controller.connection.destroy(); - } + self[LENGTH] -= hit.length; + self[CACHE].delete(hit.key); + self[LRU_LIST].removeNode(node); + } +}; - // 20. Return response. - return response - - async function dispatch ({ body }) { - const url = requestCurrentURL(request); - return new Promise((resolve, reject) => fetchParams.controller.dispatcher.dispatch( - { - path: url.pathname + url.search, - origin: url.origin, - method: request.method, - body: fetchParams.controller.dispatcher.isMockActive ? request.body && request.body.source : body, - headers: [...request.headersList].flat(), - maxRedirections: 0, - bodyTimeout: 300_000, - headersTimeout: 300_000 - }, - { - body: null, - abort: null, - - onConnect (abort) { - // TODO (fix): Do we need connection here? - const { connection } = fetchParams.controller; - - if (connection.destroyed) { - abort(new DOMException('The operation was aborted.', 'AbortError')); - } else { - fetchParams.controller.on('terminated', abort); - this.abort = connection.abort = abort; - } - }, +class Entry { + constructor (key, value, length, now, maxAge) { + this.key = key; + this.value = value; + this.length = length; + this.now = now; + this.maxAge = maxAge || 0; + } +} - onHeaders (status, headersList, resume, statusText) { - if (status < 200) { - return - } +const forEachStep = (self, fn, node, thisp) => { + let hit = node.value; + if (isStale(self, hit)) { + del(self, node); + if (!self[ALLOW_STALE]) + hit = undefined; + } + if (hit) + fn.call(thisp, hit.value, hit.key, self); +}; - let codings = []; - let location = ''; +var lruCache = LRUCache; - const headers = new Headers(); - for (let n = 0; n < headersList.length; n += 2) { - const key = headersList[n + 0].toString('latin1'); - const val = headersList[n + 1].toString('latin1'); +const DEFAULT_MAX$1 = 1000; +const DEFAULT_TTL$1 = 3600000; +const rawDocumentSymbol = Symbol('rawDocument'); +const useValidationCache = (pluginOptions = {}) => { + const resultCache = typeof pluginOptions.cache !== 'undefined' + ? pluginOptions.cache + : new lruCache({ + max: DEFAULT_MAX$1, + maxAge: DEFAULT_TTL$1, + }); + return { + onSchemaChange() { + var _a, _b; + if (resultCache.reset) { + (_a = resultCache.reset) === null || _a === void 0 ? void 0 : _a.call(resultCache); + } + else if ('clear' in resultCache) { + (_b = resultCache.clear) === null || _b === void 0 ? void 0 : _b.call(resultCache); + } + }, + onParse({ params, extendContext }) { + extendContext({ [rawDocumentSymbol]: params.source.toString() }); + }, + onValidate({ params, context, setResult }) { + var _a; + const key = (_a = context[rawDocumentSymbol]) !== null && _a !== void 0 ? _a : print(params.documentAST); + const cachedResult = resultCache.get(key); + if (cachedResult !== undefined) { + setResult(cachedResult); + } + return ({ result }) => { + resultCache.set(key, result); + }; + }, + }; +}; - if (key.toLowerCase() === 'content-encoding') { - codings = val.split(',').map((x) => x.trim()); - } else if (key.toLowerCase() === 'location') { - location = val; - } +const DEFAULT_MAX = 1000; +const DEFAULT_TTL = 3600000; +const useParserCache = (pluginOptions = {}) => { + const documentCache = typeof pluginOptions.documentCache !== 'undefined' + ? pluginOptions.documentCache + : new lruCache({ max: DEFAULT_MAX, maxAge: DEFAULT_TTL }); + const errorCache = typeof pluginOptions.errorCache !== 'undefined' + ? pluginOptions.errorCache + : new lruCache({ max: DEFAULT_MAX, maxAge: DEFAULT_TTL }); + return { + onParse({ params, setParsedDocument }) { + const { source } = params; + const key = source instanceof Source ? source.body : source; + const cachedError = errorCache.get(key); + if (cachedError !== undefined) { + throw cachedError; + } + const cachedDocument = documentCache.get(key); + if (cachedDocument !== undefined) { + setParsedDocument(cachedDocument); + } + return ({ result }) => { + if (result instanceof Error) { + errorCache.set(key, result); + } + else if (result !== null) { + documentCache.set(key, result); + } + }; + }, + }; +}; - headers.append(key, val); - } +const asArray$1 = (fns) => (Array.isArray(fns) ? fns : fns ? [fns] : []); +function compareStrings(a, b) { + if (String(a) < String(b)) { + return -1; + } + if (String(a) > String(b)) { + return 1; + } + return 0; +} +function nodeToString(a) { + var _a, _b; + let name; + if ('alias' in a) { + name = (_a = a.alias) === null || _a === void 0 ? void 0 : _a.value; + } + if (name == null && 'name' in a) { + name = (_b = a.name) === null || _b === void 0 ? void 0 : _b.value; + } + if (name == null) { + name = a.kind; + } + return name; +} +function compareNodes(a, b, customFn) { + const aStr = nodeToString(a); + const bStr = nodeToString(b); + if (typeof customFn === 'function') { + return customFn(aStr, bStr); + } + return compareStrings(aStr, bStr); +} +function isSome(input) { + return input != null; +} - this.body = new Readable({ read: resume }); - - const decoders = []; - - // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding - if (request.method !== 'HEAD' && request.method !== 'CONNECT' && !nullBodyStatus.includes(status) && !(request.redirect === 'follow' && location)) { - for (const coding of codings) { - if (/(x-)?gzip/.test(coding)) { - decoders.push(zlib$1.createGunzip()); - } else if (/(x-)?deflate/.test(coding)) { - decoders.push(zlib$1.createInflate()); - } else if (coding === 'br') { - decoders.push(zlib$1.createBrotliDecompress()); - } else { - decoders.length = 0; - break - } - } - } +function createGraphQLError(message, options) { + if (versionInfo.major >= 17) { + return new GraphQLError(message, options); + } + return new GraphQLError(message, options === null || options === void 0 ? void 0 : options.nodes, options === null || options === void 0 ? void 0 : options.source, options === null || options === void 0 ? void 0 : options.positions, options === null || options === void 0 ? void 0 : options.path, options === null || options === void 0 ? void 0 : options.originalError, options === null || options === void 0 ? void 0 : options.extensions); +} - resolve({ - status, - statusText, - headersList: headers[kHeadersList], - body: decoders.length - ? pipeline(this.body, ...decoders, () => { }) - : this.body.on('error', () => {}) - }); +let AggregateErrorImpl; +if (typeof AggregateError === 'undefined') { + class AggregateErrorClass extends Error { + constructor(errors, message = '') { + super(message); + this.errors = errors; + this.name = 'AggregateError'; + Error.captureStackTrace(this, AggregateErrorClass); + } + } + AggregateErrorImpl = function (errors, message) { + return new AggregateErrorClass(errors, message); + }; +} +else { + AggregateErrorImpl = AggregateError; +} +function isAggregateError$1(error) { + return 'errors' in error && Array.isArray(error['errors']); +} - return true - }, +// Taken from graphql-js +const MAX_RECURSIVE_DEPTH = 3; +/** + * Used to print values in error messages. + */ +function inspect(value) { + return formatValue(value, []); +} +function formatValue(value, seenValues) { + switch (typeof value) { + case 'string': + return JSON.stringify(value); + case 'function': + return value.name ? `[function ${value.name}]` : '[function]'; + case 'object': + return formatObjectValue(value, seenValues); + default: + return String(value); + } +} +function formatError(value) { + if (value instanceof GraphQLError) { + return value.toString(); + } + return `${value.name}: ${value.message};\n ${value.stack}`; +} +function formatObjectValue(value, previouslySeenValues) { + if (value === null) { + return 'null'; + } + if (value instanceof Error) { + if (isAggregateError$1(value)) { + return formatError(value) + '\n' + formatArray(value.errors, previouslySeenValues); + } + return formatError(value); + } + if (previouslySeenValues.includes(value)) { + return '[Circular]'; + } + const seenValues = [...previouslySeenValues, value]; + if (isJSONable(value)) { + const jsonValue = value.toJSON(); + // check for infinite recursion + if (jsonValue !== value) { + return typeof jsonValue === 'string' ? jsonValue : formatValue(jsonValue, seenValues); + } + } + else if (Array.isArray(value)) { + return formatArray(value, seenValues); + } + return formatObject(value, seenValues); +} +function isJSONable(value) { + return typeof value.toJSON === 'function'; +} +function formatObject(object, seenValues) { + const entries = Object.entries(object); + if (entries.length === 0) { + return '{}'; + } + if (seenValues.length > MAX_RECURSIVE_DEPTH) { + return '[' + getObjectTag(object) + ']'; + } + const properties = entries.map(([key, value]) => key + ': ' + formatValue(value, seenValues)); + return '{ ' + properties.join(', ') + ' }'; +} +function formatArray(array, seenValues) { + if (array.length === 0) { + return '[]'; + } + if (seenValues.length > MAX_RECURSIVE_DEPTH) { + return '[Array]'; + } + const len = array.length; + const remaining = array.length; + const items = []; + for (let i = 0; i < len; ++i) { + items.push(formatValue(array[i], seenValues)); + } + if (remaining === 1) { + items.push('... 1 more item'); + } + else if (remaining > 1) { + items.push(`... ${remaining} more items`); + } + return '[' + items.join(', ') + ']'; +} +function getObjectTag(object) { + const tag = Object.prototype.toString + .call(object) + .replace(/^\[object /, '') + .replace(/]$/, ''); + if (tag === 'Object' && typeof object.constructor === 'function') { + const name = object.constructor.name; + if (typeof name === 'string' && name !== '') { + return name; + } + } + return tag; +} - onData (chunk) { - if (fetchParams.controller.dump) { - return - } +function getDirectivesInExtensions(node, pathToDirectivesInExtensions = ['directives']) { + return pathToDirectivesInExtensions.reduce((acc, pathSegment) => (acc == null ? acc : acc[pathSegment]), node === null || node === void 0 ? void 0 : node.extensions); +} - // 1. If one or more bytes have been transmitted from response’s - // message body, then: +function astFromType(type) { + if (isNonNullType(type)) { + const innerType = astFromType(type.ofType); + if (innerType.kind === Kind.NON_NULL_TYPE) { + throw new Error(`Invalid type node ${inspect(type)}. Inner type of non-null type cannot be a non-null type.`); + } + return { + kind: Kind.NON_NULL_TYPE, + type: innerType, + }; + } + else if (isListType(type)) { + return { + kind: Kind.LIST_TYPE, + type: astFromType(type.ofType), + }; + } + return { + kind: Kind.NAMED_TYPE, + name: { + kind: Kind.NAME, + value: type.name, + }, + }; +} - // 1. Let bytes be the transmitted bytes. - const bytes = chunk; +/** + * Produces a GraphQL Value AST given a JavaScript object. + * Function will match JavaScript/JSON values to GraphQL AST schema format + * by using the following mapping. + * + * | JSON Value | GraphQL Value | + * | ------------- | -------------------- | + * | Object | Input Object | + * | Array | List | + * | Boolean | Boolean | + * | String | String | + * | Number | Int / Float | + * | null | NullValue | + * + */ +function astFromValueUntyped(value) { + // only explicit null, not undefined, NaN + if (value === null) { + return { kind: Kind.NULL }; + } + // undefined + if (value === undefined) { + return null; + } + // Convert JavaScript array to GraphQL list. If the GraphQLType is a list, but + // the value is not an array, convert the value using the list's item type. + if (Array.isArray(value)) { + const valuesNodes = []; + for (const item of value) { + const itemNode = astFromValueUntyped(item); + if (itemNode != null) { + valuesNodes.push(itemNode); + } + } + return { kind: Kind.LIST, values: valuesNodes }; + } + if (typeof value === 'object') { + const fieldNodes = []; + for (const fieldName in value) { + const fieldValue = value[fieldName]; + const ast = astFromValueUntyped(fieldValue); + if (ast) { + fieldNodes.push({ + kind: Kind.OBJECT_FIELD, + name: { kind: Kind.NAME, value: fieldName }, + value: ast, + }); + } + } + return { kind: Kind.OBJECT, fields: fieldNodes }; + } + // Others serialize based on their corresponding JavaScript scalar types. + if (typeof value === 'boolean') { + return { kind: Kind.BOOLEAN, value }; + } + // JavaScript numbers can be Int or Float values. + if (typeof value === 'number' && isFinite(value)) { + const stringNum = String(value); + return integerStringRegExp.test(stringNum) + ? { kind: Kind.INT, value: stringNum } + : { kind: Kind.FLOAT, value: stringNum }; + } + if (typeof value === 'string') { + return { kind: Kind.STRING, value }; + } + throw new TypeError(`Cannot convert value to AST: ${value}.`); +} +/** + * IntValue: + * - NegativeSign? 0 + * - NegativeSign? NonZeroDigit ( Digit+ )? + */ +const integerStringRegExp = /^-?(?:0|[1-9][0-9]*)$/; - // 2. Let codings be the result of extracting header list values - // given `Content-Encoding` and response’s header list. - // See pullAlgorithm. +function memoize1(fn) { + const memoize1cache = new WeakMap(); + return function memoized(a1) { + const cachedValue = memoize1cache.get(a1); + if (cachedValue === undefined) { + const newValue = fn(a1); + memoize1cache.set(a1, newValue); + return newValue; + } + return cachedValue; + }; +} - // 3. Increase timingInfo’s encoded body size by bytes’s length. - timingInfo.encodedBodySize += bytes.byteLength; +const getRootTypeMap = memoize1(function getRootTypeMap(schema) { + const rootTypeMap = new Map(); + const queryType = schema.getQueryType(); + if (queryType) { + rootTypeMap.set('query', queryType); + } + const mutationType = schema.getMutationType(); + if (mutationType) { + rootTypeMap.set('mutation', mutationType); + } + const subscriptionType = schema.getSubscriptionType(); + if (subscriptionType) { + rootTypeMap.set('subscription', subscriptionType); + } + return rootTypeMap; +}); - // 4. See pullAlgorithm... +function getDocumentNodeFromSchema(schema, options = {}) { + const pathToDirectivesInExtensions = options.pathToDirectivesInExtensions; + const typesMap = schema.getTypeMap(); + const schemaNode = astFromSchema(schema, pathToDirectivesInExtensions); + const definitions = schemaNode != null ? [schemaNode] : []; + const directives = schema.getDirectives(); + for (const directive of directives) { + if (isSpecifiedDirective(directive)) { + continue; + } + definitions.push(astFromDirective(directive, schema, pathToDirectivesInExtensions)); + } + for (const typeName in typesMap) { + const type = typesMap[typeName]; + const isPredefinedScalar = isSpecifiedScalarType(type); + const isIntrospection = isIntrospectionType(type); + if (isPredefinedScalar || isIntrospection) { + continue; + } + if (isObjectType(type)) { + definitions.push(astFromObjectType(type, schema, pathToDirectivesInExtensions)); + } + else if (isInterfaceType(type)) { + definitions.push(astFromInterfaceType(type, schema, pathToDirectivesInExtensions)); + } + else if (isUnionType(type)) { + definitions.push(astFromUnionType(type, schema, pathToDirectivesInExtensions)); + } + else if (isInputObjectType(type)) { + definitions.push(astFromInputObjectType(type, schema, pathToDirectivesInExtensions)); + } + else if (isEnumType(type)) { + definitions.push(astFromEnumType(type, schema, pathToDirectivesInExtensions)); + } + else if (isScalarType(type)) { + definitions.push(astFromScalarType(type, schema, pathToDirectivesInExtensions)); + } + else { + throw new Error(`Unknown type ${type}.`); + } + } + return { + kind: Kind.DOCUMENT, + definitions, + }; +} +function astFromSchema(schema, pathToDirectivesInExtensions) { + var _a, _b; + const operationTypeMap = new Map([ + ['query', undefined], + ['mutation', undefined], + ['subscription', undefined], + ]); + const nodes = []; + if (schema.astNode != null) { + nodes.push(schema.astNode); + } + if (schema.extensionASTNodes != null) { + for (const extensionASTNode of schema.extensionASTNodes) { + nodes.push(extensionASTNode); + } + } + for (const node of nodes) { + if (node.operationTypes) { + for (const operationTypeDefinitionNode of node.operationTypes) { + operationTypeMap.set(operationTypeDefinitionNode.operation, operationTypeDefinitionNode); + } + } + } + const rootTypeMap = getRootTypeMap(schema); + for (const [operationTypeNode, operationTypeDefinitionNode] of operationTypeMap) { + const rootType = rootTypeMap.get(operationTypeNode); + if (rootType != null) { + const rootTypeAST = astFromType(rootType); + if (operationTypeDefinitionNode != null) { + operationTypeDefinitionNode.type = rootTypeAST; + } + else { + operationTypeMap.set(operationTypeNode, { + kind: Kind.OPERATION_TYPE_DEFINITION, + operation: operationTypeNode, + type: rootTypeAST, + }); + } + } + } + const operationTypes = [...operationTypeMap.values()].filter(isSome); + const directives = getDirectiveNodes(schema, schema, pathToDirectivesInExtensions); + if (!operationTypes.length && !directives.length) { + return null; + } + const schemaNode = { + kind: operationTypes != null ? Kind.SCHEMA_DEFINITION : Kind.SCHEMA_EXTENSION, + operationTypes, + // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility + directives: directives, + }; + // This code is so weird because it needs to support GraphQL.js 14 + // In GraphQL.js 14 there is no `description` value on schemaNode + schemaNode.description = + ((_b = (_a = schema.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : schema.description != null) + ? { + kind: Kind.STRING, + value: schema.description, + block: true, + } + : undefined; + return schemaNode; +} +function astFromDirective(directive, schema, pathToDirectivesInExtensions) { + var _a, _b, _c, _d; + return { + kind: Kind.DIRECTIVE_DEFINITION, + description: (_b = (_a = directive.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (directive.description + ? { + kind: Kind.STRING, + value: directive.description, + } + : undefined), + name: { + kind: Kind.NAME, + value: directive.name, + }, + arguments: (_c = directive.args) === null || _c === void 0 ? void 0 : _c.map(arg => astFromArg(arg, schema, pathToDirectivesInExtensions)), + repeatable: directive.isRepeatable, + locations: ((_d = directive.locations) === null || _d === void 0 ? void 0 : _d.map(location => ({ + kind: Kind.NAME, + value: location, + }))) || [], + }; +} +function getDirectiveNodes(entity, schema, pathToDirectivesInExtensions) { + const directivesInExtensions = getDirectivesInExtensions(entity, pathToDirectivesInExtensions); + let nodes = []; + if (entity.astNode != null) { + nodes.push(entity.astNode); + } + if ('extensionASTNodes' in entity && entity.extensionASTNodes != null) { + nodes = nodes.concat(entity.extensionASTNodes); + } + let directives; + if (directivesInExtensions != null) { + directives = makeDirectiveNodes(schema, directivesInExtensions); + } + else { + directives = []; + for (const node of nodes) { + if (node.directives) { + directives.push(...node.directives); + } + } + } + return directives; +} +function getDeprecatableDirectiveNodes(entity, schema, pathToDirectivesInExtensions) { + var _a, _b; + let directiveNodesBesidesDeprecated = []; + let deprecatedDirectiveNode = null; + const directivesInExtensions = getDirectivesInExtensions(entity, pathToDirectivesInExtensions); + let directives; + if (directivesInExtensions != null) { + directives = makeDirectiveNodes(schema, directivesInExtensions); + } + else { + directives = (_a = entity.astNode) === null || _a === void 0 ? void 0 : _a.directives; + } + if (directives != null) { + directiveNodesBesidesDeprecated = directives.filter(directive => directive.name.value !== 'deprecated'); + if (entity.deprecationReason != null) { + deprecatedDirectiveNode = (_b = directives.filter(directive => directive.name.value === 'deprecated')) === null || _b === void 0 ? void 0 : _b[0]; + } + } + if (entity.deprecationReason != null && + deprecatedDirectiveNode == null) { + deprecatedDirectiveNode = makeDeprecatedDirective(entity.deprecationReason); + } + return deprecatedDirectiveNode == null + ? directiveNodesBesidesDeprecated + : [deprecatedDirectiveNode].concat(directiveNodesBesidesDeprecated); +} +function astFromArg(arg, schema, pathToDirectivesInExtensions) { + var _a, _b, _c; + return { + kind: Kind.INPUT_VALUE_DEFINITION, + description: (_b = (_a = arg.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (arg.description + ? { + kind: Kind.STRING, + value: arg.description, + block: true, + } + : undefined), + name: { + kind: Kind.NAME, + value: arg.name, + }, + type: astFromType(arg.type), + // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility + defaultValue: arg.defaultValue !== undefined ? (_c = astFromValue(arg.defaultValue, arg.type)) !== null && _c !== void 0 ? _c : undefined : undefined, + directives: getDeprecatableDirectiveNodes(arg, schema, pathToDirectivesInExtensions), + }; +} +function astFromObjectType(type, schema, pathToDirectivesInExtensions) { + var _a, _b; + return { + kind: Kind.OBJECT_TYPE_DEFINITION, + description: (_b = (_a = type.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (type.description + ? { + kind: Kind.STRING, + value: type.description, + block: true, + } + : undefined), + name: { + kind: Kind.NAME, + value: type.name, + }, + fields: Object.values(type.getFields()).map(field => astFromField(field, schema, pathToDirectivesInExtensions)), + interfaces: Object.values(type.getInterfaces()).map(iFace => astFromType(iFace)), + directives: getDirectiveNodes(type, schema, pathToDirectivesInExtensions), + }; +} +function astFromInterfaceType(type, schema, pathToDirectivesInExtensions) { + var _a, _b; + const node = { + kind: Kind.INTERFACE_TYPE_DEFINITION, + description: (_b = (_a = type.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (type.description + ? { + kind: Kind.STRING, + value: type.description, + block: true, + } + : undefined), + name: { + kind: Kind.NAME, + value: type.name, + }, + fields: Object.values(type.getFields()).map(field => astFromField(field, schema, pathToDirectivesInExtensions)), + directives: getDirectiveNodes(type, schema, pathToDirectivesInExtensions), + }; + if ('getInterfaces' in type) { + node.interfaces = Object.values(type.getInterfaces()).map(iFace => astFromType(iFace)); + } + return node; +} +function astFromUnionType(type, schema, pathToDirectivesInExtensions) { + var _a, _b; + return { + kind: Kind.UNION_TYPE_DEFINITION, + description: (_b = (_a = type.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (type.description + ? { + kind: Kind.STRING, + value: type.description, + block: true, + } + : undefined), + name: { + kind: Kind.NAME, + value: type.name, + }, + // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility + directives: getDirectiveNodes(type, schema, pathToDirectivesInExtensions), + types: type.getTypes().map(type => astFromType(type)), + }; +} +function astFromInputObjectType(type, schema, pathToDirectivesInExtensions) { + var _a, _b; + return { + kind: Kind.INPUT_OBJECT_TYPE_DEFINITION, + description: (_b = (_a = type.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (type.description + ? { + kind: Kind.STRING, + value: type.description, + block: true, + } + : undefined), + name: { + kind: Kind.NAME, + value: type.name, + }, + fields: Object.values(type.getFields()).map(field => astFromInputField(field, schema, pathToDirectivesInExtensions)), + // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility + directives: getDirectiveNodes(type, schema, pathToDirectivesInExtensions), + }; +} +function astFromEnumType(type, schema, pathToDirectivesInExtensions) { + var _a, _b; + return { + kind: Kind.ENUM_TYPE_DEFINITION, + description: (_b = (_a = type.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (type.description + ? { + kind: Kind.STRING, + value: type.description, + block: true, + } + : undefined), + name: { + kind: Kind.NAME, + value: type.name, + }, + values: Object.values(type.getValues()).map(value => astFromEnumValue(value, schema, pathToDirectivesInExtensions)), + // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility + directives: getDirectiveNodes(type, schema, pathToDirectivesInExtensions), + }; +} +function astFromScalarType(type, schema, pathToDirectivesInExtensions) { + var _a, _b, _c; + const directivesInExtensions = getDirectivesInExtensions(type, pathToDirectivesInExtensions); + const directives = directivesInExtensions + ? makeDirectiveNodes(schema, directivesInExtensions) + : ((_a = type.astNode) === null || _a === void 0 ? void 0 : _a.directives) || []; + const specifiedByValue = (type['specifiedByUrl'] || type['specifiedByURL']); + if (specifiedByValue && !directives.some(directiveNode => directiveNode.name.value === 'specifiedBy')) { + const specifiedByArgs = { + url: specifiedByValue, + }; + directives.push(makeDirectiveNode('specifiedBy', specifiedByArgs)); + } + return { + kind: Kind.SCALAR_TYPE_DEFINITION, + description: (_c = (_b = type.astNode) === null || _b === void 0 ? void 0 : _b.description) !== null && _c !== void 0 ? _c : (type.description + ? { + kind: Kind.STRING, + value: type.description, + block: true, + } + : undefined), + name: { + kind: Kind.NAME, + value: type.name, + }, + // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility + directives: directives, + }; +} +function astFromField(field, schema, pathToDirectivesInExtensions) { + var _a, _b; + return { + kind: Kind.FIELD_DEFINITION, + description: (_b = (_a = field.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (field.description + ? { + kind: Kind.STRING, + value: field.description, + block: true, + } + : undefined), + name: { + kind: Kind.NAME, + value: field.name, + }, + arguments: field.args.map(arg => astFromArg(arg, schema, pathToDirectivesInExtensions)), + type: astFromType(field.type), + // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility + directives: getDeprecatableDirectiveNodes(field, schema, pathToDirectivesInExtensions), + }; +} +function astFromInputField(field, schema, pathToDirectivesInExtensions) { + var _a, _b, _c; + return { + kind: Kind.INPUT_VALUE_DEFINITION, + description: (_b = (_a = field.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (field.description + ? { + kind: Kind.STRING, + value: field.description, + block: true, + } + : undefined), + name: { + kind: Kind.NAME, + value: field.name, + }, + type: astFromType(field.type), + // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility + directives: getDeprecatableDirectiveNodes(field, schema, pathToDirectivesInExtensions), + defaultValue: (_c = astFromValue(field.defaultValue, field.type)) !== null && _c !== void 0 ? _c : undefined, + }; +} +function astFromEnumValue(value, schema, pathToDirectivesInExtensions) { + var _a, _b; + return { + kind: Kind.ENUM_VALUE_DEFINITION, + description: (_b = (_a = value.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (value.description + ? { + kind: Kind.STRING, + value: value.description, + block: true, + } + : undefined), + name: { + kind: Kind.NAME, + value: value.name, + }, + // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility + directives: getDeprecatableDirectiveNodes(value, schema, pathToDirectivesInExtensions), + }; +} +function makeDeprecatedDirective(deprecationReason) { + return makeDirectiveNode('deprecated', { reason: deprecationReason }, GraphQLDeprecatedDirective); +} +function makeDirectiveNode(name, args, directive) { + const directiveArguments = []; + if (directive != null) { + for (const arg of directive.args) { + const argName = arg.name; + const argValue = args[argName]; + if (argValue !== undefined) { + const value = astFromValue(argValue, arg.type); + if (value) { + directiveArguments.push({ + kind: Kind.ARGUMENT, + name: { + kind: Kind.NAME, + value: argName, + }, + value, + }); + } + } + } + } + else { + for (const argName in args) { + const argValue = args[argName]; + const value = astFromValueUntyped(argValue); + if (value) { + directiveArguments.push({ + kind: Kind.ARGUMENT, + name: { + kind: Kind.NAME, + value: argName, + }, + value, + }); + } + } + } + return { + kind: Kind.DIRECTIVE, + name: { + kind: Kind.NAME, + value: name, + }, + arguments: directiveArguments, + }; +} +function makeDirectiveNodes(schema, directiveValues) { + const directiveNodes = []; + for (const directiveName in directiveValues) { + const arrayOrSingleValue = directiveValues[directiveName]; + const directive = schema === null || schema === void 0 ? void 0 : schema.getDirective(directiveName); + if (Array.isArray(arrayOrSingleValue)) { + for (const value of arrayOrSingleValue) { + directiveNodes.push(makeDirectiveNode(directiveName, value, directive)); + } + } + else { + directiveNodes.push(makeDirectiveNode(directiveName, arrayOrSingleValue, directive)); + } + } + return directiveNodes; +} - return this.body.push(bytes) - }, +const MAX_LINE_LENGTH = 80; +let commentsRegistry = {}; +function resetComments() { + commentsRegistry = {}; +} +function collectComment(node) { + var _a; + const entityName = (_a = node.name) === null || _a === void 0 ? void 0 : _a.value; + if (entityName == null) { + return; + } + pushComment(node, entityName); + switch (node.kind) { + case 'EnumTypeDefinition': + if (node.values) { + for (const value of node.values) { + pushComment(value, entityName, value.name.value); + } + } + break; + case 'ObjectTypeDefinition': + case 'InputObjectTypeDefinition': + case 'InterfaceTypeDefinition': + if (node.fields) { + for (const field of node.fields) { + pushComment(field, entityName, field.name.value); + if (isFieldDefinitionNode(field) && field.arguments) { + for (const arg of field.arguments) { + pushComment(arg, entityName, field.name.value, arg.name.value); + } + } + } + } + break; + } +} +function pushComment(node, entity, field, argument) { + const comment = getComment(node); + if (typeof comment !== 'string' || comment.length === 0) { + return; + } + const keys = [entity]; + if (field) { + keys.push(field); + if (argument) { + keys.push(argument); + } + } + const path = keys.join('.'); + if (!commentsRegistry[path]) { + commentsRegistry[path] = []; + } + commentsRegistry[path].push(comment); +} +function printComment(comment) { + return '\n# ' + comment.replace(/\n/g, '\n# '); +} +/** + * Copyright (c) 2015-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +/** + * NOTE: ==> This file has been modified just to add comments to the printed AST + * This is a temp measure, we will move to using the original non modified printer.js ASAP. + */ +/** + * Given maybeArray, print an empty string if it is null or empty, otherwise + * print all items together separated by separator if provided + */ +function join(maybeArray, separator) { + return maybeArray ? maybeArray.filter(x => x).join(separator || '') : ''; +} +function hasMultilineItems(maybeArray) { + var _a; + return (_a = maybeArray === null || maybeArray === void 0 ? void 0 : maybeArray.some(str => str.includes('\n'))) !== null && _a !== void 0 ? _a : false; +} +function addDescription(cb) { + return (node, _key, _parent, path, ancestors) => { + var _a; + const keys = []; + const parent = path.reduce((prev, key) => { + if (['fields', 'arguments', 'values'].includes(key) && prev.name) { + keys.push(prev.name.value); + } + return prev[key]; + }, ancestors[0]); + const key = [...keys, (_a = parent === null || parent === void 0 ? void 0 : parent.name) === null || _a === void 0 ? void 0 : _a.value].filter(Boolean).join('.'); + const items = []; + if (node.kind.includes('Definition') && commentsRegistry[key]) { + items.push(...commentsRegistry[key]); + } + return join([...items.map(printComment), node.description, cb(node, _key, _parent, path, ancestors)], '\n'); + }; +} +function indent(maybeString) { + return maybeString && ` ${maybeString.replace(/\n/g, '\n ')}`; +} +/** + * Given array, print each item on its own line, wrapped in an + * indented "{ }" block. + */ +function block(array) { + return array && array.length !== 0 ? `{\n${indent(join(array, '\n'))}\n}` : ''; +} +/** + * If maybeString is not null or empty, then wrap with start and end, otherwise + * print an empty string. + */ +function wrap(start, maybeString, end) { + return maybeString ? start + maybeString + (end || '') : ''; +} +/** + * Print a block string in the indented block form by adding a leading and + * trailing blank line. However, if a block string starts with whitespace and is + * a single-line, adding a leading blank line would strip that whitespace. + */ +function printBlockString(value, isDescription = false) { + const escaped = value.replace(/"""/g, '\\"""'); + return (value[0] === ' ' || value[0] === '\t') && value.indexOf('\n') === -1 + ? `"""${escaped.replace(/"$/, '"\n')}"""` + : `"""\n${isDescription ? escaped : indent(escaped)}\n"""`; +} +const printDocASTReducer = { + Name: { leave: node => node.value }, + Variable: { leave: node => '$' + node.name }, + // Document + Document: { + leave: node => join(node.definitions, '\n\n'), + }, + OperationDefinition: { + leave: node => { + const varDefs = wrap('(', join(node.variableDefinitions, ', '), ')'); + const prefix = join([node.operation, join([node.name, varDefs]), join(node.directives, ' ')], ' '); + // the query short form. + return prefix + ' ' + node.selectionSet; + }, + }, + VariableDefinition: { + leave: ({ variable, type, defaultValue, directives }) => variable + ': ' + type + wrap(' = ', defaultValue) + wrap(' ', join(directives, ' ')), + }, + SelectionSet: { leave: ({ selections }) => block(selections) }, + Field: { + leave({ alias, name, arguments: args, directives, selectionSet }) { + const prefix = wrap('', alias, ': ') + name; + let argsLine = prefix + wrap('(', join(args, ', '), ')'); + if (argsLine.length > MAX_LINE_LENGTH) { + argsLine = prefix + wrap('(\n', indent(join(args, '\n')), '\n)'); + } + return join([argsLine, join(directives, ' '), selectionSet], ' '); + }, + }, + Argument: { leave: ({ name, value }) => name + ': ' + value }, + // Fragments + FragmentSpread: { + leave: ({ name, directives }) => '...' + name + wrap(' ', join(directives, ' ')), + }, + InlineFragment: { + leave: ({ typeCondition, directives, selectionSet }) => join(['...', wrap('on ', typeCondition), join(directives, ' '), selectionSet], ' '), + }, + FragmentDefinition: { + leave: ({ name, typeCondition, variableDefinitions, directives, selectionSet }) => + // Note: fragment variable definitions are experimental and may be changed + // or removed in the future. + `fragment ${name}${wrap('(', join(variableDefinitions, ', '), ')')} ` + + `on ${typeCondition} ${wrap('', join(directives, ' '), ' ')}` + + selectionSet, + }, + // Value + IntValue: { leave: ({ value }) => value }, + FloatValue: { leave: ({ value }) => value }, + StringValue: { + leave: ({ value, block: isBlockString }) => { + if (isBlockString) { + return printBlockString(value); + } + return JSON.stringify(value); + }, + }, + BooleanValue: { leave: ({ value }) => (value ? 'true' : 'false') }, + NullValue: { leave: () => 'null' }, + EnumValue: { leave: ({ value }) => value }, + ListValue: { leave: ({ values }) => '[' + join(values, ', ') + ']' }, + ObjectValue: { leave: ({ fields }) => '{' + join(fields, ', ') + '}' }, + ObjectField: { leave: ({ name, value }) => name + ': ' + value }, + // Directive + Directive: { + leave: ({ name, arguments: args }) => '@' + name + wrap('(', join(args, ', '), ')'), + }, + // Type + NamedType: { leave: ({ name }) => name }, + ListType: { leave: ({ type }) => '[' + type + ']' }, + NonNullType: { leave: ({ type }) => type + '!' }, + // Type System Definitions + SchemaDefinition: { + leave: ({ directives, operationTypes }) => join(['schema', join(directives, ' '), block(operationTypes)], ' '), + }, + OperationTypeDefinition: { + leave: ({ operation, type }) => operation + ': ' + type, + }, + ScalarTypeDefinition: { + leave: ({ name, directives }) => join(['scalar', name, join(directives, ' ')], ' '), + }, + ObjectTypeDefinition: { + leave: ({ name, interfaces, directives, fields }) => join(['type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' '), + }, + FieldDefinition: { + leave: ({ name, arguments: args, type, directives }) => name + + (hasMultilineItems(args) + ? wrap('(\n', indent(join(args, '\n')), '\n)') + : wrap('(', join(args, ', '), ')')) + + ': ' + + type + + wrap(' ', join(directives, ' ')), + }, + InputValueDefinition: { + leave: ({ name, type, defaultValue, directives }) => join([name + ': ' + type, wrap('= ', defaultValue), join(directives, ' ')], ' '), + }, + InterfaceTypeDefinition: { + leave: ({ name, interfaces, directives, fields }) => join(['interface', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' '), + }, + UnionTypeDefinition: { + leave: ({ name, directives, types }) => join(['union', name, join(directives, ' '), wrap('= ', join(types, ' | '))], ' '), + }, + EnumTypeDefinition: { + leave: ({ name, directives, values }) => join(['enum', name, join(directives, ' '), block(values)], ' '), + }, + EnumValueDefinition: { + leave: ({ name, directives }) => join([name, join(directives, ' ')], ' '), + }, + InputObjectTypeDefinition: { + leave: ({ name, directives, fields }) => join(['input', name, join(directives, ' '), block(fields)], ' '), + }, + DirectiveDefinition: { + leave: ({ name, arguments: args, repeatable, locations }) => 'directive @' + + name + + (hasMultilineItems(args) + ? wrap('(\n', indent(join(args, '\n')), '\n)') + : wrap('(', join(args, ', '), ')')) + + (repeatable ? ' repeatable' : '') + + ' on ' + + join(locations, ' | '), + }, + SchemaExtension: { + leave: ({ directives, operationTypes }) => join(['extend schema', join(directives, ' '), block(operationTypes)], ' '), + }, + ScalarTypeExtension: { + leave: ({ name, directives }) => join(['extend scalar', name, join(directives, ' ')], ' '), + }, + ObjectTypeExtension: { + leave: ({ name, interfaces, directives, fields }) => join(['extend type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' '), + }, + InterfaceTypeExtension: { + leave: ({ name, interfaces, directives, fields }) => join(['extend interface', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' '), + }, + UnionTypeExtension: { + leave: ({ name, directives, types }) => join(['extend union', name, join(directives, ' '), wrap('= ', join(types, ' | '))], ' '), + }, + EnumTypeExtension: { + leave: ({ name, directives, values }) => join(['extend enum', name, join(directives, ' '), block(values)], ' '), + }, + InputObjectTypeExtension: { + leave: ({ name, directives, fields }) => join(['extend input', name, join(directives, ' '), block(fields)], ' '), + }, +}; +const printDocASTReducerWithComments = Object.keys(printDocASTReducer).reduce((prev, key) => ({ + ...prev, + [key]: { + leave: addDescription(printDocASTReducer[key].leave), + }, +}), {}); +/** + * Converts an AST into a string, using one set of reasonable + * formatting rules. + */ +function printWithComments(ast) { + return visit(ast, printDocASTReducerWithComments); +} +function isFieldDefinitionNode(node) { + return node.kind === 'FieldDefinition'; +} +function getComment(node) { + const rawValue = getLeadingCommentBlock(node); + if (rawValue !== undefined) { + return dedentBlockStringValue(`\n${rawValue}`); + } +} +function getLeadingCommentBlock(node) { + const loc = node.loc; + if (!loc) { + return; + } + const comments = []; + let token = loc.startToken.prev; + while (token != null && + token.kind === TokenKind.COMMENT && + token.next != null && + token.prev != null && + token.line + 1 === token.next.line && + token.line !== token.prev.line) { + const value = String(token.value); + comments.push(value); + token = token.prev; + } + return comments.length > 0 ? comments.reverse().join('\n') : undefined; +} +function dedentBlockStringValue(rawString) { + // Expand a block string's raw value into independent lines. + const lines = rawString.split(/\r\n|[\n\r]/g); + // Remove common indentation from all lines but first. + const commonIndent = getBlockStringIndentation(lines); + if (commonIndent !== 0) { + for (let i = 1; i < lines.length; i++) { + lines[i] = lines[i].slice(commonIndent); + } + } + // Remove leading and trailing blank lines. + while (lines.length > 0 && isBlank(lines[0])) { + lines.shift(); + } + while (lines.length > 0 && isBlank(lines[lines.length - 1])) { + lines.pop(); + } + // Return a string of the lines joined with U+000A. + return lines.join('\n'); +} +/** + * @internal + */ +function getBlockStringIndentation(lines) { + let commonIndent = null; + for (let i = 1; i < lines.length; i++) { + const line = lines[i]; + const indent = leadingWhitespace(line); + if (indent === line.length) { + continue; // skip empty lines + } + if (commonIndent === null || indent < commonIndent) { + commonIndent = indent; + if (commonIndent === 0) { + break; + } + } + } + return commonIndent === null ? 0 : commonIndent; +} +function leadingWhitespace(str) { + let i = 0; + while (i < str.length && (str[i] === ' ' || str[i] === '\t')) { + i++; + } + return i; +} +function isBlank(str) { + return leadingWhitespace(str) === str.length; +} - onComplete () { - if (this.abort) { - fetchParams.controller.off('terminated', this.abort); - } +var DirectiveLocation; +(function (DirectiveLocation) { + /** Request Definitions */ + DirectiveLocation["QUERY"] = "QUERY"; + DirectiveLocation["MUTATION"] = "MUTATION"; + DirectiveLocation["SUBSCRIPTION"] = "SUBSCRIPTION"; + DirectiveLocation["FIELD"] = "FIELD"; + DirectiveLocation["FRAGMENT_DEFINITION"] = "FRAGMENT_DEFINITION"; + DirectiveLocation["FRAGMENT_SPREAD"] = "FRAGMENT_SPREAD"; + DirectiveLocation["INLINE_FRAGMENT"] = "INLINE_FRAGMENT"; + DirectiveLocation["VARIABLE_DEFINITION"] = "VARIABLE_DEFINITION"; + /** Type System Definitions */ + DirectiveLocation["SCHEMA"] = "SCHEMA"; + DirectiveLocation["SCALAR"] = "SCALAR"; + DirectiveLocation["OBJECT"] = "OBJECT"; + DirectiveLocation["FIELD_DEFINITION"] = "FIELD_DEFINITION"; + DirectiveLocation["ARGUMENT_DEFINITION"] = "ARGUMENT_DEFINITION"; + DirectiveLocation["INTERFACE"] = "INTERFACE"; + DirectiveLocation["UNION"] = "UNION"; + DirectiveLocation["ENUM"] = "ENUM"; + DirectiveLocation["ENUM_VALUE"] = "ENUM_VALUE"; + DirectiveLocation["INPUT_OBJECT"] = "INPUT_OBJECT"; + DirectiveLocation["INPUT_FIELD_DEFINITION"] = "INPUT_FIELD_DEFINITION"; +})(DirectiveLocation || (DirectiveLocation = {})); - fetchParams.controller.ended = true; +var MapperKind; +(function (MapperKind) { + MapperKind["TYPE"] = "MapperKind.TYPE"; + MapperKind["SCALAR_TYPE"] = "MapperKind.SCALAR_TYPE"; + MapperKind["ENUM_TYPE"] = "MapperKind.ENUM_TYPE"; + MapperKind["COMPOSITE_TYPE"] = "MapperKind.COMPOSITE_TYPE"; + MapperKind["OBJECT_TYPE"] = "MapperKind.OBJECT_TYPE"; + MapperKind["INPUT_OBJECT_TYPE"] = "MapperKind.INPUT_OBJECT_TYPE"; + MapperKind["ABSTRACT_TYPE"] = "MapperKind.ABSTRACT_TYPE"; + MapperKind["UNION_TYPE"] = "MapperKind.UNION_TYPE"; + MapperKind["INTERFACE_TYPE"] = "MapperKind.INTERFACE_TYPE"; + MapperKind["ROOT_OBJECT"] = "MapperKind.ROOT_OBJECT"; + MapperKind["QUERY"] = "MapperKind.QUERY"; + MapperKind["MUTATION"] = "MapperKind.MUTATION"; + MapperKind["SUBSCRIPTION"] = "MapperKind.SUBSCRIPTION"; + MapperKind["DIRECTIVE"] = "MapperKind.DIRECTIVE"; + MapperKind["FIELD"] = "MapperKind.FIELD"; + MapperKind["COMPOSITE_FIELD"] = "MapperKind.COMPOSITE_FIELD"; + MapperKind["OBJECT_FIELD"] = "MapperKind.OBJECT_FIELD"; + MapperKind["ROOT_FIELD"] = "MapperKind.ROOT_FIELD"; + MapperKind["QUERY_ROOT_FIELD"] = "MapperKind.QUERY_ROOT_FIELD"; + MapperKind["MUTATION_ROOT_FIELD"] = "MapperKind.MUTATION_ROOT_FIELD"; + MapperKind["SUBSCRIPTION_ROOT_FIELD"] = "MapperKind.SUBSCRIPTION_ROOT_FIELD"; + MapperKind["INTERFACE_FIELD"] = "MapperKind.INTERFACE_FIELD"; + MapperKind["INPUT_OBJECT_FIELD"] = "MapperKind.INPUT_OBJECT_FIELD"; + MapperKind["ARGUMENT"] = "MapperKind.ARGUMENT"; + MapperKind["ENUM_VALUE"] = "MapperKind.ENUM_VALUE"; +})(MapperKind || (MapperKind = {})); - this.body.push(null); - }, +function getObjectTypeFromTypeMap(typeMap, type) { + if (type) { + const maybeObjectType = typeMap[type.name]; + if (isObjectType(maybeObjectType)) { + return maybeObjectType; + } + } +} - onError (error) { - if (this.abort) { - fetchParams.controller.off('terminated', this.abort); - } +function isNamedStub(type) { + if ('getFields' in type) { + const fields = type.getFields(); + // eslint-disable-next-line no-unreachable-loop + for (const fieldName in fields) { + const field = fields[fieldName]; + return field.name === '_fake'; + } + } + return false; +} +function getBuiltInForStub(type) { + switch (type.name) { + case GraphQLInt.name: + return GraphQLInt; + case GraphQLFloat.name: + return GraphQLFloat; + case GraphQLString.name: + return GraphQLString; + case GraphQLBoolean.name: + return GraphQLBoolean; + case GraphQLID.name: + return GraphQLID; + default: + return type; + } +} - this.body?.destroy(error); +function rewireTypes(originalTypeMap, directives) { + const referenceTypeMap = Object.create(null); + for (const typeName in originalTypeMap) { + referenceTypeMap[typeName] = originalTypeMap[typeName]; + } + const newTypeMap = Object.create(null); + for (const typeName in referenceTypeMap) { + const namedType = referenceTypeMap[typeName]; + if (namedType == null || typeName.startsWith('__')) { + continue; + } + const newName = namedType.name; + if (newName.startsWith('__')) { + continue; + } + if (newTypeMap[newName] != null) { + console.warn(`Duplicate schema type name ${newName} found; keeping the existing one found in the schema`); + continue; + } + newTypeMap[newName] = namedType; + } + for (const typeName in newTypeMap) { + newTypeMap[typeName] = rewireNamedType(newTypeMap[typeName]); + } + const newDirectives = directives.map(directive => rewireDirective(directive)); + return { + typeMap: newTypeMap, + directives: newDirectives, + }; + function rewireDirective(directive) { + if (isSpecifiedDirective(directive)) { + return directive; + } + const directiveConfig = directive.toConfig(); + directiveConfig.args = rewireArgs(directiveConfig.args); + return new GraphQLDirective(directiveConfig); + } + function rewireArgs(args) { + const rewiredArgs = {}; + for (const argName in args) { + const arg = args[argName]; + const rewiredArgType = rewireType(arg.type); + if (rewiredArgType != null) { + arg.type = rewiredArgType; + rewiredArgs[argName] = arg; + } + } + return rewiredArgs; + } + function rewireNamedType(type) { + if (isObjectType(type)) { + const config = type.toConfig(); + const newConfig = { + ...config, + fields: () => rewireFields(config.fields), + interfaces: () => rewireNamedTypes(config.interfaces), + }; + return new GraphQLObjectType(newConfig); + } + else if (isInterfaceType(type)) { + const config = type.toConfig(); + const newConfig = { + ...config, + fields: () => rewireFields(config.fields), + }; + if ('interfaces' in newConfig) { + newConfig.interfaces = () => rewireNamedTypes(config.interfaces); + } + return new GraphQLInterfaceType(newConfig); + } + else if (isUnionType(type)) { + const config = type.toConfig(); + const newConfig = { + ...config, + types: () => rewireNamedTypes(config.types), + }; + return new GraphQLUnionType(newConfig); + } + else if (isInputObjectType(type)) { + const config = type.toConfig(); + const newConfig = { + ...config, + fields: () => rewireInputFields(config.fields), + }; + return new GraphQLInputObjectType(newConfig); + } + else if (isEnumType(type)) { + const enumConfig = type.toConfig(); + return new GraphQLEnumType(enumConfig); + } + else if (isScalarType(type)) { + if (isSpecifiedScalarType(type)) { + return type; + } + const scalarConfig = type.toConfig(); + return new GraphQLScalarType(scalarConfig); + } + throw new Error(`Unexpected schema type: ${type}`); + } + function rewireFields(fields) { + const rewiredFields = {}; + for (const fieldName in fields) { + const field = fields[fieldName]; + const rewiredFieldType = rewireType(field.type); + if (rewiredFieldType != null && field.args) { + field.type = rewiredFieldType; + field.args = rewireArgs(field.args); + rewiredFields[fieldName] = field; + } + } + return rewiredFields; + } + function rewireInputFields(fields) { + const rewiredFields = {}; + for (const fieldName in fields) { + const field = fields[fieldName]; + const rewiredFieldType = rewireType(field.type); + if (rewiredFieldType != null) { + field.type = rewiredFieldType; + rewiredFields[fieldName] = field; + } + } + return rewiredFields; + } + function rewireNamedTypes(namedTypes) { + const rewiredTypes = []; + for (const namedType of namedTypes) { + const rewiredType = rewireType(namedType); + if (rewiredType != null) { + rewiredTypes.push(rewiredType); + } + } + return rewiredTypes; + } + function rewireType(type) { + if (isListType(type)) { + const rewiredType = rewireType(type.ofType); + return rewiredType != null ? new GraphQLList(rewiredType) : null; + } + else if (isNonNullType(type)) { + const rewiredType = rewireType(type.ofType); + return rewiredType != null ? new GraphQLNonNull(rewiredType) : null; + } + else if (isNamedType(type)) { + let rewiredType = referenceTypeMap[type.name]; + if (rewiredType === undefined) { + rewiredType = isNamedStub(type) ? getBuiltInForStub(type) : rewireNamedType(type); + newTypeMap[rewiredType.name] = referenceTypeMap[type.name] = rewiredType; + } + return rewiredType != null ? newTypeMap[rewiredType.name] : null; + } + return null; + } +} - fetchParams.controller.terminate(error); +function transformInputValue(type, value, inputLeafValueTransformer = null, inputObjectValueTransformer = null) { + if (value == null) { + return value; + } + const nullableType = getNullableType(type); + if (isLeafType(nullableType)) { + return inputLeafValueTransformer != null ? inputLeafValueTransformer(nullableType, value) : value; + } + else if (isListType(nullableType)) { + return value.map((listMember) => transformInputValue(nullableType.ofType, listMember, inputLeafValueTransformer, inputObjectValueTransformer)); + } + else if (isInputObjectType(nullableType)) { + const fields = nullableType.getFields(); + const newValue = {}; + for (const key in value) { + const field = fields[key]; + if (field != null) { + newValue[key] = transformInputValue(field.type, value[key], inputLeafValueTransformer, inputObjectValueTransformer); + } + } + return inputObjectValueTransformer != null ? inputObjectValueTransformer(nullableType, newValue) : newValue; + } + // unreachable, no other possible return value +} +function serializeInputValue(type, value) { + return transformInputValue(type, value, (t, v) => { + try { + return t.serialize(v); + } + catch (_a) { + return v; + } + }); +} +function parseInputValue(type, value) { + return transformInputValue(type, value, (t, v) => { + try { + return t.parseValue(v); + } + catch (_a) { + return v; + } + }); +} - reject(error); - } - } - )) - } - } +function mapSchema(schema, schemaMapper = {}) { + const newTypeMap = mapArguments(mapFields(mapTypes(mapDefaultValues(mapEnumValues(mapTypes(mapDefaultValues(schema.getTypeMap(), schema, serializeInputValue), schema, schemaMapper, type => isLeafType(type)), schema, schemaMapper), schema, parseInputValue), schema, schemaMapper, type => !isLeafType(type)), schema, schemaMapper), schema, schemaMapper); + const originalDirectives = schema.getDirectives(); + const newDirectives = mapDirectives(originalDirectives, schema, schemaMapper); + const { typeMap, directives } = rewireTypes(newTypeMap, newDirectives); + return new GraphQLSchema({ + ...schema.toConfig(), + query: getObjectTypeFromTypeMap(typeMap, getObjectTypeFromTypeMap(newTypeMap, schema.getQueryType())), + mutation: getObjectTypeFromTypeMap(typeMap, getObjectTypeFromTypeMap(newTypeMap, schema.getMutationType())), + subscription: getObjectTypeFromTypeMap(typeMap, getObjectTypeFromTypeMap(newTypeMap, schema.getSubscriptionType())), + types: Object.values(typeMap), + directives, + }); +} +function mapTypes(originalTypeMap, schema, schemaMapper, testFn = () => true) { + const newTypeMap = {}; + for (const typeName in originalTypeMap) { + if (!typeName.startsWith('__')) { + const originalType = originalTypeMap[typeName]; + if (originalType == null || !testFn(originalType)) { + newTypeMap[typeName] = originalType; + continue; + } + const typeMapper = getTypeMapper(schema, schemaMapper, typeName); + if (typeMapper == null) { + newTypeMap[typeName] = originalType; + continue; + } + const maybeNewType = typeMapper(originalType, schema); + if (maybeNewType === undefined) { + newTypeMap[typeName] = originalType; + continue; + } + newTypeMap[typeName] = maybeNewType; + } + } + return newTypeMap; +} +function mapEnumValues(originalTypeMap, schema, schemaMapper) { + const enumValueMapper = getEnumValueMapper(schemaMapper); + if (!enumValueMapper) { + return originalTypeMap; + } + return mapTypes(originalTypeMap, schema, { + [MapperKind.ENUM_TYPE]: type => { + const config = type.toConfig(); + const originalEnumValueConfigMap = config.values; + const newEnumValueConfigMap = {}; + for (const externalValue in originalEnumValueConfigMap) { + const originalEnumValueConfig = originalEnumValueConfigMap[externalValue]; + const mappedEnumValue = enumValueMapper(originalEnumValueConfig, type.name, schema, externalValue); + if (mappedEnumValue === undefined) { + newEnumValueConfigMap[externalValue] = originalEnumValueConfig; + } + else if (Array.isArray(mappedEnumValue)) { + const [newExternalValue, newEnumValueConfig] = mappedEnumValue; + newEnumValueConfigMap[newExternalValue] = + newEnumValueConfig === undefined ? originalEnumValueConfig : newEnumValueConfig; + } + else if (mappedEnumValue !== null) { + newEnumValueConfigMap[externalValue] = mappedEnumValue; + } + } + return correctASTNodes(new GraphQLEnumType({ + ...config, + values: newEnumValueConfigMap, + })); + }, + }, type => isEnumType(type)); +} +function mapDefaultValues(originalTypeMap, schema, fn) { + const newTypeMap = mapArguments(originalTypeMap, schema, { + [MapperKind.ARGUMENT]: argumentConfig => { + if (argumentConfig.defaultValue === undefined) { + return argumentConfig; + } + const maybeNewType = getNewType(originalTypeMap, argumentConfig.type); + if (maybeNewType != null) { + return { + ...argumentConfig, + defaultValue: fn(maybeNewType, argumentConfig.defaultValue), + }; + } + }, + }); + return mapFields(newTypeMap, schema, { + [MapperKind.INPUT_OBJECT_FIELD]: inputFieldConfig => { + if (inputFieldConfig.defaultValue === undefined) { + return inputFieldConfig; + } + const maybeNewType = getNewType(newTypeMap, inputFieldConfig.type); + if (maybeNewType != null) { + return { + ...inputFieldConfig, + defaultValue: fn(maybeNewType, inputFieldConfig.defaultValue), + }; + } + }, + }); +} +function getNewType(newTypeMap, type) { + if (isListType(type)) { + const newType = getNewType(newTypeMap, type.ofType); + return newType != null ? new GraphQLList(newType) : null; + } + else if (isNonNullType(type)) { + const newType = getNewType(newTypeMap, type.ofType); + return newType != null ? new GraphQLNonNull(newType) : null; + } + else if (isNamedType(type)) { + const newType = newTypeMap[type.name]; + return newType != null ? newType : null; + } + return null; +} +function mapFields(originalTypeMap, schema, schemaMapper) { + const newTypeMap = {}; + for (const typeName in originalTypeMap) { + if (!typeName.startsWith('__')) { + const originalType = originalTypeMap[typeName]; + if (!isObjectType(originalType) && !isInterfaceType(originalType) && !isInputObjectType(originalType)) { + newTypeMap[typeName] = originalType; + continue; + } + const fieldMapper = getFieldMapper(schema, schemaMapper, typeName); + if (fieldMapper == null) { + newTypeMap[typeName] = originalType; + continue; + } + const config = originalType.toConfig(); + const originalFieldConfigMap = config.fields; + const newFieldConfigMap = {}; + for (const fieldName in originalFieldConfigMap) { + const originalFieldConfig = originalFieldConfigMap[fieldName]; + const mappedField = fieldMapper(originalFieldConfig, fieldName, typeName, schema); + if (mappedField === undefined) { + newFieldConfigMap[fieldName] = originalFieldConfig; + } + else if (Array.isArray(mappedField)) { + const [newFieldName, newFieldConfig] = mappedField; + if (newFieldConfig.astNode != null) { + newFieldConfig.astNode = { + ...newFieldConfig.astNode, + name: { + ...newFieldConfig.astNode.name, + value: newFieldName, + }, + }; + } + newFieldConfigMap[newFieldName] = newFieldConfig === undefined ? originalFieldConfig : newFieldConfig; + } + else if (mappedField !== null) { + newFieldConfigMap[fieldName] = mappedField; + } + } + if (isObjectType(originalType)) { + newTypeMap[typeName] = correctASTNodes(new GraphQLObjectType({ + ...config, + fields: newFieldConfigMap, + })); + } + else if (isInterfaceType(originalType)) { + newTypeMap[typeName] = correctASTNodes(new GraphQLInterfaceType({ + ...config, + fields: newFieldConfigMap, + })); + } + else { + newTypeMap[typeName] = correctASTNodes(new GraphQLInputObjectType({ + ...config, + fields: newFieldConfigMap, + })); + } + } + } + return newTypeMap; +} +function mapArguments(originalTypeMap, schema, schemaMapper) { + const newTypeMap = {}; + for (const typeName in originalTypeMap) { + if (!typeName.startsWith('__')) { + const originalType = originalTypeMap[typeName]; + if (!isObjectType(originalType) && !isInterfaceType(originalType)) { + newTypeMap[typeName] = originalType; + continue; + } + const argumentMapper = getArgumentMapper(schemaMapper); + if (argumentMapper == null) { + newTypeMap[typeName] = originalType; + continue; + } + const config = originalType.toConfig(); + const originalFieldConfigMap = config.fields; + const newFieldConfigMap = {}; + for (const fieldName in originalFieldConfigMap) { + const originalFieldConfig = originalFieldConfigMap[fieldName]; + const originalArgumentConfigMap = originalFieldConfig.args; + if (originalArgumentConfigMap == null) { + newFieldConfigMap[fieldName] = originalFieldConfig; + continue; + } + const argumentNames = Object.keys(originalArgumentConfigMap); + if (!argumentNames.length) { + newFieldConfigMap[fieldName] = originalFieldConfig; + continue; + } + const newArgumentConfigMap = {}; + for (const argumentName of argumentNames) { + const originalArgumentConfig = originalArgumentConfigMap[argumentName]; + const mappedArgument = argumentMapper(originalArgumentConfig, fieldName, typeName, schema); + if (mappedArgument === undefined) { + newArgumentConfigMap[argumentName] = originalArgumentConfig; + } + else if (Array.isArray(mappedArgument)) { + const [newArgumentName, newArgumentConfig] = mappedArgument; + newArgumentConfigMap[newArgumentName] = newArgumentConfig; + } + else if (mappedArgument !== null) { + newArgumentConfigMap[argumentName] = mappedArgument; + } + } + newFieldConfigMap[fieldName] = { + ...originalFieldConfig, + args: newArgumentConfigMap, + }; + } + if (isObjectType(originalType)) { + newTypeMap[typeName] = new GraphQLObjectType({ + ...config, + fields: newFieldConfigMap, + }); + } + else if (isInterfaceType(originalType)) { + newTypeMap[typeName] = new GraphQLInterfaceType({ + ...config, + fields: newFieldConfigMap, + }); + } + else { + newTypeMap[typeName] = new GraphQLInputObjectType({ + ...config, + fields: newFieldConfigMap, + }); + } + } + } + return newTypeMap; +} +function mapDirectives(originalDirectives, schema, schemaMapper) { + const directiveMapper = getDirectiveMapper(schemaMapper); + if (directiveMapper == null) { + return originalDirectives.slice(); + } + const newDirectives = []; + for (const directive of originalDirectives) { + const mappedDirective = directiveMapper(directive, schema); + if (mappedDirective === undefined) { + newDirectives.push(directive); + } + else if (mappedDirective !== null) { + newDirectives.push(mappedDirective); + } + } + return newDirectives; +} +function getTypeSpecifiers(schema, typeName) { + var _a, _b, _c; + const type = schema.getType(typeName); + const specifiers = [MapperKind.TYPE]; + if (isObjectType(type)) { + specifiers.push(MapperKind.COMPOSITE_TYPE, MapperKind.OBJECT_TYPE); + if (typeName === ((_a = schema.getQueryType()) === null || _a === void 0 ? void 0 : _a.name)) { + specifiers.push(MapperKind.ROOT_OBJECT, MapperKind.QUERY); + } + else if (typeName === ((_b = schema.getMutationType()) === null || _b === void 0 ? void 0 : _b.name)) { + specifiers.push(MapperKind.ROOT_OBJECT, MapperKind.MUTATION); + } + else if (typeName === ((_c = schema.getSubscriptionType()) === null || _c === void 0 ? void 0 : _c.name)) { + specifiers.push(MapperKind.ROOT_OBJECT, MapperKind.SUBSCRIPTION); + } + } + else if (isInputObjectType(type)) { + specifiers.push(MapperKind.INPUT_OBJECT_TYPE); + } + else if (isInterfaceType(type)) { + specifiers.push(MapperKind.COMPOSITE_TYPE, MapperKind.ABSTRACT_TYPE, MapperKind.INTERFACE_TYPE); + } + else if (isUnionType(type)) { + specifiers.push(MapperKind.COMPOSITE_TYPE, MapperKind.ABSTRACT_TYPE, MapperKind.UNION_TYPE); + } + else if (isEnumType(type)) { + specifiers.push(MapperKind.ENUM_TYPE); + } + else if (isScalarType(type)) { + specifiers.push(MapperKind.SCALAR_TYPE); + } + return specifiers; +} +function getTypeMapper(schema, schemaMapper, typeName) { + const specifiers = getTypeSpecifiers(schema, typeName); + let typeMapper; + const stack = [...specifiers]; + while (!typeMapper && stack.length > 0) { + // It is safe to use the ! operator here as we check the length. + const next = stack.pop(); + typeMapper = schemaMapper[next]; + } + return typeMapper != null ? typeMapper : null; +} +function getFieldSpecifiers(schema, typeName) { + var _a, _b, _c; + const type = schema.getType(typeName); + const specifiers = [MapperKind.FIELD]; + if (isObjectType(type)) { + specifiers.push(MapperKind.COMPOSITE_FIELD, MapperKind.OBJECT_FIELD); + if (typeName === ((_a = schema.getQueryType()) === null || _a === void 0 ? void 0 : _a.name)) { + specifiers.push(MapperKind.ROOT_FIELD, MapperKind.QUERY_ROOT_FIELD); + } + else if (typeName === ((_b = schema.getMutationType()) === null || _b === void 0 ? void 0 : _b.name)) { + specifiers.push(MapperKind.ROOT_FIELD, MapperKind.MUTATION_ROOT_FIELD); + } + else if (typeName === ((_c = schema.getSubscriptionType()) === null || _c === void 0 ? void 0 : _c.name)) { + specifiers.push(MapperKind.ROOT_FIELD, MapperKind.SUBSCRIPTION_ROOT_FIELD); + } + } + else if (isInterfaceType(type)) { + specifiers.push(MapperKind.COMPOSITE_FIELD, MapperKind.INTERFACE_FIELD); + } + else if (isInputObjectType(type)) { + specifiers.push(MapperKind.INPUT_OBJECT_FIELD); + } + return specifiers; +} +function getFieldMapper(schema, schemaMapper, typeName) { + const specifiers = getFieldSpecifiers(schema, typeName); + let fieldMapper; + const stack = [...specifiers]; + while (!fieldMapper && stack.length > 0) { + // It is safe to use the ! operator here as we check the length. + const next = stack.pop(); + // TODO: fix this as unknown cast + fieldMapper = schemaMapper[next]; + } + return fieldMapper !== null && fieldMapper !== void 0 ? fieldMapper : null; +} +function getArgumentMapper(schemaMapper) { + const argumentMapper = schemaMapper[MapperKind.ARGUMENT]; + return argumentMapper != null ? argumentMapper : null; +} +function getDirectiveMapper(schemaMapper) { + const directiveMapper = schemaMapper[MapperKind.DIRECTIVE]; + return directiveMapper != null ? directiveMapper : null; +} +function getEnumValueMapper(schemaMapper) { + const enumValueMapper = schemaMapper[MapperKind.ENUM_VALUE]; + return enumValueMapper != null ? enumValueMapper : null; +} +function correctASTNodes(type) { + if (isObjectType(type)) { + const config = type.toConfig(); + if (config.astNode != null) { + const fields = []; + for (const fieldName in config.fields) { + const fieldConfig = config.fields[fieldName]; + if (fieldConfig.astNode != null) { + fields.push(fieldConfig.astNode); + } + } + config.astNode = { + ...config.astNode, + kind: Kind.OBJECT_TYPE_DEFINITION, + fields, + }; + } + if (config.extensionASTNodes != null) { + config.extensionASTNodes = config.extensionASTNodes.map(node => ({ + ...node, + kind: Kind.OBJECT_TYPE_EXTENSION, + fields: undefined, + })); + } + return new GraphQLObjectType(config); + } + else if (isInterfaceType(type)) { + const config = type.toConfig(); + if (config.astNode != null) { + const fields = []; + for (const fieldName in config.fields) { + const fieldConfig = config.fields[fieldName]; + if (fieldConfig.astNode != null) { + fields.push(fieldConfig.astNode); + } + } + config.astNode = { + ...config.astNode, + kind: Kind.INTERFACE_TYPE_DEFINITION, + fields, + }; + } + if (config.extensionASTNodes != null) { + config.extensionASTNodes = config.extensionASTNodes.map(node => ({ + ...node, + kind: Kind.INTERFACE_TYPE_EXTENSION, + fields: undefined, + })); + } + return new GraphQLInterfaceType(config); + } + else if (isInputObjectType(type)) { + const config = type.toConfig(); + if (config.astNode != null) { + const fields = []; + for (const fieldName in config.fields) { + const fieldConfig = config.fields[fieldName]; + if (fieldConfig.astNode != null) { + fields.push(fieldConfig.astNode); + } + } + config.astNode = { + ...config.astNode, + kind: Kind.INPUT_OBJECT_TYPE_DEFINITION, + fields, + }; + } + if (config.extensionASTNodes != null) { + config.extensionASTNodes = config.extensionASTNodes.map(node => ({ + ...node, + kind: Kind.INPUT_OBJECT_TYPE_EXTENSION, + fields: undefined, + })); + } + return new GraphQLInputObjectType(config); + } + else if (isEnumType(type)) { + const config = type.toConfig(); + if (config.astNode != null) { + const values = []; + for (const enumKey in config.values) { + const enumValueConfig = config.values[enumKey]; + if (enumValueConfig.astNode != null) { + values.push(enumValueConfig.astNode); + } + } + config.astNode = { + ...config.astNode, + values, + }; + } + if (config.extensionASTNodes != null) { + config.extensionASTNodes = config.extensionASTNodes.map(node => ({ + ...node, + values: undefined, + })); + } + return new GraphQLEnumType(config); + } + else { + return type; + } +} - fetch_1 = fetch; - return fetch_1; -} - -var hasRequiredUndici; - -function requireUndici () { - if (hasRequiredUndici) return undici; - hasRequiredUndici = 1; - - const Client = requireClient(); - const Dispatcher = requireDispatcher(); - const errors = requireErrors(); - const Pool = requirePool(); - const BalancedPool = requireBalancedPool(); - const Agent = requireAgent(); - const util = requireUtil$1(); - const { InvalidArgumentError } = errors; - const api = requireApi(); - const buildConnector = requireConnect(); - const MockClient = requireMockClient(); - const MockAgent = requireMockAgent(); - const MockPool = requireMockPool(); - const mockErrors = requireMockErrors(); - const ProxyAgent = requireProxyAgent(); - const { getGlobalDispatcher, setGlobalDispatcher } = requireGlobal(); - - const nodeVersion = process.versions.node.split('.'); - const nodeMajor = Number(nodeVersion[0]); - const nodeMinor = Number(nodeVersion[1]); - - Object.assign(Dispatcher.prototype, api); - - undici.Dispatcher = Dispatcher; - undici.Client = Client; - undici.Pool = Pool; - undici.BalancedPool = BalancedPool; - undici.Agent = Agent; - undici.ProxyAgent = ProxyAgent; - - undici.buildConnector = buildConnector; - undici.errors = errors; - - function makeDispatcher (fn) { - return (url, opts, handler) => { - if (typeof opts === 'function') { - handler = opts; - opts = null; - } +// Update any references to named schema types that disagree with the named +// types found in schema.getTypeMap(). +// +// healSchema and its callers (visitSchema/visitSchemaDirectives) all modify the schema in place. +// Therefore, private variables (such as the stored implementation map and the proper root types) +// are not updated. +// +// If this causes issues, the schema could be more aggressively healed as follows: +// +// healSchema(schema); +// const config = schema.toConfig() +// const healedSchema = new GraphQLSchema({ +// ...config, +// query: schema.getType(''), +// mutation: schema.getType(''), +// subscription: schema.getType(''), +// }); +// +// One can then also -- if necessary -- assign the correct private variables to the initial schema +// as follows: +// Object.assign(schema, healedSchema); +// +// These steps are not taken automatically to preserve backwards compatibility with graphql-tools v4. +// See https://github.com/ardatan/graphql-tools/issues/1462 +// +// They were briefly taken in v5, but can now be phased out as they were only required when other +// areas of the codebase were using healSchema and visitSchema more extensively. +// +function healSchema(schema) { + healTypes(schema.getTypeMap(), schema.getDirectives()); + return schema; +} +function healTypes(originalTypeMap, directives) { + const actualNamedTypeMap = Object.create(null); + // If any of the .name properties of the GraphQLNamedType objects in + // schema.getTypeMap() have changed, the keys of the type map need to + // be updated accordingly. + for (const typeName in originalTypeMap) { + const namedType = originalTypeMap[typeName]; + if (namedType == null || typeName.startsWith('__')) { + continue; + } + const actualName = namedType.name; + if (actualName.startsWith('__')) { + continue; + } + if (actualNamedTypeMap[actualName] != null) { + console.warn(`Duplicate schema type name ${actualName} found; keeping the existing one found in the schema`); + continue; + } + actualNamedTypeMap[actualName] = namedType; + // Note: we are deliberately leaving namedType in the schema by its + // original name (which might be different from actualName), so that + // references by that name can be healed. + } + // Now add back every named type by its actual name. + for (const typeName in actualNamedTypeMap) { + const namedType = actualNamedTypeMap[typeName]; + originalTypeMap[typeName] = namedType; + } + // Directive declaration argument types can refer to named types. + for (const decl of directives) { + decl.args = decl.args.filter(arg => { + arg.type = healType(arg.type); + return arg.type !== null; + }); + } + for (const typeName in originalTypeMap) { + const namedType = originalTypeMap[typeName]; + // Heal all named types, except for dangling references, kept only to redirect. + if (!typeName.startsWith('__') && typeName in actualNamedTypeMap) { + if (namedType != null) { + healNamedType(namedType); + } + } + } + for (const typeName in originalTypeMap) { + if (!typeName.startsWith('__') && !(typeName in actualNamedTypeMap)) { + delete originalTypeMap[typeName]; + } + } + function healNamedType(type) { + if (isObjectType(type)) { + healFields(type); + healInterfaces(type); + return; + } + else if (isInterfaceType(type)) { + healFields(type); + if ('getInterfaces' in type) { + healInterfaces(type); + } + return; + } + else if (isUnionType(type)) { + healUnderlyingTypes(type); + return; + } + else if (isInputObjectType(type)) { + healInputFields(type); + return; + } + else if (isLeafType(type)) { + return; + } + throw new Error(`Unexpected schema type: ${type}`); + } + function healFields(type) { + const fieldMap = type.getFields(); + for (const [key, field] of Object.entries(fieldMap)) { + field.args + .map(arg => { + arg.type = healType(arg.type); + return arg.type === null ? null : arg; + }) + .filter(Boolean); + field.type = healType(field.type); + if (field.type === null) { + delete fieldMap[key]; + } + } + } + function healInterfaces(type) { + if ('getInterfaces' in type) { + const interfaces = type.getInterfaces(); + interfaces.push(...interfaces + .splice(0) + .map(iface => healType(iface)) + .filter(Boolean)); + } + } + function healInputFields(type) { + const fieldMap = type.getFields(); + for (const [key, field] of Object.entries(fieldMap)) { + field.type = healType(field.type); + if (field.type === null) { + delete fieldMap[key]; + } + } + } + function healUnderlyingTypes(type) { + const types = type.getTypes(); + types.push(...types + .splice(0) + .map(t => healType(t)) + .filter(Boolean)); + } + function healType(type) { + // Unwrap the two known wrapper types + if (isListType(type)) { + const healedType = healType(type.ofType); + return healedType != null ? new GraphQLList(healedType) : null; + } + else if (isNonNullType(type)) { + const healedType = healType(type.ofType); + return healedType != null ? new GraphQLNonNull(healedType) : null; + } + else if (isNamedType(type)) { + // If a type annotation on a field or an argument or a union member is + // any `GraphQLNamedType` with a `name`, then it must end up identical + // to `schema.getType(name)`, since `schema.getTypeMap()` is the source + // of truth for all named schema types. + // Note that new types can still be simply added by adding a field, as + // the official type will be undefined, not null. + const officialType = originalTypeMap[type.name]; + if (officialType && type !== officialType) { + return officialType; + } + } + return type; + } +} - if (!url || (typeof url !== 'string' && typeof url !== 'object' && !(url instanceof URL))) { - throw new InvalidArgumentError('invalid url') - } +function forEachField(schema, fn) { + const typeMap = schema.getTypeMap(); + for (const typeName in typeMap) { + const type = typeMap[typeName]; + // TODO: maybe have an option to include these? + if (!getNamedType(type).name.startsWith('__') && isObjectType(type)) { + const fields = type.getFields(); + for (const fieldName in fields) { + const field = fields[fieldName]; + fn(field, typeName, fieldName); + } + } + } +} - if (opts != null && typeof opts !== 'object') { - throw new InvalidArgumentError('invalid opts') - } +function forEachDefaultValue(schema, fn) { + const typeMap = schema.getTypeMap(); + for (const typeName in typeMap) { + const type = typeMap[typeName]; + if (!getNamedType(type).name.startsWith('__')) { + if (isObjectType(type)) { + const fields = type.getFields(); + for (const fieldName in fields) { + const field = fields[fieldName]; + for (const arg of field.args) { + arg.defaultValue = fn(arg.type, arg.defaultValue); + } + } + } + else if (isInputObjectType(type)) { + const fields = type.getFields(); + for (const fieldName in fields) { + const field = fields[fieldName]; + field.defaultValue = fn(field.type, field.defaultValue); + } + } + } + } +} - if (opts && opts.path != null) { - if (typeof opts.path !== 'string') { - throw new InvalidArgumentError('invalid opts.path') - } +function mergeDeep(sources, respectPrototype = false) { + const target = sources[0] || {}; + const output = {}; + if (respectPrototype) { + Object.setPrototypeOf(output, Object.create(Object.getPrototypeOf(target))); + } + for (const source of sources) { + if (isObject(target) && isObject(source)) { + if (respectPrototype) { + const outputPrototype = Object.getPrototypeOf(output); + const sourcePrototype = Object.getPrototypeOf(source); + if (sourcePrototype) { + for (const key of Object.getOwnPropertyNames(sourcePrototype)) { + const descriptor = Object.getOwnPropertyDescriptor(sourcePrototype, key); + if (isSome(descriptor)) { + Object.defineProperty(outputPrototype, key, descriptor); + } + } + } + } + for (const key in source) { + if (isObject(source[key])) { + if (!(key in output)) { + Object.assign(output, { [key]: source[key] }); + } + else { + output[key] = mergeDeep([output[key], source[key]], respectPrototype); + } + } + else { + Object.assign(output, { [key]: source[key] }); + } + } + } + } + return output; +} +function isObject(item) { + return item && typeof item === 'object' && !Array.isArray(item); +} - let path = opts.path; - if (!opts.path.startsWith('/')) { - path = `/${path}`; - } +function isAsyncIterable(value) { + return (typeof value === 'object' && + value != null && + Symbol.asyncIterator in value && + typeof value[Symbol.asyncIterator] === 'function'); +} - url = new URL(util.parseOrigin(url).origin + path); - } else { - if (!opts) { - opts = typeof url === 'object' ? url : {}; - } +function isDocumentNode(object) { + return object && typeof object === 'object' && 'kind' in object && object.kind === Kind.DOCUMENT; +} - url = util.parseURL(url); - } +function assertResolversPresent(schema, resolverValidationOptions = {}) { + const { requireResolversForArgs, requireResolversForNonScalar, requireResolversForAllFields } = resolverValidationOptions; + if (requireResolversForAllFields && (requireResolversForArgs || requireResolversForNonScalar)) { + throw new TypeError('requireResolversForAllFields takes precedence over the more specific assertions. ' + + 'Please configure either requireResolversForAllFields or requireResolversForArgs / ' + + 'requireResolversForNonScalar, but not a combination of them.'); + } + forEachField(schema, (field, typeName, fieldName) => { + // requires a resolver for *every* field. + if (requireResolversForAllFields) { + expectResolver('requireResolversForAllFields', requireResolversForAllFields, field, typeName, fieldName); + } + // requires a resolver on every field that has arguments + if (requireResolversForArgs && field.args.length > 0) { + expectResolver('requireResolversForArgs', requireResolversForArgs, field, typeName, fieldName); + } + // requires a resolver on every field that returns a non-scalar type + if (requireResolversForNonScalar !== 'ignore' && !isScalarType(getNamedType(field.type))) { + expectResolver('requireResolversForNonScalar', requireResolversForNonScalar, field, typeName, fieldName); + } + }); +} +function expectResolver(validator, behavior, field, typeName, fieldName) { + if (!field.resolve) { + const message = `Resolver missing for "${typeName}.${fieldName}". +To disable this validator, use: + resolverValidationOptions: { + ${validator}: 'ignore' + }`; + if (behavior === 'error') { + throw new Error(message); + } + if (behavior === 'warn') { + console.warn(message); + } + return; + } + if (typeof field.resolve !== 'function') { + throw new Error(`Resolver "${typeName}.${fieldName}" must be a function`); + } +} - const { agent, dispatcher = getGlobalDispatcher() } = opts; +// If we have any union or interface types throw if no there is no resolveType resolver +function checkForResolveTypeResolver(schema, requireResolversForResolveType) { + mapSchema(schema, { + [MapperKind.ABSTRACT_TYPE]: type => { + if (!type.resolveType) { + const message = `Type "${type.name}" is missing a "__resolveType" resolver. Pass 'ignore' into ` + + '"resolverValidationOptions.requireResolversForResolveType" to disable this error.'; + if (requireResolversForResolveType === 'error') { + throw new Error(message); + } + if (requireResolversForResolveType === 'warn') { + console.warn(message); + } + } + return undefined; + }, + }); +} - if (agent) { - throw new InvalidArgumentError('unsupported opts.agent. Did you mean opts.client?') - } +function extendResolversFromInterfaces(schema, resolvers) { + const extendedResolvers = {}; + const typeMap = schema.getTypeMap(); + for (const typeName in typeMap) { + const type = typeMap[typeName]; + if ('getInterfaces' in type) { + extendedResolvers[typeName] = {}; + for (const iFace of type.getInterfaces()) { + if (resolvers[iFace.name]) { + for (const fieldName in resolvers[iFace.name]) { + if (fieldName === '__isTypeOf' || !fieldName.startsWith('__')) { + extendedResolvers[typeName][fieldName] = resolvers[iFace.name][fieldName]; + } + } + } + } + const typeResolvers = resolvers[typeName]; + extendedResolvers[typeName] = { + ...extendedResolvers[typeName], + ...typeResolvers, + }; + } + else { + const typeResolvers = resolvers[typeName]; + if (typeResolvers != null) { + extendedResolvers[typeName] = typeResolvers; + } + } + } + return extendedResolvers; +} - return fn.call(dispatcher, { - ...opts, - origin: url.origin, - path: url.search ? `${url.pathname}${url.search}` : url.pathname, - method: opts.method || (opts.body ? 'PUT' : 'GET') - }, handler) - } - } +function addResolversToSchema({ schema, resolvers: inputResolvers, defaultFieldResolver, resolverValidationOptions = {}, inheritResolversFromInterfaces = false, updateResolversInPlace = false, }) { + const { requireResolversToMatchSchema = 'error', requireResolversForResolveType } = resolverValidationOptions; + const resolvers = inheritResolversFromInterfaces + ? extendResolversFromInterfaces(schema, inputResolvers) + : inputResolvers; + for (const typeName in resolvers) { + const resolverValue = resolvers[typeName]; + const resolverType = typeof resolverValue; + if (resolverType !== 'object') { + throw new Error(`"${typeName}" defined in resolvers, but has invalid value "${resolverValue}". The resolver's value must be of type object.`); + } + const type = schema.getType(typeName); + if (type == null) { + if (requireResolversToMatchSchema === 'ignore') { + continue; + } + throw new Error(`"${typeName}" defined in resolvers, but not in schema`); + } + else if (isSpecifiedScalarType(type)) { + // allow -- without recommending -- overriding of specified scalar types + for (const fieldName in resolverValue) { + if (fieldName.startsWith('__')) { + type[fieldName.substring(2)] = resolverValue[fieldName]; + } + else { + type[fieldName] = resolverValue[fieldName]; + } + } + } + else if (isEnumType(type)) { + const values = type.getValues(); + for (const fieldName in resolverValue) { + if (!fieldName.startsWith('__') && + !values.some(value => value.name === fieldName) && + requireResolversToMatchSchema && + requireResolversToMatchSchema !== 'ignore') { + throw new Error(`${type.name}.${fieldName} was defined in resolvers, but not present within ${type.name}`); + } + } + } + else if (isUnionType(type)) { + for (const fieldName in resolverValue) { + if (!fieldName.startsWith('__') && + requireResolversToMatchSchema && + requireResolversToMatchSchema !== 'ignore') { + throw new Error(`${type.name}.${fieldName} was defined in resolvers, but ${type.name} is not an object or interface type`); + } + } + } + else if (isObjectType(type) || isInterfaceType(type)) { + for (const fieldName in resolverValue) { + if (!fieldName.startsWith('__')) { + const fields = type.getFields(); + const field = fields[fieldName]; + if (field == null) { + // Field present in resolver but not in schema + if (requireResolversToMatchSchema && requireResolversToMatchSchema !== 'ignore') { + throw new Error(`${typeName}.${fieldName} defined in resolvers, but not in schema`); + } + } + else { + // Field present in both the resolver and schema + const fieldResolve = resolverValue[fieldName]; + if (typeof fieldResolve !== 'function' && typeof fieldResolve !== 'object') { + throw new Error(`Resolver ${typeName}.${fieldName} must be object or function`); + } + } + } + } + } + } + schema = updateResolversInPlace + ? addResolversToExistingSchema(schema, resolvers, defaultFieldResolver) + : createNewSchemaWithResolvers(schema, resolvers, defaultFieldResolver); + if (requireResolversForResolveType && requireResolversForResolveType !== 'ignore') { + checkForResolveTypeResolver(schema, requireResolversForResolveType); + } + return schema; +} +function addResolversToExistingSchema(schema, resolvers, defaultFieldResolver) { + var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m; + const typeMap = schema.getTypeMap(); + for (const typeName in resolvers) { + const type = schema.getType(typeName); + const resolverValue = resolvers[typeName]; + if (isScalarType(type)) { + for (const fieldName in resolverValue) { + if (fieldName.startsWith('__')) { + type[fieldName.substring(2)] = resolverValue[fieldName]; + } + else if (fieldName === 'astNode' && type.astNode != null) { + type.astNode = { + ...type.astNode, + description: (_b = (_a = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : type.astNode.description, + directives: ((_c = type.astNode.directives) !== null && _c !== void 0 ? _c : []).concat((_e = (_d = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _d === void 0 ? void 0 : _d.directives) !== null && _e !== void 0 ? _e : []), + }; + } + else if (fieldName === 'extensionASTNodes' && type.extensionASTNodes != null) { + type.extensionASTNodes = type.extensionASTNodes.concat((_f = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.extensionASTNodes) !== null && _f !== void 0 ? _f : []); + } + else if (fieldName === 'extensions' && + type.extensions != null && + resolverValue.extensions != null) { + type.extensions = Object.assign(Object.create(null), type.extensions, resolverValue.extensions); + } + else { + type[fieldName] = resolverValue[fieldName]; + } + } + } + else if (isEnumType(type)) { + const config = type.toConfig(); + const enumValueConfigMap = config.values; + for (const fieldName in resolverValue) { + if (fieldName.startsWith('__')) { + config[fieldName.substring(2)] = resolverValue[fieldName]; + } + else if (fieldName === 'astNode' && config.astNode != null) { + config.astNode = { + ...config.astNode, + description: (_h = (_g = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _g === void 0 ? void 0 : _g.description) !== null && _h !== void 0 ? _h : config.astNode.description, + directives: ((_j = config.astNode.directives) !== null && _j !== void 0 ? _j : []).concat((_l = (_k = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _k === void 0 ? void 0 : _k.directives) !== null && _l !== void 0 ? _l : []), + }; + } + else if (fieldName === 'extensionASTNodes' && config.extensionASTNodes != null) { + config.extensionASTNodes = config.extensionASTNodes.concat((_m = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.extensionASTNodes) !== null && _m !== void 0 ? _m : []); + } + else if (fieldName === 'extensions' && + type.extensions != null && + resolverValue.extensions != null) { + type.extensions = Object.assign(Object.create(null), type.extensions, resolverValue.extensions); + } + else if (enumValueConfigMap[fieldName]) { + enumValueConfigMap[fieldName].value = resolverValue[fieldName]; + } + } + typeMap[typeName] = new GraphQLEnumType(config); + } + else if (isUnionType(type)) { + for (const fieldName in resolverValue) { + if (fieldName.startsWith('__')) { + type[fieldName.substring(2)] = resolverValue[fieldName]; + } + } + } + else if (isObjectType(type) || isInterfaceType(type)) { + for (const fieldName in resolverValue) { + if (fieldName.startsWith('__')) { + // this is for isTypeOf and resolveType and all the other stuff. + type[fieldName.substring(2)] = resolverValue[fieldName]; + continue; + } + const fields = type.getFields(); + const field = fields[fieldName]; + if (field != null) { + const fieldResolve = resolverValue[fieldName]; + if (typeof fieldResolve === 'function') { + // for convenience. Allows shorter syntax in resolver definition file + field.resolve = fieldResolve.bind(resolverValue); + } + else { + setFieldProperties(field, fieldResolve); + } + } + } + } + } + // serialize all default values prior to healing fields with new scalar/enum types. + forEachDefaultValue(schema, serializeInputValue); + // schema may have new scalar/enum types that require healing + healSchema(schema); + // reparse all default values with new parsing functions. + forEachDefaultValue(schema, parseInputValue); + if (defaultFieldResolver != null) { + forEachField(schema, field => { + if (!field.resolve) { + field.resolve = defaultFieldResolver; + } + }); + } + return schema; +} +function createNewSchemaWithResolvers(schema, resolvers, defaultFieldResolver) { + schema = mapSchema(schema, { + [MapperKind.SCALAR_TYPE]: type => { + var _a, _b, _c, _d, _e, _f; + const config = type.toConfig(); + const resolverValue = resolvers[type.name]; + if (!isSpecifiedScalarType(type) && resolverValue != null) { + for (const fieldName in resolverValue) { + if (fieldName.startsWith('__')) { + config[fieldName.substring(2)] = resolverValue[fieldName]; + } + else if (fieldName === 'astNode' && config.astNode != null) { + config.astNode = { + ...config.astNode, + description: (_b = (_a = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : config.astNode.description, + directives: ((_c = config.astNode.directives) !== null && _c !== void 0 ? _c : []).concat((_e = (_d = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _d === void 0 ? void 0 : _d.directives) !== null && _e !== void 0 ? _e : []), + }; + } + else if (fieldName === 'extensionASTNodes' && config.extensionASTNodes != null) { + config.extensionASTNodes = config.extensionASTNodes.concat((_f = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.extensionASTNodes) !== null && _f !== void 0 ? _f : []); + } + else if (fieldName === 'extensions' && + config.extensions != null && + resolverValue.extensions != null) { + config.extensions = Object.assign(Object.create(null), type.extensions, resolverValue.extensions); + } + else { + config[fieldName] = resolverValue[fieldName]; + } + } + return new GraphQLScalarType(config); + } + }, + [MapperKind.ENUM_TYPE]: type => { + var _a, _b, _c, _d, _e, _f; + const resolverValue = resolvers[type.name]; + const config = type.toConfig(); + const enumValueConfigMap = config.values; + if (resolverValue != null) { + for (const fieldName in resolverValue) { + if (fieldName.startsWith('__')) { + config[fieldName.substring(2)] = resolverValue[fieldName]; + } + else if (fieldName === 'astNode' && config.astNode != null) { + config.astNode = { + ...config.astNode, + description: (_b = (_a = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : config.astNode.description, + directives: ((_c = config.astNode.directives) !== null && _c !== void 0 ? _c : []).concat((_e = (_d = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _d === void 0 ? void 0 : _d.directives) !== null && _e !== void 0 ? _e : []), + }; + } + else if (fieldName === 'extensionASTNodes' && config.extensionASTNodes != null) { + config.extensionASTNodes = config.extensionASTNodes.concat((_f = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.extensionASTNodes) !== null && _f !== void 0 ? _f : []); + } + else if (fieldName === 'extensions' && + config.extensions != null && + resolverValue.extensions != null) { + config.extensions = Object.assign(Object.create(null), type.extensions, resolverValue.extensions); + } + else if (enumValueConfigMap[fieldName]) { + enumValueConfigMap[fieldName].value = resolverValue[fieldName]; + } + } + return new GraphQLEnumType(config); + } + }, + [MapperKind.UNION_TYPE]: type => { + const resolverValue = resolvers[type.name]; + if (resolverValue != null) { + const config = type.toConfig(); + if (resolverValue['__resolveType']) { + config.resolveType = resolverValue['__resolveType']; + } + return new GraphQLUnionType(config); + } + }, + [MapperKind.OBJECT_TYPE]: type => { + const resolverValue = resolvers[type.name]; + if (resolverValue != null) { + const config = type.toConfig(); + if (resolverValue['__isTypeOf']) { + config.isTypeOf = resolverValue['__isTypeOf']; + } + return new GraphQLObjectType(config); + } + }, + [MapperKind.INTERFACE_TYPE]: type => { + const resolverValue = resolvers[type.name]; + if (resolverValue != null) { + const config = type.toConfig(); + if (resolverValue['__resolveType']) { + config.resolveType = resolverValue['__resolveType']; + } + return new GraphQLInterfaceType(config); + } + }, + [MapperKind.COMPOSITE_FIELD]: (fieldConfig, fieldName, typeName) => { + const resolverValue = resolvers[typeName]; + if (resolverValue != null) { + const fieldResolve = resolverValue[fieldName]; + if (fieldResolve != null) { + const newFieldConfig = { ...fieldConfig }; + if (typeof fieldResolve === 'function') { + // for convenience. Allows shorter syntax in resolver definition file + newFieldConfig.resolve = fieldResolve.bind(resolverValue); + } + else { + setFieldProperties(newFieldConfig, fieldResolve); + } + return newFieldConfig; + } + } + }, + }); + if (defaultFieldResolver != null) { + schema = mapSchema(schema, { + [MapperKind.OBJECT_FIELD]: fieldConfig => ({ + ...fieldConfig, + resolve: fieldConfig.resolve != null ? fieldConfig.resolve : defaultFieldResolver, + }), + }); + } + return schema; +} +function setFieldProperties(field, propertiesObj) { + for (const propertyName in propertiesObj) { + field[propertyName] = propertiesObj[propertyName]; + } +} - undici.setGlobalDispatcher = setGlobalDispatcher; - undici.getGlobalDispatcher = getGlobalDispatcher; +/** + * Deep merges multiple resolver definition objects into a single definition. + * @param resolversDefinitions Resolver definitions to be merged + * @param options Additional options + * + * ```js + * const { mergeResolvers } = require('@graphql-tools/merge'); + * const clientResolver = require('./clientResolver'); + * const productResolver = require('./productResolver'); + * + * const resolvers = mergeResolvers([ + * clientResolver, + * productResolver, + * ]); + * ``` + * + * If you don't want to manually create the array of resolver objects, you can + * also use this function along with loadFiles: + * + * ```js + * const path = require('path'); + * const { mergeResolvers } = require('@graphql-tools/merge'); + * const { loadFilesSync } = require('@graphql-tools/load-files'); + * + * const resolversArray = loadFilesSync(path.join(__dirname, './resolvers')); + * + * const resolvers = mergeResolvers(resolversArray) + * ``` + */ +function mergeResolvers(resolversDefinitions, options) { + if (!resolversDefinitions || (Array.isArray(resolversDefinitions) && resolversDefinitions.length === 0)) { + return {}; + } + if (!Array.isArray(resolversDefinitions)) { + return resolversDefinitions; + } + if (resolversDefinitions.length === 1) { + return resolversDefinitions[0] || {}; + } + const resolvers = new Array(); + for (let resolversDefinition of resolversDefinitions) { + if (Array.isArray(resolversDefinition)) { + resolversDefinition = mergeResolvers(resolversDefinition); + } + if (typeof resolversDefinition === 'object' && resolversDefinition) { + resolvers.push(resolversDefinition); + } + } + const result = mergeDeep(resolvers, true); + if (options === null || options === void 0 ? void 0 : options.exclusions) { + for (const exclusion of options.exclusions) { + const [typeName, fieldName] = exclusion.split('.'); + if (!fieldName || fieldName === '*') { + delete result[typeName]; + } + else if (result[typeName]) { + delete result[typeName][fieldName]; + } + } + } + return result; +} - if (nodeMajor > 16 || (nodeMajor === 16 && nodeMinor >= 8)) { - let fetchImpl = null; - undici.fetch = async function fetch (resource) { - if (!fetchImpl) { - fetchImpl = requireFetch(); - } - const dispatcher = (arguments[1] && arguments[1].dispatcher) || getGlobalDispatcher(); - return fetchImpl.apply(dispatcher, arguments) - }; - undici.Headers = requireHeaders().Headers; - undici.Response = requireResponse().Response; - undici.Request = requireRequest().Request; - undici.FormData = requireFormdata().FormData; - undici.File = requireFile().File; - } +function mergeArguments$1(args1, args2, config) { + const result = deduplicateArguments([...args2, ...args1].filter(isSome)); + if (config && config.sort) { + result.sort(compareNodes); + } + return result; +} +function deduplicateArguments(args) { + return args.reduce((acc, current) => { + const dup = acc.find(arg => arg.name.value === current.name.value); + if (!dup) { + return acc.concat([current]); + } + return acc; + }, []); +} - undici.request = makeDispatcher(api.request); - undici.stream = makeDispatcher(api.stream); - undici.pipeline = makeDispatcher(api.pipeline); - undici.connect = makeDispatcher(api.connect); - undici.upgrade = makeDispatcher(api.upgrade); +function directiveAlreadyExists(directivesArr, otherDirective) { + return !!directivesArr.find(directive => directive.name.value === otherDirective.name.value); +} +function nameAlreadyExists(name, namesArr) { + return namesArr.some(({ value }) => value === name.value); +} +function mergeArguments(a1, a2) { + const result = [...a2]; + for (const argument of a1) { + const existingIndex = result.findIndex(a => a.name.value === argument.name.value); + if (existingIndex > -1) { + const existingArg = result[existingIndex]; + if (existingArg.value.kind === 'ListValue') { + const source = existingArg.value.values; + const target = argument.value.values; + // merge values of two lists + existingArg.value.values = deduplicateLists(source, target, (targetVal, source) => { + const value = targetVal.value; + return !value || !source.some((sourceVal) => sourceVal.value === value); + }); + } + else { + existingArg.value = argument.value; + } + } + else { + result.push(argument); + } + } + return result; +} +function deduplicateDirectives(directives) { + return directives + .map((directive, i, all) => { + const firstAt = all.findIndex(d => d.name.value === directive.name.value); + if (firstAt !== i) { + const dup = all[firstAt]; + directive.arguments = mergeArguments(directive.arguments, dup.arguments); + return null; + } + return directive; + }) + .filter(isSome); +} +function mergeDirectives(d1 = [], d2 = [], config) { + const reverseOrder = config && config.reverseDirectives; + const asNext = reverseOrder ? d1 : d2; + const asFirst = reverseOrder ? d2 : d1; + const result = deduplicateDirectives([...asNext]); + for (const directive of asFirst) { + if (directiveAlreadyExists(result, directive)) { + const existingDirectiveIndex = result.findIndex(d => d.name.value === directive.name.value); + const existingDirective = result[existingDirectiveIndex]; + result[existingDirectiveIndex].arguments = mergeArguments(directive.arguments || [], existingDirective.arguments || []); + } + else { + result.push(directive); + } + } + return result; +} +function validateInputs(node, existingNode) { + const printedNode = print({ + ...node, + description: undefined, + }); + const printedExistingNode = print({ + ...existingNode, + description: undefined, + }); + // eslint-disable-next-line + const leaveInputs = new RegExp('(directive @w*d*)|( on .*$)', 'g'); + const sameArguments = printedNode.replace(leaveInputs, '') === printedExistingNode.replace(leaveInputs, ''); + if (!sameArguments) { + throw new Error(`Unable to merge GraphQL directive "${node.name.value}". \nExisting directive: \n\t${printedExistingNode} \nReceived directive: \n\t${printedNode}`); + } +} +function mergeDirective(node, existingNode) { + if (existingNode) { + validateInputs(node, existingNode); + return { + ...node, + locations: [ + ...existingNode.locations, + ...node.locations.filter(name => !nameAlreadyExists(name, existingNode.locations)), + ], + }; + } + return node; +} +function deduplicateLists(source, target, filterFn) { + return source.concat(target.filter(val => filterFn(val, source))); +} - undici.MockClient = MockClient; - undici.MockPool = MockPool; - undici.MockAgent = MockAgent; - undici.mockErrors = mockErrors; - return undici; +function mergeEnumValues(first, second, config) { + if (config === null || config === void 0 ? void 0 : config.consistentEnumMerge) { + const reversed = []; + if (first) { + reversed.push(...first); + } + first = second; + second = reversed; + } + const enumValueMap = new Map(); + if (first) { + for (const firstValue of first) { + enumValueMap.set(firstValue.name.value, firstValue); + } + } + if (second) { + for (const secondValue of second) { + const enumValue = secondValue.name.value; + if (enumValueMap.has(enumValue)) { + const firstValue = enumValueMap.get(enumValue); + firstValue.description = secondValue.description || firstValue.description; + firstValue.directives = mergeDirectives(secondValue.directives, firstValue.directives); + } + else { + enumValueMap.set(enumValue, secondValue); + } + } + } + const result = [...enumValueMap.values()]; + if (config && config.sort) { + result.sort(compareNodes); + } + return result; } -var cjs = {}; - -var FormDataEncoder = {}; - -var createBoundary = {}; - -var hasRequiredCreateBoundary; - -function requireCreateBoundary () { - if (hasRequiredCreateBoundary) return createBoundary; - hasRequiredCreateBoundary = 1; - Object.defineProperty(createBoundary, "__esModule", { value: true }); - const alphabet = "abcdefghijklmnopqrstuvwxyz0123456789"; - function createBoundary$1() { - let size = 16; - let res = ""; - while (size--) { - res += alphabet[(Math.random() * alphabet.length) << 0]; - } - return res; - } - createBoundary.default = createBoundary$1; - return createBoundary; +function mergeEnum(e1, e2, config) { + if (e2) { + return { + name: e1.name, + description: e1['description'] || e2['description'], + kind: (config === null || config === void 0 ? void 0 : config.convertExtensions) || e1.kind === 'EnumTypeDefinition' || e2.kind === 'EnumTypeDefinition' + ? 'EnumTypeDefinition' + : 'EnumTypeExtension', + loc: e1.loc, + directives: mergeDirectives(e1.directives, e2.directives, config), + values: mergeEnumValues(e1.values, e2.values, config), + }; + } + return (config === null || config === void 0 ? void 0 : config.convertExtensions) + ? { + ...e1, + kind: Kind.ENUM_TYPE_DEFINITION, + } + : e1; } -var isPlainObject = {}; - -var hasRequiredIsPlainObject; - -function requireIsPlainObject () { - if (hasRequiredIsPlainObject) return isPlainObject; - hasRequiredIsPlainObject = 1; - Object.defineProperty(isPlainObject, "__esModule", { value: true }); - const getType = (value) => (Object.prototype.toString.call(value).slice(8, -1).toLowerCase()); - function isPlainObject$1(value) { - if (getType(value) !== "object") { - return false; - } - const pp = Object.getPrototypeOf(value); - if (pp === null || pp === undefined) { - return true; - } - const Ctor = pp.constructor && pp.constructor.toString(); - return Ctor === Object.toString(); - } - isPlainObject.default = isPlainObject$1; - return isPlainObject; +function isStringTypes(types) { + return typeof types === 'string'; } - -var normalizeValue = {}; - -var hasRequiredNormalizeValue; - -function requireNormalizeValue () { - if (hasRequiredNormalizeValue) return normalizeValue; - hasRequiredNormalizeValue = 1; - Object.defineProperty(normalizeValue, "__esModule", { value: true }); - const normalizeValue$1 = (value) => String(value) - .replace(/\r|\n/g, (match, i, str) => { - if ((match === "\r" && str[i + 1] !== "\n") - || (match === "\n" && str[i - 1] !== "\r")) { - return "\r\n"; - } - return match; - }); - normalizeValue.default = normalizeValue$1; - return normalizeValue; +function isSourceTypes(types) { + return types instanceof Source; } - -var escapeName = {}; - -var hasRequiredEscapeName; - -function requireEscapeName () { - if (hasRequiredEscapeName) return escapeName; - hasRequiredEscapeName = 1; - Object.defineProperty(escapeName, "__esModule", { value: true }); - const escapeName$1 = (name) => String(name) - .replace(/\r/g, "%0D") - .replace(/\n/g, "%0A") - .replace(/"/g, "%22"); - escapeName.default = escapeName$1; - return escapeName; +function extractType(type) { + let visitedType = type; + while (visitedType.kind === Kind.LIST_TYPE || visitedType.kind === 'NonNullType') { + visitedType = visitedType.type; + } + return visitedType; +} +function isWrappingTypeNode(type) { + return type.kind !== Kind.NAMED_TYPE; +} +function isListTypeNode(type) { + return type.kind === Kind.LIST_TYPE; +} +function isNonNullTypeNode(type) { + return type.kind === Kind.NON_NULL_TYPE; +} +function printTypeNode(type) { + if (isListTypeNode(type)) { + return `[${printTypeNode(type.type)}]`; + } + if (isNonNullTypeNode(type)) { + return `${printTypeNode(type.type)}!`; + } + return type.name.value; +} +var CompareVal; +(function (CompareVal) { + CompareVal[CompareVal["A_SMALLER_THAN_B"] = -1] = "A_SMALLER_THAN_B"; + CompareVal[CompareVal["A_EQUALS_B"] = 0] = "A_EQUALS_B"; + CompareVal[CompareVal["A_GREATER_THAN_B"] = 1] = "A_GREATER_THAN_B"; +})(CompareVal || (CompareVal = {})); +function defaultStringComparator(a, b) { + if (a == null && b == null) { + return CompareVal.A_EQUALS_B; + } + if (a == null) { + return CompareVal.A_SMALLER_THAN_B; + } + if (b == null) { + return CompareVal.A_GREATER_THAN_B; + } + if (a < b) + return CompareVal.A_SMALLER_THAN_B; + if (a > b) + return CompareVal.A_GREATER_THAN_B; + return CompareVal.A_EQUALS_B; } -var isFileLike = {}; - -var isFunction = {}; - -var hasRequiredIsFunction; - -function requireIsFunction () { - if (hasRequiredIsFunction) return isFunction; - hasRequiredIsFunction = 1; - Object.defineProperty(isFunction, "__esModule", { value: true }); - const isFunction$1 = (value) => (typeof value === "function"); - isFunction.default = isFunction$1; - return isFunction; +function fieldAlreadyExists(fieldsArr, otherField, config) { + const result = fieldsArr.find(field => field.name.value === otherField.name.value); + if (result && !(config === null || config === void 0 ? void 0 : config.ignoreFieldConflicts)) { + const t1 = extractType(result.type); + const t2 = extractType(otherField.type); + if (t1.name.value !== t2.name.value) { + throw new Error(`Field "${otherField.name.value}" already defined with a different type. Declared as "${t1.name.value}", but you tried to override with "${t2.name.value}"`); + } + } + return !!result; +} +function mergeFields(type, f1, f2, config) { + const result = []; + if (f2 != null) { + result.push(...f2); + } + if (f1 != null) { + for (const field of f1) { + if (fieldAlreadyExists(result, field, config)) { + const existing = result.find((f) => f.name.value === field.name.value); + if (!(config === null || config === void 0 ? void 0 : config.ignoreFieldConflicts)) { + if (config === null || config === void 0 ? void 0 : config.throwOnConflict) { + preventConflicts(type, existing, field, false); + } + else { + preventConflicts(type, existing, field, true); + } + if (isNonNullTypeNode(field.type) && !isNonNullTypeNode(existing.type)) { + existing.type = field.type; + } + } + existing.arguments = mergeArguments$1(field['arguments'] || [], existing.arguments || [], config); + existing.directives = mergeDirectives(field.directives, existing.directives, config); + existing.description = field.description || existing.description; + } + else { + result.push(field); + } + } + } + if (config && config.sort) { + result.sort(compareNodes); + } + if (config && config.exclusions) { + const exclusions = config.exclusions; + return result.filter(field => !exclusions.includes(`${type.name.value}.${field.name.value}`)); + } + return result; +} +function preventConflicts(type, a, b, ignoreNullability = false) { + const aType = printTypeNode(a.type); + const bType = printTypeNode(b.type); + if (aType !== bType && !safeChangeForFieldType(a.type, b.type, ignoreNullability)) { + throw new Error(`Field '${type.name.value}.${a.name.value}' changed type from '${aType}' to '${bType}'`); + } +} +function safeChangeForFieldType(oldType, newType, ignoreNullability = false) { + // both are named + if (!isWrappingTypeNode(oldType) && !isWrappingTypeNode(newType)) { + return oldType.toString() === newType.toString(); + } + // new is non-null + if (isNonNullTypeNode(newType)) { + const ofType = isNonNullTypeNode(oldType) ? oldType.type : oldType; + return safeChangeForFieldType(ofType, newType.type); + } + // old is non-null + if (isNonNullTypeNode(oldType)) { + return safeChangeForFieldType(newType, oldType, ignoreNullability); + } + // old is list + if (isListTypeNode(oldType)) { + return ((isListTypeNode(newType) && safeChangeForFieldType(oldType.type, newType.type)) || + (isNonNullTypeNode(newType) && safeChangeForFieldType(oldType, newType['type']))); + } + return false; } -var hasRequiredIsFileLike; +function mergeInputType(node, existingNode, config) { + if (existingNode) { + try { + return { + name: node.name, + description: node['description'] || existingNode['description'], + kind: (config === null || config === void 0 ? void 0 : config.convertExtensions) || + node.kind === 'InputObjectTypeDefinition' || + existingNode.kind === 'InputObjectTypeDefinition' + ? 'InputObjectTypeDefinition' + : 'InputObjectTypeExtension', + loc: node.loc, + fields: mergeFields(node, node.fields, existingNode.fields, config), + directives: mergeDirectives(node.directives, existingNode.directives, config), + }; + } + catch (e) { + throw new Error(`Unable to merge GraphQL input type "${node.name.value}": ${e.message}`); + } + } + return (config === null || config === void 0 ? void 0 : config.convertExtensions) + ? { + ...node, + kind: Kind.INPUT_OBJECT_TYPE_DEFINITION, + } + : node; +} -function requireIsFileLike () { - if (hasRequiredIsFileLike) return isFileLike; - hasRequiredIsFileLike = 1; - var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; - }; - Object.defineProperty(isFileLike, "__esModule", { value: true }); - isFileLike.isFileLike = void 0; - const isFunction_1 = __importDefault(requireIsFunction()); - const isFileLike$1 = (value) => Boolean(value - && typeof value === "object" - && (0, isFunction_1.default)(value.constructor) - && value[Symbol.toStringTag] === "File" - && (0, isFunction_1.default)(value.stream) - && value.name != null - && value.size != null - && value.lastModified != null); - isFileLike.isFileLike = isFileLike$1; - return isFileLike; -} - -var isFormData = {}; - -var hasRequiredIsFormData; - -function requireIsFormData () { - if (hasRequiredIsFormData) return isFormData; - hasRequiredIsFormData = 1; - (function (exports) { - var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.isFormDataLike = exports.isFormData = void 0; - const isFunction_1 = __importDefault(requireIsFunction()); - const isFormData = (value) => Boolean(value - && (0, isFunction_1.default)(value.constructor) - && value[Symbol.toStringTag] === "FormData" - && (0, isFunction_1.default)(value.append) - && (0, isFunction_1.default)(value.getAll) - && (0, isFunction_1.default)(value.entries) - && (0, isFunction_1.default)(value[Symbol.iterator])); - exports.isFormData = isFormData; - exports.isFormDataLike = exports.isFormData; -} (isFormData)); - return isFormData; -} - -var hasRequiredFormDataEncoder; - -function requireFormDataEncoder () { - if (hasRequiredFormDataEncoder) return FormDataEncoder; - hasRequiredFormDataEncoder = 1; - var __classPrivateFieldSet = (commonjsGlobal && commonjsGlobal.__classPrivateFieldSet) || function (receiver, state, value, kind, f) { - if (kind === "m") throw new TypeError("Private method is not writable"); - if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); - return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; - }; - var __classPrivateFieldGet = (commonjsGlobal && commonjsGlobal.__classPrivateFieldGet) || function (receiver, state, kind, f) { - if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); - return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); - }; - var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; - }; - var _FormDataEncoder_instances, _FormDataEncoder_CRLF, _FormDataEncoder_CRLF_BYTES, _FormDataEncoder_CRLF_BYTES_LENGTH, _FormDataEncoder_DASHES, _FormDataEncoder_encoder, _FormDataEncoder_footer, _FormDataEncoder_form, _FormDataEncoder_options, _FormDataEncoder_getFieldHeader; - Object.defineProperty(FormDataEncoder, "__esModule", { value: true }); - FormDataEncoder.Encoder = FormDataEncoder.FormDataEncoder = void 0; - const createBoundary_1 = __importDefault(requireCreateBoundary()); - const isPlainObject_1 = __importDefault(requireIsPlainObject()); - const normalizeValue_1 = __importDefault(requireNormalizeValue()); - const escapeName_1 = __importDefault(requireEscapeName()); - const isFileLike_1 = requireIsFileLike(); - const isFormData_1 = requireIsFormData(); - const defaultOptions = { - enableAdditionalHeaders: false - }; - class FormDataEncoder$1 { - constructor(form, boundaryOrOptions, options) { - _FormDataEncoder_instances.add(this); - _FormDataEncoder_CRLF.set(this, "\r\n"); - _FormDataEncoder_CRLF_BYTES.set(this, void 0); - _FormDataEncoder_CRLF_BYTES_LENGTH.set(this, void 0); - _FormDataEncoder_DASHES.set(this, "-".repeat(2)); - _FormDataEncoder_encoder.set(this, new TextEncoder()); - _FormDataEncoder_footer.set(this, void 0); - _FormDataEncoder_form.set(this, void 0); - _FormDataEncoder_options.set(this, void 0); - if (!(0, isFormData_1.isFormData)(form)) { - throw new TypeError("Expected first argument to be a FormData instance."); - } - let boundary; - if ((0, isPlainObject_1.default)(boundaryOrOptions)) { - options = boundaryOrOptions; - } - else { - boundary = boundaryOrOptions; - } - if (!boundary) { - boundary = (0, createBoundary_1.default)(); - } - if (typeof boundary !== "string") { - throw new TypeError("Expected boundary argument to be a string."); - } - if (options && !(0, isPlainObject_1.default)(options)) { - throw new TypeError("Expected options argument to be an object."); - } - __classPrivateFieldSet(this, _FormDataEncoder_form, form, "f"); - __classPrivateFieldSet(this, _FormDataEncoder_options, { ...defaultOptions, ...options }, "f"); - __classPrivateFieldSet(this, _FormDataEncoder_CRLF_BYTES, __classPrivateFieldGet(this, _FormDataEncoder_encoder, "f").encode(__classPrivateFieldGet(this, _FormDataEncoder_CRLF, "f")), "f"); - __classPrivateFieldSet(this, _FormDataEncoder_CRLF_BYTES_LENGTH, __classPrivateFieldGet(this, _FormDataEncoder_CRLF_BYTES, "f").byteLength, "f"); - this.boundary = `form-data-boundary-${boundary}`; - this.contentType = `multipart/form-data; boundary=${this.boundary}`; - __classPrivateFieldSet(this, _FormDataEncoder_footer, __classPrivateFieldGet(this, _FormDataEncoder_encoder, "f").encode(`${__classPrivateFieldGet(this, _FormDataEncoder_DASHES, "f")}${this.boundary}${__classPrivateFieldGet(this, _FormDataEncoder_DASHES, "f")}${__classPrivateFieldGet(this, _FormDataEncoder_CRLF, "f").repeat(2)}`), "f"); - this.contentLength = String(this.getContentLength()); - this.headers = Object.freeze({ - "Content-Type": this.contentType, - "Content-Length": this.contentLength - }); - Object.defineProperties(this, { - boundary: { writable: false, configurable: false }, - contentType: { writable: false, configurable: false }, - contentLength: { writable: false, configurable: false }, - headers: { writable: false, configurable: false } - }); - } - getContentLength() { - let length = 0; - for (const [name, raw] of __classPrivateFieldGet(this, _FormDataEncoder_form, "f")) { - const value = (0, isFileLike_1.isFileLike)(raw) ? raw : __classPrivateFieldGet(this, _FormDataEncoder_encoder, "f").encode((0, normalizeValue_1.default)(raw)); - length += __classPrivateFieldGet(this, _FormDataEncoder_instances, "m", _FormDataEncoder_getFieldHeader).call(this, name, value).byteLength; - length += (0, isFileLike_1.isFileLike)(value) ? value.size : value.byteLength; - length += __classPrivateFieldGet(this, _FormDataEncoder_CRLF_BYTES_LENGTH, "f"); - } - return length + __classPrivateFieldGet(this, _FormDataEncoder_footer, "f").byteLength; - } - *values() { - for (const [name, raw] of __classPrivateFieldGet(this, _FormDataEncoder_form, "f").entries()) { - const value = (0, isFileLike_1.isFileLike)(raw) ? raw : __classPrivateFieldGet(this, _FormDataEncoder_encoder, "f").encode((0, normalizeValue_1.default)(raw)); - yield __classPrivateFieldGet(this, _FormDataEncoder_instances, "m", _FormDataEncoder_getFieldHeader).call(this, name, value); - yield value; - yield __classPrivateFieldGet(this, _FormDataEncoder_CRLF_BYTES, "f"); - } - yield __classPrivateFieldGet(this, _FormDataEncoder_footer, "f"); - } - async *encode() { - for (const part of this.values()) { - if ((0, isFileLike_1.isFileLike)(part)) { - yield* part.stream(); - } - else { - yield part; - } - } - } - [(_FormDataEncoder_CRLF = new WeakMap(), _FormDataEncoder_CRLF_BYTES = new WeakMap(), _FormDataEncoder_CRLF_BYTES_LENGTH = new WeakMap(), _FormDataEncoder_DASHES = new WeakMap(), _FormDataEncoder_encoder = new WeakMap(), _FormDataEncoder_footer = new WeakMap(), _FormDataEncoder_form = new WeakMap(), _FormDataEncoder_options = new WeakMap(), _FormDataEncoder_instances = new WeakSet(), _FormDataEncoder_getFieldHeader = function _FormDataEncoder_getFieldHeader(name, value) { - let header = ""; - header += `${__classPrivateFieldGet(this, _FormDataEncoder_DASHES, "f")}${this.boundary}${__classPrivateFieldGet(this, _FormDataEncoder_CRLF, "f")}`; - header += `Content-Disposition: form-data; name="${(0, escapeName_1.default)(name)}"`; - if ((0, isFileLike_1.isFileLike)(value)) { - header += `; filename="${(0, escapeName_1.default)(value.name)}"${__classPrivateFieldGet(this, _FormDataEncoder_CRLF, "f")}`; - header += `Content-Type: ${value.type || "application/octet-stream"}`; - } - if (__classPrivateFieldGet(this, _FormDataEncoder_options, "f").enableAdditionalHeaders === true) { - header += `${__classPrivateFieldGet(this, _FormDataEncoder_CRLF, "f")}Content-Length: ${(0, isFileLike_1.isFileLike)(value) ? value.size : value.byteLength}`; - } - return __classPrivateFieldGet(this, _FormDataEncoder_encoder, "f").encode(`${header}${__classPrivateFieldGet(this, _FormDataEncoder_CRLF, "f").repeat(2)}`); - }, Symbol.iterator)]() { - return this.values(); - } - [Symbol.asyncIterator]() { - return this.encode(); - } - } - FormDataEncoder.FormDataEncoder = FormDataEncoder$1; - FormDataEncoder.Encoder = FormDataEncoder$1; - return FormDataEncoder; +function mergeInterface(node, existingNode, config) { + if (existingNode) { + try { + return { + name: node.name, + description: node['description'] || existingNode['description'], + kind: (config === null || config === void 0 ? void 0 : config.convertExtensions) || + node.kind === 'InterfaceTypeDefinition' || + existingNode.kind === 'InterfaceTypeDefinition' + ? 'InterfaceTypeDefinition' + : 'InterfaceTypeExtension', + loc: node.loc, + fields: mergeFields(node, node.fields, existingNode.fields, config), + directives: mergeDirectives(node.directives, existingNode.directives, config), + interfaces: node['interfaces'] + ? mergeNamedTypeArray(node['interfaces'], existingNode['interfaces'], config) + : undefined, + }; + } + catch (e) { + throw new Error(`Unable to merge GraphQL interface "${node.name.value}": ${e.message}`); + } + } + return (config === null || config === void 0 ? void 0 : config.convertExtensions) + ? { + ...node, + kind: Kind.INTERFACE_TYPE_DEFINITION, + } + : node; } -var FileLike = {}; - -var hasRequiredFileLike; - -function requireFileLike () { - if (hasRequiredFileLike) return FileLike; - hasRequiredFileLike = 1; - Object.defineProperty(FileLike, "__esModule", { value: true }); - return FileLike; +function alreadyExists(arr, other) { + return !!arr.find(i => i.name.value === other.name.value); } - -var FormDataLike = {}; - -var hasRequiredFormDataLike; - -function requireFormDataLike () { - if (hasRequiredFormDataLike) return FormDataLike; - hasRequiredFormDataLike = 1; - Object.defineProperty(FormDataLike, "__esModule", { value: true }); - return FormDataLike; +function mergeNamedTypeArray(first = [], second = [], config = {}) { + const result = [...second, ...first.filter(d => !alreadyExists(second, d))]; + if (config && config.sort) { + result.sort(compareNodes); + } + return result; } -var hasRequiredCjs; - -function requireCjs () { - if (hasRequiredCjs) return cjs; - hasRequiredCjs = 1; - (function (exports) { - var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); - }) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; - })); - var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - __exportStar(requireFormDataEncoder(), exports); - __exportStar(requireFileLike(), exports); - __exportStar(requireFormDataLike(), exports); - __exportStar(requireIsFileLike(), exports); - __exportStar(requireIsFormData(), exports); -} (cjs)); - return cjs; +function mergeType(node, existingNode, config) { + if (existingNode) { + try { + return { + name: node.name, + description: node['description'] || existingNode['description'], + kind: (config === null || config === void 0 ? void 0 : config.convertExtensions) || + node.kind === 'ObjectTypeDefinition' || + existingNode.kind === 'ObjectTypeDefinition' + ? 'ObjectTypeDefinition' + : 'ObjectTypeExtension', + loc: node.loc, + fields: mergeFields(node, node.fields, existingNode.fields, config), + directives: mergeDirectives(node.directives, existingNode.directives, config), + interfaces: mergeNamedTypeArray(node.interfaces, existingNode.interfaces, config), + }; + } + catch (e) { + throw new Error(`Unable to merge GraphQL type "${node.name.value}": ${e.message}`); + } + } + return (config === null || config === void 0 ? void 0 : config.convertExtensions) + ? { + ...node, + kind: Kind.OBJECT_TYPE_DEFINITION, + } + : node; } -const handleFileRequest = handleFileRequest$1; - -var createNodePonyfill$1 = function createNodePonyfill(opts = {}) { - - const ponyfills = {}; - - if (!opts.useNodeFetch) { - ponyfills.fetch = globalThis.fetch; // To enable: import {fetch} from 'cross-fetch' - ponyfills.Headers = globalThis.Headers; - ponyfills.Request = globalThis.Request; - ponyfills.Response = globalThis.Response; - ponyfills.FormData = globalThis.FormData; - ponyfills.File = globalThis.File; - } - - ponyfills.AbortController = globalThis.AbortController; - ponyfills.ReadableStream = globalThis.ReadableStream; - ponyfills.WritableStream = globalThis.WritableStream; - ponyfills.TransformStream = globalThis.TransformStream; - ponyfills.Blob = globalThis.Blob; - ponyfills.crypto = globalThis.crypto; - - if (!globalThis.Event || !globalThis.EventTarget) { - requireEventTargetPolyfill(); - } - - ponyfills.Event = globalThis.Event; - ponyfills.EventTarget = globalThis.EventTarget; - - if (!ponyfills.AbortController) { - const abortControllerModule = require$$2; - ponyfills.AbortController = - abortControllerModule.default || abortControllerModule; - } - - if (!ponyfills.Blob) { - const bufferModule = require$$6$2; - ponyfills.Blob = bufferModule.Blob; - } - - if (!ponyfills.Blob) { - const formDataModule = require$$4; - ponyfills.Blob = formDataModule.Blob; - } - - if (!ponyfills.ReadableStream) { - try { - const streamsWeb = require("stream/web"); - - ponyfills.ReadableStream = streamsWeb.ReadableStream; - ponyfills.WritableStream = streamsWeb.WritableStream; - ponyfills.TransformStream = streamsWeb.TransformStream; - } catch (e) { - const streamsWeb = require$$6; - ponyfills.ReadableStream = streamsWeb.ReadableStream; - ponyfills.WritableStream = streamsWeb.WritableStream; - ponyfills.TransformStream = streamsWeb.TransformStream; +function mergeScalar(node, existingNode, config) { + if (existingNode) { + return { + name: node.name, + description: node['description'] || existingNode['description'], + kind: (config === null || config === void 0 ? void 0 : config.convertExtensions) || + node.kind === 'ScalarTypeDefinition' || + existingNode.kind === 'ScalarTypeDefinition' + ? 'ScalarTypeDefinition' + : 'ScalarTypeExtension', + loc: node.loc, + directives: mergeDirectives(node.directives, existingNode.directives, config), + }; } - } - - ponyfills.btoa = globalThis.btoa; - if (!ponyfills.btoa) { - ponyfills.btoa = function btoa(data) { - return Buffer.from(data, 'binary').toString('base64'); - }; - } + return (config === null || config === void 0 ? void 0 : config.convertExtensions) + ? { + ...node, + kind: Kind.SCALAR_TYPE_DEFINITION, + } + : node; +} - ponyfills.TextEncoder = function TextEncoder(encoding = 'utf-8') { - return { - encode(str) { - return Buffer.from(str, encoding); - } +function mergeUnion(first, second, config) { + if (second) { + return { + name: first.name, + description: first['description'] || second['description'], + // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility + directives: mergeDirectives(first.directives, second.directives, config), + kind: (config === null || config === void 0 ? void 0 : config.convertExtensions) || first.kind === 'UnionTypeDefinition' || second.kind === 'UnionTypeDefinition' + ? Kind.UNION_TYPE_DEFINITION + : Kind.UNION_TYPE_EXTENSION, + loc: first.loc, + types: mergeNamedTypeArray(first.types, second.types, config), + }; } - }; + return (config === null || config === void 0 ? void 0 : config.convertExtensions) + ? { + ...first, + kind: Kind.UNION_TYPE_DEFINITION, + } + : first; +} - ponyfills.TextDecoder = function TextDecoder(encoding = 'utf-8') { - return { - decode(buf) { - return Buffer.from(buf).toString(encoding); - } +const DEFAULT_OPERATION_TYPE_NAME_MAP = { + query: 'Query', + mutation: 'Mutation', + subscription: 'Subscription', +}; +function mergeOperationTypes(opNodeList = [], existingOpNodeList = []) { + const finalOpNodeList = []; + for (const opNodeType in DEFAULT_OPERATION_TYPE_NAME_MAP) { + const opNode = opNodeList.find(n => n.operation === opNodeType) || existingOpNodeList.find(n => n.operation === opNodeType); + if (opNode) { + finalOpNodeList.push(opNode); + } } - }; + return finalOpNodeList; +} +function mergeSchemaDefs(node, existingNode, config) { + if (existingNode) { + return { + kind: node.kind === Kind.SCHEMA_DEFINITION || existingNode.kind === Kind.SCHEMA_DEFINITION + ? Kind.SCHEMA_DEFINITION + : Kind.SCHEMA_EXTENSION, + description: node['description'] || existingNode['description'], + directives: mergeDirectives(node.directives, existingNode.directives, config), + operationTypes: mergeOperationTypes(node.operationTypes, existingNode.operationTypes), + }; + } + return ((config === null || config === void 0 ? void 0 : config.convertExtensions) + ? { + ...node, + kind: Kind.SCHEMA_DEFINITION, + } + : node); +} - // ReadableStream doesn't handle aborting properly, so we need to patch it - ponyfills.ReadableStream = class PonyfillReadableStream extends ponyfills.ReadableStream { - constructor(underlyingSource, ...opts) { - super({ - ...underlyingSource, - cancel: (e) => { - this.cancelled = true; - if (underlyingSource.cancel) { - return underlyingSource.cancel(e); - } +const schemaDefSymbol = 'SCHEMA_DEF_SYMBOL'; +function isNamedDefinitionNode(definitionNode) { + return 'name' in definitionNode; +} +function mergeGraphQLNodes(nodes, config) { + var _a, _b, _c; + const mergedResultMap = {}; + for (const nodeDefinition of nodes) { + if (isNamedDefinitionNode(nodeDefinition)) { + const name = (_a = nodeDefinition.name) === null || _a === void 0 ? void 0 : _a.value; + if (config === null || config === void 0 ? void 0 : config.commentDescriptions) { + collectComment(nodeDefinition); + } + if (name == null) { + continue; + } + if (((_b = config === null || config === void 0 ? void 0 : config.exclusions) === null || _b === void 0 ? void 0 : _b.includes(name + '.*')) || ((_c = config === null || config === void 0 ? void 0 : config.exclusions) === null || _c === void 0 ? void 0 : _c.includes(name))) { + delete mergedResultMap[name]; + } + else { + switch (nodeDefinition.kind) { + case Kind.OBJECT_TYPE_DEFINITION: + case Kind.OBJECT_TYPE_EXTENSION: + mergedResultMap[name] = mergeType(nodeDefinition, mergedResultMap[name], config); + break; + case Kind.ENUM_TYPE_DEFINITION: + case Kind.ENUM_TYPE_EXTENSION: + mergedResultMap[name] = mergeEnum(nodeDefinition, mergedResultMap[name], config); + break; + case Kind.UNION_TYPE_DEFINITION: + case Kind.UNION_TYPE_EXTENSION: + mergedResultMap[name] = mergeUnion(nodeDefinition, mergedResultMap[name], config); + break; + case Kind.SCALAR_TYPE_DEFINITION: + case Kind.SCALAR_TYPE_EXTENSION: + mergedResultMap[name] = mergeScalar(nodeDefinition, mergedResultMap[name], config); + break; + case Kind.INPUT_OBJECT_TYPE_DEFINITION: + case Kind.INPUT_OBJECT_TYPE_EXTENSION: + mergedResultMap[name] = mergeInputType(nodeDefinition, mergedResultMap[name], config); + break; + case Kind.INTERFACE_TYPE_DEFINITION: + case Kind.INTERFACE_TYPE_EXTENSION: + mergedResultMap[name] = mergeInterface(nodeDefinition, mergedResultMap[name], config); + break; + case Kind.DIRECTIVE_DEFINITION: + mergedResultMap[name] = mergeDirective(nodeDefinition, mergedResultMap[name]); + break; + } + } + } + else if (nodeDefinition.kind === Kind.SCHEMA_DEFINITION || nodeDefinition.kind === Kind.SCHEMA_EXTENSION) { + mergedResultMap[schemaDefSymbol] = mergeSchemaDefs(nodeDefinition, mergedResultMap[schemaDefSymbol], config); } - }, ...opts); - this.underlyingSource = underlyingSource; } - [Symbol.asyncIterator]() { - const asyncIterator = super[Symbol.asyncIterator](); - return { - next: (...args) => asyncIterator.next(...args), - throw: (...args) => asyncIterator.throw(...args), - return: async (e) => { - const originalResult = await asyncIterator.return(e); - if (!this.cancelled) { - this.cancelled = true; - if (this.underlyingSource.cancel) { - await this.underlyingSource.cancel(e); + return mergedResultMap; +} + +function mergeTypeDefs(typeSource, config) { + resetComments(); + const doc = { + kind: Kind.DOCUMENT, + definitions: mergeGraphQLTypes(typeSource, { + useSchemaDefinition: true, + forceSchemaDefinition: false, + throwOnConflict: false, + commentDescriptions: false, + ...config, + }), + }; + let result; + if (config === null || config === void 0 ? void 0 : config.commentDescriptions) { + result = printWithComments(doc); + } + else { + result = doc; + } + resetComments(); + return result; +} +function visitTypeSources(typeSource, options, allNodes = [], visitedTypeSources = new Set()) { + if (typeSource && !visitedTypeSources.has(typeSource)) { + visitedTypeSources.add(typeSource); + if (typeof typeSource === 'function') { + visitTypeSources(typeSource(), options, allNodes, visitedTypeSources); + } + else if (Array.isArray(typeSource)) { + for (const type of typeSource) { + visitTypeSources(type, options, allNodes, visitedTypeSources); } - } - return originalResult; } - } - } - async cancel(e) { - const originalResult = !super.locked && await super.cancel(e); - if (!this.cancelled) { - this.cancelled = true; - if (this.underlyingSource.cancel) { - await this.underlyingSource.cancel(e); + else if (isSchema(typeSource)) { + const documentNode = getDocumentNodeFromSchema(typeSource, options); + visitTypeSources(documentNode.definitions, options, allNodes, visitedTypeSources); } - } - return originalResult; - } - }; - - if (!ponyfills.crypto) { - const cryptoModule = crypto__default__default; - ponyfills.crypto = cryptoModule.webcrypto; - } - - if (!ponyfills.crypto) { - const cryptoPonyfill = require$$8; - ponyfills.crypto = new cryptoPonyfill.Crypto(); - } - - // If any of classes of Fetch API is missing, we need to ponyfill them. - if (!ponyfills.fetch || - !ponyfills.Request || - !ponyfills.Headers || - !ponyfills.Response || - !ponyfills.FormData || - !ponyfills.File || - opts.useNodeFetch) { - - const [ - nodeMajorStr, - nodeMinorStr - ] = process.versions.node.split('.'); - - const nodeMajor = parseInt(nodeMajorStr); - const nodeMinor = parseInt(nodeMinorStr); - const getFormDataMethod = requireGetFormDataMethod(); - - if (!opts.useNodeFetch && (nodeMajor > 16 || (nodeMajor === 16 && nodeMinor >= 5))) { - const undici = requireUndici(); - - if (!ponyfills.Headers) { - ponyfills.Headers = undici.Headers; - } - - const OriginalRequest = ponyfills.Request || undici.Request; - - class Request extends OriginalRequest { - constructor(requestOrUrl, options) { - if (typeof requestOrUrl === "string") { - options = options || {}; - if (options.body != null && options.body.read && options.body.on) { - const readable = options.body; - options.body = new ponyfills.ReadableStream({ - pull(controller) { - const chunk = readable.read(); - if (chunk != null) { - controller.enqueue(chunk); - } else { - controller.close(); - } - }, - close(e) { - readable.destroy(e); - } - }); - } - super(requestOrUrl, options); - const contentType = this.headers.get("content-type"); - if (contentType && contentType.startsWith("multipart/form-data")) { - this.headers.set("content-type", contentType.split(', ')[0]); - } - } else { - super(requestOrUrl); - } - this.formData = getFormDataMethod(undici.File, opts.formDataLimits); + else if (isStringTypes(typeSource) || isSourceTypes(typeSource)) { + const documentNode = parse(typeSource, options); + visitTypeSources(documentNode.definitions, options, allNodes, visitedTypeSources); } - } - - ponyfills.Request = Request; - - const originalFetch = ponyfills.fetch || undici.fetch; - - const fetch = function (requestOrUrl, options) { - if (typeof requestOrUrl === "string") { - // We cannot use our ctor because it leaks on Node 18's global fetch - return originalFetch(requestOrUrl, options); + else if (typeof typeSource === 'object' && isDefinitionNode(typeSource)) { + allNodes.push(typeSource); } - if (requestOrUrl.url.startsWith('file:')) { - return handleFileRequest(requestOrUrl.url, ponyfills.Response); + else if (isDocumentNode(typeSource)) { + visitTypeSources(typeSource.definitions, options, allNodes, visitedTypeSources); } - return originalFetch(requestOrUrl); - }; - - ponyfills.fetch = fetch; - - if (!ponyfills.Response) { - ponyfills.Response = undici.Response; - } - - if (!ponyfills.FormData) { - ponyfills.FormData = undici.FormData; - } - - if (!ponyfills.File) { - ponyfills.File = undici.File; - } - } else { - const nodeFetch = require$$12; - const realFetch = ponyfills.fetch || nodeFetch.default || nodeFetch; - if (!ponyfills.Headers) { - ponyfills.Headers = nodeFetch.Headers; - // Sveltekit - if (globalThis.Headers) { - Object.defineProperty(globalThis.Headers, Symbol.hasInstance, { - value(obj) { - return obj && obj.get && obj.set && obj.delete && obj.has && obj.append; - }, - configurable: true, - }); + else { + throw new Error(`typeDefs must contain only strings, documents, schemas, or functions, got ${typeof typeSource}`); } - } - const formDataEncoderModule = requireCjs(); - const streams = Stream$2; - const formDataModule = require$$4; - if (!ponyfills.FormData) { - ponyfills.FormData = formDataModule.FormData; - } - if (!ponyfills.File) { - ponyfills.File = formDataModule.File; - } - - const OriginalRequest = ponyfills.Request || nodeFetch.Request; - - class Request extends OriginalRequest { - constructor(requestOrUrl, options) { - if (typeof requestOrUrl === "string") { - // Support schemaless URIs on the server for parity with the browser. - // Ex: //github.com/ -> https://github.com/ - if (/^\/\//.test(requestOrUrl)) { - requestOrUrl = "https:" + requestOrUrl; - } - options = options || {}; - options.headers = new ponyfills.Headers(options.headers || {}); - options.headers.set('Connection', 'keep-alive'); - if (options.body != null) { - if (options.body[Symbol.toStringTag] === 'FormData') { - const encoder = new formDataEncoderModule.FormDataEncoder(options.body); - for (const headerKey in encoder.headers) { - options.headers.set(headerKey, encoder.headers[headerKey]); + } + return allNodes; +} +function mergeGraphQLTypes(typeSource, config) { + var _a, _b, _c; + resetComments(); + const allNodes = visitTypeSources(typeSource, config); + const mergedNodes = mergeGraphQLNodes(allNodes, config); + if (config === null || config === void 0 ? void 0 : config.useSchemaDefinition) { + // XXX: right now we don't handle multiple schema definitions + const schemaDef = mergedNodes[schemaDefSymbol] || { + kind: Kind.SCHEMA_DEFINITION, + operationTypes: [], + }; + const operationTypes = schemaDef.operationTypes; + for (const opTypeDefNodeType in DEFAULT_OPERATION_TYPE_NAME_MAP) { + const opTypeDefNode = operationTypes.find(operationType => operationType.operation === opTypeDefNodeType); + if (!opTypeDefNode) { + const possibleRootTypeName = DEFAULT_OPERATION_TYPE_NAME_MAP[opTypeDefNodeType]; + const existingPossibleRootType = mergedNodes[possibleRootTypeName]; + if (existingPossibleRootType != null && existingPossibleRootType.name != null) { + operationTypes.push({ + kind: Kind.OPERATION_TYPE_DEFINITION, + type: { + kind: Kind.NAMED_TYPE, + name: existingPossibleRootType.name, + }, + operation: opTypeDefNodeType, + }); } - options.body = streams.Readable.from(encoder.encode()); - } - if (options.body[Symbol.toStringTag] === 'ReadableStream') { - options.body = streams.Readable.fromWeb ? streams.Readable.fromWeb(options.body) : streams.Readable.from(options.body); - } } - super(requestOrUrl, options); - } else { - super(requestOrUrl); - } - this.formData = getFormDataMethod(formDataModule.File, opts.formDataLimits); - } - } - ponyfills.Request = Request; - const fetch = function (requestOrUrl, options) { - if (typeof requestOrUrl === "string") { - return fetch(new Request(requestOrUrl, options)); } - if (requestOrUrl.url.startsWith('file:')) { - return handleFileRequest(requestOrUrl.url, ponyfills.Response); + if (((_a = schemaDef === null || schemaDef === void 0 ? void 0 : schemaDef.operationTypes) === null || _a === void 0 ? void 0 : _a.length) != null && schemaDef.operationTypes.length > 0) { + mergedNodes[schemaDefSymbol] = schemaDef; } - return realFetch(requestOrUrl); - }; - - ponyfills.fetch = fetch; + } + if ((config === null || config === void 0 ? void 0 : config.forceSchemaDefinition) && !((_c = (_b = mergedNodes[schemaDefSymbol]) === null || _b === void 0 ? void 0 : _b.operationTypes) === null || _c === void 0 ? void 0 : _c.length)) { + mergedNodes[schemaDefSymbol] = { + kind: Kind.SCHEMA_DEFINITION, + operationTypes: [ + { + kind: Kind.OPERATION_TYPE_DEFINITION, + operation: 'query', + type: { + kind: Kind.NAMED_TYPE, + name: { + kind: Kind.NAME, + value: 'Query', + }, + }, + }, + ], + }; + } + const mergedNodeDefinitions = Object.values(mergedNodes); + if (config === null || config === void 0 ? void 0 : config.sort) { + const sortFn = typeof config.sort === 'function' ? config.sort : defaultStringComparator; + mergedNodeDefinitions.sort((a, b) => { var _a, _b; return sortFn((_a = a.name) === null || _a === void 0 ? void 0 : _a.value, (_b = b.name) === null || _b === void 0 ? void 0 : _b.value); }); + } + return mergedNodeDefinitions; +} - const OriginalResponse = ponyfills.Response || nodeFetch.Response; - ponyfills.Response = function Response(body, init) { - if (body != null && body[Symbol.toStringTag] === 'ReadableStream') { - const actualBody = streams.Readable.fromWeb ? streams.Readable.fromWeb(body) : streams.Readable.from(body, { - emitClose: true, - autoDestroy: true, - }); - actualBody.on('pause', () => { - body.cancel(); - }); - actualBody.on('close', () => { - body.cancel(); - }); - // Polyfill ReadableStream is not working well with node-fetch's Response - return new OriginalResponse(actualBody, init); +function mergeExtensions(extensions) { + return mergeDeep(extensions); +} +function applyExtensionObject(obj, extensions) { + if (!obj) { + return; + } + obj.extensions = mergeDeep([obj.extensions || {}, extensions || {}]); +} +function applyExtensions(schema, extensions) { + applyExtensionObject(schema, extensions.schemaExtensions); + for (const [typeName, data] of Object.entries(extensions.types || {})) { + const type = schema.getType(typeName); + if (type) { + applyExtensionObject(type, data.extensions); + if (data.type === 'object' || data.type === 'interface') { + for (const [fieldName, fieldData] of Object.entries(data.fields)) { + const field = type.getFields()[fieldName]; + if (field) { + applyExtensionObject(field, fieldData.extensions); + for (const [arg, argData] of Object.entries(fieldData.arguments)) { + applyExtensionObject(field.args.find(a => a.name === arg), argData); + } + } + } + } + else if (data.type === 'input') { + for (const [fieldName, fieldData] of Object.entries(data.fields)) { + const field = type.getFields()[fieldName]; + applyExtensionObject(field, fieldData.extensions); + } + } + else if (data.type === 'enum') { + for (const [valueName, valueData] of Object.entries(data.values)) { + const value = type.getValue(valueName); + applyExtensionObject(value, valueData); + } + } } - return new OriginalResponse(body, init); - }; + } + return schema; +} +/** + * Builds a schema from the provided type definitions and resolvers. + * + * The type definitions are written using Schema Definition Language (SDL). They + * can be provided as a string, a `DocumentNode`, a function, or an array of any + * of these. If a function is provided, it will be passed no arguments and + * should return an array of strings or `DocumentNode`s. + * + * Note: You can use GraphQL magic comment provide additional syntax + * highlighting in your editor (with the appropriate editor plugin). + * + * ```js + * const typeDefs = /* GraphQL *\/ ` + * type Query { + * posts: [Post] + * author(id: Int!): Author + * } + * `; + * ``` + * + * The `resolvers` object should be a map of type names to nested object, which + * themselves map the type's fields to their appropriate resolvers. + * See the [Resolvers](/docs/resolvers) section of the documentation for more details. + * + * ```js + * const resolvers = { + * Query: { + * posts: (obj, args, ctx, info) => getAllPosts(), + * author: (obj, args, ctx, info) => getAuthorById(args.id) + * } + * }; + * ``` + * + * Once you've defined both the `typeDefs` and `resolvers`, you can create your + * schema: + * + * ```js + * const schema = makeExecutableSchema({ + * typeDefs, + * resolvers, + * }) + * ``` + */ +function makeExecutableSchema({ typeDefs, resolvers = {}, resolverValidationOptions = {}, inheritResolversFromInterfaces = false, updateResolversInPlace = false, schemaExtensions, ...otherOptions }) { + // Validate and clean up arguments + if (typeof resolverValidationOptions !== 'object') { + throw new Error('Expected `resolverValidationOptions` to be an object'); } - } - return ponyfills; -}; + if (!typeDefs) { + throw new Error('Must provide typeDefs'); + } + let schema; + if (isSchema(typeDefs)) { + schema = typeDefs; + } + else if (otherOptions === null || otherOptions === void 0 ? void 0 : otherOptions.commentDescriptions) { + const mergedTypeDefs = mergeTypeDefs(typeDefs, { + ...otherOptions, + commentDescriptions: true, + }); + schema = buildSchema(mergedTypeDefs, otherOptions); + } + else { + const mergedTypeDefs = mergeTypeDefs(typeDefs, otherOptions); + schema = buildASTSchema(mergedTypeDefs, otherOptions); + } + // We allow passing in an array of resolver maps, in which case we merge them + schema = addResolversToSchema({ + schema, + resolvers: mergeResolvers(resolvers), + resolverValidationOptions, + inheritResolversFromInterfaces, + updateResolversInPlace, + }); + if (Object.keys(resolverValidationOptions).length > 0) { + assertResolversPresent(schema, resolverValidationOptions); + } + if (schemaExtensions) { + schemaExtensions = mergeExtensions(asArray$1(schemaExtensions)); + applyExtensions(schema, schemaExtensions); + } + return schema; +} -const createNodePonyfill = createNodePonyfill$1; -const ponyfills = createNodePonyfill(); - -var fetch$1 = ponyfills.fetch; -ponyfills.Headers; -var Request$1 = ponyfills.Request; -var Response$1 = ponyfills.Response; -ponyfills.FormData; -ponyfills.AbortController; -var ReadableStream = ponyfills.ReadableStream; -ponyfills.WritableStream; -ponyfills.TransformStream; -ponyfills.Blob; -ponyfills.File; -ponyfills.crypto; -ponyfills.btoa; -ponyfills.TextEncoder; -ponyfills.TextDecoder; -ponyfills.Event; -ponyfills.EventTarget; +var fetch$1 = globalThis.fetch; // To enable: import {fetch} from 'cross-fetch' +var Request$1 = globalThis.Request; +var Response$1 = globalThis.Response; +var ReadableStream = globalThis.ReadableStream; async function processRequest({ request, params, enveloped, fetchAPI, onResultProcessHooks, }) { // Parse GraphQLParams @@ -150874,7 +26440,7 @@ function ErrorBoundary(props) { } function ErrorMessage(props) { - return ssr(_tmpl$$2, ssrHydrationKey(), "padding:" + "16px", "background-color:" + "rgba(252, 165, 165)" + (";color:" + "rgb(153, 27, 27)") + (";border-radius:" + "5px") + (";overflow:" + "scroll") + (";padding:" + "16px") + (";margin-bottom:" + "8px"), "font-weight:" + "bold", escape$1(props.error.message), "color:" + "rgba(252, 165, 165)" + (";background-color:" + "rgb(153, 27, 27)") + (";border-radius:" + "5px") + (";padding:" + "4px 8px"), "margin-top:" + "8px" + (";width:" + "100%"), escape$1(props.error.stack)); + return ssr(_tmpl$$2, ssrHydrationKey(), "padding:" + "16px", "background-color:" + "rgba(252, 165, 165)" + (";color:" + "rgb(153, 27, 27)") + (";border-radius:" + "5px") + (";overflow:" + "scroll") + (";padding:" + "16px") + (";margin-bottom:" + "8px"), "font-weight:" + "bold", escape(props.error.message), "color:" + "rgba(252, 165, 165)" + (";background-color:" + "rgb(153, 27, 27)") + (";border-radius:" + "5px") + (";padding:" + "4px 8px"), "margin-top:" + "8px" + (";width:" + "100%"), escape(props.error.stack)); } const _tmpl$$1 = ["

hello

", ""], @@ -150882,7 +26448,7 @@ const _tmpl$$1 = ["

hello

", ""], const gql = String.raw; function Home() { const [mounted, setMount] = createSignal(false); - return ssr(_tmpl$$1, ssrHydrationKey(), escape$1(createComponent(Show, { + return ssr(_tmpl$$1, ssrHydrationKey(), escape(createComponent(Show, { get when() { return mounted(); }, @@ -150902,7 +26468,7 @@ const GqlQueryTest = props => { const data = () => result.latest ? JSON.stringify(result.latest) : undefined; - return ssr(_tmpl$2$1, ssrHydrationKey(), escape$1(data)); + return ssr(_tmpl$2$1, ssrHydrationKey(), escape(data)); }; /// @@ -150946,7 +26512,7 @@ function getAssetsFromManifest(manifest, routerContext) { }, []); match.push(...(manifest["entry-client"] || [])); const links = match.reduce((r, src) => { - r[src.href] = src.type === "style" ? ssr(_tmpl$, ssrHydrationKey(), ssrAttribute("href", escape$1(src.href, true), false)) : src.type === "script" ? ssr(_tmpl$2, ssrHydrationKey(), ssrAttribute("href", escape$1(src.href, true), false)) : undefined; + r[src.href] = src.type === "style" ? ssr(_tmpl$, ssrHydrationKey(), ssrAttribute("href", escape(src.href, true), false)) : src.type === "script" ? ssr(_tmpl$2, ssrHydrationKey(), ssrAttribute("href", escape(src.href, true), false)) : undefined; return r; }, {}); return Object.values(links); @@ -150985,7 +26551,7 @@ function Scripts() { const context = useContext(ServerContext); return [createComponent(HydrationScript, {}), isIslands , createComponent(NoHydration, { get children() { - return (ssr(_tmpl$4, ssrHydrationKey(), ssrAttribute("src", escape$1(context.env.manifest["entry-client"][0].href, true), false)) ); + return (ssr(_tmpl$4, ssrHydrationKey(), ssrAttribute("src", escape(context.env.manifest["entry-client"][0].href, true), false)) ); } }), isDev ]; diff --git a/package.json b/package.json index 6f8b0d9..9c39918 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "@cloudflare/workers-types": "^3.16.0", "autoprefixer": "^10.4.9", "postcss": "^8.4.17", + "prettier": "^2.7.1", "solid-start-node": "0.1.2", "tailwindcss": "^3.1.8", "typescript": "^4.8.3", @@ -31,5 +32,11 @@ }, "engines": { "node": ">=16" + }, + "pnpm": { + "patchedDependencies": { + "solid-start-cloudflare-workers@0.1.2": "patches/solid-start-cloudflare-workers@0.1.2.patch", + "solid-js@1.5.7": "patches/solid-js@1.5.7.patch" + } } } diff --git a/patches/solid-js@1.5.7.patch b/patches/solid-js@1.5.7.patch new file mode 100644 index 0000000..836d818 --- /dev/null +++ b/patches/solid-js@1.5.7.patch @@ -0,0 +1,45 @@ +diff --git a/package.json b/package.json +index aed77eecf35d60f3a568e3b6ca4ff911ce6bc384..8478b2ebeba3c59e32bc8101cecf44cd22e35b3f 100644 +--- a/package.json ++++ b/package.json +@@ -11,10 +11,6 @@ + }, + "main": "./dist/server.cjs", + "module": "./dist/server.js", +- "browser": { +- "./dist/server.cjs": "./dist/solid.cjs", +- "./dist/server.js": "./dist/solid.js" +- }, + "unpkg": "./dist/solid.cjs", + "types": "types/index.d.ts", + "sideEffects": false, +diff --git a/store/package.json b/store/package.json +index 252dd14b8c3c4b9c2bd84cc9c117176912b5b223..ffd2889042a12c4ca352779ddc84c8f571789060 100644 +--- a/store/package.json ++++ b/store/package.json +@@ -2,10 +2,6 @@ + "name": "solid-js/store", + "main": "./dist/server.cjs", + "module": "./dist/server.js", +- "browser": { +- "./dist/server.cjs": "./dist/store.cjs", +- "./dist/server.js": "./dist/store.js" +- }, + "unpkg": "./dist/store.cjs", + "types": "./types/index.d.ts", + "type": "module", +diff --git a/web/package.json b/web/package.json +index fee7a002f4418f67b2f9f2c6fd202e2c94fc5e21..f4b2a9881a58ecf0f5d3412d6d415e57579e9f74 100644 +--- a/web/package.json ++++ b/web/package.json +@@ -2,10 +2,6 @@ + "name": "solid-js/web", + "main": "./dist/server.cjs", + "module": "./dist/server.js", +- "browser": { +- "./dist/server.cjs": "./dist/web.cjs", +- "./dist/server.js": "./dist/web.js" +- }, + "unpkg": "./dist/web.cjs", + "types": "./types/index.d.ts", + "type": "module", \ No newline at end of file diff --git a/patches/solid-start-cloudflare-workers@0.1.2.patch b/patches/solid-start-cloudflare-workers@0.1.2.patch new file mode 100644 index 0000000..d55992b --- /dev/null +++ b/patches/solid-start-cloudflare-workers@0.1.2.patch @@ -0,0 +1,12 @@ +diff --git a/index.js b/index.js +index 13a5e1623c4ad5bf6ab02e3702af16d25221db9d..a59cda2ac15f896272e424dafc926a4659bc62b8 100644 +--- a/index.js ++++ b/index.js +@@ -156,6 +156,7 @@ export default function (miniflareOptions = {}) { + plugins: [ + json(), + nodeResolve({ ++ browser: true, + preferBuiltins: true, + exportConditions: ["worker", "solid"] + }), \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6d7ba99..d1be27f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,5 +1,13 @@ lockfileVersion: 5.4 +patchedDependencies: + solid-start-cloudflare-workers@0.1.2: + hash: 5h2llpbinmishlbotuuyks7hpa + path: patches/solid-start-cloudflare-workers@0.1.2.patch + solid-js@1.5.7: + hash: rioon2l6g4t5h43ht6tz6zjuqa + path: patches/solid-js@1.5.7.patch + specifiers: '@cloudflare/kv-asset-handler': ^0.2.0 '@cloudflare/workers-types': ^3.16.0 @@ -10,6 +18,7 @@ specifiers: graphql: ^16.6.0 graphql-request: ^5.0.0 postcss: ^8.4.17 + prettier: ^2.7.1 solid-js: ^1.5.4 solid-start: 0.1.2 solid-start-cloudflare-workers: 0.1.2 @@ -27,15 +36,16 @@ dependencies: '@solidjs/router': 0.4.3_solid-js@1.5.7 graphql: 16.6.0 graphql-request: 5.0.0_graphql@16.6.0 - solid-js: 1.5.7 + solid-js: 1.5.7_rioon2l6g4t5h43ht6tz6zjuqa solid-start: 0.1.2_662kx2gjxcetvfdkelauuogf74 - solid-start-cloudflare-workers: 0.1.2_i4s6w6snrdvhjfq77cecmee5xi + solid-start-cloudflare-workers: 0.1.2_5h2llpbinmishlbotuuyks7hpa_i4s6w6snrdvhjfq77cecmee5xi undici: 5.10.0 devDependencies: '@cloudflare/workers-types': 3.16.0 autoprefixer: 10.4.12_postcss@8.4.17 postcss: 8.4.17 + prettier: 2.7.1 solid-start-node: 0.1.2_hhozajrnao2lncwjabox4yrie4 tailwindcss: 3.1.8_postcss@8.4.17 typescript: 4.8.4 @@ -1631,14 +1641,14 @@ packages: peerDependencies: solid-js: '>=1.4.0' dependencies: - solid-js: 1.5.7 + solid-js: 1.5.7_rioon2l6g4t5h43ht6tz6zjuqa /@solidjs/router/0.4.3_solid-js@1.5.7: resolution: {integrity: sha512-mYpd4HxpH/3UZjHGTr2dhvPGXu034Ktxd05CJGA6nRjRGYCgUfhCQHRdEivyqJyb4LhHyDht4ny5xmwEOkUTaQ==} peerDependencies: solid-js: ^1.3.5 dependencies: - solid-js: 1.5.7 + solid-js: 1.5.7_rioon2l6g4t5h43ht6tz6zjuqa /@types/better-sqlite3/7.6.0: resolution: {integrity: sha512-rnSP9vY+fVsF3iJja5yRGBJV63PNBiezJlYrCkqUmQWFoB16cxAHwOkjsAYEu317miOfKaJpa65cbp0P4XJ/jw==} @@ -3458,6 +3468,12 @@ packages: picocolors: 1.0.0 source-map-js: 1.0.2 + /prettier/2.7.1: + resolution: {integrity: sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==} + engines: {node: '>=10.13.0'} + hasBin: true + dev: true + /pretty-bytes/6.0.0: resolution: {integrity: sha512-6UqkYefdogmzqAZWzJ7laYeJnaXDy2/J+ZqiiMtS7t7OfpXWTlaeGMwX8U6EFvPV/YWWEKRkS8hKS4k60WHTOg==} engines: {node: ^14.13.1 || >=16.0.0} @@ -3678,10 +3694,11 @@ packages: mrmime: 1.0.1 totalist: 3.0.0 - /solid-js/1.5.7: + /solid-js/1.5.7_rioon2l6g4t5h43ht6tz6zjuqa: resolution: {integrity: sha512-L1UuyMuZZARAwzXo5NZDhE6yxc14aqNbVOUoGzvlcxRZo1Cm4ExhPV0diEfwDyiKG/igqNNLkNurHkXiI5sVEg==} dependencies: csstype: 3.1.1 + patched: true /solid-refresh/0.4.1_solid-js@1.5.7: resolution: {integrity: sha512-v3tD/OXQcUyXLrWjPW1dXZyeWwP7/+GQNs8YTL09GBq+5FguA6IejJWUvJDrLIA4M0ho9/5zK2e9n+uy+4488g==} @@ -3691,9 +3708,9 @@ packages: '@babel/generator': 7.19.3 '@babel/helper-module-imports': 7.18.6 '@babel/types': 7.19.3 - solid-js: 1.5.7 + solid-js: 1.5.7_rioon2l6g4t5h43ht6tz6zjuqa - /solid-start-cloudflare-workers/0.1.2_i4s6w6snrdvhjfq77cecmee5xi: + /solid-start-cloudflare-workers/0.1.2_5h2llpbinmishlbotuuyks7hpa_i4s6w6snrdvhjfq77cecmee5xi: resolution: {integrity: sha512-nChCRswMA4TMPRskGqD+dbLXCbP1sVekjMGvgeZjiJw334VScoK45bLyCOOzcDtDWQNsO4T0vV1C1vkFGv7LDw==} peerDependencies: solid-start: '*' @@ -3722,6 +3739,7 @@ packages: - ioredis - utf-8-validate dev: false + patched: true /solid-start-node/0.1.2_hhozajrnao2lncwjabox4yrie4: resolution: {integrity: sha512-bPLfNvN4UWSujNDG4LgbCyJh5OtgisWKreYNj+VXL2YG64Lk3trW7QPm56GKqRWQ+n+wa6xgsqDy+imxnd9EzQ==} @@ -3780,7 +3798,7 @@ packages: rollup-route-manifest: 1.0.0_rollup@2.79.1 sade: 1.8.1 sirv: 2.0.2 - solid-js: 1.5.7 + solid-js: 1.5.7_rioon2l6g4t5h43ht6tz6zjuqa terser: 5.15.0 undici: 5.10.0 vite: 3.1.4 @@ -4025,7 +4043,7 @@ packages: '@babel/preset-typescript': 7.18.6_@babel+core@7.19.3 babel-preset-solid: 1.5.7_@babel+core@7.19.3 merge-anything: 5.0.4 - solid-js: 1.5.7 + solid-js: 1.5.7_rioon2l6g4t5h43ht6tz6zjuqa solid-refresh: 0.4.1_solid-js@1.5.7 vite: 3.1.4 transitivePeerDependencies: diff --git a/wrangler.toml b/wrangler.toml index 9fc1825..fb3edd6 100644 --- a/wrangler.toml +++ b/wrangler.toml @@ -3,8 +3,7 @@ compatibility_date = "2022-09-30" send_metrics = false -main = "./.solid/server/server.js" -# main = "./dist/server.js" +main = "./dist/server.js" [site] bucket= "./dist/public"