@ir-kit/asyncapi-typescript 1.0.0 → 2.0.1

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.
Files changed (39) hide show
  1. package/README.md +2 -2
  2. package/dist/ast/raw-text-node.d.ts +3 -16
  3. package/dist/ast/raw-text-node.d.ts.map +1 -1
  4. package/dist/ast/raw-text-node.js +4 -33
  5. package/dist/ast/raw-text-node.js.map +1 -1
  6. package/dist/ast/ts-node.d.ts +3 -21
  7. package/dist/ast/ts-node.d.ts.map +1 -1
  8. package/dist/ast/ts-node.js +4 -37
  9. package/dist/ast/ts-node.js.map +1 -1
  10. package/dist/ast/value-node.d.ts +26 -0
  11. package/dist/ast/value-node.d.ts.map +1 -0
  12. package/dist/ast/value-node.js +40 -0
  13. package/dist/ast/value-node.js.map +1 -0
  14. package/dist/index.d.ts +1 -1
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js.map +1 -1
  17. package/dist/orchestrator.d.ts.map +1 -1
  18. package/dist/orchestrator.js +4 -3
  19. package/dist/orchestrator.js.map +1 -1
  20. package/dist/plugin.d.ts +3 -1
  21. package/dist/plugin.d.ts.map +1 -1
  22. package/dist/plugin.js.map +1 -1
  23. package/dist/plugins/event-map/config.d.ts.map +1 -1
  24. package/dist/plugins/event-map/config.js +1 -3
  25. package/dist/plugins/event-map/config.js.map +1 -1
  26. package/dist/plugins/event-map/plugin.d.ts.map +1 -1
  27. package/dist/plugins/event-map/plugin.js +12 -6
  28. package/dist/plugins/event-map/plugin.js.map +1 -1
  29. package/dist/plugins/event-map/types.d.ts +2 -5
  30. package/dist/plugins/event-map/types.d.ts.map +1 -1
  31. package/dist/plugins/typescript/index.d.ts +1 -1
  32. package/dist/plugins/typescript/index.d.ts.map +1 -1
  33. package/dist/plugins/typescript/plugin.d.ts +12 -9
  34. package/dist/plugins/typescript/plugin.d.ts.map +1 -1
  35. package/dist/plugins/typescript/plugin.js +113 -46
  36. package/dist/plugins/typescript/plugin.js.map +1 -1
  37. package/dist/plugins/typescript/types.d.ts +5 -1
  38. package/dist/plugins/typescript/types.d.ts.map +1 -1
  39. package/package.json +11 -11
package/README.md CHANGED
@@ -13,7 +13,7 @@ pnpm add -D @ir-kit/asyncapi-typescript
13
13
  Peer deps (most are dev-only at consumer side):
14
14
 
15
15
  - `@asyncapi/parser` `>=3.0.0`
16
- - `@asyncapi/modelina` `>=5.0.0`
16
+ - `@hey-api/openapi-ts` `>=0.99.0`
17
17
  - `@hey-api/codegen-core` `>=0.8.0`
18
18
  - `@ir-kit/asyncapi-core`, `@ir-kit/asyncapi-core`, `@ir-kit/codegen-core`
19
19
  - `typescript` `>=5.0.0`
