@classytic/arc 1.1.0 → 2.1.3

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 (200) hide show
  1. package/README.md +247 -794
  2. package/bin/arc.js +91 -52
  3. package/dist/EventTransport-BkUDYZEb.d.mts +99 -0
  4. package/dist/HookSystem-BsGV-j2l.mjs +404 -0
  5. package/dist/ResourceRegistry-7Ic20ZMw.mjs +249 -0
  6. package/dist/adapters/index.d.mts +5 -0
  7. package/dist/adapters/index.mjs +3 -0
  8. package/dist/audit/index.d.mts +81 -0
  9. package/dist/audit/index.mjs +275 -0
  10. package/dist/audit/mongodb.d.mts +5 -0
  11. package/dist/audit/mongodb.mjs +3 -0
  12. package/dist/audited-CGdLiSlE.mjs +140 -0
  13. package/dist/auth/index.d.mts +188 -0
  14. package/dist/auth/index.mjs +1096 -0
  15. package/dist/auth/redis-session.d.mts +43 -0
  16. package/dist/auth/redis-session.mjs +75 -0
  17. package/dist/betterAuthOpenApi-DjWDddNc.mjs +249 -0
  18. package/dist/cache/index.d.mts +145 -0
  19. package/dist/cache/index.mjs +91 -0
  20. package/dist/caching-GSDJcA6-.mjs +93 -0
  21. package/dist/chunk-C7Uep-_p.mjs +20 -0
  22. package/dist/circuitBreaker-DYhWBW_D.mjs +1096 -0
  23. package/dist/cli/commands/describe.d.mts +18 -0
  24. package/dist/cli/commands/describe.mjs +238 -0
  25. package/dist/cli/commands/docs.d.mts +13 -0
  26. package/dist/cli/commands/docs.mjs +52 -0
  27. package/dist/cli/commands/{generate.d.ts → generate.d.mts} +3 -2
  28. package/dist/cli/commands/generate.mjs +357 -0
  29. package/dist/cli/commands/{init.d.ts → init.d.mts} +11 -8
  30. package/dist/cli/commands/{init.js → init.mjs} +807 -617
  31. package/dist/cli/commands/introspect.d.mts +10 -0
  32. package/dist/cli/commands/introspect.mjs +75 -0
  33. package/dist/cli/index.d.mts +16 -0
  34. package/dist/cli/index.mjs +156 -0
  35. package/dist/constants-DdXFXQtN.mjs +84 -0
  36. package/dist/core/index.d.mts +5 -0
  37. package/dist/core/index.mjs +4 -0
  38. package/dist/createApp-D2D5XXaV.mjs +559 -0
  39. package/dist/defineResource-PXzSJ15_.mjs +2197 -0
  40. package/dist/discovery/index.d.mts +46 -0
  41. package/dist/discovery/index.mjs +109 -0
  42. package/dist/docs/index.d.mts +162 -0
  43. package/dist/docs/index.mjs +74 -0
  44. package/dist/elevation-DGo5shaX.d.mts +87 -0
  45. package/dist/elevation-DSTbVvYj.mjs +113 -0
  46. package/dist/errorHandler-C3GY3_ow.mjs +108 -0
  47. package/dist/errorHandler-CW3OOeYq.d.mts +72 -0
  48. package/dist/errors-DAWRdiYP.d.mts +124 -0
  49. package/dist/errors-DBANPbGr.mjs +211 -0
  50. package/dist/eventPlugin-BEOvaDqo.mjs +229 -0
  51. package/dist/eventPlugin-H6wDDjGO.d.mts +124 -0
  52. package/dist/events/index.d.mts +53 -0
  53. package/dist/events/index.mjs +51 -0
  54. package/dist/events/transports/redis-stream-entry.d.mts +2 -0
  55. package/dist/events/transports/redis-stream-entry.mjs +177 -0
  56. package/dist/events/transports/redis.d.mts +76 -0
  57. package/dist/events/transports/redis.mjs +124 -0
  58. package/dist/externalPaths-SyPF2tgK.d.mts +50 -0
  59. package/dist/factory/index.d.mts +63 -0
  60. package/dist/factory/index.mjs +3 -0
  61. package/dist/fastifyAdapter-C8DlE0YH.d.mts +216 -0
  62. package/dist/fields-Bi_AVKSo.d.mts +109 -0
  63. package/dist/fields-CTd_CrKr.mjs +114 -0
  64. package/dist/hooks/index.d.mts +4 -0
  65. package/dist/hooks/index.mjs +3 -0
  66. package/dist/idempotency/index.d.mts +96 -0
  67. package/dist/idempotency/index.mjs +319 -0
  68. package/dist/idempotency/mongodb.d.mts +2 -0
  69. package/dist/idempotency/mongodb.mjs +114 -0
  70. package/dist/idempotency/redis.d.mts +2 -0
  71. package/dist/idempotency/redis.mjs +103 -0
  72. package/dist/index.d.mts +260 -0
  73. package/dist/index.mjs +104 -0
  74. package/dist/integrations/event-gateway.d.mts +46 -0
  75. package/dist/integrations/event-gateway.mjs +43 -0
  76. package/dist/integrations/index.d.mts +5 -0
  77. package/dist/integrations/index.mjs +1 -0
  78. package/dist/integrations/jobs.d.mts +103 -0
  79. package/dist/integrations/jobs.mjs +123 -0
  80. package/dist/integrations/streamline.d.mts +60 -0
  81. package/dist/integrations/streamline.mjs +125 -0
  82. package/dist/integrations/websocket.d.mts +82 -0
  83. package/dist/integrations/websocket.mjs +288 -0
  84. package/dist/interface-CSNjltAc.d.mts +77 -0
  85. package/dist/interface-DTbsvIWe.d.mts +54 -0
  86. package/dist/interface-e9XfSsUV.d.mts +1097 -0
  87. package/dist/introspectionPlugin-B3JkrjwU.mjs +53 -0
  88. package/dist/keys-DhqDRxv3.mjs +42 -0
  89. package/dist/logger-ByrvQWZO.mjs +78 -0
  90. package/dist/memory-B2v7KrCB.mjs +143 -0
  91. package/dist/migrations/index.d.mts +156 -0
  92. package/dist/migrations/index.mjs +260 -0
  93. package/dist/mongodb-ClykrfGo.d.mts +118 -0
  94. package/dist/mongodb-DNKEExbf.mjs +93 -0
  95. package/dist/mongodb-Dg8O_gvd.d.mts +71 -0
  96. package/dist/openapi-9nB_kiuR.mjs +525 -0
  97. package/dist/org/index.d.mts +68 -0
  98. package/dist/org/index.mjs +513 -0
  99. package/dist/org/types.d.mts +82 -0
  100. package/dist/org/types.mjs +1 -0
  101. package/dist/permissions/index.d.mts +278 -0
  102. package/dist/permissions/index.mjs +579 -0
  103. package/dist/plugins/index.d.mts +172 -0
  104. package/dist/plugins/index.mjs +522 -0
  105. package/dist/plugins/response-cache.d.mts +87 -0
  106. package/dist/plugins/response-cache.mjs +283 -0
  107. package/dist/plugins/tracing-entry.d.mts +2 -0
  108. package/dist/plugins/tracing-entry.mjs +185 -0
  109. package/dist/pluralize-CM-jZg7p.mjs +86 -0
  110. package/dist/policies/{index.d.ts → index.d.mts} +204 -170
  111. package/dist/policies/index.mjs +321 -0
  112. package/dist/presets/{index.d.ts → index.d.mts} +62 -131
  113. package/dist/presets/index.mjs +143 -0
  114. package/dist/presets/multiTenant.d.mts +24 -0
  115. package/dist/presets/multiTenant.mjs +113 -0
  116. package/dist/presets-BTeYbw7h.d.mts +57 -0
  117. package/dist/presets-CeFtfDR8.mjs +119 -0
  118. package/dist/prisma-C3iornoK.d.mts +274 -0
  119. package/dist/prisma-DJbMt3yf.mjs +627 -0
  120. package/dist/queryCachePlugin-B6R0d4av.mjs +138 -0
  121. package/dist/queryCachePlugin-Q6SYuHZ6.d.mts +71 -0
  122. package/dist/redis-UwjEp8Ea.d.mts +49 -0
  123. package/dist/redis-stream-CBg0upHI.d.mts +103 -0
  124. package/dist/registry/index.d.mts +11 -0
  125. package/dist/registry/index.mjs +4 -0
  126. package/dist/requestContext-xi6OKBL-.mjs +55 -0
  127. package/dist/schemaConverter-Dtg0Kt9T.mjs +98 -0
  128. package/dist/schemas/index.d.mts +63 -0
  129. package/dist/schemas/index.mjs +82 -0
  130. package/dist/scope/index.d.mts +21 -0
  131. package/dist/scope/index.mjs +65 -0
  132. package/dist/sessionManager-D_iEHjQl.d.mts +186 -0
  133. package/dist/sse-DkqQ1uxb.mjs +123 -0
  134. package/dist/testing/index.d.mts +907 -0
  135. package/dist/testing/index.mjs +1976 -0
  136. package/dist/tracing-8CEbhF0w.d.mts +70 -0
  137. package/dist/typeGuards-DwxA1t_L.mjs +9 -0
  138. package/dist/types/index.d.mts +946 -0
  139. package/dist/types/index.mjs +14 -0
  140. package/dist/types-B0dhNrnd.d.mts +445 -0
  141. package/dist/types-Beqn1Un7.mjs +38 -0
  142. package/dist/types-DelU6kln.mjs +25 -0
  143. package/dist/types-RLkFVgaw.d.mts +101 -0
  144. package/dist/utils/index.d.mts +747 -0
  145. package/dist/utils/index.mjs +6 -0
  146. package/package.json +194 -68
  147. package/dist/BaseController-DVAiHxEQ.d.ts +0 -233
  148. package/dist/adapters/index.d.ts +0 -237
  149. package/dist/adapters/index.js +0 -668
  150. package/dist/arcCorePlugin-CsShQdyP.d.ts +0 -273
  151. package/dist/audit/index.d.ts +0 -195
  152. package/dist/audit/index.js +0 -319
  153. package/dist/auth/index.d.ts +0 -47
  154. package/dist/auth/index.js +0 -174
  155. package/dist/cli/commands/docs.d.ts +0 -11
  156. package/dist/cli/commands/docs.js +0 -474
  157. package/dist/cli/commands/generate.js +0 -334
  158. package/dist/cli/commands/introspect.d.ts +0 -8
  159. package/dist/cli/commands/introspect.js +0 -338
  160. package/dist/cli/index.d.ts +0 -4
  161. package/dist/cli/index.js +0 -3269
  162. package/dist/core/index.d.ts +0 -220
  163. package/dist/core/index.js +0 -2786
  164. package/dist/createApp-Ce9wl8W9.d.ts +0 -77
  165. package/dist/docs/index.d.ts +0 -166
  166. package/dist/docs/index.js +0 -658
  167. package/dist/errors-8WIxGS_6.d.ts +0 -122
  168. package/dist/events/index.d.ts +0 -117
  169. package/dist/events/index.js +0 -89
  170. package/dist/factory/index.d.ts +0 -38
  171. package/dist/factory/index.js +0 -1652
  172. package/dist/hooks/index.d.ts +0 -4
  173. package/dist/hooks/index.js +0 -199
  174. package/dist/idempotency/index.d.ts +0 -323
  175. package/dist/idempotency/index.js +0 -500
  176. package/dist/index-B4t03KQ0.d.ts +0 -1366
  177. package/dist/index.d.ts +0 -135
  178. package/dist/index.js +0 -4756
  179. package/dist/migrations/index.d.ts +0 -185
  180. package/dist/migrations/index.js +0 -274
  181. package/dist/org/index.d.ts +0 -129
  182. package/dist/org/index.js +0 -220
  183. package/dist/permissions/index.d.ts +0 -144
  184. package/dist/permissions/index.js +0 -103
  185. package/dist/plugins/index.d.ts +0 -46
  186. package/dist/plugins/index.js +0 -1069
  187. package/dist/policies/index.js +0 -196
  188. package/dist/presets/index.js +0 -384
  189. package/dist/presets/multiTenant.d.ts +0 -39
  190. package/dist/presets/multiTenant.js +0 -112
  191. package/dist/registry/index.d.ts +0 -16
  192. package/dist/registry/index.js +0 -253
  193. package/dist/testing/index.d.ts +0 -618
  194. package/dist/testing/index.js +0 -48020
  195. package/dist/types/index.d.ts +0 -4
  196. package/dist/types/index.js +0 -8
  197. package/dist/types-B99TBmFV.d.ts +0 -76
  198. package/dist/types-BvckRbs2.d.ts +0 -143
  199. package/dist/utils/index.d.ts +0 -679
  200. package/dist/utils/index.js +0 -931
