diff --git a/.changeset/cold-numbers-bow.md b/.changeset/cold-numbers-bow.md new file mode 100644 index 000000000..95c50b385 --- /dev/null +++ b/.changeset/cold-numbers-bow.md @@ -0,0 +1,20 @@ +--- +"@opennextjs/cloudflare": patch +--- + +add `defineCloudflareConfig` utility + +this change adds a new `defineCloudflareConfig` utility that developers can use in their `open-next.config.ts` +file to easily generate a configuration compatible with the adapter + +Example usage: + +```ts +// open-next.config.ts +import { defineCloudflareConfig } from "@opennextjs/cloudflare"; +import kvIncrementalCache from "@opennextjs/cloudflare/kv-cache"; + +export default defineCloudflareConfig({ + incrementalCache: kvIncrementalCache, +}); +``` diff --git a/examples/bugs/gh-119/open-next.config.ts b/examples/bugs/gh-119/open-next.config.ts index d976688e6..ffd988785 100644 --- a/examples/bugs/gh-119/open-next.config.ts +++ b/examples/bugs/gh-119/open-next.config.ts @@ -1,25 +1,3 @@ -import type { OpenNextConfig } from "@opennextjs/aws/types/open-next.js"; +import { defineCloudflareConfig } from "@opennextjs/cloudflare"; -const config: OpenNextConfig = { - default: { - override: { - wrapper: "cloudflare-node", - converter: "edge", - // Unused implementation - incrementalCache: "dummy", - tagCache: "dummy", - queue: "dummy", - }, - }, - - middleware: { - external: true, - override: { - wrapper: "cloudflare-edge", - converter: "edge", - proxyExternalRequest: "fetch", - }, - }, -}; - -export default config; +export default defineCloudflareConfig(); diff --git a/examples/bugs/gh-219/open-next.config.ts b/examples/bugs/gh-219/open-next.config.ts index d976688e6..ffd988785 100644 --- a/examples/bugs/gh-219/open-next.config.ts +++ b/examples/bugs/gh-219/open-next.config.ts @@ -1,25 +1,3 @@ -import type { OpenNextConfig } from "@opennextjs/aws/types/open-next.js"; +import { defineCloudflareConfig } from "@opennextjs/cloudflare"; -const config: OpenNextConfig = { - default: { - override: { - wrapper: "cloudflare-node", - converter: "edge", - // Unused implementation - incrementalCache: "dummy", - tagCache: "dummy", - queue: "dummy", - }, - }, - - middleware: { - external: true, - override: { - wrapper: "cloudflare-edge", - converter: "edge", - proxyExternalRequest: "fetch", - }, - }, -}; - -export default config; +export default defineCloudflareConfig(); diff --git a/examples/bugs/gh-223/open-next.config.ts b/examples/bugs/gh-223/open-next.config.ts index 360c2da7d..ffd988785 100644 --- a/examples/bugs/gh-223/open-next.config.ts +++ b/examples/bugs/gh-223/open-next.config.ts @@ -1,24 +1,3 @@ -import type { OpenNextConfig } from "@opennextjs/aws/types/open-next"; +import { defineCloudflareConfig } from "@opennextjs/cloudflare"; -const config: OpenNextConfig = { - default: { - override: { - wrapper: "cloudflare-node", - converter: "edge", - incrementalCache: "dummy", - tagCache: "dummy", - queue: "dummy", - }, - }, - - middleware: { - external: true, - override: { - wrapper: "cloudflare-edge", - converter: "edge", - proxyExternalRequest: "fetch", - }, - }, -}; - -export default config; +export default defineCloudflareConfig(); diff --git a/examples/create-next-app/open-next.config.ts b/examples/create-next-app/open-next.config.ts index d976688e6..ffd988785 100644 --- a/examples/create-next-app/open-next.config.ts +++ b/examples/create-next-app/open-next.config.ts @@ -1,25 +1,3 @@ -import type { OpenNextConfig } from "@opennextjs/aws/types/open-next.js"; +import { defineCloudflareConfig } from "@opennextjs/cloudflare"; -const config: OpenNextConfig = { - default: { - override: { - wrapper: "cloudflare-node", - converter: "edge", - // Unused implementation - incrementalCache: "dummy", - tagCache: "dummy", - queue: "dummy", - }, - }, - - middleware: { - external: true, - override: { - wrapper: "cloudflare-edge", - converter: "edge", - proxyExternalRequest: "fetch", - }, - }, -}; - -export default config; +export default defineCloudflareConfig(); diff --git a/examples/e2e/app-pages-router/open-next.config.ts b/examples/e2e/app-pages-router/open-next.config.ts index b8671cf5a..992d7fc80 100644 --- a/examples/e2e/app-pages-router/open-next.config.ts +++ b/examples/e2e/app-pages-router/open-next.config.ts @@ -1,27 +1,8 @@ -import type { OpenNextConfig } from "@opennextjs/aws/types/open-next.js"; -import kvCache from "@opennextjs/cloudflare/kv-cache"; +import { defineCloudflareConfig } from "@opennextjs/cloudflare"; +import kvIncrementalCache from "@opennextjs/cloudflare/kv-cache"; import memoryQueue from "@opennextjs/cloudflare/memory-queue"; -const config: OpenNextConfig = { - default: { - override: { - wrapper: "cloudflare-node", - converter: "edge", - incrementalCache: () => kvCache, - queue: () => memoryQueue, - // Unused implementation - tagCache: "dummy", - }, - }, - - middleware: { - external: true, - override: { - wrapper: "cloudflare-edge", - converter: "edge", - proxyExternalRequest: "fetch", - }, - }, -}; - -export default config; +export default defineCloudflareConfig({ + incrementalCache: kvIncrementalCache, + queue: memoryQueue, +}); diff --git a/examples/e2e/app-router/open-next.config.ts b/examples/e2e/app-router/open-next.config.ts index df13dfc7f..00db54284 100644 --- a/examples/e2e/app-router/open-next.config.ts +++ b/examples/e2e/app-router/open-next.config.ts @@ -1,27 +1,10 @@ -import type { OpenNextConfig } from "@opennextjs/aws/types/open-next.js"; -import tagCache from "@opennextjs/cloudflare/d1-tag-cache"; -import incrementalCache from "@opennextjs/cloudflare/kv-cache"; +import { defineCloudflareConfig } from "@opennextjs/cloudflare"; +import d1TagCache from "@opennextjs/cloudflare/d1-tag-cache"; +import kvIncrementalCache from "@opennextjs/cloudflare/kv-cache"; import memoryQueue from "@opennextjs/cloudflare/memory-queue"; -const config: OpenNextConfig = { - default: { - override: { - wrapper: "cloudflare-node", - converter: "edge", - incrementalCache: async () => incrementalCache, - tagCache: () => tagCache, - queue: () => memoryQueue, - }, - }, - - middleware: { - external: true, - override: { - wrapper: "cloudflare-edge", - converter: "edge", - proxyExternalRequest: "fetch", - }, - }, -}; - -export default config; +export default defineCloudflareConfig({ + incrementalCache: kvIncrementalCache, + tagCache: d1TagCache, + queue: memoryQueue, +}); diff --git a/examples/e2e/pages-router/open-next.config.ts b/examples/e2e/pages-router/open-next.config.ts index b8671cf5a..992d7fc80 100644 --- a/examples/e2e/pages-router/open-next.config.ts +++ b/examples/e2e/pages-router/open-next.config.ts @@ -1,27 +1,8 @@ -import type { OpenNextConfig } from "@opennextjs/aws/types/open-next.js"; -import kvCache from "@opennextjs/cloudflare/kv-cache"; +import { defineCloudflareConfig } from "@opennextjs/cloudflare"; +import kvIncrementalCache from "@opennextjs/cloudflare/kv-cache"; import memoryQueue from "@opennextjs/cloudflare/memory-queue"; -const config: OpenNextConfig = { - default: { - override: { - wrapper: "cloudflare-node", - converter: "edge", - incrementalCache: () => kvCache, - queue: () => memoryQueue, - // Unused implementation - tagCache: "dummy", - }, - }, - - middleware: { - external: true, - override: { - wrapper: "cloudflare-edge", - converter: "edge", - proxyExternalRequest: "fetch", - }, - }, -}; - -export default config; +export default defineCloudflareConfig({ + incrementalCache: kvIncrementalCache, + queue: memoryQueue, +}); diff --git a/examples/middleware/open-next.config.ts b/examples/middleware/open-next.config.ts index d976688e6..ffd988785 100644 --- a/examples/middleware/open-next.config.ts +++ b/examples/middleware/open-next.config.ts @@ -1,25 +1,3 @@ -import type { OpenNextConfig } from "@opennextjs/aws/types/open-next.js"; +import { defineCloudflareConfig } from "@opennextjs/cloudflare"; -const config: OpenNextConfig = { - default: { - override: { - wrapper: "cloudflare-node", - converter: "edge", - // Unused implementation - incrementalCache: "dummy", - tagCache: "dummy", - queue: "dummy", - }, - }, - - middleware: { - external: true, - override: { - wrapper: "cloudflare-edge", - converter: "edge", - proxyExternalRequest: "fetch", - }, - }, -}; - -export default config; +export default defineCloudflareConfig(); diff --git a/examples/next-partial-prerendering/open-next.config.ts b/examples/next-partial-prerendering/open-next.config.ts index be6fadc34..f189176e9 100644 --- a/examples/next-partial-prerendering/open-next.config.ts +++ b/examples/next-partial-prerendering/open-next.config.ts @@ -1,25 +1,3 @@ -import type { OpenNextConfig } from '@opennextjs/aws/types/open-next.js'; +import { defineCloudflareConfig } from '@opennextjs/cloudflare/config'; -const config: OpenNextConfig = { - default: { - override: { - wrapper: 'cloudflare-node', - converter: 'edge', - // Unused implementation - incrementalCache: 'dummy', - tagCache: 'dummy', - queue: 'dummy', - }, - }, - - middleware: { - external: true, - override: { - wrapper: 'cloudflare-edge', - converter: 'edge', - proxyExternalRequest: 'fetch', - }, - }, -}; - -export default config; +export default defineCloudflareConfig(); diff --git a/examples/playground14/open-next.config.ts b/examples/playground14/open-next.config.ts index ef2e20a9d..1b5ed9cea 100644 --- a/examples/playground14/open-next.config.ts +++ b/examples/playground14/open-next.config.ts @@ -1,26 +1,6 @@ -import type { OpenNextConfig } from "@opennextjs/aws/types/open-next.js"; -import cache from "@opennextjs/cloudflare/kv-cache"; +import { defineCloudflareConfig } from "@opennextjs/cloudflare"; +import kvIncrementalCache from "@opennextjs/cloudflare/kv-cache"; -const config: OpenNextConfig = { - default: { - override: { - wrapper: "cloudflare-node", - converter: "edge", - incrementalCache: async () => cache, - queue: "direct", - // Unused implementation - tagCache: "dummy", - }, - }, - - middleware: { - external: true, - override: { - wrapper: "cloudflare-edge", - converter: "edge", - proxyExternalRequest: "fetch", - }, - }, -}; - -export default config; +export default defineCloudflareConfig({ + incrementalCache: kvIncrementalCache, +}); diff --git a/examples/playground15/open-next.config.ts b/examples/playground15/open-next.config.ts index ef2e20a9d..1b5ed9cea 100644 --- a/examples/playground15/open-next.config.ts +++ b/examples/playground15/open-next.config.ts @@ -1,26 +1,6 @@ -import type { OpenNextConfig } from "@opennextjs/aws/types/open-next.js"; -import cache from "@opennextjs/cloudflare/kv-cache"; +import { defineCloudflareConfig } from "@opennextjs/cloudflare"; +import kvIncrementalCache from "@opennextjs/cloudflare/kv-cache"; -const config: OpenNextConfig = { - default: { - override: { - wrapper: "cloudflare-node", - converter: "edge", - incrementalCache: async () => cache, - queue: "direct", - // Unused implementation - tagCache: "dummy", - }, - }, - - middleware: { - external: true, - override: { - wrapper: "cloudflare-edge", - converter: "edge", - proxyExternalRequest: "fetch", - }, - }, -}; - -export default config; +export default defineCloudflareConfig({ + incrementalCache: kvIncrementalCache, +}); diff --git a/examples/ssg-app/open-next.config.ts b/examples/ssg-app/open-next.config.ts index e860ec20f..1b5ed9cea 100644 --- a/examples/ssg-app/open-next.config.ts +++ b/examples/ssg-app/open-next.config.ts @@ -1,26 +1,6 @@ -// default open-next.config.ts file created by @opennextjs/cloudflare +import { defineCloudflareConfig } from "@opennextjs/cloudflare"; +import kvIncrementalCache from "@opennextjs/cloudflare/kv-cache"; -import cache from "@opennextjs/cloudflare/kv-cache"; - -const config = { - default: { - override: { - wrapper: "cloudflare-node", - converter: "edge", - incrementalCache: async () => cache, - tagCache: "dummy", - queue: "dummy", - }, - }, - - middleware: { - external: true, - override: { - wrapper: "cloudflare-edge", - converter: "edge", - proxyExternalRequest: "fetch", - }, - }, -}; - -export default config; +export default defineCloudflareConfig({ + incrementalCache: kvIncrementalCache, +}); diff --git a/examples/vercel-blog-starter/open-next.config.ts b/examples/vercel-blog-starter/open-next.config.ts index 71d02c635..1b5ed9cea 100644 --- a/examples/vercel-blog-starter/open-next.config.ts +++ b/examples/vercel-blog-starter/open-next.config.ts @@ -1,26 +1,6 @@ -import type { OpenNextConfig } from "@opennextjs/aws/types/open-next.js"; -import cache from "@opennextjs/cloudflare/kv-cache"; +import { defineCloudflareConfig } from "@opennextjs/cloudflare"; +import kvIncrementalCache from "@opennextjs/cloudflare/kv-cache"; -const config: OpenNextConfig = { - default: { - override: { - wrapper: "cloudflare-node", - converter: "edge", - incrementalCache: async () => cache, - // Unused implementations - tagCache: "dummy", - queue: "dummy", - }, - }, - - middleware: { - external: true, - override: { - wrapper: "cloudflare-edge", - converter: "edge", - proxyExternalRequest: "fetch", - }, - }, -}; - -export default config; +export default defineCloudflareConfig({ + incrementalCache: kvIncrementalCache, +}); diff --git a/examples/vercel-commerce/open-next.config.ts b/examples/vercel-commerce/open-next.config.ts index e26c466e1..f189176e9 100644 --- a/examples/vercel-commerce/open-next.config.ts +++ b/examples/vercel-commerce/open-next.config.ts @@ -1,25 +1,3 @@ -import type { OpenNextConfig } from '@opennextjs/aws/types/open-next'; +import { defineCloudflareConfig } from '@opennextjs/cloudflare/config'; -const config: OpenNextConfig = { - default: { - override: { - wrapper: 'cloudflare-node', - converter: 'edge', - // Unused implementation - incrementalCache: 'dummy', - tagCache: 'dummy', - queue: 'dummy' - } - }, - - middleware: { - external: true, - override: { - wrapper: 'cloudflare-edge', - converter: 'edge', - proxyExternalRequest: 'fetch' - } - } -}; - -export default config; +export default defineCloudflareConfig(); diff --git a/packages/cloudflare/src/api/config.ts b/packages/cloudflare/src/api/config.ts new file mode 100644 index 000000000..a47fe9412 --- /dev/null +++ b/packages/cloudflare/src/api/config.ts @@ -0,0 +1,103 @@ +import { BaseOverride, LazyLoadedOverride, OpenNextConfig } from "@opennextjs/aws/types/open-next"; +import type { IncrementalCache, Queue, TagCache } from "@opennextjs/aws/types/overrides"; + +export type CloudflareConfigOptions = { + /** + * The incremental cache implementation to use, for more details see the [Caching documentation](https://opennext.js.org/cloudflare/caching)) + * + * `@opennextjs/cloudflare` offers a kv incremental cache implementation ready + * to use which can be imported from `"@opennextjs/cloudflare/kv-cache"` + * + * @example + * import { defineCloudflareConfig } from "@opennextjs/cloudflare"; + * import kvIncrementalCache from "@opennextjs/cloudflare/kv-cache"; + * + * export default defineCloudflareConfig({ + * incrementalCache: kvIncrementalCache, + * }); + */ + incrementalCache?: "dummy" | IncrementalCache | (() => IncrementalCache | Promise); + + /** + * The tag cache implementation to use, for more details see the [Caching documentation](https://opennext.js.org/cloudflare/caching)) + * + * `@opennextjs/cloudflare` offers a d1 tag cache implementation ready + * to use which can be imported from `"@opennextjs/cloudflare/d1-tag-cache"` + * + * @example + * import { defineCloudflareConfig } from "@opennextjs/cloudflare"; + * import d1TagCache from "@opennextjs/cloudflare/d1-tag-cache"; + * + * export default defineCloudflareConfig({ + * tagCache: d1TagCache, + * }); + */ + tagCache?: "dummy" | TagCache | (() => TagCache | Promise); + + /** + * The revalidation queue implementation to use, for more details see the [Caching documentation](https://opennext.js.org/cloudflare/caching)) + * + * `@opennextjs/cloudflare` offers an in memory queue implementation ready + * to use which can be imported from `"@opennextjs/cloudflare/memory-queue"` + * + * @example + * import { defineCloudflareConfig } from "@opennextjs/cloudflare"; + * import memoryQueue from "@opennextjs/cloudflare/memory-queue"; + * + * export default defineCloudflareConfig({ + * queue: memoryQueue, + * }); + */ + queue?: "dummy" | "direct" | Queue | (() => Queue | Promise); +}; + +/** + * Defines the OpenNext configuration that targets the Cloudflare adapter + * + * @param options options that enabled you to configure the application's behavior + * @returns the OpenNext configuration object + */ +export function defineCloudflareConfig(options: CloudflareConfigOptions = {}): OpenNextConfig { + const { incrementalCache, tagCache, queue } = options; + + return { + default: { + override: { + wrapper: "cloudflare-node", + converter: "edge", + incrementalCache: resolveOverride(incrementalCache), + tagCache: resolveOverride(tagCache), + queue: resolveOverride(queue), + }, + }, + + middleware: { + external: true, + override: { + wrapper: "cloudflare-edge", + converter: "edge", + proxyExternalRequest: "fetch", + }, + }, + }; +} + +type DummyOrLazyLoadedOverride = "dummy" | LazyLoadedOverride; + +type ResolveOverrideReturn = T extends Queue + ? "direct" | DummyOrLazyLoadedOverride + : DummyOrLazyLoadedOverride; + +function resolveOverride( + value: undefined | "dummy" | "direct" | T | (() => T | Promise) +): ResolveOverrideReturn { + if (!value || value === "dummy") { + return "dummy" as ResolveOverrideReturn; + } + + if (value === "direct") { + return "direct" as ResolveOverrideReturn; + } + + return (typeof value === "function" ? value : () => value) as ResolveOverrideReturn; +} diff --git a/packages/cloudflare/src/api/index.ts b/packages/cloudflare/src/api/index.ts index 574ce7de5..69a3c9ebf 100644 --- a/packages/cloudflare/src/api/index.ts +++ b/packages/cloudflare/src/api/index.ts @@ -1 +1,2 @@ export * from "./cloudflare-context.js"; +export { defineCloudflareConfig } from "./config.js"; diff --git a/packages/cloudflare/src/api/kvCache.ts b/packages/cloudflare/src/api/kvCache.ts index e0e8e9bf7..789d54204 100644 --- a/packages/cloudflare/src/api/kvCache.ts +++ b/packages/cloudflare/src/api/kvCache.ts @@ -1,6 +1,6 @@ -import cache from "./kv-cache.js"; +import kvIncrementalCache from "./kv-cache.js"; /** * @deprecated Please import from `kv-cache` instead of `kvCache`. */ -export default cache; +export default kvIncrementalCache; diff --git a/packages/cloudflare/templates/defaults/open-next.config.ts b/packages/cloudflare/templates/defaults/open-next.config.ts index e860ec20f..8b5be462f 100644 --- a/packages/cloudflare/templates/defaults/open-next.config.ts +++ b/packages/cloudflare/templates/defaults/open-next.config.ts @@ -1,26 +1,7 @@ // default open-next.config.ts file created by @opennextjs/cloudflare +import { defineCloudflareConfig } from "@opennextjs/cloudflare/dist/api/config"; +import kvIncrementalCache from "@opennextjs/cloudflare/dist/api/kv-cache"; -import cache from "@opennextjs/cloudflare/kv-cache"; - -const config = { - default: { - override: { - wrapper: "cloudflare-node", - converter: "edge", - incrementalCache: async () => cache, - tagCache: "dummy", - queue: "dummy", - }, - }, - - middleware: { - external: true, - override: { - wrapper: "cloudflare-edge", - converter: "edge", - proxyExternalRequest: "fetch", - }, - }, -}; - -export default config; +export default defineCloudflareConfig({ + incrementalCache: kvIncrementalCache, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 177d18be5..8bfed9bc6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16000,7 +16000,7 @@ snapshots: 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(@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@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) fast-glob: 3.3.2 get-tsconfig: 4.8.0 is-bun-module: 1.2.1 @@ -16019,7 +16019,7 @@ snapshots: 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(@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@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) fast-glob: 3.3.2 get-tsconfig: 4.8.0 is-bun-module: 1.2.1 @@ -16038,7 +16038,7 @@ snapshots: 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(@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@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)) fast-glob: 3.3.2 get-tsconfig: 4.8.0 is-bun-module: 1.2.1 @@ -16057,7 +16057,7 @@ snapshots: 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(@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@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)) fast-glob: 3.3.2 get-tsconfig: 4.8.0 is-bun-module: 1.2.1 @@ -16070,18 +16070,7 @@ 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(@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@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.30.0)(eslint@8.57.1) - transitivePeerDependencies: - - 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(@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@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): dependencies: debug: 3.2.7 optionalDependencies: @@ -16092,7 +16081,7 @@ snapshots: 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)(eslint@9.11.1(jiti@1.21.6)))(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)): dependencies: debug: 3.2.7 optionalDependencies: @@ -16103,7 +16092,7 @@ snapshots: 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(@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@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)): dependencies: debug: 3.2.7 optionalDependencies: @@ -16114,7 +16103,7 @@ snapshots: 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(@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@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)(eslint@8.57.1): dependencies: debug: 3.2.7 optionalDependencies: @@ -16125,7 +16114,7 @@ snapshots: 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(@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@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)(eslint@9.11.1(jiti@1.21.6)): dependencies: debug: 3.2.7 optionalDependencies: @@ -16136,7 +16125,7 @@ snapshots: 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(@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@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)(eslint@9.19.0(jiti@1.21.6)): dependencies: debug: 3.2.7 optionalDependencies: @@ -16158,7 +16147,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(@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@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) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -16186,7 +16175,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(@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@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)(eslint@8.57.1) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -16215,7 +16204,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(@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@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)(eslint@9.11.1(jiti@1.21.6)) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -16244,7 +16233,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(@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@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)(eslint@9.19.0(jiti@1.21.6)) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3