@classytic/arc 2.35.0 → 2.37.0

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 (171) hide show
  1. package/dist/{BaseController-C-pofd0v.mjs → BaseController-B5GZfUBy.mjs} +11 -11
  2. package/dist/{EventTransport-BrPeGUil.mjs → EventTransport-pGNNDQ__.mjs} +1 -1
  3. package/dist/{HookSystem-LlPm3Anm.mjs → HookSystem-CuhHvcyZ.mjs} +2 -2
  4. package/dist/{ResourceRegistry-yuD1Ra53.mjs → ResourceRegistry-DFOmazXg.mjs} +2 -2
  5. package/dist/{actionPermissions-LFuOra7W.mjs → actionPermissions-CQQrR4tu.mjs} +6 -6
  6. package/dist/audit/index.d.mts +2 -2
  7. package/dist/audit/index.mjs +2 -2
  8. package/dist/auth/audit.mjs +1 -1
  9. package/dist/auth/index.d.mts +2 -2
  10. package/dist/auth/index.mjs +6 -6
  11. package/dist/auth/redis-session.mjs +1 -1
  12. package/dist/{authorizationDecision-DYXBBgtg.mjs → authorizationDecision-DgyWdav8.mjs} +2 -2
  13. package/dist/{base-GZU3LlzP.d.mts → base-C-NL2fTi.d.mts} +15 -0
  14. package/dist/{buildHandler-Do9aMIvL.mjs → buildHandler-D2DkqtiY.mjs} +4 -4
  15. package/dist/cache/index.mjs +4 -4
  16. package/dist/{caching-cN5X9VEL.mjs → caching-BmC2T-pX.mjs} +2 -2
  17. package/dist/cleanup/index.d.mts +2 -2
  18. package/dist/cleanup/index.mjs +4 -4
  19. package/dist/cli/commands/describe.d.mts +1 -1
  20. package/dist/cli/commands/describe.mjs +3 -3
  21. package/dist/cli/commands/docs.mjs +3 -3
  22. package/dist/cli/commands/doctor.mjs +1 -1
  23. package/dist/cli/commands/generate.mjs +2 -2
  24. package/dist/cli/commands/init.mjs +2 -2
  25. package/dist/cli/commands/introspect.mjs +2 -2
  26. package/dist/cli/index.mjs +3 -3
  27. package/dist/{constants-BhzLXCfN.mjs → constants-CUpamQMJ.mjs} +1 -1
  28. package/dist/context/index.mjs +3 -3
  29. package/dist/core/index.d.mts +2 -2
  30. package/dist/core/index.mjs +7 -7
  31. package/dist/{core-DdEvmmkY.mjs → core-C8GWw-Iu.mjs} +3 -3
  32. package/dist/{createActionRouter-EYWgd0ly.mjs → createActionRouter-CwDU_j2S.mjs} +7 -7
  33. package/dist/{createAggregationRouter-ByOK9Iev.mjs → createAggregationRouter-d057xXX1.mjs} +7 -7
  34. package/dist/{defineAggregation-DoIijIFq.mjs → defineAggregation-cCitY2FA.mjs} +1 -1
  35. package/dist/{defineResource-BOrGeocE.mjs → defineResource-WcbE1kJL.mjs} +18 -18
  36. package/dist/discovery/index.mjs +1 -1
  37. package/dist/docs/index.d.mts +1 -1
  38. package/dist/docs/index.mjs +3 -3
  39. package/dist/{elevation-tGIAldco.mjs → elevation-Bc6Gafv9.mjs} +4 -4
  40. package/dist/encryption/index.mjs +3 -3
  41. package/dist/{errorHandler-BbQ1nQdk.mjs → errorHandler-CB75oY5i.mjs} +3 -3
  42. package/dist/{errors-CLid6atr.mjs → errors-DsdZc1Xv.mjs} +1 -1
  43. package/dist/{eventPlugin-ClPn5kjn.mjs → eventPlugin-DEIfV1iC.mjs} +5 -5
  44. package/dist/events/index.d.mts +1 -1
  45. package/dist/events/index.mjs +5 -5
  46. package/dist/events/transports/redis-stream-entry.mjs +1 -1
  47. package/dist/events/transports/redis.mjs +1 -1
  48. package/dist/factory/index.d.mts +4 -4
  49. package/dist/factory/index.mjs +5 -5
  50. package/dist/{fastify-augmentation-CMMTL3cj.d.mts → fastify-augmentation-CdY8FINU.d.mts} +3 -3
  51. package/dist/{fields-UtpiJO5R.mjs → fields-DvGz47Ul.mjs} +1 -1
  52. package/dist/{generate-BoAVy3_b.mjs → generate-D7CIIWhS.mjs} +2 -2
  53. package/dist/{headers-DODWf7aC.mjs → headers-BFu1st_i.mjs} +2 -2
  54. package/dist/{health-_Zs3R_Sb.mjs → health-Cc_sb94d.mjs} +1 -1
  55. package/dist/hooks/index.d.mts +1 -1
  56. package/dist/hooks/index.mjs +2 -2
  57. package/dist/idempotency/index.mjs +4 -4
  58. package/dist/idempotency/redis.mjs +1 -1
  59. package/dist/{index-K7auNNW0.d.mts → index-BtYoMip1.d.mts} +20 -2
  60. package/dist/{index-C5K78SXo.d.mts → index-C01wWGJt.d.mts} +1 -1
  61. package/dist/{index-C50BUxKs.d.mts → index-DCxxRwLC.d.mts} +1 -1
  62. package/dist/{index-h-mTgMqy.d.mts → index-du18bJjH.d.mts} +3 -3
  63. package/dist/{index-CJCcbADG.d.mts → index-eyg5WEcy.d.mts} +1 -1
  64. package/dist/index.d.mts +5 -5
  65. package/dist/index.mjs +11 -11
  66. package/dist/{init-Ce4R0ZGK.mjs → init-BMgU1wYR.mjs} +1 -1
  67. package/dist/integrations/event-gateway.mjs +2 -2
  68. package/dist/integrations/index.d.mts +2 -2
  69. package/dist/integrations/index.mjs +1 -1
  70. package/dist/integrations/jobs/index.d.mts +1 -1
  71. package/dist/integrations/jobs/index.mjs +2 -2
  72. package/dist/integrations/mcp/index.d.mts +3 -3
  73. package/dist/integrations/mcp/index.mjs +2 -2
  74. package/dist/integrations/mcp/testing.d.mts +1 -1
  75. package/dist/integrations/mcp/testing.mjs +2 -2
  76. package/dist/integrations/streamline.mjs +3 -3
  77. package/dist/integrations/webhooks.d.mts +4 -2
  78. package/dist/integrations/webhooks.mjs +20 -6
  79. package/dist/integrations/websocket-pushref-redis.mjs +1 -1
  80. package/dist/integrations/websocket-redis.mjs +1 -1
  81. package/dist/integrations/websocket.mjs +1 -1
  82. package/dist/{interface-my7sxjw5.mjs → interface-CaPVHoVJ.mjs} +1 -1
  83. package/dist/{jsonBody-CVKA7C5m.mjs → jsonBody-BuzxOZV8.mjs} +2 -2
  84. package/dist/{keys-GlU7XpmG.mjs → keys-DoUI9-yP.mjs} +1 -1
  85. package/dist/{loadResources-DdQb0qgV.mjs → loadResources-CPlRWJCv.mjs} +2 -2
  86. package/dist/{loadResourcesFromEntry-s6aGs6-0.mjs → loadResourcesFromEntry-CPCZiX9n.mjs} +2 -2
  87. package/dist/logger/index.mjs +1 -1
  88. package/dist/{mcpPlugin-DkzZ7Nfx.mjs → mcpPlugin-dxMxBPIg.mjs} +15 -15
  89. package/dist/{memory-BwedEXau.mjs → memory-BnafVem_.mjs} +2 -2
  90. package/dist/{metrics-5LNPvL3P.mjs → metrics-CeAIcVMY.mjs} +2 -2
  91. package/dist/middleware/index.d.mts +1 -1
  92. package/dist/middleware/index.mjs +3 -3
  93. package/dist/migrations/index.mjs +2 -2
  94. package/dist/{module-Bh5OC7ww.mjs → module-DIvG8qOg.mjs} +1 -1
  95. package/dist/{multipartBody-DjilSDAT.mjs → multipartBody-BVCoaTwu.mjs} +1 -1
  96. package/dist/{openapi-ItLH12_L.mjs → openapi-D_i6CifU.mjs} +6 -6
  97. package/dist/outbox-admin/index.d.mts +2 -2
  98. package/dist/outbox-admin/index.mjs +4 -4
  99. package/dist/{outbox-module-b1TyDGGi.d.mts → outbox-module-BbdaMyqy.d.mts} +1 -1
  100. package/dist/{outbox-module-SGIZz6oS.mjs → outbox-module-CKaLL5BH.mjs} +4 -4
  101. package/dist/permissions/index.d.mts +2 -2
  102. package/dist/permissions/index.mjs +5 -5
  103. package/dist/{permissions-CpSBlFXZ.mjs → permissions-DWkl60hx.mjs} +36 -9
  104. package/dist/{pipe-DNOuCfAs.mjs → pipe-Dbs3GhOZ.mjs} +2 -2
  105. package/dist/pipeline/index.d.mts +1 -1
  106. package/dist/pipeline/index.mjs +2 -2
  107. package/dist/plugins/index.d.mts +4 -4
  108. package/dist/plugins/index.mjs +16 -16
  109. package/dist/plugins/response-cache.mjs +2 -2
  110. package/dist/plugins/tracing-entry.mjs +2 -2
  111. package/dist/{pluralize-DGAQQKL8.mjs → pluralize-DgaYX91M.mjs} +1 -1
  112. package/dist/{preloadResources-DYMzmUk1.mjs → preloadResources-BUoGKPaS.mjs} +79 -24
  113. package/dist/{preloadResources--ZtY9pe9.d.mts → preloadResources-BYFfYnjZ.d.mts} +3 -3
  114. package/dist/presets/filesUpload.d.mts +2 -2
  115. package/dist/presets/filesUpload.mjs +5 -5
  116. package/dist/presets/index.d.mts +2 -2
  117. package/dist/presets/index.mjs +2 -2
  118. package/dist/presets/multiTenant.d.mts +1 -1
  119. package/dist/presets/multiTenant.mjs +3 -3
  120. package/dist/presets/search.d.mts +2 -2
  121. package/dist/presets/search.mjs +2 -2
  122. package/dist/{presets-Bi0Z6Iq8.mjs → presets-Gbv9mNKD.mjs} +4 -4
  123. package/dist/{projection-aevMua7Q.mjs → projection-BunxoeON.mjs} +2 -2
  124. package/dist/{queryCachePlugin-BI7Z88Cx.mjs → queryCachePlugin-BYqmg89O.mjs} +5 -5
  125. package/dist/{rateLimitKey-pyevMUVf.mjs → rateLimitKey-DlqmDHA5.mjs} +1 -1
  126. package/dist/{realtime-Cfl2bVjj.mjs → realtime-CiAp2-LH.mjs} +9 -9
  127. package/dist/{registerRoute-u1opU66a.mjs → registerRoute-dnf-JJf-.mjs} +5 -5
  128. package/dist/registry/index.d.mts +2 -2
  129. package/dist/registry/index.mjs +3 -3
  130. package/dist/{registry-B4sf9Rfm.mjs → registry-ByC0UFNS.mjs} +2 -2
  131. package/dist/{renewingLease-5ESPMxp0.mjs → renewingLease-C5Ta_ImD.mjs} +1 -1
  132. package/dist/{replyHelpers-2jfmMnnV.mjs → replyHelpers-D1k0wHoO.mjs} +2 -2
  133. package/dist/{requestContext-DzOUGNdY.mjs → requestContext-DGM7EZRI.mjs} +1 -1
  134. package/dist/{rolldown-runtime-CEvvVXTC.mjs → rolldown-runtime-DrZrabOW.mjs} +1 -1
  135. package/dist/{runtimeCapabilities-BagWc3TI.mjs → runtimeCapabilities-c4Sc85X-.mjs} +1 -1
  136. package/dist/{schedules-BLpZLWGF.mjs → schedules-CVtolEa-.mjs} +31 -5
  137. package/dist/{schemaConverter-D2_bHGil.mjs → schemaConverter-C8zbW7tJ.mjs} +1 -1
  138. package/dist/{schemaIR-s3-ouZmP.mjs → schemaIR-BfI425RH.mjs} +2 -2
  139. package/dist/schemas/index.mjs +1 -1
  140. package/dist/scim/index.mjs +2 -2
  141. package/dist/scope/index.mjs +5 -5
  142. package/dist/{scope-DgepeCv6.mjs → scope-DFSOKc4T.mjs} +4 -4
  143. package/dist/{simpleEqualityMatcher-BO-sFTQf.mjs → simpleEqualityMatcher-Bhp7WrRF.mjs} +1 -1
  144. package/dist/{sse-DUIP1XH6.mjs → sse-vRuwDd6N.mjs} +5 -5
  145. package/dist/{sseStream-ByFGyIVr.mjs → sseStream-cWezGOk1.mjs} +2 -2
  146. package/dist/{store-helpers-kIJCY0wI.mjs → store-helpers-bU8H5c-A.mjs} +1 -1
  147. package/dist/{streaming-DOpZVht6.mjs → streaming-weWcFCk4.mjs} +1 -1
  148. package/dist/{subscribe-helpers-Dh2BnzJf.mjs → subscribe-helpers-BrcG3NlV.mjs} +11 -5
  149. package/dist/sync/changelog.mjs +1 -1
  150. package/dist/testing/cleanupStoreContract.mjs +1 -1
  151. package/dist/testing/index.d.mts +5 -5
  152. package/dist/testing/index.mjs +10 -10
  153. package/dist/testing/outboxStoreContract.mjs +1 -1
  154. package/dist/testing/storageContract.mjs +1 -1
  155. package/dist/{transactionContext-BTZzEcRo.mjs → transactionContext-Ca5peQpc.mjs} +1 -1
  156. package/dist/{typeGuards-B-_jqaMi.mjs → typeGuards-ALWme5WB.mjs} +1 -1
  157. package/dist/types/index.d.mts +2 -2
  158. package/dist/types/index.mjs +1 -1
  159. package/dist/types/storage.mjs +1 -1
  160. package/dist/{types-DDD5RKTu.d.mts → types-BMa2EPtv.d.mts} +9 -0
  161. package/dist/{types-DSvHH0uR.d.mts → types-BXnTOsXP.d.mts} +1 -1
  162. package/dist/{types-GY4kATJb.mjs → types-lDs9oF4z.mjs} +4 -4
  163. package/dist/usage/index.d.mts +1 -1
  164. package/dist/usage/index.mjs +0 -0
  165. package/dist/{userHelpers-AKcB4V03.mjs → userHelpers-DU_Z5OBA.mjs} +1 -1
  166. package/dist/utils/index.d.mts +2 -2
  167. package/dist/utils/index.mjs +11 -11
  168. package/dist/{utils-CBK9HQOI.mjs → utils-sXGFLegw.mjs} +3 -3
  169. package/dist/{validate-dosAIvQU.mjs → validate-qK_-7MVk.mjs} +2 -2
  170. package/dist/{versioning-BbTs4pwM.mjs → versioning-Dtw0MyX4.mjs} +3 -3
  171. package/package.json +5 -2