@@ -52,7 +52,7 @@ For a full RabbitMQ run (producer + consumer end-to-end), see `examples/asyncapi
52
52
 
53
53
  | Plugin | File(s) emitted | Description |
54
54
  |---|---|---|
55
- | `typescript()` | `types.gen.ts` | TS interfaces from message payload schemas (via `@asyncapi/modelina`). Names taken from spec message ids. |
55
+ | `typescript()` | `types.gen.ts` | TS types from message payload and component schemas (via `@hey-api/openapi-ts`). Names taken from spec message ids and component names. |
56
56
  | `events()` | `events.gen.ts` | `Events` const with `{type, routingKey, exchange, exchangeType, contentType}` per channel/operation, plus an `EventName` type alias |
57
57
  | `eventMap()` | `event-map.gen.ts` | `EventMap` keyed by event-type literal → message interface, `AnyMessage` union, `isMessageOfType` discriminator |
58
58
  | `dispatch()` | `dispatch.gen.ts` + `handlers.gen.ts` | Generic `Registry` runtime (with `.on(...)`, `.dispatch`, `.toCallback(...)`, `.bindings`) + spec-bound `handlers()` factory |
@@ -1,21 +1,8 @@
1
- import type { AnalysisContext, Symbol as CoreSymbol, File, Node as ICoreNode, NodeScope } from "@hey-api/codegen-core";
2
- /** INode wrapper around pre-rendered text. Used for Modelina output and bundle copies. */
3
- export declare class RawTextNode implements ICoreNode<string> {
4
- readonly "~brand" = "heyapi.node";
5
- readonly language = "typescript";
6
- exported?: boolean;
7
- root: boolean;
8
- scope?: NodeScope;
9
- symbol?: CoreSymbol;
10
- file?: File;
11
- private _name;
12
- private readonly _text;
1
+ import { ValueNode } from "./value-node.js";
2
+ /** INode wrapper around pre-rendered text. Used for generated text and bundle copies. */
3
+ export declare class RawTextNode extends ValueNode<string> {
13
4
  constructor(text: string, options?: {
14
5
  name?: string;
15
6
  });
16
- get name(): ICoreNode["name"];
17
- analyze(_: AnalysisContext): void;
18
- clone(): this;
19
- toAst(): string;
20
7
  }
21
8
  //# sourceMappingURL=raw-text-node.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"raw-text-node.d.ts","sourceRoot":"","sources":["../../src/ast/raw-text-node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,MAAM,IAAI,UAAU,EACpB,IAAI,EACJ,IAAI,IAAI,SAAS,EACjB,SAAS,EAEV,MAAM,uBAAuB,CAAC;AAG/B,0FAA0F;AAC1F,qBAAa,WAAY,YAAW,SAAS,CAAC,MAAM,CAAC;IACnD,QAAQ,CAAC,QAAQ,iBAAa;IAC9B,QAAQ,CAAC,QAAQ,gBAAgB;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,IAAI,CAAC,EAAE,IAAI,CAAC;IAEZ,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;gBAEnB,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAO;IAMzD,IAAI,IAAI,IAAI,SAAS,CAAC,MAAM,CAAC,CAQ5B;IAED,OAAO,CAAC,CAAC,EAAE,eAAe,GAAG,IAAI;IAEjC,KAAK,IAAI,IAAI;IAMb,KAAK,IAAI,MAAM;CAGhB"}
1
+ {"version":3,"file":"raw-text-node.d.ts","sourceRoot":"","sources":["../../src/ast/raw-text-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,yFAAyF;AACzF,qBAAa,WAAY,SAAQ,SAAS,CAAC,MAAM,CAAC;gBACpC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAO;CAG1D"}
@@ -1,37 +1,8 @@
1
- import { nodeBrand, ref } from "@hey-api/codegen-core";
2
- /** INode wrapper around pre-rendered text. Used for Modelina output and bundle copies. */
3
- export class RawTextNode {
4
- "~brand" = nodeBrand;
5
- language = "typescript";
6
- exported;
7
- root;
8
- scope;
9
- symbol;
10
- file;
11
- _name;
12
- _text;
1
+ import { ValueNode } from "./value-node.js";
2
+ /** INode wrapper around pre-rendered text. Used for generated text and bundle copies. */
3
+ export class RawTextNode extends ValueNode {
13
4
  constructor(text, options = {}) {
14
- this._text = text;
15
- this._name = ref(options.name ?? "raw");
16
- this.root = true;
17
- }
18
- get name() {
19
- return {
20
- ...this._name,
21
- set: (value) => {
22
- this._name = ref(typeof value === "string" ? value : String(value));
23
- },
24
- toString: () => this._name["~ref"],
25
- };
26
- }
27
- analyze(_) { }
28
- clone() {
29
- const cloned = Object.create(Object.getPrototypeOf(this));
30
- Object.assign(cloned, this);
31
- return cloned;
32
- }
33
- toAst() {
34
- return this._text;
5
+ super(text, { name: options.name ?? "raw" });
35
6
  }
36
7
  }
37
8
  //# sourceMappingURL=raw-text-node.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"raw-text-node.js","sourceRoot":"","sources":["../../src/ast/raw-text-node.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAEvD,0FAA0F;AAC1F,MAAM,OAAO,WAAW;IACb,QAAQ,GAAG,SAAS,CAAC;IACrB,QAAQ,GAAG,YAAY,CAAC;IACjC,QAAQ,CAAW;IACnB,IAAI,CAAU;IACd,KAAK,CAAa;IAClB,MAAM,CAAc;IACpB,IAAI,CAAQ;IAEJ,KAAK,CAAc;IACV,KAAK,CAAS;IAE/B,YAAY,IAAY,EAAE,UAA6B,EAAE;QACvD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,IAAI;QACN,OAAO;YACL,GAAG,IAAI,CAAC,KAAK;YACb,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE;gBACb,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACtE,CAAC;YACD,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;SACd,CAAC;IACzB,CAAC;IAED,OAAO,CAAC,CAAkB,IAAS,CAAC;IAEpC,KAAK;QACH,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1D,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC5B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF"}
1
+ {"version":3,"file":"raw-text-node.js","sourceRoot":"","sources":["../../src/ast/raw-text-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,yFAAyF;AACzF,MAAM,OAAO,WAAY,SAAQ,SAAiB;IAChD,YAAY,IAAY,EAAE,UAA6B,EAAE;QACvD,KAAK,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC;IAC/C,CAAC;CACF"}
@@ -1,25 +1,7 @@
1
- import type { AnalysisContext, Symbol as CoreSymbol, File, Node as ICoreNode, NodeScope } from "@hey-api/codegen-core";
2
1
  import type ts from "typescript";
2
+ import { ValueNode, type ValueNodeOptions } from "./value-node.js";
3
3
  /** INode wrapper around a `ts.Statement`. Mirrors hey-api's `TsDsl` base. */
4
- export declare class TsStatementNode implements ICoreNode<ts.Statement> {
5
- readonly "~brand" = "heyapi.node";
6
- readonly language = "typescript";
7
- exported?: boolean;
8
- root: boolean;
9
- scope?: NodeScope;
10
- symbol?: CoreSymbol;
11
- file?: File;
12
- private _name;
13
- private readonly _statement;
14
- constructor(statement: ts.Statement, options?: {
15
- name: string;
16
- exported?: boolean;
17
- root?: boolean;
18
- scope?: NodeScope;
19
- });
20
- get name(): ICoreNode["name"];
21
- analyze(_: AnalysisContext): void;
22
- clone(): this;
23
- toAst(): ts.Statement;
4
+ export declare class TsStatementNode extends ValueNode<ts.Statement> {
5
+ constructor(statement: ts.Statement, options?: ValueNodeOptions);
24
6
  }
25
7
  //# sourceMappingURL=ts-node.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ts-node.d.ts","sourceRoot":"","sources":["../../src/ast/ts-node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,MAAM,IAAI,UAAU,EACpB,IAAI,EACJ,IAAI,IAAI,SAAS,EACjB,SAAS,EAEV,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,6EAA6E;AAC7E,qBAAa,eAAgB,YAAW,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC;IAC7D,QAAQ,CAAC,QAAQ,iBAAa;IAC9B,QAAQ,CAAC,QAAQ,gBAAgB;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,IAAI,CAAC,EAAE,IAAI,CAAC;IAEZ,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAe;gBAGxC,SAAS,EAAE,EAAE,CAAC,SAAS,EACvB,OAAO,GAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,KAAK,CAAC,EAAE,SAAS,CAAC;KAGnB;IASH,IAAI,IAAI,IAAI,SAAS,CAAC,MAAM,CAAC,CAQ5B;IAED,OAAO,CAAC,CAAC,EAAE,eAAe,GAAG,IAAI;IAEjC,KAAK,IAAI,IAAI;IAMb,KAAK,IAAI,EAAE,CAAC,SAAS;CAGtB"}
1
+ {"version":3,"file":"ts-node.d.ts","sourceRoot":"","sources":["../../src/ast/ts-node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,EAAE,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnE,6EAA6E;AAC7E,qBAAa,eAAgB,SAAQ,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC;gBAExD,SAAS,EAAE,EAAE,CAAC,SAAS,EACvB,OAAO,GAAE,gBAAmC;CAI/C"}
@@ -1,41 +1,8 @@
1
- import { nodeBrand, ref } from "@hey-api/codegen-core";
1
+ import { ValueNode } from "./value-node.js";
2
2
  /** INode wrapper around a `ts.Statement`. Mirrors hey-api's `TsDsl` base. */
3
- export class TsStatementNode {
4
- "~brand" = nodeBrand;
5
- language = "typescript";
6
- exported;
7
- root;
8
- scope;
9
- symbol;
10
- file;
11
- _name;
12
- _statement;
13
- constructor(statement, options = {
14
- name: "anon",
15
- }) {
16
- this._statement = statement;
17
- this._name = ref(options.name);
18
- this.exported = options.exported;
19
- this.root = options.root ?? true;
20
- this.scope = options.scope ?? "value";
21
- }
22
- get name() {
23
- return {
24
- ...this._name,
25
- set: (value) => {
26
- this._name = ref(typeof value === "string" ? value : String(value));
27
- },
28
- toString: () => this._name["~ref"],
29
- };
30
- }
31
- analyze(_) { }
32
- clone() {
33
- const cloned = Object.create(Object.getPrototypeOf(this));
34
- Object.assign(cloned, this);
35
- return cloned;
36
- }
37
- toAst() {
38
- return this._statement;
3
+ export class TsStatementNode extends ValueNode {
4
+ constructor(statement, options = { name: "anon" }) {
5
+ super(statement, { ...options, scope: options.scope ?? "value" });
39
6
  }
40
7
  }
41
8
  //# sourceMappingURL=ts-node.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ts-node.js","sourceRoot":"","sources":["../../src/ast/ts-node.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAGvD,6EAA6E;AAC7E,MAAM,OAAO,eAAe;IACjB,QAAQ,GAAG,SAAS,CAAC;IACrB,QAAQ,GAAG,YAAY,CAAC;IACjC,QAAQ,CAAW;IACnB,IAAI,CAAU;IACd,KAAK,CAAa;IAClB,MAAM,CAAc;IACpB,IAAI,CAAQ;IAEJ,KAAK,CAAc;IACV,UAAU,CAAe;IAE1C,YACE,SAAuB,EACvB,UAKI;QACF,IAAI,EAAE,MAAM;KACb;QAED,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC;IACxC,CAAC;IAED,IAAI,IAAI;QACN,OAAO;YACL,GAAG,IAAI,CAAC,KAAK;YACb,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE;gBACb,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACtE,CAAC;YACD,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;SACd,CAAC;IACzB,CAAC;IAED,OAAO,CAAC,CAAkB,IAAS,CAAC;IAEpC,KAAK;QACH,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1D,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC5B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;CACF"}
1
+ {"version":3,"file":"ts-node.js","sourceRoot":"","sources":["../../src/ast/ts-node.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAyB,MAAM,iBAAiB,CAAC;AAEnE,6EAA6E;AAC7E,MAAM,OAAO,eAAgB,SAAQ,SAAuB;IAC1D,YACE,SAAuB,EACvB,UAA4B,EAAE,IAAI,EAAE,MAAM,EAAE;QAE5C,KAAK,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,OAAO,EAAE,CAAC,CAAC;IACpE,CAAC;CACF"}
@@ -0,0 +1,26 @@
1
+ import type { AnalysisContext, Symbol as CoreSymbol, File, Node as ICoreNode, NodeScope } from "@hey-api/codegen-core";
2
+ export interface ValueNodeOptions {
3
+ name: string;
4
+ exported?: boolean;
5
+ root?: boolean;
6
+ scope?: NodeScope;
7
+ }
8
+ /** INode carrying an already-built value that `toAst()` hands back unchanged. */
9
+ export declare class ValueNode<T> implements ICoreNode<T> {
10
+ readonly "~brand" = "heyapi.node";
11
+ readonly language = "typescript";
12
+ meta: unknown;
13
+ exported?: boolean;
14
+ root: boolean;
15
+ scope?: NodeScope;
16
+ symbol?: CoreSymbol;
17
+ file?: File;
18
+ private _name;
19
+ private readonly _value;
20
+ constructor(value: T, options: ValueNodeOptions);
21
+ get name(): ICoreNode["name"];
22
+ analyze(_: AnalysisContext): void;
23
+ clone(): this;
24
+ toAst(): T;
25
+ }
26
+ //# sourceMappingURL=value-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value-node.d.ts","sourceRoot":"","sources":["../../src/ast/value-node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,MAAM,IAAI,UAAU,EACpB,IAAI,EACJ,IAAI,IAAI,SAAS,EACjB,SAAS,EAEV,MAAM,uBAAuB,CAAC;AAG/B,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED,iFAAiF;AACjF,qBAAa,SAAS,CAAC,CAAC,CAAE,YAAW,SAAS,CAAC,CAAC,CAAC;IAC/C,QAAQ,CAAC,QAAQ,iBAAa;IAC9B,QAAQ,CAAC,QAAQ,gBAAgB;IACjC,IAAI,EAAE,OAAO,CAAa;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,IAAI,CAAC,EAAE,IAAI,CAAC;IAEZ,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAI;gBAEf,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,gBAAgB;IAQ/C,IAAI,IAAI,IAAI,SAAS,CAAC,MAAM,CAAC,CAQ5B;IAED,OAAO,CAAC,CAAC,EAAE,eAAe,GAAG,IAAI;IAEjC,KAAK,IAAI,IAAI;IAMb,KAAK,IAAI,CAAC;CAGX"}
@@ -0,0 +1,40 @@
1
+ import { nodeBrand, ref } from "@hey-api/codegen-core";
2
+ /** INode carrying an already-built value that `toAst()` hands back unchanged. */
3
+ export class ValueNode {
4
+ "~brand" = nodeBrand;
5
+ language = "typescript";
6
+ meta = undefined;
7
+ exported;
8
+ root;
9
+ scope;
10
+ symbol;
11
+ file;
12
+ _name;
13
+ _value;
14
+ constructor(value, options) {
15
+ this._value = value;
16
+ this._name = ref(options.name);
17
+ this.exported = options.exported;
18
+ this.root = options.root ?? true;
19
+ this.scope = options.scope;
20
+ }
21
+ get name() {
22
+ return {
23
+ ...this._name,
24
+ set: (value) => {
25
+ this._name = ref(typeof value === "string" ? value : String(value));
26
+ },
27
+ toString: () => this._name["~ref"],
28
+ };
29
+ }
30
+ analyze(_) { }
31
+ clone() {
32
+ const cloned = Object.create(Object.getPrototypeOf(this));
33
+ Object.assign(cloned, this);
34
+ return cloned;
35
+ }
36
+ toAst() {
37
+ return this._value;
38
+ }
39
+ }
40
+ //# sourceMappingURL=value-node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value-node.js","sourceRoot":"","sources":["../../src/ast/value-node.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AASvD,iFAAiF;AACjF,MAAM,OAAO,SAAS;IACX,QAAQ,GAAG,SAAS,CAAC;IACrB,QAAQ,GAAG,YAAY,CAAC;IACjC,IAAI,GAAY,SAAS,CAAC;IAC1B,QAAQ,CAAW;IACnB,IAAI,CAAU;IACd,KAAK,CAAa;IAClB,MAAM,CAAc;IACpB,IAAI,CAAQ;IAEJ,KAAK,CAAc;IACV,MAAM,CAAI;IAE3B,YAAY,KAAQ,EAAE,OAAyB;QAC7C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC7B,CAAC;IAED,IAAI,IAAI;QACN,OAAO;YACL,GAAG,IAAI,CAAC,KAAK;YACb,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE;gBACb,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACtE,CAAC;YACD,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;SACd,CAAC;IACzB,CAAC;IAED,OAAO,CAAC,CAAkB,IAAS,CAAC;IAEpC,KAAK;QACH,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1D,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC5B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF"}
package/dist/index.d.ts CHANGED
@@ -10,6 +10,6 @@ export type { EventsPluginConfig, EventsResolvedConfig, } from "./plugins/events
10
10
  export { events } from "./plugins/events/index.js";
11
11
  export type { IndexBarrelConfig, IndexBarrelResolvedConfig, } from "./plugins/index-barrel/index.js";
12
12
  export { indexBarrel } from "./plugins/index-barrel/index.js";
13
- export type { TypescriptPluginConfig, TypescriptResolvedConfig, } from "./plugins/typescript/index.js";
13
+ export type { TypescriptApi, TypescriptPluginConfig, TypescriptResolvedConfig, } from "./plugins/typescript/index.js";
14
14
  export { typescript } from "./plugins/typescript/index.js";
15
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,QAAQ,GACT,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,mBAAmB,EACxB,kBAAkB,EAClB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,eAAe,EACf,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,gBAAgB,GACtB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,YAAY,EACV,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,YAAY,EACV,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,YAAY,EACV,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,YAAY,EACV,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,YAAY,EACV,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,QAAQ,GACT,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,mBAAmB,EACxB,kBAAkB,EAClB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,eAAe,EACf,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,gBAAgB,GACtB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,YAAY,EACV,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,YAAY,EACV,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,YAAY,EACV,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,YAAY,EACV,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,YAAY,EACV,aAAa,EACb,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,QAAQ,GACT,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,kBAAkB,EAIlB,eAAe,GAKhB,MAAM,aAAa,CAAC;AAKrB,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAKrD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAKvD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAKxD,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAKnD,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAK9D,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,QAAQ,GACT,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,kBAAkB,EAIlB,eAAe,GAKhB,MAAM,aAAa,CAAC;AAKrB,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAKrD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAKvD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAKxD,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAKnD,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAM9D,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAYlE,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAI3E,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,GAAG,yBAAyB,CAAC;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;CACrC;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CA4C7E"}
1
+ {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAYlE,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAI3E,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,GAAG,yBAAyB,CAAC;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;CACrC;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CA6C7E"}
@@ -26,12 +26,13 @@ export async function generate(opts) {
26
26
  const filesEmitted = [];
27
27
  for (const reg of orderPlugins(opts.plugins)) {
28
28
  const def = reg.__definition;
29
- if (def.api !== undefined)
30
- apiRegistry.set(def.name, def.api);
29
+ const api = def.createApi ? def.createApi() : def.api;
30
+ if (api !== undefined)
31
+ apiRegistry.set(def.name, api);
31
32
  const config = def.resolveConfig
32
33
  ? def.resolveConfig(reg.__userConfig, { document })
33
34
  : { ...def.defaultConfig, ...(reg.__userConfig ?? {}) };
34
- const instance = createPluginInstance(def.name, config, def.api, {
35
+ const instance = createPluginInstance(def.name, config, api, {
35
36
  document,
36
37
  project,
37
38
  files: filesEmitted,
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzE,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,4BAA4B,EAC5B,OAAO,EACP,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAgD,MAAM,aAAa,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAapE,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAqB;IAClD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAE/B,0EAA0E;IAC1E,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE1C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC;QAC1B,IAAI,EAAE,SAAS;QACf,eAAe,EAAE,OAAO;QACxB,2BAA2B,EAAE,0BAA0B;QACvD,UAAU,EAAE,iBAAiB;QAC7B,gBAAgB,EAAE,uBAAuB;QACzC,qBAAqB,EAAE,4BAA4B;QACnD,SAAS,EAAE,CAAC,IAAI,mBAAmB,CAAC,OAAO,CAAC,EAAE,IAAI,eAAe,EAAE,CAAC;KACrE,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC/C,MAAM,YAAY,GAAoB,EAAE,CAAC;IAEzC,KAAK,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7C,MAAM,GAAG,GAAG,GAAG,CAAC,YAAY,CAAC;QAC7B,MAAM,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QACtD,IAAI,GAAG,KAAK,SAAS;YAAE,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAEtD,MAAM,MAAM,GAAG,GAAG,CAAC,aAAa;YAC9B,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,CAAC;YACnD,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,CAAC;QAE1D,MAAM,QAAQ,GAAG,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;YAC3D,QAAQ;YACR,OAAO;YACP,KAAK,EAAE,YAAY;YACnB,WAAW;YACX,OAAO;SACR,CAAC,CAAC;QAEH,IAAI,GAAG,CAAC,KAAK,EAAE,MAAM;YAAE,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACxD,MAAM,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5B,IAAI,GAAG,CAAC,KAAK,EAAE,KAAK;YAAE,MAAM,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,CAAC,IAAI,EAAE,CAAC;IACf,OAAO,kBAAkB,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,SAAS,CAAC,CAAC;AACzD,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,QAA0D,EAC1D,SAAiB;IAEjB,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAoB,EAAE,CAAC;IACpC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,CAAC,GAAG,CAAC,IAAI;YAAE,SAAS;QACxB,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QACxE,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,MAAM,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC/C,CAAC"}
package/dist/plugin.d.ts CHANGED
@@ -73,7 +73,7 @@ export interface PluginInstance<Config = unknown, Api = unknown> {
73
73
  readonly document: AsyncAPIDocumentInterface;
74
74
  /** Files emitted so far (by this and prior plugins). */
75
75
  readonly files: ReadonlyArray<GeneratedFile>;
76
- /** Add a file to the output as raw text. Use for Modelina output, copied bundles, etc. */
76
+ /** Add a file to the output as raw text. Use for generated text and copied bundles. */
77
77
  emit(file: GeneratedFile): void;
78
78
  /**
79
79
  * Add a file to the output as a list of `ts.Statement` AST nodes; the
@@ -117,6 +117,8 @@ export interface PluginDefinition<Name extends string = string, UserConfig = unk
117
117
  }) => ResolvedConfig;
118
118
  /** API surface other plugins can fetch via `plugin.getApi(name)`. */
119
119
  api?: Api;
120
+ /** Like `api`, but built fresh for each `generate()` run so the plugin can hold per-run state. */
121
+ createApi?: () => Api;
120
122
  hooks?: PluginHooks<ResolvedConfig, Api>;
121
123
  /** Names of plugins this one depends on. The orchestrator topologically sorts. */
122
124
  dependsOn?: ReadonlyArray<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAwJH;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAMhC,GAA4D;IAI5D,OAAO,CAAC,MAA4B,EAAE,EAAE,CAAC,CAAC;QACxC,YAAY,EAAE,GAAG;QACjB,YAAY,EAAE,MAAM;QACpB,IAAI,EAAE,GAAG,CAAC,IAAI;KACf,CAAC,CAAC;AACL,CAAC;AAED,mEAAmE;AACnE,MAAM,SAAS,CAAC,CAAC,eAAe,CAC9B,QAAmC,EACnC,KAAiC;IAEjC,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;YAChD,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;QACrC,CAAC;IACH,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,KAAK,MAAM,SAAS,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;YACpD,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;QACzC,CAAC;IACH,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;YACnD,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;QACrC,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AA0JH;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAMhC,GAA4D;IAI5D,OAAO,CAAC,MAA4B,EAAE,EAAE,CAAC,CAAC;QACxC,YAAY,EAAE,GAAG;QACjB,YAAY,EAAE,MAAM;QACpB,IAAI,EAAE,GAAG,CAAC,IAAI;KACf,CAAC,CAAC;AACL,CAAC;AAED,mEAAmE;AACnE,MAAM,SAAS,CAAC,CAAC,eAAe,CAC9B,QAAmC,EACnC,KAAiC;IAEjC,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;YAChD,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;QACrC,CAAC;IACH,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,KAAK,MAAM,SAAS,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;YACpD,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;QACzC,CAAC;IACH,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;YACnD,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;QACrC,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/plugins/event-map/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD,eAAO,MAAM,aAAa,EAAE,sBAE3B,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/plugins/event-map/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD,eAAO,MAAM,aAAa,EAAE,sBAA2B,CAAC"}
@@ -1,4 +1,2 @@
1
- export const defaultConfig = {
2
- messageSuffix: "Message",
3
- };
1
+ export const defaultConfig = {};
4
2
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/plugins/event-map/config.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAA2B;IACnD,aAAa,EAAE,SAAS;CACzB,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/plugins/event-map/config.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAA2B,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/event-map/plugin.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAO/E,eAAO,MAAM,QAAQ,wKAqDnB,CAAC"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/event-map/plugin.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAO/E,eAAO,MAAM,QAAQ,wKA0DnB,CAAC"}
@@ -11,12 +11,14 @@ export const eventMap = definePluginConfig({
11
11
  handler(plugin) {
12
12
  const eventMapMembers = [];
13
13
  const importNames = new Set();
14
+ const types = plugin.getApi("typescript");
14
15
  for (const ev of plugin.forEach("message")) {
15
16
  if (ev.type !== "message")
16
17
  continue;
17
- const interfaceName = `${ev.message.id()}${plugin.config.messageSuffix}`;
18
- importNames.add(interfaceName);
19
- eventMapMembers.push(tn.property(inferEventType(ev.message), tn.ref(interfaceName)));
18
+ const typeName = types?.messageTypeName(ev.message.id());
19
+ if (typeName)
20
+ importNames.add(typeName);
21
+ eventMapMembers.push(tn.property(inferEventType(ev.message), typeName ? tn.ref(typeName) : tn.unknown()));
20
22
  }
21
23
  const anyMessageAlias = f.createTypeAliasDeclaration([f.createModifier(ts.SyntaxKind.ExportKeyword)], "AnyMessage", undefined, f.createIndexedAccessTypeNode(tn.ref("EventMap"), tn.keyOf(tn.ref("EventMap"))));
22
24
  plugin.emitTs("event-map.gen.ts", [
@@ -45,9 +47,13 @@ function buildIsMessageOfType() {
45
47
  f.createParameterDeclaration(undefined, undefined, "msg", undefined, tn.ref("AnyMessage")),
46
48
  f.createParameterDeclaration(undefined, undefined, "type", undefined, tn.ref("K")),
47
49
  ], f.createTypePredicateNode(undefined, "msg", f.createIndexedAccessTypeNode(tn.ref("EventMap"), tn.ref("K"))), f.createBlock([
48
- f.createReturnStatement(f.createBinaryExpression(f.createPropertyAccessExpression(f.createParenthesizedExpression(f.createAsExpression(f.createIdentifier("msg"), f.createTypeLiteralNode([
49
- tn.property("type", tn.string(), true),
50
- ]))), "type"), f.createToken(ts.SyntaxKind.EqualsEqualsEqualsToken), f.createIdentifier("type"))),
50
+ f.createReturnStatement(f.createBinaryExpression(f.createPropertyAccessChain(f.createParenthesizedExpression(f.createAsExpression(f.createIdentifier("msg"), f.createUnionTypeNode([
51
+ f.createTypeLiteralNode([
52
+ tn.property("type", tn.string(), true),
53
+ ]),
54
+ f.createLiteralTypeNode(f.createNull()),
55
+ f.createKeywordTypeNode(ts.SyntaxKind.UndefinedKeyword),
56
+ ]))), f.createToken(ts.SyntaxKind.QuestionDotToken), "type"), f.createToken(ts.SyntaxKind.EqualsEqualsEqualsToken), f.createIdentifier("type"))),
51
57
  ], true));
52
58
  }
53
59
  function inferEventType(message) {
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/plugins/event-map/plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/plugins/event-map/plugin.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,5 @@
1
1
  export interface EventMapPluginConfig {
2
- /** Suffix used on the message-level interface name. Must match `typescript` plugin's. Default: `"Message"`. */
3
- messageSuffix?: string;
4
- }
5
- export interface EventMapResolvedConfig {
6
- messageSuffix: string;
2
+ reserved?: never;
7
3
  }
4
+ export type EventMapResolvedConfig = Record<string, never>;
8
5
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/plugins/event-map/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,+GAA+G;IAC/G,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,MAAM,CAAC;CACvB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/plugins/event-map/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,KAAK,CAAC;CAClB;AAED,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC"}
@@ -1,3 +1,3 @@
1
1
  export { typescript } from "./plugin.js";
2
- export type { TypescriptPluginConfig, TypescriptResolvedConfig, } from "./types.js";
2
+ export type { TypescriptApi, TypescriptPluginConfig, TypescriptResolvedConfig, } from "./types.js";
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/typescript/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,YAAY,EACV,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/typescript/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,YAAY,EACV,aAAa,EACb,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,YAAY,CAAC"}
@@ -1,13 +1,16 @@
1
- import type { TypescriptPluginConfig, TypescriptResolvedConfig } from "./types.js";
1
+ import type { TypescriptApi, TypescriptPluginConfig, TypescriptResolvedConfig } from "./types.js";
2
2
  /**
3
- * Emit one TS interface per message payload schema declared in the spec.
3
+ * Emit TS types for every message payload and named component schema.
4
4
  *
5
- * Each message's payload is fed to Modelina as a standalone JSON Schema
6
- * with `title = "<MessageId><suffix>"` injected so the top-level
7
- * interface is named after the spec's message id. Inner objects
8
- * referenced via $ref take their name from `components.schemas` (we
9
- * inject titles there too — parser dereferences $refs by the time we
10
- * read `payload.json()`, so the title is the only handle Modelina has).
5
+ * Payloads are JSON Schema, so they go to Hey API's `@hey-api/typescript` as
6
+ * the `components.schemas` of an OpenAPI 3.1 document. The parser tags every
7
+ * component schema with `x-parser-schema-id`, which turns its dereferenced
8
+ * copies back into `$ref`s so named types survive.
11
9
  */
12
- export declare const typescript: (config?: Partial<TypescriptPluginConfig> | undefined) => import("../../plugin.js").RegisteredPlugin<"typescript", TypescriptPluginConfig, TypescriptResolvedConfig, unknown>;
10
+ export declare const typescript: (config?: Partial<TypescriptPluginConfig> | undefined) => import("../../plugin.js").RegisteredPlugin<"typescript", TypescriptPluginConfig, TypescriptResolvedConfig, MessageTypeRegistry>;
11
+ /** Hey API's symbol table holds the final (cased, de-duplicated) name of each message's type. */
12
+ interface MessageTypeRegistry extends TypescriptApi {
13
+ names: Map<string, string>;
14
+ }
15
+ export {};
13
16
  //# sourceMappingURL=plugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/typescript/plugin.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,sBAAsB,EACtB,wBAAwB,EACzB,MAAM,YAAY,CAAC;AAQpB;;;;;;;;;GASG;AACH,eAAO,MAAM,UAAU,+KAwDrB,CAAC"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/typescript/plugin.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,aAAa,EACb,sBAAsB,EACtB,wBAAwB,EACzB,MAAM,YAAY,CAAC;AAKpB;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,2LAiFrB,CAAC;AA0EH,iGAAiG;AACjG,UAAU,mBAAoB,SAAQ,aAAa;IACjD,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5B"}
@@ -1,67 +1,134 @@
1
- import { TypeScriptGenerator } from "@asyncapi/modelina";
1
+ import { basename } from "node:path";
2
+ import { createClient } from "@hey-api/openapi-ts";
2
3
  import { definePluginConfig } from "../../plugin.js";
3
4
  import { defaultConfig } from "./config.js";
4
- const HEADER = [
5
- "// AUTO-GENERATED by @ir-kit/asyncapi-typescript — do not hand-edit.",
6
- "",
7
- "",
8
- ].join("\n");
5
+ const HEADER = "// AUTO-GENERATED by @ir-kit/asyncapi-typescript — do not hand-edit.";
9
6
  /**
10
- * Emit one TS interface per message payload schema declared in the spec.
7
+ * Emit TS types for every message payload and named component schema.
11
8
  *
12
- * Each message's payload is fed to Modelina as a standalone JSON Schema
13
- * with `title = "<MessageId><suffix>"` injected so the top-level
14
- * interface is named after the spec's message id. Inner objects
15
- * referenced via $ref take their name from `components.schemas` (we
16
- * inject titles there too — parser dereferences $refs by the time we
17
- * read `payload.json()`, so the title is the only handle Modelina has).
9
+ * Payloads are JSON Schema, so they go to Hey API's `@hey-api/typescript` as
10
+ * the `components.schemas` of an OpenAPI 3.1 document. The parser tags every
11
+ * component schema with `x-parser-schema-id`, which turns its dereferenced
12
+ * copies back into `$ref`s so named types survive.
18
13
  */
19
14
  export const typescript = definePluginConfig({
20
15
  name: "typescript",
21
16
  defaultConfig,
17
+ createApi: () => {
18
+ const names = new Map();
19
+ return { names, messageTypeName: (messageId) => names.get(messageId) };
20
+ },
22
21
  async handler(plugin) {
23
- const generator = new TypeScriptGenerator({
24
- modelType: "interface",
25
- processorOptions: {
26
- interpreter: { ignoreAdditionalProperties: true },
27
- },
28
- rawPropertyNames: true,
29
- });
30
- for (const schema of plugin.document.components()?.schemas()?.all() ?? []) {
31
- const id = schema.id();
32
- const raw = schema.json();
33
- if (id && typeof raw === "object" && raw !== null && !("title" in raw)) {
34
- raw.title = id;
35
- }
22
+ const components = Object.entries(plugin.document.json().components?.schemas ?? {});
23
+ // why: the parser tags component copies with `$id` when present, not the component key.
24
+ const componentKeys = new Map(components.map(([key, json]) => [
25
+ json["x-parser-schema-id"],
26
+ key,
27
+ ]));
28
+ const schemas = {};
29
+ for (const [key, json] of components) {
30
+ schemas[key] = toOpenApiSchema(json, componentKeys, json);
36
31
  }
37
- const seen = new Map();
32
+ const messageKeys = new Map();
38
33
  for (const ev of plugin.forEach("message")) {
39
- if (ev.type !== "message")
34
+ if (ev.type !== "message" || messageKeys.has(ev.message.id()))
40
35
  continue;
41
36
  const payload = ev.message.payload();
42
37
  if (!payload)
43
38
  continue;
44
- const schema = JSON.parse(JSON.stringify(payload.json()));
45
- schema.title = `${ev.message.id()}${plugin.config.messageSuffix}`;
46
- schema.$schema = "http://json-schema.org/draft-07/schema#";
47
- const models = await generator.generate(schema);
48
- for (const model of models) {
49
- if (!seen.has(model.modelName)) {
50
- seen.set(model.modelName, model.result);
51
- }
52
- }
39
+ const key = freeKey(`${ev.message.id()}${plugin.config.messageSuffix}`, schemas);
40
+ schemas[key] = toOpenApiSchema(payloadJsonSchema(payload.json()), componentKeys);
41
+ messageKeys.set(ev.message.id(), key);
53
42
  }
54
- const blocks = Array.from(seen.values())
55
- .filter((b) => b.trim().length > 0)
56
- .map(prefixExports);
57
- plugin.emit({
58
- path: "types.gen.ts",
59
- content: HEADER + blocks.join("\n\n") + "\n",
43
+ const [context] = await createClient({
44
+ // why: stop Hey API from merging in an `openapi-ts.config.*` from the cwd.
45
+ configFile: "ir-kit-asyncapi-no-config.none",
46
+ dryRun: true,
47
+ input: {
48
+ openapi: "3.1.0",
49
+ info: { title: "asyncapi", version: "0" },
50
+ paths: {},
51
+ components: { schemas },
52
+ },
53
+ logs: { file: false, level: "silent" },
54
+ // why: Hey API empties `output.path` even on a dry run.
55
+ output: {
56
+ clean: false,
57
+ fileName: { case: "preserve", suffix: ".gen" },
58
+ header: HEADER,
59
+ path: ".",
60
+ },
61
+ plugins: ["@hey-api/typescript"],
60
62
  });
63
+ if (!context)
64
+ throw new Error("@hey-api/openapi-ts produced no output");
65
+ for (const [messageId, key] of messageKeys) {
66
+ const [symbol] = context.gen.symbols.query({
67
+ resource: "definition",
68
+ resourceId: schemaRef(key),
69
+ });
70
+ if (symbol)
71
+ plugin.api.names.set(messageId, symbol.finalName);
72
+ }
73
+ const types = [...context.gen.render()].find((file) => basename(file.path) === "types.gen.ts");
74
+ if (!types)
75
+ throw new Error("@hey-api/typescript emitted no types.gen.ts");
76
+ plugin.emit({ path: "types.gen.ts", content: types.content });
61
77
  },
62
78
  });
63
- /** Modelina emits unexported decls; add `export` to top-level interface/type/enum. */
64
- function prefixExports(block) {
65
- return block.replace(/^(\s*)(interface|type|enum)\s/gm, (_, indent, kw) => `${indent}export ${kw} `);
79
+ /** Multi-format payloads (Avro, OpenAPI, …) keep the parser-converted JSON Schema under `schema`. */
80
+ function payloadJsonSchema(json) {
81
+ if (json &&
82
+ typeof json === "object" &&
83
+ "schemaFormat" in json &&
84
+ "schema" in json) {
85
+ return json.schema;
86
+ }
87
+ return json;
88
+ }
89
+ /** Keywords whose value maps names to schemas, so its keys are data, not schema metadata. */
90
+ const SCHEMA_MAPS = new Set([
91
+ "$defs",
92
+ "definitions",
93
+ "dependentSchemas",
94
+ "patternProperties",
95
+ "properties",
96
+ ]);
97
+ /** Copy a dereferenced schema, turning nested component schemas back into `$ref`s and dropping parser bookkeeping. */
98
+ function toOpenApiSchema(node, componentKeys, root, path = new Set()) {
99
+ if (!node || typeof node !== "object")
100
+ return node;
101
+ const key = componentKeys.get(node["x-parser-schema-id"]);
102
+ if (node !== root && key)
103
+ return { $ref: schemaRef(key) };
104
+ // why: an anonymous schema that contains itself has no name to `$ref`.
105
+ if (path.has(node))
106
+ return {};
107
+ path.add(node);
108
+ const recurse = (value) => toOpenApiSchema(value, componentKeys, root, path);
109
+ const copy = Array.isArray(node)
110
+ ? node.map(recurse)
111
+ : Object.fromEntries(Object.entries(node)
112
+ .filter(([name]) => !name.startsWith("x-parser-") && name !== "$schema")
113
+ .map(([name, value]) => [
114
+ name,
115
+ SCHEMA_MAPS.has(name) && value && typeof value === "object"
116
+ ? Object.fromEntries(Object.entries(value).map(([field, schema]) => [
117
+ field,
118
+ recurse(schema),
119
+ ]))
120
+ : recurse(value),
121
+ ]));
122
+ path.delete(node);
123
+ return copy;
124
+ }
125
+ function schemaRef(key) {
126
+ return `#/components/schemas/${key.replaceAll("~", "~0").replaceAll("/", "~1")}`;
127
+ }
128
+ function freeKey(key, taken) {
129
+ let candidate = key;
130
+ for (let n = 2; candidate in taken; n++)
131
+ candidate = `${key}${n}`;
132
+ return candidate;
66
133
  }
