@getstrata/bootstrap 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.
- package/CHANGELOG.md +6 -0
- package/dist/bootstrap/web/session.d.ts +2 -0
- package/dist/entries/web/session.js +20 -5
- package/dist/index.js +20 -5
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# @getstrata/bootstrap changelog
|
|
2
2
|
|
|
3
|
+
## 2.2.34
|
|
4
|
+
|
|
5
|
+
Complete opt-in persisted account-state adoption: atomic SCIM suspension/reactivation and credential revocation, serialized generated password/SSO issuance, version-bound session/MFA/confirmation proofs, safe optional credential-table handling and malformed-cookie rejection. Includes explicit schema migration and upgrade instructions; installing packages alone does not rewrite existing apps.
|
|
6
|
+
|
|
7
|
+
Database-cookie stores persist and compare optional session epochs, reject inactive/invalid creation state and project the current epoch for sensitive-write fencing. Legacy stores without epoch metadata retain timestamp-watermark behavior. Cookie-session schemas must explicitly opt into the additive session column before deploying epoch-aware writers.
|
|
8
|
+
|
|
3
9
|
## 2.2.33
|
|
4
10
|
|
|
5
11
|
Fix shared tenant lookups in generated SQLite column-tenancy apps through typed repositories. Generated SCIM rejects unsupported status/profile mutations before writing and runs mutations in explicit transactions, including immediate observer rollback. Add actual SQLite and restricted Postgres HTTP regressions; full account deactivation remains unsupported and explicit.
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
// ../../src/bootstrap/web/session.ts
|
|
3
3
|
import { createHmac, randomBytes } from "crypto";
|
|
4
|
+
import { isAccountActive, matchesAuthVersion } from "@getstrata/core/auth/accountState";
|
|
4
5
|
import { AuthManager } from "@getstrata/core/auth/guard";
|
|
5
6
|
import { isSessionInvalidated } from "@getstrata/core/auth/sessionCookie";
|
|
6
7
|
import { getBoundDatabaseConnection } from "@getstrata/core/database/boundConnection";
|
|
@@ -13,6 +14,7 @@ import {
|
|
|
13
14
|
getDefaultDatabaseQuery
|
|
14
15
|
} from "@getstrata/core/database/defaultConnection";
|
|
15
16
|
import { currentSqlDialect, sqlTimestamp } from "@getstrata/core/database/dialect";
|
|
17
|
+
import { UnauthorizedError } from "@getstrata/core/errors/http";
|
|
16
18
|
import { readRequestCookie } from "@getstrata/core/http/cookies";
|
|
17
19
|
import { currentRequestMeta } from "@getstrata/core/http/requestMetaContext";
|
|
18
20
|
import { isProductionEnv } from "@getstrata/core/runtime/appEnv";
|
|
@@ -51,6 +53,7 @@ function defaultSessionSql() {
|
|
|
51
53
|
function defaultMapSessionUser(user) {
|
|
52
54
|
return {
|
|
53
55
|
id: user.id,
|
|
56
|
+
...user.auth_version !== undefined ? { authVersion: user.auth_version } : {},
|
|
54
57
|
role: user.is_admin ? "admin" : "member",
|
|
55
58
|
...user.email_verified_at !== undefined ? { emailVerifiedAt: user.email_verified_at } : {}
|
|
56
59
|
};
|
|
@@ -70,14 +73,16 @@ function mapSessionUserRow(row) {
|
|
|
70
73
|
id: Number(row.user_id ?? row.id),
|
|
71
74
|
name: sessionDisplayName(row, email),
|
|
72
75
|
email,
|
|
76
|
+
...row.auth_version !== undefined ? { auth_version: row.auth_version } : {},
|
|
73
77
|
learn_subscriber: Boolean(row.learn_subscriber),
|
|
74
78
|
is_admin: Boolean(row.is_admin),
|
|
79
|
+
...row.is_active !== undefined ? { is_active: row.is_active === true || row.is_active === 1 || row.is_active === "1" } : {},
|
|
75
80
|
...row.email_verified_at !== undefined ? { email_verified_at: row.email_verified_at } : {}
|
|
76
81
|
};
|
|
77
82
|
}
|
|
78
83
|
async function defaultLoadSessionUser(sql, sessionId) {
|
|
79
84
|
const sessionRows = await runWithMigrationBypassForIdentifier(sessionId, async () => {
|
|
80
|
-
return await sql.unsafe(`SELECT
|
|
85
|
+
return await sql.unsafe(`SELECT *, created_at AS session_created_at
|
|
81
86
|
FROM sessions
|
|
82
87
|
WHERE id = ${sqlPlaceholder(1)} AND expires_at > ${sqlNow()}`, [sessionId]);
|
|
83
88
|
});
|
|
@@ -97,7 +102,7 @@ async function defaultLoadSessionUser(sql, sessionId) {
|
|
|
97
102
|
return null;
|
|
98
103
|
const createdSource = session.session_created_at;
|
|
99
104
|
const createdAt = createdSource instanceof Date ? createdSource.getTime() : createdSource ? Date.parse(String(createdSource)) : Number.NaN;
|
|
100
|
-
if (!Number.isFinite(createdAt) || isSessionInvalidated(createdAt, row.session_valid_after)) {
|
|
105
|
+
if (row.auth_version !== undefined ? !matchesAuthVersion(session.auth_version, row.auth_version) : !Number.isFinite(createdAt) || isSessionInvalidated(createdAt, row.session_valid_after)) {
|
|
101
106
|
return null;
|
|
102
107
|
}
|
|
103
108
|
return mapSessionUserRow({ ...row, user_id: userId, session_created_at: createdSource });
|
|
@@ -154,11 +159,20 @@ class CookieSessionStore {
|
|
|
154
159
|
return resolveSql(this.sqlSource);
|
|
155
160
|
}
|
|
156
161
|
async create(user, meta = {}) {
|
|
162
|
+
if (!isAccountActive(user) || !matchesAuthVersion(user.auth_version, user.auth_version))
|
|
163
|
+
throw new UnauthorizedError;
|
|
157
164
|
const id = randomBytes(32).toString("hex");
|
|
158
165
|
const expires = new Date(Date.now() + this.maxAgeSeconds * 1000);
|
|
159
166
|
await runWithMigrationBypassForIdentifier(user.id, async () => {
|
|
160
|
-
await this.sql().unsafe(`INSERT INTO sessions (id, user_id, expires_at, user_agent, ip_address, last_active_at, created_at)
|
|
161
|
-
VALUES (${sqlPlaceholder(1)}, ${sqlPlaceholder(2)}, ${sqlPlaceholder(3)}, ${sqlPlaceholder(4)}, ${sqlPlaceholder(5)}, ${sqlNow()}, ${sqlNow()}
|
|
167
|
+
await this.sql().unsafe(`INSERT INTO sessions (id, user_id, expires_at, user_agent, ip_address, last_active_at, created_at${user.auth_version !== undefined ? ", auth_version" : ""})
|
|
168
|
+
VALUES (${sqlPlaceholder(1)}, ${sqlPlaceholder(2)}, ${sqlPlaceholder(3)}, ${sqlPlaceholder(4)}, ${sqlPlaceholder(5)}, ${sqlNow()}, ${sqlNow()}${user.auth_version !== undefined ? `, ${sqlPlaceholder(6)}` : ""})`, [
|
|
169
|
+
id,
|
|
170
|
+
user.id,
|
|
171
|
+
sqlTimestamp(expires),
|
|
172
|
+
meta.userAgent ?? null,
|
|
173
|
+
meta.ipAddress ?? null,
|
|
174
|
+
...user.auth_version !== undefined ? [user.auth_version] : []
|
|
175
|
+
]);
|
|
162
176
|
});
|
|
163
177
|
return id;
|
|
164
178
|
}
|
|
@@ -195,7 +209,8 @@ class CookieSessionStore {
|
|
|
195
209
|
const sessionId = this.sessionIdFromRequest(request);
|
|
196
210
|
if (!sessionId)
|
|
197
211
|
return null;
|
|
198
|
-
|
|
212
|
+
const user = await this.loadSessionUser(this.sql(), sessionId);
|
|
213
|
+
return user && isAccountActive(user) ? user : null;
|
|
199
214
|
}
|
|
200
215
|
sign(value) {
|
|
201
216
|
return createHmac("sha256", this.secret).update(value).digest("hex").slice(0, 32);
|
package/dist/index.js
CHANGED
|
@@ -2180,6 +2180,7 @@ function createWebServer(options) {
|
|
|
2180
2180
|
}
|
|
2181
2181
|
// ../../src/bootstrap/web/session.ts
|
|
2182
2182
|
import { createHmac, randomBytes } from "crypto";
|
|
2183
|
+
import { isAccountActive, matchesAuthVersion } from "@getstrata/core/auth/accountState";
|
|
2183
2184
|
import { AuthManager as AuthManager2 } from "@getstrata/core/auth/guard";
|
|
2184
2185
|
import { isSessionInvalidated } from "@getstrata/core/auth/sessionCookie";
|
|
2185
2186
|
import { getBoundDatabaseConnection as getBoundDatabaseConnection2 } from "@getstrata/core/database/boundConnection";
|
|
@@ -2192,6 +2193,7 @@ import {
|
|
|
2192
2193
|
getDefaultDatabaseQuery
|
|
2193
2194
|
} from "@getstrata/core/database/defaultConnection";
|
|
2194
2195
|
import { currentSqlDialect, sqlTimestamp } from "@getstrata/core/database/dialect";
|
|
2196
|
+
import { UnauthorizedError } from "@getstrata/core/errors/http";
|
|
2195
2197
|
import { readRequestCookie } from "@getstrata/core/http/cookies";
|
|
2196
2198
|
import { currentRequestMeta as currentRequestMeta3 } from "@getstrata/core/http/requestMetaContext";
|
|
2197
2199
|
import { isProductionEnv as isProductionEnv3 } from "@getstrata/core/runtime/appEnv";
|
|
@@ -2230,6 +2232,7 @@ function defaultSessionSql() {
|
|
|
2230
2232
|
function defaultMapSessionUser(user) {
|
|
2231
2233
|
return {
|
|
2232
2234
|
id: user.id,
|
|
2235
|
+
...user.auth_version !== undefined ? { authVersion: user.auth_version } : {},
|
|
2233
2236
|
role: user.is_admin ? "admin" : "member",
|
|
2234
2237
|
...user.email_verified_at !== undefined ? { emailVerifiedAt: user.email_verified_at } : {}
|
|
2235
2238
|
};
|
|
@@ -2249,14 +2252,16 @@ function mapSessionUserRow(row) {
|
|
|
2249
2252
|
id: Number(row.user_id ?? row.id),
|
|
2250
2253
|
name: sessionDisplayName(row, email),
|
|
2251
2254
|
email,
|
|
2255
|
+
...row.auth_version !== undefined ? { auth_version: row.auth_version } : {},
|
|
2252
2256
|
learn_subscriber: Boolean(row.learn_subscriber),
|
|
2253
2257
|
is_admin: Boolean(row.is_admin),
|
|
2258
|
+
...row.is_active !== undefined ? { is_active: row.is_active === true || row.is_active === 1 || row.is_active === "1" } : {},
|
|
2254
2259
|
...row.email_verified_at !== undefined ? { email_verified_at: row.email_verified_at } : {}
|
|
2255
2260
|
};
|
|
2256
2261
|
}
|
|
2257
2262
|
async function defaultLoadSessionUser(sql, sessionId) {
|
|
2258
2263
|
const sessionRows = await runWithMigrationBypassForIdentifier(sessionId, async () => {
|
|
2259
|
-
return await sql.unsafe(`SELECT
|
|
2264
|
+
return await sql.unsafe(`SELECT *, created_at AS session_created_at
|
|
2260
2265
|
FROM sessions
|
|
2261
2266
|
WHERE id = ${sqlPlaceholder(1)} AND expires_at > ${sqlNow()}`, [sessionId]);
|
|
2262
2267
|
});
|
|
@@ -2276,7 +2281,7 @@ async function defaultLoadSessionUser(sql, sessionId) {
|
|
|
2276
2281
|
return null;
|
|
2277
2282
|
const createdSource = session.session_created_at;
|
|
2278
2283
|
const createdAt = createdSource instanceof Date ? createdSource.getTime() : createdSource ? Date.parse(String(createdSource)) : Number.NaN;
|
|
2279
|
-
if (!Number.isFinite(createdAt) || isSessionInvalidated(createdAt, row.session_valid_after)) {
|
|
2284
|
+
if (row.auth_version !== undefined ? !matchesAuthVersion(session.auth_version, row.auth_version) : !Number.isFinite(createdAt) || isSessionInvalidated(createdAt, row.session_valid_after)) {
|
|
2280
2285
|
return null;
|
|
2281
2286
|
}
|
|
2282
2287
|
return mapSessionUserRow({ ...row, user_id: userId, session_created_at: createdSource });
|
|
@@ -2333,11 +2338,20 @@ class CookieSessionStore {
|
|
|
2333
2338
|
return resolveSql(this.sqlSource);
|
|
2334
2339
|
}
|
|
2335
2340
|
async create(user, meta = {}) {
|
|
2341
|
+
if (!isAccountActive(user) || !matchesAuthVersion(user.auth_version, user.auth_version))
|
|
2342
|
+
throw new UnauthorizedError;
|
|
2336
2343
|
const id = randomBytes(32).toString("hex");
|
|
2337
2344
|
const expires = new Date(Date.now() + this.maxAgeSeconds * 1000);
|
|
2338
2345
|
await runWithMigrationBypassForIdentifier(user.id, async () => {
|
|
2339
|
-
await this.sql().unsafe(`INSERT INTO sessions (id, user_id, expires_at, user_agent, ip_address, last_active_at, created_at)
|
|
2340
|
-
VALUES (${sqlPlaceholder(1)}, ${sqlPlaceholder(2)}, ${sqlPlaceholder(3)}, ${sqlPlaceholder(4)}, ${sqlPlaceholder(5)}, ${sqlNow()}, ${sqlNow()}
|
|
2346
|
+
await this.sql().unsafe(`INSERT INTO sessions (id, user_id, expires_at, user_agent, ip_address, last_active_at, created_at${user.auth_version !== undefined ? ", auth_version" : ""})
|
|
2347
|
+
VALUES (${sqlPlaceholder(1)}, ${sqlPlaceholder(2)}, ${sqlPlaceholder(3)}, ${sqlPlaceholder(4)}, ${sqlPlaceholder(5)}, ${sqlNow()}, ${sqlNow()}${user.auth_version !== undefined ? `, ${sqlPlaceholder(6)}` : ""})`, [
|
|
2348
|
+
id,
|
|
2349
|
+
user.id,
|
|
2350
|
+
sqlTimestamp(expires),
|
|
2351
|
+
meta.userAgent ?? null,
|
|
2352
|
+
meta.ipAddress ?? null,
|
|
2353
|
+
...user.auth_version !== undefined ? [user.auth_version] : []
|
|
2354
|
+
]);
|
|
2341
2355
|
});
|
|
2342
2356
|
return id;
|
|
2343
2357
|
}
|
|
@@ -2374,7 +2388,8 @@ class CookieSessionStore {
|
|
|
2374
2388
|
const sessionId = this.sessionIdFromRequest(request);
|
|
2375
2389
|
if (!sessionId)
|
|
2376
2390
|
return null;
|
|
2377
|
-
|
|
2391
|
+
const user = await this.loadSessionUser(this.sql(), sessionId);
|
|
2392
|
+
return user && isAccountActive(user) ? user : null;
|
|
2378
2393
|
}
|
|
2379
2394
|
sign(value) {
|
|
2380
2395
|
return createHmac("sha256", this.secret).update(value).digest("hex").slice(0, 32);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@getstrata/bootstrap",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.34",
|
|
4
4
|
"description": "Strata application bootstrap: HttpKernel, DI, web session helpers",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -183,14 +183,14 @@
|
|
|
183
183
|
"build:bundle": "bun build index.ts --outdir dist --target bun --external bun --external eta --external mysql2 --external @getstrata/core",
|
|
184
184
|
"build:types": "tsc -p tsconfig.types.json && bun ../../scripts/prune-bootstrap-dist-types.ts",
|
|
185
185
|
"prepublishOnly": "bun run build",
|
|
186
|
-
"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/createSpaRoutes.ts entries/dependencies.ts entries/discoverModules.ts entries/discoverListeners.ts entries/discoverModels.ts entries/discoverJobs.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 mysql2 --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/createSpaRoutes --external @getstrata/bootstrap/dependencies --external @getstrata/bootstrap/discoverModules --external @getstrata/bootstrap/discoverListeners --external @getstrata/bootstrap/discoverModels --external @getstrata/bootstrap/discoverJobs --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/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",
|
|
186
|
+
"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/createSpaRoutes.ts entries/dependencies.ts entries/discoverModules.ts entries/discoverListeners.ts entries/discoverModels.ts entries/discoverJobs.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 mysql2 --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/createSpaRoutes --external @getstrata/bootstrap/dependencies --external @getstrata/bootstrap/discoverModules --external @getstrata/bootstrap/discoverListeners --external @getstrata/bootstrap/discoverModels --external @getstrata/bootstrap/discoverJobs --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/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",
|
|
187
187
|
"build:shims": "true"
|
|
188
188
|
},
|
|
189
189
|
"publishConfig": {
|
|
190
190
|
"access": "public"
|
|
191
191
|
},
|
|
192
192
|
"peerDependencies": {
|
|
193
|
-
"@getstrata/core": "^2.2.
|
|
193
|
+
"@getstrata/core": "^2.2.34",
|
|
194
194
|
"typescript": "^5.9.0 || ^6.0.0 || ^7.0.0"
|
|
195
195
|
},
|
|
196
196
|
"engines": {
|