@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":"index.d.mts","names":[],"sources":["../../src/utils/responseSchemas.ts","../../src/utils/stateMachine.ts","../../src/utils/circuitBreaker.ts","../../src/utils/queryParser.ts","../../src/utils/typeGuards.ts","../../src/utils/schemaConverter.ts"],"mappings":";;;;;;;;UAYiB,UAAA;EACf,IAAA;EACA,UAAA,GAAa,MAAA,SAAe,UAAA,GAAa,SAAA;EACzC,QAAA;EACA,KAAA,GAAQ,UAAA,GAAa,SAAA;EACrB,oBAAA,aAAiC,UAAA;EACjC,WAAA;EACA,OAAA;EAAA,CACC,GAAA;AAAA;;;;cAUU,qBAAA,EAAuB,UAAA;;;;cAWvB,mBAAA,EAAqB,UAAA;;;;;;;cAiBrB,gBAAA,EAAkB,UAAA;;;;iBAoBf,YAAA,CAAa,UAAA,EAAY,UAAA,GAAa,UAAA;AAhDtD;;;;;AAWA;;;AAXA,iBAqEgB,YAAA,CAAa,UAAA,EAAY,UAAA,GAAa,UAAA;;AAzCtD;;cAmEa,eAAA,SAAe,YAAA;;;AA/C5B;;;iBAsDgB,YAAA,CAAa,UAAA,EAAY,UAAA,GAAa,UAAA;;;;cAOzC,WAAA,SAAW,YAAA;;AAxCxB;;iBA6CgB,gBAAA,CAAiB,UAAA,EAAY,UAAA,GAAa,UAAA;;;;;;iBAmB1C,cAAA,CAAA,GAAkB,UAAA;AAtClC;;;AAAA,cAsDa,cAAA,SAAc,cAAA;AAAA,cAMd,SAAA;gBACG,UAAA;;;;;;;;gBAOA,UAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAjLN,UAAA,GAAa,SAAA;2CACY,UAAA;;;;;;;;;;;;;;;;;;;;kBADzB,UAAA,GAAa,SAAA;2CACY,UAAA;;;;;;;;;;;;;;;;;;;;kBADzB,UAAA,GAAa,SAAA;2CACY,UAAA;;;;;;;;;;;;;;;;;;;;kBADzB,UAAA,GAAa,SAAA;2CACY,UAAA;;;;;;;;;;;;;;;;;;;;kBADzB,UAAA,GAAa,SAAA;2CACY,UAAA;;;;;;;;;;;;;;;;;;;;kBADzB,UAAA,GAAa,SAAA;2CACY,UAAA;;;;;;;;cAqStB,WAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAb;iBAwCgB,kBAAA,CAAA,GAAsB,SAAA;;;;;;;;;;;;;;iBA2DtB,qBAAA,CAAA,GAAyB,MAAA,SAAe,MAAA;;;;;;;;;;;AA7YxD;;;;;;;;;;;;;UCUiB,YAAA;EDRa;;;;;ECc5B,GAAA,CAAI,MAAA,UAAgB,MAAA;EDXpB;;;;ECiBA,QAAA,CAAS,MAAA,UAAgB,MAAA,6BAAmC,OAAA,SAAgB,OAAA;EDdhE;;AAUd;;;;;ECaE,MAAA,CACE,MAAA,UACA,MAAA,6BACA,YAAA,IAAgB,GAAA,aAAgB,KAAA,EAChC,OAAA;EDGH;;;ECGC,UAAA,KAAe,sBAAA;EDKJ;;;ECAX,gBAAA,EAAkB,IAAA,UAAc,EAAA,UAAY,MAAA,UAAgB,QAAA;EDW7D;AASD;;ECfE,YAAA;EDe8D;;;ECV9D,mBAAA,EAAqB,MAAA;AAAA;AAAA,UAGN,sBAAA;EACf,IAAA;EACA,EAAA;EACA,MAAA;EACA,SAAA,EAAW,IAAA;EACX,QAAA;AAAA;AAAA,UAGe,eAAA;EAAA,CACd,OAAA;IAAW,IAAA;IAAc,EAAA;IAAY,MAAA;IAAgB,IAAA;EAAA,cAAyB,OAAA;AAAA;AAAA,UAGhE,gBAAA;EAAA,CACd,OAAA;IAAW,IAAA;IAAc,EAAA;IAAY,MAAA;IAAgB,IAAA;EAAA,WAAsB,OAAA;AAAA;AAAA,KAQlE,gBAAA,GAAmB,MAAA;EAIzB,IAAA;EACA,EAAA;EACA,KAAA,GAAQ,eAAA;EACR,MAAA,GAAS,gBAAA;EACT,KAAA,GAAQ,gBAAA;AAAA;;;;;AD+Dd;;;;;AAgBA;;;;;AAMA;;;;;;;;;;;;;;;iBCpDgB,kBAAA,CACd,IAAA,UACA,WAAA,GAAa,gBAAA,EACb,OAAA;EAAW,YAAA;AAAA,IACV,YAAA;;;;;;;;;;;AD7HH;;;;;;;;;;;;;;;;;;;;;cEkBa,YAAA;EAAA;;;;KAMD,YAAA,WAAuB,YAAA,eAA2B,YAAA;AAAA,UAE7C,qBAAA;EFFhB;;;;EEOC,gBAAA;EFOD;;;;EEDC,YAAA;EFoBD;;;;EEdC,OAAA;EFuB0B;;;;EEjB1B,gBAAA;EFiBoD;;;EEZpD,QAAA,OAAe,IAAA,YAAgB,OAAA;EFiCL;;;EE5B1B,aAAA,IAAiB,IAAA,EAAM,YAAA,EAAc,EAAA,EAAI,YAAA;EF4Bd;;;EEvB3B,OAAA,IAAW,KAAA,EAAO,KAAA;EFiDP;;;EE5CX,IAAA;AAAA;AAAA,UAGe,mBAAA;EACf,IAAA;EACA,KAAA,EAAO,YAAA;EACP,QAAA;EACA,SAAA;EACA,UAAA;EACA,QAAA;EACA,UAAA;AAAA;AAAA,cAGW,mBAAA,SAA4B,KAAA;EACvC,KAAA,EAAO,YAAA;cAGL,OAAA,UACA,KAAA,EAAO,YAAA;AAAA;AAAA,cAQE,cAAA,eAA6B,IAAA,YAAgB,OAAA;EAAA,QAChD,KAAA;EAAA,QACA,QAAA;EAAA,QACA,SAAA;EAAA,QACA,UAAA;EAAA,QACA,WAAA;EAAA,QACA,UAAA;EAAA,QACA,QAAA;EAAA,iBAES,gBAAA;EAAA,iBACA,YAAA;EAAA,iBACA,OAAA;EAAA,iBACA,gBAAA;EAAA,iBACA,QAAA;EAAA,iBACA,aAAA;EAAA,iBACA,OAAA;EAAA,iBACA,IAAA;EAAA,iBAEA,EAAA;cAGf,EAAA,EAAI,CAAA,EACJ,OAAA,GAAS,qBAAA;EFkDc;;AAM3B;EExCQ,IAAA,CAAA,GAAQ,IAAA,EAAM,UAAA,CAAW,CAAA,IAAK,OAAA,CAAQ,UAAA,CAAW,CAAA;;;;UA0CzC,kBAAA;;;;UAqBN,SAAA;EFhMA;;;EAAA,QEgNA,SAAA;EFhNa;;;EAAA,QEkOb,QAAA;EFjOyB;;;EE+OjC,IAAA,CAAA;EFhPQ;;;EEyPR,KAAA,CAAA;EFxP2C;;;EEkQ3C,QAAA,CAAA,GAAY,mBAAA;;;;EAeZ,QAAA,CAAA,GAAY,YAAA;;;;EAOZ,MAAA,CAAA;;;;EAOA,QAAA,CAAA;;;;EAOA,KAAA,CAAA;AAAA;;;;;;;;;;iBAmBc,oBAAA,eAAmC,IAAA,YAAgB,OAAA,MAAA,CACjE,EAAA,EAAI,CAAA,EACJ,OAAA,GAAU,qBAAA,GACT,cAAA,CAAe,CAAA;;;;cAOL,sBAAA;EAAA,QACH,QAAA;;;;EAKR,QAAA,eAAuB,IAAA,YAAgB,OAAA,MAAA,CACrC,IAAA,UACA,EAAA,EAAI,CAAA,EACJ,OAAA,GAAU,IAAA,CAAK,qBAAA,YACd,cAAA,CAAe,CAAA;;;;EASlB,GAAA,CAAI,IAAA,WAAe,cAAA;EFtVc;;;EE6VjC,MAAA,CAAA,GAAU,GAAA,SAAY,cAAA;;;;EAOtB,WAAA,CAAA,GAAe,MAAA,SAAe,mBAAA;;;;EAW9B,QAAA,CAAA;;;;EASA,OAAA,CAAA;EFzXqB;;;EEkYrB,QAAA,CAAA;AAAA;;;;;iBAWc,4BAAA,CAAA,GAAgC,sBAAA;;;UC7W/B,qBAAA;EH/Bf;EGiCA,QAAA;EHhCA;EGkCA,YAAA;EHhCC;EGkCD,cAAA;EHlCY;EGoCZ,eAAA;EHpBD;EGsBC,cAAA;AAAA;;AHjBF;;;;;AAiBA;;;;;AAoBA;;;cGHa,cAAA,YAA0B,oBAAA;EAAA,iBACpB,QAAA;EAAA,iBACA,YAAA;EAAA,iBACA,cAAA;EAAA,iBACA,eAAA;EAAA,iBACA,cAAA;EHmBH;EAAA,iBGhBG,SAAA;cAeL,OAAA,GAAS,qBAAA;EHCyC;;;EGU9D,KAAA,CAAM,KAAA,EAAO,MAAA,uCAA6C,WAAA;EAAA,QAwClD,WAAA;EAAA,QAMA,WAAA;EH9BG;;;;;AAOb;EAPa,QG0CH,aAAA;EAAA,QAiDA,SAAA;EAAA,QAuBA,WAAA;EAAA,QAYA,WAAA;EHvHmB;;;;EAAA,QGkJnB,YAAA;EAAA,QAYA,YAAA;EAAA,QA6DA,gBAAA;EAAA,QA0BA,WAAA;EH9O6B;AAKvC;;;;EGkQE,cAAA,CAAA;IACE,IAAA;IACA,UAAA,EAAY,MAAA;IACZ,QAAA;EAAA;EAAA,QAuEM,aAAA;AAAA;;;;iBAiBM,iBAAA,CAAkB,OAAA,GAAU,qBAAA,GAAwB,cAAA;;;UCpenD,eAAA;EACf,OAAA,MAAa,IAAA,UAAc,OAAA,EAAS,CAAA,EAAG,IAAA,GAAO,MAAA,sBAA4B,OAAA;EAC1E,SAAA,GAAY,OAAA,UAAiB,OAAA,GAAU,KAAA;IAAS,IAAA;IAAc,OAAA;IAAkB,IAAA,EAAM,MAAA;EAAA,MAA8B,OAAA,WAAkB,OAAA;EACtI,aAAA;AAAA;;iBAIc,SAAA,CAAU,QAAA,EAAU,eAAA,GAAkB,QAAA,IAAY,eAAA;EAAoB,MAAA,EAAQ,eAAA;AAAA;;;;;;;;iBCsC9E,YAAA,CAAa,KAAA,YAAiB,KAAA,IAAS,MAAA;;;;iBAuBvC,WAAA,CAAY,KAAA;;;;;AL/C5B;;;;;iBKgEgB,YAAA,CAAa,KAAA,YAAiB,MAAA;;;;;iBAoC9B,qBAAA,CAAsB,OAAA,EAAS,cAAA,GAAiB,cAAA;;;;;ALpDhE;;;;;;iBKmFgB,kBAAA,CAAmB,MAAA,EAAQ,MAAA,oBAA0B,MAAA"}
@@ -0,0 +1,6 @@
1
+ import { C as ArcQueryParser, S as wrapResponse, _ as paginateWrapper, a as createCircuitBreaker, b as responses, c as deleteResponse, d as getListQueryParams, f as itemResponse, g as mutationResponse, h as messageWrapper, i as CircuitState, l as errorResponseSchema, m as listResponse, n as CircuitBreakerError, o as createCircuitBreakerRegistry, p as itemWrapper, r as CircuitBreakerRegistry, s as createStateMachine, t as CircuitBreaker, u as getDefaultCrudSchemas, v as paginationSchema, w as createQueryParser, x as successResponseSchema, y as queryParams } from "../circuitBreaker-DeY4FCjs.mjs";
2
+ import { a as OrgAccessDeniedError, c as ServiceUnavailableError, d as createError, f as isArcError, i as NotFoundError, l as UnauthorizedError, n as ConflictError, o as OrgRequiredError, r as ForbiddenError, s as RateLimitError, t as ArcError, u as ValidationError } from "../errors-B9bZok84.mjs";
3
+ import { t as hasEvents } from "../typeGuards-DhMNLuvU.mjs";
4
+ import { a as toJsonSchema, i as isZodSchema, n as convertRouteSchema, r as isJsonSchema, t as convertOpenApiSchemas } from "../schemaConverter-BwrmWroW.mjs";
5
+
6
+ export { ArcError, ArcQueryParser, CircuitBreaker, CircuitBreakerError, CircuitBreakerRegistry, CircuitState, ConflictError, ForbiddenError, NotFoundError, OrgAccessDeniedError, OrgRequiredError, RateLimitError, ServiceUnavailableError, UnauthorizedError, ValidationError, convertOpenApiSchemas, convertRouteSchema, createCircuitBreaker, createCircuitBreakerRegistry, createError, createQueryParser, createStateMachine, deleteResponse, errorResponseSchema, getDefaultCrudSchemas, getListQueryParams, hasEvents, isArcError, isJsonSchema, isZodSchema, itemResponse, itemWrapper, listResponse, messageWrapper, mutationResponse, paginateWrapper, paginationSchema, queryParams, responses, successResponseSchema, toJsonSchema, wrapResponse };
package/package.json CHANGED
@@ -1,100 +1,172 @@
1
1
  {
2
2
  "name": "@classytic/arc",
3
- "version": "1.1.0",
4
- "description": "Resource-oriented backend framework for Fastify + MongoDB",
3
+ "version": "2.1.2",
4
+ "description": "Resource-oriented backend framework for Fastify clean, minimal, powerful, tree-shakable",
5
5
  "type": "module",
6
6
  "exports": {
7
7
  ".": {
8
- "types": "./dist/index.d.ts",
9
- "default": "./dist/index.js"
8
+ "types": "./dist/index.d.mts",
9
+ "default": "./dist/index.mjs"
10
10
  },
11
11
  "./permissions": {
12
- "types": "./dist/permissions/index.d.ts",
13
- "default": "./dist/permissions/index.js"
12
+ "types": "./dist/permissions/index.d.mts",
13
+ "default": "./dist/permissions/index.mjs"
14
+ },
15
+ "./cache": {
16
+ "types": "./dist/cache/index.d.mts",
17
+ "default": "./dist/cache/index.mjs"
14
18
  },
15
19
  "./types": {
16
- "types": "./dist/types/index.d.ts",
17
- "default": "./dist/types/index.js"
20
+ "types": "./dist/types/index.d.mts",
21
+ "default": "./dist/types/index.mjs"
18
22
  },
19
23
  "./adapters": {
20
- "types": "./dist/adapters/index.d.ts",
21
- "default": "./dist/adapters/index.js"
24
+ "types": "./dist/adapters/index.d.mts",
25
+ "default": "./dist/adapters/index.mjs"
22
26
  },
23
27
  "./core": {
24
- "types": "./dist/core/index.d.ts",
25
- "default": "./dist/core/index.js"
28
+ "types": "./dist/core/index.d.mts",
29
+ "default": "./dist/core/index.mjs"
26
30
  },
27
31
  "./presets": {
28
- "types": "./dist/presets/index.d.ts",
29
- "default": "./dist/presets/index.js"
32
+ "types": "./dist/presets/index.d.mts",
33
+ "default": "./dist/presets/index.mjs"
30
34
  },
31
35
  "./presets/tenant": {
32
- "types": "./dist/presets/multiTenant.d.ts",
33
- "default": "./dist/presets/multiTenant.js"
36
+ "types": "./dist/presets/multiTenant.d.mts",
37
+ "default": "./dist/presets/multiTenant.mjs"
34
38
  },
35
39
  "./auth": {
36
- "types": "./dist/auth/index.d.ts",
37
- "default": "./dist/auth/index.js"
40
+ "types": "./dist/auth/index.d.mts",
41
+ "default": "./dist/auth/index.mjs"
38
42
  },
39
43
  "./org": {
40
- "types": "./dist/org/index.d.ts",
41
- "default": "./dist/org/index.js"
44
+ "types": "./dist/org/index.d.mts",
45
+ "default": "./dist/org/index.mjs"
46
+ },
47
+ "./org/types": {
48
+ "types": "./dist/org/types.d.mts",
49
+ "default": "./dist/org/types.mjs"
42
50
  },
43
51
  "./hooks": {
44
- "types": "./dist/hooks/index.d.ts",
45
- "default": "./dist/hooks/index.js"
52
+ "types": "./dist/hooks/index.d.mts",
53
+ "default": "./dist/hooks/index.mjs"
46
54
  },
47
55
  "./registry": {
48
- "types": "./dist/registry/index.d.ts",
49
- "default": "./dist/registry/index.js"
56
+ "types": "./dist/registry/index.d.mts",
57
+ "default": "./dist/registry/index.mjs"
50
58
  },
51
59
  "./utils": {
52
- "types": "./dist/utils/index.d.ts",
53
- "default": "./dist/utils/index.js"
60
+ "types": "./dist/utils/index.d.mts",
61
+ "default": "./dist/utils/index.mjs"
54
62
  },
55
63
  "./cli": {
56
- "types": "./dist/cli/index.d.ts",
57
- "default": "./dist/cli/index.js"
64
+ "types": "./dist/cli/index.d.mts",
65
+ "default": "./dist/cli/index.mjs"
58
66
  },
59
67
  "./plugins": {
60
- "types": "./dist/plugins/index.d.ts",
61
- "default": "./dist/plugins/index.js"
68
+ "types": "./dist/plugins/index.d.mts",
69
+ "default": "./dist/plugins/index.mjs"
70
+ },
71
+ "./plugins/tracing": {
72
+ "types": "./dist/plugins/tracing-entry.d.mts",
73
+ "default": "./dist/plugins/tracing-entry.mjs"
62
74
  },
63
75
  "./audit": {
64
- "types": "./dist/audit/index.d.ts",
65
- "default": "./dist/audit/index.js"
76
+ "types": "./dist/audit/index.d.mts",
77
+ "default": "./dist/audit/index.mjs"
78
+ },
79
+ "./audit/mongodb": {
80
+ "types": "./dist/audit/mongodb.d.mts",
81
+ "default": "./dist/audit/mongodb.mjs"
66
82
  },
67
83
  "./docs": {
68
- "types": "./dist/docs/index.d.ts",
69
- "default": "./dist/docs/index.js"
84
+ "types": "./dist/docs/index.d.mts",
85
+ "default": "./dist/docs/index.mjs"
70
86
  },
71
87
  "./idempotency": {
72
- "types": "./dist/idempotency/index.d.ts",
73
- "default": "./dist/idempotency/index.js"
88
+ "types": "./dist/idempotency/index.d.mts",
89
+ "default": "./dist/idempotency/index.mjs"
90
+ },
91
+ "./idempotency/redis": {
92
+ "types": "./dist/idempotency/redis.d.mts",
93
+ "default": "./dist/idempotency/redis.mjs"
94
+ },
95
+ "./idempotency/mongodb": {
96
+ "types": "./dist/idempotency/mongodb.d.mts",
97
+ "default": "./dist/idempotency/mongodb.mjs"
74
98
  },
75
99
  "./events": {
76
- "types": "./dist/events/index.d.ts",
77
- "default": "./dist/events/index.js"
100
+ "types": "./dist/events/index.d.mts",
101
+ "default": "./dist/events/index.mjs"
102
+ },
103
+ "./events/redis": {
104
+ "types": "./dist/events/transports/redis.d.mts",
105
+ "default": "./dist/events/transports/redis.mjs"
106
+ },
107
+ "./events/redis-stream": {
108
+ "types": "./dist/events/transports/redis-stream-entry.d.mts",
109
+ "default": "./dist/events/transports/redis-stream-entry.mjs"
78
110
  },
79
111
  "./testing": {
80
- "types": "./dist/testing/index.d.ts",
81
- "default": "./dist/testing/index.js"
112
+ "types": "./dist/testing/index.d.mts",
113
+ "default": "./dist/testing/index.mjs"
82
114
  },
83
115
  "./policies": {
84
- "types": "./dist/policies/index.d.ts",
85
- "default": "./dist/policies/index.js"
116
+ "types": "./dist/policies/index.d.mts",
117
+ "default": "./dist/policies/index.mjs"
86
118
  },
87
119
  "./factory": {
88
- "types": "./dist/factory/index.d.ts",
89
- "default": "./dist/factory/index.js"
120
+ "types": "./dist/factory/index.d.mts",
121
+ "default": "./dist/factory/index.mjs"
122
+ },
123
+ "./schemas": {
124
+ "types": "./dist/schemas/index.d.mts",
125
+ "default": "./dist/schemas/index.mjs"
90
126
  },
91
127
  "./migrations": {
92
- "types": "./dist/migrations/index.d.ts",
93
- "default": "./dist/migrations/index.js"
128
+ "types": "./dist/migrations/index.d.mts",
129
+ "default": "./dist/migrations/index.mjs"
130
+ },
131
+ "./discovery": {
132
+ "types": "./dist/discovery/index.d.mts",
133
+ "default": "./dist/discovery/index.mjs"
134
+ },
135
+ "./integrations": {
136
+ "types": "./dist/integrations/index.d.mts",
137
+ "default": "./dist/integrations/index.mjs"
138
+ },
139
+ "./integrations/streamline": {
140
+ "types": "./dist/integrations/streamline.d.mts",
141
+ "default": "./dist/integrations/streamline.mjs"
142
+ },
143
+ "./integrations/websocket": {
144
+ "types": "./dist/integrations/websocket.d.mts",
145
+ "default": "./dist/integrations/websocket.mjs"
146
+ },
147
+ "./integrations/jobs": {
148
+ "types": "./dist/integrations/jobs.d.mts",
149
+ "default": "./dist/integrations/jobs.mjs"
150
+ },
151
+ "./integrations/event-gateway": {
152
+ "types": "./dist/integrations/event-gateway.d.mts",
153
+ "default": "./dist/integrations/event-gateway.mjs"
154
+ },
155
+ "./auth/redis": {
156
+ "types": "./dist/auth/redis-session.d.mts",
157
+ "default": "./dist/auth/redis-session.mjs"
158
+ },
159
+ "./plugins/response-cache": {
160
+ "types": "./dist/plugins/response-cache.d.mts",
161
+ "default": "./dist/plugins/response-cache.mjs"
162
+ },
163
+ "./scope": {
164
+ "types": "./dist/scope/index.d.mts",
165
+ "default": "./dist/scope/index.mjs"
94
166
  }
95
167
  },
96
- "main": "./dist/index.js",
97
- "types": "./dist/index.d.ts",
168
+ "main": "./dist/index.mjs",
169
+ "types": "./dist/index.d.mts",
98
170
  "bin": {
99
171
  "arc": "./bin/arc.js"
100
172
  },
@@ -104,8 +176,8 @@
104
176
  "bin"
105
177
  ],
