@classytic/arc 2.23.0 → 2.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/dist/{BaseController-BQ8KNvWC.mjs → BaseController--M8EMzt0.mjs} +90 -21
  2. package/dist/QueryCache-DOMT_iq7.d.mts +72 -0
  3. package/dist/actionPermissions-CAphcmUG.mjs +24 -0
  4. package/dist/audit/index.d.mts +32 -3
  5. package/dist/audit/index.mjs +7 -4
  6. package/dist/auth/index.d.mts +2 -2
  7. package/dist/auth/index.mjs +263 -259
  8. package/dist/{buildHandler-D_2ULWxZ.mjs → buildHandler-Dtwd8fdz.mjs} +1 -1
  9. package/dist/cache/index.d.mts +41 -3
  10. package/dist/cache/index.mjs +33 -4
  11. package/dist/cli/commands/describe.d.mts +1 -1
  12. package/dist/cli/commands/docs.mjs +1 -1
  13. package/dist/cli/commands/generate.mjs +1 -1
  14. package/dist/cli/commands/init.mjs +1 -1
  15. package/dist/cli/index.mjs +2 -2
  16. package/dist/context/index.mjs +2 -64
  17. package/dist/core/index.d.mts +3 -3
  18. package/dist/core/index.mjs +4 -4
  19. package/dist/{core-DQ6rDTyH.mjs → core-EUNu0u07.mjs} +296 -11
  20. package/dist/{createActionRouter-BuOv-m4Y.mjs → createActionRouter-B6GvAuAX.mjs} +3 -2
  21. package/dist/{createAggregationRouter-CgJv_BU_.mjs → createAggregationRouter-wzwFa_dW.mjs} +3 -3
  22. package/dist/docs/index.d.mts +1 -1
  23. package/dist/docs/index.mjs +2 -2
  24. package/dist/{elevation-COpYKt2h.mjs → elevation-CIz1GjGm.mjs} +4 -3
  25. package/dist/{eventPlugin-A6EbthXR.d.mts → eventPlugin-Bg3cP2_u.d.mts} +38 -3
  26. package/dist/{eventPlugin-DJG2D7sy.mjs → eventPlugin-DrQ_FesK.mjs} +22 -4
  27. package/dist/events/index.d.mts +57 -314
  28. package/dist/events/index.mjs +163 -91
  29. package/dist/events/transports/redis-stream-entry.d.mts +1 -1
  30. package/dist/events/transports/redis-stream-entry.mjs +24 -2
  31. package/dist/factory/index.d.mts +4 -5
  32. package/dist/factory/index.mjs +28 -8
  33. package/dist/{fastify-augmentation-g_f9omSc.d.mts → fastify-augmentation-dPNBVeIj.d.mts} +25 -2
  34. package/dist/{generate-usRSdQmP.mjs → generate-D0wZupBg.mjs} +1 -1
  35. package/dist/headers-BvlQSDMB.mjs +45 -0
  36. package/dist/health-CB_m4S32.mjs +377 -0
  37. package/dist/hooks/index.d.mts +1 -1
  38. package/dist/idempotency/index.mjs +27 -3
  39. package/dist/{index-wMoWBLkn.d.mts → index-BMnbzvtO.d.mts} +3 -3
  40. package/dist/{integrations/jobs.d.mts → index-CG4yqMDB.d.mts} +82 -2
  41. package/dist/{index-BBsvQt7U.d.mts → index-DPRH0Cme.d.mts} +36 -106
  42. package/dist/{module-B4u10iOJ.d.mts → index-KUoxjIq1.d.mts} +263 -23
  43. package/dist/{index-CC5ruDGh.d.mts → index-f4PTrk3B.d.mts} +37 -5
  44. package/dist/index.d.mts +6 -6
  45. package/dist/index.mjs +5 -5
  46. package/dist/{init-CjO4p_q1.mjs → init-tlRSt667.mjs} +206 -208
  47. package/dist/integrations/event-gateway.d.mts +1 -1
  48. package/dist/integrations/event-gateway.mjs +1 -1
  49. package/dist/integrations/index.d.mts +3 -3
  50. package/dist/integrations/jobs/index.d.mts +2 -0
  51. package/dist/integrations/{jobs.mjs → jobs/index.mjs} +110 -67
  52. package/dist/integrations/mcp/index.d.mts +4 -4
  53. package/dist/integrations/mcp/index.mjs +2 -2
  54. package/dist/integrations/mcp/testing.d.mts +1 -1
  55. package/dist/integrations/mcp/testing.mjs +1 -1
  56. package/dist/integrations/webhooks.d.mts +37 -30
  57. package/dist/integrations/webhooks.mjs +51 -62
  58. package/dist/integrations/websocket-redis.d.mts +1 -1
  59. package/dist/integrations/websocket.d.mts +1 -1
  60. package/dist/integrations/websocket.mjs +41 -14
  61. package/dist/{interface-C1_WLTMK.d.mts → interface-BGZCzOGL.d.mts} +24 -31
  62. package/dist/{mcpPlugin-BtzIL_kM.mjs → mcpPlugin-Cb7olw0j.mjs} +11 -9
  63. package/dist/{memory-CLXA2VeJ.mjs → memory-CmnzXE5Z.mjs} +29 -0
  64. package/dist/middleware/index.d.mts +17 -1
  65. package/dist/middleware/index.mjs +1 -1
  66. package/dist/migrations/index.d.mts +94 -44
  67. package/dist/migrations/index.mjs +196 -44
  68. package/dist/{multipartBody-CHEQSZ6G.mjs → multipartBody-D0eBvkeq.mjs} +17 -0
  69. package/dist/{openapi-jSDx-VDv.mjs → openapi-DrLtog_B.mjs} +3 -3
  70. package/dist/permissions/index.d.mts +2 -2
  71. package/dist/permissions/index.mjs +2 -2
  72. package/dist/{permissions-tbxFHxjZ.mjs → permissions-BrtiBKGs.mjs} +229 -229
  73. package/dist/pipeline/index.d.mts +1 -1
  74. package/dist/{actionPermissions-lszoJle1.mjs → pipeline-BN5G05rd.mjs} +3 -26
  75. package/dist/plugins/index.d.mts +6 -77
  76. package/dist/plugins/index.mjs +11 -95
  77. package/dist/plugins/response-cache.mjs +1 -0
  78. package/dist/plugins/tracing-entry.mjs +1 -1
  79. package/dist/{index-Ba10fdKp.d.mts → preloadResources-0oe-JSSS.d.mts} +50 -50
  80. package/dist/{createApp-CjOeWJ9_.mjs → preloadResources-DfyngIN9.mjs} +233 -70
  81. package/dist/presets/filesUpload.d.mts +3 -3
  82. package/dist/presets/filesUpload.mjs +3 -3
  83. package/dist/presets/index.d.mts +2 -1
  84. package/dist/presets/index.mjs +1 -1
  85. package/dist/presets/multiTenant.d.mts +1 -1
  86. package/dist/presets/multiTenant.mjs +1 -1
  87. package/dist/presets/search.d.mts +2 -2
  88. package/dist/presets/search.mjs +1 -1
  89. package/dist/{presets-BOe4Ugkl.mjs → presets-DwFDVKP0.mjs} +2 -2
  90. package/dist/{queryCachePlugin-DzqLN904.mjs → queryCachePlugin-DSGuSVLW.mjs} +39 -8
  91. package/dist/{queryCachePlugin-CfYWq-Ak.d.mts → queryCachePlugin-br4otiqF.d.mts} +2 -2
  92. package/dist/{registerRoute-CWO6mdYe.mjs → rateLimit-DrED-C4v.mjs} +2 -109
  93. package/dist/{realtime-I8OrfnMR.mjs → realtime-Cuw_deA-.mjs} +2 -2
  94. package/dist/{redis-stream-iVR2l7aS.d.mts → redis-stream-uIaauNpZ.d.mts} +22 -0
  95. package/dist/registerRoute-v0Wb6Plt.mjs +108 -0
  96. package/dist/registry/index.d.mts +2 -2
  97. package/dist/renewingLease-3cuQH7h8.mjs +44 -0
  98. package/dist/{requestContext-BZKOr13H.mjs → requestContext-MrlJwECf.mjs} +2 -2
  99. package/dist/schedules-CjOd2MG9.mjs +113 -0
  100. package/dist/schemas/index.d.mts +67 -67
  101. package/dist/schemas/index.mjs +2 -3
  102. package/dist/scim/index.mjs +1 -2
  103. package/dist/scope/index.d.mts +2 -2
  104. package/dist/scope/index.mjs +4 -4
  105. package/dist/{scope-LONQ3mfZ.mjs → scope-DfaPntpo.mjs} +4 -5
  106. package/dist/{sse-0u4P4-OI.mjs → sse-BQ1w0dfl.mjs} +1 -1
  107. package/dist/testing/index.d.mts +4 -3
  108. package/dist/testing/index.mjs +2 -2
  109. package/dist/transactionContext-PNdoyLLm.mjs +64 -0
  110. package/dist/types/index.d.mts +4 -4
  111. package/dist/{types-bHblZ9YN.mjs → types-CSyCxl2V.mjs} +38 -7
  112. package/dist/{types-DH0GupI7.d.mts → types-DjC-KUCz.d.mts} +118 -20
  113. package/dist/{types-Csxga7d3.d.mts → types-Dmw-6Qeo.d.mts} +96 -4
  114. package/dist/{types-5OuqeTDX.d.mts → types-QFGc3Cjv.d.mts} +1 -1
  115. package/dist/usage/index.d.mts +3 -52
  116. package/dist/usage/index.mjs +0 -0
  117. package/dist/userHelpers-Cg_y3fBz.mjs +29 -0
  118. package/dist/utils/index.d.mts +58 -85
  119. package/dist/utils/index.mjs +4 -2
  120. package/dist/{utils-CZyeRXTh.mjs → utils-taUVD4p3.mjs} +47 -337
  121. package/dist/{validate-C2mGgSXg.mjs → validate-Bk44F2yT.mjs} +1 -1
  122. package/dist/{versioning-D6PvCwpq.d.mts → versioning-DXgY5BUm.d.mts} +11 -29
  123. package/dist/{versioning-Dk-71iIz.mjs → versioning-gKWyryT3.mjs} +8 -1
  124. package/dist/{websocket-uuWqM6UY.d.mts → websocket-_Pd0CgR0.d.mts} +15 -1
  125. package/package.json +526 -513
  126. package/skills/arc/references/api-reference.md +3 -1
  127. package/skills/arc/references/integrations.md +20 -11
  128. package/dist/QueryCache-Z1B38koh.d.mts +0 -40
  129. package/dist/betterAuthOpenApi-CV1lxpRX.mjs +0 -2
  130. package/dist/health-ScyjIVo5.mjs +0 -202
  131. package/dist/requestId-5BhTVzBv.mjs +0 -113
  132. package/dist/types-XTApa8b6.mjs +0 -24
