diff --git a/apps/server/dofigen.lock b/apps/server/dofigen.lock index 1541f24f..27b96cbb 100644 --- a/apps/server/dofigen.lock +++ b/apps/server/dofigen.lock @@ -10,14 +10,44 @@ effective: | - /packages/api - /packages/integrations/vercel builders: + build: + fromImage: + path: denoland/deno + digest: sha256:69a9f3033e3f381770452648b1cbf4ae96ea409f7ef24f30afeff3d380705f62 + label: + org.opencontainers.image.stage: build + org.opencontainers.image.base.digest: sha256:69a9f3033e3f381770452648b1cbf4ae96ea409f7ef24f30afeff3d380705f62 + org.opencontainers.image.base.name: docker.io/denoland/deno:2.9.2 + workdir: /app/apps/server + env: + NODE_ENV: production + copy: + - paths: + - . + target: /app/ + - fromBuilder: install + paths: + - /app/node_modules + target: /app/node_modules + - fromBuilder: install + paths: + - /app/apps/server/node_modules + target: /app/apps/server/node_modules + - fromBuilder: install + paths: + - /app/packages + target: /app/packages + run: + - deno bundle --platform=deno --sloppy-imports --node-modules-dir=manual --output src/_serve.bundle.mjs src/serve.ts + - deno compile --no-check -A --node-modules-dir=none --include static/openapi.yaml --include static/openapi-v1.json --output app src/_serve.bundle.mjs install: fromImage: path: node digest: sha256:b31e7a42fdf8b8aa5f5ed477c72d694301273f1069c5a2f71d53c6482e99a2fc label: org.opencontainers.image.base.name: docker.io/node:24-slim - org.opencontainers.image.base.digest: sha256:b31e7a42fdf8b8aa5f5ed477c72d694301273f1069c5a2f71d53c6482e99a2fc org.opencontainers.image.stage: install + org.opencontainers.image.base.digest: sha256:b31e7a42fdf8b8aa5f5ed477c72d694301273f1069c5a2f71d53c6482e99a2fc workdir: /app/ run: - corepack enable pnpm @@ -95,49 +125,19 @@ effective: | source: packages/services/package.json - target: packages/importers/package.json source: packages/importers/package.json - build: - fromImage: - path: denoland/deno - digest: sha256:69a9f3033e3f381770452648b1cbf4ae96ea409f7ef24f30afeff3d380705f62 - label: - org.opencontainers.image.base.name: docker.io/denoland/deno:2.9.2 - org.opencontainers.image.stage: build - org.opencontainers.image.base.digest: sha256:69a9f3033e3f381770452648b1cbf4ae96ea409f7ef24f30afeff3d380705f62 - workdir: /app/apps/server - env: - NODE_ENV: production - copy: - - paths: - - . - target: /app/ - - fromBuilder: install - paths: - - /app/node_modules - target: /app/node_modules - - fromBuilder: install - paths: - - /app/apps/server/node_modules - target: /app/apps/server/node_modules - - fromBuilder: install - paths: - - /app/packages - target: /app/packages - run: - - deno bundle --platform=deno --sloppy-imports --node-modules-dir=manual --output src/_serve.bundle.mjs src/serve.ts - - deno compile --no-check -A --node-modules-dir=none --include static/openapi.yaml --include static/openapi-v1.json --output app src/_serve.bundle.mjs fromImage: host: registry.access.redhat.com port: 443 path: hi/curl digest: sha256:848b81ab5d5e55371d7193fd4f1ea7b605d14dbb039344ffad34a4c1f0d880f4 label: - org.opencontainers.image.vendor: OpenStatus + io.dofigen.version: 2.8.0 org.opencontainers.image.title: OpenStatus Server - org.opencontainers.image.description: REST API server with Hono framework for OpenStatus - org.opencontainers.image.authors: OpenStatus Team org.opencontainers.image.base.digest: sha256:848b81ab5d5e55371d7193fd4f1ea7b605d14dbb039344ffad34a4c1f0d880f4 - io.dofigen.version: 2.8.0 org.opencontainers.image.source: https://github.com/openstatusHQ/openstatus + org.opencontainers.image.vendor: OpenStatus + org.opencontainers.image.authors: OpenStatus Team + org.opencontainers.image.description: REST API server with Hono framework for OpenStatus user: user: '1000' group: '1000' diff --git a/apps/server/package.json b/apps/server/package.json index ad42e967..5dce51fb 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -32,6 +32,7 @@ "@openstatus/db": "workspace:*", "@openstatus/emails": "workspace:*", "@openstatus/error": "workspace:*", + "@openstatus/locales": "workspace:*", "@openstatus/notification-bird-whatsapp": "workspace:*", "@openstatus/notification-discord": "workspace:*", "@openstatus/notification-google-chat": "workspace:*", @@ -70,7 +71,6 @@ "zod": "catalog:" }, "devDependencies": { - "@openstatus/locales": "workspace:*", "@openstatus/test-utils": "workspace:*", "@openstatus/tsconfig": "workspace:*", "@std/expect": "jsr:^1.0.19", diff --git a/apps/server/src/routes/rpc/handlers/status-page/__tests__/status-page.test.ts b/apps/server/src/routes/rpc/handlers/status-page/__tests__/status-page.test.ts index 0abbf38d..2e07ced7 100644 --- a/apps/server/src/routes/rpc/handlers/status-page/__tests__/status-page.test.ts +++ b/apps/server/src/routes/rpc/handlers/status-page/__tests__/status-page.test.ts @@ -1173,6 +1173,72 @@ describe("StatusPageService locale fields", () => { .set({ defaultLocale: "en", locales: null }) .where(eq(page.id, testPageToUpdateId)); }); + + test("returns distinct enum values for tr, hi and ko", async () => { + await db + .update(page) + .set({ defaultLocale: "ko", locales: ["en", "tr", "hi", "ko"] }) + .where(eq(page.id, testPageId)); + + const res = await connectRequest( + "GetStatusPage", + { id: String(testPageId) }, + { "x-openstatus-key": "1" }, + ); + + expect(res.status).toBe(200); + + const data = await res.json(); + expect(data.statusPage.defaultLocale).toBe("LOCALE_KO"); + expect(data.statusPage.locales).toEqual([ + "LOCALE_EN", + "LOCALE_TR", + "LOCALE_HI", + "LOCALE_KO", + ]); + + // Restore defaults + await db + .update(page) + .set({ defaultLocale: "en", locales: null }) + .where(eq(page.id, testPageId)); + }); + + test("round-trips tr, hi and ko through update", async () => { + const res = await connectRequest( + "UpdateStatusPage", + { + id: String(testPageToUpdateId), + defaultLocale: "LOCALE_TR", + locales: ["LOCALE_TR", "LOCALE_HI", "LOCALE_KO"], + }, + { "x-openstatus-key": "1" }, + ); + + expect(res.status).toBe(200); + + const data = await res.json(); + expect(data.statusPage.defaultLocale).toBe("LOCALE_TR"); + expect(data.statusPage.locales).toEqual([ + "LOCALE_TR", + "LOCALE_HI", + "LOCALE_KO", + ]); + + const stored = await db + .select() + .from(page) + .where(eq(page.id, testPageToUpdateId)) + .get(); + expect(stored?.defaultLocale).toBe("tr"); + expect(stored?.locales).toEqual(["tr", "hi", "ko"]); + + // Restore defaults + await db + .update(page) + .set({ defaultLocale: "en", locales: null }) + .where(eq(page.id, testPageToUpdateId)); + }); }); // ========================================================================== diff --git a/apps/server/src/routes/rpc/handlers/status-page/converters.ts b/apps/server/src/routes/rpc/handlers/status-page/converters.ts index 7d631486..d9369cbe 100644 --- a/apps/server/src/routes/rpc/handlers/status-page/converters.ts +++ b/apps/server/src/routes/rpc/handlers/status-page/converters.ts @@ -1,5 +1,5 @@ import type { PageConfiguration as DBPageConfiguration } from "@openstatus/db/src/schema"; -import type { Locale } from "@openstatus/locales"; +import { defaultLocale, type Locale } from "@openstatus/locales"; import type { CustomTheme, PageComponent, @@ -299,36 +299,41 @@ export function eventStatusToProto( } } +// Keyed by `Locale`, so adding a language to `@openstatus/locales` fails to +// compile until the proto enum gains a matching value — a missing case here +// used to silently fold the locale to EN and produce duplicates on read. +const DB_LOCALE_TO_PROTO: Record = { + en: ProtoLocale.EN, + fr: ProtoLocale.FR, + de: ProtoLocale.DE, + tr: ProtoLocale.TR, + hi: ProtoLocale.HI, + ko: ProtoLocale.KO, +}; + +const PROTO_LOCALE_TO_DB: Record = { + [ProtoLocale.UNSPECIFIED]: null, + [ProtoLocale.EN]: "en", + [ProtoLocale.FR]: "fr", + [ProtoLocale.DE]: "de", + [ProtoLocale.TR]: "tr", + [ProtoLocale.HI]: "hi", + [ProtoLocale.KO]: "ko", +}; + /** * Convert DB locale string to proto enum. */ export function dbLocaleToProto(locale: Locale): ProtoLocale { - switch (locale) { - case "en": - return ProtoLocale.EN; - case "fr": - return ProtoLocale.FR; - case "de": - return ProtoLocale.DE; - default: - return ProtoLocale.EN; - } + return DB_LOCALE_TO_PROTO[locale] ?? ProtoLocale.UNSPECIFIED; } /** - * Convert proto locale enum to DB string. + * Convert proto locale enum to DB string. Unknown/unspecified values fall back + * to the default locale. */ export function protoLocaleToDb(locale: ProtoLocale): Locale { - switch (locale) { - case ProtoLocale.EN: - return "en"; - case ProtoLocale.FR: - return "fr"; - case ProtoLocale.DE: - return "de"; - default: - return "en"; - } + return PROTO_LOCALE_TO_DB[locale] ?? defaultLocale; } /** @@ -351,7 +356,9 @@ export function dbPageToProto(page: DBPage): StatusPage { createdAt: page.createdAt?.toISOString() ?? "", updatedAt: page.updatedAt?.toISOString() ?? "", defaultLocale: dbLocaleToProto(page.defaultLocale), - locales: page.locales?.map(dbLocaleToProto) ?? [], + locales: page.locales + ? [...new Set(page.locales.map(dbLocaleToProto))] + : [], password: page.password ?? "", authEmailDomains: page.authEmailDomains?.split(",").filter(Boolean) ?? [], allowIndex: page.allowIndex ?? true, diff --git a/apps/server/static/openapi.yaml b/apps/server/static/openapi.yaml index 718e30c4..d482b46e 100644 --- a/apps/server/static/openapi.yaml +++ b/apps/server/static/openapi.yaml @@ -3566,6 +3566,9 @@ components: - LOCALE_EN - LOCALE_FR - LOCALE_DE + - LOCALE_TR + - LOCALE_HI + - LOCALE_KO description: Locale defines the supported languages for a status page. openstatus.status_page.v1.OverallStatus: type: string diff --git a/packages/proto/api/openstatus/status_page/v1/status_page.proto b/packages/proto/api/openstatus/status_page/v1/status_page.proto index bc034340..e7b0d80f 100644 --- a/packages/proto/api/openstatus/status_page/v1/status_page.proto +++ b/packages/proto/api/openstatus/status_page/v1/status_page.proto @@ -29,6 +29,9 @@ enum Locale { LOCALE_EN = 1; LOCALE_FR = 2; LOCALE_DE = 3; + LOCALE_TR = 4; + LOCALE_HI = 5; + LOCALE_KO = 6; } diff --git a/packages/proto/gen/openapi.yaml b/packages/proto/gen/openapi.yaml index 718e30c4..d482b46e 100644 --- a/packages/proto/gen/openapi.yaml +++ b/packages/proto/gen/openapi.yaml @@ -3566,6 +3566,9 @@ components: - LOCALE_EN - LOCALE_FR - LOCALE_DE + - LOCALE_TR + - LOCALE_HI + - LOCALE_KO description: Locale defines the supported languages for a status page. openstatus.status_page.v1.OverallStatus: type: string diff --git a/packages/proto/gen/ts/openstatus/status_page/v1/status_page_pb.ts b/packages/proto/gen/ts/openstatus/status_page/v1/status_page_pb.ts index 798226a2..fa0e7b26 100644 --- a/packages/proto/gen/ts/openstatus/status_page/v1/status_page_pb.ts +++ b/packages/proto/gen/ts/openstatus/status_page/v1/status_page_pb.ts @@ -11,7 +11,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file openstatus/status_page/v1/status_page.proto. */ export const file_openstatus_status_page_v1_status_page: GenFile = /*@__PURE__*/ - fileDesc("CitvcGVuc3RhdHVzL3N0YXR1c19wYWdlL3YxL3N0YXR1c19wYWdlLnByb3RvEhlvcGVuc3RhdHVzLnN0YXR1c19wYWdlLnYxIuoBCgtDdXN0b21UaGVtZRJACgVsaWdodBgBIAMoCzIxLm9wZW5zdGF0dXMuc3RhdHVzX3BhZ2UudjEuQ3VzdG9tVGhlbWUuTGlnaHRFbnRyeRI+CgRkYXJrGAIgAygLMjAub3BlbnN0YXR1cy5zdGF0dXNfcGFnZS52MS5DdXN0b21UaGVtZS5EYXJrRW50cnkaLAoKTGlnaHRFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGisKCURhcmtFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIsMBChFQYWdlQ29uZmlndXJhdGlvbhI+CgttZXRyaWNfdHlwZRgBIAEoDjIpLm9wZW5zdGF0dXMuc3RhdHVzX3BhZ2UudjEuUGFnZU1ldHJpY1R5cGUSOAoIYmFyX3R5cGUYAiABKA4yJi5vcGVuc3RhdHVzLnN0YXR1c19wYWdlLnYxLlBhZ2VCYXJUeXBlEhMKC3Nob3dfdXB0aW1lGAMgASgIEhEKCXRoZW1lX2tleRgEIAEoCRIMCgRkYXlzGAUgASgFItIFCgpTdGF0dXNQYWdlEgoKAmlkGAEgASgJEg0KBXRpdGxlGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEh4KBHNsdWcYBCABKAlCELpHDToLEglhY21lLWNvcnASMAoNY3VzdG9tX2RvbWFpbhgFIAEoCUIZukcWOhQSEnN0YXR1cy5leGFtcGxlLmNvbRIRCglwdWJsaXNoZWQYBiABKAgSPgoLYWNjZXNzX3R5cGUYByABKA4yKS5vcGVuc3RhdHVzLnN0YXR1c19wYWdlLnYxLlBhZ2VBY2Nlc3NUeXBlEjMKBXRoZW1lGAggASgOMiQub3BlbnN0YXR1cy5zdGF0dXNfcGFnZS52MS5QYWdlVGhlbWUSFAoMaG9tZXBhZ2VfdXJsGAkgASgJEhMKC2NvbnRhY3RfdXJsGAogASgJEgwKBGljb24YCyABKAkSLwoKY3JlYXRlZF9hdBgMIAEoCUIbukcYOhYSFDIwMjQtMDEtMTVUMDk6MDA6MDBaEi8KCnVwZGF0ZWRfYXQYDSABKAlCG7pHGDoWEhQyMDI0LTA2LTIwVDE0OjMwOjAwWhI5Cg5kZWZhdWx0X2xvY2FsZRgOIAEoDjIhLm9wZW5zdGF0dXMuc3RhdHVzX3BhZ2UudjEuTG9jYWxlEjIKB2xvY2FsZXMYDyADKA4yIS5vcGVuc3RhdHVzLnN0YXR1c19wYWdlLnYxLkxvY2FsZRIQCghwYXNzd29yZBgQIAEoCRIaChJhdXRoX2VtYWlsX2RvbWFpbnMYESADKAkSEwoLYWxsb3dfaW5kZXgYEiABKAgSGQoRYWxsb3dlZF9pcF9yYW5nZXMYEyABKAkSQQoMY3VzdG9tX3RoZW1lGBQgASgLMiYub3BlbnN0YXR1cy5zdGF0dXNfcGFnZS52MS5DdXN0b21UaGVtZUgAiAEBQg8KDV9jdXN0b21fdGhlbWUiqQEKEVN0YXR1c1BhZ2VTdW1tYXJ5EgoKAmlkGAEgASgJEg0KBXRpdGxlGAIgASgJEgwKBHNsdWcYAyABKAkSEQoJcHVibGlzaGVkGAQgASgIEhIKCmNyZWF0ZWRfYXQYBSABKAkSEgoKdXBkYXRlZF9hdBgGIAEoCRIwCg1jdXN0b21fZG9tYWluGAcgASgJQhm6RxY6FBISc3RhdHVzLmV4YW1wbGUuY29tKsABCg5QYWdlQWNjZXNzVHlwZRIgChxQQUdFX0FDQ0VTU19UWVBFX1VOU1BFQ0lGSUVEEAASGwoXUEFHRV9BQ0NFU1NfVFlQRV9QVUJMSUMQARInCiNQQUdFX0FDQ0VTU19UWVBFX1BBU1NXT1JEX1BST1RFQ1RFRBACEiIKHlBBR0VfQUNDRVNTX1RZUEVfQVVUSEVOVElDQVRFRBADEiIKHlBBR0VfQUNDRVNTX1RZUEVfSVBfUkVTVFJJQ1RFRBAEKmkKCVBhZ2VUaGVtZRIaChZQQUdFX1RIRU1FX1VOU1BFQ0lGSUVEEAASFQoRUEFHRV9USEVNRV9TWVNURU0QARIUChBQQUdFX1RIRU1FX0xJR0hUEAISEwoPUEFHRV9USEVNRV9EQVJLEAMqTQoGTG9jYWxlEhYKEkxPQ0FMRV9VTlNQRUNJRklFRBAAEg0KCUxPQ0FMRV9FThABEg0KCUxPQ0FMRV9GUhACEg0KCUxPQ0FMRV9ERRADKuwBCg1PdmVyYWxsU3RhdHVzEh4KGk9WRVJBTExfU1RBVFVTX1VOU1BFQ0lGSUVEEAASHgoaT1ZFUkFMTF9TVEFUVVNfT1BFUkFUSU9OQUwQARIbChdPVkVSQUxMX1NUQVRVU19ERUdSQURFRBACEiEKHU9WRVJBTExfU1RBVFVTX1BBUlRJQUxfT1VUQUdFEAMSHwobT1ZFUkFMTF9TVEFUVVNfTUFKT1JfT1VUQUdFEAQSHgoaT1ZFUkFMTF9TVEFUVVNfTUFJTlRFTkFOQ0UQBRIaChZPVkVSQUxMX1NUQVRVU19VTktOT1dOEAYqjQEKDlBhZ2VNZXRyaWNUeXBlEiAKHFBBR0VfTUVUUklDX1RZUEVfVU5TUEVDSUZJRUQQABIdChlQQUdFX01FVFJJQ19UWVBFX0RVUkFUSU9OEAESHQoZUEFHRV9NRVRSSUNfVFlQRV9SRVFVRVNUUxACEhsKF1BBR0VfTUVUUklDX1RZUEVfTUFOVUFMEAMqYgoLUGFnZUJhclR5cGUSHQoZUEFHRV9CQVJfVFlQRV9VTlNQRUNJRklFRBAAEhoKFlBBR0VfQkFSX1RZUEVfQUJTT0xVVEUQARIYChRQQUdFX0JBUl9UWVBFX01BTlVBTBACQlpaWGdpdGh1Yi5jb20vb3BlbnN0YXR1c2hxL29wZW5zdGF0dXMvcGFja2FnZXMvcHJvdG8vb3BlbnN0YXR1cy9zdGF0dXNfcGFnZS92MTtzdGF0dXNwYWdldjFiBnByb3RvMw", [file_gnostic_openapi_v3_annotations]); + fileDesc("CitvcGVuc3RhdHVzL3N0YXR1c19wYWdlL3YxL3N0YXR1c19wYWdlLnByb3RvEhlvcGVuc3RhdHVzLnN0YXR1c19wYWdlLnYxIuoBCgtDdXN0b21UaGVtZRJACgVsaWdodBgBIAMoCzIxLm9wZW5zdGF0dXMuc3RhdHVzX3BhZ2UudjEuQ3VzdG9tVGhlbWUuTGlnaHRFbnRyeRI+CgRkYXJrGAIgAygLMjAub3BlbnN0YXR1cy5zdGF0dXNfcGFnZS52MS5DdXN0b21UaGVtZS5EYXJrRW50cnkaLAoKTGlnaHRFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGisKCURhcmtFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIsMBChFQYWdlQ29uZmlndXJhdGlvbhI+CgttZXRyaWNfdHlwZRgBIAEoDjIpLm9wZW5zdGF0dXMuc3RhdHVzX3BhZ2UudjEuUGFnZU1ldHJpY1R5cGUSOAoIYmFyX3R5cGUYAiABKA4yJi5vcGVuc3RhdHVzLnN0YXR1c19wYWdlLnYxLlBhZ2VCYXJUeXBlEhMKC3Nob3dfdXB0aW1lGAMgASgIEhEKCXRoZW1lX2tleRgEIAEoCRIMCgRkYXlzGAUgASgFItIFCgpTdGF0dXNQYWdlEgoKAmlkGAEgASgJEg0KBXRpdGxlGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEh4KBHNsdWcYBCABKAlCELpHDToLEglhY21lLWNvcnASMAoNY3VzdG9tX2RvbWFpbhgFIAEoCUIZukcWOhQSEnN0YXR1cy5leGFtcGxlLmNvbRIRCglwdWJsaXNoZWQYBiABKAgSPgoLYWNjZXNzX3R5cGUYByABKA4yKS5vcGVuc3RhdHVzLnN0YXR1c19wYWdlLnYxLlBhZ2VBY2Nlc3NUeXBlEjMKBXRoZW1lGAggASgOMiQub3BlbnN0YXR1cy5zdGF0dXNfcGFnZS52MS5QYWdlVGhlbWUSFAoMaG9tZXBhZ2VfdXJsGAkgASgJEhMKC2NvbnRhY3RfdXJsGAogASgJEgwKBGljb24YCyABKAkSLwoKY3JlYXRlZF9hdBgMIAEoCUIbukcYOhYSFDIwMjQtMDEtMTVUMDk6MDA6MDBaEi8KCnVwZGF0ZWRfYXQYDSABKAlCG7pHGDoWEhQyMDI0LTA2LTIwVDE0OjMwOjAwWhI5Cg5kZWZhdWx0X2xvY2FsZRgOIAEoDjIhLm9wZW5zdGF0dXMuc3RhdHVzX3BhZ2UudjEuTG9jYWxlEjIKB2xvY2FsZXMYDyADKA4yIS5vcGVuc3RhdHVzLnN0YXR1c19wYWdlLnYxLkxvY2FsZRIQCghwYXNzd29yZBgQIAEoCRIaChJhdXRoX2VtYWlsX2RvbWFpbnMYESADKAkSEwoLYWxsb3dfaW5kZXgYEiABKAgSGQoRYWxsb3dlZF9pcF9yYW5nZXMYEyABKAkSQQoMY3VzdG9tX3RoZW1lGBQgASgLMiYub3BlbnN0YXR1cy5zdGF0dXNfcGFnZS52MS5DdXN0b21UaGVtZUgAiAEBQg8KDV9jdXN0b21fdGhlbWUiqQEKEVN0YXR1c1BhZ2VTdW1tYXJ5EgoKAmlkGAEgASgJEg0KBXRpdGxlGAIgASgJEgwKBHNsdWcYAyABKAkSEQoJcHVibGlzaGVkGAQgASgIEhIKCmNyZWF0ZWRfYXQYBSABKAkSEgoKdXBkYXRlZF9hdBgGIAEoCRIwCg1jdXN0b21fZG9tYWluGAcgASgJQhm6RxY6FBISc3RhdHVzLmV4YW1wbGUuY29tKsABCg5QYWdlQWNjZXNzVHlwZRIgChxQQUdFX0FDQ0VTU19UWVBFX1VOU1BFQ0lGSUVEEAASGwoXUEFHRV9BQ0NFU1NfVFlQRV9QVUJMSUMQARInCiNQQUdFX0FDQ0VTU19UWVBFX1BBU1NXT1JEX1BST1RFQ1RFRBACEiIKHlBBR0VfQUNDRVNTX1RZUEVfQVVUSEVOVElDQVRFRBADEiIKHlBBR0VfQUNDRVNTX1RZUEVfSVBfUkVTVFJJQ1RFRBAEKmkKCVBhZ2VUaGVtZRIaChZQQUdFX1RIRU1FX1VOU1BFQ0lGSUVEEAASFQoRUEFHRV9USEVNRV9TWVNURU0QARIUChBQQUdFX1RIRU1FX0xJR0hUEAISEwoPUEFHRV9USEVNRV9EQVJLEAMqegoGTG9jYWxlEhYKEkxPQ0FMRV9VTlNQRUNJRklFRBAAEg0KCUxPQ0FMRV9FThABEg0KCUxPQ0FMRV9GUhACEg0KCUxPQ0FMRV9ERRADEg0KCUxPQ0FMRV9UUhAEEg0KCUxPQ0FMRV9ISRAFEg0KCUxPQ0FMRV9LTxAGKuwBCg1PdmVyYWxsU3RhdHVzEh4KGk9WRVJBTExfU1RBVFVTX1VOU1BFQ0lGSUVEEAASHgoaT1ZFUkFMTF9TVEFUVVNfT1BFUkFUSU9OQUwQARIbChdPVkVSQUxMX1NUQVRVU19ERUdSQURFRBACEiEKHU9WRVJBTExfU1RBVFVTX1BBUlRJQUxfT1VUQUdFEAMSHwobT1ZFUkFMTF9TVEFUVVNfTUFKT1JfT1VUQUdFEAQSHgoaT1ZFUkFMTF9TVEFUVVNfTUFJTlRFTkFOQ0UQBRIaChZPVkVSQUxMX1NUQVRVU19VTktOT1dOEAYqjQEKDlBhZ2VNZXRyaWNUeXBlEiAKHFBBR0VfTUVUUklDX1RZUEVfVU5TUEVDSUZJRUQQABIdChlQQUdFX01FVFJJQ19UWVBFX0RVUkFUSU9OEAESHQoZUEFHRV9NRVRSSUNfVFlQRV9SRVFVRVNUUxACEhsKF1BBR0VfTUVUUklDX1RZUEVfTUFOVUFMEAMqYgoLUGFnZUJhclR5cGUSHQoZUEFHRV9CQVJfVFlQRV9VTlNQRUNJRklFRBAAEhoKFlBBR0VfQkFSX1RZUEVfQUJTT0xVVEUQARIYChRQQUdFX0JBUl9UWVBFX01BTlVBTBACQlpaWGdpdGh1Yi5jb20vb3BlbnN0YXR1c2hxL29wZW5zdGF0dXMvcGFja2FnZXMvcHJvdG8vb3BlbnN0YXR1cy9zdGF0dXNfcGFnZS92MTtzdGF0dXNwYWdldjFiBnByb3RvMw", [file_gnostic_openapi_v3_annotations]); /** * CustomTheme holds per-mode CSS variable overrides merged over the page theme. @@ -404,6 +404,21 @@ export enum Locale { * @generated from enum value: LOCALE_DE = 3; */ DE = 3, + + /** + * @generated from enum value: LOCALE_TR = 4; + */ + TR = 4, + + /** + * @generated from enum value: LOCALE_HI = 5; + */ + HI = 5, + + /** + * @generated from enum value: LOCALE_KO = 6; + */ + KO = 6, } /** diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4ec40d18..c2039a71 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -943,6 +943,9 @@ importers: '@openstatus/error': specifier: workspace:* version: link:../../packages/error + '@openstatus/locales': + specifier: workspace:* + version: link:../../packages/locales '@openstatus/notification-bird-whatsapp': specifier: workspace:* version: link:../../packages/notifications/bird-whatsapp @@ -1052,9 +1055,6 @@ importers: specifier: 'catalog:' version: 4.1.13 devDependencies: - '@openstatus/locales': - specifier: workspace:* - version: link:../../packages/locales '@openstatus/test-utils': specifier: workspace:* version: link:../../packages/test-utils