67
134
  //# sourceMappingURL=plugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/plugins/typescript/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAM5C,MAAM,MAAM,GAAG;IACb,sEAAsE;IACtE,EAAE;IACF,EAAE;CACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,kBAAkB,CAK1C;IACA,IAAI,EAAE,YAAY;IAClB,aAAa;IACb,KAAK,CAAC,OAAO,CAAC,MAAM;QAClB,MAAM,SAAS,GAAG,IAAI,mBAAmB,CAAC;YACxC,SAAS,EAAE,WAAW;YACtB,gBAAgB,EAAE;gBAChB,WAAW,EAAE,EAAE,0BAA0B,EAAE,IAAI,EAAE;aAClD;YACD,gBAAgB,EAAE,IAAI;SACvB,CAAC,CAAC;QAEH,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC;YAC1E,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;YAC1B,IAAI,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC,EAAE,CAAC;gBACtE,GAA+B,CAAC,KAAK,GAAG,EAAE,CAAC;YAC9C,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;QAEvC,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3C,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS;gBAAE,SAAS;YACpC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrC,IAAI,CAAC,OAAO;gBAAE,SAAS;YAEvB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAGvD,CAAC;YACF,MAAM,CAAC,KAAK,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YAClE,MAAM,CAAC,OAAO,GAAG,yCAAyC,CAAC;YAE3D,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAChD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC/B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC1C,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;aACrC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;aAClC,GAAG,CAAC,aAAa,CAAC,CAAC;QAEtB,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI;SAC7C,CAAC,CAAC;IACL,CAAC;CACF,CAAC,CAAC;AAEH,sFAAsF;AACtF,SAAS,aAAa,CAAC,KAAa;IAClC,OAAO,KAAK,CAAC,OAAO,CAClB,iCAAiC,EACjC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,MAAM,UAAU,EAAE,GAAG,CAC5C,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/plugins/typescript/plugin.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,12 @@
