@ir-kit/asyncapi-typescript 0.2.0 → 2.0.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.
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 +13 -13
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":"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"}
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":"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"}
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": "0.2.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.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 @hey-api/openapi-ts, file orchestration via @hey-api/codegen-core.",
5
5
  "keywords": [
6
6
  "asyncapi",
7
7
  "typescript",
@@ -10,9 +10,9 @@
10
10
  "amqp",
11
11
  "rabbitmq"
12
12
  ],
13
- "homepage": "https://github.com/ir-kit/ir-kit/tree/main/packages/asyncapi/typescript",
13
+ "homepage": "https://github.com/ahmedrowaihi/ir-kit/tree/main/packages/asyncapi/typescript",
14
14
  "bugs": {
15
- "url": "https://github.com/ir-kit/ir-kit/issues"
15
+ "url": "https://github.com/ahmedrowaihi/ir-kit/issues"
16
16
  },
17
17
  "license": "MIT",
18
18
  "author": {
@@ -21,7 +21,7 @@
21
21
  },
22
22
  "repository": {
23
23
  "type": "git",
24
- "url": "git+https://github.com/ir-kit/ir-kit.git",
24
+ "url": "git+https://github.com/ahmedrowaihi/ir-kit.git",
25
25
  "directory": "packages/asyncapi/typescript"
26
26
  },
27
27
  "type": "module",
@@ -44,11 +44,11 @@
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.1.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
53
  "typescript": ">=5.0.0"
54
54
  },
@@ -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.1.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",