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