@classytic/arc 2.21.0 → 2.23.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 (115) hide show
  1. package/dist/{BaseController-BnLYgE9A.mjs → BaseController-BQ8KNvWC.mjs} +3 -2
  2. package/dist/{ResourceRegistry-7RnrEWNP.mjs → ResourceRegistry-y9Hnypus.mjs} +1 -0
  3. package/dist/{actionPermissions-ze70xXJi.mjs → actionPermissions-lszoJle1.mjs} +1 -1
  4. package/dist/applyPermissionResult-Tw4iXtlf.mjs +264 -0
  5. package/dist/audit/index.d.mts +2 -2
  6. package/dist/auth/index.d.mts +30 -2
  7. package/dist/auth/index.mjs +6 -3
  8. package/dist/cli/commands/describe.d.mts +1 -1
  9. package/dist/cli/commands/describe.mjs +1 -1
  10. package/dist/cli/commands/docs.mjs +2 -2
  11. package/dist/cli/commands/init.mjs +1 -1
  12. package/dist/cli/commands/introspect.mjs +1 -1
  13. package/dist/cli/index.mjs +1 -1
  14. package/dist/core/index.d.mts +2 -2
  15. package/dist/core/index.mjs +3 -3
  16. package/dist/{core-DZ6Xe1jR.mjs → core-DQ6rDTyH.mjs} +126 -68
  17. package/dist/{createActionRouter-BWMDW-dL.mjs → createActionRouter-BuOv-m4Y.mjs} +10 -6
  18. package/dist/{createAggregationRouter-l5mNdYrZ.mjs → createAggregationRouter-CgJv_BU_.mjs} +3 -3
  19. package/dist/{createApp-Bi61XxqU.mjs → createApp-CjOeWJ9_.mjs} +252 -57
  20. package/dist/docs/index.d.mts +1 -1
  21. package/dist/docs/index.mjs +1 -1
  22. package/dist/encryption/index.mjs +9 -5
  23. package/dist/{errorHandler-Dxf6P_kV.mjs → errorHandler-Bq2OeEQL.mjs} +34 -10
  24. package/dist/{errorHandler-B0e-bq-O.d.mts → errorHandler-C6yv4ZTW.d.mts} +13 -0
  25. package/dist/events/index.mjs +5 -2
  26. package/dist/factory/index.d.mts +46 -9
  27. package/dist/factory/index.mjs +64 -13
  28. package/dist/{fastify-augmentation-DafigGQp.d.mts → fastify-augmentation-g_f9omSc.d.mts} +2 -2
  29. package/dist/fields-D3lhgzhD.d.mts +121 -0
  30. package/dist/health-ScyjIVo5.mjs +202 -0
  31. package/dist/hooks/index.d.mts +1 -1
  32. package/dist/idempotency/index.d.mts +7 -0
  33. package/dist/idempotency/index.mjs +7 -17
  34. package/dist/{index-Dtrj6XZk.d.mts → index-BBsvQt7U.d.mts} +1310 -1226
  35. package/dist/{types-DpxoNX5v.d.mts → index-Ba10fdKp.d.mts} +196 -66
  36. package/dist/{index-B5N-NaHs.d.mts → index-CC5ruDGh.d.mts} +3 -3
  37. package/dist/{index-B5PoNbfu.d.mts → index-wMoWBLkn.d.mts} +68 -2
  38. package/dist/index.d.mts +6 -5
  39. package/dist/index.mjs +6 -5
  40. package/dist/{init-0YhHkXGk.mjs → init-CjO4p_q1.mjs} +123 -4
  41. package/dist/integrations/event-gateway.mjs +1 -1
  42. package/dist/integrations/index.d.mts +1 -1
  43. package/dist/integrations/mcp/index.d.mts +67 -4
  44. package/dist/integrations/mcp/index.mjs +1 -1
  45. package/dist/integrations/mcp/testing.d.mts +1 -1
  46. package/dist/integrations/mcp/testing.mjs +1 -1
  47. package/dist/integrations/webhooks.d.mts +131 -7
  48. package/dist/integrations/webhooks.mjs +169 -10
  49. package/dist/interface-n5hpKg1d.mjs +16 -0
  50. package/dist/jsonBody-BlzAoGCe.mjs +43 -0
  51. package/dist/{loadResourcesFromEntry-OMCvIEE7.mjs → loadResourcesFromEntry-kvGT6EcO.mjs} +1 -1
  52. package/dist/logger/index.d.mts +26 -1
  53. package/dist/logger/index.mjs +39 -1
  54. package/dist/{mcpPlugin-B9XjjNVG.mjs → mcpPlugin-BtzIL_kM.mjs} +312 -39
  55. package/dist/middleware/index.d.mts +1 -1
  56. package/dist/{module-WeuU5jfd.d.mts → module-B4u10iOJ.d.mts} +26 -1
  57. package/dist/{openapi-Kyod_di6.mjs → openapi-jSDx-VDv.mjs} +3 -3
  58. package/dist/permissions/index.d.mts +4 -3
  59. package/dist/permissions/index.mjs +3 -2
  60. package/dist/{permissions-BJMuKMl7.mjs → permissions-tbxFHxjZ.mjs} +77 -264
  61. package/dist/pipeline/index.d.mts +1 -1
  62. package/dist/plugins/index.d.mts +24 -7
  63. package/dist/plugins/index.mjs +14 -282
  64. package/dist/plugins/response-cache.mjs +1 -0
  65. package/dist/plugins/tracing-entry.mjs +7 -4
  66. package/dist/presets/filesUpload.d.mts +2 -2
  67. package/dist/presets/filesUpload.mjs +1 -1
  68. package/dist/presets/index.d.mts +1 -1
  69. package/dist/presets/index.mjs +1 -1
  70. package/dist/presets/multiTenant.d.mts +1 -1
  71. package/dist/presets/search.d.mts +2 -2
  72. package/dist/presets/search.mjs +1 -1
  73. package/dist/{presets-gw0ciIUD.mjs → presets-BOe4Ugkl.mjs} +1 -1
  74. package/dist/rateLimitKey-BoWRH3e7.mjs +14 -0
  75. package/dist/realtime-I8OrfnMR.mjs +375 -0
  76. package/dist/{registerRoute-oGAl0oA8.mjs → registerRoute-CWO6mdYe.mjs} +38 -18
  77. package/dist/registry/index.d.mts +2 -2
  78. package/dist/registry/index.mjs +1 -1
  79. package/dist/requestId-5BhTVzBv.mjs +113 -0
  80. package/dist/schemaConverter-DJvodiHj.mjs +171 -0
  81. package/dist/{schemaIR-ajetw3Fv.mjs → schemaIR-Ca7ySNPx.mjs} +2 -2
  82. package/dist/scim/index.mjs +6 -7
  83. package/dist/scope/index.mjs +2 -76
  84. package/dist/scope-LONQ3mfZ.mjs +37 -0
  85. package/dist/simpleEqualityMatcher-Cg05HPsn.mjs +68 -0
  86. package/dist/{sse-CfUjwjDk.mjs → sse-0u4P4-OI.mjs} +7 -30
  87. package/dist/sseStream-BQ7Qaynp.mjs +57 -0
  88. package/dist/testing/index.d.mts +83 -3
  89. package/dist/testing/index.mjs +70 -3
  90. package/dist/types/index.d.mts +2 -2
  91. package/dist/{types-DRj-Ut4n.d.mts → types-5OuqeTDX.d.mts} +37 -2
  92. package/dist/{fields-BGqrAa_u.d.mts → types-Csxga7d3.d.mts} +1 -121
  93. package/dist/usage/index.d.mts +142 -0
  94. package/dist/usage/index.mjs +0 -0
  95. package/dist/utils/index.d.mts +101 -19
  96. package/dist/utils/index.mjs +5 -3
  97. package/dist/{utils-CO8a3B_1.mjs → utils-CZyeRXTh.mjs} +80 -82
  98. package/dist/{versioning-DQ4mCvg0.d.mts → versioning-D6PvCwpq.d.mts} +43 -9
  99. package/llms.txt +39 -0
  100. package/package.json +513 -447
  101. package/skills/arc/SKILL.md +14 -8
  102. package/skills/arc/references/api-reference.md +34 -0
  103. package/skills/arc/references/auth.md +21 -4
  104. package/skills/arc/references/mcp.md +1 -1
  105. package/skills/arc/references/production.md +734 -654
  106. package/skills/arc-code-review/SKILL.md +1 -1
  107. package/skills/arc-code-review/references/anti-patterns.md +71 -18
  108. package/skills/arc-code-review/references/arc-cheatsheet.md +15 -2
  109. package/skills/arc-code-review/references/migration-recipes.md +7 -7
  110. package/skills/arc-code-review/references/mongokit-migration.md +4 -3
  111. package/skills/arc-module-publishing/SKILL.md +2 -1
  112. package/skills/arc-module-publishing/references/authoring-modules.md +55 -0
  113. package/skills/arc-module-publishing/references/package-manifest.md +4 -2
  114. package/dist/preloadResources-CHw3_oA_.mjs +0 -45
  115. package/dist/schemaConverter-U0MnO9vd.mjs +0 -110
