From 5ad5d7d4ca7e9f0050f13fd3299e7bd607a9c08e Mon Sep 17 00:00:00 2001 From: Rohin Bhargava Date: Sun, 12 Jan 2025 18:04:55 -0500 Subject: [PATCH 1/7] compiling and docs dev working --- .../fdr/definition/api/latest/__package__.yml | 6 + .../definition/docs/v1/read/__package__.yml | 2 +- packages/fdr-sdk/package.json | 2 + packages/fdr-sdk/src/api-definition/index.ts | 1 + .../fdr-sdk/src/api-definition/s3Loader.ts | 49 ++ .../latest/types/LatestApiDefinition.ts | 7 + .../api/resources/latest/types/index.ts | 1 + .../v1/resources/read/types/DocsDefinition.ts | 2 +- .../read/convertDocsDefinitionToRead.ts | 4 +- .../fdr-sdk/src/navigation/utils/toApis.ts | 29 +- .../fern-docs/bundle/src/server/DocsLoader.ts | 11 +- .../src/algolia/__test__/generation.test.ts | 6 +- .../src/algolia/__test__/test-utils.ts | 6 +- .../src/fdr/load-docs-with-url.ts | 13 +- .../ui/src/resolver/resolveDocsContent.ts | 32 +- .../latest/types/LatestApiDefinition.ts | 7 + .../api/resources/latest/types/index.ts | 1 + .../v1/resources/read/types/DocsDefinition.ts | 2 +- pnpm-lock.yaml | 624 ++++++++++-------- servers/fdr/prisma/schema.prisma | 3 +- .../latest/types/LatestApiDefinition.d.ts | 5 + .../latest/types/LatestApiDefinition.js | 4 + .../api/resources/latest/types/index.d.ts | 1 + .../api/resources/latest/types/index.js | 1 + .../resources/read/types/DocsDefinition.d.ts | 2 +- servers/fdr/src/app/FdrApplication.ts | 4 +- .../controllers/api/getRegisterApiService.ts | 61 +- .../controllers/docs/v1/getDocsReadService.ts | 7 +- .../docs/v2/getDocsReadV2Service.ts | 1 + .../docs/v2/getDocsWriteV2Service.ts | 9 +- servers/fdr/src/db/FdrDao.ts | 5 +- servers/fdr/src/db/api/APIDefinitionDao.ts | 12 +- .../fdr/src/services/db/DatabaseService.ts | 18 +- .../src/util/resolveLatestApiDefinition.ts | 27 + turbo.json | 7 +- 35 files changed, 645 insertions(+), 327 deletions(-) create mode 100644 packages/fdr-sdk/src/api-definition/s3Loader.ts create mode 100644 packages/fdr-sdk/src/client/generated/api/resources/api/resources/latest/types/LatestApiDefinition.ts create mode 100644 packages/parsers/src/client/generated/api/resources/api/resources/latest/types/LatestApiDefinition.ts create mode 100644 servers/fdr/src/api/generated/api/resources/api/resources/latest/types/LatestApiDefinition.d.ts create mode 100644 servers/fdr/src/api/generated/api/resources/api/resources/latest/types/LatestApiDefinition.js create mode 100644 servers/fdr/src/util/resolveLatestApiDefinition.ts diff --git a/fern/apis/fdr/definition/api/latest/__package__.yml b/fern/apis/fdr/definition/api/latest/__package__.yml index adb2944846..8f9f1719c9 100644 --- a/fern/apis/fdr/definition/api/latest/__package__.yml +++ b/fern/apis/fdr/definition/api/latest/__package__.yml @@ -36,6 +36,12 @@ types: auths: map globalHeaders: optional> + LatestApiDefinition: + discriminated: false + union: + - string + - ApiDefinition + errors: ApiDoesNotExistError: status-code: 404 diff --git a/fern/apis/fdr/definition/docs/v1/read/__package__.yml b/fern/apis/fdr/definition/docs/v1/read/__package__.yml index f9ad0af875..3b892be47d 100644 --- a/fern/apis/fdr/definition/docs/v1/read/__package__.yml +++ b/fern/apis/fdr/definition/docs/v1/read/__package__.yml @@ -68,7 +68,7 @@ types: algoliaSearchIndex: optional pages: map apis: map - apisV2: map + apisV2: map files: map filesV2: map jsFiles: diff --git a/packages/fdr-sdk/package.json b/packages/fdr-sdk/package.json index d28feeb17d..ed695b3cc6 100644 --- a/packages/fdr-sdk/package.json +++ b/packages/fdr-sdk/package.json @@ -49,6 +49,8 @@ "test": "vitest --run" }, "dependencies": { + "@aws-sdk/client-s3": "^3.726.1", + "@aws-sdk/s3-request-presigner": "^3.726.1", "@fern-api/ui-core-utils": "workspace:*", "@ungap/structured-clone": "^1.2.0", "dayjs": "^1.11.11", diff --git a/packages/fdr-sdk/src/api-definition/index.ts b/packages/fdr-sdk/src/api-definition/index.ts index d4e99a7177..d07562489f 100644 --- a/packages/fdr-sdk/src/api-definition/index.ts +++ b/packages/fdr-sdk/src/api-definition/index.ts @@ -6,6 +6,7 @@ export * from "./lang"; export * from "./latest"; export * from "./migrators/v1ToV2"; export * from "./prune"; +export * from "./s3Loader"; export * from "./snippets/curl"; export * from "./snippets/SnippetHttpRequest"; export * from "./status-message"; diff --git a/packages/fdr-sdk/src/api-definition/s3Loader.ts b/packages/fdr-sdk/src/api-definition/s3Loader.ts new file mode 100644 index 0000000000..face24f48d --- /dev/null +++ b/packages/fdr-sdk/src/api-definition/s3Loader.ts @@ -0,0 +1,49 @@ +import { GetObjectCommand, S3Client } from "@aws-sdk/client-s3"; +import { getSignedUrl } from "@aws-sdk/s3-request-presigner"; +import { FdrAPI } from "../client"; +import { LatestApiDefinition } from "./latest"; + +export class S3Loader { + private s3Client: S3Client; + + constructor() { + if ( + process.env.S3_API_DEFINITIONS_URL != null && + process.env.S3_API_DEFINITIONS_REGION != null && + process.env.S3_API_DEFINITIONS_ACCESS_KEY_ID != null && + process.env.S3_API_DEFINITIONS_SECRET_ACCESS_KEY != null && + process.env.S3_API_DEFINITIONS_BUCKET_NAME != null + ) { + this.s3Client = new S3Client({ + endpoint: process.env.S3_API_DEFINITIONS_URL, + region: process.env.S3_API_DEFINITIONS_REGION, + credentials: { + accessKeyId: process.env.S3_API_DEFINITIONS_ACCESS_KEY_ID, + secretAccessKey: process.env.S3_API_DEFINITIONS_SECRET_ACCESS_KEY, + }, + }); + } else { + throw new Error("Missing S3 API definitions configuration in env vars"); + } + } + + async loadApiDefinition( + apiDefinitionOrKey: LatestApiDefinition + ): Promise { + let resolvedApi: FdrAPI.api.latest.ApiDefinition; + if (typeof apiDefinitionOrKey === "string") { + const command = new GetObjectCommand({ + Bucket: process.env.S3_API_DEFINITIONS_BUCKET_NAME, + Key: apiDefinitionOrKey, + }); + const url = await getSignedUrl(this.s3Client, command, { + expiresIn: 604800, + }); + resolvedApi = await (await fetch(url)).json(); + } else { + resolvedApi = apiDefinitionOrKey; + } + + return resolvedApi; + } +} diff --git a/packages/fdr-sdk/src/client/generated/api/resources/api/resources/latest/types/LatestApiDefinition.ts b/packages/fdr-sdk/src/client/generated/api/resources/api/resources/latest/types/LatestApiDefinition.ts new file mode 100644 index 0000000000..fd41f331e7 --- /dev/null +++ b/packages/fdr-sdk/src/client/generated/api/resources/api/resources/latest/types/LatestApiDefinition.ts @@ -0,0 +1,7 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ + +import * as FernRegistry from "../../../../../index"; + +export type LatestApiDefinition = string | FernRegistry.api.latest.ApiDefinition; diff --git a/packages/fdr-sdk/src/client/generated/api/resources/api/resources/latest/types/index.ts b/packages/fdr-sdk/src/client/generated/api/resources/api/resources/latest/types/index.ts index 6961e73d37..31beb17f98 100644 --- a/packages/fdr-sdk/src/client/generated/api/resources/api/resources/latest/types/index.ts +++ b/packages/fdr-sdk/src/client/generated/api/resources/api/resources/latest/types/index.ts @@ -1 +1,2 @@ export * from "./ApiDefinition"; +export * from "./LatestApiDefinition"; diff --git a/packages/fdr-sdk/src/client/generated/api/resources/docs/resources/v1/resources/read/types/DocsDefinition.ts b/packages/fdr-sdk/src/client/generated/api/resources/docs/resources/v1/resources/read/types/DocsDefinition.ts index 9656cbf380..f925e5a6d5 100644 --- a/packages/fdr-sdk/src/client/generated/api/resources/docs/resources/v1/resources/read/types/DocsDefinition.ts +++ b/packages/fdr-sdk/src/client/generated/api/resources/docs/resources/v1/resources/read/types/DocsDefinition.ts @@ -8,7 +8,7 @@ export interface DocsDefinition { algoliaSearchIndex: FernRegistry.AlgoliaSearchIndex | undefined; pages: Record; apis: Record; - apisV2: Record; + apisV2: Record; files: Record; filesV2: Record; /** diff --git a/packages/fdr-sdk/src/converters/read/convertDocsDefinitionToRead.ts b/packages/fdr-sdk/src/converters/read/convertDocsDefinitionToRead.ts index ad09041751..86889cefb9 100644 --- a/packages/fdr-sdk/src/converters/read/convertDocsDefinitionToRead.ts +++ b/packages/fdr-sdk/src/converters/read/convertDocsDefinitionToRead.ts @@ -1,5 +1,5 @@ import { mapValues } from "es-toolkit/object"; -import { APIV1Db, APIV1Read, DocsV1Db, DocsV1Read } from "../../client"; +import { APIV1Db, APIV1Read, DocsV1Db, DocsV1Read, FdrAPI } from "../../client"; import { SearchInfo } from "../../client/FdrAPI"; import { FernRegistry } from "../../client/generated"; import { convertDbDocsConfigToRead } from "./convertDbDocsConfigToRead"; @@ -19,7 +19,7 @@ export function convertDocsDefinitionToRead({ apis: Record; apisV2: Record< FernRegistry.ApiDefinitionId, - FernRegistry.api.latest.ApiDefinition + FdrAPI.api.latest.LatestApiDefinition >; id: APIV1Db.DocsConfigId | undefined; search: SearchInfo; diff --git a/packages/fdr-sdk/src/navigation/utils/toApis.ts b/packages/fdr-sdk/src/navigation/utils/toApis.ts index 8b591cadc5..7fca2195f0 100644 --- a/packages/fdr-sdk/src/navigation/utils/toApis.ts +++ b/packages/fdr-sdk/src/navigation/utils/toApis.ts @@ -2,7 +2,16 @@ import { mapValues } from "es-toolkit/object"; import { ApiDefinition } from "../.."; import { DocsV2Read } from "../../client"; -export function toApis(docs: DocsV2Read.LoadDocsForUrlResponse) { +export async function toApis( + docs: DocsV2Read.LoadDocsForUrlResponse, + getPresignedDocsAssetsDownloadUrl: ({ + key, + isPrivate, + }: { + key: string; + isPrivate: boolean; + }) => Promise +) { return { ...mapValues(docs.definition.apis, (api) => ApiDefinition.ApiDefinitionV1ToLatest.from(api, { @@ -11,6 +20,22 @@ export function toApis(docs: DocsV2Read.LoadDocsForUrlResponse) { usesApplicationJsonInFormDataValue: false, }).migrate() ), - ...docs.definition.apisV2, + ...Object.fromEntries( + await Promise.all( + Object.entries(docs.definition.apisV2).map(async ([key, def]) => { + if (typeof def === "string") { + const url = await getPresignedDocsAssetsDownloadUrl({ + key: def, + isPrivate: true, + }); + const response = await fetch(url.toString()); + const apiDefinition = await response.json(); + return [key, apiDefinition as ApiDefinition.ApiDefinition]; + } else { + return [key, def]; + } + }) + ) + ), }; } diff --git a/packages/fern-docs/bundle/src/server/DocsLoader.ts b/packages/fern-docs/bundle/src/server/DocsLoader.ts index 8dd91b034e..d3f6ab0796 100644 --- a/packages/fern-docs/bundle/src/server/DocsLoader.ts +++ b/packages/fern-docs/bundle/src/server/DocsLoader.ts @@ -2,6 +2,7 @@ import type { DocsV1Read, DocsV2Read } from "@fern-api/fdr-sdk"; import { ApiDefinition, ApiDefinitionV1ToLatest, + S3Loader, } from "@fern-api/fdr-sdk/api-definition"; import * as FernNavigation from "@fern-api/fdr-sdk/navigation"; import type { AuthEdgeConfig } from "@fern-docs/auth"; @@ -103,11 +104,13 @@ export class DocsLoader { return undefined; } const v1 = res.definition.apis[key]; + const s3Loader = new S3Loader(); const latest = - res.definition.apisV2?.[key] ?? - (v1 != null - ? ApiDefinitionV1ToLatest.from(v1, this.edgeFlags).migrate() - : undefined); + res.definition.apisV2?.[key] != null + ? await s3Loader.loadApiDefinition(res.definition.apisV2[key]) + : v1 != null + ? ApiDefinitionV1ToLatest.from(v1, this.edgeFlags).migrate() + : undefined; if (!latest) { return undefined; } diff --git a/packages/fern-docs/search-server/src/algolia/__test__/generation.test.ts b/packages/fern-docs/search-server/src/algolia/__test__/generation.test.ts index f907cce98c..4ff2e3ab24 100644 --- a/packages/fern-docs/search-server/src/algolia/__test__/generation.test.ts +++ b/packages/fern-docs/search-server/src/algolia/__test__/generation.test.ts @@ -50,8 +50,12 @@ for (const fixtureName of [ describe(fixtureName, () => { it("should work", async () => { const fixture = readFixture(fixtureName); + const mockGetPresignedDocsAssetsDownloadUrl = vi.fn(); const root = FernNavigation.utils.toRootNode(fixture); - const apis = FernNavigation.utils.toApis(fixture); + const apis = await FernNavigation.utils.toApis( + fixture, + mockGetPresignedDocsAssetsDownloadUrl + ); const pages = FernNavigation.utils.toPages(fixture); const { records, tooLarge } = createAlgoliaRecords({ diff --git a/packages/fern-docs/search-server/src/algolia/__test__/test-utils.ts b/packages/fern-docs/search-server/src/algolia/__test__/test-utils.ts index c33112010d..2c07ad1301 100644 --- a/packages/fern-docs/search-server/src/algolia/__test__/test-utils.ts +++ b/packages/fern-docs/search-server/src/algolia/__test__/test-utils.ts @@ -42,7 +42,11 @@ export function readFixtureToRootNode( ]; }) ), - ...fixture.definition.apisV2, + ...(Object.fromEntries( + Object.entries(fixture.definition.apisV2).filter( + ([_, api]) => typeof api !== "string" + ) + ) as Record), }; const pages = mapValues(fixture.definition.pages, (page) => page.markdown); return { root, apis, pages }; diff --git a/packages/fern-docs/search-server/src/fdr/load-docs-with-url.ts b/packages/fern-docs/search-server/src/fdr/load-docs-with-url.ts index 50f9eb10cb..b30f578abe 100644 --- a/packages/fern-docs/search-server/src/fdr/load-docs-with-url.ts +++ b/packages/fern-docs/search-server/src/fdr/load-docs-with-url.ts @@ -1,4 +1,5 @@ import { ApiDefinition, FdrClient, FernNavigation } from "@fern-api/fdr-sdk"; +import { S3Loader } from "@fern-api/fdr-sdk/api-definition"; import { withDefaultProtocol } from "@fern-api/ui-core-utils"; import { mapValues } from "es-toolkit/object"; @@ -72,6 +73,7 @@ export async function loadDocsWithUrl( // migrate pages const pages = mapValues(docs.body.definition.pages, (page) => page.markdown); + const s3Loader = new S3Loader(); // migrate apis const apis = { ...mapValues(docs.body.definition.apis, (api) => @@ -83,7 +85,16 @@ export async function loadDocsWithUrl( payload.usesApplicationJsonInFormDataValue ?? false, }).migrate() ), - ...docs.body.definition.apisV2, + ...Object.fromEntries( + await Promise.all( + Object.entries(docs.body.definition.apisV2).map( + async ([apiId, api]) => { + const resolvedApi = await s3Loader.loadApiDefinition(api); + return [apiId, resolvedApi]; + } + ) + ) + ), }; return { org_id: org.body, root, pages, apis, domain: domain.host }; diff --git a/packages/fern-docs/ui/src/resolver/resolveDocsContent.ts b/packages/fern-docs/ui/src/resolver/resolveDocsContent.ts index 8277ff2816..df58c0d123 100644 --- a/packages/fern-docs/ui/src/resolver/resolveDocsContent.ts +++ b/packages/fern-docs/ui/src/resolver/resolveDocsContent.ts @@ -1,4 +1,7 @@ -import { ApiDefinitionV1ToLatest } from "@fern-api/fdr-sdk/api-definition"; +import { + ApiDefinitionV1ToLatest, + S3Loader, +} from "@fern-api/fdr-sdk/api-definition"; import type { APIV1Read, DocsV1Read, @@ -31,7 +34,7 @@ interface ResolveDocsContentArgs { prev: FernNavigation.NavigationNodeNeighbor | undefined; next: FernNavigation.NavigationNodeNeighbor | undefined; apis: Record; - apisV2: Record; + apisV2: Record; pages: Record; mdxOptions?: FernSerializeMdxOptions; edgeFlags: EdgeFlags; @@ -69,6 +72,7 @@ export async function resolveDocsContent({ engine ); + const s3Loader = new S3Loader(); // TODO: remove legacy when done const apiLoaders = { ...mapValues(apis, (api) => { @@ -81,14 +85,22 @@ export async function resolveDocsContent({ .withEnvironment(process.env.NEXT_PUBLIC_FDR_ORIGIN) .withResolveDescriptions(); }), - ...mapValues(apisV2 ?? {}, (api) => { - return ApiDefinitionLoader.create(domain, api.id) - .withMdxBundler(serializeMdx, engine) - .withEdgeFlags(edgeFlags) - .withApiDefinition(api) - .withEnvironment(process.env.NEXT_PUBLIC_FDR_ORIGIN) - .withResolveDescriptions(); - }), + ...Object.fromEntries( + await Promise.all( + Object.entries(apisV2 ?? {}).map(async ([apiId, api]) => { + const resolvedApi = await s3Loader.loadApiDefinition(api); + return [ + apiId, + ApiDefinitionLoader.create(domain, resolvedApi.id) + .withMdxBundler(serializeMdx, engine) + .withEdgeFlags(edgeFlags) + .withApiDefinition(resolvedApi) + .withEnvironment(process.env.NEXT_PUBLIC_FDR_ORIGIN) + .withResolveDescriptions(), + ]; + }) + ) + ), }; let result: DocsContent | undefined; diff --git a/packages/parsers/src/client/generated/api/resources/api/resources/latest/types/LatestApiDefinition.ts b/packages/parsers/src/client/generated/api/resources/api/resources/latest/types/LatestApiDefinition.ts new file mode 100644 index 0000000000..fd41f331e7 --- /dev/null +++ b/packages/parsers/src/client/generated/api/resources/api/resources/latest/types/LatestApiDefinition.ts @@ -0,0 +1,7 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ + +import * as FernRegistry from "../../../../../index"; + +export type LatestApiDefinition = string | FernRegistry.api.latest.ApiDefinition; diff --git a/packages/parsers/src/client/generated/api/resources/api/resources/latest/types/index.ts b/packages/parsers/src/client/generated/api/resources/api/resources/latest/types/index.ts index 6961e73d37..31beb17f98 100644 --- a/packages/parsers/src/client/generated/api/resources/api/resources/latest/types/index.ts +++ b/packages/parsers/src/client/generated/api/resources/api/resources/latest/types/index.ts @@ -1 +1,2 @@ export * from "./ApiDefinition"; +export * from "./LatestApiDefinition"; diff --git a/packages/parsers/src/client/generated/api/resources/docs/resources/v1/resources/read/types/DocsDefinition.ts b/packages/parsers/src/client/generated/api/resources/docs/resources/v1/resources/read/types/DocsDefinition.ts index 9656cbf380..f925e5a6d5 100644 --- a/packages/parsers/src/client/generated/api/resources/docs/resources/v1/resources/read/types/DocsDefinition.ts +++ b/packages/parsers/src/client/generated/api/resources/docs/resources/v1/resources/read/types/DocsDefinition.ts @@ -8,7 +8,7 @@ export interface DocsDefinition { algoliaSearchIndex: FernRegistry.AlgoliaSearchIndex | undefined; pages: Record; apis: Record; - apisV2: Record; + apisV2: Record; files: Record; filesV2: Record; /** diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0e72933c42..69824b1b29 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -68,10 +68,10 @@ importers: version: 1.47.1 '@tailwindcss/forms': specifier: ^0.5.7 - version: 0.5.7(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2))) + version: 0.5.7(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2))) '@tailwindcss/typography': specifier: ^0.5.10 - version: 0.5.13(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2))) + version: 0.5.13(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2))) '@types/express': specifier: ^4.17.13 version: 4.17.21 @@ -131,7 +131,7 @@ importers: version: 5.1.0(eslint@9.17.0(jiti@1.21.7)) eslint-plugin-tailwindcss: specifier: ^3.17.5 - version: 3.17.5(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2))) + version: 3.17.5(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2))) eslint-plugin-vitest: specifier: ^0.5.4 version: 0.5.4(@typescript-eslint/eslint-plugin@8.18.1(@typescript-eslint/parser@8.18.1(eslint@9.17.0(jiti@1.21.7))(typescript@5.7.2))(eslint@9.17.0(jiti@1.21.7))(typescript@5.7.2))(eslint@9.17.0(jiti@1.21.7))(typescript@5.7.2)(vitest@2.1.4(@edge-runtime/vm@5.0.0)(@types/node@18.19.33)(jsdom@24.0.0)(less@4.2.0)(sass@1.77.0)(stylus@0.62.0)(terser@5.31.0)) @@ -197,16 +197,16 @@ importers: version: 13.1.0(postcss@8.4.31)(stylelint@16.5.0(typescript@5.7.2)) stylelint-config-tailwindcss: specifier: ^0.0.7 - version: 0.0.7(stylelint@16.5.0(typescript@5.7.2))(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2))) + version: 0.0.7(stylelint@16.5.0(typescript@5.7.2))(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2))) stylelint-scss: specifier: ^6.0.0 version: 6.3.0(stylelint@16.5.0(typescript@5.7.2)) tailwindcss: specifier: 3.4.17 - version: 3.4.17(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2)) + version: 3.4.17(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2)) ts-node: specifier: ^10.9.2 - version: 10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2) + version: 10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2) tsx: specifier: ^4.19.2 version: 4.19.2 @@ -221,7 +221,7 @@ importers: version: 8.18.1(eslint@9.17.0(jiti@1.21.7))(typescript@5.7.2) typescript-plugin-css-modules: specifier: ^5.1.0 - version: 5.1.0(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2))(typescript@5.7.2) + version: 5.1.0(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2))(typescript@5.7.2) vitest: specifier: ^2.1.4 version: 2.1.4(@edge-runtime/vm@5.0.0)(@types/node@18.19.33)(jsdom@24.0.0)(less@4.2.0)(sass@1.77.0)(stylus@0.62.0)(terser@5.31.0) @@ -273,7 +273,7 @@ importers: version: 3.0.3 tsup: specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.5.7)(jiti@1.21.7)(postcss@8.4.31)(tsx@4.19.2)(typescript@5.7.2)(yaml@2.4.2) + version: 8.3.5(@swc/core@1.5.7(@swc/helpers@0.5.15))(jiti@1.21.7)(postcss@8.4.31)(tsx@4.19.2)(typescript@5.7.2)(yaml@2.4.2) typescript: specifier: 5.7.2 version: 5.7.2 @@ -571,6 +571,12 @@ importers: packages/fdr-sdk: dependencies: + '@aws-sdk/client-s3': + specifier: ^3.726.1 + version: 3.726.1 + '@aws-sdk/s3-request-presigner': + specifier: ^3.726.1 + version: 3.726.1 '@fern-api/ui-core-utils': specifier: workspace:* version: link:../commons/core-utils @@ -859,10 +865,10 @@ importers: version: 14.2.9 '@tailwindcss/forms': specifier: ^0.5.7 - version: 0.5.7(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2))) + version: 0.5.7(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2))) '@tailwindcss/typography': specifier: ^0.5.10 - version: 0.5.13(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2))) + version: 0.5.13(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2))) '@types/node': specifier: ^18.7.18 version: 18.19.33 @@ -895,7 +901,7 @@ importers: version: 3.4.2 raw-loader: specifier: ^4.0.2 - version: 4.0.2(webpack@5.94.0(@swc/core@1.5.7)(esbuild@0.20.2)) + version: 4.0.2(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2)) sass: specifier: ^1.74.1 version: 1.77.0 @@ -904,7 +910,7 @@ importers: version: 16.5.0(typescript@5.7.2) tailwindcss: specifier: 3.4.17 - version: 3.4.17(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2)) + version: 3.4.17(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2)) typescript: specifier: 5.7.2 version: 5.7.2 @@ -1086,10 +1092,10 @@ importers: version: 8.4.4(storybook@8.4.4(prettier@3.4.2)) '@tailwindcss/forms': specifier: ^0.5.7 - version: 0.5.7(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2))) + version: 0.5.7(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2))) '@tailwindcss/typography': specifier: ^0.5.10 - version: 0.5.13(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2))) + version: 0.5.13(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2))) '@testing-library/jest-dom': specifier: ^6.4.2 version: 6.5.0 @@ -1149,7 +1155,7 @@ importers: version: 16.5.0(typescript@5.7.2) tailwindcss: specifier: 3.4.17 - version: 3.4.17(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2)) + version: 3.4.17(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2)) typescript: specifier: 5.7.2 version: 5.7.2 @@ -1370,10 +1376,10 @@ importers: version: 14.2.9 '@tailwindcss/forms': specifier: ^0.5.7 - version: 0.5.7(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2))) + version: 0.5.7(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2))) '@tailwindcss/typography': specifier: ^0.5.10 - version: 0.5.13(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2))) + version: 0.5.13(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2))) '@types/node': specifier: ^18.7.18 version: 18.19.33 @@ -1412,7 +1418,7 @@ importers: version: 3.4.2 raw-loader: specifier: ^4.0.2 - version: 4.0.2(webpack@5.94.0(@swc/core@1.5.7)) + version: 4.0.2(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))) sass: specifier: ^1.74.1 version: 1.77.0 @@ -1421,7 +1427,7 @@ importers: version: 16.5.0(typescript@5.7.2) tailwindcss: specifier: 3.4.17 - version: 3.4.17(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2)) + version: 3.4.17(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2)) typescript: specifier: 5.7.2 version: 5.7.2 @@ -1833,7 +1839,7 @@ importers: version: 8.4.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.4(prettier@3.4.2)) '@storybook/nextjs': specifier: ^8.4.4 - version: 8.4.4(@fern-api/next@14.2.9-fork.2(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.47.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.0))(@swc/core@1.5.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.0)(storybook@8.4.4(prettier@3.4.2))(type-fest@4.21.0)(typescript@5.7.2)(webpack-hot-middleware@2.26.1)(webpack@5.94.0(@swc/core@1.5.7)) + version: 8.4.4(@fern-api/next@14.2.9-fork.2(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.47.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.0))(@swc/core@1.5.7(@swc/helpers@0.5.15))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.0)(storybook@8.4.4(prettier@3.4.2))(type-fest@4.21.0)(typescript@5.7.2)(webpack-hot-middleware@2.26.1)(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))) '@storybook/react': specifier: ^8.4.4 version: 8.4.4(@storybook/test@8.4.4(storybook@8.4.4(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.4(prettier@3.4.2))(typescript@5.7.2) @@ -1842,7 +1848,7 @@ importers: version: 8.4.4(storybook@8.4.4(prettier@3.4.2)) '@tailwindcss/typography': specifier: ^0.5.10 - version: 0.5.13(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2))) + version: 0.5.13(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@22.5.5)(typescript@5.7.2))) '@types/hast': specifier: ^3.0.4 version: 3.0.4 @@ -1884,10 +1890,10 @@ importers: version: 2.2.5(react@18.3.1) tailwindcss: specifier: 3.4.17 - version: 3.4.17(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2)) + version: 3.4.17(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@22.5.5)(typescript@5.7.2)) tailwindcss-animate: specifier: ^1.0.7 - version: 1.0.7(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2))) + version: 1.0.7(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@22.5.5)(typescript@5.7.2))) typescript: specifier: 5.7.2 version: 5.7.2 @@ -2259,7 +2265,7 @@ importers: version: 8.4.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.4(prettier@3.4.2)) '@storybook/nextjs': specifier: ^8.4.4 - version: 8.4.4(@fern-api/next@14.2.9-fork.2(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.47.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.0))(@swc/core@1.5.7)(esbuild@0.20.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.0)(storybook@8.4.4(prettier@3.4.2))(type-fest@4.21.0)(typescript@5.7.2)(webpack-hot-middleware@2.26.1)(webpack@5.94.0(@swc/core@1.5.7)(esbuild@0.20.2)) + version: 8.4.4(@fern-api/next@14.2.9-fork.2(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.47.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.0))(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.0)(storybook@8.4.4(prettier@3.4.2))(type-fest@4.21.0)(typescript@5.7.2)(webpack-hot-middleware@2.26.1)(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2)) '@storybook/react': specifier: ^8.4.4 version: 8.4.4(@storybook/test@8.4.4(storybook@8.4.4(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.4(prettier@3.4.2))(typescript@5.7.2) @@ -2268,10 +2274,10 @@ importers: version: 8.4.4(storybook@8.4.4(prettier@3.4.2)) '@tailwindcss/forms': specifier: ^0.5.7 - version: 0.5.7(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2))) + version: 0.5.7(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2))) '@tailwindcss/typography': specifier: ^0.5.10 - version: 0.5.13(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2))) + version: 0.5.13(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2))) '@testing-library/jest-dom': specifier: ^6.4.2 version: 6.5.0 @@ -2352,7 +2358,7 @@ importers: version: 16.5.0(typescript@5.7.2) tailwindcss: specifier: 3.4.17 - version: 3.4.17(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2)) + version: 3.4.17(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2)) ts-essentials: specifier: ^10.0.1 version: 10.0.1(typescript@5.7.2) @@ -2453,7 +2459,7 @@ importers: version: 3.4.2 tsup: specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.5.7)(jiti@1.21.7)(postcss@8.4.31)(tsx@4.19.2)(typescript@5.7.2)(yaml@2.4.2) + version: 8.3.5(@swc/core@1.5.7(@swc/helpers@0.5.15))(jiti@1.21.7)(postcss@8.4.31)(tsx@4.19.2)(typescript@5.7.2)(yaml@2.4.2) typescript: specifier: 5.7.2 version: 5.7.2 @@ -2579,7 +2585,7 @@ importers: version: 9.17.0(jiti@1.21.7) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@18.19.33)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2)) + version: 29.7.0(@types/node@18.19.33)(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2)) typescript: specifier: 5.7.2 version: 5.7.2 @@ -2864,7 +2870,7 @@ importers: version: 2.1.2 ts-node: specifier: ^10.9.1 - version: 10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2) + version: 10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2) typescript: specifier: 5.7.2 version: 5.7.2 @@ -2982,7 +2988,7 @@ importers: version: 1.52.1(esbuild@0.20.2) ts-node: specifier: ^10.4.0 - version: 10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2) + version: 10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2) tsconfig-paths: specifier: ^3.9.0 version: 3.15.0 @@ -3504,6 +3510,10 @@ packages: resolution: {integrity: sha512-OTFQRXlAff/tRE2GfhqAgVaWkRSHUzj9ebvdd3979zcIELHY3kWBJ/XbefElXg1lhsumKdZl/gLpeA76GyQDPQ==} engines: {node: '>=16.0.0'} + '@aws-sdk/s3-request-presigner@3.726.1': + resolution: {integrity: sha512-IoM/u1gaZiSHEZkkf+Hn6MvCFUtLJgJysApW6NFbM2GYt4hqGLX5jhbjo5KVxC3wFfAhAwK1deSOM0FriBrKrg==} + engines: {node: '>=18.0.0'} + '@aws-sdk/signature-v4-multi-region@3.685.0': resolution: {integrity: sha512-IHLwuAZGqfUWVrNqw0ugnBa7iL8uBP4x6A7bfBDXRXWCWjUCed/1/D//0lKDHwpFkV74fGW6KoBacnWSUlXmwA==} engines: {node: '>=16.0.0'} @@ -3556,6 +3566,10 @@ packages: resolution: {integrity: sha512-pqV1b/hJ/kumtF8AwObJ7bsGgs/2zuAdZtalSD8Pu4jdjOji3IBwP79giAHyhVwoXaMjkpG3mG4ldn9CVtzZJA==} engines: {node: '>=16.0.0'} + '@aws-sdk/util-format-url@3.723.0': + resolution: {integrity: sha512-70+xUrdcnencPlCdV9XkRqmgj0vLDb8vm4mcEsgabg5QQ3S80KM0GEuhBAIGMkBWwNQTzCgQy2s7xOUlJPbu+g==} + engines: {node: '>=18.0.0'} + '@aws-sdk/util-locate-window@3.568.0': resolution: {integrity: sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig==} engines: {node: '>=16.0.0'} @@ -6645,10 +6659,6 @@ packages: resolution: {integrity: sha512-0XuhuHQlEqbNQZp7QxxrFTdVWdwxch4vjxYgfInF91hZFkPxf9QDrdQka0KfxFMPqLNzSw0b95uGTrLliQUavQ==} engines: {node: '>=16.0.0'} - '@smithy/abort-controller@4.0.0': - resolution: {integrity: sha512-xFNL1ZfluscKiVI0qlPEnu7pL1UgNNIzQdjTPkaO7JCJtIkbArPYNtqbxohuNaQdksJ01Tn1wLbDA5oIp62P8w==} - engines: {node: '>=18.0.0'} - '@smithy/abort-controller@4.0.1': resolution: {integrity: sha512-fiUIYgIgRjMWznk6iLJz35K2YxSLHzLBA/RC6lBrKfQ8fHbPfvk7Pk9UvpKoHgJjI18MnbPuEju53zcVy6KF1g==} engines: {node: '>=18.0.0'} @@ -17315,39 +17325,39 @@ snapshots: '@aws-crypto/crc32@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.679.0 + '@aws-sdk/types': 3.723.0 tslib: 2.8.1 '@aws-crypto/crc32c@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.679.0 + '@aws-sdk/types': 3.723.0 tslib: 2.8.1 '@aws-crypto/sha1-browser@5.2.0': dependencies: '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.679.0 + '@aws-sdk/types': 3.723.0 '@aws-sdk/util-locate-window': 3.568.0 '@smithy/util-utf8': 2.3.0 - tslib: 2.8.0 + tslib: 2.8.1 '@aws-crypto/sha256-browser@5.2.0': dependencies: '@aws-crypto/sha256-js': 5.2.0 '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.679.0 + '@aws-sdk/types': 3.723.0 '@aws-sdk/util-locate-window': 3.568.0 '@smithy/util-utf8': 2.3.0 - tslib: 2.8.0 + tslib: 2.8.1 '@aws-crypto/sha256-js@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.679.0 - tslib: 2.8.0 + '@aws-sdk/types': 3.723.0 + tslib: 2.8.1 '@aws-crypto/supports-web-crypto@5.2.0': dependencies: @@ -17355,7 +17365,7 @@ snapshots: '@aws-crypto/util@5.2.0': dependencies: - '@aws-sdk/types': 3.679.0 + '@aws-sdk/types': 3.723.0 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 @@ -17520,7 +17530,7 @@ snapshots: '@smithy/node-http-handler': 4.0.0 '@smithy/protocol-http': 5.0.0 '@smithy/smithy-client': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 '@smithy/url-parser': 4.0.0 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 @@ -17612,7 +17622,7 @@ snapshots: '@smithy/node-http-handler': 4.0.0 '@smithy/protocol-http': 5.0.0 '@smithy/smithy-client': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 '@smithy/url-parser': 4.0.0 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 @@ -17657,7 +17667,7 @@ snapshots: '@smithy/node-http-handler': 4.0.0 '@smithy/protocol-http': 5.0.0 '@smithy/smithy-client': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 '@smithy/url-parser': 4.0.0 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 @@ -17743,7 +17753,7 @@ snapshots: '@smithy/node-http-handler': 4.0.0 '@smithy/protocol-http': 5.0.0 '@smithy/smithy-client': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 '@smithy/url-parser': 4.0.0 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 @@ -17786,7 +17796,7 @@ snapshots: '@smithy/node-http-handler': 4.0.0 '@smithy/protocol-http': 5.0.0 '@smithy/smithy-client': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 '@smithy/url-parser': 4.0.0 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 @@ -17876,7 +17886,7 @@ snapshots: '@smithy/node-http-handler': 4.0.0 '@smithy/protocol-http': 5.0.0 '@smithy/smithy-client': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 '@smithy/url-parser': 4.0.0 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 @@ -17921,7 +17931,7 @@ snapshots: '@smithy/node-http-handler': 4.0.0 '@smithy/protocol-http': 5.0.0 '@smithy/smithy-client': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 '@smithy/url-parser': 4.0.0 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 @@ -17959,7 +17969,7 @@ snapshots: '@smithy/protocol-http': 5.0.0 '@smithy/signature-v4': 5.0.0 '@smithy/smithy-client': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 '@smithy/util-middleware': 4.0.0 fast-xml-parser: 4.4.1 tslib: 2.8.1 @@ -17977,7 +17987,7 @@ snapshots: '@aws-sdk/core': 3.723.0 '@aws-sdk/types': 3.723.0 '@smithy/property-provider': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@aws-sdk/credential-provider-http@3.679.0': @@ -18002,7 +18012,7 @@ snapshots: '@smithy/property-provider': 4.0.0 '@smithy/protocol-http': 5.0.0 '@smithy/smithy-client': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 '@smithy/util-stream': 4.0.0 tslib: 2.8.1 @@ -18038,7 +18048,7 @@ snapshots: '@smithy/credential-provider-imds': 4.0.0 '@smithy/property-provider': 4.0.0 '@smithy/shared-ini-file-loader': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 transitivePeerDependencies: - '@aws-sdk/client-sso-oidc' @@ -18057,7 +18067,7 @@ snapshots: '@smithy/credential-provider-imds': 4.0.0 '@smithy/property-provider': 4.0.0 '@smithy/shared-ini-file-loader': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 transitivePeerDependencies: - '@aws-sdk/client-sso-oidc' @@ -18094,7 +18104,7 @@ snapshots: '@smithy/credential-provider-imds': 4.0.0 '@smithy/property-provider': 4.0.0 '@smithy/shared-ini-file-loader': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 transitivePeerDependencies: - '@aws-sdk/client-sso-oidc' @@ -18113,7 +18123,7 @@ snapshots: '@smithy/credential-provider-imds': 4.0.0 '@smithy/property-provider': 4.0.0 '@smithy/shared-ini-file-loader': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 transitivePeerDependencies: - '@aws-sdk/client-sso-oidc' @@ -18135,7 +18145,7 @@ snapshots: '@aws-sdk/types': 3.723.0 '@smithy/property-provider': 4.0.0 '@smithy/shared-ini-file-loader': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@aws-sdk/credential-provider-sso@3.682.0(@aws-sdk/client-sso-oidc@3.682.0(@aws-sdk/client-sts@3.682.0))': @@ -18160,7 +18170,7 @@ snapshots: '@aws-sdk/types': 3.723.0 '@smithy/property-provider': 4.0.0 '@smithy/shared-ini-file-loader': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 transitivePeerDependencies: - '@aws-sdk/client-sso-oidc' @@ -18174,7 +18184,7 @@ snapshots: '@aws-sdk/types': 3.723.0 '@smithy/property-provider': 4.0.0 '@smithy/shared-ini-file-loader': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 transitivePeerDependencies: - '@aws-sdk/client-sso-oidc' @@ -18195,7 +18205,7 @@ snapshots: '@aws-sdk/core': 3.723.0 '@aws-sdk/types': 3.723.0 '@smithy/property-provider': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@aws-sdk/credential-provider-web-identity@3.723.0(@aws-sdk/client-sts@3.726.1)': @@ -18204,7 +18214,7 @@ snapshots: '@aws-sdk/core': 3.723.0 '@aws-sdk/types': 3.723.0 '@smithy/property-provider': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@aws-sdk/middleware-bucket-endpoint@3.679.0': @@ -18223,7 +18233,7 @@ snapshots: '@aws-sdk/util-arn-parser': 3.723.0 '@smithy/node-config-provider': 4.0.0 '@smithy/protocol-http': 5.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 '@smithy/util-config-provider': 4.0.0 tslib: 2.8.1 @@ -18238,7 +18248,7 @@ snapshots: dependencies: '@aws-sdk/types': 3.723.0 '@smithy/protocol-http': 5.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@aws-sdk/middleware-flexible-checksums@3.682.0': @@ -18265,7 +18275,7 @@ snapshots: '@smithy/is-array-buffer': 4.0.0 '@smithy/node-config-provider': 4.0.0 '@smithy/protocol-http': 5.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 '@smithy/util-middleware': 4.0.0 '@smithy/util-stream': 4.0.0 '@smithy/util-utf8': 4.0.0 @@ -18282,7 +18292,7 @@ snapshots: dependencies: '@aws-sdk/types': 3.723.0 '@smithy/protocol-http': 5.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@aws-sdk/middleware-location-constraint@3.679.0': @@ -18294,7 +18304,7 @@ snapshots: '@aws-sdk/middleware-location-constraint@3.723.0': dependencies: '@aws-sdk/types': 3.723.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@aws-sdk/middleware-logger@3.679.0': @@ -18306,7 +18316,7 @@ snapshots: '@aws-sdk/middleware-logger@3.723.0': dependencies: '@aws-sdk/types': 3.723.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@aws-sdk/middleware-recursion-detection@3.679.0': @@ -18320,7 +18330,7 @@ snapshots: dependencies: '@aws-sdk/types': 3.723.0 '@smithy/protocol-http': 5.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@aws-sdk/middleware-sdk-s3@3.685.0': @@ -18350,7 +18360,7 @@ snapshots: '@smithy/protocol-http': 5.0.0 '@smithy/signature-v4': 5.0.0 '@smithy/smithy-client': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 '@smithy/util-config-provider': 4.0.0 '@smithy/util-middleware': 4.0.0 '@smithy/util-stream': 4.0.0 @@ -18366,7 +18376,7 @@ snapshots: '@aws-sdk/middleware-ssec@3.723.0': dependencies: '@aws-sdk/types': 3.723.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@aws-sdk/middleware-user-agent@3.682.0': @@ -18386,7 +18396,7 @@ snapshots: '@aws-sdk/util-endpoints': 3.723.0 '@smithy/core': 3.0.0 '@smithy/protocol-http': 5.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@aws-sdk/middleware-user-agent@3.726.0': @@ -18396,7 +18406,7 @@ snapshots: '@aws-sdk/util-endpoints': 3.726.0 '@smithy/core': 3.0.0 '@smithy/protocol-http': 5.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@aws-sdk/region-config-resolver@3.679.0': @@ -18412,7 +18422,7 @@ snapshots: dependencies: '@aws-sdk/types': 3.723.0 '@smithy/node-config-provider': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 '@smithy/util-config-provider': 4.0.0 '@smithy/util-middleware': 4.0.0 tslib: 2.8.1 @@ -18426,7 +18436,18 @@ snapshots: '@smithy/protocol-http': 4.1.5 '@smithy/smithy-client': 3.4.2 '@smithy/types': 3.6.0 - tslib: 2.8.0 + tslib: 2.8.1 + + '@aws-sdk/s3-request-presigner@3.726.1': + dependencies: + '@aws-sdk/signature-v4-multi-region': 3.723.0 + '@aws-sdk/types': 3.723.0 + '@aws-sdk/util-format-url': 3.723.0 + '@smithy/middleware-endpoint': 4.0.0 + '@smithy/protocol-http': 5.0.0 + '@smithy/smithy-client': 4.0.0 + '@smithy/types': 4.1.0 + tslib: 2.8.1 '@aws-sdk/signature-v4-multi-region@3.685.0': dependencies: @@ -18443,7 +18464,7 @@ snapshots: '@aws-sdk/types': 3.723.0 '@smithy/protocol-http': 5.0.0 '@smithy/signature-v4': 5.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@aws-sdk/token-providers@3.679.0(@aws-sdk/client-sso-oidc@3.682.0(@aws-sdk/client-sts@3.682.0))': @@ -18461,7 +18482,7 @@ snapshots: '@aws-sdk/types': 3.723.0 '@smithy/property-provider': 4.0.0 '@smithy/shared-ini-file-loader': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@aws-sdk/token-providers@3.723.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1))': @@ -18470,7 +18491,7 @@ snapshots: '@aws-sdk/types': 3.723.0 '@smithy/property-provider': 4.0.0 '@smithy/shared-ini-file-loader': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@aws-sdk/types@3.679.0': @@ -18480,7 +18501,7 @@ snapshots: '@aws-sdk/types@3.723.0': dependencies: - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@aws-sdk/util-arn-parser@3.679.0': @@ -18501,14 +18522,14 @@ snapshots: '@aws-sdk/util-endpoints@3.723.0': dependencies: '@aws-sdk/types': 3.723.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 '@smithy/util-endpoints': 3.0.0 tslib: 2.8.1 '@aws-sdk/util-endpoints@3.726.0': dependencies: '@aws-sdk/types': 3.723.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 '@smithy/util-endpoints': 3.0.0 tslib: 2.8.1 @@ -18517,7 +18538,14 @@ snapshots: '@aws-sdk/types': 3.679.0 '@smithy/querystring-builder': 3.0.8 '@smithy/types': 3.6.0 - tslib: 2.8.0 + tslib: 2.8.1 + + '@aws-sdk/util-format-url@3.723.0': + dependencies: + '@aws-sdk/types': 3.723.0 + '@smithy/querystring-builder': 4.0.0 + '@smithy/types': 4.1.0 + tslib: 2.8.1 '@aws-sdk/util-locate-window@3.568.0': dependencies: @@ -18533,7 +18561,7 @@ snapshots: '@aws-sdk/util-user-agent-browser@3.723.0': dependencies: '@aws-sdk/types': 3.723.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 bowser: 2.11.0 tslib: 2.8.1 @@ -18550,7 +18578,7 @@ snapshots: '@aws-sdk/middleware-user-agent': 3.723.0 '@aws-sdk/types': 3.723.0 '@smithy/node-config-provider': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@aws-sdk/util-user-agent-node@3.726.0': @@ -18558,7 +18586,7 @@ snapshots: '@aws-sdk/middleware-user-agent': 3.726.0 '@aws-sdk/types': 3.723.0 '@smithy/node-config-provider': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@aws-sdk/xml-builder@3.679.0': @@ -18568,7 +18596,7 @@ snapshots: '@aws-sdk/xml-builder@3.723.0': dependencies: - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@babel/code-frame@7.24.2': @@ -20348,7 +20376,7 @@ snapshots: jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2))': + '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 @@ -20362,7 +20390,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.12.12)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2)) + jest-config: 29.7.0(@types/node@20.12.12)(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -21118,7 +21146,7 @@ snapshots: dependencies: playwright: 1.47.1 - '@pmmmwh/react-refresh-webpack-plugin@0.5.13(react-refresh@0.14.2)(type-fest@4.21.0)(webpack-hot-middleware@2.26.1)(webpack@5.94.0(@swc/core@1.5.7)(esbuild@0.20.2))': + '@pmmmwh/react-refresh-webpack-plugin@0.5.13(react-refresh@0.14.2)(type-fest@4.21.0)(webpack-hot-middleware@2.26.1)(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2))': dependencies: ansi-html-community: 0.0.8 core-js-pure: 3.37.0 @@ -21128,12 +21156,12 @@ snapshots: react-refresh: 0.14.2 schema-utils: 3.3.0 source-map: 0.7.4 - webpack: 5.94.0(@swc/core@1.5.7)(esbuild@0.20.2) + webpack: 5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2) optionalDependencies: type-fest: 4.21.0 webpack-hot-middleware: 2.26.1 - '@pmmmwh/react-refresh-webpack-plugin@0.5.13(react-refresh@0.14.2)(type-fest@4.21.0)(webpack-hot-middleware@2.26.1)(webpack@5.94.0(@swc/core@1.5.7))': + '@pmmmwh/react-refresh-webpack-plugin@0.5.13(react-refresh@0.14.2)(type-fest@4.21.0)(webpack-hot-middleware@2.26.1)(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15)))': dependencies: ansi-html-community: 0.0.8 core-js-pure: 3.37.0 @@ -21143,7 +21171,7 @@ snapshots: react-refresh: 0.14.2 schema-utils: 3.3.0 source-map: 0.7.4 - webpack: 5.94.0(@swc/core@1.5.7) + webpack: 5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15)) optionalDependencies: type-fest: 4.21.0 webpack-hot-middleware: 2.26.1 @@ -22220,11 +22248,6 @@ snapshots: '@smithy/types': 3.6.0 tslib: 2.8.1 - '@smithy/abort-controller@4.0.0': - dependencies: - '@smithy/types': 4.0.0 - tslib: 2.8.1 - '@smithy/abort-controller@4.0.1': dependencies: '@smithy/types': 4.1.0 @@ -22259,7 +22282,7 @@ snapshots: '@smithy/config-resolver@4.0.0': dependencies: '@smithy/node-config-provider': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 '@smithy/util-config-provider': 4.0.0 '@smithy/util-middleware': 4.0.0 tslib: 2.8.1 @@ -22279,7 +22302,7 @@ snapshots: dependencies: '@smithy/middleware-serde': 4.0.0 '@smithy/protocol-http': 5.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 '@smithy/util-body-length-browser': 4.0.0 '@smithy/util-middleware': 4.0.0 '@smithy/util-stream': 4.0.0 @@ -22298,7 +22321,7 @@ snapshots: dependencies: '@smithy/node-config-provider': 4.0.0 '@smithy/property-provider': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 '@smithy/url-parser': 4.0.0 tslib: 2.8.1 @@ -22312,7 +22335,7 @@ snapshots: '@smithy/eventstream-codec@4.0.0': dependencies: '@aws-crypto/crc32': 5.2.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 '@smithy/util-hex-encoding': 4.0.0 tslib: 2.8.1 @@ -22325,7 +22348,7 @@ snapshots: '@smithy/eventstream-serde-browser@4.0.0': dependencies: '@smithy/eventstream-serde-universal': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@smithy/eventstream-serde-config-resolver@3.0.8': @@ -22335,7 +22358,7 @@ snapshots: '@smithy/eventstream-serde-config-resolver@4.0.0': dependencies: - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@smithy/eventstream-serde-node@3.0.10': @@ -22347,7 +22370,7 @@ snapshots: '@smithy/eventstream-serde-node@4.0.0': dependencies: '@smithy/eventstream-serde-universal': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@smithy/eventstream-serde-universal@3.0.10': @@ -22359,7 +22382,7 @@ snapshots: '@smithy/eventstream-serde-universal@4.0.0': dependencies: '@smithy/eventstream-codec': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@smithy/fetch-http-handler@3.2.9': @@ -22382,7 +22405,7 @@ snapshots: dependencies: '@smithy/protocol-http': 5.0.0 '@smithy/querystring-builder': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 '@smithy/util-base64': 4.0.0 tslib: 2.8.1 @@ -22409,7 +22432,7 @@ snapshots: '@smithy/hash-node@4.0.0': dependencies: - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 '@smithy/util-buffer-from': 4.0.0 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 @@ -22433,7 +22456,7 @@ snapshots: '@smithy/invalid-dependency@4.0.0': dependencies: - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@smithy/is-array-buffer@2.2.0': @@ -22469,7 +22492,7 @@ snapshots: '@smithy/middleware-content-length@4.0.0': dependencies: '@smithy/protocol-http': 5.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@smithy/middleware-endpoint@3.2.1': @@ -22489,7 +22512,7 @@ snapshots: '@smithy/middleware-serde': 4.0.0 '@smithy/node-config-provider': 4.0.0 '@smithy/shared-ini-file-loader': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 '@smithy/url-parser': 4.0.0 '@smithy/util-middleware': 4.0.0 tslib: 2.8.1 @@ -22512,7 +22535,7 @@ snapshots: '@smithy/protocol-http': 5.0.0 '@smithy/service-error-classification': 4.0.0 '@smithy/smithy-client': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 '@smithy/util-middleware': 4.0.0 '@smithy/util-retry': 4.0.0 tslib: 2.8.1 @@ -22525,7 +22548,7 @@ snapshots: '@smithy/middleware-serde@4.0.0': dependencies: - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@smithy/middleware-stack@3.0.8': @@ -22535,7 +22558,7 @@ snapshots: '@smithy/middleware-stack@4.0.0': dependencies: - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@smithy/node-config-provider@3.1.9': @@ -22549,7 +22572,7 @@ snapshots: dependencies: '@smithy/property-provider': 4.0.0 '@smithy/shared-ini-file-loader': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@smithy/node-http-handler@3.2.5': @@ -22562,10 +22585,10 @@ snapshots: '@smithy/node-http-handler@4.0.0': dependencies: - '@smithy/abort-controller': 4.0.0 + '@smithy/abort-controller': 4.0.1 '@smithy/protocol-http': 5.0.0 '@smithy/querystring-builder': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@smithy/property-provider@3.1.8': @@ -22575,7 +22598,7 @@ snapshots: '@smithy/property-provider@4.0.0': dependencies: - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@smithy/protocol-http@4.1.5': @@ -22585,7 +22608,7 @@ snapshots: '@smithy/protocol-http@5.0.0': dependencies: - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@smithy/querystring-builder@3.0.8': @@ -22596,7 +22619,7 @@ snapshots: '@smithy/querystring-builder@4.0.0': dependencies: - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 '@smithy/util-uri-escape': 4.0.0 tslib: 2.8.1 @@ -22607,7 +22630,7 @@ snapshots: '@smithy/querystring-parser@4.0.0': dependencies: - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@smithy/service-error-classification@3.0.8': @@ -22616,7 +22639,7 @@ snapshots: '@smithy/service-error-classification@4.0.0': dependencies: - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 '@smithy/shared-ini-file-loader@3.1.9': dependencies: @@ -22625,7 +22648,7 @@ snapshots: '@smithy/shared-ini-file-loader@4.0.0': dependencies: - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@smithy/signature-v4@4.2.1': @@ -22643,7 +22666,7 @@ snapshots: dependencies: '@smithy/is-array-buffer': 4.0.0 '@smithy/protocol-http': 5.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 '@smithy/util-hex-encoding': 4.0.0 '@smithy/util-middleware': 4.0.0 '@smithy/util-uri-escape': 4.0.0 @@ -22666,7 +22689,7 @@ snapshots: '@smithy/middleware-endpoint': 4.0.0 '@smithy/middleware-stack': 4.0.0 '@smithy/protocol-http': 5.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 '@smithy/util-stream': 4.0.0 tslib: 2.8.1 @@ -22691,7 +22714,7 @@ snapshots: '@smithy/url-parser@4.0.0': dependencies: '@smithy/querystring-parser': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@smithy/util-base64@3.0.0': @@ -22757,7 +22780,7 @@ snapshots: dependencies: '@smithy/property-provider': 4.0.0 '@smithy/smithy-client': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 bowser: 2.11.0 tslib: 2.8.1 @@ -22778,7 +22801,7 @@ snapshots: '@smithy/node-config-provider': 4.0.0 '@smithy/property-provider': 4.0.0 '@smithy/smithy-client': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@smithy/util-endpoints@2.1.4': @@ -22790,7 +22813,7 @@ snapshots: '@smithy/util-endpoints@3.0.0': dependencies: '@smithy/node-config-provider': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@smithy/util-hex-encoding@3.0.0': @@ -22808,7 +22831,7 @@ snapshots: '@smithy/util-middleware@4.0.0': dependencies: - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@smithy/util-retry@3.0.8': @@ -22820,7 +22843,7 @@ snapshots: '@smithy/util-retry@4.0.0': dependencies: '@smithy/service-error-classification': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@smithy/util-stream@3.2.1': @@ -22838,7 +22861,7 @@ snapshots: dependencies: '@smithy/fetch-http-handler': 5.0.0 '@smithy/node-http-handler': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 '@smithy/util-base64': 4.0.0 '@smithy/util-buffer-from': 4.0.0 '@smithy/util-hex-encoding': 4.0.0 @@ -23010,7 +23033,7 @@ snapshots: transitivePeerDependencies: - webpack-sources - '@storybook/builder-webpack5@8.4.4(@swc/core@1.5.7)(esbuild@0.20.2)(storybook@8.4.4(prettier@3.4.2))(typescript@5.7.2)': + '@storybook/builder-webpack5@8.4.4(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2)(storybook@8.4.4(prettier@3.4.2))(typescript@5.7.2)': dependencies: '@storybook/core-webpack': 8.4.4(storybook@8.4.4(prettier@3.4.2)) '@types/node': 22.5.5 @@ -23019,23 +23042,23 @@ snapshots: case-sensitive-paths-webpack-plugin: 2.4.0 cjs-module-lexer: 1.3.1 constants-browserify: 1.0.0 - css-loader: 6.11.0(webpack@5.94.0(@swc/core@1.5.7)(esbuild@0.20.2)) + css-loader: 6.11.0(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2)) es-module-lexer: 1.5.2 - fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.7.2)(webpack@5.94.0(@swc/core@1.5.7)(esbuild@0.20.2)) - html-webpack-plugin: 5.6.0(webpack@5.94.0(@swc/core@1.5.7)(esbuild@0.20.2)) + fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.7.2)(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2)) + html-webpack-plugin: 5.6.0(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2)) magic-string: 0.30.12 path-browserify: 1.0.1 process: 0.11.10 semver: 7.6.3 storybook: 8.4.4(prettier@3.4.2) - style-loader: 3.3.4(webpack@5.94.0(@swc/core@1.5.7)(esbuild@0.20.2)) - terser-webpack-plugin: 5.3.10(@swc/core@1.5.7)(esbuild@0.20.2)(webpack@5.94.0(@swc/core@1.5.7)(esbuild@0.20.2)) + style-loader: 3.3.4(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2)) + terser-webpack-plugin: 5.3.10(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2)(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2)) ts-dedent: 2.2.0 url: 0.11.3 util: 0.12.5 util-deprecate: 1.0.2 - webpack: 5.94.0(@swc/core@1.5.7)(esbuild@0.20.2) - webpack-dev-middleware: 6.1.3(webpack@5.94.0(@swc/core@1.5.7)(esbuild@0.20.2)) + webpack: 5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2) + webpack-dev-middleware: 6.1.3(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2)) webpack-hot-middleware: 2.26.1 webpack-virtual-modules: 0.6.2 optionalDependencies: @@ -23047,7 +23070,7 @@ snapshots: - uglify-js - webpack-cli - '@storybook/builder-webpack5@8.4.4(@swc/core@1.5.7)(storybook@8.4.4(prettier@3.4.2))(typescript@5.7.2)': + '@storybook/builder-webpack5@8.4.4(@swc/core@1.5.7(@swc/helpers@0.5.15))(storybook@8.4.4(prettier@3.4.2))(typescript@5.7.2)': dependencies: '@storybook/core-webpack': 8.4.4(storybook@8.4.4(prettier@3.4.2)) '@types/node': 22.5.5 @@ -23056,23 +23079,23 @@ snapshots: case-sensitive-paths-webpack-plugin: 2.4.0 cjs-module-lexer: 1.3.1 constants-browserify: 1.0.0 - css-loader: 6.11.0(webpack@5.94.0(@swc/core@1.5.7)) + css-loader: 6.11.0(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))) es-module-lexer: 1.5.2 - fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.7.2)(webpack@5.94.0(@swc/core@1.5.7)) - html-webpack-plugin: 5.6.0(webpack@5.94.0(@swc/core@1.5.7)) + fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.7.2)(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))) + html-webpack-plugin: 5.6.0(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))) magic-string: 0.30.12 path-browserify: 1.0.1 process: 0.11.10 semver: 7.6.3 storybook: 8.4.4(prettier@3.4.2) - style-loader: 3.3.4(webpack@5.94.0(@swc/core@1.5.7)) - terser-webpack-plugin: 5.3.10(@swc/core@1.5.7)(webpack@5.94.0(@swc/core@1.5.7)) + style-loader: 3.3.4(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))) + terser-webpack-plugin: 5.3.10(@swc/core@1.5.7(@swc/helpers@0.5.15))(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))) ts-dedent: 2.2.0 url: 0.11.3 util: 0.12.5 util-deprecate: 1.0.2 - webpack: 5.94.0(@swc/core@1.5.7) - webpack-dev-middleware: 6.1.3(webpack@5.94.0(@swc/core@1.5.7)) + webpack: 5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15)) + webpack-dev-middleware: 6.1.3(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))) webpack-hot-middleware: 2.26.1 webpack-virtual-modules: 0.6.2 optionalDependencies: @@ -23168,7 +23191,7 @@ snapshots: dependencies: storybook: 8.4.4(prettier@3.4.2) - '@storybook/nextjs@8.4.4(@fern-api/next@14.2.9-fork.2(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.47.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.0))(@swc/core@1.5.7)(esbuild@0.20.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.0)(storybook@8.4.4(prettier@3.4.2))(type-fest@4.21.0)(typescript@5.7.2)(webpack-hot-middleware@2.26.1)(webpack@5.94.0(@swc/core@1.5.7)(esbuild@0.20.2))': + '@storybook/nextjs@8.4.4(@fern-api/next@14.2.9-fork.2(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.47.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.0))(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.0)(storybook@8.4.4(prettier@3.4.2))(type-fest@4.21.0)(typescript@5.7.2)(webpack-hot-middleware@2.26.1)(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2))': dependencies: '@babel/core': 7.26.0 '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.26.0) @@ -23183,31 +23206,31 @@ snapshots: '@babel/preset-react': 7.25.9(@babel/core@7.26.0) '@babel/preset-typescript': 7.26.0(@babel/core@7.26.0) '@babel/runtime': 7.26.0 - '@pmmmwh/react-refresh-webpack-plugin': 0.5.13(react-refresh@0.14.2)(type-fest@4.21.0)(webpack-hot-middleware@2.26.1)(webpack@5.94.0(@swc/core@1.5.7)(esbuild@0.20.2)) - '@storybook/builder-webpack5': 8.4.4(@swc/core@1.5.7)(esbuild@0.20.2)(storybook@8.4.4(prettier@3.4.2))(typescript@5.7.2) - '@storybook/preset-react-webpack': 8.4.4(@storybook/test@8.4.4(storybook@8.4.4(prettier@3.4.2)))(@swc/core@1.5.7)(esbuild@0.20.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.4(prettier@3.4.2))(typescript@5.7.2) + '@pmmmwh/react-refresh-webpack-plugin': 0.5.13(react-refresh@0.14.2)(type-fest@4.21.0)(webpack-hot-middleware@2.26.1)(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2)) + '@storybook/builder-webpack5': 8.4.4(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2)(storybook@8.4.4(prettier@3.4.2))(typescript@5.7.2) + '@storybook/preset-react-webpack': 8.4.4(@storybook/test@8.4.4(storybook@8.4.4(prettier@3.4.2)))(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.4(prettier@3.4.2))(typescript@5.7.2) '@storybook/react': 8.4.4(@storybook/test@8.4.4(storybook@8.4.4(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.4(prettier@3.4.2))(typescript@5.7.2) '@storybook/test': 8.4.4(storybook@8.4.4(prettier@3.4.2)) '@types/node': 22.5.5 '@types/semver': 7.5.8 - babel-loader: 9.1.3(@babel/core@7.26.0)(webpack@5.94.0(@swc/core@1.5.7)(esbuild@0.20.2)) - css-loader: 6.11.0(webpack@5.94.0(@swc/core@1.5.7)(esbuild@0.20.2)) + babel-loader: 9.1.3(@babel/core@7.26.0)(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2)) + css-loader: 6.11.0(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2)) find-up: 5.0.0 image-size: 1.1.1 loader-utils: 3.2.1 next: '@fern-api/next@14.2.9-fork.2(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.47.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.0)' - node-polyfill-webpack-plugin: 2.0.1(webpack@5.94.0(@swc/core@1.5.7)(esbuild@0.20.2)) + node-polyfill-webpack-plugin: 2.0.1(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2)) pnp-webpack-plugin: 1.7.0(typescript@5.7.2) postcss: 8.4.31 - postcss-loader: 8.1.1(postcss@8.4.31)(typescript@5.7.2)(webpack@5.94.0(@swc/core@1.5.7)(esbuild@0.20.2)) + postcss-loader: 8.1.1(postcss@8.4.31)(typescript@5.7.2)(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2)) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-refresh: 0.14.2 resolve-url-loader: 5.0.0 - sass-loader: 13.3.3(sass@1.77.0)(webpack@5.94.0(@swc/core@1.5.7)(esbuild@0.20.2)) + sass-loader: 13.3.3(sass@1.77.0)(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2)) semver: 7.6.3 storybook: 8.4.4(prettier@3.4.2) - style-loader: 3.3.4(webpack@5.94.0(@swc/core@1.5.7)(esbuild@0.20.2)) + style-loader: 3.3.4(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2)) styled-jsx: 5.1.6(@babel/core@7.26.0)(react@18.3.1) ts-dedent: 2.2.0 tsconfig-paths: 4.2.0 @@ -23215,7 +23238,7 @@ snapshots: optionalDependencies: sharp: 0.33.3 typescript: 5.7.2 - webpack: 5.94.0(@swc/core@1.5.7)(esbuild@0.20.2) + webpack: 5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2) transitivePeerDependencies: - '@rspack/core' - '@swc/core' @@ -23235,7 +23258,7 @@ snapshots: - webpack-hot-middleware - webpack-plugin-serve - '@storybook/nextjs@8.4.4(@fern-api/next@14.2.9-fork.2(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.47.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.0))(@swc/core@1.5.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.0)(storybook@8.4.4(prettier@3.4.2))(type-fest@4.21.0)(typescript@5.7.2)(webpack-hot-middleware@2.26.1)(webpack@5.94.0(@swc/core@1.5.7))': + '@storybook/nextjs@8.4.4(@fern-api/next@14.2.9-fork.2(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.47.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.0))(@swc/core@1.5.7(@swc/helpers@0.5.15))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.0)(storybook@8.4.4(prettier@3.4.2))(type-fest@4.21.0)(typescript@5.7.2)(webpack-hot-middleware@2.26.1)(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15)))': dependencies: '@babel/core': 7.26.0 '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.26.0) @@ -23250,31 +23273,31 @@ snapshots: '@babel/preset-react': 7.25.9(@babel/core@7.26.0) '@babel/preset-typescript': 7.26.0(@babel/core@7.26.0) '@babel/runtime': 7.26.0 - '@pmmmwh/react-refresh-webpack-plugin': 0.5.13(react-refresh@0.14.2)(type-fest@4.21.0)(webpack-hot-middleware@2.26.1)(webpack@5.94.0(@swc/core@1.5.7)) - '@storybook/builder-webpack5': 8.4.4(@swc/core@1.5.7)(storybook@8.4.4(prettier@3.4.2))(typescript@5.7.2) - '@storybook/preset-react-webpack': 8.4.4(@storybook/test@8.4.4(storybook@8.4.4(prettier@3.4.2)))(@swc/core@1.5.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.4(prettier@3.4.2))(typescript@5.7.2) + '@pmmmwh/react-refresh-webpack-plugin': 0.5.13(react-refresh@0.14.2)(type-fest@4.21.0)(webpack-hot-middleware@2.26.1)(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))) + '@storybook/builder-webpack5': 8.4.4(@swc/core@1.5.7(@swc/helpers@0.5.15))(storybook@8.4.4(prettier@3.4.2))(typescript@5.7.2) + '@storybook/preset-react-webpack': 8.4.4(@storybook/test@8.4.4(storybook@8.4.4(prettier@3.4.2)))(@swc/core@1.5.7(@swc/helpers@0.5.15))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.4(prettier@3.4.2))(typescript@5.7.2) '@storybook/react': 8.4.4(@storybook/test@8.4.4(storybook@8.4.4(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.4(prettier@3.4.2))(typescript@5.7.2) '@storybook/test': 8.4.4(storybook@8.4.4(prettier@3.4.2)) '@types/node': 22.5.5 '@types/semver': 7.5.8 - babel-loader: 9.1.3(@babel/core@7.26.0)(webpack@5.94.0(@swc/core@1.5.7)) - css-loader: 6.11.0(webpack@5.94.0(@swc/core@1.5.7)) + babel-loader: 9.1.3(@babel/core@7.26.0)(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))) + css-loader: 6.11.0(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))) find-up: 5.0.0 image-size: 1.1.1 loader-utils: 3.2.1 next: '@fern-api/next@14.2.9-fork.2(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.47.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.0)' - node-polyfill-webpack-plugin: 2.0.1(webpack@5.94.0(@swc/core@1.5.7)) + node-polyfill-webpack-plugin: 2.0.1(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))) pnp-webpack-plugin: 1.7.0(typescript@5.7.2) postcss: 8.4.31 - postcss-loader: 8.1.1(postcss@8.4.31)(typescript@5.7.2)(webpack@5.94.0(@swc/core@1.5.7)) + postcss-loader: 8.1.1(postcss@8.4.31)(typescript@5.7.2)(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-refresh: 0.14.2 resolve-url-loader: 5.0.0 - sass-loader: 13.3.3(sass@1.77.0)(webpack@5.94.0(@swc/core@1.5.7)) + sass-loader: 13.3.3(sass@1.77.0)(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))) semver: 7.6.3 storybook: 8.4.4(prettier@3.4.2) - style-loader: 3.3.4(webpack@5.94.0(@swc/core@1.5.7)) + style-loader: 3.3.4(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))) styled-jsx: 5.1.6(@babel/core@7.26.0)(react@18.3.1) ts-dedent: 2.2.0 tsconfig-paths: 4.2.0 @@ -23282,7 +23305,7 @@ snapshots: optionalDependencies: sharp: 0.33.3 typescript: 5.7.2 - webpack: 5.94.0(@swc/core@1.5.7) + webpack: 5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15)) transitivePeerDependencies: - '@rspack/core' - '@swc/core' @@ -23302,11 +23325,11 @@ snapshots: - webpack-hot-middleware - webpack-plugin-serve - '@storybook/preset-react-webpack@8.4.4(@storybook/test@8.4.4(storybook@8.4.4(prettier@3.4.2)))(@swc/core@1.5.7)(esbuild@0.20.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.4(prettier@3.4.2))(typescript@5.7.2)': + '@storybook/preset-react-webpack@8.4.4(@storybook/test@8.4.4(storybook@8.4.4(prettier@3.4.2)))(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.4(prettier@3.4.2))(typescript@5.7.2)': dependencies: '@storybook/core-webpack': 8.4.4(storybook@8.4.4(prettier@3.4.2)) '@storybook/react': 8.4.4(@storybook/test@8.4.4(storybook@8.4.4(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.4(prettier@3.4.2))(typescript@5.7.2) - '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.7.2)(webpack@5.94.0(@swc/core@1.5.7)(esbuild@0.20.2)) + '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.7.2)(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2)) '@types/node': 22.5.5 '@types/semver': 7.5.8 find-up: 5.0.0 @@ -23318,7 +23341,7 @@ snapshots: semver: 7.6.3 storybook: 8.4.4(prettier@3.4.2) tsconfig-paths: 4.2.0 - webpack: 5.94.0(@swc/core@1.5.7)(esbuild@0.20.2) + webpack: 5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2) optionalDependencies: typescript: 5.7.2 transitivePeerDependencies: @@ -23329,11 +23352,11 @@ snapshots: - uglify-js - webpack-cli - '@storybook/preset-react-webpack@8.4.4(@storybook/test@8.4.4(storybook@8.4.4(prettier@3.4.2)))(@swc/core@1.5.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.4(prettier@3.4.2))(typescript@5.7.2)': + '@storybook/preset-react-webpack@8.4.4(@storybook/test@8.4.4(storybook@8.4.4(prettier@3.4.2)))(@swc/core@1.5.7(@swc/helpers@0.5.15))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.4(prettier@3.4.2))(typescript@5.7.2)': dependencies: '@storybook/core-webpack': 8.4.4(storybook@8.4.4(prettier@3.4.2)) '@storybook/react': 8.4.4(@storybook/test@8.4.4(storybook@8.4.4(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.4(prettier@3.4.2))(typescript@5.7.2) - '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.7.2)(webpack@5.94.0(@swc/core@1.5.7)) + '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.7.2)(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))) '@types/node': 22.5.5 '@types/semver': 7.5.8 find-up: 5.0.0 @@ -23345,7 +23368,7 @@ snapshots: semver: 7.6.3 storybook: 8.4.4(prettier@3.4.2) tsconfig-paths: 4.2.0 - webpack: 5.94.0(@swc/core@1.5.7) + webpack: 5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15)) optionalDependencies: typescript: 5.7.2 transitivePeerDependencies: @@ -23377,7 +23400,7 @@ snapshots: dependencies: storybook: 8.4.4(prettier@3.4.2) - '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.7.2)(webpack@5.94.0(@swc/core@1.5.7)(esbuild@0.20.2))': + '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.7.2)(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2))': dependencies: debug: 4.3.7 endent: 2.1.0 @@ -23387,11 +23410,11 @@ snapshots: react-docgen-typescript: 2.2.2(typescript@5.7.2) tslib: 2.8.1 typescript: 5.7.2 - webpack: 5.94.0(@swc/core@1.5.7)(esbuild@0.20.2) + webpack: 5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2) transitivePeerDependencies: - supports-color - '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.7.2)(webpack@5.94.0(@swc/core@1.5.7))': + '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.7.2)(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15)))': dependencies: debug: 4.3.7 endent: 2.1.0 @@ -23401,7 +23424,7 @@ snapshots: react-docgen-typescript: 2.2.2(typescript@5.7.2) tslib: 2.8.1 typescript: 5.7.2 - webpack: 5.94.0(@swc/core@1.5.7) + webpack: 5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15)) transitivePeerDependencies: - supports-color @@ -23501,7 +23524,7 @@ snapshots: '@swc/core-win32-x64-msvc@1.5.7': optional: true - '@swc/core@1.5.7': + '@swc/core@1.5.7(@swc/helpers@0.5.15)': dependencies: '@swc/counter': 0.1.3 '@swc/types': 0.1.7 @@ -23516,6 +23539,7 @@ snapshots: '@swc/core-win32-arm64-msvc': 1.5.7 '@swc/core-win32-ia32-msvc': 1.5.7 '@swc/core-win32-x64-msvc': 1.5.7 + '@swc/helpers': 0.5.15 optional: true '@swc/counter@0.1.3': {} @@ -23538,18 +23562,26 @@ snapshots: dependencies: defer-to-connect: 2.0.1 - '@tailwindcss/forms@0.5.7(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2)))': + '@tailwindcss/forms@0.5.7(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2)))': dependencies: mini-svg-data-uri: 1.4.4 - tailwindcss: 3.4.17(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2)) + tailwindcss: 3.4.17(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2)) - '@tailwindcss/typography@0.5.13(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2)))': + '@tailwindcss/typography@0.5.13(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2)))': dependencies: lodash.castarray: 4.4.0 lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 postcss-selector-parser: 6.0.10 - tailwindcss: 3.4.17(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2)) + tailwindcss: 3.4.17(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2)) + + '@tailwindcss/typography@0.5.13(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@22.5.5)(typescript@5.7.2)))': + dependencies: + lodash.castarray: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + postcss-selector-parser: 6.0.10 + tailwindcss: 3.4.17(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@22.5.5)(typescript@5.7.2)) '@tanem/svg-injector@10.1.68': dependencies: @@ -25864,19 +25896,19 @@ snapshots: transitivePeerDependencies: - supports-color - babel-loader@9.1.3(@babel/core@7.26.0)(webpack@5.94.0(@swc/core@1.5.7)(esbuild@0.20.2)): + babel-loader@9.1.3(@babel/core@7.26.0)(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2)): dependencies: '@babel/core': 7.26.0 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.94.0(@swc/core@1.5.7)(esbuild@0.20.2) + webpack: 5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2) - babel-loader@9.1.3(@babel/core@7.26.0)(webpack@5.94.0(@swc/core@1.5.7)): + babel-loader@9.1.3(@babel/core@7.26.0)(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))): dependencies: '@babel/core': 7.26.0 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.94.0(@swc/core@1.5.7) + webpack: 5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15)) babel-plugin-istanbul@6.1.1: dependencies: @@ -26641,13 +26673,13 @@ snapshots: safe-buffer: 5.2.1 sha.js: 2.4.11 - create-jest@29.7.0(@types/node@18.19.33)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2)): + create-jest@29.7.0(@types/node@18.19.33)(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@18.19.33)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2)) + jest-config: 29.7.0(@types/node@18.19.33)(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -26694,7 +26726,7 @@ snapshots: css-functions-list@3.2.2: {} - css-loader@6.11.0(webpack@5.94.0(@swc/core@1.5.7)(esbuild@0.20.2)): + css-loader@6.11.0(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2)): dependencies: icss-utils: 5.1.0(postcss@8.4.31) postcss: 8.4.31 @@ -26705,9 +26737,9 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.6.3 optionalDependencies: - webpack: 5.94.0(@swc/core@1.5.7)(esbuild@0.20.2) + webpack: 5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2) - css-loader@6.11.0(webpack@5.94.0(@swc/core@1.5.7)): + css-loader@6.11.0(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))): dependencies: icss-utils: 5.1.0(postcss@8.4.31) postcss: 8.4.31 @@ -26718,7 +26750,7 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.6.3 optionalDependencies: - webpack: 5.94.0(@swc/core@1.5.7) + webpack: 5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15)) css-select@4.3.0: dependencies: @@ -27740,7 +27772,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.18.1(eslint@9.17.0(jiti@1.21.7))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0)(eslint@9.17.0(jiti@1.21.7)))(eslint@9.17.0(jiti@1.21.7)): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.18.1(eslint@9.17.0(jiti@1.21.7))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@9.17.0(jiti@1.21.7)): dependencies: debug: 3.2.7 optionalDependencies: @@ -27772,7 +27804,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.17.0(jiti@1.21.7) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.18.1(eslint@9.17.0(jiti@1.21.7))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0)(eslint@9.17.0(jiti@1.21.7)))(eslint@9.17.0(jiti@1.21.7)) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.18.1(eslint@9.17.0(jiti@1.21.7))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@9.17.0(jiti@1.21.7)) hasown: 2.0.2 is-core-module: 2.16.0 is-glob: 4.0.3 @@ -27846,11 +27878,11 @@ snapshots: - supports-color - typescript - eslint-plugin-tailwindcss@3.17.5(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2))): + eslint-plugin-tailwindcss@3.17.5(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2))): dependencies: fast-glob: 3.3.2 postcss: 8.4.31 - tailwindcss: 3.4.17(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2)) + tailwindcss: 3.4.17(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2)) eslint-plugin-turbo@2.3.3(eslint@9.17.0(jiti@1.21.7)): dependencies: @@ -28377,7 +28409,7 @@ snapshots: cross-spawn: 7.0.5 signal-exit: 4.1.0 - fork-ts-checker-webpack-plugin@8.0.0(typescript@5.7.2)(webpack@5.94.0(@swc/core@1.5.7)(esbuild@0.20.2)): + fork-ts-checker-webpack-plugin@8.0.0(typescript@5.7.2)(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2)): dependencies: '@babel/code-frame': 7.26.2 chalk: 4.1.2 @@ -28392,9 +28424,9 @@ snapshots: semver: 7.6.3 tapable: 2.2.1 typescript: 5.7.2 - webpack: 5.94.0(@swc/core@1.5.7)(esbuild@0.20.2) + webpack: 5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2) - fork-ts-checker-webpack-plugin@8.0.0(typescript@5.7.2)(webpack@5.94.0(@swc/core@1.5.7)): + fork-ts-checker-webpack-plugin@8.0.0(typescript@5.7.2)(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))): dependencies: '@babel/code-frame': 7.26.2 chalk: 4.1.2 @@ -28409,7 +28441,7 @@ snapshots: semver: 7.6.3 tapable: 2.2.1 typescript: 5.7.2 - webpack: 5.94.0(@swc/core@1.5.7) + webpack: 5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15)) form-data@2.5.1: dependencies: @@ -29108,7 +29140,7 @@ snapshots: html-void-elements@3.0.0: {} - html-webpack-plugin@5.6.0(webpack@5.94.0(@swc/core@1.5.7)(esbuild@0.20.2)): + html-webpack-plugin@5.6.0(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2)): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -29116,9 +29148,9 @@ snapshots: pretty-error: 4.0.0 tapable: 2.2.1 optionalDependencies: - webpack: 5.94.0(@swc/core@1.5.7)(esbuild@0.20.2) + webpack: 5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2) - html-webpack-plugin@5.6.0(webpack@5.94.0(@swc/core@1.5.7)): + html-webpack-plugin@5.6.0(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -29126,7 +29158,7 @@ snapshots: pretty-error: 4.0.0 tapable: 2.2.1 optionalDependencies: - webpack: 5.94.0(@swc/core@1.5.7) + webpack: 5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15)) htmlparser2@6.1.0: dependencies: @@ -29751,16 +29783,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@18.19.33)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2)): + jest-cli@29.7.0(@types/node@18.19.33)(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2)) + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@18.19.33)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2)) + create-jest: 29.7.0(@types/node@18.19.33)(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2)) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@18.19.33)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2)) + jest-config: 29.7.0(@types/node@18.19.33)(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -29770,7 +29802,7 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@18.19.33)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2)): + jest-config@29.7.0(@types/node@18.19.33)(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2)): dependencies: '@babel/core': 7.26.0 '@jest/test-sequencer': 29.7.0 @@ -29796,12 +29828,12 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 18.19.33 - ts-node: 10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2) + ts-node: 10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2) transitivePeerDependencies: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@20.12.12)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2)): + jest-config@29.7.0(@types/node@20.12.12)(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2)): dependencies: '@babel/core': 7.26.0 '@jest/test-sequencer': 29.7.0 @@ -29827,7 +29859,7 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 20.12.12 - ts-node: 10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2) + ts-node: 10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -30053,12 +30085,12 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@18.19.33)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2)): + jest@29.7.0(@types/node@18.19.33)(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2)) + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2)) '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@18.19.33)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2)) + jest-cli: 29.7.0(@types/node@18.19.33)(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -31633,7 +31665,7 @@ snapshots: node-int64@0.4.0: {} - node-polyfill-webpack-plugin@2.0.1(webpack@5.94.0(@swc/core@1.5.7)(esbuild@0.20.2)): + node-polyfill-webpack-plugin@2.0.1(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2)): dependencies: assert: 2.1.0 browserify-zlib: 0.2.0 @@ -31660,9 +31692,9 @@ snapshots: url: 0.11.3 util: 0.12.5 vm-browserify: 1.1.2 - webpack: 5.94.0(@swc/core@1.5.7)(esbuild@0.20.2) + webpack: 5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2) - node-polyfill-webpack-plugin@2.0.1(webpack@5.94.0(@swc/core@1.5.7)): + node-polyfill-webpack-plugin@2.0.1(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))): dependencies: assert: 2.1.0 browserify-zlib: 0.2.0 @@ -31689,7 +31721,7 @@ snapshots: url: 0.11.3 util: 0.12.5 vm-browserify: 1.1.2 - webpack: 5.94.0(@swc/core@1.5.7) + webpack: 5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15)) node-releases@2.0.18: {} @@ -32223,21 +32255,29 @@ snapshots: camelcase-css: 2.0.1 postcss: 8.4.31 - postcss-load-config@3.1.4(postcss@8.4.31)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2)): + postcss-load-config@3.1.4(postcss@8.4.31)(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2)): dependencies: lilconfig: 2.1.0 yaml: 1.10.2 optionalDependencies: postcss: 8.4.31 - ts-node: 10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2) + ts-node: 10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2) + + postcss-load-config@4.0.2(postcss@8.4.31)(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2)): + dependencies: + lilconfig: 3.1.3 + yaml: 2.4.2 + optionalDependencies: + postcss: 8.4.31 + ts-node: 10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2) - postcss-load-config@4.0.2(postcss@8.4.31)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2)): + postcss-load-config@4.0.2(postcss@8.4.31)(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@22.5.5)(typescript@5.7.2)): dependencies: lilconfig: 3.1.3 yaml: 2.4.2 optionalDependencies: postcss: 8.4.31 - ts-node: 10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2) + ts-node: 10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@22.5.5)(typescript@5.7.2) postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.4.31)(tsx@4.19.2)(yaml@2.4.2): dependencies: @@ -32248,25 +32288,25 @@ snapshots: tsx: 4.19.2 yaml: 2.4.2 - postcss-loader@8.1.1(postcss@8.4.31)(typescript@5.7.2)(webpack@5.94.0(@swc/core@1.5.7)(esbuild@0.20.2)): + postcss-loader@8.1.1(postcss@8.4.31)(typescript@5.7.2)(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2)): dependencies: cosmiconfig: 9.0.0(typescript@5.7.2) jiti: 1.21.0 postcss: 8.4.31 semver: 7.6.3 optionalDependencies: - webpack: 5.94.0(@swc/core@1.5.7)(esbuild@0.20.2) + webpack: 5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2) transitivePeerDependencies: - typescript - postcss-loader@8.1.1(postcss@8.4.31)(typescript@5.7.2)(webpack@5.94.0(@swc/core@1.5.7)): + postcss-loader@8.1.1(postcss@8.4.31)(typescript@5.7.2)(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))): dependencies: cosmiconfig: 9.0.0(typescript@5.7.2) jiti: 1.21.0 postcss: 8.4.31 semver: 7.6.3 optionalDependencies: - webpack: 5.94.0(@swc/core@1.5.7) + webpack: 5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15)) transitivePeerDependencies: - typescript @@ -32657,17 +32697,17 @@ snapshots: iconv-lite: 0.4.24 unpipe: 1.0.0 - raw-loader@4.0.2(webpack@5.94.0(@swc/core@1.5.7)(esbuild@0.20.2)): + raw-loader@4.0.2(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2)): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.94.0(@swc/core@1.5.7)(esbuild@0.20.2) + webpack: 5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2) - raw-loader@4.0.2(webpack@5.94.0(@swc/core@1.5.7)): + raw-loader@4.0.2(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.94.0(@swc/core@1.5.7) + webpack: 5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15)) rc@1.2.8: dependencies: @@ -33454,17 +33494,17 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@13.3.3(sass@1.77.0)(webpack@5.94.0(@swc/core@1.5.7)(esbuild@0.20.2)): + sass-loader@13.3.3(sass@1.77.0)(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2)): dependencies: neo-async: 2.6.2 - webpack: 5.94.0(@swc/core@1.5.7)(esbuild@0.20.2) + webpack: 5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2) optionalDependencies: sass: 1.77.0 - sass-loader@13.3.3(sass@1.77.0)(webpack@5.94.0(@swc/core@1.5.7)): + sass-loader@13.3.3(sass@1.77.0)(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))): dependencies: neo-async: 2.6.2 - webpack: 5.94.0(@swc/core@1.5.7) + webpack: 5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15)) optionalDependencies: sass: 1.77.0 @@ -34094,13 +34134,13 @@ snapshots: '@tokenizer/token': 0.3.0 peek-readable: 4.1.0 - style-loader@3.3.4(webpack@5.94.0(@swc/core@1.5.7)(esbuild@0.20.2)): + style-loader@3.3.4(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2)): dependencies: - webpack: 5.94.0(@swc/core@1.5.7)(esbuild@0.20.2) + webpack: 5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2) - style-loader@3.3.4(webpack@5.94.0(@swc/core@1.5.7)): + style-loader@3.3.4(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))): dependencies: - webpack: 5.94.0(@swc/core@1.5.7) + webpack: 5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15)) style-to-js@1.1.3: dependencies: @@ -34171,10 +34211,10 @@ snapshots: stylelint: 16.5.0(typescript@5.7.2) stylelint-config-recommended: 14.0.0(stylelint@16.5.0(typescript@5.7.2)) - stylelint-config-tailwindcss@0.0.7(stylelint@16.5.0(typescript@5.7.2))(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2))): + stylelint-config-tailwindcss@0.0.7(stylelint@16.5.0(typescript@5.7.2))(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2))): dependencies: stylelint: 16.5.0(typescript@5.7.2) - tailwindcss: 3.4.17(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2)) + tailwindcss: 3.4.17(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2)) stylelint-scss@6.3.0(stylelint@16.5.0(typescript@5.7.2)): dependencies: @@ -34328,11 +34368,38 @@ snapshots: dependencies: '@babel/runtime': 7.26.0 - tailwindcss-animate@1.0.7(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2))): + tailwindcss-animate@1.0.7(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@22.5.5)(typescript@5.7.2))): dependencies: - tailwindcss: 3.4.17(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2)) + tailwindcss: 3.4.17(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@22.5.5)(typescript@5.7.2)) + + tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2)): + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.2 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.7 + lilconfig: 3.1.3 + micromatch: 4.0.8 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.1.1 + postcss: 8.4.31 + postcss-import: 15.1.0(postcss@8.4.31) + postcss-js: 4.0.1(postcss@8.4.31) + postcss-load-config: 4.0.2(postcss@8.4.31)(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2)) + postcss-nested: 6.2.0(postcss@8.4.31) + postcss-selector-parser: 6.1.2 + resolve: 1.22.8 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node - tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2)): + tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@22.5.5)(typescript@5.7.2)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -34351,7 +34418,7 @@ snapshots: postcss: 8.4.31 postcss-import: 15.1.0(postcss@8.4.31) postcss-js: 4.0.1(postcss@8.4.31) - postcss-load-config: 4.0.2(postcss@8.4.31)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2)) + postcss-load-config: 4.0.2(postcss@8.4.31)(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@22.5.5)(typescript@5.7.2)) postcss-nested: 6.2.0(postcss@8.4.31) postcss-selector-parser: 6.1.2 resolve: 1.22.8 @@ -34398,28 +34465,28 @@ snapshots: dependencies: memoizerific: 1.11.3 - terser-webpack-plugin@5.3.10(@swc/core@1.5.7)(esbuild@0.20.2)(webpack@5.94.0(@swc/core@1.5.7)(esbuild@0.20.2)): + terser-webpack-plugin@5.3.10(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2)(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.31.0 - webpack: 5.94.0(@swc/core@1.5.7)(esbuild@0.20.2) + webpack: 5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2) optionalDependencies: - '@swc/core': 1.5.7 + '@swc/core': 1.5.7(@swc/helpers@0.5.15) esbuild: 0.20.2 - terser-webpack-plugin@5.3.10(@swc/core@1.5.7)(webpack@5.94.0(@swc/core@1.5.7)): + terser-webpack-plugin@5.3.10(@swc/core@1.5.7(@swc/helpers@0.5.15))(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.31.0 - webpack: 5.94.0(@swc/core@1.5.7) + webpack: 5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15)) optionalDependencies: - '@swc/core': 1.5.7 + '@swc/core': 1.5.7(@swc/helpers@0.5.15) terser@5.31.0: dependencies: @@ -34631,7 +34698,7 @@ snapshots: '@ts-morph/common': 0.20.0 code-block-writer: 12.0.0 - ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2): + ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -34649,7 +34716,28 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: - '@swc/core': 1.5.7 + '@swc/core': 1.5.7(@swc/helpers@0.5.15) + + ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@22.5.5)(typescript@5.7.2): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 22.5.5 + acorn: 8.11.3 + acorn-walk: 8.3.2 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.7.2 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.5.7(@swc/helpers@0.5.15) + optional: true ts-pattern@5.0.5: {} @@ -34690,7 +34778,7 @@ snapshots: tslib@2.8.1: {} - tsup@8.3.5(@swc/core@1.5.7)(jiti@1.21.7)(postcss@8.4.31)(tsx@4.19.2)(typescript@5.7.2)(yaml@2.4.2): + tsup@8.3.5(@swc/core@1.5.7(@swc/helpers@0.5.15))(jiti@1.21.7)(postcss@8.4.31)(tsx@4.19.2)(typescript@5.7.2)(yaml@2.4.2): dependencies: bundle-require: 5.0.0(esbuild@0.20.2) cac: 6.7.14 @@ -34709,7 +34797,7 @@ snapshots: tinyglobby: 0.2.10 tree-kill: 1.2.2 optionalDependencies: - '@swc/core': 1.5.7 + '@swc/core': 1.5.7(@swc/helpers@0.5.15) postcss: 8.4.31 typescript: 5.7.2 transitivePeerDependencies: @@ -34867,7 +34955,7 @@ snapshots: transitivePeerDependencies: - supports-color - typescript-plugin-css-modules@5.1.0(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2))(typescript@5.7.2): + typescript-plugin-css-modules@5.1.0(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2))(typescript@5.7.2): dependencies: '@types/postcss-modules-local-by-default': 4.0.2 '@types/postcss-modules-scope': 3.0.4 @@ -34876,7 +34964,7 @@ snapshots: less: 4.2.0 lodash.camelcase: 4.3.0 postcss: 8.4.31 - postcss-load-config: 3.1.4(postcss@8.4.31)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@18.19.33)(typescript@5.7.2)) + postcss-load-config: 3.1.4(postcss@8.4.31)(ts-node@10.9.2(@swc/core@1.5.7(@swc/helpers@0.5.15))(@types/node@18.19.33)(typescript@5.7.2)) postcss-modules-extract-imports: 3.1.0(postcss@8.4.31) postcss-modules-local-by-default: 4.0.5(postcss@8.4.31) postcss-modules-scope: 3.2.0(postcss@8.4.31) @@ -35453,7 +35541,7 @@ snapshots: - bufferutil - utf-8-validate - webpack-dev-middleware@6.1.3(webpack@5.94.0(@swc/core@1.5.7)(esbuild@0.20.2)): + webpack-dev-middleware@6.1.3(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2)): dependencies: colorette: 2.0.20 memfs: 3.5.3 @@ -35461,9 +35549,9 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.2.0 optionalDependencies: - webpack: 5.94.0(@swc/core@1.5.7)(esbuild@0.20.2) + webpack: 5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2) - webpack-dev-middleware@6.1.3(webpack@5.94.0(@swc/core@1.5.7)): + webpack-dev-middleware@6.1.3(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))): dependencies: colorette: 2.0.20 memfs: 3.5.3 @@ -35471,7 +35559,7 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.2.0 optionalDependencies: - webpack: 5.94.0(@swc/core@1.5.7) + webpack: 5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15)) webpack-hot-middleware@2.26.1: dependencies: @@ -35483,7 +35571,7 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.94.0(@swc/core@1.5.7): + webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15)): dependencies: '@types/estree': 1.0.6 '@webassemblyjs/ast': 1.12.1 @@ -35505,7 +35593,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.5.7)(webpack@5.94.0(@swc/core@1.5.7)) + terser-webpack-plugin: 5.3.10(@swc/core@1.5.7(@swc/helpers@0.5.15))(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))) watchpack: 2.4.1 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -35513,7 +35601,7 @@ snapshots: - esbuild - uglify-js - webpack@5.94.0(@swc/core@1.5.7)(esbuild@0.20.2): + webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2): dependencies: '@types/estree': 1.0.6 '@webassemblyjs/ast': 1.12.1 @@ -35535,7 +35623,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.5.7)(esbuild@0.20.2)(webpack@5.94.0(@swc/core@1.5.7)(esbuild@0.20.2)) + terser-webpack-plugin: 5.3.10(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2)(webpack@5.94.0(@swc/core@1.5.7(@swc/helpers@0.5.15))(esbuild@0.20.2)) watchpack: 2.4.1 webpack-sources: 3.2.3 transitivePeerDependencies: diff --git a/servers/fdr/prisma/schema.prisma b/servers/fdr/prisma/schema.prisma index 3bdf5afc48..659bb2cdb1 100644 --- a/servers/fdr/prisma/schema.prisma +++ b/servers/fdr/prisma/schema.prisma @@ -26,7 +26,8 @@ model ApiDefinitionsLatest { apiName String apiDefinitionId String createdAt DateTime @default(now()) - definition Bytes + definition Bytes? + s3Key String? @@id([apiDefinitionId]) } diff --git a/servers/fdr/src/api/generated/api/resources/api/resources/latest/types/LatestApiDefinition.d.ts b/servers/fdr/src/api/generated/api/resources/api/resources/latest/types/LatestApiDefinition.d.ts new file mode 100644 index 0000000000..3ce96deba6 --- /dev/null +++ b/servers/fdr/src/api/generated/api/resources/api/resources/latest/types/LatestApiDefinition.d.ts @@ -0,0 +1,5 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +import * as FernRegistry from "../../../../../index"; +export declare type LatestApiDefinition = string | FernRegistry.api.latest.ApiDefinition; diff --git a/servers/fdr/src/api/generated/api/resources/api/resources/latest/types/LatestApiDefinition.js b/servers/fdr/src/api/generated/api/resources/api/resources/latest/types/LatestApiDefinition.js new file mode 100644 index 0000000000..0b46289f5b --- /dev/null +++ b/servers/fdr/src/api/generated/api/resources/api/resources/latest/types/LatestApiDefinition.js @@ -0,0 +1,4 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +export {}; diff --git a/servers/fdr/src/api/generated/api/resources/api/resources/latest/types/index.d.ts b/servers/fdr/src/api/generated/api/resources/api/resources/latest/types/index.d.ts index 6961e73d37..31beb17f98 100644 --- a/servers/fdr/src/api/generated/api/resources/api/resources/latest/types/index.d.ts +++ b/servers/fdr/src/api/generated/api/resources/api/resources/latest/types/index.d.ts @@ -1 +1,2 @@ export * from "./ApiDefinition"; +export * from "./LatestApiDefinition"; diff --git a/servers/fdr/src/api/generated/api/resources/api/resources/latest/types/index.js b/servers/fdr/src/api/generated/api/resources/api/resources/latest/types/index.js index 6961e73d37..31beb17f98 100644 --- a/servers/fdr/src/api/generated/api/resources/api/resources/latest/types/index.js +++ b/servers/fdr/src/api/generated/api/resources/api/resources/latest/types/index.js @@ -1 +1,2 @@ export * from "./ApiDefinition"; +export * from "./LatestApiDefinition"; diff --git a/servers/fdr/src/api/generated/api/resources/docs/resources/v1/resources/read/types/DocsDefinition.d.ts b/servers/fdr/src/api/generated/api/resources/docs/resources/v1/resources/read/types/DocsDefinition.d.ts index 1dbb2d746d..2e74dd1fff 100644 --- a/servers/fdr/src/api/generated/api/resources/docs/resources/v1/resources/read/types/DocsDefinition.d.ts +++ b/servers/fdr/src/api/generated/api/resources/docs/resources/v1/resources/read/types/DocsDefinition.d.ts @@ -6,7 +6,7 @@ export interface DocsDefinition { algoliaSearchIndex: FernRegistry.AlgoliaSearchIndex | undefined; pages: Record; apis: Record; - apisV2: Record; + apisV2: Record; files: Record; filesV2: Record; /** diff --git a/servers/fdr/src/app/FdrApplication.ts b/servers/fdr/src/app/FdrApplication.ts index e3ba55010a..6d491db4b0 100644 --- a/servers/fdr/src/app/FdrApplication.ts +++ b/servers/fdr/src/app/FdrApplication.ts @@ -77,7 +77,7 @@ export class FdrApplication { this.services = { auth: services?.auth ?? new AuthServiceImpl(this), - db: services?.db ?? new DatabaseServiceImpl(prisma), + db: services?.db ?? new DatabaseServiceImpl(prisma, this), algolia: services?.algolia ?? new AlgoliaServiceImpl(this), algoliaIndexSegmentDeleter: services?.algoliaIndexSegmentDeleter ?? @@ -90,7 +90,7 @@ export class FdrApplication { revalidator: services?.revalidator ?? new RevalidatorServiceImpl(), }; - this.dao = new FdrDao(prisma); + this.dao = new FdrDao(prisma, this.services.s3); this.redisDatastore = config.redisEnabled ? new RedisDocsDefinitionStore({ diff --git a/servers/fdr/src/controllers/api/getRegisterApiService.ts b/servers/fdr/src/controllers/api/getRegisterApiService.ts index 467ba8650c..0a42e1aeb5 100644 --- a/servers/fdr/src/controllers/api/getRegisterApiService.ts +++ b/servers/fdr/src/controllers/api/getRegisterApiService.ts @@ -8,7 +8,7 @@ import { import { v4 as uuidv4 } from "uuid"; import { APIV1WriteService } from "../../api"; import { SdkRequest } from "../../api/generated/api"; -import type { FdrApplication } from "../../app"; +import { type FdrApplication } from "../../app"; import { LOGGER } from "../../app/FdrApplication"; import { SdkIdForPackage } from "../../db/sdk/SdkDao"; import { @@ -146,18 +146,53 @@ export function getRegisterApiService(app: FdrApplication): APIV1WriteService { `Creating API Definition in database with id=${apiDefinitionId}, name=${req.body.apiId} for org ${req.body.orgId}`, REGISTER_API_DEFINITION_META ); - await ( - isLatest - ? app.services.db.prisma.apiDefinitionsLatest - : app.services.db.prisma.apiDefinitionsV2 - ).create({ - data: { - apiDefinitionId, - apiName: req.body.apiId, - orgId: req.body.orgId, - definition: writeBuffer(transformedApiDefinition), - }, - }); + if (isLatest) { + const sourceId = FdrAPI.api.v1.register.SourceId( + "api-definition-latest" + ); + const apiDefinitionSourceUploadUrls = + await app.services.s3.getPresignedApiDefinitionSourceUploadUrls({ + orgId: req.body.orgId, + apiId: req.body.apiId, + sources: { + [sourceId]: { + type: "openapi", + }, + }, + }); + + if (apiDefinitionSourceUploadUrls[sourceId] == null) { + throw new Error( + `Failed to get presigned URL for api definition, with source id: ${sourceId}` + ); + } + + await fetch(apiDefinitionSourceUploadUrls[sourceId].presignedUrl, { + method: "PUT", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(transformedApiDefinition), + }); + + await app.services.db.prisma.apiDefinitionsLatest.create({ + data: { + apiDefinitionId, + apiName: req.body.apiId, + orgId: req.body.orgId, + s3Key: apiDefinitionSourceUploadUrls[sourceId].key, + }, + }); + } else { + await app.services.db.prisma.apiDefinitionsV2.create({ + data: { + apiDefinitionId, + apiName: req.body.apiId, + orgId: req.body.orgId, + definition: writeBuffer(transformedApiDefinition), + }, + }); + } app.logger.debug( `Returning API Definition ID id=${apiDefinitionId}`, REGISTER_API_DEFINITION_META diff --git a/servers/fdr/src/controllers/docs/v1/getDocsReadService.ts b/servers/fdr/src/controllers/docs/v1/getDocsReadService.ts index c39de27d8a..1505f6f8aa 100644 --- a/servers/fdr/src/controllers/docs/v1/getDocsReadService.ts +++ b/servers/fdr/src/controllers/docs/v1/getDocsReadService.ts @@ -164,7 +164,12 @@ export async function getDocsDefinition({ keyBy(apiV2Definitions, (def) => FernNavigation.ApiDefinitionId(def.apiDefinitionId) ), - (def) => readBuffer(def.definition) as FdrAPI.api.latest.ApiDefinition + (def) => + def.s3Key != null + ? def.s3Key + : ((def.definition != null + ? readBuffer(def.definition) + : {}) as FdrAPI.api.latest.ApiDefinition) ); return convertDocsDefinitionToRead({ diff --git a/servers/fdr/src/controllers/docs/v2/getDocsReadV2Service.ts b/servers/fdr/src/controllers/docs/v2/getDocsReadV2Service.ts index ca5cce90b2..540c33fa99 100644 --- a/servers/fdr/src/controllers/docs/v2/getDocsReadV2Service.ts +++ b/servers/fdr/src/controllers/docs/v2/getDocsReadV2Service.ts @@ -107,6 +107,7 @@ export function getDocsReadV2Service(app: FdrApplication): DocsV2ReadService { const apiDefinitions = await app.dao .apis() .loadAPIDefinitions(loadDocsConfigResponse.referencedApis); + docsConfig = { docsConfig: convertDbDocsConfigToRead({ dbShape: loadDocsConfigResponse.docsConfig, diff --git a/servers/fdr/src/controllers/docs/v2/getDocsWriteV2Service.ts b/servers/fdr/src/controllers/docs/v2/getDocsWriteV2Service.ts index a24a8addd8..4cb5954b85 100644 --- a/servers/fdr/src/controllers/docs/v2/getDocsWriteV2Service.ts +++ b/servers/fdr/src/controllers/docs/v2/getDocsWriteV2Service.ts @@ -517,10 +517,11 @@ async function uploadToAlgolia( }; // TODO: consolidate this - const apis = - Object.entries(loadDocsForUrlResponse.definition.apis).length > 0 - ? FernNavigation.utils.toApis(loadDocsForUrlResponse) - : loadDocsForUrlResponse.definition.apisV2; + const apis = await FernNavigation.utils.toApis( + loadDocsForUrlResponse, + app.services.s3.getPresignedDocsAssetsDownloadUrl.bind(app.services.s3) + ); + await Promise.all( configSegmentTuples.map(async ([_, indexSegment]) => { try { diff --git a/servers/fdr/src/db/FdrDao.ts b/servers/fdr/src/db/FdrDao.ts index 4d52122acb..9f0941cece 100644 --- a/servers/fdr/src/db/FdrDao.ts +++ b/servers/fdr/src/db/FdrDao.ts @@ -1,4 +1,5 @@ import { PrismaClient } from "@prisma/client"; +import { S3Service } from "../services/s3"; import { APIDefinitionDao, APIDefinitionDaoImpl } from "./api/APIDefinitionDao"; import { DocsV2Dao, DocsV2DaoImpl } from "./docs/DocsV2Dao"; import { @@ -35,9 +36,9 @@ export class FdrDao { private cliVersionsDao; private gitDao; - constructor(prisma: PrismaClient) { + constructor(prisma: PrismaClient, s3: S3Service) { this.docsV2Dao = new DocsV2DaoImpl(prisma); - this.apisDao = new APIDefinitionDaoImpl(prisma); + this.apisDao = new APIDefinitionDaoImpl(prisma, s3); this.indexSegmentDao = new IndexSegmentDaoImpl(prisma); this.snippetsDao = new SnippetsDaoImpl(prisma); this.snippetAPIsDao = new SnippetAPIsDaoImpl(prisma); diff --git a/servers/fdr/src/db/api/APIDefinitionDao.ts b/servers/fdr/src/db/api/APIDefinitionDao.ts index a7a02a9753..4968b02017 100644 --- a/servers/fdr/src/db/api/APIDefinitionDao.ts +++ b/servers/fdr/src/db/api/APIDefinitionDao.ts @@ -1,6 +1,8 @@ import { APIV1Db, FdrAPI } from "@fern-api/fdr-sdk"; import { PrismaClient } from "@prisma/client"; +import { S3Service } from "../../services/s3"; import { readBuffer } from "../../util"; +import { resolveLatestApiDefinition } from "../../util/resolveLatestApiDefinition"; export interface APIDefinitionDao { getOrgIdForApiDefinition( @@ -21,7 +23,10 @@ export interface APIDefinitionDao { } export class APIDefinitionDaoImpl implements APIDefinitionDao { - constructor(private readonly prisma: PrismaClient) {} + constructor( + private readonly prisma: PrismaClient, + private readonly s3: S3Service + ) {} public async getOrgIdForApiDefinition( apiDefinitionId: string @@ -63,14 +68,13 @@ export class APIDefinitionDaoImpl implements APIDefinitionDao { }, select: { definition: true, + s3Key: true, }, }); if (apiDefinition == null) { return undefined; } - return readBuffer( - apiDefinition.definition - ) as FdrAPI.api.latest.ApiDefinition; + return resolveLatestApiDefinition(apiDefinition, this.s3); } public async loadAPIDefinitions( diff --git a/servers/fdr/src/services/db/DatabaseService.ts b/servers/fdr/src/services/db/DatabaseService.ts index f637e3c334..b3637bd5e8 100644 --- a/servers/fdr/src/services/db/DatabaseService.ts +++ b/servers/fdr/src/services/db/DatabaseService.ts @@ -1,5 +1,7 @@ import { APIV1Db, FdrAPI } from "@fern-api/fdr-sdk"; import { PrismaClient } from "@prisma/client"; +import { FdrApplication } from "../../app/FdrApplication"; +import { resolveLatestApiDefinition } from "../../util/resolveLatestApiDefinition"; export interface DatabaseService { readonly prisma: PrismaClient; @@ -14,7 +16,10 @@ export interface DatabaseService { } export class DatabaseServiceImpl implements DatabaseService { - public constructor(public readonly prisma: PrismaClient) {} + public constructor( + public readonly prisma: PrismaClient, + public readonly app: FdrApplication + ) {} public async getApiDefinition(id: string) { const record = await this.prisma.apiDefinitionsV2.findFirst({ @@ -43,13 +48,14 @@ export class DatabaseServiceImpl implements DatabaseService { if (!record) { return null; } - try { - return JSON.parse( - record.definition.toString() - ) as FdrAPI.api.latest.ApiDefinition; - } catch { + const apiDefinition = await resolveLatestApiDefinition( + record, + this.app.services.s3 + ); + if (!apiDefinition) { return null; } + return apiDefinition; } public async markIndexForDeletion(indexId: string) { diff --git a/servers/fdr/src/util/resolveLatestApiDefinition.ts b/servers/fdr/src/util/resolveLatestApiDefinition.ts new file mode 100644 index 0000000000..e7aaf853a5 --- /dev/null +++ b/servers/fdr/src/util/resolveLatestApiDefinition.ts @@ -0,0 +1,27 @@ +import { FdrAPI } from "@fern-api/fdr-sdk"; +import { S3Service } from "../services/s3/S3Service"; +import { readBuffer } from "./serde"; + +export async function resolveLatestApiDefinition( + apiDefinition: { + s3Key: string | null; + definition: Buffer | null; + }, + s3Service: S3Service +): Promise { + if (apiDefinition.s3Key != null) { + const url = await s3Service.getPresignedDocsAssetsDownloadUrl({ + key: apiDefinition.s3Key, + isPrivate: true, + }); + const response = await fetch(url.toString()); + const fetchedApiDefinition = await response.json(); + return fetchedApiDefinition as FdrAPI.api.latest.ApiDefinition; + } else { + return apiDefinition.definition != null + ? (readBuffer( + apiDefinition.definition + ) as FdrAPI.api.latest.ApiDefinition) + : undefined; + } +} diff --git a/turbo.json b/turbo.json index 076cb7b733..4af75b68f7 100644 --- a/turbo.json +++ b/turbo.json @@ -89,7 +89,12 @@ "VERCEL_URL", "WORKOS_API_KEY", "WORKOS_CLIENT_ID", - "HIGHLIGHT_PROJECT_ID_FERN_APP" + "HIGHLIGHT_PROJECT_ID_FERN_APP", + "S3_API_DEFINITIONS_URL", + "S3_API_DEFINITIONS_REGION", + "S3_API_DEFINITIONS_ACCESS_KEY_ID", + "S3_API_DEFINITIONS_SECRET_ACCESS_KEY", + "S3_API_DEFINITIONS_BUCKET_NAME" ] } }, From cd2afce98bc81466dce722a8047f699cfa397866 Mon Sep 17 00:00:00 2001 From: Rohin Bhargava Date: Sun, 12 Jan 2025 18:10:03 -0500 Subject: [PATCH 2/7] repurpose existing env vars --- .../fdr-sdk/src/api-definition/s3Loader.ts | 21 +++++++++---------- turbo.json | 7 +------ 2 files changed, 11 insertions(+), 17 deletions(-) diff --git a/packages/fdr-sdk/src/api-definition/s3Loader.ts b/packages/fdr-sdk/src/api-definition/s3Loader.ts index face24f48d..189d7ea4da 100644 --- a/packages/fdr-sdk/src/api-definition/s3Loader.ts +++ b/packages/fdr-sdk/src/api-definition/s3Loader.ts @@ -5,23 +5,22 @@ import { LatestApiDefinition } from "./latest"; export class S3Loader { private s3Client: S3Client; - + private bucketName: string; constructor() { if ( - process.env.S3_API_DEFINITIONS_URL != null && - process.env.S3_API_DEFINITIONS_REGION != null && - process.env.S3_API_DEFINITIONS_ACCESS_KEY_ID != null && - process.env.S3_API_DEFINITIONS_SECRET_ACCESS_KEY != null && - process.env.S3_API_DEFINITIONS_BUCKET_NAME != null + process.env.AWS_ACCESS_KEY_ID != null && + process.env.AWS_SECRET_ACCESS_KEY != null && + process.env.AWS_REGION != null && + process.env.AWS_S3_BUCKET_NAME != null ) { this.s3Client = new S3Client({ - endpoint: process.env.S3_API_DEFINITIONS_URL, - region: process.env.S3_API_DEFINITIONS_REGION, + region: process.env.AWS_REGION, credentials: { - accessKeyId: process.env.S3_API_DEFINITIONS_ACCESS_KEY_ID, - secretAccessKey: process.env.S3_API_DEFINITIONS_SECRET_ACCESS_KEY, + accessKeyId: process.env.AWS_ACCESS_KEY_ID, + secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY, }, }); + this.bucketName = process.env.AWS_S3_BUCKET_NAME; } else { throw new Error("Missing S3 API definitions configuration in env vars"); } @@ -33,7 +32,7 @@ export class S3Loader { let resolvedApi: FdrAPI.api.latest.ApiDefinition; if (typeof apiDefinitionOrKey === "string") { const command = new GetObjectCommand({ - Bucket: process.env.S3_API_DEFINITIONS_BUCKET_NAME, + Bucket: this.bucketName, Key: apiDefinitionOrKey, }); const url = await getSignedUrl(this.s3Client, command, { diff --git a/turbo.json b/turbo.json index 4af75b68f7..076cb7b733 100644 --- a/turbo.json +++ b/turbo.json @@ -89,12 +89,7 @@ "VERCEL_URL", "WORKOS_API_KEY", "WORKOS_CLIENT_ID", - "HIGHLIGHT_PROJECT_ID_FERN_APP", - "S3_API_DEFINITIONS_URL", - "S3_API_DEFINITIONS_REGION", - "S3_API_DEFINITIONS_ACCESS_KEY_ID", - "S3_API_DEFINITIONS_SECRET_ACCESS_KEY", - "S3_API_DEFINITIONS_BUCKET_NAME" + "HIGHLIGHT_PROJECT_ID_FERN_APP" ] } }, From fc462cdb9939dc028a4b70225a53ef98ab64293c Mon Sep 17 00:00:00 2001 From: Rohin Bhargava Date: Sun, 12 Jan 2025 18:22:19 -0500 Subject: [PATCH 3/7] null check safety --- packages/fdr-sdk/src/navigation/utils/toApis.ts | 2 +- .../fern-docs/search-server/src/algolia/__test__/test-utils.ts | 2 +- packages/fern-docs/search-server/src/fdr/load-docs-with-url.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/fdr-sdk/src/navigation/utils/toApis.ts b/packages/fdr-sdk/src/navigation/utils/toApis.ts index 7fca2195f0..ef836e3674 100644 --- a/packages/fdr-sdk/src/navigation/utils/toApis.ts +++ b/packages/fdr-sdk/src/navigation/utils/toApis.ts @@ -22,7 +22,7 @@ export async function toApis( ), ...Object.fromEntries( await Promise.all( - Object.entries(docs.definition.apisV2).map(async ([key, def]) => { + Object.entries(docs.definition.apisV2 ?? {}).map(async ([key, def]) => { if (typeof def === "string") { const url = await getPresignedDocsAssetsDownloadUrl({ key: def, diff --git a/packages/fern-docs/search-server/src/algolia/__test__/test-utils.ts b/packages/fern-docs/search-server/src/algolia/__test__/test-utils.ts index 2c07ad1301..812ffd4df2 100644 --- a/packages/fern-docs/search-server/src/algolia/__test__/test-utils.ts +++ b/packages/fern-docs/search-server/src/algolia/__test__/test-utils.ts @@ -43,7 +43,7 @@ export function readFixtureToRootNode( }) ), ...(Object.fromEntries( - Object.entries(fixture.definition.apisV2).filter( + Object.entries(fixture.definition.apisV2 ?? {}).filter( ([_, api]) => typeof api !== "string" ) ) as Record), diff --git a/packages/fern-docs/search-server/src/fdr/load-docs-with-url.ts b/packages/fern-docs/search-server/src/fdr/load-docs-with-url.ts index b30f578abe..46ac14bfd5 100644 --- a/packages/fern-docs/search-server/src/fdr/load-docs-with-url.ts +++ b/packages/fern-docs/search-server/src/fdr/load-docs-with-url.ts @@ -87,7 +87,7 @@ export async function loadDocsWithUrl( ), ...Object.fromEntries( await Promise.all( - Object.entries(docs.body.definition.apisV2).map( + Object.entries(docs.body.definition.apisV2 ?? {}).map( async ([apiId, api]) => { const resolvedApi = await s3Loader.loadApiDefinition(api); return [apiId, resolvedApi]; From 7d83ab36b7ecaa3b965aa59348cb04975b35d17b Mon Sep 17 00:00:00 2001 From: Rohin Bhargava Date: Sun, 12 Jan 2025 18:41:41 -0500 Subject: [PATCH 4/7] looser s3 init constraints for local bundle --- packages/fdr-sdk/src/api-definition/s3Loader.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/fdr-sdk/src/api-definition/s3Loader.ts b/packages/fdr-sdk/src/api-definition/s3Loader.ts index 189d7ea4da..aa912e19a1 100644 --- a/packages/fdr-sdk/src/api-definition/s3Loader.ts +++ b/packages/fdr-sdk/src/api-definition/s3Loader.ts @@ -4,8 +4,9 @@ import { FdrAPI } from "../client"; import { LatestApiDefinition } from "./latest"; export class S3Loader { - private s3Client: S3Client; - private bucketName: string; + private s3Client: S3Client | undefined; + private bucketName: string | undefined; + constructor() { if ( process.env.AWS_ACCESS_KEY_ID != null && @@ -21,14 +22,16 @@ export class S3Loader { }, }); this.bucketName = process.env.AWS_S3_BUCKET_NAME; - } else { - throw new Error("Missing S3 API definitions configuration in env vars"); } } async loadApiDefinition( apiDefinitionOrKey: LatestApiDefinition ): Promise { + if (this.s3Client == null) { + throw new Error("S3 client not initialized"); + } + let resolvedApi: FdrAPI.api.latest.ApiDefinition; if (typeof apiDefinitionOrKey === "string") { const command = new GetObjectCommand({ From de2c846430d82a966187dac703b346909637c509 Mon Sep 17 00:00:00 2001 From: Rohin Bhargava Date: Sun, 12 Jan 2025 18:52:03 -0500 Subject: [PATCH 5/7] increase timeout --- .../src/algolia/__test__/generation.test.ts | 64 ++++++++++--------- 1 file changed, 34 insertions(+), 30 deletions(-) diff --git a/packages/fern-docs/search-server/src/algolia/__test__/generation.test.ts b/packages/fern-docs/search-server/src/algolia/__test__/generation.test.ts index 4ff2e3ab24..5a9bf6a8dc 100644 --- a/packages/fern-docs/search-server/src/algolia/__test__/generation.test.ts +++ b/packages/fern-docs/search-server/src/algolia/__test__/generation.test.ts @@ -47,39 +47,43 @@ for (const fixtureName of [ "no-version-yes-tabs", ]) { // eslint-disable-next-line vitest/valid-title - describe(fixtureName, () => { - it("should work", async () => { - const fixture = readFixture(fixtureName); - const mockGetPresignedDocsAssetsDownloadUrl = vi.fn(); - const root = FernNavigation.utils.toRootNode(fixture); - const apis = await FernNavigation.utils.toApis( - fixture, - mockGetPresignedDocsAssetsDownloadUrl - ); - const pages = FernNavigation.utils.toPages(fixture); + describe( + fixtureName, + () => { + it("should work", async () => { + const fixture = readFixture(fixtureName); + const mockGetPresignedDocsAssetsDownloadUrl = vi.fn(); + const root = FernNavigation.utils.toRootNode(fixture); + const apis = await FernNavigation.utils.toApis( + fixture, + mockGetPresignedDocsAssetsDownloadUrl + ); + const pages = FernNavigation.utils.toPages(fixture); - const { records, tooLarge } = createAlgoliaRecords({ - root, - domain: "test.com", - org_id: "test", - pages, - apis, - }); + const { records, tooLarge } = createAlgoliaRecords({ + root, + domain: "test.com", + org_id: "test", + pages, + apis, + }); - expect(tooLarge.length).toBe(0); + expect(tooLarge.length).toBe(0); - records.forEach((record) => { - if (record.description != null) { - expect(record.description.length).toBeLessThanOrEqual(50_000); - } + records.forEach((record) => { + if (record.description != null) { + expect(record.description.length).toBeLessThanOrEqual(50_000); + } - if (record.type === "markdown" && record.content != null) { - expect(record.content.length).toBeLessThanOrEqual(50_000); - } + if (record.type === "markdown" && record.content != null) { + expect(record.content.length).toBeLessThanOrEqual(50_000); + } + }); + await expect(JSON.stringify(records, null, 2)).toMatchFileSnapshot( + path.join("__snapshots__", `${fixtureName}.test.ts.json`) + ); }); - await expect(JSON.stringify(records, null, 2)).toMatchFileSnapshot( - path.join("__snapshots__", `${fixtureName}.test.ts.json`) - ); - }); - }); + }, + 25_000 + ); } From 813ad8dd89223d1cbed66702899e2a9d5e615bac Mon Sep 17 00:00:00 2001 From: Rohin Bhargava Date: Sun, 12 Jan 2025 22:39:44 -0500 Subject: [PATCH 6/7] fix timeout --- .../src/algolia/__test__/generation.test.ts | 74 +++++++++---------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/packages/fern-docs/search-server/src/algolia/__test__/generation.test.ts b/packages/fern-docs/search-server/src/algolia/__test__/generation.test.ts index 5a9bf6a8dc..80845d5f54 100644 --- a/packages/fern-docs/search-server/src/algolia/__test__/generation.test.ts +++ b/packages/fern-docs/search-server/src/algolia/__test__/generation.test.ts @@ -47,43 +47,43 @@ for (const fixtureName of [ "no-version-yes-tabs", ]) { // eslint-disable-next-line vitest/valid-title - describe( - fixtureName, - () => { - it("should work", async () => { - const fixture = readFixture(fixtureName); - const mockGetPresignedDocsAssetsDownloadUrl = vi.fn(); - const root = FernNavigation.utils.toRootNode(fixture); - const apis = await FernNavigation.utils.toApis( - fixture, - mockGetPresignedDocsAssetsDownloadUrl - ); - const pages = FernNavigation.utils.toPages(fixture); - - const { records, tooLarge } = createAlgoliaRecords({ - root, - domain: "test.com", - org_id: "test", - pages, - apis, - }); - - expect(tooLarge.length).toBe(0); - - records.forEach((record) => { - if (record.description != null) { - expect(record.description.length).toBeLessThanOrEqual(50_000); - } + describe(fixtureName, () => { + it("should work", async () => { + const fixture = readFixture(fixtureName); + const mockGetPresignedDocsAssetsDownloadUrl = vi.fn(); + const root = FernNavigation.utils.toRootNode(fixture); + console.log(`${fixtureName} - a`); + const apis = await FernNavigation.utils.toApis( + fixture, + mockGetPresignedDocsAssetsDownloadUrl + ); + console.log(`${fixtureName} - b`); + const pages = FernNavigation.utils.toPages(fixture); + console.log(`${fixtureName} - c`); + const { records, tooLarge } = createAlgoliaRecords({ + root, + domain: "test.com", + org_id: "test", + pages, + apis, + }); + console.log(`${fixtureName} - d`); + expect(tooLarge.length).toBe(0); + console.log(`${fixtureName} - e`); + records.forEach((record) => { + if (record.description != null) { + expect(record.description.length).toBeLessThanOrEqual(50_000); + } - if (record.type === "markdown" && record.content != null) { - expect(record.content.length).toBeLessThanOrEqual(50_000); - } - }); - await expect(JSON.stringify(records, null, 2)).toMatchFileSnapshot( - path.join("__snapshots__", `${fixtureName}.test.ts.json`) - ); + if (record.type === "markdown" && record.content != null) { + expect(record.content.length).toBeLessThanOrEqual(50_000); + } }); - }, - 25_000 - ); + console.log(`${fixtureName} - f`); + await expect(JSON.stringify(records, null, 2)).toMatchFileSnapshot( + path.join("__snapshots__", `${fixtureName}.test.ts.json`) + ); + console.log(`${fixtureName} - g`); + }, 100_000); + }); } From 5039fb6dbc41970d4d55f65209fb6c98c95d5508 Mon Sep 17 00:00:00 2001 From: Rohin Bhargava Date: Mon, 13 Jan 2025 17:57:12 -0500 Subject: [PATCH 7/7] add fdr migration --- .../migration.sql | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 servers/fdr/prisma/migrations/20250113225500_add_s3_links_to_fdr_and_make_old_definition_optional/migration.sql diff --git a/servers/fdr/prisma/migrations/20250113225500_add_s3_links_to_fdr_and_make_old_definition_optional/migration.sql b/servers/fdr/prisma/migrations/20250113225500_add_s3_links_to_fdr_and_make_old_definition_optional/migration.sql new file mode 100644 index 0000000000..ee802f1ca7 --- /dev/null +++ b/servers/fdr/prisma/migrations/20250113225500_add_s3_links_to_fdr_and_make_old_definition_optional/migration.sql @@ -0,0 +1,3 @@ +-- AlterTable +ALTER TABLE "ApiDefinitionsLatest" ADD COLUMN "s3Key" TEXT, +ALTER COLUMN "definition" DROP NOT NULL;