@getstrata/bootstrap 0.2.47 → 0.2.49
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 +6 -0
- package/dist/_.._/_.._/index.html +174 -0
- package/dist/bootstrap/discoverModules.d.ts +2 -1
- package/dist/bootstrap/inProcessCron.d.ts +4 -0
- package/dist/bootstrap/metricsRoutes.d.ts +1 -1
- package/dist/bootstrap/public-api.d.ts +0 -1
- package/dist/bootstrap/web/routing.d.ts +2 -2
- package/dist/entries/applicationRegistry.js +8 -8
- package/dist/entries/buildModuleRoutes.js +14 -7
- package/dist/entries/buildWebModuleRoutes.js +13 -6
- package/dist/entries/cache/modelCacheTags.js +9 -3
- package/dist/entries/config.js +19 -19
- package/dist/entries/context.js +10 -91
- package/dist/entries/contracts.js +4 -4
- package/dist/entries/createRoutes.js +56 -126
- package/dist/entries/createSpaRoutes.js +2 -2
- package/dist/entries/createWebRoutes.js +15 -8
- package/dist/entries/dependencies.js +9 -90
- package/dist/entries/discoverModules.js +10 -3
- package/dist/entries/health.js +2 -2
- package/dist/entries/http/securedRouteModelBinding.js +2 -2
- package/dist/entries/httpKernel.js +7 -6
- package/dist/entries/listeners/invalidateCacheOnModelWrite.js +7 -1
- package/dist/entries/metricsRoutes.js +31 -5
- package/dist/entries/providers/view.js +2 -2
- package/dist/entries/providers.js +7 -1
- package/dist/entries/routeRegistry.js +2 -2
- package/dist/entries/secretsGuard.js +23 -56
- package/dist/entries/web/forms.js +2 -2
- package/dist/entries/web/routing.js +14 -13
- package/dist/entries/web/server.js +2 -2
- package/dist/index.js +133 -220
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -1,96 +1,7 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
// ../../src/bootstrap/public-api.ts
|
|
3
|
-
import { appSchedule
|
|
3
|
+
import { appSchedule, runDueScheduledTasks, Schedule } from "@getstrata/core/scheduler/schedule";
|
|
4
4
|
|
|
5
|
-
// ../../src/core/scheduler/schedule.ts
|
|
6
|
-
class Schedule {
|
|
7
|
-
tasks = [];
|
|
8
|
-
command(expression, name, run) {
|
|
9
|
-
this.tasks.push({ expression, name, run });
|
|
10
|
-
return this;
|
|
11
|
-
}
|
|
12
|
-
dueTasks(now = new Date) {
|
|
13
|
-
const minute = now.getMinutes();
|
|
14
|
-
return this.tasks.filter((task) => {
|
|
15
|
-
if (task.expression === "* * * * *") {
|
|
16
|
-
return true;
|
|
17
|
-
}
|
|
18
|
-
if (task.expression.startsWith("*/")) {
|
|
19
|
-
const interval = Number.parseInt(task.expression.slice(2), 10);
|
|
20
|
-
return Number.isInteger(interval) && interval > 0 && minute % interval === 0;
|
|
21
|
-
}
|
|
22
|
-
return false;
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
tasksList() {
|
|
26
|
-
return [...this.tasks];
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
var appSchedule = new Schedule;
|
|
30
|
-
async function runDueScheduledTasks(schedule = appSchedule, now = new Date) {
|
|
31
|
-
const due = schedule.dueTasks(now);
|
|
32
|
-
for (const task of due) {
|
|
33
|
-
await task.run();
|
|
34
|
-
}
|
|
35
|
-
return due.length;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
// ../../src/bootstrap/schedule.ts
|
|
39
|
-
import { exportPendingAuditLogs } from "@getstrata/core/audit/exportAuditLogs";
|
|
40
|
-
import { appLogger } from "@getstrata/core/logging/logger";
|
|
41
|
-
import { appSchedule as appSchedule2 } from "@getstrata/core/scheduler/schedule";
|
|
42
|
-
|
|
43
|
-
// ../../src/config/features.ts
|
|
44
|
-
function readFeatureFlags() {
|
|
45
|
-
return {
|
|
46
|
-
webhooks: (process.env.FEATURE_WEBHOOKS ?? "true") !== "false",
|
|
47
|
-
fullTextSearch: (process.env.FEATURE_SEARCH ?? "true") !== "false",
|
|
48
|
-
auditLog: (process.env.FEATURE_AUDIT_LOG ?? "true") !== "false",
|
|
49
|
-
oauthLogin: (process.env.FEATURE_OAUTH ?? "true") !== "false",
|
|
50
|
-
samlLogin: (process.env.FEATURE_SAML ?? "false") === "true",
|
|
51
|
-
scim: (process.env.FEATURE_SCIM ?? "true") !== "false",
|
|
52
|
-
billing: (process.env.FEATURE_BILLING ?? "true") !== "false",
|
|
53
|
-
siemExport: (process.env.FEATURE_SIEM_EXPORT ?? "true") !== "false",
|
|
54
|
-
publicReads: (process.env.FEATURE_PUBLIC_READS ?? "true") !== "false",
|
|
55
|
-
emailVerification: (process.env.FEATURE_EMAIL_VERIFICATION ?? "false") === "true",
|
|
56
|
-
mfa: (process.env.FEATURE_MFA ?? "false") === "true"
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
var featureFlags = readFeatureFlags();
|
|
60
|
-
function isFeatureEnabled(feature) {
|
|
61
|
-
return readFeatureFlags()[feature];
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
// ../../src/bootstrap/schedule.ts
|
|
65
|
-
appSchedule2.command("* * * * *", "heartbeat", () => {
|
|
66
|
-
appLogger.debug("Scheduler heartbeat");
|
|
67
|
-
});
|
|
68
|
-
appSchedule2.command("* * * * *", "audit-export", async () => {
|
|
69
|
-
if (!isFeatureEnabled("siemExport")) {
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
try {
|
|
73
|
-
const exported = await exportPendingAuditLogs();
|
|
74
|
-
if (exported > 0) {
|
|
75
|
-
appLogger.info(`Exported ${exported} audit log entries to SIEM.`);
|
|
76
|
-
}
|
|
77
|
-
} catch (error) {
|
|
78
|
-
appLogger.error("Audit export failed.", { error: String(error) });
|
|
79
|
-
}
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
// ../../src/cli/commands/scheduleRun.ts
|
|
83
|
-
async function scheduleRunCommand() {
|
|
84
|
-
const due = appSchedule.dueTasks();
|
|
85
|
-
if (due.length === 0) {
|
|
86
|
-
console.log("No scheduled tasks due.");
|
|
87
|
-
return;
|
|
88
|
-
}
|
|
89
|
-
for (const task of due) {
|
|
90
|
-
console.log(`Running scheduled task: ${task.name}`);
|
|
91
|
-
}
|
|
92
|
-
await runDueScheduledTasks(appSchedule);
|
|
93
|
-
}
|
|
94
5
|
// ../../src/bootstrap/applicationRegistry.ts
|
|
95
6
|
import {
|
|
96
7
|
resolveApplicationAuth,
|
|
@@ -123,6 +34,7 @@ import { createRequireAbilityMiddleware } from "@getstrata/core/http/requireAbil
|
|
|
123
34
|
import { createRequireAuthMiddleware } from "@getstrata/core/http/requireAuthMiddleware";
|
|
124
35
|
import { createRequireGlobalAdminMiddleware } from "@getstrata/core/http/requireGlobalAdminMiddleware";
|
|
125
36
|
import { createRequireWebAuthMiddleware } from "@getstrata/core/http/requireWebAuthMiddleware";
|
|
37
|
+
import { withErrorHandling } from "@getstrata/core/http/response";
|
|
126
38
|
import { withMiddleware } from "@getstrata/core/http/routeMiddleware";
|
|
127
39
|
import { createSecurityHeadersMiddleware } from "@getstrata/core/http/securityHeadersMiddleware";
|
|
128
40
|
import { createThrottleMiddleware } from "@getstrata/core/http/throttleMiddleware";
|
|
@@ -271,7 +183,7 @@ class HttpKernel {
|
|
|
271
183
|
return this.wrap(["api", "authenticated"], handler);
|
|
272
184
|
}
|
|
273
185
|
wrapWeb(handler) {
|
|
274
|
-
return handler;
|
|
186
|
+
return withErrorHandling(this.wrap("web", handler));
|
|
275
187
|
}
|
|
276
188
|
wrapWebPublicRead(handler) {
|
|
277
189
|
if (isPublicReadsEnabled()) {
|
|
@@ -281,19 +193,19 @@ class HttpKernel {
|
|
|
281
193
|
}
|
|
282
194
|
wrapWebAuthenticated(handler) {
|
|
283
195
|
const auth = this.dependencies.container.resolve(CORE_AUTH_TOKEN);
|
|
284
|
-
return withMiddleware(createRequireWebAuthMiddleware(auth))(handler);
|
|
196
|
+
return this.wrapWeb(withMiddleware(createRequireWebAuthMiddleware(auth))(handler));
|
|
285
197
|
}
|
|
286
198
|
wrapWebAbility(ability, handler) {
|
|
287
199
|
const auth = this.dependencies.container.resolve(CORE_AUTH_TOKEN);
|
|
288
200
|
const abilityChecker = this.dependencies.container.resolve(CORE_TOKEN_SERVICE_TOKEN);
|
|
289
201
|
const requireAbility = createRequireAbilityMiddleware(abilityChecker);
|
|
290
202
|
const middleware = [createRequireWebAuthMiddleware(auth), requireAbility(ability)];
|
|
291
|
-
return withMiddleware(...middleware)(handler);
|
|
203
|
+
return this.wrapWeb(withMiddleware(...middleware)(handler));
|
|
292
204
|
}
|
|
293
205
|
wrapWebGlobalAdmin(handler) {
|
|
294
206
|
const auth = this.dependencies.container.resolve(CORE_AUTH_TOKEN);
|
|
295
207
|
const middleware = [createRequireWebAuthMiddleware(auth), createRequireGlobalAdminMiddleware()];
|
|
296
|
-
return withMiddleware(...middleware)(handler);
|
|
208
|
+
return this.wrapWeb(withMiddleware(...middleware)(handler));
|
|
297
209
|
}
|
|
298
210
|
wrapAuthenticated(handler) {
|
|
299
211
|
return this.wrap("authenticated", handler);
|
|
@@ -392,7 +304,7 @@ function resolveModulesDirectory(options) {
|
|
|
392
304
|
if (state.configuredModulesDir) {
|
|
393
305
|
return state.configuredModulesDir;
|
|
394
306
|
}
|
|
395
|
-
|
|
307
|
+
throw new Error("configureModulesDirectory() must be called before discovering modules. WorkHub and the starter do this from preload.");
|
|
396
308
|
}
|
|
397
309
|
async function loadDiscoveredModules(options) {
|
|
398
310
|
const modulesDirectory = resolveModulesDirectory(options);
|
|
@@ -514,7 +426,7 @@ function buildWebModuleRoutes(dependencies, options = {}) {
|
|
|
514
426
|
routeRegistry.clear();
|
|
515
427
|
}
|
|
516
428
|
const kernel = createHttpKernel(dependencies);
|
|
517
|
-
const middleware =
|
|
429
|
+
const middleware = kernel.globalMiddleware();
|
|
518
430
|
const moduleRoutes = { ...seedRoutes };
|
|
519
431
|
for (const module of modules) {
|
|
520
432
|
if (!module.webRoutes) {
|
|
@@ -907,64 +819,6 @@ var coreProviders = [
|
|
|
907
819
|
viewProvider
|
|
908
820
|
];
|
|
909
821
|
|
|
910
|
-
// ../../src/domain/auth.ts
|
|
911
|
-
var TEST_ADMIN_API_TOKEN = "workhub-admin-test-token";
|
|
912
|
-
var TEST_MEMBER_API_TOKEN = "workhub-member-test-token";
|
|
913
|
-
|
|
914
|
-
// ../../src/domain/scim.ts
|
|
915
|
-
var TEST_SCIM_BEARER_TOKEN = "workhub-scim-test-token";
|
|
916
|
-
var DEFAULT_SCIM_BEARER_TOKEN = TEST_SCIM_BEARER_TOKEN;
|
|
917
|
-
|
|
918
|
-
// ../../src/bootstrap/secretsGuard.ts
|
|
919
|
-
var DEFAULT_TOKENS = new Set([TEST_ADMIN_API_TOKEN, TEST_MEMBER_API_TOKEN]);
|
|
920
|
-
var DEFAULT_SCIM_TOKENS = new Set([TEST_SCIM_BEARER_TOKEN, DEFAULT_SCIM_BEARER_TOKEN]);
|
|
921
|
-
function assertProductionSecrets(env = process.env) {
|
|
922
|
-
const appEnv = env.APP_ENV ?? appConfig.env;
|
|
923
|
-
if (appEnv !== "production") {
|
|
924
|
-
return;
|
|
925
|
-
}
|
|
926
|
-
const adminToken = env.ADMIN_API_TOKEN ?? TEST_ADMIN_API_TOKEN;
|
|
927
|
-
const memberToken = env.MEMBER_API_TOKEN ?? TEST_MEMBER_API_TOKEN;
|
|
928
|
-
const scimToken = env.SCIM_BEARER_TOKEN ?? DEFAULT_SCIM_BEARER_TOKEN;
|
|
929
|
-
const encryptionEnabled = env.FEATURE_FIELD_ENCRYPTION !== "false";
|
|
930
|
-
const devHeadersEnabled = (env.AUTH_DEV_HEADERS ?? "true") !== "false";
|
|
931
|
-
if (devHeadersEnabled) {
|
|
932
|
-
throw new Error("Production startup blocked: set AUTH_DEV_HEADERS=false to disable development auth headers.");
|
|
933
|
-
}
|
|
934
|
-
if (DEFAULT_TOKENS.has(adminToken) || DEFAULT_TOKENS.has(memberToken)) {
|
|
935
|
-
throw new Error("Production startup blocked: rotate ADMIN_API_TOKEN and MEMBER_API_TOKEN away from default WorkHub test values.");
|
|
936
|
-
}
|
|
937
|
-
if (DEFAULT_SCIM_TOKENS.has(scimToken)) {
|
|
938
|
-
throw new Error("Production startup blocked: rotate SCIM_BEARER_TOKEN away from default WorkHub test values.");
|
|
939
|
-
}
|
|
940
|
-
if (encryptionEnabled && !env.KMS_ENCRYPTION_KEY?.trim()) {
|
|
941
|
-
throw new Error("Production startup blocked: set KMS_ENCRYPTION_KEY when field encryption is enabled.");
|
|
942
|
-
}
|
|
943
|
-
if (!env.SIEM_EXPORT_URL?.trim() && isFeatureEnabled("siemExport")) {
|
|
944
|
-
console.warn("[secrets] SIEM_EXPORT_URL is not configured; audit logs remain database-only.");
|
|
945
|
-
}
|
|
946
|
-
const billingEnabled = (env.FEATURE_BILLING ?? "true") !== "false";
|
|
947
|
-
if (billingEnabled && !env.STRIPE_WEBHOOK_SECRET?.trim()) {
|
|
948
|
-
throw new Error("Production startup blocked: set STRIPE_WEBHOOK_SECRET when billing webhooks are enabled.");
|
|
949
|
-
}
|
|
950
|
-
const corsOrigins = (env.CORS_ALLOWED_ORIGINS ?? "*").split(",").map((origin) => origin.trim());
|
|
951
|
-
if (corsOrigins.includes("*")) {
|
|
952
|
-
throw new Error("Production startup blocked: set explicit CORS_ALLOWED_ORIGINS instead of wildcard.");
|
|
953
|
-
}
|
|
954
|
-
if ((env.FEATURE_PUBLIC_READS ?? "true") !== "false") {
|
|
955
|
-
throw new Error("Production startup blocked: set FEATURE_PUBLIC_READS=false for authenticated-only reads.");
|
|
956
|
-
}
|
|
957
|
-
if (!env.OAUTH_STATE_SECRET?.trim()) {
|
|
958
|
-
throw new Error("Production startup blocked: set OAUTH_STATE_SECRET for OAuth CSRF protection.");
|
|
959
|
-
}
|
|
960
|
-
if (!env.TOKEN_HASH_PEPPER?.trim()) {
|
|
961
|
-
throw new Error("Production startup blocked: set TOKEN_HASH_PEPPER for API token hashing.");
|
|
962
|
-
}
|
|
963
|
-
if (!env.API_TOKEN_DEFAULT_EXPIRY_DAYS?.trim()) {
|
|
964
|
-
throw new Error("Production startup blocked: set API_TOKEN_DEFAULT_EXPIRY_DAYS to enforce token rotation.");
|
|
965
|
-
}
|
|
966
|
-
}
|
|
967
|
-
|
|
968
822
|
// ../../src/bootstrap/context.ts
|
|
969
823
|
function collectProviders(modules = discoverModules()) {
|
|
970
824
|
return [...coreProviders, ...modules.flatMap((module) => module.providers ?? [])];
|
|
@@ -975,7 +829,6 @@ function runProviderPhase(providers, phase, context) {
|
|
|
975
829
|
}
|
|
976
830
|
}
|
|
977
831
|
function createAppContext() {
|
|
978
|
-
assertProductionSecrets();
|
|
979
832
|
const container = new ServiceContainer;
|
|
980
833
|
const config = new ConfigStore;
|
|
981
834
|
const dependencies = {
|
|
@@ -1045,6 +898,67 @@ import {
|
|
|
1045
898
|
} from "@getstrata/core/http/securedRouteModelBinding";
|
|
1046
899
|
// ../../src/bootstrap/membershipService.ts
|
|
1047
900
|
import { resolveMembershipService } from "@getstrata/core/auth/membershipService";
|
|
901
|
+
// ../../src/bootstrap/secretsGuard.ts
|
|
902
|
+
var DEFAULT_ADMIN_API_TOKEN = "workhub-admin-test-token";
|
|
903
|
+
var DEFAULT_MEMBER_API_TOKEN = "workhub-member-test-token";
|
|
904
|
+
var DEFAULT_SCIM_BEARER_TOKEN = "workhub-scim-test-token";
|
|
905
|
+
var DEFAULT_TOKENS = new Set([DEFAULT_ADMIN_API_TOKEN, DEFAULT_MEMBER_API_TOKEN]);
|
|
906
|
+
var DEFAULT_SCIM_TOKENS = new Set([DEFAULT_SCIM_BEARER_TOKEN]);
|
|
907
|
+
function isEnabled(value, defaultEnabled) {
|
|
908
|
+
if (value === undefined) {
|
|
909
|
+
return defaultEnabled;
|
|
910
|
+
}
|
|
911
|
+
return defaultEnabled ? value !== "false" : value === "true";
|
|
912
|
+
}
|
|
913
|
+
function assertProductionSecrets(env = process.env) {
|
|
914
|
+
const appEnv = env.APP_ENV ?? "local";
|
|
915
|
+
if (appEnv !== "production") {
|
|
916
|
+
return;
|
|
917
|
+
}
|
|
918
|
+
const adminToken = env.ADMIN_API_TOKEN ?? DEFAULT_ADMIN_API_TOKEN;
|
|
919
|
+
const memberToken = env.MEMBER_API_TOKEN ?? DEFAULT_MEMBER_API_TOKEN;
|
|
920
|
+
const scimToken = env.SCIM_BEARER_TOKEN ?? DEFAULT_SCIM_BEARER_TOKEN;
|
|
921
|
+
const encryptionEnabled = isEnabled(env.FEATURE_FIELD_ENCRYPTION, true);
|
|
922
|
+
const devHeadersEnabled = isEnabled(env.AUTH_DEV_HEADERS, true);
|
|
923
|
+
if (devHeadersEnabled) {
|
|
924
|
+
throw new Error("Production startup blocked: set AUTH_DEV_HEADERS=false to disable development auth headers.");
|
|
925
|
+
}
|
|
926
|
+
if (DEFAULT_TOKENS.has(adminToken) || DEFAULT_TOKENS.has(memberToken)) {
|
|
927
|
+
throw new Error("Production startup blocked: rotate ADMIN_API_TOKEN and MEMBER_API_TOKEN away from default WorkHub test values.");
|
|
928
|
+
}
|
|
929
|
+
if (DEFAULT_SCIM_TOKENS.has(scimToken)) {
|
|
930
|
+
throw new Error("Production startup blocked: rotate SCIM_BEARER_TOKEN away from default WorkHub test values.");
|
|
931
|
+
}
|
|
932
|
+
if (encryptionEnabled && !env.KMS_ENCRYPTION_KEY?.trim()) {
|
|
933
|
+
throw new Error("Production startup blocked: set KMS_ENCRYPTION_KEY when field encryption is enabled.");
|
|
934
|
+
}
|
|
935
|
+
if (!env.SIEM_EXPORT_URL?.trim() && isEnabled(env.FEATURE_SIEM_EXPORT, true)) {
|
|
936
|
+
console.warn("[secrets] SIEM_EXPORT_URL is not configured; audit logs remain database-only.");
|
|
937
|
+
}
|
|
938
|
+
if (isEnabled(env.FEATURE_BILLING, true) && !env.STRIPE_WEBHOOK_SECRET?.trim()) {
|
|
939
|
+
throw new Error("Production startup blocked: set STRIPE_WEBHOOK_SECRET when billing webhooks are enabled.");
|
|
940
|
+
}
|
|
941
|
+
const corsOrigins = (env.CORS_ALLOWED_ORIGINS ?? "*").split(",").map((origin) => origin.trim());
|
|
942
|
+
if (corsOrigins.includes("*")) {
|
|
943
|
+
throw new Error("Production startup blocked: set explicit CORS_ALLOWED_ORIGINS instead of wildcard.");
|
|
944
|
+
}
|
|
945
|
+
if (isEnabled(env.FEATURE_PUBLIC_READS, true)) {
|
|
946
|
+
throw new Error("Production startup blocked: set FEATURE_PUBLIC_READS=false for authenticated-only reads.");
|
|
947
|
+
}
|
|
948
|
+
if (!env.OAUTH_STATE_SECRET?.trim()) {
|
|
949
|
+
throw new Error("Production startup blocked: set OAUTH_STATE_SECRET for OAuth CSRF protection.");
|
|
950
|
+
}
|
|
951
|
+
if (!env.TOKEN_HASH_PEPPER?.trim()) {
|
|
952
|
+
throw new Error("Production startup blocked: set TOKEN_HASH_PEPPER for API token hashing.");
|
|
953
|
+
}
|
|
954
|
+
if (!env.API_TOKEN_DEFAULT_EXPIRY_DAYS?.trim()) {
|
|
955
|
+
throw new Error("Production startup blocked: set API_TOKEN_DEFAULT_EXPIRY_DAYS to enforce token rotation.");
|
|
956
|
+
}
|
|
957
|
+
const frontendMode = (env.FRONTEND_MODE ?? "api").trim();
|
|
958
|
+
if (frontendMode === "server-htmx" && !env.SESSION_SECRET?.trim()) {
|
|
959
|
+
throw new Error("Production startup blocked: set SESSION_SECRET when FRONTEND_MODE=server-htmx.");
|
|
960
|
+
}
|
|
961
|
+
}
|
|
1048
962
|
// ../../src/bootstrap/web/forms.ts
|
|
1049
963
|
import {
|
|
1050
964
|
createCsrfProtection
|
|
@@ -1078,7 +992,7 @@ async function parseFormBody(request) {
|
|
|
1078
992
|
return { fields, files };
|
|
1079
993
|
}
|
|
1080
994
|
// ../../src/bootstrap/web/routing.ts
|
|
1081
|
-
import { withErrorHandling } from "@getstrata/core/http/response";
|
|
995
|
+
import { withErrorHandling as withErrorHandling2 } from "@getstrata/core/http/response";
|
|
1082
996
|
function routeParams(request) {
|
|
1083
997
|
const normalized = {};
|
|
1084
998
|
const raw = request.params;
|
|
@@ -1100,14 +1014,14 @@ function toRouteRequest(request) {
|
|
|
1100
1014
|
return request;
|
|
1101
1015
|
}
|
|
1102
1016
|
function wrapSecuredRouteModelByKey(param, resolver, authorization, handler) {
|
|
1103
|
-
const bound =
|
|
1017
|
+
const bound = withErrorHandling2(securedBindRouteModelByKey(param, resolver, authorization, handler));
|
|
1104
1018
|
return async (request) => bound(toRouteRequest(request));
|
|
1105
1019
|
}
|
|
1106
1020
|
function wrapWebLogin(kernel, handler, onThrottled) {
|
|
1107
|
-
return wrapWebThrottle(kernel, "login", handler, onThrottled);
|
|
1021
|
+
return kernel.wrapWeb(wrapWebThrottle(kernel, "login", handler, onThrottled));
|
|
1108
1022
|
}
|
|
1109
1023
|
function wrapWebRegister(kernel, handler, onThrottled) {
|
|
1110
|
-
return wrapWebThrottle(kernel, "register", handler, onThrottled);
|
|
1024
|
+
return kernel.wrapWeb(wrapWebThrottle(kernel, "register", handler, onThrottled));
|
|
1111
1025
|
}
|
|
1112
1026
|
function wrapWebThrottle(kernel, scope, handler, onThrottled) {
|
|
1113
1027
|
const throttled = scope === "login" ? kernel.wrapLogin(handler) : kernel.wrapRegister(handler);
|
|
@@ -1249,66 +1163,65 @@ function slugify(value) {
|
|
|
1249
1163
|
return value.toLowerCase().trim().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 80);
|
|
1250
1164
|
}
|
|
1251
1165
|
export {
|
|
1252
|
-
|
|
1253
|
-
wrapWebLogin,
|
|
1254
|
-
wrapSecuredRouteModelByKey,
|
|
1255
|
-
toRouteRequest,
|
|
1256
|
-
slugify,
|
|
1257
|
-
setActiveApplicationContext,
|
|
1258
|
-
securedBindRouteModelByKey,
|
|
1259
|
-
securedBindRouteModel,
|
|
1260
|
-
scheduleRunCommand,
|
|
1261
|
-
runProviderPhase,
|
|
1262
|
-
runDueScheduledTasks2 as runDueScheduledTasks,
|
|
1263
|
-
routeRegistry,
|
|
1264
|
-
routeParams,
|
|
1265
|
-
resolveService,
|
|
1266
|
-
resolveMembershipService,
|
|
1267
|
-
resolveApplicationQueue,
|
|
1268
|
-
resolveApplicationPolicyGate,
|
|
1269
|
-
resolveApplicationLogger,
|
|
1270
|
-
resolveApplicationEventBus,
|
|
1271
|
-
resolveApplicationDependencies,
|
|
1272
|
-
resolveApplicationConfig,
|
|
1273
|
-
resolveApplicationCache,
|
|
1274
|
-
resolveApplicationAuth,
|
|
1275
|
-
registerDefaultJobs,
|
|
1276
|
-
prefixRouteMap,
|
|
1277
|
-
parseFormBody,
|
|
1278
|
-
mergeWebRoutes,
|
|
1279
|
-
getRequiredDependency,
|
|
1280
|
-
ensureModulesLoaded,
|
|
1281
|
-
discoverModules,
|
|
1282
|
-
discoverModelTableNames,
|
|
1283
|
-
createWebServer,
|
|
1284
|
-
createWebRoutes,
|
|
1285
|
-
createRouteKernel,
|
|
1286
|
-
createHttpKernel,
|
|
1287
|
-
createCsrfProtection,
|
|
1288
|
-
createAppDependencies,
|
|
1289
|
-
createAppContext,
|
|
1290
|
-
coreProviders,
|
|
1291
|
-
configureModulesDirectory,
|
|
1292
|
-
collectProviders,
|
|
1293
|
-
cacheTagsForModelWrite,
|
|
1294
|
-
buildWebModuleRoutes,
|
|
1295
|
-
buildModuleRoutes,
|
|
1296
|
-
assertProductionSecrets,
|
|
1297
|
-
assertAppDependenciesComplete,
|
|
1298
|
-
appSchedule3 as appSchedule,
|
|
1299
|
-
ServiceContainer,
|
|
1300
|
-
Schedule2 as Schedule,
|
|
1301
|
-
RouteRegistry,
|
|
1302
|
-
REDIS_URL_CONFIG_KEY,
|
|
1303
|
-
DEFAULT_APP_PORT,
|
|
1304
|
-
DATABASE_URL_CONFIG_KEY,
|
|
1305
|
-
CookieSessionStore,
|
|
1306
|
-
CORE_TOKEN_SERVICE_TOKEN,
|
|
1307
|
-
CORE_QUEUE_TOKEN,
|
|
1308
|
-
CORE_POLICY_GATE_TOKEN,
|
|
1309
|
-
CORE_EVENT_BUS_TOKEN,
|
|
1310
|
-
CORE_CONFIG_TOKEN,
|
|
1311
|
-
CORE_CACHE_TOKEN,
|
|
1166
|
+
APP_PORT_CONFIG_KEY,
|
|
1312
1167
|
CORE_AUTH_TOKEN,
|
|
1313
|
-
|
|
1168
|
+
CORE_CACHE_TOKEN,
|
|
1169
|
+
CORE_CONFIG_TOKEN,
|
|
1170
|
+
CORE_EVENT_BUS_TOKEN,
|
|
1171
|
+
CORE_POLICY_GATE_TOKEN,
|
|
1172
|
+
CORE_QUEUE_TOKEN,
|
|
1173
|
+
CORE_TOKEN_SERVICE_TOKEN,
|
|
1174
|
+
CookieSessionStore,
|
|
1175
|
+
DATABASE_URL_CONFIG_KEY,
|
|
1176
|
+
DEFAULT_APP_PORT,
|
|
1177
|
+
REDIS_URL_CONFIG_KEY,
|
|
1178
|
+
RouteRegistry,
|
|
1179
|
+
Schedule,
|
|
1180
|
+
ServiceContainer,
|
|
1181
|
+
appSchedule,
|
|
1182
|
+
assertAppDependenciesComplete,
|
|
1183
|
+
assertProductionSecrets,
|
|
1184
|
+
buildModuleRoutes,
|
|
1185
|
+
buildWebModuleRoutes,
|
|
1186
|
+
cacheTagsForModelWrite,
|
|
1187
|
+
collectProviders,
|
|
1188
|
+
configureModulesDirectory,
|
|
1189
|
+
coreProviders,
|
|
1190
|
+
createAppContext,
|
|
1191
|
+
createAppDependencies,
|
|
1192
|
+
createCsrfProtection,
|
|
1193
|
+
createHttpKernel,
|
|
1194
|
+
createRouteKernel,
|
|
1195
|
+
createWebRoutes,
|
|
1196
|
+
createWebServer,
|
|
1197
|
+
discoverModelTableNames,
|
|
1198
|
+
discoverModules,
|
|
1199
|
+
ensureModulesLoaded,
|
|
1200
|
+
getRequiredDependency,
|
|
1201
|
+
mergeWebRoutes,
|
|
1202
|
+
parseFormBody,
|
|
1203
|
+
prefixRouteMap,
|
|
1204
|
+
registerDefaultJobs,
|
|
1205
|
+
resolveApplicationAuth,
|
|
1206
|
+
resolveApplicationCache,
|
|
1207
|
+
resolveApplicationConfig,
|
|
1208
|
+
resolveApplicationDependencies,
|
|
1209
|
+
resolveApplicationEventBus,
|
|
1210
|
+
resolveApplicationLogger,
|
|
1211
|
+
resolveApplicationPolicyGate,
|
|
1212
|
+
resolveApplicationQueue,
|
|
1213
|
+
resolveMembershipService,
|
|
1214
|
+
resolveService,
|
|
1215
|
+
routeParams,
|
|
1216
|
+
routeRegistry,
|
|
1217
|
+
runDueScheduledTasks,
|
|
1218
|
+
runProviderPhase,
|
|
1219
|
+
securedBindRouteModel,
|
|
1220
|
+
securedBindRouteModelByKey,
|
|
1221
|
+
setActiveApplicationContext,
|
|
1222
|
+
slugify,
|
|
1223
|
+
toRouteRequest,
|
|
1224
|
+
wrapSecuredRouteModelByKey,
|
|
1225
|
+
wrapWebLogin,
|
|
1226
|
+
wrapWebRegister
|
|
1314
1227
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@getstrata/bootstrap",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.49",
|
|
4
4
|
"description": "Strata application bootstrap — HttpKernel, DI, web session helpers",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -172,14 +172,14 @@
|
|
|
172
172
|
"build:bundle": "bun build index.ts --outdir dist --target bun --external bun --external eta --external @getstrata/core",
|
|
173
173
|
"build:types": "tsc -p tsconfig.types.json && bun ../../scripts/prune-bootstrap-dist-types.ts",
|
|
174
174
|
"prepublishOnly": "bun run build",
|
|
175
|
-
"build:subpaths": "bun build entries/applicationRegistry.ts entries/buildModuleRoutes.ts entries/buildWebModuleRoutes.ts entries/cache/modelCacheTags.ts entries/config.ts entries/context.ts entries/contracts.ts entries/createWebRoutes.ts entries/createRoutes.ts entries/createSpaRoutes.ts entries/dependencies.ts entries/discoverModules.ts entries/health.ts entries/http/securedRouteModelBinding.ts entries/httpKernel.ts entries/listeners/invalidateCacheOnModelWrite.ts entries/membershipService.ts entries/metricsRoutes.ts entries/queue/defaultJobs.ts entries/providers.ts entries/providers/view.ts entries/routeRegistry.ts entries/schedule.ts entries/secretsGuard.ts entries/web/forms.ts entries/web/routing.ts entries/web/server.ts entries/web/session.ts entries/web/slug.ts --outdir dist --root . --target bun --external bun --external eta --external @getstrata/core --external @getstrata/bootstrap --external @getstrata/bootstrap/applicationRegistry --external @getstrata/bootstrap/buildModuleRoutes --external @getstrata/bootstrap/buildWebModuleRoutes --external @getstrata/bootstrap/cache/modelCacheTags --external @getstrata/bootstrap/config --external @getstrata/bootstrap/context --external @getstrata/bootstrap/contracts --external @getstrata/bootstrap/createWebRoutes --external @getstrata/bootstrap/createRoutes --external @getstrata/bootstrap/createSpaRoutes --external @getstrata/bootstrap/dependencies --external @getstrata/bootstrap/discoverModules --external @getstrata/bootstrap/health --external @getstrata/bootstrap/http/securedRouteModelBinding --external @getstrata/bootstrap/httpKernel --external @getstrata/bootstrap/listeners/invalidateCacheOnModelWrite --external @getstrata/bootstrap/membershipService --external @getstrata/bootstrap/metricsRoutes --external @getstrata/bootstrap/queue/defaultJobs --external @getstrata/bootstrap/providers --external @getstrata/bootstrap/providers/view --external @getstrata/bootstrap/routeRegistry --external @getstrata/bootstrap/schedule --external @getstrata/bootstrap/secretsGuard --external @getstrata/bootstrap/web/forms --external @getstrata/bootstrap/web/routing --external @getstrata/bootstrap/web/server --external @getstrata/bootstrap/web/session --external @getstrata/bootstrap/web/slug --external @getstrata/core/auth/accessControl --external @getstrata/core/auth/abilityChecker --external @getstrata/core/auth/authContext --external @getstrata/core/auth/guard --external @getstrata/core/auth/membershipContext --external @getstrata/core/auth/membershipMiddleware --external @getstrata/core/auth/membershipScope --external @getstrata/core/auth/membershipService --external @getstrata/core/auth/oauth/oidcProvider --external @getstrata/core/auth/oauth/providers --external @getstrata/core/auth/oauth/samlProvider --external @getstrata/core/auth/oauth/types --external @getstrata/core/auth/password --external @getstrata/core/auth/policy --external @getstrata/core/auth/scimAuthMiddleware --external @getstrata/core/auth/sessionCookie --external @getstrata/core/auth/sessionGuard --external @getstrata/core/auth/tokenHash --external @getstrata/core/audit/exportAuditLogs --external @getstrata/core/audit/siemFormatter --external @getstrata/core/admin/formatValue --external @getstrata/core/admin/registry --external @getstrata/core/admin/types --external @getstrata/core/cache/tags --external @getstrata/core/cache/createCacheStore --external @getstrata/core/cache/repository --external @getstrata/core/cache/simpleCache --external @getstrata/core/cache/simpleCacheStore --external @getstrata/core/config/envSchema --external @getstrata/core/contracts/serviceTokens --external @getstrata/core/contracts/container --external @getstrata/core/contracts/di --external @getstrata/core/crypto/fieldEncryption --external @getstrata/core/crypto/mfaSecret --external @getstrata/core/database --external @getstrata/core/database/baseRepository --external @getstrata/core/database/bindConnection --external @getstrata/core/database/boundConnection --external @getstrata/core/database/connection --external @getstrata/core/database/defaultConnection --external @getstrata/core/database/errors --external @getstrata/core/database/factory --external @getstrata/core/database/migrations --external @getstrata/core/database/migrations/types --external @getstrata/core/database/model --external @getstrata/core/database/query --external @getstrata/core/database/relationships --external @getstrata/core/database/repositoryConnection --external @getstrata/core/database/repositoryQuery --external @getstrata/core/database/seeders --external @getstrata/core/database/seeders/types --external @getstrata/core/database/schema --external @getstrata/core/database/table --external @getstrata/core/database/transaction --external @getstrata/core/database/types --external @getstrata/core/database/whereBuilder --external @getstrata/core/errors/http --external @getstrata/core/events --external @getstrata/core/facades --external @getstrata/core/http --external @getstrata/core/http/authMiddleware --external @getstrata/core/http/authorizeMiddleware --external @getstrata/core/http/bodySizeLimitMiddleware --external @getstrata/core/http/cookies --external @getstrata/core/http/contentNegotiation --external @getstrata/core/http/conditionalResponse --external @getstrata/core/http/corsMiddleware --external @getstrata/core/http/csrfMiddleware --external @getstrata/core/http/csrfProtection --external @getstrata/core/http/csrfToken --external @getstrata/core/http/etag --external @getstrata/core/http/flashSession --external @getstrata/core/http/flashMiddleware --external @getstrata/core/http/formRequest --external @getstrata/core/http/middleware --external @getstrata/core/http/metricsMiddleware --external @getstrata/core/http/loginThrottleMiddleware --external @getstrata/core/http/memoryThrottleMiddleware --external @getstrata/core/http/pagination --external @getstrata/core/http/parseFormBody --external @getstrata/core/http/parseMultipartUpload --external @getstrata/core/http/requireAbilityMiddleware --external @getstrata/core/http/requireAuthMiddleware --external @getstrata/core/http/requireGlobalAdminMiddleware --external @getstrata/core/http/requireWebAuthMiddleware --external @getstrata/core/http/resources --external @getstrata/core/http/response --external @getstrata/core/http/route --external @getstrata/core/http/routeMiddleware --external @getstrata/core/http/routeModelBinding --external @getstrata/core/http/scimThrottleMiddleware --external @getstrata/core/http/securityHeadersMiddleware --external @getstrata/core/http/securedRouteModelBinding --external @getstrata/core/http/requestMetaContext --external @getstrata/core/http/webErrorResponse --external @getstrata/core/http/webFormRequest --external @getstrata/core/http/throttleMiddleware --external @getstrata/core/http/validation --external @getstrata/core/jobs/dispatchWebhookJob --external @getstrata/core/jobs/invalidateCacheTagsJob --external @getstrata/core/lifecycle/gracefulShutdown --external @getstrata/core/logging/logger --external @getstrata/core/logging/requestLoggingMiddleware --external @getstrata/core/mail/mailer --external @getstrata/core/mail/markdownMail --external @getstrata/core/mail/markdownMailable --external @getstrata/core/metrics/prometheus --external @getstrata/core/notifications --external @getstrata/core/openapi/generator --external @getstrata/core/openapi/registeredRoute --external @getstrata/core/openapi/validate --external @getstrata/core/pagination --external @getstrata/core/queue --external @getstrata/core/queue/createAppQueue --external @getstrata/core/queue/failedJobRepository --external @getstrata/core/queue/failedJobService --external @getstrata/core/queue/jobRegistry --external @getstrata/core/queue/jobRunner --external @getstrata/core/queue/queueMetrics --external @getstrata/core/queue/publicQueue --external @getstrata/core/queue/redisQueue --external @getstrata/core/queue/types --external @getstrata/core/runtime/applicationRegistry --external @getstrata/core/runtime/asyncContextStore --external @getstrata/core/scheduler/schedule --external @getstrata/core/security/oauthState --external @getstrata/core/security/publicReads --external @getstrata/core/security/safeFetch --external @getstrata/core/security/safeUrl --external @getstrata/core/security/scimTenantTokens --external @getstrata/core/security/securityEvents --external @getstrata/core/security/stripeWebhook --external @getstrata/core/security/timingSafeCompare --external @getstrata/core/security/tokenExpiry --external @getstrata/core/security/totp --external @getstrata/core/storage/storage --external @getstrata/core/tenant/tenantContext --external @getstrata/core/tenant/tenantDatabaseScope --external @getstrata/core/tenant/databaseTenantContext --external @getstrata/core/tenant/tenantMiddleware --external @getstrata/core/tracing/traceContext --external @getstrata/core/tracing/tracingMiddleware --external @getstrata/core/validation/rules --external @getstrata/core/view",
|
|
175
|
+
"build:subpaths": "bun build entries/applicationRegistry.ts entries/buildModuleRoutes.ts entries/buildWebModuleRoutes.ts entries/cache/modelCacheTags.ts entries/config.ts entries/context.ts entries/contracts.ts entries/createWebRoutes.ts entries/createRoutes.ts entries/createSpaRoutes.ts entries/dependencies.ts entries/discoverModules.ts entries/health.ts entries/http/securedRouteModelBinding.ts entries/httpKernel.ts entries/listeners/invalidateCacheOnModelWrite.ts entries/membershipService.ts entries/metricsRoutes.ts entries/queue/defaultJobs.ts entries/providers.ts entries/providers/view.ts entries/routeRegistry.ts entries/schedule.ts entries/secretsGuard.ts entries/web/forms.ts entries/web/routing.ts entries/web/server.ts entries/web/session.ts entries/web/slug.ts --outdir dist --root . --target bun --external bun --external eta --external @getstrata/core --external @getstrata/bootstrap --external @getstrata/bootstrap/applicationRegistry --external @getstrata/bootstrap/buildModuleRoutes --external @getstrata/bootstrap/buildWebModuleRoutes --external @getstrata/bootstrap/cache/modelCacheTags --external @getstrata/bootstrap/config --external @getstrata/bootstrap/context --external @getstrata/bootstrap/contracts --external @getstrata/bootstrap/createWebRoutes --external @getstrata/bootstrap/createRoutes --external @getstrata/bootstrap/createSpaRoutes --external @getstrata/bootstrap/dependencies --external @getstrata/bootstrap/discoverModules --external @getstrata/bootstrap/health --external @getstrata/bootstrap/http/securedRouteModelBinding --external @getstrata/bootstrap/httpKernel --external @getstrata/bootstrap/listeners/invalidateCacheOnModelWrite --external @getstrata/bootstrap/membershipService --external @getstrata/bootstrap/metricsRoutes --external @getstrata/bootstrap/queue/defaultJobs --external @getstrata/bootstrap/providers --external @getstrata/bootstrap/providers/view --external @getstrata/bootstrap/routeRegistry --external @getstrata/bootstrap/schedule --external @getstrata/bootstrap/secretsGuard --external @getstrata/bootstrap/web/forms --external @getstrata/bootstrap/web/routing --external @getstrata/bootstrap/web/server --external @getstrata/bootstrap/web/session --external @getstrata/bootstrap/web/slug --external @getstrata/core/auth/accessControl --external @getstrata/core/auth/abilityChecker --external @getstrata/core/auth/authContext --external @getstrata/core/auth/guard --external @getstrata/core/auth/membershipContext --external @getstrata/core/auth/membershipMiddleware --external @getstrata/core/auth/membershipScope --external @getstrata/core/auth/membershipService --external @getstrata/core/auth/oauth/oidcProvider --external @getstrata/core/auth/oauth/providers --external @getstrata/core/auth/oauth/samlProvider --external @getstrata/core/auth/oauth/types --external @getstrata/core/auth/password --external @getstrata/core/auth/policy --external @getstrata/core/auth/scimAuthMiddleware --external @getstrata/core/auth/sessionCookie --external @getstrata/core/auth/sessionGuard --external @getstrata/core/auth/tokenHash --external @getstrata/core/audit/exportAuditLogs --external @getstrata/core/audit/siemFormatter --external @getstrata/core/admin/formatValue --external @getstrata/core/admin/registry --external @getstrata/core/admin/types --external @getstrata/core/cache/tags --external @getstrata/core/cache/createCacheStore --external @getstrata/core/cache/repository --external @getstrata/core/cache/simpleCache --external @getstrata/core/cache/simpleCacheStore --external @getstrata/core/config/envSchema --external @getstrata/core/contracts/serviceTokens --external @getstrata/core/contracts/container --external @getstrata/core/contracts/di --external @getstrata/core/crypto/fieldEncryption --external @getstrata/core/crypto/mfaSecret --external @getstrata/core/database --external @getstrata/core/database/baseRepository --external @getstrata/core/database/bindConnection --external @getstrata/core/database/boundConnection --external @getstrata/core/database/connection --external @getstrata/core/database/defaultConnection --external @getstrata/core/database/errors --external @getstrata/core/database/factory --external @getstrata/core/database/migrations --external @getstrata/core/database/migrations/types --external @getstrata/core/database/model --external @getstrata/core/database/query --external @getstrata/core/database/relationships --external @getstrata/core/database/repositoryConnection --external @getstrata/core/database/repositoryQuery --external @getstrata/core/database/seeders --external @getstrata/core/database/seeders/types --external @getstrata/core/database/schema --external @getstrata/core/database/table --external @getstrata/core/database/transaction --external @getstrata/core/database/types --external @getstrata/core/database/whereBuilder --external @getstrata/core/errors/http --external @getstrata/core/events --external @getstrata/core/facades --external @getstrata/core/http --external @getstrata/core/http/authMiddleware --external @getstrata/core/http/authorizeMiddleware --external @getstrata/core/http/bodySizeLimitMiddleware --external @getstrata/core/http/clientIp --external @getstrata/core/http/cookies --external @getstrata/core/http/contentNegotiation --external @getstrata/core/http/conditionalResponse --external @getstrata/core/http/corsMiddleware --external @getstrata/core/http/csrfMiddleware --external @getstrata/core/http/csrfProtection --external @getstrata/core/http/csrfToken --external @getstrata/core/http/etag --external @getstrata/core/http/flashSession --external @getstrata/core/http/flashMiddleware --external @getstrata/core/http/formRequest --external @getstrata/core/http/middleware --external @getstrata/core/http/metricsMiddleware --external @getstrata/core/http/loginThrottleMiddleware --external @getstrata/core/http/memoryThrottleMiddleware --external @getstrata/core/http/pagination --external @getstrata/core/http/parseFormBody --external @getstrata/core/http/parseMultipartUpload --external @getstrata/core/http/requireAbilityMiddleware --external @getstrata/core/http/requireAuthMiddleware --external @getstrata/core/http/requireGlobalAdminMiddleware --external @getstrata/core/http/requireWebAuthMiddleware --external @getstrata/core/http/resources --external @getstrata/core/http/response --external @getstrata/core/http/route --external @getstrata/core/http/routeMiddleware --external @getstrata/core/http/routeModelBinding --external @getstrata/core/http/scimThrottleMiddleware --external @getstrata/core/http/securityHeadersMiddleware --external @getstrata/core/http/securedRouteModelBinding --external @getstrata/core/http/requestMetaContext --external @getstrata/core/http/webErrorResponse --external @getstrata/core/http/webFormRequest --external @getstrata/core/http/throttleMiddleware --external @getstrata/core/http/validation --external @getstrata/core/jobs/dispatchWebhookJob --external @getstrata/core/jobs/invalidateCacheTagsJob --external @getstrata/core/lifecycle/gracefulShutdown --external @getstrata/core/logging/logger --external @getstrata/core/logging/requestLoggingMiddleware --external @getstrata/core/mail/mailer --external @getstrata/core/mail/markdownMail --external @getstrata/core/mail/markdownMailable --external @getstrata/core/media/imageTransform --external @getstrata/core/metrics/prometheus --external @getstrata/core/notifications --external @getstrata/core/openapi/generator --external @getstrata/core/openapi/registeredRoute --external @getstrata/core/openapi/validate --external @getstrata/core/pagination --external @getstrata/core/queue --external @getstrata/core/queue/createAppQueue --external @getstrata/core/queue/failedJobRepository --external @getstrata/core/queue/failedJobService --external @getstrata/core/queue/jobRegistry --external @getstrata/core/queue/jobRunner --external @getstrata/core/queue/queueMetrics --external @getstrata/core/queue/publicQueue --external @getstrata/core/queue/redisQueue --external @getstrata/core/queue/types --external @getstrata/core/runtime/applicationRegistry --external @getstrata/core/runtime/asyncContextStore --external @getstrata/core/scheduler/schedule --external @getstrata/core/scheduler/osCron --external @getstrata/core/security/oauthState --external @getstrata/core/security/publicReads --external @getstrata/core/security/safeFetch --external @getstrata/core/security/safeUrl --external @getstrata/core/security/scimTenantTokens --external @getstrata/core/security/securityEvents --external @getstrata/core/security/stripeWebhook --external @getstrata/core/security/timingSafeCompare --external @getstrata/core/security/tokenExpiry --external @getstrata/core/security/totp --external @getstrata/core/storage/storage --external @getstrata/core/tenant/tenancyConfig --external @getstrata/core/tenant/tenantContext --external @getstrata/core/tenant/tenantDatabaseScope --external @getstrata/core/tenant/databaseTenantContext --external @getstrata/core/tenant/tenantMiddleware --external @getstrata/core/terminal/runShell --external @getstrata/core/tracing/traceContext --external @getstrata/core/tracing/tracingMiddleware --external @getstrata/core/validation/rules --external @getstrata/core/view",
|
|
176
176
|
"build:shims": "true"
|
|
177
177
|
},
|
|
178
178
|
"publishConfig": {
|
|
179
179
|
"access": "public"
|
|
180
180
|
},
|
|
181
181
|
"peerDependencies": {
|
|
182
|
-
"@getstrata/core": "^0.5.
|
|
182
|
+
"@getstrata/core": "^0.5.58",
|
|
183
183
|
"typescript": "^5.9.0"
|
|
184
184
|
}
|
|
185
185
|
}
|