@getstrata/core 0.5.42 → 0.5.44

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.
Files changed (51) hide show
  1. package/dist/entries/admin/formatValue.js +32 -0
  2. package/dist/entries/admin/registry.js +32 -0
  3. package/dist/entries/audit/siemFormatter.js +37 -0
  4. package/dist/entries/auth/abilityChecker.js +1 -0
  5. package/dist/entries/auth/membershipMiddleware.js +298 -0
  6. package/dist/entries/auth/scimAuthMiddleware.js +251 -0
  7. package/dist/entries/auth/sessionGuard.js +72 -0
  8. package/dist/entries/database/migrations/types.js +1 -0
  9. package/dist/entries/database/migrations.js +127 -0
  10. package/dist/entries/database/schema.js +1054 -0
  11. package/dist/entries/database/seeders/types.js +1 -0
  12. package/dist/entries/http/conditionalResponse.js +192 -0
  13. package/dist/entries/http/corsMiddleware.js +54 -0
  14. package/dist/entries/http/csrfMiddleware.js +236 -0
  15. package/dist/entries/http/csrfToken.js +3 -0
  16. package/dist/entries/http/flashMiddleware.js +143 -0
  17. package/dist/entries/http/formRequest.js +152 -0
  18. package/dist/entries/http/loginThrottleMiddleware.js +46 -0
  19. package/dist/entries/http/memoryThrottleMiddleware.js +30 -0
  20. package/dist/entries/http/requireAbilityMiddleware.js +110 -0
  21. package/dist/entries/http/requireAuthMiddleware.js +80 -0
  22. package/dist/entries/http/requireGlobalAdminMiddleware.js +147 -0
  23. package/dist/entries/http/requireWebAuthMiddleware.js +107 -0
  24. package/dist/entries/http/route.js +8 -0
  25. package/dist/entries/http/routeMiddleware.js +32 -0
  26. package/dist/entries/http/routeModelBinding.js +141 -0
  27. package/dist/entries/http/scimThrottleMiddleware.js +23 -0
  28. package/dist/entries/http/securedRouteModelBinding.js +10 -0
  29. package/dist/entries/http/securityHeadersMiddleware.js +77 -0
  30. package/dist/entries/http/throttleMiddleware.js +87 -0
  31. package/dist/entries/http/webErrorResponse.js +72 -0
  32. package/dist/entries/http/webFormRequest.js +10 -0
  33. package/dist/entries/logging/requestLoggingMiddleware.js +89 -0
  34. package/dist/entries/mail/mailer.js +208 -0
  35. package/dist/entries/mail/markdownMail.js +63 -0
  36. package/dist/entries/mail/markdownMailable.js +78 -0
  37. package/dist/entries/notifications.js +152 -0
  38. package/dist/entries/openapi/generator.js +178 -0
  39. package/dist/entries/openapi/validate.js +28 -0
  40. package/dist/entries/queue/createAppQueue.js +58 -0
  41. package/dist/entries/queue/failedJobRepository.js +58 -0
  42. package/dist/entries/queue/publicQueue.js +58 -0
  43. package/dist/entries/queue/queueMetrics.js +58 -0
  44. package/dist/entries/runtime/asyncContextStore.js +17 -0
  45. package/dist/entries/security/safeFetch.js +211 -0
  46. package/dist/entries/security/timingSafeCompare.js +14 -0
  47. package/dist/entries/tenant/databaseTenantContext.js +116 -0
  48. package/dist/entries/tenant/tenantDatabaseScope.js +10 -0
  49. package/dist/entries/tracing/tracingMiddleware.js +103 -0
  50. package/dist/entries/view.js +72 -0
  51. package/package.json +202 -7
