@opalesce/core 0.0.0 → 0.1.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/LICENSE +21 -0
- package/README.md +111 -161
- package/dist/index.d.ts +7 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/interaction/build.d.ts +5 -0
- package/dist/interaction/build.d.ts.map +1 -0
- package/dist/interaction/build.js +315 -0
- package/dist/interaction/errors.d.ts +12 -0
- package/dist/interaction/errors.d.ts.map +1 -0
- package/dist/interaction/errors.js +12 -0
- package/dist/interaction/schema.d.ts +9 -0
- package/dist/interaction/schema.d.ts.map +1 -0
- package/dist/interaction/schema.js +178 -0
- package/dist/interaction/types.d.ts +69 -0
- package/dist/interaction/types.d.ts.map +1 -0
- package/dist/interaction/types.js +1 -0
- package/dist/orchestrator/artifacts.d.ts +1 -1
- package/dist/orchestrator/artifacts.d.ts.map +1 -1
- package/dist/orchestrator/artifacts.js +1 -1
- package/dist/orchestrator/errors.d.ts +1 -17
- package/dist/orchestrator/errors.d.ts.map +1 -1
- package/dist/orchestrator/errors.js +3 -27
- package/dist/orchestrator/run.d.ts.map +1 -1
- package/dist/orchestrator/run.js +35 -33
- package/dist/orchestrator/types.d.ts +6 -13
- package/dist/orchestrator/types.d.ts.map +1 -1
- package/dist/parseAsyncAPI.d.ts +2 -0
- package/dist/parseAsyncAPI.d.ts.map +1 -1
- package/dist/parseAsyncAPI.js +6 -0
- package/dist/source.d.ts +12 -0
- package/dist/source.d.ts.map +1 -0
- package/dist/source.js +39 -0
- package/package.json +19 -2
- package/dist/orchestrator/orderPlugins.d.ts +0 -3
- package/dist/orchestrator/orderPlugins.d.ts.map +0 -1
- package/dist/orchestrator/orderPlugins.js +0 -41
- package/dist/orchestrator/services.d.ts +0 -26
- package/dist/orchestrator/services.d.ts.map +0 -1
- package/dist/orchestrator/services.js +0 -42
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Max Sharov
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @opalesce/core
|
|
2
2
|
|
|
3
|
-
`@opalesce/core` is the in-memory AsyncAPI generation engine for Opalesce. It parses input once,
|
|
3
|
+
`@opalesce/core` is the in-memory AsyncAPI generation engine for Opalesce. It parses input once, runs each configured plugin in declared order, and collects generated text artifacts without writing files.
|
|
4
4
|
|
|
5
5
|
The package is released as a focused building block for advanced integrations. Normal consumers use the `opalesce` facade, while `@opalesce/config` and `@opalesce/cli` remain the focused config, filesystem, and command layers.
|
|
6
6
|
|
|
@@ -14,11 +14,13 @@ import { defineConfig, definePlugin } from "opalesce";
|
|
|
14
14
|
|
|
15
15
|
const versionFile = definePlugin(() => ({
|
|
16
16
|
name: "version-file",
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
17
|
+
generate(context) {
|
|
18
|
+
return [
|
|
19
|
+
{
|
|
20
|
+
path: "metadata/version.txt",
|
|
21
|
+
contents: `AsyncAPI ${context.document.version()}\n`,
|
|
22
|
+
},
|
|
23
|
+
];
|
|
22
24
|
},
|
|
23
25
|
}));
|
|
24
26
|
|
|
@@ -42,7 +44,7 @@ The CLI discovers the config, reads the input, calls `run` once, and writes succ
|
|
|
42
44
|
Call `run` explicitly when another program already owns input loading and artifact persistence:
|
|
43
45
|
|
|
44
46
|
```ts
|
|
45
|
-
import {
|
|
47
|
+
import { defineConfig, definePlugin, run, type Input } from "@opalesce/core";
|
|
46
48
|
|
|
47
49
|
const input = {
|
|
48
50
|
asyncapi: "3.1.0",
|
|
@@ -54,15 +56,17 @@ const input = {
|
|
|
54
56
|
|
|
55
57
|
const versionFile = definePlugin((options: { readonly path: string }) => ({
|
|
56
58
|
name: "version-file",
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
59
|
+
generate(context) {
|
|
60
|
+
return [
|
|
61
|
+
{
|
|
62
|
+
path: options.path,
|
|
63
|
+
contents: `AsyncAPI ${context.document.version()}\n`,
|
|
64
|
+
},
|
|
65
|
+
];
|
|
62
66
|
},
|
|
63
67
|
}));
|
|
64
68
|
|
|
65
|
-
const config =
|
|
69
|
+
const config = defineConfig({
|
|
66
70
|
input,
|
|
67
71
|
plugins: [versionFile({ path: "metadata/version.txt" })],
|
|
68
72
|
});
|
|
@@ -72,12 +76,13 @@ const result = await run(config);
|
|
|
72
76
|
console.log(result.artifacts);
|
|
73
77
|
```
|
|
74
78
|
|
|
75
|
-
The result contains the official parsed AsyncAPI document, parser diagnostics, artifacts in
|
|
79
|
+
The result contains the official parsed AsyncAPI document, parser diagnostics, artifacts in return order, and the configured plugin order:
|
|
76
80
|
|
|
77
81
|
```ts
|
|
78
82
|
interface PipelineResult {
|
|
79
83
|
readonly document: AsyncAPIDocumentInterface;
|
|
80
84
|
readonly diagnostics: readonly Diagnostic[];
|
|
85
|
+
readonly source?: AsyncAPISource;
|
|
81
86
|
readonly artifacts: readonly GeneratedArtifact[];
|
|
82
87
|
readonly pluginNames: readonly string[];
|
|
83
88
|
}
|
|
@@ -107,14 +112,13 @@ The scoped package is not a normal consumer dependency; prefer the `opalesce` fa
|
|
|
107
112
|
|
|
108
113
|
`run` executes one deterministic pipeline:
|
|
109
114
|
|
|
110
|
-
1.
|
|
111
|
-
2.
|
|
112
|
-
3.
|
|
113
|
-
4. Run
|
|
114
|
-
5.
|
|
115
|
-
6. Return a frozen result with all in-memory artifacts.
|
|
115
|
+
1. Snapshot `config.plugins` in declared order.
|
|
116
|
+
2. Parse `config.input` once.
|
|
117
|
+
3. Create one frozen plugin context with a lazy interaction contract.
|
|
118
|
+
4. Run and await each plugin `generate` in declared order.
|
|
119
|
+
5. Return a frozen result with all in-memory artifacts.
|
|
116
120
|
|
|
117
|
-
|
|
121
|
+
Core parse failures pass through unchanged. A generation failure stops the pipeline immediately, so later plugins do not run.
|
|
118
122
|
|
|
119
123
|
## Pipeline Configuration
|
|
120
124
|
|
|
@@ -130,7 +134,7 @@ interface PipelineConfig {
|
|
|
130
134
|
| --------- | -------- | ------------------------------------------------------------------------------------------------------------ |
|
|
131
135
|
| `input` | Yes | YAML or JSON text, a JavaScript AsyncAPI object, or an existing official AsyncAPI document accepted by Core. |
|
|
132
136
|
| `parser` | No | Core parser-constructor and parse options forwarded unchanged to `parseAsyncAPI`. |
|
|
133
|
-
| `plugins` | No | Plugins to
|
|
137
|
+
| `plugins` | No | Plugins to execute sequentially in declared order. Defaults to an empty pipeline. |
|
|
134
138
|
|
|
135
139
|
`defineConfig` is an identity helper. It preserves the concrete config type and improves TypeScript inference:
|
|
136
140
|
|
|
@@ -161,131 +165,88 @@ interface ManifestPluginOptions {
|
|
|
161
165
|
|
|
162
166
|
export const manifestPlugin = definePlugin((options: ManifestPluginOptions) => ({
|
|
163
167
|
name: "manifest",
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
168
|
+
generate(context) {
|
|
169
|
+
return [
|
|
170
|
+
{
|
|
171
|
+
path: options.path,
|
|
172
|
+
contents: JSON.stringify(
|
|
173
|
+
{
|
|
174
|
+
asyncapi: context.document.version(),
|
|
175
|
+
},
|
|
176
|
+
null,
|
|
177
|
+
2,
|
|
178
|
+
),
|
|
179
|
+
},
|
|
180
|
+
];
|
|
175
181
|
},
|
|
176
182
|
}));
|
|
177
183
|
```
|
|
178
184
|
|
|
179
|
-
A plugin
|
|
185
|
+
A plugin has one required execution hook:
|
|
180
186
|
|
|
181
187
|
```ts
|
|
182
188
|
interface OrchestrationPlugin {
|
|
183
189
|
readonly name: string;
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
190
|
+
generate(
|
|
191
|
+
context: PluginContext,
|
|
192
|
+
): readonly GeneratedArtifact[] | Promise<readonly GeneratedArtifact[]>;
|
|
187
193
|
}
|
|
188
194
|
```
|
|
189
195
|
|
|
190
|
-
|
|
191
|
-
- `build` consumes services, inspects previously emitted artifacts, and emits new artifacts.
|
|
192
|
-
- All setup hooks finish before the first build hook starts.
|
|
193
|
-
- Hooks run sequentially. A hook can be synchronous or asynchronous.
|
|
194
|
-
|
|
195
|
-
Plugin names must be non-empty and unique in one pipeline.
|
|
196
|
-
|
|
197
|
-
## Plugin Dependencies
|
|
198
|
-
|
|
199
|
-
Use `dependsOn` when a plugin requires another configured plugin:
|
|
196
|
+
The context separates the complete parser model from shared generation semantics:
|
|
200
197
|
|
|
201
198
|
```ts
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
name: "consumer",
|
|
209
|
-
dependsOn: ["provider"],
|
|
210
|
-
build() {},
|
|
211
|
-
}));
|
|
212
|
-
|
|
213
|
-
const config = defineConfig({
|
|
214
|
-
input,
|
|
215
|
-
plugins: [consumer(), provider()],
|
|
216
|
-
});
|
|
199
|
+
interface PluginContext {
|
|
200
|
+
readonly document: AsyncAPIDocumentInterface;
|
|
201
|
+
readonly interaction: InteractionContract;
|
|
202
|
+
readonly diagnostics: readonly Diagnostic[];
|
|
203
|
+
readonly source?: AsyncAPISource;
|
|
204
|
+
}
|
|
217
205
|
```
|
|
218
206
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
-
|
|
224
|
-
-
|
|
225
|
-
-
|
|
226
|
-
-
|
|
227
|
-
-
|
|
228
|
-
|
|
229
|
-
These failures use `PluginConfigurationError` and occur before Core parses the input.
|
|
230
|
-
|
|
231
|
-
## Sharing Typed Services
|
|
232
|
-
|
|
233
|
-
Service tokens allow one plugin to provide a typed in-memory capability to another plugin without adding untyped fields to a global context.
|
|
207
|
+
- `document` is the complete official parser model, including bindings, servers, security, and extensions.
|
|
208
|
+
- `interaction` is the target-neutral schema, message, channel, parameter, operation, reply, and dependency contract shared by TypeScript, Zod, and other output plugins.
|
|
209
|
+
- `diagnostics` contains parser diagnostics.
|
|
210
|
+
- `source` is the optional unresolved source snapshot.
|
|
211
|
+
- `generate` returns text artifacts.
|
|
212
|
+
- Plugin generations run sequentially in the exact order declared in `plugins`.
|
|
213
|
+
- Core awaits asynchronous generation before starting the next plugin.
|
|
214
|
+
- Core lazily builds `interaction` on first access and returns the same immutable contract identity to every plugin in the run.
|
|
215
|
+
- Plugins own target-specific projection, naming, rendering, and files.
|
|
216
|
+
- Plugins do not receive services or artifacts from other plugins.
|
|
234
217
|
|
|
235
|
-
|
|
236
|
-
import { createServiceToken, definePipelineConfig, definePlugin, run } from "opalesce";
|
|
218
|
+
Contract normalization supports AsyncAPI 2.6, 3.0, and 3.1. A plugin that never reads `interaction` does not trigger normalization, so document-only plugins retain parser-level version support. Contract construction never reads files, accesses the network, or invokes another parser.
|
|
237
219
|
|
|
238
|
-
|
|
239
|
-
readonly asyncapiVersion: string;
|
|
240
|
-
}
|
|
220
|
+
For raw text and object inputs, `context.source.data` is an Opalesce-owned recursively frozen snapshot captured before parser reference resolution. It preserves authored `$ref` strings and boolean schemas instead of exposing the resolved, potentially cyclic parser model. `context.source.uri` contains `parse.source` when supplied. The same source identity is shared by every plugin and the pipeline result.
|
|
241
221
|
|
|
242
|
-
|
|
222
|
+
When `input` is an existing `AsyncAPIDocumentInterface`, `source` is `undefined`. Core does not reconstruct purported authored input from `document.json()` because that model has already been resolved.
|
|
243
223
|
|
|
244
|
-
|
|
245
|
-
name: "document-info-provider",
|
|
246
|
-
setup(context) {
|
|
247
|
-
context.provide(documentInfoService, {
|
|
248
|
-
asyncapiVersion: context.document.version(),
|
|
249
|
-
});
|
|
250
|
-
},
|
|
251
|
-
}));
|
|
224
|
+
The name identifies a plugin in results and execution errors. Repeated entries and repeated names are executed rather than deduplicated.
|
|
252
225
|
|
|
253
|
-
|
|
254
|
-
name: "document-info-file",
|
|
255
|
-
dependsOn: ["document-info-provider"],
|
|
256
|
-
build(context) {
|
|
257
|
-
const documentInfo = context.get(documentInfoService);
|
|
226
|
+
## Linear Plugin Order
|
|
258
227
|
|
|
259
|
-
|
|
260
|
-
path: "metadata/document.txt",
|
|
261
|
-
contents: `${documentInfo.asyncapiVersion}\n`,
|
|
262
|
-
});
|
|
263
|
-
},
|
|
264
|
-
}));
|
|
228
|
+
The config array is the complete execution plan:
|
|
265
229
|
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
);
|
|
230
|
+
```ts
|
|
231
|
+
const config = defineConfig({
|
|
232
|
+
input,
|
|
233
|
+
plugins: [typescriptPlugin(), documentationPlugin(), metadataPlugin()],
|
|
234
|
+
});
|
|
272
235
|
```
|
|
273
236
|
|
|
274
|
-
|
|
237
|
+
Core does not reorder plugins. If the same plugin instance appears twice, its `generate` runs twice at those positions. Generation contexts cannot observe earlier artifacts, so config order controls execution without creating a plugin dependency API.
|
|
275
238
|
|
|
276
|
-
|
|
239
|
+
## Returning Artifacts
|
|
277
240
|
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
## Emitting Artifacts
|
|
281
|
-
|
|
282
|
-
Only build contexts expose `emit`:
|
|
241
|
+
`generate` returns artifact descriptions:
|
|
283
242
|
|
|
284
243
|
```ts
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
}
|
|
244
|
+
return [
|
|
245
|
+
{
|
|
246
|
+
path: "types/UserCreated.ts",
|
|
247
|
+
contents: "export interface UserCreated {}\n",
|
|
248
|
+
},
|
|
249
|
+
];
|
|
289
250
|
```
|
|
290
251
|
|
|
291
252
|
Artifact paths must:
|
|
@@ -296,55 +257,33 @@ Artifact paths must:
|
|
|
296
257
|
- Not be POSIX or Windows absolute paths.
|
|
297
258
|
- Be unique across the complete pipeline.
|
|
298
259
|
|
|
299
|
-
Artifacts are stored as defensive frozen copies
|
|
300
|
-
|
|
301
|
-
```ts
|
|
302
|
-
const barrelPlugin = definePlugin(() => ({
|
|
303
|
-
name: "barrel",
|
|
304
|
-
build(context) {
|
|
305
|
-
const modules = context.artifacts
|
|
306
|
-
.filter((artifact) => artifact.path.endsWith(".ts"))
|
|
307
|
-
.map((artifact) => `export * from "./${artifact.path}";`)
|
|
308
|
-
.join("\n");
|
|
309
|
-
|
|
310
|
-
context.emit({
|
|
311
|
-
path: "index.ts",
|
|
312
|
-
contents: `${modules}\n`,
|
|
313
|
-
});
|
|
314
|
-
},
|
|
315
|
-
}));
|
|
316
|
-
```
|
|
260
|
+
Artifacts are stored as defensive frozen copies and become visible in `PipelineResult` after the complete run succeeds. A plugin cannot inspect artifacts returned by another plugin. Outputs that must be coordinated, such as modules and their barrel file, belong to one plugin.
|
|
317
261
|
|
|
318
262
|
Core returns artifacts but does not write them. A facade or storage layer owns output-directory resolution, atomic writes, cleanup, and rollback.
|
|
319
263
|
|
|
320
264
|
## Error Handling
|
|
321
265
|
|
|
322
266
|
```ts
|
|
323
|
-
import {
|
|
324
|
-
import { AsyncAPIParseError } from "@opalesce/core";
|
|
267
|
+
import { AsyncAPIParseError, PluginExecutionError, run } from "@opalesce/core";
|
|
325
268
|
|
|
326
269
|
try {
|
|
327
270
|
await run(config);
|
|
328
271
|
} catch (error) {
|
|
329
|
-
if (error instanceof
|
|
330
|
-
console.error(error.code, error.pluginNames);
|
|
331
|
-
} else if (error instanceof AsyncAPIParseError) {
|
|
272
|
+
if (error instanceof AsyncAPIParseError) {
|
|
332
273
|
console.error(error.diagnostics);
|
|
333
274
|
} else if (error instanceof PluginExecutionError) {
|
|
334
|
-
console.error(error.pluginName, error.
|
|
275
|
+
console.error(error.pluginName, error.cause);
|
|
335
276
|
} else {
|
|
336
277
|
throw error;
|
|
337
278
|
}
|
|
338
279
|
}
|
|
339
280
|
```
|
|
340
281
|
|
|
341
|
-
| Error
|
|
342
|
-
|
|
|
343
|
-
| `
|
|
344
|
-
| `
|
|
345
|
-
| `
|
|
346
|
-
| `ServiceRegistryError` | A hook retrieves a missing service or provides a token twice. It is available as `PluginExecutionError.cause`. |
|
|
347
|
-
| `ArtifactError` | A hook emits an invalid or colliding artifact path. It is available as `PluginExecutionError.cause`. |
|
|
282
|
+
| Error | When it is raised |
|
|
283
|
+
| ---------------------- | --------------------------------------------------------------------------------------------- |
|
|
284
|
+
| `AsyncAPIParseError` | Core cannot produce a valid AsyncAPI document. This error passes through unchanged. |
|
|
285
|
+
| `PluginExecutionError` | Plugin generation fails. It contains `pluginName` and the original `cause`. |
|
|
286
|
+
| `ArtifactError` | A plugin returns an invalid or colliding artifact path. It is a `PluginExecutionError.cause`. |
|
|
348
287
|
|
|
349
288
|
The pipeline is fail-fast and returns no partial result after an error.
|
|
350
289
|
|
|
@@ -357,18 +296,29 @@ Runtime exports:
|
|
|
357
296
|
- `defineConfig`
|
|
358
297
|
- `definePlugin`
|
|
359
298
|
- `run`
|
|
360
|
-
- `createServiceToken`
|
|
361
|
-
- `PluginConfigurationError`
|
|
362
299
|
- `PluginExecutionError`
|
|
363
|
-
- `ServiceRegistryError`
|
|
364
300
|
- `ArtifactError`
|
|
301
|
+
- `InteractionContractError`
|
|
365
302
|
|
|
366
|
-
The root entry point also exports
|
|
303
|
+
The root entry point also exports parser, pipeline, plugin, context, artifact, and error-code types, including:
|
|
367
304
|
|
|
368
305
|
- `Input`
|
|
369
306
|
- `ParseAsyncAPIOptions`
|
|
370
307
|
- `AsyncAPIDocumentInterface`
|
|
371
308
|
- `Diagnostic`
|
|
309
|
+
- `AsyncAPISource`
|
|
310
|
+
- `JsonValue`
|
|
311
|
+
- `OrchestrationPlugin`
|
|
312
|
+
- `PluginContext`
|
|
313
|
+
- `PipelineConfig`
|
|
314
|
+
- `PipelineResult`
|
|
315
|
+
- `GeneratedArtifact`
|
|
316
|
+
- `InteractionContract`
|
|
317
|
+
- `SchemaContract`
|
|
318
|
+
- `MessageContract`
|
|
319
|
+
- `ChannelContract`
|
|
320
|
+
- `OperationContract`
|
|
321
|
+
- `ReplyContract`
|
|
372
322
|
|
|
373
323
|
## Current Boundaries
|
|
374
324
|
|
|
@@ -398,11 +348,11 @@ The workspace pins pnpm through the root `packageManager` field. For manual setu
|
|
|
398
348
|
|
|
399
349
|
## Stack
|
|
400
350
|
|
|
401
|
-
| Area | Version source files
|
|
402
|
-
| ----------------------------------------- |
|
|
403
|
-
| Runtime dependencies and package metadata | [`package.json`](./package.json)
|
|
404
|
-
| Development environment | [`../../flake.nix`](../../flake.nix)
|
|
405
|
-
| Workspace command aliases | [`../../justfile`](../../justfile)
|
|
351
|
+
| Area | Version source files |
|
|
352
|
+
| ----------------------------------------- | ------------------------------------ |
|
|
353
|
+
| Runtime dependencies and package metadata | [`package.json`](./package.json) |
|
|
354
|
+
| Development environment | [`../../flake.nix`](../../flake.nix) |
|
|
355
|
+
| Workspace command aliases | [`../../justfile`](../../justfile) |
|
|
406
356
|
|
|
407
357
|
## Development Commands
|
|
408
358
|
|
|
@@ -417,8 +367,8 @@ Run commands from the repository root:
|
|
|
417
367
|
| `just nx run-many -t build` | Build every Nx package project. |
|
|
418
368
|
| `just nx run-many -t check --parallel=1` | Run package checks across the Nx workspace. |
|
|
419
369
|
|
|
420
|
-
The package tests cover parser option forwarding,
|
|
370
|
+
The package tests cover parser option forwarding, declared plugin order, sequential asynchronous generation, artifact validation, immutable results, package exports, and error propagation.
|
|
421
371
|
|
|
422
372
|
## License
|
|
423
373
|
|
|
424
|
-
|
|
374
|
+
Licensed under the [MIT License](./LICENSE).
|
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
export { ArtifactError,
|
|
2
|
-
export type { ArtifactErrorCode
|
|
1
|
+
export { ArtifactError, PluginExecutionError } from "./orchestrator/errors.js";
|
|
2
|
+
export type { ArtifactErrorCode } from "./orchestrator/errors.js";
|
|
3
3
|
export { defineConfig, definePlugin } from "./orchestrator/helpers.js";
|
|
4
4
|
export { run } from "./orchestrator/run.js";
|
|
5
|
-
export {
|
|
6
|
-
export type { ServiceToken } from "./orchestrator/services.js";
|
|
7
|
-
export type { GeneratedArtifact, OrchestrationPlugin, PipelineConfig, PipelineResult, PluginBuildContext, PluginContext, PluginExecutionPhase, PluginSetupContext, } from "./orchestrator/types.js";
|
|
5
|
+
export type { GeneratedArtifact, OrchestrationPlugin, PipelineConfig, PipelineResult, PluginContext, } from "./orchestrator/types.js";
|
|
8
6
|
export { AsyncAPIParseError, parseAsyncAPI } from "./parseAsyncAPI.js";
|
|
9
7
|
export type { AsyncAPIDocumentInterface, AsyncAPIParserOptions, Diagnostic, Input, ParseAsyncAPIOptions, ParseOptions, ParsedAsyncAPI, } from "./parseAsyncAPI.js";
|
|
8
|
+
export type { AsyncAPISource, JsonArray, JsonObject, JsonPrimitive, JsonValue } from "./source.js";
|
|
9
|
+
export { InteractionContractError } from "./interaction/errors.js";
|
|
10
|
+
export type { InteractionContractErrorCode, InteractionContractErrorOptions, } from "./interaction/errors.js";
|
|
11
|
+
export type { ChannelContract, ChannelParameterContract, InteractionAction, InteractionAsyncAPIVersion, InteractionContract, InteractionRootKind, InteractionRootMetadata, MessageContract, OperationContract, ReplyContract, SchemaContract, SchemaDependencyContract, SchemaRoleContract, } from "./interaction/types.js";
|
|
10
12
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAC/E,YAAY,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,aAAa,GACd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACvE,YAAY,EACV,yBAAyB,EACzB,qBAAqB,EACrB,UAAU,EACV,KAAK,EACL,oBAAoB,EACpB,YAAY,EACZ,cAAc,GACf,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACnG,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,YAAY,EACV,4BAA4B,EAC5B,+BAA+B,GAChC,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,eAAe,EACf,wBAAwB,EACxB,iBAAiB,EACjB,0BAA0B,EAC1B,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,wBAAwB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { ArtifactError,
|
|
1
|
+
export { ArtifactError, PluginExecutionError } from "./orchestrator/errors.js";
|
|
2
2
|
export { defineConfig, definePlugin } from "./orchestrator/helpers.js";
|
|
3
3
|
export { run } from "./orchestrator/run.js";
|
|
4
|
-
export { createServiceToken } from "./orchestrator/services.js";
|
|
5
4
|
export { AsyncAPIParseError, parseAsyncAPI } from "./parseAsyncAPI.js";
|
|
5
|
+
export { InteractionContractError } from "./interaction/errors.js";
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { AsyncAPIDocumentInterface } from "@asyncapi/parser";
|
|
2
|
+
import type { InteractionContract } from "./types.js";
|
|
3
|
+
import type { AsyncAPISource } from "../source.js";
|
|
4
|
+
export declare function buildInteractionContract(document: AsyncAPIDocumentInterface, source?: AsyncAPISource): InteractionContract;
|
|
5
|
+
//# sourceMappingURL=build.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/interaction/build.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EAM1B,MAAM,kBAAkB,CAAC;AAG1B,OAAO,KAAK,EAKV,mBAAmB,EAIpB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AA2NnD,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,yBAAyB,EACnC,MAAM,CAAC,EAAE,cAAc,GACtB,mBAAmB,CAqOrB"}
|