@getstrata/core 0.5.43 → 0.5.45

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 (40) hide show
  1. package/dist/entries/admin/types.js +1 -0
  2. package/dist/entries/auth/abilityChecker.js +1 -0
  3. package/dist/entries/auth/membershipMiddleware.js +298 -0
  4. package/dist/entries/auth/scimAuthMiddleware.js +10 -0
  5. package/dist/entries/auth/sessionGuard.js +14 -0
  6. package/dist/entries/database/bindConnection.js +1 -22
  7. package/dist/entries/database/boundConnection.js +1 -19
  8. package/dist/entries/database/connection.js +1 -12
  9. package/dist/entries/database/defaultConnection.js +1 -0
  10. package/dist/entries/database/migrations/types.js +1 -0
  11. package/dist/entries/database/migrations.js +127 -0
  12. package/dist/entries/database/repositoryConnection.js +1 -0
  13. package/dist/entries/database/seeders/types.js +1 -0
  14. package/dist/entries/http/conditionalResponse.js +192 -0
  15. package/dist/entries/http/corsMiddleware.js +54 -0
  16. package/dist/entries/http/csrfMiddleware.js +236 -0
  17. package/dist/entries/http/csrfToken.js +3 -0
  18. package/dist/entries/http/flashMiddleware.js +143 -0
  19. package/dist/entries/http/formRequest.js +158 -0
  20. package/dist/entries/http/loginThrottleMiddleware.js +46 -0
  21. package/dist/entries/http/memoryThrottleMiddleware.js +30 -0
  22. package/dist/entries/http/pagination.js +185 -0
  23. package/dist/entries/http/requireAbilityMiddleware.js +110 -0
  24. package/dist/entries/http/requireAuthMiddleware.js +80 -0
  25. package/dist/entries/http/requireGlobalAdminMiddleware.js +147 -0
  26. package/dist/entries/http/requireWebAuthMiddleware.js +107 -0
  27. package/dist/entries/http/route.js +8 -0
  28. package/dist/entries/http/routeMiddleware.js +32 -0
  29. package/dist/entries/http/routeModelBinding.js +147 -0
  30. package/dist/entries/http/scimThrottleMiddleware.js +23 -0
  31. package/dist/entries/http/securedRouteModelBinding.js +16 -0
  32. package/dist/entries/http/securityHeadersMiddleware.js +77 -0
  33. package/dist/entries/http/throttleMiddleware.js +87 -0
  34. package/dist/entries/http/webErrorResponse.js +14 -0
  35. package/dist/entries/http/webFormRequest.js +16 -0
  36. package/dist/entries/logging/requestLoggingMiddleware.js +89 -0
  37. package/dist/entries/tenant/tenantDatabaseScope.js +10 -0
  38. package/dist/entries/tracing/tracingMiddleware.js +103 -0
  39. package/dist/entries/view.js +14 -0
  40. package/package.json +147 -7
