@getstrata/bootstrap 0.2.59 → 0.2.61
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 +7 -0
- package/dist/entries/buildModuleRoutes.js +41 -4
- package/dist/entries/buildWebModuleRoutes.js +41 -4
- package/dist/entries/createRoutes.js +41 -4
- package/dist/entries/createWebRoutes.js +41 -4
- package/dist/entries/httpKernel.js +41 -4
- package/dist/entries/web/routing.js +41 -4
- package/dist/index.js +41 -4
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# @getstrata/bootstrap changelog
|
|
2
2
|
|
|
3
|
+
## 0.2.61
|
|
4
|
+
|
|
5
|
+
- `HttpKernel.wrapVerified()` / `wrapWebVerified()` / `wrapWebAuthenticatedAllowUnverified()`. When `FEATURE_EMAIL_VERIFICATION=true`, `wrapWebAuthenticated` and `wrapWebAbility` require a verified email. Peer `@getstrata/core` `^0.5.74`.
|
|
6
|
+
|
|
7
|
+
## 0.2.60
|
|
8
|
+
|
|
9
|
+
- Peer `@getstrata/core` `^0.5.73` for public OpenAPI email verification resend.
|
|
10
|
+
|
|
3
11
|
## 0.2.59
|
|
4
12
|
|
|
5
13
|
- `HttpKernel.wrapWebGuest()` is Laravel `guest` / `RedirectIfAuthenticated`. Signed-in HTML users redirect to `/organizations` (override the home path). Peer `@getstrata/core` `^0.5.72`.
|
|
@@ -14,9 +14,14 @@ declare class HttpKernel {
|
|
|
14
14
|
wrapWebGuest(handler: RouteHandler, home?: string): RouteHandler;
|
|
15
15
|
wrapWebPublicRead(handler: RouteHandler): RouteHandler;
|
|
16
16
|
wrapWebAuthenticated(handler: RouteHandler): RouteHandler;
|
|
17
|
+
/** Signed-in HTML without Laravel `verified` (logout, verification notice). */
|
|
18
|
+
wrapWebAuthenticatedAllowUnverified(handler: RouteHandler): RouteHandler;
|
|
19
|
+
wrapWebVerified(handler: RouteHandler): RouteHandler;
|
|
17
20
|
wrapWebAbility(ability: string, handler: RouteHandler): RouteHandler;
|
|
18
21
|
wrapWebGlobalAdmin(handler: RouteHandler): RouteHandler;
|
|
19
22
|
wrapAuthenticated(handler: RouteHandler): RouteHandler;
|
|
23
|
+
/** Laravel `verified` for JSON/API routes. No-op when `FEATURE_EMAIL_VERIFICATION` is off. */
|
|
24
|
+
wrapVerified(handler: RouteHandler): RouteHandler;
|
|
20
25
|
wrapPublicRead(handler: RouteHandler): RouteHandler;
|
|
21
26
|
wrapGlobalAdmin(handler: RouteHandler): RouteHandler;
|
|
22
27
|
wrapAbility(ability: string, handler: RouteHandler): RouteHandler;
|
|
@@ -24,6 +29,8 @@ declare class HttpKernel {
|
|
|
24
29
|
wrapLogin(handler: RouteHandler): RouteHandler;
|
|
25
30
|
wrapSigned(handler: RouteHandler): RouteHandler;
|
|
26
31
|
wrapRegister(handler: RouteHandler): RouteHandler;
|
|
32
|
+
private wrapWebAuth;
|
|
33
|
+
private verifiedMiddleware;
|
|
27
34
|
private wrapThrottle;
|
|
28
35
|
}
|
|
29
36
|
declare function createHttpKernel(dependencies: AppDependencies): HttpKernel;
|
|
@@ -6,6 +6,10 @@ import { conditionalJsonResponse } from "@getstrata/core/http/conditionalRespons
|
|
|
6
6
|
import { applyMiddlewareToRoutes } from "@getstrata/core/http/middleware";
|
|
7
7
|
|
|
8
8
|
// ../../src/bootstrap/httpKernel.ts
|
|
9
|
+
import {
|
|
10
|
+
hasVerifiedEmail,
|
|
11
|
+
isEmailVerificationRequired
|
|
12
|
+
} from "@getstrata/core/auth/emailVerification";
|
|
9
13
|
import { createMembershipMiddleware } from "@getstrata/core/auth/membershipMiddleware";
|
|
10
14
|
import { resolveAbilityChecker } from "@getstrata/core/contracts/serviceTokens";
|
|
11
15
|
import { createAuthMiddleware } from "@getstrata/core/http/authMiddleware";
|
|
@@ -21,6 +25,7 @@ import { requestIdMiddleware } from "@getstrata/core/http/middleware";
|
|
|
21
25
|
import { createRequireAbilityMiddleware } from "@getstrata/core/http/requireAbilityMiddleware";
|
|
22
26
|
import { createRequireAuthMiddleware } from "@getstrata/core/http/requireAuthMiddleware";
|
|
23
27
|
import { createRequireGlobalAdminMiddleware } from "@getstrata/core/http/requireGlobalAdminMiddleware";
|
|
28
|
+
import { createRequireVerifiedMiddleware } from "@getstrata/core/http/requireVerifiedMiddleware";
|
|
24
29
|
import { createRequireWebAuthMiddleware } from "@getstrata/core/http/requireWebAuthMiddleware";
|
|
25
30
|
import { withErrorHandling } from "@getstrata/core/http/response";
|
|
26
31
|
import { withMiddleware } from "@getstrata/core/http/routeMiddleware";
|
|
@@ -180,6 +185,9 @@ class HttpKernel {
|
|
|
180
185
|
return this.wrapWeb(async (request) => {
|
|
181
186
|
const user = await auth.resolve(request);
|
|
182
187
|
if (user) {
|
|
188
|
+
if (isEmailVerificationRequired() && !hasVerifiedEmail(user)) {
|
|
189
|
+
return Response.redirect("/email/verify", 302);
|
|
190
|
+
}
|
|
183
191
|
return Response.redirect(home, 302);
|
|
184
192
|
}
|
|
185
193
|
return handler(request);
|
|
@@ -192,24 +200,41 @@ class HttpKernel {
|
|
|
192
200
|
return this.wrapWebAuthenticated(handler);
|
|
193
201
|
}
|
|
194
202
|
wrapWebAuthenticated(handler) {
|
|
195
|
-
|
|
196
|
-
|
|
203
|
+
return this.wrapWebAuth(handler, { verified: true });
|
|
204
|
+
}
|
|
205
|
+
wrapWebAuthenticatedAllowUnverified(handler) {
|
|
206
|
+
return this.wrapWebAuth(handler, { verified: false });
|
|
207
|
+
}
|
|
208
|
+
wrapWebVerified(handler) {
|
|
209
|
+
return this.wrapWebAuth(handler, { verified: true });
|
|
197
210
|
}
|
|
198
211
|
wrapWebAbility(ability, handler) {
|
|
199
212
|
const auth = this.dependencies.container.resolve(CORE_AUTH_TOKEN);
|
|
200
213
|
const abilityChecker = resolveAbilityChecker(this.dependencies.container);
|
|
201
214
|
const requireAbility = createRequireAbilityMiddleware(abilityChecker);
|
|
202
|
-
const middleware = [
|
|
215
|
+
const middleware = [
|
|
216
|
+
createRequireWebAuthMiddleware(auth),
|
|
217
|
+
...this.verifiedMiddleware(),
|
|
218
|
+
requireAbility(ability)
|
|
219
|
+
];
|
|
203
220
|
return this.wrapWeb(withMiddleware(...middleware)(handler));
|
|
204
221
|
}
|
|
205
222
|
wrapWebGlobalAdmin(handler) {
|
|
206
223
|
const auth = this.dependencies.container.resolve(CORE_AUTH_TOKEN);
|
|
207
|
-
const middleware = [
|
|
224
|
+
const middleware = [
|
|
225
|
+
createRequireWebAuthMiddleware(auth),
|
|
226
|
+
...this.verifiedMiddleware(),
|
|
227
|
+
createRequireGlobalAdminMiddleware()
|
|
228
|
+
];
|
|
208
229
|
return this.wrapWeb(withMiddleware(...middleware)(handler));
|
|
209
230
|
}
|
|
210
231
|
wrapAuthenticated(handler) {
|
|
211
232
|
return this.wrap("authenticated", handler);
|
|
212
233
|
}
|
|
234
|
+
wrapVerified(handler) {
|
|
235
|
+
const middleware = [...this.group("authenticated"), ...this.verifiedMiddleware()];
|
|
236
|
+
return withMiddleware(...middleware)(handler);
|
|
237
|
+
}
|
|
213
238
|
wrapPublicRead(handler) {
|
|
214
239
|
if (isPublicReadsEnabled()) {
|
|
215
240
|
return handler;
|
|
@@ -240,6 +265,18 @@ class HttpKernel {
|
|
|
240
265
|
wrapRegister(handler) {
|
|
241
266
|
return this.wrapThrottle("register", resolveRegisterRateLimit(), handler);
|
|
242
267
|
}
|
|
268
|
+
wrapWebAuth(handler, options) {
|
|
269
|
+
const auth = this.dependencies.container.resolve(CORE_AUTH_TOKEN);
|
|
270
|
+
const middleware = [
|
|
271
|
+
createRequireWebAuthMiddleware(auth),
|
|
272
|
+
...options.verified ? this.verifiedMiddleware() : []
|
|
273
|
+
];
|
|
274
|
+
return this.wrapWeb(withMiddleware(...middleware)(handler));
|
|
275
|
+
}
|
|
276
|
+
verifiedMiddleware() {
|
|
277
|
+
const auth = this.dependencies.container.resolve(CORE_AUTH_TOKEN);
|
|
278
|
+
return [createRequireVerifiedMiddleware(auth)];
|
|
279
|
+
}
|
|
243
280
|
wrapThrottle(scope, rateLimit, handler) {
|
|
244
281
|
const middleware = [];
|
|
245
282
|
const memoryKeyPrefix = scope === "login" ? "login-throttle:" : "register-throttle:";
|
|
@@ -9,6 +9,10 @@ import { conditionalJsonResponse } from "@getstrata/core/http/conditionalRespons
|
|
|
9
9
|
import { applyMiddlewareToRoutes } from "@getstrata/core/http/middleware";
|
|
10
10
|
|
|
11
11
|
// ../../src/bootstrap/httpKernel.ts
|
|
12
|
+
import {
|
|
13
|
+
hasVerifiedEmail,
|
|
14
|
+
isEmailVerificationRequired
|
|
15
|
+
} from "@getstrata/core/auth/emailVerification";
|
|
12
16
|
import { createMembershipMiddleware } from "@getstrata/core/auth/membershipMiddleware";
|
|
13
17
|
import { resolveAbilityChecker } from "@getstrata/core/contracts/serviceTokens";
|
|
14
18
|
import { createAuthMiddleware } from "@getstrata/core/http/authMiddleware";
|
|
@@ -24,6 +28,7 @@ import { requestIdMiddleware } from "@getstrata/core/http/middleware";
|
|
|
24
28
|
import { createRequireAbilityMiddleware } from "@getstrata/core/http/requireAbilityMiddleware";
|
|
25
29
|
import { createRequireAuthMiddleware } from "@getstrata/core/http/requireAuthMiddleware";
|
|
26
30
|
import { createRequireGlobalAdminMiddleware } from "@getstrata/core/http/requireGlobalAdminMiddleware";
|
|
31
|
+
import { createRequireVerifiedMiddleware } from "@getstrata/core/http/requireVerifiedMiddleware";
|
|
27
32
|
import { createRequireWebAuthMiddleware } from "@getstrata/core/http/requireWebAuthMiddleware";
|
|
28
33
|
import { withErrorHandling } from "@getstrata/core/http/response";
|
|
29
34
|
import { withMiddleware } from "@getstrata/core/http/routeMiddleware";
|
|
@@ -183,6 +188,9 @@ class HttpKernel {
|
|
|
183
188
|
return this.wrapWeb(async (request) => {
|
|
184
189
|
const user = await auth.resolve(request);
|
|
185
190
|
if (user) {
|
|
191
|
+
if (isEmailVerificationRequired() && !hasVerifiedEmail(user)) {
|
|
192
|
+
return Response.redirect("/email/verify", 302);
|
|
193
|
+
}
|
|
186
194
|
return Response.redirect(home, 302);
|
|
187
195
|
}
|
|
188
196
|
return handler(request);
|
|
@@ -195,24 +203,41 @@ class HttpKernel {
|
|
|
195
203
|
return this.wrapWebAuthenticated(handler);
|
|
196
204
|
}
|
|
197
205
|
wrapWebAuthenticated(handler) {
|
|
198
|
-
|
|
199
|
-
|
|
206
|
+
return this.wrapWebAuth(handler, { verified: true });
|
|
207
|
+
}
|
|
208
|
+
wrapWebAuthenticatedAllowUnverified(handler) {
|
|
209
|
+
return this.wrapWebAuth(handler, { verified: false });
|
|
210
|
+
}
|
|
211
|
+
wrapWebVerified(handler) {
|
|
212
|
+
return this.wrapWebAuth(handler, { verified: true });
|
|
200
213
|
}
|
|
201
214
|
wrapWebAbility(ability, handler) {
|
|
202
215
|
const auth = this.dependencies.container.resolve(CORE_AUTH_TOKEN);
|
|
203
216
|
const abilityChecker = resolveAbilityChecker(this.dependencies.container);
|
|
204
217
|
const requireAbility = createRequireAbilityMiddleware(abilityChecker);
|
|
205
|
-
const middleware = [
|
|
218
|
+
const middleware = [
|
|
219
|
+
createRequireWebAuthMiddleware(auth),
|
|
220
|
+
...this.verifiedMiddleware(),
|
|
221
|
+
requireAbility(ability)
|
|
222
|
+
];
|
|
206
223
|
return this.wrapWeb(withMiddleware(...middleware)(handler));
|
|
207
224
|
}
|
|
208
225
|
wrapWebGlobalAdmin(handler) {
|
|
209
226
|
const auth = this.dependencies.container.resolve(CORE_AUTH_TOKEN);
|
|
210
|
-
const middleware = [
|
|
227
|
+
const middleware = [
|
|
228
|
+
createRequireWebAuthMiddleware(auth),
|
|
229
|
+
...this.verifiedMiddleware(),
|
|
230
|
+
createRequireGlobalAdminMiddleware()
|
|
231
|
+
];
|
|
211
232
|
return this.wrapWeb(withMiddleware(...middleware)(handler));
|
|
212
233
|
}
|
|
213
234
|
wrapAuthenticated(handler) {
|
|
214
235
|
return this.wrap("authenticated", handler);
|
|
215
236
|
}
|
|
237
|
+
wrapVerified(handler) {
|
|
238
|
+
const middleware = [...this.group("authenticated"), ...this.verifiedMiddleware()];
|
|
239
|
+
return withMiddleware(...middleware)(handler);
|
|
240
|
+
}
|
|
216
241
|
wrapPublicRead(handler) {
|
|
217
242
|
if (isPublicReadsEnabled()) {
|
|
218
243
|
return handler;
|
|
@@ -243,6 +268,18 @@ class HttpKernel {
|
|
|
243
268
|
wrapRegister(handler) {
|
|
244
269
|
return this.wrapThrottle("register", resolveRegisterRateLimit(), handler);
|
|
245
270
|
}
|
|
271
|
+
wrapWebAuth(handler, options) {
|
|
272
|
+
const auth = this.dependencies.container.resolve(CORE_AUTH_TOKEN);
|
|
273
|
+
const middleware = [
|
|
274
|
+
createRequireWebAuthMiddleware(auth),
|
|
275
|
+
...options.verified ? this.verifiedMiddleware() : []
|
|
276
|
+
];
|
|
277
|
+
return this.wrapWeb(withMiddleware(...middleware)(handler));
|
|
278
|
+
}
|
|
279
|
+
verifiedMiddleware() {
|
|
280
|
+
const auth = this.dependencies.container.resolve(CORE_AUTH_TOKEN);
|
|
281
|
+
return [createRequireVerifiedMiddleware(auth)];
|
|
282
|
+
}
|
|
246
283
|
wrapThrottle(scope, rateLimit, handler) {
|
|
247
284
|
const middleware = [];
|
|
248
285
|
const memoryKeyPrefix = scope === "login" ? "login-throttle:" : "register-throttle:";
|
|
@@ -46,6 +46,10 @@ import { conditionalJsonResponse } from "@getstrata/core/http/conditionalRespons
|
|
|
46
46
|
import { applyMiddlewareToRoutes } from "@getstrata/core/http/middleware";
|
|
47
47
|
|
|
48
48
|
// ../../src/bootstrap/httpKernel.ts
|
|
49
|
+
import {
|
|
50
|
+
hasVerifiedEmail,
|
|
51
|
+
isEmailVerificationRequired
|
|
52
|
+
} from "@getstrata/core/auth/emailVerification";
|
|
49
53
|
import { createMembershipMiddleware } from "@getstrata/core/auth/membershipMiddleware";
|
|
50
54
|
import { resolveAbilityChecker } from "@getstrata/core/contracts/serviceTokens";
|
|
51
55
|
import { createAuthMiddleware } from "@getstrata/core/http/authMiddleware";
|
|
@@ -61,6 +65,7 @@ import { requestIdMiddleware } from "@getstrata/core/http/middleware";
|
|
|
61
65
|
import { createRequireAbilityMiddleware } from "@getstrata/core/http/requireAbilityMiddleware";
|
|
62
66
|
import { createRequireAuthMiddleware } from "@getstrata/core/http/requireAuthMiddleware";
|
|
63
67
|
import { createRequireGlobalAdminMiddleware } from "@getstrata/core/http/requireGlobalAdminMiddleware";
|
|
68
|
+
import { createRequireVerifiedMiddleware } from "@getstrata/core/http/requireVerifiedMiddleware";
|
|
64
69
|
import { createRequireWebAuthMiddleware } from "@getstrata/core/http/requireWebAuthMiddleware";
|
|
65
70
|
import { withErrorHandling } from "@getstrata/core/http/response";
|
|
66
71
|
import { withMiddleware } from "@getstrata/core/http/routeMiddleware";
|
|
@@ -220,6 +225,9 @@ class HttpKernel {
|
|
|
220
225
|
return this.wrapWeb(async (request) => {
|
|
221
226
|
const user = await auth.resolve(request);
|
|
222
227
|
if (user) {
|
|
228
|
+
if (isEmailVerificationRequired() && !hasVerifiedEmail(user)) {
|
|
229
|
+
return Response.redirect("/email/verify", 302);
|
|
230
|
+
}
|
|
223
231
|
return Response.redirect(home, 302);
|
|
224
232
|
}
|
|
225
233
|
return handler(request);
|
|
@@ -232,24 +240,41 @@ class HttpKernel {
|
|
|
232
240
|
return this.wrapWebAuthenticated(handler);
|
|
233
241
|
}
|
|
234
242
|
wrapWebAuthenticated(handler) {
|
|
235
|
-
|
|
236
|
-
|
|
243
|
+
return this.wrapWebAuth(handler, { verified: true });
|
|
244
|
+
}
|
|
245
|
+
wrapWebAuthenticatedAllowUnverified(handler) {
|
|
246
|
+
return this.wrapWebAuth(handler, { verified: false });
|
|
247
|
+
}
|
|
248
|
+
wrapWebVerified(handler) {
|
|
249
|
+
return this.wrapWebAuth(handler, { verified: true });
|
|
237
250
|
}
|
|
238
251
|
wrapWebAbility(ability, handler) {
|
|
239
252
|
const auth = this.dependencies.container.resolve(CORE_AUTH_TOKEN);
|
|
240
253
|
const abilityChecker = resolveAbilityChecker(this.dependencies.container);
|
|
241
254
|
const requireAbility = createRequireAbilityMiddleware(abilityChecker);
|
|
242
|
-
const middleware = [
|
|
255
|
+
const middleware = [
|
|
256
|
+
createRequireWebAuthMiddleware(auth),
|
|
257
|
+
...this.verifiedMiddleware(),
|
|
258
|
+
requireAbility(ability)
|
|
259
|
+
];
|
|
243
260
|
return this.wrapWeb(withMiddleware(...middleware)(handler));
|
|
244
261
|
}
|
|
245
262
|
wrapWebGlobalAdmin(handler) {
|
|
246
263
|
const auth = this.dependencies.container.resolve(CORE_AUTH_TOKEN);
|
|
247
|
-
const middleware = [
|
|
264
|
+
const middleware = [
|
|
265
|
+
createRequireWebAuthMiddleware(auth),
|
|
266
|
+
...this.verifiedMiddleware(),
|
|
267
|
+
createRequireGlobalAdminMiddleware()
|
|
268
|
+
];
|
|
248
269
|
return this.wrapWeb(withMiddleware(...middleware)(handler));
|
|
249
270
|
}
|
|
250
271
|
wrapAuthenticated(handler) {
|
|
251
272
|
return this.wrap("authenticated", handler);
|
|
252
273
|
}
|
|
274
|
+
wrapVerified(handler) {
|
|
275
|
+
const middleware = [...this.group("authenticated"), ...this.verifiedMiddleware()];
|
|
276
|
+
return withMiddleware(...middleware)(handler);
|
|
277
|
+
}
|
|
253
278
|
wrapPublicRead(handler) {
|
|
254
279
|
if (isPublicReadsEnabled()) {
|
|
255
280
|
return handler;
|
|
@@ -280,6 +305,18 @@ class HttpKernel {
|
|
|
280
305
|
wrapRegister(handler) {
|
|
281
306
|
return this.wrapThrottle("register", resolveRegisterRateLimit(), handler);
|
|
282
307
|
}
|
|
308
|
+
wrapWebAuth(handler, options) {
|
|
309
|
+
const auth = this.dependencies.container.resolve(CORE_AUTH_TOKEN);
|
|
310
|
+
const middleware = [
|
|
311
|
+
createRequireWebAuthMiddleware(auth),
|
|
312
|
+
...options.verified ? this.verifiedMiddleware() : []
|
|
313
|
+
];
|
|
314
|
+
return this.wrapWeb(withMiddleware(...middleware)(handler));
|
|
315
|
+
}
|
|
316
|
+
verifiedMiddleware() {
|
|
317
|
+
const auth = this.dependencies.container.resolve(CORE_AUTH_TOKEN);
|
|
318
|
+
return [createRequireVerifiedMiddleware(auth)];
|
|
319
|
+
}
|
|
283
320
|
wrapThrottle(scope, rateLimit, handler) {
|
|
284
321
|
const middleware = [];
|
|
285
322
|
const memoryKeyPrefix = scope === "login" ? "login-throttle:" : "register-throttle:";
|
|
@@ -14,6 +14,10 @@ import { conditionalJsonResponse } from "@getstrata/core/http/conditionalRespons
|
|
|
14
14
|
import { applyMiddlewareToRoutes } from "@getstrata/core/http/middleware";
|
|
15
15
|
|
|
16
16
|
// ../../src/bootstrap/httpKernel.ts
|
|
17
|
+
import {
|
|
18
|
+
hasVerifiedEmail,
|
|
19
|
+
isEmailVerificationRequired
|
|
20
|
+
} from "@getstrata/core/auth/emailVerification";
|
|
17
21
|
import { createMembershipMiddleware } from "@getstrata/core/auth/membershipMiddleware";
|
|
18
22
|
import { resolveAbilityChecker } from "@getstrata/core/contracts/serviceTokens";
|
|
19
23
|
import { createAuthMiddleware } from "@getstrata/core/http/authMiddleware";
|
|
@@ -29,6 +33,7 @@ import { requestIdMiddleware } from "@getstrata/core/http/middleware";
|
|
|
29
33
|
import { createRequireAbilityMiddleware } from "@getstrata/core/http/requireAbilityMiddleware";
|
|
30
34
|
import { createRequireAuthMiddleware } from "@getstrata/core/http/requireAuthMiddleware";
|
|
31
35
|
import { createRequireGlobalAdminMiddleware } from "@getstrata/core/http/requireGlobalAdminMiddleware";
|
|
36
|
+
import { createRequireVerifiedMiddleware } from "@getstrata/core/http/requireVerifiedMiddleware";
|
|
32
37
|
import { createRequireWebAuthMiddleware } from "@getstrata/core/http/requireWebAuthMiddleware";
|
|
33
38
|
import { withErrorHandling } from "@getstrata/core/http/response";
|
|
34
39
|
import { withMiddleware } from "@getstrata/core/http/routeMiddleware";
|
|
@@ -188,6 +193,9 @@ class HttpKernel {
|
|
|
188
193
|
return this.wrapWeb(async (request) => {
|
|
189
194
|
const user = await auth.resolve(request);
|
|
190
195
|
if (user) {
|
|
196
|
+
if (isEmailVerificationRequired() && !hasVerifiedEmail(user)) {
|
|
197
|
+
return Response.redirect("/email/verify", 302);
|
|
198
|
+
}
|
|
191
199
|
return Response.redirect(home, 302);
|
|
192
200
|
}
|
|
193
201
|
return handler(request);
|
|
@@ -200,24 +208,41 @@ class HttpKernel {
|
|
|
200
208
|
return this.wrapWebAuthenticated(handler);
|
|
201
209
|
}
|
|
202
210
|
wrapWebAuthenticated(handler) {
|
|
203
|
-
|
|
204
|
-
|
|
211
|
+
return this.wrapWebAuth(handler, { verified: true });
|
|
212
|
+
}
|
|
213
|
+
wrapWebAuthenticatedAllowUnverified(handler) {
|
|
214
|
+
return this.wrapWebAuth(handler, { verified: false });
|
|
215
|
+
}
|
|
216
|
+
wrapWebVerified(handler) {
|
|
217
|
+
return this.wrapWebAuth(handler, { verified: true });
|
|
205
218
|
}
|
|
206
219
|
wrapWebAbility(ability, handler) {
|
|
207
220
|
const auth = this.dependencies.container.resolve(CORE_AUTH_TOKEN);
|
|
208
221
|
const abilityChecker = resolveAbilityChecker(this.dependencies.container);
|
|
209
222
|
const requireAbility = createRequireAbilityMiddleware(abilityChecker);
|
|
210
|
-
const middleware = [
|
|
223
|
+
const middleware = [
|
|
224
|
+
createRequireWebAuthMiddleware(auth),
|
|
225
|
+
...this.verifiedMiddleware(),
|
|
226
|
+
requireAbility(ability)
|
|
227
|
+
];
|
|
211
228
|
return this.wrapWeb(withMiddleware(...middleware)(handler));
|
|
212
229
|
}
|
|
213
230
|
wrapWebGlobalAdmin(handler) {
|
|
214
231
|
const auth = this.dependencies.container.resolve(CORE_AUTH_TOKEN);
|
|
215
|
-
const middleware = [
|
|
232
|
+
const middleware = [
|
|
233
|
+
createRequireWebAuthMiddleware(auth),
|
|
234
|
+
...this.verifiedMiddleware(),
|
|
235
|
+
createRequireGlobalAdminMiddleware()
|
|
236
|
+
];
|
|
216
237
|
return this.wrapWeb(withMiddleware(...middleware)(handler));
|
|
217
238
|
}
|
|
218
239
|
wrapAuthenticated(handler) {
|
|
219
240
|
return this.wrap("authenticated", handler);
|
|
220
241
|
}
|
|
242
|
+
wrapVerified(handler) {
|
|
243
|
+
const middleware = [...this.group("authenticated"), ...this.verifiedMiddleware()];
|
|
244
|
+
return withMiddleware(...middleware)(handler);
|
|
245
|
+
}
|
|
221
246
|
wrapPublicRead(handler) {
|
|
222
247
|
if (isPublicReadsEnabled()) {
|
|
223
248
|
return handler;
|
|
@@ -248,6 +273,18 @@ class HttpKernel {
|
|
|
248
273
|
wrapRegister(handler) {
|
|
249
274
|
return this.wrapThrottle("register", resolveRegisterRateLimit(), handler);
|
|
250
275
|
}
|
|
276
|
+
wrapWebAuth(handler, options) {
|
|
277
|
+
const auth = this.dependencies.container.resolve(CORE_AUTH_TOKEN);
|
|
278
|
+
const middleware = [
|
|
279
|
+
createRequireWebAuthMiddleware(auth),
|
|
280
|
+
...options.verified ? this.verifiedMiddleware() : []
|
|
281
|
+
];
|
|
282
|
+
return this.wrapWeb(withMiddleware(...middleware)(handler));
|
|
283
|
+
}
|
|
284
|
+
verifiedMiddleware() {
|
|
285
|
+
const auth = this.dependencies.container.resolve(CORE_AUTH_TOKEN);
|
|
286
|
+
return [createRequireVerifiedMiddleware(auth)];
|
|
287
|
+
}
|
|
251
288
|
wrapThrottle(scope, rateLimit, handler) {
|
|
252
289
|
const middleware = [];
|
|
253
290
|
const memoryKeyPrefix = scope === "login" ? "login-throttle:" : "register-throttle:";
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
var __jsonParse = (a) => JSON.parse(a);
|
|
3
3
|
|
|
4
4
|
// ../../src/bootstrap/httpKernel.ts
|
|
5
|
+
import {
|
|
6
|
+
hasVerifiedEmail,
|
|
7
|
+
isEmailVerificationRequired
|
|
8
|
+
} from "@getstrata/core/auth/emailVerification";
|
|
5
9
|
import { createMembershipMiddleware } from "@getstrata/core/auth/membershipMiddleware";
|
|
6
10
|
import { resolveAbilityChecker } from "@getstrata/core/contracts/serviceTokens";
|
|
7
11
|
import { createAuthMiddleware } from "@getstrata/core/http/authMiddleware";
|
|
@@ -17,6 +21,7 @@ import { requestIdMiddleware } from "@getstrata/core/http/middleware";
|
|
|
17
21
|
import { createRequireAbilityMiddleware } from "@getstrata/core/http/requireAbilityMiddleware";
|
|
18
22
|
import { createRequireAuthMiddleware } from "@getstrata/core/http/requireAuthMiddleware";
|
|
19
23
|
import { createRequireGlobalAdminMiddleware } from "@getstrata/core/http/requireGlobalAdminMiddleware";
|
|
24
|
+
import { createRequireVerifiedMiddleware } from "@getstrata/core/http/requireVerifiedMiddleware";
|
|
20
25
|
import { createRequireWebAuthMiddleware } from "@getstrata/core/http/requireWebAuthMiddleware";
|
|
21
26
|
import { withErrorHandling } from "@getstrata/core/http/response";
|
|
22
27
|
import { withMiddleware } from "@getstrata/core/http/routeMiddleware";
|
|
@@ -176,6 +181,9 @@ class HttpKernel {
|
|
|
176
181
|
return this.wrapWeb(async (request) => {
|
|
177
182
|
const user = await auth.resolve(request);
|
|
178
183
|
if (user) {
|
|
184
|
+
if (isEmailVerificationRequired() && !hasVerifiedEmail(user)) {
|
|
185
|
+
return Response.redirect("/email/verify", 302);
|
|
186
|
+
}
|
|
179
187
|
return Response.redirect(home, 302);
|
|
180
188
|
}
|
|
181
189
|
return handler(request);
|
|
@@ -188,24 +196,41 @@ class HttpKernel {
|
|
|
188
196
|
return this.wrapWebAuthenticated(handler);
|
|
189
197
|
}
|
|
190
198
|
wrapWebAuthenticated(handler) {
|
|
191
|
-
|
|
192
|
-
|
|
199
|
+
return this.wrapWebAuth(handler, { verified: true });
|
|
200
|
+
}
|
|
201
|
+
wrapWebAuthenticatedAllowUnverified(handler) {
|
|
202
|
+
return this.wrapWebAuth(handler, { verified: false });
|
|
203
|
+
}
|
|
204
|
+
wrapWebVerified(handler) {
|
|
205
|
+
return this.wrapWebAuth(handler, { verified: true });
|
|
193
206
|
}
|
|
194
207
|
wrapWebAbility(ability, handler) {
|
|
195
208
|
const auth = this.dependencies.container.resolve(CORE_AUTH_TOKEN);
|
|
196
209
|
const abilityChecker = resolveAbilityChecker(this.dependencies.container);
|
|
197
210
|
const requireAbility = createRequireAbilityMiddleware(abilityChecker);
|
|
198
|
-
const middleware = [
|
|
211
|
+
const middleware = [
|
|
212
|
+
createRequireWebAuthMiddleware(auth),
|
|
213
|
+
...this.verifiedMiddleware(),
|
|
214
|
+
requireAbility(ability)
|
|
215
|
+
];
|
|
199
216
|
return this.wrapWeb(withMiddleware(...middleware)(handler));
|
|
200
217
|
}
|
|
201
218
|
wrapWebGlobalAdmin(handler) {
|
|
202
219
|
const auth = this.dependencies.container.resolve(CORE_AUTH_TOKEN);
|
|
203
|
-
const middleware = [
|
|
220
|
+
const middleware = [
|
|
221
|
+
createRequireWebAuthMiddleware(auth),
|
|
222
|
+
...this.verifiedMiddleware(),
|
|
223
|
+
createRequireGlobalAdminMiddleware()
|
|
224
|
+
];
|
|
204
225
|
return this.wrapWeb(withMiddleware(...middleware)(handler));
|
|
205
226
|
}
|
|
206
227
|
wrapAuthenticated(handler) {
|
|
207
228
|
return this.wrap("authenticated", handler);
|
|
208
229
|
}
|
|
230
|
+
wrapVerified(handler) {
|
|
231
|
+
const middleware = [...this.group("authenticated"), ...this.verifiedMiddleware()];
|
|
232
|
+
return withMiddleware(...middleware)(handler);
|
|
233
|
+
}
|
|
209
234
|
wrapPublicRead(handler) {
|
|
210
235
|
if (isPublicReadsEnabled()) {
|
|
211
236
|
return handler;
|
|
@@ -236,6 +261,18 @@ class HttpKernel {
|
|
|
236
261
|
wrapRegister(handler) {
|
|
237
262
|
return this.wrapThrottle("register", resolveRegisterRateLimit(), handler);
|
|
238
263
|
}
|
|
264
|
+
wrapWebAuth(handler, options) {
|
|
265
|
+
const auth = this.dependencies.container.resolve(CORE_AUTH_TOKEN);
|
|
266
|
+
const middleware = [
|
|
267
|
+
createRequireWebAuthMiddleware(auth),
|
|
268
|
+
...options.verified ? this.verifiedMiddleware() : []
|
|
269
|
+
];
|
|
270
|
+
return this.wrapWeb(withMiddleware(...middleware)(handler));
|
|
271
|
+
}
|
|
272
|
+
verifiedMiddleware() {
|
|
273
|
+
const auth = this.dependencies.container.resolve(CORE_AUTH_TOKEN);
|
|
274
|
+
return [createRequireVerifiedMiddleware(auth)];
|
|
275
|
+
}
|
|
239
276
|
wrapThrottle(scope, rateLimit, handler) {
|
|
240
277
|
const middleware = [];
|
|
241
278
|
const memoryKeyPrefix = scope === "login" ? "login-throttle:" : "register-throttle:";
|
|
@@ -11,6 +11,10 @@ import {
|
|
|
11
11
|
} from "@getstrata/core/http/securedRouteModelBinding";
|
|
12
12
|
|
|
13
13
|
// ../../src/bootstrap/httpKernel.ts
|
|
14
|
+
import {
|
|
15
|
+
hasVerifiedEmail,
|
|
16
|
+
isEmailVerificationRequired
|
|
17
|
+
} from "@getstrata/core/auth/emailVerification";
|
|
14
18
|
import { createMembershipMiddleware } from "@getstrata/core/auth/membershipMiddleware";
|
|
15
19
|
import { resolveAbilityChecker } from "@getstrata/core/contracts/serviceTokens";
|
|
16
20
|
import { createAuthMiddleware } from "@getstrata/core/http/authMiddleware";
|
|
@@ -26,6 +30,7 @@ import { requestIdMiddleware } from "@getstrata/core/http/middleware";
|
|
|
26
30
|
import { createRequireAbilityMiddleware } from "@getstrata/core/http/requireAbilityMiddleware";
|
|
27
31
|
import { createRequireAuthMiddleware } from "@getstrata/core/http/requireAuthMiddleware";
|
|
28
32
|
import { createRequireGlobalAdminMiddleware } from "@getstrata/core/http/requireGlobalAdminMiddleware";
|
|
33
|
+
import { createRequireVerifiedMiddleware } from "@getstrata/core/http/requireVerifiedMiddleware";
|
|
29
34
|
import { createRequireWebAuthMiddleware } from "@getstrata/core/http/requireWebAuthMiddleware";
|
|
30
35
|
import { withErrorHandling } from "@getstrata/core/http/response";
|
|
31
36
|
import { withMiddleware } from "@getstrata/core/http/routeMiddleware";
|
|
@@ -185,6 +190,9 @@ class HttpKernel {
|
|
|
185
190
|
return this.wrapWeb(async (request) => {
|
|
186
191
|
const user = await auth.resolve(request);
|
|
187
192
|
if (user) {
|
|
193
|
+
if (isEmailVerificationRequired() && !hasVerifiedEmail(user)) {
|
|
194
|
+
return Response.redirect("/email/verify", 302);
|
|
195
|
+
}
|
|
188
196
|
return Response.redirect(home, 302);
|
|
189
197
|
}
|
|
190
198
|
return handler(request);
|
|
@@ -197,24 +205,41 @@ class HttpKernel {
|
|
|
197
205
|
return this.wrapWebAuthenticated(handler);
|
|
198
206
|
}
|
|
199
207
|
wrapWebAuthenticated(handler) {
|
|
200
|
-
|
|
201
|
-
|
|
208
|
+
return this.wrapWebAuth(handler, { verified: true });
|
|
209
|
+
}
|
|
210
|
+
wrapWebAuthenticatedAllowUnverified(handler) {
|
|
211
|
+
return this.wrapWebAuth(handler, { verified: false });
|
|
212
|
+
}
|
|
213
|
+
wrapWebVerified(handler) {
|
|
214
|
+
return this.wrapWebAuth(handler, { verified: true });
|
|
202
215
|
}
|
|
203
216
|
wrapWebAbility(ability, handler) {
|
|
204
217
|
const auth = this.dependencies.container.resolve(CORE_AUTH_TOKEN);
|
|
205
218
|
const abilityChecker = resolveAbilityChecker(this.dependencies.container);
|
|
206
219
|
const requireAbility = createRequireAbilityMiddleware(abilityChecker);
|
|
207
|
-
const middleware = [
|
|
220
|
+
const middleware = [
|
|
221
|
+
createRequireWebAuthMiddleware(auth),
|
|
222
|
+
...this.verifiedMiddleware(),
|
|
223
|
+
requireAbility(ability)
|
|
224
|
+
];
|
|
208
225
|
return this.wrapWeb(withMiddleware(...middleware)(handler));
|
|
209
226
|
}
|
|
210
227
|
wrapWebGlobalAdmin(handler) {
|
|
211
228
|
const auth = this.dependencies.container.resolve(CORE_AUTH_TOKEN);
|
|
212
|
-
const middleware = [
|
|
229
|
+
const middleware = [
|
|
230
|
+
createRequireWebAuthMiddleware(auth),
|
|
231
|
+
...this.verifiedMiddleware(),
|
|
232
|
+
createRequireGlobalAdminMiddleware()
|
|
233
|
+
];
|
|
213
234
|
return this.wrapWeb(withMiddleware(...middleware)(handler));
|
|
214
235
|
}
|
|
215
236
|
wrapAuthenticated(handler) {
|
|
216
237
|
return this.wrap("authenticated", handler);
|
|
217
238
|
}
|
|
239
|
+
wrapVerified(handler) {
|
|
240
|
+
const middleware = [...this.group("authenticated"), ...this.verifiedMiddleware()];
|
|
241
|
+
return withMiddleware(...middleware)(handler);
|
|
242
|
+
}
|
|
218
243
|
wrapPublicRead(handler) {
|
|
219
244
|
if (isPublicReadsEnabled()) {
|
|
220
245
|
return handler;
|
|
@@ -245,6 +270,18 @@ class HttpKernel {
|
|
|
245
270
|
wrapRegister(handler) {
|
|
246
271
|
return this.wrapThrottle("register", resolveRegisterRateLimit(), handler);
|
|
247
272
|
}
|
|
273
|
+
wrapWebAuth(handler, options) {
|
|
274
|
+
const auth = this.dependencies.container.resolve(CORE_AUTH_TOKEN);
|
|
275
|
+
const middleware = [
|
|
276
|
+
createRequireWebAuthMiddleware(auth),
|
|
277
|
+
...options.verified ? this.verifiedMiddleware() : []
|
|
278
|
+
];
|
|
279
|
+
return this.wrapWeb(withMiddleware(...middleware)(handler));
|
|
280
|
+
}
|
|
281
|
+
verifiedMiddleware() {
|
|
282
|
+
const auth = this.dependencies.container.resolve(CORE_AUTH_TOKEN);
|
|
283
|
+
return [createRequireVerifiedMiddleware(auth)];
|
|
284
|
+
}
|
|
248
285
|
wrapThrottle(scope, rateLimit, handler) {
|
|
249
286
|
const middleware = [];
|
|
250
287
|
const memoryKeyPrefix = scope === "login" ? "login-throttle:" : "register-throttle:";
|
package/dist/index.js
CHANGED
|
@@ -19,6 +19,10 @@ import { conditionalJsonResponse } from "@getstrata/core/http/conditionalRespons
|
|
|
19
19
|
import { applyMiddlewareToRoutes } from "@getstrata/core/http/middleware";
|
|
20
20
|
|
|
21
21
|
// ../../src/bootstrap/httpKernel.ts
|
|
22
|
+
import {
|
|
23
|
+
hasVerifiedEmail,
|
|
24
|
+
isEmailVerificationRequired
|
|
25
|
+
} from "@getstrata/core/auth/emailVerification";
|
|
22
26
|
import { createMembershipMiddleware } from "@getstrata/core/auth/membershipMiddleware";
|
|
23
27
|
import { resolveAbilityChecker } from "@getstrata/core/contracts/serviceTokens";
|
|
24
28
|
import { createAuthMiddleware } from "@getstrata/core/http/authMiddleware";
|
|
@@ -34,6 +38,7 @@ import { requestIdMiddleware } from "@getstrata/core/http/middleware";
|
|
|
34
38
|
import { createRequireAbilityMiddleware } from "@getstrata/core/http/requireAbilityMiddleware";
|
|
35
39
|
import { createRequireAuthMiddleware } from "@getstrata/core/http/requireAuthMiddleware";
|
|
36
40
|
import { createRequireGlobalAdminMiddleware } from "@getstrata/core/http/requireGlobalAdminMiddleware";
|
|
41
|
+
import { createRequireVerifiedMiddleware } from "@getstrata/core/http/requireVerifiedMiddleware";
|
|
37
42
|
import { createRequireWebAuthMiddleware } from "@getstrata/core/http/requireWebAuthMiddleware";
|
|
38
43
|
import { withErrorHandling } from "@getstrata/core/http/response";
|
|
39
44
|
import { withMiddleware } from "@getstrata/core/http/routeMiddleware";
|
|
@@ -192,6 +197,9 @@ class HttpKernel {
|
|
|
192
197
|
return this.wrapWeb(async (request) => {
|
|
193
198
|
const user = await auth.resolve(request);
|
|
194
199
|
if (user) {
|
|
200
|
+
if (isEmailVerificationRequired() && !hasVerifiedEmail(user)) {
|
|
201
|
+
return Response.redirect("/email/verify", 302);
|
|
202
|
+
}
|
|
195
203
|
return Response.redirect(home, 302);
|
|
196
204
|
}
|
|
197
205
|
return handler(request);
|
|
@@ -204,24 +212,41 @@ class HttpKernel {
|
|
|
204
212
|
return this.wrapWebAuthenticated(handler);
|
|
205
213
|
}
|
|
206
214
|
wrapWebAuthenticated(handler) {
|
|
207
|
-
|
|
208
|
-
|
|
215
|
+
return this.wrapWebAuth(handler, { verified: true });
|
|
216
|
+
}
|
|
217
|
+
wrapWebAuthenticatedAllowUnverified(handler) {
|
|
218
|
+
return this.wrapWebAuth(handler, { verified: false });
|
|
219
|
+
}
|
|
220
|
+
wrapWebVerified(handler) {
|
|
221
|
+
return this.wrapWebAuth(handler, { verified: true });
|
|
209
222
|
}
|
|
210
223
|
wrapWebAbility(ability, handler) {
|
|
211
224
|
const auth = this.dependencies.container.resolve(CORE_AUTH_TOKEN);
|
|
212
225
|
const abilityChecker = resolveAbilityChecker(this.dependencies.container);
|
|
213
226
|
const requireAbility = createRequireAbilityMiddleware(abilityChecker);
|
|
214
|
-
const middleware = [
|
|
227
|
+
const middleware = [
|
|
228
|
+
createRequireWebAuthMiddleware(auth),
|
|
229
|
+
...this.verifiedMiddleware(),
|
|
230
|
+
requireAbility(ability)
|
|
231
|
+
];
|
|
215
232
|
return this.wrapWeb(withMiddleware(...middleware)(handler));
|
|
216
233
|
}
|
|
217
234
|
wrapWebGlobalAdmin(handler) {
|
|
218
235
|
const auth = this.dependencies.container.resolve(CORE_AUTH_TOKEN);
|
|
219
|
-
const middleware = [
|
|
236
|
+
const middleware = [
|
|
237
|
+
createRequireWebAuthMiddleware(auth),
|
|
238
|
+
...this.verifiedMiddleware(),
|
|
239
|
+
createRequireGlobalAdminMiddleware()
|
|
240
|
+
];
|
|
220
241
|
return this.wrapWeb(withMiddleware(...middleware)(handler));
|
|
221
242
|
}
|
|
222
243
|
wrapAuthenticated(handler) {
|
|
223
244
|
return this.wrap("authenticated", handler);
|
|
224
245
|
}
|
|
246
|
+
wrapVerified(handler) {
|
|
247
|
+
const middleware = [...this.group("authenticated"), ...this.verifiedMiddleware()];
|
|
248
|
+
return withMiddleware(...middleware)(handler);
|
|
249
|
+
}
|
|
225
250
|
wrapPublicRead(handler) {
|
|
226
251
|
if (isPublicReadsEnabled()) {
|
|
227
252
|
return handler;
|
|
@@ -252,6 +277,18 @@ class HttpKernel {
|
|
|
252
277
|
wrapRegister(handler) {
|
|
253
278
|
return this.wrapThrottle("register", resolveRegisterRateLimit(), handler);
|
|
254
279
|
}
|
|
280
|
+
wrapWebAuth(handler, options) {
|
|
281
|
+
const auth = this.dependencies.container.resolve(CORE_AUTH_TOKEN);
|
|
282
|
+
const middleware = [
|
|
283
|
+
createRequireWebAuthMiddleware(auth),
|
|
284
|
+
...options.verified ? this.verifiedMiddleware() : []
|
|
285
|
+
];
|
|
286
|
+
return this.wrapWeb(withMiddleware(...middleware)(handler));
|
|
287
|
+
}
|
|
288
|
+
verifiedMiddleware() {
|
|
289
|
+
const auth = this.dependencies.container.resolve(CORE_AUTH_TOKEN);
|
|
290
|
+
return [createRequireVerifiedMiddleware(auth)];
|
|
291
|
+
}
|
|
255
292
|
wrapThrottle(scope, rateLimit, handler) {
|
|
256
293
|
const middleware = [];
|
|
257
294
|
const memoryKeyPrefix = scope === "login" ? "login-throttle:" : "register-throttle:";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@getstrata/bootstrap",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.61",
|
|
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/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",
|
|
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/emailVerification --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/requireVerifiedMiddleware --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.74",
|
|
184
184
|
"typescript": "^5.9.0"
|
|
185
185
|
}
|
|
186
186
|
}
|