electron-reactive-event-cli 1.0.29 → 1.0.31

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.
@@ -0,0 +1,5 @@
1
+ export type FSelectedInterfaces = {
2
+ Main: string | undefined;
3
+ Renderer: string | undefined;
4
+ };
5
+ //# sourceMappingURL=Select.Types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Select.Types.d.ts","sourceRoot":"","sources":["../Source/Select.Types.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,mBAAmB,GAC3B;IACI,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC,CAAC"}
@@ -0,0 +1,7 @@
1
+ /* File: Select.Types.ts
2
+ * Author: Gage Sorrell <gage@sorrell.sh>
3
+ * Copyright: (c) 2026 Gage Sorrell
4
+ * License: MIT
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=Select.Types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Select.Types.js","sourceRoot":"","sources":["../Source/Select.Types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -1,2 +1,9 @@
1
- export declare function PromptModule(ProjectRootDirectoryPathArgument: string): Promise<string>;
1
+ import type { FSelectedInterfaces } from "./Select.Types.js";
2
+ export declare function PromptModule(ProjectRootDirectoryPathArgument: string, SelectedInterfaces: FSelectedInterfaces | undefined): Promise<string>;
3
+ export type FRegistrarInterfaceNames = Readonly<{
4
+ Main: ReadonlyArray<string>;
5
+ Renderer: ReadonlyArray<string>;
6
+ }>;
7
+ export declare const GoBackChoice: string;
8
+ export declare function SelectInterfacesFromModule(Path: string, SelectedThusFar: FSelectedInterfaces | undefined): Promise<FSelectedInterfaces>;
2
9
  //# sourceMappingURL=Select.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../Source/Select.ts"],"names":[],"mappings":"AAwIA,wBAAsB,YAAY,CAC9B,gCAAgC,EAAE,MAAM,GACzC,OAAO,CAAC,MAAM,CAAC,CAgEjB"}
1
+ {"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../Source/Select.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAkI7D,wBAAsB,YAAY,CAC9B,gCAAgC,EAAE,MAAM,EACxC,kBAAkB,EAAE,mBAAmB,GAAG,SAAS,GACpD,OAAO,CAAC,MAAM,CAAC,CA2FjB;AAED,MAAM,MAAM,wBAAwB,GAAG,QAAQ,CAAC;IAC5C,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5B,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CACnC,CAAC,CAAC;AAuJH,eAAO,MAAM,YAAY,EAAE,MAA2C,CAAC;AAEvE,wBAAsB,0BAA0B,CAC5C,IAAI,EAAE,MAAM,EACZ,eAAe,EAAE,mBAAmB,GAAG,SAAS,GACjD,OAAO,CAAC,mBAAmB,CAAC,CA4E9B"}
@@ -3,112 +3,325 @@
3
3
  * Copyright: (c) 2026 Gage Sorrell
4
4
  * License: MIT
5
5
  */
6
+ /* eslint-disable no-console */
7
+ import { fileSelector } from "inquirer-file-selector";
8
+ import { basename, resolve } from "path";
6
9
  import { confirm, select } from "@inquirer/prompts";