@@ -1,15 +1,15 @@
1
- /*! @classytic/arc v2.35.0 | MIT | https://classytic.com */
2
- import { h as SYSTEM_FIELDS, o as DEFAULT_TENANT_FIELD } from "./constants-BhzLXCfN.mjs";
1
+ /*! @classytic/arc v2.37.0 | MIT | https://classytic.com */
2
+ import { h as SYSTEM_FIELDS, o as DEFAULT_TENANT_FIELD } from "./constants-CUpamQMJ.mjs";
3
3
  import { arcLog } from "./logger/index.mjs";
4
- import { a as conjoinPolicyFilters } from "./authorizationDecision-DYXBBgtg.mjs";
5
- import { d as createDomainError, f as createError, i as NotFoundError, p as isArcError, r as ForbiddenError } from "./errors-CLid6atr.mjs";
6
- import { n as getUserRoles, t as getUserId } from "./userHelpers-AKcB4V03.mjs";
7
- import { b as isElevated, c as getOrgId, n as PUBLIC_SCOPE, x as isMember } from "./types-GY4kATJb.mjs";
8
- import { t as simpleEqualityMatcher } from "./simpleEqualityMatcher-BO-sFTQf.mjs";
9
- import { i as resolveEffectiveRoles, n as applyFieldWritePermissions } from "./fields-UtpiJO5R.mjs";
10
- import { g as ArcQueryParser, n as scheduleBackground } from "./utils-CBK9HQOI.mjs";
11
- import { t as buildQueryKey } from "./keys-GlU7XpmG.mjs";
12
- import { t as transactionContext } from "./transactionContext-BTZzEcRo.mjs";
4
+ import { a as conjoinPolicyFilters } from "./authorizationDecision-DgyWdav8.mjs";
5
+ import { d as createDomainError, f as createError, i as NotFoundError, p as isArcError, r as ForbiddenError } from "./errors-DsdZc1Xv.mjs";
6
+ import { n as getUserRoles, t as getUserId } from "./userHelpers-DU_Z5OBA.mjs";
7
+ import { b as isElevated, c as getOrgId, n as PUBLIC_SCOPE, x as isMember } from "./types-lDs9oF4z.mjs";
8
+ import { t as simpleEqualityMatcher } from "./simpleEqualityMatcher-Bhp7WrRF.mjs";
9
+ import { i as resolveEffectiveRoles, n as applyFieldWritePermissions } from "./fields-DvGz47Ul.mjs";
10
+ import { g as ArcQueryParser, n as scheduleBackground } from "./utils-sXGFLegw.mjs";
11
+ import { t as buildQueryKey } from "./keys-DoUI9-yP.mjs";
12
+ import { t as transactionContext } from "./transactionContext-Ca5peQpc.mjs";
13
13
  import { policyRecordToFilter } from "@classytic/repo-core/filter";