106
178
  "scripts": {
107
- "build": "tsup",
108
- "dev": "tsup --watch",
179
+ "build": "tsdown",
180
+ "dev": "tsdown --watch",
109
181
  "typecheck": "tsc --noEmit",
110
182
  "test": "vitest run",
111
183
  "test:watch": "vitest",
@@ -116,23 +188,48 @@
116
188
  "prepublishOnly": "npm run typecheck && npm test && npm run build"
117
189
  },
118
190
  "engines": {
119
- "node": ">=20"
191
+ "node": ">=22"
120
192
  },
121
193
  "peerDependencies": {
122
- "@classytic/mongokit": "^3.1.6",
194
+ "@classytic/mongokit": "^3.2.3",
195
+ "@classytic/streamline": ">=1.0.0",
123
196
  "@fastify/cors": "^11.0.0",
124
197
  "@fastify/helmet": "^13.0.0",
198
+ "@fastify/jwt": "^10.0.0",
125
199
  "@fastify/multipart": "^9.0.0",
126
200
  "@fastify/rate-limit": "^10.0.0",
127
201
  "@fastify/sensible": "^6.0.0",
202
+ "@fastify/type-provider-typebox": "^6.0.0",
128
203
  "@fastify/under-pressure": "^9.0.0",
129
- "fastify": "^5.0.0",
204
+ "@fastify/websocket": "^11.0.0",
205
+ "@opentelemetry/api": "^1.0.0",
206
+ "@opentelemetry/auto-instrumentations-node": ">=0.40.0",
207
+ "@opentelemetry/exporter-trace-otlp-http": ">=0.50.0",
208
+ "@opentelemetry/instrumentation-http": ">=0.50.0",
209
+ "@opentelemetry/instrumentation-mongodb": ">=0.40.0",
210
+ "@opentelemetry/sdk-node": ">=0.50.0",
211
+ "@sinclair/typebox": "^0.34.0",
212
+ "better-auth": ">=1.0.0",
213
+ "bullmq": "^5.0.0",
214
+ "fastify": "^5.7.4",
130
215
  "fastify-raw-body": "^5.0.0",
216
+ "ioredis": "^5.0.0",
217
+ "mongodb": "^6.0.0 || ^7.0.0",
131
218
  "mongoose": "^8.0.0 || ^9.0.0",
132
- "pino-pretty": "^13.0.0"
219
+ "pino-pretty": "^13.0.0",
220
+ "zod": "^4.0.0"
133
221
  },