@@ -0,0 +1,103 @@
1
+ // @bun
2
+ // ../../src/core/tracing/otel.ts
3
+ import { randomBytes } from "crypto";
4
+ function randomHex(bytes) {
5
+ return randomBytes(bytes).toString("hex");
6
+ }
7
+ function createSpan(input) {
8
+ const spanId = randomHex(8);
9
+ return {
10
+ traceId: input.traceId,
11
+ spanId,
12
+ name: input.name,
13
+ startTimeUnixNano: String(Math.floor(input.startedAt * 1e6)),
14
+ endTimeUnixNano: String(Math.floor(input.endedAt * 1e6)),
15
+ attributes: Object.entries(input.attributes ?? {}).map(([key, value]) => ({
16
+ key,
17
+ value: { stringValue: value }
18
+ })),
19
+ status: { code: 1 }
20
+ };
21
+ }
22
+ async function exportOtelSpan(span) {
23
+ const endpoint = process.env.OTEL_EXPORTER_OTLP_ENDPOINT?.trim();
24
+ if (!endpoint) {
25
+ return;
26
+ }
27
+ const serviceName = process.env.OTEL_SERVICE_NAME?.trim() ?? "workhub-api";
28
+ const url = endpoint.endsWith("/v1/traces") ? endpoint : `${endpoint.replace(/\/$/, "")}/v1/traces`;
29
+ await fetch(url, {
30
+ method: "POST",
31
+ headers: { "content-type": "application/json" },
32
+ body: JSON.stringify({
33
+ resourceSpans: [
34
+ {
35
+ resource: {
36
+ attributes: [{ key: "service.name", value: { stringValue: serviceName } }]
37
+ },
38
+ scopeSpans: [{ spans: [span] }]
39
+ }
40
+ ]
41
+ })
42
+ });
43
+ }
44
+
45
+ // ../../src/core/runtime/asyncContextStore.ts
46
+ import { AsyncLocalStorage } from "async_hooks";
47
+ function createAsyncContextStore(key) {
48
+ const symbol = Symbol.for(key);
49
+ const globalRecord = globalThis;
50
+ const existing = globalRecord[symbol];
51
+ if (existing) {
52
+ return existing;
53
+ }
54
+ const store = new AsyncLocalStorage;
55
+ globalRecord[symbol] = store;
56
+ return store;
57
+ }
58
+
59
+ // ../../src/core/tracing/traceContext.ts
60
+ var traceContextStorage = createAsyncContextStore("@getstrata/traceContext");
61
+ function runWithTraceContext(context, callback) {
62
+ return traceContextStorage.run(context, callback);
63
+ }
64
+
65
+ // ../../src/core/tracing/tracingMiddleware.ts
66
+ function createTracingMiddleware() {
67
+ return async (request, next) => {
68
+ const traceId = (request.headers.get("x-trace-id") ?? crypto.randomUUID()).replace(/-/g, "");
69
+ const spanId = crypto.randomUUID().replace(/-/g, "").slice(0, 16);
70
+ const startedAt = performance.now();
71
+ const path = new URL(request.url).pathname;
72
+ return await runWithTraceContext({ traceId, spanId }, async () => {
73
+ const response = await next();
74
+ const endedAt = performance.now();
75
+ const headers = new Headers(response.headers);
76
+ headers.set("x-trace-id", traceId);
77
+ headers.set("x-span-id", spanId);
78
+ headers.set("traceparent", `00-${traceId}-${spanId}-01`);
79
+ headers.set("server-timing", `app;dur=${(endedAt - startedAt).toFixed(2)}`);
80
+ exportOtelSpan(createSpan({
81
+ traceId,
82
+ name: `${request.method} ${path}`,
83
+ startedAt,
84
+ endedAt,
85
+ attributes: {
86
+ "http.method": request.method,
87
+ "http.route": path,
88
+ "http.status_code": String(response.status)
89
+ }
90
+ })).catch(() => {
91
+ return;
92
+ });
93
+ return new Response(response.body, {
94
+ status: response.status,
95
+ statusText: response.statusText,
96
+ headers
97
+ });
98
+ });
99
+ };
100
+ }
101
+ export {
102
+ createTracingMiddleware
103
+ };
@@ -2138,6 +2138,45 @@ class Blueprint {
2138
2138
  });
2139
2139
  }
2140
2140
  }
2141
+ // ../../src/core/database/schema/driver.ts
2142
+ function normalizeConnectionName(connection) {
2143
+ const normalized = connection.trim().toLowerCase();
2144
+ if (normalized === "pgsql" || normalized === "postgres" || normalized === "postgresql") {
2145
+ return "pgsql";
2146
+ }
2147
+ if (normalized === "mysql" || normalized === "mariadb") {
2148
+ return "mysql";
2149
+ }
2150
+ if (normalized === "sqlite") {
2151
+ return "sqlite";
2152
+ }
2153
+ throw new Error(`Unsupported DB_CONNECTION: ${connection}`);
2154
+ }
2155
+ function resolveDriverFromUrl(url) {
2156
+ const normalized = url.trim().toLowerCase();
2157
+ if (normalized.startsWith("postgres://") || normalized.startsWith("postgresql://") || normalized.startsWith("postgres:")) {
2158
+ return "pgsql";
2159
+ }
2160
+ if (normalized.startsWith("mysql://") || normalized.startsWith("mysql:")) {
2161
+ return "mysql";
2162
+ }
2163
+ if (normalized.startsWith("sqlite:")) {
2164
+ return "sqlite";
2165
+ }
2166
+ return null;
2167
+ }
2168
+ function resolveDatabaseDriver(options = {}) {
2169
+ const connection = options.connection ?? process.env.DB_CONNECTION;
2170
+ if (connection) {
2171
+ return normalizeConnectionName(connection);
2172
+ }
2173
+ const url = options.url ?? process.env.DATABASE_URL ?? "";
2174
+ const fromUrl = resolveDriverFromUrl(url);
2175
+ if (fromUrl) {
2176
+ return fromUrl;
2177
+ }
2178
+ return "pgsql";
2179
+ }
2141
2180
  // ../../src/core/database/schema/errors.ts
