@hexaijs/plugin-contracts-generator 0.1.1 → 0.2.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 (99) hide show
  1. package/README.md +5 -2
  2. package/dist/cli-CPg-O4OY.d.ts +214 -0
  3. package/dist/cli.d.ts +1 -35
  4. package/dist/cli.js +2479 -232
  5. package/dist/cli.js.map +1 -1
  6. package/dist/decorators/index.d.ts +12 -11
  7. package/dist/decorators/index.js +21 -116
  8. package/dist/decorators/index.js.map +1 -1
  9. package/dist/index.d.ts +533 -40
  10. package/dist/index.js +2738 -91
  11. package/dist/index.js.map +1 -1
  12. package/dist/runtime/index.d.ts +23 -2
  13. package/dist/runtime/index.js +38 -5
  14. package/dist/runtime/index.js.map +1 -1
  15. package/package.json +10 -14
  16. package/dist/ast-utils.d.ts +0 -6
  17. package/dist/ast-utils.d.ts.map +0 -1
  18. package/dist/ast-utils.js +0 -111
  19. package/dist/ast-utils.js.map +0 -1
  20. package/dist/class-analyzer.d.ts +0 -16
  21. package/dist/class-analyzer.d.ts.map +0 -1
  22. package/dist/class-analyzer.js +0 -155
  23. package/dist/class-analyzer.js.map +0 -1
  24. package/dist/cli.d.ts.map +0 -1
  25. package/dist/config-loader.d.ts +0 -34
  26. package/dist/config-loader.d.ts.map +0 -1
  27. package/dist/config-loader.js +0 -188
  28. package/dist/config-loader.js.map +0 -1
  29. package/dist/decorators/index.d.ts.map +0 -1
  30. package/dist/domain/index.d.ts +0 -2
  31. package/dist/domain/index.d.ts.map +0 -1
  32. package/dist/domain/index.js +0 -18
  33. package/dist/domain/index.js.map +0 -1
  34. package/dist/domain/types.d.ts +0 -182
  35. package/dist/domain/types.d.ts.map +0 -1
  36. package/dist/domain/types.js +0 -65
  37. package/dist/domain/types.js.map +0 -1
  38. package/dist/errors.d.ts +0 -79
  39. package/dist/errors.d.ts.map +0 -1
  40. package/dist/errors.js +0 -138
  41. package/dist/errors.js.map +0 -1
  42. package/dist/file-copier.d.ts +0 -84
  43. package/dist/file-copier.d.ts.map +0 -1
  44. package/dist/file-copier.js +0 -758
  45. package/dist/file-copier.js.map +0 -1
  46. package/dist/file-graph-resolver.d.ts +0 -47
  47. package/dist/file-graph-resolver.d.ts.map +0 -1
  48. package/dist/file-graph-resolver.js +0 -230
  49. package/dist/file-graph-resolver.js.map +0 -1
  50. package/dist/file-system.d.ts +0 -26
  51. package/dist/file-system.d.ts.map +0 -1
  52. package/dist/file-system.js +0 -34
  53. package/dist/file-system.js.map +0 -1
  54. package/dist/hexai-plugin.d.ts +0 -16
  55. package/dist/hexai-plugin.d.ts.map +0 -1
  56. package/dist/hexai-plugin.js +0 -59
  57. package/dist/hexai-plugin.js.map +0 -1
  58. package/dist/import-analyzer.d.ts +0 -6
  59. package/dist/import-analyzer.d.ts.map +0 -1
  60. package/dist/import-analyzer.js +0 -77
  61. package/dist/import-analyzer.js.map +0 -1
  62. package/dist/index.d.ts.map +0 -1
  63. package/dist/logger.d.ts +0 -21
  64. package/dist/logger.d.ts.map +0 -1
  65. package/dist/logger.js +0 -47
  66. package/dist/logger.js.map +0 -1
  67. package/dist/parser.d.ts +0 -32
  68. package/dist/parser.d.ts.map +0 -1
  69. package/dist/parser.js +0 -209
  70. package/dist/parser.js.map +0 -1
  71. package/dist/pipeline.d.ts +0 -56
  72. package/dist/pipeline.d.ts.map +0 -1
  73. package/dist/pipeline.js +0 -152
  74. package/dist/pipeline.js.map +0 -1
  75. package/dist/reexport-generator.d.ts +0 -81
  76. package/dist/reexport-generator.d.ts.map +0 -1
  77. package/dist/reexport-generator.js +0 -208
  78. package/dist/reexport-generator.js.map +0 -1
  79. package/dist/registry-generator.d.ts +0 -27
  80. package/dist/registry-generator.d.ts.map +0 -1
  81. package/dist/registry-generator.js +0 -108
  82. package/dist/registry-generator.js.map +0 -1
  83. package/dist/runtime/index.d.ts.map +0 -1
  84. package/dist/runtime/message-registry.d.ts +0 -23
  85. package/dist/runtime/message-registry.d.ts.map +0 -1
  86. package/dist/runtime/message-registry.js +0 -39
  87. package/dist/runtime/message-registry.js.map +0 -1
  88. package/dist/scanner.d.ts +0 -21
  89. package/dist/scanner.d.ts.map +0 -1
  90. package/dist/scanner.js +0 -53
  91. package/dist/scanner.js.map +0 -1
  92. package/dist/test-utils.d.ts +0 -23
  93. package/dist/test-utils.d.ts.map +0 -1
  94. package/dist/test-utils.js +0 -198
  95. package/dist/test-utils.js.map +0 -1
  96. package/dist/tsconfig-loader.d.ts +0 -8
  97. package/dist/tsconfig-loader.d.ts.map +0 -1
  98. package/dist/tsconfig-loader.js +0 -64
  99. package/dist/tsconfig-loader.js.map +0 -1