134
222
  "peerDependenciesMeta": {
135
- "@fastify/compress": {
223
+ "@classytic/mongokit": {
224
+ "optional": true
225
+ },
226
+ "mongodb": {
227
+ "optional": true
228
+ },
229
+ "mongoose": {
230
+ "optional": true
231
+ },
232
+ "better-auth": {
136
233
  "optional": true
137
234
  },
138
235
  "@fastify/cors": {
@@ -141,6 +238,9 @@
141
238
  "@fastify/helmet": {
142
239
  "optional": true
143
240
  },
241
+ "@fastify/jwt": {
242
+ "optional": true
243
+ },
144
244
  "@fastify/rate-limit": {
145
245
  "optional": true
146
246
  },
@@ -153,16 +253,13 @@
153
253
  "@fastify/multipart": {
154
254
  "optional": true
155
255
  },
156
- "fastify-raw-body": {
256
+ "@fastify/websocket": {
157
257
  "optional": true
158
258
  },
159
- "pino-pretty": {
160
- "optional": true
161
- },
162
- "mongodb-memory-server": {
259
+ "fastify-raw-body": {
163
260
  "optional": true
164
261
  },
165
- "@fastify/aws-lambda": {
262
+ "pino-pretty": {
166
263
  "optional": true
167
264
  },
168
265
  "@opentelemetry/api": {
@@ -182,6 +279,24 @@
182
279
  },
183
280
  "@opentelemetry/auto-instrumentations-node": {
184
281
  "optional": true
282
+ },
283
+ "ioredis": {
284
+ "optional": true
285
+ },
286
+ "@sinclair/typebox": {
287
+ "optional": true
288
+ },
289
+ "@fastify/type-provider-typebox": {
290
+ "optional": true
291
+ },
292
+ "bullmq": {
293
+ "optional": true
294
+ },
295
+ "@classytic/streamline": {
296
+ "optional": true
297
+ },
298
+ "zod": {
299
+ "optional": true
185
300
  }
186
301
  },
187
302
  "dependencies": {
@@ -189,18 +304,24 @@
189
304
  "qs": "^6.14.1"
190
305
  },
191
306
  "devDependencies": {
192
- "@classytic/mongokit": "^3.1.6",
193
- "@fastify/jwt": "^9.0.0",
307
+ "@classytic/mongokit": "^3.2.3",
308
+ "@fastify/jwt": "^10.0.0",
194
309
  "@fastify/multipart": "^9.0.0",
195
- "@types/jsonwebtoken": "^9.0.0",
310
+ "@fastify/websocket": "^11.0.0",
311
+ "@fastify/type-provider-typebox": "^6.0.0",
312
+ "@sinclair/typebox": "^0.34.0",
196
313
  "@types/node": "^22.10.0",
197
314
  "@types/qs": "^6.14.0",
315
+ "@vitest/coverage-v8": "^3.2.4",
198
316
  "fastify-raw-body": "^5.0.0",
199
317
  "jsonwebtoken": "^9.0.0",
318
+ "mongodb": "^7.1.0",
200
319
  "mongodb-memory-server": "^11.0.1",
201
- "tsup": "^8.3.5",
320
+ "tsdown": "^0.20.3",
202
321
  "typescript": "^5.7.2",
203
- "vitest": "^3.0.0"
322
+ "vitest": "^3.0.0",
323
+ "ws": "^8.0.0",
324
+ "zod": "^4.3.6"
204
325
  },
205
326
  "keywords": [
206
327
  "fastify",
@@ -212,7 +333,12 @@
212
333
  "framework",
213
334
  "resource",
214
335
  "multi-tenant",
215
- "typescript"
336
+ "typescript",
337
+ "tree-shakable",
338
+ "serverless",
339
+ "websocket",
340
+ "jobs",
341
+ "workflow"
216
342
  ],
217
343
  "author": "Classytic",
218
344
  "license": "MIT",
@@ -220,4 +346,4 @@
220
346
  "type": "git",
221
347
  "url": "https://github.com/classytic/arc.git"
222
348
  }
223
- }
349
+ }
@@ -1,233 +0,0 @@
1
- import { A as AnyRecord, I as IController, R as RouteSchemaOptions, Q as QueryParserInterface, a as IRequestContext, S as ServiceContext, C as ControllerQueryOptions, b as RequestContext, H as HookSystem, c as IControllerResponse, P as PaginatedResult } from './index-B4t03KQ0.js';
2
-
3
- /**
4
- * Base Controller - Framework-Agnostic CRUD Operations
5
- *
6
- * Implements IController interface for framework portability.
7
- * Works with Fastify, Express, Next.js, or any framework via adapter pattern.
8
- *
9
- * @example
10
- * import { BaseController } from '@classytic/arc';
11
- *
12
- * // Use Arc's default query parser (works out of the box)
13
- * class ProductController extends BaseController {
14
- * constructor(repository: CrudRepository) {
15
- * super(repository);
16
- * }
17
- * }
18
- *
19
- * // Or use MongoKit's parser for advanced MongoDB features ($lookup, aggregations)
20
- * import { QueryParser } from '@classytic/mongokit';
21
- * defineResource({
22
- * name: 'product',
23
- * queryParser: new QueryParser(),
24
- * // ...
25
- * });
26
- *
27
- * // Or use a custom parser for SQL databases
28
- * defineResource({
29
- * name: 'user',
30
- * queryParser: new PgQueryParser(),
31
- * // ...
32
- * });
33
- */
34
-
35
- /**
36
- * Flexible repository interface that accepts any repository shape
37
- * Core CRUD methods use flexible signatures to work with any implementation
38
- * Custom methods can be added via the index signature
39
- *
40
- * @example
41
- * // MongoKit repository with custom methods
42
- * interface MyRepository extends FlexibleRepository {
43
- * findByEmail(email: string): Promise<User>;
44
- * customMethod(): Promise<void>;
45
- * }
46
- */
47
- interface FlexibleRepository {
48
- getAll(...args: any[]): Promise<any>;
49
- getById(...args: any[]): Promise<any>;
50
- create(...args: any[]): Promise<any>;
51
- update(...args: any[]): Promise<any>;
52
- delete(...args: any[]): Promise<any>;
53
- [key: string]: any;
54
- }
55
- interface BaseControllerOptions {
56
- /** Schema options for field sanitization */
57
- schemaOptions?: RouteSchemaOptions;
58
- /**
59
- * Query parser instance
60
- * Default: Arc built-in query parser (adapter-agnostic).
61
- * You can swap in MongoKit QueryParser, pgkit parser, etc.
62
- */
63
- queryParser?: QueryParserInterface;
64
- /** Maximum limit for pagination (default: 100) */
65
- maxLimit?: number;
66
- /** Default limit for pagination (default: 20) */
67
- defaultLimit?: number;
68
- /** Default sort field (default: '-createdAt') */
69
- defaultSort?: string;
70
- /** Resource name for hook execution (e.g., 'product' → 'product.created') */
71
- resourceName?: string;
72
- /** Disable automatic event emission (default: false) */
73
- disableEvents?: boolean;
74
- }
75
- /**
76
- * Framework-agnostic base controller implementing MongoKit's IController
77
- *
78
- * @template TDoc - The document type
79
- * @template TRepository - The repository type (defaults to CrudRepository<TDoc>, preserves custom methods when specified)
80
- *
81
- * Use with Fastify adapter for Fastify integration (see createFastifyAdapter in createCrudRouter)
82
- *
83
- * @example
84
- * // Without custom repository type (backward compatible)
85
- * class SimpleController extends BaseController<Product> {
86
- * constructor(repository: CrudRepository<Product>) {
87
- * super(repository);
88
- * }
89
- * }
90
- *
91
- * @example
92
- * // With custom repository type (type-safe access to custom methods)
93
- * class ProductController extends BaseController<Product, ProductRepository> {
94
- * constructor(repository: ProductRepository) {
95
- * super(repository);
96
- * }
97
- *
98
- * async customMethod(context: IRequestContext) {
99
- * // TypeScript knows about ProductRepository's custom methods
100
- * return await this.repository.findByCategory(...);
101
- * }
102
- * }
103
- */
104
- declare class BaseController<TDoc = AnyRecord, TRepository extends FlexibleRepository = FlexibleRepository> implements IController<TDoc> {
105
- protected repository: TRepository;
106
- protected schemaOptions: RouteSchemaOptions;
107
- protected queryParser: QueryParserInterface;
108
- protected maxLimit: number;
109
- protected defaultLimit: number;
110
- protected defaultSort: string;
111
- protected resourceName?: string;
112
- protected disableEvents: boolean;
113
- /** Preset field names for dynamic param reading */
114
- protected _presetFields: {
115
- slugField?: string;
116
- parentField?: string;
117
- };
118
- constructor(repository: TRepository, options?: BaseControllerOptions);
119
- /**
120
- * Inject resource options from defineResource
121
- */
122
- _setResourceOptions(options: {
123
- schemaOptions?: RouteSchemaOptions;
124
- presetFields?: {
125
- slugField?: string;
126
- parentField?: string;
127
- };
128
- resourceName?: string;
129
- queryParser?: QueryParserInterface;
130
- }): void;
131
- /**
132
- * Build service context from IRequestContext
133
- */
134
- protected _buildContext(req: IRequestContext): ServiceContext;
135
- /**
136
- * Parse query into QueryOptions using queryParser
137
- */
138
- protected _parseQueryOptions(req: IRequestContext): ControllerQueryOptions;
139
- /**
140
- * Apply org and policy filters
141
- */
142
- protected _applyFilters(options: ControllerQueryOptions, req: IRequestContext): ControllerQueryOptions;
143
- /**
144
- * Build filter for single-item operations (get/update/delete)
145
- * Combines ID filter with policy/org filters for proper security enforcement
146
- */
147
- protected _buildIdFilter(id: string, req: IRequestContext): AnyRecord;
148
- /**
149
- * Check if a value matches a MongoDB query operator
150
- */
151
- protected _matchesOperator(itemValue: unknown, operator: string, filterValue: unknown): boolean;
152
- /**
153
- * Forbidden paths that could lead to prototype pollution
154
- */
155
- private static readonly FORBIDDEN_PATHS;
156
- /**
157
- * Get nested value from object using dot notation (e.g., "owner.id")
158
- * Security: Validates path against forbidden patterns to prevent prototype pollution
159
- */
160
- protected _getNestedValue(obj: AnyRecord, path: string): unknown;
161
- /**
162
- * Check if item matches a single filter condition
163
- * Supports nested paths (e.g., "owner.id", "metadata.status")
164
- */
165
- protected _matchesFilter(item: AnyRecord, key: string, filterValue: unknown): boolean;
166
- /**
167
- * Check if item matches policy filters (for get/update/delete operations)
168
- * Validates that fetched item satisfies all policy constraints
169
- * Supports MongoDB query operators: $eq, $ne, $gt, $gte, $lt, $lte, $in, $nin, $exists, $regex, $and, $or
170
- */
171
- protected _checkPolicyFilters(item: AnyRecord, req: IRequestContext): boolean;
172
- /** Parse lean option (default: true for performance) */
173
- protected _parseLean(leanValue: unknown): boolean;
174
- /** Get blocked fields from schema options */
175
- protected _getBlockedFields(schemaOptions: RouteSchemaOptions): string[];
176
- /**
177
- * Convert parsed select object to string format
178
- * Converts { name: 1, email: 1, password: 0 } → 'name email -password'
179
- */
180
- protected _selectToString(select: string | string[] | Record<string, 0 | 1> | undefined): string | undefined;
181
- /** Sanitize select fields */
182
- protected _sanitizeSelect(select: string | undefined, schemaOptions: RouteSchemaOptions): string | undefined;
183
- /** Sanitize populate fields */
184
- protected _sanitizePopulate(populate: unknown, schemaOptions: RouteSchemaOptions): string[] | undefined;
185
- /** Check org scope for a document */
186
- protected _checkOrgScope(item: AnyRecord | null, arcContext: RequestContext | undefined): boolean;
187
- /** Check ownership for update/delete (ownedByUser preset) */
188
- protected _checkOwnership(item: AnyRecord | null, req: IRequestContext): boolean;
189
- /**
190
- * Get hook system from context (instance-scoped) or fall back to global singleton
191
- * This allows proper isolation when running multiple app instances (e.g., in tests)
192
- */
193
- protected _getHooks(req: IRequestContext): HookSystem;
194
- /**
195
- * List resources with filtering, pagination, sorting
196
- * Implements IController.list()
197
- */
198
- list(req: IRequestContext): Promise<IControllerResponse<PaginatedResult<TDoc>>>;
199
- /**
200
- * Get single resource by ID
201
- * Implements IController.get()
202
- */
203
- get(req: IRequestContext): Promise<IControllerResponse<TDoc>>;
204
- /**
205
- * Create new resource
206
- * Implements IController.create()
207
- */
208
- create(req: IRequestContext): Promise<IControllerResponse<TDoc>>;
209
- /**
210
- * Update existing resource
211
- * Implements IController.update()
212
- */
213
- update(req: IRequestContext): Promise<IControllerResponse<TDoc>>;
214
- /**
215
- * Delete resource
216
- * Implements IController.delete()
217
- */
218
- delete(req: IRequestContext): Promise<IControllerResponse<{
219
- message: string;
220
- }>>;
221
- /** Get resource by slug (slugLookup preset) */
222
- getBySlug(req: IRequestContext): Promise<IControllerResponse<TDoc>>;
223
- /** Get soft-deleted resources (softDelete preset) */
224
- getDeleted(req: IRequestContext): Promise<IControllerResponse<PaginatedResult<TDoc>>>;
225
- /** Restore soft-deleted resource (softDelete preset) */
226
- restore(req: IRequestContext): Promise<IControllerResponse<TDoc>>;
227
- /** Get hierarchical tree (tree preset) */
228
- getTree(req: IRequestContext): Promise<IControllerResponse<TDoc[]>>;
229
- /** Get children of parent (tree preset) */
230
- getChildren(req: IRequestContext): Promise<IControllerResponse<TDoc[]>>;
231
- }
232
-
233
- export { BaseController as B, type BaseControllerOptions as a };