@getstrata/core 2.2.33 → 2.2.34

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.
@@ -147,9 +147,54 @@ function resolveAbilitiesForRole(role) {
147
147
  return [...MEMBER_ABILITIES];
148
148
  }
149
149
 
150
+ // ../../src/core/auth/accountState.ts
151
+ function isAccountActive(record) {
152
+ return record.is_active === undefined || record.is_active === true;
153
+ }
154
+ function isAuthUserActive(user) {
155
+ return user.isActive === undefined || user.isActive === true;
156
+ }
157
+ function matchesAuthVersion(issued, current) {
158
+ if (current === undefined)
159
+ return true;
160
+ return Number.isSafeInteger(current) && current >= 0 && typeof issued === "number" && Number.isSafeInteger(issued) && issued >= 0 && issued === current;
161
+ }
162
+
150
163
  // ../../src/core/auth/sessionCookie.ts
151
164
  import { createHmac, timingSafeEqual } from "crypto";
152
165
 
166
+ // ../../src/core/http/cookies.ts
167
+ function readRequestCookie(request, name) {
168
+ const cookies = request.cookies;
169
+ if (cookies && typeof cookies.get === "function") {
170
+ const value = cookies.get(name);
171
+ if (value) {
172
+ return value;
173
+ }
174
+ }
175
+ const header = request.headers.get("cookie");
176
+ if (!header) {
177
+ return null;
178
+ }
179
+ for (const part of header.split(";")) {
180
+ const idx = part.indexOf("=");
181
+ if (idx === -1)
182
+ continue;
183
+ const cookieName = part.slice(0, idx).trim();
184
+ if (cookieName !== name)
185
+ continue;
186
+ try {
187
+ return decodeURIComponent(part.slice(idx + 1).trim());
188
+ } catch {
189
+ return null;
190
+ }
191
+ }
192
+ return null;
193
+ }
194
+ function readBunRequestCookie(request, name) {
195
+ return request.cookies.get(name) ?? readRequestCookie(request, name);
196
+ }
197
+
153
198
  // ../../src/core/runtime/appEnv.ts
154
199
  var NON_PRODUCTION_APP_ENVS = new Set(["local", "development", "dev", "test", "testing", "ci"]);
