@getstrata/core 0.5.66 → 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.
Files changed (43) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +1 -1
  3. package/dist/core/http/corsMiddleware.d.ts +8 -1
  4. package/dist/core/openapi/generator.d.ts +2 -2
  5. package/dist/{config/queue.d.ts → core/queue/queueConfig.d.ts} +2 -1
  6. package/dist/core/runtime/appKeyPrefix.d.ts +5 -1
  7. package/dist/entries/audit/exportAuditLogs.js +50 -39
  8. package/dist/entries/audit/siemFormatter.js +20 -0
  9. package/dist/entries/auth/oauth/providers.js +20 -0
  10. package/dist/entries/auth/oauth/samlProvider.js +20 -0
  11. package/dist/entries/cache/createCacheStore.js +20 -0
  12. package/dist/entries/facades.js +20 -0
  13. package/dist/entries/http/corsMiddleware.js +20 -18
  14. package/dist/entries/http/loginThrottleMiddleware.js +20 -0
  15. package/dist/entries/http/memoryThrottleMiddleware.js +20 -0
  16. package/dist/entries/http/parseMultipartUpload.js +1 -1
  17. package/dist/entries/http/requireAbilityMiddleware.js +4 -1
  18. package/dist/entries/http/response.js +4 -1
  19. package/dist/entries/http/scimThrottleMiddleware.js +20 -0
  20. package/dist/entries/http/securityHeadersMiddleware.js +48 -9
  21. package/dist/entries/http/throttleMiddleware.js +20 -0
  22. package/dist/entries/http/webErrorResponse.js +18 -15
  23. package/dist/entries/jobs/exportAuditLogsJob.js +50 -39
  24. package/dist/entries/mail/mailer.js +20 -0
  25. package/dist/entries/openapi/generator.js +58 -19
  26. package/dist/entries/queue/createAppQueue.js +40 -18
  27. package/dist/entries/queue/jobRunner.js +23 -21
  28. package/dist/entries/queue/publicQueue.js +40 -18
  29. package/dist/entries/queue/queueMetrics.js +43 -21
  30. package/dist/entries/queue/redisQueue.js +40 -18
  31. package/dist/entries/runtime/appKeyPrefix.js +24 -0
  32. package/dist/entries/runtime/frontendMode.js +23 -0
  33. package/dist/entries/security/publicReads.js +1 -22
  34. package/dist/entries/security/safeFetch.js +48 -9
  35. package/dist/entries/tracing/tracingMiddleware.js +20 -0
  36. package/dist/index.js +45 -57
  37. package/package.json +7 -2
  38. package/dist/bootstrap/config.d.ts +0 -15
  39. package/dist/config/app.d.ts +0 -10
  40. package/dist/config/cors.d.ts +0 -9
  41. package/dist/config/features.d.ts +0 -18
  42. /package/dist/{config → core/http}/uploads.d.ts +0 -0
  43. /package/dist/{config/frontend.d.ts → core/runtime/frontendMode.d.ts} +0 -0