1
1
  export interface TypescriptPluginConfig {
2
- /** Suffix appended to message ids for the message-level interface name. Default: `"Message"`. */
2
+ /** Suffix appended to message ids for the message payload type name. Default: `"Message"`. */
3
3
  messageSuffix?: string;
4
4
  }
5
5
  export interface TypescriptResolvedConfig {
6
6
  messageSuffix: string;
7
7
  }
8
+ export interface TypescriptApi {
9
+ /** Name of the type generated for a message's payload, or `undefined` when the message has no payload. */
10
+ messageTypeName(messageId: string): string | undefined;
11
+ }
8
12
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/plugins/typescript/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,sBAAsB;IACrC,iGAAiG;IACjG,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,MAAM,CAAC;CACvB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/plugins/typescript/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,sBAAsB;IACrC,8FAA8F;IAC9F,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,0GAA0G;IAC1G,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACxD"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ir-kit/asyncapi-typescript",
3
- "version": "1.0.0",
4
- "description": "AsyncAPI 3.0 → TypeScript generator. Plugin-compose architecture: a small core orchestrates parser → IR → registered plugins, each emitting one slice of generated code (types, Events const, dispatch helpers, AMQP helpers, framework adapters). Parser via @asyncapi/parser, JSON Schema → TS via @asyncapi/modelina, file orchestration via @hey-api/codegen-core.",
3
+ "version": "2.0.1",
4
+ "description": "AsyncAPI 3.0 → TypeScript generator. Plugin-compose architecture: a small core orchestrates parser → IR → registered plugins, each emitting one slice of generated code (types, Events const, dispatch helpers, AMQP helpers, framework adapters). Parser via @asyncapi/parser, JSON Schema → TS via @hey-api/openapi-ts, file orchestration via @hey-api/codegen-core.",
5
5
  "keywords": [
6
6
  "asyncapi",
7
7
  "typescript",
@@ -44,13 +44,13 @@
44
44
  "provenance": true
45
45
  },
