@odg/command 1.13.0 → 1.15.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 +148 -44
- package/dist/Generators/MakeFile.d.ts +56 -37
- package/dist/Generators/MakeFile.d.ts.map +1 -0
- package/dist/Generators/MakeFile.js +132 -66
- package/dist/Generators/MakeFile.js.map +1 -1
- package/dist/Generators/StubCreator.d.ts +2 -1
- package/dist/Generators/StubCreator.d.ts.map +1 -0
- package/dist/Generators/StubCreator.js +17 -42
- package/dist/Generators/StubCreator.js.map +1 -1
- package/dist/Registrations/pascal-to-dot-lower.d.ts +16 -0
- package/dist/Registrations/pascal-to-dot-lower.d.ts.map +1 -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 +3 -0
- package/dist/Registrations/register.d.ts.map +1 -0
- package/dist/Registrations/register.js +222 -0
- package/dist/Registrations/register.js.map +1 -0
- package/dist/Registrations/ts-mutators.d.ts +41 -0
- package/dist/Registrations/ts-mutators.d.ts.map +1 -0
- package/dist/Registrations/ts-mutators.js +202 -0
- package/dist/Registrations/ts-mutators.js.map +1 -0
- package/dist/Registrations/types.d.ts +35 -0
- package/dist/Registrations/types.d.ts.map +1 -0
- package/dist/Registrations/types.js +3 -0
- package/dist/Registrations/types.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +107 -16
- package/dist/index.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +12 -11
- package/stubs/handler.stub +14 -36
- package/stubs/listener.stub +26 -0
- package/stubs/page.stub +2 -20
- package/stubs/selector.stub +2 -0
- package/stubs/event.stub +0 -26
|
@@ -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,162 @@ 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
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
"PageName:
|
|
25
|
-
"PageName:LCFirst": pageName.charAt(0).toLowerCase() + pageName.slice(1),
|
|
23
|
+
const pageClassName = new chemical_x_1.Str(pageName).pascalCase().toString();
|
|
24
|
+
const filePath = await this.stubCreator.create("page", `${pageClassName}Page`, options.path, {
|
|
25
|
+
"PageName:UCFirst": pageClassName,
|
|
26
|
+
"PageName:LCFirst": new chemical_x_1.Str(pageClassName).camelCase().toString(),
|
|
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(pageClassName, options);
|
|
30
|
+
await (0, register_1.registerArtifact)({
|
|
31
|
+
kind: "page",
|
|
32
|
+
name: pageClassName,
|
|
33
|
+
pageClassName: `${pageClassName}Page`,
|
|
34
|
+
containerEnumMember: `${pageClassName}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
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
"SelectorName:
|
|
54
|
-
"SelectorName:LCFirst": selectorName.charAt(0).toLowerCase() + selectorName.slice(1),
|
|
40
|
+
const pageName = new chemical_x_1.Str(selectorName).pascalCase().toString();
|
|
41
|
+
const filePath = await this.stubCreator.create("selector", `${pageName}Selector`, options.path, {
|
|
42
|
+
"SelectorName:UCFirst": pageName,
|
|
43
|
+
"SelectorName:LCFirst": new chemical_x_1.Str(selectorName).camelCase().toString(),
|
|
55
44
|
});
|
|
45
|
+
await (0, register_1.registerArtifact)({
|
|
46
|
+
kind: "selector",
|
|
47
|
+
name: selectorName,
|
|
48
|
+
selectorClassName: `${pageName}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
|
-
? `${new chemical_x_1.Str(options.handlerFrom ?? handlerName).
|
|
70
|
-
: `${new chemical_x_1.Str(handlerName).
|
|
71
|
-
const
|
|
56
|
+
? `${new chemical_x_1.Str(options.handlerFrom ?? handlerName).pascalCase().toString()}To${new chemical_x_1.Str(options.handlerTo ?? handlerName).pascalCase().toString()}Handler`
|
|
57
|
+
: `${new chemical_x_1.Str(handlerName).pascalCase().toString()}Handler`;
|
|
58
|
+
const selectorName = new chemical_x_1.Str(handlerName).camelCase().toString();
|
|
59
|
+
const handlerPageSelectorBundle = `${selectorName}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
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
74
|
+
const pageClassName = new chemical_x_1.Str(eventName).pascalCase().toString();
|
|
75
|
+
const eventEnumMember = `${pageClassName}Event`;
|
|
76
|
+
await (0, register_1.registerArtifact)({
|
|
77
|
+
kind: "event",
|
|
78
|
+
name: eventName,
|
|
79
|
+
eventEnumMember,
|
|
80
|
+
}, this.buildRegistrationTargets(options));
|
|
81
|
+
await this.logger.info(`Event "${eventEnumMember}" registered in targets (use make:listener to scaffold a listener class)`);
|
|
82
|
+
}
|
|
83
|
+
async makeListener(listenerName, options) {
|
|
84
|
+
if (options.register) {
|
|
85
|
+
await this.makeEvent(options.event, {
|
|
86
|
+
...options,
|
|
87
|
+
path: undefined,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
const listenerPascal = new chemical_x_1.Str(listenerName).pascalCase().toString();
|
|
91
|
+
const eventBindingPascal = new chemical_x_1.Str(options.event).pascalCase().toString();
|
|
92
|
+
const listenerClassName = `${listenerPascal}EventListener`;
|
|
93
|
+
const containerEnumMember = listenerClassName;
|
|
94
|
+
const filePath = await this.stubCreator.create("listener", listenerClassName, options.path, {
|
|
95
|
+
"ListenerName:UCFirst": listenerPascal,
|
|
96
|
+
"ListenerName:LCFirst": new chemical_x_1.Str(listenerName).camelCase().toString(),
|
|
97
|
+
"EventBinding:UCFirst": eventBindingPascal,
|
|
98
|
+
"EventBinding:LCFirst": new chemical_x_1.Str(options.event).camelCase().toString(),
|
|
89
99
|
});
|
|
90
|
-
await
|
|
100
|
+
await (0, register_1.registerArtifact)({
|
|
101
|
+
kind: "listener",
|
|
102
|
+
name: listenerName,
|
|
103
|
+
listenerClassName,
|
|
104
|
+
containerEnumMember,
|
|
105
|
+
filePath,
|
|
106
|
+
}, this.buildRegistrationTargets(options));
|
|
107
|
+
await this.logger.info(`Listener created successfully in : ${filePath}`);
|
|
108
|
+
}
|
|
109
|
+
async makeConfig(configName, options) {
|
|
110
|
+
const validator = options.validator ?? "zod.string()";
|
|
111
|
+
await (0, register_1.registerArtifact)({
|
|
112
|
+
kind: "config",
|
|
113
|
+
name: configName,
|
|
114
|
+
configEnumMembers: [configName],
|
|
115
|
+
envExampleLines: [`\n# ${configName}`, `${configName}=""`],
|
|
116
|
+
configValidatorType: validator,
|
|
117
|
+
}, this.buildRegistrationTargets(options));
|
|
118
|
+
await this.logger.info(`Config "${configName}" registered successfully`);
|
|
91
119
|
}
|
|
92
|
-
/**
|
|
93
|
-
* Use this function to create exception file
|
|
94
|
-
*
|
|
95
|
-
* @param {string} exceptionName Exception name to make
|
|
96
|
-
* @param {MakeExceptionInterface} options Options command
|
|
97
|
-
* @returns {Promise<void>}
|
|
98
|
-
*/
|
|
99
120
|
async makeException(exceptionName, options) {
|
|
100
|
-
const
|
|
101
|
-
const exceptionUcFirst = new chemical_x_1.Str(exceptionName).ucFirst().toString();
|
|
121
|
+
const exceptionClassName = new chemical_x_1.Str(exceptionName).pascalCase().toString();
|
|
102
122
|
const exceptionType = options.isUnknown ? "UnknownException" : "Exception";
|
|
103
|
-
const filePath = await stubCreator.create("exception", `${
|
|
123
|
+
const filePath = await this.stubCreator.create("exception", `${exceptionClassName}${exceptionType}`, options.path, {
|
|
104
124
|
"ExceptionType": exceptionType,
|
|
105
|
-
"ExceptionName":
|
|
125
|
+
"ExceptionName": exceptionClassName,
|
|
106
126
|
});
|
|
107
127
|
await this.logger.info(`Exception created successfully in : ${filePath}`);
|
|
108
128
|
}
|
|
129
|
+
buildRegistrationTargets(options) {
|
|
130
|
+
const { register = false, registrationTargets, typeImport, typeImports, ...targets } = options;
|
|
131
|
+
return {
|
|
132
|
+
enabled: register,
|
|
133
|
+
...registrationTargets,
|
|
134
|
+
...targets,
|
|
135
|
+
typeImports: typeImports ?? typeImport ?? registrationTargets?.typeImports,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Runs optional selector, event, and handler file generation from make:page, forwarding `register` and
|
|
140
|
+
* `registrationTargets` so enums and barrels stay in sync with the parent command.
|
|
141
|
+
*
|
|
142
|
+
* @param {string} pageName Base page name (same as make:page first argument)
|
|
143
|
+
* @param {MakePageOptions} options Full make:page options including paths and registration targets
|
|
144
|
+
* @returns {Promise<void>}
|
|
145
|
+
*/
|
|
146
|
+
async scaffoldPageAddOns(pageName, options) {
|
|
147
|
+
if (options.selectors && options.selectorPath) {
|
|
148
|
+
await this.makeSelectors(pageName, {
|
|
149
|
+
...options,
|
|
150
|
+
path: options.selectorPath,
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
if (options.event) {
|
|
154
|
+
await this.makeEvent(options.event, {
|
|
155
|
+
...options,
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
if (options.listeners && options.listenersPath) {
|
|
159
|
+
const eventBinding = options.event ?? pageName;
|
|
160
|
+
await this.makeListener(pageName, {
|
|
161
|
+
...options,
|
|
162
|
+
path: options.listenersPath,
|
|
163
|
+
event: eventBinding,
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
if (options.handlerPath && (options.handlerFrom ?? options.handlerTo ?? options.handler)) {
|
|
167
|
+
await this.makeHandler(pageName, {
|
|
168
|
+
...options,
|
|
169
|
+
path: options.handlerPath,
|
|
170
|
+
handlerFrom: options.handlerFrom,
|
|
171
|
+
handlerTo: options.handlerTo,
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
}
|
|
109
175
|
}
|
|
110
176
|
exports.default = MakeFile;
|
|
111
177
|
//# 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,6 @@ export default class StubCreator {
|
|
|
24
23
|
* @returns {Promise<string>}
|
|
25
24
|
*/
|
|
26
25
|
getStubPath(name: string): Promise<string>;
|
|
26
|
+
private appendToIndexIfExists;
|
|
27
27
|
}
|
|
28
|
+
//# sourceMappingURL=StubCreator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StubCreator.d.ts","sourceRoot":"","sources":["../../src/Generators/StubCreator.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,OAAO,OAAO,WAAW;IAEf,MAAM,CACf,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAC3C,OAAO,CAAC,MAAM,CAAC;IAmBlB;;;;;;OAMG;IACU,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAS/F;;;;;;OAMG;IACU,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIjE;;;;;OAKG;IACU,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAQzC,qBAAqB;CAiBtC"}
|
|
@@ -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,16 @@
|
|
|
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;
|
|
16
|
+
//# sourceMappingURL=pascal-to-dot-lower.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pascal-to-dot-lower.d.ts","sourceRoot":"","sources":["../../src/Registrations/pascal-to-dot-lower.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAM/D;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAC3C,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,mBAAmB,EAAE,MAAM,GAC5B,MAAM,CAMR"}
|
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/Registrations/register.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAwSvE,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,kBAAkB,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BlH"}
|