14
14
  import { retryingTransaction } from "@classytic/repo-core/repository";
15
15
  import { isProductionEnv } from "@classytic/primitives/environment";
@@ -1,4 +1,4 @@
1
- /*! @classytic/arc v2.35.0 | MIT | https://classytic.com */
1
+ /*! @classytic/arc v2.37.0 | MIT | https://classytic.com */
2
2
  import { createEvent, matchEventPattern } from "@classytic/primitives/events";
3
3
  //#region src/events/EventTransport.ts
4
4
  /**
@@ -1,5 +1,5 @@
1
- /*! @classytic/arc v2.35.0 | MIT | https://classytic.com */
2
- import { t as buildRequestScopeProjection } from "./projection-aevMua7Q.mjs";
1
+ /*! @classytic/arc v2.37.0 | MIT | https://classytic.com */
2
+ import { t as buildRequestScopeProjection } from "./projection-BunxoeON.mjs";
3
3
  //#region src/hooks/HookSystem.ts
4
4
  /**
5
5
  * Hook System
@@ -1,5 +1,5 @@
1
- /*! @classytic/arc v2.35.0 | MIT | https://classytic.com */
2
- import "./constants-BhzLXCfN.mjs";
1
+ /*! @classytic/arc v2.37.0 | MIT | https://classytic.com */
2
+ import "./constants-CUpamQMJ.mjs";
3
3
  //#region src/registry/ResourceRegistry.ts
4
4
  /**
5
5
  * Resource Registry
@@ -1,9 +1,9 @@
1
- /*! @classytic/arc v2.35.0 | MIT | https://classytic.com */
2
- import { n as getUserRoles } from "./userHelpers-AKcB4V03.mjs";
3
- import { b as isElevated, n as PUBLIC_SCOPE, x as isMember } from "./types-GY4kATJb.mjs";
4
- import { i as resolveEffectiveRoles, t as applyFieldReadPermissions } from "./fields-UtpiJO5R.mjs";
5
- import { t as executePipeline } from "./pipe-DNOuCfAs.mjs";
6
- import { t as buildRequestScopeProjection } from "./projection-aevMua7Q.mjs";
1
+ /*! @classytic/arc v2.37.0 | MIT | https://classytic.com */
2
+ import { n as getUserRoles } from "./userHelpers-DU_Z5OBA.mjs";
3
+ import { b as isElevated, n as PUBLIC_SCOPE, x as isMember } from "./types-lDs9oF4z.mjs";
4
+ import { i as resolveEffectiveRoles, t as applyFieldReadPermissions } from "./fields-DvGz47Ul.mjs";
5
+ import { t as executePipeline } from "./pipe-Dbs3GhOZ.mjs";
6
+ import { t as buildRequestScopeProjection } from "./projection-BunxoeON.mjs";
7
7
  import { isPaginatedResult, toCanonicalList } from "@classytic/repo-core/pagination";
8
8
  //#region src/core/fastifyAdapter.ts
9
9
  /** Type guard for Mongoose-like documents with toObject() */
@@ -1,6 +1,6 @@
1
1
 
2
- import { d as UserBase } from "../base-GZU3LlzP.mjs";
3
- import "../index-C5K78SXo.mjs";
2
+ import { d as UserBase } from "../base-C-NL2fTi.mjs";
3
+ import "../index-C01wWGJt.mjs";
4
4
  import { FastifyPluginAsync } from "fastify";
5
5
  import { RepositoryLike } from "@classytic/repo-core/adapter";
6
6
  //#region src/audit/stores/interface.d.ts
@@ -1,5 +1,5 @@
1
- /*! @classytic/arc v2.35.0 | MIT | https://classytic.com */
2
- import { t as transactionContext } from "../transactionContext-BTZzEcRo.mjs";
1
+ /*! @classytic/arc v2.37.0 | MIT | https://classytic.com */
2
+ import { t as transactionContext } from "../transactionContext-Ca5peQpc.mjs";
3
3
  import { and, anyOf, eq, gte, lt, lte } from "@classytic/repo-core/filter";
4
4
  import fp from "fastify-plugin";
5
5
  //#region src/audit/repository-audit-adapter.ts
@@ -1,4 +1,4 @@
1
- /*! @classytic/arc v2.35.0 | MIT | https://classytic.com */
1
+ /*! @classytic/arc v2.37.0 | MIT | https://classytic.com */
2
2
  //#region src/auth/audit.ts
