@specverse/engines 6.33.0 → 6.34.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/realize/index.d.ts.map +1 -1
- package/dist/realize/index.js +261 -4
- 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 +9 -0
- 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/package.json +1 -1
|
@@ -0,0 +1,283 @@
|
|
|
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
|
+
// ─── Naming helpers (shared shape with library.ts) ───────────────────────────
|
|
33
|
+
function parseSelectEntry(entry) {
|
|
34
|
+
const dotIndex = entry.indexOf('.');
|
|
35
|
+
if (dotIndex === -1)
|
|
36
|
+
return { head: entry, tail: undefined };
|
|
37
|
+
return { head: entry.slice(0, dotIndex), tail: entry.slice(dotIndex + 1) };
|
|
38
|
+
}
|
|
39
|
+
function toWords(fromName) {
|
|
40
|
+
const normalised = fromName.replace(/^@/, '').replace(/\//g, '-');
|
|
41
|
+
return normalised
|
|
42
|
+
.replace(/([a-z])([A-Z])/g, '$1 $2')
|
|
43
|
+
.replace(/[^a-zA-Z0-9]+/g, ' ')
|
|
44
|
+
.trim()
|
|
45
|
+
.split(' ')
|
|
46
|
+
.filter(Boolean)
|
|
47
|
+
.map((w) => w.toLowerCase());
|
|
48
|
+
}
|
|
49
|
+
function toClientName(fromName) {
|
|
50
|
+
const words = toWords(fromName);
|
|
51
|
+
if (words.length === 0)
|
|
52
|
+
return 'unknownClient';
|
|
53
|
+
return (words[0] +
|
|
54
|
+
words.slice(1).map((w) => w.charAt(0).toUpperCase() + w.slice(1)).join(''));
|
|
55
|
+
}
|
|
56
|
+
function toInterfaceName(fromName) {
|
|
57
|
+
return toWords(fromName)
|
|
58
|
+
.map((w) => w.charAt(0).toUpperCase() + w.slice(1))
|
|
59
|
+
.join('');
|
|
60
|
+
}
|
|
61
|
+
function toFileName(fromName) {
|
|
62
|
+
return toWords(fromName).join('-');
|
|
63
|
+
}
|
|
64
|
+
function resolveAuth(ctx) {
|
|
65
|
+
const auth = ctx.factory.v2metadata?.authentication;
|
|
66
|
+
const kind = auth?.kind ?? 'api-key';
|
|
67
|
+
const upperProvider = toWords(ctx.importEntry.from).join('_').toUpperCase();
|
|
68
|
+
let envVar;
|
|
69
|
+
if (auth?.env && typeof auth.env === 'string') {
|
|
70
|
+
envVar = auth.env;
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
const suffix = kind === 'bearer' ? '_TOKEN'
|
|
74
|
+
: kind === 'oauth2' ? '_CLIENT_SECRET'
|
|
75
|
+
: kind === 'mtls' ? '_CERT'
|
|
76
|
+
: kind === 'none' ? ''
|
|
77
|
+
: '_API_KEY';
|
|
78
|
+
envVar = upperProvider + suffix;
|
|
79
|
+
}
|
|
80
|
+
return {
|
|
81
|
+
kind,
|
|
82
|
+
envVar,
|
|
83
|
+
certEnvVar: auth?.certEnv,
|
|
84
|
+
keyEnvVar: auth?.keyEnv,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
function resolveSdkSpecifier(ctx) {
|
|
88
|
+
const sdk = ctx.factory.v2metadata?.sdk;
|
|
89
|
+
return sdk ?? ctx.importEntry.from;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Naive pluralise — appends `s` unless the word already ends in `s`.
|
|
93
|
+
* SDK method conventions vary (charges, customers, invoices); spec authors
|
|
94
|
+
* who need a different mapping can override per-call. Round 3 enhancement.
|
|
95
|
+
*/
|
|
96
|
+
function pluraliseLower(name) {
|
|
97
|
+
const lower = name.toLowerCase();
|
|
98
|
+
return lower.endsWith('s') ? lower : `${lower}s`;
|
|
99
|
+
}
|
|
100
|
+
// ─── Auth init pattern generators ─────────────────────────────────────────────
|
|
101
|
+
function generateAuthInit(sdkSpecifier, sdkVarName, auth) {
|
|
102
|
+
const lines = [];
|
|
103
|
+
switch (auth.kind) {
|
|
104
|
+
case 'api-key':
|
|
105
|
+
lines.push(`import SDK from '${sdkSpecifier}';`);
|
|
106
|
+
lines.push('');
|
|
107
|
+
lines.push(`const apiKey = process.env.${auth.envVar};`);
|
|
108
|
+
lines.push(`if (!apiKey) throw new Error('${auth.envVar} env var is not set; required for ${sdkSpecifier} client');`);
|
|
109
|
+
lines.push(`const ${sdkVarName} = new SDK(apiKey);`);
|
|
110
|
+
break;
|
|
111
|
+
case 'bearer':
|
|
112
|
+
lines.push(`import SDK from '${sdkSpecifier}';`);
|
|
113
|
+
lines.push('');
|
|
114
|
+
lines.push(`const bearerToken = process.env.${auth.envVar};`);
|
|
115
|
+
lines.push(`if (!bearerToken) throw new Error('${auth.envVar} env var is not set; required for ${sdkSpecifier} client');`);
|
|
116
|
+
lines.push(`const ${sdkVarName} = new SDK({`);
|
|
117
|
+
lines.push(` headers: { Authorization: \`Bearer \${bearerToken}\` },`);
|
|
118
|
+
lines.push(`});`);
|
|
119
|
+
break;
|
|
120
|
+
case 'oauth2':
|
|
121
|
+
lines.push(`import SDK from '${sdkSpecifier}';`);
|
|
122
|
+
lines.push('');
|
|
123
|
+
lines.push(`// TODO (Round 3): wire OAuth2 client-credentials / authorization-code flow.`);
|
|
124
|
+
lines.push(`// Round 2 leaves this as a clear scaffolding stub. Configure the client_id`);
|
|
125
|
+
lines.push(`// and client_secret env vars + token endpoint, then exchange for a bearer token.`);
|
|
126
|
+
lines.push(`function init${sdkVarName.charAt(0).toUpperCase() + sdkVarName.slice(1)}(): never {`);
|
|
127
|
+
lines.push(` throw new Error('OAuth2 wiring is a Round 3 TODO for ${sdkSpecifier} — supply token-exchange logic.');`);
|
|
128
|
+
lines.push(`}`);
|
|
129
|
+
lines.push(`const ${sdkVarName}: ReturnType<typeof init${sdkVarName.charAt(0).toUpperCase() + sdkVarName.slice(1)}> = init${sdkVarName.charAt(0).toUpperCase() + sdkVarName.slice(1)}();`);
|
|
130
|
+
break;
|
|
131
|
+
case 'mtls':
|
|
132
|
+
lines.push(`import SDK from '${sdkSpecifier}';`);
|
|
133
|
+
lines.push(`import { readFileSync } from 'node:fs';`);
|
|
134
|
+
lines.push('');
|
|
135
|
+
lines.push(`const certPath = process.env.${auth.certEnvVar ?? auth.envVar};`);
|
|
136
|
+
lines.push(`const keyPath = process.env.${auth.keyEnvVar ?? auth.envVar.replace(/_CERT$/, '_KEY')};`);
|
|
137
|
+
lines.push(`if (!certPath || !keyPath) throw new Error('mTLS cert/key env vars not set; required for ${sdkSpecifier} client');`);
|
|
138
|
+
lines.push(`const ${sdkVarName} = new SDK({`);
|
|
139
|
+
lines.push(` cert: readFileSync(certPath),`);
|
|
140
|
+
lines.push(` key: readFileSync(keyPath),`);
|
|
141
|
+
lines.push(`});`);
|
|
142
|
+
break;
|
|
143
|
+
case 'none':
|
|
144
|
+
lines.push(`import SDK from '${sdkSpecifier}';`);
|
|
145
|
+
lines.push('');
|
|
146
|
+
lines.push(`const ${sdkVarName} = new SDK();`);
|
|
147
|
+
break;
|
|
148
|
+
}
|
|
149
|
+
return lines;
|
|
150
|
+
}
|
|
151
|
+
// ─── Interface + constant generators ──────────────────────────────────────────
|
|
152
|
+
function generateInterface(interfaceName, selectEntries) {
|
|
153
|
+
const lines = [];
|
|
154
|
+
lines.push(`export type ${interfaceName}Client = {`);
|
|
155
|
+
const seen = new Set();
|
|
156
|
+
for (const entry of selectEntries) {
|
|
157
|
+
if (seen.has(entry))
|
|
158
|
+
continue;
|
|
159
|
+
seen.add(entry);
|
|
160
|
+
const { head, tail } = parseSelectEntry(entry);
|
|
161
|
+
if (tail === undefined) {
|
|
162
|
+
lines.push(` /** ${head} entity — passthrough to SDK. Round 3: substitute real type. */`);
|
|
163
|
+
lines.push(` ${head}(...args: unknown[]): Promise<unknown>;`);
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
lines.push(` /** ${head}.${tail} → sdk.${pluraliseLower(head)}.${tail}. Round 3: substitute real input/output types. */`);
|
|
167
|
+
lines.push(` ${tail}(input: unknown): Promise<unknown>;`);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
lines.push('};');
|
|
171
|
+
return lines.join('\n');
|
|
172
|
+
}
|
|
173
|
+
function generateClientConstant(clientName, interfaceName, sdkVarName, selectEntries, auth) {
|
|
174
|
+
const lines = [];
|
|
175
|
+
lines.push(`export const ${clientName}Client: ${interfaceName}Client = {`);
|
|
176
|
+
const seen = new Set();
|
|
177
|
+
for (const entry of selectEntries) {
|
|
178
|
+
if (seen.has(entry))
|
|
179
|
+
continue;
|
|
180
|
+
seen.add(entry);
|
|
181
|
+
const { head, tail } = parseSelectEntry(entry);
|
|
182
|
+
if (tail === undefined) {
|
|
183
|
+
// Bare entity — passthrough to a top-level SDK property of that name.
|
|
184
|
+
lines.push(` ${head}(...args: unknown[]): Promise<unknown> {`);
|
|
185
|
+
if (auth.kind === 'oauth2') {
|
|
186
|
+
lines.push(` throw new Error('${head}: OAuth2 wiring is a Round 3 TODO');`);
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
lines.push(` return Promise.resolve(((${sdkVarName} as unknown) as Record<string, (...a: unknown[]) => unknown>)['${head}']?.(...args));`);
|
|
190
|
+
}
|
|
191
|
+
lines.push(` },`);
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
// Dotted op — route to sdk.<plural-head>.<tail>.
|
|
195
|
+
const sdkProp = pluraliseLower(head);
|
|
196
|
+
lines.push(` ${tail}(input: unknown): Promise<unknown> {`);
|
|
197
|
+
if (auth.kind === 'oauth2') {
|
|
198
|
+
lines.push(` throw new Error('${head}.${tail}: OAuth2 wiring is a Round 3 TODO');`);
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
lines.push(` const sdkAny = (${sdkVarName} as unknown) as Record<string, Record<string, (input: unknown) => Promise<unknown>>>;`);
|
|
202
|
+
lines.push(` const fn = sdkAny['${sdkProp}']?.['${tail}'];`);
|
|
203
|
+
lines.push(` if (typeof fn !== 'function') throw new Error('${sdkProp}.${tail} not found on SDK; check the SDK shape or override the mapping in the spec.');`);
|
|
204
|
+
lines.push(` return fn(input);`);
|
|
205
|
+
}
|
|
206
|
+
lines.push(` },`);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
lines.push('};');
|
|
210
|
+
return lines.join('\n');
|
|
211
|
+
}
|
|
212
|
+
// ─── Managed emitter ──────────────────────────────────────────────────────────
|
|
213
|
+
/**
|
|
214
|
+
* Managed-runtime emitter implementation.
|
|
215
|
+
*
|
|
216
|
+
* One call to `emit()` processes a single `import:` entry. Produces:
|
|
217
|
+
* - 1 client file under `clients/<provider-filename>.ts`
|
|
218
|
+
* - NO server-bind file (managed providers ship their own server).
|
|
219
|
+
*/
|
|
220
|
+
export class ManagedRuntimeEmitter {
|
|
221
|
+
topology = 'managed';
|
|
222
|
+
async emit(ctx) {
|
|
223
|
+
const { importEntry, factory } = ctx;
|
|
224
|
+
const selectEntries = importEntry.select ?? [];
|
|
225
|
+
const fileName = toFileName(importEntry.from);
|
|
226
|
+
const clientName = toClientName(importEntry.from);
|
|
227
|
+
const interfaceName = toInterfaceName(importEntry.from);
|
|
228
|
+
const sdkSpecifier = resolveSdkSpecifier(ctx);
|
|
229
|
+
const sdkVarName = `${clientName}Sdk`;
|
|
230
|
+
const auth = resolveAuth(ctx);
|
|
231
|
+
// Build header.
|
|
232
|
+
const headerLines = [
|
|
233
|
+
'// FACTORY-EMITTED — DO NOT EDIT (R8)',
|
|
234
|
+
`// Generated by managed-runtime emitter — V2 Phase 3`,
|
|
235
|
+
`// Provider: ${importEntry.from} (managed SaaS via factory: ${factory.name})`,
|
|
236
|
+
`// SDK: ${sdkSpecifier}`,
|
|
237
|
+
`// Authentication: ${auth.kind} (env: ${auth.envVar})`,
|
|
238
|
+
'',
|
|
239
|
+
];
|
|
240
|
+
const initLines = generateAuthInit(sdkSpecifier, sdkVarName, auth);
|
|
241
|
+
const interfaceBlock = generateInterface(interfaceName, selectEntries);
|
|
242
|
+
const constantBlock = generateClientConstant(clientName, interfaceName, sdkVarName, selectEntries, auth);
|
|
243
|
+
const parts = [...headerLines, ...initLines, '', interfaceBlock, '', constantBlock, ''];
|
|
244
|
+
const content = parts.join('\n');
|
|
245
|
+
const consumerImport = {
|
|
246
|
+
from: `./clients/${fileName}`,
|
|
247
|
+
specifier: `${clientName}Client`,
|
|
248
|
+
};
|
|
249
|
+
const notes = [
|
|
250
|
+
`Deployment hint: deployments.<env>.instances.infrastructure.${clientName} with config: { provider: '${importEntry.from}', authEnv: '${auth.envVar}' } (factory: ${factory.name}, auth: ${auth.kind}).`,
|
|
251
|
+
];
|
|
252
|
+
if (selectEntries.length === 0) {
|
|
253
|
+
notes.push(`Warning: import entry from '${importEntry.from}' has empty select: — no client members emitted.`);
|
|
254
|
+
}
|
|
255
|
+
if (auth.kind === 'oauth2') {
|
|
256
|
+
notes.push(`TODO (Round 3): OAuth2 flow for ${importEntry.from} — supply token-exchange logic. Methods throw at call-time until wired.`);
|
|
257
|
+
}
|
|
258
|
+
const reviewNotes = [];
|
|
259
|
+
if (auth.kind === 'oauth2') {
|
|
260
|
+
reviewNotes.push(`OAuth2 flow for ${importEntry.from} — supply token-exchange logic; methods throw at call-time until wired.`);
|
|
261
|
+
}
|
|
262
|
+
const deploymentSuggestion = {
|
|
263
|
+
provider: importEntry.from,
|
|
264
|
+
consumerComponent: ctx.consumerComponent?.name,
|
|
265
|
+
category: 'infrastructure',
|
|
266
|
+
key: clientName,
|
|
267
|
+
config: {
|
|
268
|
+
provider: importEntry.from,
|
|
269
|
+
authEnv: auth.envVar,
|
|
270
|
+
},
|
|
271
|
+
factory: factory.name,
|
|
272
|
+
topology: 'managed',
|
|
273
|
+
...(reviewNotes.length > 0 ? { reviewNotes } : {}),
|
|
274
|
+
};
|
|
275
|
+
return {
|
|
276
|
+
files: [{ path: `clients/${fileName}.ts`, content }],
|
|
277
|
+
imports: [consumerImport],
|
|
278
|
+
notes,
|
|
279
|
+
deploymentSuggestion,
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
//# sourceMappingURL=managed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"managed.js","sourceRoot":"","sources":["../../../src/realize/runtime-emitters/managed.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Messaging-runtime emitter — V2 Phase 3, Round 2.
|
|
3
|
+
*
|
|
4
|
+
* Handles `topology: 'messaging'` factories: async pub/sub providers reached
|
|
5
|
+
* through external brokers (RabbitMQ, Kafka, NATS, AWS SQS).
|
|
6
|
+
*
|
|
7
|
+
* Conceptual difference from sync topologies (library / service / managed /
|
|
8
|
+
* executable):
|
|
9
|
+
* - Sync topologies have a request/response contract: call op, get result.
|
|
10
|
+
* - Messaging has a fire-and-forget contract: publish event, receive response
|
|
11
|
+
* asynchronously or via subscription.
|
|
12
|
+
*
|
|
13
|
+
* For each `import:` entry the consumer declares, this emitter produces:
|
|
14
|
+
* clients/<kebab-provider>.ts — broker publish wrapper
|
|
15
|
+
*
|
|
16
|
+
* The publish wrapper:
|
|
17
|
+
* - Reads `factory.v2metadata.protocol` to pick the SDK and init pattern:
|
|
18
|
+
* amqp → amqplib-based publisher with assertExchange + publish
|
|
19
|
+
* kafka → kafkajs producer
|
|
20
|
+
* nats → TODO stub (clear comment + right SDK shape)
|
|
21
|
+
* sqs → TODO stub (clear comment + right SDK shape)
|
|
22
|
+
* other → TODO stub (clear comment + right SDK shape)
|
|
23
|
+
* - For each dotted op `Order.created`: emits a method that publishes the
|
|
24
|
+
* message to the appropriate routing-key/topic/queue (`order.created`).
|
|
25
|
+
* - Reads `factory.v2metadata.config?.exchange` / `config?.topic` /
|
|
26
|
+
* `config?.queue` for routing config.
|
|
27
|
+
* - Methods return `Promise<void>` (fire-and-forget).
|
|
28
|
+
*
|
|
29
|
+
* Connection lifecycle:
|
|
30
|
+
* - Emits `init()` (call at app startup) and `shutdown()` (call at graceful
|
|
31
|
+
* shutdown) on the client.
|
|
32
|
+
* - Round 2 does NOT auto-wire these into the consumer's startup — that is a
|
|
33
|
+
* Round 3 concern.
|
|
34
|
+
*
|
|
35
|
+
* No server-bind file:
|
|
36
|
+
* - Messaging brokers are external services, not something the consumer hosts.
|
|
37
|
+
* - Consumers PUBLISH to an existing broker; subscribe-side handlers come in
|
|
38
|
+
* Round 3 via `subscribes_to:` blocks.
|
|
39
|
+
*
|
|
40
|
+
* Deployment instance hint:
|
|
41
|
+
* - `result.notes` describes where the provider lands in the deployment spec:
|
|
42
|
+
* `deployments.<env>.instances.communications.<provider>`.
|
|
43
|
+
*
|
|
44
|
+
* --- Select grammar ---
|
|
45
|
+
*
|
|
46
|
+
* `import.select` entries follow the same dotted grammar as library.ts:
|
|
47
|
+
* - Dotted: `Order.created` → publishes to routing-key `order.created`
|
|
48
|
+
* - Bare: `Events` → stub method; routing-key inferred from name
|
|
49
|
+
*
|
|
50
|
+
* --- Round 2 limitations ---
|
|
51
|
+
*
|
|
52
|
+
* - Subscribe-side handlers (receiving events from the broker) are deferred to
|
|
53
|
+
* Round 3; all `select:` entries are treated as publish-side by default.
|
|
54
|
+
* - NATS and SQS emit TODO stubs rather than real SDK code.
|
|
55
|
+
* - Config routing values (exchange, topic, queue) are read from
|
|
56
|
+
* `factory.v2metadata` when present; absent values use reasonable defaults.
|
|
57
|
+
*/
|
|
58
|
+
import type { RuntimeEmitter, RuntimeEmitterContext, RuntimeEmitterResult } from './dispatcher.js';
|
|
59
|
+
/**
|
|
60
|
+
* Messaging-runtime emitter implementation.
|
|
61
|
+
*
|
|
62
|
+
* One call to `emit()` processes a single `import:` entry and produces
|
|
63
|
+
* one client file under `clients/<provider-filename>.ts`.
|
|
64
|
+
*
|
|
65
|
+
* The client file contains:
|
|
66
|
+
* - A typed `<Provider>Client` interface with all selected operations as
|
|
67
|
+
* `(payload: unknown) => Promise<void>` methods, plus `init()` / `shutdown()`.
|
|
68
|
+
* - A protocol-specific implementation class (amqp / kafka) or a TODO stub.
|
|
69
|
+
* - An exported singleton constant `<provider>Client` for the consumer to import.
|
|
70
|
+
*
|
|
71
|
+
* No server-bind file is emitted — the broker is an external service.
|
|
72
|
+
*/
|
|
73
|
+
export declare class MessagingRuntimeEmitter implements RuntimeEmitter {
|
|
74
|
+
readonly topology: "messaging";
|
|
75
|
+
emit(ctx: RuntimeEmitterContext): Promise<RuntimeEmitterResult>;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=messaging.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messaging.d.ts","sourceRoot":"","sources":["../../../src/realize/runtime-emitters/messaging.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AAyUzB;;;;;;;;;;;;;GAaG;AACH,qBAAa,uBAAwB,YAAW,cAAc;IAC5D,QAAQ,CAAC,QAAQ,EAAG,WAAW,CAAU;IAEnC,IAAI,CAAC,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;CA2FtE"}
|