@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.
@@ -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 {MakePageInterface} options Options command
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
- if (options.selectors && options.selectorPath) {
28
- await this.makeSelectors(pageName, { path: options.selectorPath });
29
- }
30
- if (options.event && options.eventPath) {
31
- await this.makeEvent(pageName, { path: options.eventPath });
32
- }
33
- if (options.handlerPath && (options.handlerFrom ?? options.handlerTo)) {
34
- await this.makeHandler(pageName, {
35
- path: options.handlerPath,
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 filePath = await stubCreator.create("handler", handlerClassName, options.path, {
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 filePath = await stubCreator.create("event", `${pageUcFirst}EventListener`, options.path, {
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
- * 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
- */
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":"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"}
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 Filesystem = __importStar(require("node:fs"));
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, node_util_1.promisify)(this.filesystem.mkdir)(pathDestination, { recursive: true });
53
- await (0, node_util_1.promisify)(this.filesystem.writeFile)(destination, content, {});
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
- if (await new chemical_x_1.File(indexFile).exists()) {
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, node_util_1.promisify)(this.filesystem.readFile)(`${pathStub}/${name}.stub`);
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAAsC;AACtC,0DAAiC;AACjC,yCAAsC;AAEtC,gDAA4C;AAC5C,8CAA0D;AAE1D,MAAqB,WAAW;IAEX,UAAU,GAAsB,UAAU,CAAC;IAErD,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,qBAAS,EAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7E,MAAM,IAAA,qBAAS,EAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QAErE,MAAM,SAAS,GAAG,GAAG,eAAe,WAAW,CAAC;QAEhD,IAAI,MAAM,IAAI,iBAAI,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YACrC,MAAM,IAAA,qBAAS,EAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE,sBAAsB,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;QACjG,CAAC;QAED,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,qBAAS,EAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,GAAG,QAAQ,IAAI,IAAI,OAAO,CAAC,CAAC;QAEnF,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;CAEJ;AAvED,8BAuEC"}
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,2 @@
1
+ import type { ArtifactDescriptor, RegistrationTargets } from "./types";
2
+ export declare function registerArtifact(descriptor: ArtifactDescriptor, targets: RegistrationTargets): Promise<void>;
@@ -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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"}