@getstrata/bootstrap 1.1.0 → 1.1.1
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 +4 -0
- package/dist/bootstrap/discoverListeners.d.ts +2 -2
- package/dist/entries/context.js +24 -8
- package/dist/entries/dependencies.js +24 -8
- package/dist/entries/discoverListeners.js +54 -0
- package/dist/entries/providers.js +26 -10
- package/dist/index.js +20 -8
- package/package.json +8 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# @getstrata/bootstrap changelog
|
|
2
2
|
|
|
3
|
+
## 1.1.1
|
|
4
|
+
|
|
5
|
+
Fix generated app boot
|
|
6
|
+
|
|
3
7
|
## 1.1.0
|
|
4
8
|
|
|
5
9
|
Lockstep with `@getstrata/core` 1.1.0. Cookie sessions select `s.created_at AS session_created_at` so `users.created_at` from `u.*` cannot clobber the session issued-at. API group always includes session-mutating CSRF. `buildModuleRoutes` maps thrown API middleware errors (including CSRF `ForbiddenError`) to JSON. `HttpKernel.wrap("api")` does the same for routes used outside that builder. Path confinement on the web server and safer production defaults. The rls role denylist checks the runtime URL (`APP_DATABASE_URL` when set, otherwise `DATABASE_URL`) so fixture admin `DATABASE_URL` can stay `postgres`.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
type ListenerRegistrar = () => void;
|
|
2
|
-
declare const appListeners: ListenerRegistrar[];
|
|
3
2
|
declare function discoverListeners(): ListenerRegistrar[];
|
|
3
|
+
declare function resetDiscoverListenersForTests(): void;
|
|
4
4
|
export type { ListenerRegistrar };
|
|
5
|
-
export {
|
|
5
|
+
export { discoverListeners, resetDiscoverListenersForTests };
|
package/dist/entries/context.js
CHANGED
|
@@ -370,8 +370,19 @@ var events_default = eventsProvider;
|
|
|
370
370
|
|
|
371
371
|
// ../../src/bootstrap/discoverListeners.ts
|
|
372
372
|
import { existsSync, readdirSync as readdirSync2 } from "fs";
|
|
373
|
+
import { createRequire } from "module";
|
|
373
374
|
import { join as join2 } from "path";
|
|
374
|
-
|
|
375
|
+
var requireListener = createRequire(import.meta.url);
|
|
376
|
+
var DISCOVER_LISTENERS_STATE_KEY = Symbol.for("@getstrata/discoverListenersState");
|
|
377
|
+
function readDiscoverListenersState() {
|
|
378
|
+
const existing = globalThis[DISCOVER_LISTENERS_STATE_KEY];
|
|
379
|
+
if (existing) {
|
|
380
|
+
return existing;
|
|
381
|
+
}
|
|
382
|
+
const state = {};
|
|
383
|
+
globalThis[DISCOVER_LISTENERS_STATE_KEY] = state;
|
|
384
|
+
return state;
|
|
385
|
+
}
|
|
375
386
|
function resolveListenersDirectory() {
|
|
376
387
|
const fromCwd = join2(process.cwd(), "src", "listeners");
|
|
377
388
|
if (existsSync(fromCwd)) {
|
|
@@ -379,7 +390,7 @@ function resolveListenersDirectory() {
|
|
|
379
390
|
}
|
|
380
391
|
return join2(import.meta.dir, "../listeners");
|
|
381
392
|
}
|
|
382
|
-
|
|
393
|
+
function loadDiscoveredListeners() {
|
|
383
394
|
const listenersDirectory = resolveListenersDirectory();
|
|
384
395
|
let entries;
|
|
385
396
|
try {
|
|
@@ -390,16 +401,21 @@ async function loadDiscoveredListeners() {
|
|
|
390
401
|
}
|
|
391
402
|
throw error;
|
|
392
403
|
}
|
|
393
|
-
const listeners =
|
|
394
|
-
const
|
|
395
|
-
const loaded =
|
|
404
|
+
const listeners = entries.map((fileName) => {
|
|
405
|
+
const filePath = join2(listenersDirectory, fileName);
|
|
406
|
+
const loaded = requireListener(filePath);
|
|
396
407
|
return loaded.default;
|
|
397
|
-
})
|
|
408
|
+
});
|
|
398
409
|
return listeners.filter((listener) => typeof listener === "function");
|
|
399
410
|
}
|
|
400
|
-
var appListeners = await loadDiscoveredListeners();
|
|
401
411
|
function discoverListeners() {
|
|
402
|
-
|
|
412
|
+
const state = readDiscoverListenersState();
|
|
413
|
+
state.appListeners ??= loadDiscoveredListeners();
|
|
414
|
+
return state.appListeners;
|
|
415
|
+
}
|
|
416
|
+
function resetDiscoverListenersForTests() {
|
|
417
|
+
const state = readDiscoverListenersState();
|
|
418
|
+
state.appListeners = undefined;
|
|
403
419
|
}
|
|
404
420
|
|
|
405
421
|
// ../../src/bootstrap/listeners/invalidateCacheOnModelWrite.ts
|
|
@@ -370,8 +370,19 @@ var events_default = eventsProvider;
|
|
|
370
370
|
|
|
371
371
|
// ../../src/bootstrap/discoverListeners.ts
|
|
372
372
|
import { existsSync, readdirSync as readdirSync2 } from "fs";
|
|
373
|
+
import { createRequire } from "module";
|
|
373
374
|
import { join as join2 } from "path";
|
|
374
|
-
|
|
375
|
+
var requireListener = createRequire(import.meta.url);
|
|
376
|
+
var DISCOVER_LISTENERS_STATE_KEY = Symbol.for("@getstrata/discoverListenersState");
|
|
377
|
+
function readDiscoverListenersState() {
|
|
378
|
+
const existing = globalThis[DISCOVER_LISTENERS_STATE_KEY];
|
|
379
|
+
if (existing) {
|
|
380
|
+
return existing;
|
|
381
|
+
}
|
|
382
|
+
const state = {};
|
|
383
|
+
globalThis[DISCOVER_LISTENERS_STATE_KEY] = state;
|
|
384
|
+
return state;
|
|
385
|
+
}
|
|
375
386
|
function resolveListenersDirectory() {
|
|
376
387
|
const fromCwd = join2(process.cwd(), "src", "listeners");
|
|
377
388
|
if (existsSync(fromCwd)) {
|
|
@@ -379,7 +390,7 @@ function resolveListenersDirectory() {
|
|
|
379
390
|
}
|
|
380
391
|
return join2(import.meta.dir, "../listeners");
|
|
381
392
|
}
|
|
382
|
-
|
|
393
|
+
function loadDiscoveredListeners() {
|
|
383
394
|
const listenersDirectory = resolveListenersDirectory();
|
|
384
395
|
let entries;
|
|
385
396
|
try {
|
|
@@ -390,16 +401,21 @@ async function loadDiscoveredListeners() {
|
|
|
390
401
|
}
|
|
391
402
|
throw error;
|
|
392
403
|
}
|
|
393
|
-
const listeners =
|
|
394
|
-
const
|
|
395
|
-
const loaded =
|
|
404
|
+
const listeners = entries.map((fileName) => {
|
|
405
|
+
const filePath = join2(listenersDirectory, fileName);
|
|
406
|
+
const loaded = requireListener(filePath);
|
|
396
407
|
return loaded.default;
|
|
397
|
-
})
|
|
408
|
+
});
|
|
398
409
|
return listeners.filter((listener) => typeof listener === "function");
|
|
399
410
|
}
|
|
400
|
-
var appListeners = await loadDiscoveredListeners();
|
|
401
411
|
function discoverListeners() {
|
|
402
|
-
|
|
412
|
+
const state = readDiscoverListenersState();
|
|
413
|
+
state.appListeners ??= loadDiscoveredListeners();
|
|
414
|
+
return state.appListeners;
|
|
415
|
+
}
|
|
416
|
+
function resetDiscoverListenersForTests() {
|
|
417
|
+
const state = readDiscoverListenersState();
|
|
418
|
+
state.appListeners = undefined;
|
|
403
419
|
}
|
|
404
420
|
|
|
405
421
|
// ../../src/bootstrap/listeners/invalidateCacheOnModelWrite.ts
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
// ../../src/bootstrap/discoverListeners.ts
|
|
3
|
+
import { existsSync, readdirSync } from "fs";
|
|
4
|
+
import { createRequire } from "module";
|
|
5
|
+
import { join } from "path";
|
|
6
|
+
var requireListener = createRequire(import.meta.url);
|
|
7
|
+
var DISCOVER_LISTENERS_STATE_KEY = Symbol.for("@getstrata/discoverListenersState");
|
|
8
|
+
function readDiscoverListenersState() {
|
|
9
|
+
const existing = globalThis[DISCOVER_LISTENERS_STATE_KEY];
|
|
10
|
+
if (existing) {
|
|
11
|
+
return existing;
|
|
12
|
+
}
|
|
13
|
+
const state = {};
|
|
14
|
+
globalThis[DISCOVER_LISTENERS_STATE_KEY] = state;
|
|
15
|
+
return state;
|
|
16
|
+
}
|
|
17
|
+
function resolveListenersDirectory() {
|
|
18
|
+
const fromCwd = join(process.cwd(), "src", "listeners");
|
|
19
|
+
if (existsSync(fromCwd)) {
|
|
20
|
+
return fromCwd;
|
|
21
|
+
}
|
|
22
|
+
return join(import.meta.dir, "../listeners");
|
|
23
|
+
}
|
|
24
|
+
function loadDiscoveredListeners() {
|
|
25
|
+
const listenersDirectory = resolveListenersDirectory();
|
|
26
|
+
let entries;
|
|
27
|
+
try {
|
|
28
|
+
entries = readdirSync(listenersDirectory, { withFileTypes: true }).filter((entry) => entry.isFile() && /\.(ts|js)$/.test(entry.name)).map((entry) => entry.name);
|
|
29
|
+
} catch (error) {
|
|
30
|
+
if (error instanceof Error && "code" in error && error.code === "ENOENT") {
|
|
31
|
+
return [];
|
|
32
|
+
}
|
|
33
|
+
throw error;
|
|
34
|
+
}
|
|
35
|
+
const listeners = entries.map((fileName) => {
|
|
36
|
+
const filePath = join(listenersDirectory, fileName);
|
|
37
|
+
const loaded = requireListener(filePath);
|
|
38
|
+
return loaded.default;
|
|
39
|
+
});
|
|
40
|
+
return listeners.filter((listener) => typeof listener === "function");
|
|
41
|
+
}
|
|
42
|
+
function discoverListeners() {
|
|
43
|
+
const state = readDiscoverListenersState();
|
|
44
|
+
state.appListeners ??= loadDiscoveredListeners();
|
|
45
|
+
return state.appListeners;
|
|
46
|
+
}
|
|
47
|
+
function resetDiscoverListenersForTests() {
|
|
48
|
+
const state = readDiscoverListenersState();
|
|
49
|
+
state.appListeners = undefined;
|
|
50
|
+
}
|
|
51
|
+
export {
|
|
52
|
+
discoverListeners,
|
|
53
|
+
resetDiscoverListenersForTests
|
|
54
|
+
};
|
|
@@ -276,8 +276,19 @@ var events_default = eventsProvider;
|
|
|
276
276
|
|
|
277
277
|
// ../../src/bootstrap/discoverListeners.ts
|
|
278
278
|
import { existsSync, readdirSync } from "fs";
|
|
279
|
+
import { createRequire } from "module";
|
|
279
280
|
import { join } from "path";
|
|
280
|
-
|
|
281
|
+
var requireListener = createRequire(import.meta.url);
|
|
282
|
+
var DISCOVER_LISTENERS_STATE_KEY = Symbol.for("@getstrata/discoverListenersState");
|
|
283
|
+
function readDiscoverListenersState() {
|
|
284
|
+
const existing = globalThis[DISCOVER_LISTENERS_STATE_KEY];
|
|
285
|
+
if (existing) {
|
|
286
|
+
return existing;
|
|
287
|
+
}
|
|
288
|
+
const state = {};
|
|
289
|
+
globalThis[DISCOVER_LISTENERS_STATE_KEY] = state;
|
|
290
|
+
return state;
|
|
291
|
+
}
|
|
281
292
|
function resolveListenersDirectory() {
|
|
282
293
|
const fromCwd = join(process.cwd(), "src", "listeners");
|
|
283
294
|
if (existsSync(fromCwd)) {
|
|
@@ -285,7 +296,7 @@ function resolveListenersDirectory() {
|
|
|
285
296
|
}
|
|
286
297
|
return join(import.meta.dir, "../listeners");
|
|
287
298
|
}
|
|
288
|
-
|
|
299
|
+
function loadDiscoveredListeners() {
|
|
289
300
|
const listenersDirectory = resolveListenersDirectory();
|
|
290
301
|
let entries;
|
|
291
302
|
try {
|
|
@@ -296,16 +307,21 @@ async function loadDiscoveredListeners() {
|
|
|
296
307
|
}
|
|
297
308
|
throw error;
|
|
298
309
|
}
|
|
299
|
-
const listeners =
|
|
300
|
-
const
|
|
301
|
-
const loaded =
|
|
310
|
+
const listeners = entries.map((fileName) => {
|
|
311
|
+
const filePath = join(listenersDirectory, fileName);
|
|
312
|
+
const loaded = requireListener(filePath);
|
|
302
313
|
return loaded.default;
|
|
303
|
-
})
|
|
314
|
+
});
|
|
304
315
|
return listeners.filter((listener) => typeof listener === "function");
|
|
305
316
|
}
|
|
306
|
-
var appListeners = await loadDiscoveredListeners();
|
|
307
317
|
function discoverListeners() {
|
|
308
|
-
|
|
318
|
+
const state = readDiscoverListenersState();
|
|
319
|
+
state.appListeners ??= loadDiscoveredListeners();
|
|
320
|
+
return state.appListeners;
|
|
321
|
+
}
|
|
322
|
+
function resetDiscoverListenersForTests() {
|
|
323
|
+
const state = readDiscoverListenersState();
|
|
324
|
+
state.appListeners = undefined;
|
|
309
325
|
}
|
|
310
326
|
|
|
311
327
|
// ../../src/bootstrap/listeners/invalidateCacheOnModelWrite.ts
|
|
@@ -329,7 +345,7 @@ import {
|
|
|
329
345
|
// ../../src/bootstrap/discoverModules.ts
|
|
330
346
|
import { readdirSync as readdirSync2 } from "fs";
|
|
331
347
|
import { join as join2 } from "path";
|
|
332
|
-
import { pathToFileURL
|
|
348
|
+
import { pathToFileURL } from "url";
|
|
333
349
|
var DISCOVER_MODULES_STATE_KEY = Symbol.for("@getstrata/discoverModulesState");
|
|
334
350
|
function readDiscoverModulesState() {
|
|
335
351
|
const existing = globalThis[DISCOVER_MODULES_STATE_KEY];
|
|
@@ -370,7 +386,7 @@ async function loadDiscoveredModules(options) {
|
|
|
370
386
|
throw error;
|
|
371
387
|
}
|
|
372
388
|
const modules = await Promise.all(moduleNames.map(async (moduleName) => {
|
|
373
|
-
const moduleUrl =
|
|
389
|
+
const moduleUrl = pathToFileURL(join2(modulesDirectory, moduleName, "index.ts")).href;
|
|
374
390
|
const loaded = await import(moduleUrl);
|
|
375
391
|
return loaded.default;
|
|
376
392
|
}));
|
package/dist/index.js
CHANGED
|
@@ -773,8 +773,19 @@ var events_default = eventsProvider;
|
|
|
773
773
|
|
|
774
774
|
// ../../src/bootstrap/discoverListeners.ts
|
|
775
775
|
import { existsSync, readdirSync as readdirSync2 } from "fs";
|
|
776
|
+
import { createRequire } from "module";
|
|
776
777
|
import { join as join2 } from "path";
|
|
777
|
-
|
|
778
|
+
var requireListener = createRequire(import.meta.url);
|
|
779
|
+
var DISCOVER_LISTENERS_STATE_KEY = Symbol.for("@getstrata/discoverListenersState");
|
|
780
|
+
function readDiscoverListenersState() {
|
|
781
|
+
const existing = globalThis[DISCOVER_LISTENERS_STATE_KEY];
|
|
782
|
+
if (existing) {
|
|
783
|
+
return existing;
|
|
784
|
+
}
|
|
785
|
+
const state = {};
|
|
786
|
+
globalThis[DISCOVER_LISTENERS_STATE_KEY] = state;
|
|
787
|
+
return state;
|
|
788
|
+
}
|
|
778
789
|
function resolveListenersDirectory() {
|
|
779
790
|
const fromCwd = join2(process.cwd(), "src", "listeners");
|
|
780
791
|
if (existsSync(fromCwd)) {
|
|
@@ -782,7 +793,7 @@ function resolveListenersDirectory() {
|
|
|
782
793
|
}
|
|
783
794
|
return join2(import.meta.dir, "../listeners");
|
|
784
795
|
}
|
|
785
|
-
|
|
796
|
+
function loadDiscoveredListeners() {
|
|
786
797
|
const listenersDirectory = resolveListenersDirectory();
|
|
787
798
|
let entries;
|
|
788
799
|
try {
|
|
@@ -793,16 +804,17 @@ async function loadDiscoveredListeners() {
|
|
|
793
804
|
}
|
|
794
805
|
throw error;
|
|
795
806
|
}
|
|
796
|
-
const listeners =
|
|
797
|
-
const
|
|
798
|
-
const loaded =
|
|
807
|
+
const listeners = entries.map((fileName) => {
|
|
808
|
+
const filePath = join2(listenersDirectory, fileName);
|
|
809
|
+
const loaded = requireListener(filePath);
|
|
799
810
|
return loaded.default;
|
|
800
|
-
})
|
|
811
|
+
});
|
|
801
812
|
return listeners.filter((listener) => typeof listener === "function");
|
|
802
813
|
}
|
|
803
|
-
var appListeners = await loadDiscoveredListeners();
|
|
804
814
|
function discoverListeners() {
|
|
805
|
-
|
|
815
|
+
const state = readDiscoverListenersState();
|
|
816
|
+
state.appListeners ??= loadDiscoveredListeners();
|
|
817
|
+
return state.appListeners;
|
|
806
818
|
}
|
|
807
819
|
|
|
808
820
|
// ../../src/bootstrap/listeners/invalidateCacheOnModelWrite.ts
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@getstrata/bootstrap",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"description": "Strata application bootstrap: HttpKernel, DI, web session helpers",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -70,6 +70,11 @@
|
|
|
70
70
|
"import": "./dist/entries/discoverModules.js",
|
|
71
71
|
"default": "./dist/entries/discoverModules.js"
|
|
72
72
|
},
|
|
73
|
+
"./discoverListeners": {
|
|
74
|
+
"types": "./dist/bootstrap/discoverListeners.d.ts",
|
|
75
|
+
"import": "./dist/entries/discoverListeners.js",
|
|
76
|
+
"default": "./dist/entries/discoverListeners.js"
|
|
77
|
+
},
|
|
73
78
|
"./health": {
|
|
74
79
|
"types": "./dist/bootstrap/health.d.ts",
|
|
75
80
|
"import": "./dist/entries/health.js",
|
|
@@ -168,14 +173,14 @@
|
|
|
168
173
|
"build:bundle": "bun build index.ts --outdir dist --target bun --external bun --external eta --external mysql2 --external @getstrata/core",
|
|
169
174
|
"build:types": "tsc -p tsconfig.types.json && bun ../../scripts/prune-bootstrap-dist-types.ts",
|
|
170
175
|
"prepublishOnly": "bun run build",
|
|
171
|
-
"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/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/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/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/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/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/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",
|
|
176
|
+
"build:subpaths": "bun build entries/applicationRegistry.ts entries/buildModuleRoutes.ts entries/buildWebModuleRoutes.ts entries/cache/modelCacheTags.ts entries/config.ts entries/context.ts entries/contracts.ts entries/createWebRoutes.ts entries/createSpaRoutes.ts entries/dependencies.ts entries/discoverModules.ts entries/discoverListeners.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/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/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/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/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/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",
|
|
172
177
|
"build:shims": "true"
|
|
173
178
|
},
|
|
174
179
|
"publishConfig": {
|
|
175
180
|
"access": "public"
|
|
176
181
|
},
|
|
177
182
|
"peerDependencies": {
|
|
178
|
-
"@getstrata/core": "^1.1.
|
|
183
|
+
"@getstrata/core": "^1.1.1",
|
|
179
184
|
"typescript": "^5.9.0"
|
|
180
185
|
},
|
|
181
186
|
"engines": {
|