@danielfgray/pg-sourcerer 0.2.2 → 0.4.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.
- package/bin/pgsourcerer +2 -0
- package/dist/__tests__/fixtures/index.d.ts +15 -0
- package/dist/__tests__/fixtures/index.d.ts.map +1 -0
- package/dist/__tests__/fixtures/index.js +19 -0
- package/dist/__tests__/fixtures/index.js.map +1 -0
- package/dist/__tests__/fixtures/introspection.json +40522 -0
- package/dist/cli.d.ts +0 -1
- package/dist/cli.js +7 -46
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +38 -5
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +13 -2
- package/dist/config.js.map +1 -1
- package/dist/{lib/conjure.d.ts → conjure/index.d.ts} +62 -3
- package/dist/conjure/index.d.ts.map +1 -0
- package/dist/{lib/conjure.js → conjure/index.js} +124 -3
- package/dist/conjure/index.js.map +1 -0
- package/dist/conjure/signature.d.ts +85 -0
- package/dist/conjure/signature.d.ts.map +1 -0
- package/dist/conjure/signature.js +130 -0
- package/dist/conjure/signature.js.map +1 -0
- package/dist/conjure/types.d.ts +97 -0
- package/dist/conjure/types.d.ts.map +1 -0
- package/dist/conjure/types.js +206 -0
- package/dist/conjure/types.js.map +1 -0
- package/dist/errors.d.ts +114 -139
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +82 -36
- package/dist/errors.js.map +1 -1
- package/dist/generate.d.ts +45 -46
- package/dist/generate.d.ts.map +1 -1
- package/dist/generate.js +86 -59
- package/dist/generate.js.map +1 -1
- package/dist/hex/builder.d.ts +12 -0
- package/dist/hex/builder.d.ts.map +1 -0
- package/dist/hex/builder.js +64 -0
- package/dist/hex/builder.js.map +1 -0
- package/dist/hex/ddl.d.ts +53 -0
- package/dist/hex/ddl.d.ts.map +1 -0
- package/dist/hex/ddl.js +306 -0
- package/dist/hex/ddl.js.map +1 -0
- package/dist/hex/index.d.ts +105 -0
- package/dist/hex/index.d.ts.map +1 -0
- package/dist/hex/index.js +81 -0
- package/dist/hex/index.js.map +1 -0
- package/dist/hex/primitives.d.ts +23 -0
- package/dist/hex/primitives.d.ts.map +1 -0
- package/dist/hex/primitives.js +38 -0
- package/dist/hex/primitives.js.map +1 -0
- package/dist/hex/query.d.ts +116 -0
- package/dist/hex/query.d.ts.map +1 -0
- package/dist/hex/query.js +219 -0
- package/dist/hex/query.js.map +1 -0
- package/dist/hex/types.d.ts +287 -0
- package/dist/hex/types.d.ts.map +1 -0
- package/dist/hex/types.js +431 -0
- package/dist/hex/types.js.map +1 -0
- package/dist/index.d.ts +17 -25
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +33 -44
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +76 -140
- package/dist/init.js.map +1 -1
- package/dist/ir/extensions/queries.d.ts +6 -6
- package/dist/ir/extensions/queries.d.ts.map +1 -1
- package/dist/ir/extensions/queries.js +6 -4
- package/dist/ir/extensions/queries.js.map +1 -1
- package/dist/ir/extensions/schema-builder.d.ts.map +1 -1
- package/dist/ir/extensions/schema-builder.js.map +1 -1
- package/dist/ir/index.d.ts.map +1 -1
- package/dist/ir/index.js.map +1 -1
- package/dist/ir/relation-graph.d.ts.map +1 -1
- package/dist/ir/relation-graph.js +8 -8
- package/dist/ir/relation-graph.js.map +1 -1
- package/dist/ir/semantic-ir.d.ts +38 -0
- package/dist/ir/semantic-ir.d.ts.map +1 -1
- package/dist/ir/semantic-ir.js +50 -2
- package/dist/ir/semantic-ir.js.map +1 -1
- package/dist/ir/smart-tags.d.ts.map +1 -1
- package/dist/ir/smart-tags.js.map +1 -1
- package/dist/lib/field-utils.d.ts.map +1 -1
- package/dist/lib/field-utils.js +7 -7
- package/dist/lib/field-utils.js.map +1 -1
- package/dist/lib/join-graph.d.ts +95 -0
- package/dist/lib/join-graph.d.ts.map +1 -0
- package/dist/lib/join-graph.js +305 -0
- package/dist/lib/join-graph.js.map +1 -0
- package/dist/lib/picker.d.ts +60 -0
- package/dist/lib/picker.d.ts.map +1 -0
- package/dist/lib/picker.js +325 -0
- package/dist/lib/picker.js.map +1 -0
- package/dist/plugins/arktype.d.ts +20 -24
- package/dist/plugins/arktype.d.ts.map +1 -1
- package/dist/plugins/arktype.js +462 -386
- package/dist/plugins/arktype.js.map +1 -1
- package/dist/plugins/effect/http.d.ts +7 -0
- package/dist/plugins/effect/http.d.ts.map +1 -0
- package/dist/plugins/effect/http.js +460 -0
- package/dist/plugins/effect/http.js.map +1 -0
- package/dist/plugins/effect/index.d.ts +22 -0
- package/dist/plugins/effect/index.d.ts.map +1 -0
- package/dist/plugins/effect/index.js +65 -0
- package/dist/plugins/effect/index.js.map +1 -0
- package/dist/plugins/effect/models.d.ts +6 -0
- package/dist/plugins/effect/models.d.ts.map +1 -0
- package/dist/plugins/effect/models.js +116 -0
- package/dist/plugins/effect/models.js.map +1 -0
- package/dist/plugins/effect/repos.d.ts +21 -0
- package/dist/plugins/effect/repos.d.ts.map +1 -0
- package/dist/plugins/effect/repos.js +131 -0
- package/dist/plugins/effect/repos.js.map +1 -0
- package/dist/plugins/effect/schemas.d.ts +7 -0
- package/dist/plugins/effect/schemas.d.ts.map +1 -0
- package/dist/plugins/effect/schemas.js +75 -0
- package/dist/plugins/effect/schemas.js.map +1 -0
- package/dist/plugins/effect/shared.d.ts +116 -0
- package/dist/plugins/effect/shared.d.ts.map +1 -0
- package/dist/plugins/effect/shared.js +164 -0
- package/dist/plugins/effect/shared.js.map +1 -0
- package/dist/plugins/http-elysia.d.ts +20 -27
- package/dist/plugins/http-elysia.d.ts.map +1 -1
- package/dist/plugins/http-elysia.js +350 -475
- package/dist/plugins/http-elysia.js.map +1 -1
- package/dist/plugins/http-express.d.ts +20 -31
- package/dist/plugins/http-express.d.ts.map +1 -1
- package/dist/plugins/http-express.js +281 -268
- package/dist/plugins/http-express.js.map +1 -1
- package/dist/plugins/http-hono.d.ts +17 -33
- package/dist/plugins/http-hono.d.ts.map +1 -1
- package/dist/plugins/http-hono.js +317 -341
- package/dist/plugins/http-hono.js.map +1 -1
- package/dist/plugins/http-orpc.d.ts +34 -33
- package/dist/plugins/http-orpc.d.ts.map +1 -1
- package/dist/plugins/http-orpc.js +345 -257
- package/dist/plugins/http-orpc.js.map +1 -1
- package/dist/plugins/http-trpc.d.ts +33 -35
- package/dist/plugins/http-trpc.d.ts.map +1 -1
- package/dist/plugins/http-trpc.js +337 -241
- package/dist/plugins/http-trpc.js.map +1 -1
- package/dist/plugins/kysely.d.ts +54 -59
- package/dist/plugins/kysely.d.ts.map +1 -1
- package/dist/plugins/kysely.js +826 -687
- package/dist/plugins/kysely.js.map +1 -1
- package/dist/plugins/sql-queries.d.ts +38 -44
- package/dist/plugins/sql-queries.d.ts.map +1 -1
- package/dist/plugins/sql-queries.js +497 -897
- package/dist/plugins/sql-queries.js.map +1 -1
- package/dist/plugins/types.d.ts +12 -20
- package/dist/plugins/types.d.ts.map +1 -1
- package/dist/plugins/types.js +84 -227
- package/dist/plugins/types.js.map +1 -1
- package/dist/plugins/valibot.d.ts +7 -44
- package/dist/plugins/valibot.d.ts.map +1 -1
- package/dist/plugins/valibot.js +376 -382
- package/dist/plugins/valibot.js.map +1 -1
- package/dist/plugins/zod.d.ts +20 -24
- package/dist/plugins/zod.d.ts.map +1 -1
- package/dist/plugins/zod.js +370 -367
- package/dist/plugins/zod.js.map +1 -1
- package/dist/runtime/emit.d.ts +64 -0
- package/dist/runtime/emit.d.ts.map +1 -0
- package/dist/runtime/emit.js +445 -0
- package/dist/runtime/emit.js.map +1 -0
- package/dist/runtime/errors.d.ts +36 -0
- package/dist/runtime/errors.d.ts.map +1 -0
- package/dist/runtime/errors.js +29 -0
- package/dist/runtime/errors.js.map +1 -0
- package/dist/runtime/file-assignment.d.ts +161 -0
- package/dist/runtime/file-assignment.d.ts.map +1 -0
- package/dist/runtime/file-assignment.js +195 -0
- package/dist/runtime/file-assignment.js.map +1 -0
- package/dist/runtime/orchestrator.d.ts +62 -0
- package/dist/runtime/orchestrator.d.ts.map +1 -0
- package/dist/runtime/orchestrator.js +99 -0
- package/dist/runtime/orchestrator.js.map +1 -0
- package/dist/runtime/registry.d.ts +268 -0
- package/dist/runtime/registry.d.ts.map +1 -0
- package/dist/runtime/registry.js +436 -0
- package/dist/runtime/registry.js.map +1 -0
- package/dist/runtime/types.d.ts +182 -0
- package/dist/runtime/types.d.ts.map +1 -0
- package/dist/runtime/types.js +2 -0
- package/dist/runtime/types.js.map +1 -0
- package/dist/runtime/validation.d.ts +41 -0
- package/dist/runtime/validation.d.ts.map +1 -0
- package/dist/runtime/validation.js +70 -0
- package/dist/runtime/validation.js.map +1 -0
- package/dist/services/config-loader.d.ts.map +1 -1
- package/dist/services/config-loader.js +15 -6
- package/dist/services/config-loader.js.map +1 -1
- package/dist/services/config.d.ts +55 -25
- package/dist/services/config.d.ts.map +1 -1
- package/dist/services/config.js +60 -34
- package/dist/services/config.js.map +1 -1
- package/dist/services/file-writer.d.ts +3 -3
- package/dist/services/file-writer.d.ts.map +1 -1
- package/dist/services/file-writer.js +6 -8
- package/dist/services/file-writer.js.map +1 -1
- package/dist/services/inflection.d.ts +126 -27
- package/dist/services/inflection.d.ts.map +1 -1
- package/dist/services/inflection.js +300 -72
- package/dist/services/inflection.js.map +1 -1
- package/dist/services/introspection.d.ts.map +1 -1
- package/dist/services/introspection.js +6 -6
- package/dist/services/introspection.js.map +1 -1
- package/dist/services/ir-builder.d.ts.map +1 -1
- package/dist/services/ir-builder.js +73 -77
- package/dist/services/ir-builder.js.map +1 -1
- package/dist/services/ir.d.ts.map +1 -1
- package/dist/services/ir.js.map +1 -1
- package/dist/services/pg-types.d.ts.map +1 -1
- package/dist/services/pg-types.js +3 -3
- package/dist/services/pg-types.js.map +1 -1
- package/dist/services/smart-tags-parser.d.ts.map +1 -1
- package/dist/services/smart-tags-parser.js +4 -4
- package/dist/services/smart-tags-parser.js.map +1 -1
- package/dist/services/type-hints.d.ts.map +1 -1
- package/dist/services/type-hints.js +1 -1
- package/dist/services/type-hints.js.map +1 -1
- package/dist/services/user-module-parser.d.ts +46 -0
- package/dist/services/user-module-parser.d.ts.map +1 -0
- package/dist/services/user-module-parser.js +181 -0
- package/dist/services/user-module-parser.js.map +1 -0
- package/dist/shared/converters.d.ts +60 -0
- package/dist/shared/converters.d.ts.map +1 -0
- package/dist/shared/converters.js +168 -0
- package/dist/shared/converters.js.map +1 -0
- package/dist/shared/query-types.d.ts +95 -0
- package/dist/shared/query-types.d.ts.map +1 -0
- package/dist/shared/query-types.js +9 -0
- package/dist/shared/query-types.js.map +1 -0
- package/dist/testing.d.ts +125 -37
- package/dist/testing.d.ts.map +1 -1
- package/dist/testing.js +134 -42
- package/dist/testing.js.map +1 -1
- package/dist/user-module.d.ts +86 -0
- package/dist/user-module.d.ts.map +1 -0
- package/dist/user-module.js +55 -0
- package/dist/user-module.js.map +1 -0
- package/package.json +10 -6
- package/dist/lib/conjure.d.ts.map +0 -1
- package/dist/lib/conjure.js.map +0 -1
- package/dist/lib/hex.d.ts +0 -119
- package/dist/lib/hex.d.ts.map +0 -1
- package/dist/lib/hex.js +0 -188
- package/dist/lib/hex.js.map +0 -1
- package/dist/plugins/effect.d.ts +0 -53
- package/dist/plugins/effect.d.ts.map +0 -1
- package/dist/plugins/effect.js +0 -1074
- package/dist/plugins/effect.js.map +0 -1
- package/dist/plugins/kysely/queries.d.ts +0 -92
- package/dist/plugins/kysely/queries.d.ts.map +0 -1
- package/dist/plugins/kysely/queries.js +0 -1169
- package/dist/plugins/kysely/queries.js.map +0 -1
- package/dist/plugins/kysely/shared.d.ts +0 -59
- package/dist/plugins/kysely/shared.d.ts.map +0 -1
- package/dist/plugins/kysely/shared.js +0 -247
- package/dist/plugins/kysely/shared.js.map +0 -1
- package/dist/plugins/kysely/types.d.ts +0 -22
- package/dist/plugins/kysely/types.d.ts.map +0 -1
- package/dist/plugins/kysely/types.js +0 -428
- package/dist/plugins/kysely/types.js.map +0 -1
- package/dist/services/artifact-store.d.ts +0 -65
- package/dist/services/artifact-store.d.ts.map +0 -1
- package/dist/services/artifact-store.js +0 -57
- package/dist/services/artifact-store.js.map +0 -1
- package/dist/services/core-providers.d.ts +0 -15
- package/dist/services/core-providers.d.ts.map +0 -1
- package/dist/services/core-providers.js +0 -23
- package/dist/services/core-providers.js.map +0 -1
- package/dist/services/emissions.d.ts +0 -103
- package/dist/services/emissions.d.ts.map +0 -1
- package/dist/services/emissions.js +0 -241
- package/dist/services/emissions.js.map +0 -1
- package/dist/services/execution.d.ts +0 -35
- package/dist/services/execution.d.ts.map +0 -1
- package/dist/services/execution.js +0 -86
- package/dist/services/execution.js.map +0 -1
- package/dist/services/file-builder.d.ts +0 -85
- package/dist/services/file-builder.d.ts.map +0 -1
- package/dist/services/file-builder.js +0 -112
- package/dist/services/file-builder.js.map +0 -1
- package/dist/services/plugin-meta.d.ts +0 -33
- package/dist/services/plugin-meta.d.ts.map +0 -1
- package/dist/services/plugin-meta.js +0 -24
- package/dist/services/plugin-meta.js.map +0 -1
- package/dist/services/plugin-runner.d.ts +0 -42
- package/dist/services/plugin-runner.d.ts.map +0 -1
- package/dist/services/plugin-runner.js +0 -84
- package/dist/services/plugin-runner.js.map +0 -1
- package/dist/services/plugin.d.ts +0 -421
- package/dist/services/plugin.d.ts.map +0 -1
- package/dist/services/plugin.js +0 -197
- package/dist/services/plugin.js.map +0 -1
- package/dist/services/resolution.d.ts +0 -38
- package/dist/services/resolution.d.ts.map +0 -1
- package/dist/services/resolution.js +0 -242
- package/dist/services/resolution.js.map +0 -1
- package/dist/services/service-registry.d.ts +0 -74
- package/dist/services/service-registry.d.ts.map +0 -1
- package/dist/services/service-registry.js +0 -61
- package/dist/services/service-registry.js.map +0 -1
- package/dist/services/symbols.d.ts +0 -144
- package/dist/services/symbols.d.ts.map +0 -1
- package/dist/services/symbols.js +0 -144
- package/dist/services/symbols.js.map +0 -1
|
@@ -0,0 +1,436 @@
|
|
|
1
|
+
import recast from "recast";
|
|
2
|
+
import { Context, Effect, Schema } from "effect";
|
|
3
|
+
const b = recast.types.builders;
|
|
4
|
+
function toExpr(node) {
|
|
5
|
+
return node;
|
|
6
|
+
}
|
|
7
|
+
// =============================================================================
|
|
8
|
+
// Error Types
|
|
9
|
+
// =============================================================================
|
|
10
|
+
/**
|
|
11
|
+
* Error thrown when two plugins try to register the same capability.
|
|
12
|
+
*/
|
|
13
|
+
export class SymbolCollision extends Schema.TaggedError()("SymbolCollision", {
|
|
14
|
+
message: Schema.String,
|
|
15
|
+
capability: Schema.String,
|
|
16
|
+
existingSymbol: Schema.String,
|
|
17
|
+
newSymbol: Schema.String,
|
|
18
|
+
}) {
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Error when trying to get a handle for an unregistered capability.
|
|
22
|
+
*/
|
|
23
|
+
export class CapabilityNotFound extends Schema.TaggedError()("CapabilityNotFound", {
|
|
24
|
+
message: Schema.String,
|
|
25
|
+
capability: Schema.String,
|
|
26
|
+
}) {
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Error when multiple plugins try to provide the same capability category.
|
|
30
|
+
*/
|
|
31
|
+
export class CategoryConflict extends Schema.TaggedError()("CategoryConflict", {
|
|
32
|
+
message: Schema.String,
|
|
33
|
+
category: Schema.String,
|
|
34
|
+
existingProvider: Schema.String,
|
|
35
|
+
newProvider: Schema.String,
|
|
36
|
+
}) {
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Creates a SymbolHandle that tracks cross-references.
|
|
40
|
+
*
|
|
41
|
+
* @param decl - The symbol being referenced
|
|
42
|
+
* @param metadata - Optional metadata from render phase (may include consume callback)
|
|
43
|
+
* @param onReference - Callback when ref() or call() is invoked (for import tracking)
|
|
44
|
+
*/
|
|
45
|
+
export function createSymbolHandle(decl, metadata, onReference) {
|
|
46
|
+
// Extract consume callback from metadata if present
|
|
47
|
+
const consumeFn = metadata?.consume;
|
|
48
|
+
return {
|
|
49
|
+
name: decl.name,
|
|
50
|
+
capability: decl.capability,
|
|
51
|
+
metadata,
|
|
52
|
+
ref: () => {
|
|
53
|
+
onReference?.(decl.capability);
|
|
54
|
+
return b.identifier(decl.name);
|
|
55
|
+
},
|
|
56
|
+
call: (...args) => {
|
|
57
|
+
onReference?.(decl.capability);
|
|
58
|
+
return b.callExpression(b.identifier(decl.name), args.map(arg => toExpr(arg)));
|
|
59
|
+
},
|
|
60
|
+
consume: consumeFn
|
|
61
|
+
? (input) => {
|
|
62
|
+
onReference?.(decl.capability);
|
|
63
|
+
return consumeFn(input);
|
|
64
|
+
}
|
|
65
|
+
: undefined,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Effect Context tag for SymbolRegistry service.
|
|
70
|
+
* Plugins access this in render phase via `yield* SymbolRegistry`.
|
|
71
|
+
*/
|
|
72
|
+
export class SymbolRegistry extends Context.Tag("SymbolRegistry")() {
|
|
73
|
+
}
|
|
74
|
+
// =============================================================================
|
|
75
|
+
// SymbolRegistry Implementation
|
|
76
|
+
// =============================================================================
|
|
77
|
+
/**
|
|
78
|
+
* Internal registry implementation that tracks all declared symbols.
|
|
79
|
+
*
|
|
80
|
+
* Used during the two-phase plugin execution:
|
|
81
|
+
* 1. Declare phase: Plugins register symbols via register()
|
|
82
|
+
* 2. Render phase: Plugins lookup symbols via resolve()/import()
|
|
83
|
+
*
|
|
84
|
+
* During render phase, tracks cross-references between capabilities
|
|
85
|
+
* for import generation in the emit phase.
|
|
86
|
+
*/
|
|
87
|
+
export class SymbolRegistryImpl {
|
|
88
|
+
symbols = new Map();
|
|
89
|
+
rendered = new Map();
|
|
90
|
+
referenceCallbacks = new Map();
|
|
91
|
+
/**
|
|
92
|
+
* Category providers: Maps category name -> provider plugin name.
|
|
93
|
+
* e.g., "queries" -> "kysely", "schema" -> "zod"
|
|
94
|
+
* Used to resolve generic capability prefixes to implementation-specific ones.
|
|
95
|
+
*/
|
|
96
|
+
categoryProviders = new Map();
|
|
97
|
+
/**
|
|
98
|
+
* Cross-reference tracking: Maps source capability -> set of referenced capabilities.
|
|
99
|
+
* Populated during render phase when registry.import(cap).ref() is called.
|
|
100
|
+
*/
|
|
101
|
+
references = new Map();
|
|
102
|
+
/**
|
|
103
|
+
* Current capabilities being rendered. Set by orchestrator before calling render().
|
|
104
|
+
* When a handle's ref()/call() is invoked, edges are added from these to the target.
|
|
105
|
+
*
|
|
106
|
+
* When forSymbol() is active, this contains only the single scoped capability.
|
|
107
|
+
*/
|
|
108
|
+
currentCapabilities = [];
|
|
109
|
+
/**
|
|
110
|
+
* Declarations owned by the current plugin.
|
|
111
|
+
* Set by orchestrator before render phase.
|
|
112
|
+
*/
|
|
113
|
+
ownedDeclarations = [];
|
|
114
|
+
/**
|
|
115
|
+
* Stack for nested forSymbol() calls (though nesting is unusual).
|
|
116
|
+
* Stores the previous currentCapabilities to restore after forSymbol() completes.
|
|
117
|
+
*/
|
|
118
|
+
capabilityStack = [];
|
|
119
|
+
/**
|
|
120
|
+
* Register a symbol declaration. Called during declare phase.
|
|
121
|
+
* Returns Effect that fails with SymbolCollision if capability already registered.
|
|
122
|
+
*/
|
|
123
|
+
register(decl) {
|
|
124
|
+
return Effect.gen(this, function* () {
|
|
125
|
+
if (this.symbols.has(decl.capability)) {
|
|
126
|
+
const existing = this.symbols.get(decl.capability);
|
|
127
|
+
return yield* new SymbolCollision({
|
|
128
|
+
message: `Capability "${decl.capability}" already registered by symbol "${existing.name}"`,
|
|
129
|
+
capability: decl.capability,
|
|
130
|
+
existingSymbol: existing.name,
|
|
131
|
+
newSymbol: decl.name,
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
this.symbols.set(decl.capability, decl);
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Store rendered output for a symbol. Called during render phase.
|
|
139
|
+
*/
|
|
140
|
+
setRendered(capability, node, metadata) {
|
|
141
|
+
this.rendered.set(capability, { node, metadata });
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Get rendered metadata for a capability.
|
|
145
|
+
*/
|
|
146
|
+
getRenderedMetadata(capability) {
|
|
147
|
+
return this.rendered.get(capability)?.metadata;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Register multiple declarations at once.
|
|
151
|
+
*/
|
|
152
|
+
registerAll(decls) {
|
|
153
|
+
return Effect.forEach(decls, decl => this.register(decl), { discard: true });
|
|
154
|
+
}
|
|
155
|
+
// ===========================================================================
|
|
156
|
+
// Category Provider Registration
|
|
157
|
+
// ===========================================================================
|
|
158
|
+
/**
|
|
159
|
+
* Register a plugin as the provider for a capability category.
|
|
160
|
+
* Only one plugin can provide each category.
|
|
161
|
+
*
|
|
162
|
+
* @param category - Category name (e.g., "queries", "schema")
|
|
163
|
+
* @param pluginName - Name of the plugin providing this category
|
|
164
|
+
*/
|
|
165
|
+
registerCategoryProvider(category, pluginName) {
|
|
166
|
+
return Effect.gen(this, function* () {
|
|
167
|
+
if (this.categoryProviders.has(category)) {
|
|
168
|
+
const existing = this.categoryProviders.get(category);
|
|
169
|
+
return yield* new CategoryConflict({
|
|
170
|
+
message: `Category "${category}" already provided by "${existing}", cannot add "${pluginName}"`,
|
|
171
|
+
category,
|
|
172
|
+
existingProvider: existing,
|
|
173
|
+
newProvider: pluginName,
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
this.categoryProviders.set(category, pluginName);
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Get the provider name for a category.
|
|
181
|
+
*/
|
|
182
|
+
getCategoryProvider(category) {
|
|
183
|
+
return this.categoryProviders.get(category);
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Resolve a generic capability to implementation-specific.
|
|
187
|
+
*
|
|
188
|
+
* Examples:
|
|
189
|
+
* - "queries:User:findById" → "queries:kysely:User:findById" (if kysely provides queries)
|
|
190
|
+
* - "schema:UserInsert" → "schema:zod:UserInsert" (if zod provides schema)
|
|
191
|
+
* - "queries:kysely:User:findById" → unchanged (already specific)
|
|
192
|
+
* - "type:User" → unchanged (no category provider needed)
|
|
193
|
+
*/
|
|
194
|
+
resolveCapability(capability) {
|
|
195
|
+
const colonIdx = capability.indexOf(":");
|
|
196
|
+
if (colonIdx === -1)
|
|
197
|
+
return capability;
|
|
198
|
+
const category = capability.slice(0, colonIdx);
|
|
199
|
+
const rest = capability.slice(colonIdx + 1);
|
|
200
|
+
const provider = this.categoryProviders.get(category);
|
|
201
|
+
if (!provider)
|
|
202
|
+
return capability; // No provider for this category
|
|
203
|
+
// Check if rest already starts with the provider name (already specific)
|
|
204
|
+
if (rest.startsWith(`${provider}:`))
|
|
205
|
+
return capability;
|
|
206
|
+
// Also check if rest starts with a known provider (different from current)
|
|
207
|
+
// This handles the case where the capability is already implementation-specific
|
|
208
|
+
// We can detect this by checking if there's another colon and the first segment
|
|
209
|
+
// looks like a provider name (lowercase, short)
|
|
210
|
+
const nextColonIdx = rest.indexOf(":");
|
|
211
|
+
if (nextColonIdx !== -1) {
|
|
212
|
+
const possibleProvider = rest.slice(0, nextColonIdx);
|
|
213
|
+
// If this looks like a provider name (e.g., "kysely", "zod", "drizzle"),
|
|
214
|
+
// assume it's already specific. Simple heuristic: no uppercase, short.
|
|
215
|
+
if (possibleProvider.length <= 15 && possibleProvider === possibleProvider.toLowerCase()) {
|
|
216
|
+
// Check if we have this registered as ANY category provider
|
|
217
|
+
for (const [, p] of this.categoryProviders) {
|
|
218
|
+
if (p === possibleProvider)
|
|
219
|
+
return capability; // Already specific
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
// Resolve: queries:User:findById → queries:kysely:User:findById
|
|
224
|
+
return `${category}:${provider}:${rest}`;
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Resolve a capability to its symbol reference.
|
|
228
|
+
* Automatically resolves generic capabilities to implementation-specific.
|
|
229
|
+
* Returns undefined if not found.
|
|
230
|
+
*/
|
|
231
|
+
resolve(capability) {
|
|
232
|
+
const resolved = this.resolveCapability(capability);
|
|
233
|
+
const decl = this.symbols.get(resolved);
|
|
234
|
+
if (!decl)
|
|
235
|
+
return undefined;
|
|
236
|
+
return { name: decl.name, capability: decl.capability };
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Check if a capability is registered.
|
|
240
|
+
* Automatically resolves generic capabilities to implementation-specific.
|
|
241
|
+
*/
|
|
242
|
+
has(capability) {
|
|
243
|
+
const resolved = this.resolveCapability(capability);
|
|
244
|
+
return this.symbols.has(resolved);
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Register a callback to be invoked when a symbol is referenced.
|
|
248
|
+
* Used for import tracking across files.
|
|
249
|
+
*/
|
|
250
|
+
onReference(capability, callback) {
|
|
251
|
+
const resolved = this.resolveCapability(capability);
|
|
252
|
+
if (!this.referenceCallbacks.has(resolved)) {
|
|
253
|
+
this.referenceCallbacks.set(resolved, new Set());
|
|
254
|
+
}
|
|
255
|
+
this.referenceCallbacks.get(resolved).add(callback);
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Get a SymbolHandle for referencing another symbol.
|
|
259
|
+
* The handle tracks when ref()/call() are used for import generation.
|
|
260
|
+
* Automatically resolves generic capabilities to implementation-specific.
|
|
261
|
+
* Returns Effect that fails with CapabilityNotFound if not registered.
|
|
262
|
+
*/
|
|
263
|
+
getHandle(capability) {
|
|
264
|
+
return Effect.gen(this, function* () {
|
|
265
|
+
const resolved = this.resolveCapability(capability);
|
|
266
|
+
const decl = this.symbols.get(resolved);
|
|
267
|
+
if (!decl) {
|
|
268
|
+
return yield* new CapabilityNotFound({
|
|
269
|
+
message: `Capability "${capability}" not found in registry (resolved to "${resolved}")`,
|
|
270
|
+
capability,
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
const metadata = this.getRenderedMetadata(resolved);
|
|
274
|
+
return createSymbolHandle(decl, metadata, cap => {
|
|
275
|
+
this.recordReference(cap);
|
|
276
|
+
const callbacks = this.referenceCallbacks.get(cap);
|
|
277
|
+
callbacks?.forEach(cb => cb(cap));
|
|
278
|
+
});
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Get a SymbolHandle synchronously (for service interface).
|
|
283
|
+
* Automatically resolves generic capabilities to implementation-specific.
|
|
284
|
+
* Throws if not found.
|
|
285
|
+
*/
|
|
286
|
+
import(capability) {
|
|
287
|
+
const resolved = this.resolveCapability(capability);
|
|
288
|
+
const decl = this.symbols.get(resolved);
|
|
289
|
+
if (!decl) {
|
|
290
|
+
throw new Error(`Capability "${capability}" not found in registry (resolved to "${resolved}")`);
|
|
291
|
+
}
|
|
292
|
+
const metadata = this.getRenderedMetadata(resolved);
|
|
293
|
+
return createSymbolHandle(decl, metadata, cap => {
|
|
294
|
+
this.recordReference(cap);
|
|
295
|
+
const callbacks = this.referenceCallbacks.get(cap);
|
|
296
|
+
callbacks?.forEach(cb => cb(cap));
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Get all registered symbols.
|
|
301
|
+
*/
|
|
302
|
+
all() {
|
|
303
|
+
return Array.from(this.symbols.values());
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Get symbols that match a capability pattern.
|
|
307
|
+
* Pattern uses simple prefix matching: "type:" matches all types.
|
|
308
|
+
* Note: For category-based queries, use the implementation-specific prefix
|
|
309
|
+
* (e.g., "queries:kysely:") or query by category pattern (e.g., "queries:").
|
|
310
|
+
*/
|
|
311
|
+
query(pattern) {
|
|
312
|
+
// If pattern is a bare category (e.g., "queries:"), resolve to provider prefix
|
|
313
|
+
const colonIdx = pattern.indexOf(":");
|
|
314
|
+
if (colonIdx !== -1 && pattern.endsWith(":")) {
|
|
315
|
+
const category = pattern.slice(0, colonIdx);
|
|
316
|
+
const provider = this.categoryProviders.get(category);
|
|
317
|
+
if (provider) {
|
|
318
|
+
// Query with resolved prefix: "queries:" → "queries:kysely:"
|
|
319
|
+
const resolvedPattern = `${category}:${provider}:`;
|
|
320
|
+
return this.all().filter(decl => decl.capability.startsWith(resolvedPattern));
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
return this.all().filter(decl => decl.capability.startsWith(pattern));
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Get the declaration for a specific capability.
|
|
327
|
+
* Automatically resolves generic capabilities to implementation-specific.
|
|
328
|
+
*/
|
|
329
|
+
get(capability) {
|
|
330
|
+
const resolved = this.resolveCapability(capability);
|
|
331
|
+
return this.symbols.get(resolved);
|
|
332
|
+
}
|
|
333
|
+
// ===========================================================================
|
|
334
|
+
// Reference Tracking (for render phase)
|
|
335
|
+
// ===========================================================================
|
|
336
|
+
/**
|
|
337
|
+
* Set the current capabilities being rendered.
|
|
338
|
+
* Called by orchestrator before each plugin's render() phase.
|
|
339
|
+
*/
|
|
340
|
+
setCurrentCapabilities(caps) {
|
|
341
|
+
this.currentCapabilities = caps;
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Clear current capabilities context.
|
|
345
|
+
* Called by orchestrator after each plugin's render() completes.
|
|
346
|
+
*/
|
|
347
|
+
clearCurrentCapabilities() {
|
|
348
|
+
this.currentCapabilities = [];
|
|
349
|
+
this.ownedDeclarations = [];
|
|
350
|
+
this.capabilityStack = [];
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* Set the declarations owned by the current plugin.
|
|
354
|
+
* Called by orchestrator before render phase.
|
|
355
|
+
*/
|
|
356
|
+
setOwnedDeclarations(decls) {
|
|
357
|
+
this.ownedDeclarations = decls;
|
|
358
|
+
}
|
|
359
|
+
/**
|
|
360
|
+
* Get declarations owned by the current plugin.
|
|
361
|
+
* Returns only the symbols declared by this plugin in Phase 1.
|
|
362
|
+
*/
|
|
363
|
+
own() {
|
|
364
|
+
return this.ownedDeclarations;
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* Scope cross-reference tracking to a single symbol.
|
|
368
|
+
* All `import().ref()` calls within the callback are attributed
|
|
369
|
+
* only to the specified capability.
|
|
370
|
+
*
|
|
371
|
+
* @param capability - The capability to scope refs to
|
|
372
|
+
* @param fn - Function to execute with scoped context
|
|
373
|
+
* @returns The result of fn()
|
|
374
|
+
*/
|
|
375
|
+
forSymbol(capability, fn) {
|
|
376
|
+
// Push current state onto stack
|
|
377
|
+
this.capabilityStack.push(this.currentCapabilities);
|
|
378
|
+
// Set single capability as current
|
|
379
|
+
this.currentCapabilities = [capability];
|
|
380
|
+
try {
|
|
381
|
+
return fn();
|
|
382
|
+
}
|
|
383
|
+
finally {
|
|
384
|
+
// Restore previous state
|
|
385
|
+
this.currentCapabilities = this.capabilityStack.pop() ?? [];
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
/**
|
|
389
|
+
* Record a reference from current capabilities to target.
|
|
390
|
+
* Called internally when SymbolHandle.ref() or .call() is invoked.
|
|
391
|
+
*/
|
|
392
|
+
recordReference(target) {
|
|
393
|
+
for (const source of this.currentCapabilities) {
|
|
394
|
+
if (source === target)
|
|
395
|
+
continue;
|
|
396
|
+
if (!this.references.has(source)) {
|
|
397
|
+
this.references.set(source, new Set());
|
|
398
|
+
}
|
|
399
|
+
this.references.get(source).add(target);
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
/**
|
|
403
|
+
* Get all capabilities referenced by a given capability.
|
|
404
|
+
*/
|
|
405
|
+
getReferences(capability) {
|
|
406
|
+
const refs = this.references.get(capability);
|
|
407
|
+
return refs ? Array.from(refs) : [];
|
|
408
|
+
}
|
|
409
|
+
/**
|
|
410
|
+
* Get the full reference map for emit phase.
|
|
411
|
+
* Maps: source capability -> capabilities it references
|
|
412
|
+
*/
|
|
413
|
+
getAllReferences() {
|
|
414
|
+
const result = new Map();
|
|
415
|
+
for (const [source, targets] of this.references) {
|
|
416
|
+
result.set(source, Array.from(targets));
|
|
417
|
+
}
|
|
418
|
+
return result;
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Create a service instance that conforms to SymbolRegistryService.
|
|
422
|
+
* Used by orchestrator to provide the service to plugins.
|
|
423
|
+
*/
|
|
424
|
+
toService() {
|
|
425
|
+
return {
|
|
426
|
+
resolve: cap => this.resolve(cap),
|
|
427
|
+
import: cap => this.import(cap),
|
|
428
|
+
query: pattern => this.query(pattern),
|
|
429
|
+
has: cap => this.has(cap),
|
|
430
|
+
getMetadata: cap => this.getRenderedMetadata(cap),
|
|
431
|
+
own: () => this.own(),
|
|
432
|
+
forSymbol: (cap, fn) => this.forSymbol(cap, fn),
|
|
433
|
+
};
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/runtime/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime Types for Two-Phase Plugin Execution
|
|
3
|
+
*/
|
|
4
|
+
import type { Effect } from "effect";
|
|
5
|
+
import type { IR } from "../services/ir.js";
|
|
6
|
+
import type { Inflection } from "../services/inflection.js";
|
|
7
|
+
import type { TypeHints } from "../services/type-hints.js";
|
|
8
|
+
import type { SymbolRegistry } from "./registry.js";
|
|
9
|
+
import type { DeclareError, RenderError } from "./errors.js";
|
|
10
|
+
import type { ExternalImport } from "./emit.js";
|
|
11
|
+
import type { FileRule } from "./file-assignment.js";
|
|
12
|
+
/**
|
|
13
|
+
* Capability identifier for symbol categorization.
|
|
14
|
+
*
|
|
15
|
+
* Examples:
|
|
16
|
+
* - "type:User" - A TypeScript type for the User entity
|
|
17
|
+
* - "schema:zod:User" - A Zod schema for User
|
|
18
|
+
* - "query:findUserById" - A query function
|
|
19
|
+
*
|
|
20
|
+
* Combined with `name`, forms a unique symbol identity.
|
|
21
|
+
*/
|
|
22
|
+
export type Capability = string;
|
|
23
|
+
/**
|
|
24
|
+
* What a plugin declares it will produce in Phase 1.
|
|
25
|
+
*
|
|
26
|
+
* Symbols are identified by `(name, capability)` tuple, allowing
|
|
27
|
+
* multiple plugins to create symbols with the same name but different
|
|
28
|
+
* capabilities (e.g., "User" as type vs "User" as Zod schema).
|
|
29
|
+
*/
|
|
30
|
+
export interface SymbolDeclaration {
|
|
31
|
+
/** Symbol name, e.g., "User", "findUserById" */
|
|
32
|
+
readonly name: string;
|
|
33
|
+
/** Capability identifier, e.g., "type:User", "query:findUserById" */
|
|
34
|
+
readonly capability: Capability;
|
|
35
|
+
/** Capabilities this symbol requires from other plugins */
|
|
36
|
+
readonly dependsOn?: readonly Capability[];
|
|
37
|
+
/**
|
|
38
|
+
* Explicit output path for this symbol.
|
|
39
|
+
* Relative to the output directory.
|
|
40
|
+
* If not set, the file assignment rules will determine the path.
|
|
41
|
+
*/
|
|
42
|
+
readonly outputPath?: string;
|
|
43
|
+
/**
|
|
44
|
+
* The base entity name for file grouping purposes.
|
|
45
|
+
* For shapes like "CommentInsert", this would be "Comment".
|
|
46
|
+
* If not set, falls back to parsing from capability/name.
|
|
47
|
+
*/
|
|
48
|
+
readonly baseEntityName?: string;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Reference to a symbol for cross-plugin dependencies.
|
|
52
|
+
*/
|
|
53
|
+
export interface SymbolRef {
|
|
54
|
+
/** Symbol name */
|
|
55
|
+
readonly name: string;
|
|
56
|
+
/** Capability identifier */
|
|
57
|
+
readonly capability: Capability;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* What `render()` returns for each symbol in Phase 2.
|
|
61
|
+
*
|
|
62
|
+
* Contains the AST node and optional export configuration.
|
|
63
|
+
*/
|
|
64
|
+
export interface RenderedSymbol {
|
|
65
|
+
/** Symbol name */
|
|
66
|
+
readonly name: string;
|
|
67
|
+
/** Capability identifier */
|
|
68
|
+
readonly capability: Capability;
|
|
69
|
+
/** AST node (recast/AST types - kept loose for flexibility) */
|
|
70
|
+
readonly node: unknown;
|
|
71
|
+
/** Export behavior: false=internal, true='named', 'default'=default export */
|
|
72
|
+
readonly exports?: boolean | "default" | "named";
|
|
73
|
+
/** Plugin-specific metadata for consumers (e.g., QueryDescriptor for query plugins) */
|
|
74
|
+
readonly metadata?: unknown;
|
|
75
|
+
/** External imports needed by this symbol */
|
|
76
|
+
readonly externalImports?: readonly ExternalImport[];
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Handle for referencing another symbol with automatic import tracking.
|
|
80
|
+
*
|
|
81
|
+
* Calling `.ref()` or `.call()` records the cross-reference, which the
|
|
82
|
+
* runtime uses to auto-generate imports between files.
|
|
83
|
+
*/
|
|
84
|
+
export interface SymbolHandle {
|
|
85
|
+
/** Symbol name */
|
|
86
|
+
readonly name: string;
|
|
87
|
+
/** Capability identifier */
|
|
88
|
+
readonly capability: Capability;
|
|
89
|
+
/** Plugin-specific metadata (e.g., QueryDescriptor for query symbols) */
|
|
90
|
+
readonly metadata?: unknown;
|
|
91
|
+
/** Use as type reference - returns AST node and tracks reference */
|
|
92
|
+
ref: () => unknown;
|
|
93
|
+
/** Use as call expression - returns AST node and tracks reference */
|
|
94
|
+
call: (...args: unknown[]) => unknown;
|
|
95
|
+
/**
|
|
96
|
+
* Consume/validate input through this symbol.
|
|
97
|
+
*
|
|
98
|
+
* Used by schema plugins to provide validation wrappers that HTTP plugins
|
|
99
|
+
* can use without knowing the specific schema library.
|
|
100
|
+
*
|
|
101
|
+
* Examples:
|
|
102
|
+
* - Zod: `Schema.parse(input)` or `Schema.safeParse(input)`
|
|
103
|
+
* - ArkType: `Schema(input)` or `Schema.assert(input)`
|
|
104
|
+
* - Valibot: `v.parse(Schema, input)`
|
|
105
|
+
*
|
|
106
|
+
* Returns undefined if this symbol doesn't support consumption (e.g., types).
|
|
107
|
+
*/
|
|
108
|
+
consume?: (input: unknown) => unknown;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Services available during declare phase.
|
|
112
|
+
* Plugins access these via `yield* ServiceTag`.
|
|
113
|
+
*/
|
|
114
|
+
export type DeclareServices = IR | Inflection | TypeHints;
|
|
115
|
+
/**
|
|
116
|
+
* Services available during render phase.
|
|
117
|
+
* Includes DeclareServices plus SymbolRegistry for cross-plugin references.
|
|
118
|
+
*/
|
|
119
|
+
export type RenderServices = DeclareServices | SymbolRegistry;
|
|
120
|
+
/**
|
|
121
|
+
* Plugin interface for two-phase code generation.
|
|
122
|
+
*
|
|
123
|
+
* Plugins are Effects that access services and return immutable data.
|
|
124
|
+
*
|
|
125
|
+
* Example:
|
|
126
|
+
* ```typescript
|
|
127
|
+
* const typesPlugin: Plugin = {
|
|
128
|
+
* name: "types",
|
|
129
|
+
* provides: ["type:User"],
|
|
130
|
+
*
|
|
131
|
+
* declare: Effect.gen(function* () {
|
|
132
|
+
* const ir = yield* IR
|
|
133
|
+
* return Array.from(ir.entities.values())
|
|
134
|
+
* .filter(isTableEntity)
|
|
135
|
+
* .map(e => ({ name: e.name, capability: `type:${e.name}` }))
|
|
136
|
+
* }),
|
|
137
|
+
*
|
|
138
|
+
* render: Effect.gen(function* () {
|
|
139
|
+
* const ir = yield* IR
|
|
140
|
+
* // ... generate AST
|
|
141
|
+
* return renderedSymbols
|
|
142
|
+
* }),
|
|
143
|
+
* }
|
|
144
|
+
* ```
|
|
145
|
+
*/
|
|
146
|
+
export interface Plugin {
|
|
147
|
+
/** Plugin name for error messages and debugging */
|
|
148
|
+
readonly name: string;
|
|
149
|
+
/**
|
|
150
|
+
* Capabilities this plugin provides to the system.
|
|
151
|
+
*
|
|
152
|
+
* Can include:
|
|
153
|
+
* - **Category declarations**: e.g., `"queries"`, `"schema"` - declares this plugin
|
|
154
|
+
* as THE provider for that category. Only one plugin can provide each category.
|
|
155
|
+
* Consumer plugins use generic prefixes that resolve to the registered provider.
|
|
156
|
+
* - **Specific capabilities**: e.g., `"type:User"` - declares a specific symbol.
|
|
157
|
+
*
|
|
158
|
+
* For category providers, the registry resolves generic capabilities:
|
|
159
|
+
* - `queries:User:findById` → `queries:kysely:User:findById` (if kysely provides "queries")
|
|
160
|
+
* - `schema:UserInsert` → `schema:zod:UserInsert` (if zod provides "schema")
|
|
161
|
+
*/
|
|
162
|
+
readonly provides: readonly Capability[];
|
|
163
|
+
/** Capabilities this plugin requires from other plugins */
|
|
164
|
+
readonly consumes?: readonly Capability[];
|
|
165
|
+
/**
|
|
166
|
+
* Capabilities to import during render phase.
|
|
167
|
+
* These will be tracked as cross-references for import generation.
|
|
168
|
+
* Alternative to calling registry.import() in render Effect.
|
|
169
|
+
*/
|
|
170
|
+
readonly renderWithImports?: readonly Capability[];
|
|
171
|
+
/**
|
|
172
|
+
* Default file assignment rules for symbols this plugin produces.
|
|
173
|
+
* Users can override these via fileOverrides in their config.
|
|
174
|
+
* First matching rule wins.
|
|
175
|
+
*/
|
|
176
|
+
readonly fileDefaults?: readonly FileRule[];
|
|
177
|
+
/** Phase 1: Declare symbols (Effect with DeclareServices) */
|
|
178
|
+
readonly declare: Effect.Effect<readonly SymbolDeclaration[], DeclareError, DeclareServices>;
|
|
179
|
+
/** Phase 2: Render symbol bodies (Effect with RenderServices) */
|
|
180
|
+
readonly render: Effect.Effect<readonly RenderedSymbol[], RenderError, RenderServices>;
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD;;;;;;;;;GASG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAEhC;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,gDAAgD;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,qEAAqE;IACrE,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAEhC,2DAA2D;IAC3D,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAE3C;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAE7B;;;;OAIG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,kBAAkB;IAClB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,4BAA4B;IAC5B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;CACjC;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,kBAAkB;IAClB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,4BAA4B;IAC5B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAEhC,+DAA+D;IAC/D,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAEvB,8EAA8E;IAC9E,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;IAEjD,uFAAuF;IACvF,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAE5B,6CAA6C;IAC7C,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;CACtD;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,kBAAkB;IAClB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,4BAA4B;IAC5B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAEhC,yEAAyE;IACzE,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAE5B,oEAAoE;IACpE,GAAG,EAAE,MAAM,OAAO,CAAC;IAEnB,qEAAqE;IACrE,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;IAEtC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;CACvC;AAMD;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,EAAE,GAAG,UAAU,GAAG,SAAS,CAAC;AAE1D;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,eAAe,GAAG,cAAc,CAAC;AAM9D;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,WAAW,MAAM;IACrB,mDAAmD;IACnD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,UAAU,EAAE,CAAC;IAEzC,2DAA2D;IAC3D,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAE1C;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAEnD;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;IAE5C,6DAA6D;IAC7D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,iBAAiB,EAAE,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;IAE7F,iEAAiE;IACjE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,cAAc,EAAE,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;CACxF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":""}
|