@getstrata/core 0.5.58 → 0.5.60

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.
@@ -24,7 +24,8 @@ export type { ServiceProvider } from "../core/contracts/di.ts";
24
24
  export { resolveService } from "../core/contracts/di.ts";
25
25
  export type { DatabaseConnection } from "../core/database/baseRepository.ts";
26
26
  export { default as BaseRepository } from "../core/database/baseRepository.ts";
27
- export { bindDatabaseConnection } from "../core/database/bindConnection.ts";
27
+ export { bindDatabaseConnection, getBoundDatabaseConnection, resetBoundDatabaseConnection, } from "../core/database/bindConnection.ts";
28
+ export { bindBunSql, createBunSqlPool } from "../core/database/bunSql.ts";
28
29
  export { createDatabaseConnection } from "../core/database/connection.ts";
29
30
  export { getActiveDatabaseConnection, runWithDatabaseConnection, } from "../core/database/connectionContext.ts";
30
31
  export { getDefaultDatabasePool, getDefaultDatabaseQuery, registerDefaultDatabasePool, } from "../core/database/defaultConnection.ts";
@@ -65,7 +66,7 @@ export { createFlashMiddleware } from "../core/http/flashMiddleware.ts";
65
66
  export { FormRequest } from "../core/http/formRequest.ts";
66
67
  export { applyMiddlewareToRoutes, bindRouteModel, buildRequestCacheKey, composeMiddleware, createAuthMiddleware, createAuthorizeMiddleware, createRequireAuthMiddleware, paginatedResponse, parsePaginationQuery, parsePositiveIntParam, requestIdMiddleware, securedBindRouteModel, securedBindRouteModelByKey, withMiddleware, wrapRouteHandler, } from "../core/http/index.ts";
67
68
  export { createLoginThrottleMiddleware } from "../core/http/loginThrottleMiddleware.ts";
68
- export { createMemoryThrottleMiddleware } from "../core/http/memoryThrottleMiddleware.ts";
69
+ export { createMemoryThrottleMiddleware, resetMemoryThrottleForTests, } from "../core/http/memoryThrottleMiddleware.ts";
69
70
  export { createMetricsMiddleware, normalizeMetricPath } from "../core/http/metricsMiddleware.ts";
70
71
  export type { Middleware, RouteHandler } from "../core/http/middleware.ts";
71
72
  export { type ParsedUpload, parseMultipartUpload } from "../core/http/parseMultipartUpload.ts";
@@ -118,6 +119,6 @@ export { currentTraceId, runWithTraceContext } from "../core/tracing/traceContex
118
119
  export { createTracingMiddleware } from "../core/tracing/tracingMiddleware.ts";
119
120
  export type { ValidationRule, ValidationSchema } from "../core/validation/rules.ts";
120
121
  export { emailRule, maxLength, minLength, required, stringRule, validateObject, } from "../core/validation/rules.ts";
121
- export { DEFAULT_VIEWS_DIRECTORY, EtaViewEngine, htmlResponse, isHtmxRequest, resolveWebLayoutData, } from "../core/view/index.ts";
122
+ export { configureWebLayoutData, DEFAULT_VIEWS_DIRECTORY, EtaViewEngine, htmlResponse, isHtmxRequest, notFoundHtmlResponse, redirectResponse, resolveWebLayoutData, rssResponse, textResponse, xmlResponse, } from "../core/view/index.ts";
122
123
  export type { ViewEngine } from "../core/view/viewEngine.ts";
123
- export type { WebLayoutAuthUser, WebLayoutData } from "../core/view/webLayoutData.ts";
124
+ export type { WebLayoutAuthUser, WebLayoutData, WebLayoutDataOptions, WebLayoutUserKey, } from "../core/view/webLayoutData.ts";
package/dist/index.js CHANGED
@@ -172,6 +172,28 @@ var CORE_EVENT_BUS_TOKEN = "core.eventBus";
172
172
  var CORE_POLICY_GATE_TOKEN = "core.policyGate";
173
173
  var CORE_AUTH_TOKEN = "core.auth";
174
174
  var CORE_TOKEN_SERVICE_TOKEN = "core.tokenService";