155
200
  function normalizeEnvValue(value) {
@@ -256,25 +301,12 @@ function sessionRememberTtlSeconds() {
256
301
  function resolveSessionSecret() {
257
302
  return requireConfiguredSecret(["SESSION_SECRET"], "session-secret");
258
303
  }
259
- function signSession(userId, issuedAt, ttlSeconds) {
260
- const payload = ttlSeconds === undefined ? `${userId}.${issuedAt}` : `${userId}.${issuedAt}.${ttlSeconds}`;
304
+ function signSession(userId, issuedAt, ttlSeconds, authVersion) {
305
+ const payload = authVersion !== undefined ? `v2.${userId}.${issuedAt}.${ttlSeconds}.${authVersion}` : ttlSeconds === undefined ? `${userId}.${issuedAt}` : `${userId}.${issuedAt}.${ttlSeconds}`;
261
306
  const signature = createHmac("sha256", resolveSessionSecret()).update(payload).digest("hex");
262
307
  return `${payload}.${signature}`;
263
308
  }
264
- function readCookieValue(request, cookieName) {
265
- const cookieHeader = request.headers.get("cookie");
266
- if (!cookieHeader) {
267
- return null;
268
- }
269
- for (const part of cookieHeader.split(";")) {
270
- const [name, ...rest] = part.trim().split("=");
271
- if (name === cookieName) {
272
- return decodeURIComponent(rest.join("="));
273
- }
274
- }
275
- return null;
276
- }
277
- function readSignedSession(userIdRaw, issuedAtRaw, cookieSignature, ttlSeconds, remember) {
309
+ function readSignedSession(userIdRaw, issuedAtRaw, cookieSignature, ttlSeconds, remember, authVersion) {
278
310
  const userId = Number.parseInt(userIdRaw, 10);
279
311
  const issuedAt = Number.parseInt(issuedAtRaw, 10);
280
312
  if (!Number.isInteger(userId) || userId <= 0 || !Number.isFinite(issuedAt)) {
@@ -286,7 +318,7 @@ function readSignedSession(userIdRaw, issuedAtRaw, cookieSignature, ttlSeconds,
286
318
  if (Date.now() - issuedAt > ttlSeconds * 1000) {
287
319
  return null;
288
320
  }
289
- const expectedSignature = (remember ? signSession(userId, issuedAt, ttlSeconds) : signSession(userId, issuedAt)).split(".").pop();
321
+ const expectedSignature = (authVersion !== undefined ? signSession(userId, issuedAt, ttlSeconds, authVersion) : remember ? signSession(userId, issuedAt, ttlSeconds) : signSession(userId, issuedAt)).split(".").pop();
290
322
  if (!expectedSignature || !cookieSignature) {
291
323
  return null;
292
324
  }
@@ -298,14 +330,20 @@ function readSignedSession(userIdRaw, issuedAtRaw, cookieSignature, ttlSeconds,
298
330
  if (!timingSafeEqual(expectedBuffer, actualBuffer)) {
299
331
  return null;
300
332
  }
301
- return { userId, issuedAt };
333
+ return { userId, issuedAt, ...authVersion !== undefined ? { authVersion } : {} };
302
334
  }
303
335
  function readSession(request) {
304
- const cookieValue = readCookieValue(request, sessionCookieName());
336
+ const cookieValue = readRequestCookie(request, sessionCookieName());
305
337
  if (!cookieValue) {
306
338
  return null;
307
339
  }
308
340
  const parts = cookieValue.split(".");
341
+ if (parts.length === 6 && parts[0] === "v2") {
342
+ const fields = parts.slice(1, 5);
343
+ if (fields.some((value) => !/^(0|[1-9][0-9]*)$/.test(value) || !Number.isSafeInteger(Number(value))))
344
+ return null;
345
+ return readSignedSession(String(parts[1]), String(parts[2]), parts[5], Number(parts[3]), true, Number(parts[4]));
346
+ }
309
347
  if (parts.length === 4) {
310
348
  const [userIdRaw, issuedAtRaw, ttlRaw, cookieSignature] = parts;
311
349
  return readSignedSession(String(userIdRaw), String(issuedAtRaw), cookieSignature, Number.parseInt(String(ttlRaw), 10), true);
@@ -330,15 +368,18 @@ function isSessionInvalidated(issuedAt, validAfter) {
330
368
  return issuedAt < timestamp;
331
369
  }
332
370
  function createSessionCookieDetails(userId, options = {}) {
371
+ if (options.authVersion !== undefined && (!Number.isSafeInteger(options.authVersion) || options.authVersion < 0))
372
+ throw new RangeError("authVersion must be a non-negative safe integer.");
333
373
  const issuedAt = Date.now();
334
374
  const ttlSeconds = options.remember ? sessionRememberTtlSeconds() : sessionTtlSeconds();
335
- const value = options.remember ? signSession(userId, issuedAt, ttlSeconds) : signSession(userId, issuedAt);
375
+ const value = options.authVersion !== undefined ? signSession(userId, issuedAt, ttlSeconds, options.authVersion) : options.remember ? signSession(userId, issuedAt, ttlSeconds) : signSession(userId, issuedAt);
336
376
  const secure = isProductionEnv() ? "; Secure" : "";
337
377
  return {
338
378
  header: `${sessionCookieName()}=${encodeURIComponent(value)}; Path=/; HttpOnly; SameSite=Lax; Max-Age=${ttlSeconds}${secure}`,
339
379
  userId,
340
380
  issuedAt,
341
- ttlSeconds
381
+ ttlSeconds,
382
+ ...options.authVersion !== undefined ? { authVersion: options.authVersion } : {}
342
383
  };
343
384
  }
344
385
  function createSessionCookie(userId, options = {}) {
@@ -366,7 +407,9 @@ class SessionGuard {
366
407
  }
367
408
  try {
368
409
  const user = await tokenService.findByIdOrThrow(session.userId);
369
- if (isSessionInvalidated(session.issuedAt, user.session_valid_after)) {
410
+ if (!isAccountActive(user) || !matchesAuthVersion(session.authVersion, user.auth_version))
411
+ return null;
412
+ if (user.auth_version === undefined && isSessionInvalidated(session.issuedAt, user.session_valid_after)) {
370
413
  return null;
371
414
  }
372
415
  if (typeof tokenService.hasActiveBrowserSession === "function") {
@@ -378,6 +421,7 @@ class SessionGuard {
378
421
  return {
379
422
  id: user.id,
380
423
  role: user.role,
424
+ ...user.auth_version !== undefined ? { authVersion: user.auth_version } : {},
381
425
  abilities: resolveAbilitiesForRole(user.role),
382
426
  emailVerifiedAt: user.email_verified_at ?? null
383
427
  };
@@ -19,7 +19,11 @@ function readRequestCookie(request, name) {
19
19
  const cookieName = part.slice(0, idx).trim();
20
20
  if (cookieName !== name)
21
21
  continue;
22
- return decodeURIComponent(part.slice(idx + 1).trim());
22
+ try {
23
+ return decodeURIComponent(part.slice(idx + 1).trim());
24
+ } catch {
25
+ return null;
26
+ }
23
27
  }
24
28
  return null;
25
29
  }
@@ -139,7 +139,11 @@ function readRequestCookie(request, name) {
139
139
  const cookieName = part.slice(0, idx).trim();
140
140
  if (cookieName !== name)
141
141
  continue;
142
- return decodeURIComponent(part.slice(idx + 1).trim());
142
+ try {
143
+ return decodeURIComponent(part.slice(idx + 1).trim());
144
+ } catch {
145
+ return null;
146
+ }
143
147
  }
144
148
  return null;
145
149
  }
@@ -135,7 +135,11 @@ function readRequestCookie(request, name) {
135
135
  const cookieName = part.slice(0, idx).trim();
136
136
  if (cookieName !== name)
137
137
  continue;
138
- return decodeURIComponent(part.slice(idx + 1).trim());
138
+ try {
139
+ return decodeURIComponent(part.slice(idx + 1).trim());
140
+ } catch {
141
+ return null;
142
+ }
139
143
  }
140
144
  return null;
141
145
  }
@@ -106,7 +106,7 @@ function createRequirePasswordConfirmMiddleware() {
106
106
  return Response.redirect("/login", 302);
107
107
  }
108
108
  const userId = resolveUserId(user);
109
- if (hasFreshPasswordConfirmation(request, userId)) {
109
+ if (hasFreshPasswordConfirmation(request, userId, user.authVersion)) {
110
110
  return await next();
111
111
  }
112
112
  if (requestPrefersJson(request)) {
package/dist/index.js CHANGED
@@ -1348,6 +1348,19 @@ function readBasicCredentials(request) {
1348
1348
  // ../../src/core/auth/basicAuthGuard.ts
1349
1349
  init_databaseTenantContext();
1350
1350
 
1351
+ // ../../src/core/auth/accountState.ts
1352
+ function isAccountActive(record) {
1353
+ return record.is_active === undefined || record.is_active === true;
1354
+ }
1355
+ function isAuthUserActive(user) {
1356
+ return user.isActive === undefined || user.isActive === true;
1357
+ }
1358
+ function matchesAuthVersion(issued, current) {
1359
+ if (current === undefined)
1360
+ return true;
1361
+ return Number.isSafeInteger(current) && current >= 0 && typeof issued === "number" && Number.isSafeInteger(issued) && issued >= 0 && issued === current;
1362
+ }
1363
+
1351
1364
  // ../../src/core/auth/password.ts
1352
1365
  async function hashPassword(password) {
1353
1366
  return await Bun.password.hash(password, {
@@ -1741,6 +1754,8 @@ function parseRecoveryHashes(raw) {
1741
1754
  }
1742
1755
  }
1743
1756
  function completePasswordLogin(user, options = {}) {
1757
+ if (!isAccountActive(user))
1758
+ return { ok: false, error: "account_inactive" };
1744
1759
  if (!user.mfa_enabled) {
1745
1760
  return { ok: true };
1746
1761
  }
@@ -1804,6 +1819,8 @@ class BasicAuthGuard {
1804
1819
  return null;
1805
1820
  }
1806
1821
  const record = typeof directory.findByEmail === "function" ? await directory.findByEmail(credentials.username) : null;
1822
+ if (record && !isAccountActive(record))
1823
+ return null;
1807
1824
  if (record?.password) {
1808
1825
  if (!await verifyPassword(credentials.password, record.password)) {
1809
1826
  return null;
@@ -1821,12 +1838,13 @@ class BasicAuthGuard {
1821
1838
  return {
1822
1839
  id: record.id,
1823
1840
  role: record.role,
1841
+ ...record.auth_version !== undefined ? { authVersion: record.auth_version } : {},
1824
1842
  emailVerifiedAt: record.email_verified_at ?? null
1825
1843
  };
1826
1844
  }
1827
1845
  if (typeof directory.verifyCredentials === "function") {
1828
1846
  const user = await directory.verifyCredentials(credentials.username, credentials.password);
1829
- if (!user) {
1847
+ if (!user || !isAuthUserActive(user)) {
1830
1848
  return null;
1831
1849
  }
1832
1850
  let record = typeof directory.findByEmail === "function" ? await directory.findByEmail(credentials.username) : null;
@@ -1959,6 +1977,38 @@ function verifyJwt(token, secret) {
1959
1977
  return payload;
1960
1978
  }
1961
1979
 
1980
+ // ../../src/core/http/cookies.ts
1981
+ function readRequestCookie(request, name) {
1982
+ const cookies = request.cookies;
1983
+ if (cookies && typeof cookies.get === "function") {
1984
+ const value = cookies.get(name);
1985
+ if (value) {
1986
+ return value;
1987
+ }
1988
+ }
1989
+ const header = request.headers.get("cookie");
1990
+ if (!header) {
1991
+ return null;
1992
+ }
1993
+ for (const part of header.split(";")) {
1994
+ const idx = part.indexOf("=");
1995
+ if (idx === -1)
1996
+ continue;
1997
+ const cookieName = part.slice(0, idx).trim();
1998
+ if (cookieName !== name)
1999
+ continue;
2000
+ try {
2001
+ return decodeURIComponent(part.slice(idx + 1).trim());
2002
+ } catch {
2003
+ return null;
2004
+ }
2005
+ }
2006
+ return null;
2007
+ }
2008
+ function readBunRequestCookie(request, name) {
2009
+ return request.cookies.get(name) ?? readRequestCookie(request, name);
2010
+ }
2011
+
1962
2012
  // ../../src/core/auth/sessionCookie.ts
1963
2013
  var SESSION_COOKIE = appCookieName("session");
1964
2014
  var SESSION_TTL_SECONDS = 60 * 60 * 24 * 7;
@@ -2025,10 +2075,15 @@ class JwtGuard {
2025
2075
  } catch {
2026
2076
  return null;
2027
2077
  }
2028
- if (isSessionInvalidated(payload.iat * 1000, record.session_valid_after)) {
2078
+ if (!isAccountActive(record) || !matchesAuthVersion(payload.authVersion, record.auth_version))
2079
+ return null;
2080
+ if (record.auth_version === undefined && isSessionInvalidated(payload.iat * 1000, record.session_valid_after)) {
2029
2081
  return null;
2030
2082
  }
2031
- return authUserFromJwt(payload);
2083
+ return {
2084
+ ...authUserFromJwt(payload),
2085
+ ...record.auth_version !== undefined ? { authVersion: record.auth_version } : {}
2086
+ };
2032
2087
  }
2033
2088
  }
2034
2089
 
@@ -2074,7 +2129,7 @@ class ApiTokenGuard {
2074
2129
  if (!token || !timingSafeCompareString(token, this.options.token)) {
2075
2130
  return null;
2076
2131
  }
2077
- return this.options.user;
2132
+ return isAuthUserActive(this.options.user) ? this.options.user : null;
2078
2133
  }
2079
2134
  }
2080
2135
 
@@ -2092,7 +2147,8 @@ class DatabaseTokenGuard {
2092
2147
  if (!tokenService || typeof tokenService.resolveUserFromToken !== "function") {
2093
2148
  return null;
2094
2149
  }
2095
- return await tokenService.resolveUserFromToken(token);
2150
+ const user = await tokenService.resolveUserFromToken(token);
2151
+ return user && isAuthUserActive(user) ? user : null;
2096
2152
  }
2097
2153
  }
2098
2154
 
@@ -2104,7 +2160,7 @@ class CompositeGuard {
2104
2160
  async resolve(request) {
2105
2161
  for (const guard of this.guards) {
2106
2162
  const user = await Promise.resolve(guard.resolve(request));
2107
- if (user) {
2163
+ if (user && isAuthUserActive(user)) {
2108
2164
  return user;
2109
2165
  }
2110
2166
  }
@@ -2148,7 +2204,8 @@ class AuthManager {
2148
2204
  }
2149
2205
  async resolveWithSource(request) {
2150
2206
  if (!request) {
2151
- return { user: currentAuthUser(), credentialSource: null };
2207
+ const user = currentAuthUser();
2208
+ return { user: user && isAuthUserActive(user) ? user : null, credentialSource: null };
2152
2209
  }
2153
2210
  if (authorizationScheme(request) !== "basic") {
2154
2211
  this.basicResolutions.delete(request);
@@ -2183,6 +2240,10 @@ class AuthManager {
2183
2240
  }
2184
2241
  return user;
2185
2242
  }
2243
+ async resolveGuard(guard, request) {
2244
+ const user = await guard.resolve(request);
2245
+ return user && isAuthUserActive(user) ? user : null;
2246
+ }
2186
2247
  async authenticateRequest(request) {
2187
2248
  const scheme = authorizationScheme(request);
2188
2249
  if (scheme === "bearer") {
@@ -2191,7 +2252,7 @@ class AuthManager {
2191
2252
  return { user: fromNamed, credentialSource: "bearer" };
2192
2253
  }
2193
2254
  if (isBearerCapableGuard(this.guard)) {
2194
- const fromDefault = await Promise.resolve(this.guard.resolve(request));
2255
+ const fromDefault = await this.resolveGuard(this.guard, request);
2195
2256
  return { user: fromDefault, credentialSource: fromDefault ? "bearer" : null };
2196
2257
  }
2197
2258
  return { user: null, credentialSource: null };
@@ -2202,7 +2263,7 @@ class AuthManager {
2202
2263
  return { user: fromNamed, credentialSource: "basic" };
2203
2264
  }
2204
2265
  if (this.guard instanceof BasicAuthGuard) {
2205
- const fromDefault = await this.guard.resolve(request);
2266
+ const fromDefault = await this.resolveGuard(this.guard, request);
2206
2267
  return { user: fromDefault, credentialSource: fromDefault ? "basic" : null };
2207
2268
  }
2208
2269
  return { user: null, credentialSource: null };
@@ -2211,7 +2272,7 @@ class AuthManager {
2211
2272
  if (fromSession) {
2212
2273
  return { user: fromSession, credentialSource: "session" };
2213
2274
  }
2214
- const fromDefault = await Promise.resolve(this.guard.resolve(request));
2275
+ const fromDefault = await this.resolveGuard(this.guard, request);
2215
2276
  if (!fromDefault) {
2216
2277
  return { user: null, credentialSource: null };
2217
2278
  }
@@ -2226,7 +2287,7 @@ class AuthManager {
2226
2287
  continue;
2227
2288
  }
2228
2289
  seen.add(named);
2229
- const user = await Promise.resolve(named.resolve(request));
2290
+ const user = await this.resolveGuard(named, request);
2230
2291
  if (user) {
2231
2292
  return user;
2232
2293
  }
@@ -11743,33 +11804,6 @@ function resolveContentSecurityPolicy(response, options = {}) {
11743
11804
  }
11744
11805
  return resolveHtmlContentSecurityPolicy(options);
11745
11806
  }
11746
- // ../../src/core/http/cookies.ts
11747
- function readRequestCookie(request, name) {
11748
- const cookies = request.cookies;
11749
- if (cookies && typeof cookies.get === "function") {
11750
- const value = cookies.get(name);
11751
- if (value) {
11752
- return value;
11753
- }
11754
- }
11755
- const header = request.headers.get("cookie");
11756
- if (!header) {
11757
- return null;
11758
- }
11759
- for (const part of header.split(";")) {
11760
- const idx = part.indexOf("=");
11761
- if (idx === -1)
11762
- continue;
11763
- const cookieName = part.slice(0, idx).trim();
11764
- if (cookieName !== name)
11765
- continue;
11766
- return decodeURIComponent(part.slice(idx + 1).trim());
11767
- }
11768
- return null;
11769
- }
11770
- function readBunRequestCookie(request, name) {
11771
- return request.cookies.get(name) ?? readRequestCookie(request, name);
11772
- }
11773
11807
  // ../../src/core/http/corsMiddleware.ts
11774
11808
  function additionalHeaders(options) {
11775
11809
  const configured = process.env.CORS_ADDITIONAL_ALLOWED_HEADERS?.trim();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getstrata/core",
3
- "version": "2.2.33",
3
+ "version": "2.2.34",
4
4
  "description": "Strata Bun framework public API",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -15,6 +15,16 @@
15
15
  "import": "./dist/index.js",
16
16
  "default": "./dist/index.js"
17
17
  },
18
+ "./auth/accountState": {
19
+ "types": "./dist/core/auth/accountState.d.ts",
20
+ "import": "./dist/entries/auth/accountState.js",
21
+ "default": "./dist/entries/auth/accountState.js"
22
+ },
23
+ "./auth/accountStateMigration": {
24
+ "types": "./dist/core/auth/accountStateMigration.d.ts",
25
+ "import": "./dist/entries/auth/accountStateMigration.js",
26
+ "default": "./dist/entries/auth/accountStateMigration.js"
27
+ },
18
28
  "./auth/accessControl": {
19
29
  "types": "./dist/core/auth/accessControl.d.ts",
20
30
  "import": "./dist/entries/auth/accessControl.js",
@@ -115,6 +125,11 @@
115
125
  "import": "./dist/entries/auth/passwordLogin.js",
116
126
  "default": "./dist/entries/auth/passwordLogin.js"
117
127
  },
128
+ "./auth/pendingMfaCookie": {
129
+ "types": "./dist/core/auth/pendingMfaCookie.d.ts",
130
+ "import": "./dist/entries/auth/pendingMfaCookie.js",
131
+ "default": "./dist/entries/auth/pendingMfaCookie.js"
132
+ },
118
133
  "./auth/oneTimeToken": {
119
134
  "types": "./dist/core/auth/oneTimeToken.d.ts",
120
135
  "import": "./dist/entries/auth/oneTimeToken.js",
@@ -943,7 +958,7 @@
943
958
  "build:bundle": "bun build index.ts --outdir dist --target bun --external bun --external '@opentelemetry/*' --external eta --external mysql2 --external @node-saml/node-saml",
944
959
  "build:types": "tsc -p tsconfig.types.json",
945
960
  "prepublishOnly": "bun run build && bun ../../scripts/prepare-core-package-publish.ts",
946
- "build:subpaths": "bun build entries/auth/accessControl.ts entries/auth/abilityChecker.ts entries/auth/emailVerification.ts entries/auth/jwt.ts entries/auth/jwtGuard.ts entries/auth/basicAuthGuard.ts entries/auth/tokenAbilityChecker.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/saml/samlServiceProvider.ts entries/auth/password.ts entries/auth/passwordLogin.ts entries/auth/oneTimeToken.ts entries/auth/intendedUrlCookie.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/authUserDirectory.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/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/sqliteConnection.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/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/statelessAuth.ts entries/http/scimThrottleMiddleware.ts entries/http/securityHeadersMiddleware.ts entries/http/securedRouteModelBinding.ts entries/http/webFormRequest.ts entries/http/throttleMiddleware.ts entries/http/uploads.ts entries/http/validation.ts entries/jobs/exportAuditLogsJob.ts entries/jobs/invalidateCacheTagsJob.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/appEnv.ts entries/runtime/frontendMode.ts entries/runtime/asyncContextStore.ts entries/scheduler/osCron.ts entries/security/oauthState.ts entries/security/publicReads.ts entries/security/recoveryCodes.ts entries/security/safeFetch.ts entries/security/safePath.ts entries/security/scimTenantTokens.ts entries/security/stripeWebhook.ts entries/security/webhookSignature.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/tenant/enableTenantRls.ts entries/terminal/runShell.ts entries/tracing/tracingMiddleware.ts entries/validation/rules.ts --outdir dist --root . --target bun --external bun --external '@opentelemetry/*' --external eta --external mysql2 --external @node-saml/node-saml --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/jwt --external @getstrata/core/auth/jwtGuard --external @getstrata/core/auth/basicAuthGuard --external @getstrata/core/auth/tokenAbilityChecker --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/saml/samlServiceProvider --external @getstrata/core/auth/password --external @getstrata/core/auth/passwordLogin --external @getstrata/core/auth/oneTimeToken --external @getstrata/core/auth/intendedUrlCookie --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/authUserDirectory --external @getstrata/core/contracts/container --external @getstrata/core/contracts/di --external @getstrata/core/crypto/fieldEncryption --external @getstrata/core/crypto/fieldEncryptionRotation --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/connectionContext --external @getstrata/core/database/defaultConnection --external @getstrata/core/database/dialect --external @getstrata/core/database/mysqlConnection --external @getstrata/core/database/namedConnections --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/sqliteConnection --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/events/outbox --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/statelessAuth --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/uploads --external @getstrata/core/http/validation --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/appEnv --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/recoveryCodes --external @getstrata/core/security/safeFetch --external @getstrata/core/security/safePath --external @getstrata/core/security/safeUrl --external @getstrata/core/security/scimTenantTokens --external @getstrata/core/security/securityEvents --external @getstrata/core/security/stripeWebhook --external @getstrata/core/security/webhookSignature --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/tenant/enableTenantRls --external @getstrata/core/terminal/runShell --external @getstrata/core/tracing/traceContext --external @getstrata/core/tracing/tracingMiddleware --external @getstrata/core/validation/rules --external @getstrata/core/view",
961
+ "build:subpaths": "bun build entries/auth/accountState.ts entries/auth/accountStateMigration.ts entries/auth/accessControl.ts entries/auth/abilityChecker.ts entries/auth/emailVerification.ts entries/auth/jwt.ts entries/auth/jwtGuard.ts entries/auth/basicAuthGuard.ts entries/auth/tokenAbilityChecker.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/saml/samlServiceProvider.ts entries/auth/password.ts entries/auth/passwordLogin.ts entries/auth/pendingMfaCookie.ts entries/auth/oneTimeToken.ts entries/auth/intendedUrlCookie.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/authUserDirectory.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/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/sqliteConnection.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/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/statelessAuth.ts entries/http/scimThrottleMiddleware.ts entries/http/securityHeadersMiddleware.ts entries/http/securedRouteModelBinding.ts entries/http/webFormRequest.ts entries/http/throttleMiddleware.ts entries/http/uploads.ts entries/http/validation.ts entries/jobs/exportAuditLogsJob.ts entries/jobs/invalidateCacheTagsJob.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/appEnv.ts entries/runtime/frontendMode.ts entries/runtime/asyncContextStore.ts entries/scheduler/osCron.ts entries/security/oauthState.ts entries/security/publicReads.ts entries/security/recoveryCodes.ts entries/security/safeFetch.ts entries/security/safePath.ts entries/security/scimTenantTokens.ts entries/security/stripeWebhook.ts entries/security/webhookSignature.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/tenant/enableTenantRls.ts entries/terminal/runShell.ts entries/tracing/tracingMiddleware.ts entries/validation/rules.ts --outdir dist --root . --target bun --external bun --external '@opentelemetry/*' --external eta --external mysql2 --external @node-saml/node-saml --external @getstrata/core --external @getstrata/core/auth/accountState --external @getstrata/core/auth/accountStateMigration --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/jwt --external @getstrata/core/auth/jwtGuard --external @getstrata/core/auth/basicAuthGuard --external @getstrata/core/auth/tokenAbilityChecker --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/saml/samlServiceProvider --external @getstrata/core/auth/password --external @getstrata/core/auth/passwordLogin --external @getstrata/core/auth/pendingMfaCookie --external @getstrata/core/auth/oneTimeToken --external @getstrata/core/auth/intendedUrlCookie --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/authUserDirectory --external @getstrata/core/contracts/container --external @getstrata/core/contracts/di --external @getstrata/core/crypto/fieldEncryption --external @getstrata/core/crypto/fieldEncryptionRotation --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/connectionContext --external @getstrata/core/database/defaultConnection --external @getstrata/core/database/dialect --external @getstrata/core/database/mysqlConnection --external @getstrata/core/database/namedConnections --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/sqliteConnection --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/events/outbox --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/statelessAuth --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/uploads --external @getstrata/core/http/validation --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/appEnv --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/recoveryCodes --external @getstrata/core/security/safeFetch --external @getstrata/core/security/safePath --external @getstrata/core/security/safeUrl --external @getstrata/core/security/scimTenantTokens --external @getstrata/core/security/securityEvents --external @getstrata/core/security/stripeWebhook --external @getstrata/core/security/webhookSignature --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/tenant/enableTenantRls --external @getstrata/core/terminal/runShell --external @getstrata/core/tracing/traceContext --external @getstrata/core/tracing/tracingMiddleware --external @getstrata/core/validation/rules --external @getstrata/core/view",
947
962
  "build:shims": "bun ../../scripts/write-core-shared-shims.ts"
948
963
  },
949
964
  "publishConfig": {