@classytic/arc 1.1.0 → 2.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +247 -794
- package/bin/arc.js +91 -52
- package/dist/EventTransport-BD2U0BTc.d.mts +100 -0
- package/dist/EventTransport-BD2U0BTc.d.mts.map +1 -0
- package/dist/HookSystem-BsGV-j2l.mjs +405 -0
- package/dist/HookSystem-BsGV-j2l.mjs.map +1 -0
- package/dist/ResourceRegistry-DsN4KJjV.mjs +250 -0
- package/dist/ResourceRegistry-DsN4KJjV.mjs.map +1 -0
- package/dist/adapters/index.d.mts +5 -0
- package/dist/adapters/index.mjs +3 -0
- package/dist/audit/index.d.mts +82 -0
- package/dist/audit/index.d.mts.map +1 -0
- package/dist/audit/index.mjs +276 -0
- package/dist/audit/index.mjs.map +1 -0
- package/dist/audit/mongodb.d.mts +5 -0
- package/dist/audit/mongodb.mjs +3 -0
- package/dist/audited-C3T5DTUx.mjs +141 -0
- package/dist/audited-C3T5DTUx.mjs.map +1 -0
- package/dist/auth/index.d.mts +189 -0
- package/dist/auth/index.d.mts.map +1 -0
- package/dist/auth/index.mjs +1102 -0
- package/dist/auth/index.mjs.map +1 -0
- package/dist/auth/redis-session.d.mts +44 -0
- package/dist/auth/redis-session.d.mts.map +1 -0
- package/dist/auth/redis-session.mjs +76 -0
- package/dist/auth/redis-session.mjs.map +1 -0
- package/dist/betterAuthOpenApi-BrHKeSAx.mjs +250 -0
- package/dist/betterAuthOpenApi-BrHKeSAx.mjs.map +1 -0
- package/dist/cache/index.d.mts +146 -0
- package/dist/cache/index.d.mts.map +1 -0
- package/dist/cache/index.mjs +92 -0
- package/dist/cache/index.mjs.map +1 -0
- package/dist/caching-Bl28lYsR.mjs +94 -0
- package/dist/caching-Bl28lYsR.mjs.map +1 -0
- package/dist/chunk-C7Uep-_p.mjs +20 -0
- package/dist/circuitBreaker-DeY4FCjs.mjs +1097 -0
- package/dist/circuitBreaker-DeY4FCjs.mjs.map +1 -0
- package/dist/cli/commands/describe.d.mts +19 -0
- package/dist/cli/commands/describe.d.mts.map +1 -0
- package/dist/cli/commands/describe.mjs +239 -0
- package/dist/cli/commands/describe.mjs.map +1 -0
- package/dist/cli/commands/docs.d.mts +14 -0
- package/dist/cli/commands/docs.d.mts.map +1 -0
- package/dist/cli/commands/docs.mjs +53 -0
- package/dist/cli/commands/docs.mjs.map +1 -0
- package/dist/cli/commands/{generate.d.ts → generate.d.mts} +3 -1
- package/dist/cli/commands/generate.d.mts.map +1 -0
- package/dist/cli/commands/generate.mjs +358 -0
- package/dist/cli/commands/generate.mjs.map +1 -0
- package/dist/cli/commands/{init.d.ts → init.d.mts} +12 -8
- package/dist/cli/commands/init.d.mts.map +1 -0
- package/dist/cli/commands/{init.js → init.mjs} +807 -616
- package/dist/cli/commands/init.mjs.map +1 -0
- package/dist/cli/commands/introspect.d.mts +11 -0
- package/dist/cli/commands/introspect.d.mts.map +1 -0
- package/dist/cli/commands/introspect.mjs +76 -0
- package/dist/cli/commands/introspect.mjs.map +1 -0
- package/dist/cli/index.d.mts +17 -0
- package/dist/cli/index.d.mts.map +1 -0
- package/dist/cli/index.mjs +157 -0
- package/dist/cli/index.mjs.map +1 -0
- package/dist/constants-DdXFXQtN.mjs +85 -0
- package/dist/constants-DdXFXQtN.mjs.map +1 -0
- package/dist/core/index.d.mts +5 -0
- package/dist/core/index.mjs +4 -0
- package/dist/createApp-CUgNqegw.mjs +560 -0
- package/dist/createApp-CUgNqegw.mjs.map +1 -0
- package/dist/defineResource-k0_BDn8v.mjs +2197 -0
- package/dist/defineResource-k0_BDn8v.mjs.map +1 -0
- package/dist/discovery/index.d.mts +47 -0
- package/dist/discovery/index.d.mts.map +1 -0
- package/dist/discovery/index.mjs +110 -0
- package/dist/discovery/index.mjs.map +1 -0
- package/dist/docs/index.d.mts +163 -0
- package/dist/docs/index.d.mts.map +1 -0
- package/dist/docs/index.mjs +73 -0
- package/dist/docs/index.mjs.map +1 -0
- package/dist/elevation-BRy3yFWT.mjs +113 -0
- package/dist/elevation-BRy3yFWT.mjs.map +1 -0
- package/dist/elevation-B_2dRLVP.d.mts +88 -0
- package/dist/elevation-B_2dRLVP.d.mts.map +1 -0
- package/dist/errorHandler-BbcgBmIH.d.mts +73 -0
- package/dist/errorHandler-BbcgBmIH.d.mts.map +1 -0
- package/dist/errorHandler-C1okiriz.mjs +109 -0
- package/dist/errorHandler-C1okiriz.mjs.map +1 -0
- package/dist/errors-B9bZok84.mjs +212 -0
- package/dist/errors-B9bZok84.mjs.map +1 -0
- package/dist/errors-ChKiFz62.d.mts +125 -0
- package/dist/errors-ChKiFz62.d.mts.map +1 -0
- package/dist/eventPlugin-CTrLH3mt.d.mts +125 -0
- package/dist/eventPlugin-CTrLH3mt.d.mts.map +1 -0
- package/dist/eventPlugin-DGR_B2on.mjs +230 -0
- package/dist/eventPlugin-DGR_B2on.mjs.map +1 -0
- package/dist/events/index.d.mts +54 -0
- package/dist/events/index.d.mts.map +1 -0
- package/dist/events/index.mjs +52 -0
- package/dist/events/index.mjs.map +1 -0
- package/dist/events/transports/redis-stream-entry.d.mts +2 -0
- package/dist/events/transports/redis-stream-entry.mjs +178 -0
- package/dist/events/transports/redis-stream-entry.mjs.map +1 -0
- package/dist/events/transports/redis.d.mts +77 -0
- package/dist/events/transports/redis.d.mts.map +1 -0
- package/dist/events/transports/redis.mjs +125 -0
- package/dist/events/transports/redis.mjs.map +1 -0
- package/dist/externalPaths-DlINfKbP.d.mts +51 -0
- package/dist/externalPaths-DlINfKbP.d.mts.map +1 -0
- package/dist/factory/index.d.mts +64 -0
- package/dist/factory/index.d.mts.map +1 -0
- package/dist/factory/index.mjs +3 -0
- package/dist/fastifyAdapter-BkrGrlFi.d.mts +217 -0
- package/dist/fastifyAdapter-BkrGrlFi.d.mts.map +1 -0
- package/dist/fields-DyaDVX4J.d.mts +110 -0
- package/dist/fields-DyaDVX4J.d.mts.map +1 -0
- package/dist/fields-iagOozy0.mjs +115 -0
- package/dist/fields-iagOozy0.mjs.map +1 -0
- package/dist/hooks/index.d.mts +4 -0
- package/dist/hooks/index.mjs +3 -0
- package/dist/idempotency/index.d.mts +97 -0
- package/dist/idempotency/index.d.mts.map +1 -0
- package/dist/idempotency/index.mjs +320 -0
- package/dist/idempotency/index.mjs.map +1 -0
- package/dist/idempotency/mongodb.d.mts +2 -0
- package/dist/idempotency/mongodb.mjs +115 -0
- package/dist/idempotency/mongodb.mjs.map +1 -0
- package/dist/idempotency/redis.d.mts +2 -0
- package/dist/idempotency/redis.mjs +104 -0
- package/dist/idempotency/redis.mjs.map +1 -0
- package/dist/index.d.mts +261 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +105 -0
- package/dist/index.mjs.map +1 -0
- package/dist/integrations/event-gateway.d.mts +47 -0
- package/dist/integrations/event-gateway.d.mts.map +1 -0
- package/dist/integrations/event-gateway.mjs +44 -0
- package/dist/integrations/event-gateway.mjs.map +1 -0
- package/dist/integrations/index.d.mts +5 -0
- package/dist/integrations/index.mjs +1 -0
- package/dist/integrations/jobs.d.mts +104 -0
- package/dist/integrations/jobs.d.mts.map +1 -0
- package/dist/integrations/jobs.mjs +124 -0
- package/dist/integrations/jobs.mjs.map +1 -0
- package/dist/integrations/streamline.d.mts +61 -0
- package/dist/integrations/streamline.d.mts.map +1 -0
- package/dist/integrations/streamline.mjs +126 -0
- package/dist/integrations/streamline.mjs.map +1 -0
- package/dist/integrations/websocket.d.mts +83 -0
- package/dist/integrations/websocket.d.mts.map +1 -0
- package/dist/integrations/websocket.mjs +289 -0
- package/dist/integrations/websocket.mjs.map +1 -0
- package/dist/interface-B01JvPVc.d.mts +78 -0
- package/dist/interface-B01JvPVc.d.mts.map +1 -0
- package/dist/interface-CZe8IkMf.d.mts +55 -0
- package/dist/interface-CZe8IkMf.d.mts.map +1 -0
- package/dist/interface-Ch8HU9uM.d.mts +1098 -0
- package/dist/interface-Ch8HU9uM.d.mts.map +1 -0
- package/dist/introspectionPlugin-rFdO8ZUa.mjs +54 -0
- package/dist/introspectionPlugin-rFdO8ZUa.mjs.map +1 -0
- package/dist/keys-BqNejWup.mjs +43 -0
- package/dist/keys-BqNejWup.mjs.map +1 -0
- package/dist/logger-Df2O2WsW.mjs +79 -0
- package/dist/logger-Df2O2WsW.mjs.map +1 -0
- package/dist/memory-cQgelFOj.mjs +144 -0
- package/dist/memory-cQgelFOj.mjs.map +1 -0
- package/dist/migrations/index.d.mts +157 -0
- package/dist/migrations/index.d.mts.map +1 -0
- package/dist/migrations/index.mjs +261 -0
- package/dist/migrations/index.mjs.map +1 -0
- package/dist/mongodb-BfJVlUJH.mjs +94 -0
- package/dist/mongodb-BfJVlUJH.mjs.map +1 -0
- package/dist/mongodb-CGzRbfAK.d.mts +119 -0
- package/dist/mongodb-CGzRbfAK.d.mts.map +1 -0
- package/dist/mongodb-JN-9JA7K.d.mts +72 -0
- package/dist/mongodb-JN-9JA7K.d.mts.map +1 -0
- package/dist/openapi-G3Cw7XuM.mjs +524 -0
- package/dist/openapi-G3Cw7XuM.mjs.map +1 -0
- package/dist/org/index.d.mts +69 -0
- package/dist/org/index.d.mts.map +1 -0
- package/dist/org/index.mjs +514 -0
- package/dist/org/index.mjs.map +1 -0
- package/dist/org/types.d.mts +83 -0
- package/dist/org/types.d.mts.map +1 -0
- package/dist/org/types.mjs +1 -0
- package/dist/permissions/index.d.mts +279 -0
- package/dist/permissions/index.d.mts.map +1 -0
- package/dist/permissions/index.mjs +579 -0
- package/dist/permissions/index.mjs.map +1 -0
- package/dist/plugins/index.d.mts +173 -0
- package/dist/plugins/index.d.mts.map +1 -0
- package/dist/plugins/index.mjs +523 -0
- package/dist/plugins/index.mjs.map +1 -0
- package/dist/plugins/response-cache.d.mts +88 -0
- package/dist/plugins/response-cache.d.mts.map +1 -0
- package/dist/plugins/response-cache.mjs +284 -0
- package/dist/plugins/response-cache.mjs.map +1 -0
- package/dist/plugins/tracing-entry.d.mts +2 -0
- package/dist/plugins/tracing-entry.mjs +186 -0
- package/dist/plugins/tracing-entry.mjs.map +1 -0
- package/dist/pluralize-CEweyOEm.mjs +87 -0
- package/dist/pluralize-CEweyOEm.mjs.map +1 -0
- package/dist/policies/{index.d.ts → index.d.mts} +204 -169
- package/dist/policies/index.d.mts.map +1 -0
- package/dist/policies/index.mjs +322 -0
- package/dist/policies/index.mjs.map +1 -0
- package/dist/presets/{index.d.ts → index.d.mts} +63 -131
- package/dist/presets/index.d.mts.map +1 -0
- package/dist/presets/index.mjs +144 -0
- package/dist/presets/index.mjs.map +1 -0
- package/dist/presets/multiTenant.d.mts +25 -0
- package/dist/presets/multiTenant.d.mts.map +1 -0
- package/dist/presets/multiTenant.mjs +114 -0
- package/dist/presets/multiTenant.mjs.map +1 -0
- package/dist/presets-BITljm96.mjs +120 -0
- package/dist/presets-BITljm96.mjs.map +1 -0
- package/dist/presets-DzSMwlKj.d.mts +58 -0
- package/dist/presets-DzSMwlKj.d.mts.map +1 -0
- package/dist/prisma-DJbMt3yf.mjs +628 -0
- package/dist/prisma-DJbMt3yf.mjs.map +1 -0
- package/dist/prisma-Dg9GoVdj.d.mts +275 -0
- package/dist/prisma-Dg9GoVdj.d.mts.map +1 -0
- package/dist/queryCachePlugin-7THaI5mt.d.mts +72 -0
- package/dist/queryCachePlugin-7THaI5mt.d.mts.map +1 -0
- package/dist/queryCachePlugin-DMBnp2Q0.mjs +139 -0
- package/dist/queryCachePlugin-DMBnp2Q0.mjs.map +1 -0
- package/dist/redis-D-JAeLtm.d.mts +50 -0
- package/dist/redis-D-JAeLtm.d.mts.map +1 -0
- package/dist/redis-stream-Bdh_vUU8.d.mts +104 -0
- package/dist/redis-stream-Bdh_vUU8.d.mts.map +1 -0
- package/dist/registry/index.d.mts +12 -0
- package/dist/registry/index.d.mts.map +1 -0
- package/dist/registry/index.mjs +4 -0
- package/dist/requestContext-QQD6ROJc.mjs +56 -0
- package/dist/requestContext-QQD6ROJc.mjs.map +1 -0
- package/dist/schemaConverter-BwrmWroW.mjs +99 -0
- package/dist/schemaConverter-BwrmWroW.mjs.map +1 -0
- package/dist/schemas/index.d.mts +64 -0
- package/dist/schemas/index.d.mts.map +1 -0
- package/dist/schemas/index.mjs +83 -0
- package/dist/schemas/index.mjs.map +1 -0
- package/dist/scope/index.d.mts +22 -0
- package/dist/scope/index.d.mts.map +1 -0
- package/dist/scope/index.mjs +66 -0
- package/dist/scope/index.mjs.map +1 -0
- package/dist/sessionManager-jPKLbHE0.d.mts +187 -0
- package/dist/sessionManager-jPKLbHE0.d.mts.map +1 -0
- package/dist/sse-B3c3_yZp.mjs +124 -0
- package/dist/sse-B3c3_yZp.mjs.map +1 -0
- package/dist/testing/index.d.mts +908 -0
- package/dist/testing/index.d.mts.map +1 -0
- package/dist/testing/index.mjs +1977 -0
- package/dist/testing/index.mjs.map +1 -0
- package/dist/tracing-Cc7vVQPp.d.mts +71 -0
- package/dist/tracing-Cc7vVQPp.d.mts.map +1 -0
- package/dist/typeGuards-DhMNLuvU.mjs +10 -0
- package/dist/typeGuards-DhMNLuvU.mjs.map +1 -0
- package/dist/types/index.d.mts +947 -0
- package/dist/types/index.d.mts.map +1 -0
- package/dist/types/index.mjs +15 -0
- package/dist/types/index.mjs.map +1 -0
- package/dist/types-Beqn1Un7.mjs +39 -0
- package/dist/types-Beqn1Un7.mjs.map +1 -0
- package/dist/types-CIgB7UUl.d.mts +446 -0
- package/dist/types-CIgB7UUl.d.mts.map +1 -0
- package/dist/types-aYB4V7uN.d.mts +87 -0
- package/dist/types-aYB4V7uN.d.mts.map +1 -0
- package/dist/utils/index.d.mts +748 -0
- package/dist/utils/index.d.mts.map +1 -0
- package/dist/utils/index.mjs +6 -0
- package/package.json +194 -68
- package/dist/BaseController-DVAiHxEQ.d.ts +0 -233
- package/dist/adapters/index.d.ts +0 -237
- package/dist/adapters/index.js +0 -668
- package/dist/arcCorePlugin-CsShQdyP.d.ts +0 -273
- package/dist/audit/index.d.ts +0 -195
- package/dist/audit/index.js +0 -319
- package/dist/auth/index.d.ts +0 -47
- package/dist/auth/index.js +0 -174
- package/dist/cli/commands/docs.d.ts +0 -11
- package/dist/cli/commands/docs.js +0 -474
- package/dist/cli/commands/generate.js +0 -334
- package/dist/cli/commands/introspect.d.ts +0 -8
- package/dist/cli/commands/introspect.js +0 -338
- package/dist/cli/index.d.ts +0 -4
- package/dist/cli/index.js +0 -3269
- package/dist/core/index.d.ts +0 -220
- package/dist/core/index.js +0 -2786
- package/dist/createApp-Ce9wl8W9.d.ts +0 -77
- package/dist/docs/index.d.ts +0 -166
- package/dist/docs/index.js +0 -658
- package/dist/errors-8WIxGS_6.d.ts +0 -122
- package/dist/events/index.d.ts +0 -117
- package/dist/events/index.js +0 -89
- package/dist/factory/index.d.ts +0 -38
- package/dist/factory/index.js +0 -1652
- package/dist/hooks/index.d.ts +0 -4
- package/dist/hooks/index.js +0 -199
- package/dist/idempotency/index.d.ts +0 -323
- package/dist/idempotency/index.js +0 -500
- package/dist/index-B4t03KQ0.d.ts +0 -1366
- package/dist/index.d.ts +0 -135
- package/dist/index.js +0 -4756
- package/dist/migrations/index.d.ts +0 -185
- package/dist/migrations/index.js +0 -274
- package/dist/org/index.d.ts +0 -129
- package/dist/org/index.js +0 -220
- package/dist/permissions/index.d.ts +0 -144
- package/dist/permissions/index.js +0 -103
- package/dist/plugins/index.d.ts +0 -46
- package/dist/plugins/index.js +0 -1069
- package/dist/policies/index.js +0 -196
- package/dist/presets/index.js +0 -384
- package/dist/presets/multiTenant.d.ts +0 -39
- package/dist/presets/multiTenant.js +0 -112
- package/dist/registry/index.d.ts +0 -16
- package/dist/registry/index.js +0 -253
- package/dist/testing/index.d.ts +0 -618
- package/dist/testing/index.js +0 -48020
- package/dist/types/index.d.ts +0 -4
- package/dist/types/index.js +0 -8
- package/dist/types-B99TBmFV.d.ts +0 -76
- package/dist/types-BvckRbs2.d.ts +0 -143
- package/dist/utils/index.d.ts +0 -679
- package/dist/utils/index.js +0 -931
package/bin/arc.js
CHANGED
|
@@ -9,7 +9,9 @@
|
|
|
9
9
|
* arc generate controller <name> Generate a controller only
|
|
10
10
|
* arc generate model <name> Generate a model only
|
|
11
11
|
* arc introspect Show all registered resources
|
|
12
|
+
* arc describe <entry-file> Output JSON metadata for AI agents
|
|
12
13
|
* arc docs [output-path] Export OpenAPI specification
|
|
14
|
+
* arc doctor Check environment and dependencies
|
|
13
15
|
*
|
|
14
16
|
* Examples:
|
|
15
17
|
* arc init my-api
|
|
@@ -21,8 +23,6 @@
|
|
|
21
23
|
*/
|
|
22
24
|
|
|
23
25
|
import { readFileSync } from 'node:fs';
|
|
24
|
-
import { resolve } from 'node:path';
|
|
25
|
-
import { pathToFileURL } from 'node:url';
|
|
26
26
|
|
|
27
27
|
function getPackageVersion() {
|
|
28
28
|
try {
|
|
@@ -78,11 +78,20 @@ async function main() {
|
|
|
78
78
|
await handleIntrospect(rest);
|
|
79
79
|
break;
|
|
80
80
|
|
|
81
|
+
case 'describe':
|
|
82
|
+
case 'desc':
|
|
83
|
+
await handleDescribe(subcommand ? [subcommand, ...rest] : rest);
|
|
84
|
+
break;
|
|
85
|
+
|
|
81
86
|
case 'docs':
|
|
82
87
|
case 'd':
|
|
83
88
|
await handleDocs(subcommand ? [subcommand, ...rest] : rest);
|
|
84
89
|
break;
|
|
85
90
|
|
|
91
|
+
case 'doctor':
|
|
92
|
+
await handleDoctor(subcommand ? [subcommand, ...rest] : rest);
|
|
93
|
+
break;
|
|
94
|
+
|
|
86
95
|
default:
|
|
87
96
|
console.error(`Unknown command: ${command}`);
|
|
88
97
|
console.error('Run "arc --help" for usage');
|
|
@@ -103,7 +112,7 @@ async function main() {
|
|
|
103
112
|
|
|
104
113
|
async function handleInit(args) {
|
|
105
114
|
const options = parseInitOptions(args);
|
|
106
|
-
const { init } = await import('../dist/cli/commands/init.
|
|
115
|
+
const { init } = await import('../dist/cli/commands/init.mjs');
|
|
107
116
|
await init(options);
|
|
108
117
|
}
|
|
109
118
|
|
|
@@ -146,72 +155,75 @@ async function handleGenerate(type, args) {
|
|
|
146
155
|
}
|
|
147
156
|
|
|
148
157
|
// Import and run
|
|
149
|
-
const { generate } = await import('../dist/cli/commands/generate.
|
|
158
|
+
const { generate } = await import('../dist/cli/commands/generate.mjs');
|
|
150
159
|
await generate(normalizedType, args);
|
|
151
160
|
}
|
|
152
161
|
|
|
153
|
-
async function handleIntrospect(
|
|
154
|
-
|
|
155
|
-
const
|
|
156
|
-
if (entryIndex !== -1 && args[entryIndex + 1]) {
|
|
157
|
-
const entryPath = args[entryIndex + 1];
|
|
158
|
-
// Resolve path relative to CWD and convert to file URL for ESM import
|
|
159
|
-
const absolutePath = resolve(process.cwd(), entryPath);
|
|
160
|
-
const fileUrl = pathToFileURL(absolutePath).href;
|
|
161
|
-
|
|
162
|
-
console.log(`Loading resources from: ${entryPath}\n`);
|
|
163
|
-
try {
|
|
164
|
-
await import(fileUrl);
|
|
165
|
-
} catch (err) {
|
|
166
|
-
console.error(`Failed to load entry file: ${err.message}`);
|
|
167
|
-
if (process.env.DEBUG) {
|
|
168
|
-
console.error(err.stack);
|
|
169
|
-
}
|
|
170
|
-
process.exit(1);
|
|
171
|
-
}
|
|
172
|
-
}
|
|
162
|
+
async function handleIntrospect(rawArgs) {
|
|
163
|
+
const args = normalizeArgs(rawArgs);
|
|
164
|
+
const { entryPath, filteredArgs } = extractEntryArg(args);
|
|
173
165
|
|
|
174
|
-
const { introspect } = await import('../dist/cli/commands/introspect.
|
|
175
|
-
await introspect(
|
|
166
|
+
const { introspect } = await import('../dist/cli/commands/introspect.mjs');
|
|
167
|
+
await introspect(entryPath ? [entryPath, ...filteredArgs] : filteredArgs);
|
|
176
168
|
}
|
|
177
169
|
|
|
178
|
-
async function
|
|
179
|
-
|
|
180
|
-
const
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
} catch (err) {
|
|
191
|
-
console.error(`Failed to load entry file: ${err.message}`);
|
|
192
|
-
if (process.env.DEBUG) {
|
|
193
|
-
console.error(err.stack);
|
|
194
|
-
}
|
|
195
|
-
process.exit(1);
|
|
196
|
-
}
|
|
197
|
-
}
|
|
170
|
+
async function handleDescribe(rawArgs) {
|
|
171
|
+
const args = normalizeArgs(rawArgs);
|
|
172
|
+
const { describe } = await import('../dist/cli/commands/describe.mjs');
|
|
173
|
+
await describe(args);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
async function handleDocs(rawArgs) {
|
|
177
|
+
const args = normalizeArgs(rawArgs);
|
|
178
|
+
const { entryPath, filteredArgs } = extractEntryArg(args);
|
|
179
|
+
const { exportDocs } = await import('../dist/cli/commands/docs.mjs');
|
|
180
|
+
await exportDocs(entryPath ? [entryPath, ...filteredArgs] : filteredArgs);
|
|
181
|
+
}
|
|
198
182
|
|
|
199
|
-
|
|
200
|
-
const
|
|
201
|
-
|
|
202
|
-
await exportDocs([outputPath]);
|
|
183
|
+
async function handleDoctor(rawArgs) {
|
|
184
|
+
const { doctor } = await import('../dist/cli/commands/doctor.mjs');
|
|
185
|
+
await doctor(rawArgs);
|
|
203
186
|
}
|
|
204
187
|
|
|
205
188
|
// ============================================================================
|
|
206
189
|
// Option Parsing
|
|
207
190
|
// ============================================================================
|
|
208
191
|
|
|
209
|
-
|
|
192
|
+
// Mirrors src/cli/utils/normalizeArgs.ts — keep in sync
|
|
193
|
+
// (bin/arc.js is unbundled, can't import tree-shaken dist internals)
|
|
194
|
+
function normalizeArgs(raw) {
|
|
195
|
+
const out = [];
|
|
196
|
+
for (const arg of raw) {
|
|
197
|
+
if (arg.startsWith('--') && arg.includes('=')) {
|
|
198
|
+
const eqIdx = arg.indexOf('=');
|
|
199
|
+
out.push(arg.slice(0, eqIdx), arg.slice(eqIdx + 1));
|
|
200
|
+
} else {
|
|
201
|
+
out.push(arg);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return out;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
function extractEntryArg(args) {
|
|
208
|
+
const entryIndex = args.findIndex(arg => arg === '--entry' || arg === '-e');
|
|
209
|
+
const hasEntry = entryIndex !== -1 && !!args[entryIndex + 1];
|
|
210
|
+
const entryPath = hasEntry ? args[entryIndex + 1] : undefined;
|
|
211
|
+
const filteredArgs = hasEntry
|
|
212
|
+
? args.filter((arg, i) => i !== entryIndex && i !== entryIndex + 1)
|
|
213
|
+
: args;
|
|
214
|
+
|
|
215
|
+
return { entryPath, filteredArgs };
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
function parseInitOptions(rawArgs) {
|
|
219
|
+
const args = normalizeArgs(rawArgs);
|
|
220
|
+
|
|
210
221
|
const opts = {
|
|
211
222
|
name: undefined,
|
|
212
223
|
adapter: undefined,
|
|
213
224
|
tenant: undefined,
|
|
214
225
|
typescript: undefined,
|
|
226
|
+
edge: undefined,
|
|
215
227
|
skipInstall: false,
|
|
216
228
|
force: false,
|
|
217
229
|
};
|
|
@@ -261,6 +273,19 @@ function parseInitOptions(args) {
|
|
|
261
273
|
opts.typescript = false;
|
|
262
274
|
break;
|
|
263
275
|
|
|
276
|
+
case '--better-auth':
|
|
277
|
+
opts.auth = 'better-auth';
|
|
278
|
+
break;
|
|
279
|
+
|
|
280
|
+
case '--jwt':
|
|
281
|
+
opts.auth = 'jwt';
|
|
282
|
+
break;
|
|
283
|
+
|
|
284
|
+
case '--edge':
|
|
285
|
+
case '--serverless':
|
|
286
|
+
opts.edge = true;
|
|
287
|
+
break;
|
|
288
|
+
|
|
264
289
|
case '--skip-install':
|
|
265
290
|
opts.skipInstall = true;
|
|
266
291
|
break;
|
|
@@ -291,7 +316,9 @@ COMMANDS
|
|
|
291
316
|
init, new Initialize a new Arc project
|
|
292
317
|
generate, g Generate resources, controllers, or models
|
|
293
318
|
introspect, i Show all registered resources
|
|
319
|
+
describe, desc Output JSON metadata for AI agents
|
|
294
320
|
docs, d Export OpenAPI specification
|
|
321
|
+
doctor Check environment and dependencies
|
|
295
322
|
|
|
296
323
|
GLOBAL OPTIONS
|
|
297
324
|
--entry, -e <path> Entry file to load before running command
|
|
@@ -302,10 +329,13 @@ GLOBAL OPTIONS
|
|
|
302
329
|
INIT OPTIONS
|
|
303
330
|
--mongokit Use MongoKit adapter (default, recommended)
|
|
304
331
|
--custom Use custom adapter (empty template)
|
|
332
|
+
--better-auth Use Better Auth (default, recommended)
|
|
333
|
+
--jwt Use Arc built-in JWT auth
|
|
305
334
|
--multi-tenant, --multi Multi-tenant mode (adds org scoping)
|
|
306
335
|
--single-tenant, --single Single-tenant mode (default)
|
|
307
336
|
--ts, --typescript Generate TypeScript (default)
|
|
308
337
|
--js, --javascript Generate JavaScript
|
|
338
|
+
--edge, --serverless Target Edge/Serverless environments
|
|
309
339
|
--force, -f Overwrite existing directory
|
|
310
340
|
--skip-install Skip npm install after scaffolding
|
|
311
341
|
|
|
@@ -326,7 +356,10 @@ EXAMPLES
|
|
|
326
356
|
arc init my-api
|
|
327
357
|
|
|
328
358
|
# Initialize with all options (non-interactive)
|
|
329
|
-
arc init my-api --mongokit --single --ts
|
|
359
|
+
arc init my-api --mongokit --better-auth --single --ts
|
|
360
|
+
|
|
361
|
+
# Initialize with JWT auth instead of Better Auth
|
|
362
|
+
arc init my-api --mongokit --jwt --single --ts
|
|
330
363
|
|
|
331
364
|
# Initialize a JavaScript single-tenant app
|
|
332
365
|
arc init my-api --mongokit --single --js
|
|
@@ -349,6 +382,12 @@ EXAMPLES
|
|
|
349
382
|
# Show registered resources
|
|
350
383
|
arc introspect --entry ./dist/index.js
|
|
351
384
|
|
|
385
|
+
# Output JSON metadata for AI agents
|
|
386
|
+
arc describe ./dist/resources.js --json
|
|
387
|
+
|
|
388
|
+
# Describe a single resource
|
|
389
|
+
arc describe ./dist/resources.js product
|
|
390
|
+
|
|
352
391
|
MORE INFO
|
|
353
392
|
Documentation: https://github.com/classytic/arc
|
|
354
393
|
Issues: https://github.com/classytic/arc/issues
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
//#region src/events/EventTransport.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Event Transport Interface
|
|
4
|
+
*
|
|
5
|
+
* Defines contract for event delivery backends.
|
|
6
|
+
* Implement for durable transports (Redis, RabbitMQ, Kafka, etc.)
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* // Redis Pub/Sub implementation
|
|
10
|
+
* class RedisEventTransport implements EventTransport {
|
|
11
|
+
* async publish(event) {
|
|
12
|
+
* await redis.publish(event.type, JSON.stringify(event));
|
|
13
|
+
* }
|
|
14
|
+
* async subscribe(pattern, handler) {
|
|
15
|
+
* redis.psubscribe(pattern);
|
|
16
|
+
* redis.on('pmessage', (p, channel, msg) => handler(JSON.parse(msg)));
|
|
17
|
+
* }
|
|
18
|
+
* }
|
|
19
|
+
*/
|
|
20
|
+
interface DomainEvent<T = unknown> {
|
|
21
|
+
/** Event type (e.g., 'product.created', 'order.shipped') */
|
|
22
|
+
type: string;
|
|
23
|
+
/** Event payload */
|
|
24
|
+
payload: T;
|
|
25
|
+
/** Event metadata */
|
|
26
|
+
meta: {
|
|
27
|
+
/** Unique event ID */id: string; /** Event timestamp */
|
|
28
|
+
timestamp: Date; /** Source resource */
|
|
29
|
+
resource?: string; /** Resource ID */
|
|
30
|
+
resourceId?: string; /** User who triggered the event */
|
|
31
|
+
userId?: string; /** Organization context */
|
|
32
|
+
organizationId?: string; /** Correlation ID for tracing */
|
|
33
|
+
correlationId?: string;
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
type EventHandler<T = unknown> = (event: DomainEvent<T>) => void | Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Minimal logger interface for event transports.
|
|
39
|
+
* Compatible with `console`, `pino`, `fastify.log`, and any custom logger.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```typescript
|
|
43
|
+
* // Use Fastify's logger
|
|
44
|
+
* new MemoryEventTransport({ logger: fastify.log });
|
|
45
|
+
*
|
|
46
|
+
* // Use a custom logger
|
|
47
|
+
* new MemoryEventTransport({ logger: { warn: myWarn, error: myError } });
|
|
48
|
+
*
|
|
49
|
+
* // Default: console (no logger option needed)
|
|
50
|
+
* new MemoryEventTransport();
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
interface EventLogger {
|
|
54
|
+
warn(message: string, ...args: unknown[]): void;
|
|
55
|
+
error(message: string, ...args: unknown[]): void;
|
|
56
|
+
}
|
|
57
|
+
interface EventTransport {
|
|
58
|
+
/** Transport name for logging */
|
|
59
|
+
readonly name: string;
|
|
60
|
+
/**
|
|
61
|
+
* Publish an event to the transport
|
|
62
|
+
*/
|
|
63
|
+
publish(event: DomainEvent): Promise<void>;
|
|
64
|
+
/**
|
|
65
|
+
* Subscribe to events matching a pattern
|
|
66
|
+
* @param pattern - Event type pattern (e.g., 'product.*', '*')
|
|
67
|
+
* @param handler - Handler function
|
|
68
|
+
* @returns Unsubscribe function
|
|
69
|
+
*/
|
|
70
|
+
subscribe(pattern: string, handler: EventHandler): Promise<() => void>;
|
|
71
|
+
/**
|
|
72
|
+
* Close transport connections
|
|
73
|
+
*/
|
|
74
|
+
close?(): Promise<void>;
|
|
75
|
+
}
|
|
76
|
+
interface MemoryEventTransportOptions {
|
|
77
|
+
/** Logger for error/warning messages (default: console) */
|
|
78
|
+
logger?: EventLogger;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* In-memory event transport (default)
|
|
82
|
+
* Events are delivered synchronously within the process.
|
|
83
|
+
* Not suitable for multi-instance deployments.
|
|
84
|
+
*/
|
|
85
|
+
declare class MemoryEventTransport implements EventTransport {
|
|
86
|
+
readonly name = "memory";
|
|
87
|
+
private handlers;
|
|
88
|
+
private logger;
|
|
89
|
+
constructor(options?: MemoryEventTransportOptions);
|
|
90
|
+
publish(event: DomainEvent): Promise<void>;
|
|
91
|
+
subscribe(pattern: string, handler: EventHandler): Promise<() => void>;
|
|
92
|
+
close(): Promise<void>;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Create a domain event with auto-generated metadata
|
|
96
|
+
*/
|
|
97
|
+
declare function createEvent<T>(type: string, payload: T, meta?: Partial<DomainEvent['meta']>): DomainEvent<T>;
|
|
98
|
+
//#endregion
|
|
99
|
+
export { MemoryEventTransport as a, EventTransport as i, EventHandler as n, MemoryEventTransportOptions as o, EventLogger as r, createEvent as s, DomainEvent as t };
|
|
100
|
+
//# sourceMappingURL=EventTransport-BD2U0BTc.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventTransport-BD2U0BTc.d.mts","names":[],"sources":["../src/events/EventTransport.ts"],"mappings":";;AAmBA;;;;;;;;;;;;;;;;;UAAiB,WAAA;EAoBA;EAlBf,IAAA;EAsBsB;EApBtB,OAAA,EAAS,CAAA;EAoBiD;EAlB1D,IAAA;IAkBwE,sBAhBtE,EAAA,UAgB6E;IAd7E,SAAA,EAAW,IAAA,EAciC;IAZ5C,QAAA,WAYqC;IAVrC,UAAA,WAU6E;IAR7E,MAAA,WA0Ba;IAxBb,cAAA,WAwBwB;IAtBxB,aAAA;EAAA;AAAA;AAAA,KAIQ,YAAA,iBAA6B,KAAA,EAAO,WAAA,CAAY,CAAA,aAAc,OAAA;;;;;;AAuB1E;;;;;;;;;;;UALiB,WAAA;EACf,IAAA,CAAK,OAAA,aAAoB,IAAA;EACzB,KAAA,CAAM,OAAA,aAAoB,IAAA;AAAA;AAAA,UAGX,cAAA;EAeL;EAAA,SAbD,IAAA;EAakB;;;EAR3B,OAAA,CAAQ,KAAA,EAAO,WAAA,GAAc,OAAA;EAaZ;;AAGnB;;;;EARE,SAAA,CAAU,OAAA,UAAiB,OAAA,EAAS,YAAA,GAAe,OAAA;EAkBxC;;;EAbX,KAAA,KAAU,OAAA;AAAA;AAAA,UAGK,2BAAA;EAiD2B;EA/C1C,MAAA,GAAS,WAAA;AAAA;;;;;;cAQE,oBAAA,YAAgC,cAAA;EAAA,SAClC,IAAA;EAAA,QACD,QAAA;EAAA,QACA,MAAA;cAEI,OAAA,GAAU,2BAAA;EAIhB,OAAA,CAAQ,KAAA,EAAO,WAAA,GAAc,OAAA;EA8B7B,SAAA,CAAU,OAAA,UAAiB,OAAA,EAAS,YAAA,GAAe,OAAA;EAWnD,KAAA,CAAA,GAAS,OAAA;AAAA;;;;iBAQD,WAAA,GAAA,CACd,IAAA,UACA,OAAA,EAAS,CAAA,EACT,IAAA,GAAO,OAAA,CAAQ,WAAA,YACd,WAAA,CAAY,CAAA"}
|