@getstrata/bootstrap 0.2.53 → 0.2.55
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/CHANGELOG.md +8 -0
- package/dist/bootstrap/httpKernel.d.ts +1 -0
- package/dist/entries/buildModuleRoutes.js +5 -18
- package/dist/entries/buildWebModuleRoutes.js +5 -18
- package/dist/entries/context.js +21 -26
- package/dist/entries/createRoutes.js +16 -26
- package/dist/entries/createSpaRoutes.js +1 -20
- package/dist/entries/createWebRoutes.js +7 -19
- package/dist/entries/dependencies.js +21 -26
- package/dist/entries/httpKernel.js +5 -18
- package/dist/entries/providers/view.js +1 -20
- package/dist/entries/providers.js +21 -26
- package/dist/entries/web/routing.js +5 -18
- package/dist/index.js +29 -22
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# @getstrata/bootstrap changelog
|
|
2
2
|
|
|
3
|
+
## 0.2.55
|
|
4
|
+
|
|
5
|
+
- HttpKernel and route builders read `isViewsEnabled` / `isSpaEnabled` from `@getstrata/core/runtime/frontendMode` instead of WorkHub `src/config/frontend`.
|
|
6
|
+
|
|
7
|
+
## 0.2.54
|
|
8
|
+
|
|
9
|
+
- `HttpKernel.wrapSigned()` applies `createValidateSignatureMiddleware` so HTMX routes can require a valid signed URL.
|
|
10
|
+
|
|
3
11
|
## 0.2.53
|
|
4
12
|
|
|
5
13
|
- `registerDefaultJobs()` also registers `audit.export` (`ExportAuditLogsJob`).
|
|
@@ -20,6 +20,7 @@ declare class HttpKernel {
|
|
|
20
20
|
wrapAbility(ability: string, handler: RouteHandler): RouteHandler;
|
|
21
21
|
wrapPolicy(resource: string, action: keyof Policy, handler: RouteHandler): RouteHandler;
|
|
22
22
|
wrapLogin(handler: RouteHandler): RouteHandler;
|
|
23
|
+
wrapSigned(handler: RouteHandler): RouteHandler;
|
|
23
24
|
wrapRegister(handler: RouteHandler): RouteHandler;
|
|
24
25
|
private wrapThrottle;
|
|
25
26
|
}
|
|
@@ -25,30 +25,14 @@ import { createRequireWebAuthMiddleware } from "@getstrata/core/http/requireWebA
|
|
|
25
25
|
import { withErrorHandling } from "@getstrata/core/http/response";
|
|
26
26
|
import { withMiddleware } from "@getstrata/core/http/routeMiddleware";
|
|
27
27
|
import { createSecurityHeadersMiddleware } from "@getstrata/core/http/securityHeadersMiddleware";
|
|
28
|
+
import { createValidateSignatureMiddleware } from "@getstrata/core/http/signedUrl";
|
|
28
29
|
import { createThrottleMiddleware } from "@getstrata/core/http/throttleMiddleware";
|
|
29
30
|
import { createRequestLoggingMiddleware } from "@getstrata/core/logging/requestLoggingMiddleware";
|
|
31
|
+
import { isViewsEnabled } from "@getstrata/core/runtime/frontendMode";
|
|
30
32
|
import { isPublicReadsEnabled } from "@getstrata/core/security/publicReads";
|
|
31
33
|
import { createTenantMiddleware } from "@getstrata/core/tenant/tenantMiddleware";
|
|
32
34
|
import { createTracingMiddleware } from "@getstrata/core/tracing/tracingMiddleware";
|
|
33
35
|
|
|
34
|
-
// ../../src/config/frontend.ts
|
|
35
|
-
function readFrontendMode() {
|
|
36
|
-
const mode = (process.env.FRONTEND_MODE ?? "api").trim();
|
|
37
|
-
if (mode === "server-htmx") {
|
|
38
|
-
return "server-htmx";
|
|
39
|
-
}
|
|
40
|
-
if (mode === "spa-react") {
|
|
41
|
-
return "spa-react";
|
|
42
|
-
}
|
|
43
|
-
return "api";
|
|
44
|
-
}
|
|
45
|
-
function isViewsEnabled() {
|
|
46
|
-
return readFrontendMode() === "server-htmx";
|
|
47
|
-
}
|
|
48
|
-
function isSpaEnabled() {
|
|
49
|
-
return readFrontendMode() === "spa-react";
|
|
50
|
-
}
|
|
51
|
-
|
|
52
36
|
// ../../src/config/rateLimit.ts
|
|
53
37
|
var LOCAL_LOGIN_RATE_LIMIT = {
|
|
54
38
|
maxAttempts: 100,
|
|
@@ -240,6 +224,9 @@ class HttpKernel {
|
|
|
240
224
|
wrapLogin(handler) {
|
|
241
225
|
return this.wrapThrottle("login", resolveLoginRateLimit(), handler);
|
|
242
226
|
}
|
|
227
|
+
wrapSigned(handler) {
|
|
228
|
+
return withMiddleware(createValidateSignatureMiddleware())(handler);
|
|
229
|
+
}
|
|
243
230
|
wrapRegister(handler) {
|
|
244
231
|
return this.wrapThrottle("register", resolveRegisterRateLimit(), handler);
|
|
245
232
|
}
|
|
@@ -28,30 +28,14 @@ import { createRequireWebAuthMiddleware } from "@getstrata/core/http/requireWebA
|
|
|
28
28
|
import { withErrorHandling } from "@getstrata/core/http/response";
|
|
29
29
|
import { withMiddleware } from "@getstrata/core/http/routeMiddleware";
|
|
30
30
|
import { createSecurityHeadersMiddleware } from "@getstrata/core/http/securityHeadersMiddleware";
|
|
31
|
+
import { createValidateSignatureMiddleware } from "@getstrata/core/http/signedUrl";
|
|
31
32
|
import { createThrottleMiddleware } from "@getstrata/core/http/throttleMiddleware";
|
|
32
33
|
import { createRequestLoggingMiddleware } from "@getstrata/core/logging/requestLoggingMiddleware";
|
|
34
|
+
import { isViewsEnabled } from "@getstrata/core/runtime/frontendMode";
|
|
33
35
|
import { isPublicReadsEnabled } from "@getstrata/core/security/publicReads";
|
|
34
36
|
import { createTenantMiddleware } from "@getstrata/core/tenant/tenantMiddleware";
|
|
35
37
|
import { createTracingMiddleware } from "@getstrata/core/tracing/tracingMiddleware";
|
|
36
38
|
|
|
37
|
-
// ../../src/config/frontend.ts
|
|
38
|
-
function readFrontendMode() {
|
|
39
|
-
const mode = (process.env.FRONTEND_MODE ?? "api").trim();
|
|
40
|
-
if (mode === "server-htmx") {
|
|
41
|
-
return "server-htmx";
|
|
42
|
-
}
|
|
43
|
-
if (mode === "spa-react") {
|
|
44
|
-
return "spa-react";
|
|
45
|
-
}
|
|
46
|
-
return "api";
|
|
47
|
-
}
|
|
48
|
-
function isViewsEnabled() {
|
|
49
|
-
return readFrontendMode() === "server-htmx";
|
|
50
|
-
}
|
|
51
|
-
function isSpaEnabled() {
|
|
52
|
-
return readFrontendMode() === "spa-react";
|
|
53
|
-
}
|
|
54
|
-
|
|
55
39
|
// ../../src/config/rateLimit.ts
|
|
56
40
|
var LOCAL_LOGIN_RATE_LIMIT = {
|
|
57
41
|
maxAttempts: 100,
|
|
@@ -243,6 +227,9 @@ class HttpKernel {
|
|
|
243
227
|
wrapLogin(handler) {
|
|
244
228
|
return this.wrapThrottle("login", resolveLoginRateLimit(), handler);
|
|
245
229
|
}
|
|
230
|
+
wrapSigned(handler) {
|
|
231
|
+
return withMiddleware(createValidateSignatureMiddleware())(handler);
|
|
232
|
+
}
|
|
246
233
|
wrapRegister(handler) {
|
|
247
234
|
return this.wrapThrottle("register", resolveRegisterRateLimit(), handler);
|
|
248
235
|
}
|
package/dist/entries/context.js
CHANGED
|
@@ -177,14 +177,28 @@ var appConfig = {
|
|
|
177
177
|
apiPrefix: process.env.API_PREFIX ?? "/api/v1"
|
|
178
178
|
};
|
|
179
179
|
|
|
180
|
-
// ../../src/
|
|
181
|
-
|
|
180
|
+
// ../../src/core/queue/queueConfig.ts
|
|
181
|
+
function resolveQueueConfig() {
|
|
182
|
+
const driver = process.env.QUEUE_DRIVER;
|
|
183
|
+
const maxAttempts = Number(process.env.QUEUE_MAX_ATTEMPTS ?? "3");
|
|
184
|
+
const backoffMs = Number(process.env.QUEUE_BACKOFF_MS ?? "1000");
|
|
185
|
+
return {
|
|
186
|
+
driver: driver === "redis" || driver === "async" || driver === "sync" ? driver : "sync",
|
|
187
|
+
maxAttempts: Number.isFinite(maxAttempts) && maxAttempts > 0 ? maxAttempts : 3,
|
|
188
|
+
backoffMs: Number.isFinite(backoffMs) && backoffMs >= 0 ? backoffMs : 1000
|
|
189
|
+
};
|
|
190
|
+
}
|
|
182
191
|
var queueConfig = {
|
|
183
|
-
driver
|
|
184
|
-
|
|
185
|
-
|
|
192
|
+
get driver() {
|
|
193
|
+
return resolveQueueConfig().driver;
|
|
194
|
+
},
|
|
195
|
+
get maxAttempts() {
|
|
196
|
+
return resolveQueueConfig().maxAttempts;
|
|
197
|
+
},
|
|
198
|
+
get backoffMs() {
|
|
199
|
+
return resolveQueueConfig().backoffMs;
|
|
200
|
+
}
|
|
186
201
|
};
|
|
187
|
-
|
|
188
202
|
// ../../src/bootstrap/env.ts
|
|
189
203
|
import { defineEnvSchema } from "@getstrata/core/config/envSchema";
|
|
190
204
|
var appEnvSchema = defineEnvSchema({
|
|
@@ -462,6 +476,7 @@ var storage_default = storageProvider;
|
|
|
462
476
|
|
|
463
477
|
// ../../src/bootstrap/providers/view.ts
|
|
464
478
|
import { currentRequestMeta } from "@getstrata/core/http/requestMetaContext";
|
|
479
|
+
import { isViewsEnabled } from "@getstrata/core/runtime/frontendMode";
|
|
465
480
|
import {
|
|
466
481
|
configureWebErrorView,
|
|
467
482
|
DEFAULT_VIEWS_DIRECTORY,
|
|
@@ -469,26 +484,6 @@ import {
|
|
|
469
484
|
errorTemplateName,
|
|
470
485
|
resolveWebLayoutData
|
|
471
486
|
} from "@getstrata/core/view";
|
|
472
|
-
|
|
473
|
-
// ../../src/config/frontend.ts
|
|
474
|
-
function readFrontendMode() {
|
|
475
|
-
const mode = (process.env.FRONTEND_MODE ?? "api").trim();
|
|
476
|
-
if (mode === "server-htmx") {
|
|
477
|
-
return "server-htmx";
|
|
478
|
-
}
|
|
479
|
-
if (mode === "spa-react") {
|
|
480
|
-
return "spa-react";
|
|
481
|
-
}
|
|
482
|
-
return "api";
|
|
483
|
-
}
|
|
484
|
-
function isViewsEnabled() {
|
|
485
|
-
return readFrontendMode() === "server-htmx";
|
|
486
|
-
}
|
|
487
|
-
function isSpaEnabled() {
|
|
488
|
-
return readFrontendMode() === "spa-react";
|
|
489
|
-
}
|
|
490
|
-
|
|
491
|
-
// ../../src/bootstrap/providers/view.ts
|
|
492
487
|
var CORE_VIEW_TOKEN = "core.view";
|
|
493
488
|
var VIEW_DIRECTORY_CONFIG_KEY = "view.directory";
|
|
494
489
|
var viewProvider = {
|
|
@@ -4,6 +4,7 @@ var __jsonParse = (a) => JSON.parse(a);
|
|
|
4
4
|
// ../../src/bootstrap/createRoutes.ts
|
|
5
5
|
import { applyMiddlewareToRoutes as applyMiddlewareToRoutes3 } from "@getstrata/core/http/middleware";
|
|
6
6
|
import { jsonResponse as jsonResponse4 } from "@getstrata/core/http/response";
|
|
7
|
+
import { isSpaEnabled as isSpaEnabled2, isViewsEnabled as isViewsEnabled3 } from "@getstrata/core/runtime/frontendMode";
|
|
7
8
|
import { notFoundHtmlResponse as notFoundHtmlResponse2 } from "@getstrata/core/view";
|
|
8
9
|
|
|
9
10
|
// ../../index.html
|
|
@@ -39,24 +40,6 @@ function isFeatureEnabled(feature) {
|
|
|
39
40
|
return readFeatureFlags()[feature];
|
|
40
41
|
}
|
|
41
42
|
|
|
42
|
-
// ../../src/config/frontend.ts
|
|
43
|
-
function readFrontendMode() {
|
|
44
|
-
const mode = (process.env.FRONTEND_MODE ?? "api").trim();
|
|
45
|
-
if (mode === "server-htmx") {
|
|
46
|
-
return "server-htmx";
|
|
47
|
-
}
|
|
48
|
-
if (mode === "spa-react") {
|
|
49
|
-
return "spa-react";
|
|
50
|
-
}
|
|
51
|
-
return "api";
|
|
52
|
-
}
|
|
53
|
-
function isViewsEnabled() {
|
|
54
|
-
return readFrontendMode() === "server-htmx";
|
|
55
|
-
}
|
|
56
|
-
function isSpaEnabled() {
|
|
57
|
-
return readFrontendMode() === "spa-react";
|
|
58
|
-
}
|
|
59
|
-
|
|
60
43
|
// ../../src/bootstrap/buildModuleRoutes.ts
|
|
61
44
|
import { conditionalJsonResponse } from "@getstrata/core/http/conditionalResponse";
|
|
62
45
|
import { applyMiddlewareToRoutes } from "@getstrata/core/http/middleware";
|
|
@@ -81,8 +64,10 @@ import { createRequireWebAuthMiddleware } from "@getstrata/core/http/requireWebA
|
|
|
81
64
|
import { withErrorHandling } from "@getstrata/core/http/response";
|
|
82
65
|
import { withMiddleware } from "@getstrata/core/http/routeMiddleware";
|
|
83
66
|
import { createSecurityHeadersMiddleware } from "@getstrata/core/http/securityHeadersMiddleware";
|
|
67
|
+
import { createValidateSignatureMiddleware } from "@getstrata/core/http/signedUrl";
|
|
84
68
|
import { createThrottleMiddleware } from "@getstrata/core/http/throttleMiddleware";
|
|
85
69
|
import { createRequestLoggingMiddleware } from "@getstrata/core/logging/requestLoggingMiddleware";
|
|
70
|
+
import { isViewsEnabled } from "@getstrata/core/runtime/frontendMode";
|
|
86
71
|
import { isPublicReadsEnabled } from "@getstrata/core/security/publicReads";
|
|
87
72
|
import { createTenantMiddleware } from "@getstrata/core/tenant/tenantMiddleware";
|
|
88
73
|
import { createTracingMiddleware } from "@getstrata/core/tracing/tracingMiddleware";
|
|
@@ -278,6 +263,9 @@ class HttpKernel {
|
|
|
278
263
|
wrapLogin(handler) {
|
|
279
264
|
return this.wrapThrottle("login", resolveLoginRateLimit(), handler);
|
|
280
265
|
}
|
|
266
|
+
wrapSigned(handler) {
|
|
267
|
+
return withMiddleware(createValidateSignatureMiddleware())(handler);
|
|
268
|
+
}
|
|
281
269
|
wrapRegister(handler) {
|
|
282
270
|
return this.wrapThrottle("register", resolveRegisterRateLimit(), handler);
|
|
283
271
|
}
|
|
@@ -472,6 +460,7 @@ function buildModuleRoutes(dependencies, options = {}) {
|
|
|
472
460
|
// ../../src/bootstrap/createSpaRoutes.ts
|
|
473
461
|
import { join as join2 } from "path";
|
|
474
462
|
import { jsonResponse } from "@getstrata/core/http/response";
|
|
463
|
+
import { isSpaEnabled } from "@getstrata/core/runtime/frontendMode";
|
|
475
464
|
var SPA_DIST_DIRECTORY = join2(process.cwd(), "frontend/dist");
|
|
476
465
|
var SPA_INDEX_FILE = join2(SPA_DIST_DIRECTORY, "index.html");
|
|
477
466
|
function createSpaRoutes(_dependencies) {
|
|
@@ -508,6 +497,7 @@ function mergeSpaRoutes(dependencies, routes) {
|
|
|
508
497
|
|
|
509
498
|
// ../../src/bootstrap/createWebRoutes.ts
|
|
510
499
|
import { join as join3 } from "path";
|
|
500
|
+
import { isViewsEnabled as isViewsEnabled2 } from "@getstrata/core/runtime/frontendMode";
|
|
511
501
|
import { notFoundHtmlResponse } from "@getstrata/core/view";
|
|
512
502
|
|
|
513
503
|
// ../../src/bootstrap/buildWebModuleRoutes.ts
|
|
@@ -559,7 +549,7 @@ function createWebRoutes(dependencies) {
|
|
|
559
549
|
return wrappedRoutes;
|
|
560
550
|
}
|
|
561
551
|
function mergeWebRoutes(dependencies, routes) {
|
|
562
|
-
if (!
|
|
552
|
+
if (!isViewsEnabled2()) {
|
|
563
553
|
return routes;
|
|
564
554
|
}
|
|
565
555
|
return {
|
|
@@ -751,7 +741,7 @@ function assertScimIfMatch(request, etagSource) {
|
|
|
751
741
|
}
|
|
752
742
|
|
|
753
743
|
// ../../src/modules/scim/service.ts
|
|
754
|
-
import { hashPassword as
|
|
744
|
+
import { hashPassword as hashPassword3 } from "@getstrata/core/auth/password";
|
|
755
745
|
import { resolveService } from "@getstrata/core/contracts/di";
|
|
756
746
|
import { NotFoundError as NotFoundError4 } from "@getstrata/core/errors/http";
|
|
757
747
|
import { currentTenantId as currentTenantId4 } from "@getstrata/core/tenant/tenantContext";
|
|
@@ -1013,7 +1003,7 @@ var apiTokenTable = defineTable2({
|
|
|
1013
1003
|
});
|
|
1014
1004
|
|
|
1015
1005
|
// ../../src/modules/user/authService.ts
|
|
1016
|
-
import { verifyPassword } from "@getstrata/core/auth/password";
|
|
1006
|
+
import { hashPassword, verifyPassword } from "@getstrata/core/auth/password";
|
|
1017
1007
|
import { protectMfaSecret, revealMfaSecret } from "@getstrata/core/crypto/mfaSecret";
|
|
1018
1008
|
import { UnauthorizedError, ValidationError } from "@getstrata/core/errors/http";
|
|
1019
1009
|
import { logSecurityEvent } from "@getstrata/core/security/securityEvents";
|
|
@@ -1076,7 +1066,7 @@ var oauthIdentityTable = defineTable4({
|
|
|
1076
1066
|
});
|
|
1077
1067
|
|
|
1078
1068
|
// ../../src/modules/user/passwordResetService.ts
|
|
1079
|
-
import { hashPassword } from "@getstrata/core/auth/password";
|
|
1069
|
+
import { hashPassword as hashPassword2 } from "@getstrata/core/auth/password";
|
|
1080
1070
|
import { hashApiToken } from "@getstrata/core/auth/tokenHash";
|
|
1081
1071
|
import { repositoryConnection as db2 } from "@getstrata/core/database/repositoryConnection";
|
|
1082
1072
|
import { ValidationError as ValidationError2 } from "@getstrata/core/errors/http";
|
|
@@ -1189,7 +1179,7 @@ class ScimService {
|
|
|
1189
1179
|
if (!email) {
|
|
1190
1180
|
throw new Error("SCIM userName or email is required.");
|
|
1191
1181
|
}
|
|
1192
|
-
const passwordHash = await
|
|
1182
|
+
const passwordHash = await hashPassword3(crypto.randomUUID());
|
|
1193
1183
|
const user = await this.users.create({
|
|
1194
1184
|
name: payload.name?.formatted ?? email.split("@")[0] ?? "SCIM User",
|
|
1195
1185
|
email,
|
|
@@ -1432,7 +1422,7 @@ function createRoutes(dependencies) {
|
|
|
1432
1422
|
...healthRoutes,
|
|
1433
1423
|
...metricsRoutes,
|
|
1434
1424
|
...scimRoutes,
|
|
1435
|
-
...
|
|
1425
|
+
...isViewsEnabled3() || isSpaEnabled2() ? {} : { "/": strata_default },
|
|
1436
1426
|
...wrappedModuleRoutes,
|
|
1437
1427
|
[`${appConfig.apiPrefix}/*`]: async () => {
|
|
1438
1428
|
registerRoute2("GET", `${appConfig.apiPrefix}/*`, ["global", "api"]);
|
|
@@ -1440,10 +1430,10 @@ function createRoutes(dependencies) {
|
|
|
1440
1430
|
},
|
|
1441
1431
|
"/*": async () => {
|
|
1442
1432
|
registerRoute2("GET", "/*", []);
|
|
1443
|
-
if (
|
|
1433
|
+
if (isViewsEnabled3()) {
|
|
1444
1434
|
return notFoundHtmlResponse2();
|
|
1445
1435
|
}
|
|
1446
|
-
if (
|
|
1436
|
+
if (isSpaEnabled2()) {
|
|
1447
1437
|
return jsonResponse4({ error: "Not Found" }, { status: 404 });
|
|
1448
1438
|
}
|
|
1449
1439
|
return jsonResponse4({ error: "Not Found" }, { status: 404 });
|
|
@@ -4,26 +4,7 @@ var __jsonParse = (a) => JSON.parse(a);
|
|
|
4
4
|
// ../../src/bootstrap/createSpaRoutes.ts
|
|
5
5
|
import { join } from "path";
|
|
6
6
|
import { jsonResponse } from "@getstrata/core/http/response";
|
|
7
|
-
|
|
8
|
-
// ../../src/config/frontend.ts
|
|
9
|
-
function readFrontendMode() {
|
|
10
|
-
const mode = (process.env.FRONTEND_MODE ?? "api").trim();
|
|
11
|
-
if (mode === "server-htmx") {
|
|
12
|
-
return "server-htmx";
|
|
13
|
-
}
|
|
14
|
-
if (mode === "spa-react") {
|
|
15
|
-
return "spa-react";
|
|
16
|
-
}
|
|
17
|
-
return "api";
|
|
18
|
-
}
|
|
19
|
-
function isViewsEnabled() {
|
|
20
|
-
return readFrontendMode() === "server-htmx";
|
|
21
|
-
}
|
|
22
|
-
function isSpaEnabled() {
|
|
23
|
-
return readFrontendMode() === "spa-react";
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
// ../../src/bootstrap/createSpaRoutes.ts
|
|
7
|
+
import { isSpaEnabled } from "@getstrata/core/runtime/frontendMode";
|
|
27
8
|
var SPA_DIST_DIRECTORY = join(process.cwd(), "frontend/dist");
|
|
28
9
|
var SPA_INDEX_FILE = join(SPA_DIST_DIRECTORY, "index.html");
|
|
29
10
|
function createSpaRoutes(_dependencies) {
|
|
@@ -3,26 +3,9 @@ var __jsonParse = (a) => JSON.parse(a);
|
|
|
3
3
|
|
|
4
4
|
// ../../src/bootstrap/createWebRoutes.ts
|
|
5
5
|
import { join as join2 } from "path";
|
|
6
|
+
import { isViewsEnabled as isViewsEnabled2 } from "@getstrata/core/runtime/frontendMode";
|
|
6
7
|
import { notFoundHtmlResponse } from "@getstrata/core/view";
|
|
7
8
|
|
|
8
|
-
// ../../src/config/frontend.ts
|
|
9
|
-
function readFrontendMode() {
|
|
10
|
-
const mode = (process.env.FRONTEND_MODE ?? "api").trim();
|
|
11
|
-
if (mode === "server-htmx") {
|
|
12
|
-
return "server-htmx";
|
|
13
|
-
}
|
|
14
|
-
if (mode === "spa-react") {
|
|
15
|
-
return "spa-react";
|
|
16
|
-
}
|
|
17
|
-
return "api";
|
|
18
|
-
}
|
|
19
|
-
function isViewsEnabled() {
|
|
20
|
-
return readFrontendMode() === "server-htmx";
|
|
21
|
-
}
|
|
22
|
-
function isSpaEnabled() {
|
|
23
|
-
return readFrontendMode() === "spa-react";
|
|
24
|
-
}
|
|
25
|
-
|
|
26
9
|
// ../../src/bootstrap/buildWebModuleRoutes.ts
|
|
27
10
|
import { applyMiddlewareToRoutes as applyMiddlewareToRoutes2 } from "@getstrata/core/http/middleware";
|
|
28
11
|
|
|
@@ -50,8 +33,10 @@ import { createRequireWebAuthMiddleware } from "@getstrata/core/http/requireWebA
|
|
|
50
33
|
import { withErrorHandling } from "@getstrata/core/http/response";
|
|
51
34
|
import { withMiddleware } from "@getstrata/core/http/routeMiddleware";
|
|
52
35
|
import { createSecurityHeadersMiddleware } from "@getstrata/core/http/securityHeadersMiddleware";
|
|
36
|
+
import { createValidateSignatureMiddleware } from "@getstrata/core/http/signedUrl";
|
|
53
37
|
import { createThrottleMiddleware } from "@getstrata/core/http/throttleMiddleware";
|
|
54
38
|
import { createRequestLoggingMiddleware } from "@getstrata/core/logging/requestLoggingMiddleware";
|
|
39
|
+
import { isViewsEnabled } from "@getstrata/core/runtime/frontendMode";
|
|
55
40
|
import { isPublicReadsEnabled } from "@getstrata/core/security/publicReads";
|
|
56
41
|
import { createTenantMiddleware } from "@getstrata/core/tenant/tenantMiddleware";
|
|
57
42
|
import { createTracingMiddleware } from "@getstrata/core/tracing/tracingMiddleware";
|
|
@@ -247,6 +232,9 @@ class HttpKernel {
|
|
|
247
232
|
wrapLogin(handler) {
|
|
248
233
|
return this.wrapThrottle("login", resolveLoginRateLimit(), handler);
|
|
249
234
|
}
|
|
235
|
+
wrapSigned(handler) {
|
|
236
|
+
return withMiddleware(createValidateSignatureMiddleware())(handler);
|
|
237
|
+
}
|
|
250
238
|
wrapRegister(handler) {
|
|
251
239
|
return this.wrapThrottle("register", resolveRegisterRateLimit(), handler);
|
|
252
240
|
}
|
|
@@ -486,7 +474,7 @@ function createWebRoutes(dependencies) {
|
|
|
486
474
|
return wrappedRoutes;
|
|
487
475
|
}
|
|
488
476
|
function mergeWebRoutes(dependencies, routes) {
|
|
489
|
-
if (!
|
|
477
|
+
if (!isViewsEnabled2()) {
|
|
490
478
|
return routes;
|
|
491
479
|
}
|
|
492
480
|
return {
|
|
@@ -177,14 +177,28 @@ var appConfig = {
|
|
|
177
177
|
apiPrefix: process.env.API_PREFIX ?? "/api/v1"
|
|
178
178
|
};
|
|
179
179
|
|
|
180
|
-
// ../../src/
|
|
181
|
-
|
|
180
|
+
// ../../src/core/queue/queueConfig.ts
|
|
181
|
+
function resolveQueueConfig() {
|
|
182
|
+
const driver = process.env.QUEUE_DRIVER;
|
|
183
|
+
const maxAttempts = Number(process.env.QUEUE_MAX_ATTEMPTS ?? "3");
|
|
184
|
+
const backoffMs = Number(process.env.QUEUE_BACKOFF_MS ?? "1000");
|
|
185
|
+
return {
|
|
186
|
+
driver: driver === "redis" || driver === "async" || driver === "sync" ? driver : "sync",
|
|
187
|
+
maxAttempts: Number.isFinite(maxAttempts) && maxAttempts > 0 ? maxAttempts : 3,
|
|
188
|
+
backoffMs: Number.isFinite(backoffMs) && backoffMs >= 0 ? backoffMs : 1000
|
|
189
|
+
};
|
|
190
|
+
}
|
|
182
191
|
var queueConfig = {
|
|
183
|
-
driver
|
|
184
|
-
|
|
185
|
-
|
|
192
|
+
get driver() {
|
|
193
|
+
return resolveQueueConfig().driver;
|
|
194
|
+
},
|
|
195
|
+
get maxAttempts() {
|
|
196
|
+
return resolveQueueConfig().maxAttempts;
|
|
197
|
+
},
|
|
198
|
+
get backoffMs() {
|
|
199
|
+
return resolveQueueConfig().backoffMs;
|
|
200
|
+
}
|
|
186
201
|
};
|
|
187
|
-
|
|
188
202
|
// ../../src/bootstrap/env.ts
|
|
189
203
|
import { defineEnvSchema } from "@getstrata/core/config/envSchema";
|
|
190
204
|
var appEnvSchema = defineEnvSchema({
|
|
@@ -462,6 +476,7 @@ var storage_default = storageProvider;
|
|
|
462
476
|
|
|
463
477
|
// ../../src/bootstrap/providers/view.ts
|
|
464
478
|
import { currentRequestMeta } from "@getstrata/core/http/requestMetaContext";
|
|
479
|
+
import { isViewsEnabled } from "@getstrata/core/runtime/frontendMode";
|
|
465
480
|
import {
|
|
466
481
|
configureWebErrorView,
|
|
467
482
|
DEFAULT_VIEWS_DIRECTORY,
|
|
@@ -469,26 +484,6 @@ import {
|
|
|
469
484
|
errorTemplateName,
|
|
470
485
|
resolveWebLayoutData
|
|
471
486
|
} from "@getstrata/core/view";
|
|
472
|
-
|
|
473
|
-
// ../../src/config/frontend.ts
|
|
474
|
-
function readFrontendMode() {
|
|
475
|
-
const mode = (process.env.FRONTEND_MODE ?? "api").trim();
|
|
476
|
-
if (mode === "server-htmx") {
|
|
477
|
-
return "server-htmx";
|
|
478
|
-
}
|
|
479
|
-
if (mode === "spa-react") {
|
|
480
|
-
return "spa-react";
|
|
481
|
-
}
|
|
482
|
-
return "api";
|
|
483
|
-
}
|
|
484
|
-
function isViewsEnabled() {
|
|
485
|
-
return readFrontendMode() === "server-htmx";
|
|
486
|
-
}
|
|
487
|
-
function isSpaEnabled() {
|
|
488
|
-
return readFrontendMode() === "spa-react";
|
|
489
|
-
}
|
|
490
|
-
|
|
491
|
-
// ../../src/bootstrap/providers/view.ts
|
|
492
487
|
var CORE_VIEW_TOKEN = "core.view";
|
|
493
488
|
var VIEW_DIRECTORY_CONFIG_KEY = "view.directory";
|
|
494
489
|
var viewProvider = {
|
|
@@ -21,30 +21,14 @@ import { createRequireWebAuthMiddleware } from "@getstrata/core/http/requireWebA
|
|
|
21
21
|
import { withErrorHandling } from "@getstrata/core/http/response";
|
|
22
22
|
import { withMiddleware } from "@getstrata/core/http/routeMiddleware";
|
|
23
23
|
import { createSecurityHeadersMiddleware } from "@getstrata/core/http/securityHeadersMiddleware";
|
|
24
|
+
import { createValidateSignatureMiddleware } from "@getstrata/core/http/signedUrl";
|
|
24
25
|
import { createThrottleMiddleware } from "@getstrata/core/http/throttleMiddleware";
|
|
25
26
|
import { createRequestLoggingMiddleware } from "@getstrata/core/logging/requestLoggingMiddleware";
|
|
27
|
+
import { isViewsEnabled } from "@getstrata/core/runtime/frontendMode";
|
|
26
28
|
import { isPublicReadsEnabled } from "@getstrata/core/security/publicReads";
|
|
27
29
|
import { createTenantMiddleware } from "@getstrata/core/tenant/tenantMiddleware";
|
|
28
30
|
import { createTracingMiddleware } from "@getstrata/core/tracing/tracingMiddleware";
|
|
29
31
|
|
|
30
|
-
// ../../src/config/frontend.ts
|
|
31
|
-
function readFrontendMode() {
|
|
32
|
-
const mode = (process.env.FRONTEND_MODE ?? "api").trim();
|
|
33
|
-
if (mode === "server-htmx") {
|
|
34
|
-
return "server-htmx";
|
|
35
|
-
}
|
|
36
|
-
if (mode === "spa-react") {
|
|
37
|
-
return "spa-react";
|
|
38
|
-
}
|
|
39
|
-
return "api";
|
|
40
|
-
}
|
|
41
|
-
function isViewsEnabled() {
|
|
42
|
-
return readFrontendMode() === "server-htmx";
|
|
43
|
-
}
|
|
44
|
-
function isSpaEnabled() {
|
|
45
|
-
return readFrontendMode() === "spa-react";
|
|
46
|
-
}
|
|
47
|
-
|
|
48
32
|
// ../../src/config/rateLimit.ts
|
|
49
33
|
var LOCAL_LOGIN_RATE_LIMIT = {
|
|
50
34
|
maxAttempts: 100,
|
|
@@ -236,6 +220,9 @@ class HttpKernel {
|
|
|
236
220
|
wrapLogin(handler) {
|
|
237
221
|
return this.wrapThrottle("login", resolveLoginRateLimit(), handler);
|
|
238
222
|
}
|
|
223
|
+
wrapSigned(handler) {
|
|
224
|
+
return withMiddleware(createValidateSignatureMiddleware())(handler);
|
|
225
|
+
}
|
|
239
226
|
wrapRegister(handler) {
|
|
240
227
|
return this.wrapThrottle("register", resolveRegisterRateLimit(), handler);
|
|
241
228
|
}
|
|
@@ -3,6 +3,7 @@ var __jsonParse = (a) => JSON.parse(a);
|
|
|
3
3
|
|
|
4
4
|
// ../../src/bootstrap/providers/view.ts
|
|
5
5
|
import { currentRequestMeta } from "@getstrata/core/http/requestMetaContext";
|
|
6
|
+
import { isViewsEnabled } from "@getstrata/core/runtime/frontendMode";
|
|
6
7
|
import {
|
|
7
8
|
configureWebErrorView,
|
|
8
9
|
DEFAULT_VIEWS_DIRECTORY,
|
|
@@ -10,26 +11,6 @@ import {
|
|
|
10
11
|
errorTemplateName,
|
|
11
12
|
resolveWebLayoutData
|
|
12
13
|
} from "@getstrata/core/view";
|
|
13
|
-
|
|
14
|
-
// ../../src/config/frontend.ts
|
|
15
|
-
function readFrontendMode() {
|
|
16
|
-
const mode = (process.env.FRONTEND_MODE ?? "api").trim();
|
|
17
|
-
if (mode === "server-htmx") {
|
|
18
|
-
return "server-htmx";
|
|
19
|
-
}
|
|
20
|
-
if (mode === "spa-react") {
|
|
21
|
-
return "spa-react";
|
|
22
|
-
}
|
|
23
|
-
return "api";
|
|
24
|
-
}
|
|
25
|
-
function isViewsEnabled() {
|
|
26
|
-
return readFrontendMode() === "server-htmx";
|
|
27
|
-
}
|
|
28
|
-
function isSpaEnabled() {
|
|
29
|
-
return readFrontendMode() === "spa-react";
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
// ../../src/bootstrap/providers/view.ts
|
|
33
14
|
var CORE_VIEW_TOKEN = "core.view";
|
|
34
15
|
var VIEW_DIRECTORY_CONFIG_KEY = "view.directory";
|
|
35
16
|
var viewProvider = {
|
|
@@ -88,14 +88,28 @@ var appConfig = {
|
|
|
88
88
|
apiPrefix: process.env.API_PREFIX ?? "/api/v1"
|
|
89
89
|
};
|
|
90
90
|
|
|
91
|
-
// ../../src/
|
|
92
|
-
|
|
91
|
+
// ../../src/core/queue/queueConfig.ts
|
|
92
|
+
function resolveQueueConfig() {
|
|
93
|
+
const driver = process.env.QUEUE_DRIVER;
|
|
94
|
+
const maxAttempts = Number(process.env.QUEUE_MAX_ATTEMPTS ?? "3");
|
|
95
|
+
const backoffMs = Number(process.env.QUEUE_BACKOFF_MS ?? "1000");
|
|
96
|
+
return {
|
|
97
|
+
driver: driver === "redis" || driver === "async" || driver === "sync" ? driver : "sync",
|
|
98
|
+
maxAttempts: Number.isFinite(maxAttempts) && maxAttempts > 0 ? maxAttempts : 3,
|
|
99
|
+
backoffMs: Number.isFinite(backoffMs) && backoffMs >= 0 ? backoffMs : 1000
|
|
100
|
+
};
|
|
101
|
+
}
|
|
93
102
|
var queueConfig = {
|
|
94
|
-
driver
|
|
95
|
-
|
|
96
|
-
|
|
103
|
+
get driver() {
|
|
104
|
+
return resolveQueueConfig().driver;
|
|
105
|
+
},
|
|
106
|
+
get maxAttempts() {
|
|
107
|
+
return resolveQueueConfig().maxAttempts;
|
|
108
|
+
},
|
|
109
|
+
get backoffMs() {
|
|
110
|
+
return resolveQueueConfig().backoffMs;
|
|
111
|
+
}
|
|
97
112
|
};
|
|
98
|
-
|
|
99
113
|
// ../../src/bootstrap/env.ts
|
|
100
114
|
import { defineEnvSchema } from "@getstrata/core/config/envSchema";
|
|
101
115
|
var appEnvSchema = defineEnvSchema({
|
|
@@ -452,6 +466,7 @@ var storage_default = storageProvider;
|
|
|
452
466
|
|
|
453
467
|
// ../../src/bootstrap/providers/view.ts
|
|
454
468
|
import { currentRequestMeta } from "@getstrata/core/http/requestMetaContext";
|
|
469
|
+
import { isViewsEnabled } from "@getstrata/core/runtime/frontendMode";
|
|
455
470
|
import {
|
|
456
471
|
configureWebErrorView,
|
|
457
472
|
DEFAULT_VIEWS_DIRECTORY,
|
|
@@ -459,26 +474,6 @@ import {
|
|
|
459
474
|
errorTemplateName,
|
|
460
475
|
resolveWebLayoutData
|
|
461
476
|
} from "@getstrata/core/view";
|
|
462
|
-
|
|
463
|
-
// ../../src/config/frontend.ts
|
|
464
|
-
function readFrontendMode() {
|
|
465
|
-
const mode = (process.env.FRONTEND_MODE ?? "api").trim();
|
|
466
|
-
if (mode === "server-htmx") {
|
|
467
|
-
return "server-htmx";
|
|
468
|
-
}
|
|
469
|
-
if (mode === "spa-react") {
|
|
470
|
-
return "spa-react";
|
|
471
|
-
}
|
|
472
|
-
return "api";
|
|
473
|
-
}
|
|
474
|
-
function isViewsEnabled() {
|
|
475
|
-
return readFrontendMode() === "server-htmx";
|
|
476
|
-
}
|
|
477
|
-
function isSpaEnabled() {
|
|
478
|
-
return readFrontendMode() === "spa-react";
|
|
479
|
-
}
|
|
480
|
-
|
|
481
|
-
// ../../src/bootstrap/providers/view.ts
|
|
482
477
|
var CORE_VIEW_TOKEN = "core.view";
|
|
483
478
|
var VIEW_DIRECTORY_CONFIG_KEY = "view.directory";
|
|
484
479
|
var viewProvider = {
|
|
@@ -30,30 +30,14 @@ import { createRequireWebAuthMiddleware } from "@getstrata/core/http/requireWebA
|
|
|
30
30
|
import { withErrorHandling } from "@getstrata/core/http/response";
|
|
31
31
|
import { withMiddleware } from "@getstrata/core/http/routeMiddleware";
|
|
32
32
|
import { createSecurityHeadersMiddleware } from "@getstrata/core/http/securityHeadersMiddleware";
|
|
33
|
+
import { createValidateSignatureMiddleware } from "@getstrata/core/http/signedUrl";
|
|
33
34
|
import { createThrottleMiddleware } from "@getstrata/core/http/throttleMiddleware";
|
|
34
35
|
import { createRequestLoggingMiddleware } from "@getstrata/core/logging/requestLoggingMiddleware";
|
|
36
|
+
import { isViewsEnabled } from "@getstrata/core/runtime/frontendMode";
|
|
35
37
|
import { isPublicReadsEnabled } from "@getstrata/core/security/publicReads";
|
|
36
38
|
import { createTenantMiddleware } from "@getstrata/core/tenant/tenantMiddleware";
|
|
37
39
|
import { createTracingMiddleware } from "@getstrata/core/tracing/tracingMiddleware";
|
|
38
40
|
|
|
39
|
-
// ../../src/config/frontend.ts
|
|
40
|
-
function readFrontendMode() {
|
|
41
|
-
const mode = (process.env.FRONTEND_MODE ?? "api").trim();
|
|
42
|
-
if (mode === "server-htmx") {
|
|
43
|
-
return "server-htmx";
|
|
44
|
-
}
|
|
45
|
-
if (mode === "spa-react") {
|
|
46
|
-
return "spa-react";
|
|
47
|
-
}
|
|
48
|
-
return "api";
|
|
49
|
-
}
|
|
50
|
-
function isViewsEnabled() {
|
|
51
|
-
return readFrontendMode() === "server-htmx";
|
|
52
|
-
}
|
|
53
|
-
function isSpaEnabled() {
|
|
54
|
-
return readFrontendMode() === "spa-react";
|
|
55
|
-
}
|
|
56
|
-
|
|
57
41
|
// ../../src/config/rateLimit.ts
|
|
58
42
|
var LOCAL_LOGIN_RATE_LIMIT = {
|
|
59
43
|
maxAttempts: 100,
|
|
@@ -245,6 +229,9 @@ class HttpKernel {
|
|
|
245
229
|
wrapLogin(handler) {
|
|
246
230
|
return this.wrapThrottle("login", resolveLoginRateLimit(), handler);
|
|
247
231
|
}
|
|
232
|
+
wrapSigned(handler) {
|
|
233
|
+
return withMiddleware(createValidateSignatureMiddleware())(handler);
|
|
234
|
+
}
|
|
248
235
|
wrapRegister(handler) {
|
|
249
236
|
return this.wrapThrottle("register", resolveRegisterRateLimit(), handler);
|
|
250
237
|
}
|
package/dist/index.js
CHANGED
|
@@ -38,27 +38,14 @@ import { createRequireWebAuthMiddleware } from "@getstrata/core/http/requireWebA
|
|
|
38
38
|
import { withErrorHandling } from "@getstrata/core/http/response";
|
|
39
39
|
import { withMiddleware } from "@getstrata/core/http/routeMiddleware";
|
|
40
40
|
import { createSecurityHeadersMiddleware } from "@getstrata/core/http/securityHeadersMiddleware";
|
|
41
|
+
import { createValidateSignatureMiddleware } from "@getstrata/core/http/signedUrl";
|
|
41
42
|
import { createThrottleMiddleware } from "@getstrata/core/http/throttleMiddleware";
|
|
42
43
|
import { createRequestLoggingMiddleware } from "@getstrata/core/logging/requestLoggingMiddleware";
|
|
44
|
+
import { isViewsEnabled } from "@getstrata/core/runtime/frontendMode";
|
|
43
45
|
import { isPublicReadsEnabled } from "@getstrata/core/security/publicReads";
|
|
44
46
|
import { createTenantMiddleware } from "@getstrata/core/tenant/tenantMiddleware";
|
|
45
47
|
import { createTracingMiddleware } from "@getstrata/core/tracing/tracingMiddleware";
|
|
46
48
|
|
|
47
|
-
// ../../src/config/frontend.ts
|
|
48
|
-
function readFrontendMode() {
|
|
49
|
-
const mode = (process.env.FRONTEND_MODE ?? "api").trim();
|
|
50
|
-
if (mode === "server-htmx") {
|
|
51
|
-
return "server-htmx";
|
|
52
|
-
}
|
|
53
|
-
if (mode === "spa-react") {
|
|
54
|
-
return "spa-react";
|
|
55
|
-
}
|
|
56
|
-
return "api";
|
|
57
|
-
}
|
|
58
|
-
function isViewsEnabled() {
|
|
59
|
-
return readFrontendMode() === "server-htmx";
|
|
60
|
-
}
|
|
61
|
-
|
|
62
49
|
// ../../src/config/rateLimit.ts
|
|
63
50
|
var LOCAL_LOGIN_RATE_LIMIT = {
|
|
64
51
|
maxAttempts: 100,
|
|
@@ -249,6 +236,9 @@ class HttpKernel {
|
|
|
249
236
|
wrapLogin(handler) {
|
|
250
237
|
return this.wrapThrottle("login", resolveLoginRateLimit(), handler);
|
|
251
238
|
}
|
|
239
|
+
wrapSigned(handler) {
|
|
240
|
+
return withMiddleware(createValidateSignatureMiddleware())(handler);
|
|
241
|
+
}
|
|
252
242
|
wrapRegister(handler) {
|
|
253
243
|
return this.wrapThrottle("register", resolveRegisterRateLimit(), handler);
|
|
254
244
|
}
|
|
@@ -538,13 +528,28 @@ var appConfig = {
|
|
|
538
528
|
apiPrefix: process.env.API_PREFIX ?? "/api/v1"
|
|
539
529
|
};
|
|
540
530
|
|
|
541
|
-
// ../../src/
|
|
531
|
+
// ../../src/core/queue/queueConfig.ts
|
|
532
|
+
function resolveQueueConfig() {
|
|
533
|
+
const driver = process.env.QUEUE_DRIVER;
|
|
534
|
+
const maxAttempts = Number(process.env.QUEUE_MAX_ATTEMPTS ?? "3");
|
|
535
|
+
const backoffMs = Number(process.env.QUEUE_BACKOFF_MS ?? "1000");
|
|
536
|
+
return {
|
|
537
|
+
driver: driver === "redis" || driver === "async" || driver === "sync" ? driver : "sync",
|
|
538
|
+
maxAttempts: Number.isFinite(maxAttempts) && maxAttempts > 0 ? maxAttempts : 3,
|
|
539
|
+
backoffMs: Number.isFinite(backoffMs) && backoffMs >= 0 ? backoffMs : 1000
|
|
540
|
+
};
|
|
541
|
+
}
|
|
542
542
|
var queueConfig = {
|
|
543
|
-
driver
|
|
544
|
-
|
|
545
|
-
|
|
543
|
+
get driver() {
|
|
544
|
+
return resolveQueueConfig().driver;
|
|
545
|
+
},
|
|
546
|
+
get maxAttempts() {
|
|
547
|
+
return resolveQueueConfig().maxAttempts;
|
|
548
|
+
},
|
|
549
|
+
get backoffMs() {
|
|
550
|
+
return resolveQueueConfig().backoffMs;
|
|
551
|
+
}
|
|
546
552
|
};
|
|
547
|
-
|
|
548
553
|
// ../../src/bootstrap/env.ts
|
|
549
554
|
import { defineEnvSchema } from "@getstrata/core/config/envSchema";
|
|
550
555
|
var appEnvSchema = defineEnvSchema({
|
|
@@ -808,6 +813,7 @@ var storage_default = storageProvider;
|
|
|
808
813
|
|
|
809
814
|
// ../../src/bootstrap/providers/view.ts
|
|
810
815
|
import { currentRequestMeta } from "@getstrata/core/http/requestMetaContext";
|
|
816
|
+
import { isViewsEnabled as isViewsEnabled2 } from "@getstrata/core/runtime/frontendMode";
|
|
811
817
|
import {
|
|
812
818
|
configureWebErrorView,
|
|
813
819
|
DEFAULT_VIEWS_DIRECTORY,
|
|
@@ -820,7 +826,7 @@ var VIEW_DIRECTORY_CONFIG_KEY = "view.directory";
|
|
|
820
826
|
var viewProvider = {
|
|
821
827
|
name: "view",
|
|
822
828
|
register({ container, config }) {
|
|
823
|
-
if (!
|
|
829
|
+
if (!isViewsEnabled2()) {
|
|
824
830
|
return;
|
|
825
831
|
}
|
|
826
832
|
const viewsDirectory = process.env.VIEW_DIRECTORY?.trim() || DEFAULT_VIEWS_DIRECTORY;
|
|
@@ -884,6 +890,7 @@ function createAppContext() {
|
|
|
884
890
|
}
|
|
885
891
|
// ../../src/bootstrap/createWebRoutes.ts
|
|
886
892
|
import { join as join3 } from "path";
|
|
893
|
+
import { isViewsEnabled as isViewsEnabled3 } from "@getstrata/core/runtime/frontendMode";
|
|
887
894
|
import { notFoundHtmlResponse } from "@getstrata/core/view";
|
|
888
895
|
function registerRoute(method, path, middleware) {
|
|
889
896
|
routeRegistry.register({ method, path, middleware });
|
|
@@ -910,7 +917,7 @@ function createWebRoutes(dependencies) {
|
|
|
910
917
|
return wrappedRoutes;
|
|
911
918
|
}
|
|
912
919
|
function mergeWebRoutes(dependencies, routes) {
|
|
913
|
-
if (!
|
|
920
|
+
if (!isViewsEnabled3()) {
|
|
914
921
|
return routes;
|
|
915
922
|
}
|
|
916
923
|
return {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@getstrata/bootstrap",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.55",
|
|
4
4
|
"description": "Strata application bootstrap — HttpKernel, DI, web session helpers",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -173,14 +173,14 @@
|
|
|
173
173
|
"build:bundle": "bun build index.ts --outdir dist --target bun --external bun --external eta --external @getstrata/core",
|
|
174
174
|
"build:types": "tsc -p tsconfig.types.json && bun ../../scripts/prune-bootstrap-dist-types.ts",
|
|
175
175
|
"prepublishOnly": "bun run build",
|
|
176
|
-
"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/bunSql --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/contentSecurityPolicy --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/safeInternalPath --external @getstrata/core/http/signedUrl --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/exportAuditLogsJob --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/mail/sanitizeMailHtml --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
|
+
"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/bunSql --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/contentSecurityPolicy --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/safeInternalPath --external @getstrata/core/http/signedUrl --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/exportAuditLogsJob --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/mail/sanitizeMailHtml --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/appKeyPrefix --external @getstrata/core/runtime/frontendMode --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",
|
|
177
177
|
"build:shims": "true"
|
|
178
178
|
},
|
|
179
179
|
"publishConfig": {
|
|
180
180
|
"access": "public"
|
|
181
181
|
},
|
|
182
182
|
"peerDependencies": {
|
|
183
|
-
"@getstrata/core": "^0.5.
|
|
183
|
+
"@getstrata/core": "^0.5.68",
|
|
184
184
|
"typescript": "^5.9.0"
|
|
185
185
|
}
|
|
186
186
|
}
|