7
- import { extname, relative, resolve } from "path";
8
- import { readdir, stat } from "fs/promises";
9
- function IsTypeScriptModuleFile(FileName) {
10
- const Extension = extname(FileName).toLowerCase();
11
- return Extension === ".ts" || Extension === ".tsx";
10
+ import { Code } from "@sorrell/cli-utilities";
11
+ import { stat } from "fs/promises";
12
+ import ts from "typescript";
13
+ // type FMenuSelection =
14
+ // | {
15
+ // Kind: "Parent";
16
+ // }
17
+ // | {
18
+ // Kind: "Directory";
19
+ // AbsolutePath: string;
20
+ // }
21
+ // | {
22
+ // Kind: "File";
23
+ // AbsolutePath: string;
24
+ // };
25
+ // type TChoice<ValueType> =
26
+ // {
27
+ // description?: string;
28
+ // disabled?: boolean | string;
29
+ // name: string;
30
+ // value: ValueType;
31
+ // };
32
+ // function IsTypeScriptModuleFile(FileName: string): boolean
33
+ // {
34
+ // const Extension: string = extname(FileName).toLowerCase();
35
+ // return Extension === ".ts" || Extension === ".tsx";
36
+ // }
37
+ // function GetDisplayDirectory(ProjectRootDirectoryPath: string, CurrentDirectoryPath: string): string
38
+ // {
39
+ // const RelativeDirectoryPath: string = relative(ProjectRootDirectoryPath, CurrentDirectoryPath);
40
+ // return RelativeDirectoryPath === "" ? "." : RelativeDirectoryPath;
41
+ // }
42
+ // async function ReadMenuChoices(
43
+ // ProjectRootDirectoryPath: string,
44
+ // CurrentDirectoryPath: string
45
+ // ): Promise<ReadonlyArray<TChoice<FMenuSelection>>>
46
+ // {
47
+ // type FDirectory = Dirent<string>;
48
+ // const DirectoryEntries: ReadonlyArray<FDirectory> =
49
+ // await readdir(CurrentDirectoryPath, { withFileTypes: true });
50
+ // const SortDirectories = (A: FDirectory, B: FDirectory): number =>
51
+ // {
52
+ // return A.name.localeCompare(
53
+ // B.name,
54
+ // undefined,
55
+ // {
56
+ // numeric: true,
57
+ // sensitivity: "base"
58
+ // });
59
+ // };
60
+ // const GetDirectoryChoice = (DirectoryEntry: FDirectory): TChoice<FMenuSelection> =>
61
+ // {
62
+ // const AbsolutePath: string = resolve(CurrentDirectoryPath, DirectoryEntry.name);
63
+ // return {
64
+ // description: "Open directory",
65
+ // name: `${DirectoryEntry.name}/`,
66
+ // value: {
67
+ // AbsolutePath,
68
+ // Kind: "Directory"
69
+ // }
70
+ // };
71
+ // };
72
+ // const IsDirectory = (DirectoryEntry: FDirectory): boolean =>
73
+ // {
74
+ // return DirectoryEntry.isDirectory();
75
+ // };
76
+ // const DirectoryChoices: Array<TChoice<FMenuSelection>> =
77
+ // DirectoryEntries
78
+ // .filter(IsDirectory)
79
+ // .sort(SortDirectories)
80
+ // .map(GetDirectoryChoice);
81
+ // const IsModule = (DirectoryEntry: FDirectory): boolean =>
82
+ // {
83
+ // return (
84
+ // DirectoryEntry.isFile() &&
85
+ // IsTypeScriptModuleFile(DirectoryEntry.name)
86
+ // );
87
+ // };
88
+ // const GetModuleChoice = (DirectoryEntry: FDirectory): TChoice<FMenuSelection> =>
89
+ // {
90
+ // const AbsolutePath: string = resolve(CurrentDirectoryPath, DirectoryEntry.name);
91
+ // return {
92
+ // description: "Select module",
93
+ // name: DirectoryEntry.name,
94
+ // value: {
95
+ // AbsolutePath,
96
+ // Kind: "File"
97
+ // }
98
+ // };
99
+ // };
100
+ // const FileChoices: Array<TChoice<FMenuSelection>> =
101
+ // DirectoryEntries
102
+ // .filter(IsModule)
103
+ // .sort(SortDirectories)
104
+ // .map(GetModuleChoice);
105
+ // const Choices: Array<TChoice<FMenuSelection>> = [ ];
106
+ // if (CurrentDirectoryPath !== ProjectRootDirectoryPath)
107
+ // {
108
+ // Choices.push({
109
+ // description: "Go to parent directory",
110
+ // name: "../",
111
+ // value: {
112
+ // Kind: "Parent"
113
+ // }
114
+ // });
115
+ // }
116
+ // Choices.push(...DirectoryChoices);
117
+ // Choices.push(...FileChoices);
118
+ // return Choices;
119
+ // }
120
+ export async function PromptModule(ProjectRootDirectoryPathArgument, SelectedInterfaces) {
121
+ const ProjectRootDirectoryPath = resolve(ProjectRootDirectoryPathArgument);
122
+ const ProjectRootDirectoryStats = await stat(ProjectRootDirectoryPath);
123
+ if (!ProjectRootDirectoryStats.isDirectory()) {
124
+ throw new Error(`The path "${ProjectRootDirectoryPath}" is not a directory.`);
125
+ }
126
+ const IsModuleOrDirectory = (InItem) => {
127
+ return (InItem.name.endsWith(".ts") ||
128
+ InItem.name.endsWith(".tsx") ||
129
+ InItem.isDirectory);
130
+ };
131
+ const InterfaceTypesRemaining = SelectedInterfaces?.Main === undefined
132
+ ? SelectedInterfaces?.Renderer === undefined
133
+ ? "one (or both) of your registrar interfaces"
134
+ : "your Main registrar interface"
135
+ : "your Renderer registrar interface";
136
+ console.log(`Choose the module that contains ${InterfaceTypesRemaining}.`);
137
+ const Selection = await fileSelector({
138
+ basePath: ProjectRootDirectoryPath,
139
+ filter: IsModuleOrDirectory,
140
+ loop: true,
141
+ message: "Select a file or directory:"
142
+ });
143
+ return Selection.path;
144
+ // let CurrentDirectoryPath: string = ProjectRootDirectoryPath;
145
+ // while (true)
146
+ // {
147
+ // const Choices: ReadonlyArray<TChoice<FMenuSelection>> = await ReadMenuChoices(
148
+ // ProjectRootDirectoryPath,
149
+ // CurrentDirectoryPath
150
+ // );
151
+ // if (Choices.length === 0)
152
+ // {
153
+ // throw new Error(
154
+ // `No subdirectories or TypeScript modules were found under "${ProjectRootDirectoryPath}".`
155
+ // );
156
+ // }
157
+ // const DisplayDirectory: string = GetDisplayDirectory(
158
+ // ProjectRootDirectoryPath,
159
+ // CurrentDirectoryPath
160
+ // );
161
+ // // const Selection: FMenuSelection = await select<FMenuSelection>({
162
+ // // choices: Choices,
163
+ // // loop: true,
164
+ // // message: `Select a TypeScript module (${ DisplayDirectory })`
165
+ // // });
166
+ // // switch (Selection.Kind)
167
+ // // {
168
+ // // case "Parent":
169
+ // // CurrentDirectoryPath = resolve(CurrentDirectoryPath, "..");
170
+ // // break;
171
+ // // case "Directory":
172
+ // // CurrentDirectoryPath = Selection.AbsolutePath;
173
+ // // break;
174
+ // // case "File":
175
+ // // {
176
+ // // const RelativeModulePath: string = relative(
177
+ // // ProjectRootDirectoryPath,
178
+ // // Selection.AbsolutePath
179
+ // // );
180
+ // // const Confirmed: boolean = await confirm({
181
+ // // message: `Use "${RelativeModulePath}"?`
182
+ // // });
183
+ // // if (Confirmed)
184
+ // // {
185
+ // // return Selection.AbsolutePath;
186
+ // // }
187
+ // // break;
188
+ // // }
189
+ // // }
190
+ // }
12
191
  }
13
- function GetDisplayDirectory(ProjectRootDirectoryPath, CurrentDirectoryPath) {
14
- const RelativeDirectoryPath = relative(ProjectRootDirectoryPath, CurrentDirectoryPath);
15
- return RelativeDirectoryPath === "" ? "." : RelativeDirectoryPath;
192
+ function NormalizePathForComparison(FilePath) {
193
+ const ResolvedPath = resolve(FilePath);
194
+ return ts.sys.useCaseSensitiveFileNames
195
+ ? ResolvedPath
196
+ : ResolvedPath.toLowerCase();
16
197
  }
17
- async function ReadMenuChoices(ProjectRootDirectoryPath, CurrentDirectoryPath) {
18
- const DirectoryEntries = await readdir(CurrentDirectoryPath, { withFileTypes: true });
19
- const SortDirectories = (A, B) => {
20
- return A.name.localeCompare(B.name, undefined, {
21
- numeric: true,
22
- sensitivity: "base"
23
- });
24
- };
25
- const GetDirectoryChoice = (DirectoryEntry) => {
26
- const AbsolutePath = resolve(CurrentDirectoryPath, DirectoryEntry.name);
27
- return {
28
- description: "Open directory",
29
- name: `${DirectoryEntry.name}/`,
30
- value: {
31
- AbsolutePath,
32
- Kind: "Directory"
33
- }
34
- };
35
- };
36
- const IsDirectory = (DirectoryEntry) => {
37
- return DirectoryEntry.isDirectory();
38
- };
39
- const DirectoryChoices = DirectoryEntries
40
- .filter(IsDirectory)
41
- .sort(SortDirectories)
42
- .map(GetDirectoryChoice);
43
- const IsModule = (DirectoryEntry) => {
44
- return (DirectoryEntry.isFile() &&
45
- IsTypeScriptModuleFile(DirectoryEntry.name));
46
- };
47
- const GetModuleChoice = (DirectoryEntry) => {
48
- const AbsolutePath = resolve(CurrentDirectoryPath, DirectoryEntry.name);
49
- return {
50
- description: "Select module",
51
- name: DirectoryEntry.name,
52
- value: {
53
- AbsolutePath,
54
- Kind: "File"
198
+ function GetSourceFileFromProgram(Program, ModulePath) {
199
+ const NormalizedModulePath = NormalizePathForComparison(ModulePath);
200
+ const SourceFile = Program
201
+ .getSourceFiles()
202
+ .find((CurrentSourceFile) => {
203
+ return NormalizePathForComparison(CurrentSourceFile.fileName) === NormalizedModulePath;
204
+ });
205
+ if (SourceFile === undefined) {
206
+ throw new Error(`Could not load source file "${ModulePath}".`);
207
+ }
208
+ return SourceFile;
209
+ }
210
+ function IsInterfaceExportedFromModule(Checker, SourceFile, InterfaceDeclaration) {
211
+ const ModuleSymbol = Checker.getSymbolAtLocation(SourceFile);
212
+ const InterfaceSymbol = Checker.getSymbolAtLocation(InterfaceDeclaration.name);
213
+ if (ModuleSymbol === undefined || InterfaceSymbol === undefined) {
214
+ return false;
215
+ }
216
+ const ExportSymbols = Checker.getExportsOfModule(ModuleSymbol);
217
+ return ExportSymbols.some((ExportSymbol) => {
218
+ const TargetSymbol = (ExportSymbol.flags & ts.SymbolFlags.Alias) !== 0
219
+ ? Checker.getAliasedSymbol(ExportSymbol)
220
+ : ExportSymbol;
221
+ return TargetSymbol === InterfaceSymbol;
222
+ });
223
+ }
224
+ function GetExtendedBaseInterfaceNames(Checker, InterfaceDeclaration) {
225
+ const BaseInterfaceNames = new Set();
226
+ const ExtendsClauses = InterfaceDeclaration.heritageClauses?.filter((HeritageClause) => {
227
+ return HeritageClause.token === ts.SyntaxKind.ExtendsKeyword;
228
+ }) ?? [];
229
+ for (const ExtendsClause of ExtendsClauses) {
230
+ for (const HeritageType of ExtendsClause.types) {
231
+ let Symbol = Checker.getSymbolAtLocation(HeritageType.expression);
232
+ if (Symbol === undefined) {
233
+ continue;
55
234
  }
56
- };
57
- };
58
- const FileChoices = DirectoryEntries
59
- .filter(IsModule)
60
- .sort(SortDirectories)
61
- .map(GetModuleChoice);
62
- const Choices = [];
63
- if (CurrentDirectoryPath !== ProjectRootDirectoryPath) {
64
- Choices.push({
65
- description: "Go to parent directory",
66
- name: "../",
67
- value: {
68
- Kind: "Parent"
235
+ if ((Symbol.flags & ts.SymbolFlags.Alias) !== 0) {
236
+ Symbol = Checker.getAliasedSymbol(Symbol);
69
237
  }
70
- });
238
+ BaseInterfaceNames.add(Symbol.getName());
239
+ }
71
240
  }
72
- Choices.push(...DirectoryChoices);
73
- Choices.push(...FileChoices);
74
- return Choices;
241
+ return BaseInterfaceNames;
75
242
  }
76
- export async function PromptModule(ProjectRootDirectoryPathArgument) {
77
- const ProjectRootDirectoryPath = resolve(ProjectRootDirectoryPathArgument);
78
- const ProjectRootDirectoryStats = await stat(ProjectRootDirectoryPath);
79
- if (!ProjectRootDirectoryStats.isDirectory()) {
80
- throw new Error(`The path "${ProjectRootDirectoryPath}" is not a directory.`);
243
+ function GetExportedRegistrarInterfaceNames(ModulePath) {
244
+ const ResolvedModulePath = resolve(ModulePath);
245
+ const Program = ts.createProgram([ResolvedModulePath], {
246
+ jsx: ts.JsxEmit.ReactJSX,
247
+ module: ts.ModuleKind.NodeNext,
248
+ moduleResolution: ts.ModuleResolutionKind.NodeNext,
249
+ noEmit: true,
250
+ skipLibCheck: true,
251
+ target: ts.ScriptTarget.ESNext
252
+ });
253
+ const Checker = Program.getTypeChecker();
254
+ const SourceFile = GetSourceFileFromProgram(Program, ResolvedModulePath);
255
+ const MainNames = new Set();
256
+ const RendererNames = new Set();
257
+ for (const Statement of SourceFile.statements) {
258
+ if (!ts.isInterfaceDeclaration(Statement)) {
259
+ continue;
260
+ }
261
+ if (!IsInterfaceExportedFromModule(Checker, SourceFile, Statement)) {
262
+ continue;
263
+ }
264
+ const BaseInterfaceNames = GetExtendedBaseInterfaceNames(Checker, Statement);
265
+ if (BaseInterfaceNames.has("IMainRegistrar")) {
266
+ MainNames.add(Statement.name.text);
267
+ }
268
+ if (BaseInterfaceNames.has("IRendererRegistrar")) {
269
+ RendererNames.add(Statement.name.text);
270
+ }
271
+ }
272
+ return {
273
+ Main: [...MainNames],
274
+ Renderer: [...RendererNames]
275
+ };
276
+ }
277
+ export const GoBackChoice = "Choose another module (go back).";
278
+ export async function SelectInterfacesFromModule(Path, SelectedThusFar) {
279
+ const Interfaces = await GetExportedRegistrarInterfaceNames(Path);
280
+ const GetChoices = (Interfaces) => {
281
+ return [...Interfaces, GoBackChoice];
282
+ };
283
+ const Out = {
284
+ Main: undefined,
285
+ Renderer: undefined
286
+ };
287
+ const NoneFound = Interfaces.Main.length === 0 && Interfaces.Renderer.length === 0;
288
+ if (NoneFound) {
289
+ return Out;
81
290
  }
82
- let CurrentDirectoryPath = ProjectRootDirectoryPath;
83
- while (true) {
84
- const Choices = await ReadMenuChoices(ProjectRootDirectoryPath, CurrentDirectoryPath);
85
- if (Choices.length === 0) {
86
- throw new Error(`No subdirectories or TypeScript modules were found under "${ProjectRootDirectoryPath}".`);
291
+ const GetSelection = async (Owner) => {
292
+ if (Interfaces[Owner].length > 1) {
293
+ const choices = [...GetChoices(Interfaces[Owner]), GoBackChoice];
294
+ /* eslint-disable-next-line @stylistic/max-len */
295
+ const message = `There were ${Interfaces[Owner].length} interfaces found in the module that ${Code("extend IMainRegistrar")}.\nSelect the interface that you would like to use.`;
296
+ const Selection = await select({
297
+ choices,
298
+ loop: true,
299
+ message
300
+ });
301
+ return Selection;
87
302
  }
88
- const DisplayDirectory = GetDisplayDirectory(ProjectRootDirectoryPath, CurrentDirectoryPath);
89
- const Selection = await select({
90
- choices: Choices,
91
- message: `Select a TypeScript module (${DisplayDirectory})`
92
- });
93
- switch (Selection.Kind) {
94
- case "Parent":
95
- CurrentDirectoryPath = resolve(CurrentDirectoryPath, "..");
96
- break;
97
- case "Directory":
98
- CurrentDirectoryPath = Selection.AbsolutePath;
99
- break;
100
- case "File":
101
- {
102
- const RelativeModulePath = relative(ProjectRootDirectoryPath, Selection.AbsolutePath);
103
- const Confirmed = await confirm({
104
- message: `Use "${RelativeModulePath}"?`
105
- });
106
- if (Confirmed) {
107
- return Selection.AbsolutePath;
108
- }
109
- break;
110
- }
303
+ else {
304
+ /* eslint-disable-next-line @stylistic/max-len */
305
+ const message = `The interface ${Code(Interfaces[Owner][0] || "")} is the only exported interface in ${Code(basename(Path))} that ${Code(`extends I${Owner}RegistrarBase`)}.\nUse this interface?`;
306
+ return (await confirm({ default: true, message }))
307
+ ? Interfaces[Owner][0]
308
+ : GoBackChoice;
111
309
  }
310
+ };
311
+ const PromptMainInterface = (Interfaces.Main.length > 0 &&
312
+ (SelectedThusFar === undefined ||
313
+ SelectedThusFar.Main === undefined ||
314
+ SelectedThusFar.Main === GoBackChoice));
315
+ if (PromptMainInterface) {
316
+ Out.Main = await GetSelection("Main");
317
+ }
318
+ const PromptRendererInterface = (Interfaces.Renderer.length > 0 &&
319
+ (SelectedThusFar === undefined ||
320
+ SelectedThusFar.Renderer === undefined ||
321
+ SelectedThusFar.Renderer === GoBackChoice));
322
+ if (PromptRendererInterface) {
323
+ Out.Renderer = await GetSelection("Renderer");
112
324
  }
325
+ return Out;
113
326
  }
114
327
  //# sourceMappingURL=Select.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","sourceRoot":"","sources":["../Source/Select.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Select.js","sourceRoot":"","sources":["../Source/Select.ts"],"names":[],"mappings":"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"}
@@ -6,10 +6,10 @@
6
6
  */
7
7
  /* eslint-disable no-console */
8
8
  import { GetPackageRootDirectory, GetSafeNewPath, TryAsync } from "@sorrell/utilities";
9
+ import { GoBackChoice, PromptModule, SelectInterfacesFromModule } from "./Select.js";
9
10
  import { basename, resolve } from "path";
10
11
  import { Code } from "@sorrell/cli-utilities";
11
12
  import { Command } from "commander";
12
- import { PromptModule } from "./Select.js";
13
13
  import { RunCommand } from "./Shared.js";
14
14
  import ora from "ora";
15
15
  import { writeFile } from "fs/promises";
@@ -48,7 +48,50 @@ async function WriteCliConfig(FileName, CliConfig) {
48
48
  }
49
49
  }
50
50
  async function SetupInteractive() {
51
- const SelectedModule = await PromptModule(await GetPackageRootDirectory());
51
+ let SelectedModule = undefined;
52
+ let SelectedInterfaces = undefined;
53
+ const HasSelectedEverything = (InInterfaces) => {
54
+ return (InInterfaces?.Main !== undefined &&
55
+ InInterfaces?.Renderer !== undefined &&
56
+ InInterfaces?.Main !== GoBackChoice &&
57
+ InInterfaces?.Renderer !== GoBackChoice);
58
+ };
59
+ while (!HasSelectedEverything(SelectedInterfaces)) {
60
+ const ThisSelectedModule = await PromptModule(await GetPackageRootDirectory(), SelectedInterfaces);
61
+ const TheseInterfaces = await SelectInterfacesFromModule(ThisSelectedModule, SelectedInterfaces);
62
+ if (TheseInterfaces.Main === undefined && TheseInterfaces.Renderer === undefined) {
63
+ /* eslint-disable-next-line @stylistic/max-len */
64
+ console.log(`No interfaces were found in this module that ${Code("extend IMainRegistrar")} or ${Code("IRendererRegistrar")}.\nPlease choose another module.`);
65
+ }
66
+ if (TheseInterfaces.Main !== undefined && TheseInterfaces.Main !== GoBackChoice) {
67
+ if (SelectedInterfaces === undefined) {
68
+ SelectedInterfaces =
69
+ {
70
+ Main: TheseInterfaces.Main,
71
+ Renderer: undefined
72
+ };
73
+ }
74
+ else {
75
+ SelectedInterfaces.Main = TheseInterfaces.Main;
76
+ }
77
+ }
78
+ if (TheseInterfaces.Renderer !== undefined && TheseInterfaces.Renderer !== GoBackChoice) {
79
+ if (SelectedInterfaces === undefined) {
80
+ SelectedInterfaces =
81
+ {
82
+ Main: undefined,
83
+ Renderer: TheseInterfaces.Renderer
84
+ };
85
+ }
86
+ else {
87
+ SelectedInterfaces.Renderer = TheseInterfaces.Renderer;
88
+ }
89
+ }
90
+ if (HasSelectedEverything(TheseInterfaces)) {
91
+ SelectedModule = ThisSelectedModule;
92
+ SelectedInterfaces = TheseInterfaces;
93
+ }
94
+ }
52
95
  console.log(`SelectedModule === ${SelectedModule}`);
53
96
  }
54
97
  async function SetupNoInteractive() {
@@ -1 +1 @@
1
- {"version":3,"file":"Setup.js","sourceRoot":"","sources":["../Source/Setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Setup.js","sourceRoot":"","sources":["../Source/Setup.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAEH,+BAA+B;AAE/B,OAAO,EAAE,uBAAuB,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACvF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACrF,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,SAAS,iBAAiB;IAEtB,OAAO;QACH,IAAI,EACJ;YACI,IAAI,EAAE,EAAE;YACR,IAAI,EAAE,EAAE;SACX;QACD,OAAO,EAAE,EAAE;QACX,QAAQ,EACR;YACI,IAAI,EAAE,EAAE;YACR,IAAI,EAAE,EAAE;SACX;KACJ,CAAC;AACN,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,QAAgB,EAAE,SAAqB;IAEjE,MAAM,OAAO,GAAQ,GAAG,CAAC;QACrB,IAAI,EAAE,WAAY,IAAI,CAAC,QAAQ,CAAE,sCAAsC;KAC1E,CAAC,CAAC,KAAK,EAAE,CAAC;IAEX,MAAM,aAAa,GAAW,MAAM,uBAAuB,EAAE,CAAC;IAE9D,MAAM,cAAc,GAAW,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAEhE,MAAM,UAAU,GAAW,MAAM,cAAc,CAAC,cAAc,CAAC,CAAC;IAEhE,MAAM,cAAc,GAAW,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAElE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC;IAExE,MAAM,kBAAkB,GAAW,QAAQ,CAAC,UAAU,CAAC,CAAC;IAExD,IAAI,KAAK,KAAK,SAAS,EACvB,CAAC;QACG,iDAAiD;QACjD,OAAO,CAAC,OAAO,CAAC,YAAa,IAAI,CAAC,UAAU,CAAE,4BAA4B,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,CAAC,2DAA4D,IAAI,CAAC,UAAU,CAAE,WAAW,CAAC,CAAC;IAC1G,CAAC;SAED,CAAC;QACG,iDAAiD;QACjD,OAAO,CAAC,IAAI,CAAC,YAAa,IAAI,CAAC,kBAAkB,CAAE,4BAA6B,IAAI,CAAC,aAAa,CAAE,uBAAuB,CAAC,CAAC;QAC7H,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACzD,CAAC;AACL,CAAC;AAED,KAAK,UAAU,gBAAgB;IAE3B,IAAI,cAAc,GAAuB,SAAS,CAAC;IACnD,IAAI,kBAAkB,GAAoC,SAAS,CAAC;IACpE,MAAM,qBAAqB,GAAG,CAAC,YAA6C,EAAW,EAAE;QAErF,OAAO,CACH,YAAY,EAAE,IAAI,KAAK,SAAS;YAChC,YAAY,EAAE,QAAQ,KAAK,SAAS;YACpC,YAAY,EAAE,IAAI,KAAK,YAAY;YACnC,YAAY,EAAE,QAAQ,KAAK,YAAY,CAC1C,CAAC;IACN,CAAC,CAAC;IAEF,OAAO,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,EACjD,CAAC;QACG,MAAM,kBAAkB,GAAW,MAAM,YAAY,CACjD,MAAM,uBAAuB,EAAE,EAC/B,kBAAkB,CACrB,CAAC;QAEF,MAAM,eAAe,GAAwB,MAAM,0BAA0B,CACzE,kBAAkB,EAClB,kBAAkB,CACrB,CAAC;QAEF,IAAI,eAAe,CAAC,IAAI,KAAK,SAAS,IAAI,eAAe,CAAC,QAAQ,KAAK,SAAS,EAChF,CAAC;YACG,iDAAiD;YACjD,OAAO,CAAC,GAAG,CAAC,gDAAiD,IAAI,CAAC,uBAAuB,CAAE,OAAQ,IAAI,CAAC,oBAAoB,CAAE,kCAAkC,CAAC,CAAC;QACtK,CAAC;QAED,IAAI,eAAe,CAAC,IAAI,KAAK,SAAS,IAAI,eAAe,CAAC,IAAI,KAAK,YAAY,EAC/E,CAAC;YACG,IAAI,kBAAkB,KAAK,SAAS,EACpC,CAAC;gBACG,kBAAkB;oBACd;wBACI,IAAI,EAAE,eAAe,CAAC,IAAI;wBAC1B,QAAQ,EAAE,SAAS;qBACtB,CAAC;YACV,CAAC;iBAED,CAAC;gBACG,kBAAkB,CAAC,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC;YACnD,CAAC;QACL,CAAC;QAED,IAAI,eAAe,CAAC,QAAQ,KAAK,SAAS,IAAI,eAAe,CAAC,QAAQ,KAAK,YAAY,EACvF,CAAC;YACG,IAAI,kBAAkB,KAAK,SAAS,EACpC,CAAC;gBACG,kBAAkB;oBACd;wBACI,IAAI,EAAE,SAAS;wBACf,QAAQ,EAAE,eAAe,CAAC,QAAQ;qBACrC,CAAC;YACV,CAAC;iBAED,CAAC;gBACG,kBAAkB,CAAC,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC;YAC3D,CAAC;QACL,CAAC;QAED,IAAI,qBAAqB,CAAC,eAAe,CAAC,EAC1C,CAAC;YACG,cAAc,GAAG,kBAAkB,CAAC;YACpC,kBAAkB,GAAG,eAAe,CAAC;QACzC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,sBAAuB,cAAe,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED,KAAK,UAAU,kBAAkB;IAE7B,MAAM,WAAW,GAAW,8BAA8B,CAAC;IAC3D,MAAM,cAAc,CAAC,WAAW,EAAE,iBAAiB,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED,KAAK,UAAU,KAAK;IAEhB,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,GAAkB,IAAI,CAAC,IAAI,EAAE,CAAC;IAElE,OAAO,CAAC,GAAG,CAAC,mBAAoB,aAAc,GAAG,CAAC,CAAC;IAEnD,IAAI,aAAa,EACjB,CAAC;QACG,MAAM,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,OAAO;IACX,CAAC;SAED,CAAC;QACG,MAAM,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,OAAO;IACX,CAAC;AACL,CAAC;AAED,KAAK,UAAU,IAAI;IAEf,MAAM,YAAY,GAAY,IAAI,OAAO,CAAC,OAAO,CAAC;QAC9C,iDAAiD;SAChD,WAAW,CAAC,+GAA+G,CAAC;SAC5H,MAAM,CAAC,kBAAkB,EAAE,2DAA2D,EAAE,IAAI,CAAC;SAC7F,MAAM,CAAC,KAAK,CAAC,CAAC;IAEnB,MAAM,UAAU,CAAC,YAAY,CAAC,CAAC;AACnC,CAAC;AAED,IAAI,EAAE,CAAC"}
@@ -3,6 +3,7 @@ export * from "./Register.js";
3
3
  export * from "./Register.Types.js";
4
4
  export * from "./Schema.Types.js";
5
5
  export * from "./Select.js";
6
+ export * from "./Select.Types.js";
6
7
  export * from "./Setup.js";
7
8
  export * from "./Shared.js";
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../Source/index.ts"],"names":[],"mappings":"AAMA,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../Source/index.ts"],"names":[],"mappings":"AAMA,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC"}
@@ -8,6 +8,7 @@ export * from "./Register.js";
8
8
  export * from "./Register.Types.js";
9
9
  export * from "./Schema.Types.js";
10
10
  export * from "./Select.js";
11
+ export * from "./Select.Types.js";
11
12
  export * from "./Setup.js";
12
13
  export * from "./Shared.js";
13
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../Source/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../Source/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC"}
package/ReadMe.md CHANGED
@@ -1,7 +1,7 @@
1
- # `create-electron-reactive-event`
1
+ # `electron-reactive-event-cli`
2
2
 
3
3
  This package provides commands that make it easy to integrate `electron-reactive-event` into your Electron/React app.
4
4
 
5
5
  ## Usage
6
6
 
7
- See the documentation in the [source for the `electron-reactive-event` package](../ElectronReactiveEvent/Documentation/Init.md).
7
+ See the documentation in the [source for the `electron-reactive-event` package](../ElectronReactiveEvent/Documentation/Cli.md).
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "setup": "./Distribution/Setup.js"
5
5
  },
6
6
  "name": "electron-reactive-event-cli",
7
- "version": "1.0.29",
7
+ "version": "1.0.31",
8
8
  "description": "Helper package to integrate electron-reactive-event in your Electron- and React-based app.",
9
9
  "keywords": [
10
10
  "electron",
@@ -39,7 +39,6 @@
39
39
  "devDependencies": {
40
40
  "@types/node": "^25.5.0",
41
41
  "@typescript/native-preview": "^7.0.0-dev.20260326.1",
42
- "typescript": "^5.9.3",
43
42
  "typescript-json-schema": "^0.67.1"
44
43
  },
45
44
  "dependencies": {
@@ -50,6 +49,8 @@
50
49
  "cli-table3": "^0.6.5",
51
50
  "clipboardy": "^5.3.1",
52
51
  "commander": "^14.0.3",
53
- "ora": "^9.3.0"
52
+ "inquirer-file-selector": "^1.0.1",
53
+ "ora": "^9.3.0",
54
+ "typescript": "^6.0.2"
54
55
  }
55
56
  }