2142
2181
  class UnsupportedSchemaFeatureError extends Error {
2143
2182
  constructor(feature, driver) {
@@ -2482,6 +2521,25 @@ class SchemaBuilder {
2482
2521
  }
2483
2522
  }
2484
2523
  }
2524
+
2525
+ class Schema {
2526
+ static builder(driver) {
2527
+ return new SchemaBuilder(driver ?? resolveDatabaseDriver());
2528
+ }
2529
+ static async run(db, driver, callback) {
2530
+ const schema = Schema.builder(driver);
2531
+ await callback(schema);
2532
+ await schema.execute(db);
2533
+ }
2534
+ }
2535
+ function createSchemaBuilder(db, driver) {
2536
+ const builder = Schema.builder(driver);
2537
+ return Object.assign(builder, {
2538
+ async commit() {
2539
+ await builder.execute(db);
2540
+ }
2541
+ });
2542
+ }
2485
2543
  // ../../src/core/database/table.ts
2486
2544
  function defineTable(definition) {
2487
2545
  return definition;
@@ -2552,6 +2610,7 @@ var db = new Proxy(function database() {}, {
2552
2610
  return typeof value === "function" ? value.bind(connection) : value;
2553
2611
  }
2554
2612
  });
2613
+ var connection_default = db;
2555
2614
 
2556
2615
  // ../../src/modules/user/apiTokenTable.ts