46
46
  "peerDependencies": {
47
- "@asyncapi/modelina": ">=5.0.0",
48
47
  "@asyncapi/parser": ">=3.0.0",
49
48
  "@hey-api/codegen-core": ">=0.8.0",
50
- "@ir-kit/asyncapi-core": ">=0.1.0",
51
- "@ir-kit/codegen-core": ">=0.2.0",
49
+ "@hey-api/openapi-ts": ">=0.99.0",
50
+ "@ir-kit/asyncapi-core": ">=0.2.0",
51
+ "@ir-kit/codegen-core": ">=0.3.0",
52
52
  "amqplib": ">=0.10.0",
53
- "typescript": ">=5.0.0"
53
+ "typescript": ">=5.0.0 <7"
54
54
  },
55
55
  "peerDependenciesMeta": {
56
56
  "amqplib": {
@@ -58,9 +58,9 @@
58
58
  }
59
59
  },
60
60
  "devDependencies": {
61
- "@asyncapi/modelina": "^5.0.0",
62
61
  "@asyncapi/parser": "^3.6.0",
63
- "@hey-api/codegen-core": "^0.8.1",
62
+ "@hey-api/codegen-core": "^0.9.1",
63
+ "@hey-api/openapi-ts": "^0.99.0",
64
64
  "@testcontainers/rabbitmq": "^11.14.0",
65
65
  "@types/amqplib": "^0.10.5",
66
66
  "@types/node": "^22",
@@ -68,15 +68,15 @@
68
68
  "testcontainers": "^11.14.0",
69
69
  "typescript": "5.9.3",
70
70
  "vitest": "^4.0.0",
71
- "@ir-kit/asyncapi-core": "0.1.0",
72
- "@ir-kit/codegen-core": "0.2.0",
71
+ "@ir-kit/asyncapi-core": "0.2.0",
72
+ "@ir-kit/codegen-core": "0.3.0",
73
73
  "@ir-kit/tsconfig": "0.0.0"
74
74
  },
75
75
  "engines": {
76
76
  "node": ">=20.19.0"
77
77
  },
78
78
  "dependencies": {
79
- "@ir-kit/asyncapi-loader": "0.2.0"
79
+ "@ir-kit/asyncapi-loader": "0.2.1"
80
80
  },
81
81
  "scripts": {
82
82
  "build": "tsc -p tsconfig.build.json && node scripts/copy-bundles.mjs",