175
+ var CORE_AUTH_USER_DIRECTORY_TOKEN = "core.authUserDirectory";
176
+ function isAuthUserDirectory(value) {
177
+ if (!value || typeof value !== "object") {
178
+ return false;
179
+ }
180
+ return typeof value.findByIdOrThrow === "function";
181
+ }
182
+ function resolveAuthUserDirectory(container) {
183
+ if (container.has(CORE_AUTH_USER_DIRECTORY_TOKEN)) {
184
+ const directory = container.resolve(CORE_AUTH_USER_DIRECTORY_TOKEN);
185
+ if (isAuthUserDirectory(directory)) {
186
+ return directory;
187
+ }
188
+ }
189
+ if (container.has(CORE_TOKEN_SERVICE_TOKEN)) {
190
+ const tokenService = container.resolve(CORE_TOKEN_SERVICE_TOKEN);
191
+ if (isAuthUserDirectory(tokenService)) {
192
+ return tokenService;
193
+ }
194
+ }
195
+ return null;
196
+ }
175
197
 
176
198
  // ../../src/core/auth/abilityCatalog.ts
177
199
  var MEMBER_ABILITIES = [
@@ -276,10 +298,10 @@ class DatabaseTokenGuard {
276
298
  if (!token) {
277
299
  return null;
278
300
  }
279
- if (!this.container.has(CORE_TOKEN_SERVICE_TOKEN)) {
301
+ const tokenService = resolveAuthUserDirectory(this.container);
302
+ if (!tokenService || typeof tokenService.resolveUserFromToken !== "function") {
280
303
  return null;
281
304
  }
282
- const tokenService = this.container.resolve(CORE_TOKEN_SERVICE_TOKEN);
283
305
  return await tokenService.resolveUserFromToken(token);
284
306
  }
285
307
  }
@@ -734,12 +756,6 @@ function getBoundDatabaseConnection() {
734
756
  function resetBoundDatabaseConnection() {
735
757
  boundConnectionHolder.connection = null;
736
758
  }
737
-
738
- // ../../src/core/database/bindConnection.ts
739
- function bindDatabaseConnection2(connection) {
740
- bindDatabaseConnection(connection);
741
- }
742
-
743
759
  // ../../src/core/database/connectionContext.ts
744
760
  var activeConnection = createAsyncContextStore("@getstrata/databaseConnectionContext");
745
761
  function runWithDatabaseConnection(connection, callback) {
@@ -929,7 +945,7 @@ function createScimAuthMiddleware() {
929
945
  return jsonScimError("SCIM tenant not found.", 401);
930
946
  }
931
947
  return await runWithTenantDatabase(tenant, async () => {
932
- bindDatabaseConnection2(getActiveDatabaseConnection(getDefaultDatabasePool()));
948
+ bindDatabaseConnection(getActiveDatabaseConnection(getDefaultDatabasePool()));
933
949
  try {
934
950
  return await next();
935
951
  } finally {
@@ -2657,6 +2673,25 @@ class BaseRepository {
2657
2673
  }
2658
2674
  }
2659
2675
  var baseRepository_default = BaseRepository;
2676
+ // ../../src/core/database/bunSql.ts
2677
+ var {SQL } = globalThis.Bun;
2678
+ function createBunSqlPool(options) {
2679
+ if (!options.url) {
2680
+ throw new Error("DATABASE_URL is not configured. Set url before creating a Bun SQL pool.");
2681
+ }
2682
+ return new SQL({
2683
+ url: options.url,
2684
+ max: options.max ?? 10,
2685
+ idleTimeout: options.idleTimeout ?? 30,
2686
+ maxLifetime: options.maxLifetime ?? 3600,
2687
+ connectionTimeout: options.connectionTimeout ?? 10
2688
+ });
2689
+ }
2690
+ function bindBunSql(sql) {
2691
+ bindDatabaseConnection(sql);
2692
+ registerDefaultDatabasePool(sql);
2693
+ return sql;
2694
+ }
2660
2695
  // ../../src/core/database/connection.ts
2661
2696
  function createDatabaseConnection(source) {
2662
2697
  return {
@@ -4366,6 +4401,9 @@ function currentRequestMeta() {
4366
4401
  // ../../src/core/http/csrfToken.ts
4367
4402
  var CSRF_COOKIE = "workhub_csrf";
4368
4403
  var CSRF_TTL_MS = 60 * 60 * 1000;
4404
+ function csrfCookieName() {
4405
+ return process.env.CSRF_COOKIE_NAME?.trim() || CSRF_COOKIE;
4406
+ }
4369
4407
  function resolveCsrfSecret() {
4370
4408
  return process.env.SESSION_SECRET?.trim() || process.env.OAUTH_STATE_SECRET?.trim() || process.env.ADMIN_API_TOKEN?.trim() || "workhub-dev-csrf-secret";
4371
4409
  }
@@ -4385,11 +4423,11 @@ function createCsrfTokenCookie() {
4385
4423
  const secure = process.env.APP_ENV === "production" ? "; Secure" : "";
4386
4424
  return {
4387
4425
  token,
4388
- cookie: `${CSRF_COOKIE}=${encodeURIComponent(token)}; Path=/; SameSite=Lax; Max-Age=${Math.floor(CSRF_TTL_MS / 1000)}${secure}`
4426
+ cookie: `${csrfCookieName()}=${encodeURIComponent(token)}; Path=/; SameSite=Lax; Max-Age=${Math.floor(CSRF_TTL_MS / 1000)}${secure}`
4389
4427
  };
4390
4428
  }
4391
4429
  function resolveCsrfToken(request) {
4392
- const cookieValue = readRequestCookie(request, CSRF_COOKIE);
4430
+ const cookieValue = readRequestCookie(request, csrfCookieName());
4393
4431
  if (cookieValue && Bun.CSRF.verify(cookieValue, csrfVerifyOptions())) {
4394
4432
  return { token: cookieValue };
4395
4433
  }
@@ -4425,7 +4463,7 @@ function verifyCsrfToken(request, submittedToken) {
4425
4463
  if (!submittedToken) {
4426
4464
  return false;
4427
4465
  }
4428
- const cookieValue = readRequestCookie(request, CSRF_COOKIE);
4466
+ const cookieValue = readRequestCookie(request, csrfCookieName());
4429
4467
  if (!cookieValue) {
4430
4468
  return false;
4431
4469
  }
@@ -5082,6 +5120,9 @@ class EtaViewEngine {
5082
5120
  }
5083
5121
  }
5084
5122
  // ../../src/core/view/htmlResponse.ts
5123
+ function withCharset(contentType) {
5124
+ return contentType.includes("charset=") ? contentType : `${contentType}; charset=utf-8`;
5125
+ }
5085
5126
  function htmlResponse(html, init = {}) {
5086
5127
  return new Response(html, {
5087
5128
  status: init.status ?? 200,
@@ -5094,45 +5135,87 @@ function htmlResponse(html, init = {}) {
5094
5135
  function isHtmxRequest(request) {
5095
5136
  return request.headers.get("HX-Request") === "true";
5096
5137
  }
5138
+ function redirectResponse(location, status = 302) {
5139
+ return new Response(null, {
5140
+ status,
5141
+ headers: {
5142
+ Location: location
5143
+ }
5144
+ });
5145
+ }
5146
+ function notFoundHtmlResponse(body = "Not Found") {
5147
+ return htmlResponse(body, { status: 404 });
5148
+ }
5149
+ function textResponse(body, init = {}) {
5150
+ return new Response(body, {
5151
+ status: init.status ?? 200,
5152
+ headers: {
5153
+ "Content-Type": "text/plain; charset=utf-8"
5154
+ }
5155
+ });
5156
+ }
5157
+ function xmlResponse(body, init = {}) {
5158
+ return new Response(body, {
5159
+ status: init.status ?? 200,
5160
+ headers: {
5161
+ "Content-Type": withCharset(init.contentType ?? "application/xml")
5162
+ }
5163
+ });
5164
+ }
5165
+ function rssResponse(body, init = {}) {
5166
+ return xmlResponse(body, { ...init, contentType: "application/rss+xml" });
5167
+ }
5097
5168
  // ../../src/core/view/webLayoutData.ts
5098
- async function resolveWebLayoutData(container, request) {
5099
- const csrfToken = request ? resolveCsrfTokenForRequest(request) : "";
5100
- const flash = request ? currentRequestMeta().flash ?? pullFlash(request) : null;
5169
+ var configuredLayoutOptions = {};
5170
+ function configureWebLayoutData(options) {
5171
+ configuredLayoutOptions = { ...options };
5172
+ }
5173
+ function layoutUserKey(options) {
5174
+ return options.userKey ?? "authUser";
5175
+ }
5176
+ async function defaultLoadLayoutUser(container, _request) {
5101
5177
  const authUser = currentAuthUser();
5102
5178
  if (!authUser) {
5103
- return { authUser: null, csrfToken, flash };
5179
+ return null;
5104
5180
  }
5105
5181
  const userId = Number(authUser.id);
5106
5182
  if (!Number.isInteger(userId) || userId <= 0) {
5107
- return { authUser: null, csrfToken, flash };
5183
+ return null;
5108
5184
  }
5109
- if (!container.has(CORE_TOKEN_SERVICE_TOKEN)) {
5185
+ const directory = resolveAuthUserDirectory(container);
5186
+ if (!directory) {
5110
5187
  return {
5111
- authUser: {
5112
- id: userId,
5113
- email: "",
5114
- role: authUser.role ?? "member"
5115
- },
5116
- csrfToken,
5117
- flash
5188
+ id: userId,
5189
+ email: "",
5190
+ role: authUser.role ?? "member"
5118
5191
  };
5119
5192
  }
5120
- const tokenService = container.resolve(CORE_TOKEN_SERVICE_TOKEN);
5121
5193
  try {
5122
- const user = await tokenService.findByIdOrThrow(userId);
5194
+ const user = await directory.findByIdOrThrow(userId);
5123
5195
  return {
5124
- authUser: {
5125
- id: userId,
5126
- email: user.email ?? "",
5127
- role: authUser.role ?? user.role ?? "member"
5128
- },
5129
- csrfToken,
5130
- flash
5196
+ id: userId,
5197
+ email: user.email ?? "",
5198
+ role: authUser.role ?? user.role ?? "member"
5131
5199
  };
5132
5200
  } catch {
5133
- return { authUser: null, csrfToken, flash };
5201
+ return null;
5134
5202
  }
5135
5203
  }
5204
+ async function resolveWebLayoutData(container, request, options = {}) {
5205
+ const resolved = { ...configuredLayoutOptions, ...options };
5206
+ const csrfToken = request ? resolveCsrfTokenForRequest(request) : "";
5207
+ const flash = request ? currentRequestMeta().flash ?? pullFlash(request) : null;
5208
+ const userKey = layoutUserKey(resolved);
5209
+ const loadUser = resolved.loadUser ?? defaultLoadLayoutUser;
5210
+ const user = await loadUser(container, request);
5211
+ const extra = typeof resolved.extra === "function" ? await resolved.extra(user) : resolved.extra ?? {};
5212
+ return {
5213
+ [userKey]: user,
5214
+ csrfToken,
5215
+ flash,
5216
+ ...extra
5217
+ };
5218
+ }
5136
5219
  // ../../src/core/http/contentNegotiation.ts
5137
5220
  function requestPrefersJson(request) {
5138
5221
  if (!request) {
@@ -5331,9 +5414,11 @@ function createLoginThrottleMiddleware(options) {
5331
5414
  };
5332
5415
  }
5333
5416
  // ../../src/core/http/memoryThrottleMiddleware.ts
5334
- var buckets = new Map;
5417
+ var throttleBucketRegistries = new Set;
5335
5418
  function createMemoryThrottleMiddleware(options) {
5336
5419
  const prefix = options.keyPrefix ?? "workhub:memory-throttle:";
5420
+ const buckets = new Map;
5421
+ throttleBucketRegistries.add(buckets);
5337
5422
  return async (request, next) => {
5338
5423
  const path = new URL(request.url).pathname;
5339
5424
  const identity = readClientIp(request) ?? request.headers.get("authorization")?.slice(0, 32) ?? "unknown";
@@ -5356,6 +5441,11 @@ function createMemoryThrottleMiddleware(options) {
5356
5441
  return await next();
5357
5442
  };
5358
5443
  }
5444
+ function resetMemoryThrottleForTests() {
5445
+ for (const buckets of throttleBucketRegistries) {
5446
+ buckets.clear();
5447
+ }
5448
+ }
5359
5449
  // ../../src/core/metrics/prometheus.ts
5360
5450
  class PrometheusRegistry {
5361
5451
  httpRequestsTotal = new Map;
@@ -6671,7 +6761,8 @@ export {
6671
6761
  authContext,
6672
6762
  belongsTo,
6673
6763
  belongsToMany,
6674
- bindDatabaseConnection2 as bindDatabaseConnection,
6764
+ bindBunSql,
6765
+ bindDatabaseConnection,
6675
6766
  bindRouteModel,
6676
6767
  buildMarkdownMailMessage,
6677
6768
  buildRequestCacheKey,
@@ -6683,9 +6774,11 @@ export {
6683
6774
  conditionalJsonResponse,
6684
6775
  config,
6685
6776
  configureMembershipLookup,
6777
+ configureWebLayoutData,
6686
6778
  createAuthMiddleware,
6687
6779
  createAuthorizeMiddleware,
6688
6780
  createBodySizeLimitMiddleware,
6781
+ createBunSqlPool,
6689
6782
  createCacheStore,
6690
6783
  createCorsMiddleware,
6691
6784
  createCsrfMiddleware,
@@ -6736,6 +6829,7 @@ export {
6736
6829
  formatAdminValue,
6737
6830
  freshDatabase,
6738
6831
  getActiveDatabaseConnection,
6832
+ getBoundDatabaseConnection,
6739
6833
  getDefaultDatabasePool,
6740
6834
  getDefaultDatabaseQuery,
6741
6835
  getMigrationStatus,
@@ -6780,6 +6874,7 @@ export {
6780
6874
  morphTo,
6781
6875
  noContentResponse,
6782
6876
  normalizeMetricPath,
6877
+ notFoundHtmlResponse,
6783
6878
  paginatedResponse,
6784
6879
  parseMultipartUpload,
6785
6880
  parsePaginationQuery,
@@ -6794,6 +6889,7 @@ export {
6794
6889
  readSubmittedCsrfToken,
6795
6890
  readSubmittedCsrfTokenFromBody,
6796
6891
  readTenancyDriver,
6892
+ redirectResponse,
6797
6893
  registerDefaultDatabasePool,
6798
6894
  registerModelRepository,
6799
6895
  registerShutdownHandler,
@@ -6801,7 +6897,9 @@ export {
6801
6897
  repositoryConnection,
6802
6898
  requestIdMiddleware,
6803
6899
  required,
6900
+ resetBoundDatabaseConnection,
6804
6901
  resetDefaultStorage,
6902
+ resetMemoryThrottleForTests,
6805
6903
  resolveApplicationAuth,
6806
6904
  resolveApplicationCache,
6807
6905
  resolveApplicationConfig,
@@ -6821,6 +6919,7 @@ export {
6821
6919
  resolveUserTenantId,
6822
6920
  resolveWebLayoutData,
6823
6921
  rollbackDatabase,
6922
+ rssResponse,
6824
6923
  runDueScheduledTasks,
6825
6924
  runGracefulShutdown,
6826
6925
  runInTransaction,
@@ -6841,6 +6940,7 @@ export {
6841
6940
  storageFacade as storage,
6842
6941
  stringRule,
6843
6942
  stripMarkdown,
6943
+ textResponse,
6844
6944
  toPaginatedResourceCollection,
6845
6945
  toResourceCollection,
6846
6946
  trustForwardedFor,
@@ -6850,5 +6950,6 @@ export {
6850
6950
  withMiddleware,
6851
6951
  withMigrationLock,
6852
6952
  wrapMarkdownMailLayout,
6853
- wrapRouteHandler
6953
+ wrapRouteHandler,
6954
+ xmlResponse
6854
6955
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getstrata/core",
3
- "version": "0.5.58",
3
+ "version": "0.5.60",
4
4
  "description": "Strata — Laravel-inspired Bun framework public API",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -205,6 +205,11 @@
205
205
  "import": "./dist/entries/database/boundConnection.js",
206
206
  "default": "./dist/entries/database/boundConnection.js"
207
207
  },
208
+ "./database/bunSql": {
209
+ "types": "./dist/core/database/bunSql.d.ts",
210
+ "import": "./dist/entries/database/bunSql.js",
211
+ "default": "./dist/entries/database/bunSql.js"
212
+ },
208
213
  "./database/connection": {
209
214
  "types": "./dist/core/database/connection.d.ts",
210
215
  "import": "./dist/entries/database/connection.js",
@@ -306,7 +311,7 @@
306
311
  "default": "./dist/entries/events.js"
307
312
  },
308
313
  "./facades": {
309
- "types": "./dist/core/facades.d.ts",
314
+ "types": "./dist/core/facades/index.d.ts",
310
315
  "import": "./dist/entries/facades.js",
311
316
  "default": "./dist/entries/facades.js"
312
317
  },
@@ -765,14 +770,15 @@
765
770
  "types": "./dist/framework/public-api.d.ts",
766
771
  "files": [
767
772
  "dist",
768
- "README.md"
773
+ "README.md",
774
+ "CHANGELOG.md"
769
775
  ],
770
776
  "scripts": {
771
777
  "build": "bun run build:bundle && bun run build:shims && bun run build:subpaths && bun run build:types",
772
778
  "build:bundle": "bun build index.ts --outdir dist --target bun --external bun --external eta",
773
779
  "build:types": "tsc -p tsconfig.types.json",
774
780
  "prepublishOnly": "bun run build && bun ../../scripts/prepare-core-package-publish.ts",
775
- "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/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/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/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/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/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/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/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/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/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/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",
781
+ "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/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/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/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/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/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/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/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/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/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",
776
782
  "build:shims": "bun ../../scripts/write-core-shared-shims.ts"
777
783
  },
778
784
  "publishConfig": {