@@ -1,77 +0,0 @@
1
- import { FastifyInstance } from 'fastify';
2
- import { C as CreateAppOptions } from './types-BvckRbs2.js';
3
-
4
- /**
5
- * ArcFactory - Production-ready Fastify application factory
6
- *
7
- * Enforces security best practices by making plugins opt-out instead of opt-in.
8
- * A developer must explicitly disable security features rather than forget to enable them.
9
- *
10
- * Note: Arc is database-agnostic. Connect your database separately and provide
11
- * adapters when defining resources. This allows multiple databases, custom
12
- * connection pooling, and full control over your data layer.
13
- *
14
- * @example
15
- * // 1. Connect your database(s) separately
16
- * import mongoose from 'mongoose';
17
- * await mongoose.connect(process.env.MONGO_URI);
18
- *
19
- * // 2. Create Arc app (no database config needed)
20
- * const app = await createApp({
21
- * preset: 'production',
22
- * auth: { jwt: { secret: process.env.JWT_SECRET } },
23
- * cors: { origin: ['https://example.com'] },
24
- * });
25
- *
26
- * // 3. Register resources with your adapters
27
- * await app.register(productResource.toPlugin());
28
- *
29
- * @example
30
- * // Multiple databases example
31
- * const primaryDb = await mongoose.connect(process.env.PRIMARY_DB);
32
- * const analyticsDb = mongoose.createConnection(process.env.ANALYTICS_DB);
33
- *
34
- * const orderResource = defineResource({
35
- * adapter: createMongooseAdapter({ model: OrderModel, repository: orderRepo }),
36
- * });
37
- *
38
- * const analyticsResource = defineResource({
39
- * adapter: createMongooseAdapter({ model: AnalyticsModel, repository: analyticsRepo }),
40
- * });
41
- */
42
-
43
- /**
44
- * Create a production-ready Fastify application with Arc framework
45
- *
46
- * Security plugins are enabled by default (opt-out):
47
- * - helmet (security headers)
48
- * - cors (cross-origin requests)
49
- * - rateLimit (DDoS protection)
50
- * - underPressure (health monitoring)
51
- *
52
- * Note: Compression is not included due to known Fastify 5 issues.
53
- * Use a reverse proxy (Nginx, Caddy) or CDN for compression.
54
- *
55
- * @param options - Application configuration
56
- * @returns Configured Fastify instance
57
- */
58
- declare function createApp(options: CreateAppOptions): Promise<FastifyInstance>;
59
- /**
60
- * Quick factory for common scenarios
61
- */
62
- declare const ArcFactory: {
63
- /**
64
- * Create production app with strict security
65
- */
66
- production(options: Omit<CreateAppOptions, "preset">): Promise<FastifyInstance>;
67
- /**
68
- * Create development app with relaxed security
69
- */
70
- development(options: Omit<CreateAppOptions, "preset">): Promise<FastifyInstance>;
71
- /**
72
- * Create testing app with minimal setup
73
- */
74
- testing(options: Omit<CreateAppOptions, "preset">): Promise<FastifyInstance>;
75
- };
76
-
77
- export { ArcFactory as A, createApp as c };
@@ -1,166 +0,0 @@
1
- import { FastifyPluginAsync } from 'fastify';
2
-
3
- /**
4
- * OpenAPI Spec Generator
5
- *
6
- * Auto-generates OpenAPI 3.0 specification from Arc resource registry.
7
- *
8
- * @example
9
- * import { openApiPlugin } from '@classytic/arc/docs';
10
- *
11
- * await fastify.register(openApiPlugin, {
12
- * title: 'My API',
13
- * version: '1.0.0',
14
- * });
15
- *
16
- * // Spec available at /_docs/openapi.json
17
- */
18
-
19
- interface OpenApiOptions {
20
- /** API title */
21
- title?: string;
22
- /** API version */
23
- version?: string;
24
- /** API description */
25
- description?: string;
26
- /** Server URL */
27
- serverUrl?: string;
28
- /** Route prefix for spec endpoint (default: '/_docs') */
29
- prefix?: string;
30
- /** API prefix for all resource paths (e.g., '/api/v1') */
31
- apiPrefix?: string;
32
- /** Auth roles required to access spec (default: [] = public) */
33
- authRoles?: string[];
34
- /** Include internal routes (default: false) */
35
- includeInternal?: boolean;
36
- /** Custom OpenAPI extensions */
37
- extensions?: Record<string, unknown>;
38
- }
39
- interface OpenApiSpec {
40
- openapi: string;
41
- info: {
42
- title: string;
43
- version: string;
44
- description?: string;
45
- };
46
- servers?: Array<{
47
- url: string;
48
- description?: string;
49
- }>;
50
- paths: Record<string, PathItem>;
51
- components: {
52
- schemas: Record<string, SchemaObject>;
53
- securitySchemes?: Record<string, SecurityScheme>;
54
- };
55
- tags: Array<{
56
- name: string;
57
- description?: string;
58
- }>;
59
- security?: Array<Record<string, string[]>>;
60
- }
61
- interface PathItem {
62
- get?: Operation;
63
- post?: Operation;
64
- put?: Operation;
65
- patch?: Operation;
66
- delete?: Operation;
67
- options?: Operation;
68
- head?: Operation;
69
- }
70
- interface Operation {
71
- tags: string[];
72
- summary: string;
73
- description?: string;
74
- operationId: string;
75
- parameters?: Parameter[];
76
- requestBody?: RequestBody;
77
- responses: Record<string, Response>;
78
- security?: Array<Record<string, string[]>>;
79
- }
80
- interface Parameter {
81
- name: string;
82
- in: 'path' | 'query' | 'header';
83
- required?: boolean;
84
- schema: SchemaObject;
85
- description?: string;
86
- }
87
- interface RequestBody {
88
- required?: boolean;
89
- content: Record<string, {
90
- schema: SchemaObject;
91
- }>;
92
- }
93
- interface Response {
94
- description: string;
95
- content?: Record<string, {
96
- schema: SchemaObject;
97
- }>;
98
- }
99
- interface SchemaObject {
100
- type?: string;
101
- format?: string;
102
- properties?: Record<string, SchemaObject>;
103
- items?: SchemaObject;
104
- required?: string[];
105
- $ref?: string;
106
- description?: string;
107
- example?: unknown;
108
- additionalProperties?: boolean | SchemaObject;
109
- enum?: string[];
110
- minimum?: number;
111
- maximum?: number;
112
- minLength?: number;
113
- maxLength?: number;
114
- pattern?: string;
115
- }
116
- interface SecurityScheme {
117
- type: string;
118
- scheme?: string;
119
- bearerFormat?: string;
120
- in?: string;
121
- name?: string;
122
- }
123
- declare const openApiPlugin: FastifyPluginAsync<OpenApiOptions>;
124
- declare const _default$1: FastifyPluginAsync<OpenApiOptions>;
125
-
126
- /**
127
- * Scalar API Reference Plugin
128
- *
129
- * Beautiful, modern API documentation UI.
130
- * Lighter and more modern than Swagger UI.
131
- *
132
- * @example
133
- * import { scalarPlugin } from '@classytic/arc/docs';
134
- *
135
- * await fastify.register(scalarPlugin, {
136
- * routePrefix: '/docs',
137
- * specUrl: '/_docs/openapi.json',
138
- * });
139
- *
140
- * // UI available at /docs
141
- */
142
-
143
- interface ScalarOptions {
144
- /** Route prefix for UI (default: '/docs') */
145
- routePrefix?: string;
146
- /** OpenAPI spec URL (default: '/_docs/openapi.json') */
147
- specUrl?: string;
148
- /** Page title */
149
- title?: string;
150
- /** Theme (default: 'default') */
151
- theme?: 'default' | 'alternate' | 'moon' | 'purple' | 'solarized' | 'bluePlanet' | 'saturn' | 'kepler' | 'mars' | 'deepSpace';
152
- /** Show sidebar (default: true) */
153
- showSidebar?: boolean;
154
- /** Dark mode (default: false) */
155
- darkMode?: boolean;
156
- /** Auth roles required to access docs */
157
- authRoles?: string[];
158
- /** Custom CSS */
159
- customCss?: string;
160
- /** Favicon URL */
161
- favicon?: string;
162
- }
163
- declare const scalarPlugin: FastifyPluginAsync<ScalarOptions>;
164
- declare const _default: FastifyPluginAsync<ScalarOptions>;
165
-
166
- export { type OpenApiOptions, type OpenApiSpec, type ScalarOptions, _default$1 as openApiPlugin, openApiPlugin as openApiPluginFn, _default as scalarPlugin, scalarPlugin as scalarPluginFn };