/
githubmirror
/
deno
Обзор
Документация
Войти
/
githubmirror
/
deno
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
libs/eszip/testdata/dotland.json
346 строк
542 KB
David Sherret
refactor: add deno_lockfile, deno_npm, and eszip to repo (#32085)
10 фев 2026, 22:27
Не верифицирован
10 фев 2026, 22:27
1f36bf7
Код
Авторство
О чём код?
{ "version": 1, "modules": { "https://esm.sh/twas@2.1.2": { "Source": { "source": "/* esm.sh - twas@2.1.2 */\nexport * from \"https://cdn.esm.sh/v64/twas@2.1.2/deno/twas.js\";\nexport { default } from \"https://cdn.esm.sh/v64/twas@2.1.2/deno/twas.js\";\n", "transpiled": null, "content_type": "application/javascript; charset=utf-8", "deps": [ "https://cdn.esm.sh/v64/twas@2.1.2/deno/twas.js", "https://cdn.esm.sh/v64/twas@2.1.2/deno/twas.js" ] } }, "https://deno.land/std@0.108.0/async/delay.ts": { "Source": { "source": "// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.\n\nexport interface DelayOptions {\n signal?: AbortSignal;\n}\n\n/* Resolves after the given number of milliseconds. */\nexport function delay(ms: number, options: DelayOptions = {}): Promise<void> {\n const { signal } = options;\n return new Promise((resolve, reject): void => {\n const abort = () => {\n clearTimeout(i);\n reject(new DOMException(\"Delay was aborted.\", \"AbortError\"));\n };\n const done = () => {\n signal?.removeEventListener(\"abort\", abort);\n resolve();\n };\n const i = setTimeout(done, ms);\n signal?.addEventListener(\"abort\", abort, { once: true });\n });\n}\n", "transpiled": "/* Resolves after the given number of milliseconds. */ export function delay(ms, options = {\n}) {\n const { signal } = options;\n return new Promise((resolve, reject)=>{\n const abort = ()=>{\n clearTimeout(i);\n reject(new DOMException(\"Delay was aborted.\", \"AbortError\"));\n };\n const done = ()=>{\n signal?.removeEventListener(\"abort\", abort);\n resolve();\n };\n const i = setTimeout(done, ms);\n signal?.addEventListener(\"abort\", abort, {\n once: true\n });\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIjxodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4xMDguMC9hc3luYy9kZWxheS50cz4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsRUFBc0QsQUFBdEQsa0RBQXNELEFBQXRELEVBQXNELENBQ3RELE1BQU0sVUFBVSxLQUFLLENBQUMsRUFBVSxFQUFFLE9BQXFCLEdBQUcsQ0FBQztBQUFBLENBQUMsRUFBaUIsQ0FBQztJQUM1RSxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBQyxDQUFDLEdBQUcsT0FBTztJQUMxQixNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxHQUFXLENBQUM7UUFDN0MsS0FBSyxDQUFDLEtBQUssT0FBUyxDQUFDO1lBQ25CLFlBQVksQ0FBQyxDQUFDO1lBQ2QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBb0IscUJBQUUsQ0FBWTtRQUM1RCxDQUFDO1FBQ0QsS0FBSyxDQUFDLElBQUksT0FBUyxDQUFDO1lBQ2xCLE1BQU0sRUFBRSxtQkFBbUIsQ0FBQyxDQUFPLFFBQUUsS0FBSztZQUMxQyxPQUFPO1FBQ1QsQ0FBQztRQUNELEtBQUssQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLElBQUksRUFBRSxFQUFFO1FBQzdCLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFPLFFBQUUsS0FBSyxFQUFFLENBQUM7WUFBQyxJQUFJLEVBQUUsSUFBSTtRQUFDLENBQUM7SUFDekQsQ0FBQztBQUNILENBQUMifQ==", "content_type": "application/typescript; charset=utf-8", "deps": [] } }, "https://deno.land/x/oak_commons@0.1.1/negotiation.ts": { "Source": { "source": "// Copyright 2018-2021 the oak authors. All rights reserved. MIT license.\n\nimport { preferredEncodings } from \"./negotiation/encoding.ts\";\nimport { preferredLanguages } from \"./negotiation/language.ts\";\nimport { preferredMediaTypes } from \"./negotiation/mediaType.ts\";\n\nexport type Request = {\n headers: {\n get(key: string): string | null;\n };\n};\n\n/** Returns an array of media types accepted by the request, in order of\n * preference. If there are no media types supplied in the request, then any\n * media type selector will be returned. */\nexport function accepts(request: Request): string[];\n/** For a given set of media types, return the best match accepted in the\n * request. If no media type matches, then the function returns `undefined`. */\nexport function accepts(\n request: Request,\n ...types: string[]\n): string | undefined;\nexport function accepts(\n request: Request,\n ...types: string[]\n): string | string[] | undefined {\n const accept = request.headers.get(\"accept\");\n return types.length\n ? accept ? preferredMediaTypes(accept, types)[0] : types[0]\n : accept\n ? preferredMediaTypes(accept)\n : [\"*/*\"];\n}\n\n/** Returns an array of content encodings accepted by the request, in order of\n * preference. If there are no encoding supplied in the request, then `[\"*\"]`\n * is returned, implying any encoding is accepted. */\nexport function acceptsEncodings(request: Request): string[];\n/** For a given set of content encodings, return the best match accepted in the\n * request. If no content encodings match, then the function returns\n * `undefined`.\n *\n * **NOTE:** You should always supply `identity` as one of the encodings\n * to ensure that there is a match when the `Accept-Encoding` header is part\n * of the request. */\nexport function acceptsEncodings(\n request: Request,\n ...encodings: string[]\n): string | undefined;\nexport function acceptsEncodings(\n request: Request,\n ...encodings: string[]\n): string | string[] | undefined {\n const acceptEncoding = request.headers.get(\"accept-encoding\");\n return encodings.length\n ? acceptEncoding\n ? preferredEncodings(acceptEncoding, encodings)[0]\n : encodings[0]\n : acceptEncoding\n ? preferredEncodings(acceptEncoding)\n : [\"*\"];\n}\n\n/** Returns an array of languages accepted by the request, in order of\n * preference. If there are no languages supplied in the request, then `[\"*\"]`\n * is returned, imply any language is accepted. */\nexport function acceptsLanguages(request: Request): string[];\n/** For a given set of languages, return the best match accepted in the request.\n * If no languages match, then the function returns `undefined`. */\nexport function acceptsLanguages(\n request: Request,\n ...langs: string[]\n): string | undefined;\nexport function acceptsLanguages(\n request: Request,\n ...langs: string[]\n): string | string[] | undefined {\n const acceptLanguage = request.headers.get(\"accept-language\");\n return langs.length\n ? acceptLanguage ? preferredLanguages(acceptLanguage, langs)[0] : langs[0]\n : acceptLanguage\n ? preferredLanguages(acceptLanguage)\n : [\"*\"];\n}\n", "transpiled": "// Copyright 2018-2021 the oak authors. All rights reserved. MIT license.\nimport { preferredEncodings } from \"./negotiation/encoding.ts\";\nimport { preferredLanguages } from \"./negotiation/language.ts\";\nimport { preferredMediaTypes } from \"./negotiation/mediaType.ts\";\nexport function accepts(request, ...types) {\n const accept = request.headers.get(\"accept\");\n return types.length ? accept ? preferredMediaTypes(accept, types)[0] : types[0] : accept ? preferredMediaTypes(accept) : [\n \"*/*\"\n ];\n}\nexport function acceptsEncodings(request, ...encodings) {\n const acceptEncoding = request.headers.get(\"accept-encoding\");\n return encodings.length ? acceptEncoding ? preferredEncodings(acceptEncoding, encodings)[0] : encodings[0] : acceptEncoding ? preferredEncodings(acceptEncoding) : [\n \"*\"\n ];\n}\nexport function acceptsLanguages(request, ...langs) {\n const acceptLanguage = request.headers.get(\"accept-language\");\n return langs.length ? acceptLanguage ? preferredLanguages(acceptLanguage, langs)[0] : langs[0] : acceptLanguage ? preferredLanguages(acceptLanguage) : [\n \"*\"\n ];\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIjxodHRwczovL2Rlbm8ubGFuZC94L29ha19jb21tb25zQDAuMS4xL25lZ290aWF0aW9uLnRzPiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxFQUF5RSxBQUF6RSx1RUFBeUU7QUFFekUsTUFBTSxHQUFHLGtCQUFrQixRQUFRLENBQTJCO0FBQzlELE1BQU0sR0FBRyxrQkFBa0IsUUFBUSxDQUEyQjtBQUM5RCxNQUFNLEdBQUcsbUJBQW1CLFFBQVEsQ0FBNEI7QUFrQmhFLE1BQU0sVUFBVSxPQUFPLENBQ3JCLE9BQWdCLEtBQ2IsS0FBSyxFQUN1QixDQUFDO0lBQ2hDLEtBQUssQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBUTtJQUMzQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FDZixNQUFNLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsSUFDeEQsTUFBTSxHQUNOLG1CQUFtQixDQUFDLE1BQU0sSUFDMUIsQ0FBQztRQUFBLENBQUs7SUFBQSxDQUFDO0FBQ2IsQ0FBQztBQWlCRCxNQUFNLFVBQVUsZ0JBQWdCLENBQzlCLE9BQWdCLEtBQ2IsU0FBUyxFQUNtQixDQUFDO0lBQ2hDLEtBQUssQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBaUI7SUFDNUQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQ25CLGNBQWMsR0FDWixrQkFBa0IsQ0FBQyxjQUFjLEVBQUUsU0FBUyxFQUFFLENBQUMsSUFDL0MsU0FBUyxDQUFDLENBQUMsSUFDYixjQUFjLEdBQ2Qsa0JBQWtCLENBQUMsY0FBYyxJQUNqQyxDQUFDO1FBQUEsQ0FBRztJQUFBLENBQUM7QUFDWCxDQUFDO0FBWUQsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixPQUFnQixLQUNiLEtBQUssRUFDdUIsQ0FBQztJQUNoQyxLQUFLLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQWlCO0lBQzVELE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUNmLGNBQWMsR0FBRyxrQkFBa0IsQ0FBQyxjQUFjLEVBQUUsS0FBSyxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxJQUN2RSxjQUFjLEdBQ2Qsa0JBQWtCLENBQUMsY0FBYyxJQUNqQyxDQUFDO1FBQUEsQ0FBRztJQUFBLENBQUM7QUFDWCxDQUFDIn0=", "content_type": "application/typescript; charset=utf-8", "deps": [ "https://deno.land/x/oak_commons@0.1.1/negotiation/encoding.ts", "https://deno.land/x/oak_commons@0.1.1/negotiation/language.ts", "https://deno.land/x/oak_commons@0.1.1/negotiation/mediaType.ts" ] } }, "https://deno.land/x/oak_commons@0.1.1/negotiation/common.ts": { "Source": { "source": "/*!\n * Adapted directly from negotiator at https://github.com/jshttp/negotiator/\n * which is licensed as follows:\n *\n * (The MIT License)\n *\n * Copyright (c) 2012-2014 Federico Romero\n * Copyright (c) 2012-2014 Isaac Z. Schlueter\n * Copyright (c) 2014-2015 Douglas Christopher Wilson\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * 'Software'), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\nexport interface Specificity {\n i: number;\n o?: number;\n q: number;\n s?: number;\n}\n\nexport function compareSpecs(a: Specificity, b: Specificity): number {\n return (\n b.q - a.q ||\n (b.s ?? 0) - (a.s ?? 0) ||\n (a.o ?? 0) - (b.o ?? 0) ||\n a.i - b.i ||\n 0\n );\n}\n\nexport function isQuality(spec: Specificity): boolean {\n return spec.q > 0;\n}\n", "transpiled": "export function compareSpecs(a, b) {\n return b.q - a.q || (b.s ?? 0) - (a.s ?? 0) || (a.o ?? 0) - (b.o ?? 0) || a.i - b.i || 0;\n}\nexport function isQuality(spec) {\n return spec.q > 0;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIjxodHRwczovL2Rlbm8ubGFuZC94L29ha19jb21tb25zQDAuMS4xL25lZ290aWF0aW9uL2NvbW1vbi50cz4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBcUNBLE1BQU0sVUFBVSxZQUFZLENBQUMsQ0FBYyxFQUFFLENBQWMsRUFBVSxDQUFDO0lBQ3BFLE1BQU0sQ0FDSixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQ1IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQ3JCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUN0QixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQ1QsQ0FBQztBQUVMLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFDLElBQWlCLEVBQVcsQ0FBQztJQUNyRCxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQ25CLENBQUMifQ==", "content_type": "application/typescript; charset=utf-8", "deps": [] } }, "https://deno.land/x/oak_commons@0.1.1/negotiation/mediaType.ts": { "Source": { "source": "/*!\n * Adapted directly from negotiator at https://github.com/jshttp/negotiator/\n * which is licensed as follows:\n *\n * (The MIT License)\n *\n * Copyright (c) 2012-2014 Federico Romero\n * Copyright (c) 2012-2014 Isaac Z. Schlueter\n * Copyright (c) 2014-2015 Douglas Christopher Wilson\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * 'Software'), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\nimport { compareSpecs, isQuality, Specificity } from \"./common.ts\";\n\ninterface MediaTypeSpecificity extends Specificity {\n type: string;\n subtype: string;\n params: { [param: string]: string | undefined };\n}\n\nconst simpleMediaTypeRegExp = /^\\s*([^\\s\\/;]+)\\/([^;\\s]+)\\s*(?:;(.*))?$/;\n\nfunction quoteCount(str: string): number {\n let count = 0;\n let index = 0;\n\n while ((index = str.indexOf(`\"`, index)) !== -1) {\n count++;\n index++;\n }\n\n return count;\n}\n\nfunction splitMediaTypes(accept: string): string[] {\n const accepts = accept.split(\",\");\n\n let j = 0;\n for (let i = 1; i < accepts.length; i++) {\n if (quoteCount(accepts[j]) % 2 === 0) {\n accepts[++j] = accepts[i];\n } else {\n accepts[j] += `,${accepts[i]}`;\n }\n }\n\n accepts.length = j + 1;\n\n return accepts;\n}\n\nfunction splitParameters(str: string): string[] {\n const parameters = str.split(\";\");\n\n let j = 0;\n for (let i = 1; i < parameters.length; i++) {\n if (quoteCount(parameters[j]) % 2 === 0) {\n parameters[++j] = parameters[i];\n } else {\n parameters[j] += `;${parameters[i]}`;\n }\n }\n\n parameters.length = j + 1;\n\n return parameters.map((p) => p.trim());\n}\n\nfunction splitKeyValuePair(str: string): [string, string | undefined] {\n const [key, value] = str.split(\"=\");\n return [key.toLowerCase(), value];\n}\n\nfunction parseMediaType(\n str: string,\n i: number,\n): MediaTypeSpecificity | undefined {\n const match = simpleMediaTypeRegExp.exec(str);\n\n if (!match) {\n return;\n }\n\n const params: { [param: string]: string | undefined } = Object.create(null);\n let q = 1;\n const [, type, subtype, parameters] = match;\n\n if (parameters) {\n const kvps = splitParameters(parameters).map(splitKeyValuePair);\n\n for (const [key, val] of kvps) {\n const value = val && val[0] === `\"` && val[val.length - 1] === `\"`\n ? val.substr(1, val.length - 2)\n : val;\n\n if (key === \"q\" && value) {\n q = parseFloat(value);\n break;\n }\n\n params[key] = value;\n }\n }\n\n return { type, subtype, params, q, i };\n}\n\nfunction parseAccept(accept: string): MediaTypeSpecificity[] {\n const accepts = splitMediaTypes(accept);\n\n const mediaTypes: MediaTypeSpecificity[] = [];\n for (let i = 0; i < accepts.length; i++) {\n const mediaType = parseMediaType(accepts[i].trim(), i);\n\n if (mediaType) {\n mediaTypes.push(mediaType);\n }\n }\n\n return mediaTypes;\n}\n\nfunction getFullType(spec: MediaTypeSpecificity) {\n return `${spec.type}/${spec.subtype}`;\n}\n\nfunction specify(\n type: string,\n spec: MediaTypeSpecificity,\n index: number,\n): Specificity | undefined {\n const p = parseMediaType(type, index);\n\n if (!p) {\n return;\n }\n\n let s = 0;\n\n if (spec.type.toLowerCase() === p.type.toLowerCase()) {\n s |= 4;\n } else if (spec.type !== \"*\") {\n return;\n }\n\n if (spec.subtype.toLowerCase() === p.subtype.toLowerCase()) {\n s |= 2;\n } else if (spec.subtype !== \"*\") {\n return;\n }\n\n const keys = Object.keys(spec.params);\n if (keys.length) {\n if (\n keys.every((key) =>\n (spec.params[key] || \"\").toLowerCase() ===\n (p.params[key] || \"\").toLowerCase()\n )\n ) {\n s |= 1;\n } else {\n return;\n }\n }\n\n return {\n i: index,\n o: spec.o,\n q: spec.q,\n s,\n };\n}\n\nfunction getMediaTypePriority(\n type: string,\n accepted: MediaTypeSpecificity[],\n index: number,\n) {\n let priority: Specificity = { o: -1, q: 0, s: 0, i: index };\n\n for (const accepts of accepted) {\n const spec = specify(type, accepts, index);\n\n if (\n spec &&\n ((priority.s || 0) - (spec.s || 0) ||\n (priority.q || 0) - (spec.q || 0) ||\n (priority.o || 0) - (spec.o || 0)) < 0\n ) {\n priority = spec;\n }\n }\n\n return priority;\n}\n\nexport function preferredMediaTypes(\n accept?: string | null,\n provided?: string[],\n): string[] {\n const accepts = parseAccept(accept === undefined ? \"*/*\" : accept || \"\");\n\n if (!provided) {\n return accepts\n .filter(isQuality)\n .sort(compareSpecs)\n .map(getFullType);\n }\n\n const priorities = provided.map((type, index) => {\n return getMediaTypePriority(type, accepts, index);\n });\n\n return priorities\n .filter(isQuality)\n .sort(compareSpecs)\n .map((priority) => provided[priorities.indexOf(priority)]);\n}\n", "transpiled": "/*!\n * Adapted directly from negotiator at https://github.com/jshttp/negotiator/\n * which is licensed as follows:\n *\n * (The MIT License)\n *\n * Copyright (c) 2012-2014 Fed … [Строка слишком длинная. Вы можете скачать файл] "content_type": "application/typescript; charset=utf-8", "deps": ["https://deno.land/x/oak_commons@0.1.1/negotiation/common.ts"] } }, "file:///src/worker/suggestions.ts": { "Source": { "source": "/* Copyright 2021-2022 the Deno authors. All rights reserved. MIT license. */\n\n// @deno-types https://deno.land/x/fuse@v6.4.1/dist/fuse.d.ts\nimport { default as Fuse } from \"htt … [Строка слишком длинная. Вы можете скачать файл] "transpiled": "/* Copyright 2021-2022 the Deno authors. All rights reserved. MIT license. */ // @deno-types https://deno.land/x/fuse@v6.4.1/dist/fuse.d.ts\nimport { default as Fuse } from \"ht … [Строка слишком длинная. Вы можете скачать файл] "content_type": null, "deps": [ "https://deno.land/x/fuse@v6.4.1/dist/fuse.esm.js", "https://deno.land/x/pretty_bytes@v1.0.5/mod.ts", "https://esm.sh/twas@2.1.2", "file:///src/worker/registry.ts" ] } }, "file:///src/worker/main.ts": { "Source": { "source": "#!/usr/bin/env -S deno run --allow-read=. --allow-net --allow-env\n/* Copyright 2020 the Deno authors. All rights reserved. MIT license. */\n\nimport { handleRequest, withLog } from \"./handler.ts\";\nimport { listenAndServe } from \"https://deno.land/std@0.108.0/http/server.ts\";\n\nconst handler = withLog(handleRequest);\n\nconsole.log(\"The server is available at http://localhost:8081\");\nlistenAndServe(\":8081\", handler);\n", "transpiled": "#!/usr/bin/env -S deno run --allow-read=. --allow-net --allow-env\n/* Copyright 2020 the Deno authors. All rights reserved. MIT license. */ import { handleRequest, withLog } from \"./handler.ts\";\nimport { listenAndServe } from \"https://deno.land/std@0.108.0/http/server.ts\";\nconst handler = withLog(handleRequest);\nconsole.log(\"The server is available at http://localhost:8081\");\nlistenAndServe(\":8081\", handler);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIjxmaWxlOi8vL3NyYy93b3JrZXIvbWFpbi50cz4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLEVBQXdFLEFBQXhFLG9FQUF3RSxBQUF4RSxFQUF3RSxDQUV4RSxNQUFNLEdBQUcsYUFBYSxFQUFFLE9BQU8sUUFBUSxDQUFjO0FBQ3JELE1BQU0sR0FBRyxjQUFjLFFBQVEsQ0FBOEM7QUFFN0UsS0FBSyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsYUFBYTtBQUVyQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQWtEO0FBQzlELGNBQWMsQ0FBQyxDQUFPLFFBQUUsT0FBTyJ9", "content_type": null, "deps": [ "file:///src/worker/handler.ts", "https://deno.land/std@0.108.0/http/server.ts" ] } }, "https://deno.land/std@0.120.0/fmt/colors.ts": { "Source": { "source": "// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.\n// A module to print ANSI terminal colors. Inspired by chalk, kleur, and colors\n// on npm.\n//\n\n/**\n … [Строка слишком длинная. Вы можете скачать файл] "transpiled": "// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.\n// A module to print ANSI terminal colors. Inspired by chalk, kleur, and colors\n// on npm.\n//\n/**\ … [Строка слишком длинная. Вы можете скачать файл] "content_type": "application/typescript; charset=utf-8", "deps": [] } }, "https://deno.land/std@0.120.0/async/delay.ts": { "Source": { "source": "// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.\n\nexport interface DelayOptions {\n signal?: AbortSignal;\n}\n\n/* Resolves after the given number of milliseconds. */\nexport function delay(ms: number, options: DelayOptions = {}): Promise<void> {\n const { signal } = options;\n if (signal?.aborted) {\n return Promise.reject(new DOMException(\"Delay was aborted.\", \"AbortError\"));\n }\n return new Promise((resolve, reject): void => {\n const abort = () => {\n clearTimeout(i);\n reject(new DOMException(\"Delay was aborted.\", \"AbortError\"));\n };\n const done = () => {\n signal?.removeEventListener(\"abort\", abort);\n resolve();\n };\n const i = setTimeout(done, ms);\n signal?.addEventListener(\"abort\", abort, { once: true });\n });\n}\n", "transpiled": "/* Resolves after the given number of milliseconds. */ export function delay(ms, options = {\n}) {\n const { signal } = options;\n if (signal?.aborted) {\n return Promise.reject(new DOMException(\"Delay was aborted.\", \"AbortError\"));\n }\n return new Promise((resolve, reject)=>{\n const abort = ()=>{\n clearTimeout(i);\n reject(new DOMException(\"Delay was aborted.\", \"AbortError\"));\n };\n const done = ()=>{\n signal?.removeEventListener(\"abort\", abort);\n resolve();\n };\n const i = setTimeout(done, ms);\n signal?.addEventListener(\"abort\", abort, {\n once: true\n });\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIjxodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4xMjAuMC9hc3luYy9kZWxheS50cz4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsRUFBc0QsQUFBdEQsa0RBQXNELEFBQXRELEVBQXNELENBQ3RELE1BQU0sVUFBVSxLQUFLLENBQUMsRUFBVSxFQUFFLE9BQXFCLEdBQUcsQ0FBQztBQUFBLENBQUMsRUFBaUIsQ0FBQztJQUM1RSxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBQyxDQUFDLEdBQUcsT0FBTztJQUMxQixFQUFFLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3BCLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBb0IscUJBQUUsQ0FBWTtJQUMzRSxDQUFDO0lBQ0QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sR0FBVyxDQUFDO1FBQzdDLEtBQUssQ0FBQyxLQUFLLE9BQVMsQ0FBQztZQUNuQixZQUFZLENBQUMsQ0FBQztZQUNkLE1BQU0sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQW9CLHFCQUFFLENBQVk7UUFDNUQsQ0FBQztRQUNELEtBQUssQ0FBQyxJQUFJLE9BQVMsQ0FBQztZQUNsQixNQUFNLEVBQUUsbUJBQW1CLENBQUMsQ0FBTyxRQUFFLEtBQUs7WUFDMUMsT0FBTztRQUNULENBQUM7UUFDRCxLQUFLLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUM3QixNQUFNLEVBQUUsZ0JBQWdCLENBQUMsQ0FBTyxRQUFFLEtBQUssRUFBRSxDQUFDO1lBQUMsSUFBSSxFQUFFLElBQUk7UUFBQyxDQUFDO0lBQ3pELENBQUM7QUFDSCxDQUFDIn0=", "content_type": "application/typescript; charset=utf-8", "deps": [] } }, "https://deno.land/x/oak_commons@0.1.1/negotiation/encoding.ts": { "Source": { "source": "/*!\n * Adapted directly from negotiator at https://github.com/jshttp/negotiator/\n * which is licensed as follows:\n *\n * (The MIT License)\n *\n * Copyright (c) 2012-2014 Federico Romero\n * Copyright (c) 2012-2014 Isaac Z. Schlueter\n * Copyright (c) 2014-2015 Douglas Christopher Wilson\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * 'Software'), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\nimport { compareSpecs, isQuality, Specificity } from \"./common.ts\";\n\ninterface EncodingSpecificty extends Specificity {\n encoding?: string;\n}\n\nconst simpleEncodingRegExp = /^\\s*([^\\s;]+)\\s*(?:;(.*))?$/;\n\nfunction parseEncoding(str: string, i: number): EncodingSpecificty | undefined {\n const match = simpleEncodingRegExp.exec(str);\n if (!match) {\n return undefined;\n }\n\n const encoding = match[1];\n let q = 1;\n if (match[2]) {\n const params = match[2].split(\";\");\n for (const param of params) {\n const p = param.trim().split(\"=\");\n if (p[0] === \"q\") {\n q = parseFloat(p[1]);\n break;\n }\n }\n }\n\n return { encoding, q, i };\n}\n\nfunction specify(\n encoding: string,\n spec: EncodingSpecificty,\n i = -1,\n): Specificity | undefined {\n if (!spec.encoding) {\n return;\n }\n let s = 0;\n if (spec.encoding.toLocaleLowerCase() === encoding.toLocaleLowerCase()) {\n s = 1;\n } else if (spec.encoding !== \"*\") {\n return;\n }\n\n return {\n i,\n o: spec.i,\n q: spec.q,\n s,\n };\n}\n\nfunction parseAcceptEncoding(accept: string): EncodingSpecificty[] {\n const accepts = accept.split(\",\");\n const parsedAccepts: EncodingSpecificty[] = [];\n let hasIdentity = false;\n let minQuality = 1;\n\n for (let i = 0; i < accepts.length; i++) {\n const encoding = parseEncoding(accepts[i].trim(), i);\n\n if (encoding) {\n parsedAccepts.push(encoding);\n hasIdentity = hasIdentity || !!specify(\"identity\", encoding);\n minQuality = Math.min(minQuality, encoding.q || 1);\n }\n }\n\n if (!hasIdentity) {\n parsedAccepts.push({\n encoding: \"identity\",\n q: minQuality,\n i: accepts.length - 1,\n });\n }\n\n return parsedAccepts;\n}\n\nfunction getEncodingPriority(\n encoding: string,\n accepted: Specificity[],\n index: number,\n): Specificity {\n let priority: Specificity = { o: -1, q: 0, s: 0, i: 0 };\n\n for (const s of accepted) {\n const spec = specify(encoding, s, index);\n\n if (\n spec &&\n (priority.s! - spec.s! || priority.q - spec.q ||\n priority.o! - spec.o!) <\n 0\n ) {\n priority = spec;\n }\n }\n\n return priority;\n}\n\n/** Given an `Accept-Encoding` string, parse out the encoding returning a\n * negotiated encoding based on the `provided` encodings otherwise just a\n * prioritized array of encodings. */\nexport function preferredEncodings(\n accept: string,\n provided?: string[],\n): string[] {\n const accepts = parseAcceptEncoding(accept);\n\n if (!provided) {\n return accepts\n .filter(isQuality)\n .sort(compareSpecs)\n .map((spec) => spec.encoding!);\n }\n\n const priorities = provided.map((type, index) =>\n getEncodingPriority(type, accepts, index)\n );\n\n return priorities\n .filter(isQuality)\n .sort(compareSpecs)\n .map((priority) => provided[priorities.indexOf(priority)]);\n}\n", "transpiled": "/*!\n * Adapted directly from negotiator at https://github.com/jshttp/negotiator/\n * which is licensed as follows:\n *\n * (The MIT License)\n *\n * Copyright (c) 2012-2014 Federico Romero\n * Copyright (c) 2012-2014 Isaac Z. Schlueter\n * Copyright (c) 2014-2015 Douglas Christopher Wilson\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * 'Software'), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */ import { compareSpecs, isQuality } from \"./common.ts\";\nconst simpleEncodingRegExp = /^\\s*([^\\s;]+)\\s*(?:;(.*))?$/;\nfunction parseEncoding(str, i) {\n const match = simpleEncodingRegExp.exec(str);\n if (!match) {\n return undefined;\n }\n const encoding = match[1];\n let q = 1;\n if (match[2]) {\n const params = match[2].split(\";\");\n for (const param of params){\n const p = param.trim().split(\"=\");\n if (p[0] === \"q\") {\n q = parseFloat(p[1]);\n break;\n }\n }\n }\n return {\n encoding,\n q,\n i\n };\n}\nfunction specify(encoding, spec, i = -1) {\n if (!spec.encoding) {\n return;\n }\n let s = 0;\n if (spec.encoding.toLocaleLowerCase() === encoding.toLocaleLowerCase()) {\n s = 1;\n } else if (spec.encoding !== \"*\") {\n return;\n }\n return {\n i,\n o: spec.i,\n q: spec.q,\n s\n };\n}\nfunction parseAcceptEncoding(accept) {\n const accepts = accept.split(\",\");\n const parsedAccepts = [];\n let hasIdentity = false;\n let minQuality = 1;\n for(let i = 0; i < accepts.length; i++){\n const encoding = parseEncoding(accepts[i].trim(), i);\n if (encoding) {\n parsedAccepts.push(encoding);\n hasIdentity = hasIdentity || !!specify(\"identity\", encoding);\n minQuality = Math.min(minQuality, encoding.q || 1);\n }\n }\n if (!hasIdentity) {\n parsedAccepts.push({\n encoding: \"identity\",\n q: minQuality,\n i: accepts.length - 1\n });\n }\n return parsedAccepts;\n}\nfunction getEncodingPriority(encoding, accepted, index) {\n let priority = {\n o: -1,\n q: 0,\n s: 0,\n i: 0\n };\n for (const s of accepted){\n const spec = specify(encoding, s, index);\n if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {\n priority = spec;\n }\n }\n return priority;\n}\n/** Given an `Accept-Encoding` string, parse out the encoding returning a\n * negotiated encoding based on the `provided` encodings otherwise just a\n * prioritized array of encodings. */ export function preferredEncodings(accept, provided) {\n const accepts = parseAcceptEncoding(accept);\n if (!provided) {\n return accepts.filter(isQuality).sort(compareSpecs).map((spec)=>spec.encoding\n );\n }\n const priorities = provided.map((type, index)=>getEncodingPriority(type, accepts, index)\n );\n return priorities.filter(isQuality).sort(compareSpecs).map((priority)=>provided[priorities.indexOf(priority)]\n );\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIjxodHRwczovL2Rlbm8ubGFuZC94L29ha19jb21tb25zQDAuMS4xL25lZ290aWF0aW9uL2VuY29kaW5nLnRzPiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxFQTRCRyxBQTVCSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQTRCRyxBQTVCSCxFQTRCRyxDQUVILE1BQU0sR0FBRyxZQUFZLEVBQUUsU0FBUyxRQUFxQixDQUFhO0FBTWxFLEtBQUssQ0FBQyxvQkFBb0I7U0FFakIsYUFBYSxDQUFDLEdBQVcsRUFBRSxDQUFTLEVBQWtDLENBQUM7SUFDOUUsS0FBSyxDQUFDLEtBQUssR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsR0FBRztJQUMzQyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUM7UUFDWCxNQUFNLENBQUMsU0FBUztJQUNsQixDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsQ0FBQztJQUN4QixHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDVCxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ2IsS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFHO1FBQ2pDLEdBQUcsRUFBRSxLQUFLLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBRSxDQUFDO1lBQzNCLEtBQUssQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBRztZQUNoQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFHLElBQUUsQ0FBQztnQkFDakIsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbEIsS0FBSztZQUNQLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxDQUFDO1FBQUMsUUFBUTtRQUFFLENBQUM7UUFBRSxDQUFDO0lBQUMsQ0FBQztBQUMzQixDQUFDO1NBRVEsT0FBTyxDQUNkLFFBQWdCLEVBQ2hCLElBQXdCLEVBQ3hCLENBQUMsSUFBSSxDQUFDLEVBQ21CLENBQUM7SUFDMUIsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNuQixNQUFNO0lBQ1IsQ0FBQztJQUNELEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUNULEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixPQUFPLFFBQVEsQ0FBQyxpQkFBaUIsSUFBSSxDQUFDO1FBQ3ZFLENBQUMsR0FBRyxDQUFDO0lBQ1AsQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxLQUFLLENBQUcsSUFBRSxDQUFDO1FBQ2pDLE1BQU07SUFDUixDQUFDO0lBRUQsTUFBTSxDQUFDLENBQUM7UUFDTixDQUFDO1FBQ0QsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ1QsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ1QsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO1NBRVEsbUJBQW1CLENBQUMsTUFBYyxFQUF3QixDQUFDO0lBQ2xFLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFHO0lBQ2hDLEtBQUssQ0FBQyxhQUFhLEdBQXlCLENBQUMsQ0FBQztJQUM5QyxHQUFHLENBQUMsV0FBVyxHQUFHLEtBQUs7SUFDdkIsR0FBRyxDQUFDLFVBQVUsR0FBRyxDQUFDO0lBRWxCLEdBQUcsQ0FBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUksQ0FBQztRQUN4QyxLQUFLLENBQUMsUUFBUSxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDO1FBRW5ELEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQztZQUNiLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUTtZQUMzQixXQUFXLEdBQUcsV0FBVyxNQUFNLE9BQU8sQ0FBQyxDQUFVLFdBQUUsUUFBUTtZQUMzRCxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ25ELENBQUM7SUFDSCxDQUFDO0lBRUQsRUFBRSxHQUFHLFdBQVcsRUFBRSxDQUFDO1FBQ2pCLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsQixRQUFRLEVBQUUsQ0FBVTtZQUNwQixDQUFDLEVBQUUsVUFBVTtZQUNiLENBQUMsRUFBRSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsYUFBYTtBQUN0QixDQUFDO1NBRVEsbUJBQW1CLENBQzFCLFFBQWdCLEVBQ2hCLFFBQXVCLEVBQ3ZCLEtBQWEsRUFDQSxDQUFDO0lBQ2QsR0FBRyxDQUFDLFFBQVEsR0FBZ0IsQ0FBQztRQUFDLENBQUMsR0FBRyxDQUFDO1FBQUUsQ0FBQyxFQUFFLENBQUM7UUFBRSxDQUFDLEVBQUUsQ0FBQztRQUFFLENBQUMsRUFBRSxDQUFDO0lBQUMsQ0FBQztJQUV2RCxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxRQUFRLENBQUUsQ0FBQztRQUN6QixLQUFLLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLEtBQUs7UUFFdkMsRUFBRSxFQUNBLElBQUksS0FDSCxRQUFRLENBQUMsQ0FBQyxHQUFJLElBQUksQ0FBQyxDQUFDLElBQUssUUFBUSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUN6QyxRQUFRLENBQUMsQ0FBQyxHQUFJLElBQUksQ0FBQyxDQUFDLElBQ3RCLENBQUMsRUFDSCxDQUFDO1lBQ0QsUUFBUSxHQUFHLElBQUk7UUFDakIsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUTtBQUNqQixDQUFDO0FBRUQsRUFFcUMsQUFGckM7O21DQUVxQyxBQUZyQyxFQUVxQyxDQUNyQyxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLE1BQWMsRUFDZCxRQUFtQixFQUNULENBQUM7SUFDWCxLQUFLLENBQUMsT0FBTyxHQUFHLG1CQUFtQixDQUFDLE1BQU07SUFFMUMsRUFBRSxHQUFHLFFBQVEsRUFBRSxDQUFDO1FBQ2QsTUFBTSxDQUFDLE9BQU8sQ0FDWCxNQUFNLENBQUMsU0FBUyxFQUNoQixJQUFJLENBQUMsWUFBWSxFQUNqQixHQUFHLEVBQUUsSUFBSSxHQUFLLElBQUksQ0FBQyxRQUFROztJQUNoQyxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxLQUFLLEdBQzFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSzs7SUFHMUMsTUFBTSxDQUFDLFVBQVUsQ0FDZCxNQUFNLENBQUMsU0FBUyxFQUNoQixJQUFJLENBQUMsWUFBWSxFQUNqQixHQUFHLEVBQUUsUUFBUSxHQUFLLFFBQVEsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFFBQVE7O0FBQzNELENBQUMifQ==", "content_type": "application/typescript; charset=utf-8", "deps": ["https://deno.land/x/oak_commons@0.1.1/negotiation/common.ts"] } }, "https://deno.land/std@0.108.0/async/pool.ts": { "Source": { "source": "// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.\n\n/**\n * pooledMap transforms values from an (async) iterable into another async\n * iterable. The transforms are done concurrently, with a max concurrency\n * defined by the poolLimit.\n *\n * If an error is thrown from `iterableFn`, no new transformations will begin.\n * All currently executing transformations are allowed to finish and still\n * yielded on success. After that, the rejections among them are gathered and\n * thrown by the iterator in an `AggregateError`.\n *\n * @param poolLimit The maximum count of items being processed concurrently.\n * @param array The input array for mapping.\n * @param iteratorFn The function to call for every item of the array.\n */\nexport function pooledMap<T, R>(\n poolLimit: number,\n array: Iterable<T> | AsyncIterable<T>,\n iteratorFn: (data: T) => Promise<R>,\n): AsyncIterableIterator<R> {\n // Create the async iterable that is returned from this function.\n const res = new TransformStream<Promise<R>, R>({\n async transform(\n p: Promise<R>,\n controller: TransformStreamDefaultController<R>,\n ) {\n controller.enqueue(await p);\n },\n });\n // Start processing items from the iterator\n (async () => {\n const writer = res.writable.getWriter();\n const executing: Array<Promise<unknown>> = [];\n try {\n for await (const item of array) {\n const p = Promise.resolve().then(() => iteratorFn(item));\n // Only write on success. If we `writer.write()` a rejected promise,\n // that will end the iteration. We don't want that yet. Instead let it\n // fail the race, taking us to the catch block where all currently\n // executing jobs are allowed to finish and all rejections among them\n // can be reported together.\n p.then((v) => writer.write(Promise.resolve(v))).catch(() => {});\n const e: Promise<unknown> = p.then(() =>\n executing.splice(executing.indexOf(e), 1)\n );\n executing.push(e);\n if (executing.length >= poolLimit) {\n await Promise.race(executing);\n }\n }\n // Wait until all ongoing events have processed, then close the writer.\n await Promise.all(executing);\n writer.close();\n } catch {\n const errors = [];\n for (const result of await Promise.allSettled(executing)) {\n if (result.status == \"rejected\") {\n errors.push(result.reason);\n }\n }\n writer.write(Promise.reject(\n new AggregateError(errors, \"Threw while mapping.\"),\n )).catch(() => {});\n }\n })();\n return res.readable[Symbol.asyncIterator]();\n}\n", "transpiled": "// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.\n/**\n * pooledMap transforms values from an (async) iterable into another async\n * iterable. The transforms are done concurrently, with a max concurrency\n * defined by the poolLimit.\n *\n * If an error is thrown from `iterableFn`, no new transformations will begin.\n * All currently executing transformations are allowed to finish and still\n * yielded on success. After that, the rejections among them are gathered and\n * thrown by the iterator in an `AggregateError`.\n *\n * @param poolLimit The maximum count of items being processed concurrently.\n * @param array The input array for mapping.\n * @param iteratorFn The function to call for every item of the array.\n */ export function pooledMap(poolLimit, array, iteratorFn) {\n // Create the async iterable that is returned from this function.\n const res = new TransformStream({\n async transform (p, controller) {\n controller.enqueue(await p);\n }\n });\n // Start processing items from the iterator\n (async ()=>{\n const writer = res.writable.getWriter();\n const executing = [];\n try {\n for await (const item of array){\n const p = Promise.resolve().then(()=>iteratorFn(item)\n );\n // Only write on success. If we `writer.write()` a rejected promise,\n // that will end the iteration. We don't want that yet. Instead let it\n // fail the race, taking us to the catch block where all currently\n // executing jobs are allowed to finish and all rejections among them\n // can be reported together.\n p.then((v)=>writer.write(Promise.resolve(v))\n ).catch(()=>{\n });\n const e = p.then(()=>executing.splice(executing.indexOf(e), 1)\n );\n executing.push(e);\n if (executing.length >= poolLimit) {\n await Promise.race(executing);\n }\n }\n // Wait until all ongoing events have processed, then close the writer.\n await Promise.all(executing);\n writer.close();\n } catch {\n const errors = [];\n for (const result of (await Promise.allSettled(executing))){\n if (result.status == \"rejected\") {\n errors.push(result.reason);\n }\n }\n writer.write(Promise.reject(new AggregateError(errors, \"Threw while mapping.\"))).catch(()=>{\n });\n }\n })();\n return res.readable[Symbol.asyncIterator]();\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIjxodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4xMDguMC9hc3luYy9wb29sLnRzPiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxFQUEwRSxBQUExRSx3RUFBMEU7QUFFMUUsRUFhRyxBQWJIOzs7Ozs7Ozs7Ozs7O0NBYUcsQUFiSCxFQWFHLENBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FDdkIsU0FBaUIsRUFDakIsS0FBcUMsRUFDckMsVUFBbUMsRUFDVCxDQUFDO0lBQzNCLEVBQWlFLEFBQWpFLCtEQUFpRTtJQUNqRSxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQWdCLENBQUM7Y0FDeEMsU0FBUyxFQUNiLENBQWEsRUFDYixVQUErQyxFQUMvQyxDQUFDO1lBQ0QsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixDQUFDO0lBQ0gsQ0FBQztJQUNELEVBQTJDLEFBQTNDLHlDQUEyQztlQUM5QixDQUFDO1FBQ1osS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLFNBQVM7UUFDckMsS0FBSyxDQUFDLFNBQVMsR0FBNEIsQ0FBQyxDQUFDO1FBQzdDLEdBQUcsQ0FBQyxDQUFDO1lBQ0gsR0FBRyxRQUFRLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFFLENBQUM7Z0JBQy9CLEtBQUssQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFJLEtBQU8sVUFBVSxDQUFDLElBQUk7O2dCQUN0RCxFQUFvRSxBQUFwRSxrRUFBb0U7Z0JBQ3BFLEVBQXNFLEFBQXRFLG9FQUFzRTtnQkFDdEUsRUFBa0UsQUFBbEUsZ0VBQWtFO2dCQUNsRSxFQUFxRSxBQUFyRSxtRUFBcUU7Z0JBQ3JFLEVBQTRCLEFBQTVCLDBCQUE0QjtnQkFDNUIsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUssTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7a0JBQUksS0FBSyxLQUFPLENBQUM7Z0JBQUEsQ0FBQztnQkFDOUQsS0FBSyxDQUFDLENBQUMsR0FBcUIsQ0FBQyxDQUFDLElBQUksS0FDaEMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDOztnQkFFMUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNoQixFQUFFLEVBQUUsU0FBUyxDQUFDLE1BQU0sSUFBSSxTQUFTLEVBQUUsQ0FBQztvQkFDbEMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUztnQkFDOUIsQ0FBQztZQUNILENBQUM7WUFDRCxFQUF1RSxBQUF2RSxxRUFBdUU7WUFDdkUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUztZQUMzQixNQUFNLENBQUMsS0FBSztRQUNkLENBQUMsQ0FBQyxLQUFLLEVBQUMsQ0FBQztZQUNQLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQ2pCLEdBQUcsRUFBRSxLQUFLLENBQUMsTUFBTSxLQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFNBQVMsR0FBRyxDQUFDO2dCQUN6RCxFQUFFLEVBQUUsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFVLFdBQUUsQ0FBQztvQkFDaEMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTtnQkFDM0IsQ0FBQztZQUNILENBQUM7WUFDRCxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQ3pCLEdBQUcsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQXNCLHlCQUNoRCxLQUFLLEtBQU8sQ0FBQztZQUFBLENBQUM7UUFDbkIsQ0FBQztJQUNILENBQUM7SUFDRCxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsYUFBYTtBQUMxQyxDQUFDIn0=", "content_type": "application/typescript; charset=utf-8", "deps": [] } }, "https://deno.land/std@0.108.0/async/debounce.ts": { "Source": { "source": "// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.\n\n/**\n * A debounced function that will be delayed by a given `wait`\n * time in milliseconds. If the method is called again before\n * the timeout expires, the previous call will be aborted.\n */\nexport interface DebouncedFunction<T extends Array<unknown>> {\n (...args: T): void;\n /** Clears the debounce timeout and omits calling the debounced function. */\n clear(): void;\n /** Clears the debounce timeout and calls the debounced function immediately. */\n flush(): void;\n /** Returns a boolean wether a debounce call is pending or not. */\n readonly pending: boolean;\n}\n\n/**\n * Creates a debounced function that delays the given `func`\n * by a given `wait` time in milliseconds. If the method is called\n * again before the timeout expires, the previous call will be\n * aborted.\n *\n * ```\n * import { debounce } from \"./debounce.ts\";\n *\n * const log = debounce(\n * (event: Deno.FsEvent) =>\n * console.log(\"[%s] %s\", event.kind, event.paths[0]),\n * 200,\n * );\n *\n * for await (const event of Deno.watchFs(\"./\")) {\n * log(event);\n * }\n * ```\n *\n * @param fn The function to debounce.\n * @param wait The time in milliseconds to delay the function.\n */\n// deno-lint-ignore no-explicit-any\nexport function debounce<T extends Array<any>>(\n fn: (this: DebouncedFunction<T>, ...args: T) => void,\n wait: number,\n): DebouncedFunction<T> {\n let timeout: number | null = null;\n let flush: (() => void) | null = null;\n\n const debounced: DebouncedFunction<T> = ((...args: T): void => {\n debounced.clear();\n flush = (): void => {\n debounced.clear();\n fn.call(debounced, ...args);\n };\n timeout = setTimeout(flush, wait);\n }) as DebouncedFunction<T>;\n\n debounced.clear = (): void => {\n if (typeof timeout === \"number\") {\n clearTimeout(timeout);\n timeout = null;\n flush = null;\n }\n };\n\n debounced.flush = (): void => {\n flush?.();\n };\n\n Object.defineProperty(debounced, \"pending\", {\n get: () => typeof timeout === \"number\",\n });\n\n return debounced;\n}\n", "transpiled": "/**\n * Creates a debounced function that delays the given `func`\n * by a given `wait` time in milliseconds. If the method is called\n * again before the timeout expires, the previous call will be\n * aborted.\n *\n * ```\n * import { debounce } from \"./debounce.ts\";\n *\n * const log = debounce(\n * (event: Deno.FsEvent) =>\n * console.log(\"[%s] %s\", event.kind, event.paths[0]),\n * 200,\n * );\n *\n * for await (const event of Deno.watchFs(\"./\")) {\n * log(event);\n * }\n * ```\n *\n * @param fn The function to debounce.\n * @param wait The time in milliseconds to delay the function.\n */ // deno-lint-ignore no-explicit-any\nexport function debounce(fn, wait) {\n let timeout = null;\n let flush = null;\n const debounced = (...args)=>{\n debounced.clear();\n flush = ()=>{\n debounced.clear();\n fn.call(debounced, ...args);\n };\n timeout = setTimeout(flush, wait);\n };\n debounced.clear = ()=>{\n if (typeof timeout === \"number\") {\n clearTimeout(timeout);\n timeout = null;\n flush = null;\n }\n };\n debounced.flush = ()=>{\n flush?.();\n };\n Object.defineProperty(debounced, \"pending\", {\n get: ()=>typeof timeout === \"number\"\n });\n return debounced;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIjxodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4xMDguMC9hc3luYy9kZWJvdW5jZS50cz4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBaUJBLEVBc0JHLEFBdEJIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBc0JHLEFBdEJILEVBc0JHLENBQ0gsRUFBbUMsQUFBbkMsaUNBQW1DO0FBQ25DLE1BQU0sVUFBVSxRQUFRLENBQ3RCLEVBQW9ELEVBQ3BELElBQVksRUFDVSxDQUFDO0lBQ3ZCLEdBQUcsQ0FBQyxPQUFPLEdBQWtCLElBQUk7SUFDakMsR0FBRyxDQUFDLEtBQUssR0FBd0IsSUFBSTtJQUVyQyxLQUFLLENBQUMsU0FBUyxPQUE4QixJQUFJLEdBQWMsQ0FBQztRQUM5RCxTQUFTLENBQUMsS0FBSztRQUNmLEtBQUssT0FBZSxDQUFDO1lBQ25CLFNBQVMsQ0FBQyxLQUFLO1lBQ2YsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSTtRQUM1QixDQUFDO1FBQ0QsT0FBTyxHQUFHLFVBQVUsQ0FBQyxLQUFLLEVBQUUsSUFBSTtJQUNsQyxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQUssT0FBZSxDQUFDO1FBQzdCLEVBQUUsRUFBRSxNQUFNLENBQUMsT0FBTyxLQUFLLENBQVEsU0FBRSxDQUFDO1lBQ2hDLFlBQVksQ0FBQyxPQUFPO1lBQ3BCLE9BQU8sR0FBRyxJQUFJO1lBQ2QsS0FBSyxHQUFHLElBQUk7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFLLE9BQWUsQ0FBQztRQUM3QixLQUFLO0lBQ1AsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLENBQVMsVUFBRSxDQUFDO1FBQzNDLEdBQUcsTUFBUSxNQUFNLENBQUMsT0FBTyxLQUFLLENBQVE7SUFDeEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxTQUFTO0FBQ2xCLENBQUMifQ==", "content_type": "application/typescript; charset=utf-8", "deps": [] } }, "file:///src/worker/registry.ts": { "Source": { "source": "/* Copyright 2020 the Deno authors. All rights reserved. MIT license. */\n\nimport { parseNameVersion } from \"../util/registry_utils.ts\";\n\nexport const S3_BUCKET =\n \"http://deno-registry2-prod-storagebucket-b3a31d16.s3-website-us-east-1.amazonaws.com/\";\n\n/** Handle _legacy_ v1 registry requests. v2 is handled by `./suggestions.ts`.\n */\nexport async function handleRegistryRequest(url: URL): Promise<Response> {\n const entry = parsePathname(url.pathname);\n if (!entry) {\n return new Response(\"This module entry is invalid: \" + url.pathname, {\n status: 400,\n headers: { \"content-type\": \"text/plain\" },\n });\n }\n const { module, version, path } = entry;\n if (!version) {\n const latest = await getLatestVersion(module);\n if (!latest) {\n return new Response(\n \"This module has no latest version: \" + url.pathname,\n {\n status: 404,\n headers: { \"content-type\": \"text/plain\" },\n },\n );\n }\n return new Response(undefined, {\n headers: {\n Location: `${module === \"std\" ? \"\" : \"/x\"}/${module}@${latest}/${path}`,\n \"x-deno-warning\":\n `Implicitly using latest version (${latest}) for ${url.origin}${\n module === \"std\" ? \"\" : \"/x\"\n }/${module}/${path}`,\n },\n status: 302,\n });\n }\n if (version.startsWith(\"v0.\") && module === \"std\") {\n const correctVersion = version.substring(1);\n const versionNumber = parseFloat(correctVersion);\n // For now only block std versions >= 0.43.0\n // Timeline for deprecation:\n // Oct 14 2020: >= 0.70.0\n // Oct 21 2020: >= 0.68.0\n // Oct 28 2020: >= 0.65.0\n // Nov 04 2020: >= 0.61.0\n // Nov 11 2020: >= 0.56.0\n // Nov 18 2020: >= 0.50.0\n // Nov 25 2020: >= 0.43.0\n // Dec 02 2020: >= 0.34.0 (oldest available std release)\n if (versionNumber >= 0.43) {\n return new Response(\"404 Not Found\", {\n headers: {\n \"x-deno-warning\":\n `std versions prefixed with 'v' were deprecated recently. Please change your import to ${url.origin}${\n module === \"std\" ? \"\" : \"/x\"\n }/${module}@${correctVersion}/${path} (at ${url.origin}${\n module === \"std\" ? \"\" : \"/x\"\n }/${module}@${version}/${path})`,\n },\n status: 404,\n });\n }\n return new Response(undefined, {\n headers: {\n Location: `/std@${correctVersion}/${path}`,\n \"x-deno-warning\":\n `std versions prefixed with 'v' will be deprecated soon. Please change your import to ${url.origin}${\n module === \"std\" ? \"\" : \"/x\"\n }/${module}@${correctVersion}/${path} (at ${url.origin}${\n module === \"std\" ? \"\" : \"/x\"\n }/${module}@${version}/${path})`,\n },\n status: 302,\n });\n }\n const remoteUrl = getBackingURL(module, version, path);\n const resp2 = await fetchSource(remoteUrl);\n\n // JSX and TSX content type fix\n if (\n remoteUrl.endsWith(\".jsx\") &&\n !resp2.headers.get(\"content-type\")?.includes(\"javascript\")\n ) {\n resp2.headers.set(\"content-type\", \"application/javascript\");\n } else if (\n remoteUrl.endsWith(\".tsx\") &&\n !resp2.headers.get(\"content-type\")?.includes(\"typescript\")\n ) {\n resp2.headers.set(\"content-type\", \"application/typescript\");\n }\n\n resp2.headers.set(\"Access-Control-Allow-Origin\", \"*\");\n return resp2;\n}\n\nexport function parsePathname(\n pathname: string,\n): { module: string; version: string | undefined; path: string } | undefined {\n if (pathname.startsWith(\"/std\")) {\n return parsePathname(\"/x\" + pathname);\n }\n if (!pathname.startsWith(\"/x/\")) {\n return undefined;\n }\n pathname = decodeURIComponent(pathname);\n const nameBranchRest = pathname.replace(/^\\/x\\//, \"\");\n const [nameBranch, ...rest] = nameBranchRest.split(\"/\");\n const [name, version] = parseNameVersion(nameBranch);\n const path = rest.join(\"/\");\n return { module: name, version, path };\n}\n\nexport function getBackingURL(module: string, version: string, path: string) {\n return `${S3_BUCKET}${module}/versions/${version}/raw/${path}`;\n}\n\nexport async function fetchSource(remoteUrl: string) {\n let lastErr;\n for (let i = 0; i < 3; i++) {\n try {\n const resp = await fetch(remoteUrl);\n if (resp.status === 403 || resp.status === 404) {\n return new Response(\"404 Not Found\", { status: 404 });\n }\n if (!resp.ok) throw new TypeError(\"non 2xx status code returned\");\n return new Response(resp.body, {\n headers: resp.headers,\n status: resp.status,\n });\n } catch (err) {\n // TODO(lucacasonato): only retry on known retryable errors\n console.warn(\"retrying on proxy error\", err);\n lastErr = err;\n }\n }\n throw lastErr;\n}\n\nexport async function getLatestVersion(\n module: string,\n): Promise<string | undefined> {\n let lastErr;\n for (let i = 0; i < 3; i++) {\n try {\n const res = await fetch(`${S3_BUCKET}${module}/meta/versions.json`);\n if (res.status === 404 || res.status === 403) return undefined;\n if (!res.ok) throw new TypeError(\"non 2xx status code returned\");\n const versions = await res.json();\n return versions?.latest;\n } catch (err) {\n // TODO(lucacasonato): only retry on known retryable errors\n console.warn(\"retrying on proxy error\", err);\n lastErr = err;\n }\n }\n throw lastErr;\n}\n", "transpiled": "/* Copyright 2020 the Deno authors. All rights reserved. MIT license. */ import { parseNameVersion } from \"../util/registry_utils.ts\";\nexport const S3_BUCKET = \"http://deno- … [Строка слишком длинная. Вы можете скачать файл] "content_type": null, "deps": ["file:///src/util/registry_utils.ts"] } }, "https://deno.land/std@0.108.0/async/deferred.ts": { "Source": { "source": "// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.\n// TODO(ry) It'd be better to make Deferred a class that inherits from\n// Promise, rather than an interface. This is possible in ES2016, however\n// typescript produces broken code when targeting ES5 code.\n// See https://github.com/Microsoft/TypeScript/issues/15202\n// At the time of writing, the github issue is closed but the problem remains.\nexport interface Deferred<T> extends Promise<T> {\n readonly state: \"pending\" | \"fulfilled\" | \"rejected\";\n resolve(value?: T | PromiseLike<T>): void;\n // deno-lint-ignore no-explicit-any\n reject(reason?: any): void;\n}\n\n/** Creates a Promise with the `reject` and `resolve` functions\n * placed as methods on the promise object itself. It allows you to do:\n *\n * ```ts\n * import { deferred } from \"./deferred.ts\";\n *\n * const p = deferred<number>();\n * // ...\n * p.resolve(42);\n * ```\n */\nexport function deferred<T>(): Deferred<T> {\n let methods;\n let state = \"pending\";\n const promise = new Promise<T>((resolve, reject): void => {\n methods = {\n async resolve(value: T | PromiseLike<T>) {\n await value;\n state = \"fulfilled\";\n resolve(value);\n },\n // deno-lint-ignore no-explicit-any\n reject(reason?: any) {\n state = \"rejected\";\n reject(reason);\n },\n };\n });\n Object.defineProperty(promise, \"state\", { get: () => state });\n return Object.assign(promise, methods) as Deferred<T>;\n}\n", "transpiled": "/** Creates a Promise with the `reject` and `resolve` functions\n * placed as methods on the promise object itself. It allows you to do:\n *\n * ```ts\n * import { deferred } from \"./deferred.ts\";\n *\n * const p = deferred<number>();\n * // ...\n * p.resolve(42);\n * ```\n */ export function deferred() {\n let methods;\n let state = \"pending\";\n const promise = new Promise((resolve, reject)=>{\n methods = {\n async resolve (value) {\n await value;\n state = \"fulfilled\";\n resolve(value);\n },\n // deno-lint-ignore no-explicit-any\n reject (reason) {\n state = \"rejected\";\n reject(reason);\n }\n };\n });\n Object.defineProperty(promise, \"state\", {\n get: ()=>state\n });\n return Object.assign(promise, methods);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIjxodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4xMDguMC9hc3luYy9kZWZlcnJlZC50cz4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBYUEsRUFVRyxBQVZIOzs7Ozs7Ozs7O0NBVUcsQUFWSCxFQVVHLENBQ0gsTUFBTSxVQUFVLFFBQVEsR0FBbUIsQ0FBQztJQUMxQyxHQUFHLENBQUMsT0FBTztJQUNYLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBUztJQUNyQixLQUFLLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQUssT0FBTyxFQUFFLE1BQU0sR0FBVyxDQUFDO1FBQ3pELE9BQU8sR0FBRyxDQUFDO2tCQUNILE9BQU8sRUFBQyxLQUF5QixFQUFFLENBQUM7Z0JBQ3hDLEtBQUssQ0FBQyxLQUFLO2dCQUNYLEtBQUssR0FBRyxDQUFXO2dCQUNuQixPQUFPLENBQUMsS0FBSztZQUNmLENBQUM7WUFDRCxFQUFtQyxBQUFuQyxpQ0FBbUM7WUFDbkMsTUFBTSxFQUFDLE1BQVksRUFBRSxDQUFDO2dCQUNwQixLQUFLLEdBQUcsQ0FBVTtnQkFDbEIsTUFBTSxDQUFDLE1BQU07WUFDZixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFDRCxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFPLFFBQUUsQ0FBQztRQUFDLEdBQUcsTUFBUSxLQUFLO0lBQUMsQ0FBQztJQUM1RCxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsT0FBTztBQUN2QyxDQUFDIn0=", "content_type": "application/typescript; charset=utf-8", "deps": [] } }, "https://deno.land/std@0.120.0/async/mux_async_iterator.ts": { "Source": { "source": "// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.\nimport { Deferred, deferred } from \"./deferred.ts\";\n\ninterface TaggedYieldedValue<T> {\n iterator: AsyncIterator<T>;\n value: T;\n}\n\n/** The MuxAsyncIterator class multiplexes multiple async iterators into a\n * single stream. It currently makes an assumption:\n * - The final result (the value returned and not yielded from the iterator)\n * does not matter; if there is any, it is discarded.\n */\nexport class MuxAsyncIterator<T> implements AsyncIterable<T> {\n private iteratorCount = 0;\n private yields: Array<TaggedYieldedValue<T>> = [];\n // deno-lint-ignore no-explicit-any\n private throws: any[] = [];\n private signal: Deferred<void> = deferred();\n\n add(iterable: AsyncIterable<T>): void {\n ++this.iteratorCount;\n this.callIteratorNext(iterable[Symbol.asyncIterator]());\n }\n\n private async callIteratorNext(\n iterator: AsyncIterator<T>,\n ) {\n try {\n const { value, done } = await iterator.next();\n if (done) {\n --this.iteratorCount;\n } else {\n this.yields.push({ iterator, value });\n }\n } catch (e) {\n this.throws.push(e);\n }\n this.signal.resolve();\n }\n\n async *iterate(): AsyncIterableIterator<T> {\n while (this.iteratorCount > 0) {\n // Sleep until any of the wrapped iterators yields.\n await this.signal;\n\n // Note that while we're looping over `yields`, new items may be added.\n for (let i = 0; i < this.yields.length; i++) {\n const { iterator, value } = this.yields[i];\n yield value;\n this.callIteratorNext(iterator);\n }\n\n if (this.throws.length) {\n for (const e of this.throws) {\n throw e;\n }\n this.throws.length = 0;\n }\n // Clear the `yields` list and reset the `signal` promise.\n this.yields.length = 0;\n this.signal = deferred();\n }\n }\n\n [Symbol.asyncIterator](): AsyncIterator<T> {\n return this.iterate();\n }\n}\n", "transpiled": "// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.\nimport { deferred } from \"./deferred.ts\";\n/** The MuxAsyncIterator class multiplexes multiple async iterators into a\n * single stream. It currently makes an assumption:\n * - The final result (the value returned and not yielded from the iterator)\n * does not matter; if there is any, it is discarded.\n */ export class MuxAsyncIterator {\n iteratorCount = 0;\n yields = [];\n // deno-lint-ignore no-explicit-any\n throws = [];\n signal = deferred();\n add(iterable) {\n ++this.iteratorCount;\n this.callIteratorNext(iterable[Symbol.asyncIterator]());\n }\n async callIteratorNext(iterator) {\n try {\n const { value , done } = await iterator.next();\n if (done) {\n --this.iteratorCount;\n } else {\n this.yields.push({\n iterator,\n value\n });\n }\n } catch (e) {\n this.throws.push(e);\n }\n this.signal.resolve();\n }\n async *iterate() {\n while(this.iteratorCount > 0){\n // Sleep until any of the wrapped iterators yields.\n await this.signal;\n // Note that while we're looping over `yields`, new items may be added.\n for(let i = 0; i < this.yields.length; i++){\n const { iterator , value } = this.yields[i];\n yield value;\n this.callIteratorNext(iterator);\n }\n if (this.throws.length) {\n for (const e of this.throws){\n throw e;\n }\n this.throws.length = 0;\n }\n // Clear the `yields` list and reset the `signal` promise.\n this.yields.length = 0;\n this.signal = deferred();\n }\n }\n [Symbol.asyncIterator]() {\n return this.iterate();\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIjxodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4xMjAuMC9hc3luYy9tdXhfYXN5bmNfaXRlcmF0b3IudHM+Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLEVBQTBFLEFBQTFFLHdFQUEwRTtBQUMxRSxNQUFNLEdBQWEsUUFBUSxRQUFRLENBQWU7QUFPbEQsRUFJRyxBQUpIOzs7O0NBSUcsQUFKSCxFQUlHLENBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQUNuQixhQUFhLEdBQUcsQ0FBQztJQUNqQixNQUFNLEdBQWlDLENBQUMsQ0FBQztJQUNqRCxFQUFtQyxBQUFuQyxpQ0FBbUM7SUFDM0IsTUFBTSxHQUFVLENBQUMsQ0FBQztJQUNsQixNQUFNLEdBQW1CLFFBQVE7SUFFekMsR0FBRyxDQUFDLFFBQTBCLEVBQVEsQ0FBQztVQUNuQyxJQUFJLENBQUMsYUFBYTtRQUNwQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxhQUFhO0lBQ3JELENBQUM7VUFFYSxnQkFBZ0IsQ0FDNUIsUUFBMEIsRUFDMUIsQ0FBQztRQUNELEdBQUcsQ0FBQyxDQUFDO1lBQ0gsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUUsSUFBSSxFQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUk7WUFDM0MsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDO2tCQUNQLElBQUksQ0FBQyxhQUFhO1lBQ3RCLENBQUMsTUFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQUMsUUFBUTtvQkFBRSxLQUFLO2dCQUFDLENBQUM7WUFDdEMsQ0FBQztRQUNILENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDWCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BCLENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU87SUFDckIsQ0FBQztXQUVNLE9BQU8sR0FBNkIsQ0FBQztjQUNuQyxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBRSxDQUFDO1lBQzlCLEVBQW1ELEFBQW5ELGlEQUFtRDtZQUNuRCxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU07WUFFakIsRUFBdUUsQUFBdkUscUVBQXVFO1lBQ3ZFLEdBQUcsQ0FBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFJLENBQUM7Z0JBQzVDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFFLEtBQUssRUFBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO3NCQUNuQyxLQUFLO2dCQUNYLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRO1lBQ2hDLENBQUM7WUFFRCxFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDdkIsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBRSxDQUFDO29CQUM1QixLQUFLLENBQUMsQ0FBQztnQkFDVCxDQUFDO2dCQUNELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDeEIsQ0FBQztZQUNELEVBQTBELEFBQTFELHdEQUEwRDtZQUMxRCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUTtRQUN4QixDQUFDO0lBQ0gsQ0FBQztLQUVBLE1BQU0sQ0FBQyxhQUFhLElBQXNCLENBQUM7UUFDMUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPO0lBQ3JCLENBQUMifQ==", "content_type": "application/typescript; charset=utf-8", "deps": ["https://deno.land/std@0.120.0/async/deferred.ts"] } }, "file:///src/worker/handler.ts": { "Source": { "source": "/* Copyright 2020 the Deno authors. All rights reserved. MIT license. */\n\nimport { handleRegistryRequest } from \"./registry.ts\";\nimport { handleConfigRequest } from \"./registry_config.ts\";\nimport { handleApiRequest } from \"./suggestions.ts\";\nimport { handleVSCRequest } from \"./vscode.ts\";\n\nimport type { ConnInfo } from \"https://deno.land/std@0.112.0/http/server.ts\";\nimport { createReporter } from \"https://deno.land/x/g_a@0.1.2/mod.ts\";\nimport { accepts } from \"https://deno.land/x/oak_commons@0.1.1/negotiation.ts\";\n\nconst REMOTE_URL = \"https://deno-website2.now.sh\";\n\nconst ga = createReporter({\n filter(req, res) {\n const { pathname } = new URL(req.url);\n const isHtml = accepts(req, \"application/*\", \"text/html\") === \"text/html\";\n return pathname === \"/\" || pathname.startsWith(\"/std\") ||\n pathname.startsWith(\"/x\") || isHtml || res.status >= 400;\n },\n metaData(req, res) {\n const accept = req.headers.get(\"accept\");\n const referer = req.headers.get(\"referer\");\n const userAgent = req.headers.get(\"user-agent\");\n\n const { ok, statusText } = res;\n const isHtml = accepts(req, \"application/*\", \"text/html\") === \"text/html\";\n\n // Set the page title to \"website\" or \"javascript\" or \"typescript\" or \"wasm\"\n const contentType = res.headers.get(\"content-type\");\n let documentTitle;\n if (!ok) {\n documentTitle = statusText.toLowerCase();\n } else if (isHtml) {\n documentTitle = \"website\";\n } else if (contentType != null) {\n documentTitle = /^application\\/(.*?)(?:;|$)/i.exec(contentType)?.[1];\n }\n\n // Files downloaded by a bot (deno, curl) get a special medium/source tag.\n let campaignMedium;\n let campaignSource;\n if (\n referer == null &&\n (userAgent == null || !userAgent.startsWith(\"Mozilla/\")) &&\n (accept == null || accept === \"*/*\")\n ) {\n campaignMedium = \"Bot\";\n campaignSource = userAgent?.replace(/[^\\w\\-].*$/, \"\");\n }\n\n return { campaignMedium, campaignSource, documentTitle };\n },\n});\n\nexport function withLog(\n handler: (\n request: Request,\n connInfo: ConnInfo,\n ) => Response | Promise<Response>,\n): (request: Request, connInfo: ConnInfo) => Promise<Response> {\n return async (req, con) => {\n let err: unknown;\n let res!: Response;\n const start = performance.now();\n try {\n res = await handler(req, con);\n } catch (e) {\n err = e;\n console.error(err);\n res = new Response(\n \"500 Internal Server Error\\nPlease try again later.\",\n { status: 500 },\n );\n } finally {\n await ga(req, con, res, start, err);\n }\n return res;\n };\n}\n\nexport function handleRequest(request: Request): Promise<Response> {\n // this checks to see if the requestor prefers \"application\" code over \"html\"\n // which would be run-time clients who either omit an accept header (which\n // implies any content type) or provides a `*/*` header\n const isHtml = accepts(request, \"application/*\", \"text/html\") === \"text/html\";\n\n const url = new URL(request.url);\n\n if (url.pathname === \"/v1\") {\n return Promise.resolve(\n Response.redirect(\"https://deno.land/posts/v1\", 301),\n );\n }\n\n if (url.pathname === \"/posts\") {\n return Promise.resolve(Response.redirect(\"https://deno.com/blog\", 307));\n }\n\n if (url.pathname.startsWith(\"/posts/\")) {\n return Promise.resolve(Response.redirect(\n `https://deno.com/blog/${url.pathname.substring(\"/posts/\".length)}`,\n 307,\n ));\n }\n\n if (url.pathname.startsWith(\"/typedoc\")) {\n return Promise.resolve(\n Response.redirect(\"https://doc.deno.land/deno/stable\", 301),\n );\n }\n\n if (url.pathname.startsWith(\"/_vsc\")) {\n return handleVSCRequest(url);\n }\n\n if (url.pathname.startsWith(\"/_api/\")) {\n return handleApiRequest(url);\n }\n\n if ([\"/install.sh\", \"/install.ps1\"].includes(url.pathname)) {\n return Promise.resolve(\n Response.redirect(`https://deno.land/x/install${url.pathname}`, 307),\n );\n }\n\n if (url.pathname === \"/.well-known/deno-import-intellisense.json\") {\n return handleConfigRequest(request);\n }\n\n const isRegistryRequest = url.pathname.startsWith(\"/std\") ||\n url.pathname.startsWith(\"/x/\");\n\n if (isRegistryRequest) {\n if (isHtml) {\n const ln = extractAltLineNumberReference(url.toString());\n if (ln) {\n return Promise.resolve(\n Response.redirect(`${ln.rest}#L${ln.line}`, 302),\n );\n }\n } else {\n return handleRegistryRequest(url);\n }\n }\n\n if (![\"HEAD\", \"GET\"].includes(request.method)) {\n return Promise.resolve(new Response(null, { status: 405 })); // Method not allowed.\n }\n\n return proxyFile(url, REMOTE_URL, request);\n}\n\nconst ALT_LINENUMBER_MATCHER = /(.*):(\\d+):\\d+$/;\n\nexport function extractAltLineNumberReference(\n url: string,\n): { rest: string; line: number } | null {\n const matches = ALT_LINENUMBER_MATCHER.exec(url);\n if (matches === null) return null;\n return {\n rest: matches[1],\n line: parseInt(matches[2]),\n };\n}\n\ninterface CacheEntry {\n body: ArrayBuffer;\n contentType: string;\n etag: string;\n immutable: boolean;\n}\n\nconst cache = new Map<string, CacheEntry>();\n\n// When deploying a new version, the worker will be updated before the static\n// website hosted by Vercel gets updated. Therefore we clear the cache 2 minutes\n// after startup up to ensure that there is no stale static content in the\n// in-memory cache.\nsetTimeout(() => cache.clear(), 2 * 60 * 1000);\n\nasync function proxyFile(\n url: URL,\n remoteUrl: string,\n request: Request,\n): Promise<Response> {\n const proxyUrl = new URL(remoteUrl + url.pathname).href;\n let cacheEntry = cache.get(proxyUrl);\n\n if (cacheEntry === undefined) {\n const proxyRequest = new Request(proxyUrl);\n const proxyResponse = await fetchWithRetry(proxyRequest);\n\n if (!(proxyResponse.ok || proxyResponse.redirected)) {\n return proxyResponse;\n }\n\n const body = await proxyResponse.arrayBuffer();\n const contentType = proxyResponse.headers.get(\"content-type\") ??\n \"application/binary\";\n const etag = await crypto.subtle.digest(\"SHA-1\", body).then((hash) =>\n Array.from(new Uint8Array(hash))\n .map((byte) => byte.toString(16).padStart(2, \"0\"))\n .join(\"\")\n );\n const immutable = /\\bimmutable\\b/i\n .test(proxyResponse.headers.get(\"cache-control\") ?? \"\");\n\n cacheEntry = {\n body,\n contentType,\n etag,\n immutable,\n };\n cache.set(proxyUrl, cacheEntry);\n }\n\n if (request.headers.get(\"if-none-match\") !== cacheEntry.etag) {\n let body;\n switch (request.method) {\n case \"HEAD\":\n body = null;\n break;\n case \"GET\":\n body = cacheEntry.body;\n break;\n default:\n throw new Error(`Unsupported request method: ${request.method}`);\n }\n return new Response(body, {\n headers: {\n \"content-type\": cacheEntry.contentType,\n \"cache-control\": cacheEntry.immutable\n ? \"public,max-age=31536000,immutable\"\n : \"public,max-age=0,must-revalidate\",\n \"etag\": cacheEntry.etag,\n },\n });\n } else {\n return new Response(null, { status: 304 }); // Not modified.\n }\n}\n\nasync function fetchWithRetry(request: Request): Promise<Response> {\n let promise: Promise<Response>;\n for (let i = 0; i < 3; i++) {\n promise = fetch(request);\n try {\n return await promise;\n } catch (err) {\n // TODO(lucacasonato): only retry on known retryable errors\n console.warn(\"retrying on proxy error\", err);\n }\n }\n return promise!;\n}\n", "transpiled": "/* Copyright 2020 the Deno authors. All rights reserved. MIT license. */ import { handleRegistryRequest } from \"./registry.ts\";\nimport { handleConfigRequest } from \"./regist … [Строка слишком длинная. Вы можете скачать файл] "content_type": null, "deps": [ "file:///src/worker/registry.ts", "file:///src/worker/registry_config.ts", "file:///src/worker/suggestions.ts", "file:///src/worker/vscode.ts", "https://deno.land/x/g_a@0.1.2/mod.ts", "https://deno.land/x/oak_commons@0.1.1/negotiation.ts" ] } }, "https://deno.land/std@0.108.0/async/tee.ts": { "Source": { "source": "// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.\n\n// Utility for representing n-tuple\ntype Tuple<T, N extends number> = N extends N\n ? number extends N ? T[] : TupleOf<T, N, []>\n : never;\ntype TupleOf<T, N extends number, R extends unknown[]> = R[\"length\"] extends N\n ? R\n : TupleOf<T, N, [T, ...R]>;\n\nconst noop = () => {};\n\nclass AsyncIterableClone<T> implements AsyncIterable<T> {\n currentPromise: Promise<IteratorResult<T>>;\n resolveCurrent: (x: Promise<IteratorResult<T>>) => void = noop;\n consumed: Promise<void>;\n consume: () => void = noop;\n\n constructor() {\n this.currentPromise = new Promise<IteratorResult<T>>((resolve) => {\n this.resolveCurrent = resolve;\n });\n this.consumed = new Promise<void>((resolve) => {\n this.consume = resolve;\n });\n }\n\n reset() {\n this.currentPromise = new Promise<IteratorResult<T>>((resolve) => {\n this.resolveCurrent = resolve;\n });\n this.consumed = new Promise<void>((resolve) => {\n this.consume = resolve;\n });\n }\n\n async next(): Promise<IteratorResult<T>> {\n const res = await this.currentPromise;\n this.consume();\n this.reset();\n return res;\n }\n\n async push(res: Promise<IteratorResult<T>>): Promise<void> {\n this.resolveCurrent(res);\n // Wait until current promise is consumed and next item is requested.\n await this.consumed;\n }\n\n [Symbol.asyncIterator](): AsyncIterator<T> {\n return this;\n }\n}\n\n/**\n * Branches the given async iterable into the n branches.\n *\n * Example:\n *\n * ```ts\n * import { tee } from \"./tee.ts\";\n *\n * const gen = async function* gen() {\n * yield 1;\n * yield 2;\n * yield 3;\n * }\n *\n * const [branch1, branch2] = tee(gen());\n *\n * (async () => {\n * for await (const n of branch1) {\n * console.log(n); // => 1, 2, 3\n * }\n * })();\n *\n * (async () => {\n * for await (const n of branch2) {\n * console.log(n); // => 1, 2, 3\n * }\n * })();\n * ```\n */\nexport function tee<T, N extends number = 2>(\n src: AsyncIterable<T>,\n n: N = 2 as N,\n): Tuple<AsyncIterable<T>, N> {\n const clones: Tuple<AsyncIterableClone<T>, N> = Array.from({ length: n }).map(\n () => new AsyncIterableClone(),\n // deno-lint-ignore no-explicit-any\n ) as any;\n (async () => {\n const iter = src[Symbol.asyncIterator]();\n await Promise.resolve();\n while (true) {\n const res = iter.next();\n await Promise.all(clones.map((c) => c.push(res)));\n if ((await res).done) {\n break;\n }\n }\n })().catch((e) => {\n console.error(e);\n });\n return clones;\n}\n", "transpiled": "const noop = ()=>{\n};\nclass AsyncIterableClone {\n currentPromise;\n resolveCurrent = noop;\n consumed;\n consume = noop;\n constructor(){\n this.currentPromise = new Promise((resolve)=>{\n this.resolveCurrent = resolve;\n });\n this.consumed = new Promise((resolve)=>{\n this.consume = resolve;\n });\n }\n reset() {\n this.currentPromise = new Promise((resolve)=>{\n this.resolveCurrent = resolve;\n });\n this.consumed = new Promise((resolve)=>{\n this.consume = resolve;\n });\n }\n async next() {\n const res = await this.currentPromise;\n this.consume();\n this.reset();\n return res;\n }\n async push(res) {\n this.resolveCurrent(res);\n // Wait until current promise is consumed and next item is requested.\n await this.consumed;\n }\n [Symbol.asyncIterator]() {\n return this;\n }\n}\n/**\n * Branches the given async iterable into the n branches.\n *\n * Example:\n *\n * ```ts\n * import { tee } from \"./tee.ts\";\n *\n * const gen = async function* gen() {\n * yield 1;\n * yield 2;\n * yield 3;\n * }\n *\n * const [branch1, branch2] = tee(gen());\n *\n * (async () => {\n * for await (const n of branch1) {\n * console.log(n); // => 1, 2, 3\n * }\n * })();\n *\n * (async () => {\n * for await (const n of branch2) {\n * console.log(n); // => 1, 2, 3\n * }\n * })();\n * ```\n */ export function tee(src, n = 2) {\n const clones = Array.from({\n length: n\n }).map(()=>new AsyncIterableClone()\n );\n (async ()=>{\n const iter = src[Symbol.asyncIterator]();\n await Promise.resolve();\n while(true){\n const res = iter.next();\n await Promise.all(clones.map((c)=>c.push(res)\n ));\n if ((await res).done) {\n break;\n }\n }\n })().catch((e)=>{\n console.error(e);\n });\n return clones;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIjxodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4xMDguMC9hc3luYy90ZWUudHM+Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVBLEtBQUssQ0FBQyxJQUFJLE9BQVMsQ0FBQztBQUFBLENBQUM7TUFFZixrQkFBa0I7SUFDdEIsY0FBYztJQUNkLGNBQWMsR0FBNEMsSUFBSTtJQUM5RCxRQUFRO0lBQ1IsT0FBTyxHQUFlLElBQUk7aUJBRVosQ0FBQztRQUNiLElBQUksQ0FBQyxjQUFjLEdBQUcsR0FBRyxDQUFDLE9BQU8sRUFBcUIsT0FBTyxHQUFLLENBQUM7WUFDakUsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPO1FBQy9CLENBQUM7UUFDRCxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQVEsT0FBTyxHQUFLLENBQUM7WUFDOUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPO1FBQ3hCLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxHQUFHLENBQUM7UUFDUCxJQUFJLENBQUMsY0FBYyxHQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQXFCLE9BQU8sR0FBSyxDQUFDO1lBQ2pFLElBQUksQ0FBQyxjQUFjLEdBQUcsT0FBTztRQUMvQixDQUFDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsT0FBTyxFQUFRLE9BQU8sR0FBSyxDQUFDO1lBQzlDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTztRQUN4QixDQUFDO0lBQ0gsQ0FBQztVQUVLLElBQUksR0FBK0IsQ0FBQztRQUN4QyxLQUFLLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYztRQUNyQyxJQUFJLENBQUMsT0FBTztRQUNaLElBQUksQ0FBQyxLQUFLO1FBQ1YsTUFBTSxDQUFDLEdBQUc7SUFDWixDQUFDO1VBRUssSUFBSSxDQUFDLEdBQStCLEVBQWlCLENBQUM7UUFDMUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHO1FBQ3ZCLEVBQXFFLEFBQXJFLG1FQUFxRTtRQUNyRSxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVE7SUFDckIsQ0FBQztLQUVBLE1BQU0sQ0FBQyxhQUFhLElBQXNCLENBQUM7UUFDMUMsTUFBTSxDQUFDLElBQUk7SUFDYixDQUFDOztBQUdILEVBNEJHLEFBNUJIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBNEJHLEFBNUJILEVBNEJHLENBQ0gsTUFBTSxVQUFVLEdBQUcsQ0FDakIsR0FBcUIsRUFDckIsQ0FBSSxHQUFHLENBQUMsRUFDb0IsQ0FBQztJQUM3QixLQUFLLENBQUMsTUFBTSxHQUFvQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFBQyxNQUFNLEVBQUUsQ0FBQztJQUFDLENBQUMsRUFBRSxHQUFHLEtBQ3JFLEdBQUcsQ0FBQyxrQkFBa0I7O2VBR2pCLENBQUM7UUFDWixLQUFLLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsYUFBYTtRQUNyQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU87Y0FDZCxJQUFJLENBQUUsQ0FBQztZQUNaLEtBQUssQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUk7WUFDckIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHOztZQUM5QyxFQUFFLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQztnQkFDckIsS0FBSztZQUNQLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLEdBQUssQ0FBQztRQUNqQixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUNELE1BQU0sQ0FBQyxNQUFNO0FBQ2YsQ0FBQyJ9", "content_type": "application/typescript; charset=utf-8", "deps": [] } }, "https://deno.land/x/g_a@0.1.2/mod.ts": { "Source": { "source": "// Copyright 2021-2022 the Deno authors. All rights reserved. MIT license.\n\nimport { delay } from \"https://deno.land/std@0.120.0/async/mod.ts\";\nimport * as colors from \"https: … [Строка слишком длинная. Вы можете скачать файл] "transpiled": "// Copyright 2021-2022 the Deno authors. All rights reserved. MIT license.\nimport { delay } from \"https://deno.land/std@0.120.0/async/mod.ts\";\nimport * as colors from \"http … [Строка слишком длинная. Вы можете скачать файл] "content_type": "application/typescript; charset=utf-8", "deps": [ "https://deno.land/std@0.120.0/async/mod.ts", "https://deno.land/std@0.120.0/fmt/colors.ts", "https://deno.land/std@0.120.0/http/http_status.ts" ] } }, "https://deno.land/std@0.120.0/http/http_status.ts": { "Source": { "source": "// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.\n\n/**\n * Enum of HTTP status codes.\n *\n * ```ts\n * import {\n * Status,\n * STATUS_TEXT,\n * } from \"https://deno.land/std@$STD_VERSION/http/http_status.ts\";\n *\n * console.log(Status.NotFound); //=> 404\n * console.log(STATUS_TEXT.get(Status.NotFound)); //=> \"Not Found\"\n * ```\n */\nexport enum Status {\n /** RFC 7231, 6.2.1 */\n Continue = 100,\n /** RFC 7231, 6.2.2 */\n SwitchingProtocols = 101,\n /** RFC 2518, 10.1 */\n Processing = 102,\n /** RFC 8297 **/\n EarlyHints = 103,\n /** RFC 7231, 6.3.1 */\n OK = 200,\n /** RFC 7231, 6.3.2 */\n Created = 201,\n /** RFC 7231, 6.3.3 */\n Accepted = 202,\n /** RFC 7231, 6.3.4 */\n NonAuthoritativeInfo = 203,\n /** RFC 7231, 6.3.5 */\n NoContent = 204,\n /** RFC 7231, 6.3.6 */\n ResetContent = 205,\n /** RFC 7233, 4.1 */\n PartialContent = 206,\n /** RFC 4918, 11.1 */\n MultiStatus = 207,\n /** RFC 5842, 7.1 */\n AlreadyReported = 208,\n /** RFC 3229, 10.4.1 */\n IMUsed = 226,\n\n /** RFC 7231, 6.4.1 */\n MultipleChoices = 300,\n /** RFC 7231, 6.4.2 */\n MovedPermanently = 301,\n /** RFC 7231, 6.4.3 */\n Found = 302,\n /** RFC 7231, 6.4.4 */\n SeeOther = 303,\n /** RFC 7232, 4.1 */\n NotModified = 304,\n /** RFC 7231, 6.4.5 */\n UseProxy = 305,\n /** RFC 7231, 6.4.7 */\n TemporaryRedirect = 307,\n /** RFC 7538, 3 */\n PermanentRedirect = 308,\n\n /** RFC 7231, 6.5.1 */\n BadRequest = 400,\n /** RFC 7235, 3.1 */\n Unauthorized = 401,\n /** RFC 7231, 6.5.2 */\n PaymentRequired = 402,\n /** RFC 7231, 6.5.3 */\n Forbidden = 403,\n /** RFC 7231, 6.5.4 */\n NotFound = 404,\n /** RFC 7231, 6.5.5 */\n MethodNotAllowed = 405,\n /** RFC 7231, 6.5.6 */\n NotAcceptable = 406,\n /** RFC 7235, 3.2 */\n ProxyAuthRequired = 407,\n /** RFC 7231, 6.5.7 */\n RequestTimeout = 408,\n /** RFC 7231, 6.5.8 */\n Conflict = 409,\n /** RFC 7231, 6.5.9 */\n Gone = 410,\n /** RFC 7231, 6.5.10 */\n LengthRequired = 411,\n /** RFC 7232, 4.2 */\n PreconditionFailed = 412,\n /** RFC 7231, 6.5.11 */\n RequestEntityTooLarge = 413,\n /** RFC 7231, 6.5.12 */\n RequestURITooLong = 414,\n /** RFC 7231, 6.5.13 */\n UnsupportedMediaType = 415,\n /** RFC 7233, 4.4 */\n RequestedRangeNotSatisfiable = 416,\n /** RFC 7231, 6.5.14 */\n ExpectationFailed = 417,\n /** RFC 7168, 2.3.3 */\n Teapot = 418,\n /** RFC 7540, 9.1.2 */\n MisdirectedRequest = 421,\n /** RFC 4918, 11.2 */\n UnprocessableEntity = 422,\n /** RFC 4918, 11.3 */\n Locked = 423,\n /** RFC 4918, 11.4 */\n FailedDependency = 424,\n /** RFC 8470, 5.2 */\n TooEarly = 425,\n /** RFC 7231, 6.5.15 */\n UpgradeRequired = 426,\n /** RFC 6585, 3 */\n PreconditionRequired = 428,\n /** RFC 6585, 4 */\n TooManyRequests = 429,\n /** RFC 6585, 5 */\n RequestHeaderFieldsTooLarge = 431,\n /** RFC 7725, 3 */\n UnavailableForLegalReasons = 451,\n\n /** RFC 7231, 6.6.1 */\n InternalServerError = 500,\n /** RFC 7231, 6.6.2 */\n NotImplemented = 501,\n /** RFC 7231, 6.6.3 */\n BadGateway = 502,\n /** RFC 7231, 6.6.4 */\n ServiceUnavailable = 503,\n /** RFC 7231, 6.6.5 */\n GatewayTimeout = 504,\n /** RFC 7231, 6.6.6 */\n HTTPVersionNotSupported = 505,\n /** RFC 2295, 8.1 */\n VariantAlsoNegotiates = 506,\n /** RFC 4918, 11.5 */\n InsufficientStorage = 507,\n /** RFC 5842, 7.2 */\n LoopDetected = 508,\n /** RFC 2774, 7 */\n NotExtended = 510,\n /** RFC 6585, 6 */\n NetworkAuthenticationRequired = 511,\n}\n\n/**\n * Map from status code to status text.\n *\n * ```ts\n * import {\n * Status,\n * STATUS_TEXT,\n * } from \"https://deno.land/std@$STD_VERSION/http/http_status.ts\";\n *\n * console.log(Status.NotFound); //=> 404\n * console.log(STATUS_TEXT.get(Status.NotFound)); //=> \"Not Found\"\n * ```\n */\nexport const STATUS_TEXT = new Map<Status, string>([\n [Status.Continue, \"Continue\"],\n [Status.SwitchingProtocols, \"Switching Protocols\"],\n [Status.Processing, \"Processing\"],\n [Status.EarlyHints, \"Early Hints\"],\n [Status.OK, \"OK\"],\n [Status.Created, \"Created\"],\n [Status.Accepted, \"Accepted\"],\n [Status.NonAuthoritativeInfo, \"Non-Authoritative Information\"],\n [Status.NoContent, \"No Content\"],\n [Status.ResetContent, \"Reset Content\"],\n [Status.PartialContent, \"Partial Content\"],\n [Status.MultiStatus, \"Multi-Status\"],\n [Status.AlreadyReported, \"Already Reported\"],\n [Status.IMUsed, \"IM Used\"],\n [Status.MultipleChoices, \"Multiple Choices\"],\n [Status.MovedPermanently, \"Moved Permanently\"],\n [Status.Found, \"Found\"],\n [Status.SeeOther, \"See Other\"],\n [Status.NotModified, \"Not Modified\"],\n [Status.UseProxy, \"Use Proxy\"],\n [Status.TemporaryRedirect, \"Temporary Redirect\"],\n [Status.PermanentRedirect, \"Permanent Redirect\"],\n [Status.BadRequest, \"Bad Request\"],\n [Status.Unauthorized, \"Unauthorized\"],\n [Status.PaymentRequired, \"Payment Required\"],\n [Status.Forbidden, \"Forbidden\"],\n [Status.NotFound, \"Not Found\"],\n [Status.MethodNotAllowed, \"Method Not Allowed\"],\n [Status.NotAcceptable, \"Not Acceptable\"],\n [Status.ProxyAuthRequired, \"Proxy Authentication Required\"],\n [Status.RequestTimeout, \"Request Timeout\"],\n [Status.Conflict, \"Conflict\"],\n [Status.Gone, \"Gone\"],\n [Status.LengthRequired, \"Length Required\"],\n [Status.PreconditionFailed, \"Precondition Failed\"],\n [Status.RequestEntityTooLarge, \"Request Entity Too Large\"],\n [Status.RequestURITooLong, \"Request URI Too Long\"],\n [Status.UnsupportedMediaType, \"Unsupported Media Type\"],\n [Status.RequestedRangeNotSatisfiable, \"Requested Range Not Satisfiable\"],\n [Status.ExpectationFailed, \"Expectation Failed\"],\n [Status.Teapot, \"I'm a teapot\"],\n [Status.MisdirectedRequest, \"Misdirected Request\"],\n [Status.UnprocessableEntity, \"Unprocessable Entity\"],\n [Status.Locked, \"Locked\"],\n [Status.FailedDependency, \"Failed Dependency\"],\n [Status.TooEarly, \"Too Early\"],\n [Status.UpgradeRequired, \"Upgrade Required\"],\n [Status.PreconditionRequired, \"Precondition Required\"],\n [Status.TooManyRequests, \"Too Many Requests\"],\n [Status.RequestHeaderFieldsTooLarge, \"Request Header Fields Too Large\"],\n [Status.UnavailableForLegalReasons, \"Unavailable For Legal Reasons\"],\n [Status.InternalServerError, \"Internal Server Error\"],\n [Status.NotImplemented, \"Not Implemented\"],\n [Status.BadGateway, \"Bad Gateway\"],\n [Status.ServiceUnavailable, \"Service Unavailable\"],\n [Status.GatewayTimeout, \"Gateway Timeout\"],\n [Status.HTTPVersionNotSupported, \"HTTP Version Not Supported\"],\n [Status.VariantAlsoNegotiates, \"Variant Also Negotiates\"],\n [Status.InsufficientStorage, \"Insufficient Storage\"],\n [Status.LoopDetected, \"Loop Detected\"],\n [Status.NotExtended, \"Not Extended\"],\n [Status.NetworkAuthenticationRequired, \"Network Authentication Required\"],\n]);\n", "transpiled": "export var Status;\n(function(Status) {\n Status[Status[/** RFC 7231, 6.2.1 */ \"Continue\"] = 100] = \"Continue\";\n Status[Status[/** RFC 7231, 6.2.2 */ \"SwitchingProto … [Строка слишком длинная. Вы можете скачать файл] "content_type": "application/typescript; charset=utf-8", "deps": [] } }, "https://deno.land/x/path_to_regexp@v6.2.0/index.ts": { "Source": { "source": "/**\n * Tokenizer results.\n */\ninterface LexToken {\n type:\n | \"OPEN\"\n | \"CLOSE\"\n | \"PATTERN\"\n | \"NAME\"\n | \"CHAR\"\n | \"ESCAPED_CHAR\"\n | \"M … [Строка слишком длинная. Вы можете скачать файл] "transpiled": "/**\n * Tokenize input string.\n */ function lexer(str) {\n const tokens = [];\n let i = 0;\n while(i < str.length){\n const char = str[i];\n if (char === … [Строка слишком длинная. Вы можете скачать файл] "content_type": "application/typescript; charset=utf-8", "deps": [] } }, "file:///src/util/registry_utils.ts": { "Source": { "source": "/* Copyright 2020 the Deno authors. All rights reserved. MIT license. */\n\nconst CDN_ENDPOINT = \"https://cdn.deno.land/\";\nconst API_ENDPOINT = \"https://api.deno.land/\";\n\nexp … [Строка слишком длинная. Вы можете скачать файл] "transpiled": "/* Copyright 2020 the Deno authors. All rights reserved. MIT license. */ const CDN_ENDPOINT = \"https://cdn.deno.land/\";\nconst API_ENDPOINT = \"https://api.deno.land/\";\nexpo … [Строка слишком длинная. Вы можете скачать файл] "content_type": null, "deps": [] } }, "https://cdn.esm.sh/v64/twas@2.1.2/deno/twas.js": { "Source": { "source": "/* esm.sh - esbuild bundle(twas@2.1.2) deno production */\nvar t=function(a,o){return o>=a?Math.floor(o/a):0};function s(a,o){o||(o=Date.now());var e=(o-a)/1e3,h=t(60,e),u=t(60,h),f=t(24,u),l=t(7,f),i=t(30,f),c=t(12,i),r=c,n=\"year\";if(e<=1)return\"just now\";c>0?(r=c,n=\"year\"):i>0?(r=i,n=\"month\"):l>0?(r=l,n=\"week\"):f>0?(r=f,n=\"day\"):u>0?(r=u,n=\"hour\"):h>0?(r=h,n=\"minute\"):e>0&&(r=e,n=\"second\");var d=Math.floor(r);return(d===1?r===u?\"an\":\"a\":d)+\" \"+n+(d>1?\"s\":\"\")+\" ago\"}export{s as default};\n", "transpiled": null, "content_type": "text/javascript; charset=utf-8", "deps": [] } }, "https://deno.land/std@0.120.0/async/deferred.ts": { "Source": { "source": "// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.\n// TODO(ry) It'd be better to make Deferred a class that inherits from\n// Promise, rather than an interface. This is possible in ES2016, however\n// typescript produces broken code when targeting ES5 code.\n// See https://github.com/Microsoft/TypeScript/issues/15202\n// At the time of writing, the github issue is closed but the problem remains.\nexport interface Deferred<T> extends Promise<T> {\n readonly state: \"pending\" | \"fulfilled\" | \"rejected\";\n resolve(value?: T | PromiseLike<T>): void;\n // deno-lint-ignore no-explicit-any\n reject(reason?: any): void;\n}\n\n/** Creates a Promise with the `reject` and `resolve` functions\n * placed as methods on the promise object itself. It allows you to do:\n *\n * ```ts\n * import { deferred } from \"./deferred.ts\";\n *\n * const p = deferred<number>();\n * // ...\n * p.resolve(42);\n * ```\n */\nexport function deferred<T>(): Deferred<T> {\n let methods;\n let state = \"pending\";\n const promise = new Promise<T>((resolve, reject): void => {\n methods = {\n async resolve(value: T | PromiseLike<T>) {\n await value;\n state = \"fulfilled\";\n resolve(value);\n },\n // deno-lint-ignore no-explicit-any\n reject(reason?: any) {\n state = \"rejected\";\n reject(reason);\n },\n };\n });\n Object.defineProperty(promise, \"state\", { get: () => state });\n return Object.assign(promise, methods) as Deferred<T>;\n}\n", "transpiled": "/** Creates a Promise with the `reject` and `resolve` functions\n * placed as methods on the promise object itself. It allows you to do:\n *\n * ```ts\n * import { deferred } from \"./deferred.ts\";\n *\n * const p = deferred<number>();\n * // ...\n * p.resolve(42);\n * ```\n */ export function deferred() {\n let methods;\n let state = \"pending\";\n const promise = new Promise((resolve, reject)=>{\n methods = {\n async resolve (value) {\n await value;\n state = \"fulfilled\";\n resolve(value);\n },\n // deno-lint-ignore no-explicit-any\n reject (reason) {\n state = \"rejected\";\n reject(reason);\n }\n };\n });\n Object.defineProperty(promise, \"state\", {\n get: ()=>state\n });\n return Object.assign(promise, methods);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIjxodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4xMjAuMC9hc3luYy9kZWZlcnJlZC50cz4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBYUEsRUFVRyxBQVZIOzs7Ozs7Ozs7O0NBVUcsQUFWSCxFQVVHLENBQ0gsTUFBTSxVQUFVLFFBQVEsR0FBbUIsQ0FBQztJQUMxQyxHQUFHLENBQUMsT0FBTztJQUNYLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBUztJQUNyQixLQUFLLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQUssT0FBTyxFQUFFLE1BQU0sR0FBVyxDQUFDO1FBQ3pELE9BQU8sR0FBRyxDQUFDO2tCQUNILE9BQU8sRUFBQyxLQUF5QixFQUFFLENBQUM7Z0JBQ3hDLEtBQUssQ0FBQyxLQUFLO2dCQUNYLEtBQUssR0FBRyxDQUFXO2dCQUNuQixPQUFPLENBQUMsS0FBSztZQUNmLENBQUM7WUFDRCxFQUFtQyxBQUFuQyxpQ0FBbUM7WUFDbkMsTUFBTSxFQUFDLE1BQVksRUFBRSxDQUFDO2dCQUNwQixLQUFLLEdBQUcsQ0FBVTtnQkFDbEIsTUFBTSxDQUFDLE1BQU07WUFDZixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFDRCxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFPLFFBQUUsQ0FBQztRQUFDLEdBQUcsTUFBUSxLQUFLO0lBQUMsQ0FBQztJQUM1RCxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsT0FBTztBQUN2QyxDQUFDIn0=", "content_type": "application/typescript; charset=utf-8", "deps": [] } }, "https://deno.land/std@0.108.0/async/deadline.ts": { "Source": { "source": "import { deferred } from \"./deferred.ts\";\n\nexport class DeadlineError extends Error {\n constructor() {\n super(\"Deadline\");\n this.name = \"DeadlineError\";\n }\n}\n\n/**\n * Create a promise which will be rejected with DeadlineError when a given delay is exceeded.\n */\nexport function deadline<T>(p: Promise<T>, delay: number): Promise<T> {\n const d = deferred<never>();\n const t = setTimeout(() => d.reject(new DeadlineError()), delay);\n return Promise.race([p, d]).finally(() => clearTimeout(t));\n}\n", "transpiled": "import { deferred } from \"./deferred.ts\";\nexport class DeadlineError extends Error {\n constructor(){\n super(\"Deadline\");\n this.name = \"DeadlineError\";\n }\n}\n/**\n * Create a promise which will be rejected with DeadlineError when a given delay is exceeded.\n */ export function deadline(p, delay) {\n const d = deferred();\n const t = setTimeout(()=>d.reject(new DeadlineError())\n , delay);\n return Promise.race([\n p,\n d\n ]).finally(()=>clearTimeout(t)\n );\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIjxodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4xMDguMC9hc3luYy9kZWFkbGluZS50cz4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxHQUFHLFFBQVEsUUFBUSxDQUFlO0FBRXhDLE1BQU0sT0FBTyxhQUFhLFNBQVMsS0FBSztpQkFDeEIsQ0FBQztRQUNiLEtBQUssQ0FBQyxDQUFVO1FBQ2hCLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBZTtJQUM3QixDQUFDOztBQUdILEVBRUcsQUFGSDs7Q0FFRyxBQUZILEVBRUcsQ0FDSCxNQUFNLFVBQVUsUUFBUSxDQUFJLENBQWEsRUFBRSxLQUFhLEVBQWMsQ0FBQztJQUNyRSxLQUFLLENBQUMsQ0FBQyxHQUFHLFFBQVE7SUFDbEIsS0FBSyxDQUFDLENBQUMsR0FBRyxVQUFVLEtBQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsYUFBYTtNQUFLLEtBQUs7SUFDL0QsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUFBLENBQUM7UUFBRSxDQUFDO0lBQUEsQ0FBQyxFQUFFLE9BQU8sS0FBTyxZQUFZLENBQUMsQ0FBQzs7QUFDMUQsQ0FBQyJ9", "content_type": "application/typescript; charset=utf-8", "deps": ["https://deno.land/std@0.108.0/async/deferred.ts"] } }, "https://deno.land/std@0.120.0/async/tee.ts": { "Source": { "source": "// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.\n\n// Utility for representing n-tuple\ntype Tuple<T, N extends number> = N extends N\n ? number extends N ? T[] : TupleOf<T, N, []>\n : never;\ntype TupleOf<T, N extends number, R extends unknown[]> = R[\"length\"] extends N\n ? R\n : TupleOf<T, N, [T, ...R]>;\n\ninterface QueueNode<T> {\n value: T;\n next: QueueNode<T> | undefined;\n}\n\nclass Queue<T> {\n #source: AsyncIterator<T>;\n #queue: QueueNode<T>;\n head: QueueNode<T>;\n\n done: boolean;\n\n constructor(iterable: AsyncIterable<T>) {\n this.#source = iterable[Symbol.asyncIterator]();\n this.#queue = {\n value: undefined!,\n next: undefined,\n };\n this.head = this.#queue;\n this.done = false;\n }\n\n async next(): Promise<void> {\n const result = await this.#source.next();\n if (!result.done) {\n const nextNode: QueueNode<T> = {\n value: result.value,\n next: undefined,\n };\n this.#queue.next = nextNode;\n this.#queue = nextNode;\n } else {\n this.done = true;\n }\n }\n}\n\n/**\n * Branches the given async iterable into the n branches.\n *\n * Example:\n *\n * ```ts\n * import { tee } from \"./tee.ts\";\n *\n * const gen = async function* gen() {\n * yield 1;\n * yield 2;\n * yield 3;\n * }\n *\n * const [branch1, branch2] = tee(gen());\n *\n * (async () => {\n * for await (const n of branch1) {\n * console.log(n); // => 1, 2, 3\n * }\n * })();\n *\n * (async () => {\n * for await (const n of branch2) {\n * console.log(n); // => 1, 2, 3\n * }\n * })();\n * ```\n */\nexport function tee<T, N extends number = 2>(\n iterable: AsyncIterable<T>,\n n: N = 2 as N,\n): Tuple<AsyncIterable<T>, N> {\n const queue = new Queue<T>(iterable);\n\n async function* generator(): AsyncGenerator<T> {\n let buffer = queue.head;\n while (true) {\n if (buffer.next) {\n buffer = buffer.next;\n yield buffer.value;\n } else if (queue.done) {\n return;\n } else {\n await queue.next();\n }\n }\n }\n\n const branches = Array.from({ length: n }).map(\n () => generator(),\n ) as Tuple<\n AsyncIterable<T>,\n N\n >;\n return branches;\n}\n", "transpiled": "class Queue {\n #source;\n #queue;\n head;\n done;\n constructor(iterable){\n this.#source = iterable[Symbol.asyncIterator]();\n this.#queue = {\n value: undefined,\n next: undefined\n };\n this.head = this.#queue;\n this.done = false;\n }\n async next() {\n const result = await this.#source.next();\n if (!result.done) {\n const nextNode = {\n value: result.value,\n next: undefined\n };\n this.#queue.next = nextNode;\n this.#queue = nextNode;\n } else {\n this.done = true;\n }\n }\n}\n/**\n * Branches the given async iterable into the n branches.\n *\n * Example:\n *\n * ```ts\n * import { tee } from \"./tee.ts\";\n *\n * const gen = async function* gen() {\n * yield 1;\n * yield 2;\n * yield 3;\n * }\n *\n * const [branch1, branch2] = tee(gen());\n *\n * (async () => {\n * for await (const n of branch1) {\n * console.log(n); // => 1, 2, 3\n * }\n * })();\n *\n * (async () => {\n * for await (const n of branch2) {\n * console.log(n); // => 1, 2, 3\n * }\n * })();\n * ```\n */ export function tee(iterable, n = 2) {\n const queue = new Queue(iterable);\n async function* generator() {\n let buffer = queue.head;\n while(true){\n if (buffer.next) {\n buffer = buffer.next;\n yield buffer.value;\n } else if (queue.done) {\n return;\n } else {\n await queue.next();\n }\n }\n }\n const branches = Array.from({\n length: n\n }).map(()=>generator()\n );\n return branches;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIjxodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4xMjAuMC9hc3luYy90ZWUudHM+Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJNQWVNLEtBQUs7SUFDVCxDQUFDLE1BQU07SUFDUCxDQUFDLEtBQUs7SUFDTixJQUFJO0lBRUosSUFBSTtnQkFFUSxRQUEwQixDQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsYUFBYTtRQUM1QyxJQUFJLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQztZQUNiLEtBQUssRUFBRSxTQUFTO1lBQ2hCLElBQUksRUFBRSxTQUFTO1FBQ2pCLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLEtBQUs7UUFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLO0lBQ25CLENBQUM7VUFFSyxJQUFJLEdBQWtCLENBQUM7UUFDM0IsS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUk7UUFDdEMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNqQixLQUFLLENBQUMsUUFBUSxHQUFpQixDQUFDO2dCQUM5QixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7Z0JBQ25CLElBQUksRUFBRSxTQUFTO1lBQ2pCLENBQUM7WUFDRCxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLFFBQVE7WUFDM0IsSUFBSSxDQUFDLENBQUMsS0FBSyxHQUFHLFFBQVE7UUFDeEIsQ0FBQyxNQUFNLENBQUM7WUFDTixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUk7UUFDbEIsQ0FBQztJQUNILENBQUM7O0FBR0gsRUE0QkcsQUE1Qkg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0E0QkcsQUE1QkgsRUE0QkcsQ0FDSCxNQUFNLFVBQVUsR0FBRyxDQUNqQixRQUEwQixFQUMxQixDQUFJLEdBQUcsQ0FBQyxFQUNvQixDQUFDO0lBQzdCLEtBQUssQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBSSxRQUFRO29CQUVuQixTQUFTLEdBQXNCLENBQUM7UUFDOUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBSTtjQUNoQixJQUFJLENBQUUsQ0FBQztZQUNaLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2hCLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSTtzQkFDZCxNQUFNLENBQUMsS0FBSztZQUNwQixDQUFDLE1BQU0sRUFBRSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDdEIsTUFBTTtZQUNSLENBQUMsTUFBTSxDQUFDO2dCQUNOLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSTtZQUNsQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUFDLE1BQU0sRUFBRSxDQUFDO0lBQUMsQ0FBQyxFQUFFLEdBQUcsS0FDdEMsU0FBUzs7SUFLakIsTUFBTSxDQUFDLFFBQVE7QUFDakIsQ0FBQyJ9", "content_type": "application/typescript; charset=utf-8", "deps": [] } }, "https://deno.land/std@0.120.0/async/deadline.ts": { "Source": { "source": "import { deferred } from \"./deferred.ts\";\n\nexport class DeadlineError extends Error {\n constructor() {\n super(\"Deadline\");\n this.name = \"DeadlineError\";\n }\n}\n\n/**\n * Create a promise which will be rejected with DeadlineError when a given delay is exceeded.\n */\nexport function deadline<T>(p: Promise<T>, delay: number): Promise<T> {\n const d = deferred<never>();\n const t = setTimeout(() => d.reject(new DeadlineError()), delay);\n return Promise.race([p, d]).finally(() => clearTimeout(t));\n}\n", "transpiled": "import { deferred } from \"./deferred.ts\";\nexport class DeadlineError extends Error {\n constructor(){\n super(\"Deadline\");\n this.name = \"DeadlineError\";\n }\n}\n/**\n * Create a promise which will be rejected with DeadlineError when a given delay is exceeded.\n */ export function deadline(p, delay) {\n const d = deferred();\n const t = setTimeout(()=>d.reject(new DeadlineError())\n , delay);\n return Promise.race([\n p,\n d\n ]).finally(()=>clearTimeout(t)\n );\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIjxodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4xMjAuMC9hc3luYy9kZWFkbGluZS50cz4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxHQUFHLFFBQVEsUUFBUSxDQUFlO0FBRXhDLE1BQU0sT0FBTyxhQUFhLFNBQVMsS0FBSztpQkFDeEIsQ0FBQztRQUNiLEtBQUssQ0FBQyxDQUFVO1FBQ2hCLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBZTtJQUM3QixDQUFDOztBQUdILEVBRUcsQUFGSDs7Q0FFRyxBQUZILEVBRUcsQ0FDSCxNQUFNLFVBQVUsUUFBUSxDQUFJLENBQWEsRUFBRSxLQUFhLEVBQWMsQ0FBQztJQUNyRSxLQUFLLENBQUMsQ0FBQyxHQUFHLFFBQVE7SUFDbEIsS0FBSyxDQUFDLENBQUMsR0FBRyxVQUFVLEtBQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsYUFBYTtNQUFLLEtBQUs7SUFDL0QsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUFBLENBQUM7UUFBRSxDQUFDO0lBQUEsQ0FBQyxFQUFFLE9BQU8sS0FBTyxZQUFZLENBQUMsQ0FBQzs7QUFDMUQsQ0FBQyJ9", "content_type": "application/typescript; charset=utf-8", "deps": ["https://deno.land/std@0.120.0/async/deferred.ts"] } }, "https://deno.land/x/fuse@v6.4.1/dist/fuse.esm.js": { "Source": { "source": "/**\n * Fuse.js v6.4.1 - Lightweight fuzzy-search (http://fusejs.io)\n *\n * Copyright (c) 2020 Kiro Risk (http://kiro.me)\n * All Rights Reserved. Apache Software License 2.0\n *\n … [Строка слишком длинная. Вы можете скачать файл] "transpiled": null, "content_type": "application/javascript", "deps": [] } }, "https://deno.land/std@0.108.0/async/mux_async_iterator.ts": { "Source": { "source": "// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.\nimport { Deferred, deferred } from \"./deferred.ts\";\n\ninterface TaggedYieldedValue<T> {\n iterator: AsyncIterator<T>;\n value: T;\n}\n\n/** The MuxAsyncIterator class multiplexes multiple async iterators into a\n * single stream. It currently makes an assumption:\n * - The final result (the value returned and not yielded from the iterator)\n * does not matter; if there is any, it is discarded.\n */\nexport class MuxAsyncIterator<T> implements AsyncIterable<T> {\n private iteratorCount = 0;\n private yields: Array<TaggedYieldedValue<T>> = [];\n // deno-lint-ignore no-explicit-any\n private throws: any[] = [];\n private signal: Deferred<void> = deferred();\n\n add(iterable: AsyncIterable<T>): void {\n ++this.iteratorCount;\n this.callIteratorNext(iterable[Symbol.asyncIterator]());\n }\n\n private async callIteratorNext(\n iterator: AsyncIterator<T>,\n ) {\n try {\n const { value, done } = await iterator.next();\n if (done) {\n --this.iteratorCount;\n } else {\n this.yields.push({ iterator, value });\n }\n } catch (e) {\n this.throws.push(e);\n }\n this.signal.resolve();\n }\n\n async *iterate(): AsyncIterableIterator<T> {\n while (this.iteratorCount > 0) {\n // Sleep until any of the wrapped iterators yields.\n await this.signal;\n\n // Note that while we're looping over `yields`, new items may be added.\n for (let i = 0; i < this.yields.length; i++) {\n const { iterator, value } = this.yields[i];\n yield value;\n this.callIteratorNext(iterator);\n }\n\n if (this.throws.length) {\n for (const e of this.throws) {\n throw e;\n }\n this.throws.length = 0;\n }\n // Clear the `yields` list and reset the `signal` promise.\n this.yields.length = 0;\n this.signal = deferred();\n }\n }\n\n [Symbol.asyncIterator](): AsyncIterator<T> {\n return this.iterate();\n }\n}\n", "transpiled": "// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.\nimport { deferred } from \"./deferred.ts\";\n/** The MuxAsyncIterator class multiplexes multiple async iterators into a\n * single stream. It currently makes an assumption:\n * - The final result (the value returned and not yielded from the iterator)\n * does not matter; if there is any, it is discarded.\n */ export class MuxAsyncIterator {\n iteratorCount = 0;\n yields = [];\n // deno-lint-ignore no-explicit-any\n throws = [];\n signal = deferred();\n add(iterable) {\n ++this.iteratorCount;\n this.callIteratorNext(iterable[Symbol.asyncIterator]());\n }\n async callIteratorNext(iterator) {\n try {\n const { value , done } = await iterator.next();\n if (done) {\n --this.iteratorCount;\n } else {\n this.yields.push({\n iterator,\n value\n });\n }\n } catch (e) {\n this.throws.push(e);\n }\n this.signal.resolve();\n }\n async *iterate() {\n while(this.iteratorCount > 0){\n // Sleep until any of the wrapped iterators yields.\n await this.signal;\n // Note that while we're looping over `yields`, new items may be added.\n for(let i = 0; i < this.yields.length; i++){\n const { iterator , value } = this.yields[i];\n yield value;\n this.callIteratorNext(iterator);\n }\n if (this.throws.length) {\n for (const e of this.throws){\n throw e;\n }\n this.throws.length = 0;\n }\n // Clear the `yields` list and reset the `signal` promise.\n this.yields.length = 0;\n this.signal = deferred();\n }\n }\n [Symbol.asyncIterator]() {\n return this.iterate();\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIjxodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4xMDguMC9hc3luYy9tdXhfYXN5bmNfaXRlcmF0b3IudHM+Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLEVBQTBFLEFBQTFFLHdFQUEwRTtBQUMxRSxNQUFNLEdBQWEsUUFBUSxRQUFRLENBQWU7QUFPbEQsRUFJRyxBQUpIOzs7O0NBSUcsQUFKSCxFQUlHLENBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQUNuQixhQUFhLEdBQUcsQ0FBQztJQUNqQixNQUFNLEdBQWlDLENBQUMsQ0FBQztJQUNqRCxFQUFtQyxBQUFuQyxpQ0FBbUM7SUFDM0IsTUFBTSxHQUFVLENBQUMsQ0FBQztJQUNsQixNQUFNLEdBQW1CLFFBQVE7SUFFekMsR0FBRyxDQUFDLFFBQTBCLEVBQVEsQ0FBQztVQUNuQyxJQUFJLENBQUMsYUFBYTtRQUNwQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxhQUFhO0lBQ3JELENBQUM7VUFFYSxnQkFBZ0IsQ0FDNUIsUUFBMEIsRUFDMUIsQ0FBQztRQUNELEdBQUcsQ0FBQyxDQUFDO1lBQ0gsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUUsSUFBSSxFQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUk7WUFDM0MsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDO2tCQUNQLElBQUksQ0FBQyxhQUFhO1lBQ3RCLENBQUMsTUFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQUMsUUFBUTtvQkFBRSxLQUFLO2dCQUFDLENBQUM7WUFDdEMsQ0FBQztRQUNILENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDWCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BCLENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU87SUFDckIsQ0FBQztXQUVNLE9BQU8sR0FBNkIsQ0FBQztjQUNuQyxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBRSxDQUFDO1lBQzlCLEVBQW1ELEFBQW5ELGlEQUFtRDtZQUNuRCxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU07WUFFakIsRUFBdUUsQUFBdkUscUVBQXVFO1lBQ3ZFLEdBQUcsQ0FBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFJLENBQUM7Z0JBQzVDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFFLEtBQUssRUFBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO3NCQUNuQyxLQUFLO2dCQUNYLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRO1lBQ2hDLENBQUM7WUFFRCxFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDdkIsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBRSxDQUFDO29CQUM1QixLQUFLLENBQUMsQ0FBQztnQkFDVCxDQUFDO2dCQUNELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDeEIsQ0FBQztZQUNELEVBQTBELEFBQTFELHdEQUEwRDtZQUMxRCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUTtRQUN4QixDQUFDO0lBQ0gsQ0FBQztLQUVBLE1BQU0sQ0FBQyxhQUFhLElBQXNCLENBQUM7UUFDMUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPO0lBQ3JCLENBQUMifQ==", "content_type": "application/typescript; charset=utf-8", "deps": ["https://deno.land/std@0.108.0/async/deferred.ts"] } }, "https://deno.land/x/pretty_bytes@v1.0.5/mod.ts": { "Source": { "source": "// Copyright 2014-2021 Sindre Sorhus. All rights reserved. MIT license.\n// Copyright 2021 Yoshiya Hinosawa. All rights reserved. MIT license.\n\ntype LocaleOptions = {\n minimumFractionDigits?: number;\n maximumFractionDigits?: number;\n};\n\n/**\n * The options for pretty printing the byte numbers.\n */\nexport interface PrettyBytesOptions {\n /** Uses bits representation. Default is false. */\n bits?: boolean;\n /** Uses binary bytes (e.g. kibibyte). Default is false. */\n binary?: boolean;\n /** Include plus sign for positive numbers. */\n signed?: boolean;\n /** Uses localized number formatting. If it is set to true, uses default locale on the system. If it's set to string, uses that locale. The given string should be BCP 47 language tag (ref: https://en.wikipedia.org/wiki/IETF_language_tag). You can also give the list of language tags. */\n locale?: boolean | string | string[];\n /** The minimum number of fraction digits to display. If neither minimumFractionDigits or maximumFractionDigits are set, the default behavior is to round to 3 significant digits. */\n minimumFractionDigits?: number;\n /** The maximum number of fraction digits to display. If neither minimumFractionDigits or maximumFractionDigits are set, the default behavior is to round to 3 significant digits. */\n maximumFractionDigits?: number;\n}\n\n/**\n * Convert bytes to a human readable string: 1337 → 1.34 kB\n *\n * @param num The number to format\n * @param options The options\n */\nexport function prettyBytes(\n num: number,\n options: PrettyBytesOptions = {},\n): string {\n if (!Number.isFinite(num)) {\n throw new TypeError(`Expected a finite number, got ${typeof num}: ${num}`);\n }\n\n const UNITS_FIRSTLETTER = (options.bits ? \"b\" : \"B\") + \"kMGTPEZY\";\n\n if (options.signed && num === 0) {\n return ` 0 ${UNITS_FIRSTLETTER[0]}`;\n }\n\n const prefix = num < 0 ? \"-\" : (options.signed ? \"+\" : \"\");\n num = Math.abs(num);\n\n const localeOptions = getLocaleOptions(options);\n\n if (num < 1) {\n const numberString = toLocaleString(num, options.locale, localeOptions);\n return prefix + numberString + \" \" + UNITS_FIRSTLETTER[0];\n }\n\n const exponent = Math.min(\n Math.floor(\n options.binary ? Math.log(num) / Math.log(1024) : Math.log10(num) / 3,\n ),\n UNITS_FIRSTLETTER.length - 1,\n );\n num /= Math.pow(options.binary ? 1024 : 1000, exponent);\n\n if (!localeOptions) {\n num = Number(num.toPrecision(3));\n }\n\n const numberString = toLocaleString(\n num,\n options.locale,\n localeOptions,\n );\n\n let unit = UNITS_FIRSTLETTER[exponent];\n if (exponent > 0) {\n unit += options.binary ? \"i\" : \"\";\n unit += options.bits ? \"bit\" : \"B\";\n }\n\n return prefix + numberString + \" \" + unit;\n}\n\nfunction getLocaleOptions(\n { maximumFractionDigits, minimumFractionDigits }: PrettyBytesOptions,\n): LocaleOptions | undefined {\n if (maximumFractionDigits || minimumFractionDigits) {\n return {\n maximumFractionDigits,\n minimumFractionDigits,\n };\n }\n}\n\n/**\n * Formats the given number using `Number#toLocaleString`.\n * - If locale is a string, the value is expected to be a locale-key (for example: `de`).\n * - If locale is true, the system default locale is used for translation.\n * - If no value for locale is specified, the number is returned unmodified.\n */\nfunction toLocaleString(\n num: number,\n locale: boolean | string | string[] | undefined,\n options: LocaleOptions | undefined,\n): string {\n if (typeof locale === \"string\" || Array.isArray(locale)) {\n return num.toLocaleString(locale, options);\n } else if (locale === true || options !== undefined) {\n return num.toLocaleString(undefined, options);\n }\n\n return num.toString();\n}\n", "transpiled": "/**\n * Convert bytes to a human readable string: 1337 → 1.34 kB\n *\n * @param num The number to format\n * @param options The options\n */ export function prettyBytes(num, options = {\n}) {\n if (!Number.isFinite(num)) {\n throw new TypeError(`Expected a finite number, got ${typeof num}: ${num}`);\n }\n const UNITS_FIRSTLETTER = (options.bits ? \"b\" : \"B\") + \"kMGTPEZY\";\n if (options.signed && num === 0) {\n return ` 0 ${UNITS_FIRSTLETTER[0]}`;\n }\n const prefix = num < 0 ? \"-\" : options.signed ? \"+\" : \"\";\n num = Math.abs(num);\n const localeOptions = getLocaleOptions(options);\n if (num < 1) {\n const numberString = toLocaleString(num, options.locale, localeOptions);\n return prefix + numberString + \" \" + UNITS_FIRSTLETTER[0];\n }\n const exponent = Math.min(Math.floor(options.binary ? Math.log(num) / Math.log(1024) : Math.log10(num) / 3), UNITS_FIRSTLETTER.length - 1);\n num /= Math.pow(options.binary ? 1024 : 1000, exponent);\n if (!localeOptions) {\n num = Number(num.toPrecision(3));\n }\n const numberString = toLocaleString(num, options.locale, localeOptions);\n let unit = UNITS_FIRSTLETTER[exponent];\n if (exponent > 0) {\n unit += options.binary ? \"i\" : \"\";\n unit += options.bits ? \"bit\" : \"B\";\n }\n return prefix + numberString + \" \" + unit;\n}\nfunction getLocaleOptions({ maximumFractionDigits , minimumFractionDigits }) {\n if (maximumFractionDigits || minimumFractionDigits) {\n return {\n maximumFractionDigits,\n minimumFractionDigits\n };\n }\n}\n/**\n * Formats the given number using `Number#toLocaleString`.\n * - If locale is a string, the value is expected to be a locale-key (for example: `de`).\n * - If locale is true, the system default locale is used for translation.\n * - If no value for locale is specified, the number is returned unmodified.\n */ function toLocaleString(num, locale, options) {\n if (typeof locale === \"string\" || Array.isArray(locale)) {\n return num.toLocaleString(locale, options);\n } else if (locale === true || options !== undefined) {\n return num.toLocaleString(undefined, options);\n }\n return num.toString();\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIjxodHRwczovL2Rlbm8ubGFuZC94L3ByZXR0eV9ieXRlc0B2MS4wLjUvbW9kLnRzPiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUEwQkEsRUFLRyxBQUxIOzs7OztDQUtHLEFBTEgsRUFLRyxDQUNILE1BQU0sVUFBVSxXQUFXLENBQ3pCLEdBQVcsRUFDWCxPQUEyQixHQUFHLENBQUM7QUFBQSxDQUFDLEVBQ3hCLENBQUM7SUFDVCxFQUFFLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUMxQixLQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHO0lBQ3pFLENBQUM7SUFFRCxLQUFLLENBQUMsaUJBQWlCLElBQUksT0FBTyxDQUFDLElBQUksR0FBRyxDQUFHLEtBQUcsQ0FBRyxNQUFJLENBQVU7SUFFakUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sRUFBRSxHQUFHLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUcsS0FBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUcsS0FBRyxDQUFFO0lBQ3pELEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUc7SUFFbEIsS0FBSyxDQUFDLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPO0lBRTlDLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDWixLQUFLLENBQUMsWUFBWSxHQUFHLGNBQWMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxhQUFhO1FBQ3RFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsWUFBWSxHQUFHLENBQUcsS0FBRyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQ3ZCLElBQUksQ0FBQyxLQUFLLENBQ1IsT0FBTyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBRXZFLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxDQUFDO0lBRTlCLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsSUFBSSxHQUFHLElBQUksRUFBRSxRQUFRO0lBRXRELEVBQUUsR0FBRyxhQUFhLEVBQUUsQ0FBQztRQUNuQixHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsS0FBSyxDQUFDLFlBQVksR0FBRyxjQUFjLENBQ2pDLEdBQUcsRUFDSCxPQUFPLENBQUMsTUFBTSxFQUNkLGFBQWE7SUFHZixHQUFHLENBQUMsSUFBSSxHQUFHLGlCQUFpQixDQUFDLFFBQVE7SUFDckMsRUFBRSxFQUFFLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNqQixJQUFJLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFHLEtBQUcsQ0FBRTtRQUNqQyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksR0FBRyxDQUFLLE9BQUcsQ0FBRztJQUNwQyxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQU0sR0FBRyxZQUFZLEdBQUcsQ0FBRyxLQUFHLElBQUk7QUFDM0MsQ0FBQztTQUVRLGdCQUFnQixDQUN2QixDQUFDLENBQUMscUJBQXFCLEdBQUUscUJBQXFCLEVBQXFCLENBQUMsRUFDekMsQ0FBQztJQUM1QixFQUFFLEVBQUUscUJBQXFCLElBQUkscUJBQXFCLEVBQUUsQ0FBQztRQUNuRCxNQUFNLENBQUMsQ0FBQztZQUNOLHFCQUFxQjtZQUNyQixxQkFBcUI7UUFDdkIsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBRUQsRUFLRyxBQUxIOzs7OztDQUtHLEFBTEgsRUFLRyxVQUNNLGNBQWMsQ0FDckIsR0FBVyxFQUNYLE1BQStDLEVBQy9DLE9BQWtDLEVBQzFCLENBQUM7SUFDVCxFQUFFLEVBQUUsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFRLFdBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQztRQUN4RCxNQUFNLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsT0FBTztJQUMzQyxDQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sS0FBSyxJQUFJLElBQUksT0FBTyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ3BELE1BQU0sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxPQUFPO0lBQzlDLENBQUM7SUFFRCxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVE7QUFDckIsQ0FBQyJ9", "content_type": "application/typescript; charset=utf-8", "deps": [] } }, "https://deno.land/std@0.108.0/http/server.ts": { "Source": { "source": "// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.\nimport { delay } from \"../async/mod.ts\";\n\n/** Thrown by Server after it has been closed. */\nconst ER … [Строка слишком длинная. Вы можете скачать файл] "transpiled": "// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.\nimport { delay } from \"../async/mod.ts\";\n/** Thrown by Server after it has been closed. */ const E … [Строка слишком длинная. Вы можете скачать файл] "content_type": "application/typescript; charset=utf-8", "deps": ["https://deno.land/std@0.108.0/async/mod.ts"] } }, "https://deno.land/std@0.108.0/async/mod.ts": { "Source": { "source": "// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.\nexport * from \"./debounce.ts\";\nexport * from \"./deferred.ts\";\nexport * from \"./delay.ts\";\nexport * from \"./mux_async_iterator.ts\";\nexport * from \"./pool.ts\";\nexport * from \"./tee.ts\";\nexport * from \"./deadline.ts\";\n", "transpiled": "// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.\nexport * from \"./debounce.ts\";\nexport * from \"./deferred.ts\";\nexport * from \"./delay.ts\";\nexport * from \"./mux_async_iterator.ts\";\nexport * from \"./pool.ts\";\nexport * from \"./tee.ts\";\nexport * from \"./deadline.ts\";\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIjxodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4xMDguMC9hc3luYy9tb2QudHM+Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLEVBQTBFLEFBQTFFLHdFQUEwRTtjQUM1RCxDQUFlO2NBQ2YsQ0FBZTtjQUNmLENBQVk7Y0FDWixDQUF5QjtjQUN6QixDQUFXO2NBQ1gsQ0FBVTtjQUNWLENBQWUifQ==", "content_type": "application/typescript; charset=utf-8", "deps": [ "https://deno.land/std@0.108.0/async/debounce.ts", "https://deno.land/std@0.108.0/async/deferred.ts", "https://deno.land/std@0.108.0/async/delay.ts", "https://deno.land/std@0.108.0/async/mux_async_iterator.ts", "https://deno.land/std@0.108.0/async/pool.ts", "https://deno.land/std@0.108.0/async/tee.ts", "https://deno.land/std@0.108.0/async/deadline.ts" ] } }, "file:///src/worker/vscode.ts": { "Source": { "source": "/* Copyright 2020 the Deno authors. All rights reserved. MIT license. */\n\nimport { match } from \"https://deno.land/x/path_to_regexp@v6.2.0/index.ts\";\nimport { S3_BUCKET } from \"./registry.ts\";\n\nconst VERSIONS = match(\"/_vsc1/modules/:module([a-z0-9_]*)\");\nconst PATHS = match(\"/_vsc1/modules/:module([a-z0-9_]*)/v/:version\");\nconst PATHS_LATEST = match(\"/_vsc1/modules/:module([a-z0-9_]*)/v_latest\");\n\n/**\n * /_vsc1/modules/:module returns a list of all versions for a module\n *\n * /_vsc1/modules/:module/v/:version returns a list of all code files for a version of module\n *\n * /_vsc1/modules/:module/v_latest returns a list of all code files for the latest version of module\n */\nexport async function handleVSCRequest(url: URL): Promise<Response> {\n const pathname = url.pathname;\n\n const versions = VERSIONS(pathname);\n if (versions) {\n const module = (versions.params as Record<string, string>)[\"module\"];\n const resp = await fetch(`${S3_BUCKET}${module}/meta/versions.json`);\n if (resp.status === 403 || resp.status === 404) {\n return new Response(\"module not found\", { status: 404 });\n }\n if (!resp.ok) {\n return new Response(\"internal server error 1\", { status: 500 });\n }\n const json = await resp.json();\n return new Response(JSON.stringify(json.versions), {\n status: 200,\n headers: {\n \"content-type\": \"application/json\",\n \"cache-control\": \"max-age=86400\",\n },\n });\n }\n\n const paths = PATHS(pathname);\n if (paths) {\n const module = (paths.params as Record<string, string>)[\"module\"];\n const version = (paths.params as Record<string, string>)[\"version\"];\n return getPaths(module, version);\n }\n\n const pathsLatest = PATHS_LATEST(pathname);\n if (pathsLatest) {\n const module = (pathsLatest.params as Record<string, string>)[\"module\"];\n const resp = await fetch(`${S3_BUCKET}${module}/meta/versions.json`);\n if (resp.status === 403 || resp.status === 404) {\n return new Response(\"module not found\", { status: 404 });\n }\n if (!resp.ok) {\n return new Response(\"internal server error 3\", { status: 500 });\n }\n const json = await resp.json();\n if (!json.latest) return new Response(\"no latest version\", { status: 404 });\n return getPaths(module, json.latest);\n }\n\n return new Response(\"not found\", { status: 404 });\n}\n\nasync function getPaths(module: string, version: string): Promise<Response> {\n const resp = await fetch(\n `${S3_BUCKET}${module}/versions/${version}/meta/meta.json`,\n );\n if (resp.status === 403 || resp.status === 404) {\n return new Response(\"module or version not found\", { status: 404 });\n }\n if (!resp.ok) return new Response(\"internal server error 2\", { status: 500 });\n const json = await resp.json();\n const list = (json.directory_listing as Array<Record<string, string>>)\n .filter((f) => f.type === \"file\" && !f.path.includes(\"/_\"))\n .map((f) => f.path.substring(1))\n .filter(\n (f) =>\n f.endsWith(\".jsx\") ||\n f.endsWith(\".jsx\") ||\n f.endsWith(\".ts\") ||\n f.endsWith(\".tsx\") ||\n f.endsWith(\".mjs\"),\n );\n return new Response(JSON.stringify(list), {\n status: 200,\n headers: {\n \"content-type\": \"application/json\",\n \"cache-control\": \"max-age=86400\",\n },\n });\n}\n", "transpiled": "/* Copyright 2020 the Deno authors. All rights reserved. MIT license. */ import { match } from \"https://deno.land/x/path_to_regexp@v6.2.0/index.ts\";\nimport { S3_BUCKET } from \"./registry.ts\";\nconst VERSIONS = match(\"/_vsc1/modules/:module([a-z0-9_]*)\");\nconst PATHS = match(\"/_vsc1/modules/:module([a-z0-9_]*)/v/:version\");\nconst PATHS_LATEST = match(\"/_vsc1/modules/:module([a-z0-9_]*)/v_latest\");\n/**\n * /_vsc1/modules/:module returns a list of all versions for a module\n *\n * /_vsc1/modules/:module/v/:version returns a list of all code files for a version of module\n *\n * /_vsc1/modules/:module/v_latest returns a list of all code files for the latest version of module\n */ export async function handleVSCRequest(url) {\n const pathname = url.pathname;\n const versions = VERSIONS(pathname);\n if (versions) {\n const module = versions.params[\"module\"];\n const resp = await fetch(`${S3_BUCKET}${module}/meta/versions.json`);\n if (resp.status === 403 || resp.status === 404) {\n return new Response(\"module not found\", {\n status: 404\n });\n }\n if (!resp.ok) {\n return new Response(\"internal server error 1\", {\n status: 500\n });\n }\n const json = await resp.json();\n return new Response(JSON.stringify(json.versions), {\n status: 200,\n headers: {\n \"content-type\": \"application/json\",\n \"cache-control\": \"max-age=86400\"\n }\n });\n }\n const paths = PATHS(pathname);\n if (paths) {\n const module = paths.params[\"module\"];\n const version = paths.params[\"version\"];\n return getPaths(module, version);\n }\n const pathsLatest = PATHS_LATEST(pathname);\n if (pathsLatest) {\n const module = pathsLatest.params[\"module\"];\n const resp = await fetch(`${S3_BUCKET}${module}/meta/versions.json`);\n if (resp.status === 403 || resp.status === 404) {\n return new Response(\"module not found\", {\n status: 404\n });\n }\n if (!resp.ok) {\n return new Response(\"internal server error 3\", {\n status: 500\n });\n }\n const json = await resp.json();\n if (!json.latest) return new Response(\"no latest version\", {\n status: 404\n });\n return getPaths(module, json.latest);\n }\n return new Response(\"not found\", {\n status: 404\n });\n}\nasync function getPaths(module, version) {\n const resp = await fetch(`${S3_BUCKET}${module}/versions/${version}/meta/meta.json`);\n if (resp.status === 403 || resp.status === 404) {\n return new Response(\"module or version not found\", {\n status: 404\n });\n }\n if (!resp.ok) return new Response(\"internal server error 2\", {\n status: 500\n });\n const json = await resp.json();\n const list = json.directory_listing.filter((f)=>f.type === \"file\" && !f.path.includes(\"/_\")\n ).map((f)=>f.path.substring(1)\n ).filter((f)=>f.endsWith(\".jsx\") || f.endsWith(\".jsx\") || f.endsWith(\".ts\") || f.endsWith(\".tsx\") || f.endsWith(\".mjs\")\n );\n return new Response(JSON.stringify(list), {\n status: 200,\n headers: {\n \"content-type\": \"application/json\",\n \"cache-control\": \"max-age=86400\"\n }\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIjxmaWxlOi8vL3NyYy93b3JrZXIvdnNjb2RlLnRzPiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxFQUF3RSxBQUF4RSxvRUFBd0UsQUFBeEUsRUFBd0UsQ0FFeEUsTUFBTSxHQUFHLEtBQUssUUFBUSxDQUFvRDtBQUMxRSxNQUFNLEdBQUcsU0FBUyxRQUFRLENBQWU7QUFFekMsS0FBSyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsQ0FBb0M7QUFDM0QsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBK0M7QUFDbkUsS0FBSyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsQ0FBNkM7QUFFeEUsRUFNRyxBQU5IOzs7Ozs7Q0FNRyxBQU5ILEVBTUcsQ0FDSCxNQUFNLGdCQUFnQixnQkFBZ0IsQ0FBQyxHQUFRLEVBQXFCLENBQUM7SUFDbkUsS0FBSyxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsUUFBUTtJQUU3QixLQUFLLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRO0lBQ2xDLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQztRQUNiLEtBQUssQ0FBQyxNQUFNLEdBQUksUUFBUSxDQUFDLE1BQU0sQ0FBNEIsQ0FBUTtRQUNuRSxLQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxtQkFBbUI7UUFDbEUsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLEtBQUssR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDL0MsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBa0IsbUJBQUUsQ0FBQztnQkFBQyxNQUFNLEVBQUUsR0FBRztZQUFDLENBQUM7UUFDekQsQ0FBQztRQUNELEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDYixNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUF5QiwwQkFBRSxDQUFDO2dCQUFDLE1B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", "content_type": null, "deps": [ "https://deno.land/x/path_to_regexp@v6.2.0/index.ts", "file:///src/worker/registry.ts" ] } }, "https://deno.land/std@0.120.0/async/debounce.ts": { "Source": { "source": "// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.\n\n/**\n * A debounced function that will be delayed by a given `wait`\n * time in milliseconds. If the method is called again before\n * the timeout expires, the previous call will be aborted.\n */\nexport interface DebouncedFunction<T extends Array<unknown>> {\n (...args: T): void;\n /** Clears the debounce timeout and omits calling the debounced function. */\n clear(): void;\n /** Clears the debounce timeout and calls the debounced function immediately. */\n flush(): void;\n /** Returns a boolean wether a debounce call is pending or not. */\n readonly pending: boolean;\n}\n\n/**\n * Creates a debounced function that delays the given `func`\n * by a given `wait` time in milliseconds. If the method is called\n * again before the timeout expires, the previous call will be\n * aborted.\n *\n * ```\n * import { debounce } from \"./debounce.ts\";\n *\n * const log = debounce(\n * (event: Deno.FsEvent) =>\n * console.log(\"[%s] %s\", event.kind, event.paths[0]),\n * 200,\n * );\n *\n * for await (const event of Deno.watchFs(\"./\")) {\n * log(event);\n * }\n * ```\n *\n * @param fn The function to debounce.\n * @param wait The time in milliseconds to delay the function.\n */\n// deno-lint-ignore no-explicit-any\nexport function debounce<T extends Array<any>>(\n fn: (this: DebouncedFunction<T>, ...args: T) => void,\n wait: number,\n): DebouncedFunction<T> {\n let timeout: number | null = null;\n let flush: (() => void) | null = null;\n\n const debounced: DebouncedFunction<T> = ((...args: T): void => {\n debounced.clear();\n flush = (): void => {\n debounced.clear();\n fn.call(debounced, ...args);\n };\n timeout = setTimeout(flush, wait);\n }) as DebouncedFunction<T>;\n\n debounced.clear = (): void => {\n if (typeof timeout === \"number\") {\n clearTimeout(timeout);\n timeout = null;\n flush = null;\n }\n };\n\n debounced.flush = (): void => {\n flush?.();\n };\n\n Object.defineProperty(debounced, \"pending\", {\n get: () => typeof timeout === \"number\",\n });\n\n return debounced;\n}\n", "transpiled": "/**\n * Creates a debounced function that delays the given `func`\n * by a given `wait` time in milliseconds. If the method is called\n * again before the timeout expires, the previous call will be\n * aborted.\n *\n * ```\n * import { debounce } from \"./debounce.ts\";\n *\n * const log = debounce(\n * (event: Deno.FsEvent) =>\n * console.log(\"[%s] %s\", event.kind, event.paths[0]),\n * 200,\n * );\n *\n * for await (const event of Deno.watchFs(\"./\")) {\n * log(event);\n * }\n * ```\n *\n * @param fn The function to debounce.\n * @param wait The time in milliseconds to delay the function.\n */ // deno-lint-ignore no-explicit-any\nexport function debounce(fn, wait) {\n let timeout = null;\n let flush = null;\n const debounced = (...args)=>{\n debounced.clear();\n flush = ()=>{\n debounced.clear();\n fn.call(debounced, ...args);\n };\n timeout = setTimeout(flush, wait);\n };\n debounced.clear = ()=>{\n if (typeof timeout === \"number\") {\n clearTimeout(timeout);\n timeout = null;\n flush = null;\n }\n };\n debounced.flush = ()=>{\n flush?.();\n };\n Object.defineProperty(debounced, \"pending\", {\n get: ()=>typeof timeout === \"number\"\n });\n return debounced;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIjxodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4xMjAuMC9hc3luYy9kZWJvdW5jZS50cz4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBaUJBLEVBc0JHLEFBdEJIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBc0JHLEFBdEJILEVBc0JHLENBQ0gsRUFBbUMsQUFBbkMsaUNBQW1DO0FBQ25DLE1BQU0sVUFBVSxRQUFRLENBQ3RCLEVBQW9ELEVBQ3BELElBQVksRUFDVSxDQUFDO0lBQ3ZCLEdBQUcsQ0FBQyxPQUFPLEdBQWtCLElBQUk7SUFDakMsR0FBRyxDQUFDLEtBQUssR0FBd0IsSUFBSTtJQUVyQyxLQUFLLENBQUMsU0FBUyxPQUE4QixJQUFJLEdBQWMsQ0FBQztRQUM5RCxTQUFTLENBQUMsS0FBSztRQUNmLEtBQUssT0FBZSxDQUFDO1lBQ25CLFNBQVMsQ0FBQyxLQUFLO1lBQ2YsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSTtRQUM1QixDQUFDO1FBQ0QsT0FBTyxHQUFHLFVBQVUsQ0FBQyxLQUFLLEVBQUUsSUFBSTtJQUNsQyxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQUssT0FBZSxDQUFDO1FBQzdCLEVBQUUsRUFBRSxNQUFNLENBQUMsT0FBTyxLQUFLLENBQVEsU0FBRSxDQUFDO1lBQ2hDLFlBQVksQ0FBQyxPQUFPO1lBQ3BCLE9BQU8sR0FBRyxJQUFJO1lBQ2QsS0FBSyxHQUFHLElBQUk7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFLLE9BQWUsQ0FBQztRQUM3QixLQUFLO0lBQ1AsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLENBQVMsVUFBRSxDQUFDO1FBQzNDLEdBQUcsTUFBUSxNQUFNLENBQUMsT0FBTyxLQUFLLENBQVE7SUFDeEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxTQUFTO0FBQ2xCLENBQUMifQ==", "content_type": "application/typescript; charset=utf-8", "deps": [] } }, "https://deno.land/std@0.120.0/async/pool.ts": { "Source": { "source": "// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.\n\n/**\n * pooledMap transforms values from an (async) iterable into another async\n * iterable. The transforms are done concurrently, with a max concurrency\n * defined by the poolLimit.\n *\n * If an error is thrown from `iterableFn`, no new transformations will begin.\n * All currently executing transformations are allowed to finish and still\n * yielded on success. After that, the rejections among them are gathered and\n * thrown by the iterator in an `AggregateError`.\n *\n * @param poolLimit The maximum count of items being processed concurrently.\n * @param array The input array for mapping.\n * @param iteratorFn The function to call for every item of the array.\n */\nexport function pooledMap<T, R>(\n poolLimit: number,\n array: Iterable<T> | AsyncIterable<T>,\n iteratorFn: (data: T) => Promise<R>,\n): AsyncIterableIterator<R> {\n // Create the async iterable that is returned from this function.\n const res = new TransformStream<Promise<R>, R>({\n async transform(\n p: Promise<R>,\n controller: TransformStreamDefaultController<R>,\n ) {\n controller.enqueue(await p);\n },\n });\n // Start processing items from the iterator\n (async () => {\n const writer = res.writable.getWriter();\n const executing: Array<Promise<unknown>> = [];\n try {\n for await (const item of array) {\n const p = Promise.resolve().then(() => iteratorFn(item));\n // Only write on success. If we `writer.write()` a rejected promise,\n // that will end the iteration. We don't want that yet. Instead let it\n // fail the race, taking us to the catch block where all currently\n // executing jobs are allowed to finish and all rejections among them\n // can be reported together.\n p.then((v) => writer.write(Promise.resolve(v))).catch(() => {});\n const e: Promise<unknown> = p.then(() =>\n executing.splice(executing.indexOf(e), 1)\n );\n executing.push(e);\n if (executing.length >= poolLimit) {\n await Promise.race(executing);\n }\n }\n // Wait until all ongoing events have processed, then close the writer.\n await Promise.all(executing);\n writer.close();\n } catch {\n const errors = [];\n for (const result of await Promise.allSettled(executing)) {\n if (result.status == \"rejected\") {\n errors.push(result.reason);\n }\n }\n writer.write(Promise.reject(\n new AggregateError(errors, \"Threw while mapping.\"),\n )).catch(() => {});\n }\n })();\n return res.readable[Symbol.asyncIterator]();\n}\n", "transpiled": "// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.\n/**\n * pooledMap transforms values from an (async) iterable into another async\n * iterable. The transforms are done concurrently, with a max concurrency\n * defined by the poolLimit.\n *\n * If an error is thrown from `iterableFn`, no new transformations will begin.\n * All currently executing transformations are allowed to finish and still\n * yielded on success. After that, the rejections among them are gathered and\n * thrown by the iterator in an `AggregateError`.\n *\n * @param poolLimit The maximum count of items being processed concurrently.\n * @param array The input array for mapping.\n * @param iteratorFn The function to call for every item of the array.\n */ export function pooledMap(poolLimit, array, iteratorFn) {\n // Create the async iterable that is returned from this function.\n const res = new TransformStream({\n async transform (p, controller) {\n controller.enqueue(await p);\n }\n });\n // Start processing items from the iterator\n (async ()=>{\n const writer = res.writable.getWriter();\n const executing = [];\n try {\n for await (const item of array){\n const p = Promise.resolve().then(()=>iteratorFn(item)\n );\n // Only write on success. If we `writer.write()` a rejected promise,\n // that will end the iteration. We don't want that yet. Instead let it\n // fail the race, taking us to the catch block where all currently\n // executing jobs are allowed to finish and all rejections among them\n // can be reported together.\n p.then((v)=>writer.write(Promise.resolve(v))\n ).catch(()=>{\n });\n const e = p.then(()=>executing.splice(executing.indexOf(e), 1)\n );\n executing.push(e);\n if (executing.length >= poolLimit) {\n await Promise.race(executing);\n }\n }\n // Wait until all ongoing events have processed, then close the writer.\n await Promise.all(executing);\n writer.close();\n } catch {\n const errors = [];\n for (const result of (await Promise.allSettled(executing))){\n if (result.status == \"rejected\") {\n errors.push(result.reason);\n }\n }\n writer.write(Promise.reject(new AggregateError(errors, \"Threw while mapping.\"))).catch(()=>{\n });\n }\n })();\n return res.readable[Symbol.asyncIterator]();\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIjxodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4xMjAuMC9hc3luYy9wb29sLnRzPiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxFQUEwRSxBQUExRSx3RUFBMEU7QUFFMUUsRUFhRyxBQWJIOzs7Ozs7Ozs7Ozs7O0NBYUcsQUFiSCxFQWFHLENBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FDdkIsU0FBaUIsRUFDakIsS0FBcUMsRUFDckMsVUFBbUMsRUFDVCxDQUFDO0lBQzNCLEVBQWlFLEFBQWpFLCtEQUFpRTtJQUNqRSxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQWdCLENBQUM7Y0FDeEMsU0FBUyxFQUNiLENBQWEsRUFDYixVQUErQyxFQUMvQyxDQUFDO1lBQ0QsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixDQUFDO0lBQ0gsQ0FBQztJQUNELEVBQTJDLEFBQTNDLHlDQUEyQztlQUM5QixDQUFDO1FBQ1osS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLFNBQVM7UUFDckMsS0FBSyxDQUFDLFNBQVMsR0FBNEIsQ0FBQyxDQUFDO1FBQzdDLEdBQUcsQ0FBQyxDQUFDO1lBQ0gsR0FBRyxRQUFRLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFFLENBQUM7Z0JBQy9CLEtBQUssQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFJLEtBQU8sVUFBVSxDQUFDLElBQUk7O2dCQUN0RCxFQUFvRSxBQUFwRSxrRUFBb0U7Z0JBQ3BFLEVBQXNFLEFBQXRFLG9FQUFzRTtnQkFDdEUsRUFBa0UsQUFBbEUsZ0VBQWtFO2dCQUNsRSxFQUFxRSxBQUFyRSxtRUFBcUU7Z0JBQ3JFLEVBQTRCLEFBQTVCLDBCQUE0QjtnQkFDNUIsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUssTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7a0JBQUksS0FBSyxLQUFPLENBQUM7Z0JBQUEsQ0FBQztnQkFDOUQsS0FBSyxDQUFDLENBQUMsR0FBcUIsQ0FBQyxDQUFDLElBQUksS0FDaEMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDOztnQkFFMUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNoQixFQUFFLEVBQUUsU0FBUyxDQUFDLE1BQU0sSUFBSSxTQUFTLEVBQUUsQ0FBQztvQkFDbEMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUztnQkFDOUIsQ0FBQztZQUNILENBQUM7WUFDRCxFQUF1RSxBQUF2RSxxRUFBdUU7WUFDdkUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUztZQUMzQixNQUFNLENBQUMsS0FBSztRQUNkLENBQUMsQ0FBQyxLQUFLLEVBQUMsQ0FBQztZQUNQLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQ2pCLEdBQUcsRUFBRSxLQUFLLENBQUMsTUFBTSxLQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFNBQVMsR0FBRyxDQUFDO2dCQUN6RCxFQUFFLEVBQUUsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFVLFdBQUUsQ0FBQztvQkFDaEMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTtnQkFDM0IsQ0FBQztZQUNILENBQUM7WUFDRCxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQ3pCLEdBQUcsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQXNCLHlCQUNoRCxLQUFLLEtBQU8sQ0FBQztZQUFBLENBQUM7UUFDbkIsQ0FBQztJQUNILENBQUM7SUFDRCxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsYUFBYTtBQUMxQyxDQUFDIn0=", "content_type": "application/typescript; charset=utf-8", "deps": [] } }, "https://deno.land/x/oak_commons@0.1.1/negotiation/language.ts": { "Source": { "source": "/*!\n * Adapted directly from negotiator at https://github.com/jshttp/negotiator/\n * which is licensed as follows:\n *\n * (The MIT License)\n *\n * Copyright (c) 2012-2014 Federico Romero\n * Copyright (c) 2012-2014 Isaac Z. Schlueter\n * Copyright (c) 2014-2015 Douglas Christopher Wilson\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * 'Software'), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\nimport { compareSpecs, isQuality, Specificity } from \"./common.ts\";\n\ninterface LanaguageSpecificity extends Specificity {\n prefix: string;\n suffix?: string;\n full: string;\n}\n\nconst SIMPLE_LANGUAGE_REGEXP = /^\\s*([^\\s\\-;]+)(?:-([^\\s;]+))?\\s*(?:;(.*))?$/;\n\nfunction parseLanguage(\n str: string,\n i: number,\n): LanaguageSpecificity | undefined {\n const match = SIMPLE_LANGUAGE_REGEXP.exec(str);\n if (!match) {\n return undefined;\n }\n\n const [, prefix, suffix] = match;\n const full = suffix ? `${prefix}-${suffix}` : prefix;\n\n let q = 1;\n if (match[3]) {\n const params = match[3].split(\";\");\n for (const param of params) {\n const [key, value] = param.trim().split(\"=\");\n if (key === \"q\") {\n q = parseFloat(value);\n break;\n }\n }\n }\n\n return { prefix, suffix, full, q, i };\n}\n\nfunction parseAcceptLanguage(accept: string): LanaguageSpecificity[] {\n const accepts = accept.split(\",\");\n const result: LanaguageSpecificity[] = [];\n\n for (let i = 0; i < accepts.length; i++) {\n const language = parseLanguage(accepts[i].trim(), i);\n if (language) {\n result.push(language);\n }\n }\n return result;\n}\n\nfunction specify(\n language: string,\n spec: LanaguageSpecificity,\n i: number,\n): Specificity | undefined {\n const p = parseLanguage(language, i);\n if (!p) {\n return undefined;\n }\n let s = 0;\n if (spec.full.toLowerCase() === p.full.toLowerCase()) {\n s |= 4;\n } else if (spec.prefix.toLowerCase() === p.prefix.toLowerCase()) {\n s |= 2;\n } else if (spec.full.toLowerCase() === p.prefix.toLowerCase()) {\n s |= 1;\n } else if (spec.full !== \"*\") {\n return;\n }\n\n return { i, o: spec.i, q: spec.q, s };\n}\n\nfunction getLanguagePriority(\n language: string,\n accepted: LanaguageSpecificity[],\n index: number,\n): Specificity {\n let priority: Specificity = { i: -1, o: -1, q: 0, s: 0 };\n for (const accepts of accepted) {\n const spec = specify(language, accepts, index);\n if (\n spec &&\n ((priority.s ?? 0) - (spec.s ?? 0) || priority.q - spec.q ||\n (priority.o ?? 0) - (spec.o ?? 0)) < 0\n ) {\n priority = spec;\n }\n }\n return priority;\n}\n\nexport function preferredLanguages(\n accept = \"*\",\n provided?: string[],\n): string[] {\n const accepts = parseAcceptLanguage(accept);\n\n if (!provided) {\n return accepts\n .filter(isQuality)\n .sort(compareSpecs)\n .map((spec) => spec.full);\n }\n\n const priorities = provided\n .map((type, index) => getLanguagePriority(type, accepts, index));\n\n return priorities\n .filter(isQuality)\n .sort(compareSpecs)\n .map((priority) => provided[priorities.indexOf(priority)]);\n}\n", "transpiled": "/*!\n * Adapted directly from negotiator at https://github.com/jshttp/negotiator/\n * which is licensed as follows:\n *\n * (The MIT License)\n *\n * Copyright (c) 2012-2014 Federico Romero\n * Copyright (c) 2012-2014 Isaac Z. Schlueter\n * Copyright (c) 2014-2015 Douglas Christopher Wilson\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * 'Software'), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */ import { compareSpecs, isQuality } from \"./common.ts\";\nconst SIMPLE_LANGUAGE_REGEXP = /^\\s*([^\\s\\-;]+)(?:-([^\\s;]+))?\\s*(?:;(.*))?$/;\nfunction parseLanguage(str, i) {\n const match = SIMPLE_LANGUAGE_REGEXP.exec(str);\n if (!match) {\n return undefined;\n }\n const [, prefix, suffix] = match;\n const full = suffix ? `${prefix}-${suffix}` : prefix;\n let q = 1;\n if (match[3]) {\n const params = match[3].split(\";\");\n for (const param of params){\n const [key, value] = param.trim().split(\"=\");\n if (key === \"q\") {\n q = parseFloat(value);\n break;\n }\n }\n }\n return {\n prefix,\n suffix,\n full,\n q,\n i\n };\n}\nfunction parseAcceptLanguage(accept) {\n const accepts = accept.split(\",\");\n const result = [];\n for(let i = 0; i < accepts.length; i++){\n const language = parseLanguage(accepts[i].trim(), i);\n if (language) {\n result.push(language);\n }\n }\n return result;\n}\nfunction specify(language, spec, i) {\n const p = parseLanguage(language, i);\n if (!p) {\n return undefined;\n }\n let s = 0;\n if (spec.full.toLowerCase() === p.full.toLowerCase()) {\n s |= 4;\n } else if (spec.prefix.toLowerCase() === p.prefix.toLowerCase()) {\n s |= 2;\n } else if (spec.full.toLowerCase() === p.prefix.toLowerCase()) {\n s |= 1;\n } else if (spec.full !== \"*\") {\n return;\n }\n return {\n i,\n o: spec.i,\n q: spec.q,\n s\n };\n}\nfunction getLanguagePriority(language, accepted, index) {\n let priority = {\n i: -1,\n o: -1,\n q: 0,\n s: 0\n };\n for (const accepts of accepted){\n const spec = specify(language, accepts, index);\n if (spec && ((priority.s ?? 0) - (spec.s ?? 0) || priority.q - spec.q || (priority.o ?? 0) - (spec.o ?? 0)) < 0) {\n priority = spec;\n }\n }\n return priority;\n}\nexport function preferredLanguages(accept = \"*\", provided) {\n const accepts = parseAcceptLanguage(accept);\n if (!provided) {\n return accepts.filter(isQuality).sort(compareSpecs).map((spec)=>spec.full\n );\n }\n const priorities = provided.map((type, index)=>getLanguagePriority(type, accepts, index)\n );\n return priorities.filter(isQuality).sort(compareSpecs).map((priority)=>provided[priorities.indexOf(priority)]\n );\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIjxodHRwczovL2Rlbm8ubGFuZC94L29ha19jb21tb25zQDAuMS4xL25lZ290aWF0aW9uL2xhbmd1YWdlLnRzPiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxFQTRCRyxBQTVCSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQTRCRyxBQTVCSCxFQTRCRyxDQUVILE1BQU0sR0FBRyxZQUFZLEVBQUUsU0FBUyxRQUFxQixDQUFhO0FBUWxFLEtBQUssQ0FBQyxzQkFBc0I7U0FFbkIsYUFBYSxDQUNwQixHQUFXLEVBQ1gsQ0FBUyxFQUN5QixDQUFDO0lBQ25DLEtBQUssQ0FBQyxLQUFLLEdBQUcsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEdBQUc7SUFDN0MsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDO1FBQ1gsTUFBTSxDQUFDLFNBQVM7SUFDbEIsQ0FBQztJQUVELEtBQUssSUFBSSxNQUFNLEVBQUUsTUFBTSxJQUFJLEtBQUs7SUFDaEMsS0FBSyxDQUFDLElBQUksR0FBRyxNQUFNLE1BQU0sTUFBTSxDQUFDLENBQUMsRUFBRSxNQUFNLEtBQUssTUFBTTtJQUVwRCxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDVCxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ2IsS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFHO1FBQ2pDLEdBQUcsRUFBRSxLQUFLLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBRSxDQUFDO1lBQzNCLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxJQUFJLEtBQUssQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUc7WUFDM0MsRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFHLElBQUUsQ0FBQztnQkFDaEIsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxLQUFLO2dCQUNwQixLQUFLO1lBQ1AsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLENBQUM7UUFBQyxNQUFNO1FBQUUsTUFBTTtRQUFFLElBQUk7UUFBRSxDQUFDO1FBQUUsQ0FBQztJQUFDLENBQUM7QUFDdkMsQ0FBQztTQUVRLG1CQUFtQixDQUFDLE1BQWMsRUFBMEIsQ0FBQztJQUNwRSxLQUFLLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBRztJQUNoQyxLQUFLLENBQUMsTUFBTSxHQUEyQixDQUFDLENBQUM7SUFFekMsR0FBRyxDQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBSSxDQUFDO1FBQ3hDLEtBQUssQ0FBQyxRQUFRLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUM7UUFDbkQsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDO1lBQ2IsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBQ0QsTUFBTSxDQUFDLE1BQU07QUFDZixDQUFDO1NBRVEsT0FBTyxDQUNkLFFBQWdCLEVBQ2hCLElBQTBCLEVBQzFCLENBQVMsRUFDZ0IsQ0FBQztJQUMxQixLQUFLLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNuQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDUCxNQUFNLENBQUMsU0FBUztJQUNsQixDQUFDO0lBQ0QsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQ1QsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUM7UUFDckQsQ0FBQyxJQUFJLENBQUM7SUFDUixDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxJQUFJLENBQUM7UUFDaEUsQ0FBQyxJQUFJLENBQUM7SUFDUixDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxJQUFJLENBQUM7UUFDOUQsQ0FBQyxJQUFJLENBQUM7SUFDUixDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBRyxJQUFFLENBQUM7UUFDN0IsTUFBTTtJQUNSLENBQUM7SUFFRCxNQUFNLENBQUMsQ0FBQztRQUFDLENBQUM7UUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFBRSxDQUFDO0lBQUMsQ0FBQztBQUN2QyxDQUFDO1NBRVEsbUJBQW1CLENBQzFCLFFBQWdCLEVBQ2hCLFFBQWdDLEVBQ2hDLEtBQWEsRUFDQSxDQUFDO0lBQ2QsR0FBRyxDQUFDLFFBQVEsR0FBZ0IsQ0FBQztRQUFDLENBQUMsR0FBRyxDQUFDO1FBQUUsQ0FBQyxHQUFHLENBQUM7UUFBRSxDQUFDLEVBQUUsQ0FBQztRQUFFLENBQUMsRUFBRSxDQUFDO0lBQUMsQ0FBQztJQUN4RCxHQUFHLEVBQUUsS0FBSyxDQUFDLE9BQU8sSUFBSSxRQUFRLENBQUUsQ0FBQztRQUMvQixLQUFLLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUs7UUFDN0MsRUFBRSxFQUNBLElBQUksTUFDRixRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEtBQ3BELFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFDMUMsQ0FBQztZQUNELFFBQVEsR0FBRyxJQUFJO1FBQ2pCLENBQUM7SUFDSCxDQUFDO0lBQ0QsTUFBTSxDQUFDLFFBQVE7QUFDakIsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FDaEMsTUFBTSxHQUFHLENBQUcsSUFDWixRQUFtQixFQUNULENBQUM7SUFDWCxLQUFLLENBQUMsT0FBTyxHQUFHLG1CQUFtQixDQUFDLE1BQU07SUFFMUMsRUFBRSxHQUFHLFFBQVEsRUFBRSxDQUFDO1FBQ2QsTUFBTSxDQUFDLE9BQU8sQ0FDWCxNQUFNLENBQUMsU0FBUyxFQUNoQixJQUFJLENBQUMsWUFBWSxFQUNqQixHQUFHLEVBQUUsSUFBSSxHQUFLLElBQUksQ0FBQyxJQUFJOztJQUM1QixDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQ3hCLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxHQUFLLG1CQUFtQixDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSzs7SUFFaEUsTUFBTSxDQUFDLFVBQVUsQ0FDZCxNQUFNLENBQUMsU0FBUyxFQUNoQixJQUFJLENBQUMsWUFBWSxFQUNqQixHQUFHLEVBQUUsUUFBUSxHQUFLLFFBQVEsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFFBQVE7O0FBQzNELENBQUMifQ==", "content_type": "application/typescript; charset=utf-8", "deps": ["https://deno.land/x/oak_commons@0.1.1/negotiation/common.ts"] } }, "file:///src/worker/registry_config.ts": { "Source": { "source": "/* Copyright 2021 the Deno authors. All rights reserved. MIT license. */\n\nimport { accepts } from \"https://deno.land/x/oak_commons@0.1.1/negotiation.ts\";\n\ninterface RegistryDefVariable {\n key: string;\n documentation?: string;\n url: string;\n}\n\ninterface RegistryDef {\n schema: string;\n variables: RegistryDefVariable[];\n}\n\ninterface RegistryConfig {\n version: 1 | 2;\n registries: RegistryDef[];\n}\n\nconst MAX_AGE_1_DAY = \"max-age=86400\";\n\n/** The _legacy_ v1 configuration file. This will be provided to any client\n * which does not indicate it is capable of understanding the v2 registry\n * (earlier than Deno 1.17.1) */\nconst configV1: RegistryConfig = {\n version: 1,\n registries: [\n {\n schema: \"/x/:module([a-z0-9_]*)@:version?/:path*\",\n variables: [\n {\n key: \"module\",\n url: \"https://api.deno.land/modules?simple=1\",\n },\n {\n key: \"version\",\n url: \"https://deno.land/_vsc1/modules/${module}\",\n },\n {\n key: \"path\",\n url: \"https://deno.land/_vsc1/modules/${module}/v/${{version}}\",\n },\n ],\n },\n {\n schema: \"/x/:module([a-z0-9_]*)/:path*\",\n variables: [\n {\n key: \"module\",\n url: \"https://api.deno.land/modules?simple=1\",\n },\n {\n key: \"path\",\n url: \"https://deno.land/_vsc1/modules/${module}/v_latest\",\n },\n ],\n },\n {\n schema: \"/std@:version?/:path*\",\n variables: [\n {\n key: \"version\",\n url: \"https://deno.land/_vsc1/modules/std\",\n },\n {\n key: \"path\",\n url: \"https://deno.land/_vsc1/modules/std/v/${{version}}\",\n },\n ],\n },\n {\n schema: \"/std/:path*\",\n variables: [\n {\n key: \"path\",\n url: \"https://deno.land/_vsc1/modules/std/v_latest\",\n },\n ],\n },\n ],\n};\n\n/** This is the v2 registry configuration which provides documentation\n * endpoints and allows incremental completion/search of variables. */\nconst configV2: RegistryConfig = {\n version: 2,\n registries: [\n {\n schema: \"/x/:module([a-z0-9_]+)@:version?/:path*\",\n variables: [\n {\n key: \"module\",\n documentation: \"/_api/details/x/${module}\",\n url: \"/_api/x/${module}\",\n },\n {\n key: \"version\",\n documentation: \"/_api/details/x/${module}/${{version}}\",\n url: \"/_api/x/${module}/${{version}}\",\n },\n {\n key: \"path\",\n documentation: \"/_api/details/x/${module}/${{version}}/${path}\",\n url: \"/_api/x/${module}/${{version}}/${path}\",\n },\n ],\n },\n {\n schema: \"/x/:module([a-z0-9_]*)/:path*\",\n variables: [\n {\n key: \"module\",\n documentation: \"/_api/details/x/${module}\",\n url: \"/_api/x/${module}\",\n },\n {\n key: \"path\",\n documentation: \"/_api/details/x/${module}/_latest/${path}\",\n url: \"/_api/x/${module}/_latest/${path}\",\n },\n ],\n },\n {\n schema: \"/std@:version?/:path*\",\n variables: [\n {\n key: \"version\",\n documentation: \"/_api/details/std/${{version}}\",\n url: \"/_api/x/std/${{version}}\",\n },\n {\n key: \"path\",\n documentation: \"/_api/details/std/${{version}}/${path}\",\n url: \"/_api/x/std/${{version}}/${path}\",\n },\n ],\n },\n {\n schema: \"/std/:path*\",\n variables: [\n {\n key: \"path\",\n documentation: \"/_api/details/std/_latest/${path}\",\n url: \"/_api/x/std/_latest/${path}\",\n },\n ],\n },\n ],\n};\n\n/** Provide the v1 or v2 registry configuration based on the accepts header\n * provided by the client. Deno 1.17.1 and later indicates it accepts a\n * configuration of v2. */\nexport function handleConfigRequest(request: Request): Promise<Response> {\n let body: unknown;\n let contentType = \"application/json\";\n const accept = request.headers.get(\"accept\");\n if (\n accept !== null && accept !== \"*/*\" &&\n accepts(request, \"application/vnd.deno.reg.v2+json\")\n ) {\n contentType = \"application/vnd.deno.reg.v2+json\";\n body = configV2;\n } else {\n body = configV1;\n }\n return Promise.resolve(\n new Response(JSON.stringify(body), {\n headers: {\n \"cache-control\": MAX_AGE_1_DAY,\n \"content-type\": contentType,\n },\n }),\n );\n}\n", "transpiled": "/* Copyright 2021 the Deno authors. All rights reserved. MIT license. */ import { accepts } from \"https://deno.land/x/oak_commons@0.1.1/negotiation.ts\";\nconst MAX_AGE_1_DAY = \"max-age=86400\";\n/** The _legacy_ v1 configuration file. This will be provided to any client\n * which does not indicate it is capable of understanding the v2 registry\n * (earlier than Deno 1.17.1) */ const configV1 = {\n version: 1,\n registries: [\n {\n schema: \"/x/:module([a-z0-9_]*)@:version?/:path*\",\n variables: [\n {\n key: \"module\",\n url: \"https://api.deno.land/modules?simple=1\"\n },\n {\n key: \"version\",\n url: \"https://deno.land/_vsc1/modules/${module}\"\n },\n {\n key: \"path\",\n url: \"https://deno.land/_vsc1/modules/${module}/v/${{version}}\"\n }, \n ]\n },\n {\n schema: \"/x/:module([a-z0-9_]*)/:path*\",\n variables: [\n {\n key: \"module\",\n url: \"https://api.deno.land/modules?simple=1\"\n },\n {\n key: \"path\",\n url: \"https://deno.land/_vsc1/modules/${module}/v_latest\"\n }, \n ]\n },\n {\n schema: \"/std@:version?/:path*\",\n variables: [\n {\n key: \"version\",\n url: \"https://deno.land/_vsc1/modules/std\"\n },\n {\n key: \"path\",\n url: \"https://deno.land/_vsc1/modules/std/v/${{version}}\"\n }, \n ]\n },\n {\n schema: \"/std/:path*\",\n variables: [\n {\n key: \"path\",\n url: \"https://deno.land/_vsc1/modules/std/v_latest\"\n }, \n ]\n }, \n ]\n};\n/** This is the v2 registry configuration which provides documentation\n * endpoints and allows incremental completion/search of variables. */ const configV2 = {\n version: 2,\n registries: [\n {\n schema: \"/x/:module([a-z0-9_]+)@:version?/:path*\",\n variables: [\n {\n key: \"module\",\n documentation: \"/_api/details/x/${module}\",\n url: \"/_api/x/${module}\"\n },\n {\n key: \"version\",\n documentation: \"/_api/details/x/${module}/${{version}}\",\n url: \"/_api/x/${module}/${{version}}\"\n },\n {\n key: \"path\",\n documentation: \"/_api/details/x/${module}/${{version}}/${path}\",\n url: \"/_api/x/${module}/${{version}}/${path}\"\n }, \n ]\n },\n {\n schema: \"/x/:module([a-z0-9_]*)/:path*\",\n variables: [\n {\n key: \"module\",\n documentation: \"/_api/details/x/${module}\",\n url: \"/_api/x/${module}\"\n },\n {\n key: \"path\",\n documentation: \"/_api/details/x/${module}/_latest/${path}\",\n url: \"/_api/x/${module}/_latest/${path}\"\n }, \n ]\n },\n {\n schema: \"/std@:version?/:path*\",\n variables: [\n {\n key: \"version\",\n documentation: \"/_api/details/std/${{version}}\",\n url: \"/_api/x/std/${{version}}\"\n },\n {\n key: \"path\",\n documentation: \"/_api/details/std/${{version}}/${path}\",\n url: \"/_api/x/std/${{version}}/${path}\"\n }, \n ]\n },\n {\n schema: \"/std/:path*\",\n variables: [\n {\n key: \"path\",\n documentation: \"/_api/details/std/_latest/${path}\",\n url: \"/_api/x/std/_latest/${path}\"\n }, \n ]\n }, \n ]\n};\n/** Provide the v1 or v2 registry configuration based on the accepts header\n * provided by the client. Deno 1.17.1 and later indicates it accepts a\n * configuration of v2. */ export function handleConfigRequest(request) {\n let body;\n let contentType = \"application/json\";\n const accept = request.headers.get(\"accept\");\n if (accept !== null && accept !== \"*/*\" && accepts(request, \"application/vnd.deno.reg.v2+json\")) {\n contentType = \"application/vnd.deno.reg.v2+json\";\n body = configV2;\n } else {\n body = configV1;\n }\n return Promise.resolve(new Response(JSON.stringify(body), {\n headers: {\n \"cache-control\": MAX_AGE_1_DAY,\n \"content-type\": contentType\n }\n }));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIjxmaWxlOi8vL3NyYy93b3JrZXIvcmVnaXN0cnlfY29uZmlnLnRzPiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxFQUF3RSxBQUF4RSxvRUFBd0UsQUFBeEUsRUFBd0UsQ0FFeEUsTUFBTSxHQUFHLE9BQU8sUUFBUSxDQUFzRDtBQWtCOUUsS0FBSyxDQUFDLGFBQWEsR0FBRyxDQUFlO0FBRXJDLEVBRWdDLEFBRmhDOzs4QkFFZ0MsQUFGaEMsRUFFZ0MsQ0FDaEMsS0FBSyxDQUFDLFFBQVEsR0FBbUIsQ0FBQztJQUNoQyxPQUFPLEVBQUUsQ0FBQztJQUNWLFVBQVUsRUFBRSxDQUFDO1FBQ1gsQ0FBQztZQUNDLE1BQU0sRUFBRSxDQUF5QztZQUNqRCxTQUFTLEVBQUUsQ0FBQztnQkFDVixDQUFDO29CQUNDLEdBQUcsRUFBRSxDQUFRO29CQUNiLEdBQUcsRUFBRSxDQUF3QztnQkFDL0MsQ0FBQztnQkFDRCxDQUFDO29CQUNDLEdBQUcsRUFBRSxDQUFTO29CQUNkLEdBQUcsRUFBRSxDQUEyQztnQkFDbEQsQ0FBQztnQkFDRCxDQUFDO29CQUNDLEdBQUcsRUFBRSxDQUFNO29CQUNYLEdBQUcsRUFBRSxDQUEwRDtnQkFDakUsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQ0QsQ0FBQztZQUNDLE1BQU0sRUFBRSxDQUErQjtZQUN2QyxTQUFTLEVBQUUsQ0FBQztnQkFDVixDQUFDO29CQUNDLEdBQUcsRUFBRSxDQUFRO29CQUNiLEdBQUcsRUFBRSxDQUF3QztnQkFDL0MsQ0FBQztnQkFDRCxDQUFDO29CQUNDLEdBQUcsRUFBRSxDQUFNO29CQUNYLEdBQUcsRUFBRSxDQUFvRDtnQkFDM0QsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQ0QsQ0FBQztZQUNDLE1BQU0sRUFBRSxDQUF1QjtZQUMvQixTQUFTLEVBQUUsQ0FBQztnQkFDVixDQUFDO29CQUNDLEdBQUcsRUFBRSxDQUFTO29CQUNkLEdBQUcsRUFBRSxDQUFxQztnQkFDNUMsQ0FBQztnQkFDRCxDQUFDO29CQUNDLEdBQUcsRUFBRSxDQUFNO29CQUNYLEdBQUcsRUFBRSxDQUFvRDtnQkFDM0QsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQ0QsQ0FBQztZQUNDLE1BQU0sRUFBRSxDQUFhO1lBQ3JCLFNBQVMsRUFBRSxDQUFDO2dCQUNWLENBQUM7b0JBQ0MsR0FBRyxFQUFFLENBQU07b0JBQ1gsR0FBRyxFQUFFLENBQThDO2dCQUNyRCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQUVELEVBQ3NFLEFBRHRFO29FQUNzRSxBQUR0RSxFQUNzRSxDQUN0RSxLQUFLLENBQUMsUUFBUSxHQUFtQixDQUFDO0lBQ2hDLE9BQU8sRUFBRSxDQUFDO0lBQ1YsVUFBVSxFQUFFLENBQUM7UUFDWCxDQUFDO1lBQ0MsTUFBTSxFQUFFLENBQXlDO1lBQ2pELFNBQVMsRUFBRSxDQUFDO2dCQUNWLENBQUM7b0JBQ0MsR0FBRyxFQUFFLENBQVE7b0JBQ2IsYUFBYSxFQUFFLENBQTJCO29CQUMxQyxHQUFHLEVBQUUsQ0FBbUI7Z0JBQzFCLENBQUM7Z0JBQ0QsQ0FBQztvQkFDQyxHQUFHLEVBQUUsQ0FBUztvQkFDZCxhQUFhLEVBQUUsQ0FBd0M7b0JBQ3ZELEdBQUcsRUFBRSxDQUFnQztnQkFDdkMsQ0FBQztnQkFDRCxDQUFDO29CQUNDLEdBQUcsRUFBRSxDQUFNO29CQUNYLGFBQWEsRUFBRSxDQUFnRDtvQkFDL0QsR0FBRyxFQUFFLENBQXdDO2dCQUMvQyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFDRCxDQUFDO1lBQ0MsTUFBTSxFQUFFLENBQStCO1lBQ3ZDLFNBQVMsRUFBRSxDQUFDO2dCQUNWLENBQUM7b0JBQ0MsR0FBRyxFQUFFLENBQVE7b0JBQ2IsYUFBYSxFQUFFLENBQTJCO29CQUMxQyxHQUFHLEVBQUUsQ0FBbUI7Z0JBQzFCLENBQUM7Z0JBQ0QsQ0FBQztvQkFDQyxHQUFHLEVBQUUsQ0FBTTtvQkFDWCxhQUFhLEVBQUUsQ0FBMkM7b0JBQzFELEdBQUcsRUFBRSxDQUFtQztnQkFDMUMsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQ0QsQ0FBQztZQUNDLE1BQU0sRUFBRSxDQUF1QjtZQUMvQixTQUFTLEVBQUUsQ0FBQztnQkFDVixDQUFDO29CQUNDLEdBQUcsRUFBRSxDQUFTO29CQUNkLGFBQWEsRUFBRSxDQUFnQztvQkFDL0MsR0FBRyxFQUFFLENBQTBCO2dCQUNqQyxDQUFDO2dCQUNELENBQUM7b0JBQ0MsR0FBRyxFQUFFLENBQU07b0JBQ1gsYUFBYSxFQUFFLENBQXdDO29CQUN2RCxHQUFHLEVBQUUsQ0FBa0M7Z0JBQ3pDLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUNELENBQUM7WUFDQyxNQUFNLEVBQUUsQ0FBYTtZQUNyQixTQUFTLEVBQUUsQ0FBQztnQkFDVixDQUFDO29CQUNDLEdBQUcsRUFBRSxDQUFNO29CQUNYLGFBQWEsRUFBRSxDQUFtQztvQkFDbEQsR0FBRyxFQUFFLENBQTZCO2dCQUNwQyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQUVELEVBRTBCLEFBRjFCOzt3QkFFMEIsQUFGMUIsRUFFMEIsQ0FDMUIsTUFBTSxVQUFVLG1CQUFtQixDQUFDLE9BQWdCLEVBQXFCLENBQUM7SUFDeEUsR0FBRyxDQUFDLElBQUk7SUFDUixHQUFHLENBQUMsV0FBVyxHQUFHLENBQWtCO0lBQ3BDLEtBQUssQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBUTtJQUMzQyxFQUFFLEVBQ0EsTUFBTSxLQUFLLElBQUksSUFBSSxNQUFNLEtBQUssQ0FBSyxRQUNuQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQWtDLG9DQUNuRCxDQUFDO1FBQ0QsV0FBVyxHQUFHLENBQWtDO1FBQ2hELElBQUksR0FBRyxRQUFRO0lBQ2pCLENBQUMsTUFBTSxDQUFDO1FBQ04sSUFBSSxHQUFHLFFBQVE7SUFDakIsQ0FBQztJQUNELE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUNwQixHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLENBQUM7UUFDbEMsT0FBTyxFQUFFLENBQUM7WUFDUixDQUFlLGdCQUFFLGFBQWE7WUFDOUIsQ0FBYyxlQUFFLFdBQVc7UUFDN0IsQ0FBQztJQUNILENBQUM7QUFFTCxDQUFDIn0=", "content_type": null, "deps": ["https://deno.land/x/oak_commons@0.1.1/negotiation.ts"] } }, "https://deno.land/std@0.120.0/async/mod.ts": { "Source": { "source": "// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.\nexport * from \"./debounce.ts\";\nexport * from \"./deferred.ts\";\nexport * from \"./delay.ts\";\nexport * from \"./mux_async_iterator.ts\";\nexport * from \"./pool.ts\";\nexport * from \"./tee.ts\";\nexport * from \"./deadline.ts\";\n", "transpiled": "// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.\nexport * from \"./debounce.ts\";\nexport * from \"./deferred.ts\";\nexport * from \"./delay.ts\";\nexport * from \"./mux_async_iterator.ts\";\nexport * from \"./pool.ts\";\nexport * from \"./tee.ts\";\nexport * from \"./deadline.ts\";\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIjxodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4xMjAuMC9hc3luYy9tb2QudHM+Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLEVBQTBFLEFBQTFFLHdFQUEwRTtjQUM1RCxDQUFlO2NBQ2YsQ0FBZTtjQUNmLENBQVk7Y0FDWixDQUF5QjtjQUN6QixDQUFXO2NBQ1gsQ0FBVTtjQUNWLENBQWUifQ==", "content_type": "application/typescript; charset=utf-8", "deps": [ "https://deno.land/std@0.120.0/async/debounce.ts", "https://deno.land/std@0.120.0/async/deferred.ts", "https://deno.land/std@0.120.0/async/delay.ts", "https://deno.land/std@0.120.0/async/mux_async_iterator.ts", "https://deno.land/std@0.120.0/async/pool.ts", "https://deno.land/std@0.120.0/async/tee.ts", "https://deno.land/std@0.120.0/async/deadline.ts" ] } } } }