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 b821b56465..5810020698 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..aa912e19a1 --- /dev/null +++ b/packages/fdr-sdk/src/api-definition/s3Loader.ts @@ -0,0 +1,51 @@ +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 | undefined; + private bucketName: string | undefined; + + constructor() { + if ( + 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({ + region: process.env.AWS_REGION, + credentials: { + accessKeyId: process.env.AWS_ACCESS_KEY_ID, + secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY, + }, + }); + this.bucketName = process.env.AWS_S3_BUCKET_NAME; + } + } + + 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({ + Bucket: this.bucketName, + 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..ef836e3674 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..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 @@ -50,10 +50,16 @@ 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); + 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", @@ -61,9 +67,9 @@ for (const fixtureName of [ 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); @@ -73,9 +79,11 @@ for (const fixtureName of [ expect(record.content.length).toBeLessThanOrEqual(50_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); }); } 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..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 @@ -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..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 @@ -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 bdef822178..a490fecea3 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 @@ -2582,7 +2588,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 @@ -2867,7 +2873,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 @@ -2985,7 +2991,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 @@ -3507,6 +3513,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'} @@ -3559,6 +3569,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'} @@ -6651,10 +6665,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'} @@ -17321,39 +17331,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: @@ -17361,7 +17371,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 @@ -17526,7 +17536,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 @@ -17618,7 +17628,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 @@ -17663,7 +17673,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 @@ -17749,7 +17759,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 @@ -17792,7 +17802,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 @@ -17882,7 +17892,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 @@ -17927,7 +17937,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 @@ -17965,7 +17975,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 @@ -17983,7 +17993,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': @@ -18008,7 +18018,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 @@ -18044,7 +18054,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' @@ -18063,7 +18073,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' @@ -18100,7 +18110,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' @@ -18119,7 +18129,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' @@ -18141,7 +18151,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))': @@ -18166,7 +18176,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' @@ -18180,7 +18190,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' @@ -18201,7 +18211,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)': @@ -18210,7 +18220,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': @@ -18229,7 +18239,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 @@ -18244,7 +18254,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': @@ -18271,7 +18281,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 @@ -18288,7 +18298,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': @@ -18300,7 +18310,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': @@ -18312,7 +18322,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': @@ -18326,7 +18336,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': @@ -18356,7 +18366,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 @@ -18372,7 +18382,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': @@ -18392,7 +18402,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': @@ -18402,7 +18412,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': @@ -18418,7 +18428,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 @@ -18432,7 +18442,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: @@ -18449,7 +18470,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))': @@ -18467,7 +18488,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))': @@ -18476,7 +18497,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': @@ -18486,7 +18507,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': @@ -18507,14 +18528,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 @@ -18523,7 +18544,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: @@ -18539,7 +18567,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 @@ -18556,7 +18584,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': @@ -18564,7 +18592,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': @@ -18574,7 +18602,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': @@ -20354,7 +20382,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 @@ -20368,7 +20396,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 @@ -21126,7 +21154,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 @@ -21136,12 +21164,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 @@ -21151,7 +21179,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 @@ -22228,11 +22256,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 @@ -22267,7 +22290,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 @@ -22287,7 +22310,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 @@ -22306,7 +22329,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 @@ -22320,7 +22343,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 @@ -22333,7 +22356,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': @@ -22343,7 +22366,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': @@ -22355,7 +22378,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': @@ -22367,7 +22390,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': @@ -22390,7 +22413,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 @@ -22417,7 +22440,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 @@ -22441,7 +22464,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': @@ -22477,7 +22500,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': @@ -22497,7 +22520,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 @@ -22520,7 +22543,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 @@ -22533,7 +22556,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': @@ -22543,7 +22566,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': @@ -22557,7 +22580,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': @@ -22570,10 +22593,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': @@ -22583,7 +22606,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': @@ -22593,7 +22616,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': @@ -22604,7 +22627,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 @@ -22615,7 +22638,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': @@ -22624,7 +22647,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: @@ -22633,7 +22656,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': @@ -22651,7 +22674,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 @@ -22674,7 +22697,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 @@ -22699,7 +22722,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': @@ -22765,7 +22788,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 @@ -22786,7 +22809,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': @@ -22798,7 +22821,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': @@ -22816,7 +22839,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': @@ -22828,7 +22851,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': @@ -22846,7 +22869,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 @@ -23018,7 +23041,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 @@ -23027,23 +23050,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: @@ -23055,7 +23078,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 @@ -23064,23 +23087,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: @@ -23176,7 +23199,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) @@ -23191,31 +23214,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 @@ -23223,7 +23246,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' @@ -23243,7 +23266,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) @@ -23258,31 +23281,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 @@ -23290,7 +23313,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' @@ -23310,11 +23333,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 @@ -23326,7 +23349,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: @@ -23337,11 +23360,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 @@ -23353,7 +23376,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: @@ -23385,7 +23408,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 @@ -23395,11 +23418,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 @@ -23409,7 +23432,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 @@ -23509,7 +23532,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 @@ -23524,6 +23547,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': {} @@ -23546,18 +23570,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: @@ -25872,19 +25904,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: @@ -26649,13 +26681,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: @@ -26702,7 +26734,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 @@ -26713,9 +26745,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 @@ -26726,7 +26758,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: @@ -27748,7 +27780,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: @@ -27780,7 +27812,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 @@ -27854,11 +27886,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: @@ -28385,7 +28417,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 @@ -28400,9 +28432,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 @@ -28417,7 +28449,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: @@ -29116,7 +29148,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 @@ -29124,9 +29156,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 @@ -29134,7 +29166,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: @@ -29759,16 +29791,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 @@ -29778,7 +29810,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 @@ -29804,12 +29836,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 @@ -29835,7 +29867,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 @@ -30061,12 +30093,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 @@ -31641,7 +31673,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 @@ -31668,9 +31700,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 @@ -31697,7 +31729,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: {} @@ -32231,21 +32263,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: @@ -32256,25 +32296,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 @@ -32665,17 +32705,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: @@ -33462,17 +33502,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 @@ -34102,13 +34142,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: @@ -34179,10 +34219,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: @@ -34336,11 +34376,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 @@ -34359,7 +34426,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 @@ -34406,28 +34473,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: @@ -34639,7 +34706,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 @@ -34657,7 +34724,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: {} @@ -34698,7 +34786,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 @@ -34717,7 +34805,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: @@ -34875,7 +34963,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 @@ -34884,7 +34972,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) @@ -35461,7 +35549,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 @@ -35469,9 +35557,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 @@ -35479,7 +35567,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: @@ -35491,7 +35579,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 @@ -35513,7 +35601,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: @@ -35521,7 +35609,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 @@ -35543,7 +35631,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/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; 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; + } +}