@@ -1,208 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.ReexportGenerator = void 0;
37
- const ts = __importStar(require("typescript"));
38
- const path = __importStar(require("path"));
39
- const file_system_1 = require("./file-system");
40
- /**
41
- * Generates re-export files for pathAliasRewrites
42
- */
43
- class ReexportGenerator {
44
- fs;
45
- constructor(options = {}) {
46
- this.fs = options.fileSystem ?? file_system_1.nodeFileSystem;
47
- }
48
- /**
49
- * Analyzes files to find imports that match pathAliasRewrites
50
- * and groups them by rewritten path
51
- */
52
- async analyze(options) {
53
- const { files, pathAliasRewrites } = options;
54
- // Invert the map: rewritten prefix -> original prefix
55
- const rewrittenToOriginal = new Map();
56
- for (const [original, rewritten] of pathAliasRewrites) {
57
- rewrittenToOriginal.set(rewritten, original);
58
- }
59
- // Collect all rewritten imports across all files
60
- const allImports = [];
61
- for (const file of files) {
62
- const content = await this.fs.readFile(file);
63
- const imports = this.extractRewrittenImports(content, rewrittenToOriginal);
64
- allImports.push(...imports);
65
- }
66
- // Group by rewritten path and merge symbols
67
- return this.groupImportsByPath(allImports);
68
- }
69
- /**
70
- * Generates re-export files
71
- */
72
- async generate(options) {
73
- const { outputDir, reexportFiles } = options;
74
- const generatedFiles = [];
75
- for (const reexport of reexportFiles) {
76
- const filePath = path.join(outputDir, reexport.relativePath);
77
- const content = this.generateReexportContent(reexport);
78
- await this.fs.mkdir(path.dirname(filePath), { recursive: true });
79
- await this.fs.writeFile(filePath, content);
80
- generatedFiles.push(filePath);
81
- }
82
- return generatedFiles;
83
- }
84
- /**
85
- * Extracts imports from source content that match rewritten prefixes
86
- */
87
- extractRewrittenImports(content, rewrittenToOriginal) {
88
- const sourceFile = ts.createSourceFile("temp.ts", content, ts.ScriptTarget.Latest, true);
89
- const imports = [];
90
- ts.forEachChild(sourceFile, (node) => {
91
- if (!ts.isImportDeclaration(node) || !node.importClause) {
92
- return;
93
- }
94
- const moduleSpecifier = node.moduleSpecifier.text;
95
- // Check if this import matches any rewritten prefix
96
- for (const [rewrittenPrefix, originalPrefix] of rewrittenToOriginal) {
97
- if (moduleSpecifier.startsWith(rewrittenPrefix)) {
98
- const symbols = this.extractSymbolNames(node.importClause);
99
- if (symbols.length > 0) {
100
- // Calculate the original path
101
- const suffix = moduleSpecifier.slice(rewrittenPrefix.length);
102
- const originalPath = originalPrefix + suffix;
103
- imports.push({
104
- rewrittenPath: moduleSpecifier,
105
- originalPath,
106
- symbols,
107
- isTypeOnly: node.importClause.isTypeOnly ?? false,
108
- });
109
- }
110
- break;
111
- }
112
- }
113
- });
114
- return imports;
115
- }
116
- /**
117
- * Extracts symbol names from import clause
118
- */
119
- extractSymbolNames(importClause) {
120
- const names = [];
121
- // Default import
122
- if (importClause.name) {
123
- names.push(importClause.name.text);
124
- }
125
- // Named imports
126
- if (importClause.namedBindings && ts.isNamedImports(importClause.namedBindings)) {
127
- for (const element of importClause.namedBindings.elements) {
128
- // Use the original name if aliased, otherwise use the imported name
129
- const originalName = element.propertyName?.text ?? element.name.text;
130
- names.push(originalName);
131
- }
132
- }
133
- return names;
134
- }
135
- /**
136
- * Groups imports by rewritten path and merges symbols
137
- */
138
- groupImportsByPath(imports) {
139
- const grouped = new Map();
140
- for (const imp of imports) {
141
- const existing = grouped.get(imp.rewrittenPath);
142
- if (existing) {
143
- for (const symbol of imp.symbols) {
144
- existing.symbols.add(symbol);
145
- }
146
- if (!imp.isTypeOnly) {
147
- existing.hasValueImport = true;
148
- }
149
- }
150
- else {
151
- grouped.set(imp.rewrittenPath, {
152
- originalPath: imp.originalPath,
153
- symbols: new Set(imp.symbols),
154
- hasValueImport: !imp.isTypeOnly,
155
- });
156
- }
157
- }
158
- // Convert to ReexportFile array
159
- const result = [];
160
- for (const [rewrittenPath, data] of grouped) {
161
- // Convert rewritten package path to relative file path
162
- // e.g., "@libera/contracts/common/request" -> "common/request.ts"
163
- const relativePath = this.rewrittenPathToRelativePath(rewrittenPath);
164
- result.push({
165
- relativePath,
166
- originalModule: data.originalPath,
167
- symbols: Array.from(data.symbols).sort(),
168
- isTypeOnly: !data.hasValueImport,
169
- });
170
- }
171
- return result.sort((a, b) => a.relativePath.localeCompare(b.relativePath));
172
- }
173
- /**
174
- * Converts a rewritten package path to a relative file path
175
- * e.g., "@libera/contracts/common/request" with prefix "@libera/contracts"
176
- * -> "common/request.ts"
177
- */
178
- rewrittenPathToRelativePath(rewrittenPath) {
179
- // Find the subpath after the package name
180
- // Assume format: @scope/package/subpath or package/subpath
181
- const parts = rewrittenPath.split("/");
182
- let subpathStart;
183
- if (parts[0].startsWith("@")) {
184
- // Scoped package: @scope/package/subpath
185
- subpathStart = 2;
186
- }
187
- else {
188
- // Regular package: package/subpath
189
- subpathStart = 1;
190
- }
191
- const subpath = parts.slice(subpathStart).join("/");
192
- // If no subpath, use index.ts
193
- if (!subpath) {
194
- return "index.ts";
195
- }
196
- return subpath + ".ts";
197
- }
198
- /**
199
- * Generates the content for a re-export file
200
- */
201
- generateReexportContent(reexport) {
202
- const exportKeyword = reexport.isTypeOnly ? "export type" : "export";
203
- const symbols = reexport.symbols.join(", ");
204
- return `${exportKeyword} { ${symbols} } from "${reexport.originalModule}";\n`;
205
- }
206
- }
207
- exports.ReexportGenerator = ReexportGenerator;
208
- //# sourceMappingURL=reexport-generator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reexport-generator.js","sourceRoot":"","sources":["../src/reexport-generator.ts"],"names":[],"mappings":"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"}
@@ -1,27 +0,0 @@
1
- import type { DomainEvent, Command, Query } from "./domain/types";
2
- export interface RegistryGeneratorOptions {
3
- readonly messageRegistryImport: string;
4
- readonly useNamespace?: boolean;
5
- }
6
- export interface ContextMessages {
7
- readonly contextName: string;
8
- readonly events: readonly DomainEvent[];
9
- readonly commands: readonly Command[];
10
- readonly queries?: readonly Query[];
11
- readonly importPath?: string;
12
- }
13
- export declare class RegistryGenerator {
14
- private readonly options;
15
- constructor(options?: Partial<RegistryGeneratorOptions>);
16
- generate(contexts: readonly ContextMessages[]): string;
17
- private generateEmptyRegistry;
18
- private generateWithNamespace;
19
- private getNamespaceInfos;
20
- private generateNamespaceImports;
21
- private generateNamespaceExports;
22
- private generateNamespaceRegistrations;
23
- private toNamespace;
24
- private generateImports;
25
- private generateRegistrations;
26
- }
27
- //# sourceMappingURL=registry-generator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry-generator.d.ts","sourceRoot":"","sources":["../src/registry-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAIlE,MAAM,WAAW,wBAAwB;IACrC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,MAAM,WAAW,eAAe;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IACtC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,KAAK,EAAE,CAAC;IACpC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAChC;AAkBD,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;gBAEvC,OAAO,GAAE,OAAO,CAAC,wBAAwB,CAAM;IAI3D,QAAQ,CAAC,QAAQ,EAAE,SAAS,eAAe,EAAE,GAAG,MAAM;IA2BtD,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,qBAAqB;IAkB7B,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,wBAAwB;IAYhC,OAAO,CAAC,wBAAwB;IAWhC,OAAO,CAAC,8BAA8B;IAUtC,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,eAAe;IAmBvB,OAAO,CAAC,qBAAqB;CAQhC"}
@@ -1,108 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RegistryGenerator = void 0;
4
- const DEFAULT_OPTIONS = {
5
- messageRegistryImport: "@hexaijs/plugin-contracts-generator/runtime",
6
- };
7
- function hasMessages(ctx) {
8
- return (ctx.events.length > 0 ||
9
- ctx.commands.length > 0 ||
10
- (ctx.queries?.length ?? 0) > 0);
11
- }
12
- function getAllMessages(ctx) {
13
- return [...ctx.events, ...ctx.commands, ...(ctx.queries ?? [])];
14
- }
15
- class RegistryGenerator {
16
- options;
17
- constructor(options = {}) {
18
- this.options = { ...DEFAULT_OPTIONS, ...options };
19
- }
20
- generate(contexts) {
21
- const allMessages = contexts.flatMap((ctx) => getAllMessages(ctx).map((message) => ({
22
- message,
23
- contextName: ctx.contextName,
24
- })));
25
- if (allMessages.length === 0) {
26
- return this.generateEmptyRegistry();
27
- }
28
- if (this.options.useNamespace) {
29
- return this.generateWithNamespace(contexts, allMessages);
30
- }
31
- const imports = this.generateImports(contexts);
32
- const registrations = this.generateRegistrations(allMessages);
33
- return [
34
- imports,
35
- "",
36
- "export const messageRegistry = new MessageRegistry()",
37
- registrations,
38
- ].join("\n");
39
- }
40
- generateEmptyRegistry() {
41
- return [
42
- `import { MessageRegistry } from "${this.options.messageRegistryImport}";`,
43
- "",
44
- "export const messageRegistry = new MessageRegistry();",
45
- "",
46
- ].join("\n");
47
- }
48
- generateWithNamespace(contexts, allMessages) {
49
- const imports = this.generateNamespaceImports(contexts);
50
- const exports = this.generateNamespaceExports(contexts);
51
- const registrations = this.generateNamespaceRegistrations(allMessages);
52
- return [
53
- imports,
54
- "",
55
- exports,
56
- "",
57
- "export const messageRegistry = new MessageRegistry()",
58
- registrations,
59
- ].join("\n");
60
- }
61
- getNamespaceInfos(contexts) {
62
- return contexts.filter(hasMessages).map((ctx) => ({
63
- importPath: ctx.importPath ?? `./${ctx.contextName}`,
64
- namespace: this.toNamespace(ctx.contextName),
65
- }));
66
- }
67
- generateNamespaceImports(contexts) {
68
- return [
69
- `import { MessageRegistry } from "${this.options.messageRegistryImport}";`,
70
- ...this.getNamespaceInfos(contexts).map(({ importPath, namespace }) => `import * as ${namespace} from "${importPath}";`),
71
- ].join("\n");
72
- }
73
- generateNamespaceExports(contexts) {
74
- return this.getNamespaceInfos(contexts)
75
- .map(({ importPath, namespace }) => `export * as ${namespace} from "${importPath}";`)
76
- .join("\n");
77
- }
78
- generateNamespaceRegistrations(messages) {
79
- const lines = messages.map(({ message, contextName }) => {
80
- const namespace = this.toNamespace(contextName);
81
- return ` .register(${namespace}.${message.name})`;
82
- });
83
- return lines.join("\n") + ";\n";
84
- }
85
- toNamespace(contextName) {
86
- // kebab-case to camelCase
87
- return contextName.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());
88
- }
89
- generateImports(contexts) {
90
- const lines = [
91
- `import { MessageRegistry } from "${this.options.messageRegistryImport}";`,
92
- ];
93
- for (const ctx of contexts) {
94
- const messageNames = getAllMessages(ctx).map((m) => m.name);
95
- if (messageNames.length > 0) {
96
- const importPath = ctx.importPath ?? `./${ctx.contextName}`;
97
- lines.push(`import { ${messageNames.join(", ")} } from "${importPath}";`);
98
- }
99
- }
100
- return lines.join("\n");
101
- }
102
- generateRegistrations(messages) {
103
- const lines = messages.map(({ message }) => ` .register(${message.name})`);
104
- return lines.join("\n") + ";\n";
105
- }
106
- }
107
- exports.RegistryGenerator = RegistryGenerator;
108
- //# sourceMappingURL=registry-generator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry-generator.js","sourceRoot":"","sources":["../src/registry-generator.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,eAAe,EACf,KAAK,YAAY,EACjB,KAAK,cAAc,GACtB,MAAM,oBAAoB,CAAC"}
@@ -1,23 +0,0 @@
1
- type Version = string | number | undefined;
2
- export interface MessageHeaders {
3
- id: string;
4
- type: string;
5
- schemaVersion?: Version;
6
- createdAt: Date;
7
- [key: string]: unknown;
8
- }
9
- export interface MessageClass<T = any> {
10
- getSchemaVersion(): Version;
11
- getType(): string;
12
- from(rawPayload: Record<string, unknown>, header?: MessageHeaders): T;
13
- new (payload: any, headers?: any): T;
14
- }
15
- export declare class MessageRegistry {
16
- private readonly registry;
17
- register(messageClass: MessageClass): this;
18
- dehydrate<T>(header: MessageHeaders, body: Record<string, unknown>): T;
19
- has(type: string, version?: Version): boolean;
20
- size(): number;
21
- }
22
- export {};
23
- //# sourceMappingURL=message-registry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"message-registry.d.ts","sourceRoot":"","sources":["../../src/runtime/message-registry.ts"],"names":[],"mappings":"AAAA,KAAK,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAE3C,MAAM,WAAW,cAAc;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,IAAI,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAGD,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,GAAG;IACjC,gBAAgB,IAAI,OAAO,CAAC;IAC5B,OAAO,IAAI,MAAM,CAAC;IAClB,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,CAAC,CAAC;IAEtE,KAAK,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;CACxC;AAED,qBAAa,eAAe;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmC;IAE5D,QAAQ,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI;IAa1C,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC;IAYtE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO;IAI7C,IAAI,IAAI,MAAM;CAGjB"}
@@ -1,39 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MessageRegistry = void 0;
4
- class MessageRegistry {
5
- registry = new Map();
6
- register(messageClass) {
7
- const type = messageClass.getType();
8
- const version = messageClass.getSchemaVersion();
9
- const key = makeKey(type, version);
10
- if (this.registry.has(key)) {
11
- throw new Error(`${format(type, version)} is already registered.`);
12
- }
13
- this.registry.set(key, messageClass);
14
- return this;
15
- }
16
- dehydrate(header, body) {
17
- const { type, schemaVersion } = header;
18
- const key = makeKey(type, schemaVersion);
19
- const messageClass = this.registry.get(key);
20
- if (!messageClass) {
21
- throw new Error(`${format(type, schemaVersion)} is not registered.`);
22
- }
23
- return messageClass.from(body, header);
24
- }
25
- has(type, version) {
26
- return this.registry.has(makeKey(type, version));
27
- }
28
- size() {
29
- return this.registry.size;
30
- }
31
- }
32
- exports.MessageRegistry = MessageRegistry;
33
- function makeKey(type, version) {
34
- return version !== undefined ? `${type}:${version}` : type;
35
- }
36
- function format(type, version) {
37
- return version !== undefined ? `'${type}' (v${version})` : `'${type}'`;
38
- }
39
- //# sourceMappingURL=message-registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"message-registry.js","sourceRoot":"","sources":["../../src/runtime/message-registry.ts"],"names":[],"mappings":";;;AAmBA,MAAa,eAAe;IACP,QAAQ,GAAG,IAAI,GAAG,EAAwB,CAAC;IAE5D,QAAQ,CAAC,YAA0B;QAC/B,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,YAAY,CAAC,gBAAgB,EAAE,CAAC;QAChD,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAEnC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,yBAAyB,CAAC,CAAC;QACvE,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,SAAS,CAAI,MAAsB,EAAE,IAA6B;QAC9D,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;QACvC,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QACzC,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE5C,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAC;QACzE,CAAC;QAED,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAM,CAAC;IAChD,CAAC;IAED,GAAG,CAAC,IAAY,EAAE,OAAiB;QAC/B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,IAAI;QACA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC9B,CAAC;CACJ;AAnCD,0CAmCC;AAED,SAAS,OAAO,CAAC,IAAY,EAAE,OAAiB;IAC5C,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/D,CAAC;AAED,SAAS,MAAM,CAAC,IAAY,EAAE,OAAiB;IAC3C,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,OAAO,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC;AAC3E,CAAC"}
package/dist/scanner.d.ts DELETED
@@ -1,21 +0,0 @@
1
- import { FileSystem } from "./file-system";
2
- import type { DecoratorNames, MessageType } from "./domain";
3
- export interface ScannerOptions {
4
- exclude?: string[];
5
- fileSystem?: FileSystem;
6
- decoratorNames?: DecoratorNames;
7
- /**
8
- * Filter which message types to scan for.
9
- * Defaults to all types: ['event', 'command', 'query']
10
- */
11
- messageTypes?: MessageType[];
12
- }
13
- export declare class Scanner {
14
- private readonly exclude;
15
- private readonly fs;
16
- private readonly decoratorPatterns;
17
- constructor(options?: ScannerOptions);
18
- scan(sourceDir: string): Promise<string[]>;
19
- private containsPublicDecorator;
20
- }
21
- //# sourceMappingURL=scanner.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAkB,MAAM,eAAe,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAW5D,MAAM,WAAW,cAAc;IAC3B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC;;;OAGG;IACH,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;CAChC;AAED,qBAAa,OAAO;IAChB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAW;IACnC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAa;IAChC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAW;gBAEjC,OAAO,GAAE,cAAmB;IAalC,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAsBhD,OAAO,CAAC,uBAAuB;CAGlC"}
package/dist/scanner.js DELETED
@@ -1,53 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Scanner = void 0;
4
- const glob_1 = require("glob");
5
- const errors_1 = require("./errors");
6
- const file_system_1 = require("./file-system");
7
- const domain_1 = require("./domain");
8
- const DEFAULT_EXCLUDE_PATTERNS = [
9
- "**/node_modules/**",
10
- "**/dist/**",
11
- "**/*.d.ts",
12
- "**/*.test.ts",
13
- "**/*.spec.ts",
14
- ];
15
- class Scanner {
16
- exclude;
17
- fs;
18
- decoratorPatterns;
19
- constructor(options = {}) {
20
- this.exclude = options.exclude ?? DEFAULT_EXCLUDE_PATTERNS;
21
- this.fs = options.fileSystem ?? file_system_1.nodeFileSystem;
22
- const names = (0, domain_1.mergeDecoratorNames)(options.decoratorNames);
23
- const messageTypes = options.messageTypes ?? ['event', 'command', 'query'];
24
- this.decoratorPatterns = messageTypes.map((type) => {
25
- const decoratorName = names[type];
26
- return `@${decoratorName}(`;
27
- });
28
- }
29
- async scan(sourceDir) {
30
- const files = await (0, glob_1.glob)(`${sourceDir}/**/*.ts`, {
31
- ignore: this.exclude,
32
- });
33
- const result = [];
34
- for (const file of files) {
35
- let content;
36
- try {
37
- content = await this.fs.readFile(file);
38
- }
39
- catch (error) {
40
- throw new errors_1.FileReadError(file, { cause: error });
41
- }
42
- if (this.containsPublicDecorator(content)) {
43
- result.push(file);
44
- }
45
- }
46
- return result;
47
- }
48
- containsPublicDecorator(content) {
49
- return this.decoratorPatterns.some(pattern => content.includes(pattern));
50
- }
51
- }
52
- exports.Scanner = Scanner;
53
- //# sourceMappingURL=scanner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":";;;AAAA,+BAA4B;AAE5B,qCAAyC;AACzC,+CAA2D;AAE3D,qCAA+C;AAE/C,MAAM,wBAAwB,GAAG;IAC7B,oBAAoB;IACpB,YAAY;IACZ,WAAW;IACX,cAAc;IACd,cAAc;CACjB,CAAC;AAaF,MAAa,OAAO;IACC,OAAO,CAAW;IAClB,EAAE,CAAa;IACf,iBAAiB,CAAW;IAE7C,YAAY,UAA0B,EAAE;QACpC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,wBAAwB,CAAC;QAC3D,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,UAAU,IAAI,4BAAc,CAAC;QAE/C,MAAM,KAAK,GAAG,IAAA,4BAAmB,EAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAC1D,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAE3E,IAAI,CAAC,iBAAiB,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAC/C,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;YAClC,OAAO,IAAI,aAAa,GAAG,CAAC;QAChC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAiB;QACxB,MAAM,KAAK,GAAG,MAAM,IAAA,WAAI,EAAC,GAAG,SAAS,UAAU,EAAE;YAC7C,MAAM,EAAE,IAAI,CAAC,OAAO;SACvB,CAAC,CAAC;QACH,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,OAAe,CAAC;YACpB,IAAI,CAAC;gBACD,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC3C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,MAAM,IAAI,sBAAa,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;YACpD,CAAC;YAED,IAAI,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,uBAAuB,CAAC,OAAe;QAC3C,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7E,CAAC;CACJ;AA3CD,0BA2CC"}
@@ -1,23 +0,0 @@
1
- import type { SourceFile, TypeDefinition, DomainEvent, Command, PrimitiveType, Field, ClassDefinition, ClassImport } from "./domain";
2
- import type { FileSystem } from "./file-system";
3
- export declare function createSourceFile(path?: string, absolutePath?: string): SourceFile;
4
- export declare function createTypeDefinition(name: string, sourceFileOrBody?: SourceFile | TypeDefinition["body"], bodyArg?: TypeDefinition["body"]): TypeDefinition;
5
- export declare function createEventWithReferenceField(eventName: string, fieldName: string, referencedTypeName: string): DomainEvent;
6
- export declare function createCommandWithReferenceField(commandName: string, fieldName: string, referencedTypeName: string): Command;
7
- export declare function createEventWithPrimitiveField(eventName: string, fieldName: string, primitiveName: PrimitiveType["name"]): DomainEvent;
8
- export declare function createField(name: string, type: Field["type"], optional?: boolean, readonly?: boolean): Field;
9
- export interface CreateClassDefinitionOptions {
10
- sourceFile?: SourceFile;
11
- baseClass?: string;
12
- imports?: ClassImport[];
13
- dependencies?: string[];
14
- exported?: boolean;
15
- sourceText?: string;
16
- }
17
- export declare function createClassDefinition(name: string, options?: CreateClassDefinitionOptions): ClassDefinition;
18
- export interface InMemoryFileSystem extends FileSystem {
19
- files: Map<string, string>;
20
- directories: Set<string>;
21
- }
22
- export declare function createInMemoryFileSystem(): InMemoryFileSystem;
23
- //# sourceMappingURL=test-utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../src/test-utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACR,UAAU,EACV,cAAc,EACd,WAAW,EACX,OAAO,EACP,aAAa,EAEb,KAAK,EACL,eAAe,EACf,WAAW,EACd,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,eAAe,CAAC;AAE3D,wBAAgB,gBAAgB,CAC5B,IAAI,GAAE,MAAkB,EACxB,YAAY,CAAC,EAAE,MAAM,GACtB,UAAU,CAKZ;AAeD,wBAAgB,oBAAoB,CAChC,IAAI,EAAE,MAAM,EACZ,gBAAgB,CAAC,EAAE,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,EACtD,OAAO,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,GACjC,cAAc,CA8BhB;AAED,wBAAgB,6BAA6B,CACzC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,kBAAkB,EAAE,MAAM,GAC3B,WAAW,CAmBb;AAED,wBAAgB,+BAA+B,CAC3C,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,kBAAkB,EAAE,MAAM,GAC3B,OAAO,CAmBT;AAED,wBAAgB,6BAA6B,CACzC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,GACrC,WAAW,CAmBb;AAED,wBAAgB,WAAW,CACvB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,EACnB,QAAQ,GAAE,OAAe,EACzB,QAAQ,GAAE,OAAe,GAC1B,KAAK,CAOP;AAED,MAAM,WAAW,4BAA4B;IACzC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,qBAAqB,CACjC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,4BAAiC,GAC3C,eAAe,CAejB;AAED,MAAM,WAAW,kBAAmB,SAAQ,UAAU;IAClD,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC5B;AAED,wBAAgB,wBAAwB,IAAI,kBAAkB,CAqE7D"}