@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
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Emission Buffer Service
|
|
3
|
-
*
|
|
4
|
-
* Buffers code emissions from plugins before writing to disk.
|
|
5
|
-
* Supports both string content and AST nodes (serialized by the plugin runner).
|
|
6
|
-
* AST emissions to the same file are merged automatically.
|
|
7
|
-
*/
|
|
8
|
-
import { Context, Effect, Layer } from "effect";
|
|
9
|
-
import type { namedTypes as n } from "ast-types";
|
|
10
|
-
import { EmitConflict } from "../errors.js";
|
|
11
|
-
import type { ImportRef } from "./file-builder.js";
|
|
12
|
-
import type { SymbolRegistry } from "./symbols.js";
|
|
13
|
-
/**
|
|
14
|
-
* Emission entry - a single file to be written
|
|
15
|
-
*/
|
|
16
|
-
export interface EmissionEntry {
|
|
17
|
-
readonly path: string;
|
|
18
|
-
readonly content: string;
|
|
19
|
-
readonly plugin: string;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* AST emission entry - buffered until serialization
|
|
23
|
-
*/
|
|
24
|
-
export interface AstEmissionEntry {
|
|
25
|
-
readonly path: string;
|
|
26
|
-
readonly ast: n.Program;
|
|
27
|
-
readonly plugin: string;
|
|
28
|
-
/** Optional header to prepend (e.g., comments) */
|
|
29
|
-
readonly header?: string;
|
|
30
|
-
/** Import requests to resolve during serialization */
|
|
31
|
-
readonly imports?: readonly ImportRef[];
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Unresolved symbol reference - tracked during import resolution
|
|
35
|
-
*/
|
|
36
|
-
export interface UnresolvedRef {
|
|
37
|
-
readonly capability: string;
|
|
38
|
-
readonly entity: string;
|
|
39
|
-
readonly shape?: string;
|
|
40
|
-
readonly plugin: string;
|
|
41
|
-
readonly file: string;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Emission buffer interface
|
|
45
|
-
*/
|
|
46
|
-
export interface EmissionBuffer {
|
|
47
|
-
/**
|
|
48
|
-
* Emit string content to a file (buffered)
|
|
49
|
-
*/
|
|
50
|
-
readonly emit: (path: string, content: string, plugin: string) => void;
|
|
51
|
-
/**
|
|
52
|
-
* Emit an AST program to a file (buffered, serialized later by runner)
|
|
53
|
-
* Multiple emissions to the same path are merged automatically.
|
|
54
|
-
*/
|
|
55
|
-
readonly emitAst: (path: string, ast: n.Program, plugin: string, header?: string, imports?: readonly ImportRef[]) => void;
|
|
56
|
-
/**
|
|
57
|
-
* Append to an already-emitted file (same plugin only, string emissions only)
|
|
58
|
-
*/
|
|
59
|
-
readonly appendEmit: (path: string, content: string, plugin: string) => void;
|
|
60
|
-
/**
|
|
61
|
-
* Get all string emissions
|
|
62
|
-
*/
|
|
63
|
-
readonly getAll: () => readonly EmissionEntry[];
|
|
64
|
-
/**
|
|
65
|
-
* Get all AST emissions (for serialization by runner)
|
|
66
|
-
*/
|
|
67
|
-
readonly getAstEmissions: () => readonly AstEmissionEntry[];
|
|
68
|
-
/**
|
|
69
|
-
* Serialize all AST emissions to string emissions.
|
|
70
|
-
* Called by the plugin runner after all plugins have run.
|
|
71
|
-
* Resolves imports via the provided SymbolRegistry.
|
|
72
|
-
*/
|
|
73
|
-
readonly serializeAst: (serialize: (ast: n.Program) => string, symbols: SymbolRegistry) => void;
|
|
74
|
-
/**
|
|
75
|
-
* Check for conflicts (same path from different plugins for string emissions)
|
|
76
|
-
* Note: AST emissions are merged, not conflicted.
|
|
77
|
-
*/
|
|
78
|
-
readonly validate: () => Effect.Effect<void, EmitConflict>;
|
|
79
|
-
/**
|
|
80
|
-
* Get unresolved symbol references (populated during serializeAst)
|
|
81
|
-
*/
|
|
82
|
-
readonly getUnresolvedRefs: () => readonly UnresolvedRef[];
|
|
83
|
-
/**
|
|
84
|
-
* Clear all emissions
|
|
85
|
-
*/
|
|
86
|
-
readonly clear: () => void;
|
|
87
|
-
}
|
|
88
|
-
declare const Emissions_base: Context.TagClass<Emissions, "Emissions", EmissionBuffer>;
|
|
89
|
-
/**
|
|
90
|
-
* EmissionBuffer service tag
|
|
91
|
-
*/
|
|
92
|
-
export declare class Emissions extends Emissions_base {
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Create a new emission buffer
|
|
96
|
-
*/
|
|
97
|
-
export declare function createEmissionBuffer(): EmissionBuffer;
|
|
98
|
-
/**
|
|
99
|
-
* Live layer - creates fresh emission buffer per use
|
|
100
|
-
*/
|
|
101
|
-
export declare const EmissionsLive: Layer.Layer<Emissions, never, never>;
|
|
102
|
-
export {};
|
|
103
|
-
//# sourceMappingURL=emissions.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"emissions.d.ts","sourceRoot":"","sources":["../../src/services/emissions.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAEL,OAAO,EACP,MAAM,EACN,KAAK,EAKN,MAAM,QAAQ,CAAC;AAChB,OAAO,KAAK,EAAE,UAAU,IAAI,CAAC,EAAE,MAAM,WAAW,CAAC;AAOjD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAmB,MAAM,mBAAmB,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,kDAAkD;IAClD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,sDAAsD;IACtD,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAEvE;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,CAChB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,CAAC,CAAC,OAAO,EACd,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,SAAS,SAAS,EAAE,KAC3B,IAAI,CAAC;IAEV;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAE7E;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,SAAS,aAAa,EAAE,CAAC;IAEhD;;OAEG;IACH,QAAQ,CAAC,eAAe,EAAE,MAAM,SAAS,gBAAgB,EAAE,CAAC;IAE5D;;;;OAIG;IACH,QAAQ,CAAC,YAAY,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,KAAK,MAAM,EAAE,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IAEhG;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAE3D;;OAEG;IACH,QAAQ,CAAC,iBAAiB,EAAE,MAAM,SAAS,aAAa,EAAE,CAAC;IAE3D;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;CAC5B;;AAED;;GAEG;AACH,qBAAa,SAAU,SAAQ,cAAqD;CAAG;AA0MvF;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,cAAc,CA+IrD;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,sCAAsD,CAAC"}
|
|
@@ -1,241 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Emission Buffer Service
|
|
3
|
-
*
|
|
4
|
-
* Buffers code emissions from plugins before writing to disk.
|
|
5
|
-
* Supports both string content and AST nodes (serialized by the plugin runner).
|
|
6
|
-
* AST emissions to the same file are merged automatically.
|
|
7
|
-
*/
|
|
8
|
-
import { Array as Arr, Context, Effect, Layer, MutableHashMap, MutableHashSet, Option, pipe, } from "effect";
|
|
9
|
-
import { EmitConflict } from "../errors.js";
|
|
10
|
-
/**
|
|
11
|
-
* EmissionBuffer service tag
|
|
12
|
-
*/
|
|
13
|
-
export class Emissions extends Context.Tag("Emissions")() {
|
|
14
|
-
}
|
|
15
|
-
// =============================================================================
|
|
16
|
-
// Import Resolution Helpers
|
|
17
|
-
// =============================================================================
|
|
18
|
-
import recast from "recast";
|
|
19
|
-
const b = recast.types.builders;
|
|
20
|
-
/** Normalize path for comparison (remove leading ./) */
|
|
21
|
-
const normalizePath = (path) => path.replace(/^\.\//, "");
|
|
22
|
-
/** Resolve an ImportRef to source/named/types/default/namespace */
|
|
23
|
-
function resolveImportRef(ref, forFile, symbols, onUnresolved) {
|
|
24
|
-
switch (ref.kind) {
|
|
25
|
-
case "symbol": {
|
|
26
|
-
const symbol = symbols.resolve(ref.ref);
|
|
27
|
-
if (!symbol) {
|
|
28
|
-
onUnresolved?.(ref, forFile);
|
|
29
|
-
return undefined;
|
|
30
|
-
}
|
|
31
|
-
// Skip import if symbol is in the same file (already declared locally)
|
|
32
|
-
if (normalizePath(symbol.file) === normalizePath(forFile))
|
|
33
|
-
return undefined;
|
|
34
|
-
const importStmt = symbols.importFor(symbol, forFile);
|
|
35
|
-
const base = {
|
|
36
|
-
source: importStmt.from,
|
|
37
|
-
named: [...importStmt.named],
|
|
38
|
-
types: [...importStmt.types],
|
|
39
|
-
};
|
|
40
|
-
return importStmt.default !== undefined
|
|
41
|
-
? { ...base, defaultImport: importStmt.default }
|
|
42
|
-
: base;
|
|
43
|
-
}
|
|
44
|
-
case "package":
|
|
45
|
-
case "relative": {
|
|
46
|
-
const base = {
|
|
47
|
-
source: ref.from,
|
|
48
|
-
named: ref.names ? [...ref.names] : [],
|
|
49
|
-
types: ref.types ? [...ref.types] : [],
|
|
50
|
-
namespace: ref.namespace,
|
|
51
|
-
};
|
|
52
|
-
return ref.default !== undefined ? { ...base, defaultImport: ref.default } : base;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Resolve imports and prepend import statements to AST
|
|
58
|
-
*/
|
|
59
|
-
function prependImports(ast, imports, forFile, symbols, onUnresolved) {
|
|
60
|
-
// Group imports by source path for merging
|
|
61
|
-
const bySource = pipe(imports, Arr.reduce(new Map(), (map, ref) => {
|
|
62
|
-
const resolved = resolveImportRef(ref, forFile, symbols, onUnresolved);
|
|
63
|
-
if (!resolved)
|
|
64
|
-
return map;
|
|
65
|
-
const { source, named, types, defaultImport, namespace } = resolved;
|
|
66
|
-
const existing = map.get(source) ?? { named: new Set(), types: new Set() };
|
|
67
|
-
named.forEach(n => existing.named.add(n));
|
|
68
|
-
types.forEach(t => existing.types.add(t));
|
|
69
|
-
if (defaultImport)
|
|
70
|
-
existing.default = defaultImport;
|
|
71
|
-
if (namespace)
|
|
72
|
-
existing.namespace = namespace;
|
|
73
|
-
map.set(source, existing);
|
|
74
|
-
return map;
|
|
75
|
-
}));
|
|
76
|
-
const statements = pipe([...bySource.entries()], Arr.flatMap(([source, { named, types, default: defaultImport, namespace }]) => {
|
|
77
|
-
const result = [];
|
|
78
|
-
// Namespace import: import * as foo from "..."
|
|
79
|
-
if (namespace) {
|
|
80
|
-
const namespaceSpecifier = b.importNamespaceSpecifier(b.identifier(namespace));
|
|
81
|
-
result.push(b.importDeclaration([namespaceSpecifier], b.stringLiteral(source)));
|
|
82
|
-
}
|
|
83
|
-
// Value imports (default + named) - only if no namespace import for this source
|
|
84
|
-
if (!namespace) {
|
|
85
|
-
const valueSpecifiers = [
|
|
86
|
-
...(defaultImport ? [b.importDefaultSpecifier(b.identifier(defaultImport))] : []),
|
|
87
|
-
...pipe([...named], Arr.map(name => b.importSpecifier(b.identifier(name), b.identifier(name)))),
|
|
88
|
-
];
|
|
89
|
-
if (valueSpecifiers.length > 0) {
|
|
90
|
-
result.push(b.importDeclaration(valueSpecifiers, b.stringLiteral(source)));
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
// Type imports as a separate type-only import declaration
|
|
94
|
-
if (types.size > 0) {
|
|
95
|
-
const typeSpecifiers = pipe([...types], Arr.map(name => b.importSpecifier(b.identifier(name), b.identifier(name))));
|
|
96
|
-
const typeImport = b.importDeclaration(typeSpecifiers, b.stringLiteral(source));
|
|
97
|
-
typeImport.importKind = "type";
|
|
98
|
-
result.push(typeImport);
|
|
99
|
-
}
|
|
100
|
-
return result;
|
|
101
|
-
}));
|
|
102
|
-
// Prepend imports to program body
|
|
103
|
-
return b.program([...statements, ...ast.body]);
|
|
104
|
-
}
|
|
105
|
-
// =============================================================================
|
|
106
|
-
// AST Emission Merging (Pure Functions)
|
|
107
|
-
// =============================================================================
|
|
108
|
-
/** Merge two import arrays */
|
|
109
|
-
const mergeImports = (a, b) => [
|
|
110
|
-
...(a ?? []),
|
|
111
|
-
...(b ?? []),
|
|
112
|
-
];
|
|
113
|
-
/** Merge two plugin attribution strings */
|
|
114
|
-
const mergePluginAttribution = (a, b) => `${a}, ${b}`;
|
|
115
|
-
/** Create an AST entry, only including optional fields when defined */
|
|
116
|
-
const makeAstEntry = (path, ast, plugin, header, imports) => pipe({ path, ast, plugin }, entry => (header !== undefined ? { ...entry, header } : entry), entry => (imports && imports.length > 0 ? { ...entry, imports } : entry));
|
|
117
|
-
/** Merge a new emission into an existing one (keeps first header) */
|
|
118
|
-
const mergeAstEntries = (existing, ast, plugin, _header, imports) => makeAstEntry(existing.path, b.program([...existing.ast.body, ...ast.body]), mergePluginAttribution(existing.plugin, plugin), existing.header, mergeImports(existing.imports, imports));
|
|
119
|
-
// =============================================================================
|
|
120
|
-
// Output Formatting (Pure Functions)
|
|
121
|
-
// =============================================================================
|
|
122
|
-
/** Ensure exactly one blank line before each export statement */
|
|
123
|
-
const ensureBlankLinesBeforeExports = (code) => code
|
|
124
|
-
.split("\n")
|
|
125
|
-
.reduce((acc, line) => {
|
|
126
|
-
const prevLine = acc[acc.length - 1];
|
|
127
|
-
const needsBlankLine = line.startsWith("export ") && prevLine !== undefined && prevLine !== "";
|
|
128
|
-
return needsBlankLine ? [...acc, "", line] : [...acc, line];
|
|
129
|
-
}, [])
|
|
130
|
-
.join("\n");
|
|
131
|
-
// =============================================================================
|
|
132
|
-
// Emission Buffer Implementation
|
|
133
|
-
// =============================================================================
|
|
134
|
-
/**
|
|
135
|
-
* Create a new emission buffer
|
|
136
|
-
*/
|
|
137
|
-
export function createEmissionBuffer() {
|
|
138
|
-
const emissions = MutableHashMap.empty();
|
|
139
|
-
const astEmissions = MutableHashMap.empty();
|
|
140
|
-
// Track plugins per path for string emission conflict detection
|
|
141
|
-
const stringEmitPlugins = MutableHashMap.empty();
|
|
142
|
-
// Track unresolved symbol references during import resolution
|
|
143
|
-
const unresolvedRefs = [];
|
|
144
|
-
return {
|
|
145
|
-
emit: (path, content, plugin) => {
|
|
146
|
-
// Track plugin for conflict detection
|
|
147
|
-
MutableHashMap.modifyAt(stringEmitPlugins, path, Option.match({
|
|
148
|
-
onNone: () => Option.some(MutableHashSet.make(plugin)),
|
|
149
|
-
onSome: set => Option.some(MutableHashSet.add(set, plugin)),
|
|
150
|
-
}));
|
|
151
|
-
MutableHashMap.set(emissions, path, { path, content, plugin });
|
|
152
|
-
},
|
|
153
|
-
emitAst: (path, ast, plugin, header, imports) => {
|
|
154
|
-
MutableHashMap.modifyAt(astEmissions, path, Option.match({
|
|
155
|
-
onNone: () => Option.some(makeAstEntry(path, ast, plugin, header, imports)),
|
|
156
|
-
onSome: existing => Option.some(mergeAstEntries(existing, ast, plugin, header, imports)),
|
|
157
|
-
}));
|
|
158
|
-
},
|
|
159
|
-
appendEmit: (path, content, plugin) => {
|
|
160
|
-
pipe(MutableHashMap.get(emissions, path), Option.match({
|
|
161
|
-
onNone: () => {
|
|
162
|
-
MutableHashMap.modifyAt(stringEmitPlugins, path, Option.match({
|
|
163
|
-
onNone: () => Option.some(MutableHashSet.make(plugin)),
|
|
164
|
-
onSome: set => Option.some(MutableHashSet.add(set, plugin)),
|
|
165
|
-
}));
|
|
166
|
-
MutableHashMap.set(emissions, path, { path, content, plugin });
|
|
167
|
-
},
|
|
168
|
-
onSome: existing => {
|
|
169
|
-
if (existing.plugin === plugin) {
|
|
170
|
-
MutableHashMap.set(emissions, path, {
|
|
171
|
-
path,
|
|
172
|
-
content: existing.content + content,
|
|
173
|
-
plugin,
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
|
-
else {
|
|
177
|
-
// Track conflict for validation
|
|
178
|
-
MutableHashMap.modifyAt(stringEmitPlugins, path, Option.match({
|
|
179
|
-
onNone: () => Option.some(MutableHashSet.make(plugin)),
|
|
180
|
-
onSome: set => Option.some(MutableHashSet.add(set, plugin)),
|
|
181
|
-
}));
|
|
182
|
-
}
|
|
183
|
-
},
|
|
184
|
-
}));
|
|
185
|
-
},
|
|
186
|
-
getAll: () => MutableHashMap.values(emissions),
|
|
187
|
-
getAstEmissions: () => MutableHashMap.values(astEmissions),
|
|
188
|
-
serializeAst: (serialize, symbols) => {
|
|
189
|
-
for (const entry of MutableHashMap.values(astEmissions)) {
|
|
190
|
-
// Generate import statements as code first
|
|
191
|
-
const importCode = entry.imports && entry.imports.length > 0
|
|
192
|
-
? serialize(prependImports(recast.types.builders.program([]), entry.imports, entry.path, symbols,
|
|
193
|
-
// Track unresolved refs with plugin context
|
|
194
|
-
(ref, file) => {
|
|
195
|
-
unresolvedRefs.push({
|
|
196
|
-
capability: ref.ref.capability,
|
|
197
|
-
entity: ref.ref.entity,
|
|
198
|
-
shape: ref.ref.shape,
|
|
199
|
-
plugin: entry.plugin,
|
|
200
|
-
file,
|
|
201
|
-
});
|
|
202
|
-
})) + "\n\n"
|
|
203
|
-
: "";
|
|
204
|
-
// Serialize the main AST body and ensure blank lines before exports
|
|
205
|
-
const bodyCode = serialize(entry.ast);
|
|
206
|
-
const formattedBody = ensureBlankLinesBeforeExports(bodyCode);
|
|
207
|
-
// Order: header → imports → body
|
|
208
|
-
const content = (entry.header ? entry.header : "") + importCode + formattedBody;
|
|
209
|
-
MutableHashMap.set(emissions, entry.path, {
|
|
210
|
-
path: entry.path,
|
|
211
|
-
content,
|
|
212
|
-
plugin: entry.plugin,
|
|
213
|
-
});
|
|
214
|
-
}
|
|
215
|
-
MutableHashMap.clear(astEmissions);
|
|
216
|
-
},
|
|
217
|
-
validate: () => pipe([...stringEmitPlugins], Arr.findFirst(([_, plugins]) => MutableHashSet.size(plugins) > 1), Option.match({
|
|
218
|
-
onNone: () => Effect.void,
|
|
219
|
-
onSome: ([path, plugins]) => {
|
|
220
|
-
const pluginList = [...plugins].join(", ");
|
|
221
|
-
return Effect.fail(new EmitConflict({
|
|
222
|
-
message: `Multiple plugins emitted to the same file: ${path} (plugins: ${pluginList})`,
|
|
223
|
-
path,
|
|
224
|
-
plugins: [...plugins],
|
|
225
|
-
}));
|
|
226
|
-
},
|
|
227
|
-
})),
|
|
228
|
-
getUnresolvedRefs: () => [...unresolvedRefs],
|
|
229
|
-
clear: () => {
|
|
230
|
-
MutableHashMap.clear(emissions);
|
|
231
|
-
MutableHashMap.clear(astEmissions);
|
|
232
|
-
MutableHashMap.clear(stringEmitPlugins);
|
|
233
|
-
unresolvedRefs.length = 0;
|
|
234
|
-
},
|
|
235
|
-
};
|
|
236
|
-
}
|
|
237
|
-
/**
|
|
238
|
-
* Live layer - creates fresh emission buffer per use
|
|
239
|
-
*/
|
|
240
|
-
export const EmissionsLive = Layer.sync(Emissions, () => createEmissionBuffer());
|
|
241
|
-
//# sourceMappingURL=emissions.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"emissions.js","sourceRoot":"","sources":["../../src/services/emissions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Execution Phase
|
|
3
|
-
*
|
|
4
|
-
* Executes providers in topological order, populating deferred resources.
|
|
5
|
-
*/
|
|
6
|
-
import { Effect } from "effect";
|
|
7
|
-
import type { FileBuilder } from "./file-builder.js";
|
|
8
|
-
import type { SymbolRegistry } from "./symbols.js";
|
|
9
|
-
import type { SemanticIR } from "../ir/semantic-ir.js";
|
|
10
|
-
import type { TypeHintRegistry } from "./type-hints.js";
|
|
11
|
-
import type { CoreInflection } from "./inflection.js";
|
|
12
|
-
import type { ServiceRegistry } from "./service-registry.js";
|
|
13
|
-
import { type PluginRegistry, PluginExecutionFailed } from "./plugin.js";
|
|
14
|
-
import { type ExecutionPlan } from "./resolution.js";
|
|
15
|
-
/**
|
|
16
|
-
* Services needed for execution.
|
|
17
|
-
*/
|
|
18
|
-
export interface ExecutionServices {
|
|
19
|
-
readonly fileBuilder: (path: string) => FileBuilder;
|
|
20
|
-
readonly symbols: SymbolRegistry;
|
|
21
|
-
readonly ir: SemanticIR;
|
|
22
|
-
readonly typeHints: TypeHintRegistry;
|
|
23
|
-
readonly inflection: CoreInflection;
|
|
24
|
-
readonly serviceRegistry: ServiceRegistry;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Execute all providers in the execution plan.
|
|
28
|
-
*
|
|
29
|
-
* @param plan - Topologically sorted execution plan from resolution phase
|
|
30
|
-
* @param registry - Provider registry with pending requests
|
|
31
|
-
* @param services - File builder and symbol registry
|
|
32
|
-
* @returns Effect that completes when all providers have executed
|
|
33
|
-
*/
|
|
34
|
-
export declare const execute: (plan: ExecutionPlan, registry: PluginRegistry, services: ExecutionServices) => Effect.Effect<void, PluginExecutionFailed>;
|
|
35
|
-
//# sourceMappingURL=execution.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../src/services/execution.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAQ,MAAM,EAAyB,MAAM,QAAQ,CAAA;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAClD,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;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAIL,KAAK,cAAc,EAEnB,qBAAqB,EAEtB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,KAAK,aAAa,EAAwB,MAAM,iBAAiB,CAAA;AAoB1E;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,WAAW,CAAA;IACnD,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAA;IAChC,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAA;IACvB,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAA;IACpC,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAA;IACnC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAA;CAC1C;AAsFD;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,GAClB,MAAM,aAAa,EACnB,UAAU,cAAc,EACxB,UAAU,iBAAiB,KAC1B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,qBAAqB,CAgBzC,CAAA"}
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Execution Phase
|
|
3
|
-
*
|
|
4
|
-
* Executes providers in topological order, populating deferred resources.
|
|
5
|
-
*/
|
|
6
|
-
import { Data, Effect, HashMap, Option, pipe } from "effect";
|
|
7
|
-
import { PluginExecutionFailed, } from "./plugin.js";
|
|
8
|
-
const makeResultKey = (kind, params) => Data.struct({
|
|
9
|
-
kind,
|
|
10
|
-
paramsJson: JSON.stringify(params ?? {}),
|
|
11
|
-
});
|
|
12
|
-
// ============================================================================
|
|
13
|
-
// Execution
|
|
14
|
-
// ============================================================================
|
|
15
|
-
/**
|
|
16
|
-
* Execute a single provider step.
|
|
17
|
-
*/
|
|
18
|
-
const executeStep = (step, resultCache, services) => {
|
|
19
|
-
// Gather dependency results
|
|
20
|
-
const depResults = step.dependencies.map((dep) => {
|
|
21
|
-
const key = makeResultKey(dep.kind, dep.params);
|
|
22
|
-
return pipe(HashMap.get(resultCache, key), Option.getOrThrow // Dependencies should already be resolved
|
|
23
|
-
);
|
|
24
|
-
});
|
|
25
|
-
// Build provider context
|
|
26
|
-
const ctx = {
|
|
27
|
-
ir: services.ir,
|
|
28
|
-
typeHints: services.typeHints,
|
|
29
|
-
inflection: services.inflection,
|
|
30
|
-
registerHandler: (kind, handler) => {
|
|
31
|
-
// Store handler in the service registry
|
|
32
|
-
// We wrap it to make it callable via services.get()
|
|
33
|
-
services.serviceRegistry.register(kind, handler);
|
|
34
|
-
},
|
|
35
|
-
request: (kind, params) => {
|
|
36
|
-
// First check if there's a registered handler
|
|
37
|
-
const handler = services.serviceRegistry.get(kind);
|
|
38
|
-
if (handler) {
|
|
39
|
-
return handler(params, ctx);
|
|
40
|
-
}
|
|
41
|
-
// Fall back to static result cache
|
|
42
|
-
const key = makeResultKey(kind, params);
|
|
43
|
-
return pipe(HashMap.get(resultCache, key), Option.getOrThrow);
|
|
44
|
-
},
|
|
45
|
-
file: services.fileBuilder,
|
|
46
|
-
symbols: services.symbols,
|
|
47
|
-
};
|
|
48
|
-
// Execute the plugin
|
|
49
|
-
return Effect.try({
|
|
50
|
-
try: () => step.provider.provide(step.params, depResults, ctx),
|
|
51
|
-
catch: (cause) => new PluginExecutionFailed({
|
|
52
|
-
message: `Plugin "${step.provider.name}" failed: ${cause instanceof Error ? cause.message : String(cause)}`,
|
|
53
|
-
plugin: step.provider.name,
|
|
54
|
-
kind: step.kind,
|
|
55
|
-
params: step.params,
|
|
56
|
-
cause,
|
|
57
|
-
}),
|
|
58
|
-
});
|
|
59
|
-
};
|
|
60
|
-
/**
|
|
61
|
-
* Populate deferred resources from the result cache.
|
|
62
|
-
*/
|
|
63
|
-
const populateDeferreds = (pendingRequests, resultCache) => {
|
|
64
|
-
for (const req of pendingRequests) {
|
|
65
|
-
const key = makeResultKey(req.kind, req.params);
|
|
66
|
-
const result = pipe(HashMap.get(resultCache, key), Option.getOrUndefined);
|
|
67
|
-
if (result !== undefined) {
|
|
68
|
-
const mutable = req.deferred;
|
|
69
|
-
mutable.resolved = true;
|
|
70
|
-
mutable.value = result;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
};
|
|
74
|
-
/**
|
|
75
|
-
* Execute all providers in the execution plan.
|
|
76
|
-
*
|
|
77
|
-
* @param plan - Topologically sorted execution plan from resolution phase
|
|
78
|
-
* @param registry - Provider registry with pending requests
|
|
79
|
-
* @param services - File builder and symbol registry
|
|
80
|
-
* @returns Effect that completes when all providers have executed
|
|
81
|
-
*/
|
|
82
|
-
export const execute = (plan, registry, services) => Effect.reduce(plan.steps, HashMap.empty(), (cache, step) => executeStep(step, cache, services).pipe(Effect.map((result) => {
|
|
83
|
-
const key = makeResultKey(step.kind, step.params);
|
|
84
|
-
return HashMap.set(cache, key, result);
|
|
85
|
-
}))).pipe(Effect.tap((cache) => Effect.sync(() => populateDeferreds(registry.getPendingRequests(), cache))), Effect.asVoid);
|
|
86
|
-
//# sourceMappingURL=execution.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"execution.js","sourceRoot":"","sources":["../../src/services/execution.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import type { namedTypes as n } from "ast-types";
|
|
2
|
-
import type { SymbolProgram } from "../lib/conjure.js";
|
|
3
|
-
import type { EmissionBuffer } from "./emissions.js";
|
|
4
|
-
import type { SymbolRegistry } from "./symbols.js";
|
|
5
|
-
/**
|
|
6
|
-
* Reference to a symbol from another file (resolved via SymbolRegistry)
|
|
7
|
-
*/
|
|
8
|
-
export interface SymbolImportRef {
|
|
9
|
-
readonly kind: "symbol";
|
|
10
|
-
readonly ref: {
|
|
11
|
-
readonly capability: string;
|
|
12
|
-
readonly entity: string;
|
|
13
|
-
readonly shape?: string;
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Import from an external package
|
|
18
|
-
*/
|
|
19
|
-
export interface PackageImportRef {
|
|
20
|
-
readonly kind: "package";
|
|
21
|
-
readonly names?: readonly string[];
|
|
22
|
-
readonly types?: readonly string[];
|
|
23
|
-
readonly default?: string;
|
|
24
|
-
/** Namespace import: import * as <namespace> from "..." */
|
|
25
|
-
readonly namespace?: string;
|
|
26
|
-
readonly from: string;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Import from a relative path (not tracked in SymbolRegistry)
|
|
30
|
-
*/
|
|
31
|
-
export interface RelativeImportRef {
|
|
32
|
-
readonly kind: "relative";
|
|
33
|
-
readonly names?: readonly string[];
|
|
34
|
-
readonly types?: readonly string[];
|
|
35
|
-
readonly default?: string;
|
|
36
|
-
/** Namespace import: import * as <namespace> from "..." */
|
|
37
|
-
readonly namespace?: string;
|
|
38
|
-
readonly from: string;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* All import reference types
|
|
42
|
-
*/
|
|
43
|
-
export type ImportRef = SymbolImportRef | PackageImportRef | RelativeImportRef;
|
|
44
|
-
/**
|
|
45
|
-
* Fluent builder for constructing files with imports, headers, and AST content
|
|
46
|
-
*/
|
|
47
|
-
export interface FileBuilder {
|
|
48
|
-
/**
|
|
49
|
-
* Add a header comment or statements to the file
|
|
50
|
-
* Can be called multiple times - headers are concatenated
|
|
51
|
-
*/
|
|
52
|
-
header(content: string | readonly n.Statement[]): FileBuilder;
|
|
53
|
-
/**
|
|
54
|
-
* Request an import (resolved after all plugins run)
|
|
55
|
-
*/
|
|
56
|
-
import(ref: ImportRef): FileBuilder;
|
|
57
|
-
/**
|
|
58
|
-
* Add AST content to the file
|
|
59
|
-
* Can be called multiple times - bodies are concatenated
|
|
60
|
-
* Extracts symbols from SymbolProgram automatically
|
|
61
|
-
*/
|
|
62
|
-
ast(program: n.Program | SymbolProgram): FileBuilder;
|
|
63
|
-
/**
|
|
64
|
-
* Add raw string content (mutually exclusive with ast())
|
|
65
|
-
*/
|
|
66
|
-
content(text: string): FileBuilder;
|
|
67
|
-
/**
|
|
68
|
-
* Finalize and emit the file
|
|
69
|
-
* Registers symbols and queues for serialization
|
|
70
|
-
*/
|
|
71
|
-
emit(): void;
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Create a FileBuilder instance
|
|
75
|
-
*/
|
|
76
|
-
export declare function createFileBuilder(path: string, plugin: string, emissions: EmissionBuffer, symbolRegistry: SymbolRegistry): FileBuilder;
|
|
77
|
-
/**
|
|
78
|
-
* Factory function type for creating FileBuilders
|
|
79
|
-
*/
|
|
80
|
-
export type FileBuilderFactory = (path: string) => FileBuilder;
|
|
81
|
-
/**
|
|
82
|
-
* Create a factory that produces FileBuilders with shared context
|
|
83
|
-
*/
|
|
84
|
-
export declare function createFileBuilderFactory(plugin: string, emissions: EmissionBuffer, symbolRegistry: SymbolRegistry): FileBuilderFactory;
|
|
85
|
-
//# sourceMappingURL=file-builder.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file-builder.d.ts","sourceRoot":"","sources":["../../src/services/file-builder.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,IAAI,CAAC,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,KAAK,EAAc,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,cAAc,EAAU,MAAM,cAAc,CAAA;AAM1D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;IACvB,QAAQ,CAAC,GAAG,EAAE;QACZ,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;QAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;QACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KACxB,CAAA;CACF;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,2DAA2D;IAC3D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,2DAA2D;IAC3D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,eAAe,GAAG,gBAAgB,GAAG,iBAAiB,CAAA;AAM9E;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,SAAS,EAAE,GAAG,WAAW,CAAA;IAE7D;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,SAAS,GAAG,WAAW,CAAA;IAEnC;;;;OAIG;IACH,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,GAAG,aAAa,GAAG,WAAW,CAAA;IAEpD;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAA;IAElC;;;OAGG;IACH,IAAI,IAAI,IAAI,CAAA;CACb;AA0BD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,cAAc,EACzB,cAAc,EAAE,cAAc,GAC7B,WAAW,CA2Gb;AAMD;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,WAAW,CAAA;AAE9D;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,cAAc,EACzB,cAAc,EAAE,cAAc,GAC7B,kBAAkB,CAGpB"}
|