package/package.json CHANGED
@@ -1,513 +1,526 @@
1
- {
2
- "name": "@classytic/arc",
3
- "version": "2.23.0",
4
- "description": "Resource-oriented backend framework for Fastify - clean, minimal, powerful, tree-shakable",
5
- "type": "module",
6
- "exports": {
7
- ".": {
8
- "types": "./dist/index.d.mts",
9
- "default": "./dist/index.mjs"
10
- },
11
- "./permissions": {
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"
18
- },
19
- "./types": {
20
- "types": "./dist/types/index.d.mts",
21
- "default": "./dist/types/index.mjs"
22
- },
23
- "./types/storage": {
24
- "types": "./dist/types/storage.d.mts",
25
- "default": "./dist/types/storage.mjs"
26
- },
27
- "./core": {
28
- "types": "./dist/core/index.d.mts",
29
- "default": "./dist/core/index.mjs"
30
- },
31
- "./presets": {
32
- "types": "./dist/presets/index.d.mts",
33
- "default": "./dist/presets/index.mjs"
34
- },
35
- "./presets/tenant": {
36
- "types": "./dist/presets/multiTenant.d.mts",
37
- "default": "./dist/presets/multiTenant.mjs"
38
- },
39
- "./presets/files-upload": {
40
- "types": "./dist/presets/filesUpload.d.mts",
41
- "default": "./dist/presets/filesUpload.mjs"
42
- },
43
- "./presets/search": {
44
- "types": "./dist/presets/search.d.mts",
45
- "default": "./dist/presets/search.mjs"
46
- },
47
- "./auth": {
48
- "types": "./dist/auth/index.d.mts",
49
- "default": "./dist/auth/index.mjs"
50
- },
51
- "./hooks": {
52
- "types": "./dist/hooks/index.d.mts",
53
- "default": "./dist/hooks/index.mjs"
54
- },
55
- "./middleware": {
56
- "types": "./dist/middleware/index.d.mts",
57
- "default": "./dist/middleware/index.mjs"
58
- },
59
- "./pipeline": {
60
- "types": "./dist/pipeline/index.d.mts",
61
- "default": "./dist/pipeline/index.mjs"
62
- },
63
- "./context": {
64
- "types": "./dist/context/index.d.mts",
65
- "default": "./dist/context/index.mjs"
66
- },
67
- "./logger": {
68
- "types": "./dist/logger/index.d.mts",
69
- "default": "./dist/logger/index.mjs"
70
- },
71
- "./registry": {
72
- "types": "./dist/registry/index.d.mts",
73
- "default": "./dist/registry/index.mjs"
74
- },
75
- "./utils": {
76
- "types": "./dist/utils/index.d.mts",
77
- "default": "./dist/utils/index.mjs"
78
- },
79
- "./cli": {
80
- "types": "./dist/cli/index.d.mts",
81
- "default": "./dist/cli/index.mjs"
82
- },
83
- "./plugins": {
84
- "types": "./dist/plugins/index.d.mts",
85
- "default": "./dist/plugins/index.mjs"
86
- },
87
- "./plugins/tracing": {
88
- "types": "./dist/plugins/tracing-entry.d.mts",
89
- "default": "./dist/plugins/tracing-entry.mjs"
90
- },
91
- "./audit": {
92
- "types": "./dist/audit/index.d.mts",
93
- "default": "./dist/audit/index.mjs"
94
- },
95
- "./docs": {
96
- "types": "./dist/docs/index.d.mts",
97
- "default": "./dist/docs/index.mjs"
98
- },
99
- "./encryption": {
100
- "types": "./dist/encryption/index.d.mts",
101
- "default": "./dist/encryption/index.mjs"
102
- },
103
- "./idempotency": {
104
- "types": "./dist/idempotency/index.d.mts",
105
- "default": "./dist/idempotency/index.mjs"
106
- },
107
- "./idempotency/redis": {
108
- "types": "./dist/idempotency/redis.d.mts",
109
- "default": "./dist/idempotency/redis.mjs"
110
- },
111
- "./events": {
112
- "types": "./dist/events/index.d.mts",
113
- "default": "./dist/events/index.mjs"
114
- },
115
- "./events/redis": {
116
- "types": "./dist/events/transports/redis.d.mts",
117
- "default": "./dist/events/transports/redis.mjs"
118
- },
119
- "./events/redis-stream": {
120
- "types": "./dist/events/transports/redis-stream-entry.d.mts",
121
- "default": "./dist/events/transports/redis-stream-entry.mjs"
122
- },
123
- "./testing": {
124
- "types": "./dist/testing/index.d.mts",
125
- "default": "./dist/testing/index.mjs"
126
- },
127
- "./testing/storage": {
128
- "types": "./dist/testing/storageContract.d.mts",
129
- "default": "./dist/testing/storageContract.mjs"
130
- },
131
- "./factory": {
132
- "types": "./dist/factory/index.d.mts",
133
- "default": "./dist/factory/index.mjs"
134
- },
135
- "./schemas": {
136
- "types": "./dist/schemas/index.d.mts",
137
- "default": "./dist/schemas/index.mjs"
138
- },
139
- "./migrations": {
140
- "types": "./dist/migrations/index.d.mts",
141
- "default": "./dist/migrations/index.mjs"
142
- },
143
- "./discovery": {
144
- "types": "./dist/discovery/index.d.mts",
145
- "default": "./dist/discovery/index.mjs"
146
- },
147
- "./integrations": {
148
- "types": "./dist/integrations/index.d.mts",
149
- "default": "./dist/integrations/index.mjs"
150
- },
151
- "./integrations/streamline": {
152
- "types": "./dist/integrations/streamline.d.mts",
153
- "default": "./dist/integrations/streamline.mjs"
154
- },
155
- "./integrations/websocket": {
156
- "types": "./dist/integrations/websocket.d.mts",
157
- "default": "./dist/integrations/websocket.mjs"
158
- },
159
- "./integrations/websocket-redis": {
160
- "types": "./dist/integrations/websocket-redis.d.mts",
161
- "default": "./dist/integrations/websocket-redis.mjs"
162
- },
163
- "./integrations/websocket-pushref-redis": {
164
- "types": "./dist/integrations/websocket-pushref-redis.d.mts",
165
- "default": "./dist/integrations/websocket-pushref-redis.mjs"
166
- },
167
- "./integrations/jobs": {
168
- "types": "./dist/integrations/jobs.d.mts",
169
- "default": "./dist/integrations/jobs.mjs"
170
- },
171
- "./integrations/event-gateway": {
172
- "types": "./dist/integrations/event-gateway.d.mts",
173
- "default": "./dist/integrations/event-gateway.mjs"
174
- },
175
- "./integrations/webhooks": {
176
- "types": "./dist/integrations/webhooks.d.mts",
177
- "default": "./dist/integrations/webhooks.mjs"
178
- },
179
- "./auth/redis": {
180
- "types": "./dist/auth/redis-session.d.mts",
181
- "default": "./dist/auth/redis-session.mjs"
182
- },
183
- "./plugins/response-cache": {
184
- "types": "./dist/plugins/response-cache.d.mts",
185
- "default": "./dist/plugins/response-cache.mjs"
186
- },
187
- "./scope": {
188
- "types": "./dist/scope/index.d.mts",
189
- "default": "./dist/scope/index.mjs"
190
- },
191
- "./mcp": {
192
- "types": "./dist/integrations/mcp/index.d.mts",
193
- "default": "./dist/integrations/mcp/index.mjs"
194
- },
195
- "./mcp/testing": {
196
- "types": "./dist/integrations/mcp/testing.d.mts",
197
- "default": "./dist/integrations/mcp/testing.mjs"
198
- },
199
- "./scim": {
200
- "types": "./dist/scim/index.d.mts",
201
- "default": "./dist/scim/index.mjs"
202
- },
203
- "./auth/audit": {
204
- "types": "./dist/auth/audit.d.mts",
205
- "default": "./dist/auth/audit.mjs"
206
- },
207
- "./sync": {
208
- "types": "./dist/sync/changelog.d.mts",
209
- "default": "./dist/sync/changelog.mjs"
210
- },
211
- "./usage": {
212
- "types": "./dist/usage/index.d.mts",
213
- "default": "./dist/usage/index.mjs"
214
- }
215
- },
216
- "main": "./dist/index.mjs",
217
- "types": "./dist/index.d.mts",
218
- "bin": {
219
- "arc": "./bin/arc.js"
220
- },
221
- "publishConfig": {
222
- "access": "public"
223
- },
224
- "sideEffects": false,
225
- "arc": {
226
- "subpathStability": {
227
- ".": "stable",
228
- "./permissions": "stable",
229
- "./cache": "stable",
230
- "./types": "stable",
231
- "./types/storage": "stable",
232
- "./core": "stable",
233
- "./presets": "stable",
234
- "./presets/tenant": "stable",
235
- "./presets/files-upload": "stable",
236
- "./presets/search": "stable",
237
- "./auth": "stable",
238
- "./hooks": "stable",
239
- "./middleware": "stable",
240
- "./pipeline": "stable",
241
- "./context": "stable",
242
- "./logger": "stable",
243
- "./registry": "stable",
244
- "./utils": "stable",
245
- "./cli": "stable",
246
- "./plugins": "stable",
247
- "./plugins/tracing": "stable",
248
- "./audit": "stable",
249
- "./docs": "stable",
250
- "./encryption": "stable",
251
- "./idempotency": "stable",
252
- "./idempotency/redis": "stable",
253
- "./events": "stable",
254
- "./events/redis": "stable",
255
- "./events/redis-stream": "stable",
256
- "./testing": "stable",
257
- "./testing/storage": "stable",
258
- "./factory": "stable",
259
- "./schemas": "stable",
260
- "./migrations": "stable",
261
- "./discovery": "stable",
262
- "./integrations": "stable",
263
- "./integrations/streamline": "stable",
264
- "./integrations/websocket": "stable",
265
- "./integrations/websocket-redis": "stable",
266
- "./integrations/websocket-pushref-redis": "stable",
267
- "./integrations/jobs": "stable",
268
- "./integrations/event-gateway": "experimental",
269
- "./integrations/webhooks": "stable",
270
- "./auth/redis": "stable",
271
- "./plugins/response-cache": "stable",
272
- "./scope": "stable",
273
- "./mcp": "stable",
274
- "./mcp/testing": "stable",
275
- "./scim": "stable",
276
- "./auth/audit": "stable",
277
- "./sync": "experimental",
278
- "./usage": "experimental"
279
- }
280
- },
281
- "files": [
282
- "dist",
283
- "bin",
284
- "skills",
285
- "llms.txt"
286
- ],
287
- "scripts": {
288
- "build": "tsdown",
289
- "dev": "tsdown --watch",
290
- "typecheck": "tsc --noEmit",
291
- "lint": "biome check src/",
292
- "lint:fix": "biome check --fix src/",
293
- "lint:all": "biome check src/ tests/",
294
- "test": "vitest run",
295
- "test:main": "vitest run",
296
- "test:main:serial": "vitest run --no-file-parallelism",
297
- "test:perf": "node --expose-gc ./node_modules/vitest/vitest.mjs run --config vitest.perf.config.ts --no-file-parallelism",
298
- "test:ci": "npm run test:main && npm run test:perf",
299
- "test:watch": "vitest",
300
- "test:ui": "vitest --ui",
301
- "test:coverage": "vitest run --coverage",
302
- "test:e2e": "vitest run tests/e2e",
303
- "test:unit": "vitest run tests/core tests/hooks tests/utils tests/plugins",
304
- "test:smoke:ws": "vitest run tests/integrations/websocket/smoke.test.ts",
305
- "test:smoke:redis": "node scripts/smoke-ws-redis.mjs",
306
- "smoke": "node scripts/smoke-test.mjs",
307
- "push": "classytic-push",
308
- "release:tag": "node -e \"require('child_process').execSync('npm run push -- v'+require('./package.json').version,{stdio:'inherit'})\"",
309
- "release": "npm run push -- main && npm run release:tag && npm publish",
310
- "check:peer-skew": "node scripts/check-peer-skew.mjs",
311
- "check:docs-drift": "node scripts/check-docs-drift.mjs",
312
- "check:boundaries": "node scripts/check-boundaries.mjs",
313
- "prepublishOnly": "npm run check:peer-skew && npm run check:docs-drift && npm run check:boundaries && npm run typecheck && npm run lint && npm run build && npm run test:ci && npm run smoke"
314
- },
315
- "engines": {
316
- "node": ">=22"
317
- },
318
- "peerDependencies": {
319
- "@classytic/primitives": ">=0.9.0",
320
- "@classytic/repo-core": ">=0.14.0",
321
- "@classytic/streamline": ">=2.7.0",
322
- "@fastify/cors": ">=11.0.0",
323
- "@fastify/helmet": ">=13.0.0",
324
- "@fastify/jwt": ">=10.0.0",
325
- "@fastify/multipart": ">=9.0.0",
326
- "@fastify/rate-limit": ">=10.0.0",
327
- "@fastify/sensible": ">=6.0.0",
328
- "@fastify/type-provider-typebox": ">=6.0.0",
329
- "@fastify/under-pressure": ">=9.0.0",
330
- "@fastify/websocket": ">=11.0.0",
331
- "@modelcontextprotocol/sdk": ">=1.28.0",
332
- "@opentelemetry/api": ">=1.9.0",
333
- "@opentelemetry/auto-instrumentations-node": ">=0.40.0",
334
- "@opentelemetry/exporter-trace-otlp-http": ">=0.50.0",
335
- "@opentelemetry/instrumentation-http": ">=0.50.0",
336
- "@opentelemetry/instrumentation-mongodb": ">=0.40.0",
337
- "@opentelemetry/sdk-node": ">=0.50.0",
338
- "@sinclair/typebox": ">=0.34.0",
339
- "better-auth": ">=1.6.2",
340
- "bullmq": ">=5.0.0",
341
- "fastify": "^5.8.5",
342
- "fastify-raw-body": ">=5.0.0",
343
- "h3-js": ">=4.0.0",
344
- "ioredis": ">=5.0.0",
345
- "jose": ">=5.0.0",
346
- "pino-pretty": ">=13.0.0",
347
- "zod": ">=4.0.0"
348
- },
349
- "peerDependenciesMeta": {
350
- "better-auth": {
351
- "optional": true
352
- },
353
- "@fastify/cors": {
354
- "optional": true
355
- },
356
- "@fastify/helmet": {
357
- "optional": true
358
- },
359
- "@fastify/jwt": {
360
- "optional": true
361
- },
362
- "@fastify/rate-limit": {
363
- "optional": true
364
- },
365
- "@fastify/sensible": {
366
- "optional": true
367
- },
368
- "@fastify/under-pressure": {
369
- "optional": true
370
- },
371
- "@fastify/multipart": {
372
- "optional": true
373
- },
374
- "@fastify/websocket": {
375
- "optional": true
376
- },
377
- "fastify-raw-body": {
378
- "optional": true
379
- },
380
- "h3-js": {
381
- "optional": true
382
- },
383
- "pino-pretty": {
384
- "optional": true
385
- },
386
- "@opentelemetry/api": {
387
- "optional": true
388
- },
389
- "@opentelemetry/sdk-node": {
390
- "optional": true
391
- },
392
- "@opentelemetry/exporter-trace-otlp-http": {
393
- "optional": true
394
- },
395
- "@opentelemetry/instrumentation-http": {
396
- "optional": true
397
- },
398
- "@opentelemetry/instrumentation-mongodb": {
399
- "optional": true
400
- },
401
- "@opentelemetry/auto-instrumentations-node": {
402
- "optional": true
403
- },
404
- "ioredis": {
405
- "optional": true
406
- },
407
- "jose": {
408
- "optional": true
409
- },
410
- "@sinclair/typebox": {
411
- "optional": true
412
- },
413
- "@fastify/type-provider-typebox": {
414
- "optional": true
415
- },
416
- "bullmq": {
417
- "optional": true
418
- },
419
- "@classytic/streamline": {
420
- "optional": true
421
- },
422
- "zod": {
423
- "optional": true
424
- },
425
- "@modelcontextprotocol/sdk": {
426
- "optional": true
427
- }
428
- },
429
- "dependencies": {
430
- "fastify-plugin": "^6.0.0",
431
- "qs": "^6.15.2",
432
- "secure-json-parse": "^4.1.0"
433
- },
434
- "devDependencies": {
435
- "@better-auth/drizzle-adapter": "^1.6.19",
436
- "@better-auth/mongo-adapter": "^1.6.19",
437
- "@biomejs/biome": "^2.5.0",
438
- "@classytic/dev-tools": "^0.2.0",
439
- "@classytic/gitkit": ">=0.1.0",
440
- "@classytic/mongokit": "^3.22.0",
441
- "@classytic/pgkit": "^0.1.0",
442
- "@classytic/primitives": "^0.9.1",
443
- "@classytic/repo-core": "^0.14.0",
444
- "@classytic/sqlitekit": "^0.6.0",
445
- "@classytic/streamline": "^2.7.0",
446
- "@electric-sql/pglite": "^0.5.4",
447
- "@fastify/cors": "^11.2.0",
448
- "@fastify/helmet": "^13.0.2",
449
- "@fastify/jwt": "^10.1.0",
450
- "@fastify/multipart": "^10.0.0",
451
- "@fastify/rate-limit": "^11.0.0",
452
- "@fastify/sensible": "^6.0.4",
453
- "@fastify/type-provider-typebox": "^6.1.0",
454
- "@fastify/under-pressure": "^9.0.3",
455
- "@fastify/websocket": "^11.2.0",
456
- "@modelcontextprotocol/sdk": "^1.29.0",
457
- "@opentelemetry/api": "^1.9.1",
458
- "@sinclair/typebox": "^0.34.49",
459
- "@types/node": "^22.19.21",
460
- "@types/qs": "^6.15.1",
461
- "@vitest/coverage-v8": "^4.1.9",
462
- "ajv": "^8.20.0",
463
- "better-auth": "^1.6.19",
464
- "better-sqlite3": "^12.11.1",
465
- "bullmq": "^5.79.0",
466
- "dotenv": "^17.4.2",
467
- "drizzle-orm": "^0.45.2",
468
- "fast-check": "^4.8.0",
469
- "fastify": "^5.8.5",
470
- "fastify-raw-body": "^5.0.0",
471
- "h3-js": "^4.4.0",
472
- "ioredis": "^5.11.1",
473
- "jose": "^6.2.3",
474
- "jsonwebtoken": "^9.0.3",
475
- "knip": "^6.17.1",
476
- "mongodb": "^7.3.0",
477
- "mongodb-memory-server": "^11.2.0",
478
- "mongoose": "^9.7.1",
479
- "tsdown": "^0.22.5",
480
- "typescript": "^7.0.2",
481
- "vitest": "^4.1.9",
482
- "ws": "^8.21.0",
483
- "zod": "^4.4.3"
484
- },
485
- "config": {
486
- "mongodbMemoryServer": {
487
- "disablePostinstall": "1"
488
- }
489
- },
490
- "keywords": [
491
- "fastify",
492
- "mongodb",
493
- "mongoose",
494
- "crud",
495
- "rest",
496
- "api",
497
- "framework",
498
- "resource",
499
- "multi-tenant",
500
- "typescript",
501
- "tree-shakable",
502
- "serverless",
503
- "websocket",
504
- "jobs",
505
- "workflow"
506
- ],
507
- "author": "Classytic",
508
- "license": "MIT",
509
- "repository": {
510
- "type": "git",
511
- "url": "https://github.com/classytic/arc.git"
512
- }
513
- }
1
+ {
2
+ "name": "@classytic/arc",
3
+ "version": "2.25.0",
4
+ "description": "Resource-oriented backend framework for Fastify - clean, minimal, powerful, tree-shakable",
5
+ "type": "module",
6
+ "exports": {
7
+ ".": {
8
+ "types": "./dist/index.d.mts",
9
+ "default": "./dist/index.mjs"
10
+ },
11
+ "./permissions": {
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"
18
+ },
19
+ "./types": {
20
+ "types": "./dist/types/index.d.mts",
21
+ "default": "./dist/types/index.mjs"
22
+ },
23
+ "./types/storage": {
24
+ "types": "./dist/types/storage.d.mts",
25
+ "default": "./dist/types/storage.mjs"
26
+ },
27
+ "./core": {
28
+ "types": "./dist/core/index.d.mts",
29
+ "default": "./dist/core/index.mjs"
30
+ },
31
+ "./presets": {
32
+ "types": "./dist/presets/index.d.mts",
33
+ "default": "./dist/presets/index.mjs"
34
+ },
35
+ "./presets/tenant": {
36
+ "types": "./dist/presets/multiTenant.d.mts",
37
+ "default": "./dist/presets/multiTenant.mjs"
38
+ },
39
+ "./presets/files-upload": {
40
+ "types": "./dist/presets/filesUpload.d.mts",
41
+ "default": "./dist/presets/filesUpload.mjs"
42
+ },
43
+ "./presets/search": {
44
+ "types": "./dist/presets/search.d.mts",
45
+ "default": "./dist/presets/search.mjs"
46
+ },
47
+ "./auth": {
48
+ "types": "./dist/auth/index.d.mts",
49
+ "default": "./dist/auth/index.mjs"
50
+ },
51
+ "./hooks": {
52
+ "types": "./dist/hooks/index.d.mts",
53
+ "default": "./dist/hooks/index.mjs"
54
+ },
55
+ "./middleware": {
56
+ "types": "./dist/middleware/index.d.mts",
57
+ "default": "./dist/middleware/index.mjs"
58
+ },
59
+ "./pipeline": {
60
+ "types": "./dist/pipeline/index.d.mts",
61
+ "default": "./dist/pipeline/index.mjs"
62
+ },
63
+ "./context": {
64
+ "types": "./dist/context/index.d.mts",
65
+ "default": "./dist/context/index.mjs"
66
+ },
67
+ "./logger": {
68
+ "types": "./dist/logger/index.d.mts",
69
+ "default": "./dist/logger/index.mjs"
70
+ },
71
+ "./registry": {
72
+ "types": "./dist/registry/index.d.mts",
73
+ "default": "./dist/registry/index.mjs"
74
+ },
75
+ "./utils": {
76
+ "types": "./dist/utils/index.d.mts",
77
+ "default": "./dist/utils/index.mjs"
78
+ },
79
+ "./cli": {
80
+ "types": "./dist/cli/index.d.mts",
81
+ "default": "./dist/cli/index.mjs"
82
+ },
83
+ "./plugins": {
84
+ "types": "./dist/plugins/index.d.mts",
85
+ "default": "./dist/plugins/index.mjs"
86
+ },
87
+ "./plugins/tracing": {
88
+ "types": "./dist/plugins/tracing-entry.d.mts",
89
+ "default": "./dist/plugins/tracing-entry.mjs"
90
+ },
91
+ "./audit": {
92
+ "types": "./dist/audit/index.d.mts",
93
+ "default": "./dist/audit/index.mjs"
94
+ },
95
+ "./docs": {
96
+ "types": "./dist/docs/index.d.mts",
97
+ "default": "./dist/docs/index.mjs"
98
+ },
99
+ "./encryption": {
100
+ "types": "./dist/encryption/index.d.mts",
101
+ "default": "./dist/encryption/index.mjs"
102
+ },
103
+ "./idempotency": {
104
+ "types": "./dist/idempotency/index.d.mts",
105
+ "default": "./dist/idempotency/index.mjs"
106
+ },
107
+ "./idempotency/redis": {
108
+ "types": "./dist/idempotency/redis.d.mts",
109
+ "default": "./dist/idempotency/redis.mjs"
110
+ },
111
+ "./events": {
112
+ "types": "./dist/events/index.d.mts",
113
+ "default": "./dist/events/index.mjs"
114
+ },
115
+ "./events/redis": {
116
+ "types": "./dist/events/transports/redis.d.mts",
117
+ "default": "./dist/events/transports/redis.mjs"
118
+ },
119
+ "./events/redis-stream": {
120
+ "types": "./dist/events/transports/redis-stream-entry.d.mts",
121
+ "default": "./dist/events/transports/redis-stream-entry.mjs"
122
+ },
123
+ "./testing": {
124
+ "types": "./dist/testing/index.d.mts",
125
+ "default": "./dist/testing/index.mjs"
126
+ },
127
+ "./testing/storage": {
128
+ "types": "./dist/testing/storageContract.d.mts",
129
+ "default": "./dist/testing/storageContract.mjs"
130
+ },
131
+ "./factory": {
132
+ "types": "./dist/factory/index.d.mts",
133
+ "default": "./dist/factory/index.mjs"
134
+ },
135
+ "./schemas": {
136
+ "types": "./dist/schemas/index.d.mts",
137
+ "default": "./dist/schemas/index.mjs"
138
+ },
139
+ "./migrations": {
140
+ "types": "./dist/migrations/index.d.mts",
141
+ "default": "./dist/migrations/index.mjs"
142
+ },
143
+ "./discovery": {
144
+ "types": "./dist/discovery/index.d.mts",
145
+ "default": "./dist/discovery/index.mjs"
146
+ },
147
+ "./integrations": {
148
+ "types": "./dist/integrations/index.d.mts",
149
+ "default": "./dist/integrations/index.mjs"
150
+ },
151
+ "./integrations/streamline": {
152
+ "types": "./dist/integrations/streamline.d.mts",
153
+ "default": "./dist/integrations/streamline.mjs"
154
+ },
155
+ "./integrations/websocket": {
156
+ "types": "./dist/integrations/websocket.d.mts",
157
+ "default": "./dist/integrations/websocket.mjs"
158
+ },
159
+ "./integrations/websocket-redis": {
160
+ "types": "./dist/integrations/websocket-redis.d.mts",
161
+ "default": "./dist/integrations/websocket-redis.mjs"
162
+ },
163
+ "./integrations/websocket-pushref-redis": {
164
+ "types": "./dist/integrations/websocket-pushref-redis.d.mts",
165
+ "default": "./dist/integrations/websocket-pushref-redis.mjs"
166
+ },
167
+ "./integrations/jobs": {
168
+ "types": "./dist/integrations/jobs/index.d.mts",
169
+ "default": "./dist/integrations/jobs/index.mjs"
170
+ },
171
+ "./integrations/event-gateway": {
172
+ "types": "./dist/integrations/event-gateway.d.mts",
173
+ "default": "./dist/integrations/event-gateway.mjs"
174
+ },
175
+ "./integrations/webhooks": {
176
+ "types": "./dist/integrations/webhooks.d.mts",
177
+ "default": "./dist/integrations/webhooks.mjs"
178
+ },
179
+ "./auth/redis": {
180
+ "types": "./dist/auth/redis-session.d.mts",
181
+ "default": "./dist/auth/redis-session.mjs"
182
+ },
183
+ "./plugins/response-cache": {
184
+ "types": "./dist/plugins/response-cache.d.mts",
185
+ "default": "./dist/plugins/response-cache.mjs"
186
+ },
187
+ "./scope": {
188
+ "types": "./dist/scope/index.d.mts",
189
+ "default": "./dist/scope/index.mjs"
190
+ },
191
+ "./mcp": {
192
+ "types": "./dist/integrations/mcp/index.d.mts",
193
+ "default": "./dist/integrations/mcp/index.mjs"
194
+ },
195
+ "./mcp/testing": {
196
+ "types": "./dist/integrations/mcp/testing.d.mts",
197
+ "default": "./dist/integrations/mcp/testing.mjs"
198
+ },
199
+ "./scim": {
200
+ "types": "./dist/scim/index.d.mts",
201
+ "default": "./dist/scim/index.mjs"
202
+ },
203
+ "./auth/audit": {
204
+ "types": "./dist/auth/audit.d.mts",
205
+ "default": "./dist/auth/audit.mjs"
206
+ },
207
+ "./sync": {
208
+ "types": "./dist/sync/changelog.d.mts",
209
+ "default": "./dist/sync/changelog.mjs"
210
+ },
211
+ "./usage": {
212
+ "types": "./dist/usage/index.d.mts",
213
+ "default": "./dist/usage/index.mjs"
214
+ }
215
+ },
216
+ "main": "./dist/index.mjs",
217
+ "types": "./dist/index.d.mts",
218
+ "bin": {
219
+ "arc": "./bin/arc.js"
220
+ },
221
+ "publishConfig": {
222
+ "access": "public"
223
+ },
224
+ "sideEffects": false,
225
+ "arc": {
226
+ "subpathStability": {
227
+ ".": "stable",
228
+ "./permissions": "stable",
229
+ "./cache": "stable",
230
+ "./types": "stable",
231
+ "./types/storage": "stable",
232
+ "./core": "stable",
233
+ "./presets": "stable",
234
+ "./presets/tenant": "stable",
235
+ "./presets/files-upload": "stable",
236
+ "./presets/search": "stable",
237
+ "./auth": "stable",
238
+ "./hooks": "stable",
239
+ "./middleware": "stable",
240
+ "./pipeline": "stable",
241
+ "./context": "stable",
242
+ "./logger": "stable",
243
+ "./registry": "stable",
244
+ "./utils": "stable",
245
+ "./cli": "stable",
246
+ "./plugins": "stable",
247
+ "./plugins/tracing": "stable",
248
+ "./audit": "stable",
249
+ "./docs": "stable",
250
+ "./encryption": "stable",
251
+ "./idempotency": "stable",
252
+ "./idempotency/redis": "stable",
253
+ "./events": "stable",
254
+ "./events/redis": "stable",
255
+ "./events/redis-stream": "stable",
256
+ "./testing": "stable",
257
+ "./testing/storage": "stable",
258
+ "./factory": "stable",
259
+ "./schemas": "stable",
260
+ "./migrations": "stable",
261
+ "./discovery": "stable",
262
+ "./integrations": "stable",
263
+ "./integrations/streamline": "stable",
264
+ "./integrations/websocket": "stable",
265
+ "./integrations/websocket-redis": "stable",
266
+ "./integrations/websocket-pushref-redis": "stable",
267
+ "./integrations/jobs": "stable",
268
+ "./integrations/event-gateway": "experimental",
269
+ "./integrations/webhooks": "stable",
270
+ "./auth/redis": "stable",
271
+ "./plugins/response-cache": "stable",
272
+ "./scope": "stable",
273
+ "./mcp": "stable",
274
+ "./mcp/testing": "stable",
275
+ "./scim": "stable",
276
+ "./auth/audit": "stable",
277
+ "./sync": "experimental",
278
+ "./usage": "experimental"
279
+ }
280
+ },
281
+ "files": [
282
+ "dist",
283
+ "bin",
284
+ "skills",
285
+ "llms.txt"
286
+ ],
287
+ "scripts": {
288
+ "build": "tsdown",
289
+ "dev": "tsdown --watch",
290
+ "typecheck": "npm run typecheck:src && npm run typecheck:types && npm run check:type-lane",
291
+ "typecheck:src": "tsc --noEmit",
292
+ "check:type-lane": "node scripts/check-type-lane.mjs",
293
+ "lint": "biome check src/",
294
+ "lint:fix": "biome check --fix src/",
295
+ "lint:all": "biome check src/ tests/",
296
+ "test": "vitest run",
297
+ "test:main": "vitest run",
298
+ "test:main:serial": "vitest run --no-file-parallelism",
299
+ "test:perf": "node --expose-gc ./node_modules/vitest/vitest.mjs run --config vitest.perf.config.ts --no-file-parallelism",
300
+ "test:ci": "npm run test:main && npm run test:perf",
301
+ "test:watch": "vitest",
302
+ "test:ui": "vitest --ui",
303
+ "typecheck:types": "tsc -p tsconfig.types.json",
304
+ "api:surface": "node scripts/check-api-surface.mjs --update",
305
+ "check:api-surface": "node scripts/check-api-surface.mjs",
306
+ "check:package": "publint && attw --pack . --profile esm-only",
307
+ "test:coverage": "vitest run --coverage",
308
+ "test:fast": "vitest run tests/core tests/hooks tests/utils tests/plugins tests/cache tests/events",
309
+ "test:contract": "vitest run tests/contract tests/adapters tests/types",
310
+ "test:integration": "vitest run tests/integrations tests/factory tests/auth",
311
+ "test:e2e": "vitest run tests/e2e tests/scenarios tests/smoke",
312
+ "test:changed": "vitest run --changed",
313
+ "test:reliability": "vitest run tests/cache tests/events tests/migrations tests/plugins/schedules.test.ts tests/plugins/health.test.ts tests/utils/circuit-breaker.test.ts tests/utils/compensation-hooks.test.ts tests/integrations/jobs-timeout.test.ts",
314
+ "test:smoke:ws": "vitest run tests/integrations/websocket/smoke.test.ts",
315
+ "test:smoke:redis": "node scripts/smoke-ws-redis.mjs",
316
+ "smoke": "node scripts/smoke-test.mjs",
317
+ "smoke:consumer": "node scripts/smoke-test.mjs --consumer",
318
+ "push": "classytic-push",
319
+ "release:tag": "node -e \"require('child_process').execSync('npm run push -- v'+require('./package.json').version,{stdio:'inherit'})\"",
320
+ "release": "npm run push -- main && npm run release:tag && npm publish",
321
+ "check:peer-skew": "node scripts/check-peer-skew.mjs",
322
+ "check:docs-drift": "node scripts/check-docs-drift.mjs",
323
+ "check:boundaries": "node scripts/check-boundaries.mjs",
324
+ "prepublishOnly": "npm run check:peer-skew && npm run check:docs-drift && npm run check:boundaries && npm run typecheck && npm run lint && npm run build && npm run check:api-surface && npm run check:package && npm run test:ci && npm run smoke:consumer"
325
+ },
326
+ "engines": {
327
+ "node": ">=22"
328
+ },
329
+ "peerDependencies": {
330
+ "@classytic/primitives": ">=0.14.0",
331
+ "@classytic/repo-core": ">=0.14.0",
332
+ "@classytic/streamline": ">=2.8.0",
333
+ "@fastify/cors": ">=11.0.0",
334
+ "@fastify/helmet": ">=13.0.0",
335
+ "@fastify/jwt": ">=10.0.0",
336
+ "@fastify/multipart": ">=9.0.0",
337
+ "@fastify/rate-limit": ">=10.0.0",
338
+ "@fastify/sensible": ">=6.0.0",
339
+ "@fastify/type-provider-typebox": ">=6.0.0",
340
+ "@fastify/under-pressure": ">=9.0.0",
341
+ "@fastify/websocket": ">=11.0.0",
342
+ "@modelcontextprotocol/sdk": ">=1.28.0",
343
+ "@opentelemetry/api": ">=1.9.0",
344
+ "@opentelemetry/auto-instrumentations-node": ">=0.40.0",
345
+ "@opentelemetry/exporter-trace-otlp-http": ">=0.50.0",
346
+ "@opentelemetry/instrumentation-http": ">=0.50.0",
347
+ "@opentelemetry/instrumentation-mongodb": ">=0.40.0",
348
+ "@opentelemetry/sdk-node": ">=0.50.0",
349
+ "better-auth": ">=1.6.2",
350
+ "bullmq": ">=5.0.0",
351
+ "fastify": "^5.8.5",
352
+ "fastify-raw-body": ">=5.0.0",
353
+ "h3-js": ">=4.0.0",
354
+ "ioredis": ">=5.0.0",
355
+ "jose": ">=5.0.0",
356
+ "pino-pretty": ">=13.0.0",
357
+ "typebox": ">=1.0.0",
358
+ "zod": ">=4.0.0"
359
+ },
360
+ "peerDependenciesMeta": {
361
+ "better-auth": {
362
+ "optional": true
363
+ },
364
+ "@fastify/cors": {
365
+ "optional": true
366
+ },
367
+ "@fastify/helmet": {
368
+ "optional": true
369
+ },
370
+ "@fastify/jwt": {
371
+ "optional": true
372
+ },
373
+ "@fastify/rate-limit": {
374
+ "optional": true
375
+ },
376
+ "@fastify/sensible": {
377
+ "optional": true
378
+ },
379
+ "@fastify/under-pressure": {
380
+ "optional": true
381
+ },
382
+ "@fastify/multipart": {
383
+ "optional": true
384
+ },
385
+ "@fastify/websocket": {
386
+ "optional": true
387
+ },
388
+ "fastify-raw-body": {
389
+ "optional": true
390
+ },
391
+ "h3-js": {
392
+ "optional": true
393
+ },
394
+ "pino-pretty": {
395
+ "optional": true
396
+ },
397
+ "@opentelemetry/api": {
398
+ "optional": true
399
+ },
400
+ "@opentelemetry/sdk-node": {
401
+ "optional": true
402
+ },
403
+ "@opentelemetry/exporter-trace-otlp-http": {
404
+ "optional": true
405
+ },
406
+ "@opentelemetry/instrumentation-http": {
407
+ "optional": true
408
+ },
409
+ "@opentelemetry/instrumentation-mongodb": {
410
+ "optional": true
411
+ },
412
+ "@opentelemetry/auto-instrumentations-node": {
413
+ "optional": true
414
+ },
415
+ "ioredis": {
416
+ "optional": true
417
+ },
418
+ "jose": {
419
+ "optional": true
420
+ },
421
+ "typebox": {
422
+ "optional": true
423
+ },
424
+ "@fastify/type-provider-typebox": {
425
+ "optional": true
426
+ },
427
+ "bullmq": {
428
+ "optional": true
429
+ },
430
+ "@classytic/streamline": {
431
+ "optional": true
432
+ },
433
+ "zod": {
434
+ "optional": true
435
+ },
436
+ "@modelcontextprotocol/sdk": {
437
+ "optional": true
438
+ }
439
+ },
440
+ "dependencies": {
441
+ "fastify-plugin": "^6.0.0",
442
+ "qs": "^6.15.2",
443
+ "secure-json-parse": "^4.1.0"
444
+ },
445
+ "devDependencies": {
446
+ "@arethetypeswrong/cli": "^0.18.5",
447
+ "@better-auth/drizzle-adapter": "^1.6.19",
448
+ "@better-auth/mongo-adapter": "^1.6.19",
449
+ "@biomejs/biome": "^2.5.0",
450
+ "@classytic/dev-tools": "^0.2.0",
451
+ "@classytic/gitkit": ">=0.1.0",
452
+ "@classytic/mongokit": "^3.25.0",
453
+ "@classytic/pgkit": "^0.1.0",
454
+ "@classytic/primitives": "^0.14.0",
455
+ "@classytic/repo-core": "^0.14.0",
456
+ "@classytic/sqlitekit": "^0.6.0",
457
+ "@classytic/streamline": "^2.8.2",
458
+ "@electric-sql/pglite": "^0.5.4",
459
+ "@fastify/cors": "^11.2.0",
460
+ "@fastify/helmet": "^13.0.2",
461
+ "@fastify/jwt": "^10.1.0",
462
+ "@fastify/multipart": "^10.0.0",
463
+ "@fastify/rate-limit": "^11.0.0",
464
+ "@fastify/sensible": "^6.0.4",
465
+ "@fastify/type-provider-typebox": "^6.1.0",
466
+ "@fastify/under-pressure": "^9.0.3",
467
+ "@fastify/websocket": "^11.2.0",
468
+ "@modelcontextprotocol/sdk": "^1.29.0",
469
+ "@opentelemetry/api": "^1.9.1",
470
+ "@types/node": "^22.19.21",
471
+ "@types/qs": "^6.15.1",
472
+ "@vitest/coverage-v8": "^4.1.9",
473
+ "ajv": "^8.20.0",
474
+ "better-auth": "^1.6.19",
475
+ "better-sqlite3": "^12.11.1",
476
+ "bullmq": "^5.79.0",
477
+ "dotenv": "^17.4.2",
478
+ "drizzle-orm": "^0.45.2",
479
+ "fast-check": "^4.8.0",
480
+ "fastify": "^5.10.0",
481
+ "fastify-raw-body": "^5.0.0",
482
+ "h3-js": "^4.4.0",
483
+ "ioredis": "^5.11.1",
484
+ "jose": "^6.2.3",
485
+ "jsonwebtoken": "^9.0.3",
486
+ "knip": "^6.17.1",
487
+ "mongodb": "^7.3.0",
488
+ "mongodb-memory-server": "^11.2.0",
489
+ "mongoose": "^9.7.1",
490
+ "publint": "^0.3.21",
491
+ "tsdown": "^0.22.5",
492
+ "typebox": "^1.3.6",
493
+ "typescript": "^7.0.2",
494
+ "vitest": "^4.1.9",
495
+ "ws": "^8.21.0",
496
+ "zod": "^4.4.3"
497
+ },
498
+ "config": {
499
+ "mongodbMemoryServer": {
500
+ "disablePostinstall": "1"
501
+ }
502
+ },
503
+ "keywords": [
504
+ "fastify",
505
+ "mongodb",
506
+ "mongoose",
507
+ "crud",
508
+ "rest",
509
+ "api",
510
+ "framework",
511
+ "resource",
512
+ "multi-tenant",
513
+ "typescript",
514
+ "tree-shakable",
515
+ "serverless",
516
+ "websocket",
517
+ "jobs",
518
+ "workflow"
519
+ ],
520
+ "author": "Classytic",
521
+ "license": "MIT",
522
+ "repository": {
523
+ "type": "git",
524
+ "url": "git+https://github.com/classytic/arc.git"
525
+ }
526
+ }