watch-tail 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +210 -0
  3. package/build/client/_app/immutable/assets/0.B1NsRRrX.css +2 -0
  4. package/build/client/_app/immutable/assets/0.B1NsRRrX.css.br +0 -0
  5. package/build/client/_app/immutable/assets/0.B1NsRRrX.css.gz +0 -0
  6. package/build/client/_app/immutable/chunks/Bjy-W4x2.js +81 -0
  7. package/build/client/_app/immutable/chunks/Bjy-W4x2.js.br +0 -0
  8. package/build/client/_app/immutable/chunks/Bjy-W4x2.js.gz +0 -0
  9. package/build/client/_app/immutable/chunks/DCKWcE8r.js +1 -0
  10. package/build/client/_app/immutable/chunks/DCKWcE8r.js.br +0 -0
  11. package/build/client/_app/immutable/chunks/DCKWcE8r.js.gz +0 -0
  12. package/build/client/_app/immutable/chunks/DDRhiz1-.js +1 -0
  13. package/build/client/_app/immutable/chunks/DDRhiz1-.js.br +0 -0
  14. package/build/client/_app/immutable/chunks/DDRhiz1-.js.gz +0 -0
  15. package/build/client/_app/immutable/chunks/ZAD2y5xJ.js +3 -0
  16. package/build/client/_app/immutable/chunks/ZAD2y5xJ.js.br +0 -0
  17. package/build/client/_app/immutable/chunks/ZAD2y5xJ.js.gz +0 -0
  18. package/build/client/_app/immutable/chunks/xihTtKlq.js +1 -0
  19. package/build/client/_app/immutable/chunks/xihTtKlq.js.br +1 -0
  20. package/build/client/_app/immutable/chunks/xihTtKlq.js.gz +0 -0
  21. package/build/client/_app/immutable/entry/app.DIoggGwf.js +2 -0
  22. package/build/client/_app/immutable/entry/app.DIoggGwf.js.br +0 -0
  23. package/build/client/_app/immutable/entry/app.DIoggGwf.js.gz +0 -0
  24. package/build/client/_app/immutable/entry/start._YXgjuSB.js +1 -0
  25. package/build/client/_app/immutable/entry/start._YXgjuSB.js.br +0 -0
  26. package/build/client/_app/immutable/entry/start._YXgjuSB.js.gz +0 -0
  27. package/build/client/_app/immutable/nodes/0.D5bYt7iX.js +1 -0
  28. package/build/client/_app/immutable/nodes/0.D5bYt7iX.js.br +0 -0
  29. package/build/client/_app/immutable/nodes/0.D5bYt7iX.js.gz +0 -0
  30. package/build/client/_app/immutable/nodes/1.DBX83mYX.js +1 -0
  31. package/build/client/_app/immutable/nodes/1.DBX83mYX.js.br +0 -0
  32. package/build/client/_app/immutable/nodes/1.DBX83mYX.js.gz +0 -0
  33. package/build/client/_app/immutable/nodes/2.DiH-2moC.js +5 -0
  34. package/build/client/_app/immutable/nodes/2.DiH-2moC.js.br +0 -0
  35. package/build/client/_app/immutable/nodes/2.DiH-2moC.js.gz +0 -0
  36. package/build/client/_app/version.json +1 -0
  37. package/build/client/_app/version.json.br +0 -0
  38. package/build/client/_app/version.json.gz +0 -0
  39. package/build/client/robots.txt +3 -0
  40. package/build/client/robots.txt.br +0 -0
  41. package/build/client/robots.txt.gz +0 -0
  42. package/build/env.js +70 -0
  43. package/build/env.js.map +1 -0
  44. package/build/handler.js +24 -0
  45. package/build/handler.js.map +1 -0
  46. package/build/index.js +147 -0
  47. package/build/index.js.map +1 -0
  48. package/build/server/chunks/chunks/env.js-l0sNRNKZ.js +2 -0
  49. package/build/server/chunks/chunks/env.js-l0sNRNKZ.js.map +1 -0
  50. package/build/server/chunks/chunks/env2.js-D7xrfc37.js +316 -0
  51. package/build/server/chunks/chunks/env2.js-D7xrfc37.js.map +1 -0
  52. package/build/server/chunks/chunks/exports.js-CvFPPbaH.js +263 -0
  53. package/build/server/chunks/chunks/exports.js-CvFPPbaH.js.map +1 -0
  54. package/build/server/chunks/chunks/internal.js-DdmUz1r3.js +1191 -0
  55. package/build/server/chunks/chunks/internal.js-DdmUz1r3.js.map +1 -0
  56. package/build/server/chunks/chunks/internal2.js-DZ8ZzzjN.js +22 -0
  57. package/build/server/chunks/chunks/internal2.js-DZ8ZzzjN.js.map +1 -0
  58. package/build/server/chunks/chunks/regions.js-IQPMyP5C.js +52 -0
  59. package/build/server/chunks/chunks/regions.js-IQPMyP5C.js.map +1 -0
  60. package/build/server/chunks/chunks/server.js-ByNB8uti.js +3659 -0
  61. package/build/server/chunks/chunks/server.js-ByNB8uti.js.map +1 -0
  62. package/build/server/chunks/chunks/shared-server.js-Dn5XheXH.js +22 -0
  63. package/build/server/chunks/chunks/shared-server.js-Dn5XheXH.js.map +1 -0
  64. package/build/server/chunks/chunks/shared.js-CgjUIvRK.js +776 -0
  65. package/build/server/chunks/chunks/shared.js-CgjUIvRK.js.map +1 -0
  66. package/build/server/chunks/chunks/state.js-ClLTNPGs.js +86 -0
  67. package/build/server/chunks/chunks/state.js-ClLTNPGs.js.map +1 -0
  68. package/build/server/chunks/chunks/time-range.js-BLMT8aU3.js +102 -0
  69. package/build/server/chunks/chunks/time-range.js-BLMT8aU3.js.map +1 -0
  70. package/build/server/chunks/chunks/uneval.js-DaakSYFQ.js +488 -0
  71. package/build/server/chunks/chunks/uneval.js-DaakSYFQ.js.map +1 -0
  72. package/build/server/chunks/chunks/utils.js-BIlHjgGW.js +933 -0
  73. package/build/server/chunks/chunks/utils.js-BIlHjgGW.js.map +1 -0
  74. package/build/server/chunks/entries/endpoints/api/health/_server.ts.js-aiNZfkco.js +41 -0
  75. package/build/server/chunks/entries/endpoints/api/health/_server.ts.js-aiNZfkco.js.map +1 -0
  76. package/build/server/chunks/entries/endpoints/api/log-groups/_server.ts.js-D143-vRl.js +120 -0
  77. package/build/server/chunks/entries/endpoints/api/log-groups/_server.ts.js-D143-vRl.js.map +1 -0
  78. package/build/server/chunks/entries/endpoints/api/regions/_server.ts.js-CDNL7msU.js +88 -0
  79. package/build/server/chunks/entries/endpoints/api/regions/_server.ts.js-CDNL7msU.js.map +1 -0
  80. package/build/server/chunks/entries/endpoints/api/stream/_server.ts.js-D_i-xW6_.js +610 -0
  81. package/build/server/chunks/entries/endpoints/api/stream/_server.ts.js-D_i-xW6_.js.map +1 -0
  82. package/build/server/chunks/entries/fallbacks/error.svelte.js-qFLa8EVy.js +17 -0
  83. package/build/server/chunks/entries/fallbacks/error.svelte.js-qFLa8EVy.js.map +1 -0
  84. package/build/server/chunks/entries/pages/_layout.svelte.js-Bx7lXkAi.js +22 -0
  85. package/build/server/chunks/entries/pages/_layout.svelte.js-Bx7lXkAi.js.map +1 -0
  86. package/build/server/chunks/entries/pages/_page.svelte.js-BsvaKqbk.js +1264 -0
  87. package/build/server/chunks/entries/pages/_page.svelte.js-BsvaKqbk.js.map +1 -0
  88. package/build/server/chunks/handler-nVqa-QPz.js +1735 -0
  89. package/build/server/chunks/handler-nVqa-QPz.js.map +1 -0
  90. package/build/server/chunks/index.js-CtbhHm7L.js +3803 -0
  91. package/build/server/chunks/index.js-CtbhHm7L.js.map +1 -0
  92. package/build/server/chunks/manifest.js-BwUys8gK.js +70 -0
  93. package/build/server/chunks/manifest.js-BwUys8gK.js.map +1 -0
  94. package/build/server/chunks/nodes/0.js-Dl0J9d3p.js +9 -0
  95. package/build/server/chunks/nodes/0.js-Dl0J9d3p.js.map +1 -0
  96. package/build/server/chunks/nodes/1.js-dXZVW92o.js +9 -0
  97. package/build/server/chunks/nodes/1.js-dXZVW92o.js.map +1 -0
  98. package/build/server/chunks/nodes/2.js-aMMUenQc.js +9 -0
  99. package/build/server/chunks/nodes/2.js-aMMUenQc.js.map +1 -0
  100. package/build/shims.js +33 -0
  101. package/build/shims.js.map +1 -0
  102. package/dist/cli/bin.js +9 -0
  103. package/dist/cli/completions.js +99 -0
  104. package/dist/cli/index.js +183 -0
  105. package/dist/cli/options.js +171 -0
  106. package/dist/cli/server.js +126 -0
  107. package/dist/cli/ui.js +75 -0
  108. package/dist/lib/cli/aws.js +264 -0
  109. package/dist/lib/time-range.js +106 -0
  110. package/package.json +106 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js-BIlHjgGW.js","sources":["../../../../node_modules/.pnpm/@sveltejs+kit@2.70.3_@sveltejs+vite-plugin-svelte@7.3.0_svelte@5.57.0_vite@8.2.2_@types_ab6e39593f61aae0ad0b9a1bac6935c7/node_modules/@sveltejs/kit/src/runtime/utils.js","../../../../node_modules/.pnpm/@sveltejs+kit@2.70.3_@sveltejs+vite-plugin-svelte@7.3.0_svelte@5.57.0_vite@8.2.2_@types_ab6e39593f61aae0ad0b9a1bac6935c7/node_modules/@sveltejs/kit/src/exports/index.js","../../../../node_modules/.pnpm/@sveltejs+kit@2.70.3_@sveltejs+vite-plugin-svelte@7.3.0_svelte@5.57.0_vite@8.2.2_@types_ab6e39593f61aae0ad0b9a1bac6935c7/node_modules/@sveltejs/kit/src/runtime/server/constants.js","../../../../node_modules/.pnpm/@sveltejs+kit@2.70.3_@sveltejs+vite-plugin-svelte@7.3.0_svelte@5.57.0_vite@8.2.2_@types_ab6e39593f61aae0ad0b9a1bac6935c7/node_modules/@sveltejs/kit/src/exports/internal/event.js","../../../../node_modules/.pnpm/@sveltejs+kit@2.70.3_@sveltejs+vite-plugin-svelte@7.3.0_svelte@5.57.0_vite@8.2.2_@types_ab6e39593f61aae0ad0b9a1bac6935c7/node_modules/@sveltejs/kit/src/exports/internal/server.js","../../../../.svelte-kit/output/server/chunks/utils.js"],"sourcesContent":["import { BROWSER } from 'esm-env';\n\nexport const text_encoder = new TextEncoder();\n\n/**\n * Like node's path.relative, but without using node\n * @param {string} from\n * @param {string} to\n */\nexport function get_relative_path(from, to) {\n\tconst from_parts = from.split(/[/\\\\]/);\n\tconst to_parts = to.split(/[/\\\\]/);\n\tfrom_parts.pop(); // get dirname\n\n\twhile (from_parts[0] === to_parts[0]) {\n\t\tfrom_parts.shift();\n\t\tto_parts.shift();\n\t}\n\n\tlet i = from_parts.length;\n\twhile (i--) from_parts[i] = '..';\n\n\treturn from_parts.concat(to_parts).join('/');\n}\n\n/**\n * @param {Uint8Array} bytes\n * @returns {string}\n */\nexport function base64_encode(bytes) {\n\t// Using `Buffer` is faster than iterating\n\tif (!BROWSER && globalThis.Buffer) {\n\t\treturn globalThis.Buffer.from(bytes).toString('base64');\n\t}\n\n\tlet binary = '';\n\n\tfor (let i = 0; i < bytes.length; i++) {\n\t\tbinary += String.fromCharCode(bytes[i]);\n\t}\n\n\treturn btoa(binary);\n}\n\n/**\n * @param {string} encoded\n * @returns {Uint8Array}\n */\nexport function base64_decode(encoded) {\n\t// Using `Buffer` is faster than iterating\n\tif (!BROWSER && globalThis.Buffer) {\n\t\tconst buffer = globalThis.Buffer.from(encoded, 'base64');\n\t\treturn new Uint8Array(buffer);\n\t}\n\n\tconst binary = atob(encoded);\n\tconst bytes = new Uint8Array(binary.length);\n\n\tfor (let i = 0; i < binary.length; i++) {\n\t\tbytes[i] = binary.charCodeAt(i);\n\t}\n\n\treturn bytes;\n}\n","/** @import { StandardSchemaV1 } from '@standard-schema/spec' */\n\nimport { HttpError, Redirect, ActionFailure, ValidationError } from './internal/index.js';\nimport { BROWSER, DEV } from 'esm-env';\nimport {\n\tadd_data_suffix,\n\tadd_resolution_suffix,\n\thas_data_suffix,\n\thas_resolution_suffix,\n\tstrip_data_suffix,\n\tstrip_resolution_suffix\n} from '../runtime/pathname.js';\nimport { text_encoder } from '../runtime/utils.js';\n\nexport { VERSION } from '../version.js';\n\n// TODO 3.0: remove these types as they are not used anymore (we can't remove them yet because that would be a breaking change)\n/**\n * @template {number} TNumber\n * @template {any[]} [TArray=[]]\n * @typedef {TNumber extends TArray['length'] ? TArray[number] : LessThan<TNumber, [...TArray, TArray['length']]>} LessThan\n */\n\n/**\n * @template {number} TStart\n * @template {number} TEnd\n * @typedef {Exclude<TEnd | LessThan<TEnd>, LessThan<TStart>>} NumericRange\n */\n\n// Keep the status codes as `number` because restricting to certain numbers makes it unnecessarily hard to use compared to the benefits\n// (we have runtime errors already to check for invalid codes). Also see https://github.com/sveltejs/kit/issues/11780\n\n// we have to repeat the JSDoc because the display for function overloads is broken\n// see https://github.com/microsoft/TypeScript/issues/55056\n\n/**\n * Throws an error with a HTTP status code and an optional message.\n * When called during request handling, this will cause SvelteKit to\n * return an error response without invoking `handleError`.\n * Make sure you're not catching the thrown error, which would prevent SvelteKit from handling it.\n * @param {number} status The [HTTP status code](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#client_error_responses). Must be in the range 400-599.\n * @param {App.Error} body An object that conforms to the App.Error type. If a string is passed, it will be used as the message property.\n * @overload\n * @param {number} status\n * @param {App.Error} body\n * @return {never}\n * @throws {HttpError} This error instructs SvelteKit to initiate HTTP error handling.\n * @throws {Error} If the provided status is invalid (not between 400 and 599).\n */\n/**\n * Throws an error with a HTTP status code and an optional message.\n * When called during request handling, this will cause SvelteKit to\n * return an error response without invoking `handleError`.\n * Make sure you're not catching the thrown error, which would prevent SvelteKit from handling it.\n * @param {number} status The [HTTP status code](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#client_error_responses). Must be in the range 400-599.\n * @param {{ message: string } extends App.Error ? App.Error | string | undefined : never} [body] An object that conforms to the App.Error type. If a string is passed, it will be used as the message property.\n * @overload\n * @param {number} status\n * @param {{ message: string } extends App.Error ? App.Error | string | undefined : never} [body]\n * @return {never}\n * @throws {HttpError} This error instructs SvelteKit to initiate HTTP error handling.\n * @throws {Error} If the provided status is invalid (not between 400 and 599).\n */\n/**\n * Throws an error with a HTTP status code and an optional message.\n * When called during request handling, this will cause SvelteKit to\n * return an error response without invoking `handleError`.\n * Make sure you're not catching the thrown error, which would prevent SvelteKit from handling it.\n * @param {number} status The [HTTP status code](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#client_error_responses). Must be in the range 400-599.\n * @param {{ message: string } extends App.Error ? App.Error | string | undefined : never} body An object that conforms to the App.Error type. If a string is passed, it will be used as the message property.\n * @return {never}\n * @throws {HttpError} This error instructs SvelteKit to initiate HTTP error handling.\n * @throws {Error} If the provided status is invalid (not between 400 and 599).\n */\nexport function error(status, body) {\n\tif ((!BROWSER || DEV) && (isNaN(status) || status < 400 || status > 599)) {\n\t\tthrow new Error(`HTTP error status codes must be between 400 and 599 — ${status} is invalid`);\n\t}\n\n\tthrow new HttpError(status, body);\n}\n\n/**\n * Checks whether this is an error thrown by {@link error}.\n * @template {number} T\n * @param {unknown} e\n * @param {T} [status] The status to filter for.\n * @return {e is (HttpError & { status: T extends undefined ? never : T })}\n */\nexport function isHttpError(e, status) {\n\tif (!(e instanceof HttpError)) return false;\n\treturn !status || e.status === status;\n}\n\n/**\n * Redirect a request. When called during request handling, SvelteKit will return a redirect response.\n * Make sure you're not catching the thrown redirect, which would prevent SvelteKit from handling it.\n *\n * Most common status codes:\n * * `303 See Other`: redirect as a GET request (often used after a form POST request)\n * * `307 Temporary Redirect`: redirect will keep the request method\n * * `308 Permanent Redirect`: redirect will keep the request method, SEO will be transferred to the new page\n *\n * [See all redirect status codes](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#redirection_messages)\n *\n * @param {300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | ({} & number)} status The [HTTP status code](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#redirection_messages). Must be in the range 300-308.\n * @param {string | URL} location The location to redirect to.\n * @throws {Redirect} This error instructs SvelteKit to redirect to the specified location.\n * @throws {Error} If the provided status is invalid or the location cannot be used as a header value.\n * @return {never}\n */\nexport function redirect(status, location) {\n\tif ((!BROWSER || DEV) && (isNaN(status) || status < 300 || status > 308)) {\n\t\tthrow new Error('Invalid status code');\n\t}\n\n\tthrow new Redirect(\n\t\t// @ts-ignore\n\t\tstatus,\n\t\tlocation.toString()\n\t);\n}\n\n/**\n * Checks whether this is a redirect thrown by {@link redirect}.\n * @param {unknown} e The object to check.\n * @return {e is Redirect}\n */\nexport function isRedirect(e) {\n\treturn e instanceof Redirect;\n}\n\n/**\n * Create a JSON `Response` object from the supplied data.\n * @param {any} data The value that will be serialized as JSON.\n * @param {ResponseInit} [init] Options such as `status` and `headers` that will be added to the response. `Content-Type: application/json` and `Content-Length` headers will be added automatically.\n */\nexport function json(data, init) {\n\t// TODO deprecate this in favour of `Response.json` when it's\n\t// more widely supported\n\tconst body = JSON.stringify(data);\n\n\t// we can't just do `text(JSON.stringify(data), init)` because\n\t// it will set a default `content-type` header. duplicated code\n\t// means less duplicated work\n\tconst headers = new Headers(init?.headers);\n\tif (!headers.has('content-length')) {\n\t\theaders.set('content-length', text_encoder.encode(body).byteLength.toString());\n\t}\n\n\tif (!headers.has('content-type')) {\n\t\theaders.set('content-type', 'application/json');\n\t}\n\n\treturn new Response(body, {\n\t\t...init,\n\t\theaders\n\t});\n}\n\n/**\n * Create a `Response` object from the supplied body.\n * @param {string} body The value that will be used as-is.\n * @param {ResponseInit} [init] Options such as `status` and `headers` that will be added to the response. A `Content-Length` header will be added automatically.\n */\nexport function text(body, init) {\n\tconst headers = new Headers(init?.headers);\n\tif (!headers.has('content-length')) {\n\t\tconst encoded = text_encoder.encode(body);\n\t\theaders.set('content-length', encoded.byteLength.toString());\n\t\treturn new Response(encoded, {\n\t\t\t...init,\n\t\t\theaders\n\t\t});\n\t}\n\n\treturn new Response(body, {\n\t\t...init,\n\t\theaders\n\t});\n}\n\n/**\n * Create an `ActionFailure` object. Call when form submission fails.\n * @param {number} status The [HTTP status code](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#client_error_responses). Must be in the range 400-599.\n * @overload\n * @param {number} status\n * @returns {import('./public.js').ActionFailure<undefined>}\n */\n/**\n * Create an `ActionFailure` object. Call when form submission fails.\n * @template [T=undefined]\n * @param {number} status The [HTTP status code](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#client_error_responses). Must be in the range 400-599.\n * @param {T} data Data associated with the failure (e.g. validation errors)\n * @overload\n * @param {number} status\n * @param {T} data\n * @returns {import('./public.js').ActionFailure<T>}\n */\n/**\n * Create an `ActionFailure` object. Call when form submission fails.\n * @param {number} status\n * @param {any} [data]\n * @returns {import('./public.js').ActionFailure<any>}\n */\nexport function fail(status, data) {\n\t// @ts-expect-error unique symbol missing\n\treturn new ActionFailure(status, data);\n}\n\n/**\n * Checks whether this is an action failure thrown by {@link fail}.\n * @param {unknown} e The object to check.\n * @return {e is import('./public.js').ActionFailure}\n */\nexport function isActionFailure(e) {\n\treturn e instanceof ActionFailure;\n}\n\n/**\n * Use this to throw a validation error to imperatively fail form validation.\n * Can be used in combination with `issue` passed to form actions to create field-specific issues.\n *\n * @example\n * ```ts\n * import { invalid } from '@sveltejs/kit';\n * import { form } from '$app/server';\n * import { tryLogin } from '$lib/server/auth';\n * import * as v from 'valibot';\n *\n * export const login = form(\n * v.object({ name: v.string(), _password: v.string() }),\n * async ({ name, _password }) => {\n * const success = tryLogin(name, _password);\n * if (!success) {\n * invalid('Incorrect username or password');\n * }\n *\n * // ...\n * }\n * );\n * ```\n * @param {...(StandardSchemaV1.Issue | string)} issues\n * @returns {never}\n * @since 2.47.3\n */\nexport function invalid(...issues) {\n\tthrow new ValidationError(\n\t\tissues.map((issue) => (typeof issue === 'string' ? { message: issue } : issue))\n\t);\n}\n\n/**\n * Checks whether this is an validation error thrown by {@link invalid}.\n * @param {unknown} e The object to check.\n * @return {e is import('./public.js').ActionFailure}\n * @since 2.47.3\n */\nexport function isValidationError(e) {\n\treturn e instanceof ValidationError;\n}\n\n/**\n * Strips possible SvelteKit-internal suffixes and trailing slashes from the URL pathname.\n * Returns the normalized URL as well as a method for adding the potential suffix back\n * based on a new pathname (possibly including search) or URL.\n * ```js\n * import { normalizeUrl } from '@sveltejs/kit';\n *\n * const { url, denormalize } = normalizeUrl('/blog/post/__data.json');\n * console.log(url.pathname); // /blog/post\n * console.log(denormalize('/blog/post/a')); // /blog/post/a/__data.json\n * ```\n * @param {URL | string} url\n * @returns {{ url: URL, wasNormalized: boolean, denormalize: (url?: string | URL) => URL }}\n * @since 2.18.0\n */\nexport function normalizeUrl(url) {\n\turl = new URL(url, 'a://a');\n\n\tconst is_route_resolution = has_resolution_suffix(url.pathname);\n\tconst is_data_request = has_data_suffix(url.pathname);\n\tconst has_trailing_slash = url.pathname !== '/' && url.pathname.endsWith('/');\n\n\tif (is_route_resolution) {\n\t\turl.pathname = strip_resolution_suffix(url.pathname);\n\t} else if (is_data_request) {\n\t\turl.pathname = strip_data_suffix(url.pathname);\n\t} else if (has_trailing_slash) {\n\t\turl.pathname = url.pathname.slice(0, -1);\n\t}\n\n\treturn {\n\t\turl,\n\t\twasNormalized: is_data_request || is_route_resolution || has_trailing_slash,\n\t\tdenormalize: (new_url = url) => {\n\t\t\tnew_url = new URL(new_url, url);\n\t\t\tif (is_route_resolution) {\n\t\t\t\tnew_url.pathname = add_resolution_suffix(new_url.pathname);\n\t\t\t} else if (is_data_request) {\n\t\t\t\tnew_url.pathname = add_data_suffix(new_url.pathname);\n\t\t\t} else if (has_trailing_slash && !new_url.pathname.endsWith('/')) {\n\t\t\t\tnew_url.pathname += '/';\n\t\t\t}\n\t\t\treturn new_url;\n\t\t}\n\t};\n}\n","export const NULL_BODY_STATUS = [101, 103, 204, 205, 304];\n\n// eslint-disable-next-line n/prefer-global/process\nexport const IN_WEBCONTAINER = !!globalThis.process?.versions?.webcontainer;\n","/** @import { RequestEvent } from '@sveltejs/kit' */\n/** @import { RequestStore } from 'types' */\n/** @import { AsyncLocalStorage } from 'node:async_hooks' */\n\nimport { IN_WEBCONTAINER } from '../../runtime/server/constants.js';\n\n/** @type {RequestStore | null} */\nlet sync_store = null;\n\n/** @type {AsyncLocalStorage<RequestStore | null> | null} */\nlet als;\n\nimport('node:async_hooks')\n\t.then((hooks) => (als = new hooks.AsyncLocalStorage()))\n\t.catch(() => {\n\t\t// can't use AsyncLocalStorage, but can still call getRequestEvent synchronously.\n\t\t// this isn't behind `supports` because it's basically just StackBlitz (i.e.\n\t\t// in-browser usage) that doesn't support it AFAICT\n\t});\n\n/**\n * Returns the current `RequestEvent`. Can be used inside server hooks, server `load` functions, actions, and endpoints (and functions called by them).\n *\n * In environments without [`AsyncLocalStorage`](https://nodejs.org/api/async_context.html#class-asynclocalstorage), this must be called synchronously (i.e. not after an `await`).\n * @since 2.20.0\n *\n * @returns {RequestEvent}\n */\nexport function getRequestEvent() {\n\tconst event = try_get_request_store()?.event;\n\n\tif (!event) {\n\t\tlet message =\n\t\t\t'Can only read the current request event inside functions invoked during `handle`, such as server `load` functions, actions, endpoints, and other server hooks.';\n\n\t\tif (!als) {\n\t\t\tmessage +=\n\t\t\t\t' In environments without `AsyncLocalStorage`, the event must be read synchronously, not after an `await`.';\n\t\t}\n\n\t\tthrow new Error(message);\n\t}\n\n\treturn event;\n}\n\nexport function get_request_store() {\n\tconst result = try_get_request_store();\n\tif (!result) {\n\t\tlet message = 'Could not get the request store.';\n\n\t\tif (als) {\n\t\t\tmessage += ' This is an internal error.';\n\t\t} else {\n\t\t\tmessage +=\n\t\t\t\t' In environments without `AsyncLocalStorage`, the request store (used by e.g. remote functions) must be accessed synchronously, not after an `await`.' +\n\t\t\t\t' If it was accessed synchronously then this is an internal error.';\n\t\t}\n\n\t\tthrow new Error(message);\n\t}\n\treturn result;\n}\n\nexport function try_get_request_store() {\n\treturn sync_store ?? als?.getStore() ?? null;\n}\n\n/**\n * @template T\n * @param {RequestStore | null} store\n * @param {() => T} fn\n */\nexport function with_request_store(store, fn) {\n\ttry {\n\t\tsync_store = store;\n\t\treturn als ? als.run(store, fn) : fn();\n\t} finally {\n\t\t// Since AsyncLocalStorage is not working in webcontainers, we don't reset `sync_store`\n\t\t// and handle only one request at a time in `src/runtime/server/index.js`.\n\t\tif (!IN_WEBCONTAINER) {\n\t\t\tsync_store = null;\n\t\t}\n\t}\n}\n","/**\n * @template {{ tracing: { enabled: boolean, root: import('@opentelemetry/api').Span, current: import('@opentelemetry/api').Span } }} T\n * @param {T} event_like\n * @param {import('@opentelemetry/api').Span} current\n * @returns {T}\n */\nexport function merge_tracing(event_like, current) {\n\treturn {\n\t\t...event_like,\n\t\ttracing: {\n\t\t\t...event_like.tracing,\n\t\t\tcurrent\n\t\t}\n\t};\n}\n\nexport {\n\twith_request_store,\n\tgetRequestEvent,\n\tget_request_store,\n\ttry_get_request_store\n} from './event.js';\n","import { d as get_message, f as get_status, u as coalesce_to_error, v as parse, y as noop } from \"./shared.js\";\nimport { t as uneval } from \"./uneval.js\";\nimport { json, text } from \"@sveltejs/kit\";\nimport { HttpError, SvelteKitError } from \"@sveltejs/kit/internal\";\nimport { with_request_store } from \"@sveltejs/kit/internal/server\";\n//#region node_modules/.pnpm/@sveltejs+kit@2.70.3_@sveltejs+vite-plugin-svelte@7.3.0_svelte@5.57.0_vite@8.2.2_@types_ab6e39593f61aae0ad0b9a1bac6935c7/node_modules/@sveltejs/kit/src/constants.js\n/**\n* A fake asset path used in `vite dev` and `vite preview`, so that we can\n* serve local assets while verifying that requests are correctly prefixed\n*/\nvar SVELTE_KIT_ASSETS = \"/_svelte_kit_assets\";\nvar ENDPOINT_METHODS = [\n\t\"GET\",\n\t\"POST\",\n\t\"PUT\",\n\t\"PATCH\",\n\t\"DELETE\",\n\t\"OPTIONS\",\n\t\"HEAD\"\n];\nvar MUTATIVE_METHODS = [\n\t\"POST\",\n\t\"PUT\",\n\t\"PATCH\",\n\t\"DELETE\"\n];\nvar PAGE_METHODS = [\n\t\"GET\",\n\t\"POST\",\n\t\"HEAD\"\n];\n//#endregion\n//#region node_modules/.pnpm/set-cookie-parser@3.1.2/node_modules/set-cookie-parser/lib/set-cookie.js\nvar defaultParseOptions = {\n\tdecodeValues: true,\n\tmap: false,\n\tsilent: false,\n\tsplit: \"auto\"\n};\nfunction isForbiddenKey(key) {\n\treturn typeof key !== \"string\" || key in {};\n}\nfunction createNullObj() {\n\treturn Object.create(null);\n}\nfunction isNonEmptyString(str) {\n\treturn typeof str === \"string\" && !!str.trim();\n}\nfunction parseString(setCookieValue, options) {\n\tvar parts = setCookieValue.split(\";\").filter(isNonEmptyString);\n\tvar nameValuePairStr = parts.shift();\n\tif (!nameValuePairStr) return null;\n\tvar parsed = parseNameValuePair(nameValuePairStr);\n\tvar name = parsed.name;\n\tvar value = parsed.value;\n\toptions = options ? Object.assign({}, defaultParseOptions, options) : defaultParseOptions;\n\tif (isForbiddenKey(name)) return null;\n\ttry {\n\t\tvalue = options.decodeValues ? decodeURIComponent(value) : value;\n\t} catch (e) {\n\t\tconsole.error(\"set-cookie-parser: failed to decode cookie value. Set options.decodeValues=false to disable decoding.\", e);\n\t}\n\tvar cookie = createNullObj();\n\tcookie.name = name;\n\tcookie.value = value;\n\tparts.forEach(function(part) {\n\t\tvar sides = part.split(\"=\");\n\t\tvar key = sides.shift().trim().toLowerCase();\n\t\tif (isForbiddenKey(key)) return;\n\t\tvar value = sides.join(\"=\").trim();\n\t\tif (key === \"expires\") cookie.expires = new Date(value);\n\t\telse if (key === \"max-age\") {\n\t\t\tvar n = parseInt(value, 10);\n\t\t\tif (!Number.isNaN(n)) cookie.maxAge = n;\n\t\t} else if (key === \"secure\") cookie.secure = true;\n\t\telse if (key === \"httponly\") cookie.httpOnly = true;\n\t\telse if (key === \"samesite\") cookie.sameSite = value;\n\t\telse if (key === \"partitioned\") cookie.partitioned = true;\n\t\telse if (key) cookie[key] = value;\n\t});\n\treturn cookie;\n}\nfunction parseNameValuePair(nameValuePairStr) {\n\tvar name = \"\";\n\tvar value = \"\";\n\tvar nameValueArr = nameValuePairStr.split(\"=\");\n\tif (nameValueArr.length > 1) {\n\t\tname = nameValueArr.shift();\n\t\tvalue = nameValueArr.join(\"=\");\n\t} else value = nameValuePairStr;\n\treturn {\n\t\tname,\n\t\tvalue\n\t};\n}\nfunction parseSetCookie(input, options) {\n\toptions = options ? Object.assign({}, defaultParseOptions, options) : defaultParseOptions;\n\tif (!input) {\n\t\tif (!options.map) return [];\n\t\telse return createNullObj();\n\t}\n\tif (input.headers) {\n\t\tif (typeof input.headers.getSetCookie === \"function\") input = input.headers.getSetCookie();\n\t\telse if (input.headers[\"set-cookie\"]) input = input.headers[\"set-cookie\"];\n\t\telse {\n\t\t\tvar sch = input.headers[Object.keys(input.headers).find(function(key) {\n\t\t\t\treturn key.toLowerCase() === \"set-cookie\";\n\t\t\t})];\n\t\t\tif (!sch && input.headers.cookie && !options.silent) console.warn(\"Warning: set-cookie-parser appears to have been called on a request object. It is designed to parse Set-Cookie headers from responses, not Cookie headers from requests. Set the option {silent: true} to suppress this warning.\");\n\t\t\tinput = sch;\n\t\t}\n\t}\n\tvar split = options.split;\n\tvar isArray = Array.isArray(input);\n\tif (split === \"auto\") split = !isArray;\n\tif (!isArray) input = [input];\n\tinput = input.filter(isNonEmptyString);\n\tif (split) input = input.map(splitCookiesString).flat();\n\tif (!options.map) return input.map(function(str) {\n\t\treturn parseString(str, options);\n\t}).filter(Boolean);\n\telse {\n\t\tvar cookies = createNullObj();\n\t\treturn input.reduce(function(cookies, str) {\n\t\t\tvar cookie = parseString(str, options);\n\t\t\tif (cookie && !isForbiddenKey(cookie.name)) cookies[cookie.name] = cookie;\n\t\t\treturn cookies;\n\t\t}, cookies);\n\t}\n}\nfunction splitCookiesString(cookiesString) {\n\tif (Array.isArray(cookiesString)) return cookiesString;\n\tif (typeof cookiesString !== \"string\") return [];\n\tvar cookiesStrings = [];\n\tvar pos = 0;\n\tvar start;\n\tvar ch;\n\tvar lastComma;\n\tvar nextStart;\n\tvar cookiesSeparatorFound;\n\tfunction skipWhitespace() {\n\t\twhile (pos < cookiesString.length && /\\s/.test(cookiesString.charAt(pos))) pos += 1;\n\t\treturn pos < cookiesString.length;\n\t}\n\tfunction notSpecialChar() {\n\t\tch = cookiesString.charAt(pos);\n\t\treturn ch !== \"=\" && ch !== \";\" && ch !== \",\";\n\t}\n\twhile (pos < cookiesString.length) {\n\t\tstart = pos;\n\t\tcookiesSeparatorFound = false;\n\t\twhile (skipWhitespace()) {\n\t\t\tch = cookiesString.charAt(pos);\n\t\t\tif (ch === \",\") {\n\t\t\t\tlastComma = pos;\n\t\t\t\tpos += 1;\n\t\t\t\tskipWhitespace();\n\t\t\t\tnextStart = pos;\n\t\t\t\twhile (pos < cookiesString.length && notSpecialChar()) pos += 1;\n\t\t\t\tif (pos < cookiesString.length && cookiesString.charAt(pos) === \"=\") {\n\t\t\t\t\tcookiesSeparatorFound = true;\n\t\t\t\t\tpos = nextStart;\n\t\t\t\t\tcookiesStrings.push(cookiesString.substring(start, lastComma));\n\t\t\t\t\tstart = pos;\n\t\t\t\t} else pos = lastComma + 1;\n\t\t\t} else pos += 1;\n\t\t}\n\t\tif (!cookiesSeparatorFound || pos >= cookiesString.length) cookiesStrings.push(cookiesString.substring(start, cookiesString.length));\n\t}\n\treturn cookiesStrings;\n}\nparseSetCookie.parseSetCookie = parseSetCookie;\nparseSetCookie.parse = parseSetCookie;\nparseSetCookie.parseString = parseString;\nparseSetCookie.splitCookiesString = splitCookiesString;\n//#endregion\n//#region node_modules/.pnpm/@sveltejs+kit@2.70.3_@sveltejs+vite-plugin-svelte@7.3.0_svelte@5.57.0_vite@8.2.2_@types_ab6e39593f61aae0ad0b9a1bac6935c7/node_modules/@sveltejs/kit/src/runtime/form-utils.js\n/** @import { RemoteForm } from '@sveltejs/kit' */\n/** @import { BinaryFormMeta, InternalRemoteFormIssue } from 'types' */\n/** @import { StandardSchemaV1 } from '@standard-schema/spec' */\nvar decoder = new TextDecoder();\n/**\n* Sets a value in a nested object using a path string, mutating the original object\n* @param {Record<string, any>} object\n* @param {string} path_string\n* @param {any} value\n*/\nfunction set_nested_value(object, path_string, value) {\n\tif (path_string.startsWith(\"n:\")) {\n\t\tpath_string = path_string.slice(2);\n\t\tvalue = value === \"\" ? void 0 : parseFloat(value);\n\t} else if (path_string.startsWith(\"b:\")) {\n\t\tpath_string = path_string.slice(2);\n\t\tvalue = value === \"on\";\n\t}\n\tdeep_set(object, split_path(path_string), value);\n}\n/** Pass this to set_nested_value to delete the last part of the given path */\nvar DELETE_KEY = {};\n/**\n* Convert `FormData` into a POJO\n* @param {FormData} data\n*/\nfunction convert_formdata(data) {\n\t/** @type {Record<string, any>} */\n\tconst result = {};\n\tfor (let key of data.keys()) {\n\t\tconst is_array = key.endsWith(\"[]\");\n\t\t/** @type {any[]} */\n\t\tlet values = data.getAll(key);\n\t\tif (is_array) key = key.slice(0, -2);\n\t\tvalues = values.filter((entry) => typeof entry === \"string\" || entry.name !== \"\" || entry.size > 0);\n\t\tif (values.length === 0 && !is_array) continue;\n\t\tif (key.startsWith(\"n:\")) {\n\t\t\tkey = key.slice(2);\n\t\t\tvalues = values.map((v) => v === \"\" ? void 0 : parseFloat(v));\n\t\t} else if (key.startsWith(\"b:\")) {\n\t\t\tkey = key.slice(2);\n\t\t\tvalues = values.map((v) => v === \"on\");\n\t\t}\n\t\tif (values.length > 1 && !is_array) throw new Error(`Form cannot contain duplicated keys — \"${key}\" has ${values.length} values`);\n\t\tset_nested_value(result, key, is_array ? values : values[0]);\n\t}\n\treturn result;\n}\nvar BINARY_FORM_CONTENT_TYPE = \"application/x-sveltekit-formdata\";\nvar BINARY_FORM_VERSION = 0;\nvar HEADER_BYTES = 7;\n/**\n* @param {Request} request\n* @returns {Promise<{ data: Record<string, any>; meta: BinaryFormMeta; form_data: FormData | null }>}\n*/\nasync function deserialize_binary_form(request) {\n\tif (request.headers.get(\"content-type\") !== \"application/x-sveltekit-formdata\") {\n\t\tconst form_data = await request.formData();\n\t\treturn {\n\t\t\tdata: convert_formdata(form_data),\n\t\t\tmeta: {},\n\t\t\tform_data\n\t\t};\n\t}\n\tif (!request.body) throw deserialize_error(\"no body\");\n\tconst reader = request.body.getReader();\n\t/** @type {Array<Promise<Uint8Array<ArrayBuffer> | undefined>>} */\n\tconst chunks = [];\n\t/**\n\t* @param {number} index\n\t* @returns {Promise<Uint8Array<ArrayBuffer> | undefined>}\n\t*/\n\tfunction get_chunk(index) {\n\t\tif (index in chunks) return chunks[index];\n\t\tlet i = chunks.length;\n\t\twhile (i <= index) {\n\t\t\tchunks[i] = reader.read().then((chunk) => chunk.value);\n\t\t\ti++;\n\t\t}\n\t\treturn chunks[index];\n\t}\n\t/**\n\t* @param {number} offset\n\t* @param {number} length\n\t* @returns {Promise<Uint8Array | null>}\n\t*/\n\tasync function get_buffer(offset, length) {\n\t\t/** @type {Uint8Array} */\n\t\tlet start_chunk;\n\t\tlet chunk_start = 0;\n\t\t/** @type {number} */\n\t\tlet chunk_index = 0;\n\t\tfor (;; chunk_index++) {\n\t\t\tconst chunk = await get_chunk(chunk_index);\n\t\t\tif (!chunk) return null;\n\t\t\tconst chunk_end = chunk_start + chunk.byteLength;\n\t\t\tif (offset >= chunk_start && offset < chunk_end) {\n\t\t\t\tstart_chunk = chunk;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tchunk_start = chunk_end;\n\t\t}\n\t\tif (offset + length <= chunk_start + start_chunk.byteLength) return start_chunk.subarray(offset - chunk_start, offset + length - chunk_start);\n\t\tconst chunks = [start_chunk.subarray(offset - chunk_start)];\n\t\tlet cursor = start_chunk.byteLength - offset + chunk_start;\n\t\twhile (cursor < length) {\n\t\t\tchunk_index++;\n\t\t\tlet chunk = await get_chunk(chunk_index);\n\t\t\tif (!chunk) return null;\n\t\t\tif (chunk.byteLength > length - cursor) chunk = chunk.subarray(0, length - cursor);\n\t\t\tchunks.push(chunk);\n\t\t\tcursor += chunk.byteLength;\n\t\t}\n\t\tconst buffer = new Uint8Array(length);\n\t\tcursor = 0;\n\t\tfor (const chunk of chunks) {\n\t\t\tbuffer.set(chunk, cursor);\n\t\t\tcursor += chunk.byteLength;\n\t\t}\n\t\treturn buffer;\n\t}\n\tconst header = await get_buffer(0, HEADER_BYTES);\n\tif (!header) throw deserialize_error(\"too short\");\n\tif (header[0] !== BINARY_FORM_VERSION) throw deserialize_error(`got version ${header[0]}, expected version ${BINARY_FORM_VERSION}`);\n\tconst header_view = new DataView(header.buffer, header.byteOffset, header.byteLength);\n\tconst data_length = header_view.getUint32(1, true);\n\tconst file_offsets_length = header_view.getUint16(5, true);\n\tconst data_buffer = await get_buffer(HEADER_BYTES, data_length);\n\tif (!data_buffer) throw deserialize_error(\"data too short\");\n\t/** @type {Array<number | undefined>} */\n\tlet file_offsets;\n\t/** @type {number} */\n\tlet files_start_offset;\n\tif (file_offsets_length > 0) {\n\t\tconst file_offsets_buffer = await get_buffer(HEADER_BYTES + data_length, file_offsets_length);\n\t\tif (!file_offsets_buffer) throw deserialize_error(\"file offset table too short\");\n\t\tconst parsed_offsets = JSON.parse(decoder.decode(file_offsets_buffer));\n\t\tif (!Array.isArray(parsed_offsets) || parsed_offsets.some((n) => typeof n !== \"number\" || !Number.isInteger(n) || n < 0)) throw deserialize_error(\"invalid file offset table\");\n\t\tfile_offsets = parsed_offsets;\n\t\tfiles_start_offset = HEADER_BYTES + data_length + file_offsets_length;\n\t}\n\t/** @type {Array<{ offset: number, size: number }>} */\n\tconst file_spans = [];\n\tconst [data, meta] = parse(decoder.decode(data_buffer), { File: ([name, type, size, last_modified, index]) => {\n\t\tif (typeof name !== \"string\" || typeof type !== \"string\" || typeof size !== \"number\" || typeof last_modified !== \"number\" || typeof index !== \"number\") throw deserialize_error(\"invalid file metadata\");\n\t\tlet offset = file_offsets[index];\n\t\tif (offset === void 0) throw deserialize_error(\"duplicate file offset table index\");\n\t\tfile_offsets[index] = void 0;\n\t\toffset += files_start_offset;\n\t\tfile_spans.push({\n\t\t\toffset,\n\t\t\tsize\n\t\t});\n\t\treturn new Proxy(new LazyFile(name, type, size, last_modified, get_chunk, offset), { getPrototypeOf() {\n\t\t\treturn File.prototype;\n\t\t} });\n\t} });\n\tfile_spans.sort((a, b) => a.offset - b.offset || a.size - b.size);\n\tfor (let i = 1; i < file_spans.length; i++) {\n\t\tconst previous = file_spans[i - 1];\n\t\tconst current = file_spans[i];\n\t\tconst previous_end = previous.offset + previous.size;\n\t\tif (previous_end < current.offset) throw deserialize_error(\"gaps in file data\");\n\t\tif (previous_end > current.offset) throw deserialize_error(\"overlapping file data\");\n\t}\n\t(async () => {\n\t\tlet has_more = true;\n\t\twhile (has_more) has_more = !!await get_chunk(chunks.length);\n\t})().catch(noop);\n\treturn {\n\t\tdata,\n\t\tmeta,\n\t\tform_data: null\n\t};\n}\n/**\n* @param {string} message\n*/\nfunction deserialize_error(message) {\n\treturn new SvelteKitError(400, \"Bad Request\", `Could not deserialize binary form: ${message}`);\n}\n/** @implements {File} */\nvar LazyFile = class LazyFile {\n\t/** @type {(index: number) => Promise<Uint8Array<ArrayBuffer> | undefined>} */\n\t#get_chunk;\n\t/** @type {number} */\n\t#offset;\n\t/**\n\t* @param {string} name\n\t* @param {string} type\n\t* @param {number} size\n\t* @param {number} last_modified\n\t* @param {(index: number) => Promise<Uint8Array<ArrayBuffer> | undefined>} get_chunk\n\t* @param {number} offset\n\t*/\n\tconstructor(name, type, size, last_modified, get_chunk, offset) {\n\t\tthis.name = name;\n\t\tthis.type = type;\n\t\tthis.size = size;\n\t\tthis.lastModified = last_modified;\n\t\tthis.webkitRelativePath = \"\";\n\t\tthis.#get_chunk = get_chunk;\n\t\tthis.#offset = offset;\n\t\tthis.arrayBuffer = this.arrayBuffer.bind(this);\n\t\tthis.bytes = this.bytes.bind(this);\n\t\tthis.slice = this.slice.bind(this);\n\t\tthis.stream = this.stream.bind(this);\n\t\tthis.text = this.text.bind(this);\n\t}\n\t/** @type {ArrayBuffer | undefined} */\n\t#buffer;\n\tasync arrayBuffer() {\n\t\tthis.#buffer ??= await new Response(this.stream()).arrayBuffer();\n\t\treturn this.#buffer;\n\t}\n\tasync bytes() {\n\t\treturn new Uint8Array(await this.arrayBuffer());\n\t}\n\t/**\n\t* @param {number=} start\n\t* @param {number=} end\n\t* @param {string=} contentType\n\t*/\n\tslice(start = 0, end = this.size, contentType = this.type) {\n\t\tif (start < 0) start = Math.max(this.size + start, 0);\n\t\telse start = Math.min(start, this.size);\n\t\tif (end < 0) end = Math.max(this.size + end, 0);\n\t\telse end = Math.min(end, this.size);\n\t\tconst size = Math.max(end - start, 0);\n\t\treturn new LazyFile(this.name, contentType, size, this.lastModified, this.#get_chunk, this.#offset + start);\n\t}\n\tstream() {\n\t\tlet cursor = 0;\n\t\tlet chunk_index = 0;\n\t\treturn new ReadableStream({\n\t\t\tstart: async (controller) => {\n\t\t\t\tlet chunk_start = 0;\n\t\t\t\t/** @type {Uint8Array} */\n\t\t\t\tlet start_chunk;\n\t\t\t\tfor (chunk_index = 0;; chunk_index++) {\n\t\t\t\t\tconst chunk = await this.#get_chunk(chunk_index);\n\t\t\t\t\tif (!chunk) return null;\n\t\t\t\t\tconst chunk_end = chunk_start + chunk.byteLength;\n\t\t\t\t\tif (this.#offset >= chunk_start && this.#offset < chunk_end) {\n\t\t\t\t\t\tstart_chunk = chunk;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tchunk_start = chunk_end;\n\t\t\t\t}\n\t\t\t\tif (this.#offset + this.size <= chunk_start + start_chunk.byteLength) {\n\t\t\t\t\tcontroller.enqueue(start_chunk.subarray(this.#offset - chunk_start, this.#offset + this.size - chunk_start));\n\t\t\t\t\tcontroller.close();\n\t\t\t\t} else {\n\t\t\t\t\tcontroller.enqueue(start_chunk.subarray(this.#offset - chunk_start));\n\t\t\t\t\tcursor = start_chunk.byteLength - this.#offset + chunk_start;\n\t\t\t\t}\n\t\t\t},\n\t\t\tpull: async (controller) => {\n\t\t\t\tchunk_index++;\n\t\t\t\tlet chunk = await this.#get_chunk(chunk_index);\n\t\t\t\tif (!chunk) {\n\t\t\t\t\tcontroller.error(\"incomplete file data\");\n\t\t\t\t\tcontroller.close();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (chunk.byteLength > this.size - cursor) chunk = chunk.subarray(0, this.size - cursor);\n\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t\tcursor += chunk.byteLength;\n\t\t\t\tif (cursor >= this.size) controller.close();\n\t\t\t}\n\t\t});\n\t}\n\tasync text() {\n\t\treturn decoder.decode(await this.arrayBuffer());\n\t}\n};\nvar path_regex = /^[a-zA-Z_$]\\w*(\\.[a-zA-Z_$]\\w*|\\[\\d+\\])*$/;\n/**\n* @param {string} path\n*/\nfunction split_path(path) {\n\tif (!path_regex.test(path)) throw new Error(`Invalid path ${path}`);\n\treturn path.split(/\\.|\\[|\\]/).filter(Boolean);\n}\n/**\n* Check if a property key is dangerous and could lead to prototype pollution\n* @param {string} key\n*/\nfunction check_prototype_pollution(key) {\n\tif (key === \"__proto__\" || key === \"constructor\" || key === \"prototype\") throw new Error(`Invalid key \"${key}\"`);\n}\n/**\n* Sets a value in a nested object using an array of keys, mutating the original object.\n* @param {Record<string, any>} object\n* @param {string[]} keys\n* @param {any} value\n*/\nfunction deep_set(object, keys, value) {\n\tlet current = object;\n\tfor (let i = 0; i < keys.length - 1; i += 1) {\n\t\tconst key = keys[i];\n\t\tcheck_prototype_pollution(key);\n\t\tconst is_array = /^\\d+$/.test(keys[i + 1]);\n\t\tconst inner = Object.hasOwn(current, key) ? current[key] : void 0;\n\t\tconst exists = inner != null;\n\t\tif (exists && is_array !== Array.isArray(inner)) throw new Error(`Invalid array key ${keys[i + 1]}`);\n\t\tif (!exists) {\n\t\t\tif (value === DELETE_KEY) return;\n\t\t\tcurrent[key] = is_array ? [] : {};\n\t\t}\n\t\tcurrent = current[key];\n\t}\n\tconst final_key = keys[keys.length - 1];\n\tcheck_prototype_pollution(final_key);\n\tif (value === DELETE_KEY) delete current[final_key];\n\telse current[final_key] = value;\n}\n/**\n* @param {StandardSchemaV1.Issue} issue\n* @param {boolean} server Whether this issue came from server validation\n*/\nfunction normalize_issue(issue, server = false) {\n\t/** @type {InternalRemoteFormIssue} */\n\tconst normalized = {\n\t\tname: \"\",\n\t\tpath: [],\n\t\tmessage: issue.message,\n\t\tserver\n\t};\n\tif (issue.path !== void 0) {\n\t\tlet name = \"\";\n\t\tfor (const segment of issue.path) {\n\t\t\tconst key = typeof segment === \"object\" ? segment.key : segment;\n\t\t\tnormalized.path.push(key);\n\t\t\tif (typeof key === \"number\") name += `[${key}]`;\n\t\t\telse if (typeof key === \"string\") name += name === \"\" ? key : \".\" + key;\n\t\t}\n\t\tnormalized.name = name;\n\t}\n\treturn normalized;\n}\n/**\n* @param {InternalRemoteFormIssue[]} issues\n*/\nfunction flatten_issues(issues) {\n\t/** @type {Record<string, InternalRemoteFormIssue[]>} */\n\tconst result = {};\n\tfor (const issue of issues) {\n\t\t(result.$ ??= []).push(issue);\n\t\tlet name = \"\";\n\t\tif (issue.path !== void 0) for (const key of issue.path) {\n\t\t\tif (typeof key === \"number\") name += `[${key}]`;\n\t\t\telse if (typeof key === \"string\") name += name === \"\" ? key : \".\" + key;\n\t\t\t(result[name] ??= []).push(issue);\n\t\t}\n\t}\n\treturn result;\n}\n/**\n* Gets a nested value from an object using a path array\n* @param {Record<string, any>} object\n* @param {(string | number)[]} path\n* @returns {any}\n*/\nfunction deep_get(object, path) {\n\tlet current = object;\n\tfor (const key of path) {\n\t\tif (current == null || typeof current !== \"object\") return current;\n\t\tcurrent = current[key];\n\t}\n\treturn current;\n}\n/**\n*\n* @param {string} field_type\n* @param {boolean} is_array\n* @param {unknown} input_value\n*/\nfunction get_type_prefix(field_type, is_array, input_value) {\n\tif (field_type === \"number\" || field_type === \"range\") return \"n:\";\n\tif (field_type === \"checkbox\" && !is_array) return \"b:\";\n\tif (field_type === \"hidden\" || field_type === \"submit\") {\n\t\tconst input_type = typeof input_value;\n\t\tif (input_type === \"number\") return \"n:\";\n\t\tif (input_type === \"boolean\") return \"b:\";\n\t}\n\treturn \"\";\n}\n/**\n* A deep-clone implementation specifically for form data, where\n* we don't need to worry about cycles and whatnot\n* @param {any} value\n* @returns {any}\n*/\nfunction deep_clone(value) {\n\tif (value !== null && typeof value === \"object\") {\n\t\tif (value instanceof File) return value;\n\t\tif (Array.isArray(value)) return value.map(deep_clone);\n\t\t/** @type {Record<string, any>} */\n\t\tconst clone = {};\n\t\tfor (const key of Object.keys(value)) clone[key] = deep_clone(value[key]);\n\t\treturn clone;\n\t}\n\treturn value;\n}\n/**\n* Creates a proxy-based field accessor for form data\n* @param {any} target - Function or empty POJO\n* @param {() => Record<string, any>} get_input - Function to get current input data\n* @param {(path: (string | number)[], value: any) => void} set_input - Function to set input data\n* @param {(path?: (string | number)[], all?: boolean) => Record<string, InternalRemoteFormIssue[]>} get_issues - Function to get current issues\n* @param {(string | number)[]} path - Current access path\n* @returns {any} Proxy object with name(), value(), and issues() methods\n*/\nfunction create_field_proxy(target, get_input, set_input, get_issues, path = []) {\n\tconst get_value = () => {\n\t\treturn deep_clone(deep_get(get_input(), path));\n\t};\n\treturn new Proxy(target, { get(target, prop) {\n\t\tif (typeof prop === \"symbol\") return target[prop];\n\t\tif (/^\\d+$/.test(prop)) return create_field_proxy({}, get_input, set_input, get_issues, [...path, parseInt(prop, 10)]);\n\t\tconst key = build_path_string(path);\n\t\tif (prop === \"set\") {\n\t\t\tconst set_func = function(newValue) {\n\t\t\t\tset_input(path, newValue);\n\t\t\t\treturn newValue;\n\t\t\t};\n\t\t\treturn create_field_proxy(set_func, get_input, set_input, get_issues, [...path, prop]);\n\t\t}\n\t\tif (prop === \"value\") return create_field_proxy(get_value, get_input, set_input, get_issues, [...path, prop]);\n\t\tif (prop === \"issues\" || prop === \"allIssues\") {\n\t\t\tconst issues_func = () => {\n\t\t\t\tconst all_issues = get_issues(path, prop === \"allIssues\")[key === \"\" ? \"$\" : key];\n\t\t\t\tif (prop === \"allIssues\") return all_issues?.map((issue) => ({\n\t\t\t\t\tpath: issue.path,\n\t\t\t\t\tmessage: issue.message\n\t\t\t\t}));\n\t\t\t\tconst issues = all_issues?.filter((issue) => issue.name === key)?.map((issue) => ({\n\t\t\t\t\tpath: issue.path,\n\t\t\t\t\tmessage: issue.message\n\t\t\t\t}));\n\t\t\t\treturn issues?.length ? issues : void 0;\n\t\t\t};\n\t\t\treturn create_field_proxy(issues_func, get_input, set_input, get_issues, [...path, prop]);\n\t\t}\n\t\tif (prop === \"as\") {\n\t\t\t/**\n\t\t\t* @param {string} type\n\t\t\t* @param {unknown} [input_value]\n\t\t\t*/\n\t\t\tconst as_func = (type, input_value) => {\n\t\t\t\tconst is_array = type === \"file multiple\" || type === \"select multiple\" || type === \"checkbox\" && typeof input_value === \"string\";\n\t\t\t\t/** @type {Record<string, any>} */\n\t\t\t\tconst base_props = {\n\t\t\t\t\tname: get_type_prefix(type, is_array, input_value) + key + (is_array ? \"[]\" : \"\"),\n\t\t\t\t\tget \"aria-invalid\"() {\n\t\t\t\t\t\tconst issues = get_issues();\n\t\t\t\t\t\treturn key in issues ? \"true\" : void 0;\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tif (type !== \"text\" && type !== \"select\" && type !== \"select multiple\") base_props.type = type === \"file multiple\" ? \"file\" : type;\n\t\t\t\tif (type === \"submit\" || type === \"hidden\") return Object.defineProperties(base_props, { value: {\n\t\t\t\t\tvalue: typeof input_value === \"boolean\" ? input_value ? \"on\" : \"off\" : input_value,\n\t\t\t\t\tenumerable: true\n\t\t\t\t} });\n\t\t\t\tif (type === \"select\" || type === \"select multiple\") return Object.defineProperties(base_props, {\n\t\t\t\t\tmultiple: {\n\t\t\t\t\t\tvalue: is_array,\n\t\t\t\t\t\tenumerable: true\n\t\t\t\t\t},\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\treturn get_value() ?? input_value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (type === \"checkbox\" || type === \"radio\") {\n\t\t\t\t\tif (type === \"checkbox\" && !is_array) return Object.defineProperties(base_props, {\n\t\t\t\t\t\tdefaultChecked: {\n\t\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\t\treturn input_value;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\tchecked: {\n\t\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\t\treturn get_value() ?? input_value;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\treturn Object.defineProperties(base_props, {\n\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\tvalue: input_value ?? \"on\",\n\t\t\t\t\t\t\tenumerable: true\n\t\t\t\t\t\t},\n\t\t\t\t\t\tchecked: {\n\t\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\t\tconst value = get_value();\n\t\t\t\t\t\t\t\tif (type === \"radio\") return value === input_value;\n\t\t\t\t\t\t\t\treturn (value ?? []).includes(input_value);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (type === \"file\" || type === \"file multiple\") return Object.defineProperties(base_props, {\n\t\t\t\t\tmultiple: {\n\t\t\t\t\t\tvalue: is_array,\n\t\t\t\t\t\tenumerable: true\n\t\t\t\t\t},\n\t\t\t\t\tfiles: {\n\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\tconst value = get_value();\n\t\t\t\t\t\t\tif (value instanceof File) {\n\t\t\t\t\t\t\t\tif (typeof DataTransfer !== \"undefined\") {\n\t\t\t\t\t\t\t\t\tconst fileList = new DataTransfer();\n\t\t\t\t\t\t\t\t\tfileList.items.add(value);\n\t\t\t\t\t\t\t\t\treturn fileList.files;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t0: value,\n\t\t\t\t\t\t\t\t\tlength: 1\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (Array.isArray(value) && value.every((f) => f instanceof File)) {\n\t\t\t\t\t\t\t\tif (typeof DataTransfer !== \"undefined\") {\n\t\t\t\t\t\t\t\t\tconst fileList = new DataTransfer();\n\t\t\t\t\t\t\t\t\tvalue.forEach((file) => fileList.items.add(file));\n\t\t\t\t\t\t\t\t\treturn fileList.files;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/** @type {any} */\n\t\t\t\t\t\t\t\tconst fileListLike = { length: value.length };\n\t\t\t\t\t\t\t\tvalue.forEach((file, index) => {\n\t\t\t\t\t\t\t\t\tfileListLike[index] = file;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\treturn fileListLike;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn Object.defineProperties(base_props, {\n\t\t\t\t\tdefaultValue: {\n\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\treturn input_value;\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\tconst value = get_value() ?? input_value;\n\t\t\t\t\t\t\treturn value != null ? String(value) : \"\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t};\n\t\t\treturn create_field_proxy(as_func, get_input, set_input, get_issues, [...path, \"as\"]);\n\t\t}\n\t\treturn create_field_proxy({}, get_input, set_input, get_issues, [...path, prop]);\n\t} });\n}\n/**\n* Builds a path string from an array of path segments\n* @param {(string | number)[]} path\n* @returns {string}\n*/\nfunction build_path_string(path) {\n\tlet result = \"\";\n\tfor (const segment of path) if (typeof segment === \"number\") result += `[${segment}]`;\n\telse result += result === \"\" ? segment : \".\" + segment;\n\treturn result;\n}\n/**\n* @param {RemoteForm<any, any>} instance\n* @deprecated remove in 3.0\n*/\nfunction throw_on_old_property_access(instance) {\n\tObject.defineProperty(instance, \"field\", { value: (name) => {\n\t\tconst new_name = name.endsWith(\"[]\") ? name.slice(0, -2) : name;\n\t\tthrow new Error(`\\`form.field\\` has been removed: Instead of \\`<input name={form.field('${name}')} />\\` do \\`<input {...form.fields.${new_name}.as(type)} />\\``);\n\t} });\n\tfor (const property of [\"input\", \"issues\"]) Object.defineProperty(instance, property, { get() {\n\t\tconst new_name = property === \"issues\" ? \"issues\" : \"value\";\n\t\treturn new Proxy({}, { get(_, prop) {\n\t\t\tconst prop_string = typeof prop === \"string\" ? prop : String(prop);\n\t\t\tconst old = prop_string.includes(\"[\") || prop_string.includes(\".\") ? `['${prop_string}']` : `.${prop_string}`;\n\t\t\tconst replacement = `.${prop_string}.${new_name}()`;\n\t\t\tthrow new Error(`\\`form.${property}\\` has been removed: Instead of \\`form.${property}${old}\\` write \\`form.fields${replacement}\\``);\n\t\t} });\n\t} });\n}\n//#endregion\n//#region node_modules/.pnpm/@sveltejs+kit@2.70.3_@sveltejs+vite-plugin-svelte@7.3.0_svelte@5.57.0_vite@8.2.2_@types_ab6e39593f61aae0ad0b9a1bac6935c7/node_modules/@sveltejs/kit/src/utils/http.js\n/**\n* Given an Accept header and a list of possible content types, pick\n* the most suitable one to respond with\n* @param {string} accept\n* @param {string[]} types\n*/\nfunction negotiate(accept, types) {\n\t/** @type {Array<{ type: string, subtype: string, q: number, i: number }>} */\n\tconst parts = [];\n\taccept.split(\",\").forEach((str, i) => {\n\t\tconst match = /^[ \\t]*([^/ \\t]+)\\/([^; \\t]+)[ \\t]*(?:;[ \\t]*q=([0-9.]+))?/.exec(str);\n\t\tif (match) {\n\t\t\tconst [, type, subtype, q = \"1\"] = match;\n\t\t\tparts.push({\n\t\t\t\ttype,\n\t\t\t\tsubtype,\n\t\t\t\tq: +q,\n\t\t\t\ti\n\t\t\t});\n\t\t}\n\t});\n\tparts.sort((a, b) => {\n\t\tif (a.q !== b.q) return b.q - a.q;\n\t\tif (a.subtype === \"*\" !== (b.subtype === \"*\")) return a.subtype === \"*\" ? 1 : -1;\n\t\tif (a.type === \"*\" !== (b.type === \"*\")) return a.type === \"*\" ? 1 : -1;\n\t\treturn a.i - b.i;\n\t});\n\tlet accepted;\n\tlet min_priority = Infinity;\n\tfor (const mimetype of types) {\n\t\tconst [type, subtype] = mimetype.split(\"/\");\n\t\tconst priority = parts.findIndex((part) => (part.type === type || part.type === \"*\") && (part.subtype === subtype || part.subtype === \"*\"));\n\t\tif (priority !== -1 && priority < min_priority) {\n\t\t\taccepted = mimetype;\n\t\t\tmin_priority = priority;\n\t\t}\n\t}\n\treturn accepted;\n}\n/**\n* Reads all `Set-Cookie` headers as separate values. `Headers.get('set-cookie')`\n* collapses them into a single comma-joined string that browsers cannot parse, so\n* we use `Headers.getSetCookie()` where available and fall back to splitting the\n* joined string otherwise.\n*\n* TODO 3.0 `getSetCookie` is available in Node 19.7+; once we drop support for\n* older versions we can use it directly and remove the `splitCookiesString` fallback\n* @param {Headers} headers\n* @returns {string[]}\n*/\nfunction get_set_cookies(headers) {\n\tif (typeof headers.getSetCookie === \"function\") return headers.getSetCookie();\n\tconst set_cookie = headers.get(\"set-cookie\");\n\treturn set_cookie ? splitCookiesString(set_cookie) : [];\n}\n/**\n* Returns `true` if the request contains a `content-type` header with the given type\n* @param {Request} request\n* @param {...string} types\n*/\nfunction is_content_type(request, ...types) {\n\tconst type = request.headers.get(\"content-type\")?.split(\";\", 1)[0].trim() ?? \"\";\n\treturn types.includes(type.toLowerCase());\n}\n/**\n* @param {Request} request\n*/\nfunction is_form_content_type(request) {\n\treturn is_content_type(request, \"application/x-www-form-urlencoded\", \"multipart/form-data\", \"text/plain\", BINARY_FORM_CONTENT_TYPE);\n}\n//#endregion\n//#region node_modules/.pnpm/@sveltejs+kit@2.70.3_@sveltejs+vite-plugin-svelte@7.3.0_svelte@5.57.0_vite@8.2.2_@types_ab6e39593f61aae0ad0b9a1bac6935c7/node_modules/@sveltejs/kit/src/utils/escape.js\n/**\n* When inside a double-quoted attribute value, only `&` and `\"` hold special meaning.\n* @see https://html.spec.whatwg.org/multipage/parsing.html#attribute-value-(double-quoted)-state\n* @type {Record<string, string>}\n*/\nvar escape_html_attr_dict = {\n\t\"&\": \"&amp;\",\n\t\"\\\"\": \"&quot;\"\n};\n/**\n* @type {Record<string, string>}\n*/\nvar escape_html_dict = {\n\t\"&\": \"&amp;\",\n\t\"<\": \"&lt;\"\n};\nvar escape_html_attr_regex = new RegExp(`[${Object.keys(escape_html_attr_dict).join(\"\")}]|[\\\\ud800-\\\\udbff](?![\\\\udc00-\\\\udfff])|[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]|[\\\\udc00-\\\\udfff]`, \"g\");\nvar escape_html_regex = new RegExp(`[${Object.keys(escape_html_dict).join(\"\")}]|[\\\\ud800-\\\\udbff](?![\\\\udc00-\\\\udfff])|[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]|[\\\\udc00-\\\\udfff]`, \"g\");\n/**\n* Escapes unpaired surrogates (which are allowed in js strings but invalid in HTML) and\n* escapes characters that are special.\n*\n* @param {string} str\n* @param {boolean} [is_attr]\n* @returns {string} escaped string\n* @example const html = `<tag data-value=\"${escape_html('value', true)}\">...</tag>`;\n*/\nfunction escape_html(str, is_attr) {\n\tconst dict = is_attr ? escape_html_attr_dict : escape_html_dict;\n\treturn str.replace(is_attr ? escape_html_attr_regex : escape_html_regex, (match) => {\n\t\tif (match.length === 2) return match;\n\t\treturn dict[match] ?? `&#${match.charCodeAt(0)};`;\n\t});\n}\n//#endregion\n//#region node_modules/.pnpm/@sveltejs+kit@2.70.3_@sveltejs+vite-plugin-svelte@7.3.0_svelte@5.57.0_vite@8.2.2_@types_ab6e39593f61aae0ad0b9a1bac6935c7/node_modules/@sveltejs/kit/src/runtime/server/utils.js\n/** @import { ServerHooks } from 'types' */\n/**\n* @param {Partial<Record<import('types').HttpMethod, any>>} mod\n* @param {import('types').HttpMethod} method\n*/\nfunction method_not_allowed(mod, method) {\n\treturn text(`${method} method not allowed`, {\n\t\tstatus: 405,\n\t\theaders: { allow: allowed_methods(mod).join(\", \") }\n\t});\n}\n/** @param {Partial<Record<import('types').HttpMethod, any>>} mod */\nfunction allowed_methods(mod) {\n\tconst allowed = ENDPOINT_METHODS.filter((method) => method in mod);\n\tif (\"GET\" in mod && !(\"HEAD\" in mod)) allowed.push(\"HEAD\");\n\treturn allowed;\n}\n/**\n* @param {import('types').SSROptions} options\n*/\nfunction get_global_name(options) {\n\treturn `__sveltekit_${options.version_hash}`;\n}\n/**\n* Return as a response that renders the error.html\n*\n* @param {import('types').SSROptions} options\n* @param {number} status\n* @param {string} message\n*/\nfunction static_error_page(options, status, message) {\n\tlet page = options.templates.error({\n\t\tstatus,\n\t\tmessage: escape_html(message)\n\t});\n\treturn text(page, {\n\t\theaders: { \"content-type\": \"text/html; charset=utf-8\" },\n\t\tstatus\n\t});\n}\n/**\n* @param {import('@sveltejs/kit').RequestEvent} event\n* @param {import('types').RequestState} state\n* @param {import('types').SSROptions} options\n* @param {unknown} error\n*/\nasync function handle_fatal_error(event, state, options, error) {\n\terror = error instanceof HttpError ? error : coalesce_to_error(error);\n\tconst status = get_status(error);\n\tconst body = await handle_error_and_jsonify(event, state, options, error);\n\tconst type = negotiate(event.request.headers.get(\"accept\") || \"text/html\", [\"application/json\", \"text/html\"]);\n\tif (event.isDataRequest || type === \"application/json\") return json(body, { status });\n\treturn static_error_page(options, status, body.message);\n}\n/**\n* @param {import('@sveltejs/kit').RequestEvent} event\n* @param {import('types').RequestState} state\n* @param {import('types').SSROptions} options\n* @param {any} error\n* @returns {Promise<App.Error>}\n*/\nasync function handle_error_and_jsonify(event, state, options, error) {\n\tif (error instanceof HttpError) return {\n\t\tmessage: \"Unknown Error\",\n\t\t...error.body\n\t};\n\tconst status = get_status(error);\n\tconst message = get_message(error);\n\treturn await with_request_store({\n\t\tevent,\n\t\tstate\n\t}, () => options.hooks.handleError({\n\t\terror,\n\t\tevent,\n\t\tstatus,\n\t\tmessage\n\t})) ?? { message };\n}\n/**\n* @param {number} status\n* @param {string} location\n*/\nfunction redirect_response(status, location) {\n\treturn new Response(void 0, {\n\t\tstatus,\n\t\theaders: { location }\n\t});\n}\n/**\n* @param {import('@sveltejs/kit').RequestEvent} event\n* @param {Error & { path: string }} error\n*/\nfunction clarify_devalue_error(event, error) {\n\tif (error.path) return `Data returned from \\`load\\` while rendering ${event.route.id} is not serializable: ${error.message} (${error.path}). If you need to serialize/deserialize custom types, use transport hooks: https://svelte.dev/docs/kit/hooks#transport.`;\n\tif (error.path === \"\") return `Data returned from \\`load\\` while rendering ${event.route.id} is not a plain object`;\n\treturn error.message;\n}\n/**\n* @param {import('types').ServerDataNode} node\n*/\nfunction serialize_uses(node) {\n\tconst uses = {};\n\tif (node.uses && node.uses.dependencies.size > 0) uses.dependencies = Array.from(node.uses.dependencies);\n\tif (node.uses && node.uses.search_params.size > 0) uses.search_params = Array.from(node.uses.search_params);\n\tif (node.uses && node.uses.params.size > 0) uses.params = Array.from(node.uses.params);\n\tif (node.uses?.parent) uses.parent = 1;\n\tif (node.uses?.route) uses.route = 1;\n\tif (node.uses?.url) uses.url = 1;\n\treturn uses;\n}\n/**\n* Returns `true` if the given path was prerendered\n* @param {import('@sveltejs/kit').SSRManifest} manifest\n* @param {string} pathname Should include the base and be decoded\n*/\nfunction has_prerendered_path(manifest, pathname) {\n\treturn manifest._.prerendered_routes.has(pathname) || pathname.at(-1) === \"/\" && manifest._.prerendered_routes.has(pathname.slice(0, -1));\n}\n/**\n* Formats the error into a nice message with sanitized stack trace\n* @param {number} status\n* @param {Error} error\n* @param {import('@sveltejs/kit').RequestEvent} event\n*/\nfunction format_server_error(status, error, event) {\n\tconst formatted_text = `\\n\\x1b[1;31m[${status}] ${event.request.method} ${event.url.pathname}\\x1b[0m`;\n\tif (status === 404) return formatted_text;\n\treturn `${formatted_text}\\n${error.stack}`;\n}\n/**\n* Returns the filename without the extension. e.g., `+page.server`, `+page`, etc.\n* @param {string | undefined} node_id\n* @returns {string}\n*/\nfunction get_node_type(node_id) {\n\tconst filename = (node_id?.split(\"/\"))?.at(-1);\n\tif (!filename) return \"unknown\";\n\treturn filename.split(\".\").slice(0, -1).join(\".\");\n}\n/**\n* Counts HTML comments that are not SSI directives (which start with `<!--#`).\n* Used to detect when `transformPageChunk` removes comments that Svelte needs for hydration.\n* @param {string} str\n* @returns {number}\n*/\nfunction count_non_ssi_comments(str) {\n\treturn (str.match(/<!--(?!#)/g) ?? []).length;\n}\n/**\n* Creates a serialiser for non-arbitrary POJOs using the app's transport hook\n* @param {ServerHooks['transport']} transport\n* @returns {(thing: unknown) => string | undefined}\n*/\nfunction create_replacer(transport) {\n\t/** @param {unknown} thing */\n\tconst replacer = (thing) => {\n\t\tfor (const key in transport) {\n\t\t\tconst encoded = transport[key].encode(thing);\n\t\t\tif (encoded) return `app.decode('${key}', ${uneval(encoded, replacer)})`;\n\t\t}\n\t};\n\treturn replacer;\n}\n//#endregion\nexport { set_nested_value as C, MUTATIVE_METHODS as D, ENDPOINT_METHODS as E, PAGE_METHODS as O, normalize_issue as S, parseString as T, negotiate as _, get_global_name as a, deserialize_binary_form as b, handle_fatal_error as c, redirect_response as d, serialize_uses as f, is_form_content_type as g, get_set_cookies as h, format_server_error as i, SVELTE_KIT_ASSETS as k, has_prerendered_path as l, escape_html as m, count_non_ssi_comments as n, get_node_type as o, static_error_page as p, create_replacer as r, handle_error_and_jsonify as s, clarify_devalue_error as t, method_not_allowed as u, create_field_proxy as v, throw_on_old_property_access as w, flatten_issues as x, deep_set as y };\n"],"names":[],"mappings":"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","x_google_ignoreList":[0,1,2,3,4]}
@@ -0,0 +1,41 @@
1
+ import { p as parseRegionParam, a as apiError, r as resolveAwsConfig, b as readEnv, c as createLogsClient, d as resolveEffectiveRegion, e as describeAwsError, R as REGION_PARAM_HINT } from '../../../../chunks/env2.js-D7xrfc37.js';
2
+ import { j as json } from '../../../../chunks/utils.js-BIlHjgGW.js';
3
+ import '../../../../chunks/shared-server.js-Dn5XheXH.js';
4
+ import '@aws-sdk/client-cloudwatch-logs';
5
+ import 'node:fs';
6
+ import 'node:path';
7
+ import '../../../../chunks/shared.js-CgjUIvRK.js';
8
+ import '../../../../chunks/uneval.js-DaakSYFQ.js';
9
+
10
+ //#region src/routes/api/health/+server.ts
11
+ /**
12
+ * `GET /api/health?region=` - reports the effective CloudWatch Logs region and endpoint.
13
+ *
14
+ * The region is optional: when it is not supplied anywhere the SDK resolves it
15
+ * from the ambient AWS configuration.
16
+ */
17
+ var GET = async ({ url }) => {
18
+ const parsed = parseRegionParam(url.searchParams.get("region"));
19
+ if (!parsed.ok) return apiError(400, REGION_PARAM_HINT, "invalid-region");
20
+ const config = resolveAwsConfig(readEnv(), parsed.region);
21
+ let client;
22
+ try {
23
+ client = createLogsClient(config);
24
+ const body = {
25
+ ok: true,
26
+ region: await resolveEffectiveRegion(client, config),
27
+ endpoint: config.endpoint,
28
+ local: config.local,
29
+ credentials: config.credentials
30
+ };
31
+ return json(body);
32
+ } catch (error) {
33
+ const described = describeAwsError(error);
34
+ return apiError(502, described.message, described.code);
35
+ } finally {
36
+ client?.destroy();
37
+ }
38
+ };
39
+
40
+ export { GET };
41
+ //# sourceMappingURL=_server.ts.js-aiNZfkco.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts.js-aiNZfkco.js","sources":["../../../../../../../.svelte-kit/output/server/entries/endpoints/api/health/_server.ts.js"],"sourcesContent":["import { a as describeAwsError, c as resolveEffectiveRegion, i as createLogsClient, l as apiError, o as parseRegionParam, r as REGION_PARAM_HINT, s as resolveAwsConfig, t as readEnv } from \"../../../../chunks/env2.js\";\nimport { json } from \"@sveltejs/kit\";\n//#region src/routes/api/health/+server.ts\n/**\n* `GET /api/health?region=` - reports the effective CloudWatch Logs region and endpoint.\n*\n* The region is optional: when it is not supplied anywhere the SDK resolves it\n* from the ambient AWS configuration.\n*/\nvar GET = async ({ url }) => {\n\tconst parsed = parseRegionParam(url.searchParams.get(\"region\"));\n\tif (!parsed.ok) return apiError(400, REGION_PARAM_HINT, \"invalid-region\");\n\tconst config = resolveAwsConfig(readEnv(), parsed.region);\n\tlet client;\n\ttry {\n\t\tclient = createLogsClient(config);\n\t\tconst body = {\n\t\t\tok: true,\n\t\t\tregion: await resolveEffectiveRegion(client, config),\n\t\t\tendpoint: config.endpoint,\n\t\t\tlocal: config.local,\n\t\t\tcredentials: config.credentials\n\t\t};\n\t\treturn json(body);\n\t} catch (error) {\n\t\tconst described = describeAwsError(error);\n\t\treturn apiError(502, described.message, described.code);\n\t} finally {\n\t\tclient?.destroy();\n\t}\n};\n//#endregion\nexport { GET };\n"],"names":[],"mappings":";;;;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACG,IAAC,GAAG,GAAG,OAAO,EAAE,GAAG,EAAE,KAAK;AAC7B,CAAC,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAChE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,QAAQ,CAAC,GAAG,EAAE,iBAAiB,EAAE,gBAAgB,CAAC;AAC1E,CAAC,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC;AAC1D,CAAC,IAAI,MAAM;AACX,CAAC,IAAI;AACL,EAAE,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC;AACnC,EAAE,MAAM,IAAI,GAAG;AACf,GAAG,EAAE,EAAE,IAAI;AACX,GAAG,MAAM,EAAE,MAAM,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC;AACvD,GAAG,QAAQ,EAAE,MAAM,CAAC,QAAQ;AAC5B,GAAG,KAAK,EAAE,MAAM,CAAC,KAAK;AACtB,GAAG,WAAW,EAAE,MAAM,CAAC;AACvB,GAAG;AACH,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC;AACnB,CAAC,CAAC,CAAC,OAAO,KAAK,EAAE;AACjB,EAAE,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC;AAC3C,EAAE,OAAO,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC;AACzD,CAAC,CAAC,SAAS;AACX,EAAE,MAAM,EAAE,OAAO,EAAE;AACnB,CAAC;AACD;;"}
@@ -0,0 +1,120 @@
1
+ import { p as parseRegionParam, a as apiError, b as readEnv, r as resolveAwsConfig, c as createLogsClient, d as resolveEffectiveRegion, e as describeAwsError, R as REGION_PARAM_HINT } from '../../../../chunks/env2.js-D7xrfc37.js';
2
+ import { j as json } from '../../../../chunks/utils.js-BIlHjgGW.js';
3
+ import { DescribeLogGroupsCommand } from '@aws-sdk/client-cloudwatch-logs';
4
+ import '../../../../chunks/shared-server.js-Dn5XheXH.js';
5
+ import 'node:fs';
6
+ import 'node:path';
7
+ import '../../../../chunks/shared.js-CgjUIvRK.js';
8
+ import '../../../../chunks/uneval.js-DaakSYFQ.js';
9
+
10
+ //#region src/lib/server/log-groups.ts
11
+ /** Page size requested from `DescribeLogGroups` (the API maximum). */
12
+ var PAGE_SIZE = 50;
13
+ var DEFAULT_LIMIT = 200;
14
+ var MIN_LIMIT = 1;
15
+ var MAX_LIMIT$1 = 1e3;
16
+ /** Clamps the result limit into the supported 1..1000 range. */
17
+ function clampLimit(limit) {
18
+ if (limit === void 0 || !Number.isFinite(limit)) return DEFAULT_LIMIT;
19
+ return Math.min(Math.max(Math.floor(limit), MIN_LIMIT), MAX_LIMIT$1);
20
+ }
21
+ /** Maps an SDK log group onto the wire type, omitting absent fields. */
22
+ function toSummary(group) {
23
+ const summary = { name: group.logGroupName ?? "" };
24
+ if (group.arn !== void 0) summary.arn = group.arn;
25
+ if (group.storedBytes !== void 0) summary.storedBytes = group.storedBytes;
26
+ if (group.retentionInDays !== void 0) summary.retentionInDays = group.retentionInDays;
27
+ if (group.creationTime !== void 0) summary.creationTime = group.creationTime;
28
+ return summary;
29
+ }
30
+ /** Locale-independent name comparison for a stable sort. */
31
+ function byName(a, b) {
32
+ if (a.name === b.name) return 0;
33
+ return a.name < b.name ? -1 : 1;
34
+ }
35
+ /**
36
+ * Lists log groups for a region.
37
+ *
38
+ * Pages through `DescribeLogGroups` (50 per page, honouring `nextToken`),
39
+ * filters by prefix on the client too because some emulators ignore
40
+ * `logGroupNamePrefix`, de-duplicates by name, sorts by name and stops at
41
+ * `limit` (default 200, clamped to 1..1000).
42
+ */
43
+ async function listLogGroups(client, options = {}) {
44
+ const prefix = options.prefix?.trim() ?? "";
45
+ const limit = clampLimit(options.limit);
46
+ const { signal } = options;
47
+ const collected = [];
48
+ const seenNames = /* @__PURE__ */ new Set();
49
+ let nextToken;
50
+ do {
51
+ if (signal?.aborted) break;
52
+ const input = { limit: PAGE_SIZE };
53
+ if (nextToken !== void 0) input.nextToken = nextToken;
54
+ if (prefix.length > 0) input.logGroupNamePrefix = prefix;
55
+ const response = await client.send(new DescribeLogGroupsCommand(input), { abortSignal: signal });
56
+ for (const group of response.logGroups ?? []) {
57
+ const name = group.logGroupName;
58
+ if (name === void 0 || name.length === 0) continue;
59
+ if (prefix.length > 0 && !name.startsWith(prefix)) continue;
60
+ if (seenNames.has(name)) continue;
61
+ seenNames.add(name);
62
+ collected.push(toSummary(group));
63
+ if (collected.length >= limit) break;
64
+ }
65
+ nextToken = response.nextToken;
66
+ } while (nextToken !== void 0 && nextToken.length > 0 && collected.length < limit);
67
+ return collected.toSorted(byName);
68
+ }
69
+ //#endregion
70
+ //#region src/routes/api/log-groups/+server.ts
71
+ var MAX_LIMIT = 1e3;
72
+ /**
73
+ * `GET /api/log-groups?region=&prefix=&limit=` - lists log groups for a region.
74
+ *
75
+ * The region is optional: without it the SDK resolves the region from the
76
+ * ambient AWS configuration. `request.signal` is forwarded to the SDK so a
77
+ * disconnected client cancels the pagination loop.
78
+ */
79
+ var GET = async ({ url, request }) => {
80
+ const parsedRegion = parseRegionParam(url.searchParams.get("region"));
81
+ if (!parsedRegion.ok) return apiError(400, REGION_PARAM_HINT, "invalid-region");
82
+ const env = readEnv();
83
+ const limitRaw = url.searchParams.get("limit")?.trim() ?? "";
84
+ let limit;
85
+ if (limitRaw.length > 0) {
86
+ const parsed = Number(limitRaw);
87
+ if (!Number.isInteger(parsed) || parsed < 1 || parsed > MAX_LIMIT) return apiError(400, `Invalid limit: expected an integer between 1 and ${MAX_LIMIT}`, "invalid-limit");
88
+ limit = parsed;
89
+ } else {
90
+ const configured = Number((env.WATCH_STREAM_LIMIT ?? "").trim());
91
+ if (Number.isInteger(configured) && configured >= 1 && configured <= MAX_LIMIT) limit = configured;
92
+ }
93
+ const prefix = url.searchParams.get("prefix")?.trim();
94
+ const config = resolveAwsConfig(env, parsedRegion.region);
95
+ let client;
96
+ try {
97
+ client = createLogsClient(config);
98
+ const region = await resolveEffectiveRegion(client, config);
99
+ const groups = await listLogGroups(client, {
100
+ prefix: prefix !== void 0 && prefix.length > 0 ? prefix : void 0,
101
+ limit,
102
+ signal: request.signal
103
+ });
104
+ const body = {
105
+ region,
106
+ endpoint: config.endpoint,
107
+ groups
108
+ };
109
+ return json(body);
110
+ } catch (error) {
111
+ if (request.signal.aborted || error instanceof Error && error.name === "AbortError") return apiError(499, "The client closed the request before CloudWatch Logs replied", "aborted");
112
+ const described = describeAwsError(error);
113
+ return apiError(502, described.message, described.code);
114
+ } finally {
115
+ client?.destroy();
116
+ }
117
+ };
118
+
119
+ export { GET };
120
+ //# sourceMappingURL=_server.ts.js-D143-vRl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts.js-D143-vRl.js","sources":["../../../../../../../.svelte-kit/output/server/entries/endpoints/api/log-groups/_server.ts.js"],"sourcesContent":["import { a as describeAwsError, c as resolveEffectiveRegion, i as createLogsClient, l as apiError, o as parseRegionParam, r as REGION_PARAM_HINT, s as resolveAwsConfig, t as readEnv } from \"../../../../chunks/env2.js\";\nimport { json } from \"@sveltejs/kit\";\nimport { DescribeLogGroupsCommand } from \"@aws-sdk/client-cloudwatch-logs\";\n//#region src/lib/server/log-groups.ts\n/** Page size requested from `DescribeLogGroups` (the API maximum). */\nvar PAGE_SIZE = 50;\nvar DEFAULT_LIMIT = 200;\nvar MIN_LIMIT = 1;\nvar MAX_LIMIT$1 = 1e3;\n/** Clamps the result limit into the supported 1..1000 range. */\nfunction clampLimit(limit) {\n\tif (limit === void 0 || !Number.isFinite(limit)) return DEFAULT_LIMIT;\n\treturn Math.min(Math.max(Math.floor(limit), MIN_LIMIT), MAX_LIMIT$1);\n}\n/** Maps an SDK log group onto the wire type, omitting absent fields. */\nfunction toSummary(group) {\n\tconst summary = { name: group.logGroupName ?? \"\" };\n\tif (group.arn !== void 0) summary.arn = group.arn;\n\tif (group.storedBytes !== void 0) summary.storedBytes = group.storedBytes;\n\tif (group.retentionInDays !== void 0) summary.retentionInDays = group.retentionInDays;\n\tif (group.creationTime !== void 0) summary.creationTime = group.creationTime;\n\treturn summary;\n}\n/** Locale-independent name comparison for a stable sort. */\nfunction byName(a, b) {\n\tif (a.name === b.name) return 0;\n\treturn a.name < b.name ? -1 : 1;\n}\n/**\n* Lists log groups for a region.\n*\n* Pages through `DescribeLogGroups` (50 per page, honouring `nextToken`),\n* filters by prefix on the client too because some emulators ignore\n* `logGroupNamePrefix`, de-duplicates by name, sorts by name and stops at\n* `limit` (default 200, clamped to 1..1000).\n*/\nasync function listLogGroups(client, options = {}) {\n\tconst prefix = options.prefix?.trim() ?? \"\";\n\tconst limit = clampLimit(options.limit);\n\tconst { signal } = options;\n\tconst collected = [];\n\tconst seenNames = /* @__PURE__ */ new Set();\n\tlet nextToken;\n\tdo {\n\t\tif (signal?.aborted) break;\n\t\tconst input = { limit: PAGE_SIZE };\n\t\tif (nextToken !== void 0) input.nextToken = nextToken;\n\t\tif (prefix.length > 0) input.logGroupNamePrefix = prefix;\n\t\tconst response = await client.send(new DescribeLogGroupsCommand(input), { abortSignal: signal });\n\t\tfor (const group of response.logGroups ?? []) {\n\t\t\tconst name = group.logGroupName;\n\t\t\tif (name === void 0 || name.length === 0) continue;\n\t\t\tif (prefix.length > 0 && !name.startsWith(prefix)) continue;\n\t\t\tif (seenNames.has(name)) continue;\n\t\t\tseenNames.add(name);\n\t\t\tcollected.push(toSummary(group));\n\t\t\tif (collected.length >= limit) break;\n\t\t}\n\t\tnextToken = response.nextToken;\n\t} while (nextToken !== void 0 && nextToken.length > 0 && collected.length < limit);\n\treturn collected.toSorted(byName);\n}\n//#endregion\n//#region src/routes/api/log-groups/+server.ts\nvar MAX_LIMIT = 1e3;\n/**\n* `GET /api/log-groups?region=&prefix=&limit=` - lists log groups for a region.\n*\n* The region is optional: without it the SDK resolves the region from the\n* ambient AWS configuration. `request.signal` is forwarded to the SDK so a\n* disconnected client cancels the pagination loop.\n*/\nvar GET = async ({ url, request }) => {\n\tconst parsedRegion = parseRegionParam(url.searchParams.get(\"region\"));\n\tif (!parsedRegion.ok) return apiError(400, REGION_PARAM_HINT, \"invalid-region\");\n\tconst env = readEnv();\n\tconst limitRaw = url.searchParams.get(\"limit\")?.trim() ?? \"\";\n\tlet limit;\n\tif (limitRaw.length > 0) {\n\t\tconst parsed = Number(limitRaw);\n\t\tif (!Number.isInteger(parsed) || parsed < 1 || parsed > MAX_LIMIT) return apiError(400, `Invalid limit: expected an integer between 1 and ${MAX_LIMIT}`, \"invalid-limit\");\n\t\tlimit = parsed;\n\t} else {\n\t\tconst configured = Number((env.WATCH_STREAM_LIMIT ?? \"\").trim());\n\t\tif (Number.isInteger(configured) && configured >= 1 && configured <= MAX_LIMIT) limit = configured;\n\t}\n\tconst prefix = url.searchParams.get(\"prefix\")?.trim();\n\tconst config = resolveAwsConfig(env, parsedRegion.region);\n\tlet client;\n\ttry {\n\t\tclient = createLogsClient(config);\n\t\tconst region = await resolveEffectiveRegion(client, config);\n\t\tconst groups = await listLogGroups(client, {\n\t\t\tprefix: prefix !== void 0 && prefix.length > 0 ? prefix : void 0,\n\t\t\tlimit,\n\t\t\tsignal: request.signal\n\t\t});\n\t\tconst body = {\n\t\t\tregion,\n\t\t\tendpoint: config.endpoint,\n\t\t\tgroups\n\t\t};\n\t\treturn json(body);\n\t} catch (error) {\n\t\tif (request.signal.aborted || error instanceof Error && error.name === \"AbortError\") return apiError(499, \"The client closed the request before CloudWatch Logs replied\", \"aborted\");\n\t\tconst described = describeAwsError(error);\n\t\treturn apiError(502, described.message, described.code);\n\t} finally {\n\t\tclient?.destroy();\n\t}\n};\n//#endregion\nexport { GET };\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ import { p as parseRegionParam, a as apiError, b as readEnv, r as resolveAwsConfig, c as createLogsClient, d as resolveEffectiveRegion, e as describeAwsError, R as REGION_PARAM_HINT } from '../../../../chunks/env2.js-D7xrfc37.js';
2
+ import { R as REGION_CODES } from '../../../../chunks/regions.js-IQPMyP5C.js';
3
+ import { j as json } from '../../../../chunks/utils.js-BIlHjgGW.js';
4
+ import '../../../../chunks/shared-server.js-Dn5XheXH.js';
5
+ import '@aws-sdk/client-cloudwatch-logs';
6
+ import 'node:fs';
7
+ import 'node:path';
8
+ import '../../../../chunks/shared.js-CgjUIvRK.js';
9
+ import '../../../../chunks/uneval.js-DaakSYFQ.js';
10
+
11
+ //#region src/lib/server/regions.ts
12
+ /**
13
+ * Region list used when `WATCH_STREAM_REGIONS` is unset.
14
+ *
15
+ * Every AWS region that publishes CloudWatch Logs endpoints, including
16
+ * `af-south-1`; see `$lib/regions`.
17
+ */
18
+ var FALLBACK_REGIONS = [...REGION_CODES];
19
+ /** Splits a comma-separated region list, trimming and dropping blanks. */
20
+ function parseRegionList(value) {
21
+ if (typeof value !== "string") return [];
22
+ const regions = [];
23
+ for (const part of value.split(",")) {
24
+ const region = part.trim();
25
+ if (region.length > 0 && !regions.includes(region)) regions.push(region);
26
+ }
27
+ return regions;
28
+ }
29
+ /** Trims a value and treats blank strings as absent. */
30
+ function normalize(value) {
31
+ if (typeof value !== "string") return null;
32
+ const trimmed = value.trim();
33
+ return trimmed.length > 0 ? trimmed : null;
34
+ }
35
+ /**
36
+ * Resolves the region list for the picker plus the default region.
37
+ *
38
+ * `defaultRegion` is the explicit environment region when set, otherwise
39
+ * `effectiveRegion` (usually the region the SDK resolved from the ambient AWS
40
+ * configuration), otherwise `us-east-1`. The list comes from
41
+ * `WATCH_STREAM_REGIONS` when set, otherwise from {@link FALLBACK_REGIONS}, and
42
+ * the default region is always present: it is prepended when missing, keeping
43
+ * the remaining order de-duplicated.
44
+ */
45
+ function resolveRegions(env, effectiveRegion) {
46
+ const { region: envRegion } = resolveAwsConfig(env);
47
+ const defaultRegion = envRegion ?? normalize(effectiveRegion) ?? "us-east-1";
48
+ const configured = parseRegionList(env.WATCH_STREAM_REGIONS);
49
+ const regions = configured.length > 0 ? configured : [...FALLBACK_REGIONS];
50
+ if (!regions.includes(defaultRegion)) regions.unshift(defaultRegion);
51
+ return {
52
+ regions,
53
+ defaultRegion
54
+ };
55
+ }
56
+ //#endregion
57
+ //#region src/routes/api/regions/+server.ts
58
+ /**
59
+ * `GET /api/regions?region=` - region list for the picker plus the effective region.
60
+ *
61
+ * The effective region becomes `defaultRegion`, so a region resolved from the
62
+ * ambient AWS configuration is selected by default.
63
+ */
64
+ var GET = async ({ url }) => {
65
+ const parsed = parseRegionParam(url.searchParams.get("region"));
66
+ if (!parsed.ok) return apiError(400, REGION_PARAM_HINT, "invalid-region");
67
+ const env = readEnv();
68
+ const config = resolveAwsConfig(env, parsed.region);
69
+ let client;
70
+ try {
71
+ client = createLogsClient(config);
72
+ const { regions, defaultRegion } = resolveRegions(env, await resolveEffectiveRegion(client, config));
73
+ const body = {
74
+ regions,
75
+ defaultRegion,
76
+ endpoint: config.endpoint
77
+ };
78
+ return json(body);
79
+ } catch (error) {
80
+ const described = describeAwsError(error);
81
+ return apiError(502, described.message, described.code);
82
+ } finally {
83
+ client?.destroy();
84
+ }
85
+ };
86
+
87
+ export { GET };
88
+ //# sourceMappingURL=_server.ts.js-CDNL7msU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts.js-CDNL7msU.js","sources":["../../../../../../../.svelte-kit/output/server/entries/endpoints/api/regions/_server.ts.js"],"sourcesContent":["import { a as describeAwsError, c as resolveEffectiveRegion, i as createLogsClient, l as apiError, o as parseRegionParam, r as REGION_PARAM_HINT, s as resolveAwsConfig, t as readEnv } from \"../../../../chunks/env2.js\";\nimport { t as REGION_CODES } from \"../../../../chunks/regions.js\";\nimport { json } from \"@sveltejs/kit\";\n//#region src/lib/server/regions.ts\n/**\n* Region list used when `WATCH_STREAM_REGIONS` is unset.\n*\n* Every AWS region that publishes CloudWatch Logs endpoints, including\n* `af-south-1`; see `$lib/regions`.\n*/\nvar FALLBACK_REGIONS = [...REGION_CODES];\n/** Splits a comma-separated region list, trimming and dropping blanks. */\nfunction parseRegionList(value) {\n\tif (typeof value !== \"string\") return [];\n\tconst regions = [];\n\tfor (const part of value.split(\",\")) {\n\t\tconst region = part.trim();\n\t\tif (region.length > 0 && !regions.includes(region)) regions.push(region);\n\t}\n\treturn regions;\n}\n/** Trims a value and treats blank strings as absent. */\nfunction normalize(value) {\n\tif (typeof value !== \"string\") return null;\n\tconst trimmed = value.trim();\n\treturn trimmed.length > 0 ? trimmed : null;\n}\n/**\n* Resolves the region list for the picker plus the default region.\n*\n* `defaultRegion` is the explicit environment region when set, otherwise\n* `effectiveRegion` (usually the region the SDK resolved from the ambient AWS\n* configuration), otherwise `us-east-1`. The list comes from\n* `WATCH_STREAM_REGIONS` when set, otherwise from {@link FALLBACK_REGIONS}, and\n* the default region is always present: it is prepended when missing, keeping\n* the remaining order de-duplicated.\n*/\nfunction resolveRegions(env, effectiveRegion) {\n\tconst { region: envRegion } = resolveAwsConfig(env);\n\tconst defaultRegion = envRegion ?? normalize(effectiveRegion) ?? \"us-east-1\";\n\tconst configured = parseRegionList(env.WATCH_STREAM_REGIONS);\n\tconst regions = configured.length > 0 ? configured : [...FALLBACK_REGIONS];\n\tif (!regions.includes(defaultRegion)) regions.unshift(defaultRegion);\n\treturn {\n\t\tregions,\n\t\tdefaultRegion\n\t};\n}\n//#endregion\n//#region src/routes/api/regions/+server.ts\n/**\n* `GET /api/regions?region=` - region list for the picker plus the effective region.\n*\n* The effective region becomes `defaultRegion`, so a region resolved from the\n* ambient AWS configuration is selected by default.\n*/\nvar GET = async ({ url }) => {\n\tconst parsed = parseRegionParam(url.searchParams.get(\"region\"));\n\tif (!parsed.ok) return apiError(400, REGION_PARAM_HINT, \"invalid-region\");\n\tconst env = readEnv();\n\tconst config = resolveAwsConfig(env, parsed.region);\n\tlet client;\n\ttry {\n\t\tclient = createLogsClient(config);\n\t\tconst { regions, defaultRegion } = resolveRegions(env, await resolveEffectiveRegion(client, config));\n\t\tconst body = {\n\t\t\tregions,\n\t\t\tdefaultRegion,\n\t\t\tendpoint: config.endpoint\n\t\t};\n\t\treturn json(body);\n\t} catch (error) {\n\t\tconst described = describeAwsError(error);\n\t\treturn apiError(502, described.message, described.code);\n\t} finally {\n\t\tclient?.destroy();\n\t}\n};\n//#endregion\nexport { GET };\n"],"names":[],"mappings":"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"}