@danielfgray/pg-sourcerer 0.3.0 → 0.5.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
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* FileBuilder - Fluent API for structured file emission
|
|
3
|
-
*
|
|
4
|
-
* Provides a builder pattern for constructing files with:
|
|
5
|
-
* - Header comments
|
|
6
|
-
* - Import declarations (resolved after all plugins run)
|
|
7
|
-
* - AST program body with symbol metadata extraction
|
|
8
|
-
*/
|
|
9
|
-
import recast from "recast";
|
|
10
|
-
// =============================================================================
|
|
11
|
-
// Type Guards
|
|
12
|
-
// =============================================================================
|
|
13
|
-
function isSymbolProgram(prog) {
|
|
14
|
-
return "_tag" in prog && prog._tag === "SymbolProgram";
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Create a FileBuilder instance
|
|
18
|
-
*/
|
|
19
|
-
export function createFileBuilder(path, plugin, emissions, symbolRegistry) {
|
|
20
|
-
const state = {
|
|
21
|
-
path,
|
|
22
|
-
plugin,
|
|
23
|
-
headers: [],
|
|
24
|
-
imports: [],
|
|
25
|
-
statements: [],
|
|
26
|
-
symbols: [],
|
|
27
|
-
rawContent: null,
|
|
28
|
-
};
|
|
29
|
-
const builder = {
|
|
30
|
-
header(content) {
|
|
31
|
-
if (typeof content === "string") {
|
|
32
|
-
state.headers.push(content);
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
// Convert statements to string via placeholder
|
|
36
|
-
// For now, just store a marker - actual serialization happens in emit()
|
|
37
|
-
throw new Error("AST headers not yet implemented - use string headers for now");
|
|
38
|
-
}
|
|
39
|
-
return builder;
|
|
40
|
-
},
|
|
41
|
-
import(ref) {
|
|
42
|
-
state.imports.push(ref);
|
|
43
|
-
return builder;
|
|
44
|
-
},
|
|
45
|
-
ast(program) {
|
|
46
|
-
if (state.rawContent !== null) {
|
|
47
|
-
throw new Error(`Cannot mix ast() and content() for file ${state.path}`);
|
|
48
|
-
}
|
|
49
|
-
if (isSymbolProgram(program)) {
|
|
50
|
-
// Extract statements and symbols
|
|
51
|
-
state.statements.push(...program.node.body);
|
|
52
|
-
state.symbols.push(...program.symbols);
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
// Plain n.Program - just extract statements
|
|
56
|
-
state.statements.push(...program.body);
|
|
57
|
-
}
|
|
58
|
-
return builder;
|
|
59
|
-
},
|
|
60
|
-
content(text) {
|
|
61
|
-
if (state.statements.length > 0) {
|
|
62
|
-
throw new Error(`Cannot mix content() and ast() for file ${state.path}`);
|
|
63
|
-
}
|
|
64
|
-
state.rawContent =
|
|
65
|
-
state.rawContent !== null ? state.rawContent + text : text;
|
|
66
|
-
return builder;
|
|
67
|
-
},
|
|
68
|
-
emit() {
|
|
69
|
-
// Register all symbols with file path
|
|
70
|
-
for (const meta of state.symbols) {
|
|
71
|
-
const baseSymbol = {
|
|
72
|
-
name: meta.name,
|
|
73
|
-
file: state.path,
|
|
74
|
-
capability: meta.capability,
|
|
75
|
-
entity: meta.entity,
|
|
76
|
-
isType: meta.isType,
|
|
77
|
-
isDefault: meta.isDefault ?? false,
|
|
78
|
-
};
|
|
79
|
-
const symbol = meta.shape !== undefined
|
|
80
|
-
? { ...baseSymbol, shape: meta.shape }
|
|
81
|
-
: baseSymbol;
|
|
82
|
-
symbolRegistry.register(symbol, state.plugin);
|
|
83
|
-
}
|
|
84
|
-
// Build header string
|
|
85
|
-
const headerStr = state.headers.length > 0 ? state.headers.join("\n") + "\n" : undefined;
|
|
86
|
-
if (state.rawContent !== null) {
|
|
87
|
-
// Raw content mode
|
|
88
|
-
const fullContent = headerStr
|
|
89
|
-
? headerStr + state.rawContent
|
|
90
|
-
: state.rawContent;
|
|
91
|
-
emissions.emit(state.path, fullContent, state.plugin);
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
94
|
-
// AST mode - create program and emit via emitAst
|
|
95
|
-
// Import resolution will happen in a later pass
|
|
96
|
-
const b = recast.types.builders;
|
|
97
|
-
// Type assertion needed: recast's StatementKind is compatible with n.Statement
|
|
98
|
-
const program = b.program(state.statements);
|
|
99
|
-
// Emit AST with imports for resolution during serializeAst
|
|
100
|
-
emissions.emitAst(state.path, program, state.plugin, headerStr, state.imports.length > 0 ? state.imports : undefined);
|
|
101
|
-
}
|
|
102
|
-
},
|
|
103
|
-
};
|
|
104
|
-
return builder;
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Create a factory that produces FileBuilders with shared context
|
|
108
|
-
*/
|
|
109
|
-
export function createFileBuilderFactory(plugin, emissions, symbolRegistry) {
|
|
110
|
-
return (path) => createFileBuilder(path, plugin, emissions, symbolRegistry);
|
|
111
|
-
}
|
|
112
|
-
//# sourceMappingURL=file-builder.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file-builder.js","sourceRoot":"","sources":["../../src/services/file-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Plugin Meta Service
|
|
3
|
-
*
|
|
4
|
-
* Provides metadata about the currently executing plugin.
|
|
5
|
-
* This is a per-plugin value - a new layer is created for each plugin.
|
|
6
|
-
*/
|
|
7
|
-
import { Context } from "effect";
|
|
8
|
-
/**
|
|
9
|
-
* Plugin metadata interface
|
|
10
|
-
*/
|
|
11
|
-
export interface PluginMetaInfo {
|
|
12
|
-
/** The plugin's name */
|
|
13
|
-
readonly name: string;
|
|
14
|
-
}
|
|
15
|
-
declare const PluginMeta_base: Context.TagClass<PluginMeta, "PluginMeta", PluginMetaInfo>;
|
|
16
|
-
/**
|
|
17
|
-
* PluginMeta service tag
|
|
18
|
-
*
|
|
19
|
-
* Usage in plugins:
|
|
20
|
-
* ```typescript
|
|
21
|
-
* const meta = yield* PluginMeta
|
|
22
|
-
* console.log(`Running plugin: ${meta.name}`)
|
|
23
|
-
* ```
|
|
24
|
-
*
|
|
25
|
-
* Layer is created per-plugin by PluginRunner:
|
|
26
|
-
* ```typescript
|
|
27
|
-
* const metaLayer = Layer.succeed(PluginMeta, { name: plugin.name })
|
|
28
|
-
* ```
|
|
29
|
-
*/
|
|
30
|
-
export declare class PluginMeta extends PluginMeta_base {
|
|
31
|
-
}
|
|
32
|
-
export {};
|
|
33
|
-
//# sourceMappingURL=plugin-meta.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-meta.d.ts","sourceRoot":"","sources":["../../src/services/plugin-meta.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAEhC;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,wBAAwB;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,UAAW,SAAQ,eAAuD;CAAG"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Plugin Meta Service
|
|
3
|
-
*
|
|
4
|
-
* Provides metadata about the currently executing plugin.
|
|
5
|
-
* This is a per-plugin value - a new layer is created for each plugin.
|
|
6
|
-
*/
|
|
7
|
-
import { Context } from "effect";
|
|
8
|
-
/**
|
|
9
|
-
* PluginMeta service tag
|
|
10
|
-
*
|
|
11
|
-
* Usage in plugins:
|
|
12
|
-
* ```typescript
|
|
13
|
-
* const meta = yield* PluginMeta
|
|
14
|
-
* console.log(`Running plugin: ${meta.name}`)
|
|
15
|
-
* ```
|
|
16
|
-
*
|
|
17
|
-
* Layer is created per-plugin by PluginRunner:
|
|
18
|
-
* ```typescript
|
|
19
|
-
* const metaLayer = Layer.succeed(PluginMeta, { name: plugin.name })
|
|
20
|
-
* ```
|
|
21
|
-
*/
|
|
22
|
-
export class PluginMeta extends Context.Tag("PluginMeta")() {
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=plugin-meta.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-meta.js","sourceRoot":"","sources":["../../src/services/plugin-meta.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAUhC;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,UAAW,SAAQ,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAA8B;CAAG"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Plugin Runner Service
|
|
3
|
-
*
|
|
4
|
-
* Orchestrates the plugin system: registration → resolution → execution.
|
|
5
|
-
*/
|
|
6
|
-
import { Effect } from "effect";
|
|
7
|
-
import { type Plugin, type PluginError } from "./plugin.js";
|
|
8
|
-
import { type EmissionBuffer } from "./emissions.js";
|
|
9
|
-
import { type SymbolRegistry } from "./symbols.js";
|
|
10
|
-
import { EmitConflict, SymbolConflict, UndefinedReference } from "../errors.js";
|
|
11
|
-
import type { SemanticIR } from "../ir/semantic-ir.js";
|
|
12
|
-
import type { TypeHintRegistry } from "./type-hints.js";
|
|
13
|
-
import type { CoreInflection } from "./inflection.js";
|
|
14
|
-
/**
|
|
15
|
-
* Context required to run plugins.
|
|
16
|
-
* Contains the IR and services that all plugins need access to.
|
|
17
|
-
*/
|
|
18
|
-
export interface PluginRunContext {
|
|
19
|
-
readonly ir: SemanticIR;
|
|
20
|
-
readonly typeHints: TypeHintRegistry;
|
|
21
|
-
readonly inflection: CoreInflection;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Result of running plugins
|
|
25
|
-
*/
|
|
26
|
-
export interface PluginRunResult {
|
|
27
|
-
readonly emissions: EmissionBuffer;
|
|
28
|
-
readonly symbols: SymbolRegistry;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Errors that can occur during plugin execution
|
|
32
|
-
*/
|
|
33
|
-
export type PluginRunError = PluginError | EmitConflict | SymbolConflict | UndefinedReference;
|
|
34
|
-
/**
|
|
35
|
-
* Run plugins through the full pipeline.
|
|
36
|
-
*
|
|
37
|
-
* @param plugins - Plugins to run (from config.plugins)
|
|
38
|
-
* @param context - IR, type hints, and inflection for plugins to access
|
|
39
|
-
* @returns Effect with emissions and symbols
|
|
40
|
-
*/
|
|
41
|
-
export declare const runPlugins: (plugins: readonly Plugin[], context: PluginRunContext) => Effect.Effect<PluginRunResult, PluginRunError>;
|
|
42
|
-
//# sourceMappingURL=plugin-runner.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-runner.d.ts","sourceRoot":"","sources":["../../src/services/plugin-runner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EACL,KAAK,MAAM,EACX,KAAK,WAAW,EAEjB,MAAM,aAAa,CAAA;AAGpB,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC1E,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,cAAc,CAAA;AAGxE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAE/E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAMrD;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAA;IACvB,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAA;IACpC,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAA;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAA;IAClC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAA;CACjC;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,WAAW,GACX,YAAY,GACZ,cAAc,GACd,kBAAkB,CAAA;AAMtB;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,GACrB,SAAS,SAAS,MAAM,EAAE,EAC1B,SAAS,gBAAgB,KACxB,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,cAAc,CA2E5C,CAAA"}
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Plugin Runner Service
|
|
3
|
-
*
|
|
4
|
-
* Orchestrates the plugin system: registration → resolution → execution.
|
|
5
|
-
*/
|
|
6
|
-
import { Effect } from "effect";
|
|
7
|
-
import { createPluginRegistry, } from "./plugin.js";
|
|
8
|
-
import { resolve } from "./resolution.js";
|
|
9
|
-
import { execute } from "./execution.js";
|
|
10
|
-
import { createEmissionBuffer } from "./emissions.js";
|
|
11
|
-
import { createSymbolRegistry } from "./symbols.js";
|
|
12
|
-
import { createServiceRegistry } from "./service-registry.js";
|
|
13
|
-
import { createFileBuilderFactory } from "./file-builder.js";
|
|
14
|
-
import { SymbolConflict, UndefinedReference } from "../errors.js";
|
|
15
|
-
import { conjure } from "../lib/conjure.js";
|
|
16
|
-
// ============================================================================
|
|
17
|
-
// Plugin Runner
|
|
18
|
-
// ============================================================================
|
|
19
|
-
/**
|
|
20
|
-
* Run plugins through the full pipeline.
|
|
21
|
-
*
|
|
22
|
-
* @param plugins - Plugins to run (from config.plugins)
|
|
23
|
-
* @param context - IR, type hints, and inflection for plugins to access
|
|
24
|
-
* @returns Effect with emissions and symbols
|
|
25
|
-
*/
|
|
26
|
-
export const runPlugins = (plugins, context) => Effect.gen(function* () {
|
|
27
|
-
// 1. Create shared state
|
|
28
|
-
const emissions = createEmissionBuffer();
|
|
29
|
-
const symbols = createSymbolRegistry();
|
|
30
|
-
const registry = createPluginRegistry();
|
|
31
|
-
// 2. Register all plugins
|
|
32
|
-
for (const plugin of plugins) {
|
|
33
|
-
registry.register(plugin);
|
|
34
|
-
}
|
|
35
|
-
// 3. Resolution phase - match requests to plugins, build DAG
|
|
36
|
-
const plan = yield* resolve(registry);
|
|
37
|
-
yield* Effect.logDebug(`Execution plan: ${plan.steps.length} steps`);
|
|
38
|
-
for (const step of plan.steps) {
|
|
39
|
-
yield* Effect.logDebug(` - ${step.provider.name}: ${step.kind}`);
|
|
40
|
-
}
|
|
41
|
-
// 4. Execution phase - run plugins in topological order
|
|
42
|
-
const serviceRegistry = createServiceRegistry();
|
|
43
|
-
const services = {
|
|
44
|
-
fileBuilder: createFileBuilderFactory("plugin-runner", emissions, symbols),
|
|
45
|
-
symbols,
|
|
46
|
-
ir: context.ir,
|
|
47
|
-
typeHints: context.typeHints,
|
|
48
|
-
inflection: context.inflection,
|
|
49
|
-
serviceRegistry,
|
|
50
|
-
};
|
|
51
|
-
yield* execute(plan, registry, services);
|
|
52
|
-
// 5. Serialize AST emissions (resolves imports)
|
|
53
|
-
emissions.serializeAst(conjure.print, symbols);
|
|
54
|
-
// 6. Check for unresolved symbol references
|
|
55
|
-
const unresolvedRefs = emissions.getUnresolvedRefs();
|
|
56
|
-
if (unresolvedRefs.length > 0) {
|
|
57
|
-
yield* Effect.fail(new UndefinedReference({
|
|
58
|
-
message: `Undefined symbol references: ${unresolvedRefs
|
|
59
|
-
.map((r) => `${r.capability}/${r.entity}${r.shape ? `/${r.shape}` : ""} (requested by ${r.plugin} in ${r.file})`)
|
|
60
|
-
.join(", ")}`,
|
|
61
|
-
references: unresolvedRefs.map((r) => ({
|
|
62
|
-
capability: r.capability,
|
|
63
|
-
entity: r.entity,
|
|
64
|
-
shape: r.shape,
|
|
65
|
-
requestedBy: r.plugin,
|
|
66
|
-
inFile: r.file,
|
|
67
|
-
})),
|
|
68
|
-
}));
|
|
69
|
-
}
|
|
70
|
-
// 7. Validate emissions for conflicts
|
|
71
|
-
yield* emissions.validate();
|
|
72
|
-
// 8. Validate symbols for collisions
|
|
73
|
-
const collisions = symbols.validate();
|
|
74
|
-
if (collisions.length > 0) {
|
|
75
|
-
yield* Effect.fail(new SymbolConflict({
|
|
76
|
-
message: `Symbol collision: "${collisions[0].symbol}" in ${collisions[0].file} from plugins: ${collisions[0].plugins.join(", ")}`,
|
|
77
|
-
symbol: collisions[0].symbol,
|
|
78
|
-
file: collisions[0].file,
|
|
79
|
-
plugins: collisions[0].plugins,
|
|
80
|
-
}));
|
|
81
|
-
}
|
|
82
|
-
return { emissions, symbols };
|
|
83
|
-
});
|
|
84
|
-
//# sourceMappingURL=plugin-runner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-runner.js","sourceRoot":"","sources":["../../src/services/plugin-runner.ts"],"names":[],"mappings":"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"}
|