@classytic/arc 1.1.0 → 2.1.2

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 (322) hide show
  1. package/README.md +247 -794
  2. package/bin/arc.js +91 -52
  3. package/dist/EventTransport-BD2U0BTc.d.mts +100 -0
  4. package/dist/EventTransport-BD2U0BTc.d.mts.map +1 -0
  5. package/dist/HookSystem-BsGV-j2l.mjs +405 -0
  6. package/dist/HookSystem-BsGV-j2l.mjs.map +1 -0
  7. package/dist/ResourceRegistry-DsN4KJjV.mjs +250 -0
  8. package/dist/ResourceRegistry-DsN4KJjV.mjs.map +1 -0
  9. package/dist/adapters/index.d.mts +5 -0
  10. package/dist/adapters/index.mjs +3 -0
  11. package/dist/audit/index.d.mts +82 -0
  12. package/dist/audit/index.d.mts.map +1 -0
  13. package/dist/audit/index.mjs +276 -0
  14. package/dist/audit/index.mjs.map +1 -0
  15. package/dist/audit/mongodb.d.mts +5 -0
  16. package/dist/audit/mongodb.mjs +3 -0
  17. package/dist/audited-C3T5DTUx.mjs +141 -0
  18. package/dist/audited-C3T5DTUx.mjs.map +1 -0
  19. package/dist/auth/index.d.mts +189 -0
  20. package/dist/auth/index.d.mts.map +1 -0
  21. package/dist/auth/index.mjs +1102 -0
  22. package/dist/auth/index.mjs.map +1 -0
  23. package/dist/auth/redis-session.d.mts +44 -0
  24. package/dist/auth/redis-session.d.mts.map +1 -0
  25. package/dist/auth/redis-session.mjs +76 -0
  26. package/dist/auth/redis-session.mjs.map +1 -0
  27. package/dist/betterAuthOpenApi-BrHKeSAx.mjs +250 -0
  28. package/dist/betterAuthOpenApi-BrHKeSAx.mjs.map +1 -0
  29. package/dist/cache/index.d.mts +146 -0
  30. package/dist/cache/index.d.mts.map +1 -0
  31. package/dist/cache/index.mjs +92 -0
  32. package/dist/cache/index.mjs.map +1 -0
  33. package/dist/caching-Bl28lYsR.mjs +94 -0
  34. package/dist/caching-Bl28lYsR.mjs.map +1 -0
  35. package/dist/chunk-C7Uep-_p.mjs +20 -0
  36. package/dist/circuitBreaker-DeY4FCjs.mjs +1097 -0
  37. package/dist/circuitBreaker-DeY4FCjs.mjs.map +1 -0
  38. package/dist/cli/commands/describe.d.mts +19 -0
  39. package/dist/cli/commands/describe.d.mts.map +1 -0
  40. package/dist/cli/commands/describe.mjs +239 -0
  41. package/dist/cli/commands/describe.mjs.map +1 -0
  42. package/dist/cli/commands/docs.d.mts +14 -0
  43. package/dist/cli/commands/docs.d.mts.map +1 -0
  44. package/dist/cli/commands/docs.mjs +53 -0
  45. package/dist/cli/commands/docs.mjs.map +1 -0
  46. package/dist/cli/commands/{generate.d.ts → generate.d.mts} +3 -1
  47. package/dist/cli/commands/generate.d.mts.map +1 -0
  48. package/dist/cli/commands/generate.mjs +358 -0
  49. package/dist/cli/commands/generate.mjs.map +1 -0
  50. package/dist/cli/commands/{init.d.ts → init.d.mts} +12 -8
  51. package/dist/cli/commands/init.d.mts.map +1 -0
  52. package/dist/cli/commands/{init.js → init.mjs} +807 -616
  53. package/dist/cli/commands/init.mjs.map +1 -0
  54. package/dist/cli/commands/introspect.d.mts +11 -0
  55. package/dist/cli/commands/introspect.d.mts.map +1 -0
  56. package/dist/cli/commands/introspect.mjs +76 -0
  57. package/dist/cli/commands/introspect.mjs.map +1 -0
  58. package/dist/cli/index.d.mts +17 -0
  59. package/dist/cli/index.d.mts.map +1 -0
  60. package/dist/cli/index.mjs +157 -0
  61. package/dist/cli/index.mjs.map +1 -0
  62. package/dist/constants-DdXFXQtN.mjs +85 -0
  63. package/dist/constants-DdXFXQtN.mjs.map +1 -0
  64. package/dist/core/index.d.mts +5 -0
  65. package/dist/core/index.mjs +4 -0
  66. package/dist/createApp-CUgNqegw.mjs +560 -0
  67. package/dist/createApp-CUgNqegw.mjs.map +1 -0
  68. package/dist/defineResource-k0_BDn8v.mjs +2197 -0
  69. package/dist/defineResource-k0_BDn8v.mjs.map +1 -0
  70. package/dist/discovery/index.d.mts +47 -0
  71. package/dist/discovery/index.d.mts.map +1 -0
  72. package/dist/discovery/index.mjs +110 -0
  73. package/dist/discovery/index.mjs.map +1 -0
  74. package/dist/docs/index.d.mts +163 -0
  75. package/dist/docs/index.d.mts.map +1 -0
  76. package/dist/docs/index.mjs +73 -0
  77. package/dist/docs/index.mjs.map +1 -0
  78. package/dist/elevation-BRy3yFWT.mjs +113 -0
  79. package/dist/elevation-BRy3yFWT.mjs.map +1 -0
  80. package/dist/elevation-B_2dRLVP.d.mts +88 -0
  81. package/dist/elevation-B_2dRLVP.d.mts.map +1 -0
  82. package/dist/errorHandler-BbcgBmIH.d.mts +73 -0
  83. package/dist/errorHandler-BbcgBmIH.d.mts.map +1 -0
  84. package/dist/errorHandler-C1okiriz.mjs +109 -0
  85. package/dist/errorHandler-C1okiriz.mjs.map +1 -0
  86. package/dist/errors-B9bZok84.mjs +212 -0
  87. package/dist/errors-B9bZok84.mjs.map +1 -0
  88. package/dist/errors-ChKiFz62.d.mts +125 -0
  89. package/dist/errors-ChKiFz62.d.mts.map +1 -0
  90. package/dist/eventPlugin-CTrLH3mt.d.mts +125 -0
  91. package/dist/eventPlugin-CTrLH3mt.d.mts.map +1 -0
  92. package/dist/eventPlugin-DGR_B2on.mjs +230 -0
  93. package/dist/eventPlugin-DGR_B2on.mjs.map +1 -0
  94. package/dist/events/index.d.mts +54 -0
  95. package/dist/events/index.d.mts.map +1 -0
  96. package/dist/events/index.mjs +52 -0
  97. package/dist/events/index.mjs.map +1 -0
  98. package/dist/events/transports/redis-stream-entry.d.mts +2 -0
  99. package/dist/events/transports/redis-stream-entry.mjs +178 -0
  100. package/dist/events/transports/redis-stream-entry.mjs.map +1 -0
  101. package/dist/events/transports/redis.d.mts +77 -0
  102. package/dist/events/transports/redis.d.mts.map +1 -0
  103. package/dist/events/transports/redis.mjs +125 -0
  104. package/dist/events/transports/redis.mjs.map +1 -0
  105. package/dist/externalPaths-DlINfKbP.d.mts +51 -0
  106. package/dist/externalPaths-DlINfKbP.d.mts.map +1 -0
  107. package/dist/factory/index.d.mts +64 -0
  108. package/dist/factory/index.d.mts.map +1 -0
  109. package/dist/factory/index.mjs +3 -0
  110. package/dist/fastifyAdapter-BkrGrlFi.d.mts +217 -0
  111. package/dist/fastifyAdapter-BkrGrlFi.d.mts.map +1 -0
  112. package/dist/fields-DyaDVX4J.d.mts +110 -0
  113. package/dist/fields-DyaDVX4J.d.mts.map +1 -0
  114. package/dist/fields-iagOozy0.mjs +115 -0
  115. package/dist/fields-iagOozy0.mjs.map +1 -0
  116. package/dist/hooks/index.d.mts +4 -0
  117. package/dist/hooks/index.mjs +3 -0
  118. package/dist/idempotency/index.d.mts +97 -0
  119. package/dist/idempotency/index.d.mts.map +1 -0
  120. package/dist/idempotency/index.mjs +320 -0
  121. package/dist/idempotency/index.mjs.map +1 -0
  122. package/dist/idempotency/mongodb.d.mts +2 -0
  123. package/dist/idempotency/mongodb.mjs +115 -0
  124. package/dist/idempotency/mongodb.mjs.map +1 -0
  125. package/dist/idempotency/redis.d.mts +2 -0
  126. package/dist/idempotency/redis.mjs +104 -0
  127. package/dist/idempotency/redis.mjs.map +1 -0
  128. package/dist/index.d.mts +261 -0
  129. package/dist/index.d.mts.map +1 -0
  130. package/dist/index.mjs +105 -0
  131. package/dist/index.mjs.map +1 -0
  132. package/dist/integrations/event-gateway.d.mts +47 -0
  133. package/dist/integrations/event-gateway.d.mts.map +1 -0
  134. package/dist/integrations/event-gateway.mjs +44 -0
  135. package/dist/integrations/event-gateway.mjs.map +1 -0
  136. package/dist/integrations/index.d.mts +5 -0
  137. package/dist/integrations/index.mjs +1 -0
  138. package/dist/integrations/jobs.d.mts +104 -0
  139. package/dist/integrations/jobs.d.mts.map +1 -0
  140. package/dist/integrations/jobs.mjs +124 -0
  141. package/dist/integrations/jobs.mjs.map +1 -0
  142. package/dist/integrations/streamline.d.mts +61 -0
  143. package/dist/integrations/streamline.d.mts.map +1 -0
  144. package/dist/integrations/streamline.mjs +126 -0
  145. package/dist/integrations/streamline.mjs.map +1 -0
  146. package/dist/integrations/websocket.d.mts +83 -0
  147. package/dist/integrations/websocket.d.mts.map +1 -0
  148. package/dist/integrations/websocket.mjs +289 -0
  149. package/dist/integrations/websocket.mjs.map +1 -0
  150. package/dist/interface-B01JvPVc.d.mts +78 -0
  151. package/dist/interface-B01JvPVc.d.mts.map +1 -0
  152. package/dist/interface-CZe8IkMf.d.mts +55 -0
  153. package/dist/interface-CZe8IkMf.d.mts.map +1 -0
  154. package/dist/interface-Ch8HU9uM.d.mts +1098 -0
  155. package/dist/interface-Ch8HU9uM.d.mts.map +1 -0
  156. package/dist/introspectionPlugin-rFdO8ZUa.mjs +54 -0
  157. package/dist/introspectionPlugin-rFdO8ZUa.mjs.map +1 -0
  158. package/dist/keys-BqNejWup.mjs +43 -0
  159. package/dist/keys-BqNejWup.mjs.map +1 -0
  160. package/dist/logger-Df2O2WsW.mjs +79 -0
  161. package/dist/logger-Df2O2WsW.mjs.map +1 -0
  162. package/dist/memory-cQgelFOj.mjs +144 -0
  163. package/dist/memory-cQgelFOj.mjs.map +1 -0
  164. package/dist/migrations/index.d.mts +157 -0
  165. package/dist/migrations/index.d.mts.map +1 -0
  166. package/dist/migrations/index.mjs +261 -0
  167. package/dist/migrations/index.mjs.map +1 -0
  168. package/dist/mongodb-BfJVlUJH.mjs +94 -0
  169. package/dist/mongodb-BfJVlUJH.mjs.map +1 -0
  170. package/dist/mongodb-CGzRbfAK.d.mts +119 -0
  171. package/dist/mongodb-CGzRbfAK.d.mts.map +1 -0
  172. package/dist/mongodb-JN-9JA7K.d.mts +72 -0
  173. package/dist/mongodb-JN-9JA7K.d.mts.map +1 -0
  174. package/dist/openapi-G3Cw7XuM.mjs +524 -0
  175. package/dist/openapi-G3Cw7XuM.mjs.map +1 -0
  176. package/dist/org/index.d.mts +69 -0
  177. package/dist/org/index.d.mts.map +1 -0
  178. package/dist/org/index.mjs +514 -0
  179. package/dist/org/index.mjs.map +1 -0
  180. package/dist/org/types.d.mts +83 -0
  181. package/dist/org/types.d.mts.map +1 -0
  182. package/dist/org/types.mjs +1 -0
  183. package/dist/permissions/index.d.mts +279 -0
  184. package/dist/permissions/index.d.mts.map +1 -0
  185. package/dist/permissions/index.mjs +579 -0
  186. package/dist/permissions/index.mjs.map +1 -0
  187. package/dist/plugins/index.d.mts +173 -0
  188. package/dist/plugins/index.d.mts.map +1 -0
  189. package/dist/plugins/index.mjs +523 -0
  190. package/dist/plugins/index.mjs.map +1 -0
  191. package/dist/plugins/response-cache.d.mts +88 -0
  192. package/dist/plugins/response-cache.d.mts.map +1 -0
  193. package/dist/plugins/response-cache.mjs +284 -0
  194. package/dist/plugins/response-cache.mjs.map +1 -0
  195. package/dist/plugins/tracing-entry.d.mts +2 -0
  196. package/dist/plugins/tracing-entry.mjs +186 -0
  197. package/dist/plugins/tracing-entry.mjs.map +1 -0
  198. package/dist/pluralize-CEweyOEm.mjs +87 -0
  199. package/dist/pluralize-CEweyOEm.mjs.map +1 -0
  200. package/dist/policies/{index.d.ts → index.d.mts} +204 -169
  201. package/dist/policies/index.d.mts.map +1 -0
  202. package/dist/policies/index.mjs +322 -0
  203. package/dist/policies/index.mjs.map +1 -0
  204. package/dist/presets/{index.d.ts → index.d.mts} +63 -131
  205. package/dist/presets/index.d.mts.map +1 -0
  206. package/dist/presets/index.mjs +144 -0
  207. package/dist/presets/index.mjs.map +1 -0
  208. package/dist/presets/multiTenant.d.mts +25 -0
  209. package/dist/presets/multiTenant.d.mts.map +1 -0
  210. package/dist/presets/multiTenant.mjs +114 -0
  211. package/dist/presets/multiTenant.mjs.map +1 -0
  212. package/dist/presets-BITljm96.mjs +120 -0
  213. package/dist/presets-BITljm96.mjs.map +1 -0
  214. package/dist/presets-DzSMwlKj.d.mts +58 -0
  215. package/dist/presets-DzSMwlKj.d.mts.map +1 -0
  216. package/dist/prisma-DJbMt3yf.mjs +628 -0
  217. package/dist/prisma-DJbMt3yf.mjs.map +1 -0
  218. package/dist/prisma-Dg9GoVdj.d.mts +275 -0
  219. package/dist/prisma-Dg9GoVdj.d.mts.map +1 -0
  220. package/dist/queryCachePlugin-7THaI5mt.d.mts +72 -0
  221. package/dist/queryCachePlugin-7THaI5mt.d.mts.map +1 -0
  222. package/dist/queryCachePlugin-DMBnp2Q0.mjs +139 -0
  223. package/dist/queryCachePlugin-DMBnp2Q0.mjs.map +1 -0
  224. package/dist/redis-D-JAeLtm.d.mts +50 -0
  225. package/dist/redis-D-JAeLtm.d.mts.map +1 -0
  226. package/dist/redis-stream-Bdh_vUU8.d.mts +104 -0
  227. package/dist/redis-stream-Bdh_vUU8.d.mts.map +1 -0
  228. package/dist/registry/index.d.mts +12 -0
  229. package/dist/registry/index.d.mts.map +1 -0
  230. package/dist/registry/index.mjs +4 -0
  231. package/dist/requestContext-QQD6ROJc.mjs +56 -0
  232. package/dist/requestContext-QQD6ROJc.mjs.map +1 -0
  233. package/dist/schemaConverter-BwrmWroW.mjs +99 -0
  234. package/dist/schemaConverter-BwrmWroW.mjs.map +1 -0
  235. package/dist/schemas/index.d.mts +64 -0
  236. package/dist/schemas/index.d.mts.map +1 -0
  237. package/dist/schemas/index.mjs +83 -0
  238. package/dist/schemas/index.mjs.map +1 -0
  239. package/dist/scope/index.d.mts +22 -0
  240. package/dist/scope/index.d.mts.map +1 -0
  241. package/dist/scope/index.mjs +66 -0
  242. package/dist/scope/index.mjs.map +1 -0
  243. package/dist/sessionManager-jPKLbHE0.d.mts +187 -0
  244. package/dist/sessionManager-jPKLbHE0.d.mts.map +1 -0
  245. package/dist/sse-B3c3_yZp.mjs +124 -0
  246. package/dist/sse-B3c3_yZp.mjs.map +1 -0
  247. package/dist/testing/index.d.mts +908 -0
  248. package/dist/testing/index.d.mts.map +1 -0
  249. package/dist/testing/index.mjs +1977 -0
  250. package/dist/testing/index.mjs.map +1 -0
  251. package/dist/tracing-Cc7vVQPp.d.mts +71 -0
  252. package/dist/tracing-Cc7vVQPp.d.mts.map +1 -0
  253. package/dist/typeGuards-DhMNLuvU.mjs +10 -0
  254. package/dist/typeGuards-DhMNLuvU.mjs.map +1 -0
  255. package/dist/types/index.d.mts +947 -0
  256. package/dist/types/index.d.mts.map +1 -0
  257. package/dist/types/index.mjs +15 -0
  258. package/dist/types/index.mjs.map +1 -0
  259. package/dist/types-Beqn1Un7.mjs +39 -0
  260. package/dist/types-Beqn1Un7.mjs.map +1 -0
  261. package/dist/types-CIgB7UUl.d.mts +446 -0
  262. package/dist/types-CIgB7UUl.d.mts.map +1 -0
  263. package/dist/types-aYB4V7uN.d.mts +87 -0
  264. package/dist/types-aYB4V7uN.d.mts.map +1 -0
  265. package/dist/utils/index.d.mts +748 -0
  266. package/dist/utils/index.d.mts.map +1 -0
  267. package/dist/utils/index.mjs +6 -0
  268. package/package.json +194 -68
  269. package/dist/BaseController-DVAiHxEQ.d.ts +0 -233
  270. package/dist/adapters/index.d.ts +0 -237
  271. package/dist/adapters/index.js +0 -668
  272. package/dist/arcCorePlugin-CsShQdyP.d.ts +0 -273
  273. package/dist/audit/index.d.ts +0 -195
  274. package/dist/audit/index.js +0 -319
  275. package/dist/auth/index.d.ts +0 -47
  276. package/dist/auth/index.js +0 -174
  277. package/dist/cli/commands/docs.d.ts +0 -11
  278. package/dist/cli/commands/docs.js +0 -474
  279. package/dist/cli/commands/generate.js +0 -334
  280. package/dist/cli/commands/introspect.d.ts +0 -8
  281. package/dist/cli/commands/introspect.js +0 -338
  282. package/dist/cli/index.d.ts +0 -4
  283. package/dist/cli/index.js +0 -3269
  284. package/dist/core/index.d.ts +0 -220
  285. package/dist/core/index.js +0 -2786
  286. package/dist/createApp-Ce9wl8W9.d.ts +0 -77
  287. package/dist/docs/index.d.ts +0 -166
  288. package/dist/docs/index.js +0 -658
  289. package/dist/errors-8WIxGS_6.d.ts +0 -122
  290. package/dist/events/index.d.ts +0 -117
  291. package/dist/events/index.js +0 -89
  292. package/dist/factory/index.d.ts +0 -38
  293. package/dist/factory/index.js +0 -1652
  294. package/dist/hooks/index.d.ts +0 -4
  295. package/dist/hooks/index.js +0 -199
  296. package/dist/idempotency/index.d.ts +0 -323
  297. package/dist/idempotency/index.js +0 -500
  298. package/dist/index-B4t03KQ0.d.ts +0 -1366
  299. package/dist/index.d.ts +0 -135
  300. package/dist/index.js +0 -4756
  301. package/dist/migrations/index.d.ts +0 -185
  302. package/dist/migrations/index.js +0 -274
  303. package/dist/org/index.d.ts +0 -129
  304. package/dist/org/index.js +0 -220
  305. package/dist/permissions/index.d.ts +0 -144
  306. package/dist/permissions/index.js +0 -103
  307. package/dist/plugins/index.d.ts +0 -46
  308. package/dist/plugins/index.js +0 -1069
  309. package/dist/policies/index.js +0 -196
  310. package/dist/presets/index.js +0 -384
  311. package/dist/presets/multiTenant.d.ts +0 -39
  312. package/dist/presets/multiTenant.js +0 -112
  313. package/dist/registry/index.d.ts +0 -16
  314. package/dist/registry/index.js +0 -253
  315. package/dist/testing/index.d.ts +0 -618
  316. package/dist/testing/index.js +0 -48020
  317. package/dist/types/index.d.ts +0 -4
  318. package/dist/types/index.js +0 -8
  319. package/dist/types-B99TBmFV.d.ts +0 -76
  320. package/dist/types-BvckRbs2.d.ts +0 -143
  321. package/dist/utils/index.d.ts +0 -679
  322. package/dist/utils/index.js +0 -931
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface-Ch8HU9uM.d.mts","names":[],"sources":["../src/hooks/HookSystem.ts","../src/pipeline/types.ts","../src/types/repository.ts","../src/core/defineResource.ts","../src/registry/ResourceRegistry.ts","../src/types/handlers.ts","../src/core/AccessControl.ts","../src/core/BodySanitizer.ts","../src/core/QueryResolver.ts","../src/core/BaseController.ts","../src/adapters/interface.ts"],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import fp from "fastify-plugin";
2
+
3
+ //#region src/registry/introspectionPlugin.ts
4
+ /**
5
+ * Introspection Plugin
6
+ *
7
+ * Exposes resource registry via API endpoints.
8
+ */
9
+ const introspectionPlugin = async (fastify, opts = {}) => {
10
+ const { prefix = "/_resources", authRoles = ["superadmin"], enabled = true } = opts;
11
+ if (!enabled) {
12
+ fastify.log?.debug?.("Introspection plugin disabled");
13
+ return;
14
+ }
15
+ const typedFastify = fastify;
16
+ const authMiddleware = authRoles.length > 0 && typedFastify.authenticate ? [typedFastify.authenticate, typedFastify.authorize?.(...authRoles)].filter(Boolean) : [];
17
+ const getRegistry = () => fastify.arc?.registry;
18
+ await fastify.register(async (instance) => {
19
+ instance.get("/", { preHandler: authMiddleware }, async (_req, _reply) => {
20
+ return getRegistry()?.getIntrospection() ?? {
21
+ resources: [],
22
+ stats: {},
23
+ generatedAt: (/* @__PURE__ */ new Date()).toISOString()
24
+ };
25
+ });
26
+ instance.get("/stats", { preHandler: authMiddleware }, async (_req, _reply) => {
27
+ return getRegistry()?.getStats() ?? {
28
+ totalResources: 0,
29
+ byModule: {},
30
+ presetUsage: {},
31
+ totalRoutes: 0,
32
+ totalEvents: 0
33
+ };
34
+ });
35
+ instance.get("/:name", {
36
+ schema: { params: {
37
+ type: "object",
38
+ properties: { name: { type: "string" } },
39
+ required: ["name"]
40
+ } },
41
+ preHandler: authMiddleware
42
+ }, async (req, reply) => {
43
+ const resource = getRegistry()?.get(req.params.name);
44
+ if (!resource) return reply.code(404).send({ error: `Resource '${req.params.name}' not found` });
45
+ return resource;
46
+ });
47
+ }, { prefix });
48
+ fastify.log?.debug?.(`Introspection API at ${prefix}`);
49
+ };
50
+ var introspectionPlugin_default = fp(introspectionPlugin, { name: "arc-introspection" });
51
+
52
+ //#endregion
53
+ export { introspectionPlugin_default as n, introspectionPlugin as t };
54
+ //# sourceMappingURL=introspectionPlugin-rFdO8ZUa.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"introspectionPlugin-rFdO8ZUa.mjs","names":[],"sources":["../src/registry/introspectionPlugin.ts"],"sourcesContent":["/**\n * Introspection Plugin\n *\n * Exposes resource registry via API endpoints.\n */\n\nimport fp from 'fastify-plugin';\nimport type { FastifyInstance, FastifyPluginAsync, FastifyReply, FastifyRequest } from 'fastify';\nimport type { IntrospectionPluginOptions, FastifyWithAuth, FastifyWithDecorators } from '../types/index.js';\n\nconst introspectionPlugin: FastifyPluginAsync<IntrospectionPluginOptions> = async (\n fastify: FastifyInstance,\n opts: IntrospectionPluginOptions = {}\n) => {\n const {\n prefix = '/_resources',\n authRoles = ['superadmin'],\n enabled = true,\n } = opts;\n\n if (!enabled) {\n fastify.log?.debug?.('Introspection plugin disabled');\n return;\n }\n\n const typedFastify = fastify as FastifyWithAuth;\n\n // Build auth middleware array using any to avoid complex Fastify type constraints\n const authMiddleware: unknown[] =\n authRoles.length > 0 && typedFastify.authenticate\n ? [\n typedFastify.authenticate,\n typedFastify.authorize?.(...authRoles),\n ].filter(Boolean)\n : [];\n\n // Instance-scoped registry access\n const getRegistry = () => (fastify as unknown as FastifyWithDecorators).arc?.registry;\n\n await fastify.register(async (instance) => {\n // GET / - Get all registered resources\n instance.get(\n '/',\n {\n preHandler: authMiddleware as never,\n },\n async (_req: FastifyRequest, _reply: FastifyReply) => {\n return getRegistry()?.getIntrospection() ?? { resources: [], stats: {}, generatedAt: new Date().toISOString() };\n }\n );\n\n // GET /stats - Get registry statistics\n instance.get(\n '/stats',\n {\n preHandler: authMiddleware as never,\n },\n async (_req: FastifyRequest, _reply: FastifyReply) => {\n return getRegistry()?.getStats() ?? { totalResources: 0, byModule: {}, presetUsage: {}, totalRoutes: 0, totalEvents: 0 };\n }\n );\n\n // GET /:name - Get resource by name\n instance.get<{ Params: { name: string } }>(\n '/:name',\n {\n schema: {\n params: {\n type: 'object' as const,\n properties: {\n name: { type: 'string' as const },\n },\n required: ['name' as const],\n },\n },\n preHandler: authMiddleware as never,\n },\n async (req, reply: FastifyReply) => {\n const resource = getRegistry()?.get(req.params.name);\n if (!resource) {\n return reply.code(404).send({\n error: `Resource '${req.params.name}' not found`,\n });\n }\n return resource;\n }\n );\n }, { prefix });\n\n fastify.log?.debug?.(`Introspection API at ${prefix}`);\n};\n\nexport default fp(introspectionPlugin, { name: 'arc-introspection' });\n\nexport { introspectionPlugin };\nexport type { IntrospectionPluginOptions };\n"],"mappings":";;;;;;;;AAUA,MAAM,sBAAsE,OAC1E,SACA,OAAmC,EAAE,KAClC;CACH,MAAM,EACJ,SAAS,eACT,YAAY,CAAC,aAAa,EAC1B,UAAU,SACR;AAEJ,KAAI,CAAC,SAAS;AACZ,UAAQ,KAAK,QAAQ,gCAAgC;AACrD;;CAGF,MAAM,eAAe;CAGrB,MAAM,iBACJ,UAAU,SAAS,KAAK,aAAa,eACjC,CACE,aAAa,cACb,aAAa,YAAY,GAAG,UAAU,CACvC,CAAC,OAAO,QAAQ,GACjB,EAAE;CAGR,MAAM,oBAAqB,QAA6C,KAAK;AAE7E,OAAM,QAAQ,SAAS,OAAO,aAAa;AAEzC,WAAS,IACP,KACA,EACE,YAAY,gBACb,EACD,OAAO,MAAsB,WAAyB;AACpD,UAAO,aAAa,EAAE,kBAAkB,IAAI;IAAE,WAAW,EAAE;IAAE,OAAO,EAAE;IAAE,8BAAa,IAAI,MAAM,EAAC,aAAa;IAAE;IAElH;AAGD,WAAS,IACP,UACA,EACE,YAAY,gBACb,EACD,OAAO,MAAsB,WAAyB;AACpD,UAAO,aAAa,EAAE,UAAU,IAAI;IAAE,gBAAgB;IAAG,UAAU,EAAE;IAAE,aAAa,EAAE;IAAE,aAAa;IAAG,aAAa;IAAG;IAE3H;AAGD,WAAS,IACP,UACA;GACE,QAAQ,EACN,QAAQ;IACN,MAAM;IACN,YAAY,EACV,MAAM,EAAE,MAAM,UAAmB,EAClC;IACD,UAAU,CAAC,OAAgB;IAC5B,EACF;GACD,YAAY;GACb,EACD,OAAO,KAAK,UAAwB;GAClC,MAAM,WAAW,aAAa,EAAE,IAAI,IAAI,OAAO,KAAK;AACpD,OAAI,CAAC,SACH,QAAO,MAAM,KAAK,IAAI,CAAC,KAAK,EAC1B,OAAO,aAAa,IAAI,OAAO,KAAK,cACrC,CAAC;AAEJ,UAAO;IAEV;IACA,EAAE,QAAQ,CAAC;AAEd,SAAQ,KAAK,QAAQ,wBAAwB,SAAS;;AAGxD,kCAAe,GAAG,qBAAqB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,43 @@
1
+ //#region src/cache/keys.ts
2
+ /**
3
+ * Cache Key Utilities
4
+ *
5
+ * Deterministic, scope-safe key generation for QueryCache.
6
+ * Keys include resource version, operation, params hash, and user/org scope
7
+ * to ensure multi-tenant isolation and O(1) version-based invalidation.
8
+ */
9
+ /** Build a deterministic cache key for a query */
10
+ function buildQueryKey(resource, operation, resourceVersion, params, userId, orgId) {
11
+ return `arc:${resource}:${resourceVersion}:${operation}:${hashParams(params)}:u=${userId ?? "anon"}:o=${orgId ?? "pub"}`;
12
+ }
13
+ /** Resource version key — stored in CacheStore, bumped on mutations */
14
+ function versionKey(resource) {
15
+ return `arc:ver:${resource}`;
16
+ }
17
+ /** Tag version key — stored in CacheStore, bumped on cross-resource invalidation */
18
+ function tagVersionKey(tag) {
19
+ return `arc:tagver:${tag}`;
20
+ }
21
+ /**
22
+ * Stable hash for query params.
23
+ * Sorts keys recursively, serializes to JSON, then applies djb2 hash.
24
+ * Returns hex string.
25
+ */
26
+ function hashParams(params) {
27
+ return djb2(stableStringify(params)).toString(36);
28
+ }
29
+ function stableStringify(value) {
30
+ if (value === null || value === void 0) return "";
31
+ if (typeof value !== "object") return String(value);
32
+ if (Array.isArray(value)) return "[" + value.map(stableStringify).join(",") + "]";
33
+ return "{" + Object.keys(value).sort().map((k) => k + ":" + stableStringify(value[k])).join(",") + "}";
34
+ }
35
+ function djb2(str) {
36
+ let hash = 5381;
37
+ for (let i = 0; i < str.length; i++) hash = (hash << 5) + hash + str.charCodeAt(i) >>> 0;
38
+ return hash;
39
+ }
40
+
41
+ //#endregion
42
+ export { versionKey as i, hashParams as n, tagVersionKey as r, buildQueryKey as t };
43
+ //# sourceMappingURL=keys-BqNejWup.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keys-BqNejWup.mjs","names":[],"sources":["../src/cache/keys.ts"],"sourcesContent":["/**\r\n * Cache Key Utilities\r\n *\r\n * Deterministic, scope-safe key generation for QueryCache.\r\n * Keys include resource version, operation, params hash, and user/org scope\r\n * to ensure multi-tenant isolation and O(1) version-based invalidation.\r\n */\r\n\r\n/** Build a deterministic cache key for a query */\r\nexport function buildQueryKey(\r\n resource: string,\r\n operation: string,\r\n resourceVersion: number,\r\n params: Record<string, unknown>,\r\n userId?: string,\r\n orgId?: string,\r\n): string {\r\n const hash = hashParams(params);\r\n const uid = userId ?? 'anon';\r\n const oid = orgId ?? 'pub';\r\n return `arc:${resource}:${resourceVersion}:${operation}:${hash}:u=${uid}:o=${oid}`;\r\n}\r\n\r\n/** Resource version key — stored in CacheStore, bumped on mutations */\r\nexport function versionKey(resource: string): string {\r\n return `arc:ver:${resource}`;\r\n}\r\n\r\n/** Tag version key — stored in CacheStore, bumped on cross-resource invalidation */\r\nexport function tagVersionKey(tag: string): string {\r\n return `arc:tagver:${tag}`;\r\n}\r\n\r\n/**\r\n * Stable hash for query params.\r\n * Sorts keys recursively, serializes to JSON, then applies djb2 hash.\r\n * Returns hex string.\r\n */\r\nexport function hashParams(params: Record<string, unknown>): string {\r\n const stable = stableStringify(params);\r\n return djb2(stable).toString(36);\r\n}\r\n\r\nfunction stableStringify(value: unknown): string {\r\n if (value === null || value === undefined) return '';\r\n if (typeof value !== 'object') return String(value);\r\n if (Array.isArray(value)) return '[' + value.map(stableStringify).join(',') + ']';\r\n\r\n const sorted = Object.keys(value as Record<string, unknown>).sort();\r\n return '{' + sorted.map(k => k + ':' + stableStringify((value as Record<string, unknown>)[k])).join(',') + '}';\r\n}\r\n\r\nfunction djb2(str: string): number {\r\n let hash = 5381;\r\n for (let i = 0; i < str.length; i++) {\r\n hash = ((hash << 5) + hash + str.charCodeAt(i)) >>> 0;\r\n }\r\n return hash;\r\n}\r\n"],"mappings":";;;;;;;;;AASA,SAAgB,cACd,UACA,WACA,iBACA,QACA,QACA,OACQ;AAIR,QAAO,OAAO,SAAS,GAAG,gBAAgB,GAAG,UAAU,GAH1C,WAAW,OAAO,CAGgC,KAFnD,UAAU,OAEkD,KAD5D,SAAS;;;AAKvB,SAAgB,WAAW,UAA0B;AACnD,QAAO,WAAW;;;AAIpB,SAAgB,cAAc,KAAqB;AACjD,QAAO,cAAc;;;;;;;AAQvB,SAAgB,WAAW,QAAyC;AAElE,QAAO,KADQ,gBAAgB,OAAO,CACnB,CAAC,SAAS,GAAG;;AAGlC,SAAS,gBAAgB,OAAwB;AAC/C,KAAI,UAAU,QAAQ,UAAU,OAAW,QAAO;AAClD,KAAI,OAAO,UAAU,SAAU,QAAO,OAAO,MAAM;AACnD,KAAI,MAAM,QAAQ,MAAM,CAAE,QAAO,MAAM,MAAM,IAAI,gBAAgB,CAAC,KAAK,IAAI,GAAG;AAG9E,QAAO,MADQ,OAAO,KAAK,MAAiC,CAAC,MAAM,CAC/C,KAAI,MAAK,IAAI,MAAM,gBAAiB,MAAkC,GAAG,CAAC,CAAC,KAAK,IAAI,GAAG;;AAG7G,SAAS,KAAK,KAAqB;CACjC,IAAI,OAAO;AACX,MAAK,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,IAC9B,SAAS,QAAQ,KAAK,OAAO,IAAI,WAAW,EAAE,KAAM;AAEtD,QAAO"}
@@ -0,0 +1,79 @@
1
+ import { t as __exportAll } from "./chunk-C7Uep-_p.mjs";
2
+
3
+ //#region src/logger/index.ts
4
+ var logger_exports = /* @__PURE__ */ __exportAll({
5
+ arcLog: () => arcLog,
6
+ configureArcLogger: () => configureArcLogger
7
+ });
8
+ let globalOptions = {};
9
+ /**
10
+ * Configure the Arc logger globally.
11
+ *
12
+ * Called automatically by `createApp({ debug })`, but can also be
13
+ * called manually for standalone usage outside of `createApp`.
14
+ */
15
+ function configureArcLogger(options) {
16
+ globalOptions = { ...options };
17
+ }
18
+ /**
19
+ * Create a module-scoped logger.
20
+ *
21
+ * Debug and info messages are gated by the `ARC_DEBUG` env var or
22
+ * `createApp({ debug })` option. Warnings always show (unless
23
+ * `ARC_SUPPRESS_WARNINGS=1`). Errors always show.
24
+ *
25
+ * @param module - Module name (e.g., 'scope', 'elevation', 'sse', 'preset')
26
+ * @returns Logger instance for that module
27
+ *
28
+ * @example
29
+ * ```typescript
30
+ * const log = arcLog('elevation');
31
+ * log.debug('Checking elevation header');
32
+ * log.warn('No authenticate decorator found');
33
+ * ```
34
+ */
35
+ function arcLog(module) {
36
+ const prefix = `[arc:${module}]`;
37
+ return {
38
+ debug(...args) {
39
+ if (isDebugEnabled(module)) getWriter().debug(prefix, ...args);
40
+ },
41
+ info(...args) {
42
+ if (isDebugEnabled(module)) getWriter().info(prefix, ...args);
43
+ },
44
+ warn(...args) {
45
+ if (isSuppressed()) return;
46
+ getWriter().warn(prefix, ...args);
47
+ },
48
+ error(...args) {
49
+ getWriter().error(prefix, ...args);
50
+ }
51
+ };
52
+ }
53
+ function getWriter() {
54
+ return globalOptions.writer ?? console;
55
+ }
56
+ function isDebugEnabled(module) {
57
+ const configDebug = globalOptions.debug;
58
+ if (configDebug !== void 0 && configDebug !== false) return matchesModule(configDebug, module);
59
+ const envDebug = typeof process !== "undefined" ? process.env?.ARC_DEBUG : void 0;
60
+ if (envDebug) return matchesModule(envDebug, module);
61
+ return false;
62
+ }
63
+ function matchesModule(debug, module) {
64
+ if (debug === true) return true;
65
+ if (typeof debug === "string") {
66
+ const normalized = debug.trim();
67
+ if (normalized === "1" || normalized === "true" || normalized === "*") return true;
68
+ return normalized.split(",").map((s) => s.trim()).includes(module);
69
+ }
70
+ return false;
71
+ }
72
+ function isSuppressed() {
73
+ const env = typeof process !== "undefined" ? process.env?.ARC_SUPPRESS_WARNINGS : void 0;
74
+ return env === "1" || env === "true";
75
+ }
76
+
77
+ //#endregion
78
+ export { configureArcLogger as n, logger_exports as r, arcLog as t };
79
+ //# sourceMappingURL=logger-Df2O2WsW.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger-Df2O2WsW.mjs","names":[],"sources":["../src/logger/index.ts"],"sourcesContent":["/**\n * Arc Logger — Centralized debug & warning system\n *\n * Lightweight, zero-dependency logger for Arc framework internals.\n * Inspired by the `debug` npm package — disabled by default, opt-in via\n * environment variable or `createApp({ debug })` option.\n *\n * @example\n * ```typescript\n * // Enable via env var\n * ARC_DEBUG=1 node server.js // all modules\n * ARC_DEBUG=scope,elevation node server.js // specific modules\n *\n * // Enable via createApp\n * const app = await createApp({ debug: true });\n * const app = await createApp({ debug: 'scope,elevation' });\n *\n * // Suppress warnings (not recommended)\n * ARC_SUPPRESS_WARNINGS=1 node server.js\n *\n * // Framework internals use:\n * import { arcLog } from '../logger/index.js';\n * const log = arcLog('elevation');\n * log.debug('Elevation applied', { userId });\n * log.warn('Something unexpected');\n * ```\n */\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface ArcLoggerOptions {\n /**\n * Enable debug output.\n * - `true` or `'*'` — all modules\n * - `string` — comma-separated module names (e.g., `'scope,elevation'`)\n * - `false` — disabled (default)\n */\n debug?: boolean | string;\n\n /**\n * Custom log writer. Defaults to `console`.\n * Useful for routing Arc logs into Fastify's pino logger or test fixtures.\n */\n writer?: ArcLogWriter;\n}\n\nexport interface ArcLogWriter {\n debug: (...args: unknown[]) => void;\n info: (...args: unknown[]) => void;\n warn: (...args: unknown[]) => void;\n error: (...args: unknown[]) => void;\n}\n\nexport interface ArcLogger {\n debug: (...args: unknown[]) => void;\n info: (...args: unknown[]) => void;\n warn: (...args: unknown[]) => void;\n error: (...args: unknown[]) => void;\n}\n\n// ============================================================================\n// Global State\n// ============================================================================\n\nlet globalOptions: ArcLoggerOptions = {};\n\n// ============================================================================\n// Public API\n// ============================================================================\n\n/**\n * Configure the Arc logger globally.\n *\n * Called automatically by `createApp({ debug })`, but can also be\n * called manually for standalone usage outside of `createApp`.\n */\nexport function configureArcLogger(options: ArcLoggerOptions): void {\n globalOptions = { ...options };\n}\n\n/**\n * Create a module-scoped logger.\n *\n * Debug and info messages are gated by the `ARC_DEBUG` env var or\n * `createApp({ debug })` option. Warnings always show (unless\n * `ARC_SUPPRESS_WARNINGS=1`). Errors always show.\n *\n * @param module - Module name (e.g., 'scope', 'elevation', 'sse', 'preset')\n * @returns Logger instance for that module\n *\n * @example\n * ```typescript\n * const log = arcLog('elevation');\n * log.debug('Checking elevation header');\n * log.warn('No authenticate decorator found');\n * ```\n */\nexport function arcLog(module: string): ArcLogger {\n const prefix = `[arc:${module}]`;\n\n return {\n debug(...args: unknown[]) {\n if (isDebugEnabled(module)) {\n getWriter().debug(prefix, ...args);\n }\n },\n info(...args: unknown[]) {\n if (isDebugEnabled(module)) {\n getWriter().info(prefix, ...args);\n }\n },\n warn(...args: unknown[]) {\n if (isSuppressed()) return;\n getWriter().warn(prefix, ...args);\n },\n error(...args: unknown[]) {\n getWriter().error(prefix, ...args);\n },\n };\n}\n\n// ============================================================================\n// Internals\n// ============================================================================\n\nfunction getWriter(): ArcLogWriter {\n return globalOptions.writer ?? console;\n}\n\nfunction isDebugEnabled(module: string): boolean {\n // Priority 1: Programmatic config\n const configDebug = globalOptions.debug;\n if (configDebug !== undefined && configDebug !== false) {\n return matchesModule(configDebug, module);\n }\n\n // Priority 2: Environment variable\n const envDebug = typeof process !== 'undefined' ? process.env?.ARC_DEBUG : undefined;\n if (envDebug) {\n return matchesModule(envDebug, module);\n }\n\n return false;\n}\n\nfunction matchesModule(debug: boolean | string, module: string): boolean {\n if (debug === true) return true;\n if (typeof debug === 'string') {\n const normalized = debug.trim();\n if (normalized === '1' || normalized === 'true' || normalized === '*') return true;\n return normalized.split(',').map((s) => s.trim()).includes(module);\n }\n return false;\n}\n\nfunction isSuppressed(): boolean {\n const env = typeof process !== 'undefined' ? process.env?.ARC_SUPPRESS_WARNINGS : undefined;\n return env === '1' || env === 'true';\n}\n"],"mappings":";;;;;;;AAkEA,IAAI,gBAAkC,EAAE;;;;;;;AAYxC,SAAgB,mBAAmB,SAAiC;AAClE,iBAAgB,EAAE,GAAG,SAAS;;;;;;;;;;;;;;;;;;;AAoBhC,SAAgB,OAAO,QAA2B;CAChD,MAAM,SAAS,QAAQ,OAAO;AAE9B,QAAO;EACL,MAAM,GAAG,MAAiB;AACxB,OAAI,eAAe,OAAO,CACxB,YAAW,CAAC,MAAM,QAAQ,GAAG,KAAK;;EAGtC,KAAK,GAAG,MAAiB;AACvB,OAAI,eAAe,OAAO,CACxB,YAAW,CAAC,KAAK,QAAQ,GAAG,KAAK;;EAGrC,KAAK,GAAG,MAAiB;AACvB,OAAI,cAAc,CAAE;AACpB,cAAW,CAAC,KAAK,QAAQ,GAAG,KAAK;;EAEnC,MAAM,GAAG,MAAiB;AACxB,cAAW,CAAC,MAAM,QAAQ,GAAG,KAAK;;EAErC;;AAOH,SAAS,YAA0B;AACjC,QAAO,cAAc,UAAU;;AAGjC,SAAS,eAAe,QAAyB;CAE/C,MAAM,cAAc,cAAc;AAClC,KAAI,gBAAgB,UAAa,gBAAgB,MAC/C,QAAO,cAAc,aAAa,OAAO;CAI3C,MAAM,WAAW,OAAO,YAAY,cAAc,QAAQ,KAAK,YAAY;AAC3E,KAAI,SACF,QAAO,cAAc,UAAU,OAAO;AAGxC,QAAO;;AAGT,SAAS,cAAc,OAAyB,QAAyB;AACvE,KAAI,UAAU,KAAM,QAAO;AAC3B,KAAI,OAAO,UAAU,UAAU;EAC7B,MAAM,aAAa,MAAM,MAAM;AAC/B,MAAI,eAAe,OAAO,eAAe,UAAU,eAAe,IAAK,QAAO;AAC9E,SAAO,WAAW,MAAM,IAAI,CAAC,KAAK,MAAM,EAAE,MAAM,CAAC,CAAC,SAAS,OAAO;;AAEpE,QAAO;;AAGT,SAAS,eAAwB;CAC/B,MAAM,MAAM,OAAO,YAAY,cAAc,QAAQ,KAAK,wBAAwB;AAClF,QAAO,QAAQ,OAAO,QAAQ"}
@@ -0,0 +1,144 @@
1
+ import { t as __exportAll } from "./chunk-C7Uep-_p.mjs";
2
+
3
+ //#region src/cache/memory.ts
4
+ var memory_exports = /* @__PURE__ */ __exportAll({
5
+ MemoryCacheStore: () => MemoryCacheStore,
6
+ default: () => MemoryCacheStore
7
+ });
8
+ /**
9
+ * In-memory LRU+TTL cache store with hard entry cap and memory budget.
10
+ * - LRU eviction when `maxEntries` or `maxMemoryBytes` is reached
11
+ * - TTL expiration on read + periodic cleanup
12
+ * - Entry size guard to avoid runaway memory usage
13
+ * - Stats tracking for observability
14
+ */
15
+ var MemoryCacheStore = class {
16
+ name = "memory-cache";
17
+ cache = /* @__PURE__ */ new Map();
18
+ defaultTtlMs;
19
+ maxEntries;
20
+ maxEntryBytes;
21
+ maxMemoryBytes;
22
+ evictionWatermark;
23
+ logger;
24
+ cleanupTimer;
25
+ currentBytes = 0;
26
+ _hits = 0;
27
+ _misses = 0;
28
+ _evictions = 0;
29
+ constructor(options = {}) {
30
+ this.defaultTtlMs = options.defaultTtlMs ?? 6e4;
31
+ this.maxEntries = clamp(options.maxEntries ?? 1e3, 1, 1e5);
32
+ this.maxEntryBytes = clamp(options.maxEntryBytes ?? 256 * 1024, 1024, 10 * 1024 * 1024);
33
+ this.maxMemoryBytes = options.maxMemoryBytes ?? 50 * 1024 * 1024;
34
+ this.evictionWatermark = clamp(options.evictionWatermark ?? .9, .5, 1);
35
+ this.logger = options.logger ?? console;
36
+ const cleanupIntervalMs = clamp(options.cleanupIntervalMs ?? 3e4, 1e3, 600 * 1e3);
37
+ this.cleanupTimer = setInterval(() => this.cleanupExpired(), cleanupIntervalMs);
38
+ if (this.cleanupTimer.unref) this.cleanupTimer.unref();
39
+ }
40
+ async get(key) {
41
+ const entry = this.cache.get(key);
42
+ if (!entry) {
43
+ this._misses++;
44
+ return;
45
+ }
46
+ if (entry.expiresAt <= Date.now()) {
47
+ this.removeEntry(key, entry);
48
+ this._misses++;
49
+ return;
50
+ }
51
+ this.cache.delete(key);
52
+ this.cache.set(key, entry);
53
+ this._hits++;
54
+ return entry.value;
55
+ }
56
+ async set(key, value, options = {}) {
57
+ const ttlMs = options.ttlMs ?? this.defaultTtlMs;
58
+ if (!Number.isFinite(ttlMs) || ttlMs <= 0) return;
59
+ const size = this.estimateSize(value);
60
+ if (size > this.maxEntryBytes) {
61
+ this.logger.warn(`[MemoryCacheStore] Skipping oversized entry for key '${key}' (${size} bytes > ${this.maxEntryBytes} bytes)`);
62
+ return;
63
+ }
64
+ const existing = this.cache.get(key);
65
+ if (existing) {
66
+ this.currentBytes -= existing.size;
67
+ this.cache.delete(key);
68
+ }
69
+ this.cache.set(key, {
70
+ value,
71
+ size,
72
+ expiresAt: Date.now() + ttlMs
73
+ });
74
+ this.currentBytes += size;
75
+ this.evictToLimit();
76
+ if (this.maxMemoryBytes > 0) this.evictToMemoryLimit();
77
+ }
78
+ async delete(key) {
79
+ const entry = this.cache.get(key);
80
+ if (entry) this.removeEntry(key, entry);
81
+ }
82
+ async clear() {
83
+ this.cache.clear();
84
+ this.currentBytes = 0;
85
+ }
86
+ async close() {
87
+ clearInterval(this.cleanupTimer);
88
+ this.cache.clear();
89
+ this.currentBytes = 0;
90
+ }
91
+ stats() {
92
+ return {
93
+ entries: this.cache.size,
94
+ memoryBytes: this.currentBytes,
95
+ hits: this._hits,
96
+ misses: this._misses,
97
+ evictions: this._evictions
98
+ };
99
+ }
100
+ removeEntry(key, entry) {
101
+ this.cache.delete(key);
102
+ this.currentBytes -= entry.size;
103
+ }
104
+ evictToLimit() {
105
+ while (this.cache.size > this.maxEntries) {
106
+ const oldestKey = this.cache.keys().next().value;
107
+ if (!oldestKey) break;
108
+ const entry = this.cache.get(oldestKey);
109
+ this.removeEntry(oldestKey, entry);
110
+ this._evictions++;
111
+ }
112
+ }
113
+ evictToMemoryLimit() {
114
+ const target = this.maxMemoryBytes * this.evictionWatermark;
115
+ while (this.currentBytes > this.maxMemoryBytes && this.cache.size > 0) {
116
+ const oldestKey = this.cache.keys().next().value;
117
+ if (!oldestKey) break;
118
+ const entry = this.cache.get(oldestKey);
119
+ this.removeEntry(oldestKey, entry);
120
+ this._evictions++;
121
+ if (this.currentBytes <= target) break;
122
+ }
123
+ }
124
+ cleanupExpired() {
125
+ const now = Date.now();
126
+ for (const [key, entry] of this.cache.entries()) if (entry.expiresAt <= now) this.removeEntry(key, entry);
127
+ }
128
+ estimateSize(value) {
129
+ try {
130
+ const json = JSON.stringify(value);
131
+ if (!json) return 0;
132
+ return Buffer.byteLength(json, "utf8");
133
+ } catch {
134
+ return this.maxEntryBytes + 1;
135
+ }
136
+ }
137
+ };
138
+ function clamp(value, min, max) {
139
+ return Math.min(max, Math.max(min, value));
140
+ }
141
+
142
+ //#endregion
143
+ export { memory_exports as n, MemoryCacheStore as t };
144
+ //# sourceMappingURL=memory-cQgelFOj.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-cQgelFOj.mjs","names":[],"sources":["../src/cache/memory.ts"],"sourcesContent":["import type { CacheLogger, CacheSetOptions, CacheStats, CacheStore } from './interface.js';\n\ninterface MemoryEntry<TValue> {\n value: TValue;\n size: number;\n expiresAt: number;\n}\n\nexport interface MemoryCacheStoreOptions {\n /** Default TTL in milliseconds (default: 60_000) */\n defaultTtlMs?: number;\n /** Hard upper bound for entries (default: 1000) */\n maxEntries?: number;\n /** Background cleanup interval in milliseconds (default: 30_000) */\n cleanupIntervalMs?: number;\n /**\n * Maximum serialized entry size in bytes (default: 256 KiB).\n * Oversized entries are skipped to prevent memory pressure.\n */\n maxEntryBytes?: number;\n /**\n * Total memory budget in bytes (default: 50 MiB).\n * When exceeded, LRU entries are evicted until usage drops below watermark.\n * Set to 0 to disable (rely on maxEntries only).\n */\n maxMemoryBytes?: number;\n /**\n * Eviction watermark as fraction of maxMemoryBytes (default: 0.9).\n * When memory exceeds budget, evict until usage drops to budget * watermark.\n */\n evictionWatermark?: number;\n /** Logger for warnings/errors (default: console) */\n logger?: CacheLogger;\n}\n\n/**\n * In-memory LRU+TTL cache store with hard entry cap and memory budget.\n * - LRU eviction when `maxEntries` or `maxMemoryBytes` is reached\n * - TTL expiration on read + periodic cleanup\n * - Entry size guard to avoid runaway memory usage\n * - Stats tracking for observability\n */\nexport class MemoryCacheStore<TValue = unknown> implements CacheStore<TValue> {\n readonly name = 'memory-cache';\n\n private readonly cache = new Map<string, MemoryEntry<TValue>>();\n private readonly defaultTtlMs: number;\n private readonly maxEntries: number;\n private readonly maxEntryBytes: number;\n private readonly maxMemoryBytes: number;\n private readonly evictionWatermark: number;\n private readonly logger: CacheLogger;\n private readonly cleanupTimer: ReturnType<typeof setInterval>;\n\n private currentBytes = 0;\n private _hits = 0;\n private _misses = 0;\n private _evictions = 0;\n\n constructor(options: MemoryCacheStoreOptions = {}) {\n this.defaultTtlMs = options.defaultTtlMs ?? 60_000;\n this.maxEntries = clamp(options.maxEntries ?? 1000, 1, 100_000);\n this.maxEntryBytes = clamp(options.maxEntryBytes ?? 256 * 1024, 1024, 10 * 1024 * 1024);\n this.maxMemoryBytes = options.maxMemoryBytes ?? 50 * 1024 * 1024; // 50 MiB\n this.evictionWatermark = clamp(options.evictionWatermark ?? 0.9, 0.5, 1);\n this.logger = options.logger ?? console;\n\n const cleanupIntervalMs = clamp(options.cleanupIntervalMs ?? 30_000, 1000, 10 * 60 * 1000);\n this.cleanupTimer = setInterval(() => this.cleanupExpired(), cleanupIntervalMs);\n if (this.cleanupTimer.unref) this.cleanupTimer.unref();\n }\n\n async get(key: string): Promise<TValue | undefined> {\n const entry = this.cache.get(key);\n if (!entry) {\n this._misses++;\n return undefined;\n }\n\n if (entry.expiresAt <= Date.now()) {\n this.removeEntry(key, entry);\n this._misses++;\n return undefined;\n }\n\n // LRU refresh: move to most-recent position\n this.cache.delete(key);\n this.cache.set(key, entry);\n this._hits++;\n return entry.value;\n }\n\n async set(key: string, value: TValue, options: CacheSetOptions = {}): Promise<void> {\n const ttlMs = options.ttlMs ?? this.defaultTtlMs;\n if (!Number.isFinite(ttlMs) || ttlMs <= 0) return;\n\n const size = this.estimateSize(value);\n if (size > this.maxEntryBytes) {\n this.logger.warn(\n `[MemoryCacheStore] Skipping oversized entry for key '${key}' (${size} bytes > ${this.maxEntryBytes} bytes)`\n );\n return;\n }\n\n // Remove existing entry first (adjust bytes)\n const existing = this.cache.get(key);\n if (existing) {\n this.currentBytes -= existing.size;\n this.cache.delete(key);\n }\n\n this.cache.set(key, { value, size, expiresAt: Date.now() + ttlMs });\n this.currentBytes += size;\n\n this.evictToLimit();\n if (this.maxMemoryBytes > 0) this.evictToMemoryLimit();\n }\n\n async delete(key: string): Promise<void> {\n const entry = this.cache.get(key);\n if (entry) this.removeEntry(key, entry);\n }\n\n async clear(): Promise<void> {\n this.cache.clear();\n this.currentBytes = 0;\n }\n\n async close(): Promise<void> {\n clearInterval(this.cleanupTimer);\n this.cache.clear();\n this.currentBytes = 0;\n }\n\n stats(): CacheStats {\n return {\n entries: this.cache.size,\n memoryBytes: this.currentBytes,\n hits: this._hits,\n misses: this._misses,\n evictions: this._evictions,\n };\n }\n\n private removeEntry(key: string, entry: MemoryEntry<TValue>): void {\n this.cache.delete(key);\n this.currentBytes -= entry.size;\n }\n\n private evictToLimit(): void {\n while (this.cache.size > this.maxEntries) {\n const oldestKey = this.cache.keys().next().value as string | undefined;\n if (!oldestKey) break;\n const entry = this.cache.get(oldestKey)!;\n this.removeEntry(oldestKey, entry);\n this._evictions++;\n }\n }\n\n private evictToMemoryLimit(): void {\n const target = this.maxMemoryBytes * this.evictionWatermark;\n while (this.currentBytes > this.maxMemoryBytes && this.cache.size > 0) {\n const oldestKey = this.cache.keys().next().value as string | undefined;\n if (!oldestKey) break;\n const entry = this.cache.get(oldestKey)!;\n this.removeEntry(oldestKey, entry);\n this._evictions++;\n if (this.currentBytes <= target) break;\n }\n }\n\n private cleanupExpired(): void {\n const now = Date.now();\n for (const [key, entry] of this.cache.entries()) {\n if (entry.expiresAt <= now) {\n this.removeEntry(key, entry);\n }\n }\n }\n\n private estimateSize(value: TValue): number {\n try {\n const json = JSON.stringify(value);\n if (!json) return 0;\n return Buffer.byteLength(json, 'utf8');\n } catch {\n return this.maxEntryBytes + 1;\n }\n }\n}\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, value));\n}\n\nexport default MemoryCacheStore;\n"],"mappings":"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"}
@@ -0,0 +1,157 @@
1
+ import mongoose from "mongoose";
2
+
3
+ //#region src/migrations/index.d.ts
4
+ interface Migration {
5
+ /** Migration version (sequential number) */
6
+ version: number;
7
+ /** Resource name this migration applies to */
8
+ resource: string;
9
+ /** Description of the migration */
10
+ description?: string;
11
+ /**
12
+ * Forward migration (apply schema change)
13
+ */
14
+ up: (db: mongoose.mongo.Db) => Promise<void>;
15
+ /**
16
+ * Backward migration (revert schema change)
17
+ */
18
+ down: (db: mongoose.mongo.Db) => Promise<void>;
19
+ /**
20
+ * Optional validation that data is compatible after migration
21
+ */
22
+ validate?: (db: mongoose.mongo.Db) => Promise<boolean>;
23
+ }
24
+ interface MigrationRecord {
25
+ version: number;
26
+ resource: string;
27
+ description?: string;
28
+ appliedAt: Date;
29
+ executionTime: number;
30
+ }
31
+ /**
32
+ * Define a migration
33
+ */
34
+ declare function defineMigration(migration: Migration): Migration;
35
+ /**
36
+ * Migration Runner
37
+ *
38
+ * Manages execution of migrations with tracking and rollback support.
39
+ */
40
+ declare class MigrationRunner {
41
+ private readonly collectionName;
42
+ private readonly db;
43
+ constructor(db: mongoose.mongo.Db);
44
+ /**
45
+ * Run all pending migrations
46
+ */
47
+ up(migrations: Migration[]): Promise<void>;
48
+ /**
49
+ * Rollback last migration
50
+ */
51
+ down(migrations: Migration[]): Promise<void>;
52
+ /**
53
+ * Rollback to specific version
54
+ */
55
+ downTo(migrations: Migration[], targetVersion: number): Promise<void>;
56
+ /**
57
+ * Get all applied migrations
58
+ */
59
+ getAppliedMigrations(): Promise<MigrationRecord[]>;
60
+ /**
61
+ * Get pending migrations
62
+ */
63
+ getPendingMigrations(migrations: Migration[]): Promise<Migration[]>;
64
+ /**
65
+ * Check if migrations are up to date
66
+ */
67
+ isUpToDate(migrations: Migration[]): Promise<boolean>;
68
+ /**
69
+ * Run a single migration
70
+ */
71
+ private runMigration;
72
+ /**
73
+ * Record a completed migration
74
+ */
75
+ private recordMigration;
76
+ /**
77
+ * Remove a migration record
78
+ */
79
+ private removeMigration;
80
+ }
81
+ /**
82
+ * Schema version definition for resources
83
+ */
84
+ interface SchemaVersion {
85
+ version: number;
86
+ migrations: Migration[];
87
+ }
88
+ /**
89
+ * Add versioning to resource definition
90
+ *
91
+ * @example
92
+ * export default defineResource({
93
+ * name: 'product',
94
+ * version: 2,
95
+ * migrations: [productV1ToV2Migration],
96
+ * // ... rest of resource definition
97
+ * });
98
+ */
99
+ declare function withSchemaVersion(version: number, migrations: Migration[]): SchemaVersion;
100
+ /**
101
+ * Global migration registry
102
+ */
103
+ declare class MigrationRegistry {
104
+ private migrations;
105
+ /**
106
+ * Register a migration
107
+ */
108
+ register(migration: Migration): void;
109
+ /**
110
+ * Register multiple migrations
111
+ */
112
+ registerMany(migrations: Migration[]): void;
113
+ /**
114
+ * Get all migrations for a resource
115
+ */
116
+ getForResource(resource: string): Migration[];
117
+ /**
118
+ * Get all migrations
119
+ */
120
+ getAll(): Migration[];
121
+ /**
122
+ * Get migration by resource and version
123
+ */
124
+ get(resource: string, version: number): Migration | undefined;
125
+ /**
126
+ * Clear all registrations
127
+ */
128
+ clear(): void;
129
+ }
130
+ /**
131
+ * Global migration registry instance
132
+ */
133
+ declare const migrationRegistry: MigrationRegistry;
134
+ /**
135
+ * Common migration helpers
136
+ */
137
+ declare const migrationHelpers: {
138
+ /**
139
+ * Rename a field across all documents
140
+ */
141
+ renameField: (collection: string, oldName: string, newName: string) => Migration;
142
+ /**
143
+ * Add a new field with default value
144
+ */
145
+ addField: (collection: string, fieldName: string, defaultValue: unknown) => Migration;
146
+ /**
147
+ * Remove a field
148
+ */
149
+ removeField: (collection: string, fieldName: string) => Migration;
150
+ /**
151
+ * Create an index
152
+ */
153
+ createIndex: (collection: string, fields: Record<string, 1 | -1>, options?: Record<string, unknown>) => Migration;
154
+ };
155
+ //#endregion
156
+ export { Migration, MigrationRecord, MigrationRegistry, MigrationRunner, SchemaVersion, defineMigration, migrationHelpers, migrationRegistry, withSchemaVersion };
157
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/migrations/index.ts"],"mappings":";;;UAgCiB,SAAA;EAuBU;EArBzB,OAAA;EAqBY;EAlBZ,QAAA;EAkB6C;EAf7C,WAAA;EAkBe;;;EAbf,EAAA,GAAK,EAAA,EAAI,QAAA,CAAS,KAAA,CAAM,EAAA,KAAO,OAAA;EAc/B;;;EATA,IAAA,GAAO,EAAA,EAAI,QAAA,CAAS,KAAA,CAAM,EAAA,KAAO,OAAA;EAYtB;;;EAPX,QAAA,IAAY,EAAA,EAAI,QAAA,CAAS,KAAA,CAAM,EAAA,KAAO,OAAA;AAAA;AAAA,UAGvB,eAAA;EACf,OAAA;EACA,QAAA;EACA,WAAA;EACA,SAAA,EAAW,IAAA;EACX,aAAA;AAAA;;AAeF;;iBATgB,eAAA,CAAgB,SAAA,EAAW,SAAA,GAAY,SAAA;;;;;;cAS1C,eAAA;EAAA,iBACM,cAAA;EAAA,iBAEA,EAAA;cAEL,EAAA,EAAI,QAAA,CAAS,KAAA,CAAM,EAAA;EAuGQ;;;EAhGjC,EAAA,CAAG,UAAA,EAAY,SAAA,KAAc,OAAA;EAyGQ;;;EA/ErC,IAAA,CAAK,UAAA,EAAY,SAAA,KAAc,OAAA;EAnCpB;;;EAmEX,MAAA,CAAO,UAAA,EAAY,SAAA,IAAa,aAAA,WAAwB,OAAA;EAjE/B;;;EA8FzB,oBAAA,CAAA,GAAwB,OAAA,CAAQ,eAAA;EAvF7B;;;EAgGH,oBAAA,CAAqB,UAAA,EAAY,SAAA,KAAc,OAAA,CAAQ,SAAA;EAtElD;;;EA+EL,UAAA,CAAW,UAAA,EAAY,SAAA,KAAc,OAAA;EA/C9B;;;EAAA,QAuDC,YAAA;EA1BgB;;;EAAA,QA4EhB,eAAA;EAnEa;;;EAAA,QAiFb,eAAA;AAAA;;;;UAYC,aAAA;EACf,OAAA;EACA,UAAA,EAAY,SAAA;AAAA;AAFd;;;;;;;;;AAgBA;;AAhBA,iBAgBgB,iBAAA,CACd,OAAA,UACA,UAAA,EAAY,SAAA,KACX,aAAA;;;;cAOU,iBAAA;EAAA,QACH,UAAA;EARM;;AAOhB;EAME,QAAA,CAAS,SAAA,EAAW,SAAA;;;;EAUpB,YAAA,CAAa,UAAA,EAAY,SAAA;EAgBf;;;EAPV,cAAA,CAAe,QAAA,WAAmB,SAAA;EAxB1B;;;EA+BR,MAAA,CAAA,GAAU,SAAA;EAhBV;;;EA2BA,GAAA,CAAI,QAAA,UAAkB,OAAA,WAAkB,SAAA;EAlBzB;;;EA0Bf,KAAA,CAAA;AAAA;;;;cAQW,iBAAA,EAAiB,iBAAA;;;AAA9B;cAKa,gBAAA;;;;oCAIqB,OAAA,UAAiB,OAAA,aAAiB,SAAA;EAgEnE;;;iCAhD8B,SAAA,UAAmB,YAAA,cAAuB,SAAA;EAkBpB;;;oCAAnB,SAAA,aAAmB,SAAA;EAiBgD;;;oCAAnE,MAAA,EAAU,MAAA,kBAAsB,OAAA,GAAY,MAAA,sBAAuB,SAAA;AAAA"}