@getstrata/core 0.5.67 → 0.5.68

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 CHANGED
@@ -1,5 +1,10 @@
1
1
  # @getstrata/core changelog
2
2
 
3
+ ## 0.5.68
4
+
5
+ - Published core no longer imports WorkHub `src/config`. Frontend mode, queue retries, CORS, and upload limits read env (`FRONTEND_MODE`, `QUEUE_*`, `CORS_ALLOWED_ORIGINS`, `MAX_UPLOAD_BYTES`).
6
+ - `@getstrata/core/runtime/frontendMode` exports `readFrontendMode` / `isViewsEnabled` / `isSpaEnabled`.
7
+
3
8
  ## 0.5.67
4
9
 
5
10
  - OpenAPI title, server URLs, and generated SDK class name come from `APP_NAME` / `APP_URL` / `API_PREFIX` / `APP_SDK_CLASS` instead of importing WorkHub `src/config/app`.
package/README.md CHANGED
@@ -82,7 +82,7 @@ import type { Migration } from "@getstrata/core/database/migrations/types";
82
82
  Package name: **`@getstrata/core`** (npm org [`@getstrata`](https://www.npmjs.com/org/getstrata)).
83
83
 
84
84
  1. Add `NPM_TOKEN` to GitHub repository secrets.
85
- 2. Tag a release: `git tag v0.5.69 && git push origin v0.5.69`
85
+ 2. Tag a release: `git tag v0.5.70 && git push origin v0.5.70`
86
86
  3. [Release workflow](../../.github/workflows/release.yml) builds and runs `npm publish --access public`.
87
87
 
88
88
  Previously published as `@eyk-workhub/framework@0.1.0`, deprecated in favor of this package.
@@ -1,3 +1,10 @@
1
1
  import type { Middleware } from "./middleware";
2
+ interface CorsConfig {
3
+ allowedOrigins: string[];
4
+ allowedMethods: string[];
5
+ allowedHeaders: string[];
6
+ maxAgeSeconds: number;
7
+ }
8
+ declare function resolveCorsConfig(): CorsConfig;
2
9
  declare function createCorsMiddleware(): Middleware;
3
- export { createCorsMiddleware };
10
+ export { createCorsMiddleware, resolveCorsConfig };
@@ -3,6 +3,7 @@ interface QueueConfig {
3
3
  maxAttempts: number;
4
4
  backoffMs: number;
5
5
  }
6
+ declare function resolveQueueConfig(): QueueConfig;
6
7
  declare const queueConfig: QueueConfig;
7
8
  export type { QueueConfig };
8
- export { queueConfig };
9
+ export { queueConfig, resolveQueueConfig };
@@ -1,22 +1,22 @@
1
1
  // @bun
2
- // ../../src/config/cors.ts
3
- var corsConfig = {
4
- allowedOrigins: (process.env.CORS_ALLOWED_ORIGINS ?? "*").split(",").map((origin) => origin.trim()).filter(Boolean),
5
- allowedMethods: ["GET", "POST", "PATCH", "PUT", "DELETE", "OPTIONS"],
6
- allowedHeaders: [
7
- "Authorization",
8
- "Content-Type",
9
- "X-Request-Id",
10
- "X-Tenant-Id",
11
- "X-Authenticated-User-Id",
12
- "X-Authenticated-User-Role",
13
- "If-Match",
14
- "If-None-Match"
15
- ],
16
- maxAgeSeconds: 86400
17
- };
18
-
19
2
  // ../../src/core/http/corsMiddleware.ts
3
+ function resolveCorsConfig() {
4
+ return {
5
+ allowedOrigins: (process.env.CORS_ALLOWED_ORIGINS ?? "*").split(",").map((origin) => origin.trim()).filter(Boolean),
6
+ allowedMethods: ["GET", "POST", "PATCH", "PUT", "DELETE", "OPTIONS"],
7
+ allowedHeaders: [
8
+ "Authorization",
9
+ "Content-Type",
10
+ "X-Request-Id",
11
+ "X-Tenant-Id",
12
+ "X-Authenticated-User-Id",
13
+ "X-Authenticated-User-Role",
14
+ "If-Match",
15
+ "If-None-Match"
16
+ ],
17
+ maxAgeSeconds: 86400
18
+ };
19
+ }
20
20
  function createCorsMiddleware() {
21
21
  return async (request, next) => {
22
22
  if (request.method === "OPTIONS") {
@@ -40,6 +40,7 @@ function createCorsMiddleware() {
40
40
  function buildCorsHeaders(request) {
41
41
  const headers = new Headers;
42
42
  const origin = request.headers.get("origin");
43
+ const corsConfig = resolveCorsConfig();
43
44
  const allowedOrigins = corsConfig.allowedOrigins;
44
45
  const allowOrigin = allowedOrigins.includes("*") || origin && allowedOrigins.includes(origin) ? origin ?? "*" : allowedOrigins[0] ?? "*";
45
46
  headers.set("Access-Control-Allow-Origin", allowOrigin);
@@ -50,5 +51,6 @@ function buildCorsHeaders(request) {
50
51
  return headers;
51
52
  }
52
53
  export {
53
- createCorsMiddleware
54
+ createCorsMiddleware,
55
+ resolveCorsConfig
54
56
  };
@@ -2,7 +2,7 @@
2
2
  // ../../src/core/http/parseMultipartUpload.ts
3
3
  import { BadRequestError, PayloadTooLargeError } from "@getstrata/core/errors/http";
4
4
 
5
- // ../../src/config/uploads.ts
5
+ // ../../src/core/http/uploads.ts
6
6
  var DEFAULT_MAX_UPLOAD_BYTES = 5 * 1024 * 1024;
7
7
  var ALLOWED_UPLOAD_MIME_TYPES = new Set([
8
8
  "application/pdf",
@@ -3,7 +3,7 @@
3
3
  import { currentAuthUser } from "@getstrata/core/auth/authContext";
4
4
  import { ForbiddenError } from "@getstrata/core/errors/http";
5
5
 
6
- // ../../src/config/frontend.ts
6
+ // ../../src/core/runtime/frontendMode.ts
7
7
  function readFrontendMode() {
8
8
  const mode = (process.env.FRONTEND_MODE ?? "api").trim();
9
9
  if (mode === "server-htmx") {
@@ -17,6 +17,9 @@ function readFrontendMode() {
17
17
  function isViewsEnabled() {
18
18
  return readFrontendMode() === "server-htmx";
19
19
  }
20
+ function isSpaEnabled() {
21
+ return readFrontendMode() === "spa-react";
22
+ }
20
23
 
21
24
  // ../../src/core/http/contentNegotiation.ts
22
25
  function requestPrefersJson(request) {
@@ -68,7 +68,7 @@ async function withDatabaseErrorHandling(operation) {
68
68
  // ../../src/core/http/webErrorResponse.ts
69
69
  import { HttpError as HttpError2, UnauthorizedError, ValidationError } from "@getstrata/core/errors/http";
70
70
 
71
- // ../../src/config/frontend.ts
71
+ // ../../src/core/runtime/frontendMode.ts
72
72
  function readFrontendMode() {
73
73
  const mode = (process.env.FRONTEND_MODE ?? "api").trim();
74
74
  if (mode === "server-htmx") {
@@ -82,6 +82,9 @@ function readFrontendMode() {
82
82
  function isViewsEnabled() {
83
83
  return readFrontendMode() === "server-htmx";
84
84
  }
85
+ function isSpaEnabled() {
86
+ return readFrontendMode() === "spa-react";
87
+ }
85
88
 
86
89
  // ../../src/core/view/webErrorView.ts
87
90
  import { currentRequestMeta } from "@getstrata/core/http/requestMetaContext";
@@ -2,21 +2,6 @@
2
2
  // ../../src/core/http/webErrorResponse.ts
3
3
  import { HttpError as HttpError2, UnauthorizedError, ValidationError } from "@getstrata/core/errors/http";
4
4
 
5
- // ../../src/config/frontend.ts
6
- function readFrontendMode() {
7
- const mode = (process.env.FRONTEND_MODE ?? "api").trim();
8
- if (mode === "server-htmx") {
9
- return "server-htmx";
10
- }
11
- if (mode === "spa-react") {
12
- return "spa-react";
13
- }
14
- return "api";
15
- }
16
- function isViewsEnabled() {
17
- return readFrontendMode() === "server-htmx";
18
- }
19
-
20
5
  // ../../src/core/database/errors.ts
21
6
  import {
22
7
  BadRequestError,
@@ -80,6 +65,24 @@ async function withDatabaseErrorHandling(operation) {
80
65
  }
81
66
  }
82
67
 
68
+ // ../../src/core/runtime/frontendMode.ts
69
+ function readFrontendMode() {
70
+ const mode = (process.env.FRONTEND_MODE ?? "api").trim();
71
+ if (mode === "server-htmx") {
72
+ return "server-htmx";
73
+ }
74
+ if (mode === "spa-react") {
75
+ return "spa-react";
76
+ }
77
+ return "api";
78
+ }
79
+ function isViewsEnabled() {
80
+ return readFrontendMode() === "server-htmx";
81
+ }
82
+ function isSpaEnabled() {
83
+ return readFrontendMode() === "spa-react";
84
+ }
85
+
83
86
  // ../../src/core/view/webErrorView.ts
84
87
  import { currentRequestMeta } from "@getstrata/core/http/requestMetaContext";
85
88
 
@@ -100,25 +100,27 @@ function readSharedJobRegistry() {
100
100
  }
101
101
  var jobRegistry = readSharedJobRegistry();
102
102
 
103
- // ../../src/bootstrap/config.ts
104
- import {
105
- CORE_ABILITY_CHECKER_TOKEN,
106
- CORE_AUTH_TOKEN,
107
- CORE_AUTH_USER_DIRECTORY_TOKEN,
108
- CORE_CACHE_TOKEN,
109
- CORE_CONFIG_TOKEN,
110
- CORE_EVENT_BUS_TOKEN,
111
- CORE_POLICY_GATE_TOKEN,
112
- CORE_QUEUE_TOKEN,
113
- CORE_TOKEN_SERVICE_TOKEN
114
- } from "@getstrata/core/contracts/serviceTokens";
115
- var DEFAULT_QUEUE_DRIVER = "sync";
116
-
117
- // ../../src/config/queue.ts
103
+ // ../../src/core/queue/queueConfig.ts
104
+ function resolveQueueConfig() {
105
+ const driver = process.env.QUEUE_DRIVER;
106
+ const maxAttempts = Number(process.env.QUEUE_MAX_ATTEMPTS ?? "3");
107
+ const backoffMs = Number(process.env.QUEUE_BACKOFF_MS ?? "1000");
108
+ return {
109
+ driver: driver === "redis" || driver === "async" || driver === "sync" ? driver : "sync",
110
+ maxAttempts: Number.isFinite(maxAttempts) && maxAttempts > 0 ? maxAttempts : 3,
111
+ backoffMs: Number.isFinite(backoffMs) && backoffMs >= 0 ? backoffMs : 1000
112
+ };
113
+ }
118
114
  var queueConfig = {
119
- driver: process.env.QUEUE_DRIVER === "redis" || process.env.QUEUE_DRIVER === "async" || process.env.QUEUE_DRIVER === "sync" ? process.env.QUEUE_DRIVER : DEFAULT_QUEUE_DRIVER,
120
- maxAttempts: Number(process.env.QUEUE_MAX_ATTEMPTS ?? "3"),
121
- backoffMs: Number(process.env.QUEUE_BACKOFF_MS ?? "1000")
115
+ get driver() {
116
+ return resolveQueueConfig().driver;
117
+ },
118
+ get maxAttempts() {
119
+ return resolveQueueConfig().maxAttempts;
120
+ },
121
+ get backoffMs() {
122
+ return resolveQueueConfig().backoffMs;
123
+ }
122
124
  };
123
125
 
124
126
  // ../../src/core/queue/jobRunner.ts
@@ -1,25 +1,4 @@
1
1
  // @bun
2
- // ../../src/bootstrap/config.ts
3
- import {
4
- CORE_ABILITY_CHECKER_TOKEN,
5
- CORE_AUTH_TOKEN,
6
- CORE_AUTH_USER_DIRECTORY_TOKEN,
7
- CORE_CACHE_TOKEN,
8
- CORE_CONFIG_TOKEN,
9
- CORE_EVENT_BUS_TOKEN,
10
- CORE_POLICY_GATE_TOKEN,
11
- CORE_QUEUE_TOKEN,
12
- CORE_TOKEN_SERVICE_TOKEN
13
- } from "@getstrata/core/contracts/serviceTokens";
14
- var DEFAULT_QUEUE_DRIVER = "sync";
15
-
16
- // ../../src/config/queue.ts
17
- var queueConfig = {
18
- driver: process.env.QUEUE_DRIVER === "redis" || process.env.QUEUE_DRIVER === "async" || process.env.QUEUE_DRIVER === "sync" ? process.env.QUEUE_DRIVER : DEFAULT_QUEUE_DRIVER,
19
- maxAttempts: Number(process.env.QUEUE_MAX_ATTEMPTS ?? "3"),
20
- backoffMs: Number(process.env.QUEUE_BACKOFF_MS ?? "1000")
21
- };
22
-
23
2
  // ../../src/core/queue/jobRegistry.ts
24
3
  class JobRegistry {
25
4
  factories = new Map;
@@ -57,6 +36,29 @@ function readSharedJobRegistry() {
57
36
  }
58
37
  var jobRegistry = readSharedJobRegistry();
59
38
 
39
+ // ../../src/core/queue/queueConfig.ts
40
+ function resolveQueueConfig() {
41
+ const driver = process.env.QUEUE_DRIVER;
42
+ const maxAttempts = Number(process.env.QUEUE_MAX_ATTEMPTS ?? "3");
43
+ const backoffMs = Number(process.env.QUEUE_BACKOFF_MS ?? "1000");
44
+ return {
45
+ driver: driver === "redis" || driver === "async" || driver === "sync" ? driver : "sync",
46
+ maxAttempts: Number.isFinite(maxAttempts) && maxAttempts > 0 ? maxAttempts : 3,
47
+ backoffMs: Number.isFinite(backoffMs) && backoffMs >= 0 ? backoffMs : 1000
48
+ };
49
+ }
50
+ var queueConfig = {
51
+ get driver() {
52
+ return resolveQueueConfig().driver;
53
+ },
54
+ get maxAttempts() {
55
+ return resolveQueueConfig().maxAttempts;
56
+ },
57
+ get backoffMs() {
58
+ return resolveQueueConfig().backoffMs;
59
+ }
60
+ };
61
+
60
62
  // ../../src/core/queue/jobRunner.ts
61
63
  async function runQueueJob(envelope, failedJobs) {
62
64
  const job = jobRegistry.create(envelope.name);
@@ -100,25 +100,27 @@ function readSharedJobRegistry() {
100
100
  }
101
101
  var jobRegistry = readSharedJobRegistry();
102
102
 
103
- // ../../src/bootstrap/config.ts
104
- import {
105
- CORE_ABILITY_CHECKER_TOKEN,
106
- CORE_AUTH_TOKEN,
107
- CORE_AUTH_USER_DIRECTORY_TOKEN,
108
- CORE_CACHE_TOKEN,
109
- CORE_CONFIG_TOKEN,
110
- CORE_EVENT_BUS_TOKEN,
111
- CORE_POLICY_GATE_TOKEN,
112
- CORE_QUEUE_TOKEN,
113
- CORE_TOKEN_SERVICE_TOKEN
114
- } from "@getstrata/core/contracts/serviceTokens";
115
- var DEFAULT_QUEUE_DRIVER = "sync";
116
-
117
- // ../../src/config/queue.ts
103
+ // ../../src/core/queue/queueConfig.ts
104
+ function resolveQueueConfig() {
105
+ const driver = process.env.QUEUE_DRIVER;
106
+ const maxAttempts = Number(process.env.QUEUE_MAX_ATTEMPTS ?? "3");
107
+ const backoffMs = Number(process.env.QUEUE_BACKOFF_MS ?? "1000");
108
+ return {
109
+ driver: driver === "redis" || driver === "async" || driver === "sync" ? driver : "sync",
110
+ maxAttempts: Number.isFinite(maxAttempts) && maxAttempts > 0 ? maxAttempts : 3,
111
+ backoffMs: Number.isFinite(backoffMs) && backoffMs >= 0 ? backoffMs : 1000
112
+ };
113
+ }
118
114
  var queueConfig = {
119
- driver: process.env.QUEUE_DRIVER === "redis" || process.env.QUEUE_DRIVER === "async" || process.env.QUEUE_DRIVER === "sync" ? process.env.QUEUE_DRIVER : DEFAULT_QUEUE_DRIVER,
120
- maxAttempts: Number(process.env.QUEUE_MAX_ATTEMPTS ?? "3"),
121
- backoffMs: Number(process.env.QUEUE_BACKOFF_MS ?? "1000")
115
+ get driver() {
116
+ return resolveQueueConfig().driver;
117
+ },
118
+ get maxAttempts() {
119
+ return resolveQueueConfig().maxAttempts;
120
+ },
121
+ get backoffMs() {
122
+ return resolveQueueConfig().backoffMs;
123
+ }
122
124
  };
123
125
 
124
126
  // ../../src/core/queue/jobRunner.ts
@@ -2,27 +2,6 @@
2
2
  // ../../src/core/queue/queueMetrics.ts
3
3
  var {RedisClient: RedisClient2 } = globalThis.Bun;
4
4
 
5
- // ../../src/bootstrap/config.ts
6
- import {
7
- CORE_ABILITY_CHECKER_TOKEN,
8
- CORE_AUTH_TOKEN,
9
- CORE_AUTH_USER_DIRECTORY_TOKEN,
10
- CORE_CACHE_TOKEN,
11
- CORE_CONFIG_TOKEN,
12
- CORE_EVENT_BUS_TOKEN,
13
- CORE_POLICY_GATE_TOKEN,
14
- CORE_QUEUE_TOKEN,
15
- CORE_TOKEN_SERVICE_TOKEN
16
- } from "@getstrata/core/contracts/serviceTokens";
17
- var DEFAULT_QUEUE_DRIVER = "sync";
18
-
19
- // ../../src/config/queue.ts
20
- var queueConfig = {
21
- driver: process.env.QUEUE_DRIVER === "redis" || process.env.QUEUE_DRIVER === "async" || process.env.QUEUE_DRIVER === "sync" ? process.env.QUEUE_DRIVER : DEFAULT_QUEUE_DRIVER,
22
- maxAttempts: Number(process.env.QUEUE_MAX_ATTEMPTS ?? "3"),
23
- backoffMs: Number(process.env.QUEUE_BACKOFF_MS ?? "1000")
24
- };
25
-
26
5
  // ../../src/core/queue/failedJobRepository.ts
27
6
  import { BaseRepository } from "@getstrata/core/database/baseRepository";
28
7
 
@@ -124,6 +103,29 @@ function readSharedJobRegistry() {
124
103
  }
125
104
  var jobRegistry = readSharedJobRegistry();
126
105
 
106
+ // ../../src/core/queue/queueConfig.ts
107
+ function resolveQueueConfig() {
108
+ const driver = process.env.QUEUE_DRIVER;
109
+ const maxAttempts = Number(process.env.QUEUE_MAX_ATTEMPTS ?? "3");
110
+ const backoffMs = Number(process.env.QUEUE_BACKOFF_MS ?? "1000");
111
+ return {
112
+ driver: driver === "redis" || driver === "async" || driver === "sync" ? driver : "sync",
113
+ maxAttempts: Number.isFinite(maxAttempts) && maxAttempts > 0 ? maxAttempts : 3,
114
+ backoffMs: Number.isFinite(backoffMs) && backoffMs >= 0 ? backoffMs : 1000
115
+ };
116
+ }
117
+ var queueConfig = {
118
+ get driver() {
119
+ return resolveQueueConfig().driver;
120
+ },
121
+ get maxAttempts() {
122
+ return resolveQueueConfig().maxAttempts;
123
+ },
124
+ get backoffMs() {
125
+ return resolveQueueConfig().backoffMs;
126
+ }
127
+ };
128
+
127
129
  // ../../src/core/queue/jobRunner.ts
128
130
  async function runQueueJob(envelope, failedJobs) {
129
131
  const job = jobRegistry.create(envelope.name);
@@ -87,25 +87,27 @@ function readSharedJobRegistry() {
87
87
  }
88
88
  var jobRegistry = readSharedJobRegistry();
89
89
 
90
- // ../../src/bootstrap/config.ts
91
- import {
92
- CORE_ABILITY_CHECKER_TOKEN,
93
- CORE_AUTH_TOKEN,
94
- CORE_AUTH_USER_DIRECTORY_TOKEN,
95
- CORE_CACHE_TOKEN,
96
- CORE_CONFIG_TOKEN,
97
- CORE_EVENT_BUS_TOKEN,
98
- CORE_POLICY_GATE_TOKEN,
99
- CORE_QUEUE_TOKEN,
100
- CORE_TOKEN_SERVICE_TOKEN
101
- } from "@getstrata/core/contracts/serviceTokens";
102
- var DEFAULT_QUEUE_DRIVER = "sync";
103
-
104
- // ../../src/config/queue.ts
90
+ // ../../src/core/queue/queueConfig.ts
91
+ function resolveQueueConfig() {
92
+ const driver = process.env.QUEUE_DRIVER;
93
+ const maxAttempts = Number(process.env.QUEUE_MAX_ATTEMPTS ?? "3");
94
+ const backoffMs = Number(process.env.QUEUE_BACKOFF_MS ?? "1000");
95
+ return {
96
+ driver: driver === "redis" || driver === "async" || driver === "sync" ? driver : "sync",
97
+ maxAttempts: Number.isFinite(maxAttempts) && maxAttempts > 0 ? maxAttempts : 3,
98
+ backoffMs: Number.isFinite(backoffMs) && backoffMs >= 0 ? backoffMs : 1000
99
+ };
100
+ }
105
101
  var queueConfig = {
106
- driver: process.env.QUEUE_DRIVER === "redis" || process.env.QUEUE_DRIVER === "async" || process.env.QUEUE_DRIVER === "sync" ? process.env.QUEUE_DRIVER : DEFAULT_QUEUE_DRIVER,
107
- maxAttempts: Number(process.env.QUEUE_MAX_ATTEMPTS ?? "3"),
108
- backoffMs: Number(process.env.QUEUE_BACKOFF_MS ?? "1000")
102
+ get driver() {
103
+ return resolveQueueConfig().driver;
104
+ },
105
+ get maxAttempts() {
106
+ return resolveQueueConfig().maxAttempts;
107
+ },
108
+ get backoffMs() {
109
+ return resolveQueueConfig().backoffMs;
110
+ }
109
111
  };
110
112
 
111
113
  // ../../src/core/queue/jobRunner.ts
@@ -0,0 +1,23 @@
1
+ // @bun
2
+ // ../../src/core/runtime/frontendMode.ts
3
+ function readFrontendMode() {
4
+ const mode = (process.env.FRONTEND_MODE ?? "api").trim();
5
+ if (mode === "server-htmx") {
6
+ return "server-htmx";
7
+ }
8
+ if (mode === "spa-react") {
9
+ return "spa-react";
10
+ }
11
+ return "api";
12
+ }
13
+ function isViewsEnabled() {
14
+ return readFrontendMode() === "server-htmx";
15
+ }
16
+ function isSpaEnabled() {
17
+ return readFrontendMode() === "spa-react";
18
+ }
19
+ export {
20
+ isSpaEnabled,
21
+ isViewsEnabled,
22
+ readFrontendMode
23
+ };
@@ -1,28 +1,7 @@
1
1
  // @bun
2
- // ../../src/config/features.ts
3
- function readFeatureFlags() {
4
- return {
5
- webhooks: (process.env.FEATURE_WEBHOOKS ?? "true") !== "false",
6
- fullTextSearch: (process.env.FEATURE_SEARCH ?? "true") !== "false",
7
- auditLog: (process.env.FEATURE_AUDIT_LOG ?? "true") !== "false",
8
- oauthLogin: (process.env.FEATURE_OAUTH ?? "true") !== "false",
9
- samlLogin: (process.env.FEATURE_SAML ?? "false") === "true",
10
- scim: (process.env.FEATURE_SCIM ?? "true") !== "false",
11
- billing: (process.env.FEATURE_BILLING ?? "true") !== "false",
12
- siemExport: (process.env.FEATURE_SIEM_EXPORT ?? "true") !== "false",
13
- publicReads: (process.env.FEATURE_PUBLIC_READS ?? "true") !== "false",
14
- emailVerification: (process.env.FEATURE_EMAIL_VERIFICATION ?? "false") === "true",
15
- mfa: (process.env.FEATURE_MFA ?? "false") === "true"
16
- };
17
- }
18
- var featureFlags = readFeatureFlags();
19
- function isFeatureEnabled(feature) {
20
- return readFeatureFlags()[feature];
21
- }
22
-
23
2
  // ../../src/core/security/publicReads.ts
24
3
  function isPublicReadsEnabled() {
25
- return isFeatureEnabled("publicReads");
4
+ return (process.env.FEATURE_PUBLIC_READS ?? "true") !== "false";
26
5
  }
27
6
  function guestCanViewResource() {
28
7
  return isPublicReadsEnabled();
package/dist/index.js CHANGED
@@ -4485,24 +4485,24 @@ function readRequestCookie(request, name) {
4485
4485
  function readBunRequestCookie(request, name) {
4486
4486
  return request.cookies.get(name) ?? readRequestCookie(request, name);
4487
4487
  }
4488
- // ../../src/config/cors.ts
4489
- var corsConfig = {
4490
- allowedOrigins: (process.env.CORS_ALLOWED_ORIGINS ?? "*").split(",").map((origin) => origin.trim()).filter(Boolean),
4491
- allowedMethods: ["GET", "POST", "PATCH", "PUT", "DELETE", "OPTIONS"],
4492
- allowedHeaders: [
4493
- "Authorization",
4494
- "Content-Type",
4495
- "X-Request-Id",
4496
- "X-Tenant-Id",
4497
- "X-Authenticated-User-Id",
4498
- "X-Authenticated-User-Role",
4499
- "If-Match",
4500
- "If-None-Match"
4501
- ],
4502
- maxAgeSeconds: 86400
4503
- };
4504
-
4505
4488
  // ../../src/core/http/corsMiddleware.ts
4489
+ function resolveCorsConfig() {
4490
+ return {
4491
+ allowedOrigins: (process.env.CORS_ALLOWED_ORIGINS ?? "*").split(",").map((origin) => origin.trim()).filter(Boolean),
4492
+ allowedMethods: ["GET", "POST", "PATCH", "PUT", "DELETE", "OPTIONS"],
4493
+ allowedHeaders: [
4494
+ "Authorization",
4495
+ "Content-Type",
4496
+ "X-Request-Id",
4497
+ "X-Tenant-Id",
4498
+ "X-Authenticated-User-Id",
4499
+ "X-Authenticated-User-Role",
4500
+ "If-Match",
4501
+ "If-None-Match"
4502
+ ],
4503
+ maxAgeSeconds: 86400
4504
+ };
4505
+ }
4506
4506
  function createCorsMiddleware() {
4507
4507
  return async (request, next) => {
4508
4508
  if (request.method === "OPTIONS") {
@@ -4526,6 +4526,7 @@ function createCorsMiddleware() {
4526
4526
  function buildCorsHeaders(request) {
4527
4527
  const headers = new Headers;
4528
4528
  const origin = request.headers.get("origin");
4529
+ const corsConfig = resolveCorsConfig();
4529
4530
  const allowedOrigins = corsConfig.allowedOrigins;
4530
4531
  const allowOrigin = allowedOrigins.includes("*") || origin && allowedOrigins.includes(origin) ? origin ?? "*" : allowedOrigins[0] ?? "*";
4531
4532
  headers.set("Access-Control-Allow-Origin", allowOrigin);
@@ -4950,7 +4951,7 @@ function parsePaginationQuery(request) {
4950
4951
  function paginatedResponse(data, meta, init = {}) {
4951
4952
  return Response.json({ data, meta }, init);
4952
4953
  }
4953
- // ../../src/config/uploads.ts
4954
+ // ../../src/core/http/uploads.ts
4954
4955
  var DEFAULT_MAX_UPLOAD_BYTES = 5 * 1024 * 1024;
4955
4956
  var ALLOWED_UPLOAD_MIME_TYPES = new Set([
4956
4957
  "application/pdf",
@@ -5046,7 +5047,7 @@ function toPaginatedResourceCollection(items, meta, transformer) {
5046
5047
  meta
5047
5048
  };
5048
5049
  }
5049
- // ../../src/config/frontend.ts
5050
+ // ../../src/core/runtime/frontendMode.ts
5050
5051
  function readFrontendMode() {
5051
5052
  const mode = (process.env.FRONTEND_MODE ?? "api").trim();
5052
5053
  if (mode === "server-htmx") {
@@ -6243,14 +6244,28 @@ function readSharedJobRegistry() {
6243
6244
  return registry;
6244
6245
  }
6245
6246
  var jobRegistry = readSharedJobRegistry();
6246
- // ../../src/bootstrap/config.ts
6247
- var DEFAULT_QUEUE_DRIVER = "sync";
6248
6247
 
6249
- // ../../src/config/queue.ts
6248
+ // ../../src/core/queue/queueConfig.ts
6249
+ function resolveQueueConfig() {
6250
+ const driver = process.env.QUEUE_DRIVER;
6251
+ const maxAttempts = Number(process.env.QUEUE_MAX_ATTEMPTS ?? "3");
6252
+ const backoffMs = Number(process.env.QUEUE_BACKOFF_MS ?? "1000");
6253
+ return {
6254
+ driver: driver === "redis" || driver === "async" || driver === "sync" ? driver : "sync",
6255
+ maxAttempts: Number.isFinite(maxAttempts) && maxAttempts > 0 ? maxAttempts : 3,
6256
+ backoffMs: Number.isFinite(backoffMs) && backoffMs >= 0 ? backoffMs : 1000
6257
+ };
6258
+ }
6250
6259
  var queueConfig = {
6251
- driver: process.env.QUEUE_DRIVER === "redis" || process.env.QUEUE_DRIVER === "async" || process.env.QUEUE_DRIVER === "sync" ? process.env.QUEUE_DRIVER : DEFAULT_QUEUE_DRIVER,
6252
- maxAttempts: Number(process.env.QUEUE_MAX_ATTEMPTS ?? "3"),
6253
- backoffMs: Number(process.env.QUEUE_BACKOFF_MS ?? "1000")
6260
+ get driver() {
6261
+ return resolveQueueConfig().driver;
6262
+ },
6263
+ get maxAttempts() {
6264
+ return resolveQueueConfig().maxAttempts;
6265
+ },
6266
+ get backoffMs() {
6267
+ return resolveQueueConfig().backoffMs;
6268
+ }
6254
6269
  };
6255
6270
 
6256
6271
  // ../../src/core/queue/jobRunner.ts
@@ -6549,30 +6564,9 @@ async function runDueScheduledTasks(schedule = appSchedule, now = new Date) {
6549
6564
  }
6550
6565
  return due.length;
6551
6566
  }
6552
- // ../../src/config/features.ts
6553
- function readFeatureFlags() {
6554
- return {
6555
- webhooks: (process.env.FEATURE_WEBHOOKS ?? "true") !== "false",
6556
- fullTextSearch: (process.env.FEATURE_SEARCH ?? "true") !== "false",
6557
- auditLog: (process.env.FEATURE_AUDIT_LOG ?? "true") !== "false",
6558
- oauthLogin: (process.env.FEATURE_OAUTH ?? "true") !== "false",
6559
- samlLogin: (process.env.FEATURE_SAML ?? "false") === "true",
6560
- scim: (process.env.FEATURE_SCIM ?? "true") !== "false",
6561
- billing: (process.env.FEATURE_BILLING ?? "true") !== "false",
6562
- siemExport: (process.env.FEATURE_SIEM_EXPORT ?? "true") !== "false",
6563
- publicReads: (process.env.FEATURE_PUBLIC_READS ?? "true") !== "false",
6564
- emailVerification: (process.env.FEATURE_EMAIL_VERIFICATION ?? "false") === "true",
6565
- mfa: (process.env.FEATURE_MFA ?? "false") === "true"
6566
- };
6567
- }
6568
- var featureFlags = readFeatureFlags();
6569
- function isFeatureEnabled(feature) {
6570
- return readFeatureFlags()[feature];
6571
- }
6572
-
6573
6567
  // ../../src/core/security/publicReads.ts
6574
6568
  function isPublicReadsEnabled() {
6575
- return isFeatureEnabled("publicReads");
6569
+ return (process.env.FEATURE_PUBLIC_READS ?? "true") !== "false";
6576
6570
  }
6577
6571
  function guestCanViewResource() {
6578
6572
  return isPublicReadsEnabled();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getstrata/core",
3
- "version": "0.5.67",
3
+ "version": "0.5.68",
4
4
  "description": "Strata — Laravel-inspired Bun framework public API",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -670,6 +670,11 @@
670
670
  "import": "./dist/entries/runtime/appKeyPrefix.js",
671
671
  "default": "./dist/entries/runtime/appKeyPrefix.js"
672
672
  },
673
+ "./runtime/frontendMode": {
674
+ "types": "./dist/core/runtime/frontendMode.d.ts",
675
+ "import": "./dist/entries/runtime/frontendMode.js",
676
+ "default": "./dist/entries/runtime/frontendMode.js"
677
+ },
673
678
  "./runtime/applicationRegistry": {
674
679
  "types": "./dist/core/runtime/applicationRegistry.d.ts",
675
680
  "import": "./dist/entries/runtime/applicationRegistry.js",
@@ -808,7 +813,7 @@
808
813
  "build:bundle": "bun build index.ts --outdir dist --target bun --external bun --external eta",
809
814
  "build:types": "tsc -p tsconfig.types.json",
810
815
  "prepublishOnly": "bun run build && bun ../../scripts/prepare-core-package-publish.ts",
811
- "build:subpaths": "bun build entries/auth/accessControl.ts entries/auth/abilityChecker.ts entries/auth/membershipMiddleware.ts entries/auth/membershipScope.ts entries/auth/membershipService.ts entries/auth/oauth/oidcProvider.ts entries/auth/oauth/providers.ts entries/auth/oauth/samlProvider.ts entries/auth/oauth/types.ts entries/auth/password.ts entries/auth/policy.ts entries/auth/scimAuthMiddleware.ts entries/auth/sessionCookie.ts entries/auth/sessionGuard.ts entries/auth/tokenHash.ts entries/audit/exportAuditLogs.ts entries/audit/siemFormatter.ts entries/admin/formatValue.ts entries/admin/registry.ts entries/admin/types.ts entries/cache/tags.ts entries/cache/createCacheStore.ts entries/cache/repository.ts entries/cache/simpleCache.ts entries/cache/simpleCacheStore.ts entries/config/envSchema.ts entries/contracts/serviceTokens.ts entries/contracts/container.ts entries/contracts/di.ts entries/crypto/fieldEncryption.ts entries/crypto/mfaSecret.ts entries/database/errors.ts entries/database/factory.ts entries/database/migrations.ts entries/database/migrations/types.ts entries/database/model.ts entries/database/query.ts entries/database/relationships.ts entries/database/repositoryQuery.ts entries/database/seeders.ts entries/database/seeders/types.ts entries/database/schema.ts entries/database/table.ts entries/database/types.ts entries/database/whereBuilder.ts entries/facades.ts entries/http/authMiddleware.ts entries/http/authorizeMiddleware.ts entries/http/bodySizeLimitMiddleware.ts entries/http/clientIp.ts entries/http/cookies.ts entries/http/contentNegotiation.ts entries/http/conditionalResponse.ts entries/http/corsMiddleware.ts entries/http/csrfMiddleware.ts entries/http/csrfProtection.ts entries/http/csrfToken.ts entries/http/etag.ts entries/http/flashSession.ts entries/http/flashMiddleware.ts entries/http/formRequest.ts entries/http/metricsMiddleware.ts entries/http/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/response.ts entries/http/route.ts entries/http/routeMiddleware.ts entries/http/routeModelBinding.ts entries/http/safeInternalPath.ts entries/http/signedUrl.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/http/validation.ts entries/jobs/dispatchWebhookJob.ts entries/jobs/exportAuditLogsJob.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/mail/sanitizeMailHtml.ts entries/media/imageTransform.ts entries/metrics/prometheus.ts entries/openapi/generator.ts entries/openapi/registeredRoute.ts entries/openapi/validate.ts entries/pagination.ts entries/queue.ts entries/queue/createAppQueue.ts entries/queue/failedJobRepository.ts entries/queue/failedJobService.ts entries/queue/jobRunner.ts entries/queue/queueMetrics.ts entries/queue/publicQueue.ts entries/queue/redisQueue.ts entries/queue/types.ts entries/runtime/appKeyPrefix.ts entries/runtime/asyncContextStore.ts entries/scheduler/schedule.ts entries/scheduler/osCron.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/tenancyConfig.ts entries/tenant/tenantDatabaseScope.ts entries/tenant/databaseTenantContext.ts entries/terminal/runShell.ts entries/tracing/tracingMiddleware.ts entries/validation/rules.ts entries/view.ts --outdir dist --root . --target bun --external bun --external eta --external @getstrata/core --external @getstrata/core/auth/accessControl --external @getstrata/core/auth/abilityChecker --external @getstrata/core/auth/authContext --external @getstrata/core/auth/guard --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/password --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/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/defaultConnection --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/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/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/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/dispatchWebhookJob --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/appKeyPrefix --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/safeFetch --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/terminal/runShell --external @getstrata/core/tracing/traceContext --external @getstrata/core/tracing/tracingMiddleware --external @getstrata/core/validation/rules --external @getstrata/core/view",
816
+ "build:subpaths": "bun build entries/auth/accessControl.ts entries/auth/abilityChecker.ts entries/auth/membershipMiddleware.ts entries/auth/membershipScope.ts entries/auth/membershipService.ts entries/auth/oauth/oidcProvider.ts entries/auth/oauth/providers.ts entries/auth/oauth/samlProvider.ts entries/auth/oauth/types.ts entries/auth/password.ts entries/auth/policy.ts entries/auth/scimAuthMiddleware.ts entries/auth/sessionCookie.ts entries/auth/sessionGuard.ts entries/auth/tokenHash.ts entries/audit/exportAuditLogs.ts entries/audit/siemFormatter.ts entries/admin/formatValue.ts entries/admin/registry.ts entries/admin/types.ts entries/cache/tags.ts entries/cache/createCacheStore.ts entries/cache/repository.ts entries/cache/simpleCache.ts entries/cache/simpleCacheStore.ts entries/config/envSchema.ts entries/contracts/serviceTokens.ts entries/contracts/container.ts entries/contracts/di.ts entries/crypto/fieldEncryption.ts entries/crypto/mfaSecret.ts entries/database/errors.ts entries/database/factory.ts entries/database/migrations.ts entries/database/migrations/types.ts entries/database/model.ts entries/database/query.ts entries/database/relationships.ts entries/database/repositoryQuery.ts entries/database/seeders.ts entries/database/seeders/types.ts entries/database/schema.ts entries/database/table.ts entries/database/types.ts entries/database/whereBuilder.ts entries/facades.ts entries/http/authMiddleware.ts entries/http/authorizeMiddleware.ts entries/http/bodySizeLimitMiddleware.ts entries/http/clientIp.ts entries/http/cookies.ts entries/http/contentNegotiation.ts entries/http/conditionalResponse.ts entries/http/corsMiddleware.ts entries/http/csrfMiddleware.ts entries/http/csrfProtection.ts entries/http/csrfToken.ts entries/http/etag.ts entries/http/flashSession.ts entries/http/flashMiddleware.ts entries/http/formRequest.ts entries/http/metricsMiddleware.ts entries/http/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/response.ts entries/http/route.ts entries/http/routeMiddleware.ts entries/http/routeModelBinding.ts entries/http/safeInternalPath.ts entries/http/signedUrl.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/http/validation.ts entries/jobs/dispatchWebhookJob.ts entries/jobs/exportAuditLogsJob.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/mail/sanitizeMailHtml.ts entries/media/imageTransform.ts entries/metrics/prometheus.ts entries/openapi/generator.ts entries/openapi/registeredRoute.ts entries/openapi/validate.ts entries/pagination.ts entries/queue.ts entries/queue/createAppQueue.ts entries/queue/failedJobRepository.ts entries/queue/failedJobService.ts entries/queue/jobRunner.ts entries/queue/queueMetrics.ts entries/queue/publicQueue.ts entries/queue/redisQueue.ts entries/queue/types.ts entries/runtime/appKeyPrefix.ts entries/runtime/frontendMode.ts entries/runtime/asyncContextStore.ts entries/scheduler/schedule.ts entries/scheduler/osCron.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/tenancyConfig.ts entries/tenant/tenantDatabaseScope.ts entries/tenant/databaseTenantContext.ts entries/terminal/runShell.ts entries/tracing/tracingMiddleware.ts entries/validation/rules.ts entries/view.ts --outdir dist --root . --target bun --external bun --external eta --external @getstrata/core --external @getstrata/core/auth/accessControl --external @getstrata/core/auth/abilityChecker --external @getstrata/core/auth/authContext --external @getstrata/core/auth/guard --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/password --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/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/defaultConnection --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/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/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/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/dispatchWebhookJob --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/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/safeFetch --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/terminal/runShell --external @getstrata/core/tracing/traceContext --external @getstrata/core/tracing/tracingMiddleware --external @getstrata/core/validation/rules --external @getstrata/core/view",
812
817
  "build:shims": "bun ../../scripts/write-core-shared-shims.ts"
813
818
  },
814
819
  "publishConfig": {
@@ -1,15 +0,0 @@
1
- declare const APP_PORT_CONFIG_KEY = "app.port";
2
- declare const CACHE_TTL_MS_CONFIG_KEY = "cache.ttlMs";
3
- declare const CACHE_MAX_ENTRIES_CONFIG_KEY = "cache.maxEntries";
4
- declare const CACHE_DRIVER_CONFIG_KEY = "cache.driver";
5
- declare const REDIS_URL_CONFIG_KEY = "cache.redisUrl";
6
- declare const DATABASE_URL_CONFIG_KEY = "database.url";
7
- export { CORE_ABILITY_CHECKER_TOKEN, CORE_AUTH_TOKEN, CORE_AUTH_USER_DIRECTORY_TOKEN, CORE_CACHE_TOKEN, CORE_CONFIG_TOKEN, CORE_EVENT_BUS_TOKEN, CORE_POLICY_GATE_TOKEN, CORE_QUEUE_TOKEN, CORE_TOKEN_SERVICE_TOKEN, } from "@getstrata/core/contracts/serviceTokens";
8
- declare const AUTH_DEV_HEADERS_CONFIG_KEY = "auth.allowDevHeaders";
9
- declare const DEFAULT_APP_PORT = 3000;
10
- declare const DEFAULT_CACHE_TTL_MS = 3600000;
11
- declare const DEFAULT_CACHE_MAX_ENTRIES = 100;
12
- declare const DEFAULT_CACHE_DRIVER = "array";
13
- declare const DEFAULT_API_TOKEN = "";
14
- declare const DEFAULT_QUEUE_DRIVER = "sync";
15
- export { APP_PORT_CONFIG_KEY, AUTH_DEV_HEADERS_CONFIG_KEY, CACHE_DRIVER_CONFIG_KEY, CACHE_MAX_ENTRIES_CONFIG_KEY, CACHE_TTL_MS_CONFIG_KEY, DATABASE_URL_CONFIG_KEY, DEFAULT_API_TOKEN, DEFAULT_APP_PORT, DEFAULT_CACHE_DRIVER, DEFAULT_CACHE_MAX_ENTRIES, DEFAULT_CACHE_TTL_MS, DEFAULT_QUEUE_DRIVER, REDIS_URL_CONFIG_KEY, };
@@ -1,9 +0,0 @@
1
- interface CorsConfig {
2
- allowedOrigins: string[];
3
- allowedMethods: string[];
4
- allowedHeaders: string[];
5
- maxAgeSeconds: number;
6
- }
7
- declare const corsConfig: CorsConfig;
8
- export type { CorsConfig };
9
- export { corsConfig };
@@ -1,18 +0,0 @@
1
- interface FeatureFlags {
2
- webhooks: boolean;
3
- fullTextSearch: boolean;
4
- auditLog: boolean;
5
- oauthLogin: boolean;
6
- samlLogin: boolean;
7
- scim: boolean;
8
- billing: boolean;
9
- siemExport: boolean;
10
- publicReads: boolean;
11
- emailVerification: boolean;
12
- mfa: boolean;
13
- }
14
- declare function readFeatureFlags(): FeatureFlags;
15
- declare const featureFlags: FeatureFlags;
16
- declare function isFeatureEnabled(feature: keyof FeatureFlags): boolean;
17
- export type { FeatureFlags };
18
- export { featureFlags, isFeatureEnabled, readFeatureFlags };
File without changes