@specverse/engines 6.33.1 → 6.35.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/dist/libs/instance-factories/communication/rabbitmq-events.yaml +11 -0
- package/dist/libs/instance-factories/controllers/fastify.yaml +11 -0
- package/dist/libs/instance-factories/managed/stripe-rest-sdk.yaml +78 -0
- package/dist/libs/instance-factories/managed/templates/stripe/stripe-client-generator.js +8 -0
- package/dist/libs/instance-factories/orms/prisma.yaml +11 -0
- package/dist/libs/instance-factories/services/templates/prisma/behavior-generator.js +4 -1
- package/dist/realize/index.d.ts.map +1 -1
- package/dist/realize/index.js +246 -1
- package/dist/realize/index.js.map +1 -1
- package/dist/realize/library/loader.d.ts.map +1 -1
- package/dist/realize/library/loader.js +81 -1
- package/dist/realize/library/loader.js.map +1 -1
- package/dist/realize/per-action-emitter.d.ts +11 -33
- package/dist/realize/per-action-emitter.d.ts.map +1 -1
- package/dist/realize/per-action-emitter.js.map +1 -1
- package/dist/realize/per-action-llm-emit.d.ts.map +1 -1
- package/dist/realize/per-action-llm-emit.js +5 -1
- package/dist/realize/per-action-llm-emit.js.map +1 -1
- package/dist/realize/per-action-runner.d.ts +45 -0
- package/dist/realize/per-action-runner.d.ts.map +1 -1
- package/dist/realize/per-action-runner.js +132 -0
- package/dist/realize/per-action-runner.js.map +1 -1
- package/dist/realize/resolver/index.d.ts +157 -0
- package/dist/realize/resolver/index.d.ts.map +1 -0
- package/dist/realize/resolver/index.js +307 -0
- package/dist/realize/resolver/index.js.map +1 -0
- package/dist/realize/runtime-emitters/dispatcher.d.ts +176 -0
- package/dist/realize/runtime-emitters/dispatcher.d.ts.map +1 -0
- package/dist/realize/runtime-emitters/dispatcher.js +76 -0
- package/dist/realize/runtime-emitters/dispatcher.js.map +1 -0
- package/dist/realize/runtime-emitters/executable.d.ts +57 -0
- package/dist/realize/runtime-emitters/executable.d.ts.map +1 -0
- package/dist/realize/runtime-emitters/executable.js +316 -0
- package/dist/realize/runtime-emitters/executable.js.map +1 -0
- package/dist/realize/runtime-emitters/library.d.ts +52 -0
- package/dist/realize/runtime-emitters/library.d.ts.map +1 -0
- package/dist/realize/runtime-emitters/library.js +349 -0
- package/dist/realize/runtime-emitters/library.js.map +1 -0
- package/dist/realize/runtime-emitters/managed.d.ts +44 -0
- package/dist/realize/runtime-emitters/managed.d.ts.map +1 -0
- package/dist/realize/runtime-emitters/managed.js +283 -0
- package/dist/realize/runtime-emitters/managed.js.map +1 -0
- package/dist/realize/runtime-emitters/messaging.d.ts +77 -0
- package/dist/realize/runtime-emitters/messaging.d.ts.map +1 -0
- package/dist/realize/runtime-emitters/messaging.js +423 -0
- package/dist/realize/runtime-emitters/messaging.js.map +1 -0
- package/dist/realize/runtime-emitters/service.d.ts +42 -0
- package/dist/realize/runtime-emitters/service.d.ts.map +1 -0
- package/dist/realize/runtime-emitters/service.js +355 -0
- package/dist/realize/runtime-emitters/service.js.map +1 -0
- package/dist/realize/types/instance-factory.d.ts +1 -1
- package/dist/realize/types/instance-factory.d.ts.map +1 -1
- package/libs/instance-factories/communication/rabbitmq-events.yaml +11 -0
- package/libs/instance-factories/controllers/fastify.yaml +11 -0
- package/libs/instance-factories/managed/stripe-rest-sdk.yaml +78 -0
- package/libs/instance-factories/managed/templates/stripe/stripe-client-generator.ts +26 -0
- package/libs/instance-factories/orms/prisma.yaml +11 -0
- package/libs/instance-factories/services/templates/_shared/step-matching.ts +11 -29
- package/libs/instance-factories/services/templates/prisma/__tests__/behavior-generator.test.ts +85 -0
- package/libs/instance-factories/services/templates/prisma/behavior-generator.ts +21 -1
- package/package.json +2 -2
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Library-runtime emitter — V2 Phase 3, Round 1.
|
|
3
|
+
*
|
|
4
|
+
* Handles `topology: 'library'` factories: providers that are consumed
|
|
5
|
+
* as in-process imports, with no deployment instance entry.
|
|
6
|
+
*
|
|
7
|
+
* For each `import:` entry the consumer declares, this emitter produces:
|
|
8
|
+
* clients/<provider-name>.ts — typed client module
|
|
9
|
+
*
|
|
10
|
+
* The typed client module:
|
|
11
|
+
* - Exports a `<ProviderName>Client` TypeScript interface matching
|
|
12
|
+
* the selected operations from `import.select`.
|
|
13
|
+
* - Exports a `<providerName>Client` constant that implements the
|
|
14
|
+
* interface by delegating to the resolved provider:
|
|
15
|
+
* * source = 'local' → relative import to the provider's module.
|
|
16
|
+
* * source = 'npm' → `import { X } from '<package-specifier>'`.
|
|
17
|
+
* * source = 'registry-*' → TODO comment + runtime throw (Round 1).
|
|
18
|
+
*
|
|
19
|
+
* The consuming controller (SalesReportController.ts, emitted by the
|
|
20
|
+
* per-action-emitter's mechanical scaffold) imports this client module
|
|
21
|
+
* and receives the client via constructor injection.
|
|
22
|
+
*
|
|
23
|
+
* --- Select grammar ---
|
|
24
|
+
*
|
|
25
|
+
* `import.select` entries follow two forms (V2 D2 resolution):
|
|
26
|
+
* - Dotted: `Charge.create` → typed function for the specific operation.
|
|
27
|
+
* - Bare: `AuthService` → re-export of the entity's interface.
|
|
28
|
+
*
|
|
29
|
+
* Both forms share the same file; the emitter deduplicates by head entity.
|
|
30
|
+
*
|
|
31
|
+
* --- Round 1 limitations ---
|
|
32
|
+
*
|
|
33
|
+
* - No actual operation signature lookup (operations are typed as
|
|
34
|
+
* `(...args: unknown[]) => Promise<unknown>` unless the spec is provided
|
|
35
|
+
* and the target operation can be located). Exact signatures land in
|
|
36
|
+
* Round 2 when the resolver wires in full cross-spec type lookup.
|
|
37
|
+
* - Registry sources (`registry-component`, `registry-factory`) emit a
|
|
38
|
+
* TODO comment and a `throw` for the client constant; they compile but
|
|
39
|
+
* blow up at runtime until Round 2 fills in the registry resolver.
|
|
40
|
+
*/
|
|
41
|
+
/**
|
|
42
|
+
* Parse a select entry into head + optional tail.
|
|
43
|
+
*
|
|
44
|
+
* Dotted: `Charge.create` → { head: 'Charge', tail: 'create' }
|
|
45
|
+
* Bare: `AuthService` → { head: 'AuthService', tail: undefined }
|
|
46
|
+
*
|
|
47
|
+
* The head is the entity/service name; the tail is the operation name.
|
|
48
|
+
* Dotted entries can have multiple tail segments (`A.B.C` → head A, tail 'B.C')
|
|
49
|
+
* but in practice V2 only uses one level (entity.operation).
|
|
50
|
+
*/
|
|
51
|
+
function parseSelectEntry(entry) {
|
|
52
|
+
const dotIndex = entry.indexOf('.');
|
|
53
|
+
if (dotIndex === -1) {
|
|
54
|
+
return { head: entry, tail: undefined };
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
head: entry.slice(0, dotIndex),
|
|
58
|
+
tail: entry.slice(dotIndex + 1),
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Normalise a `from:` name into an array of words for identifier generation.
|
|
63
|
+
*
|
|
64
|
+
* Handles:
|
|
65
|
+
* 'ProfitCalculator' → ['profit', 'calculator']
|
|
66
|
+
* '@stripe/api' → ['stripe', 'api'] (scope + package combined)
|
|
67
|
+
* '@specverse/gitnexus-adapter' → ['specverse', 'gitnexus', 'adapter']
|
|
68
|
+
* 'gitnexus' → ['gitnexus']
|
|
69
|
+
*/
|
|
70
|
+
function toWords(fromName) {
|
|
71
|
+
// For scoped packages (@scope/pkg), replace the / with a space and strip @.
|
|
72
|
+
const normalised = fromName.replace(/^@/, '').replace(/\//g, '-');
|
|
73
|
+
// Split on camelCase boundaries and non-alphanumeric runs.
|
|
74
|
+
return normalised
|
|
75
|
+
.replace(/([a-z])([A-Z])/g, '$1 $2')
|
|
76
|
+
.replace(/[^a-zA-Z0-9]+/g, ' ')
|
|
77
|
+
.trim()
|
|
78
|
+
.split(' ')
|
|
79
|
+
.filter(Boolean)
|
|
80
|
+
.map((w) => w.toLowerCase());
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Convert a from-name to a safe identifier prefix (lower-camelCase, no
|
|
84
|
+
* special characters). Used for the client constant name.
|
|
85
|
+
*
|
|
86
|
+
* Examples:
|
|
87
|
+
* 'ProfitCalculator' → 'profitCalculator'
|
|
88
|
+
* '@stripe/api' → 'stripeApi'
|
|
89
|
+
* 'gitnexus' → 'gitnexus'
|
|
90
|
+
*/
|
|
91
|
+
function toClientName(fromName) {
|
|
92
|
+
const words = toWords(fromName);
|
|
93
|
+
if (words.length === 0)
|
|
94
|
+
return 'unknownClient';
|
|
95
|
+
return (words[0] +
|
|
96
|
+
words
|
|
97
|
+
.slice(1)
|
|
98
|
+
.map((w) => w.charAt(0).toUpperCase() + w.slice(1))
|
|
99
|
+
.join(''));
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Convert a from-name to a PascalCase interface name suffix.
|
|
103
|
+
*
|
|
104
|
+
* Examples:
|
|
105
|
+
* 'ProfitCalculator' → 'ProfitCalculator'
|
|
106
|
+
* '@stripe/api' → 'StripeApi'
|
|
107
|
+
* 'gitnexus' → 'Gitnexus'
|
|
108
|
+
*/
|
|
109
|
+
function toInterfaceName(fromName) {
|
|
110
|
+
const words = toWords(fromName);
|
|
111
|
+
return words.map((w) => w.charAt(0).toUpperCase() + w.slice(1)).join('');
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Convert a from-name to a filesystem-safe filename (kebab-case).
|
|
115
|
+
*
|
|
116
|
+
* Examples:
|
|
117
|
+
* 'ProfitCalculator' → 'profit-calculator'
|
|
118
|
+
* '@stripe/api' → 'stripe-api'
|
|
119
|
+
* '@specverse/gitnexus-adapter'→ 'specverse-gitnexus-adapter'
|
|
120
|
+
* 'gitnexus' → 'gitnexus'
|
|
121
|
+
*/
|
|
122
|
+
function toFileName(fromName) {
|
|
123
|
+
return toWords(fromName).join('-');
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Generate the TypeScript interface for the client type.
|
|
127
|
+
* Uses a placeholder signature `(...args: unknown[]) => Promise<unknown>`
|
|
128
|
+
* in Round 1; Round 2 will wire in real operation signatures.
|
|
129
|
+
*/
|
|
130
|
+
function generateInterface(interfaceName, selectEntries) {
|
|
131
|
+
const lines = [];
|
|
132
|
+
lines.push(`export type ${interfaceName}Client = {`);
|
|
133
|
+
// Collect unique operations grouped by head entity for clarity.
|
|
134
|
+
// Bare entries produce a `<entity>: unknown` member (shape TBD by Round 2).
|
|
135
|
+
// Dotted entries produce a typed function.
|
|
136
|
+
const seen = new Set();
|
|
137
|
+
for (const entry of selectEntries) {
|
|
138
|
+
if (seen.has(entry))
|
|
139
|
+
continue;
|
|
140
|
+
seen.add(entry);
|
|
141
|
+
const { head, tail } = parseSelectEntry(entry);
|
|
142
|
+
if (tail === undefined) {
|
|
143
|
+
// Bare entity import — expose as an opaque type in Round 1.
|
|
144
|
+
// Round 2 will look up the entity interface and substitute the real type.
|
|
145
|
+
lines.push(` /** Re-export of ${head} entity interface. Round 2: substitute real type. */`);
|
|
146
|
+
lines.push(` ${head}: unknown;`);
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
// Dotted operation import — typed function.
|
|
150
|
+
// Round 2 will substitute real input/output types from the spec.
|
|
151
|
+
lines.push(` /** ${head}.${tail} — Round 2: substitute real input/output types. */`);
|
|
152
|
+
lines.push(` ${tail}(...args: unknown[]): Promise<unknown>;`);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
lines.push('};');
|
|
156
|
+
return lines.join('\n');
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Generate the import statement block for the client implementation.
|
|
160
|
+
* Returns the import lines and the identifiers made available.
|
|
161
|
+
*/
|
|
162
|
+
function generateImportBlock(ctx, selectEntries) {
|
|
163
|
+
const { resolved } = ctx;
|
|
164
|
+
const importLines = [];
|
|
165
|
+
// Maps select entry → the identifier available in the module scope.
|
|
166
|
+
const availableIds = new Map();
|
|
167
|
+
if (resolved.source === 'local') {
|
|
168
|
+
// Relative import to the provider's module in the same spec's output tree.
|
|
169
|
+
const relativePath = resolved.localRelativePath ?? `../${toFileName(resolved.resolvedName)}`;
|
|
170
|
+
// Group dotted entries by head (entity) — one import per head.
|
|
171
|
+
const heads = new Set();
|
|
172
|
+
const bareEntries = [];
|
|
173
|
+
for (const entry of selectEntries) {
|
|
174
|
+
const { head, tail } = parseSelectEntry(entry);
|
|
175
|
+
if (tail !== undefined) {
|
|
176
|
+
heads.add(head);
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
bareEntries.push(head);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
const allImports = [...Array.from(heads), ...bareEntries];
|
|
183
|
+
if (allImports.length > 0) {
|
|
184
|
+
importLines.push(`import { ${allImports.join(', ')} } from '${relativePath}';`);
|
|
185
|
+
for (const id of allImports) {
|
|
186
|
+
availableIds.set(id, id);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
// Map dotted entries: Charge.create → availableIds.get('Charge.create') = 'Charge'
|
|
190
|
+
for (const entry of selectEntries) {
|
|
191
|
+
const { head, tail } = parseSelectEntry(entry);
|
|
192
|
+
if (tail !== undefined) {
|
|
193
|
+
availableIds.set(entry, head);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
else if (resolved.source === 'npm') {
|
|
198
|
+
// npm package import — use package specifier directly.
|
|
199
|
+
const pkg = resolved.packageSpecifier ?? resolved.resolvedName;
|
|
200
|
+
const heads = new Set();
|
|
201
|
+
const bareEntries = [];
|
|
202
|
+
for (const entry of selectEntries) {
|
|
203
|
+
const { head, tail } = parseSelectEntry(entry);
|
|
204
|
+
if (tail !== undefined) {
|
|
205
|
+
heads.add(head);
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
bareEntries.push(head);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
const allImports = [...Array.from(heads), ...bareEntries];
|
|
212
|
+
if (allImports.length > 0) {
|
|
213
|
+
importLines.push(`import { ${allImports.join(', ')} } from '${pkg}';`);
|
|
214
|
+
for (const id of allImports) {
|
|
215
|
+
availableIds.set(id, id);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
for (const entry of selectEntries) {
|
|
219
|
+
const { head, tail } = parseSelectEntry(entry);
|
|
220
|
+
if (tail !== undefined) {
|
|
221
|
+
availableIds.set(entry, head);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
// registry-component or registry-factory — Round 1 TODO.
|
|
227
|
+
// No real import; the constant body will throw.
|
|
228
|
+
}
|
|
229
|
+
return { importLines, availableIds };
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Generate the client constant — the exported object that implements the
|
|
233
|
+
* typed interface by delegating to the resolved provider.
|
|
234
|
+
*/
|
|
235
|
+
function generateClientConstant(clientName, interfaceName, selectEntries, resolved, availableIds) {
|
|
236
|
+
const lines = [];
|
|
237
|
+
lines.push(`export const ${clientName}Client: ${interfaceName}Client = {`);
|
|
238
|
+
if (resolved.source === 'registry-component' || resolved.source === 'registry-factory') {
|
|
239
|
+
// Round 1 placeholder — registry resolution not yet implemented.
|
|
240
|
+
lines.push(' // TODO (Round 2): wire in registry resolver for this provider.');
|
|
241
|
+
lines.push(` // provider: '${resolved.resolvedName}' (source: ${resolved.source})`);
|
|
242
|
+
// Emit a throw for each member so the type is satisfied but blows up
|
|
243
|
+
// clearly at runtime rather than silently returning undefined.
|
|
244
|
+
const seen = new Set();
|
|
245
|
+
for (const entry of selectEntries) {
|
|
246
|
+
if (seen.has(entry))
|
|
247
|
+
continue;
|
|
248
|
+
seen.add(entry);
|
|
249
|
+
const { tail } = parseSelectEntry(entry);
|
|
250
|
+
if (tail === undefined) {
|
|
251
|
+
lines.push(` get ${entry}(): never { throw new Error('${entry} (${resolved.resolvedName}): registry provider not yet wired — Round 2 TODO'); },`);
|
|
252
|
+
}
|
|
253
|
+
else {
|
|
254
|
+
lines.push(` ${tail}(..._args: unknown[]): never { throw new Error('${tail} (${resolved.resolvedName}): registry provider not yet wired — Round 2 TODO'); },`);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
else {
|
|
259
|
+
// local or npm — delegate to the imported identifiers.
|
|
260
|
+
const seen = new Set();
|
|
261
|
+
for (const entry of selectEntries) {
|
|
262
|
+
if (seen.has(entry))
|
|
263
|
+
continue;
|
|
264
|
+
seen.add(entry);
|
|
265
|
+
const { head, tail } = parseSelectEntry(entry);
|
|
266
|
+
const srcId = availableIds.get(entry) ?? availableIds.get(head) ?? head;
|
|
267
|
+
if (tail === undefined) {
|
|
268
|
+
// Bare entity — expose directly.
|
|
269
|
+
lines.push(` ${head}: ${srcId},`);
|
|
270
|
+
}
|
|
271
|
+
else {
|
|
272
|
+
// Dotted operation — delegate as method.
|
|
273
|
+
lines.push(` ${tail}: ${srcId}.${tail},`);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
lines.push('};');
|
|
278
|
+
return lines.join('\n');
|
|
279
|
+
}
|
|
280
|
+
// ─── Library emitter ─────────────────────────────────────────────────────────
|
|
281
|
+
/**
|
|
282
|
+
* Library-runtime emitter implementation.
|
|
283
|
+
*
|
|
284
|
+
* One call to `emit()` processes a single `import:` entry and produces
|
|
285
|
+
* one client file under `clients/<provider-filename>.ts`.
|
|
286
|
+
*/
|
|
287
|
+
export class LibraryRuntimeEmitter {
|
|
288
|
+
topology = 'library';
|
|
289
|
+
async emit(ctx) {
|
|
290
|
+
const { importEntry, resolved, factory, outputDir } = ctx;
|
|
291
|
+
const selectEntries = importEntry.select ?? [];
|
|
292
|
+
// Derive naming from the import's `from:` field, not the factory name.
|
|
293
|
+
const fileName = toFileName(importEntry.from);
|
|
294
|
+
const clientName = toClientName(importEntry.from);
|
|
295
|
+
const interfaceName = toInterfaceName(importEntry.from);
|
|
296
|
+
// File path relative to outputDir.
|
|
297
|
+
const relFilePath = `clients/${fileName}.ts`;
|
|
298
|
+
const absoluteFilePath = `${outputDir}/${relFilePath}`;
|
|
299
|
+
// Build file header.
|
|
300
|
+
const headerLines = [
|
|
301
|
+
'// FACTORY-EMITTED — DO NOT EDIT (R8)',
|
|
302
|
+
`// Generated by library-runtime emitter — V2 Phase 3`,
|
|
303
|
+
`// Provider: ${importEntry.from} (${resolved.source}) via factory: ${factory.name}`,
|
|
304
|
+
];
|
|
305
|
+
if (resolved.source === 'local') {
|
|
306
|
+
headerLines.push(`// Local component: ${resolved.resolvedName}`);
|
|
307
|
+
}
|
|
308
|
+
else if (resolved.source === 'npm') {
|
|
309
|
+
const pkg = resolved.packageSpecifier ?? resolved.resolvedName;
|
|
310
|
+
headerLines.push(`// npm package: ${pkg}`);
|
|
311
|
+
}
|
|
312
|
+
else {
|
|
313
|
+
headerLines.push(`// Registry source: ${resolved.resolvedName} (Round 2 TODO)`);
|
|
314
|
+
}
|
|
315
|
+
headerLines.push('');
|
|
316
|
+
// Build import block.
|
|
317
|
+
const { importLines, availableIds } = generateImportBlock(ctx, selectEntries);
|
|
318
|
+
// Build interface + constant.
|
|
319
|
+
const interfaceBlock = generateInterface(interfaceName, selectEntries);
|
|
320
|
+
const constantBlock = generateClientConstant(clientName, interfaceName, selectEntries, resolved, availableIds);
|
|
321
|
+
// Assemble file.
|
|
322
|
+
const parts = [...headerLines];
|
|
323
|
+
if (importLines.length > 0) {
|
|
324
|
+
parts.push(...importLines, '');
|
|
325
|
+
}
|
|
326
|
+
parts.push(interfaceBlock, '', constantBlock, '');
|
|
327
|
+
const content = parts.join('\n');
|
|
328
|
+
// Build the import entry for the consumer's controller file.
|
|
329
|
+
const consumerImport = {
|
|
330
|
+
from: `./clients/${fileName}`,
|
|
331
|
+
specifier: `${clientName}Client`,
|
|
332
|
+
};
|
|
333
|
+
// Warnings for Round 1 limitations.
|
|
334
|
+
const notes = [];
|
|
335
|
+
if (selectEntries.length === 0) {
|
|
336
|
+
notes.push(`Warning: import entry from '${importEntry.from}' has empty select: — no client members emitted.`);
|
|
337
|
+
}
|
|
338
|
+
if (resolved.source === 'registry-component' ||
|
|
339
|
+
resolved.source === 'registry-factory') {
|
|
340
|
+
notes.push(`TODO (Round 2): registry provider '${resolved.resolvedName}' — client constant emits runtime throws until registry resolver is wired.`);
|
|
341
|
+
}
|
|
342
|
+
return {
|
|
343
|
+
files: [{ path: relFilePath, content }],
|
|
344
|
+
imports: [consumerImport],
|
|
345
|
+
notes: notes.length > 0 ? notes : undefined,
|
|
346
|
+
};
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
//# sourceMappingURL=library.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"library.js","sourceRoot":"","sources":["../../../src/realize/runtime-emitters/library.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Managed-runtime emitter — V2 Phase 3, Round 2.
|
|
3
|
+
*
|
|
4
|
+
* Handles `topology: 'managed'` factories: external SaaS providers reached
|
|
5
|
+
* via vendor-specific SDKs (Stripe, OpenAI, Anthropic, Twilio, AWS, etc.).
|
|
6
|
+
*
|
|
7
|
+
* For each `import:` entry the consumer declares, this emitter produces:
|
|
8
|
+
* clients/<provider-name>.ts — SDK init + typed client
|
|
9
|
+
*
|
|
10
|
+
* No server-bind file — managed providers ship their own server.
|
|
11
|
+
*
|
|
12
|
+
* Auth dispatch (factory.v2metadata?.authentication?.kind):
|
|
13
|
+
* 'api-key' → `new SDK(process.env.<ENV>!)` constructor pattern (Stripe-shape)
|
|
14
|
+
* 'bearer' → header-based init reading token from env
|
|
15
|
+
* 'oauth2' → TODO scaffolding; init throws at call-time (Round 3)
|
|
16
|
+
* 'mtls' → env-driven cert paths
|
|
17
|
+
* 'none' → bare SDK init, no auth wiring
|
|
18
|
+
*
|
|
19
|
+
* Env var name: factory.v2metadata?.authentication?.env if present, else
|
|
20
|
+
* derived from provider (STRIPE_API_KEY, OPENAI_API_KEY, etc.). Suffix
|
|
21
|
+
* varies by auth.kind (_API_KEY / _TOKEN / _BEARER / _CERT).
|
|
22
|
+
*
|
|
23
|
+
* Operation routing: dotted ops like `Charge.create` route to
|
|
24
|
+
* `sdk.charges.create(...)` — entity head is lowercased + naively
|
|
25
|
+
* pluralised; tail becomes the SDK method. Exact mapping varies per
|
|
26
|
+
* SDK; Round 3 enhancement allows spec authors to override.
|
|
27
|
+
*
|
|
28
|
+
* Deployment hint: realize emits a `deployments.<env>.instances.infrastructure.<provider>`
|
|
29
|
+
* entry with `config: { provider: <hostname>, authEnv: <ENV_NAME> }` —
|
|
30
|
+
* mentioned in result.notes.
|
|
31
|
+
*/
|
|
32
|
+
import type { RuntimeEmitter, RuntimeEmitterContext, RuntimeEmitterResult } from './dispatcher.js';
|
|
33
|
+
/**
|
|
34
|
+
* Managed-runtime emitter implementation.
|
|
35
|
+
*
|
|
36
|
+
* One call to `emit()` processes a single `import:` entry. Produces:
|
|
37
|
+
* - 1 client file under `clients/<provider-filename>.ts`
|
|
38
|
+
* - NO server-bind file (managed providers ship their own server).
|
|
39
|
+
*/
|
|
40
|
+
export declare class ManagedRuntimeEmitter implements RuntimeEmitter {
|
|
41
|
+
readonly topology: "managed";
|
|
42
|
+
emit(ctx: RuntimeEmitterContext): Promise<RuntimeEmitterResult>;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=managed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"managed.d.ts","sourceRoot":"","sources":["../../../src/realize/runtime-emitters/managed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AAgNzB;;;;;;GAMG;AACH,qBAAa,qBAAsB,YAAW,cAAc;IAC1D,QAAQ,CAAC,QAAQ,EAAG,SAAS,CAAU;IAEjC,IAAI,CAAC,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;CA+EtE"}
|