package/package.json CHANGED
@@ -1,447 +1,513 @@
1
- {
2
- "name": "@classytic/arc",
3
- "version": "2.21.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
- },
212
- "main": "./dist/index.mjs",
213
- "types": "./dist/index.d.mts",
214
- "bin": {
215
- "arc": "./bin/arc.js"
216
- },
217
- "publishConfig": {
218
- "access": "public"
219
- },
220
- "sideEffects": false,
221
- "files": [
222
- "dist",
223
- "bin",
224
- "skills"
225
- ],
226
- "scripts": {
227
- "build": "tsdown",
228
- "dev": "tsdown --watch",
229
- "typecheck": "tsc --noEmit",
230
- "lint": "biome check src/",
231
- "lint:fix": "biome check --fix src/",
232
- "lint:all": "biome check src/ tests/",
233
- "test": "vitest run",
234
- "test:main": "vitest run",
235
- "test:main:serial": "vitest run --no-file-parallelism",
236
- "test:perf": "node --expose-gc ./node_modules/vitest/vitest.mjs run --config vitest.perf.config.ts --no-file-parallelism",
237
- "test:ci": "npm run test:main && npm run test:perf",
238
- "test:watch": "vitest",
239
- "test:ui": "vitest --ui",
240
- "test:coverage": "vitest run --coverage",
241
- "test:e2e": "vitest run tests/e2e",
242
- "test:unit": "vitest run tests/core tests/hooks tests/utils tests/plugins",
243
- "test:smoke:ws": "vitest run tests/integrations/websocket/smoke.test.ts",
244
- "test:smoke:redis": "node scripts/smoke-ws-redis.mjs",
245
- "smoke": "node scripts/smoke-test.mjs",
246
- "push": "classytic-push",
247
- "release:tag": "node -e \"require('child_process').execSync('npm run push -- v'+require('./package.json').version,{stdio:'inherit'})\"",
248
- "release": "npm run push -- main && npm run release:tag && npm publish",
249
- "check:peer-skew": "node scripts/check-peer-skew.mjs",
250
- "prepublishOnly": "npm run check:peer-skew && npm run typecheck && npm run lint && npm run build && npm run test:ci && npm run smoke"
251
- },
252
- "engines": {
253
- "node": ">=22"
254
- },
255
- "peerDependencies": {
256
- "@classytic/primitives": ">=0.9.0",
257
- "@classytic/repo-core": ">=0.7.0",
258
- "@classytic/streamline": ">=2.7.0",
259
- "@fastify/cors": ">=11.0.0",
260
- "@fastify/helmet": ">=13.0.0",
261
- "@fastify/jwt": ">=10.0.0",
262
- "@fastify/multipart": ">=9.0.0",
263
- "@fastify/rate-limit": ">=10.0.0",
264
- "@fastify/sensible": ">=6.0.0",
265
- "@fastify/type-provider-typebox": ">=6.0.0",
266
- "@fastify/under-pressure": ">=9.0.0",
267
- "@fastify/websocket": ">=11.0.0",
268
- "@modelcontextprotocol/sdk": ">=1.28.0",
269
- "@opentelemetry/api": ">=1.9.0",
270
- "@opentelemetry/auto-instrumentations-node": ">=0.40.0",
271
- "@opentelemetry/exporter-trace-otlp-http": ">=0.50.0",
272
- "@opentelemetry/instrumentation-http": ">=0.50.0",
273
- "@opentelemetry/instrumentation-mongodb": ">=0.40.0",
274
- "@opentelemetry/sdk-node": ">=0.50.0",
275
- "@sinclair/typebox": ">=0.34.0",
276
- "better-auth": ">=1.6.2",
277
- "bullmq": ">=5.0.0",
278
- "fastify": "^5.8.5",
279
- "fastify-raw-body": ">=5.0.0",
280
- "h3-js": ">=4.0.0",
281
- "ioredis": ">=5.0.0",
282
- "jose": ">=5.0.0",
283
- "pino-pretty": ">=13.0.0",
284
- "zod": ">=4.0.0"
285
- },
286
- "peerDependenciesMeta": {
287
- "better-auth": {
288
- "optional": true
289
- },
290
- "@fastify/cors": {
291
- "optional": true
292
- },
293
- "@fastify/helmet": {
294
- "optional": true
295
- },
296
- "@fastify/jwt": {
297
- "optional": true
298
- },
299
- "@fastify/rate-limit": {
300
- "optional": true
301
- },
302
- "@fastify/sensible": {
303
- "optional": true
304
- },
305
- "@fastify/under-pressure": {
306
- "optional": true
307
- },
308
- "@fastify/multipart": {
309
- "optional": true
310
- },
311
- "@fastify/websocket": {
312
- "optional": true
313
- },
314
- "fastify-raw-body": {
315
- "optional": true
316
- },
317
- "h3-js": {
318
- "optional": true
319
- },
320
- "pino-pretty": {
321
- "optional": true
322
- },
323
- "@opentelemetry/api": {
324
- "optional": true
325
- },
326
- "@opentelemetry/sdk-node": {
327
- "optional": true
328
- },
329
- "@opentelemetry/exporter-trace-otlp-http": {
330
- "optional": true
331
- },
332
- "@opentelemetry/instrumentation-http": {
333
- "optional": true
334
- },
335
- "@opentelemetry/instrumentation-mongodb": {
336
- "optional": true
337
- },
338
- "@opentelemetry/auto-instrumentations-node": {
339
- "optional": true
340
- },
341
- "ioredis": {
342
- "optional": true
343
- },
344
- "jose": {
345
- "optional": true
346
- },
347
- "@sinclair/typebox": {
348
- "optional": true
349
- },
350
- "@fastify/type-provider-typebox": {
351
- "optional": true
352
- },
353
- "bullmq": {
354
- "optional": true
355
- },
356
- "@classytic/streamline": {
357
- "optional": true
358
- },
359
- "zod": {
360
- "optional": true
361
- },
362
- "@modelcontextprotocol/sdk": {
363
- "optional": true
364
- }
365
- },
366
- "dependencies": {
367
- "fastify-plugin": "^6.0.0",
368
- "qs": "^6.15.2",
369
- "secure-json-parse": "^4.1.0"
370
- },
371
- "devDependencies": {
372
- "@better-auth/drizzle-adapter": "^1.6.19",
373
- "@better-auth/mongo-adapter": "^1.6.19",
374
- "@biomejs/biome": "^2.5.0",
375
- "@classytic/dev-tools": "^0.2.0",
376
- "@classytic/mongokit": "^3.21.0",
377
- "@classytic/primitives": "^0.9.1",
378
- "@classytic/repo-core": "^0.9.0",
379
- "@classytic/sqlitekit": "^0.6.0",
380
- "@classytic/streamline": "^2.7.0",
381
- "@fastify/cors": "^11.2.0",
382
- "@fastify/helmet": "^13.0.2",
383
- "@fastify/jwt": "^10.1.0",
384
- "@fastify/multipart": "^10.0.0",
385
- "@fastify/rate-limit": "^11.0.0",
386
- "@fastify/sensible": "^6.0.4",
387
- "@fastify/type-provider-typebox": "^6.1.0",
388
- "@fastify/under-pressure": "^9.0.3",
389
- "@fastify/websocket": "^11.2.0",
390
- "@modelcontextprotocol/sdk": "^1.29.0",
391
- "@opentelemetry/api": "^1.9.1",
392
- "@sinclair/typebox": "^0.34.49",
393
- "@types/node": "^22.19.21",
394
- "@types/qs": "^6.15.1",
395
- "@vitest/coverage-v8": "^4.1.9",
396
- "ajv": "^8.20.0",
397
- "better-auth": "^1.6.19",
398
- "better-sqlite3": "^12.11.1",
399
- "bullmq": "^5.79.0",
400
- "dotenv": "^17.4.2",
401
- "drizzle-orm": "^0.45.2",
402
- "fast-check": "^4.8.0",
403
- "fastify": "^5.8.5",
404
- "fastify-raw-body": "^5.0.0",
405
- "h3-js": "^4.4.0",
406
- "ioredis": "^5.11.1",
407
- "jose": "^6.2.3",
408
- "jsonwebtoken": "^9.0.3",
409
- "knip": "^6.17.1",
410
- "mongodb": "^7.3.0",
411
- "mongodb-memory-server": "^11.2.0",
412
- "mongoose": "^9.7.1",
413
- "tsdown": "^0.22.5",
414
- "typescript": "^7.0.2",
415
- "vitest": "^4.1.9",
416
- "ws": "^8.21.0",
417
- "zod": "^4.4.3"
418
- },
419
- "config": {
420
- "mongodbMemoryServer": {
421
- "disablePostinstall": "1"
422
- }
423
- },
424
- "keywords": [
425
- "fastify",
426
- "mongodb",
427
- "mongoose",
428
- "crud",
429
- "rest",
430
- "api",
431
- "framework",
432
- "resource",
433
- "multi-tenant",
434
- "typescript",
435
- "tree-shakable",
436
- "serverless",
437
- "websocket",
438
- "jobs",
439
- "workflow"
440
- ],
441
- "author": "Classytic",
442
- "license": "MIT",
443
- "repository": {
444
- "type": "git",
445
- "url": "https://github.com/classytic/arc.git"
446
- }
447
- }
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
+ }