3
3
  function compileGlobs(patterns) {
4
4
  if (patterns.length === 0) return () => false;
@@ -1,6 +1,6 @@
1
1
 
2
- import { l as PermissionCheck } from "../base-GZU3LlzP.mjs";
3
- import { Ft as AuthPluginOptions, Pt as AuthHelpers } from "../index-C5K78SXo.mjs";
2
+ import { l as PermissionCheck } from "../base-C-NL2fTi.mjs";
3
+ import { Ft as AuthPluginOptions, Pt as AuthHelpers } from "../index-C01wWGJt.mjs";
4
4
  import { t as ExternalOpenApiPaths } from "../externalPaths-CmGOxOtD.mjs";
5
5
  import { a as SessionManagerOptions, c as createSessionManager, i as SessionData, n as MemorySessionStoreOptions, o as SessionManagerResult, r as SessionCookieOptions, s as SessionStore, t as MemorySessionStore } from "../sessionManager-qimlKV0P.mjs";
6
6
  import { FastifyPluginAsync, FastifyReply as FastifyReply$1, FastifyRequest } from "fastify";
@@ -1,9 +1,9 @@
1
- /*! @classytic/arc v2.35.0 | MIT | https://classytic.com */
2
- import { d as createDomainError, l as UnauthorizedError, p as isArcError, t as ArcError } from "../errors-CLid6atr.mjs";
3
- import { n as requireSingleHeaderValue } from "../headers-DODWf7aC.mjs";
4
- import { n as getUserRoles, r as normalizeRoles } from "../userHelpers-AKcB4V03.mjs";
5
- import { o as toJsonSchema } from "../schemaConverter-D2_bHGil.mjs";
6
- import { E as requireOrgRole, T as requireOrgMembership, k as requireTeamMembership } from "../permissions-CpSBlFXZ.mjs";
1
+ /*! @classytic/arc v2.37.0 | MIT | https://classytic.com */
2
+ import { d as createDomainError, l as UnauthorizedError, p as isArcError, t as ArcError } from "../errors-DsdZc1Xv.mjs";
3
+ import { n as requireSingleHeaderValue } from "../headers-BFu1st_i.mjs";
4
+ import { n as getUserRoles, r as normalizeRoles } from "../userHelpers-DU_Z5OBA.mjs";
5
+ import { o as toJsonSchema } from "../schemaConverter-C8zbW7tJ.mjs";
6
+ import { E as requireOrgRole, T as requireOrgMembership, k as requireTeamMembership } from "../permissions-DWkl60hx.mjs";
7
7
  import { isProductionEnv } from "@classytic/primitives/environment";
8
8
  import { createHmac, randomUUID, timingSafeEqual } from "node:crypto";
9
9
  import fp from "fastify-plugin";
@@ -1,4 +1,4 @@
1
- /*! @classytic/arc v2.35.0 | MIT | https://classytic.com */
1
+ /*! @classytic/arc v2.37.0 | MIT | https://classytic.com */
2
2
  import sjson from "secure-json-parse";
3
3
  //#region src/auth/redis-session.ts
4
4
  /**
@@ -1,6 +1,6 @@
1
- /*! @classytic/arc v2.35.0 | MIT | https://classytic.com */
1
+ /*! @classytic/arc v2.37.0 | MIT | https://classytic.com */
2
2
  import { arcLog } from "./logger/index.mjs";
3
- import { t as ArcError } from "./errors-CLid6atr.mjs";
3
+ import { t as ArcError } from "./errors-DsdZc1Xv.mjs";
4
4
  //#region src/permissions/filter-merge.ts
5
5
  /**
6
6
  * Policy-filter composition — logical AND, never last-writer-wins.
@@ -169,6 +169,21 @@ type PermissionCheck<TDoc = Record<string, unknown>> = ((context: PermissionCont
169
169
  interface PermissionCheckMeta {
170
170
  /** Set by allowPublic() — marks the endpoint as publicly accessible */
171
171
  _isPublic?: boolean;
172
+ /**
173
+ * Set by `denyAll()` — nobody passes this gate, ever.
174
+ *
175
+ * Marked because `denyAll` used to return a BARE closure with no metadata, and
176
+ * introspection reads metadata: `describePermission` found no `_isPublic`, no
177
+ * `_roles` and no scope, and fell through to its last branch —
178
+ * `{ kind: "authenticated" }`. So the most restrictive gate in the library was
179
+ * published to permission UIs and audits as "any signed-in user may do this",
180
+ * which is the exact opposite of what it does.
181
+ *
182
+ * The enforcement path was always correct; only the DESCRIPTION lied. That is
183
+ * the dangerous direction: a dashboard renders the button, every click 403s,
184
+ * and an access audit reports a surface that does not exist.
185
+ */
186
+ _isDenied?: boolean;
172
187
  /**
173
188
  * Set by requireAuth() — a pure identity gate (must be signed in) that adds NO
174
189
  * row-level or environmental condition. Marked so `allOf` does not mistake it
@@ -1,7 +1,7 @@
1
- /*! @classytic/arc v2.35.0 | MIT | https://classytic.com */
2
- import { a as conjoinPolicyFilters } from "./authorizationDecision-DYXBBgtg.mjs";
3
- import { g as toRepositoryFilter } from "./BaseController-C-pofd0v.mjs";
4
- import { i as compileAggRequest, t as adapterSupportsAggregate } from "./validate-dosAIvQU.mjs";
1
+ /*! @classytic/arc v2.37.0 | MIT | https://classytic.com */
2
+ import { a as conjoinPolicyFilters } from "./authorizationDecision-DgyWdav8.mjs";
3
+ import { g as toRepositoryFilter } from "./BaseController-B5GZfUBy.mjs";
4
+ import { i as compileAggRequest, t as adapterSupportsAggregate } from "./validate-qK_-7MVk.mjs";
5
5
  //#region src/core/aggregation/buildHandler.ts
6
6
  /**
7
7
  * Framework-agnostic aggregation execution. Runs safety guards,
@@ -1,7 +1,7 @@
1
- /*! @classytic/arc v2.35.0 | MIT | https://classytic.com */
2
- import { i as versionKey, n as hashParams, r as tagVersionKey, t as buildQueryKey } from "../keys-GlU7XpmG.mjs";
3
- import { t as MemoryCacheStore } from "../memory-BwedEXau.mjs";
4
- import { r as QueryCache, t as queryCachePlugin } from "../queryCachePlugin-BI7Z88Cx.mjs";
1
+ /*! @classytic/arc v2.37.0 | MIT | https://classytic.com */
2
+ import { i as versionKey, n as hashParams, r as tagVersionKey, t as buildQueryKey } from "../keys-DoUI9-yP.mjs";
3
+ import { t as MemoryCacheStore } from "../memory-BnafVem_.mjs";
4
+ import { r as QueryCache, t as queryCachePlugin } from "../queryCachePlugin-BYqmg89O.mjs";
5
5
  //#region src/cache/redis.ts
6
6
  /**
7
7
  * Redis-backed cache store.
@@ -1,5 +1,5 @@
1
- /*! @classytic/arc v2.35.0 | MIT | https://classytic.com */
2
- import { t as __exportAll } from "./rolldown-runtime-CEvvVXTC.mjs";
1
+ /*! @classytic/arc v2.37.0 | MIT | https://classytic.com */
2
+ import { t as __exportAll } from "./rolldown-runtime-DrZrabOW.mjs";
3
3
  import fp from "fastify-plugin";
4
4
  //#region src/plugins/caching.ts
5
5
  var caching_exports = /* @__PURE__ */ __exportAll({
@@ -1,7 +1,7 @@
1
1
 
2
- import { L as RequestWithExtras } from "../index-C5K78SXo.mjs";
2
+ import { L as RequestWithExtras } from "../index-C01wWGJt.mjs";
3
3
  import { A as CleanupStepResult, B as VerificationResult, C as CleanupResult, D as CleanupRunStore, E as CleanupRunStatus, F as PurgeEvidence, I as PurgeResourceResult, L as PurgeStrategyKind, M as CleanupWriteFence, N as DEFAULT_CLEANUP_LIMITS, O as CleanupRunTransitionPatch, P as PurgeActor, R as PurgeVerificationSummary, S as CleanupRecipe, T as CleanupRunCreateResult, _ as CleanupPermissions, a as CleanupEvidenceStore, b as CleanupPlanItem, c as CleanupInput, d as CleanupLease, f as CleanupLimits, g as CleanupPermissionCheck, h as CleanupOutcomeStatus, i as CleanupContext, j as CleanupStepRunStatus, k as CleanupStepProgress, l as CleanupJob, m as CleanupManifest, n as CLEANUP_TERMINAL_STATUSES, o as CleanupExecutionContext, p as CleanupLogger, r as CleanupCancelRequest, s as CleanupFinalizationPayload, t as Availability, u as CleanupJobQueue, v as CleanupPlan, w as CleanupRun, x as CleanupProgressSummary, y as CleanupPlanDraft, z as VerificationCheck } from "../types-DVLddu2q.mjs";
4
- import { t as ArcModule } from "../types-DDD5RKTu.mjs";
4
+ import { t as ArcModule } from "../types-BMa2EPtv.mjs";
5
5
  import { PurgeStrategyKind as PurgeStrategyKind$1 } from "@classytic/primitives/retention";
6
6
  import { canonicalJson } from "@classytic/primitives/canonical";
7
7
  import { CleanupStep } from "@classytic/repo-core/cleanup";
@@ -1,7 +1,7 @@
1
- /*! @classytic/arc v2.35.0 | MIT | https://classytic.com */
2
- import { g as getUserId } from "../types-GY4kATJb.mjs";
3
- import { t as defineResource } from "../defineResource-BOrGeocE.mjs";
4
- import { t as defineModule } from "../module-Bh5OC7ww.mjs";
1
+ /*! @classytic/arc v2.37.0 | MIT | https://classytic.com */
2
+ import { g as getUserId } from "../types-lDs9oF4z.mjs";
3
+ import { t as defineResource } from "../defineResource-WcbE1kJL.mjs";
4
+ import { t as defineModule } from "../module-DIvG8qOg.mjs";
5
5
  import { createPurgeEvidence } from "@classytic/primitives/retention";
6
6
  import { canonicalJson, sha256Hex } from "@classytic/primitives/canonical";
7
7
  //#region src/cleanup/errors.ts
@@ -1,5 +1,5 @@
1
1
 
2
- import { Nt as RateLimitConfig, V as ResourceDefinition, et as RouteSchemaOptions } from "../../index-C5K78SXo.mjs";
2
+ import { Nt as RateLimitConfig, V as ResourceDefinition, et as RouteSchemaOptions } from "../../index-C01wWGJt.mjs";
3
3
  //#region src/cli/commands/describe.d.ts
4
4
  interface DescribedResource {
5
5
  name: string;
@@ -1,6 +1,6 @@
1
- /*! @classytic/arc v2.35.0 | MIT | https://classytic.com */
2
- import { t as CRUD_OPERATIONS } from "../../constants-BhzLXCfN.mjs";
3
- import { n as stringifyMeasureMap } from "../../ResourceRegistry-yuD1Ra53.mjs";
1
+ /*! @classytic/arc v2.37.0 | MIT | https://classytic.com */
2
+ import { t as CRUD_OPERATIONS } from "../../constants-CUpamQMJ.mjs";
3
+ import { n as stringifyMeasureMap } from "../../ResourceRegistry-DFOmazXg.mjs";
4
4
  import { resolve } from "node:path";
5
5
  import { pathToFileURL } from "node:url";
6
6
  //#region src/cli/commands/describe.ts
@@ -1,6 +1,6 @@
1
- /*! @classytic/arc v2.35.0 | MIT | https://classytic.com */
2
- import { t as buildOpenApiSpec } from "../../openapi-ItLH12_L.mjs";
3
- import { t as loadResourcesFromEntry } from "../../loadResourcesFromEntry-s6aGs6-0.mjs";
1
+ /*! @classytic/arc v2.37.0 | MIT | https://classytic.com */
2
+ import { t as buildOpenApiSpec } from "../../openapi-D_i6CifU.mjs";
3
+ import { t as loadResourcesFromEntry } from "../../loadResourcesFromEntry-CPCZiX9n.mjs";
4
4
  import { dirname, resolve } from "node:path";
5
5
  import { mkdirSync, writeFileSync } from "node:fs";
6
6
  //#region src/cli/commands/docs.ts
@@ -1,4 +1,4 @@
1
- /*! @classytic/arc v2.35.0 | MIT | https://classytic.com */
1
+ /*! @classytic/arc v2.37.0 | MIT | https://classytic.com */
2
2
  import { dirname, join, parse, resolve } from "node:path";
3
3
  import { existsSync, readFileSync } from "node:fs";
4
4
  //#region src/cli/commands/doctor.ts
@@ -1,3 +1,3 @@
1
- /*! @classytic/arc v2.35.0 | MIT | https://classytic.com */
2
- import { t as generate } from "../../generate-BoAVy3_b.mjs";
1
+ /*! @classytic/arc v2.37.0 | MIT | https://classytic.com */
2
+ import { t as generate } from "../../generate-D7CIIWhS.mjs";
3
3
  export { generate };
@@ -1,3 +1,3 @@
1
- /*! @classytic/arc v2.35.0 | MIT | https://classytic.com */
2
- import { t as init } from "../../init-Ce4R0ZGK.mjs";
1
+ /*! @classytic/arc v2.37.0 | MIT | https://classytic.com */
2
+ import { t as init } from "../../init-BMgU1wYR.mjs";
3
3
  export { init };
@@ -1,5 +1,5 @@
1
- /*! @classytic/arc v2.35.0 | MIT | https://classytic.com */
2
- import { t as loadResourcesFromEntry } from "../../loadResourcesFromEntry-s6aGs6-0.mjs";
1
+ /*! @classytic/arc v2.37.0 | MIT | https://classytic.com */
2
+ import { t as loadResourcesFromEntry } from "../../loadResourcesFromEntry-CPCZiX9n.mjs";
3
3
  //#region src/cli/commands/introspect.ts
4
4
  function describePermission(value) {
5
5
  if (!value) return "none";
@@ -1,8 +1,8 @@
1
- /*! @classytic/arc v2.35.0 | MIT | https://classytic.com */
1
+ /*! @classytic/arc v2.37.0 | MIT | https://classytic.com */
2
2
  import { describe } from "./commands/describe.mjs";
3
3
  import { exportDocs } from "./commands/docs.mjs";
4
4
  import { doctor } from "./commands/doctor.mjs";
5
- import { t as generate } from "../generate-BoAVy3_b.mjs";
6
- import { t as init } from "../init-Ce4R0ZGK.mjs";
5
+ import { t as generate } from "../generate-D7CIIWhS.mjs";
6
+ import { t as init } from "../init-BMgU1wYR.mjs";
7
7
  import { introspect } from "./commands/introspect.mjs";
8
8
  export { describe, doctor, exportDocs, generate, init, introspect };
@@ -1,4 +1,4 @@
1
- /*! @classytic/arc v2.35.0 | MIT | https://classytic.com */
1
+ /*! @classytic/arc v2.37.0 | MIT | https://classytic.com */
2
2
  //#region src/constants.ts
3
3
  /**
4
4
  * Arc Framework Constants — Single Source of Truth
@@ -1,6 +1,6 @@
1
- /*! @classytic/arc v2.35.0 | MIT | https://classytic.com */
2
- import { n as requestContext, t as getTraceHeaders } from "../requestContext-DzOUGNdY.mjs";
3
- import { t as transactionContext } from "../transactionContext-BTZzEcRo.mjs";
1
+ /*! @classytic/arc v2.37.0 | MIT | https://classytic.com */
2
+ import { n as requestContext, t as getTraceHeaders } from "../requestContext-DGM7EZRI.mjs";
3
+ import { t as transactionContext } from "../transactionContext-Ca5peQpc.mjs";
4
4
  //#region src/context/requestScopedCache.ts
5
5
  /**
6
6
  * The slot the per-request store hangs off. Underscore-prefixed to sit apart
@@ -1,4 +1,4 @@
1
1
 
2
- import { $t as AccessControlConfig, B as defineResource, Bt as BaseController, Cn as ControllerConstructionOptions, En as BodySanitizerConfig, Gt as SlugExt, Ht as SoftDeleteMixin, Jt as BulkMixin, Kt as SlugMixin, Qt as AccessControl, Sn as ControllerConfigurableOptions, Tn as BodySanitizer, Ut as TreeExt, V as ResourceDefinition, Vt as SoftDeleteExt, Wt as TreeMixin, Xt as QueryResolver, Yt as BaseCrudController, Zt as QueryResolverConfig, ct as AggMeasureShorthand, dt as AggregationDateRangeRequirement, ft as AggregationIndexHint, gt as AggregationsMap, ht as AggregationRateLimit, lt as AggregationCacheConfig, mt as AggregationMaterializedResult, pt as AggregationMaterializedContext, qt as BulkExt, st as AggMeasureInput, ut as AggregationConfig, wn as ListResult, xn as BaseControllerOptions } from "../index-C5K78SXo.mjs";
3
- import { A as CRUD_OPERATIONS, B as HookOperation, C as SeamedResourceConfig, D as createCrudRouter, E as defineAction, F as DEFAULT_SORT, G as MUTATION_OPERATIONS, H as MAX_FILTER_DEPTH, I as DEFAULT_TENANT_FIELD, J as SYSTEM_FIELDS, K as MutationOperation, L as DEFAULT_UPDATE_METHOD, M as DEFAULT_ID_FIELD, N as DEFAULT_LIMIT, O as createPermissionMiddleware, P as DEFAULT_MAX_LIMIT, R as HOOK_OPERATIONS, S as ResourceSeams, T as DefineActionConfig, U as MAX_REGEX_LENGTH, V as HookPhase, W as MAX_SEARCH_LENGTH, _ as getEntityId, a as formatValidationErrors, b as defineResourceVariants, c as nativePolicyFilter, d as createCrudHandlers, f as createFastifyHandler, g as sendControllerResponse, h as getControllerScope, i as assertValidConfig, j as CrudOperation, k as defineAggregation, l as collectReadBlockedFields, m as getControllerContext, n as ValidateOptions, o as validateResourceConfig, p as createRequestContext, q as RESERVED_QUERY_PARAMS, r as ValidationResult, s as NativePolicyFilter, t as ConfigError, u as isFieldReadable, v as getEntityIdField, w as mergeResourceConfig, x as AdapterLike, y as getEntityQuery, z as HOOK_PHASES } from "../index-h-mTgMqy.mjs";
2
+ import { $t as AccessControlConfig, B as defineResource, Bt as BaseController, Cn as ControllerConstructionOptions, En as BodySanitizerConfig, Gt as SlugExt, Ht as SoftDeleteMixin, Jt as BulkMixin, Kt as SlugMixin, Qt as AccessControl, Sn as ControllerConfigurableOptions, Tn as BodySanitizer, Ut as TreeExt, V as ResourceDefinition, Vt as SoftDeleteExt, Wt as TreeMixin, Xt as QueryResolver, Yt as BaseCrudController, Zt as QueryResolverConfig, ct as AggMeasureShorthand, dt as AggregationDateRangeRequirement, ft as AggregationIndexHint, gt as AggregationsMap, ht as AggregationRateLimit, lt as AggregationCacheConfig, mt as AggregationMaterializedResult, pt as AggregationMaterializedContext, qt as BulkExt, st as AggMeasureInput, ut as AggregationConfig, wn as ListResult, xn as BaseControllerOptions } from "../index-C01wWGJt.mjs";
3
+ import { A as CRUD_OPERATIONS, B as HookOperation, C as SeamedResourceConfig, D as createCrudRouter, E as defineAction, F as DEFAULT_SORT, G as MUTATION_OPERATIONS, H as MAX_FILTER_DEPTH, I as DEFAULT_TENANT_FIELD, J as SYSTEM_FIELDS, K as MutationOperation, L as DEFAULT_UPDATE_METHOD, M as DEFAULT_ID_FIELD, N as DEFAULT_LIMIT, O as createPermissionMiddleware, P as DEFAULT_MAX_LIMIT, R as HOOK_OPERATIONS, S as ResourceSeams, T as DefineActionConfig, U as MAX_REGEX_LENGTH, V as HookPhase, W as MAX_SEARCH_LENGTH, _ as getEntityId, a as formatValidationErrors, b as defineResourceVariants, c as nativePolicyFilter, d as createCrudHandlers, f as createFastifyHandler, g as sendControllerResponse, h as getControllerScope, i as assertValidConfig, j as CrudOperation, k as defineAggregation, l as collectReadBlockedFields, m as getControllerContext, n as ValidateOptions, o as validateResourceConfig, p as createRequestContext, q as RESERVED_QUERY_PARAMS, r as ValidationResult, s as NativePolicyFilter, t as ConfigError, u as isFieldReadable, v as getEntityIdField, w as mergeResourceConfig, x as AdapterLike, y as getEntityQuery, z as HOOK_PHASES } from "../index-du18bJjH.mjs";
4
4
  export { AccessControl, type AccessControlConfig, type AdapterLike, type AggMeasureInput, type AggMeasureShorthand, type AggregationCacheConfig, type AggregationConfig, type AggregationDateRangeRequirement, type AggregationIndexHint, type AggregationMaterializedContext, type AggregationMaterializedResult, type AggregationRateLimit, type AggregationsMap, BaseController, type BaseControllerOptions, BaseCrudController, BodySanitizer, type BodySanitizerConfig, type BulkExt, BulkMixin, CRUD_OPERATIONS, type ConfigError, type ControllerConfigurableOptions, type ControllerConstructionOptions, CrudOperation, DEFAULT_ID_FIELD, DEFAULT_LIMIT, DEFAULT_MAX_LIMIT, DEFAULT_SORT, DEFAULT_TENANT_FIELD, DEFAULT_UPDATE_METHOD, type DefineActionConfig, HOOK_OPERATIONS, HOOK_PHASES, HookOperation, HookPhase, type ListResult, MAX_FILTER_DEPTH, MAX_REGEX_LENGTH, MAX_SEARCH_LENGTH, MUTATION_OPERATIONS, MutationOperation, type NativePolicyFilter, QueryResolver, type QueryResolverConfig, RESERVED_QUERY_PARAMS, ResourceDefinition, type ResourceSeams, SYSTEM_FIELDS, type SeamedResourceConfig, type SlugExt, SlugMixin, type SoftDeleteExt, SoftDeleteMixin, type TreeExt, TreeMixin, type ValidateOptions, type ValidationResult, assertValidConfig, collectReadBlockedFields, createCrudHandlers, createCrudRouter, createFastifyHandler, createPermissionMiddleware, createRequestContext, defineAction, defineAggregation, defineResource, defineResourceVariants, formatValidationErrors, getControllerContext, getControllerScope, getEntityId, getEntityIdField, getEntityQuery, isFieldReadable, mergeResourceConfig, nativePolicyFilter, sendControllerResponse, validateResourceConfig };
@@ -1,8 +1,8 @@
1
- /*! @classytic/arc v2.35.0 | MIT | https://classytic.com */
2
- import { a as DEFAULT_SORT, c as HOOK_OPERATIONS, d as MAX_REGEX_LENGTH, f as MAX_SEARCH_LENGTH, h as SYSTEM_FIELDS, i as DEFAULT_MAX_LIMIT, l as HOOK_PHASES, m as RESERVED_QUERY_PARAMS, n as DEFAULT_ID_FIELD, o as DEFAULT_TENANT_FIELD, p as MUTATION_OPERATIONS, r as DEFAULT_LIMIT, s as DEFAULT_UPDATE_METHOD, t as CRUD_OPERATIONS, u as MAX_FILTER_DEPTH } from "../constants-BhzLXCfN.mjs";
3
- import { a as BulkMixin, c as collectReadBlockedFields, f as BodySanitizer, h as nativePolicyFilter, i as SlugMixin, l as isFieldReadable, m as AccessControl, n as TreeMixin, o as BaseCrudController, r as SoftDeleteMixin, s as QueryResolver, t as BaseController } from "../BaseController-C-pofd0v.mjs";
4
- import { a as ResourceDefinition, i as validateResourceConfig, n as assertValidConfig, o as createCrudRouter, r as formatValidationErrors, s as createPermissionMiddleware, t as defineResource } from "../defineResource-BOrGeocE.mjs";
5
- import { a as createCrudHandlers, c as getControllerContext, l as getControllerScope, o as createFastifyHandler, s as createRequestContext, u as sendControllerResponse } from "../actionPermissions-LFuOra7W.mjs";
6
- import { t as defineAggregation } from "../defineAggregation-DoIijIFq.mjs";
7
- import { a as mergeResourceConfig, i as defineResourceVariants, n as getEntityIdField, o as defineAction, r as getEntityQuery, t as getEntityId } from "../core-DdEvmmkY.mjs";
1
+ /*! @classytic/arc v2.37.0 | MIT | https://classytic.com */
2
+ import { a as DEFAULT_SORT, c as HOOK_OPERATIONS, d as MAX_REGEX_LENGTH, f as MAX_SEARCH_LENGTH, h as SYSTEM_FIELDS, i as DEFAULT_MAX_LIMIT, l as HOOK_PHASES, m as RESERVED_QUERY_PARAMS, n as DEFAULT_ID_FIELD, o as DEFAULT_TENANT_FIELD, p as MUTATION_OPERATIONS, r as DEFAULT_LIMIT, s as DEFAULT_UPDATE_METHOD, t as CRUD_OPERATIONS, u as MAX_FILTER_DEPTH } from "../constants-CUpamQMJ.mjs";
3
+ import { a as BulkMixin, c as collectReadBlockedFields, f as BodySanitizer, h as nativePolicyFilter, i as SlugMixin, l as isFieldReadable, m as AccessControl, n as TreeMixin, o as BaseCrudController, r as SoftDeleteMixin, s as QueryResolver, t as BaseController } from "../BaseController-B5GZfUBy.mjs";
4
+ import { a as ResourceDefinition, i as validateResourceConfig, n as assertValidConfig, o as createCrudRouter, r as formatValidationErrors, s as createPermissionMiddleware, t as defineResource } from "../defineResource-WcbE1kJL.mjs";
5
+ import { a as createCrudHandlers, c as getControllerContext, l as getControllerScope, o as createFastifyHandler, s as createRequestContext, u as sendControllerResponse } from "../actionPermissions-CQQrR4tu.mjs";
6
+ import { t as defineAggregation } from "../defineAggregation-cCitY2FA.mjs";
7
+ import { a as mergeResourceConfig, i as defineResourceVariants, n as getEntityIdField, o as defineAction, r as getEntityQuery, t as getEntityId } from "../core-C8GWw-Iu.mjs";
8
8
  export { AccessControl, BaseController, BaseCrudController, BodySanitizer, BulkMixin, CRUD_OPERATIONS, DEFAULT_ID_FIELD, DEFAULT_LIMIT, DEFAULT_MAX_LIMIT, DEFAULT_SORT, DEFAULT_TENANT_FIELD, DEFAULT_UPDATE_METHOD, HOOK_OPERATIONS, HOOK_PHASES, MAX_FILTER_DEPTH, MAX_REGEX_LENGTH, MAX_SEARCH_LENGTH, MUTATION_OPERATIONS, QueryResolver, RESERVED_QUERY_PARAMS, ResourceDefinition, SYSTEM_FIELDS, SlugMixin, SoftDeleteMixin, TreeMixin, assertValidConfig, collectReadBlockedFields, createCrudHandlers, createCrudRouter, createFastifyHandler, createPermissionMiddleware, createRequestContext, defineAction, defineAggregation, defineResource, defineResourceVariants, formatValidationErrors, getControllerContext, getControllerScope, getEntityId, getEntityIdField, getEntityQuery, isFieldReadable, mergeResourceConfig, nativePolicyFilter, sendControllerResponse, validateResourceConfig };
@@ -1,6 +1,6 @@
1
- /*! @classytic/arc v2.35.0 | MIT | https://classytic.com */
2
- import "./constants-BhzLXCfN.mjs";
3
- import { t as defineResource } from "./defineResource-BOrGeocE.mjs";
1
+ /*! @classytic/arc v2.37.0 | MIT | https://classytic.com */
2
+ import "./constants-CUpamQMJ.mjs";
3
+ import { t as defineResource } from "./defineResource-WcbE1kJL.mjs";
4
4
  //#region src/core/defineAction.ts
5
5
  /**
6
6
  * Build an `ActionDefinition` with a typed handler. The literal schema
@@ -1,10 +1,10 @@
1
- /*! @classytic/arc v2.35.0 | MIT | https://classytic.com */
2
- import { t as __exportAll } from "./rolldown-runtime-CEvvVXTC.mjs";
3
- import "./constants-BhzLXCfN.mjs";
4
- import { f as createError } from "./errors-CLid6atr.mjs";
5
- import { a as selectPluginMw, c as buildRouteHooks, f as buildAuthMiddlewareForPermissions, i as resolveRouterPluginMw, n as buildRateLimitConfig, o as buildActionPermissionMw, p as buildArcDecorator, r as buildRouteConfig, t as tryRegisterRoute, u as routeHookOptions } from "./registerRoute-u1opU66a.mjs";
6
- import { i as resolvePipelineSteps, n as buildActionPipelineHandler, u as sendControllerResponse } from "./actionPermissions-LFuOra7W.mjs";
7
- import { n as schemaIRToJsonSchemaBranch, t as normalizeSchemaIR } from "./schemaIR-s3-ouZmP.mjs";
1
+ /*! @classytic/arc v2.37.0 | MIT | https://classytic.com */
2
+ import { t as __exportAll } from "./rolldown-runtime-DrZrabOW.mjs";
3
+ import "./constants-CUpamQMJ.mjs";
4
+ import { f as createError } from "./errors-DsdZc1Xv.mjs";
5
+ import { a as selectPluginMw, c as buildRouteHooks, f as buildAuthMiddlewareForPermissions, i as resolveRouterPluginMw, n as buildRateLimitConfig, o as buildActionPermissionMw, p as buildArcDecorator, r as buildRouteConfig, t as tryRegisterRoute, u as routeHookOptions } from "./registerRoute-dnf-JJf-.mjs";
6
+ import { i as resolvePipelineSteps, n as buildActionPipelineHandler, u as sendControllerResponse } from "./actionPermissions-CQQrR4tu.mjs";
7
+ import { n as schemaIRToJsonSchemaBranch, t as normalizeSchemaIR } from "./schemaIR-BfI425RH.mjs";
8
8
  //#region src/core/createActionRouter.ts
9
9
  var createActionRouter_exports = /* @__PURE__ */ __exportAll({
10
10
  buildActionBodySchema: () => buildActionBodySchema,
@@ -1,10 +1,10 @@
1
- /*! @classytic/arc v2.35.0 | MIT | https://classytic.com */
2
- import { n as evaluateAndApplyPermission } from "./authorizationDecision-DYXBBgtg.mjs";
3
- import { f as createError } from "./errors-CLid6atr.mjs";
4
- import { u as getRequestScope } from "./types-GY4kATJb.mjs";
5
- import { a as selectPluginMw, c as buildRouteHooks, d as buildAuthMiddleware, i as resolveRouterPluginMw, n as buildRateLimitConfig, p as buildArcDecorator, u as routeHookOptions } from "./registerRoute-u1opU66a.mjs";
6
- import { n as validateAggregations } from "./validate-dosAIvQU.mjs";
7
- import { t as buildAggregationHandler } from "./buildHandler-Do9aMIvL.mjs";
1
+ /*! @classytic/arc v2.37.0 | MIT | https://classytic.com */
2
+ import { n as evaluateAndApplyPermission } from "./authorizationDecision-DgyWdav8.mjs";
3
+ import { f as createError } from "./errors-DsdZc1Xv.mjs";
4
+ import { u as getRequestScope } from "./types-lDs9oF4z.mjs";
5
+ import { a as selectPluginMw, c as buildRouteHooks, d as buildAuthMiddleware, i as resolveRouterPluginMw, n as buildRateLimitConfig, p as buildArcDecorator, u as routeHookOptions } from "./registerRoute-dnf-JJf-.mjs";
6
+ import { n as validateAggregations } from "./validate-qK_-7MVk.mjs";
7
+ import { t as buildAggregationHandler } from "./buildHandler-D2DkqtiY.mjs";
8
8
  //#region src/core/aggregation/createAggregationRouter.ts
9
9
  /**
10
10
  * Register one Fastify route per aggregation. No-op when the map is
@@ -1,4 +1,4 @@
1
- /*! @classytic/arc v2.35.0 | MIT | https://classytic.com */
1
+ /*! @classytic/arc v2.37.0 | MIT | https://classytic.com */
2
2
  //#region src/core/aggregation/defineAggregation.ts
3
3
  /**
4
4
  * Declare a single resource aggregation. Exported configs flow into
@@ -1,20 +1,20 @@
1
- /*! @classytic/arc v2.35.0 | MIT | https://classytic.com */
2
- import { p as MUTATION_OPERATIONS, s as DEFAULT_UPDATE_METHOD, t as CRUD_OPERATIONS } from "./constants-BhzLXCfN.mjs";
1
+ /*! @classytic/arc v2.37.0 | MIT | https://classytic.com */
2
+ import { p as MUTATION_OPERATIONS, s as DEFAULT_UPDATE_METHOD, t as CRUD_OPERATIONS } from "./constants-CUpamQMJ.mjs";
3
3
  import { arcLog } from "./logger/index.mjs";
4
- import { r as ForbiddenError } from "./errors-CLid6atr.mjs";
5
- import { n as getUserRoles } from "./userHelpers-AKcB4V03.mjs";
6
- import { b as isElevated, n as PUBLIC_SCOPE, x as isMember } from "./types-GY4kATJb.mjs";
7
- import { d as isWriteVerbCapable, p as DEFAULT_FIELD_WRITE_DENIAL_POLICY, t as BaseController, u as detectOverriddenWriteSlots } from "./BaseController-C-pofd0v.mjs";
8
- import { a as selectPluginMw, c as buildRouteHooks, d as buildAuthMiddleware, i as resolveRouterPluginMw, l as resolveRoutePreHandlers, n as buildRateLimitConfig, p as buildArcDecorator, r as buildRouteConfig, s as buildCrudPermissionMw, t as tryRegisterRoute, u as routeHookOptions } from "./registerRoute-u1opU66a.mjs";
9
- import { i as resolveEffectiveRoles, n as applyFieldWritePermissions } from "./fields-UtpiJO5R.mjs";
10
- import { c as getDefaultCrudSchemas } from "./utils-CBK9HQOI.mjs";
11
- import { n as convertRouteSchema, r as ensureSchemaConverter, t as convertOpenApiSchemas } from "./schemaConverter-D2_bHGil.mjs";
12
- import { i as pipeUIMessageStreamToReply, r as isReadableStream } from "./streaming-DOpZVht6.mjs";
13
- import { t as hasEvents } from "./typeGuards-B-_jqaMi.mjs";
14
- import { a as createCrudHandlers, i as resolvePipelineSteps, o as createFastifyHandler, r as buildPipelineHandler, s as createRequestContext, t as resolveActionPermission } from "./actionPermissions-LFuOra7W.mjs";
15
- import { B as requireAuth } from "./permissions-CpSBlFXZ.mjs";
16
- import { r as getAvailablePresets, t as applyPresets } from "./presets-Bi0Z6Iq8.mjs";
17
- import { t as pluralize } from "./pluralize-DGAQQKL8.mjs";
4
+ import { r as ForbiddenError } from "./errors-DsdZc1Xv.mjs";
5
+ import { n as getUserRoles } from "./userHelpers-DU_Z5OBA.mjs";
6
+ import { b as isElevated, n as PUBLIC_SCOPE, x as isMember } from "./types-lDs9oF4z.mjs";
7
+ import { d as isWriteVerbCapable, p as DEFAULT_FIELD_WRITE_DENIAL_POLICY, t as BaseController, u as detectOverriddenWriteSlots } from "./BaseController-B5GZfUBy.mjs";
8
+ import { a as selectPluginMw, c as buildRouteHooks, d as buildAuthMiddleware, i as resolveRouterPluginMw, l as resolveRoutePreHandlers, n as buildRateLimitConfig, p as buildArcDecorator, r as buildRouteConfig, s as buildCrudPermissionMw, t as tryRegisterRoute, u as routeHookOptions } from "./registerRoute-dnf-JJf-.mjs";
9
+ import { i as resolveEffectiveRoles, n as applyFieldWritePermissions } from "./fields-DvGz47Ul.mjs";
10
+ import { c as getDefaultCrudSchemas } from "./utils-sXGFLegw.mjs";
11
+ import { n as convertRouteSchema, r as ensureSchemaConverter, t as convertOpenApiSchemas } from "./schemaConverter-C8zbW7tJ.mjs";
12
+ import { i as pipeUIMessageStreamToReply, r as isReadableStream } from "./streaming-weWcFCk4.mjs";
13
+ import { t as hasEvents } from "./typeGuards-ALWme5WB.mjs";
14
+ import { a as createCrudHandlers, i as resolvePipelineSteps, o as createFastifyHandler, r as buildPipelineHandler, s as createRequestContext, t as resolveActionPermission } from "./actionPermissions-CQQrR4tu.mjs";
15
+ import { B as requireAuth } from "./permissions-DWkl60hx.mjs";
16
+ import { r as getAvailablePresets, t as applyPresets } from "./presets-Gbv9mNKD.mjs";
17
+ import { t as pluralize } from "./pluralize-DgaYX91M.mjs";
18
18
  import { isReadOnlyRepo } from "@classytic/repo-core/repository";
19
19
  //#region src/core/middlewares/fieldWrite.ts
20
20
  /**
@@ -1425,7 +1425,7 @@ function buildResourcePlugin(resource) {
1425
1425
  extensions: resource.extensions
1426
1426
  });
1427
1427
  if (resource.actions && Object.keys(resource.actions).length > 0) {
1428
- const { createActionRouter } = await import("./createActionRouter-EYWgd0ly.mjs").then((n) => n.n);
1428
+ const { createActionRouter } = await import("./createActionRouter-CwDU_j2S.mjs").then((n) => n.n);
1429
1429
  createActionRouter(typedInstance, {
1430
1430
  ...normalizeActionsToRouterConfig(resource.actions, resource.actionPermissions, resource.tag, resource.permissions, resource.name, typedInstance.log),
1431
1431
  resourceName: resource.name,
@@ -1440,7 +1440,7 @@ function buildResourcePlugin(resource) {
1440
1440
  });
1441
1441
  }
1442
1442
  if (resource.aggregations && Object.keys(resource.aggregations).length > 0) {
1443
- const [{ createAggregationRouter }, { adapterSupportsAggregate, ArcAggregationConfigError }] = await Promise.all([import("./createAggregationRouter-ByOK9Iev.mjs"), import("./validate-dosAIvQU.mjs").then((n) => n.r)]);
1443
+ const [{ createAggregationRouter }, { adapterSupportsAggregate, ArcAggregationConfigError }] = await Promise.all([import("./createAggregationRouter-d057xXX1.mjs"), import("./validate-qK_-7MVk.mjs").then((n) => n.r)]);
1444
1444
  const repoForAgg = resource.controller?.repository ?? resource.repository;
1445
1445
  if (!adapterSupportsAggregate(repoForAgg)) {
1446
1446
  const undispatchable = Object.entries(resource.aggregations).filter(([, cfg]) => !cfg.materialized).map(([name]) => name);
@@ -1,4 +1,4 @@
1
- /*! @classytic/arc v2.35.0 | MIT | https://classytic.com */
1
+ /*! @classytic/arc v2.37.0 | MIT | https://classytic.com */
2
2
  import { readdir } from "node:fs/promises";
3
3
  import { extname, join, resolve } from "node:path";
4
4
  import { pathToFileURL } from "node:url";
@@ -1,5 +1,5 @@
1
1
 
2
- import { p as RegistryEntry } from "../index-C5K78SXo.mjs";
2
+ import { p as RegistryEntry } from "../index-C01wWGJt.mjs";
3
3
  import { t as ExternalOpenApiPaths } from "../externalPaths-CmGOxOtD.mjs";
4
4
  import { FastifyPluginAsync } from "fastify";
5
5
  //#region src/docs/openapi/types.d.ts
@@ -1,6 +1,6 @@
1
- /*! @classytic/arc v2.35.0 | MIT | https://classytic.com */
2
- import { n as getUserRoles } from "../userHelpers-AKcB4V03.mjs";
3
- import { n as openApiPlugin, r as openapi_default, t as buildOpenApiSpec } from "../openapi-ItLH12_L.mjs";
1
+ /*! @classytic/arc v2.37.0 | MIT | https://classytic.com */
2
+ import { n as getUserRoles } from "../userHelpers-DU_Z5OBA.mjs";
3
+ import { n as openApiPlugin, r as openapi_default, t as buildOpenApiSpec } from "../openapi-D_i6CifU.mjs";
4
4
  import fp from "fastify-plugin";
5
5
  //#region src/docs/scalar.ts
6
6
  const scalarPlugin = async (fastify, opts = {}) => {
@@ -1,8 +1,8 @@
1
- /*! @classytic/arc v2.35.0 | MIT | https://classytic.com */
2
- import { t as __exportAll } from "./rolldown-runtime-CEvvVXTC.mjs";
1
+ /*! @classytic/arc v2.37.0 | MIT | https://classytic.com */
2
+ import { t as __exportAll } from "./rolldown-runtime-DrZrabOW.mjs";
3
3
  import { arcLog } from "./logger/index.mjs";
4
- import { n as requireSingleHeaderValue } from "./headers-DODWf7aC.mjs";
5
- import { n as getUserRoles } from "./userHelpers-AKcB4V03.mjs";
4
+ import { n as requireSingleHeaderValue } from "./headers-BFu1st_i.mjs";
5
+ import { n as getUserRoles } from "./userHelpers-DU_Z5OBA.mjs";
6
6
  import fp from "fastify-plugin";
7
7
  //#region src/scope/elevation.ts
8
8
  var elevation_exports = /* @__PURE__ */ __exportAll({
@@ -1,6 +1,6 @@
1
- /*! @classytic/arc v2.35.0 | MIT | https://classytic.com */
2
- import { t as ArcError } from "../errors-CLid6atr.mjs";
3
- import { t as parseJsonBody } from "../jsonBody-CVKA7C5m.mjs";
1
+ /*! @classytic/arc v2.37.0 | MIT | https://classytic.com */
2
+ import { t as ArcError } from "../errors-DsdZc1Xv.mjs";
3
+ import { t as parseJsonBody } from "../jsonBody-BuzxOZV8.mjs";
4
4
  import { createCipheriv, createDecipheriv, randomBytes } from "node:crypto";
5
5
  import fp from "fastify-plugin";
6
6
  //#region src/encryption/fieldCipher.ts
@@ -1,6 +1,6 @@
1
- /*! @classytic/arc v2.35.0 | MIT | https://classytic.com */
2
- import { t as __exportAll } from "./rolldown-runtime-CEvvVXTC.mjs";
3
- import { m as statusToArcCode, p as isArcError } from "./errors-CLid6atr.mjs";
1
+ /*! @classytic/arc v2.37.0 | MIT | https://classytic.com */
2
+ import { t as __exportAll } from "./rolldown-runtime-DrZrabOW.mjs";
3
+ import { m as statusToArcCode, p as isArcError } from "./errors-DsdZc1Xv.mjs";
4
4
  import { isHttpError, toErrorContract } from "@classytic/repo-core/errors";
5
5
  import { isProductionEnv } from "@classytic/primitives/environment";
6
6
  import fp from "fastify-plugin";
@@ -1,4 +1,4 @@
1
- /*! @classytic/arc v2.35.0 | MIT | https://classytic.com */
1
+ /*! @classytic/arc v2.37.0 | MIT | https://classytic.com */
2
2
  //#region src/utils/errors.ts
3
3
  /**
4
4
  * Base Arc Error. Implements the canonical `HttpError` contract — `status`
@@ -1,9 +1,9 @@
1
- /*! @classytic/arc v2.35.0 | MIT | https://classytic.com */
2
- import { t as __exportAll } from "./rolldown-runtime-CEvvVXTC.mjs";
1
+ /*! @classytic/arc v2.37.0 | MIT | https://classytic.com */
2
+ import { t as __exportAll } from "./rolldown-runtime-DrZrabOW.mjs";
3
3
  import { arcLog } from "./logger/index.mjs";
4
- import { d as createDomainError } from "./errors-CLid6atr.mjs";
5
- import { n as requestContext } from "./requestContext-DzOUGNdY.mjs";
6
- import { n as MemoryEventTransport, r as createEvent, t as ARC_EVENT_TRANSPORT } from "./EventTransport-BrPeGUil.mjs";
4
+ import { d as createDomainError } from "./errors-DsdZc1Xv.mjs";
5
+ import { n as requestContext } from "./requestContext-DGM7EZRI.mjs";
6
+ import { n as MemoryEventTransport, r as createEvent, t as ARC_EVENT_TRANSPORT } from "./EventTransport-pGNNDQ__.mjs";
7
7
  import { isProductionEnv } from "@classytic/primitives/environment";
8
8
  import fp from "fastify-plugin";
9
9
  //#region src/events/retry.ts
@@ -1,7 +1,7 @@
1
1
 
2
2
  import { i as EventLogger, n as DomainEvent, o as MemoryEventTransport, r as EventHandler, s as MemoryEventTransportOptions } from "../EventTransport-BEVP50ka.mjs";
3
3
  import { a as withRetry, c as EventDefinitionOutput, d as EventSchema, f as ValidationResult, i as createDeadLetterPublisher, l as EventRegistry, m as defineEvent, n as eventPlugin, o as CustomValidator, p as createEventRegistry, r as RetryOptions, s as EventDefinitionInput, t as EventPluginOptions, u as EventRegistryOptions } from "../eventPlugin-B47sfCJ8.mjs";
4
- import { a as EventOutbox, c as OutboxRelayErrorKind, i as MemoryOutboxStore, l as RelayResult, n as OutboxModuleOptions, o as EventOutboxOptions, r as createOutboxModule, s as OutboxRelayErrorHandler, t as OutboxModuleExports } from "../outbox-module-b1TyDGGi.mjs";
4
+ import { a as EventOutbox, c as OutboxRelayErrorKind, i as MemoryOutboxStore, l as RelayResult, n as OutboxModuleOptions, o as EventOutboxOptions, r as createOutboxModule, s as OutboxRelayErrorHandler, t as OutboxModuleExports } from "../outbox-module-BbdaMyqy.mjs";
5
5
  import { RedisEventTransportOptions, RedisLike } from "./transports/redis.mjs";
6
6
  import { r as RedisStreamTransportOptions, t as RedisStreamLike } from "../redis-stream-mwLWlfHG.mjs";
7
7
  import { OutboxStore } from "@classytic/primitives/outbox";