@@ -140,8 +140,24 @@ function currentTenant() {
140
140
  function currentTenantId() {
141
141
  return currentTenant()?.id ?? 1;
142
142
  }
143
+ function rateLimitMultiplierForPlan(plan) {
144
+ switch (plan) {
145
+ case "enterprise":
146
+ return 4;
147
+ case "pro":
148
+ return 2;
149
+ default:
150
+ return 1;
151
+ }
152
+ }
143
153
 
144
154
  // ../../src/core/http/validation.ts
155
+ function getQueryParams(request) {
156
+ if (!request) {
157
+ return new URLSearchParams;
158
+ }
159
+ return new URL(request.url).searchParams;
160
+ }
145
161
  async function parseJsonBody(request, validator) {
146
162
  let payload;
147
163
  try {
@@ -0,0 +1,89 @@
1
+ // @bun
2
+ // ../../src/core/runtime/asyncContextStore.ts
3
+ import { AsyncLocalStorage } from "async_hooks";
4
+ function createAsyncContextStore(key) {
5
+ const symbol = Symbol.for(key);
6
+ const globalRecord = globalThis;
7
+ const existing = globalRecord[symbol];
8
+ if (existing) {
9
+ return existing;
10
+ }
11
+ const store = new AsyncLocalStorage;
12
+ globalRecord[symbol] = store;
13
+ return store;
14
+ }
15
+
16
+ // ../../src/core/http/requestMetaContext.ts
17
+ var requestMetaContext = createAsyncContextStore("@getstrata/requestMetaContext");
18
+ function runWithRequestMeta(meta, callback) {
19
+ return requestMetaContext.run(meta, callback);
20
+ }
21
+ function currentRequestMeta() {
22
+ return requestMetaContext.getStore() ?? {
23
+ ipAddress: null,
24
+ userAgent: null
25
+ };
26
+ }
27
+
28
+ // ../../src/core/logging/logger.ts
29
+ class Logger {
30
+ channel;
31
+ constructor(channel = "app") {
32
+ this.channel = channel;
33
+ }
34
+ write(level, message, context = {}) {
35
+ const entry = {
36
+ level,
37
+ channel: this.channel,
38
+ message,
39
+ timestamp: new Date().toISOString(),
40
+ ...context
41
+ };
42
+ const line = JSON.stringify(entry);
43
+ if (level === "error") {
44
+ console.error(line);
45
+ return;
46
+ }
47
+ console.log(line);
48
+ }
49
+ debug(message, context) {
50
+ this.write("debug", message, context);
51
+ }
52
+ info(message, context) {
53
+ this.write("info", message, context);
54
+ }
55
+ warn(message, context) {
56
+ this.write("warn", message, context);
57
+ }
58
+ error(message, context) {
59
+ this.write("error", message, context);
60
+ }
61
+ }
62
+ var appLogger = new Logger("app");
63
+
64
+ // ../../src/core/logging/requestLoggingMiddleware.ts
65
+ function createRequestLoggingMiddleware() {
66
+ return async (request, next) => {
67
+ return await runWithRequestMeta({
68
+ ipAddress: request.headers.get("x-forwarded-for")?.split(",")[0]?.trim() ?? request.headers.get("x-real-ip"),
69
+ userAgent: request.headers.get("user-agent"),
70
+ request
71
+ }, async () => {
72
+ const startedAt = performance.now();
73
+ const requestId = request.headers.get("x-request-id") ?? crypto.randomUUID();
74
+ const response = await next();
75
+ const durationMs = Math.round(performance.now() - startedAt);
76
+ appLogger.info("HTTP request completed", {
77
+ requestId,
78
+ method: request.method,
79
+ path: new URL(request.url).pathname,
80
+ status: response.status,
81
+ durationMs
82
+ });
83
+ return response;
84
+ });
85
+ };
86
+ }
87
+ export {
88
+ createRequestLoggingMiddleware
89
+ };
@@ -84,6 +84,16 @@ function currentTenant() {
84
84
  function currentTenantId() {
85
85
  return currentTenant()?.id ?? 1;
86
86
  }
87
+ function rateLimitMultiplierForPlan(plan) {
88
+ switch (plan) {
89
+ case "enterprise":
90
+ return 4;
91
+ case "pro":
92
+ return 2;
93
+ default:
94
+ return 1;
95
+ }
96
+ }
87
97
 
88
98
  // ../../src/core/tenant/tenantDatabaseScope.ts
89
99
  async function applyTenantContextToTransaction(transaction, tenantId) {
@@ -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
+ };
@@ -2610,6 +2610,7 @@ var db = new Proxy(function database() {}, {
2610
2610
  return typeof value === "function" ? value.bind(connection) : value;
2611
2611
  }
2612
2612
  });
2613
+ var connection_default = db;
2613
2614
 
2614
2615
  // ../../src/modules/user/apiTokenTable.ts
2615
2616
  var apiTokenTable = defineTable({
@@ -2751,6 +2752,9 @@ function currentAuthUser() {
2751
2752
 
2752
2753
  // ../../src/core/http/requestMetaContext.ts
2753
2754
  var requestMetaContext = createAsyncContextStore("@getstrata/requestMetaContext");
2755
+ function runWithRequestMeta(meta, callback) {
2756
+ return requestMetaContext.run(meta, callback);
2757
+ }
2754
2758
  function currentRequestMeta() {
2755
2759
  return requestMetaContext.getStore() ?? {
2756
2760
  ipAddress: null,
@@ -2844,6 +2848,16 @@ function currentTenant() {
2844
2848
  function currentTenantId() {
2845
2849
  return currentTenant()?.id ?? 1;
2846
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
+ }
2847
2861
 
2848
2862
  // ../../src/domain/abilities.ts
2849
2863
  var MEMBER_ABILITIES = [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getstrata/core",
3
- "version": "0.5.43",
3
+ "version": "0.5.45",
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",
@@ -115,6 +125,11 @@
115
125
  "import": "./dist/entries/admin/registry.js",
116
126
  "default": "./dist/entries/admin/registry.js"
117
127
  },
128
+ "./admin/types": {
129
+ "types": "./dist/core/admin/types.d.ts",
130
+ "import": "./dist/entries/admin/types.js",
131
+ "default": "./dist/entries/admin/types.js"
132
+ },
118
133
  "./cache/tags": {
119
134
  "types": "./dist/core/cache/tags.d.ts",
120
135
  "import": "./dist/entries/cache/tags.js",
@@ -195,6 +210,11 @@
195
210
  "import": "./dist/entries/database/connection.js",
196
211
  "default": "./dist/entries/database/connection.js"
197
212
  },
213
+ "./database/defaultConnection": {
214
+ "types": "./dist/core/database/defaultConnection.d.ts",
215
+ "import": "./dist/entries/database/defaultConnection.js",
216
+ "default": "./dist/entries/database/defaultConnection.js"
217
+ },
198
218
  "./database/errors": {
199
219
  "types": "./dist/core/database/errors.d.ts",
200
220
  "import": "./dist/entries/database/errors.js",
@@ -205,6 +225,16 @@
205
225
  "import": "./dist/entries/database/factory.js",
206
226
  "default": "./dist/entries/database/factory.js"
207
227
  },
228
+ "./database/migrations": {
229
+ "types": "./dist/core/database/migrations/runner.d.ts",
230
+ "import": "./dist/entries/database/migrations.js",
231
+ "default": "./dist/entries/database/migrations.js"
232
+ },
233
+ "./database/migrations/types": {
234
+ "types": "./dist/core/database/migrations/types.d.ts",
235
+ "import": "./dist/entries/database/migrations/types.js",
236
+ "default": "./dist/entries/database/migrations/types.js"
237
+ },
208
238
  "./database/model": {
209
239
  "types": "./dist/core/database/model.d.ts",
210
240
  "import": "./dist/entries/database/model.js",
@@ -220,11 +250,21 @@
220
250
  "import": "./dist/entries/database/relationships.js",
221
251
  "default": "./dist/entries/database/relationships.js"
222
252
  },
253
+ "./database/repositoryConnection": {
254
+ "types": "./dist/core/database/repositoryConnection.d.ts",
255
+ "import": "./dist/entries/database/repositoryConnection.js",
256
+ "default": "./dist/entries/database/repositoryConnection.js"
257
+ },
223
258
  "./database/seeders": {
224
259
  "types": "./dist/core/database/seeders/runner.d.ts",
225
260
  "import": "./dist/entries/database/seeders.js",
226
261
  "default": "./dist/entries/database/seeders.js"
227
262
  },
263
+ "./database/seeders/types": {
264
+ "types": "./dist/core/database/seeders/types.d.ts",
265
+ "import": "./dist/entries/database/seeders/types.js",
266
+ "default": "./dist/entries/database/seeders/types.js"
267
+ },
228
268
  "./database/schema": {
229
269
  "types": "./dist/core/database/schema/index.d.ts",
230
270
  "import": "./dist/entries/database/schema.js",
@@ -280,16 +320,31 @@
280
320
  "import": "./dist/entries/http/cookies.js",
281
321
  "default": "./dist/entries/http/cookies.js"
282
322
  },
283
- "./http/csrfProtection": {
284
- "types": "./dist/core/http/csrfProtection.d.ts",
285
- "import": "./dist/entries/http/csrfProtection.js",
286
- "default": "./dist/entries/http/csrfProtection.js"
287
- },
288
323
  "./http/contentNegotiation": {
289
324
  "types": "./dist/core/http/contentNegotiation.d.ts",
290
325
  "import": "./dist/entries/http/contentNegotiation.js",
291
326
  "default": "./dist/entries/http/contentNegotiation.js"
292
327
  },
328
+ "./http/conditionalResponse": {
329
+ "types": "./dist/core/http/conditionalResponse.d.ts",
330
+ "import": "./dist/entries/http/conditionalResponse.js",
331
+ "default": "./dist/entries/http/conditionalResponse.js"
332
+ },
333
+ "./http/corsMiddleware": {
334
+ "types": "./dist/core/http/corsMiddleware.d.ts",
335
+ "import": "./dist/entries/http/corsMiddleware.js",
336
+ "default": "./dist/entries/http/corsMiddleware.js"
337
+ },
338
+ "./http/csrfMiddleware": {
339
+ "types": "./dist/core/http/csrfMiddleware.d.ts",
340
+ "import": "./dist/entries/http/csrfMiddleware.js",
341
+ "default": "./dist/entries/http/csrfMiddleware.js"
342
+ },
343
+ "./http/csrfProtection": {
344
+ "types": "./dist/core/http/csrfProtection.d.ts",
345
+ "import": "./dist/entries/http/csrfProtection.js",
346
+ "default": "./dist/entries/http/csrfProtection.js"
347
+ },
293
348
  "./http/csrfToken": {
294
349
  "types": "./dist/core/http/csrfToken.d.ts",
295
350
  "import": "./dist/entries/http/csrfToken.js",
@@ -305,6 +360,16 @@
305
360
  "import": "./dist/entries/http/flashSession.js",
306
361
  "default": "./dist/entries/http/flashSession.js"
307
362
  },
363
+ "./http/flashMiddleware": {
364
+ "types": "./dist/core/http/flashMiddleware.d.ts",
365
+ "import": "./dist/entries/http/flashMiddleware.js",
366
+ "default": "./dist/entries/http/flashMiddleware.js"
367
+ },
368
+ "./http/formRequest": {
369
+ "types": "./dist/core/http/formRequest.d.ts",
370
+ "import": "./dist/entries/http/formRequest.js",
371
+ "default": "./dist/entries/http/formRequest.js"
372
+ },
308
373
  "./http/middleware": {
309
374
  "types": "./dist/core/http/middleware.d.ts",
310
375
  "import": "./dist/entries/http/middleware.js",
@@ -315,6 +380,21 @@
315
380
  "import": "./dist/entries/http/metricsMiddleware.js",
316
381
  "default": "./dist/entries/http/metricsMiddleware.js"
317
382
  },
383
+ "./http/loginThrottleMiddleware": {
384
+ "types": "./dist/core/http/loginThrottleMiddleware.d.ts",
385
+ "import": "./dist/entries/http/loginThrottleMiddleware.js",
386
+ "default": "./dist/entries/http/loginThrottleMiddleware.js"
387
+ },
388
+ "./http/memoryThrottleMiddleware": {
389
+ "types": "./dist/core/http/memoryThrottleMiddleware.d.ts",
390
+ "import": "./dist/entries/http/memoryThrottleMiddleware.js",
391
+ "default": "./dist/entries/http/memoryThrottleMiddleware.js"
392
+ },
393
+ "./http/pagination": {
394
+ "types": "./dist/core/http/pagination.d.ts",
395
+ "import": "./dist/entries/http/pagination.js",
396
+ "default": "./dist/entries/http/pagination.js"
397
+ },
318
398
  "./http/parseFormBody": {
319
399
  "types": "./dist/core/http/parseFormBody.d.ts",
320
400
  "import": "./dist/entries/http/parseFormBody.js",
@@ -325,11 +405,56 @@
325
405
  "import": "./dist/entries/http/parseMultipartUpload.js",
326
406
  "default": "./dist/entries/http/parseMultipartUpload.js"
327
407
  },
408
+ "./http/requireAbilityMiddleware": {
409
+ "types": "./dist/core/http/requireAbilityMiddleware.d.ts",
410
+ "import": "./dist/entries/http/requireAbilityMiddleware.js",
411
+ "default": "./dist/entries/http/requireAbilityMiddleware.js"
412
+ },
413
+ "./http/requireAuthMiddleware": {
414
+ "types": "./dist/core/http/requireAuthMiddleware.d.ts",
415
+ "import": "./dist/entries/http/requireAuthMiddleware.js",
416
+ "default": "./dist/entries/http/requireAuthMiddleware.js"
417
+ },
418
+ "./http/requireGlobalAdminMiddleware": {
419
+ "types": "./dist/core/http/requireGlobalAdminMiddleware.d.ts",
420
+ "import": "./dist/entries/http/requireGlobalAdminMiddleware.js",
421
+ "default": "./dist/entries/http/requireGlobalAdminMiddleware.js"
422
+ },
423
+ "./http/requireWebAuthMiddleware": {
424
+ "types": "./dist/core/http/requireWebAuthMiddleware.d.ts",
425
+ "import": "./dist/entries/http/requireWebAuthMiddleware.js",
426
+ "default": "./dist/entries/http/requireWebAuthMiddleware.js"
427
+ },
328
428
  "./http/resources": {
329
429
  "types": "./dist/core/http/resources.d.ts",
330
430
  "import": "./dist/entries/http/resources.js",
331
431
  "default": "./dist/entries/http/resources.js"
332
432
  },
433
+ "./http/route": {
434
+ "types": "./dist/core/http/route.d.ts",
435
+ "import": "./dist/entries/http/route.js",
436
+ "default": "./dist/entries/http/route.js"
437
+ },
438
+ "./http/routeMiddleware": {
439
+ "types": "./dist/core/http/routeMiddleware.d.ts",
440
+ "import": "./dist/entries/http/routeMiddleware.js",
441
+ "default": "./dist/entries/http/routeMiddleware.js"
442
+ },
443
+ "./http/routeModelBinding": {
444
+ "types": "./dist/core/http/routeModelBinding.d.ts",
445
+ "import": "./dist/entries/http/routeModelBinding.js",
446
+ "default": "./dist/entries/http/routeModelBinding.js"
447
+ },
448
+ "./http/scimThrottleMiddleware": {
449
+ "types": "./dist/core/http/scimThrottleMiddleware.d.ts",
450
+ "import": "./dist/entries/http/scimThrottleMiddleware.js",
451
+ "default": "./dist/entries/http/scimThrottleMiddleware.js"
452
+ },
453
+ "./http/securityHeadersMiddleware": {
454
+ "types": "./dist/core/http/securityHeadersMiddleware.d.ts",
455
+ "import": "./dist/entries/http/securityHeadersMiddleware.js",
456
+ "default": "./dist/entries/http/securityHeadersMiddleware.js"
457
+ },
333
458
  "./http/securedRouteModelBinding": {
334
459
  "types": "./dist/core/http/securedRouteModelBinding.d.ts",
335
460
  "import": "./dist/entries/http/securedRouteModelBinding.js",
@@ -350,6 +475,11 @@
350
475
  "import": "./dist/entries/http/webFormRequest.js",
351
476
  "default": "./dist/entries/http/webFormRequest.js"
352
477
  },
478
+ "./http/throttleMiddleware": {
479
+ "types": "./dist/core/http/throttleMiddleware.d.ts",
480
+ "import": "./dist/entries/http/throttleMiddleware.js",
481
+ "default": "./dist/entries/http/throttleMiddleware.js"
482
+ },
353
483
  "./jobs/dispatchWebhookJob": {
354
484
  "types": "./dist/core/jobs/dispatchWebhookJob.d.ts",
355
485
  "import": "./dist/entries/jobs/dispatchWebhookJob.js",
@@ -370,6 +500,11 @@
370
500
  "import": "./dist/entries/logging/logger.js",
371
501
  "default": "./dist/entries/logging/logger.js"
372
502
  },
503
+ "./logging/requestLoggingMiddleware": {
504
+ "types": "./dist/core/logging/requestLoggingMiddleware.d.ts",
505
+ "import": "./dist/entries/logging/requestLoggingMiddleware.js",
506
+ "default": "./dist/entries/logging/requestLoggingMiddleware.js"
507
+ },
373
508
  "./mail/mailer": {
374
509
  "types": "./dist/core/mail/mailer.d.ts",
375
510
  "import": "./dist/entries/mail/mailer.js",
@@ -560,6 +695,11 @@
560
695
  "import": "./dist/entries/tracing/traceContext.js",
561
696
  "default": "./dist/entries/tracing/traceContext.js"
562
697
  },
698
+ "./tracing/tracingMiddleware": {
699
+ "types": "./dist/core/tracing/tracingMiddleware.d.ts",
700
+ "import": "./dist/entries/tracing/tracingMiddleware.js",
701
+ "default": "./dist/entries/tracing/tracingMiddleware.js"
702
+ },
563
703
  "./validation/rules": {
564
704
  "types": "./dist/core/validation/rules.d.ts",
565
705
  "import": "./dist/entries/validation/rules.js",
@@ -582,7 +722,7 @@
582
722
  "build:bundle": "bun build index.ts --outdir dist --target bun --external bun --external eta",
583
723
  "build:types": "tsc -p tsconfig.types.json",
584
724
  "prepublishOnly": "bun run build && bun ../../scripts/prepare-core-package-publish.ts",
585
- "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/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/model.ts entries/database/query.ts entries/database/relationships.ts entries/database/seeders.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/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/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/validation/rules.ts entries/view.ts --outdir dist --root . --target bun --external bun --external eta",
725
+ "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/admin/types.ts entries/cache/tags.ts entries/cache/createCacheStore.ts entries/cache/repository.ts entries/cache/simpleCache.ts entries/cache/simpleCacheStore.ts entries/config/envSchema.ts entries/contracts/serviceTokens.ts entries/contracts/container.ts entries/contracts/di.ts entries/crypto/fieldEncryption.ts entries/crypto/mfaSecret.ts entries/database/baseRepository.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/pagination.ts entries/http/parseFormBody.ts entries/http/parseMultipartUpload.ts entries/http/requireAbilityMiddleware.ts entries/http/requireAuthMiddleware.ts entries/http/requireGlobalAdminMiddleware.ts entries/http/requireWebAuthMiddleware.ts entries/http/resources.ts entries/http/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",
586
726
  "build:shims": "bun ../../scripts/write-core-shared-shims.ts"
587
727
  },
588
728
  "publishConfig": {