@getstrata/core 0.5.73 → 0.5.75
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 +9 -0
- package/README.md +1 -1
- package/dist/core/auth/authContext.d.ts +1 -0
- package/dist/core/auth/emailVerification.d.ts +5 -0
- package/dist/core/auth/passwordConfirmCookie.d.ts +8 -0
- package/dist/core/contracts/authUserDirectory.d.ts +1 -0
- package/dist/core/http/requirePasswordConfirmMiddleware.d.ts +5 -0
- package/dist/core/http/requireVerifiedMiddleware.d.ts +6 -0
- package/dist/entries/auth/emailVerification.js +12 -0
- package/dist/entries/auth/passwordConfirmCookie.js +81 -0
- package/dist/entries/auth/sessionGuard.js +2 -1
- package/dist/entries/http/requirePasswordConfirmMiddleware.js +89 -0
- package/dist/entries/http/requireVerifiedMiddleware.js +54 -0
- package/dist/index.js +3 -1
- package/package.json +22 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# @getstrata/core changelog
|
|
2
2
|
|
|
3
|
+
## 0.5.75
|
|
4
|
+
|
|
5
|
+
- Laravel `password.confirm`: `@getstrata/core/auth/passwordConfirmCookie` (`createPasswordConfirmCookie`, `hasFreshPasswordConfirmation`, `clearPasswordConfirmCookie`) and `createRequirePasswordConfirmMiddleware()` (HTML 302 `/confirm-password`, JSON 423). Cookie name `PASSWORD_CONFIRM_COOKIE_NAME` (default `workhub_password_confirmed`), TTL `PASSWORD_CONFIRM_TIMEOUT` (default 10800s).
|
|
6
|
+
|
|
7
|
+
## 0.5.74
|
|
8
|
+
|
|
9
|
+
- `AuthUser.emailVerifiedAt` and `@getstrata/core/auth/emailVerification` (`isEmailVerificationRequired`, `hasVerifiedEmail`). `null` means unverified; missing is treated as verified (GuestGuard / legacy).
|
|
10
|
+
- `createRequireVerifiedMiddleware()` is Laravel `verified` (HTML 302 `/email/verify`, JSON 403).
|
|
11
|
+
|
|
3
12
|
## 0.5.73
|
|
4
13
|
|
|
5
14
|
- OpenAPI treats `POST /auth/email/verification-notification` as a public operation (no bearer).
|
package/README.md
CHANGED
|
@@ -82,7 +82,7 @@ import type { Migration } from "@getstrata/core/database/migrations/types";
|
|
|
82
82
|
Package name: **`@getstrata/core`** (npm org [`@getstrata`](https://www.npmjs.com/org/getstrata)).
|
|
83
83
|
|
|
84
84
|
1. Add `NPM_TOKEN` to GitHub repository secrets.
|
|
85
|
-
2. Tag a release: `git tag v0.5.
|
|
85
|
+
2. Tag a release: `git tag v0.5.77 && git push origin v0.5.77`
|
|
86
86
|
3. [Release workflow](../../.github/workflows/release.yml) builds and runs `npm publish --access public`.
|
|
87
87
|
|
|
88
88
|
Previously published as `@eyk-workhub/framework@0.1.0`, deprecated in favor of this package.
|
|
@@ -3,6 +3,7 @@ type AuthUser = {
|
|
|
3
3
|
role?: string;
|
|
4
4
|
abilities?: string[];
|
|
5
5
|
tokenId?: number;
|
|
6
|
+
emailVerifiedAt?: Date | string | null;
|
|
6
7
|
};
|
|
7
8
|
declare const authContext: import("node:async_hooks").AsyncLocalStorage<AuthUser | null>;
|
|
8
9
|
declare function runWithAuthUser<T>(user: AuthUser | null, callback: () => T | Promise<T>): T | Promise<T>;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { AuthUser } from "./authContext";
|
|
2
|
+
declare function isEmailVerificationRequired(): boolean;
|
|
3
|
+
/** `null` is unverified. Missing/`undefined` (GuestGuard, legacy tokens) is treated as verified. */
|
|
4
|
+
declare function hasVerifiedEmail(user: AuthUser): boolean;
|
|
5
|
+
export { hasVerifiedEmail, isEmailVerificationRequired };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
declare const PASSWORD_CONFIRM_COOKIE = "workhub_password_confirmed";
|
|
2
|
+
declare const DEFAULT_PASSWORD_CONFIRM_TTL_SECONDS: number;
|
|
3
|
+
declare function passwordConfirmCookieName(): string;
|
|
4
|
+
declare function passwordConfirmTtlSeconds(): number;
|
|
5
|
+
declare function hasFreshPasswordConfirmation(request: Request, userId: number): boolean;
|
|
6
|
+
declare function createPasswordConfirmCookie(userId: number): string;
|
|
7
|
+
declare function clearPasswordConfirmCookie(): string;
|
|
8
|
+
export { clearPasswordConfirmCookie, createPasswordConfirmCookie, DEFAULT_PASSWORD_CONFIRM_TTL_SECONDS, hasFreshPasswordConfirmation, PASSWORD_CONFIRM_COOKIE, passwordConfirmCookieName, passwordConfirmTtlSeconds, };
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Middleware } from "./middleware";
|
|
2
|
+
declare const PASSWORD_CONFIRM_MESSAGE = "Password confirmation required.";
|
|
3
|
+
declare const PASSWORD_CONFIRM_PATH = "/confirm-password";
|
|
4
|
+
declare function createRequirePasswordConfirmMiddleware(): Middleware;
|
|
5
|
+
export { createRequirePasswordConfirmMiddleware, PASSWORD_CONFIRM_MESSAGE, PASSWORD_CONFIRM_PATH };
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { AuthManager } from "@getstrata/core/auth/guard";
|
|
2
|
+
import type { Middleware } from "./middleware";
|
|
3
|
+
declare const UNVERIFIED_MESSAGE = "Your email address is not verified.";
|
|
4
|
+
declare const VERIFY_NOTICE_PATH = "/email/verify";
|
|
5
|
+
declare function createRequireVerifiedMiddleware(auth?: AuthManager): Middleware;
|
|
6
|
+
export { createRequireVerifiedMiddleware, UNVERIFIED_MESSAGE, VERIFY_NOTICE_PATH };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
// ../../src/core/auth/emailVerification.ts
|
|
3
|
+
function isEmailVerificationRequired() {
|
|
4
|
+
return (process.env.FEATURE_EMAIL_VERIFICATION ?? "false") === "true";
|
|
5
|
+
}
|
|
6
|
+
function hasVerifiedEmail(user) {
|
|
7
|
+
return user.emailVerifiedAt !== null;
|
|
8
|
+
}
|
|
9
|
+
export {
|
|
10
|
+
hasVerifiedEmail,
|
|
11
|
+
isEmailVerificationRequired
|
|
12
|
+
};
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
// ../../src/core/auth/passwordConfirmCookie.ts
|
|
3
|
+
import { createHmac, timingSafeEqual } from "crypto";
|
|
4
|
+
var PASSWORD_CONFIRM_COOKIE = "workhub_password_confirmed";
|
|
5
|
+
var DEFAULT_PASSWORD_CONFIRM_TTL_SECONDS = 3 * 60 * 60;
|
|
6
|
+
function passwordConfirmCookieName() {
|
|
7
|
+
return process.env.PASSWORD_CONFIRM_COOKIE_NAME?.trim() || PASSWORD_CONFIRM_COOKIE;
|
|
8
|
+
}
|
|
9
|
+
function passwordConfirmTtlSeconds() {
|
|
10
|
+
const parsed = Number.parseInt(process.env.PASSWORD_CONFIRM_TIMEOUT ?? "", 10);
|
|
11
|
+
return Number.isInteger(parsed) && parsed > 0 ? parsed : DEFAULT_PASSWORD_CONFIRM_TTL_SECONDS;
|
|
12
|
+
}
|
|
13
|
+
function resolvePasswordConfirmSecret() {
|
|
14
|
+
return process.env.SESSION_SECRET?.trim() || process.env.OAUTH_STATE_SECRET?.trim() || "workhub-dev-session-secret";
|
|
15
|
+
}
|
|
16
|
+
function signPasswordConfirm(userId, confirmedAt) {
|
|
17
|
+
const payload = `${userId}.${confirmedAt}`;
|
|
18
|
+
const signature = createHmac("sha256", resolvePasswordConfirmSecret()).update(payload).digest("hex");
|
|
19
|
+
return `${payload}.${signature}`;
|
|
20
|
+
}
|
|
21
|
+
function readCookieValue(request, cookieName) {
|
|
22
|
+
const cookieHeader = request.headers.get("cookie");
|
|
23
|
+
if (!cookieHeader) {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
for (const part of cookieHeader.split(";")) {
|
|
27
|
+
const [name, ...rest] = part.trim().split("=");
|
|
28
|
+
if (name === cookieName) {
|
|
29
|
+
return decodeURIComponent(rest.join("="));
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
function hasFreshPasswordConfirmation(request, userId) {
|
|
35
|
+
const cookieValue = readCookieValue(request, passwordConfirmCookieName());
|
|
36
|
+
if (!cookieValue) {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
const parts = cookieValue.split(".");
|
|
40
|
+
if (parts.length !== 3) {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
const [userIdRaw, confirmedAtRaw, cookieSignature] = parts;
|
|
44
|
+
const cookieUserId = Number.parseInt(String(userIdRaw), 10);
|
|
45
|
+
const confirmedAt = Number.parseInt(String(confirmedAtRaw), 10);
|
|
46
|
+
if (cookieUserId !== userId || !Number.isInteger(cookieUserId) || cookieUserId <= 0 || !Number.isFinite(confirmedAt)) {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
if (Date.now() - confirmedAt > passwordConfirmTtlSeconds() * 1000) {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
const expectedSignature = signPasswordConfirm(cookieUserId, confirmedAt).split(".").pop();
|
|
53
|
+
if (!expectedSignature || !cookieSignature) {
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
const expectedBuffer = Buffer.from(expectedSignature);
|
|
57
|
+
const actualBuffer = Buffer.from(cookieSignature);
|
|
58
|
+
if (expectedBuffer.length !== actualBuffer.length) {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
return timingSafeEqual(expectedBuffer, actualBuffer);
|
|
62
|
+
}
|
|
63
|
+
function createPasswordConfirmCookie(userId) {
|
|
64
|
+
const confirmedAt = Date.now();
|
|
65
|
+
const value = signPasswordConfirm(userId, confirmedAt);
|
|
66
|
+
const secure = process.env.APP_ENV === "production" ? "; Secure" : "";
|
|
67
|
+
return `${passwordConfirmCookieName()}=${encodeURIComponent(value)}; Path=/; HttpOnly; SameSite=Lax; Max-Age=${passwordConfirmTtlSeconds()}${secure}`;
|
|
68
|
+
}
|
|
69
|
+
function clearPasswordConfirmCookie() {
|
|
70
|
+
const secure = process.env.APP_ENV === "production" ? "; Secure" : "";
|
|
71
|
+
return `${passwordConfirmCookieName()}=; Path=/; HttpOnly; SameSite=Lax; Max-Age=0${secure}`;
|
|
72
|
+
}
|
|
73
|
+
export {
|
|
74
|
+
DEFAULT_PASSWORD_CONFIRM_TTL_SECONDS,
|
|
75
|
+
PASSWORD_CONFIRM_COOKIE,
|
|
76
|
+
clearPasswordConfirmCookie,
|
|
77
|
+
createPasswordConfirmCookie,
|
|
78
|
+
hasFreshPasswordConfirmation,
|
|
79
|
+
passwordConfirmCookieName,
|
|
80
|
+
passwordConfirmTtlSeconds
|
|
81
|
+
};
|
|
@@ -173,7 +173,8 @@ class SessionGuard {
|
|
|
173
173
|
return {
|
|
174
174
|
id: user.id,
|
|
175
175
|
role: user.role,
|
|
176
|
-
abilities: resolveAbilitiesForRole(user.role)
|
|
176
|
+
abilities: resolveAbilitiesForRole(user.role),
|
|
177
|
+
emailVerifiedAt: user.email_verified_at ?? null
|
|
177
178
|
};
|
|
178
179
|
} catch {
|
|
179
180
|
return null;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
// ../../src/core/http/requirePasswordConfirmMiddleware.ts
|
|
3
|
+
import { resolveUserId } from "@getstrata/core/auth/accessControl";
|
|
4
|
+
import { currentAuthUser } from "@getstrata/core/auth/authContext";
|
|
5
|
+
import { hasFreshPasswordConfirmation } from "@getstrata/core/auth/passwordConfirmCookie";
|
|
6
|
+
|
|
7
|
+
// ../../src/core/http/contentNegotiation.ts
|
|
8
|
+
function requestPrefersJson(request) {
|
|
9
|
+
if (!request) {
|
|
10
|
+
return true;
|
|
11
|
+
}
|
|
12
|
+
if (request.headers.get("HX-Request") === "true") {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
const accept = request.headers.get("accept")?.toLowerCase() ?? "";
|
|
16
|
+
if (accept.includes("text/html")) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
if (accept.includes("application/json")) {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
const contentType = request.headers.get("content-type")?.toLowerCase() ?? "";
|
|
23
|
+
if (contentType.includes("application/x-www-form-urlencoded") || contentType.includes("multipart/form-data")) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
const pathname = new URL(request.url).pathname;
|
|
27
|
+
return pathname.startsWith("/api/");
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// ../../src/core/http/safeInternalPath.ts
|
|
31
|
+
function looksLikeExternalTarget(value) {
|
|
32
|
+
const trimmed = value.trim();
|
|
33
|
+
if (!trimmed.startsWith("/") || trimmed.startsWith("//") || trimmed.includes("\\")) {
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
if (trimmed.includes("://") || trimmed.includes(":/") || trimmed.includes(":\\")) {
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
try {
|
|
40
|
+
const decoded = decodeURIComponent(trimmed);
|
|
41
|
+
if (decoded.startsWith("//") || decoded.includes("\\") || /https?:/i.test(decoded)) {
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
} catch {
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
function sanitizeInternalPath(raw, fallback = "/") {
|
|
50
|
+
if (looksLikeExternalTarget(raw)) {
|
|
51
|
+
return fallback;
|
|
52
|
+
}
|
|
53
|
+
return raw;
|
|
54
|
+
}
|
|
55
|
+
function safeInternalRedirectPath(request, fallback = "/") {
|
|
56
|
+
const url = new URL(request.url);
|
|
57
|
+
return sanitizeInternalPath(`${url.pathname}${url.search}`, fallback);
|
|
58
|
+
}
|
|
59
|
+
function loginRedirectLocation(request) {
|
|
60
|
+
return `/login?redirect=${encodeURIComponent(safeInternalRedirectPath(request))}`;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// ../../src/core/http/requirePasswordConfirmMiddleware.ts
|
|
64
|
+
var PASSWORD_CONFIRM_MESSAGE = "Password confirmation required.";
|
|
65
|
+
var PASSWORD_CONFIRM_PATH = "/confirm-password";
|
|
66
|
+
function createRequirePasswordConfirmMiddleware() {
|
|
67
|
+
return async (request, next) => {
|
|
68
|
+
const user = currentAuthUser();
|
|
69
|
+
if (!user) {
|
|
70
|
+
return await next();
|
|
71
|
+
}
|
|
72
|
+
const userId = resolveUserId(user);
|
|
73
|
+
if (hasFreshPasswordConfirmation(request, userId)) {
|
|
74
|
+
return await next();
|
|
75
|
+
}
|
|
76
|
+
if (requestPrefersJson(request)) {
|
|
77
|
+
return Response.json({ error: PASSWORD_CONFIRM_MESSAGE }, { status: 423 });
|
|
78
|
+
}
|
|
79
|
+
const url = new URL(request.url);
|
|
80
|
+
const intended = request.method === "GET" ? `${url.pathname}${url.search}` : "/account";
|
|
81
|
+
const redirect = sanitizeInternalPath(intended, "/account");
|
|
82
|
+
return Response.redirect(`${PASSWORD_CONFIRM_PATH}?redirect=${encodeURIComponent(redirect)}`, 302);
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
export {
|
|
86
|
+
PASSWORD_CONFIRM_MESSAGE,
|
|
87
|
+
PASSWORD_CONFIRM_PATH,
|
|
88
|
+
createRequirePasswordConfirmMiddleware
|
|
89
|
+
};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
// ../../src/core/http/requireVerifiedMiddleware.ts
|
|
3
|
+
import { currentAuthUser } from "@getstrata/core/auth/authContext";
|
|
4
|
+
import {
|
|
5
|
+
hasVerifiedEmail,
|
|
6
|
+
isEmailVerificationRequired
|
|
7
|
+
} from "@getstrata/core/auth/emailVerification";
|
|
8
|
+
|
|
9
|
+
// ../../src/core/http/contentNegotiation.ts
|
|
10
|
+
function requestPrefersJson(request) {
|
|
11
|
+
if (!request) {
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
if (request.headers.get("HX-Request") === "true") {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
const accept = request.headers.get("accept")?.toLowerCase() ?? "";
|
|
18
|
+
if (accept.includes("text/html")) {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
if (accept.includes("application/json")) {
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
const contentType = request.headers.get("content-type")?.toLowerCase() ?? "";
|
|
25
|
+
if (contentType.includes("application/x-www-form-urlencoded") || contentType.includes("multipart/form-data")) {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
const pathname = new URL(request.url).pathname;
|
|
29
|
+
return pathname.startsWith("/api/");
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// ../../src/core/http/requireVerifiedMiddleware.ts
|
|
33
|
+
var UNVERIFIED_MESSAGE = "Your email address is not verified.";
|
|
34
|
+
var VERIFY_NOTICE_PATH = "/email/verify";
|
|
35
|
+
function createRequireVerifiedMiddleware(auth) {
|
|
36
|
+
return async (request, next) => {
|
|
37
|
+
if (!isEmailVerificationRequired()) {
|
|
38
|
+
return await next();
|
|
39
|
+
}
|
|
40
|
+
const user = currentAuthUser() ?? (auth ? await auth.resolve(request) : null);
|
|
41
|
+
if (!user || hasVerifiedEmail(user)) {
|
|
42
|
+
return await next();
|
|
43
|
+
}
|
|
44
|
+
if (requestPrefersJson(request)) {
|
|
45
|
+
return Response.json({ error: UNVERIFIED_MESSAGE }, { status: 403 });
|
|
46
|
+
}
|
|
47
|
+
return Response.redirect(VERIFY_NOTICE_PATH, 302);
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
export {
|
|
51
|
+
UNVERIFIED_MESSAGE,
|
|
52
|
+
VERIFY_NOTICE_PATH,
|
|
53
|
+
createRequireVerifiedMiddleware
|
|
54
|
+
};
|
package/dist/index.js
CHANGED
|
@@ -258,10 +258,12 @@ class GuestGuard {
|
|
|
258
258
|
return null;
|
|
259
259
|
}
|
|
260
260
|
const role = request.headers.get("x-authenticated-user-role");
|
|
261
|
+
const verified = request.headers.get("x-authenticated-email-verified");
|
|
261
262
|
return {
|
|
262
263
|
id: userId,
|
|
263
264
|
abilities: devHeaderAbilities(role),
|
|
264
|
-
...role ? { role } : {}
|
|
265
|
+
...role ? { role } : {},
|
|
266
|
+
...verified === "false" ? { emailVerifiedAt: null } : {}
|
|
265
267
|
};
|
|
266
268
|
}
|
|
267
269
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@getstrata/core",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.75",
|
|
4
4
|
"description": "Strata — Laravel-inspired Bun framework public API",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -30,6 +30,11 @@
|
|
|
30
30
|
"import": "./dist/entries/auth/authContext.js",
|
|
31
31
|
"default": "./dist/entries/auth/authContext.js"
|
|
32
32
|
},
|
|
33
|
+
"./auth/emailVerification": {
|
|
34
|
+
"types": "./dist/core/auth/emailVerification.d.ts",
|
|
35
|
+
"import": "./dist/entries/auth/emailVerification.js",
|
|
36
|
+
"default": "./dist/entries/auth/emailVerification.js"
|
|
37
|
+
},
|
|
33
38
|
"./auth/guard": {
|
|
34
39
|
"types": "./dist/core/auth/guard.d.ts",
|
|
35
40
|
"import": "./dist/entries/auth/guard.js",
|
|
@@ -80,6 +85,11 @@
|
|
|
80
85
|
"import": "./dist/entries/auth/password.js",
|
|
81
86
|
"default": "./dist/entries/auth/password.js"
|
|
82
87
|
},
|
|
88
|
+
"./auth/passwordConfirmCookie": {
|
|
89
|
+
"types": "./dist/core/auth/passwordConfirmCookie.d.ts",
|
|
90
|
+
"import": "./dist/entries/auth/passwordConfirmCookie.js",
|
|
91
|
+
"default": "./dist/entries/auth/passwordConfirmCookie.js"
|
|
92
|
+
},
|
|
83
93
|
"./auth/policy": {
|
|
84
94
|
"types": "./dist/core/auth/policy.d.ts",
|
|
85
95
|
"import": "./dist/entries/auth/policy.js",
|
|
@@ -455,6 +465,16 @@
|
|
|
455
465
|
"import": "./dist/entries/http/requireWebAuthMiddleware.js",
|
|
456
466
|
"default": "./dist/entries/http/requireWebAuthMiddleware.js"
|
|
457
467
|
},
|
|
468
|
+
"./http/requireVerifiedMiddleware": {
|
|
469
|
+
"types": "./dist/core/http/requireVerifiedMiddleware.d.ts",
|
|
470
|
+
"import": "./dist/entries/http/requireVerifiedMiddleware.js",
|
|
471
|
+
"default": "./dist/entries/http/requireVerifiedMiddleware.js"
|
|
472
|
+
},
|
|
473
|
+
"./http/requirePasswordConfirmMiddleware": {
|
|
474
|
+
"types": "./dist/core/http/requirePasswordConfirmMiddleware.d.ts",
|
|
475
|
+
"import": "./dist/entries/http/requirePasswordConfirmMiddleware.js",
|
|
476
|
+
"default": "./dist/entries/http/requirePasswordConfirmMiddleware.js"
|
|
477
|
+
},
|
|
458
478
|
"./http/resources": {
|
|
459
479
|
"types": "./dist/core/http/resources.d.ts",
|
|
460
480
|
"import": "./dist/entries/http/resources.js",
|
|
@@ -813,7 +833,7 @@
|
|
|
813
833
|
"build:bundle": "bun build index.ts --outdir dist --target bun --external bun --external eta",
|
|
814
834
|
"build:types": "tsc -p tsconfig.types.json",
|
|
815
835
|
"prepublishOnly": "bun run build && bun ../../scripts/prepare-core-package-publish.ts",
|
|
816
|
-
"build:subpaths": "bun build entries/auth/accessControl.ts entries/auth/abilityChecker.ts entries/auth/membershipMiddleware.ts entries/auth/membershipScope.ts entries/auth/membershipService.ts entries/auth/oauth/oidcProvider.ts entries/auth/oauth/providers.ts entries/auth/oauth/samlProvider.ts entries/auth/oauth/types.ts entries/auth/password.ts entries/auth/policy.ts entries/auth/scimAuthMiddleware.ts entries/auth/sessionCookie.ts entries/auth/sessionGuard.ts entries/auth/tokenHash.ts entries/audit/exportAuditLogs.ts entries/audit/siemFormatter.ts entries/admin/formatValue.ts entries/admin/registry.ts entries/admin/types.ts entries/cache/tags.ts entries/cache/createCacheStore.ts entries/cache/repository.ts entries/cache/simpleCache.ts entries/cache/simpleCacheStore.ts entries/config/envSchema.ts entries/contracts/serviceTokens.ts entries/contracts/container.ts entries/contracts/di.ts entries/crypto/fieldEncryption.ts entries/crypto/mfaSecret.ts entries/database/errors.ts entries/database/factory.ts entries/database/migrations.ts entries/database/migrations/types.ts entries/database/model.ts entries/database/query.ts entries/database/relationships.ts entries/database/repositoryQuery.ts entries/database/seeders.ts entries/database/seeders/types.ts entries/database/schema.ts entries/database/table.ts entries/database/types.ts entries/database/whereBuilder.ts entries/facades.ts entries/http/authMiddleware.ts entries/http/authorizeMiddleware.ts entries/http/bodySizeLimitMiddleware.ts entries/http/clientIp.ts entries/http/cookies.ts entries/http/contentNegotiation.ts entries/http/conditionalResponse.ts entries/http/corsMiddleware.ts entries/http/csrfMiddleware.ts entries/http/csrfProtection.ts entries/http/csrfToken.ts entries/http/etag.ts entries/http/flashSession.ts entries/http/flashMiddleware.ts entries/http/formRequest.ts entries/http/metricsMiddleware.ts entries/http/loginThrottleMiddleware.ts entries/http/memoryThrottleMiddleware.ts entries/http/pagination.ts entries/http/parseFormBody.ts entries/http/parseMultipartUpload.ts entries/http/requireAbilityMiddleware.ts entries/http/requireAuthMiddleware.ts entries/http/requireGlobalAdminMiddleware.ts entries/http/requireWebAuthMiddleware.ts entries/http/resources.ts entries/http/response.ts entries/http/route.ts entries/http/routeMiddleware.ts entries/http/routeModelBinding.ts entries/http/safeInternalPath.ts entries/http/signedUrl.ts entries/http/scimThrottleMiddleware.ts entries/http/securityHeadersMiddleware.ts entries/http/securedRouteModelBinding.ts entries/http/webErrorResponse.ts entries/http/webFormRequest.ts entries/http/throttleMiddleware.ts entries/http/validation.ts entries/jobs/dispatchWebhookJob.ts entries/jobs/exportAuditLogsJob.ts entries/jobs/invalidateCacheTagsJob.ts entries/lifecycle/gracefulShutdown.ts entries/logging/logger.ts entries/logging/requestLoggingMiddleware.ts entries/mail/mailer.ts entries/mail/markdownMail.ts entries/mail/markdownMailable.ts entries/mail/sanitizeMailHtml.ts entries/media/imageTransform.ts entries/metrics/prometheus.ts entries/openapi/generator.ts entries/openapi/registeredRoute.ts entries/openapi/validate.ts entries/pagination.ts entries/queue.ts entries/queue/createAppQueue.ts entries/queue/failedJobRepository.ts entries/queue/failedJobService.ts entries/queue/jobRunner.ts entries/queue/queueMetrics.ts entries/queue/publicQueue.ts entries/queue/redisQueue.ts entries/queue/types.ts entries/runtime/appKeyPrefix.ts entries/runtime/frontendMode.ts entries/runtime/asyncContextStore.ts entries/scheduler/schedule.ts entries/scheduler/osCron.ts entries/security/oauthState.ts entries/security/publicReads.ts entries/security/safeFetch.ts entries/security/safeUrl.ts entries/security/scimTenantTokens.ts entries/security/stripeWebhook.ts entries/security/timingSafeCompare.ts entries/security/tokenExpiry.ts entries/security/totp.ts entries/storage/storage.ts entries/tenant/tenancyConfig.ts entries/tenant/tenantDatabaseScope.ts entries/tenant/databaseTenantContext.ts entries/terminal/runShell.ts entries/tracing/tracingMiddleware.ts entries/validation/rules.ts entries/view.ts --outdir dist --root . --target bun --external bun --external eta --external @getstrata/core --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",
|
|
836
|
+
"build:subpaths": "bun build entries/auth/accessControl.ts entries/auth/abilityChecker.ts entries/auth/emailVerification.ts entries/auth/membershipMiddleware.ts entries/auth/membershipScope.ts entries/auth/membershipService.ts entries/auth/oauth/oidcProvider.ts entries/auth/oauth/providers.ts entries/auth/oauth/samlProvider.ts entries/auth/oauth/types.ts entries/auth/password.ts entries/auth/passwordConfirmCookie.ts entries/auth/policy.ts entries/auth/scimAuthMiddleware.ts entries/auth/sessionCookie.ts entries/auth/sessionGuard.ts entries/auth/tokenHash.ts entries/audit/exportAuditLogs.ts entries/audit/siemFormatter.ts entries/admin/formatValue.ts entries/admin/registry.ts entries/admin/types.ts entries/cache/tags.ts entries/cache/createCacheStore.ts entries/cache/repository.ts entries/cache/simpleCache.ts entries/cache/simpleCacheStore.ts entries/config/envSchema.ts entries/contracts/serviceTokens.ts entries/contracts/container.ts entries/contracts/di.ts entries/crypto/fieldEncryption.ts entries/crypto/mfaSecret.ts entries/database/errors.ts entries/database/factory.ts entries/database/migrations.ts entries/database/migrations/types.ts entries/database/model.ts entries/database/query.ts entries/database/relationships.ts entries/database/repositoryQuery.ts entries/database/seeders.ts entries/database/seeders/types.ts entries/database/schema.ts entries/database/table.ts entries/database/types.ts entries/database/whereBuilder.ts entries/facades.ts entries/http/authMiddleware.ts entries/http/authorizeMiddleware.ts entries/http/bodySizeLimitMiddleware.ts entries/http/clientIp.ts entries/http/cookies.ts entries/http/contentNegotiation.ts entries/http/conditionalResponse.ts entries/http/corsMiddleware.ts entries/http/csrfMiddleware.ts entries/http/csrfProtection.ts entries/http/csrfToken.ts entries/http/etag.ts entries/http/flashSession.ts entries/http/flashMiddleware.ts entries/http/formRequest.ts entries/http/metricsMiddleware.ts entries/http/loginThrottleMiddleware.ts entries/http/memoryThrottleMiddleware.ts entries/http/pagination.ts entries/http/parseFormBody.ts entries/http/parseMultipartUpload.ts entries/http/requireAbilityMiddleware.ts entries/http/requireAuthMiddleware.ts entries/http/requireGlobalAdminMiddleware.ts entries/http/requireWebAuthMiddleware.ts entries/http/requireVerifiedMiddleware.ts entries/http/requirePasswordConfirmMiddleware.ts entries/http/resources.ts entries/http/response.ts entries/http/route.ts entries/http/routeMiddleware.ts entries/http/routeModelBinding.ts entries/http/safeInternalPath.ts entries/http/signedUrl.ts entries/http/scimThrottleMiddleware.ts entries/http/securityHeadersMiddleware.ts entries/http/securedRouteModelBinding.ts entries/http/webErrorResponse.ts entries/http/webFormRequest.ts entries/http/throttleMiddleware.ts entries/http/validation.ts entries/jobs/dispatchWebhookJob.ts entries/jobs/exportAuditLogsJob.ts entries/jobs/invalidateCacheTagsJob.ts entries/lifecycle/gracefulShutdown.ts entries/logging/logger.ts entries/logging/requestLoggingMiddleware.ts entries/mail/mailer.ts entries/mail/markdownMail.ts entries/mail/markdownMailable.ts entries/mail/sanitizeMailHtml.ts entries/media/imageTransform.ts entries/metrics/prometheus.ts entries/openapi/generator.ts entries/openapi/registeredRoute.ts entries/openapi/validate.ts entries/pagination.ts entries/queue.ts entries/queue/createAppQueue.ts entries/queue/failedJobRepository.ts entries/queue/failedJobService.ts entries/queue/jobRunner.ts entries/queue/queueMetrics.ts entries/queue/publicQueue.ts entries/queue/redisQueue.ts entries/queue/types.ts entries/runtime/appKeyPrefix.ts entries/runtime/frontendMode.ts entries/runtime/asyncContextStore.ts entries/scheduler/schedule.ts entries/scheduler/osCron.ts entries/security/oauthState.ts entries/security/publicReads.ts entries/security/safeFetch.ts entries/security/safeUrl.ts entries/security/scimTenantTokens.ts entries/security/stripeWebhook.ts entries/security/timingSafeCompare.ts entries/security/tokenExpiry.ts entries/security/totp.ts entries/storage/storage.ts entries/tenant/tenancyConfig.ts entries/tenant/tenantDatabaseScope.ts entries/tenant/databaseTenantContext.ts entries/terminal/runShell.ts entries/tracing/tracingMiddleware.ts entries/validation/rules.ts entries/view.ts --outdir dist --root . --target bun --external bun --external eta --external @getstrata/core --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/passwordConfirmCookie --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/requirePasswordConfirmMiddleware --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",
|
|
817
837
|
"build:shims": "bun ../../scripts/write-core-shared-shims.ts"
|
|
818
838
|
},
|
|
819
839
|
"publishConfig": {
|