@hexaijs/plugin-application-builder 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.
- package/dist/cli.d.ts +0 -2
- package/dist/cli.js +569 -52
- package/dist/cli.js.map +1 -1
- package/dist/decorators/index.d.ts +8 -6
- package/dist/decorators/index.js +13 -31
- package/dist/decorators/index.js.map +1 -1
- package/dist/index.d.ts +48 -5
- package/dist/index.js +596 -15
- package/dist/index.js.map +1 -1
- package/package.json +24 -12
- package/dist/application-builder-generator.d.ts +0 -15
- package/dist/application-builder-generator.d.ts.map +0 -1
- package/dist/application-builder-generator.js +0 -81
- package/dist/application-builder-generator.js.map +0 -1
- package/dist/cli.d.ts.map +0 -1
- package/dist/code-generator.d.ts +0 -30
- package/dist/code-generator.d.ts.map +0 -1
- package/dist/code-generator.js +0 -131
- package/dist/code-generator.js.map +0 -1
- package/dist/config-loader.d.ts +0 -3
- package/dist/config-loader.d.ts.map +0 -1
- package/dist/config-loader.js +0 -65
- package/dist/config-loader.js.map +0 -1
- package/dist/config.d.ts +0 -13
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -31
- package/dist/config.js.map +0 -1
- package/dist/decorators/index.d.ts.map +0 -1
- package/dist/errors.d.ts +0 -13
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -32
- package/dist/errors.js.map +0 -1
- package/dist/hexai-plugin.d.ts +0 -30
- package/dist/hexai-plugin.d.ts.map +0 -1
- package/dist/hexai-plugin.js +0 -81
- package/dist/hexai-plugin.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/main.d.ts +0 -6
- package/dist/main.d.ts.map +0 -1
- package/dist/main.js +0 -53
- package/dist/main.js.map +0 -1
- package/dist/metadata-extractor.d.ts +0 -25
- package/dist/metadata-extractor.d.ts.map +0 -1
- package/dist/metadata-extractor.js +0 -247
- package/dist/metadata-extractor.js.map +0 -1
- package/dist/test.d.ts +0 -15
- package/dist/test.d.ts.map +0 -1
- package/dist/test.js +0 -104
- package/dist/test.js.map +0 -1
- package/dist/types.d.ts +0 -22
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -3
- package/dist/types.js.map +0 -1
package/dist/errors.js
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MessageClassNotFoundError = exports.DuplicateQueryHandlerError = exports.DuplicateEventHandlerError = exports.DuplicateCommandHandlerError = void 0;
|
|
4
|
-
class DuplicateCommandHandlerError extends Error {
|
|
5
|
-
constructor(commandClassName, handlers) {
|
|
6
|
-
super(`Duplicate command handlers for "${commandClassName}": ${handlers.join(", ")}`);
|
|
7
|
-
this.name = "DuplicateCommandHandlerError";
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
exports.DuplicateCommandHandlerError = DuplicateCommandHandlerError;
|
|
11
|
-
class DuplicateEventHandlerError extends Error {
|
|
12
|
-
constructor(eventName, handlers) {
|
|
13
|
-
super(`Duplicate event handlers for event "${eventName}": ${handlers.join(", ")}`);
|
|
14
|
-
this.name = "DuplicateEventHandlerError";
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
exports.DuplicateEventHandlerError = DuplicateEventHandlerError;
|
|
18
|
-
class DuplicateQueryHandlerError extends Error {
|
|
19
|
-
constructor(queryClassName, handlers) {
|
|
20
|
-
super(`Duplicate query handlers for "${queryClassName}": ${handlers.join(", ")}`);
|
|
21
|
-
this.name = "DuplicateQueryHandlerError";
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
exports.DuplicateQueryHandlerError = DuplicateQueryHandlerError;
|
|
25
|
-
class MessageClassNotFoundError extends Error {
|
|
26
|
-
constructor(messageClassName, filePath) {
|
|
27
|
-
super(`Cannot find "${messageClassName}" - not imported and not defined in "${filePath}"`);
|
|
28
|
-
this.name = "MessageClassNotFoundError";
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
exports.MessageClassNotFoundError = MessageClassNotFoundError;
|
|
32
|
-
//# sourceMappingURL=errors.js.map
|
package/dist/errors.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAAA,MAAa,4BAA6B,SAAQ,KAAK;IACnD,YAAY,gBAAwB,EAAE,QAAkB;QACpD,KAAK,CACD,mCAAmC,gBAAgB,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACjF,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,8BAA8B,CAAC;IAC/C,CAAC;CACJ;AAPD,oEAOC;AAED,MAAa,0BAA2B,SAAQ,KAAK;IACjD,YAAY,SAAiB,EAAE,QAAkB;QAC7C,KAAK,CACD,uCAAuC,SAAS,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC9E,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;IAC7C,CAAC;CACJ;AAPD,gEAOC;AAED,MAAa,0BAA2B,SAAQ,KAAK;IACjD,YAAY,cAAsB,EAAE,QAAkB;QAClD,KAAK,CACD,iCAAiC,cAAc,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC7E,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;IAC7C,CAAC;CACJ;AAPD,gEAOC;AAED,MAAa,yBAA0B,SAAQ,KAAK;IAChD,YAAY,gBAAwB,EAAE,QAAgB;QAClD,KAAK,CACD,gBAAgB,gBAAgB,wCAAwC,QAAQ,GAAG,CACtF,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;IAC5C,CAAC;CACJ;AAPD,8DAOC"}
|
package/dist/hexai-plugin.d.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import type { HexaiCliPlugin } from "@hexaijs/cli";
|
|
2
|
-
/**
|
|
3
|
-
* Configuration for the application-builder plugin.
|
|
4
|
-
* Since this plugin uses per-context config files (hexai.config.ts),
|
|
5
|
-
* the root hexai.config.ts config is minimal.
|
|
6
|
-
*/
|
|
7
|
-
export interface ApplicationBuilderPluginConfig {
|
|
8
|
-
/**
|
|
9
|
-
* Default config file name to look for in each context.
|
|
10
|
-
* Defaults to "hexai.config.ts".
|
|
11
|
-
*/
|
|
12
|
-
configFile?: string;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* CLI plugin definition for hexai integration.
|
|
16
|
-
*
|
|
17
|
-
* This allows the application builder to be invoked via `pnpm hexai generate-app-builder`.
|
|
18
|
-
* Each bounded context should have its own `hexai.config.ts` file.
|
|
19
|
-
*
|
|
20
|
-
* @example
|
|
21
|
-
* ```bash
|
|
22
|
-
* # Generate for a specific context
|
|
23
|
-
* pnpm hexai generate-app-builder --context-path packages/assignment
|
|
24
|
-
*
|
|
25
|
-
* # Use a custom config file name
|
|
26
|
-
* pnpm hexai generate-app-builder --context-path packages/assignment --config-file custom.config.ts
|
|
27
|
-
* ```
|
|
28
|
-
*/
|
|
29
|
-
export declare const cliPlugin: HexaiCliPlugin<ApplicationBuilderPluginConfig>;
|
|
30
|
-
//# sourceMappingURL=hexai-plugin.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hexai-plugin.d.ts","sourceRoot":"","sources":["../src/hexai-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAa,MAAM,cAAc,CAAC;AAI9D;;;;GAIG;AACH,MAAM,WAAW,8BAA8B;IAC3C;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,SAAS,EAAE,cAAc,CAAC,8BAA8B,CAkCpE,CAAC"}
|
package/dist/hexai-plugin.js
DELETED
|
@@ -1,81 +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.cliPlugin = void 0;
|
|
37
|
-
const path = __importStar(require("path"));
|
|
38
|
-
const index_1 = require("./index");
|
|
39
|
-
/**
|
|
40
|
-
* CLI plugin definition for hexai integration.
|
|
41
|
-
*
|
|
42
|
-
* This allows the application builder to be invoked via `pnpm hexai generate-app-builder`.
|
|
43
|
-
* Each bounded context should have its own `hexai.config.ts` file.
|
|
44
|
-
*
|
|
45
|
-
* @example
|
|
46
|
-
* ```bash
|
|
47
|
-
* # Generate for a specific context
|
|
48
|
-
* pnpm hexai generate-app-builder --context-path packages/assignment
|
|
49
|
-
*
|
|
50
|
-
* # Use a custom config file name
|
|
51
|
-
* pnpm hexai generate-app-builder --context-path packages/assignment --config-file custom.config.ts
|
|
52
|
-
* ```
|
|
53
|
-
*/
|
|
54
|
-
exports.cliPlugin = {
|
|
55
|
-
name: "generate-app-builder",
|
|
56
|
-
description: "Generate ApplicationBuilder code from decorated handlers",
|
|
57
|
-
options: [
|
|
58
|
-
{
|
|
59
|
-
flags: "-p, --context-path <path>",
|
|
60
|
-
description: "Path to the bounded context directory",
|
|
61
|
-
required: true,
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
flags: "-f, --config-file <name>",
|
|
65
|
-
description: "Config file name to use (default: hexai.config.ts)",
|
|
66
|
-
},
|
|
67
|
-
],
|
|
68
|
-
run: async (args, config) => {
|
|
69
|
-
const contextPath = path.resolve(String(args.contextPath));
|
|
70
|
-
// Priority: CLI arg > hexai.config.ts plugin config > default
|
|
71
|
-
const configFile = args.configFile !== undefined
|
|
72
|
-
? String(args.configFile)
|
|
73
|
-
: config.configFile;
|
|
74
|
-
console.log(`Generating application builder for: ${contextPath}`);
|
|
75
|
-
await (0, index_1.generateApplicationBuilder)(contextPath, {
|
|
76
|
-
configFile,
|
|
77
|
-
});
|
|
78
|
-
console.log("✓ Application builder generated successfully");
|
|
79
|
-
},
|
|
80
|
-
};
|
|
81
|
-
//# sourceMappingURL=hexai-plugin.js.map
|
package/dist/hexai-plugin.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hexai-plugin.js","sourceRoot":"","sources":["../src/hexai-plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,2CAA6B;AAC7B,mCAAqD;AAerD;;;;;;;;;;;;;;GAcG;AACU,QAAA,SAAS,GAAmD;IACrE,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EAAE,0DAA0D;IACvE,OAAO,EAAE;QACL;YACI,KAAK,EAAE,2BAA2B;YAClC,WAAW,EAAE,uCAAuC;YACpD,QAAQ,EAAE,IAAI;SACjB;QACD;YACI,KAAK,EAAE,0BAA0B;YACjC,WAAW,EAAE,oDAAoD;SACpE;KACkB;IACvB,GAAG,EAAE,KAAK,EACN,IAA6B,EAC7B,MAAsC,EACzB,EAAE;QACf,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAE3D,8DAA8D;QAC9D,MAAM,UAAU,GACZ,IAAI,CAAC,UAAU,KAAK,SAAS;YACzB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;YACzB,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;QAE5B,OAAO,CAAC,GAAG,CAAC,uCAAuC,WAAW,EAAE,CAAC,CAAC;QAElE,MAAM,IAAA,kCAA0B,EAAC,WAAW,EAAE;YAC1C,UAAU;SACb,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;IAChE,CAAC;CACJ,CAAC"}
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,QAAQ,CAAC;AACpD,OAAO,EACH,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,mBAAmB,GAC3B,MAAM,cAAc,CAAC;AACtB,OAAO,EACH,4BAA4B,EAC5B,0BAA0B,EAC1B,0BAA0B,GAC7B,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,SAAS,EAAE,KAAK,8BAA8B,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/main.d.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export type { HandlerMetadata, CommandHandlerMetadata, EventHandlerMetadata, } from "./types";
|
|
2
|
-
export { HandlerMetadataExtractor } from "./metadata-extractor";
|
|
3
|
-
export declare function generateApplicationBuilder(contextPath: string, options?: {
|
|
4
|
-
configFile?: string;
|
|
5
|
-
}): Promise<void>;
|
|
6
|
-
//# sourceMappingURL=main.d.ts.map
|
package/dist/main.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAKA,YAAY,EACR,eAAe,EACf,sBAAsB,EACtB,oBAAoB,GACvB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAEhE,wBAAsB,0BAA0B,CAC5C,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE;IACL,UAAU,CAAC,EAAE,MAAM,CAAC;CAClB,GACP,OAAO,CAAC,IAAI,CAAC,CAWf"}
|
package/dist/main.js
DELETED
|
@@ -1,53 +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.HandlerMetadataExtractor = void 0;
|
|
37
|
-
exports.generateApplicationBuilder = generateApplicationBuilder;
|
|
38
|
-
const path = __importStar(require("path"));
|
|
39
|
-
const application_builder_generator_1 = require("./application-builder-generator");
|
|
40
|
-
const config_loader_1 = require("./config-loader");
|
|
41
|
-
var metadata_extractor_1 = require("./metadata-extractor");
|
|
42
|
-
Object.defineProperty(exports, "HandlerMetadataExtractor", { enumerable: true, get: function () { return metadata_extractor_1.HandlerMetadataExtractor; } });
|
|
43
|
-
async function generateApplicationBuilder(contextPath, options = {}) {
|
|
44
|
-
let configFile = "hexai.config.ts";
|
|
45
|
-
if (options.configFile) {
|
|
46
|
-
configFile = options.configFile;
|
|
47
|
-
}
|
|
48
|
-
const configPath = path.join(contextPath, configFile);
|
|
49
|
-
const config = await (0, config_loader_1.loadConfig)(configPath);
|
|
50
|
-
const generator = new application_builder_generator_1.ApplicationBuilderGenerator(contextPath, config);
|
|
51
|
-
await generator.generate();
|
|
52
|
-
}
|
|
53
|
-
//# sourceMappingURL=main.js.map
|
package/dist/main.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,gEAgBC;AA5BD,2CAA6B;AAC7B,mFAA8E;AAC9E,mDAA6C;AAQ7C,2DAAgE;AAAvD,8HAAA,wBAAwB,OAAA;AAE1B,KAAK,UAAU,0BAA0B,CAC5C,WAAmB,EACnB,UAEI,EAAE;IAEN,IAAI,UAAU,GAAG,iBAAiB,CAAC;IACnC,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACrB,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IACpC,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAU,EAAC,UAAU,CAAC,CAAC;IAE5C,MAAM,SAAS,GAAG,IAAI,2DAA2B,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACvE,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC;AAC/B,CAAC"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { HandlerMetadata } from "./types";
|
|
2
|
-
/**
|
|
3
|
-
* Extracts handler metadata from TypeScript files using AST parsing
|
|
4
|
-
*/
|
|
5
|
-
export declare class HandlerMetadataExtractor {
|
|
6
|
-
private contextPath;
|
|
7
|
-
private outputFile;
|
|
8
|
-
private config;
|
|
9
|
-
constructor(contextPath: string, outputFile: string, config?: {
|
|
10
|
-
commandHandlerDecorator?: string;
|
|
11
|
-
eventHandlerDecorator?: string;
|
|
12
|
-
});
|
|
13
|
-
extractHandlersMetadata(files: string[]): HandlerMetadata[];
|
|
14
|
-
private extractFromClass;
|
|
15
|
-
private extractMessageHandlerMetadata;
|
|
16
|
-
private isClassDefinedInFile;
|
|
17
|
-
private extractCommandHandlerMetadata;
|
|
18
|
-
private extractEventHandlerMetadata;
|
|
19
|
-
private extractQueryHandlerMetadata;
|
|
20
|
-
private findImportForSymbol;
|
|
21
|
-
private toRelativeImport;
|
|
22
|
-
private parseObjectLiteral;
|
|
23
|
-
private resolvePathAlias;
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=metadata-extractor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"metadata-extractor.d.ts","sourceRoot":"","sources":["../src/metadata-extractor.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,eAAe,EAIlB,MAAM,SAAS,CAAC;AAGjB;;GAEG;AACH,qBAAa,wBAAwB;IAU7B,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,UAAU;IAVtB,OAAO,CAAC,MAAM,CAMZ;gBAGU,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAC1B,MAAM,GAAE;QACJ,uBAAuB,CAAC,EAAE,MAAM,CAAC;QACjC,qBAAqB,CAAC,EAAE,MAAM,CAAC;KAC7B;IAWV,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,eAAe,EAAE;IA6B3D,OAAO,CAAC,gBAAgB;IAkDxB,OAAO,CAAC,6BAA6B;IAqCrC,OAAO,CAAC,oBAAoB;IAe5B,OAAO,CAAC,6BAA6B;IAsBrC,OAAO,CAAC,2BAA2B;IAmBnC,OAAO,CAAC,2BAA2B;IAsBnC,OAAO,CAAC,mBAAmB;IA8B3B,OAAO,CAAC,gBAAgB;IAexB,OAAO,CAAC,kBAAkB;IA2B1B,OAAO,CAAC,gBAAgB;CAqB3B"}
|
|
@@ -1,247 +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.HandlerMetadataExtractor = void 0;
|
|
37
|
-
const fs = __importStar(require("fs"));
|
|
38
|
-
const path = __importStar(require("path"));
|
|
39
|
-
const ts = __importStar(require("typescript"));
|
|
40
|
-
const errors_1 = require("./errors");
|
|
41
|
-
/**
|
|
42
|
-
* Extracts handler metadata from TypeScript files using AST parsing
|
|
43
|
-
*/
|
|
44
|
-
class HandlerMetadataExtractor {
|
|
45
|
-
contextPath;
|
|
46
|
-
outputFile;
|
|
47
|
-
config = {
|
|
48
|
-
commandHandlerDecorator: "CommandHandlerMarker",
|
|
49
|
-
eventHandlerDecorator: "EventHandlerMarker",
|
|
50
|
-
};
|
|
51
|
-
constructor(contextPath, outputFile, config = {}) {
|
|
52
|
-
this.contextPath = contextPath;
|
|
53
|
-
this.outputFile = outputFile;
|
|
54
|
-
if (config.commandHandlerDecorator) {
|
|
55
|
-
this.config.commandHandlerDecorator =
|
|
56
|
-
config.commandHandlerDecorator;
|
|
57
|
-
}
|
|
58
|
-
if (config.eventHandlerDecorator) {
|
|
59
|
-
this.config.eventHandlerDecorator = config.eventHandlerDecorator;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
extractHandlersMetadata(files) {
|
|
63
|
-
const handlers = [];
|
|
64
|
-
for (const file of files) {
|
|
65
|
-
const sourceCode = fs.readFileSync(file, "utf-8");
|
|
66
|
-
const sourceFile = ts.createSourceFile(file, sourceCode, ts.ScriptTarget.Latest, true);
|
|
67
|
-
ts.forEachChild(sourceFile, (node) => {
|
|
68
|
-
if (ts.isClassDeclaration(node)) {
|
|
69
|
-
const metadata = this.extractFromClass(node, file, sourceFile);
|
|
70
|
-
if (metadata) {
|
|
71
|
-
handlers.push(metadata);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
return handlers;
|
|
77
|
-
}
|
|
78
|
-
extractFromClass(classNode, filePath, sourceFile) {
|
|
79
|
-
const className = classNode.name?.text;
|
|
80
|
-
if (!className)
|
|
81
|
-
return null;
|
|
82
|
-
// Get decorators using TypeScript 5.0+ API
|
|
83
|
-
const decorators = ts.canHaveDecorators(classNode)
|
|
84
|
-
? ts.getDecorators(classNode)
|
|
85
|
-
: undefined;
|
|
86
|
-
if (!decorators)
|
|
87
|
-
return null;
|
|
88
|
-
for (const decorator of decorators) {
|
|
89
|
-
const expression = decorator.expression;
|
|
90
|
-
if (!ts.isCallExpression(expression))
|
|
91
|
-
continue;
|
|
92
|
-
const decoratorName = expression.expression.getText();
|
|
93
|
-
if (decoratorName === "CommandHandlerMarker") {
|
|
94
|
-
return this.extractCommandHandlerMetadata(className, expression, filePath, sourceFile);
|
|
95
|
-
}
|
|
96
|
-
if (decoratorName === "EventHandlerMarker") {
|
|
97
|
-
return this.extractEventHandlerMetadata(className, expression, filePath);
|
|
98
|
-
}
|
|
99
|
-
if (decoratorName === "QueryHandlerMarker") {
|
|
100
|
-
return this.extractQueryHandlerMetadata(className, expression, filePath, sourceFile);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
return null;
|
|
104
|
-
}
|
|
105
|
-
extractMessageHandlerMetadata(className, expression, filePath, sourceFile) {
|
|
106
|
-
const messageClassArg = expression.arguments[0];
|
|
107
|
-
const messageClassName = messageClassArg.getText();
|
|
108
|
-
const messageImport = this.findImportForSymbol(messageClassName, sourceFile);
|
|
109
|
-
let messagePath = "";
|
|
110
|
-
let resolvedMessageClassName = messageClassName;
|
|
111
|
-
if (messageImport) {
|
|
112
|
-
const handlerDir = path.dirname(filePath);
|
|
113
|
-
const resolvedImportPath = this.resolvePathAlias(messageImport.path);
|
|
114
|
-
const messageAbsolutePath = path.resolve(handlerDir, resolvedImportPath + ".ts");
|
|
115
|
-
messagePath = this.toRelativeImport(messageAbsolutePath);
|
|
116
|
-
resolvedMessageClassName = messageImport.symbol;
|
|
117
|
-
}
|
|
118
|
-
else if (this.isClassDefinedInFile(messageClassName, sourceFile)) {
|
|
119
|
-
messagePath = this.toRelativeImport(filePath);
|
|
120
|
-
}
|
|
121
|
-
else {
|
|
122
|
-
throw new errors_1.MessageClassNotFoundError(messageClassName, filePath);
|
|
123
|
-
}
|
|
124
|
-
return {
|
|
125
|
-
messagePath,
|
|
126
|
-
messageClassName: resolvedMessageClassName,
|
|
127
|
-
};
|
|
128
|
-
}
|
|
129
|
-
isClassDefinedInFile(className, sourceFile) {
|
|
130
|
-
for (const statement of sourceFile.statements) {
|
|
131
|
-
if (ts.isClassDeclaration(statement) &&
|
|
132
|
-
statement.name?.text === className) {
|
|
133
|
-
return true;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
return false;
|
|
137
|
-
}
|
|
138
|
-
extractCommandHandlerMetadata(className, expression, filePath, sourceFile) {
|
|
139
|
-
const { messagePath, messageClassName } = this.extractMessageHandlerMetadata(className, expression, filePath, sourceFile);
|
|
140
|
-
return {
|
|
141
|
-
type: "command",
|
|
142
|
-
handlerPath: this.toRelativeImport(filePath),
|
|
143
|
-
handlerClassName: className,
|
|
144
|
-
commandPath: messagePath,
|
|
145
|
-
commandClassName: messageClassName,
|
|
146
|
-
};
|
|
147
|
-
}
|
|
148
|
-
extractEventHandlerMetadata(className, expression, filePath) {
|
|
149
|
-
let options = {};
|
|
150
|
-
if (expression.arguments.length > 0) {
|
|
151
|
-
const optionsArg = expression.arguments[0];
|
|
152
|
-
options = this.parseObjectLiteral(optionsArg);
|
|
153
|
-
}
|
|
154
|
-
return {
|
|
155
|
-
type: "event",
|
|
156
|
-
handlerPath: this.toRelativeImport(filePath),
|
|
157
|
-
handlerClassName: className,
|
|
158
|
-
eventHandlerOptions: options,
|
|
159
|
-
};
|
|
160
|
-
}
|
|
161
|
-
extractQueryHandlerMetadata(className, expression, filePath, sourceFile) {
|
|
162
|
-
const { messagePath, messageClassName } = this.extractMessageHandlerMetadata(className, expression, filePath, sourceFile);
|
|
163
|
-
return {
|
|
164
|
-
type: "query",
|
|
165
|
-
handlerPath: this.toRelativeImport(filePath),
|
|
166
|
-
handlerClassName: className,
|
|
167
|
-
queryPath: messagePath,
|
|
168
|
-
queryClassName: messageClassName,
|
|
169
|
-
};
|
|
170
|
-
}
|
|
171
|
-
findImportForSymbol(symbol, sourceFile) {
|
|
172
|
-
for (const statement of sourceFile.statements) {
|
|
173
|
-
if (ts.isImportDeclaration(statement)) {
|
|
174
|
-
const importClause = statement.importClause;
|
|
175
|
-
const moduleSpecifier = statement.moduleSpecifier.text;
|
|
176
|
-
if (importClause?.namedBindings &&
|
|
177
|
-
ts.isNamedImports(importClause.namedBindings)) {
|
|
178
|
-
for (const element of importClause.namedBindings.elements) {
|
|
179
|
-
if (element.name.text === symbol) {
|
|
180
|
-
return {
|
|
181
|
-
path: moduleSpecifier,
|
|
182
|
-
symbol: element.name.text,
|
|
183
|
-
};
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
return null;
|
|
190
|
-
}
|
|
191
|
-
toRelativeImport(absolutePath) {
|
|
192
|
-
const outputFileAbsolutePath = path.join(this.contextPath, this.outputFile);
|
|
193
|
-
const outputDir = path.dirname(outputFileAbsolutePath);
|
|
194
|
-
const relative = path.relative(outputDir, absolutePath);
|
|
195
|
-
const withoutExtension = relative.replace(/\.ts$/, "");
|
|
196
|
-
// Ensure relative path has proper prefix
|
|
197
|
-
return withoutExtension.startsWith(".")
|
|
198
|
-
? withoutExtension
|
|
199
|
-
: "./" + withoutExtension;
|
|
200
|
-
}
|
|
201
|
-
parseObjectLiteral(node) {
|
|
202
|
-
if (!ts.isObjectLiteralExpression(node)) {
|
|
203
|
-
return {};
|
|
204
|
-
}
|
|
205
|
-
const result = {};
|
|
206
|
-
for (const property of node.properties) {
|
|
207
|
-
if (ts.isPropertyAssignment(property)) {
|
|
208
|
-
const name = property.name.getText();
|
|
209
|
-
const value = property.initializer;
|
|
210
|
-
if (ts.isStringLiteral(value)) {
|
|
211
|
-
result[name] = value.text;
|
|
212
|
-
}
|
|
213
|
-
else if (ts.isNumericLiteral(value)) {
|
|
214
|
-
result[name] = Number(value.text);
|
|
215
|
-
}
|
|
216
|
-
else if (value.kind === ts.SyntaxKind.TrueKeyword) {
|
|
217
|
-
result[name] = true;
|
|
218
|
-
}
|
|
219
|
-
else if (value.kind === ts.SyntaxKind.FalseKeyword) {
|
|
220
|
-
result[name] = false;
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
return result;
|
|
225
|
-
}
|
|
226
|
-
resolvePathAlias(importPath) {
|
|
227
|
-
const tsconfigPath = path.join(this.contextPath, "tsconfig.json");
|
|
228
|
-
if (!fs.existsSync(tsconfigPath))
|
|
229
|
-
return importPath;
|
|
230
|
-
const tsconfig = JSON.parse(fs.readFileSync(tsconfigPath, "utf-8"));
|
|
231
|
-
const paths = tsconfig.compilerOptions?.paths;
|
|
232
|
-
const baseUrl = tsconfig.compilerOptions?.baseUrl || ".";
|
|
233
|
-
if (!paths)
|
|
234
|
-
return importPath;
|
|
235
|
-
for (const [alias, targets] of Object.entries(paths)) {
|
|
236
|
-
const aliasPrefix = alias.replace("/*", "");
|
|
237
|
-
if (importPath.startsWith(aliasPrefix)) {
|
|
238
|
-
const targetBase = targets[0].replace("/*", "");
|
|
239
|
-
const resolvedBase = path.join(this.contextPath, baseUrl, targetBase);
|
|
240
|
-
return importPath.replace(aliasPrefix, resolvedBase);
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
return importPath;
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
exports.HandlerMetadataExtractor = HandlerMetadataExtractor;
|
|
247
|
-
//# sourceMappingURL=metadata-extractor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"metadata-extractor.js","sourceRoot":"","sources":["../src/metadata-extractor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAC7B,+CAAiC;AAOjC,qCAAqD;AAErD;;GAEG;AACH,MAAa,wBAAwB;IAUrB;IACA;IAVJ,MAAM,GAGV;QACA,uBAAuB,EAAE,sBAAsB;QAC/C,qBAAqB,EAAE,oBAAoB;KAC9C,CAAC;IAEF,YACY,WAAmB,EACnB,UAAkB,EAC1B,SAGI,EAAE;QALE,gBAAW,GAAX,WAAW,CAAQ;QACnB,eAAU,GAAV,UAAU,CAAQ;QAM1B,IAAI,MAAM,CAAC,uBAAuB,EAAE,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,uBAAuB;gBAC/B,MAAM,CAAC,uBAAuB,CAAC;QACvC,CAAC;QACD,IAAI,MAAM,CAAC,qBAAqB,EAAE,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,CAAC;QACrE,CAAC;IACL,CAAC;IAED,uBAAuB,CAAC,KAAe;QACnC,MAAM,QAAQ,GAAsB,EAAE,CAAC;QAEvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAClD,MAAM,UAAU,GAAG,EAAE,CAAC,gBAAgB,CAClC,IAAI,EACJ,UAAU,EACV,EAAE,CAAC,YAAY,CAAC,MAAM,EACtB,IAAI,CACP,CAAC;YAEF,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE;gBACjC,IAAI,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAClC,IAAI,EACJ,IAAI,EACJ,UAAU,CACb,CAAC;oBACF,IAAI,QAAQ,EAAE,CAAC;wBACX,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC5B,CAAC;gBACL,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAEO,gBAAgB,CACpB,SAA8B,EAC9B,QAAgB,EAChB,UAAyB;QAEzB,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC;QACvC,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC;QAE5B,2CAA2C;QAC3C,MAAM,UAAU,GAAG,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;YAC9C,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC;YAC7B,CAAC,CAAC,SAAS,CAAC;QAChB,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC;QAE7B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACjC,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;YACxC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,UAAU,CAAC;gBAAE,SAAS;YAE/C,MAAM,aAAa,GAAG,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YAEtD,IAAI,aAAa,KAAK,sBAAsB,EAAE,CAAC;gBAC3C,OAAO,IAAI,CAAC,6BAA6B,CACrC,SAAS,EACT,UAAU,EACV,QAAQ,EACR,UAAU,CACb,CAAC;YACN,CAAC;YAED,IAAI,aAAa,KAAK,oBAAoB,EAAE,CAAC;gBACzC,OAAO,IAAI,CAAC,2BAA2B,CACnC,SAAS,EACT,UAAU,EACV,QAAQ,CACX,CAAC;YACN,CAAC;YAED,IAAI,aAAa,KAAK,oBAAoB,EAAE,CAAC;gBACzC,OAAO,IAAI,CAAC,2BAA2B,CACnC,SAAS,EACT,UAAU,EACV,QAAQ,EACR,UAAU,CACb,CAAC;YACN,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,6BAA6B,CACjC,SAAiB,EACjB,UAA6B,EAC7B,QAAgB,EAChB,UAAyB;QAEzB,MAAM,eAAe,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,gBAAgB,GAAG,eAAgB,CAAC,OAAO,EAAE,CAAC;QACpD,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAC1C,gBAAgB,EAChB,UAAU,CACb,CAAC;QAEF,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,wBAAwB,GAAG,gBAAgB,CAAC;QAEhD,IAAI,aAAa,EAAE,CAAC;YAChB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC1C,MAAM,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YACrE,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CACpC,UAAU,EACV,kBAAkB,GAAG,KAAK,CAC7B,CAAC;YACF,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;YACzD,wBAAwB,GAAG,aAAa,CAAC,MAAM,CAAC;QACpD,CAAC;aAAM,IAAI,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,UAAU,CAAC,EAAE,CAAC;YACjE,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,kCAAyB,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QACpE,CAAC;QAED,OAAO;YACH,WAAW;YACX,gBAAgB,EAAE,wBAAwB;SAC7C,CAAC;IACN,CAAC;IAEO,oBAAoB,CACxB,SAAiB,EACjB,UAAyB;QAEzB,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;YAC5C,IACI,EAAE,CAAC,kBAAkB,CAAC,SAAS,CAAC;gBAChC,SAAS,CAAC,IAAI,EAAE,IAAI,KAAK,SAAS,EACpC,CAAC;gBACC,OAAO,IAAI,CAAC;YAChB,CAAC;QACL,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAEO,6BAA6B,CACjC,SAAiB,EACjB,UAA6B,EAC7B,QAAgB,EAChB,UAAyB;QAEzB,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,6BAA6B,CACxE,SAAS,EACT,UAAU,EACV,QAAQ,EACR,UAAU,CACb,CAAC;QAEF,OAAO;YACH,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;YAC5C,gBAAgB,EAAE,SAAS;YAC3B,WAAW,EAAE,WAAW;YACxB,gBAAgB,EAAE,gBAAgB;SACrC,CAAC;IACN,CAAC;IAEO,2BAA2B,CAC/B,SAAiB,EACjB,UAA6B,EAC7B,QAAgB;QAEhB,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC3C,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAClD,CAAC;QAED,OAAO;YACH,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;YAC5C,gBAAgB,EAAE,SAAS;YAC3B,mBAAmB,EAAE,OAAO;SAC/B,CAAC;IACN,CAAC;IAEO,2BAA2B,CAC/B,SAAiB,EACjB,UAA6B,EAC7B,QAAgB,EAChB,UAAyB;QAEzB,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,6BAA6B,CACxE,SAAS,EACT,UAAU,EACV,QAAQ,EACR,UAAU,CACb,CAAC;QAEF,OAAO;YACH,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;YAC5C,gBAAgB,EAAE,SAAS;YAC3B,SAAS,EAAE,WAAW;YACtB,cAAc,EAAE,gBAAgB;SACnC,CAAC;IACN,CAAC;IAEO,mBAAmB,CACvB,MAAc,EACd,UAAyB;QAEzB,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;YAC5C,IAAI,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,CAAC;gBACpC,MAAM,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;gBAC5C,MAAM,eAAe,GACjB,SAAS,CAAC,eACb,CAAC,IAAI,CAAC;gBAEP,IACI,YAAY,EAAE,aAAa;oBAC3B,EAAE,CAAC,cAAc,CAAC,YAAY,CAAC,aAAa,CAAC,EAC/C,CAAC;oBACC,KAAK,MAAM,OAAO,IAAI,YAAY,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;wBACxD,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;4BAC/B,OAAO;gCACH,IAAI,EAAE,eAAe;gCACrB,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI;6BAC5B,CAAC;wBACN,CAAC;oBACL,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,gBAAgB,CAAC,YAAoB;QACzC,MAAM,sBAAsB,GAAG,IAAI,CAAC,IAAI,CACpC,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,UAAU,CAClB,CAAC;QACF,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;QAEvD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QACxD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACvD,yCAAyC;QACzC,OAAO,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC;YACnC,CAAC,CAAC,gBAAgB;YAClB,CAAC,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAClC,CAAC;IAEO,kBAAkB,CAAC,IAAa;QACpC,IAAI,CAAC,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,OAAO,EAAE,CAAC;QACd,CAAC;QAED,MAAM,MAAM,GAAwB,EAAE,CAAC;QAEvC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACrC,IAAI,EAAE,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACpC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC;gBAEnC,IAAI,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC5B,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;gBAC9B,CAAC;qBAAM,IAAI,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;oBACpC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACtC,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;oBAClD,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;gBACxB,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;oBACnD,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;gBACzB,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,gBAAgB,CAAC,UAAkB;QACvC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QAClE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC;YAAE,OAAO,UAAU,CAAC;QAEpD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;QACpE,MAAM,KAAK,GAAG,QAAQ,CAAC,eAAe,EAAE,KAAK,CAAC;QAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC,eAAe,EAAE,OAAO,IAAI,GAAG,CAAC;QAEzD,IAAI,CAAC,KAAK;YAAE,OAAO,UAAU,CAAC;QAE9B,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACnD,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC5C,IAAI,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBACrC,MAAM,UAAU,GAAI,OAAoB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC9D,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;gBACtE,OAAO,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;YACzD,CAAC;QACL,CAAC;QAED,OAAO,UAAU,CAAC;IACtB,CAAC;CACJ;AAzTD,4DAyTC"}
|
package/dist/test.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export interface TestContext {
|
|
2
|
-
readonly path: string;
|
|
3
|
-
readonly outputDir: string;
|
|
4
|
-
readonly outputFile: string;
|
|
5
|
-
generate(): Promise<void>;
|
|
6
|
-
cleanUp(): void;
|
|
7
|
-
isOutputFilePresent(): boolean;
|
|
8
|
-
expectOutputFileToExist(): void;
|
|
9
|
-
expectOutputFileToContain(...strings: string[]): void;
|
|
10
|
-
expectOutputFileNotToContain(...strings: string[]): void;
|
|
11
|
-
getOutputFileContent(): string;
|
|
12
|
-
}
|
|
13
|
-
export declare function makeContext(name: string): TestContext;
|
|
14
|
-
export declare function useContext(name: string): TestContext;
|
|
15
|
-
//# sourceMappingURL=test.d.ts.map
|
package/dist/test.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,OAAO,IAAI,IAAI,CAAC;IAChB,mBAAmB,IAAI,OAAO,CAAC;IAC/B,uBAAuB,IAAI,IAAI,CAAC;IAChC,yBAAyB,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACtD,4BAA4B,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACzD,oBAAoB,IAAI,MAAM,CAAC;CAClC;AAcD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CA2CrD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAYpD"}
|
package/dist/test.js
DELETED
|
@@ -1,104 +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.makeContext = makeContext;
|
|
37
|
-
exports.useContext = useContext;
|
|
38
|
-
const path = __importStar(require("node:path"));
|
|
39
|
-
const fs = __importStar(require("node:fs"));
|
|
40
|
-
const vitest_1 = require("vitest");
|
|
41
|
-
const main_1 = require("./main");
|
|
42
|
-
const FIXTURES_DIR = path.join(__dirname, "fixtures");
|
|
43
|
-
const GENERATED_DIR = "src/.generated";
|
|
44
|
-
const OUTPUT_FILENAME = "application-builder.ts";
|
|
45
|
-
const DEFAULT_CONFIG_FILE = "hexai.config.ts";
|
|
46
|
-
function getContextPath(contextName) {
|
|
47
|
-
return path.join(FIXTURES_DIR, contextName);
|
|
48
|
-
}
|
|
49
|
-
function getOutputDir(contextPath) {
|
|
50
|
-
return path.join(contextPath, GENERATED_DIR);
|
|
51
|
-
}
|
|
52
|
-
function getOutputFile(contextPath) {
|
|
53
|
-
return path.join(getOutputDir(contextPath), OUTPUT_FILENAME);
|
|
54
|
-
}
|
|
55
|
-
function makeContext(name) {
|
|
56
|
-
return {
|
|
57
|
-
path: getContextPath(name),
|
|
58
|
-
outputDir: getOutputDir(getContextPath(name)),
|
|
59
|
-
outputFile: getOutputFile(getContextPath(name)),
|
|
60
|
-
generate() {
|
|
61
|
-
return (0, main_1.generateApplicationBuilder)(this.path, {
|
|
62
|
-
configFile: DEFAULT_CONFIG_FILE,
|
|
63
|
-
});
|
|
64
|
-
},
|
|
65
|
-
cleanUp() {
|
|
66
|
-
if (fs.existsSync(this.outputFile)) {
|
|
67
|
-
fs.unlinkSync(this.outputFile);
|
|
68
|
-
}
|
|
69
|
-
if (fs.existsSync(this.outputDir)) {
|
|
70
|
-
fs.rmdirSync(this.outputDir);
|
|
71
|
-
}
|
|
72
|
-
},
|
|
73
|
-
isOutputFilePresent() {
|
|
74
|
-
return fs.existsSync(this.outputFile);
|
|
75
|
-
},
|
|
76
|
-
expectOutputFileToExist() {
|
|
77
|
-
(0, vitest_1.expect)(this.isOutputFilePresent(), `Output file ${this.outputFile} does not exist`).toBe(true);
|
|
78
|
-
},
|
|
79
|
-
expectOutputFileToContain(...strings) {
|
|
80
|
-
this.expectOutputFileToExist();
|
|
81
|
-
const content = this.getOutputFileContent();
|
|
82
|
-
strings.forEach((s) => (0, vitest_1.expect)(content).toContain(s));
|
|
83
|
-
},
|
|
84
|
-
expectOutputFileNotToContain(...strings) {
|
|
85
|
-
this.expectOutputFileToExist();
|
|
86
|
-
const content = this.getOutputFileContent();
|
|
87
|
-
strings.forEach((s) => (0, vitest_1.expect)(content).not.toContain(s));
|
|
88
|
-
},
|
|
89
|
-
getOutputFileContent() {
|
|
90
|
-
return fs.readFileSync(this.outputFile, "utf-8");
|
|
91
|
-
},
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
function useContext(name) {
|
|
95
|
-
const context = makeContext(name);
|
|
96
|
-
(0, vitest_1.beforeEach)(() => {
|
|
97
|
-
context.cleanUp();
|
|
98
|
-
return () => {
|
|
99
|
-
context.cleanUp();
|
|
100
|
-
};
|
|
101
|
-
});
|
|
102
|
-
return context;
|
|
103
|
-
}
|
|
104
|
-
//# sourceMappingURL=test.js.map
|
package/dist/test.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"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"}
|