@digilogiclabs/platform-core 1.7.0 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth.d.mts +2 -2
- package/dist/auth.d.ts +2 -2
- package/dist/auth.js +125 -0
- package/dist/auth.js.map +1 -1
- package/dist/auth.mjs +119 -0
- package/dist/auth.mjs.map +1 -1
- package/dist/{env-DerQ7Da-.d.mts → env-jqNJdZVt.d.mts} +359 -1
- package/dist/{env-DerQ7Da-.d.ts → env-jqNJdZVt.d.ts} +359 -1
- package/dist/{index-CepDdu7h.d.mts → index-DzQ0Js5Z.d.mts} +13 -1
- package/dist/{index-CepDdu7h.d.ts → index-DzQ0Js5Z.d.ts} +13 -1
- package/dist/index.d.mts +98 -3
- package/dist/index.d.ts +98 -3
- package/dist/index.js +964 -14
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +950 -14
- package/dist/index.mjs.map +1 -1
- package/dist/migrations/index.d.mts +1 -1
- package/dist/migrations/index.d.ts +1 -1
- package/dist/migrations/index.js +72 -1
- package/dist/migrations/index.js.map +1 -1
- package/dist/migrations/index.mjs +72 -1
- package/dist/migrations/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/auth.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { R as RateLimitStore, a as RateLimitRule, b as RateLimitOptions } from './env-
|
|
2
|
-
export { as as AllowlistConfig, A as ApiError, k as ApiErrorCode, m as ApiErrorCodeType, o as ApiPaginatedResponse, _ as ApiSecurityConfig, a0 as ApiSecurityContext, n as ApiSuccessResponse, aK as AuditRequest, P as AuthCookiesConfig, W as AuthMethod, C as CommonApiErrors, ay as CommonRateLimits, aj as DateRangeInput, ad as DateRangeSchema, an as DeploymentStage, ah as EmailInput, a6 as EmailSchema, E as EnvValidationConfig, x as EnvValidationResult, ap as FlagDefinition, aq as FlagDefinitions, ao as FlagValue, z as KEYCLOAK_DEFAULT_ROLES, N as KeycloakCallbacksConfig, K as KeycloakConfig, O as KeycloakJwtFields, y as KeycloakTokenSet, al as LoginInput, af as LoginSchema, aF as OpsAuditActor, aH as OpsAuditEvent, aJ as OpsAuditLoggerOptions, aI as OpsAuditRecord, aG as OpsAuditResource, ai as PaginationInput, ac as PaginationSchema, a7 as PasswordSchema, aa as PersonNameSchema, a9 as PhoneSchema, ax as RateLimitCheckResult, Y as RateLimitPreset, S as RedirectCallbackConfig, ar as ResolvedFlags, X as RouteAuditConfig, ak as SearchQueryInput, ae as SearchQuerySchema, $ as SecuritySession, am as SignupInput, ag as SignupSchema, a8 as SlugSchema, aM as StandardAuditActionType, aL as StandardAuditActions, Z as StandardRateLimitPresets, T as TokenRefreshResult, a5 as WrapperPresets, av as buildAllowlist, Q as buildAuthCookies, a4 as buildErrorBody, V as buildKeycloakCallbacks, l as buildPagination, a3 as buildRateLimitHeaders, aD as buildRateLimitResponseHeaders, U as buildRedirectCallback, I as buildTokenRefreshParams, u as checkEnvVars, aA as checkRateLimit, i as classifyError, c as constantTimeEqual, f as containsHtml, d as containsUrls, aQ as createAuditActor, aR as createAuditLogger, au as createFeatureFlags, az as createMemoryRateLimitStore, ab as createSafeTextSchema, at as detectStage, e as escapeHtml, aN as extractAuditIp, aP as extractAuditRequestId, aO as extractAuditUserAgent, a2 as extractClientIp, r as getBoolEnv, h as getCorrelationId, L as getEndSessionEndpoint, w as getEnvSummary, t as getIntEnv, q as getOptionalEnv, aB as getRateLimitStatus, p as getRequiredEnv, J as getTokenEndpoint, G as hasAllRoles, F as hasAnyRole, D as hasRole, aw as isAllowlisted, j as isApiError, H as isTokenExpired, B as parseKeycloakRoles, M as refreshKeycloakToken, aC as resetRateLimitForKey, aE as resolveIdentifier, a1 as resolveRateLimitIdentifier, g as sanitizeApiError, s as stripHtml, v as validateEnvVars } from './env-
|
|
1
|
+
import { R as RateLimitStore, a as RateLimitRule, b as RateLimitOptions } from './env-jqNJdZVt.mjs';
|
|
2
|
+
export { as as AllowlistConfig, A as ApiError, k as ApiErrorCode, m as ApiErrorCodeType, o as ApiPaginatedResponse, _ as ApiSecurityConfig, a0 as ApiSecurityContext, n as ApiSuccessResponse, aK as AuditRequest, P as AuthCookiesConfig, W as AuthMethod, aS as BetaClientConfig, C as CommonApiErrors, ay as CommonRateLimits, aj as DateRangeInput, ad as DateRangeSchema, an as DeploymentStage, ah as EmailInput, a6 as EmailSchema, E as EnvValidationConfig, x as EnvValidationResult, ap as FlagDefinition, aq as FlagDefinitions, ao as FlagValue, z as KEYCLOAK_DEFAULT_ROLES, N as KeycloakCallbacksConfig, K as KeycloakConfig, O as KeycloakJwtFields, y as KeycloakTokenSet, al as LoginInput, af as LoginSchema, aF as OpsAuditActor, aH as OpsAuditEvent, aJ as OpsAuditLoggerOptions, aI as OpsAuditRecord, aG as OpsAuditResource, ai as PaginationInput, ac as PaginationSchema, a7 as PasswordSchema, aa as PersonNameSchema, a9 as PhoneSchema, ax as RateLimitCheckResult, Y as RateLimitPreset, S as RedirectCallbackConfig, ar as ResolvedFlags, X as RouteAuditConfig, ak as SearchQueryInput, ae as SearchQuerySchema, $ as SecuritySession, am as SignupInput, ag as SignupSchema, a8 as SlugSchema, aM as StandardAuditActionType, aL as StandardAuditActions, Z as StandardRateLimitPresets, T as TokenRefreshResult, a5 as WrapperPresets, av as buildAllowlist, Q as buildAuthCookies, a4 as buildErrorBody, V as buildKeycloakCallbacks, l as buildPagination, a3 as buildRateLimitHeaders, aD as buildRateLimitResponseHeaders, U as buildRedirectCallback, I as buildTokenRefreshParams, u as checkEnvVars, aA as checkRateLimit, i as classifyError, aY as clearStoredBetaCode, c as constantTimeEqual, f as containsHtml, d as containsUrls, aQ as createAuditActor, aR as createAuditLogger, aT as createBetaClient, au as createFeatureFlags, az as createMemoryRateLimitStore, ab as createSafeTextSchema, at as detectStage, e as escapeHtml, aN as extractAuditIp, aP as extractAuditRequestId, aO as extractAuditUserAgent, a2 as extractClientIp, aU as fetchBetaSettings, r as getBoolEnv, h as getCorrelationId, L as getEndSessionEndpoint, w as getEnvSummary, t as getIntEnv, q as getOptionalEnv, aB as getRateLimitStatus, p as getRequiredEnv, aX as getStoredBetaCode, J as getTokenEndpoint, G as hasAllRoles, F as hasAnyRole, D as hasRole, aw as isAllowlisted, j as isApiError, H as isTokenExpired, B as parseKeycloakRoles, M as refreshKeycloakToken, aC as resetRateLimitForKey, aE as resolveIdentifier, a1 as resolveRateLimitIdentifier, g as sanitizeApiError, aW as storeBetaCode, s as stripHtml, aV as validateBetaCode, v as validateEnvVars } from './env-jqNJdZVt.mjs';
|
|
3
3
|
import 'zod';
|
|
4
4
|
|
|
5
5
|
/**
|
package/dist/auth.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { R as RateLimitStore, a as RateLimitRule, b as RateLimitOptions } from './env-
|
|
2
|
-
export { as as AllowlistConfig, A as ApiError, k as ApiErrorCode, m as ApiErrorCodeType, o as ApiPaginatedResponse, _ as ApiSecurityConfig, a0 as ApiSecurityContext, n as ApiSuccessResponse, aK as AuditRequest, P as AuthCookiesConfig, W as AuthMethod, C as CommonApiErrors, ay as CommonRateLimits, aj as DateRangeInput, ad as DateRangeSchema, an as DeploymentStage, ah as EmailInput, a6 as EmailSchema, E as EnvValidationConfig, x as EnvValidationResult, ap as FlagDefinition, aq as FlagDefinitions, ao as FlagValue, z as KEYCLOAK_DEFAULT_ROLES, N as KeycloakCallbacksConfig, K as KeycloakConfig, O as KeycloakJwtFields, y as KeycloakTokenSet, al as LoginInput, af as LoginSchema, aF as OpsAuditActor, aH as OpsAuditEvent, aJ as OpsAuditLoggerOptions, aI as OpsAuditRecord, aG as OpsAuditResource, ai as PaginationInput, ac as PaginationSchema, a7 as PasswordSchema, aa as PersonNameSchema, a9 as PhoneSchema, ax as RateLimitCheckResult, Y as RateLimitPreset, S as RedirectCallbackConfig, ar as ResolvedFlags, X as RouteAuditConfig, ak as SearchQueryInput, ae as SearchQuerySchema, $ as SecuritySession, am as SignupInput, ag as SignupSchema, a8 as SlugSchema, aM as StandardAuditActionType, aL as StandardAuditActions, Z as StandardRateLimitPresets, T as TokenRefreshResult, a5 as WrapperPresets, av as buildAllowlist, Q as buildAuthCookies, a4 as buildErrorBody, V as buildKeycloakCallbacks, l as buildPagination, a3 as buildRateLimitHeaders, aD as buildRateLimitResponseHeaders, U as buildRedirectCallback, I as buildTokenRefreshParams, u as checkEnvVars, aA as checkRateLimit, i as classifyError, c as constantTimeEqual, f as containsHtml, d as containsUrls, aQ as createAuditActor, aR as createAuditLogger, au as createFeatureFlags, az as createMemoryRateLimitStore, ab as createSafeTextSchema, at as detectStage, e as escapeHtml, aN as extractAuditIp, aP as extractAuditRequestId, aO as extractAuditUserAgent, a2 as extractClientIp, r as getBoolEnv, h as getCorrelationId, L as getEndSessionEndpoint, w as getEnvSummary, t as getIntEnv, q as getOptionalEnv, aB as getRateLimitStatus, p as getRequiredEnv, J as getTokenEndpoint, G as hasAllRoles, F as hasAnyRole, D as hasRole, aw as isAllowlisted, j as isApiError, H as isTokenExpired, B as parseKeycloakRoles, M as refreshKeycloakToken, aC as resetRateLimitForKey, aE as resolveIdentifier, a1 as resolveRateLimitIdentifier, g as sanitizeApiError, s as stripHtml, v as validateEnvVars } from './env-
|
|
1
|
+
import { R as RateLimitStore, a as RateLimitRule, b as RateLimitOptions } from './env-jqNJdZVt.js';
|
|
2
|
+
export { as as AllowlistConfig, A as ApiError, k as ApiErrorCode, m as ApiErrorCodeType, o as ApiPaginatedResponse, _ as ApiSecurityConfig, a0 as ApiSecurityContext, n as ApiSuccessResponse, aK as AuditRequest, P as AuthCookiesConfig, W as AuthMethod, aS as BetaClientConfig, C as CommonApiErrors, ay as CommonRateLimits, aj as DateRangeInput, ad as DateRangeSchema, an as DeploymentStage, ah as EmailInput, a6 as EmailSchema, E as EnvValidationConfig, x as EnvValidationResult, ap as FlagDefinition, aq as FlagDefinitions, ao as FlagValue, z as KEYCLOAK_DEFAULT_ROLES, N as KeycloakCallbacksConfig, K as KeycloakConfig, O as KeycloakJwtFields, y as KeycloakTokenSet, al as LoginInput, af as LoginSchema, aF as OpsAuditActor, aH as OpsAuditEvent, aJ as OpsAuditLoggerOptions, aI as OpsAuditRecord, aG as OpsAuditResource, ai as PaginationInput, ac as PaginationSchema, a7 as PasswordSchema, aa as PersonNameSchema, a9 as PhoneSchema, ax as RateLimitCheckResult, Y as RateLimitPreset, S as RedirectCallbackConfig, ar as ResolvedFlags, X as RouteAuditConfig, ak as SearchQueryInput, ae as SearchQuerySchema, $ as SecuritySession, am as SignupInput, ag as SignupSchema, a8 as SlugSchema, aM as StandardAuditActionType, aL as StandardAuditActions, Z as StandardRateLimitPresets, T as TokenRefreshResult, a5 as WrapperPresets, av as buildAllowlist, Q as buildAuthCookies, a4 as buildErrorBody, V as buildKeycloakCallbacks, l as buildPagination, a3 as buildRateLimitHeaders, aD as buildRateLimitResponseHeaders, U as buildRedirectCallback, I as buildTokenRefreshParams, u as checkEnvVars, aA as checkRateLimit, i as classifyError, aY as clearStoredBetaCode, c as constantTimeEqual, f as containsHtml, d as containsUrls, aQ as createAuditActor, aR as createAuditLogger, aT as createBetaClient, au as createFeatureFlags, az as createMemoryRateLimitStore, ab as createSafeTextSchema, at as detectStage, e as escapeHtml, aN as extractAuditIp, aP as extractAuditRequestId, aO as extractAuditUserAgent, a2 as extractClientIp, aU as fetchBetaSettings, r as getBoolEnv, h as getCorrelationId, L as getEndSessionEndpoint, w as getEnvSummary, t as getIntEnv, q as getOptionalEnv, aB as getRateLimitStatus, p as getRequiredEnv, aX as getStoredBetaCode, J as getTokenEndpoint, G as hasAllRoles, F as hasAnyRole, D as hasRole, aw as isAllowlisted, j as isApiError, H as isTokenExpired, B as parseKeycloakRoles, M as refreshKeycloakToken, aC as resetRateLimitForKey, aE as resolveIdentifier, a1 as resolveRateLimitIdentifier, g as sanitizeApiError, aW as storeBetaCode, s as stripHtml, aV as validateBetaCode, v as validateEnvVars } from './env-jqNJdZVt.js';
|
|
3
3
|
import 'zod';
|
|
4
4
|
|
|
5
5
|
/**
|
package/dist/auth.js
CHANGED
|
@@ -50,11 +50,13 @@ __export(auth_exports, {
|
|
|
50
50
|
checkEnvVars: () => checkEnvVars,
|
|
51
51
|
checkRateLimit: () => checkRateLimit,
|
|
52
52
|
classifyError: () => classifyError,
|
|
53
|
+
clearStoredBetaCode: () => clearStoredBetaCode,
|
|
53
54
|
constantTimeEqual: () => constantTimeEqual,
|
|
54
55
|
containsHtml: () => containsHtml,
|
|
55
56
|
containsUrls: () => containsUrls,
|
|
56
57
|
createAuditActor: () => createAuditActor,
|
|
57
58
|
createAuditLogger: () => createAuditLogger,
|
|
59
|
+
createBetaClient: () => createBetaClient,
|
|
58
60
|
createFeatureFlags: () => createFeatureFlags,
|
|
59
61
|
createMemoryRateLimitStore: () => createMemoryRateLimitStore,
|
|
60
62
|
createRedisRateLimitStore: () => createRedisRateLimitStore,
|
|
@@ -68,6 +70,7 @@ __export(auth_exports, {
|
|
|
68
70
|
extractAuditUserAgent: () => extractAuditUserAgent,
|
|
69
71
|
extractBearerToken: () => extractBearerToken,
|
|
70
72
|
extractClientIp: () => extractClientIp,
|
|
73
|
+
fetchBetaSettings: () => fetchBetaSettings,
|
|
71
74
|
getBoolEnv: () => getBoolEnv,
|
|
72
75
|
getCorrelationId: () => getCorrelationId,
|
|
73
76
|
getEndSessionEndpoint: () => getEndSessionEndpoint,
|
|
@@ -76,6 +79,7 @@ __export(auth_exports, {
|
|
|
76
79
|
getOptionalEnv: () => getOptionalEnv,
|
|
77
80
|
getRateLimitStatus: () => getRateLimitStatus,
|
|
78
81
|
getRequiredEnv: () => getRequiredEnv,
|
|
82
|
+
getStoredBetaCode: () => getStoredBetaCode,
|
|
79
83
|
getTokenEndpoint: () => getTokenEndpoint,
|
|
80
84
|
hasAllRoles: () => hasAllRoles,
|
|
81
85
|
hasAnyRole: () => hasAnyRole,
|
|
@@ -90,7 +94,9 @@ __export(auth_exports, {
|
|
|
90
94
|
resolveIdentifier: () => resolveIdentifier,
|
|
91
95
|
resolveRateLimitIdentifier: () => resolveRateLimitIdentifier,
|
|
92
96
|
sanitizeApiError: () => sanitizeApiError,
|
|
97
|
+
storeBetaCode: () => storeBetaCode,
|
|
93
98
|
stripHtml: () => stripHtml,
|
|
99
|
+
validateBetaCode: () => validateBetaCode,
|
|
94
100
|
validateEnvVars: () => validateEnvVars,
|
|
95
101
|
zodErrorResponse: () => zodErrorResponse
|
|
96
102
|
});
|
|
@@ -1204,6 +1210,119 @@ function isValidBearerToken(request, secret) {
|
|
|
1204
1210
|
return constantTimeEqual(token, secret);
|
|
1205
1211
|
}
|
|
1206
1212
|
|
|
1213
|
+
// src/auth/beta-client.ts
|
|
1214
|
+
var DEFAULT_CONFIG = {
|
|
1215
|
+
baseUrl: "",
|
|
1216
|
+
settingsEndpoint: "/api/beta-settings",
|
|
1217
|
+
validateEndpoint: "/api/validate-beta-code",
|
|
1218
|
+
storageKey: "beta_code",
|
|
1219
|
+
failSafeDefaults: {
|
|
1220
|
+
betaMode: true,
|
|
1221
|
+
requireInviteCode: true,
|
|
1222
|
+
betaMessage: ""
|
|
1223
|
+
}
|
|
1224
|
+
};
|
|
1225
|
+
function createBetaClient(config = {}) {
|
|
1226
|
+
const cfg = {
|
|
1227
|
+
...DEFAULT_CONFIG,
|
|
1228
|
+
...config,
|
|
1229
|
+
failSafeDefaults: {
|
|
1230
|
+
...DEFAULT_CONFIG.failSafeDefaults,
|
|
1231
|
+
...config.failSafeDefaults
|
|
1232
|
+
}
|
|
1233
|
+
};
|
|
1234
|
+
return {
|
|
1235
|
+
fetchSettings: () => fetchBetaSettings(cfg),
|
|
1236
|
+
validateCode: (code) => validateBetaCode(code, cfg),
|
|
1237
|
+
storeCode: (code) => storeBetaCode(code, cfg),
|
|
1238
|
+
getStoredCode: () => getStoredBetaCode(cfg),
|
|
1239
|
+
clearStoredCode: () => clearStoredBetaCode(cfg)
|
|
1240
|
+
};
|
|
1241
|
+
}
|
|
1242
|
+
async function fetchBetaSettings(config = {}) {
|
|
1243
|
+
const cfg = { ...DEFAULT_CONFIG, ...config };
|
|
1244
|
+
try {
|
|
1245
|
+
const response = await fetch(
|
|
1246
|
+
`${cfg.baseUrl}${cfg.settingsEndpoint}`,
|
|
1247
|
+
{
|
|
1248
|
+
method: "GET",
|
|
1249
|
+
headers: { "Content-Type": "application/json" },
|
|
1250
|
+
cache: "no-store"
|
|
1251
|
+
}
|
|
1252
|
+
);
|
|
1253
|
+
if (!response.ok) {
|
|
1254
|
+
throw new Error(`Failed to fetch beta settings: ${response.status}`);
|
|
1255
|
+
}
|
|
1256
|
+
const data = await response.json();
|
|
1257
|
+
return {
|
|
1258
|
+
betaMode: data.betaMode ?? cfg.failSafeDefaults.betaMode ?? true,
|
|
1259
|
+
requireInviteCode: data.requireInviteCode ?? cfg.failSafeDefaults.requireInviteCode ?? true,
|
|
1260
|
+
betaMessage: data.betaMessage ?? cfg.failSafeDefaults.betaMessage ?? ""
|
|
1261
|
+
};
|
|
1262
|
+
} catch (error) {
|
|
1263
|
+
console.error("Error fetching beta settings:", error);
|
|
1264
|
+
return {
|
|
1265
|
+
betaMode: cfg.failSafeDefaults.betaMode ?? true,
|
|
1266
|
+
requireInviteCode: cfg.failSafeDefaults.requireInviteCode ?? true,
|
|
1267
|
+
betaMessage: cfg.failSafeDefaults.betaMessage ?? ""
|
|
1268
|
+
};
|
|
1269
|
+
}
|
|
1270
|
+
}
|
|
1271
|
+
async function validateBetaCode(code, config = {}) {
|
|
1272
|
+
const cfg = { ...DEFAULT_CONFIG, ...config };
|
|
1273
|
+
if (!code || code.trim().length < 3) {
|
|
1274
|
+
return {
|
|
1275
|
+
valid: false,
|
|
1276
|
+
message: "Please enter a valid invite code."
|
|
1277
|
+
};
|
|
1278
|
+
}
|
|
1279
|
+
try {
|
|
1280
|
+
const response = await fetch(
|
|
1281
|
+
`${cfg.baseUrl}${cfg.validateEndpoint}`,
|
|
1282
|
+
{
|
|
1283
|
+
method: "POST",
|
|
1284
|
+
headers: { "Content-Type": "application/json" },
|
|
1285
|
+
body: JSON.stringify({ code: code.trim().toUpperCase() })
|
|
1286
|
+
}
|
|
1287
|
+
);
|
|
1288
|
+
if (response.status === 429) {
|
|
1289
|
+
return {
|
|
1290
|
+
valid: false,
|
|
1291
|
+
message: "Too many attempts. Please try again later."
|
|
1292
|
+
};
|
|
1293
|
+
}
|
|
1294
|
+
if (!response.ok) {
|
|
1295
|
+
throw new Error(`Validation request failed: ${response.status}`);
|
|
1296
|
+
}
|
|
1297
|
+
return await response.json();
|
|
1298
|
+
} catch (error) {
|
|
1299
|
+
console.error("Error validating invite code:", error);
|
|
1300
|
+
return {
|
|
1301
|
+
valid: false,
|
|
1302
|
+
message: "Unable to validate code. Please try again."
|
|
1303
|
+
};
|
|
1304
|
+
}
|
|
1305
|
+
}
|
|
1306
|
+
function storeBetaCode(code, config = {}) {
|
|
1307
|
+
const key = config.storageKey ?? DEFAULT_CONFIG.storageKey;
|
|
1308
|
+
if (typeof window !== "undefined") {
|
|
1309
|
+
sessionStorage.setItem(key, code.trim().toUpperCase());
|
|
1310
|
+
}
|
|
1311
|
+
}
|
|
1312
|
+
function getStoredBetaCode(config = {}) {
|
|
1313
|
+
const key = config.storageKey ?? DEFAULT_CONFIG.storageKey;
|
|
1314
|
+
if (typeof window !== "undefined") {
|
|
1315
|
+
return sessionStorage.getItem(key);
|
|
1316
|
+
}
|
|
1317
|
+
return null;
|
|
1318
|
+
}
|
|
1319
|
+
function clearStoredBetaCode(config = {}) {
|
|
1320
|
+
const key = config.storageKey ?? DEFAULT_CONFIG.storageKey;
|
|
1321
|
+
if (typeof window !== "undefined") {
|
|
1322
|
+
sessionStorage.removeItem(key);
|
|
1323
|
+
}
|
|
1324
|
+
}
|
|
1325
|
+
|
|
1207
1326
|
// src/env.ts
|
|
1208
1327
|
function getRequiredEnv(key) {
|
|
1209
1328
|
const value = process.env[key];
|
|
@@ -1326,11 +1445,13 @@ function getEnvSummary(keys) {
|
|
|
1326
1445
|
checkEnvVars,
|
|
1327
1446
|
checkRateLimit,
|
|
1328
1447
|
classifyError,
|
|
1448
|
+
clearStoredBetaCode,
|
|
1329
1449
|
constantTimeEqual,
|
|
1330
1450
|
containsHtml,
|
|
1331
1451
|
containsUrls,
|
|
1332
1452
|
createAuditActor,
|
|
1333
1453
|
createAuditLogger,
|
|
1454
|
+
createBetaClient,
|
|
1334
1455
|
createFeatureFlags,
|
|
1335
1456
|
createMemoryRateLimitStore,
|
|
1336
1457
|
createRedisRateLimitStore,
|
|
@@ -1344,6 +1465,7 @@ function getEnvSummary(keys) {
|
|
|
1344
1465
|
extractAuditUserAgent,
|
|
1345
1466
|
extractBearerToken,
|
|
1346
1467
|
extractClientIp,
|
|
1468
|
+
fetchBetaSettings,
|
|
1347
1469
|
getBoolEnv,
|
|
1348
1470
|
getCorrelationId,
|
|
1349
1471
|
getEndSessionEndpoint,
|
|
@@ -1352,6 +1474,7 @@ function getEnvSummary(keys) {
|
|
|
1352
1474
|
getOptionalEnv,
|
|
1353
1475
|
getRateLimitStatus,
|
|
1354
1476
|
getRequiredEnv,
|
|
1477
|
+
getStoredBetaCode,
|
|
1355
1478
|
getTokenEndpoint,
|
|
1356
1479
|
hasAllRoles,
|
|
1357
1480
|
hasAnyRole,
|
|
@@ -1366,7 +1489,9 @@ function getEnvSummary(keys) {
|
|
|
1366
1489
|
resolveIdentifier,
|
|
1367
1490
|
resolveRateLimitIdentifier,
|
|
1368
1491
|
sanitizeApiError,
|
|
1492
|
+
storeBetaCode,
|
|
1369
1493
|
stripHtml,
|
|
1494
|
+
validateBetaCode,
|
|
1370
1495
|
validateEnvVars,
|
|
1371
1496
|
zodErrorResponse
|
|
1372
1497
|
});
|