@galya/schema
Advanced tools
| /** Workspace-scoped key: `galya_<lookup>_<secret>` */ | ||
| export declare const WORKSPACE_KEY_PREFIX = "galya"; | ||
| /** Account publishable (browser ingest): `galya_pub_<lookup>_<secret>` */ | ||
| export declare const ACCOUNT_PUBLISHABLE_PREFIX = "galya_pub"; | ||
| /** Account secret (server API): `galya_sk_<lookup>_<secret>` */ | ||
| export declare const ACCOUNT_SECRET_PREFIX = "galya_sk"; | ||
| export type GalyaApiKeyKind = "workspace" | "account_publishable" | "account_secret" | "unknown"; | ||
| export declare function classifyGalyaApiKey(key: string): GalyaApiKeyKind; | ||
| export declare function isAccountApiKey(key: string): boolean; | ||
| export declare function isAccountPublishableApiKey(key: string): boolean; | ||
| export declare function isAccountSecretApiKey(key: string): boolean; | ||
| export declare function isWorkspaceApiKey(key: string): boolean; | ||
| /** Account keys must send workspace `publicId` on ingest and API. Workspace keys embed tenancy in the token. */ | ||
| export declare function requiresWorkspaceIdHeader(key: string): boolean; | ||
| //# sourceMappingURL=apiKey.d.ts.map |
| {"version":3,"file":"apiKey.d.ts","sourceRoot":"","sources":["../src/apiKey.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,eAAO,MAAM,oBAAoB,UAAU,CAAC;AAE5C,0EAA0E;AAC1E,eAAO,MAAM,0BAA0B,cAAc,CAAC;AAEtD,gEAAgE;AAChE,eAAO,MAAM,qBAAqB,aAAa,CAAC;AAEhD,MAAM,MAAM,eAAe,GACvB,WAAW,GACX,qBAAqB,GACrB,gBAAgB,GAChB,SAAS,CAAC;AAEd,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAMhE;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGpD;AAED,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE/D;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED,gHAAgH;AAChH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE9D"} |
| /** Workspace-scoped key: `galya_<lookup>_<secret>` */ | ||
| export const WORKSPACE_KEY_PREFIX = "galya"; | ||
| /** Account publishable (browser ingest): `galya_pub_<lookup>_<secret>` */ | ||
| export const ACCOUNT_PUBLISHABLE_PREFIX = "galya_pub"; | ||
| /** Account secret (server API): `galya_sk_<lookup>_<secret>` */ | ||
| export const ACCOUNT_SECRET_PREFIX = "galya_sk"; | ||
| export function classifyGalyaApiKey(key) { | ||
| const t = key.trim(); | ||
| if (t.startsWith(`${ACCOUNT_PUBLISHABLE_PREFIX}_`)) | ||
| return "account_publishable"; | ||
| if (t.startsWith(`${ACCOUNT_SECRET_PREFIX}_`)) | ||
| return "account_secret"; | ||
| if (t.startsWith(`${WORKSPACE_KEY_PREFIX}_`)) | ||
| return "workspace"; | ||
| return "unknown"; | ||
| } | ||
| export function isAccountApiKey(key) { | ||
| const k = classifyGalyaApiKey(key); | ||
| return k === "account_publishable" || k === "account_secret"; | ||
| } | ||
| export function isAccountPublishableApiKey(key) { | ||
| return classifyGalyaApiKey(key) === "account_publishable"; | ||
| } | ||
| export function isAccountSecretApiKey(key) { | ||
| return classifyGalyaApiKey(key) === "account_secret"; | ||
| } | ||
| export function isWorkspaceApiKey(key) { | ||
| return classifyGalyaApiKey(key) === "workspace"; | ||
| } | ||
| /** Account keys must send workspace `publicId` on ingest and API. Workspace keys embed tenancy in the token. */ | ||
| export function requiresWorkspaceIdHeader(key) { | ||
| return isAccountApiKey(key); | ||
| } | ||
| //# sourceMappingURL=apiKey.js.map |
| {"version":3,"file":"apiKey.js","sourceRoot":"","sources":["../src/apiKey.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,MAAM,CAAC,MAAM,oBAAoB,GAAG,OAAO,CAAC;AAE5C,0EAA0E;AAC1E,MAAM,CAAC,MAAM,0BAA0B,GAAG,WAAW,CAAC;AAEtD,gEAAgE;AAChE,MAAM,CAAC,MAAM,qBAAqB,GAAG,UAAU,CAAC;AAQhD,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACrB,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,0BAA0B,GAAG,CAAC;QAAE,OAAO,qBAAqB,CAAC;IACjF,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,qBAAqB,GAAG,CAAC;QAAE,OAAO,gBAAgB,CAAC;IACvE,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,oBAAoB,GAAG,CAAC;QAAE,OAAO,WAAW,CAAC;IACjE,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,MAAM,CAAC,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACnC,OAAO,CAAC,KAAK,qBAAqB,IAAI,CAAC,KAAK,gBAAgB,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,GAAW;IACpD,OAAO,mBAAmB,CAAC,GAAG,CAAC,KAAK,qBAAqB,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,GAAW;IAC/C,OAAO,mBAAmB,CAAC,GAAG,CAAC,KAAK,gBAAgB,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,OAAO,mBAAmB,CAAC,GAAG,CAAC,KAAK,WAAW,CAAC;AAClD,CAAC;AAED,gHAAgH;AAChH,MAAM,UAAU,yBAAyB,CAAC,GAAW;IACnD,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC"} |
| export {}; | ||
| //# sourceMappingURL=apiKey.test.d.ts.map |
| {"version":3,"file":"apiKey.test.d.ts","sourceRoot":"","sources":["../src/apiKey.test.ts"],"names":[],"mappings":""} |
| import assert from "node:assert/strict"; | ||
| import { describe, it } from "node:test"; | ||
| import { classifyGalyaApiKey, isAccountApiKey, isAccountPublishableApiKey, isAccountSecretApiKey, isWorkspaceApiKey, requiresWorkspaceIdHeader, } from "./apiKey.js"; | ||
| describe("classifyGalyaApiKey", () => { | ||
| it("recognizes workspace keys", () => { | ||
| assert.equal(classifyGalyaApiKey("galya_abc123_def456"), "workspace"); | ||
| assert.equal(isWorkspaceApiKey("galya_abc123_def456"), true); | ||
| }); | ||
| it("recognizes account publishable keys", () => { | ||
| assert.equal(classifyGalyaApiKey("galya_pub_abc123_def456"), "account_publishable"); | ||
| assert.equal(isAccountPublishableApiKey("galya_pub_abc123_def456"), true); | ||
| }); | ||
| it("recognizes account secret keys", () => { | ||
| assert.equal(classifyGalyaApiKey("galya_sk_abc123_def456"), "account_secret"); | ||
| assert.equal(isAccountSecretApiKey("galya_sk_abc123_def456"), true); | ||
| }); | ||
| it("does not treat pub/sk prefixes as workspace keys", () => { | ||
| assert.equal(isWorkspaceApiKey("galya_pub_x_y"), false); | ||
| assert.equal(isWorkspaceApiKey("galya_sk_x_y"), false); | ||
| }); | ||
| }); | ||
| describe("requiresWorkspaceIdHeader", () => { | ||
| it("is true for account keys only", () => { | ||
| assert.equal(requiresWorkspaceIdHeader("galya_pub_a_b"), true); | ||
| assert.equal(requiresWorkspaceIdHeader("galya_sk_a_b"), true); | ||
| assert.equal(isAccountApiKey("galya_pub_a_b"), true); | ||
| assert.equal(requiresWorkspaceIdHeader("galya_a_b"), false); | ||
| }); | ||
| }); | ||
| //# sourceMappingURL=apiKey.test.js.map |
| {"version":3,"file":"apiKey.test.js","sourceRoot":"","sources":["../src/apiKey.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,0BAA0B,EAC1B,qBAAqB,EACrB,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AAErB,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,EAAE,WAAW,CAAC,CAAC;QACtE,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,EAAE,IAAI,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,yBAAyB,CAAC,EAAE,qBAAqB,CAAC,CAAC;QACpF,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,yBAAyB,CAAC,EAAE,IAAI,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,wBAAwB,CAAC,EAAE,gBAAgB,CAAC,CAAC;QAC9E,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,wBAAwB,CAAC,EAAE,IAAI,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,eAAe,CAAC,EAAE,KAAK,CAAC,CAAC;QACxD,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC,CAAC;QAC/D,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC,CAAC;QAC9D,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC,CAAC;QACrD,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"} |
+1
-0
| export declare const GALYA_SCHEMA_VERSION: 1; | ||
| export { ACCOUNT_PUBLISHABLE_PREFIX, ACCOUNT_SECRET_PREFIX, WORKSPACE_KEY_PREFIX, classifyGalyaApiKey, isAccountApiKey, isAccountPublishableApiKey, isAccountSecretApiKey, isWorkspaceApiKey, requiresWorkspaceIdHeader, type GalyaApiKeyKind, } from "./apiKey.js"; | ||
| /** | ||
@@ -3,0 +4,0 @@ * Opaque serialized rrweb node shape. Consumers that use rrweb-snapshot |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,EAAG,CAAU,CAAC;AAE/C;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE3D,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,OAAO,GACP,eAAe,GACf,SAAS,GACT,QAAQ,CAAC;AAEb,kEAAkE;AAClE,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;CACvC;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAEzE,gFAAgF;AAChF,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,4CAA4C;AAC5C,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,MAAM,EAAE,MAAM,CAAC;IACf,wFAAwF;IACxF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,uCAAuC;AACvC,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB"} | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,EAAG,CAAU,CAAC;AAE/C,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,0BAA0B,EAC1B,qBAAqB,EACrB,iBAAiB,EACjB,yBAAyB,EACzB,KAAK,eAAe,GACrB,MAAM,aAAa,CAAC;AAErB;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE3D,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,OAAO,GACP,eAAe,GACf,SAAS,GACT,QAAQ,CAAC;AAEb,kEAAkE;AAClE,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;CACvC;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAEzE,gFAAgF;AAChF,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,4CAA4C;AAC5C,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,MAAM,EAAE,MAAM,CAAC;IACf,wFAAwF;IACxF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,uCAAuC;AACvC,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB"} |
+1
-0
| export const GALYA_SCHEMA_VERSION = 1; | ||
| export { ACCOUNT_PUBLISHABLE_PREFIX, ACCOUNT_SECRET_PREFIX, WORKSPACE_KEY_PREFIX, classifyGalyaApiKey, isAccountApiKey, isAccountPublishableApiKey, isAccountSecretApiKey, isWorkspaceApiKey, requiresWorkspaceIdHeader, } from "./apiKey.js"; | ||
| //# sourceMappingURL=index.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAU,CAAC"} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAU,CAAC;AAE/C,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,0BAA0B,EAC1B,qBAAqB,EACrB,iBAAiB,EACjB,yBAAyB,GAE1B,MAAM,aAAa,CAAC"} |
+4
-2
| { | ||
| "name": "@galya/schema", | ||
| "version": "0.2.0", | ||
| "version": "0.2.1", | ||
| "publishConfig": { | ||
@@ -36,7 +36,9 @@ "access": "public" | ||
| "devDependencies": { | ||
| "tsx": "^4.19.3", | ||
| "typescript": "^5.7.3" | ||
| }, | ||
| "scripts": { | ||
| "build": "tsc -p tsconfig.json" | ||
| "build": "tsc -p tsconfig.json", | ||
| "test": "node --import tsx --test src/**/*.test.ts" | ||
| } | ||
| } |
No tests
QualityPackage does not have any tests. This is a strong signal of a poorly maintained or low quality package.
13920
150.45%14
133.33%137
136.21%2
-33.33%2
100%