@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.mjs
CHANGED
|
@@ -1106,6 +1106,119 @@ function isValidBearerToken(request, secret) {
|
|
|
1106
1106
|
return constantTimeEqual(token, secret);
|
|
1107
1107
|
}
|
|
1108
1108
|
|
|
1109
|
+
// src/auth/beta-client.ts
|
|
1110
|
+
var DEFAULT_CONFIG = {
|
|
1111
|
+
baseUrl: "",
|
|
1112
|
+
settingsEndpoint: "/api/beta-settings",
|
|
1113
|
+
validateEndpoint: "/api/validate-beta-code",
|
|
1114
|
+
storageKey: "beta_code",
|
|
1115
|
+
failSafeDefaults: {
|
|
1116
|
+
betaMode: true,
|
|
1117
|
+
requireInviteCode: true,
|
|
1118
|
+
betaMessage: ""
|
|
1119
|
+
}
|
|
1120
|
+
};
|
|
1121
|
+
function createBetaClient(config = {}) {
|
|
1122
|
+
const cfg = {
|
|
1123
|
+
...DEFAULT_CONFIG,
|
|
1124
|
+
...config,
|
|
1125
|
+
failSafeDefaults: {
|
|
1126
|
+
...DEFAULT_CONFIG.failSafeDefaults,
|
|
1127
|
+
...config.failSafeDefaults
|
|
1128
|
+
}
|
|
1129
|
+
};
|
|
1130
|
+
return {
|
|
1131
|
+
fetchSettings: () => fetchBetaSettings(cfg),
|
|
1132
|
+
validateCode: (code) => validateBetaCode(code, cfg),
|
|
1133
|
+
storeCode: (code) => storeBetaCode(code, cfg),
|
|
1134
|
+
getStoredCode: () => getStoredBetaCode(cfg),
|
|
1135
|
+
clearStoredCode: () => clearStoredBetaCode(cfg)
|
|
1136
|
+
};
|
|
1137
|
+
}
|
|
1138
|
+
async function fetchBetaSettings(config = {}) {
|
|
1139
|
+
const cfg = { ...DEFAULT_CONFIG, ...config };
|
|
1140
|
+
try {
|
|
1141
|
+
const response = await fetch(
|
|
1142
|
+
`${cfg.baseUrl}${cfg.settingsEndpoint}`,
|
|
1143
|
+
{
|
|
1144
|
+
method: "GET",
|
|
1145
|
+
headers: { "Content-Type": "application/json" },
|
|
1146
|
+
cache: "no-store"
|
|
1147
|
+
}
|
|
1148
|
+
);
|
|
1149
|
+
if (!response.ok) {
|
|
1150
|
+
throw new Error(`Failed to fetch beta settings: ${response.status}`);
|
|
1151
|
+
}
|
|
1152
|
+
const data = await response.json();
|
|
1153
|
+
return {
|
|
1154
|
+
betaMode: data.betaMode ?? cfg.failSafeDefaults.betaMode ?? true,
|
|
1155
|
+
requireInviteCode: data.requireInviteCode ?? cfg.failSafeDefaults.requireInviteCode ?? true,
|
|
1156
|
+
betaMessage: data.betaMessage ?? cfg.failSafeDefaults.betaMessage ?? ""
|
|
1157
|
+
};
|
|
1158
|
+
} catch (error) {
|
|
1159
|
+
console.error("Error fetching beta settings:", error);
|
|
1160
|
+
return {
|
|
1161
|
+
betaMode: cfg.failSafeDefaults.betaMode ?? true,
|
|
1162
|
+
requireInviteCode: cfg.failSafeDefaults.requireInviteCode ?? true,
|
|
1163
|
+
betaMessage: cfg.failSafeDefaults.betaMessage ?? ""
|
|
1164
|
+
};
|
|
1165
|
+
}
|
|
1166
|
+
}
|
|
1167
|
+
async function validateBetaCode(code, config = {}) {
|
|
1168
|
+
const cfg = { ...DEFAULT_CONFIG, ...config };
|
|
1169
|
+
if (!code || code.trim().length < 3) {
|
|
1170
|
+
return {
|
|
1171
|
+
valid: false,
|
|
1172
|
+
message: "Please enter a valid invite code."
|
|
1173
|
+
};
|
|
1174
|
+
}
|
|
1175
|
+
try {
|
|
1176
|
+
const response = await fetch(
|
|
1177
|
+
`${cfg.baseUrl}${cfg.validateEndpoint}`,
|
|
1178
|
+
{
|
|
1179
|
+
method: "POST",
|
|
1180
|
+
headers: { "Content-Type": "application/json" },
|
|
1181
|
+
body: JSON.stringify({ code: code.trim().toUpperCase() })
|
|
1182
|
+
}
|
|
1183
|
+
);
|
|
1184
|
+
if (response.status === 429) {
|
|
1185
|
+
return {
|
|
1186
|
+
valid: false,
|
|
1187
|
+
message: "Too many attempts. Please try again later."
|
|
1188
|
+
};
|
|
1189
|
+
}
|
|
1190
|
+
if (!response.ok) {
|
|
1191
|
+
throw new Error(`Validation request failed: ${response.status}`);
|
|
1192
|
+
}
|
|
1193
|
+
return await response.json();
|
|
1194
|
+
} catch (error) {
|
|
1195
|
+
console.error("Error validating invite code:", error);
|
|
1196
|
+
return {
|
|
1197
|
+
valid: false,
|
|
1198
|
+
message: "Unable to validate code. Please try again."
|
|
1199
|
+
};
|
|
1200
|
+
}
|
|
1201
|
+
}
|
|
1202
|
+
function storeBetaCode(code, config = {}) {
|
|
1203
|
+
const key = config.storageKey ?? DEFAULT_CONFIG.storageKey;
|
|
1204
|
+
if (typeof window !== "undefined") {
|
|
1205
|
+
sessionStorage.setItem(key, code.trim().toUpperCase());
|
|
1206
|
+
}
|
|
1207
|
+
}
|
|
1208
|
+
function getStoredBetaCode(config = {}) {
|
|
1209
|
+
const key = config.storageKey ?? DEFAULT_CONFIG.storageKey;
|
|
1210
|
+
if (typeof window !== "undefined") {
|
|
1211
|
+
return sessionStorage.getItem(key);
|
|
1212
|
+
}
|
|
1213
|
+
return null;
|
|
1214
|
+
}
|
|
1215
|
+
function clearStoredBetaCode(config = {}) {
|
|
1216
|
+
const key = config.storageKey ?? DEFAULT_CONFIG.storageKey;
|
|
1217
|
+
if (typeof window !== "undefined") {
|
|
1218
|
+
sessionStorage.removeItem(key);
|
|
1219
|
+
}
|
|
1220
|
+
}
|
|
1221
|
+
|
|
1109
1222
|
// src/env.ts
|
|
1110
1223
|
function getRequiredEnv(key) {
|
|
1111
1224
|
const value = process.env[key];
|
|
@@ -1227,11 +1340,13 @@ export {
|
|
|
1227
1340
|
checkEnvVars,
|
|
1228
1341
|
checkRateLimit,
|
|
1229
1342
|
classifyError,
|
|
1343
|
+
clearStoredBetaCode,
|
|
1230
1344
|
constantTimeEqual,
|
|
1231
1345
|
containsHtml,
|
|
1232
1346
|
containsUrls,
|
|
1233
1347
|
createAuditActor,
|
|
1234
1348
|
createAuditLogger,
|
|
1349
|
+
createBetaClient,
|
|
1235
1350
|
createFeatureFlags,
|
|
1236
1351
|
createMemoryRateLimitStore,
|
|
1237
1352
|
createRedisRateLimitStore,
|
|
@@ -1245,6 +1360,7 @@ export {
|
|
|
1245
1360
|
extractAuditUserAgent,
|
|
1246
1361
|
extractBearerToken,
|
|
1247
1362
|
extractClientIp,
|
|
1363
|
+
fetchBetaSettings,
|
|
1248
1364
|
getBoolEnv,
|
|
1249
1365
|
getCorrelationId,
|
|
1250
1366
|
getEndSessionEndpoint,
|
|
@@ -1253,6 +1369,7 @@ export {
|
|
|
1253
1369
|
getOptionalEnv,
|
|
1254
1370
|
getRateLimitStatus,
|
|
1255
1371
|
getRequiredEnv,
|
|
1372
|
+
getStoredBetaCode,
|
|
1256
1373
|
getTokenEndpoint,
|
|
1257
1374
|
hasAllRoles,
|
|
1258
1375
|
hasAnyRole,
|
|
@@ -1267,7 +1384,9 @@ export {
|
|
|
1267
1384
|
resolveIdentifier,
|
|
1268
1385
|
resolveRateLimitIdentifier,
|
|
1269
1386
|
sanitizeApiError,
|
|
1387
|
+
storeBetaCode,
|
|
1270
1388
|
stripHtml,
|
|
1389
|
+
validateBetaCode,
|
|
1271
1390
|
validateEnvVars,
|
|
1272
1391
|
zodErrorResponse
|
|
1273
1392
|
};
|