tempest-express-sdk 0.8.0 → 0.10.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/README.md +5 -4
- package/dist/chunk-U3SXT3KR.js +6 -0
- package/dist/{chunk-JWJJAIXV.js.map → chunk-U3SXT3KR.js.map} +1 -1
- package/dist/cli.cjs +1 -1
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +1 -1
- package/dist/index.cjs +159 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +227 -86
- package/dist/index.d.ts +227 -86
- package/dist/index.js +157 -4
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-JWJJAIXV.js +0 -6
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { VERSION } from './chunk-
|
|
1
|
+
export { VERSION } from './chunk-U3SXT3KR.js';
|
|
2
2
|
import { AsyncLocalStorage } from 'async_hooks';
|
|
3
3
|
import { extendZodWithOpenApi, OpenAPIRegistry, OpenApiGeneratorV31, OpenApiGeneratorV3 } from '@asteasolutions/zod-to-openapi';
|
|
4
4
|
export { OpenAPIRegistry } from '@asteasolutions/zod-to-openapi';
|
|
@@ -7,7 +7,9 @@ export { z } from 'zod';
|
|
|
7
7
|
import { Model, column, sql } from 'tempest-db-js';
|
|
8
8
|
export { AsyncEngine, AsyncResult, AsyncSession, BaseRepository, Column, DeleteBuilder, InsertBuilder, Model, NoResultError, NodeSqliteDriver, PostgresDialect, RecordNotFound, SelectBuilder, SqliteDialect, SyncEngine, SyncSession, UpdateBuilder, and, belongsTo, column, columnsOf, createEngine, createSyncEngine, del, detectDialect, getDialect, hasMany, insert, join, loadRelations, not, or, parseDatabaseUrl, select, sql, update } from 'tempest-db-js';
|
|
9
9
|
import { createHash, randomBytes, timingSafeEqual, randomUUID, createHmac } from 'crypto';
|
|
10
|
+
import { execFile } from 'child_process';
|
|
10
11
|
import { cpus, loadavg, totalmem, freemem } from 'os';
|
|
12
|
+
import { promisify } from 'util';
|
|
11
13
|
import { mkdir, writeFile, readFile, rm } from 'fs/promises';
|
|
12
14
|
import { join, dirname } from 'path';
|
|
13
15
|
import express2, { Router } from 'express';
|
|
@@ -7008,6 +7010,7 @@ var HTTPClient = class {
|
|
|
7008
7010
|
return this.request("DELETE", url, init);
|
|
7009
7011
|
}
|
|
7010
7012
|
};
|
|
7013
|
+
var execFileAsync = promisify(execFile);
|
|
7011
7014
|
function readCpu() {
|
|
7012
7015
|
const cores = cpus().length;
|
|
7013
7016
|
const load1 = loadavg()[0] ?? 0;
|
|
@@ -7036,7 +7039,27 @@ function readSystem() {
|
|
|
7036
7039
|
uptimeSeconds: process.uptime()
|
|
7037
7040
|
};
|
|
7038
7041
|
}
|
|
7039
|
-
function
|
|
7042
|
+
async function readGpus() {
|
|
7043
|
+
try {
|
|
7044
|
+
const { stdout } = await execFileAsync("nvidia-smi", [
|
|
7045
|
+
"--query-gpu=index,utilization.gpu,memory.used,memory.total,temperature.gpu",
|
|
7046
|
+
"--format=csv,noheader,nounits"
|
|
7047
|
+
]);
|
|
7048
|
+
return stdout.trim().split("\n").filter((line) => line.trim().length > 0).map((line) => {
|
|
7049
|
+
const [index, util, used, total, temp] = line.split(",").map((v) => Number(v.trim()));
|
|
7050
|
+
return {
|
|
7051
|
+
index: index ?? 0,
|
|
7052
|
+
utilizationPercent: util ?? 0,
|
|
7053
|
+
memoryUsedMb: used ?? 0,
|
|
7054
|
+
memoryTotalMb: total ?? 0,
|
|
7055
|
+
temperatureC: temp ?? 0
|
|
7056
|
+
};
|
|
7057
|
+
});
|
|
7058
|
+
} catch {
|
|
7059
|
+
return [];
|
|
7060
|
+
}
|
|
7061
|
+
}
|
|
7062
|
+
function toPrometheus(snapshot = readSystem(), gpus = []) {
|
|
7040
7063
|
const lines = [
|
|
7041
7064
|
"# HELP process_cpu_load_percent 1-minute load average as percent of cores",
|
|
7042
7065
|
"# TYPE process_cpu_load_percent gauge",
|
|
@@ -7051,6 +7074,29 @@ function toPrometheus(snapshot = readSystem()) {
|
|
|
7051
7074
|
"# TYPE process_uptime_seconds counter",
|
|
7052
7075
|
`process_uptime_seconds ${snapshot.uptimeSeconds}`
|
|
7053
7076
|
];
|
|
7077
|
+
if (gpus.length > 0) {
|
|
7078
|
+
lines.push(
|
|
7079
|
+
"# HELP gpu_utilization_percent GPU utilization percent",
|
|
7080
|
+
"# TYPE gpu_utilization_percent gauge"
|
|
7081
|
+
);
|
|
7082
|
+
for (const gpu of gpus) {
|
|
7083
|
+
lines.push(`gpu_utilization_percent{gpu="${gpu.index}"} ${gpu.utilizationPercent}`);
|
|
7084
|
+
}
|
|
7085
|
+
lines.push(
|
|
7086
|
+
"# HELP gpu_memory_used_mb GPU memory used in MiB",
|
|
7087
|
+
"# TYPE gpu_memory_used_mb gauge"
|
|
7088
|
+
);
|
|
7089
|
+
for (const gpu of gpus) {
|
|
7090
|
+
lines.push(`gpu_memory_used_mb{gpu="${gpu.index}"} ${gpu.memoryUsedMb}`);
|
|
7091
|
+
}
|
|
7092
|
+
lines.push(
|
|
7093
|
+
"# HELP gpu_temperature_celsius GPU core temperature",
|
|
7094
|
+
"# TYPE gpu_temperature_celsius gauge"
|
|
7095
|
+
);
|
|
7096
|
+
for (const gpu of gpus) {
|
|
7097
|
+
lines.push(`gpu_temperature_celsius{gpu="${gpu.index}"} ${gpu.temperatureC}`);
|
|
7098
|
+
}
|
|
7099
|
+
}
|
|
7054
7100
|
return `${lines.join("\n")}
|
|
7055
7101
|
`;
|
|
7056
7102
|
}
|
|
@@ -7058,6 +7104,7 @@ var MetricsUtils = {
|
|
|
7058
7104
|
cpu: readCpu,
|
|
7059
7105
|
memory: readMemory,
|
|
7060
7106
|
system: readSystem,
|
|
7107
|
+
gpus: readGpus,
|
|
7061
7108
|
toPrometheus
|
|
7062
7109
|
};
|
|
7063
7110
|
|
|
@@ -8534,6 +8581,50 @@ function makeTwilioWebhookRouter(options) {
|
|
|
8534
8581
|
return router;
|
|
8535
8582
|
}
|
|
8536
8583
|
|
|
8584
|
+
// src/integrations/email.ts
|
|
8585
|
+
var EmailProvider = class {
|
|
8586
|
+
email;
|
|
8587
|
+
subject;
|
|
8588
|
+
/**
|
|
8589
|
+
* @param options - The email sender and default subject.
|
|
8590
|
+
*/
|
|
8591
|
+
constructor(options) {
|
|
8592
|
+
this.email = options.email;
|
|
8593
|
+
this.subject = options.subject ?? "Notification";
|
|
8594
|
+
}
|
|
8595
|
+
/**
|
|
8596
|
+
* Send a plain-text email.
|
|
8597
|
+
*
|
|
8598
|
+
* @param to - Recipient address.
|
|
8599
|
+
* @param text - Body text (also used as HTML).
|
|
8600
|
+
* @returns A sent result.
|
|
8601
|
+
*/
|
|
8602
|
+
async sendText(to, text) {
|
|
8603
|
+
await this.email.send({ to, subject: this.subject, text });
|
|
8604
|
+
return { status: "sent" };
|
|
8605
|
+
}
|
|
8606
|
+
/**
|
|
8607
|
+
* Send an email linking to the media (caption becomes the lead text).
|
|
8608
|
+
*
|
|
8609
|
+
* @param to - Recipient address.
|
|
8610
|
+
* @param media - The media reference (URL) + optional caption.
|
|
8611
|
+
* @returns A sent result.
|
|
8612
|
+
*/
|
|
8613
|
+
async sendMedia(to, media) {
|
|
8614
|
+
const caption = media.caption ?? "";
|
|
8615
|
+
await this.email.send({
|
|
8616
|
+
to,
|
|
8617
|
+
subject: this.subject,
|
|
8618
|
+
html: `${caption ? `<p>${caption}</p>` : ""}<p><a href="${media.media}">${media.media}</a></p>`
|
|
8619
|
+
});
|
|
8620
|
+
return { status: "sent" };
|
|
8621
|
+
}
|
|
8622
|
+
/** Always `"connected"` — SMTP reachability is verified on first send. */
|
|
8623
|
+
async status() {
|
|
8624
|
+
return "connected";
|
|
8625
|
+
}
|
|
8626
|
+
};
|
|
8627
|
+
|
|
8537
8628
|
// src/admin/site.ts
|
|
8538
8629
|
var AdminSite = class {
|
|
8539
8630
|
/**
|
|
@@ -8673,6 +8764,10 @@ var mfaEnrollResponseSchema = z.object({
|
|
|
8673
8764
|
otpauthUri: z.string().openapi({ description: "otpauth:// URI to render as QR." })
|
|
8674
8765
|
}).openapi("MfaEnrollResponse");
|
|
8675
8766
|
var mfaCodeSchema = z.object({ code: z.string().min(1).openapi({ description: "Authenticator code." }) }).openapi("MfaCode");
|
|
8767
|
+
var mfaChallengeSchema = z.object({
|
|
8768
|
+
mfaToken: z.string().min(1).openapi({ description: "Challenge token from login." }),
|
|
8769
|
+
code: z.string().min(1).openapi({ description: "Authenticator code." })
|
|
8770
|
+
}).openapi("MfaChallenge");
|
|
8676
8771
|
var activationSchema = z.object({ token: z.string().min(1).openapi({ description: "Activation token." }) }).openapi("Activation");
|
|
8677
8772
|
var passwordResetRequestSchema = z.object({ email: z.string().email().openapi({ description: "Account email." }) }).openapi("PasswordResetRequest");
|
|
8678
8773
|
var passwordResetConfirmSchema = z.object({
|
|
@@ -8697,6 +8792,8 @@ var UserAuthService = class {
|
|
|
8697
8792
|
passwordMinLength;
|
|
8698
8793
|
accessTtlSeconds;
|
|
8699
8794
|
refreshTtlSeconds;
|
|
8795
|
+
mfa;
|
|
8796
|
+
mfaChallengeTtlSeconds;
|
|
8700
8797
|
/**
|
|
8701
8798
|
* @param options - Store, password/JWT helpers and token policy.
|
|
8702
8799
|
*/
|
|
@@ -8707,6 +8804,8 @@ var UserAuthService = class {
|
|
|
8707
8804
|
this.passwordMinLength = options.passwordMinLength ?? 12;
|
|
8708
8805
|
this.accessTtlSeconds = options.accessTtlSeconds ?? 3600;
|
|
8709
8806
|
this.refreshTtlSeconds = options.refreshTtlSeconds ?? 60 * 60 * 24 * 14;
|
|
8807
|
+
this.mfa = options.mfa;
|
|
8808
|
+
this.mfaChallengeTtlSeconds = options.mfaChallengeTtlSeconds ?? 300;
|
|
8710
8809
|
}
|
|
8711
8810
|
/** Mint a signed access + refresh token pair for `user`. */
|
|
8712
8811
|
async issueTokens(user) {
|
|
@@ -8756,7 +8855,7 @@ var UserAuthService = class {
|
|
|
8756
8855
|
* Authenticate a user by email + password.
|
|
8757
8856
|
*
|
|
8758
8857
|
* @param data - Validated login payload.
|
|
8759
|
-
* @returns
|
|
8858
|
+
* @returns Full auth, or an {@link MfaChallenge} when MFA is enabled.
|
|
8760
8859
|
* @throws {UnauthorizedException} On bad credentials or inactive account.
|
|
8761
8860
|
*/
|
|
8762
8861
|
async login(data) {
|
|
@@ -8768,6 +8867,37 @@ var UserAuthService = class {
|
|
|
8768
8867
|
if (!user.isActive) {
|
|
8769
8868
|
throw new UnauthorizedException({ message: "Account is inactive" });
|
|
8770
8869
|
}
|
|
8870
|
+
if (this.mfa && await this.mfa.isEnabled(user.id)) {
|
|
8871
|
+
const mfaToken = await this.jwt.encode(
|
|
8872
|
+
{ sub: user.id, type: "mfa" },
|
|
8873
|
+
{ ttlSeconds: this.mfaChallengeTtlSeconds }
|
|
8874
|
+
);
|
|
8875
|
+
return { mfaRequired: true, mfaToken };
|
|
8876
|
+
}
|
|
8877
|
+
return { user: toPublic(user), tokens: await this.issueTokens(user) };
|
|
8878
|
+
}
|
|
8879
|
+
/**
|
|
8880
|
+
* Complete an MFA login challenge: verify the code and issue tokens.
|
|
8881
|
+
*
|
|
8882
|
+
* @param mfaToken - The challenge token from {@link login}.
|
|
8883
|
+
* @param code - The authenticator code.
|
|
8884
|
+
* @returns The public user and a fresh token pair.
|
|
8885
|
+
* @throws {UnauthorizedException} When the challenge/code is invalid, MFA is
|
|
8886
|
+
* not configured, or the account no longer exists / is inactive.
|
|
8887
|
+
*/
|
|
8888
|
+
async verifyMfaChallenge(mfaToken, code) {
|
|
8889
|
+
if (!this.mfa) throw new UnauthorizedException({ message: "MFA not configured" });
|
|
8890
|
+
const claims = await this.jwt.decodeOrNull(mfaToken);
|
|
8891
|
+
if (!claims || claims.type !== "mfa" || typeof claims.sub !== "string") {
|
|
8892
|
+
throw new UnauthorizedException({ message: "Invalid MFA challenge" });
|
|
8893
|
+
}
|
|
8894
|
+
if (!await this.mfa.verify(claims.sub, code)) {
|
|
8895
|
+
throw new UnauthorizedException({ message: "Invalid MFA code" });
|
|
8896
|
+
}
|
|
8897
|
+
const user = await this.store.findById(claims.sub);
|
|
8898
|
+
if (!user || !user.isActive) {
|
|
8899
|
+
throw new UnauthorizedException({ message: "Account is inactive" });
|
|
8900
|
+
}
|
|
8771
8901
|
return { user: toPublic(user), tokens: await this.issueTokens(user) };
|
|
8772
8902
|
}
|
|
8773
8903
|
/**
|
|
@@ -8841,6 +8971,15 @@ var MfaService = class {
|
|
|
8841
8971
|
const secret = await this.store.getSecret(userId);
|
|
8842
8972
|
return secret ? this.totp.verify(secret, code) : false;
|
|
8843
8973
|
}
|
|
8974
|
+
/**
|
|
8975
|
+
* Whether MFA is enabled for a user (used to gate the login challenge).
|
|
8976
|
+
*
|
|
8977
|
+
* @param userId - The user.
|
|
8978
|
+
* @returns `true` when MFA is enabled.
|
|
8979
|
+
*/
|
|
8980
|
+
async isEnabled(userId) {
|
|
8981
|
+
return this.store.isEnabled(userId);
|
|
8982
|
+
}
|
|
8844
8983
|
/**
|
|
8845
8984
|
* Disable MFA after verifying a code.
|
|
8846
8985
|
*
|
|
@@ -9088,6 +9227,10 @@ function makeAuthRouter(options) {
|
|
|
9088
9227
|
}
|
|
9089
9228
|
if (options.mfa) {
|
|
9090
9229
|
const mfa = options.mfa;
|
|
9230
|
+
router.post(`${prefix}/mfa/challenge`, async (req, res) => {
|
|
9231
|
+
const { mfaToken, code } = mfaChallengeSchema.parse(req.body);
|
|
9232
|
+
res.json(await service.verifyMfaChallenge(mfaToken, code));
|
|
9233
|
+
});
|
|
9091
9234
|
const requireUser = (req) => {
|
|
9092
9235
|
const claims = getAuth(req);
|
|
9093
9236
|
if (!claims || typeof claims.sub !== "string") {
|
|
@@ -9314,6 +9457,16 @@ function makeHealthRouter(options = {}) {
|
|
|
9314
9457
|
});
|
|
9315
9458
|
return router;
|
|
9316
9459
|
}
|
|
9460
|
+
function makeMetricsRouter(options = {}) {
|
|
9461
|
+
const path = options.path ?? "/metrics";
|
|
9462
|
+
const router = Router();
|
|
9463
|
+
if (options.guard) router.use(path, options.guard);
|
|
9464
|
+
router.get(path, async (_req, res) => {
|
|
9465
|
+
const gpus = options.includeGpu ? await MetricsUtils.gpus() : [];
|
|
9466
|
+
res.type("text/plain").send(MetricsUtils.toPrometheus(MetricsUtils.system(), gpus));
|
|
9467
|
+
});
|
|
9468
|
+
return router;
|
|
9469
|
+
}
|
|
9317
9470
|
var logger3 = new JSONLogger("tempest_express_sdk.api.server");
|
|
9318
9471
|
function corsMiddleware(origins) {
|
|
9319
9472
|
const allowAll = origins === "*";
|
|
@@ -9379,6 +9532,6 @@ function runServer(app, options = {}) {
|
|
|
9379
9532
|
});
|
|
9380
9533
|
}
|
|
9381
9534
|
|
|
9382
|
-
export { ActivationService, AdminSite, AppException, AttemptThrottle, BaseController, BaseModel, BaseService, CEP_PATTERN, CNPJ_PATTERN, CPF_PATTERN, CircuitOpenError, CompositeFeatureFlagBackend, ConflictException, DEFAULT_LOCALE, EmailUtils, EnvFeatureFlagBackend, EventStream, ExpiredTokenException, FeatureFlags, ForbiddenException, HTTPClient, HTTP_500_MARKER, InvalidTokenException, JSONLogger, JWTUtils, LocalUploadStorage, MemoryBroker, MemoryCacheManager, MemoryFeatureFlagBackend, MemorySessionStore, MemoryThrottleBackend, MessageCatalog, MetricsUtils, MfaService, NotFoundException, PHONE_BR_PATTERN, PasswordResetService, PasswordUtils, REQUEST_ID_HEADER, RabbitBroker, RedisCacheManager, RedisSSEBroker, RedisSessionStore, Region, RetryPolicy, SSEBroker, ServerSentEvent, SessionService, TOTPHelper, TaskManager, TelegramProvider, TooManyRequestsException, TwilioSmsProvider, UF, UnauthorizedException, UserAuthService, ValidationException, WebPushDispatcher, WebPushError, WebPushGoneError, WebSocketHub, WhatsAppProvider, activationSchema, attachWebSocketHub, authResponseSchema, baseAppSettingsSchema, baseAppSettingsShape, baseResponseSchema, bearerToken, buildContentDisposition, cached3 as cached, cepField, citiesByUf, cnpjField, coerceFlag, configureLogging, corsSettingsShape, cpfField, cpfOrCnpjField, createApp, createOpenApiRegistry, createdByColumn, cursorPaginationFilterSchema, cursorPaginationSchema, databaseSettingsShape, decodeCursor, defaultMessageCatalog, defineEnum, deletedAtColumn, encodeCursor, generateOpaqueToken, generateOpenApiDocument, getAuth, getClientIp, getConditions, getPaginationConditions, getRequestId, getState, hashOpaqueToken, inboundMessageSchema, isValidCep, isValidCity, isValidCnpj, isValidCpf, isValidCpfCnpj, isValidPhoneBr, isValidUf, listStates, loadSettings, loginSchema, makeAdminRouter, makeAppExceptionHandler, makeAuthRouter, makeFlagGuard, makeHealthRouter, makeJwtAuthMiddleware, makeSessionMiddleware, makeTwilioWebhookRouter, makeUnhandledExceptionHandler, makeWhatsAppWebhookRouter, mfaCodeSchema, mfaEnrollResponseSchema, modifyDict, mountOpenApiJson, mountRedoc, mountSwaggerUi, normalizeCep, normalizeCnpj, normalizeCpf, normalizeCpfCnpj, normalizePhoneBr, normalizeUf, notFoundHandler, onlyDigits, paginationFilterSchema, paginationSchema, parseAcceptLanguage, parseCookies, passwordResetConfirmSchema, passwordResetRequestSchema, phoneBrField, refreshSchema, registerExceptionHandlers, requestIdMiddleware, requireRoles, runServer, runWithRequestContext, serverSettingsShape, sessionCookie, setRequestId, signupSchema, sseResponse, statesByRegion, tableNameFor, toDict, toUtc, tokenFromUrl, tokenPairSchema, ufField, updatedByColumn, userPublicSchema, utcnow, validateTwilioSignature, verifyOpaqueToken, webPushKeysSchema, webPushPayloadSchema, webPushSubscriptionSchema, wsEnvelopeSchema };
|
|
9535
|
+
export { ActivationService, AdminSite, AppException, AttemptThrottle, BaseController, BaseModel, BaseService, CEP_PATTERN, CNPJ_PATTERN, CPF_PATTERN, CircuitOpenError, CompositeFeatureFlagBackend, ConflictException, DEFAULT_LOCALE, EmailProvider, EmailUtils, EnvFeatureFlagBackend, EventStream, ExpiredTokenException, FeatureFlags, ForbiddenException, HTTPClient, HTTP_500_MARKER, InvalidTokenException, JSONLogger, JWTUtils, LocalUploadStorage, MemoryBroker, MemoryCacheManager, MemoryFeatureFlagBackend, MemorySessionStore, MemoryThrottleBackend, MessageCatalog, MetricsUtils, MfaService, NotFoundException, PHONE_BR_PATTERN, PasswordResetService, PasswordUtils, REQUEST_ID_HEADER, RabbitBroker, RedisCacheManager, RedisSSEBroker, RedisSessionStore, Region, RetryPolicy, SSEBroker, ServerSentEvent, SessionService, TOTPHelper, TaskManager, TelegramProvider, TooManyRequestsException, TwilioSmsProvider, UF, UnauthorizedException, UserAuthService, ValidationException, WebPushDispatcher, WebPushError, WebPushGoneError, WebSocketHub, WhatsAppProvider, activationSchema, attachWebSocketHub, authResponseSchema, baseAppSettingsSchema, baseAppSettingsShape, baseResponseSchema, bearerToken, buildContentDisposition, cached3 as cached, cepField, citiesByUf, cnpjField, coerceFlag, configureLogging, corsSettingsShape, cpfField, cpfOrCnpjField, createApp, createOpenApiRegistry, createdByColumn, cursorPaginationFilterSchema, cursorPaginationSchema, databaseSettingsShape, decodeCursor, defaultMessageCatalog, defineEnum, deletedAtColumn, encodeCursor, generateOpaqueToken, generateOpenApiDocument, getAuth, getClientIp, getConditions, getPaginationConditions, getRequestId, getState, hashOpaqueToken, inboundMessageSchema, isValidCep, isValidCity, isValidCnpj, isValidCpf, isValidCpfCnpj, isValidPhoneBr, isValidUf, listStates, loadSettings, loginSchema, makeAdminRouter, makeAppExceptionHandler, makeAuthRouter, makeFlagGuard, makeHealthRouter, makeJwtAuthMiddleware, makeMetricsRouter, makeSessionMiddleware, makeTwilioWebhookRouter, makeUnhandledExceptionHandler, makeWhatsAppWebhookRouter, mfaChallengeSchema, mfaCodeSchema, mfaEnrollResponseSchema, modifyDict, mountOpenApiJson, mountRedoc, mountSwaggerUi, normalizeCep, normalizeCnpj, normalizeCpf, normalizeCpfCnpj, normalizePhoneBr, normalizeUf, notFoundHandler, onlyDigits, paginationFilterSchema, paginationSchema, parseAcceptLanguage, parseCookies, passwordResetConfirmSchema, passwordResetRequestSchema, phoneBrField, refreshSchema, registerExceptionHandlers, requestIdMiddleware, requireRoles, runServer, runWithRequestContext, serverSettingsShape, sessionCookie, setRequestId, signupSchema, sseResponse, statesByRegion, tableNameFor, toDict, toUtc, tokenFromUrl, tokenPairSchema, ufField, updatedByColumn, userPublicSchema, utcnow, validateTwilioSignature, verifyOpaqueToken, webPushKeysSchema, webPushPayloadSchema, webPushSubscriptionSchema, wsEnvelopeSchema };
|
|
9383
9536
|
//# sourceMappingURL=index.js.map
|
|
9384
9537
|
//# sourceMappingURL=index.js.map
|