From 878ada0d10c48edbe79fec2bd987fab30a26360a Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Wed, 24 Jun 2026 21:30:07 -0500 Subject: [PATCH] some secret shit --- packages/core/src/blitzkit/assertSecret.ts | 4 --- packages/core/src/index.ts | 1 + packages/core/src/secrets/hasSecret.ts | 5 +++ packages/core/src/secrets/index.ts | 3 ++ packages/core/src/secrets/secret.ts | 38 ++++++++++++++++++++++ packages/core/src/secrets/wellKnown.ts | 10 ++++++ 6 files changed, 57 insertions(+), 4 deletions(-) delete mode 100644 packages/core/src/blitzkit/assertSecret.ts create mode 100644 packages/core/src/secrets/hasSecret.ts create mode 100644 packages/core/src/secrets/index.ts create mode 100644 packages/core/src/secrets/secret.ts create mode 100644 packages/core/src/secrets/wellKnown.ts diff --git a/packages/core/src/blitzkit/assertSecret.ts b/packages/core/src/blitzkit/assertSecret.ts deleted file mode 100644 index 934379286..000000000 --- a/packages/core/src/blitzkit/assertSecret.ts +++ /dev/null @@ -1,4 +0,0 @@ -export function assertSecret(secret?: Type) { - if (secret === undefined) throw new Error("Missing secret"); - return secret; -} diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index d070608a3..3adddc0bf 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -7,3 +7,4 @@ export * from "./protobuf"; export * from "./statistics"; export * from "./streams"; export * from "./types"; +export * from "./secrets"; diff --git a/packages/core/src/secrets/hasSecret.ts b/packages/core/src/secrets/hasSecret.ts new file mode 100644 index 000000000..49c49dd66 --- /dev/null +++ b/packages/core/src/secrets/hasSecret.ts @@ -0,0 +1,5 @@ +import { PassableSecretName } from "./secret"; + +export function hasSecret(name: PassableSecretName) { + return name in import.meta.env; +} diff --git a/packages/core/src/secrets/index.ts b/packages/core/src/secrets/index.ts new file mode 100644 index 000000000..36c5d98c8 --- /dev/null +++ b/packages/core/src/secrets/index.ts @@ -0,0 +1,3 @@ +export * from "./secret"; +export * from "./hasSecret"; +export * from "./wellKnown"; diff --git a/packages/core/src/secrets/secret.ts b/packages/core/src/secrets/secret.ts new file mode 100644 index 000000000..b4fb3b637 --- /dev/null +++ b/packages/core/src/secrets/secret.ts @@ -0,0 +1,38 @@ +import { hasSecret } from "./hasSecret"; +import { WellKnownSecret } from "./wellKnown"; + +export enum SecretType { + String, + Number, +} + +export type PassableSecretName = WellKnownSecret | (string & {}); + +export function secret( + name: PassableSecretName, + type?: SecretType.String, +): string; + +export function secret( + name: PassableSecretName, + type: SecretType.Number, +): number; + +export function secret( + name: WellKnownSecret | (string & {}), + type = SecretType.String, +) { + if (!hasSecret(name)) { + throw new Error(`Secret "${name}" not defined`); + } + + const value = import.meta.env[name]; + + switch (type) { + case SecretType.String: + return value; + + case SecretType.Number: + return Number(value); + } +} diff --git a/packages/core/src/secrets/wellKnown.ts b/packages/core/src/secrets/wellKnown.ts new file mode 100644 index 000000000..2f6e77f70 --- /dev/null +++ b/packages/core/src/secrets/wellKnown.ts @@ -0,0 +1,10 @@ +export type WellKnownSecret = + | "BUILD_CHUNK" + | "TEXTURE_CHUNKS" + | "TEMP" + | "WOTB_SERVER" + | "WOTB_VERSION" + | "PUBLIC_WOTB_CLIENT" + | "WOTB_USMAP" + | "GOOGLE_APPLICATION_CREDENTIALS" + | "PUBLIC_GOOGLE_ANALYTICS_PROPERTY_ID";