2557
2616
  var apiTokenTable = defineTable({
@@ -2693,6 +2752,9 @@ function currentAuthUser() {
2693
2752
 
2694
2753
  // ../../src/core/http/requestMetaContext.ts
2695
2754
  var requestMetaContext = createAsyncContextStore("@getstrata/requestMetaContext");
2755
+ function runWithRequestMeta(meta, callback) {
2756
+ return requestMetaContext.run(meta, callback);
2757
+ }
2696
2758
  function currentRequestMeta() {
2697
2759
  return requestMetaContext.getStore() ?? {
2698
2760
  ipAddress: null,
@@ -2786,6 +2848,16 @@ function currentTenant() {
2786
2848
  function currentTenantId() {
2787
2849
  return currentTenant()?.id ?? 1;
2788
2850
  }
2851
+ function rateLimitMultiplierForPlan(plan) {
2852
+ switch (plan) {
2853
+ case "enterprise":
2854
+ return 4;
2855
+ case "pro":
2856
+ return 2;
2857
+ default:
2858
+ return 1;
2859
+ }
2860
+ }
2789
2861
 
2790
2862
  // ../../src/domain/abilities.ts
2791
2863
  var MEMBER_ABILITIES = [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getstrata/core",
3
- "version": "0.5.42",
3
+ "version": "0.5.44",
4
4
  "description": "Strata — Laravel-inspired Bun framework public API",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -20,6 +20,11 @@
20
20
  "import": "./dist/entries/auth/accessControl.js",
21
21
  "default": "./dist/entries/auth/accessControl.js"
22
22
  },
23
+ "./auth/abilityChecker": {
24
+ "types": "./dist/core/auth/abilityChecker.d.ts",
25
+ "import": "./dist/entries/auth/abilityChecker.js",
26
+ "default": "./dist/entries/auth/abilityChecker.js"
27
+ },
23
28
  "./auth/authContext": {
24
29
  "types": "./dist/core/auth/authContext.d.ts",
25
30
  "import": "./dist/entries/auth/authContext.js",
@@ -35,6 +40,11 @@
35
40
  "import": "./dist/entries/auth/membershipContext.js",
36
41
  "default": "./dist/entries/auth/membershipContext.js"
37
42
  },
43
+ "./auth/membershipMiddleware": {
44
+ "types": "./dist/core/auth/membershipMiddleware.d.ts",
45
+ "import": "./dist/entries/auth/membershipMiddleware.js",
46
+ "default": "./dist/entries/auth/membershipMiddleware.js"
47
+ },
38
48
  "./auth/membershipScope": {
39
49
  "types": "./dist/core/auth/membershipScope.d.ts",
40
50
  "import": "./dist/entries/auth/membershipScope.js",
@@ -75,6 +85,11 @@
75
85
  "import": "./dist/entries/auth/policy.js",
76
86
  "default": "./dist/entries/auth/policy.js"
77
87
  },
88
+ "./auth/scimAuthMiddleware": {
89
+ "types": "./dist/core/auth/scimAuthMiddleware.d.ts",
90
+ "import": "./dist/entries/auth/scimAuthMiddleware.js",
91
+ "default": "./dist/entries/auth/scimAuthMiddleware.js"
92
+ },
78
93
  "./auth/sessionCookie": {
79
94
  "types": "./dist/core/auth/sessionCookie.d.ts",
80
95
  "import": "./dist/entries/auth/sessionCookie.js",
@@ -95,6 +110,21 @@
95
110
  "import": "./dist/entries/audit/exportAuditLogs.js",
96
111
  "default": "./dist/entries/audit/exportAuditLogs.js"
97
112
  },
113
+ "./audit/siemFormatter": {
114
+ "types": "./dist/core/audit/siemFormatter.d.ts",
115
+ "import": "./dist/entries/audit/siemFormatter.js",
116
+ "default": "./dist/entries/audit/siemFormatter.js"
117
+ },
118
+ "./admin/formatValue": {
119
+ "types": "./dist/core/admin/formatValue.d.ts",
120
+ "import": "./dist/entries/admin/formatValue.js",
121
+ "default": "./dist/entries/admin/formatValue.js"
122
+ },
123
+ "./admin/registry": {
124
+ "types": "./dist/core/admin/registry.d.ts",
125
+ "import": "./dist/entries/admin/registry.js",
126
+ "default": "./dist/entries/admin/registry.js"
127
+ },
98
128
  "./cache/tags": {
99
129
  "types": "./dist/core/cache/tags.d.ts",
100
130
  "import": "./dist/entries/cache/tags.js",
@@ -185,6 +215,16 @@
185
215
  "import": "./dist/entries/database/factory.js",
186
216
  "default": "./dist/entries/database/factory.js"
187
217
  },
218
+ "./database/migrations": {
219
+ "types": "./dist/core/database/migrations/runner.d.ts",
220
+ "import": "./dist/entries/database/migrations.js",
221
+ "default": "./dist/entries/database/migrations.js"
222
+ },
223
+ "./database/migrations/types": {
224
+ "types": "./dist/core/database/migrations/types.d.ts",
225
+ "import": "./dist/entries/database/migrations/types.js",
226
+ "default": "./dist/entries/database/migrations/types.js"
227
+ },
188
228
  "./database/model": {
189
229
  "types": "./dist/core/database/model.d.ts",
190
230
  "import": "./dist/entries/database/model.js",
@@ -205,6 +245,16 @@
205
245
  "import": "./dist/entries/database/seeders.js",
206
246
  "default": "./dist/entries/database/seeders.js"
207
247
  },
248
+ "./database/seeders/types": {
249
+ "types": "./dist/core/database/seeders/types.d.ts",
250
+ "import": "./dist/entries/database/seeders/types.js",
251
+ "default": "./dist/entries/database/seeders/types.js"
252
+ },
253
+ "./database/schema": {
254
+ "types": "./dist/core/database/schema/index.d.ts",
255
+ "import": "./dist/entries/database/schema.js",
256
+ "default": "./dist/entries/database/schema.js"
257
+ },
208
258
  "./database/table": {
209
259
  "types": "./dist/core/database/table.d.ts",
210
260
  "import": "./dist/entries/database/table.js",
@@ -255,16 +305,31 @@
255
305
  "import": "./dist/entries/http/cookies.js",
256
306
  "default": "./dist/entries/http/cookies.js"
257
307
  },
258
- "./http/csrfProtection": {
259
- "types": "./dist/core/http/csrfProtection.d.ts",
260
- "import": "./dist/entries/http/csrfProtection.js",
261
- "default": "./dist/entries/http/csrfProtection.js"
262
- },
263
308
  "./http/contentNegotiation": {
264
309
  "types": "./dist/core/http/contentNegotiation.d.ts",
265
310
  "import": "./dist/entries/http/contentNegotiation.js",
266
311
  "default": "./dist/entries/http/contentNegotiation.js"
267
312
  },
313
+ "./http/conditionalResponse": {
314
+ "types": "./dist/core/http/conditionalResponse.d.ts",
315
+ "import": "./dist/entries/http/conditionalResponse.js",
316
+ "default": "./dist/entries/http/conditionalResponse.js"
317
+ },
318
+ "./http/corsMiddleware": {
319
+ "types": "./dist/core/http/corsMiddleware.d.ts",
320
+ "import": "./dist/entries/http/corsMiddleware.js",
321
+ "default": "./dist/entries/http/corsMiddleware.js"
322
+ },
323
+ "./http/csrfMiddleware": {
324
+ "types": "./dist/core/http/csrfMiddleware.d.ts",
325
+ "import": "./dist/entries/http/csrfMiddleware.js",
326
+ "default": "./dist/entries/http/csrfMiddleware.js"
327
+ },
328
+ "./http/csrfProtection": {
329
+ "types": "./dist/core/http/csrfProtection.d.ts",
330
+ "import": "./dist/entries/http/csrfProtection.js",
331
+ "default": "./dist/entries/http/csrfProtection.js"
332
+ },
268
333
  "./http/csrfToken": {
269
334
  "types": "./dist/core/http/csrfToken.d.ts",
270
335
  "import": "./dist/entries/http/csrfToken.js",
@@ -280,6 +345,16 @@
280
345
  "import": "./dist/entries/http/flashSession.js",
281
346
  "default": "./dist/entries/http/flashSession.js"
282
347
  },
348
+ "./http/flashMiddleware": {
349
+ "types": "./dist/core/http/flashMiddleware.d.ts",
350
+ "import": "./dist/entries/http/flashMiddleware.js",
351
+ "default": "./dist/entries/http/flashMiddleware.js"
352
+ },
353
+ "./http/formRequest": {
354
+ "types": "./dist/core/http/formRequest.d.ts",
355
+ "import": "./dist/entries/http/formRequest.js",
356
+ "default": "./dist/entries/http/formRequest.js"
357
+ },
283
358
  "./http/middleware": {
284
359
  "types": "./dist/core/http/middleware.d.ts",
285
360
  "import": "./dist/entries/http/middleware.js",
@@ -290,6 +365,16 @@
290
365
  "import": "./dist/entries/http/metricsMiddleware.js",
291
366
  "default": "./dist/entries/http/metricsMiddleware.js"
292
367
  },
368
+ "./http/loginThrottleMiddleware": {
369
+ "types": "./dist/core/http/loginThrottleMiddleware.d.ts",
370
+ "import": "./dist/entries/http/loginThrottleMiddleware.js",
371
+ "default": "./dist/entries/http/loginThrottleMiddleware.js"
372
+ },
373
+ "./http/memoryThrottleMiddleware": {
374
+ "types": "./dist/core/http/memoryThrottleMiddleware.d.ts",
375
+ "import": "./dist/entries/http/memoryThrottleMiddleware.js",
376
+ "default": "./dist/entries/http/memoryThrottleMiddleware.js"
377
+ },
293
378
  "./http/parseFormBody": {
294
379
  "types": "./dist/core/http/parseFormBody.d.ts",
295
380
  "import": "./dist/entries/http/parseFormBody.js",
@@ -300,11 +385,56 @@
300
385
  "import": "./dist/entries/http/parseMultipartUpload.js",
301
386
  "default": "./dist/entries/http/parseMultipartUpload.js"
302
387
  },
388
+ "./http/requireAbilityMiddleware": {
389
+ "types": "./dist/core/http/requireAbilityMiddleware.d.ts",
390
+ "import": "./dist/entries/http/requireAbilityMiddleware.js",
391
+ "default": "./dist/entries/http/requireAbilityMiddleware.js"
392
+ },
393
+ "./http/requireAuthMiddleware": {
394
+ "types": "./dist/core/http/requireAuthMiddleware.d.ts",
395
+ "import": "./dist/entries/http/requireAuthMiddleware.js",
396
+ "default": "./dist/entries/http/requireAuthMiddleware.js"
397
+ },
398
+ "./http/requireGlobalAdminMiddleware": {
399
+ "types": "./dist/core/http/requireGlobalAdminMiddleware.d.ts",
400
+ "import": "./dist/entries/http/requireGlobalAdminMiddleware.js",
401
+ "default": "./dist/entries/http/requireGlobalAdminMiddleware.js"
402
+ },
403
+ "./http/requireWebAuthMiddleware": {
404
+ "types": "./dist/core/http/requireWebAuthMiddleware.d.ts",
405
+ "import": "./dist/entries/http/requireWebAuthMiddleware.js",
406
+ "default": "./dist/entries/http/requireWebAuthMiddleware.js"
407
+ },
303
408
  "./http/resources": {
304
409
  "types": "./dist/core/http/resources.d.ts",
305
410
  "import": "./dist/entries/http/resources.js",
306
411
  "default": "./dist/entries/http/resources.js"
307
412
  },
413
+ "./http/route": {
414
+ "types": "./dist/core/http/route.d.ts",
415
+ "import": "./dist/entries/http/route.js",
416
+ "default": "./dist/entries/http/route.js"
417
+ },
418
+ "./http/routeMiddleware": {
419
+ "types": "./dist/core/http/routeMiddleware.d.ts",
420
+ "import": "./dist/entries/http/routeMiddleware.js",
421
+ "default": "./dist/entries/http/routeMiddleware.js"
422
+ },
423
+ "./http/routeModelBinding": {
424
+ "types": "./dist/core/http/routeModelBinding.d.ts",
425
+ "import": "./dist/entries/http/routeModelBinding.js",
426
+ "default": "./dist/entries/http/routeModelBinding.js"
427
+ },
428
+ "./http/scimThrottleMiddleware": {
429
+ "types": "./dist/core/http/scimThrottleMiddleware.d.ts",
430
+ "import": "./dist/entries/http/scimThrottleMiddleware.js",
431
+ "default": "./dist/entries/http/scimThrottleMiddleware.js"
432
+ },
433
+ "./http/securityHeadersMiddleware": {
434
+ "types": "./dist/core/http/securityHeadersMiddleware.d.ts",
435
+ "import": "./dist/entries/http/securityHeadersMiddleware.js",
436
+ "default": "./dist/entries/http/securityHeadersMiddleware.js"
437
+ },
308
438
  "./http/securedRouteModelBinding": {
309
439
  "types": "./dist/core/http/securedRouteModelBinding.d.ts",
310
440
  "import": "./dist/entries/http/securedRouteModelBinding.js",
@@ -325,6 +455,11 @@
325
455
  "import": "./dist/entries/http/webFormRequest.js",
326
456
  "default": "./dist/entries/http/webFormRequest.js"
327
457
  },
458
+ "./http/throttleMiddleware": {
459
+ "types": "./dist/core/http/throttleMiddleware.d.ts",
460
+ "import": "./dist/entries/http/throttleMiddleware.js",
461
+ "default": "./dist/entries/http/throttleMiddleware.js"
462
+ },
328
463
  "./jobs/dispatchWebhookJob": {
329
464
  "types": "./dist/core/jobs/dispatchWebhookJob.d.ts",
330
465
  "import": "./dist/entries/jobs/dispatchWebhookJob.js",
@@ -345,16 +480,51 @@
345
480
  "import": "./dist/entries/logging/logger.js",
346
481
  "default": "./dist/entries/logging/logger.js"
347
482
  },
483
+ "./logging/requestLoggingMiddleware": {
484
+ "types": "./dist/core/logging/requestLoggingMiddleware.d.ts",
485
+ "import": "./dist/entries/logging/requestLoggingMiddleware.js",
486
+ "default": "./dist/entries/logging/requestLoggingMiddleware.js"
487
+ },
488
+ "./mail/mailer": {
489
+ "types": "./dist/core/mail/mailer.d.ts",
490
+ "import": "./dist/entries/mail/mailer.js",
491
+ "default": "./dist/entries/mail/mailer.js"
492
+ },
493
+ "./mail/markdownMail": {
494
+ "types": "./dist/core/mail/markdownMail.d.ts",
495
+ "import": "./dist/entries/mail/markdownMail.js",
496
+ "default": "./dist/entries/mail/markdownMail.js"
497
+ },
498
+ "./mail/markdownMailable": {
499
+ "types": "./dist/core/mail/markdownMailable.d.ts",
500
+ "import": "./dist/entries/mail/markdownMailable.js",
501
+ "default": "./dist/entries/mail/markdownMailable.js"
502
+ },
348
503
  "./metrics/prometheus": {
349
504
  "types": "./dist/core/metrics/prometheus.d.ts",
350
505
  "import": "./dist/entries/metrics/prometheus.js",
351
506
  "default": "./dist/entries/metrics/prometheus.js"
352
507
  },
508
+ "./notifications": {
509
+ "types": "./dist/core/notifications/index.d.ts",
510
+ "import": "./dist/entries/notifications.js",
511
+ "default": "./dist/entries/notifications.js"
512
+ },
513
+ "./openapi/generator": {
514
+ "types": "./dist/core/openapi/generator.d.ts",
515
+ "import": "./dist/entries/openapi/generator.js",
516
+ "default": "./dist/entries/openapi/generator.js"
517
+ },
353
518
  "./openapi/registeredRoute": {
354
519
  "types": "./dist/core/openapi/registeredRoute.d.ts",
355
520
  "import": "./dist/entries/openapi/registeredRoute.js",
356
521
  "default": "./dist/entries/openapi/registeredRoute.js"
357
522
  },
523
+ "./openapi/validate": {
524
+ "types": "./dist/core/openapi/validate.d.ts",
525
+ "import": "./dist/entries/openapi/validate.js",
526
+ "default": "./dist/entries/openapi/validate.js"
527
+ },
358
528
  "./pagination": {
359
529
  "types": "./dist/core/pagination/index.d.ts",
360
530
  "import": "./dist/entries/pagination.js",
@@ -415,6 +585,11 @@
415
585
  "import": "./dist/entries/runtime/applicationRegistry.js",
416
586
  "default": "./dist/entries/runtime/applicationRegistry.js"
417
587
  },
588
+ "./runtime/asyncContextStore": {
589
+ "types": "./dist/core/runtime/asyncContextStore.d.ts",
590
+ "import": "./dist/entries/runtime/asyncContextStore.js",
591
+ "default": "./dist/entries/runtime/asyncContextStore.js"
592
+ },
418
593
  "./scheduler/schedule": {
419
594
  "types": "./dist/core/scheduler/schedule.d.ts",
420
595
  "import": "./dist/entries/scheduler/schedule.js",
@@ -430,6 +605,11 @@
430
605
  "import": "./dist/entries/security/publicReads.js",
431
606
  "default": "./dist/entries/security/publicReads.js"
432
607
  },
608
+ "./security/safeFetch": {
609
+ "types": "./dist/core/security/safeFetch.d.ts",
610
+ "import": "./dist/entries/security/safeFetch.js",
611
+ "default": "./dist/entries/security/safeFetch.js"
612
+ },
433
613
  "./security/safeUrl": {
434
614
  "types": "./dist/core/security/safeUrl.d.ts",
435
615
  "import": "./dist/entries/security/safeUrl.js",
@@ -450,6 +630,11 @@
450
630
  "import": "./dist/entries/security/stripeWebhook.js",
451
631
  "default": "./dist/entries/security/stripeWebhook.js"
452
632
  },
633
+ "./security/timingSafeCompare": {
634
+ "types": "./dist/core/security/timingSafeCompare.d.ts",
635
+ "import": "./dist/entries/security/timingSafeCompare.js",
636
+ "default": "./dist/entries/security/timingSafeCompare.js"
637
+ },
453
638
  "./security/tokenExpiry": {
454
639
  "types": "./dist/core/security/tokenExpiry.d.ts",
455
640
  "import": "./dist/entries/security/tokenExpiry.js",
@@ -475,6 +660,11 @@
475
660
  "import": "./dist/entries/tenant/tenantDatabaseScope.js",
476
661
  "default": "./dist/entries/tenant/tenantDatabaseScope.js"
477
662
  },
663
+ "./tenant/databaseTenantContext": {
664
+ "types": "./dist/core/tenant/databaseTenantContext.d.ts",
665
+ "import": "./dist/entries/tenant/databaseTenantContext.js",
666
+ "default": "./dist/entries/tenant/databaseTenantContext.js"
667
+ },
478
668
  "./tenant/tenantMiddleware": {
479
669
  "types": "./dist/core/tenant/tenantMiddleware.d.ts",
480
670
  "import": "./dist/entries/tenant/tenantMiddleware.js",
@@ -485,6 +675,11 @@
485
675
  "import": "./dist/entries/tracing/traceContext.js",
486
676
  "default": "./dist/entries/tracing/traceContext.js"
487
677
  },
678
+ "./tracing/tracingMiddleware": {
679
+ "types": "./dist/core/tracing/tracingMiddleware.d.ts",
680
+ "import": "./dist/entries/tracing/tracingMiddleware.js",
681
+ "default": "./dist/entries/tracing/tracingMiddleware.js"
682
+ },
488
683
  "./validation/rules": {
489
684
  "types": "./dist/core/validation/rules.d.ts",
490
685
  "import": "./dist/entries/validation/rules.js",
@@ -507,7 +702,7 @@
507
702
  "build:bundle": "bun build index.ts --outdir dist --target bun --external bun --external eta",
508
703
  "build:types": "tsc -p tsconfig.types.json",
509
704
  "prepublishOnly": "bun run build && bun ../../scripts/prepare-core-package-publish.ts",
510
- "build:subpaths": "bun build entries/auth/oauth/oidcProvider.ts entries/auth/oauth/providers.ts entries/auth/oauth/samlProvider.ts entries/auth/oauth/types.ts entries/auth/password.ts entries/auth/sessionCookie.ts entries/auth/sessionGuard.ts entries/auth/tokenHash.ts entries/audit/exportAuditLogs.ts entries/cache/tags.ts entries/cache/createCacheStore.ts entries/cache/repository.ts entries/cache/simpleCache.ts entries/cache/simpleCacheStore.ts entries/config/envSchema.ts entries/contracts/serviceTokens.ts entries/contracts/container.ts entries/contracts/di.ts entries/crypto/fieldEncryption.ts entries/crypto/mfaSecret.ts entries/database/baseRepository.ts entries/database/bindConnection.ts entries/database/boundConnection.ts entries/database/connection.ts entries/database/errors.ts entries/database/factory.ts entries/database/model.ts entries/database/query.ts entries/database/relationships.ts entries/database/seeders.ts entries/database/table.ts entries/database/transaction.ts entries/database/types.ts entries/errors/http.ts entries/http/authMiddleware.ts entries/http/authorizeMiddleware.ts entries/http/bodySizeLimitMiddleware.ts entries/http/cookies.ts entries/http/csrfProtection.ts entries/http/contentNegotiation.ts entries/http/csrfToken.ts entries/http/etag.ts entries/http/flashSession.ts entries/http/metricsMiddleware.ts entries/http/parseFormBody.ts entries/http/parseMultipartUpload.ts entries/http/resources.ts entries/http/securedRouteModelBinding.ts entries/http/webErrorResponse.ts entries/http/webFormRequest.ts entries/jobs/dispatchWebhookJob.ts entries/jobs/invalidateCacheTagsJob.ts entries/lifecycle/gracefulShutdown.ts entries/logging/logger.ts entries/metrics/prometheus.ts entries/openapi/registeredRoute.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/scheduler/schedule.ts entries/security/oauthState.ts entries/security/publicReads.ts entries/security/safeUrl.ts entries/security/scimTenantTokens.ts entries/security/stripeWebhook.ts entries/security/tokenExpiry.ts entries/security/totp.ts entries/storage/storage.ts entries/tenant/tenantDatabaseScope.ts entries/validation/rules.ts entries/view.ts --outdir dist --root . --target bun --external bun --external eta",
705
+ "build:subpaths": "bun build entries/auth/abilityChecker.ts entries/auth/membershipMiddleware.ts entries/auth/oauth/oidcProvider.ts entries/auth/oauth/providers.ts entries/auth/oauth/samlProvider.ts entries/auth/oauth/types.ts entries/auth/password.ts entries/auth/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/cache/tags.ts entries/cache/createCacheStore.ts entries/cache/repository.ts entries/cache/simpleCache.ts entries/cache/simpleCacheStore.ts entries/config/envSchema.ts entries/contracts/serviceTokens.ts entries/contracts/container.ts entries/contracts/di.ts entries/crypto/fieldEncryption.ts entries/crypto/mfaSecret.ts entries/database/baseRepository.ts entries/database/bindConnection.ts entries/database/boundConnection.ts entries/database/connection.ts entries/database/errors.ts entries/database/factory.ts entries/database/migrations.ts entries/database/migrations/types.ts entries/database/model.ts entries/database/query.ts entries/database/relationships.ts entries/database/seeders.ts entries/database/seeders/types.ts entries/database/schema.ts entries/database/table.ts entries/database/transaction.ts entries/database/types.ts entries/errors/http.ts entries/http/authMiddleware.ts entries/http/authorizeMiddleware.ts entries/http/bodySizeLimitMiddleware.ts entries/http/cookies.ts entries/http/contentNegotiation.ts entries/http/conditionalResponse.ts entries/http/corsMiddleware.ts entries/http/csrfMiddleware.ts entries/http/csrfProtection.ts entries/http/csrfToken.ts entries/http/etag.ts entries/http/flashSession.ts entries/http/flashMiddleware.ts entries/http/formRequest.ts entries/http/metricsMiddleware.ts entries/http/loginThrottleMiddleware.ts entries/http/memoryThrottleMiddleware.ts entries/http/parseFormBody.ts entries/http/parseMultipartUpload.ts entries/http/requireAbilityMiddleware.ts entries/http/requireAuthMiddleware.ts entries/http/requireGlobalAdminMiddleware.ts entries/http/requireWebAuthMiddleware.ts entries/http/resources.ts entries/http/route.ts entries/http/routeMiddleware.ts entries/http/routeModelBinding.ts entries/http/scimThrottleMiddleware.ts entries/http/securityHeadersMiddleware.ts entries/http/securedRouteModelBinding.ts entries/http/webErrorResponse.ts entries/http/webFormRequest.ts entries/http/throttleMiddleware.ts entries/jobs/dispatchWebhookJob.ts entries/jobs/invalidateCacheTagsJob.ts entries/lifecycle/gracefulShutdown.ts entries/logging/logger.ts entries/logging/requestLoggingMiddleware.ts entries/mail/mailer.ts entries/mail/markdownMail.ts entries/mail/markdownMailable.ts entries/metrics/prometheus.ts entries/notifications.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/asyncContextStore.ts entries/scheduler/schedule.ts entries/security/oauthState.ts entries/security/publicReads.ts entries/security/safeFetch.ts entries/security/safeUrl.ts entries/security/scimTenantTokens.ts entries/security/stripeWebhook.ts entries/security/timingSafeCompare.ts entries/security/tokenExpiry.ts entries/security/totp.ts entries/storage/storage.ts entries/tenant/tenantDatabaseScope.ts entries/tenant/databaseTenantContext.ts entries/tracing/tracingMiddleware.ts entries/validation/rules.ts entries/view.ts --outdir dist --root . --target bun --external bun --external eta",
511
706
  "build:shims": "bun ../../scripts/write-core-shared-shims.ts"
512
707
  },
513
708
  "publishConfig": {