@@ -26,12 +26,36 @@ function webhookSignatureHeader() {
26
26
  function appDisplayName() {
27
27
  return process.env.APP_NAME?.trim() || "WorkHub";
28
28
  }
29
+ function appEnv() {
30
+ return process.env.APP_ENV?.trim() || "local";
31
+ }
32
+ function appUrl() {
33
+ return (process.env.APP_URL?.trim() || "http://localhost:3000").replace(/\/$/, "");
34
+ }
35
+ function apiPrefix() {
36
+ const raw = process.env.API_PREFIX?.trim() || "/api/v1";
37
+ const withSlash = raw.startsWith("/") ? raw : `/${raw}`;
38
+ const trimmed = withSlash.replace(/\/+$/, "");
39
+ return trimmed || "/api/v1";
40
+ }
41
+ function sdkClientClassName() {
42
+ const override = process.env.APP_SDK_CLASS?.trim();
43
+ if (override && /^[A-Za-z_][A-Za-z0-9_]*$/.test(override)) {
44
+ return override;
45
+ }
46
+ const fromName = appDisplayName().replace(/[^A-Za-z0-9]/g, "");
47
+ return fromName ? `${fromName}Client` : "AppClient";
48
+ }
29
49
  export {
50
+ apiPrefix,
30
51
  appDisplayName,
52
+ appEnv,
31
53
  appKeyPrefix,
54
+ appUrl,
32
55
  appUserAgent,
33
56
  namespacedRedisKey,
34
57
  otelServiceName,
58
+ sdkClientClassName,
35
59
  siemEventType,
36
60
  smtpEhloHost,
37
61
  webhookSignatureHeader
@@ -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();
@@ -1,12 +1,51 @@
1
1
  // @bun
2
- // ../../src/config/app.ts
3
- var appConfig = {
4
- name: process.env.APP_NAME?.trim() || "WorkHub",
5
- env: process.env.APP_ENV ?? "local",
6
- debug: (process.env.APP_DEBUG ?? "true") !== "false",
7
- url: process.env.APP_URL ?? "http://localhost:3000",
8
- apiPrefix: process.env.API_PREFIX ?? "/api/v1"
9
- };
2
+ // ../../src/core/runtime/appKeyPrefix.ts
3
+ function appKeyPrefix() {
4
+ return process.env.APP_KEY_PREFIX?.trim() || "workhub";
5
+ }
6
+ function namespacedRedisKey(kind) {
7
+ return `${appKeyPrefix()}:${kind}`;
8
+ }
9
+ function smtpEhloHost() {
10
+ const raw = process.env.MAIL_EHLO?.trim() || `${appKeyPrefix()}.local`;
11
+ const safe = raw.replace(/[^a-zA-Z0-9.-]/g, "");
12
+ return safe || "strata.local";
13
+ }
14
+ function siemEventType() {
15
+ return process.env.SIEM_EVENT_TYPE?.trim() || `${appKeyPrefix()}.audit`;
16
+ }
17
+ function appUserAgent() {
18
+ return process.env.APP_USER_AGENT?.trim() || appKeyPrefix();
19
+ }
20
+ function otelServiceName() {
21
+ return process.env.OTEL_SERVICE_NAME?.trim() || `${appKeyPrefix()}-api`;
22
+ }
23
+ function webhookSignatureHeader() {
24
+ return process.env.WEBHOOK_SIGNATURE_HEADER?.trim() || `x-${appKeyPrefix()}-signature`;
25
+ }
26
+ function appDisplayName() {
27
+ return process.env.APP_NAME?.trim() || "WorkHub";
28
+ }
29
+ function appEnv() {
30
+ return process.env.APP_ENV?.trim() || "local";
31
+ }
32
+ function appUrl() {
33
+ return (process.env.APP_URL?.trim() || "http://localhost:3000").replace(/\/$/, "");
34
+ }
35
+ function apiPrefix() {
36
+ const raw = process.env.API_PREFIX?.trim() || "/api/v1";
37
+ const withSlash = raw.startsWith("/") ? raw : `/${raw}`;
38
+ const trimmed = withSlash.replace(/\/+$/, "");
39
+ return trimmed || "/api/v1";
40
+ }
41
+ function sdkClientClassName() {
42
+ const override = process.env.APP_SDK_CLASS?.trim();
43
+ if (override && /^[A-Za-z_][A-Za-z0-9_]*$/.test(override)) {
44
+ return override;
45
+ }
46
+ const fromName = appDisplayName().replace(/[^A-Za-z0-9]/g, "");
47
+ return fromName ? `${fromName}Client` : "AppClient";
48
+ }
10
49
 
11
50
  // ../../src/core/security/safeUrl.ts
12
51
  import { lookup as dnsLookupImpl } from "dns/promises";
@@ -110,7 +149,7 @@ var DEFAULT_FETCH_TIMEOUT_MS = 1e4;
110
149
  async function safeFetch(input, init = {}, options = {}) {
111
150
  const timeoutMs = options.timeoutMs ?? DEFAULT_FETCH_TIMEOUT_MS;
112
151
  const maxRedirects = options.maxRedirects ?? 0;
113
- const resolveDns = options.resolveDns ?? appConfig.env === "production";
152
+ const resolveDns = options.resolveDns ?? appEnv() === "production";
114
153
  const urlOptions = { allowHttp: options.allowHttp, resolveDns };
115
154
  const controller = new AbortController;
116
155
  const timeout = setTimeout(() => controller.abort(), timeoutMs);
@@ -29,6 +29,26 @@ function webhookSignatureHeader() {
29
29
  function appDisplayName() {
30
30
  return process.env.APP_NAME?.trim() || "WorkHub";
31
31
  }
32
+ function appEnv() {
33
+ return process.env.APP_ENV?.trim() || "local";
34
+ }
35
+ function appUrl() {
36
+ return (process.env.APP_URL?.trim() || "http://localhost:3000").replace(/\/$/, "");
37
+ }
38
+ function apiPrefix() {
39
+ const raw = process.env.API_PREFIX?.trim() || "/api/v1";
40
+ const withSlash = raw.startsWith("/") ? raw : `/${raw}`;
41
+ const trimmed = withSlash.replace(/\/+$/, "");
42
+ return trimmed || "/api/v1";
43
+ }
44
+ function sdkClientClassName() {
45
+ const override = process.env.APP_SDK_CLASS?.trim();
46
+ if (override && /^[A-Za-z_][A-Za-z0-9_]*$/.test(override)) {
47
+ return override;
48
+ }
49
+ const fromName = appDisplayName().replace(/[^A-Za-z0-9]/g, "");
50
+ return fromName ? `${fromName}Client` : "AppClient";
51
+ }
32
52
 
33
53
  // ../../src/core/tracing/otel.ts
34
54
  function randomHex(bytes) {
package/dist/index.js CHANGED
@@ -982,6 +982,9 @@ function smtpEhloHost() {
982
982
  function otelServiceName() {
983
983
  return process.env.OTEL_SERVICE_NAME?.trim() || `${appKeyPrefix()}-api`;
984
984
  }
985
+ function appEnv() {
986
+ return process.env.APP_ENV?.trim() || "local";
987
+ }
985
988
 
986
989
  // ../../src/core/cache/redisCacheStore.ts
987
990
  function cacheKeyPrefix() {
@@ -4482,24 +4485,24 @@ function readRequestCookie(request, name) {
4482
4485
  function readBunRequestCookie(request, name) {
4483
4486
  return request.cookies.get(name) ?? readRequestCookie(request, name);
4484
4487
  }
4485
- // ../../src/config/cors.ts
4486
- var corsConfig = {
4487
- allowedOrigins: (process.env.CORS_ALLOWED_ORIGINS ?? "*").split(",").map((origin) => origin.trim()).filter(Boolean),
4488
- allowedMethods: ["GET", "POST", "PATCH", "PUT", "DELETE", "OPTIONS"],
4489
- allowedHeaders: [
4490
- "Authorization",
4491
- "Content-Type",
4492
- "X-Request-Id",
4493
- "X-Tenant-Id",
4494
- "X-Authenticated-User-Id",
4495
- "X-Authenticated-User-Role",
4496
- "If-Match",
4497
- "If-None-Match"
4498
- ],
4499
- maxAgeSeconds: 86400
4500
- };
4501
-
4502
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
+ }
4503
4506
  function createCorsMiddleware() {
4504
4507
  return async (request, next) => {
4505
4508
  if (request.method === "OPTIONS") {
@@ -4523,6 +4526,7 @@ function createCorsMiddleware() {
4523
4526
  function buildCorsHeaders(request) {
4524
4527
  const headers = new Headers;
4525
4528
  const origin = request.headers.get("origin");
4529
+ const corsConfig = resolveCorsConfig();
4526
4530
  const allowedOrigins = corsConfig.allowedOrigins;
4527
4531
  const allowOrigin = allowedOrigins.includes("*") || origin && allowedOrigins.includes(origin) ? origin ?? "*" : allowedOrigins[0] ?? "*";
4528
4532
  headers.set("Access-Control-Allow-Origin", allowOrigin);
@@ -4947,7 +4951,7 @@ function parsePaginationQuery(request) {
4947
4951
  function paginatedResponse(data, meta, init = {}) {
4948
4952
  return Response.json({ data, meta }, init);
4949
4953
  }
4950
- // ../../src/config/uploads.ts
4954
+ // ../../src/core/http/uploads.ts
4951
4955
  var DEFAULT_MAX_UPLOAD_BYTES = 5 * 1024 * 1024;
4952
4956
  var ALLOWED_UPLOAD_MIME_TYPES = new Set([
4953
4957
  "application/pdf",
@@ -5043,7 +5047,7 @@ function toPaginatedResourceCollection(items, meta, transformer) {
5043
5047
  meta
5044
5048
  };
5045
5049
  }
5046
- // ../../src/config/frontend.ts
5050
+ // ../../src/core/runtime/frontendMode.ts
5047
5051
  function readFrontendMode() {
5048
5052
  const mode = (process.env.FRONTEND_MODE ?? "api").trim();
5049
5053
  if (mode === "server-htmx") {
@@ -5666,15 +5670,6 @@ function createScimThrottleMiddleware(options) {
5666
5670
  return await next();
5667
5671
  };
5668
5672
  }
5669
- // ../../src/config/app.ts
5670
- var appConfig = {
5671
- name: process.env.APP_NAME?.trim() || "WorkHub",
5672
- env: process.env.APP_ENV ?? "local",
5673
- debug: (process.env.APP_DEBUG ?? "true") !== "false",
5674
- url: process.env.APP_URL ?? "http://localhost:3000",
5675
- apiPrefix: process.env.API_PREFIX ?? "/api/v1"
5676
- };
5677
-
5678
5673
  // ../../src/core/http/securityHeadersMiddleware.ts
5679
5674
  function createSecurityHeadersMiddleware(options = {}) {
5680
5675
  return async (request, next) => {
@@ -5692,7 +5687,7 @@ function createSecurityHeadersMiddleware(options = {}) {
5692
5687
  headers.set("Referrer-Policy", "strict-origin-when-cross-origin");
5693
5688
  headers.set("X-XSS-Protection", "0");
5694
5689
  headers.set("Content-Security-Policy", resolveContentSecurityPolicy(response, { ...options, nonce }));
5695
- if (appConfig.env === "production") {
5690
+ if (appEnv() === "production") {
5696
5691
  headers.set("Strict-Transport-Security", "max-age=31536000; includeSubDomains");
5697
5692
  }
5698
5693
  return new Response(response.body, {
@@ -6249,14 +6244,28 @@ function readSharedJobRegistry() {
6249
6244
  return registry;
6250
6245
  }
6251
6246
  var jobRegistry = readSharedJobRegistry();
6252
- // ../../src/bootstrap/config.ts
6253
- var DEFAULT_QUEUE_DRIVER = "sync";
6254
6247
 
6255
- // ../../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
+ }
6256
6259
  var queueConfig = {
6257
- driver: process.env.QUEUE_DRIVER === "redis" || process.env.QUEUE_DRIVER === "async" || process.env.QUEUE_DRIVER === "sync" ? process.env.QUEUE_DRIVER : DEFAULT_QUEUE_DRIVER,
6258
- maxAttempts: Number(process.env.QUEUE_MAX_ATTEMPTS ?? "3"),
6259
- 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
+ }
6260
6269
  };
6261
6270
 
6262
6271
  // ../../src/core/queue/jobRunner.ts
@@ -6555,30 +6564,9 @@ async function runDueScheduledTasks(schedule = appSchedule, now = new Date) {
6555
6564
  }
6556
6565
  return due.length;
6557
6566
  }
6558
- // ../../src/config/features.ts
6559
- function readFeatureFlags() {
6560
- return {
6561
- webhooks: (process.env.FEATURE_WEBHOOKS ?? "true") !== "false",
6562
- fullTextSearch: (process.env.FEATURE_SEARCH ?? "true") !== "false",
6563
- auditLog: (process.env.FEATURE_AUDIT_LOG ?? "true") !== "false",
6564
- oauthLogin: (process.env.FEATURE_OAUTH ?? "true") !== "false",
6565
- samlLogin: (process.env.FEATURE_SAML ?? "false") === "true",
6566
- scim: (process.env.FEATURE_SCIM ?? "true") !== "false",
6567
- billing: (process.env.FEATURE_BILLING ?? "true") !== "false",
6568
- siemExport: (process.env.FEATURE_SIEM_EXPORT ?? "true") !== "false",
6569
- publicReads: (process.env.FEATURE_PUBLIC_READS ?? "true") !== "false",
6570
- emailVerification: (process.env.FEATURE_EMAIL_VERIFICATION ?? "false") === "true",
6571
- mfa: (process.env.FEATURE_MFA ?? "false") === "true"
6572
- };
6573
- }
6574
- var featureFlags = readFeatureFlags();
6575
- function isFeatureEnabled(feature) {
6576
- return readFeatureFlags()[feature];
6577
- }
6578
-
6579
6567
  // ../../src/core/security/publicReads.ts
6580
6568
  function isPublicReadsEnabled() {
6581
- return isFeatureEnabled("publicReads");
6569
+ return (process.env.FEATURE_PUBLIC_READS ?? "true") !== "false";
6582
6570
  }
6583
6571
  function guestCanViewResource() {
6584
6572
  return isPublicReadsEnabled();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getstrata/core",
3
- "version": "0.5.66",
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,10 +0,0 @@
1
- interface AppConfig {
2
- name: string;
3
- env: string;
4
- debug: boolean;
5
- url: string;
6
- apiPrefix: string;
7
- }
8
- declare const appConfig: AppConfig;
9
- export type { AppConfig };
10
- export { appConfig };
@@ -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