@odg/command 1.12.0 → 1.14.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/agents.md +334 -26
- package/dist/Generators/MakeFile.d.ts +46 -35
- package/dist/Generators/MakeFile.js +94 -52
- package/dist/Generators/MakeFile.js.map +1 -1
- package/dist/Generators/StubCreator.d.ts +1 -1
- package/dist/Generators/StubCreator.js +17 -42
- package/dist/Generators/StubCreator.js.map +1 -1
- package/dist/Registrations/pascal-to-dot-lower.d.ts +15 -0
- package/dist/Registrations/pascal-to-dot-lower.js +31 -0
- package/dist/Registrations/pascal-to-dot-lower.js.map +1 -0
- package/dist/Registrations/register.d.ts +2 -0
- package/dist/Registrations/register.js +215 -0
- package/dist/Registrations/register.js.map +1 -0
- package/dist/Registrations/ts-mutators.d.ts +40 -0
- package/dist/Registrations/ts-mutators.js +202 -0
- package/dist/Registrations/ts-mutators.js.map +1 -0
- package/dist/Registrations/types.d.ts +34 -0
- package/dist/Registrations/types.js +3 -0
- package/dist/Registrations/types.js.map +1 -0
- package/dist/index.js +79 -13
- package/dist/index.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +10 -9
- package/stubs/event.stub +7 -7
- package/stubs/handler.stub +11 -33
- package/stubs/page.stub +3 -23
- package/stubs/selector.stub +2 -0
|
@@ -4,9 +4,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const chemical_x_1 = require("@odg/chemical-x");
|
|
7
|
+
const register_1 = require("../Registrations/register");
|
|
7
8
|
const StubCreator_1 = __importDefault(require("./StubCreator"));
|
|
8
9
|
class MakeFile {
|
|
9
10
|
logger;
|
|
11
|
+
stubCreator = new StubCreator_1.default();
|
|
10
12
|
constructor(logger) {
|
|
11
13
|
this.logger = logger;
|
|
12
14
|
}
|
|
@@ -14,98 +16,138 @@ class MakeFile {
|
|
|
14
16
|
* Use this function to create Page Crawler class
|
|
15
17
|
*
|
|
16
18
|
* @param {string} pageName Selector file name
|
|
17
|
-
* @param {
|
|
19
|
+
* @param {MakePageOptions} options Options command
|
|
18
20
|
* @returns {Promise<void>}
|
|
19
21
|
*/
|
|
20
22
|
async makePage(pageName, options) {
|
|
21
|
-
const stubCreator = new StubCreator_1.default();
|
|
22
23
|
const pageUcFirst = new chemical_x_1.Str(pageName).ucFirst().toString();
|
|
23
|
-
const filePath = await stubCreator.create("page", `${pageUcFirst}Page`, options.path, {
|
|
24
|
+
const filePath = await this.stubCreator.create("page", `${pageUcFirst}Page`, options.path, {
|
|
24
25
|
"PageName:UCFirst": pageUcFirst,
|
|
25
26
|
"PageName:LCFirst": pageName.charAt(0).toLowerCase() + pageName.slice(1),
|
|
26
27
|
});
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
handlerFrom: options.handlerFrom,
|
|
37
|
-
handlerTo: options.handlerTo,
|
|
38
|
-
});
|
|
39
|
-
}
|
|
28
|
+
const targets = this.buildRegistrationTargets(options);
|
|
29
|
+
await this.scaffoldPageAddOns(pageName, options);
|
|
30
|
+
await (0, register_1.registerArtifact)({
|
|
31
|
+
kind: "page",
|
|
32
|
+
name: pageName,
|
|
33
|
+
pageClassName: `${pageUcFirst}Page`,
|
|
34
|
+
containerEnumMember: `${pageUcFirst}Page`,
|
|
35
|
+
filePath,
|
|
36
|
+
}, targets);
|
|
40
37
|
await this.logger.info(`Page created successfully in : ${filePath}`);
|
|
41
38
|
}
|
|
42
|
-
/**
|
|
43
|
-
* Use this function to create selector class
|
|
44
|
-
*
|
|
45
|
-
* @param {string} selectorName Page Selector file name
|
|
46
|
-
* @param {MakeSelectorInterface} options Options command
|
|
47
|
-
* @returns {Promise<void>}
|
|
48
|
-
*/
|
|
49
39
|
async makeSelectors(selectorName, options) {
|
|
50
|
-
const stubCreator = new StubCreator_1.default();
|
|
51
40
|
const pageUcFirst = new chemical_x_1.Str(selectorName).ucFirst().toString();
|
|
52
|
-
const filePath = await stubCreator.create("selector", `${pageUcFirst}Selector`, options.path, {
|
|
41
|
+
const filePath = await this.stubCreator.create("selector", `${pageUcFirst}Selector`, options.path, {
|
|
53
42
|
"SelectorName:UCFirst": pageUcFirst,
|
|
54
43
|
"SelectorName:LCFirst": selectorName.charAt(0).toLowerCase() + selectorName.slice(1),
|
|
55
44
|
});
|
|
45
|
+
await (0, register_1.registerArtifact)({
|
|
46
|
+
kind: "selector",
|
|
47
|
+
name: selectorName,
|
|
48
|
+
selectorClassName: `${pageUcFirst}Selector`,
|
|
49
|
+
filePath,
|
|
50
|
+
}, this.buildRegistrationTargets(options));
|
|
56
51
|
await this.logger.info(`Selector created successfully in : ${filePath}`);
|
|
57
52
|
}
|
|
58
|
-
/**
|
|
59
|
-
* Use this function to create handler file
|
|
60
|
-
*
|
|
61
|
-
* @param {string} handlerName Handler name to make
|
|
62
|
-
* @param {MakeHandlerInterface} options Options command
|
|
63
|
-
* @returns {Promise<void>}
|
|
64
|
-
*/
|
|
65
53
|
async makeHandler(handlerName, options) {
|
|
66
|
-
const stubCreator = new StubCreator_1.default();
|
|
67
54
|
const isTransition = options.handlerFrom !== undefined || options.handlerTo !== undefined;
|
|
68
55
|
const handlerClassName = isTransition
|
|
69
56
|
? `${new chemical_x_1.Str(options.handlerFrom ?? handlerName).ucFirst().toString()}To${new chemical_x_1.Str(options.handlerTo ?? handlerName).ucFirst().toString()}Handler`
|
|
70
57
|
: `${new chemical_x_1.Str(handlerName).ucFirst().toString()}Handler`;
|
|
71
|
-
const
|
|
58
|
+
const handlerPageLcFirst = handlerName.charAt(0).toLowerCase() + handlerName.slice(1);
|
|
59
|
+
const handlerPageSelectorBundle = `${handlerPageLcFirst}Selector`;
|
|
60
|
+
const filePath = await this.stubCreator.create("handler", handlerClassName, options.path, {
|
|
72
61
|
"HandlerClassName": handlerClassName,
|
|
62
|
+
"HandlerPageSelectorBundle": handlerPageSelectorBundle,
|
|
73
63
|
});
|
|
64
|
+
await (0, register_1.registerArtifact)({
|
|
65
|
+
kind: "handler",
|
|
66
|
+
name: handlerName,
|
|
67
|
+
handlerClassName,
|
|
68
|
+
containerEnumMember: handlerClassName,
|
|
69
|
+
filePath,
|
|
70
|
+
}, this.buildRegistrationTargets(options));
|
|
74
71
|
await this.logger.info(`Handler created successfully in : ${filePath}`);
|
|
75
72
|
}
|
|
76
|
-
/**
|
|
77
|
-
* Use this function to create handler file
|
|
78
|
-
*
|
|
79
|
-
* @param {string} eventName Event name to make
|
|
80
|
-
* @param {MakeEventInterface} options Options command
|
|
81
|
-
* @returns {Promise<void>}
|
|
82
|
-
*/
|
|
83
73
|
async makeEvent(eventName, options) {
|
|
84
|
-
const stubCreator = new StubCreator_1.default();
|
|
85
74
|
const pageUcFirst = new chemical_x_1.Str(eventName).ucFirst().toString();
|
|
86
|
-
const
|
|
75
|
+
const listenerClassName = `${pageUcFirst}EventListener`;
|
|
76
|
+
const eventEnumMember = `${pageUcFirst}Event`;
|
|
77
|
+
const containerEnumMember = `${pageUcFirst}EventListener`;
|
|
78
|
+
const filePath = await this.stubCreator.create("event", listenerClassName, options.path, {
|
|
87
79
|
"EventName:UCFirst": pageUcFirst,
|
|
88
80
|
"EventName:LCFirst": eventName.charAt(0).toLowerCase() + eventName.slice(1),
|
|
89
81
|
});
|
|
82
|
+
await (0, register_1.registerArtifact)({
|
|
83
|
+
kind: "event",
|
|
84
|
+
name: eventName,
|
|
85
|
+
listenerClassName,
|
|
86
|
+
eventEnumMember,
|
|
87
|
+
containerEnumMember,
|
|
88
|
+
filePath,
|
|
89
|
+
}, this.buildRegistrationTargets(options));
|
|
90
90
|
await this.logger.info(`Event created successfully in : ${filePath}`);
|
|
91
91
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
92
|
+
async makeConfig(configName, options) {
|
|
93
|
+
const validator = options.validator ?? "zod.string()";
|
|
94
|
+
await (0, register_1.registerArtifact)({
|
|
95
|
+
kind: "config",
|
|
96
|
+
name: configName,
|
|
97
|
+
configEnumMembers: [configName],
|
|
98
|
+
envExampleLines: [`\n# ${configName}`, `${configName}=""`],
|
|
99
|
+
configValidatorType: validator,
|
|
100
|
+
}, this.buildRegistrationTargets(options));
|
|
101
|
+
await this.logger.info(`Config "${configName}" registered successfully`);
|
|
102
|
+
}
|
|
99
103
|
async makeException(exceptionName, options) {
|
|
100
|
-
const stubCreator = new StubCreator_1.default();
|
|
101
104
|
const exceptionUcFirst = new chemical_x_1.Str(exceptionName).ucFirst().toString();
|
|
102
105
|
const exceptionType = options.isUnknown ? "UnknownException" : "Exception";
|
|
103
|
-
const filePath = await stubCreator.create("exception", `${exceptionUcFirst}${exceptionType}`, options.path, {
|
|
106
|
+
const filePath = await this.stubCreator.create("exception", `${exceptionUcFirst}${exceptionType}`, options.path, {
|
|
104
107
|
"ExceptionType": exceptionType,
|
|
105
108
|
"ExceptionName": exceptionUcFirst,
|
|
106
109
|
});
|
|
107
110
|
await this.logger.info(`Exception created successfully in : ${filePath}`);
|
|
108
111
|
}
|
|
112
|
+
buildRegistrationTargets(options) {
|
|
113
|
+
const { register = false, registrationTargets, typeImport, typeImports, ...targets } = options;
|
|
114
|
+
return {
|
|
115
|
+
enabled: register,
|
|
116
|
+
...registrationTargets,
|
|
117
|
+
...targets,
|
|
118
|
+
typeImports: typeImports ?? typeImport ?? registrationTargets?.typeImports,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Runs optional selector, event, and handler file generation from make:page, forwarding `register` and
|
|
123
|
+
* `registrationTargets` so enums and barrels stay in sync with the parent command.
|
|
124
|
+
*
|
|
125
|
+
* @param {string} pageName Base page name (same as make:page first argument)
|
|
126
|
+
* @param {MakePageOptions} options Full make:page options including paths and registration targets
|
|
127
|
+
* @returns {Promise<void>}
|
|
128
|
+
*/
|
|
129
|
+
async scaffoldPageAddOns(pageName, options) {
|
|
130
|
+
if (options.selectors && options.selectorPath) {
|
|
131
|
+
await this.makeSelectors(pageName, {
|
|
132
|
+
...options,
|
|
133
|
+
path: options.selectorPath,
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
if (options.event && options.eventPath) {
|
|
137
|
+
await this.makeEvent(pageName, {
|
|
138
|
+
...options,
|
|
139
|
+
path: options.eventPath,
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
if (options.handlerPath && (options.handlerFrom ?? options.handlerTo)) {
|
|
143
|
+
await this.makeHandler(pageName, {
|
|
144
|
+
...options,
|
|
145
|
+
path: options.handlerPath,
|
|
146
|
+
handlerFrom: options.handlerFrom,
|
|
147
|
+
handlerTo: options.handlerTo,
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
}
|
|
109
151
|
}
|
|
110
152
|
exports.default = MakeFile;
|
|
111
153
|
//# sourceMappingURL=MakeFile.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MakeFile.js","sourceRoot":"","sources":["../../src/Generators/MakeFile.ts"],"names":[],"mappings":";;;;;AAAA,gDAAsC;AAGtC,gEAAwC;
|
|
1
|
+
{"version":3,"file":"MakeFile.js","sourceRoot":"","sources":["../../src/Generators/MakeFile.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
export default class StubCreator {
|
|
2
|
-
private readonly filesystem;
|
|
3
2
|
create(stub: string, name: string, pathDestination: string, variables: Record<string, number | string>): Promise<string>;
|
|
4
3
|
/**
|
|
5
4
|
* Return stub file content.
|
|
@@ -24,4 +23,5 @@ export default class StubCreator {
|
|
|
24
23
|
* @returns {Promise<string>}
|
|
25
24
|
*/
|
|
26
25
|
getStubPath(name: string): Promise<string>;
|
|
26
|
+
private appendToIndexIfExists;
|
|
27
27
|
}
|
|
@@ -1,60 +1,23 @@
|
|
|
1
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
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
4
|
};
|
|
38
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
const
|
|
6
|
+
const promises_1 = require("node:fs/promises");
|
|
40
7
|
const node_path_1 = __importDefault(require("node:path"));
|
|
41
|
-
const node_util_1 = require("node:util");
|
|
42
8
|
const chemical_x_1 = require("@odg/chemical-x");
|
|
43
9
|
const exception_1 = require("@odg/exception");
|
|
44
10
|
class StubCreator {
|
|
45
|
-
filesystem = Filesystem;
|
|
46
11
|
async create(stub, name, pathDestination, variables) {
|
|
47
12
|
const destination = await this.getPath(name, pathDestination);
|
|
48
13
|
if (await new chemical_x_1.File(destination).exists()) {
|
|
49
14
|
throw new exception_1.InvalidArgumentException(`The ${name} already exists.`);
|
|
50
15
|
}
|
|
51
16
|
const content = await this.getStub(stub, variables);
|
|
52
|
-
await (0,
|
|
53
|
-
await (0,
|
|
17
|
+
await (0, promises_1.mkdir)(pathDestination, { recursive: true });
|
|
18
|
+
await (0, promises_1.writeFile)(destination, content);
|
|
54
19
|
const indexFile = `${pathDestination}/index.ts`;
|
|
55
|
-
|
|
56
|
-
await (0, node_util_1.promisify)(this.filesystem.appendFile)(indexFile, `\nexport * from "./${name}";\n`, {});
|
|
57
|
-
}
|
|
20
|
+
await this.appendToIndexIfExists(indexFile, name);
|
|
58
21
|
return destination;
|
|
59
22
|
}
|
|
60
23
|
/**
|
|
@@ -66,7 +29,7 @@ class StubCreator {
|
|
|
66
29
|
*/
|
|
67
30
|
async getStub(name, variables) {
|
|
68
31
|
const pathStub = await this.getStubPath(name);
|
|
69
|
-
const file = await (0,
|
|
32
|
+
const file = await (0, promises_1.readFile)(`${pathStub}/${name}.stub`);
|
|
70
33
|
return new chemical_x_1.Str(file.toString())
|
|
71
34
|
.formatUnicorn(variables)
|
|
72
35
|
.toString();
|
|
@@ -93,6 +56,18 @@ class StubCreator {
|
|
|
93
56
|
}
|
|
94
57
|
return node_path_1.default.join(process.cwd(), "node_modules/@odg/command/stubs");
|
|
95
58
|
}
|
|
59
|
+
async appendToIndexIfExists(indexFile, name) {
|
|
60
|
+
if (!await new chemical_x_1.File(indexFile).exists()) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
const exportLine = `export * from "./${name}";`;
|
|
64
|
+
const existing = await (0, promises_1.readFile)(indexFile, { encoding: "utf8" });
|
|
65
|
+
if (existing.includes(exportLine)) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
const insert = existing.endsWith("\n") || existing.length === 0 ? "" : "\n";
|
|
69
|
+
await (0, promises_1.appendFile)(indexFile, `${insert}${exportLine}\n`);
|
|
70
|
+
}
|
|
96
71
|
}
|
|
97
72
|
exports.default = StubCreator;
|
|
98
73
|
//# sourceMappingURL=StubCreator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StubCreator.js","sourceRoot":"","sources":["../../src/Generators/StubCreator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"StubCreator.js","sourceRoot":"","sources":["../../src/Generators/StubCreator.ts"],"names":[],"mappings":";;;;;AAAA,+CAK0B;AAC1B,0DAAiC;AAEjC,gDAA4C;AAC5C,8CAA0D;AAE1D,MAAqB,WAAW;IAErB,KAAK,CAAC,MAAM,CACf,IAAY,EACZ,IAAY,EACZ,eAAuB,EACvB,SAA0C;QAE1C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;QAE9D,IAAI,MAAM,IAAI,iBAAI,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,MAAM,IAAI,oCAAwB,CAAC,OAAO,IAAI,kBAAkB,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAEpD,MAAM,IAAA,gBAAK,EAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,MAAM,IAAA,oBAAS,EAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAEtC,MAAM,SAAS,GAAG,GAAG,eAAe,WAAW,CAAC;QAEhD,MAAM,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAElD,OAAO,WAAW,CAAC;IACvB,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,OAAO,CAAC,IAAY,EAAE,SAA0C;QACzE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,MAAM,IAAA,mBAAQ,EAAC,GAAG,QAAQ,IAAI,IAAI,OAAO,CAAC,CAAC;QAExD,OAAO,IAAI,gBAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;aAC1B,aAAa,CAAC,SAAS,CAAC;aACxB,QAAQ,EAAE,CAAC;IACpB,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,OAAO,CAAC,IAAY,EAAE,IAAY;QAC3C,OAAO,GAAG,IAAI,IAAI,IAAI,KAAK,CAAC;IAChC,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,WAAW,CAAC,IAAY;QACjC,IAAI,MAAM,IAAI,iBAAI,CAAC,GAAG,mBAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YACzE,OAAO,mBAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACvC,CAAC;QAED,OAAO,mBAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,iCAAiC,CAAC,CAAC;IAC3E,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAAC,SAAiB,EAAE,IAAY;QAC/D,IAAI,CAAC,MAAM,IAAI,iBAAI,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YACtC,OAAO;QACX,CAAC;QAED,MAAM,UAAU,GAAG,oBAAoB,IAAI,IAAI,CAAC;QAChD,MAAM,QAAQ,GAAG,MAAM,IAAA,mBAAQ,EAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QAEjE,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAChC,OAAO;QACX,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAE5E,MAAM,IAAA,qBAAU,EAAC,SAAS,EAAE,GAAG,MAAM,GAAG,UAAU,IAAI,CAAC,CAAC;IAC5D,CAAC;CAEJ;AApFD,8BAoFC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts a PascalCase identifier to dot-separated lowercase segments.
|
|
3
|
+
*
|
|
4
|
+
* @param {string} identifier PascalCase class or symbol name (e.g. ExampleEventListener)
|
|
5
|
+
* @returns {string} Dot-separated lowercase (e.g. example.event.listener)
|
|
6
|
+
*/
|
|
7
|
+
export declare function pascalCaseToDotLower(identifier: string): string;
|
|
8
|
+
/**
|
|
9
|
+
* Resolves the ContainerName string value for any registration.
|
|
10
|
+
*
|
|
11
|
+
* @param {string | undefined} override Explicit value from registration targets, if any
|
|
12
|
+
* @param {string} containerEnumMember Class name used as the ContainerName member
|
|
13
|
+
* @returns {string} Value for the ContainerName enum entry
|
|
14
|
+
*/
|
|
15
|
+
export declare function resolveContainerEnumMemberValue(override: string | undefined, containerEnumMember: string): string;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.pascalCaseToDotLower = pascalCaseToDotLower;
|
|
4
|
+
exports.resolveContainerEnumMemberValue = resolveContainerEnumMemberValue;
|
|
5
|
+
/**
|
|
6
|
+
* Converts a PascalCase identifier to dot-separated lowercase segments.
|
|
7
|
+
*
|
|
8
|
+
* @param {string} identifier PascalCase class or symbol name (e.g. ExampleEventListener)
|
|
9
|
+
* @returns {string} Dot-separated lowercase (e.g. example.event.listener)
|
|
10
|
+
*/
|
|
11
|
+
function pascalCaseToDotLower(identifier) {
|
|
12
|
+
return identifier
|
|
13
|
+
.split(/(?=[A-Z])/)
|
|
14
|
+
.filter((segment) => segment.length > 0)
|
|
15
|
+
.map((segment) => segment.toLowerCase())
|
|
16
|
+
.join(".");
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Resolves the ContainerName string value for any registration.
|
|
20
|
+
*
|
|
21
|
+
* @param {string | undefined} override Explicit value from registration targets, if any
|
|
22
|
+
* @param {string} containerEnumMember Class name used as the ContainerName member
|
|
23
|
+
* @returns {string} Value for the ContainerName enum entry
|
|
24
|
+
*/
|
|
25
|
+
function resolveContainerEnumMemberValue(override, containerEnumMember) {
|
|
26
|
+
if (override !== undefined) {
|
|
27
|
+
return override;
|
|
28
|
+
}
|
|
29
|
+
return pascalCaseToDotLower(containerEnumMember);
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=pascal-to-dot-lower.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pascal-to-dot-lower.js","sourceRoot":"","sources":["../../src/Registrations/pascal-to-dot-lower.ts"],"names":[],"mappings":";;AAMA,oDAMC;AASD,0EASC;AA9BD;;;;;GAKG;AACH,SAAgB,oBAAoB,CAAC,UAAkB;IACnD,OAAO,UAAU;SACZ,KAAK,CAAC,WAAW,CAAC;SAClB,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;SACvC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;SACvC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,+BAA+B,CAC3C,QAA4B,EAC5B,mBAA2B;IAE3B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,OAAO,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;AACrD,CAAC"}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerArtifact = registerArtifact;
|
|
4
|
+
const node_path_1 = require("node:path");
|
|
5
|
+
const exception_1 = require("@odg/exception");
|
|
6
|
+
const pascal_to_dot_lower_1 = require("./pascal-to-dot-lower");
|
|
7
|
+
const ts_mutators_1 = require("./ts-mutators");
|
|
8
|
+
/** TypeScript path alias for the listeners barrel (see tsconfig paths). */
|
|
9
|
+
const listenersTypeModuleSpecifier = "@listeners";
|
|
10
|
+
/** TypeScript path alias for the pages barrel (see tsconfig paths). */
|
|
11
|
+
const pagesTypeModuleSpecifier = "@pages";
|
|
12
|
+
/** TypeScript path alias for the handlers barrel (see tsconfig paths). */
|
|
13
|
+
const handlersTypeModuleSpecifier = "@handlers";
|
|
14
|
+
function resolveRelativeExportPath(filePath, barrelPath, fallbackExportName) {
|
|
15
|
+
if (!filePath) {
|
|
16
|
+
return `./${fallbackExportName}`;
|
|
17
|
+
}
|
|
18
|
+
const barrelDirectory = (0, node_path_1.dirname)(barrelPath);
|
|
19
|
+
const filePathWithoutExtension = filePath.replace(/\.ts$/, "");
|
|
20
|
+
const relativePath = (0, node_path_1.relative)(barrelDirectory, filePathWithoutExtension);
|
|
21
|
+
return `./${relativePath}`;
|
|
22
|
+
}
|
|
23
|
+
async function registerContainerEnumMember(containerEnumPath, memberName, memberValue) {
|
|
24
|
+
await (0, ts_mutators_1.ensureEnumMember)({
|
|
25
|
+
filePath: containerEnumPath,
|
|
26
|
+
enumName: "ContainerName",
|
|
27
|
+
memberName,
|
|
28
|
+
memberValue,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
async function registerContainerInterfaceBinding(containerInterfacePath, enumMember, className, moduleSpecifier) {
|
|
32
|
+
await (0, ts_mutators_1.ensureValueNamedImport)({
|
|
33
|
+
filePath: containerInterfacePath,
|
|
34
|
+
moduleSpecifier,
|
|
35
|
+
name: className,
|
|
36
|
+
});
|
|
37
|
+
await (0, ts_mutators_1.ensureInterfaceProperty)({
|
|
38
|
+
filePath: containerInterfacePath,
|
|
39
|
+
interfaceName: "ContainerInterface",
|
|
40
|
+
propertyName: `[ContainerName.${enumMember}]`,
|
|
41
|
+
propertyType: className,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
async function registerBarrelExport(barrelPath, filePath, fallbackExportName) {
|
|
45
|
+
const relativeExportPath = resolveRelativeExportPath(filePath, barrelPath, fallbackExportName);
|
|
46
|
+
await (0, ts_mutators_1.ensureBarrelExport)({
|
|
47
|
+
barrelPath,
|
|
48
|
+
relativeExportPath,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
async function registerConfigEnumMembers(descriptor, targets) {
|
|
52
|
+
if (!descriptor.configEnumMembers?.length || !targets.configEnumPath) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
for (const key of descriptor.configEnumMembers) {
|
|
56
|
+
await (0, ts_mutators_1.ensureEnumMember)({
|
|
57
|
+
filePath: targets.configEnumPath,
|
|
58
|
+
enumName: "ConfigName",
|
|
59
|
+
memberName: key,
|
|
60
|
+
memberValue: key,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
async function registerEnvironmentExampleLines(descriptor, targets) {
|
|
65
|
+
if (!descriptor.envExampleLines?.length || !targets.envExamplePath) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
await (0, ts_mutators_1.ensureEnvironmentExampleLines)({
|
|
69
|
+
filePath: targets.envExamplePath,
|
|
70
|
+
lines: descriptor.envExampleLines,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
async function registerImports(targets) {
|
|
74
|
+
const imports = targets.typeImports ?? [];
|
|
75
|
+
if (imports.length === 0)
|
|
76
|
+
return;
|
|
77
|
+
const importTargets = new Set([
|
|
78
|
+
targets.containerEnumPath,
|
|
79
|
+
targets.eventEnumPath,
|
|
80
|
+
targets.configEnumPath,
|
|
81
|
+
targets.containerInterfacePath,
|
|
82
|
+
targets.eventsInterfacePath,
|
|
83
|
+
targets.pagesIndexPath,
|
|
84
|
+
targets.selectorsIndexPath,
|
|
85
|
+
targets.handlersIndexPath,
|
|
86
|
+
targets.listenersIndexPath,
|
|
87
|
+
].filter(Boolean));
|
|
88
|
+
await Promise.all([...importTargets].map(async (filePath) => (0, ts_mutators_1.ensureTopLevelStatements)({
|
|
89
|
+
filePath,
|
|
90
|
+
statements: imports,
|
|
91
|
+
})));
|
|
92
|
+
}
|
|
93
|
+
async function registerPage(descriptor, targets) {
|
|
94
|
+
if (descriptor.containerEnumMember && targets.containerEnumPath) {
|
|
95
|
+
await registerContainerEnumMember(targets.containerEnumPath, descriptor.containerEnumMember, (0, pascal_to_dot_lower_1.resolveContainerEnumMemberValue)(undefined, descriptor.containerEnumMember));
|
|
96
|
+
}
|
|
97
|
+
if (descriptor.pageClassName && targets.pagesIndexPath) {
|
|
98
|
+
await registerBarrelExport(targets.pagesIndexPath, descriptor.filePath, descriptor.pageClassName);
|
|
99
|
+
}
|
|
100
|
+
if (descriptor.containerEnumMember && descriptor.pageClassName && targets.containerInterfacePath) {
|
|
101
|
+
await registerContainerInterfaceBinding(targets.containerInterfacePath, descriptor.containerEnumMember, descriptor.pageClassName, pagesTypeModuleSpecifier);
|
|
102
|
+
}
|
|
103
|
+
await registerConfigEnumMembers(descriptor, targets);
|
|
104
|
+
await registerEnvironmentExampleLines(descriptor, targets);
|
|
105
|
+
}
|
|
106
|
+
async function registerSelector(descriptor, targets) {
|
|
107
|
+
if (!descriptor.selectorClassName || !targets.selectorsIndexPath)
|
|
108
|
+
return;
|
|
109
|
+
await registerBarrelExport(targets.selectorsIndexPath, descriptor.filePath, descriptor.selectorClassName);
|
|
110
|
+
}
|
|
111
|
+
async function registerHandler(descriptor, targets) {
|
|
112
|
+
if (descriptor.containerEnumMember && targets.containerEnumPath) {
|
|
113
|
+
await registerContainerEnumMember(targets.containerEnumPath, descriptor.containerEnumMember, (0, pascal_to_dot_lower_1.resolveContainerEnumMemberValue)(undefined, descriptor.containerEnumMember));
|
|
114
|
+
}
|
|
115
|
+
if (descriptor.handlerClassName && targets.handlersIndexPath) {
|
|
116
|
+
await registerBarrelExport(targets.handlersIndexPath, descriptor.filePath, descriptor.handlerClassName);
|
|
117
|
+
}
|
|
118
|
+
if (descriptor.containerEnumMember && descriptor.handlerClassName && targets.containerInterfacePath) {
|
|
119
|
+
await registerContainerInterfaceBinding(targets.containerInterfacePath, descriptor.containerEnumMember, descriptor.handlerClassName, handlersTypeModuleSpecifier);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
async function registerEventsInterface(descriptor, targets) {
|
|
123
|
+
const payloadType = targets.eventPayloadType;
|
|
124
|
+
if (!payloadType || !descriptor.eventEnumMember || !targets.eventsInterfacePath) {
|
|
125
|
+
throw new exception_1.InvalidArgumentException("Missing explicit event payload type: pass --eventPayloadType to register EventsInterface safely.");
|
|
126
|
+
}
|
|
127
|
+
await (0, ts_mutators_1.ensureInterfaceProperty)({
|
|
128
|
+
filePath: targets.eventsInterfacePath,
|
|
129
|
+
interfaceName: "EventBaseInterface",
|
|
130
|
+
propertyName: `[EventName.${descriptor.eventEnumMember}]`,
|
|
131
|
+
propertyType: payloadType,
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
async function registerEventContainerInterface(descriptor, targets) {
|
|
135
|
+
if (!descriptor.listenerClassName
|
|
136
|
+
|| !descriptor.containerEnumMember
|
|
137
|
+
|| !descriptor.eventEnumMember
|
|
138
|
+
|| !targets.containerInterfacePath) {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
await (0, ts_mutators_1.ensureTypeNamedImport)({
|
|
142
|
+
filePath: targets.containerInterfacePath,
|
|
143
|
+
moduleSpecifier: listenersTypeModuleSpecifier,
|
|
144
|
+
name: descriptor.listenerClassName,
|
|
145
|
+
});
|
|
146
|
+
await (0, ts_mutators_1.ensureInterfaceProperty)({
|
|
147
|
+
filePath: targets.containerInterfacePath,
|
|
148
|
+
interfaceName: "ContainerInterface",
|
|
149
|
+
propertyName: `[ContainerName.${descriptor.containerEnumMember}]`,
|
|
150
|
+
propertyType: descriptor.listenerClassName,
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
async function registerEvent(descriptor, targets) {
|
|
154
|
+
if (descriptor.eventEnumMember && targets.eventEnumPath) {
|
|
155
|
+
await (0, ts_mutators_1.ensureEnumMember)({
|
|
156
|
+
filePath: targets.eventEnumPath,
|
|
157
|
+
enumName: "EventName",
|
|
158
|
+
memberName: descriptor.eventEnumMember,
|
|
159
|
+
memberValue: descriptor.eventEnumMember,
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
if (descriptor.listenerClassName && targets.listenersIndexPath) {
|
|
163
|
+
await registerBarrelExport(targets.listenersIndexPath, descriptor.filePath, descriptor.listenerClassName);
|
|
164
|
+
}
|
|
165
|
+
if (descriptor.containerEnumMember && targets.containerEnumPath) {
|
|
166
|
+
await (0, ts_mutators_1.ensureEnumMember)({
|
|
167
|
+
filePath: targets.containerEnumPath,
|
|
168
|
+
enumName: "ContainerName",
|
|
169
|
+
memberName: descriptor.containerEnumMember,
|
|
170
|
+
memberValue: (0, pascal_to_dot_lower_1.resolveContainerEnumMemberValue)(targets.containerEnumMemberValue, descriptor.containerEnumMember),
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
await registerEventContainerInterface(descriptor, targets);
|
|
174
|
+
if (descriptor.eventEnumMember && targets.eventsInterfacePath) {
|
|
175
|
+
await registerEventsInterface(descriptor, targets);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
async function registerConfig(descriptor, targets) {
|
|
179
|
+
await registerConfigEnumMembers(descriptor, targets);
|
|
180
|
+
await registerEnvironmentExampleLines(descriptor, targets);
|
|
181
|
+
if (!descriptor.configEnumMembers?.length || !targets.configValidatorPath) {
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
for (const key of descriptor.configEnumMembers) {
|
|
185
|
+
await (0, ts_mutators_1.ensureZodObjectEntry)({
|
|
186
|
+
filePath: targets.configValidatorPath,
|
|
187
|
+
constName: "configValidator",
|
|
188
|
+
propertyName: `[ConfigName.${key}]`,
|
|
189
|
+
propertyValue: descriptor.configValidatorType ?? "zod.string()",
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
async function registerArtifact(descriptor, targets) {
|
|
194
|
+
if (!targets.enabled)
|
|
195
|
+
return;
|
|
196
|
+
await registerImports(targets);
|
|
197
|
+
switch (descriptor.kind) {
|
|
198
|
+
case "page":
|
|
199
|
+
await registerPage(descriptor, targets);
|
|
200
|
+
break;
|
|
201
|
+
case "selector":
|
|
202
|
+
await registerSelector(descriptor, targets);
|
|
203
|
+
break;
|
|
204
|
+
case "handler":
|
|
205
|
+
await registerHandler(descriptor, targets);
|
|
206
|
+
break;
|
|
207
|
+
case "event":
|
|
208
|
+
await registerEvent(descriptor, targets);
|
|
209
|
+
break;
|
|
210
|
+
case "config":
|
|
211
|
+
await registerConfig(descriptor, targets);
|
|
212
|
+
break;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=register.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/Registrations/register.ts"],"names":[],"mappings":"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"}
|