diff --git a/.changeset/eleven-pumas-film.md b/.changeset/eleven-pumas-film.md new file mode 100644 index 00000000..5bc9138d --- /dev/null +++ b/.changeset/eleven-pumas-film.md @@ -0,0 +1,5 @@ +--- +"@opennextjs/cloudflare": patch +--- + +perf: reduce CPU and memory usage by limiting code to AST parsing diff --git a/packages/cloudflare/package.json b/packages/cloudflare/package.json index 7804e0c8..8f2d14e4 100644 --- a/packages/cloudflare/package.json +++ b/packages/cloudflare/package.json @@ -76,7 +76,6 @@ "@opennextjs/aws": "https://pkg.pr.new/@opennextjs/aws@727", "enquirer": "^2.4.1", "glob": "catalog:", - "ts-morph": "catalog:", "yaml": "^2.7.0" }, "peerDependencies": { diff --git a/packages/cloudflare/src/cli/build/bundle-server.ts b/packages/cloudflare/src/cli/build/bundle-server.ts index 82a2af78..025c1453 100644 --- a/packages/cloudflare/src/cli/build/bundle-server.ts +++ b/packages/cloudflare/src/cli/build/bundle-server.ts @@ -4,14 +4,16 @@ import path from "node:path"; import { fileURLToPath } from "node:url"; import { type BuildOptions, getPackagePath } from "@opennextjs/aws/build/helper.js"; -import { getCrossPlatformPathRegex } from "@opennextjs/aws/utils/regex.js"; -import { build, Plugin } from "esbuild"; +import { build } from "esbuild"; import { patchVercelOgLibrary } from "./patches/ast/patch-vercel-og-library.js"; import { patchWebpackRuntime } from "./patches/ast/webpack-runtime.js"; import * as patches from "./patches/index.js"; +import { ContentUpdater } from "./patches/plugins/content-updater.js"; +import { patchLoadInstrumentation } from "./patches/plugins/load-instrumentation.js"; import { handleOptionalDependencies } from "./patches/plugins/optional-deps.js"; import { fixRequire } from "./patches/plugins/require.js"; +import { shimRequireHook } from "./patches/plugins/require-hook.js"; import { inlineRequirePagePlugin } from "./patches/plugins/require-page.js"; import { setWranglerExternal } from "./patches/plugins/wrangler-external.js"; import { normalizePath, patchCodeWithValidations } from "./utils/index.js"; @@ -58,6 +60,8 @@ export async function bundleServer(buildOpts: BuildOptions): Promise { const openNextServer = path.join(outputPath, packagePath, `index.mjs`); const openNextServerBundle = path.join(outputPath, packagePath, `handler.mjs`); + const updater = new ContentUpdater(); + const result = await build({ entryPoints: [openNextServer], bundle: true, @@ -77,11 +81,14 @@ export async function bundleServer(buildOpts: BuildOptions): Promise { // - ESBuild `node` platform: https://esbuild.github.io/api/#platform conditions: [], plugins: [ - createFixRequiresESBuildPlugin(buildOpts), - inlineRequirePagePlugin(buildOpts), + shimRequireHook(buildOpts), + inlineRequirePagePlugin(updater, buildOpts), setWranglerExternal(), - fixRequire(), + fixRequire(updater), handleOptionalDependencies(optionalDependencies), + patchLoadInstrumentation(updater), + // Apply updater updaters, must be the last plugin + updater.plugin, ], external: ["./middleware/handler.mjs"], alias: { @@ -192,7 +199,6 @@ export async function updateWorkerBundledCode( (code) => patches.inlineMiddlewareManifestRequire(code, buildOpts), ], ["exception bubbling", patches.patchExceptionBubbling], - ["`loadInstrumentationModule` function", patches.patchLoadInstrumentationModule], [ "`patchAsyncStorage` call", (code) => @@ -210,21 +216,6 @@ export async function updateWorkerBundledCode( await writeFile(workerOutputFile, patchedCode); } -function createFixRequiresESBuildPlugin(options: BuildOptions): Plugin { - return { - name: "replaceRelative", - setup(build) { - // Note: we (empty) shim require-hook modules as they generate problematic code that uses requires - build.onResolve( - { filter: getCrossPlatformPathRegex(String.raw`^\./require-hook$`, { escape: false }) }, - () => ({ - path: path.join(options.outputDir, "cloudflare-templates/shims/empty.js"), - }) - ); - }, - }; -} - /** * Gets the path of the worker.js file generated by the build process * diff --git a/packages/cloudflare/src/cli/build/patches/plugins/content-updater.ts b/packages/cloudflare/src/cli/build/patches/plugins/content-updater.ts new file mode 100644 index 00000000..81cca509 --- /dev/null +++ b/packages/cloudflare/src/cli/build/patches/plugins/content-updater.ts @@ -0,0 +1,65 @@ +/** + * ESBuild stops calling `onLoad` hooks after the first hook returns an updated content. + * + * The updater allows multiple plugins to update the content. + */ + +import { readFile } from "node:fs/promises"; + +import { type OnLoadArgs, type OnLoadOptions, type Plugin, type PluginBuild } from "esbuild"; + +export type Callback = (args: { + contents: string; + path: string; +}) => string | undefined | Promise; +export type Updater = OnLoadOptions & { callback: Callback }; + +export class ContentUpdater { + updaters = new Map(); + + /** + * Register a callback to update the file content. + * + * The callbacks are called in order of registration. + * + * @param name The name of the plugin (must be unique). + * @param options Same options as the `onLoad` hook to restrict updates. + * @param callback The callback updating the content. + * @returns A noop ESBuild plugin. + */ + updateContent(name: string, options: OnLoadOptions, callback: Callback): Plugin { + if (this.updaters.has(name)) { + throw new Error(`Plugin "${name}" already registered`); + } + this.updaters.set(name, { ...options, callback }); + return { + name, + setup() {}, + }; + } + + /** + * Returns an ESBuild plugin applying the registered updates. + */ + get plugin() { + return { + name: "aggregate-on-load", + + setup: async (build: PluginBuild) => { + build.onLoad({ filter: /\.(js|mjs|cjs|jsx|ts|tsx)$/ }, async (args: OnLoadArgs) => { + let contents = await readFile(args.path, "utf-8"); + for (const { filter, namespace, callback } of this.updaters.values()) { + if (namespace !== undefined && args.namespace !== namespace) { + continue; + } + if (!filter.test(args.path)) { + continue; + } + contents = (await callback({ contents, path: args.path })) ?? contents; + } + return { contents }; + }); + }, + }; + } +} diff --git a/packages/cloudflare/src/cli/build/patches/plugins/load-instrumentation.spec.ts b/packages/cloudflare/src/cli/build/patches/plugins/load-instrumentation.spec.ts new file mode 100644 index 00000000..4fc1a713 --- /dev/null +++ b/packages/cloudflare/src/cli/build/patches/plugins/load-instrumentation.spec.ts @@ -0,0 +1,48 @@ +import { describe, expect, test } from "vitest"; + +import { patchCode } from "../ast/util.js"; +import { instrumentationRule } from "./load-instrumentation.js"; + +describe("LoadInstrumentationModule", () => { + test("patch", () => { + const code = ` +export default class NextNodeServer extends BaseServer< + Options, + NodeNextRequest, + NodeNextResponse +> { + protected async loadInstrumentationModule() { + if (!this.serverOptions.dev) { + try { + this.instrumentation = await dynamicRequire( + resolve( + this.serverOptions.dir || '.', + this.serverOptions.conf.distDir!, + 'server', + INSTRUMENTATION_HOOK_FILENAME + ) + ) + } catch (err: any) { + if (err.code !== 'MODULE_NOT_FOUND') { + throw new Error( + 'An error occurred while loading the instrumentation hook', + { cause: err } + ) + } + } + } + return this.instrumentation + } +}`; + + expect(patchCode(code, instrumentationRule)).toMatchInlineSnapshot(` + "export default class NextNodeServer extends BaseServer< + Options, + NodeNextRequest, + NodeNextResponse + > { + async loadInstrumentationModule() { } + }" + `); + }); +}); diff --git a/packages/cloudflare/src/cli/build/patches/plugins/load-instrumentation.ts b/packages/cloudflare/src/cli/build/patches/plugins/load-instrumentation.ts new file mode 100644 index 00000000..4a942e09 --- /dev/null +++ b/packages/cloudflare/src/cli/build/patches/plugins/load-instrumentation.ts @@ -0,0 +1,28 @@ +/** + * `loadInstrumentationModule` uses a dynamic require which is not supported. + */ + +import { patchCode } from "../ast/util.js"; +import type { ContentUpdater } from "./content-updater.js"; + +export const instrumentationRule = ` +rule: + kind: method_definition + all: + - has: {field: name, regex: ^loadInstrumentationModule$} + - has: {pattern: dynamicRequire, stopBy: end} + +fix: async loadInstrumentationModule() { } +`; + +export function patchLoadInstrumentation(updater: ContentUpdater) { + return updater.updateContent( + "patch-load-instrumentation", + { filter: /\.(js|mjs|cjs|jsx|ts|tsx)$/ }, + ({ contents }) => { + if (/async loadInstrumentationModule\(/.test(contents)) { + return patchCode(contents, instrumentationRule); + } + } + ); +} diff --git a/packages/cloudflare/src/cli/build/patches/plugins/require-hook.ts b/packages/cloudflare/src/cli/build/patches/plugins/require-hook.ts new file mode 100644 index 00000000..006a265f --- /dev/null +++ b/packages/cloudflare/src/cli/build/patches/plugins/require-hook.ts @@ -0,0 +1,20 @@ +import { join } from "node:path"; + +import type { BuildOptions } from "@opennextjs/aws/build/helper.js"; +import { getCrossPlatformPathRegex } from "@opennextjs/aws/utils/regex.js"; +import type { Plugin } from "esbuild"; + +export function shimRequireHook(options: BuildOptions): Plugin { + return { + name: "replaceRelative", + setup(build) { + // Note: we (empty) shim require-hook modules as they generate problematic code that uses requires + build.onResolve( + { filter: getCrossPlatformPathRegex(String.raw`^\./require-hook$`, { escape: false }) }, + () => ({ + path: join(options.outputDir, "cloudflare-templates/shims/empty.js"), + }) + ); + }, + }; +} diff --git a/packages/cloudflare/src/cli/build/patches/plugins/require-page.ts b/packages/cloudflare/src/cli/build/patches/plugins/require-page.ts index 08c90f9f..2cd6d739 100644 --- a/packages/cloudflare/src/cli/build/patches/plugins/require-page.ts +++ b/packages/cloudflare/src/cli/build/patches/plugins/require-page.ts @@ -3,28 +3,22 @@ import { join } from "node:path"; import { type BuildOptions, getPackagePath } from "@opennextjs/aws/build/helper.js"; import { getCrossPlatformPathRegex } from "@opennextjs/aws/utils/regex.js"; -import type { PluginBuild } from "esbuild"; import { patchCode, type RuleConfig } from "../ast/util.js"; +import type { ContentUpdater } from "./content-updater.js"; -export function inlineRequirePagePlugin(buildOpts: BuildOptions) { - return { - name: "inline-require-page", - - setup: async (build: PluginBuild) => { - build.onLoad( - { - filter: getCrossPlatformPathRegex(String.raw`/next/dist/server/require\.js$`, { escape: false }), - }, - async ({ path }) => { - const jsCode = await readFile(path, "utf8"); - if (/function requirePage\(/.test(jsCode)) { - return { contents: patchCode(jsCode, await getRule(buildOpts)) }; - } - } - ); +export function inlineRequirePagePlugin(updater: ContentUpdater, buildOpts: BuildOptions) { + return updater.updateContent( + "inline-require-page", + { + filter: getCrossPlatformPathRegex(String.raw`/next/dist/server/require\.js$`, { escape: false }), }, - }; + async ({ contents }) => { + if (/function requirePage\(/.test(contents)) { + return patchCode(contents, await getRule(buildOpts)); + } + } + ); } async function getRule(buildOpts: BuildOptions) { diff --git a/packages/cloudflare/src/cli/build/patches/plugins/require.ts b/packages/cloudflare/src/cli/build/patches/plugins/require.ts index f93bec38..b7114586 100644 --- a/packages/cloudflare/src/cli/build/patches/plugins/require.ts +++ b/packages/cloudflare/src/cli/build/patches/plugins/require.ts @@ -1,54 +1,44 @@ -import fs from "node:fs/promises"; +import type { ContentUpdater } from "./content-updater"; -import type { PluginBuild } from "esbuild"; +export function fixRequire(updater: ContentUpdater) { + return updater.updateContent("fix-require", { filter: /\.(js|mjs|cjs|jsx|ts|tsx)$/ }, ({ contents }) => { + // `eval(...)` is not supported by workerd. + contents = contents.replaceAll(`eval("require")`, "require"); -export function fixRequire() { - return { - name: "fix-require", + // `@opentelemetry` has a few issues. + // + // Next.js has the following code in `next/dist/server/lib/trace/tracer.js`: + // + // try { + // api = require('@opentelemetry/api'); + // } catch (err) { + // api = require('next/dist/compiled/@opentelemetry/api'); + // } + // + // The intent is to allow users to install their own version of `@opentelemetry/api`. + // + // The problem is that even when users do not explicitely install `@opentelemetry/api`, + // `require('@opentelemetry/api')` resolves to the package which is a dependency + // of Next. + // + // The second problem is that when Next traces files, it would not copy the `api/build/esm` + // folder (used by the `module` conditions in package.json) it would only copy `api/build/src`. + // This could be solved by updating the next config: + // + // const nextConfig: NextConfig = { + // // ... + // outputFileTracingIncludes: { + // "*": ["./node_modules/@opentelemetry/api/build/**/*"], + // }, + // }; + // + // We can consider doing that when we want to enable users to install their own version + // of `@opentelemetry/api`. For now we simply use the pre-compiled version. + contents = contents.replace( + /require\(.@opentelemetry\/api.\)/g, + `require("next/dist/compiled/@opentelemetry/api")` + ); - setup: async (build: PluginBuild) => { - build.onLoad({ filter: /\.(js|mjs|cjs|jsx|ts|tsx)$/ }, async ({ path }) => { - let contents = await fs.readFile(path, "utf-8"); - - // `eval(...)` is not supported by workerd. - contents = contents.replaceAll(`eval("require")`, "require"); - - // `@opentelemetry` has a few issues. - // - // Next.js has the following code in `next/dist/server/lib/trace/tracer.js`: - // - // try { - // api = require('@opentelemetry/api'); - // } catch (err) { - // api = require('next/dist/compiled/@opentelemetry/api'); - // } - // - // The intent is to allow users to install their own version of `@opentelemetry/api`. - // - // The problem is that even when users do not explicitely install `@opentelemetry/api`, - // `require('@opentelemetry/api')` resolves to the package which is a dependency - // of Next. - // - // The second problem is that when Next traces files, it would not copy the `api/build/esm` - // folder (used by the `module` conditions in package.json) it would only copy `api/build/src`. - // This could be solved by updating the next config: - // - // const nextConfig: NextConfig = { - // // ... - // outputFileTracingIncludes: { - // "*": ["./node_modules/@opentelemetry/api/build/**/*"], - // }, - // }; - // - // We can consider doing that when we want to enable users to install their own version - // of `@opentelemetry/api`. For now we simply use the pre-compiled version. - contents = contents.replace( - /require\(.@opentelemetry\/api.\)/g, - `require("next/dist/compiled/@opentelemetry/api")` - ); - - return { contents }; - }); - }, - }; + return contents; + }); } diff --git a/packages/cloudflare/src/cli/build/patches/to-investigate/index.ts b/packages/cloudflare/src/cli/build/patches/to-investigate/index.ts index 80e832a3..a98f9172 100644 --- a/packages/cloudflare/src/cli/build/patches/to-investigate/index.ts +++ b/packages/cloudflare/src/cli/build/patches/to-investigate/index.ts @@ -2,5 +2,4 @@ export * from "./inline-eval-manifest.js"; export * from "./inline-middleware-manifest-require.js"; export * from "./patch-exception-bubbling.js"; export * from "./patch-find-dir.js"; -export * from "./patch-load-instrumentation-module.js"; export * from "./patch-read-file.js"; diff --git a/packages/cloudflare/src/cli/build/patches/to-investigate/patch-load-instrumentation-module.ts b/packages/cloudflare/src/cli/build/patches/to-investigate/patch-load-instrumentation-module.ts deleted file mode 100644 index d3eae38b..00000000 --- a/packages/cloudflare/src/cli/build/patches/to-investigate/patch-load-instrumentation-module.ts +++ /dev/null @@ -1,38 +0,0 @@ -import * as ts from "ts-morph"; - -import { tsParseFile } from "../../utils/index.js"; - -/** - * The `loadInstrumentationModule` method (source: https://github.com/vercel/next.js/blob/5b7833e3/packages/next/src/server/next-server.ts#L301) - * calls `module.findSourceMap` (https://nodejs.org/api/module.html#modulefindsourcemappath) which we haven't implemented causing a runtime error. - * - * To solve this issue this function gets all the `loadInstrumentationModule` declarations found in the file and removes all the statements - * from their bodies (making them no-op methods). - * - * Instrumentation is a Next.js feature for monitoring and logging (see: https://nextjs.org/docs/app/building-your-application/optimizing/instrumentation), - * the removal of this method's logic most likely breaks this feature (see: https://nextjs.org/docs/app/api-reference/file-conventions/instrumentation), - * so this function is likely temporary and something that we'll have to fix in the future. - * - * TODO: investigate and re-enable instrumentation (https://github.com/opennextjs/opennextjs-cloudflare/issues/171) - */ -export function patchLoadInstrumentationModule(code: string) { - const file = tsParseFile(code); - const loadInstrumentationModuleDeclarations = file - .getDescendantsOfKind(ts.SyntaxKind.MethodDeclaration) - .filter((methodDeclaration) => { - if (methodDeclaration.getName() !== "loadInstrumentationModule") { - return false; - } - const methodModifierKinds = methodDeclaration.getModifiers().map((modifier) => modifier.getKind()); - if (methodModifierKinds.length !== 1 || methodModifierKinds[0] !== ts.SyntaxKind.AsyncKeyword) { - return false; - } - - return true; - }); - - loadInstrumentationModuleDeclarations.forEach((loadInstrumentationModuleDeclaration) => { - loadInstrumentationModuleDeclaration.setBodyText(""); - }); - return file.print(); -} diff --git a/packages/cloudflare/src/cli/build/utils/index.ts b/packages/cloudflare/src/cli/build/utils/index.ts index 6b4f970c..5b9a28fd 100644 --- a/packages/cloudflare/src/cli/build/utils/index.ts +++ b/packages/cloudflare/src/cli/build/utils/index.ts @@ -3,4 +3,3 @@ export * from "./create-config-files.js"; export * from "./ensure-cf-config.js"; export * from "./extract-project-env-vars.js"; export * from "./normalize-path.js"; -export * from "./ts-parse-file.js"; diff --git a/packages/cloudflare/src/cli/build/utils/ts-parse-file.ts b/packages/cloudflare/src/cli/build/utils/ts-parse-file.ts deleted file mode 100644 index e0c3d93f..00000000 --- a/packages/cloudflare/src/cli/build/utils/ts-parse-file.ts +++ /dev/null @@ -1,15 +0,0 @@ -import * as ts from "ts-morph"; - -/** - * Parses a javascript file using ts-morph. - * - * @param fileContent the content of the file to parse - * @returns the parsed result - */ -export function tsParseFile(fileContent: string): ts.SourceFile { - const project = new ts.Project(); - - const sourceFile = project.createSourceFile("file.js", fileContent); - - return sourceFile; -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 88d3dc88..4698c21f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -69,9 +69,6 @@ catalogs: rimraf: specifier: ^6.0.1 version: 6.0.1 - ts-morph: - specifier: ^23.0.0 - version: 23.0.0 tsx: specifier: ^4.19.2 version: 4.19.2 @@ -85,8 +82,8 @@ catalogs: specifier: ^2.1.1 version: 2.1.1 wrangler: - specifier: ^3.107.0 - version: 3.107.0 + specifier: ^3.107.3 + version: 3.107.3 e2e: '@types/node': specifier: 20.17.6 @@ -171,7 +168,7 @@ importers: version: 22.2.0 wrangler: specifier: 'catalog:' - version: 3.107.0(@cloudflare/workers-types@4.20250109.0) + version: 3.107.3(@cloudflare/workers-types@4.20250109.0) examples/bugs/gh-119: dependencies: @@ -217,7 +214,7 @@ importers: version: 5.7.3 wrangler: specifier: 'catalog:' - version: 3.107.0(@cloudflare/workers-types@4.20250109.0) + version: 3.107.3(@cloudflare/workers-types@4.20250109.0) examples/bugs/gh-219: dependencies: @@ -347,7 +344,7 @@ importers: version: 39.4.2(rollup@4.21.0) wrangler: specifier: 'catalog:' - version: 3.107.0(@cloudflare/workers-types@4.20250109.0) + version: 3.107.3(@cloudflare/workers-types@4.20250109.0) examples/bugs/gh-223: dependencies: @@ -448,7 +445,7 @@ importers: version: 5.7.3 wrangler: specifier: 'catalog:' - version: 3.107.0(@cloudflare/workers-types@4.20250109.0) + version: 3.107.3(@cloudflare/workers-types@4.20250109.0) examples/e2e/app-pages-router: dependencies: @@ -494,7 +491,7 @@ importers: version: 5.7.3 wrangler: specifier: 'catalog:' - version: 3.107.0(@cloudflare/workers-types@4.20250109.0) + version: 3.107.3(@cloudflare/workers-types@4.20250109.0) examples/e2e/app-router: dependencies: @@ -540,7 +537,7 @@ importers: version: 5.7.3 wrangler: specifier: 'catalog:' - version: 3.107.0(@cloudflare/workers-types@4.20250109.0) + version: 3.107.3(@cloudflare/workers-types@4.20250109.0) examples/e2e/pages-router: dependencies: @@ -586,7 +583,7 @@ importers: version: 5.7.3 wrangler: specifier: 'catalog:' - version: 3.107.0(@cloudflare/workers-types@4.20250109.0) + version: 3.107.3(@cloudflare/workers-types@4.20250109.0) examples/e2e/shared: dependencies: @@ -645,7 +642,7 @@ importers: version: 5.7.3 wrangler: specifier: 'catalog:' - version: 3.107.0(@cloudflare/workers-types@4.20250109.0) + version: 3.107.3(@cloudflare/workers-types@4.20250109.0) examples/next-partial-prerendering: dependencies: @@ -706,7 +703,7 @@ importers: version: 5.5.3 wrangler: specifier: 'catalog:' - version: 3.107.0(@cloudflare/workers-types@4.20250109.0) + version: 3.107.3(@cloudflare/workers-types@4.20250109.0) examples/vercel-blog-starter: dependencies: @@ -761,7 +758,7 @@ importers: version: 5.7.3 wrangler: specifier: 'catalog:' - version: 3.107.0(@cloudflare/workers-types@4.20250109.0) + version: 3.107.3(@cloudflare/workers-types@4.20250109.0) examples/vercel-commerce: dependencies: @@ -828,7 +825,7 @@ importers: version: 5.7.3 wrangler: specifier: 'catalog:' - version: 3.107.0(@cloudflare/workers-types@4.20250109.0) + version: 3.107.3(@cloudflare/workers-types@4.20250109.0) packages/cloudflare: dependencies: @@ -847,12 +844,9 @@ importers: glob: specifier: 'catalog:' version: 11.0.0 - ts-morph: - specifier: 'catalog:' - version: 23.0.0 wrangler: specifier: 'catalog:' - version: 3.107.0(@cloudflare/workers-types@4.20250109.0) + version: 3.107.3(@cloudflare/workers-types@4.20250109.0) yaml: specifier: ^2.7.0 version: 2.7.0 @@ -1502,30 +1496,60 @@ packages: cpu: [x64] os: [darwin] + '@cloudflare/workerd-darwin-64@1.20250129.0': + resolution: {integrity: sha512-M+xETVnl+xy2dfDDWmp0XXr2rttl70a6bljQygl0EmYmNswFTcYbQWCaBuNBo9kabU59rLKr4a/b3QZ07NoL/g==} + engines: {node: '>=16'} + cpu: [x64] + os: [darwin] + '@cloudflare/workerd-darwin-arm64@1.20250124.0': resolution: {integrity: sha512-lVxf6qIfmJ5rS6rmGKV7lt6ApY6nhD4kAQTK4vKYm/npk2sXod6LASIY0U4WBCwy4N+S75a8hP2QtmQf+KV3Iw==} engines: {node: '>=16'} cpu: [arm64] os: [darwin] + '@cloudflare/workerd-darwin-arm64@1.20250129.0': + resolution: {integrity: sha512-c4PQUyIMp+bCMxZkAMBzXgTHjRZxeYCujDbb3staestqgRbenzcfauXsMd6np35ng+EE1uBgHNPV4+7fC0ZBfg==} + engines: {node: '>=16'} + cpu: [arm64] + os: [darwin] + '@cloudflare/workerd-linux-64@1.20250124.0': resolution: {integrity: sha512-5S4GzN08vW/CfzaM1rVAkRhPPSDX1O1t7u0pj+xdbGl4GcazBzE4ZLre+y9OMplZ9PBCkxXkRWqHXzabWA1x4A==} engines: {node: '>=16'} cpu: [x64] os: [linux] + '@cloudflare/workerd-linux-64@1.20250129.0': + resolution: {integrity: sha512-xJx8LwWFxsm5U3DETJwRuOmT5RWBqm4FmA4itYXvcEICca9pWJDB641kT4PnpypwDNmYOebhU7A+JUrCRucG0w==} + engines: {node: '>=16'} + cpu: [x64] + os: [linux] + '@cloudflare/workerd-linux-arm64@1.20250124.0': resolution: {integrity: sha512-CHSYnutDfXgUWL9WcP0GbzIb5OyC9RZVCJGhKbDTQy6/uH7AivNcLzXtOhNdqetKjERmOxUbL9Us7vcMQLztog==} engines: {node: '>=16'} cpu: [arm64] os: [linux] + '@cloudflare/workerd-linux-arm64@1.20250129.0': + resolution: {integrity: sha512-dR//npbaX5p323huBVNIy5gaWubQx6CC3aiXeK0yX4aD5ar8AjxQFb2U/Sgjeo65Rkt53hJWqC7IwRpK/eOxrA==} + engines: {node: '>=16'} + cpu: [arm64] + os: [linux] + '@cloudflare/workerd-windows-64@1.20250124.0': resolution: {integrity: sha512-5TunEy5x4pNUQ10Z47qP5iF6m3X9uB2ZScKDLkNaWtbQ7EcMCapOWzuynVkTKIMBgDeKw6DAB8nbbkybPyMS9w==} engines: {node: '>=16'} cpu: [x64] os: [win32] + '@cloudflare/workerd-windows-64@1.20250129.0': + resolution: {integrity: sha512-OeO+1nPj/ocAE3adFar/tRFGRkbCrBnrOYXq0FUBSpyNHpDdA9/U3PAw5CN4zvjfTnqXZfTxTFeqoruqzRzbtg==} + engines: {node: '>=16'} + cpu: [x64] + os: [win32] + '@cloudflare/workers-types@4.20250109.0': resolution: {integrity: sha512-Y1zgSaEOOevl9ORpzgMcm4j535p3nK2lrblHHvYM2yxR50SBKGh+wvkRFAIxWRfjUGZEU+Fp6923EGioDBbobA==} @@ -4420,9 +4444,6 @@ packages: '@ts-morph/common@0.11.1': resolution: {integrity: sha512-7hWZS0NRpEsNV8vWJzg7FEz6V8MaLNeJOmwmghqUXTpzk16V1LLZhdo+4QvE/+zv4cVci0OviuJFnqhEfoV3+g==} - '@ts-morph/common@0.24.0': - resolution: {integrity: sha512-c1xMmNHWpNselmpIqursHeOHHBTIsJLbB+NuovbTTRCNiTLEr/U9dbJ8qy0jd/O2x5pc3seWuOUN5R2IoOTp8A==} - '@tsconfig/node10@1.0.11': resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} @@ -5148,9 +5169,6 @@ packages: code-block-writer@10.1.1: resolution: {integrity: sha512-67ueh2IRGst/51p0n6FvPrnRjAGHY5F8xdjkgrYE7DDzpJe6qA07RYQ9VcoUeo5ATOjSOiWpSL3SWBRRbempMw==} - code-block-writer@13.0.2: - resolution: {integrity: sha512-XfXzAGiStXSmCIwrkdfvc7FS5Dtj8yelCtyOf2p2skCAfvLd6zu0rGzuS9NSCO3bq1JKpFZ7tbKdKlcd5occQA==} - color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -7268,6 +7286,11 @@ packages: engines: {node: '>=16.13'} hasBin: true + miniflare@3.20250129.0: + resolution: {integrity: sha512-qYlGEjMl/2kJdgNaztj4hpA64d6Dl79Lx/NL61p/v5XZRiWanBOTgkQqdPxCKZOj6KQnioqhC7lfd6jDXKSs2A==} + engines: {node: '>=16.13'} + hasBin: true + minimatch@10.0.1: resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} engines: {node: 20 || >=22} @@ -8868,9 +8891,6 @@ packages: ts-morph@12.0.0: resolution: {integrity: sha512-VHC8XgU2fFW7yO1f/b3mxKDje1vmyzFXHWzOYmKEkCEwcLjDtbdLgBQviqj4ZwP4MJkQtRo6Ha2I29lq/B+VxA==} - ts-morph@23.0.0: - resolution: {integrity: sha512-FcvFx7a9E8TUe6T3ShihXJLiJOiqyafzFKUO4aqIHDUCIvADdGNShcbc2W5PMr3LerXRv7mafvFZ9lRENxJmug==} - ts-node@10.9.1: resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true @@ -9275,6 +9295,11 @@ packages: engines: {node: '>=16'} hasBin: true + workerd@1.20250129.0: + resolution: {integrity: sha512-Rprz8rxKTF4l6q/nYYI07lBetJnR19mGipx+u/a27GZOPKMG5SLIzA2NciZlJaB2Qd5YY+4p/eHOeKqo5keVWA==} + engines: {node: '>=16'} + hasBin: true + wrangler@3.107.0: resolution: {integrity: sha512-Rb/fFZDHSiGNQte13Mem0O7oGKs77MfodImB3WbBD+xS0S/fxMYMwuVzkNlOGLBYYnwKx2V2/k8GpK5dJsRLhQ==} engines: {node: '>=16.17.0'} @@ -9286,6 +9311,16 @@ packages: '@cloudflare/workers-types': optional: true + wrangler@3.107.3: + resolution: {integrity: sha512-N9ZMDHZ+DI5/B0yclr3bG57U/Zw7wSzGdpO2l7j6+3q8yUf+4Fk0Rvneo2t8rjLewKlvqgt9D9siFuo8MXJ55Q==} + engines: {node: '>=16.17.0'} + hasBin: true + peerDependencies: + '@cloudflare/workers-types': ^4.20250129.0 + peerDependenciesMeta: + '@cloudflare/workers-types': + optional: true + wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -11030,18 +11065,33 @@ snapshots: '@cloudflare/workerd-darwin-64@1.20250124.0': optional: true + '@cloudflare/workerd-darwin-64@1.20250129.0': + optional: true + '@cloudflare/workerd-darwin-arm64@1.20250124.0': optional: true + '@cloudflare/workerd-darwin-arm64@1.20250129.0': + optional: true + '@cloudflare/workerd-linux-64@1.20250124.0': optional: true + '@cloudflare/workerd-linux-64@1.20250129.0': + optional: true + '@cloudflare/workerd-linux-arm64@1.20250124.0': optional: true + '@cloudflare/workerd-linux-arm64@1.20250129.0': + optional: true + '@cloudflare/workerd-windows-64@1.20250124.0': optional: true + '@cloudflare/workerd-windows-64@1.20250129.0': + optional: true + '@cloudflare/workers-types@4.20250109.0': {} '@cspotcode/source-map-support@0.8.1': @@ -13845,13 +13895,6 @@ snapshots: mkdirp: 1.0.4 path-browserify: 1.0.1 - '@ts-morph/common@0.24.0': - dependencies: - fast-glob: 3.3.2 - minimatch: 9.0.5 - mkdirp: 3.0.1 - path-browserify: 1.0.1 - '@tsconfig/node10@1.0.11': {} '@tsconfig/node12@1.0.11': {} @@ -14867,8 +14910,6 @@ snapshots: code-block-writer@10.1.1: {} - code-block-writer@13.0.2: {} - color-convert@1.9.3: dependencies: color-name: 1.1.3 @@ -15713,8 +15754,8 @@ snapshots: '@typescript-eslint/parser': 8.7.0(eslint@8.57.1)(typescript@5.7.3) eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.30.0)(eslint@8.57.1) - eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1))(eslint@8.57.1) + eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) eslint-plugin-jsx-a11y: 6.10.0(eslint@8.57.1) eslint-plugin-react: 7.36.1(eslint@8.57.1) eslint-plugin-react-hooks: 4.6.2(eslint@8.57.1) @@ -15733,7 +15774,7 @@ snapshots: '@typescript-eslint/parser': 8.7.0(eslint@8.57.1)(typescript@5.7.3) eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@8.57.1) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1))(eslint@8.57.1) eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) eslint-plugin-jsx-a11y: 6.10.0(eslint@8.57.1) eslint-plugin-react: 7.36.1(eslint@8.57.1) @@ -15753,7 +15794,7 @@ snapshots: '@typescript-eslint/parser': 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3) eslint: 9.11.1(jiti@1.21.6) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.11.1(jiti@1.21.6)) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint@9.11.1(jiti@1.21.6)))(eslint@9.11.1(jiti@1.21.6)) eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.11.1(jiti@1.21.6)) eslint-plugin-jsx-a11y: 6.10.0(eslint@9.11.1(jiti@1.21.6)) eslint-plugin-react: 7.37.4(eslint@9.11.1(jiti@1.21.6)) @@ -15773,7 +15814,7 @@ snapshots: '@typescript-eslint/parser': 8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3) eslint: 9.19.0(jiti@1.21.6) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.19.0(jiti@1.21.6)) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint@9.19.0(jiti@1.21.6)))(eslint@9.19.0(jiti@1.21.6)) eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.19.0(jiti@1.21.6)) eslint-plugin-jsx-a11y: 6.10.0(eslint@9.19.0(jiti@1.21.6)) eslint-plugin-react: 7.37.4(eslint@9.19.0(jiti@1.21.6)) @@ -15793,32 +15834,32 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.30.0)(eslint@8.57.1): + eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1))(eslint@8.57.1): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.3.6 enhanced-resolve: 5.17.1 eslint: 8.57.1 - eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) + eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) fast-glob: 3.3.2 get-tsconfig: 4.8.0 is-bun-module: 1.2.1 is-glob: 4.0.3 optionalDependencies: - eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) + eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) transitivePeerDependencies: - '@typescript-eslint/parser' - eslint-import-resolver-node - eslint-import-resolver-webpack - supports-color - eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@8.57.1): + eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1))(eslint@8.57.1): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.3.6 enhanced-resolve: 5.17.1 eslint: 8.57.1 - eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) + eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) fast-glob: 3.3.2 get-tsconfig: 4.8.0 is-bun-module: 1.2.1 @@ -15831,13 +15872,13 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.11.1(jiti@1.21.6)): + eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint@9.11.1(jiti@1.21.6)))(eslint@9.11.1(jiti@1.21.6)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.3.6 enhanced-resolve: 5.17.1 eslint: 9.11.1(jiti@1.21.6) - eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.11.1(jiti@1.21.6)) + eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint@9.11.1(jiti@1.21.6)))(eslint@9.11.1(jiti@1.21.6)))(eslint@9.11.1(jiti@1.21.6)) fast-glob: 3.3.2 get-tsconfig: 4.8.0 is-bun-module: 1.2.1 @@ -15850,13 +15891,13 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.19.0(jiti@1.21.6)): + eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint@9.19.0(jiti@1.21.6)))(eslint@9.19.0(jiti@1.21.6)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.3.6 enhanced-resolve: 5.17.1 eslint: 9.19.0(jiti@1.21.6) - eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.19.0(jiti@1.21.6)) + eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint@9.19.0(jiti@1.21.6)))(eslint@9.19.0(jiti@1.21.6)))(eslint@9.19.0(jiti@1.21.6)) fast-glob: 3.3.2 get-tsconfig: 4.8.0 is-bun-module: 1.2.1 @@ -15869,73 +15910,84 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.11.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1): + eslint-module-utils@2.11.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.7.0(eslint@8.57.1)(typescript@5.7.3) eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@8.57.1) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1))(eslint@8.57.1) transitivePeerDependencies: - supports-color - eslint-module-utils@2.11.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.11.1(jiti@1.21.6)): + eslint-module-utils@2.11.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1): + dependencies: + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 8.7.0(eslint@8.57.1)(typescript@5.7.3) + eslint: 8.57.1 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1))(eslint@8.57.1) + transitivePeerDependencies: + - supports-color + + eslint-module-utils@2.11.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint@9.11.1(jiti@1.21.6)))(eslint@9.11.1(jiti@1.21.6)))(eslint@9.11.1(jiti@1.21.6)): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3) eslint: 9.11.1(jiti@1.21.6) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.11.1(jiti@1.21.6)) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint@9.11.1(jiti@1.21.6)))(eslint@9.11.1(jiti@1.21.6)) transitivePeerDependencies: - supports-color - eslint-module-utils@2.11.0(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.19.0(jiti@1.21.6)): + eslint-module-utils@2.11.0(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint@9.19.0(jiti@1.21.6)))(eslint@9.19.0(jiti@1.21.6)))(eslint@9.19.0(jiti@1.21.6)): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3) eslint: 9.19.0(jiti@1.21.6) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.19.0(jiti@1.21.6)) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint@9.19.0(jiti@1.21.6)))(eslint@9.19.0(jiti@1.21.6)) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.7.0(eslint@8.57.1)(typescript@5.7.3) eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@8.57.1) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1))(eslint@8.57.1) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.11.1(jiti@1.21.6)): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint@9.11.1(jiti@1.21.6)))(eslint@9.11.1(jiti@1.21.6)))(eslint@9.11.1(jiti@1.21.6)): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3) eslint: 9.11.1(jiti@1.21.6) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.11.1(jiti@1.21.6)) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint@9.11.1(jiti@1.21.6)))(eslint@9.11.1(jiti@1.21.6)) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.19.0(jiti@1.21.6)): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint@9.19.0(jiti@1.21.6)))(eslint@9.19.0(jiti@1.21.6)))(eslint@9.19.0(jiti@1.21.6)): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3) eslint: 9.19.0(jiti@1.21.6) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.19.0(jiti@1.21.6)) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint@9.19.0(jiti@1.21.6)))(eslint@9.19.0(jiti@1.21.6)) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1): + eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -15946,7 +15998,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) + eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -15974,7 +16026,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -16003,7 +16055,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.11.1(jiti@1.21.6) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.11.1(jiti@1.21.6)) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint@9.11.1(jiti@1.21.6)))(eslint@9.11.1(jiti@1.21.6)))(eslint@9.11.1(jiti@1.21.6)) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -16032,7 +16084,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.19.0(jiti@1.21.6) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.19.0(jiti@1.21.6)) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint@9.19.0(jiti@1.21.6)))(eslint@9.19.0(jiti@1.21.6)))(eslint@9.19.0(jiti@1.21.6)) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -17854,6 +17906,23 @@ snapshots: - bufferutil - utf-8-validate + miniflare@3.20250129.0: + dependencies: + '@cspotcode/source-map-support': 0.8.1 + acorn: 8.14.0 + acorn-walk: 8.3.3 + exit-hook: 2.2.1 + glob-to-regexp: 0.4.1 + stoppable: 1.1.0 + undici: 5.28.4 + workerd: 1.20250129.0 + ws: 8.18.0 + youch: 3.3.3 + zod: 3.24.1 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + minimatch@10.0.1: dependencies: brace-expansion: 2.0.1 @@ -19772,11 +19841,6 @@ snapshots: '@ts-morph/common': 0.11.1 code-block-writer: 10.1.1 - ts-morph@23.0.0: - dependencies: - '@ts-morph/common': 0.24.0 - code-block-writer: 13.0.2 - ts-node@10.9.1(@types/node@16.18.11)(typescript@4.9.5): dependencies: '@cspotcode/source-map-support': 0.8.1 @@ -20338,6 +20402,14 @@ snapshots: '@cloudflare/workerd-linux-arm64': 1.20250124.0 '@cloudflare/workerd-windows-64': 1.20250124.0 + workerd@1.20250129.0: + optionalDependencies: + '@cloudflare/workerd-darwin-64': 1.20250129.0 + '@cloudflare/workerd-darwin-arm64': 1.20250129.0 + '@cloudflare/workerd-linux-64': 1.20250129.0 + '@cloudflare/workerd-linux-arm64': 1.20250129.0 + '@cloudflare/workerd-windows-64': 1.20250129.0 + wrangler@3.107.0(@cloudflare/workers-types@4.20250109.0): dependencies: '@cloudflare/kv-asset-handler': 0.3.4 @@ -20357,6 +20429,24 @@ snapshots: - bufferutil - utf-8-validate + wrangler@3.107.3(@cloudflare/workers-types@4.20250109.0): + dependencies: + '@cloudflare/kv-asset-handler': 0.3.4 + '@esbuild-plugins/node-globals-polyfill': 0.2.3(esbuild@0.17.19) + '@esbuild-plugins/node-modules-polyfill': 0.2.2(esbuild@0.17.19) + blake3-wasm: 2.1.5 + esbuild: 0.17.19 + miniflare: 3.20250129.0 + path-to-regexp: 6.3.0 + unenv: 2.0.0-rc.1 + workerd: 1.20250129.0 + optionalDependencies: + '@cloudflare/workers-types': 4.20250109.0 + fsevents: 2.3.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index d88e4e31..28a0cb6b 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -29,13 +29,11 @@ catalog: react-dom: ^18 react: ^18 rimraf: ^6.0.1 - ts-morph: ^23.0.0 - tsup: ^8.2.4 tsx: ^4.19.2 typescript-eslint: ^8.7.0 typescript: ^5.7.3 vitest: ^2.1.1 - wrangler: ^3.107.0 + wrangler: ^3.107.3 # e2e tests catalogs: