electron-reactive-event-cli 1.0.61 → 1.0.62
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/Distribution/Command.d.ts +12 -0
- package/Distribution/Command.d.ts.map +1 -0
- package/Distribution/Command.js +99 -0
- package/Distribution/Command.js.map +1 -0
- package/Distribution/Config.Types.d.ts +27 -0
- package/Distribution/Config.Types.d.ts.map +1 -0
- package/Distribution/Config.Types.js +8 -0
- package/Distribution/Config.Types.js.map +1 -0
- package/Distribution/Config.d.ts +8 -0
- package/Distribution/Config.d.ts.map +1 -0
- package/Distribution/Config.js +104 -0
- package/Distribution/Config.js.map +1 -0
- package/Distribution/DeclareEvents.Command.d.ts +2 -0
- package/Distribution/DeclareEvents.Command.d.ts.map +1 -0
- package/Distribution/DeclareEvents.Command.js +16 -0
- package/Distribution/DeclareEvents.Command.js.map +1 -0
- package/Distribution/DeclareEvents.Types.d.ts +9 -0
- package/Distribution/DeclareEvents.Types.d.ts.map +1 -0
- package/Distribution/DeclareEvents.Types.js +8 -0
- package/Distribution/DeclareEvents.Types.js.map +1 -0
- package/Distribution/DeclareEvents.d.ts +2 -0
- package/Distribution/DeclareEvents.d.ts.map +1 -0
- package/Distribution/DeclareEvents.js +178 -0
- package/Distribution/DeclareEvents.js.map +1 -0
- package/Distribution/GenerateScopedTypes.Command.d.ts +2 -0
- package/Distribution/GenerateScopedTypes.Command.d.ts.map +1 -0
- package/Distribution/GenerateScopedTypes.Command.js +32 -0
- package/Distribution/GenerateScopedTypes.Command.js.map +1 -0
- package/Distribution/GenerateScopedTypes.Types.d.ts +19 -0
- package/Distribution/GenerateScopedTypes.Types.d.ts.map +1 -0
- package/Distribution/GenerateScopedTypes.Types.js +8 -0
- package/Distribution/GenerateScopedTypes.Types.js.map +1 -0
- package/Distribution/GenerateScopedTypes.d.ts +9 -0
- package/Distribution/GenerateScopedTypes.d.ts.map +1 -0
- package/Distribution/GenerateScopedTypes.js +215 -0
- package/Distribution/GenerateScopedTypes.js.map +1 -0
- package/Distribution/Setup.d.ts +0 -1
- package/Distribution/Setup.js +32 -2
- package/Distribution/Setup.js.map +1 -1
- package/Distribution/WriteTypesToClipboard.d.ts +2 -0
- package/Distribution/WriteTypesToClipboard.d.ts.map +1 -0
- package/Distribution/WriteTypesToClipboard.js +190 -0
- package/Distribution/WriteTypesToClipboard.js.map +1 -0
- package/package.json +43 -54
- package/Distribution/Initialize.Types.d.ts +0 -4
- package/Distribution/Initialize.Types.d.ts.map +0 -1
- package/Distribution/Initialize.Types.js +0 -7
- package/Distribution/Initialize.Types.js.map +0 -1
- package/Distribution/Initialize.d.ts +0 -2
- package/Distribution/Initialize.d.ts.map +0 -1
- package/Distribution/Initialize.js +0 -288
- package/Distribution/Initialize.js.map +0 -1
- package/Distribution/Main.d.ts +0 -2
- package/Distribution/Main.d.ts.map +0 -1
- package/Distribution/Main.js +0 -8
- package/Distribution/Main.js.map +0 -1
- package/Distribution/Provider.d.ts +0 -2
- package/Distribution/Provider.d.ts.map +0 -1
- package/Distribution/Provider.js +0 -8
- package/Distribution/Provider.js.map +0 -1
- package/Distribution/Register/RegisterCommand.Types.d.ts +0 -27
- package/Distribution/Register/RegisterCommand.Types.d.ts.map +0 -1
- package/Distribution/Register/RegisterCommand.Types.js +0 -7
- package/Distribution/Register/RegisterCommand.Types.js.map +0 -1
- package/Distribution/Register/RegisterCommand.d.ts +0 -3
- package/Distribution/Register/RegisterCommand.d.ts.map +0 -1
- package/Distribution/Register/RegisterCommand.js +0 -403
- package/Distribution/Register/RegisterCommand.js.map +0 -1
- package/Distribution/Register/RegisterCommandBin.d.ts +0 -2
- package/Distribution/Register/RegisterCommandBin.d.ts.map +0 -1
- package/Distribution/Register/RegisterCommandBin.js +0 -8
- package/Distribution/Register/RegisterCommandBin.js.map +0 -1
- package/Distribution/Register/index.d.ts +0 -2
- package/Distribution/Register/index.d.ts.map +0 -1
- package/Distribution/Register/index.js +0 -7
- package/Distribution/Register/index.js.map +0 -1
- package/Distribution/Register.Types.d.ts +0 -2
- package/Distribution/Register.Types.d.ts.map +0 -1
- package/Distribution/Register.Types.js +0 -2
- package/Distribution/Register.Types.js.map +0 -1
- package/Distribution/Register.d.ts +0 -3
- package/Distribution/Register.d.ts.map +0 -1
- package/Distribution/Register.js +0 -19
- package/Distribution/Register.js.map +0 -1
- package/Distribution/Schema.Types.d.ts +0 -19
- package/Distribution/Schema.Types.d.ts.map +0 -1
- package/Distribution/Schema.Types.js +0 -10
- package/Distribution/Schema.Types.js.map +0 -1
- package/Distribution/Select.Types.d.ts +0 -2
- package/Distribution/Select.Types.d.ts.map +0 -1
- package/Distribution/Select.Types.js +0 -7
- package/Distribution/Select.Types.js.map +0 -1
- package/Distribution/Select.d.ts +0 -2
- package/Distribution/Select.d.ts.map +0 -1
- package/Distribution/Select.js +0 -7
- package/Distribution/Select.js.map +0 -1
- package/Distribution/Setup/Prompt.Types.d.ts +0 -7
- package/Distribution/Setup/Prompt.Types.d.ts.map +0 -1
- package/Distribution/Setup/Prompt.Types.js +0 -7
- package/Distribution/Setup/Prompt.Types.js.map +0 -1
- package/Distribution/Setup/Prompt.d.ts +0 -10
- package/Distribution/Setup/Prompt.d.ts.map +0 -1
- package/Distribution/Setup/Prompt.js +0 -220
- package/Distribution/Setup/Prompt.js.map +0 -1
- package/Distribution/Setup/SetupCommand.Types.d.ts +0 -5
- package/Distribution/Setup/SetupCommand.Types.d.ts.map +0 -1
- package/Distribution/Setup/SetupCommand.Types.js +0 -7
- package/Distribution/Setup/SetupCommand.Types.js.map +0 -1
- package/Distribution/Setup/SetupCommand.d.ts +0 -3
- package/Distribution/Setup/SetupCommand.d.ts.map +0 -1
- package/Distribution/Setup/SetupCommand.js +0 -248
- package/Distribution/Setup/SetupCommand.js.map +0 -1
- package/Distribution/Setup/TsConfig.Types.d.ts +0 -10
- package/Distribution/Setup/TsConfig.Types.d.ts.map +0 -1
- package/Distribution/Setup/TsConfig.Types.js +0 -7
- package/Distribution/Setup/TsConfig.Types.js.map +0 -1
- package/Distribution/Setup/TsConfig.d.ts +0 -8
- package/Distribution/Setup/TsConfig.d.ts.map +0 -1
- package/Distribution/Setup/TsConfig.js +0 -67
- package/Distribution/Setup/TsConfig.js.map +0 -1
- package/Distribution/Setup/index.d.ts +0 -6
- package/Distribution/Setup/index.d.ts.map +0 -1
- package/Distribution/Setup/index.js +0 -11
- package/Distribution/Setup/index.js.map +0 -1
- package/Distribution/Shared.d.ts +0 -2
- package/Distribution/Shared.d.ts.map +0 -1
- package/Distribution/Shared.js +0 -7
- package/Distribution/Shared.js.map +0 -1
- package/Distribution/Utility.Types.d.ts +0 -2
- package/Distribution/Utility.Types.d.ts.map +0 -1
- package/Distribution/Utility.Types.js +0 -7
- package/Distribution/Utility.Types.js.map +0 -1
- package/Distribution/Utility.d.ts +0 -3
- package/Distribution/Utility.d.ts.map +0 -1
- package/Distribution/Utility.js +0 -17
- package/Distribution/Utility.js.map +0 -1
- package/Distribution/index.d.ts +0 -8
- package/Distribution/index.d.ts.map +0 -1
- package/Distribution/index.js +0 -13
- package/Distribution/index.js.map +0 -1
- package/License.md +0 -21
- package/ReadMe.md +0 -7
|
@@ -1,220 +0,0 @@
|
|
|
1
|
-
/* File: Prompt.ts
|
|
2
|
-
* Author: Gage Sorrell <gage@sorrell.sh>
|
|
3
|
-
* Copyright: (c) 2026 Gage Sorrell
|
|
4
|
-
* License: MIT
|
|
5
|
-
*/
|
|
6
|
-
/* eslint-disable no-console */
|
|
7
|
-
import { Code, Confirm, FileSelector } from "@sorrell/cli-utilities";
|
|
8
|
-
import { DefaultConfigFileName } from "../index.js";
|
|
9
|
-
import { FormatDiagnostics, GetMatchingInterfacesInSourceFile, GetTsConfigPath, IsSearchableProjectSourceFile } from "./index.js";
|
|
10
|
-
import { constants as FileSystemConstants, access } from "fs/promises";
|
|
11
|
-
import { GetPackageRootDirectory, GetSafeNewPath, IsValidFileName } from "@sorrell/utilities";
|
|
12
|
-
import TypeScript from "typescript";
|
|
13
|
-
import { basename, dirname, normalize, relative, resolve } from "path";
|
|
14
|
-
import { input, select } from "@inquirer/prompts";
|
|
15
|
-
import ora from "ora";
|
|
16
|
-
import Chalk from "chalk";
|
|
17
|
-
async function GetRegistrarModules(InterfaceName) {
|
|
18
|
-
const ProjectRootDirectoryPathResolved = resolve(await GetPackageRootDirectory());
|
|
19
|
-
const TsConfigPath = await GetTsConfigPath();
|
|
20
|
-
await access(TsConfigPath, FileSystemConstants.F_OK);
|
|
21
|
-
const ConfigFileResult = TypeScript.readConfigFile(TsConfigPath, TypeScript.sys.readFile);
|
|
22
|
-
if (ConfigFileResult.error !== undefined) {
|
|
23
|
-
throw new Error(`Failed to read "${TsConfigPath}".\n${FormatDiagnostics([ConfigFileResult.error])}`);
|
|
24
|
-
}
|
|
25
|
-
const ParsedConfig = TypeScript.parseJsonConfigFileContent(ConfigFileResult.config, TypeScript.sys, ProjectRootDirectoryPathResolved, undefined, TsConfigPath);
|
|
26
|
-
if (ParsedConfig.errors.length > 0) {
|
|
27
|
-
throw new Error(`Failed to parse "${TsConfigPath}".\n${FormatDiagnostics(ParsedConfig.errors)}`);
|
|
28
|
-
}
|
|
29
|
-
const projectReferences = ParsedConfig.projectReferences || [];
|
|
30
|
-
const Program = TypeScript.createProgram({
|
|
31
|
-
options: ParsedConfig.options,
|
|
32
|
-
projectReferences,
|
|
33
|
-
rootNames: ParsedConfig.fileNames
|
|
34
|
-
});
|
|
35
|
-
const Matches = [];
|
|
36
|
-
for (const RootFilePath of ParsedConfig.fileNames) {
|
|
37
|
-
const SourceFile = Program.getSourceFile(RootFilePath);
|
|
38
|
-
if (SourceFile === undefined) {
|
|
39
|
-
continue;
|
|
40
|
-
}
|
|
41
|
-
if (!IsSearchableProjectSourceFile(SourceFile)) {
|
|
42
|
-
continue;
|
|
43
|
-
}
|
|
44
|
-
const MatchingInterfaceNames = GetMatchingInterfacesInSourceFile(SourceFile, InterfaceName);
|
|
45
|
-
for (const MatchingInterfaceName of MatchingInterfaceNames) {
|
|
46
|
-
Matches.push({
|
|
47
|
-
Name: MatchingInterfaceName,
|
|
48
|
-
Path: SourceFile.fileName
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
return Matches;
|
|
53
|
-
}
|
|
54
|
-
export async function SelectRegistrarInterface(RegistrarBase) {
|
|
55
|
-
const RegistrarBaseFormatted = Code(RegistrarBase);
|
|
56
|
-
const Out = { Name: "", Path: "" };
|
|
57
|
-
while (true) {
|
|
58
|
-
const text = `Searching for modules that contain an interface that extends ${RegistrarBaseFormatted}...`;
|
|
59
|
-
const Ora = ora({ spinner: "point", text }).start();
|
|
60
|
-
const RegistrarModules = await GetRegistrarModules(RegistrarBase);
|
|
61
|
-
if (RegistrarModules.length > 0) {
|
|
62
|
-
Ora.succeed();
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
Ora.fail();
|
|
66
|
-
}
|
|
67
|
-
if (RegistrarModules.length === 0) {
|
|
68
|
-
const NoModulesFoundMessage = "There were no modules found in your project that " +
|
|
69
|
-
`define an interface that extends ${RegistrarBaseFormatted}.\n\nTo fix this, please ` +
|
|
70
|
-
"create a new module anywhere in your project (that is included by your " +
|
|
71
|
-
`${Code("tsconfig.json")}), then hit ${Code("Return")} for ` +
|
|
72
|
-
`${Code("electron-reactive-event-cli")} to search again.`;
|
|
73
|
-
console.log(NoModulesFoundMessage);
|
|
74
|
-
const Result = await Confirm({
|
|
75
|
-
default: true,
|
|
76
|
-
message: "Has the desired module been created?"
|
|
77
|
-
});
|
|
78
|
-
if (Result) {
|
|
79
|
-
continue;
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
process.exit(1);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
else if (RegistrarModules.length === 1) {
|
|
86
|
-
const InterfaceName = RegistrarModules[0]?.Name || "";
|
|
87
|
-
const InterfaceNameFormatted = Code(InterfaceName);
|
|
88
|
-
const ModulePath = RegistrarModules[0]?.Path || "";
|
|
89
|
-
const ModulePathFormatted = Code("./" + relative(await GetPackageRootDirectory(), ModulePath).replaceAll("\\", "/"));
|
|
90
|
-
const ModuleName = basename(RegistrarModules[0]?.Path || "");
|
|
91
|
-
const ModuleNameFormatted = Code(ModuleName);
|
|
92
|
-
const ConfirmationMessage = `The interface ${InterfaceNameFormatted} was found in module ` +
|
|
93
|
-
`${ModuleNameFormatted} (the full path is ${ModulePathFormatted}).\n`;
|
|
94
|
-
console.log(ConfirmationMessage);
|
|
95
|
-
const Confirms = await Confirm({
|
|
96
|
-
default: true,
|
|
97
|
-
message: "Use this interface?"
|
|
98
|
-
});
|
|
99
|
-
if (Confirms) {
|
|
100
|
-
Out.Name = InterfaceName;
|
|
101
|
-
Out.Path = ModulePath;
|
|
102
|
-
break;
|
|
103
|
-
}
|
|
104
|
-
else {
|
|
105
|
-
continue;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
else // RegistrarModules.length > 1
|
|
109
|
-
{
|
|
110
|
-
const ManyFoundMessage = `There were ${RegistrarModules.length} interfaces found that extend ` +
|
|
111
|
-
`${RegistrarBaseFormatted}. Their names and the paths in which they ` +
|
|
112
|
-
"reside are given below.";
|
|
113
|
-
console.log(ManyFoundMessage);
|
|
114
|
-
const InterfaceDefinitionToString = (Definition) => {
|
|
115
|
-
return `${Code(Definition.Name)} (${Code(Definition.Path)})`;
|
|
116
|
-
};
|
|
117
|
-
const choices = RegistrarModules.map(InterfaceDefinitionToString);
|
|
118
|
-
const Choice = await select({
|
|
119
|
-
choices,
|
|
120
|
-
loop: true,
|
|
121
|
-
message: "Which interface would you like to use?"
|
|
122
|
-
});
|
|
123
|
-
const Selection = RegistrarModules[choices.indexOf(Choice)];
|
|
124
|
-
if (Selection === undefined) {
|
|
125
|
-
console.error("Despite selecting a module definition, inquirer returned undefined.");
|
|
126
|
-
process.exit(1);
|
|
127
|
-
}
|
|
128
|
-
Out.Name = Selection.Name;
|
|
129
|
-
Out.Path = Selection.Path;
|
|
130
|
-
break;
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
return Out;
|
|
134
|
-
}
|
|
135
|
-
export async function SelectDirectory(Message) {
|
|
136
|
-
const filter = (In) => {
|
|
137
|
-
return !In.name.includes("node_modules");
|
|
138
|
-
};
|
|
139
|
-
const Config = {
|
|
140
|
-
basePath: await GetPackageRootDirectory(),
|
|
141
|
-
filter,
|
|
142
|
-
message: Message,
|
|
143
|
-
theme: {
|
|
144
|
-
labels: {
|
|
145
|
-
hints: {
|
|
146
|
-
confirm: "{{confirm}} to place the new module here."
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
},
|
|
150
|
-
type: "directory"
|
|
151
|
-
};
|
|
152
|
-
return await FileSelector(Config);
|
|
153
|
-
}
|
|
154
|
-
export async function SelectBuiltModulePath() {
|
|
155
|
-
const Message = `The ${Code("register")} command provided by this package will register your ` +
|
|
156
|
-
"event declaration types for you, by maintaining a module in your project which adds the " +
|
|
157
|
-
"declaration types to your registrar interfaces. The module does not need to be imported " +
|
|
158
|
-
`anywhere, it just needs to be somewhere that is recognized by your ${Code("tsconfig.json")}.`;
|
|
159
|
-
console.log(Message);
|
|
160
|
-
const PromptMessage = "Please choose the directory where you want the module to reside.";
|
|
161
|
-
const SelectedPath = (await SelectDirectory(PromptMessage)).path;
|
|
162
|
-
return SelectedPath;
|
|
163
|
-
}
|
|
164
|
-
export async function SelectConfigDirectoryPath() {
|
|
165
|
-
const WarningMessage = "If you choose a directory that is not the root of your project, then the path to " +
|
|
166
|
-
`the config file will be written to your ${Code("package.json")} file via the ` +
|
|
167
|
-
`${Code("config")} property (${Chalk.italic("i.e.")}, ` +
|
|
168
|
-
`${Code("config.electron-reactive-event-cli")}).`;
|
|
169
|
-
const Message = `The ${Code("register")} command will need to know what choices you have selected in ` +
|
|
170
|
-
`this wizard. A JSON file will be saved to your project for the ${Code("register")} ` +
|
|
171
|
-
`command to read from later.\n\n${FormatWarning(WarningMessage)}\n`;
|
|
172
|
-
console.log(Message);
|
|
173
|
-
const PromptMessage = "Please choose the directory where you want the config file to reside.";
|
|
174
|
-
const SelectedPath = (await SelectDirectory(PromptMessage)).path;
|
|
175
|
-
return SelectedPath;
|
|
176
|
-
}
|
|
177
|
-
function FormatWarning(Message) {
|
|
178
|
-
return `⚠️ ${Chalk.yellow("Note:")} ${Message}`;
|
|
179
|
-
}
|
|
180
|
-
export async function IsPackageJsonConfigNeeded(ConfigDirectoryPath, ConfigFileName = undefined) {
|
|
181
|
-
const IsFileNameCustom = (ConfigFileName !== undefined &&
|
|
182
|
-
ConfigFileName !== DefaultConfigFileName);
|
|
183
|
-
const IsInRootDirectory = normalize(ConfigDirectoryPath) !== normalize(await GetPackageRootDirectory());
|
|
184
|
-
return IsFileNameCustom || IsInRootDirectory;
|
|
185
|
-
}
|
|
186
|
-
export async function SelectConfigName(SelectedDirectory) {
|
|
187
|
-
const AlreadyNeedsPackageJsonConfig = await IsPackageJsonConfigNeeded(SelectedDirectory);
|
|
188
|
-
const WarningMessage = "If you choose a name that is not the default, then the path to the config file will be " +
|
|
189
|
-
`written to your ${Code("package.json")} file via the ${Code("config")} property ` +
|
|
190
|
-
`(${Chalk.italic("i.e.")}, ${Code("config.electron-reactive-event-cli")}).`;
|
|
191
|
-
const WarningMessageFormatted = `\n\n${FormatWarning(WarningMessage)}`;
|
|
192
|
-
const Message = "Please choose the name that the config file will have. " +
|
|
193
|
-
`${AlreadyNeedsPackageJsonConfig ? "" : WarningMessageFormatted}\n`;
|
|
194
|
-
console.log(Message);
|
|
195
|
-
let HasTriedOnce = false;
|
|
196
|
-
while (true) {
|
|
197
|
-
const message = HasTriedOnce
|
|
198
|
-
? "Please choose a valid JSON file name."
|
|
199
|
-
: "Please choose the name that the config file will have.";
|
|
200
|
-
const FileName = await input({
|
|
201
|
-
default: DefaultConfigFileName,
|
|
202
|
-
message
|
|
203
|
-
});
|
|
204
|
-
HasTriedOnce = true;
|
|
205
|
-
const JsonExtension = ".json";
|
|
206
|
-
const SafeFilePath = await GetSafeNewPath(resolve(SelectedDirectory, FileName));
|
|
207
|
-
const IsFileNameValid = await IsValidFileName(dirname(SafeFilePath), basename(SafeFilePath), false, JsonExtension);
|
|
208
|
-
if (IsFileNameValid) {
|
|
209
|
-
return FileName;
|
|
210
|
-
}
|
|
211
|
-
else {
|
|
212
|
-
const IsExtensionBad = !FileName.endsWith(JsonExtension);
|
|
213
|
-
const ExtensionMessage = ` The name must end with ${Code(JsonExtension)}.`;
|
|
214
|
-
const Message = `The name ${FileName} is not a valid JSON file name.` +
|
|
215
|
-
`${IsExtensionBad ? ExtensionMessage : ""}`;
|
|
216
|
-
console.log(Message);
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
//# sourceMappingURL=Prompt.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Prompt.js","sourceRoot":"","sources":["../../Source/Setup/Prompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SetupCommand.Types.d.ts","sourceRoot":"","sources":["../../Source/Setup/SetupCommand.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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SetupCommand.Types.js","sourceRoot":"","sources":["../../Source/Setup/SetupCommand.Types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SetupCommand.d.ts","sourceRoot":"","sources":["../../Source/Setup/SetupCommand.ts"],"names":[],"mappings":""}
|
|
@@ -1,248 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/* File: SetupCommand.ts
|
|
3
|
-
* Author: Gage Sorrell <gage@sorrell.sh>
|
|
4
|
-
* Copyright: (c) 2026 Gage Sorrell
|
|
5
|
-
* License: MIT
|
|
6
|
-
*/
|
|
7
|
-
/* eslint-disable no-console */
|
|
8
|
-
import { Code, Confirm } from "@sorrell/cli-utilities";
|
|
9
|
-
import { DefaultConfigFileName, RunCommand } from "../index.js";
|
|
10
|
-
import { IsPackageJsonConfigNeeded, SelectBuiltModulePath, SelectConfigDirectoryPath, SelectConfigName, SelectRegistrarInterface } from "./index.js";
|
|
11
|
-
import { GetPackageRootDirectory, GetSafeNewPath, Try } from "@sorrell/utilities";
|
|
12
|
-
import { basename, dirname, extname, relative, resolve, sep } from "path";
|
|
13
|
-
import { mkdir, readFile, writeFile } from "fs/promises";
|
|
14
|
-
import ora from "ora";
|
|
15
|
-
import Chalk from "chalk";
|
|
16
|
-
import { Command } from "commander";
|
|
17
|
-
import { Register } from "../Register/RegisterCommand.js";
|
|
18
|
-
function GetEmptyCliConfig() {
|
|
19
|
-
return {
|
|
20
|
-
main: {
|
|
21
|
-
name: "",
|
|
22
|
-
path: ""
|
|
23
|
-
},
|
|
24
|
-
outPath: "",
|
|
25
|
-
renderer: {
|
|
26
|
-
name: "",
|
|
27
|
-
path: ""
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
async function WriteCliConfig(FileName, CliConfig) {
|
|
32
|
-
const Ora = ora({
|
|
33
|
-
spinner: "point",
|
|
34
|
-
text: `Writing ${Code(FileName)} to your package's root directory...`
|
|
35
|
-
});
|
|
36
|
-
const RootDirectory = await GetPackageRootDirectory();
|
|
37
|
-
const ConfigPathBase = resolve(RootDirectory, FileName);
|
|
38
|
-
const ConfigPath = await GetSafeNewPath(ConfigPathBase);
|
|
39
|
-
const ConfigContents = JSON.stringify(CliConfig, null, 4);
|
|
40
|
-
const { Error } = await Try(writeFile(ConfigPath, ConfigContents));
|
|
41
|
-
const ConfigPathFileName = basename(ConfigPath);
|
|
42
|
-
if (Error === undefined) {
|
|
43
|
-
/* eslint-disable-next-line @stylistic/max-len */
|
|
44
|
-
Ora.succeed(`The file ${Code(ConfigPath)} was written successfully!`);
|
|
45
|
-
console.log(`Please open the file and fill out its fields to use the ${Code("register")} command.`);
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
/* eslint-disable-next-line @stylistic/max-len */
|
|
49
|
-
Ora.fail(`The file ${Code(ConfigPathFileName)} could not be written in ${Code(RootDirectory)}. Here is the error:`);
|
|
50
|
-
console.error(JSON.stringify(Error, null, 4) + "\n");
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
function GetOutputModuleSpecifierExtension(FilePath) {
|
|
54
|
-
const Extension = extname(FilePath).toLowerCase();
|
|
55
|
-
switch (Extension) {
|
|
56
|
-
case ".ts":
|
|
57
|
-
case ".tsx":
|
|
58
|
-
{
|
|
59
|
-
return ".js";
|
|
60
|
-
}
|
|
61
|
-
case ".mts":
|
|
62
|
-
{
|
|
63
|
-
return ".mjs";
|
|
64
|
-
}
|
|
65
|
-
case ".cts":
|
|
66
|
-
{
|
|
67
|
-
return ".cjs";
|
|
68
|
-
}
|
|
69
|
-
default:
|
|
70
|
-
{
|
|
71
|
-
return Extension;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
function ReplaceFileExtension(FilePath, NewExtension) {
|
|
76
|
-
const CurrentExtension = extname(FilePath);
|
|
77
|
-
if (CurrentExtension.length === 0) {
|
|
78
|
-
return FilePath;
|
|
79
|
-
}
|
|
80
|
-
return FilePath.slice(0, -CurrentExtension.length) + NewExtension;
|
|
81
|
-
}
|
|
82
|
-
function GetRelativeModuleSpecifier(FromModulePath, ToModulePath) {
|
|
83
|
-
const FromDirectoryPath = dirname(resolve(FromModulePath));
|
|
84
|
-
const ToAbsolutePath = resolve(ToModulePath);
|
|
85
|
-
let RelativePath = relative(FromDirectoryPath, ToAbsolutePath).replaceAll("\\", "/");
|
|
86
|
-
if (!RelativePath.startsWith(".")) {
|
|
87
|
-
RelativePath = `./${RelativePath}`;
|
|
88
|
-
}
|
|
89
|
-
return ReplaceFileExtension(RelativePath, GetOutputModuleSpecifierExtension(ToAbsolutePath));
|
|
90
|
-
}
|
|
91
|
-
function GetGeneratedModuleText(MainRegistrar, RendererRegistrar, OutputModulePath) {
|
|
92
|
-
const MainModuleSpecifier = GetRelativeModuleSpecifier(OutputModulePath, MainRegistrar.Path);
|
|
93
|
-
const RendererModuleSpecifier = GetRelativeModuleSpecifier(OutputModulePath, RendererRegistrar.Path);
|
|
94
|
-
return [
|
|
95
|
-
"/* eslint-disable */",
|
|
96
|
-
"",
|
|
97
|
-
"/* Auto-generated file. */",
|
|
98
|
-
"",
|
|
99
|
-
`declare module "${MainModuleSpecifier}"`,
|
|
100
|
-
"{",
|
|
101
|
-
` interface ${MainRegistrar.Name}`,
|
|
102
|
-
" {",
|
|
103
|
-
"",
|
|
104
|
-
" }",
|
|
105
|
-
"}",
|
|
106
|
-
"",
|
|
107
|
-
`declare module "${RendererModuleSpecifier}"`,
|
|
108
|
-
"{",
|
|
109
|
-
` interface ${RendererRegistrar.Name}`,
|
|
110
|
-
" {",
|
|
111
|
-
"",
|
|
112
|
-
" }",
|
|
113
|
-
"}",
|
|
114
|
-
""
|
|
115
|
-
].join("\n");
|
|
116
|
-
}
|
|
117
|
-
async function WriteBuiltModule(MainRegistrar, RendererRegistrar, ModulePath) {
|
|
118
|
-
const OutputModulePathResolved = resolve(ModulePath);
|
|
119
|
-
await mkdir(dirname(OutputModulePathResolved), { recursive: true });
|
|
120
|
-
const ModuleText = GetGeneratedModuleText(MainRegistrar, RendererRegistrar, OutputModulePathResolved);
|
|
121
|
-
await writeFile(OutputModulePathResolved, ModuleText, "utf8");
|
|
122
|
-
}
|
|
123
|
-
async function GetPackageJson() {
|
|
124
|
-
const Path = resolve(await GetPackageRootDirectory(), "package.json");
|
|
125
|
-
const { Data: PackageJsonContents, Error } = await Try(readFile(Path, { encoding: "utf-8" }));
|
|
126
|
-
if (PackageJsonContents === undefined) {
|
|
127
|
-
const ErrorMessage = `Could not open your project's ${Code("package.json")}. \
|
|
128
|
-
The attempted path was ${Code(Path)}.\n`;
|
|
129
|
-
console.error(ErrorMessage, JSON.stringify(Error, null, 4));
|
|
130
|
-
process.exit(1);
|
|
131
|
-
}
|
|
132
|
-
else {
|
|
133
|
-
return JSON.parse(PackageJsonContents);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
async function SetPackageJson(PackageJson, Path = undefined) {
|
|
137
|
-
const OutPath = Path || resolve(await GetPackageRootDirectory(), "package.json");
|
|
138
|
-
const PackageJsonContents = JSON.stringify(PackageJson, null, 4);
|
|
139
|
-
await writeFile(OutPath, PackageJsonContents, { encoding: "utf-8" });
|
|
140
|
-
}
|
|
141
|
-
async function SetupInteractive() {
|
|
142
|
-
const MainRegistrar = await SelectRegistrarInterface("IMainRegistrarBase");
|
|
143
|
-
const RendererRegistrar = await SelectRegistrarInterface("IRendererRegistrarBase");
|
|
144
|
-
const OtherSep = sep === "/"
|
|
145
|
-
? "\\"
|
|
146
|
-
: "/";
|
|
147
|
-
const FixSep = (InPath) => {
|
|
148
|
-
return InPath.replaceAll(OtherSep, sep);
|
|
149
|
-
};
|
|
150
|
-
MainRegistrar.Path = FixSep(MainRegistrar.Path);
|
|
151
|
-
RendererRegistrar.Path = FixSep(RendererRegistrar.Path);
|
|
152
|
-
const BuiltModulePath = resolve(await SelectBuiltModulePath(), "electronReactiveEvent.Generated.ts");
|
|
153
|
-
const OraWriteBuiltModule = ora({ text: "Writing new module at the selected path..." }).start();
|
|
154
|
-
await WriteBuiltModule(MainRegistrar, RendererRegistrar, BuiltModulePath);
|
|
155
|
-
OraWriteBuiltModule.succeed();
|
|
156
|
-
const ConfigDirectoryPath = await SelectConfigDirectoryPath();
|
|
157
|
-
const ConfigFileName = await SelectConfigName(ConfigDirectoryPath);
|
|
158
|
-
const OraWriteConfig = ora({ text: `Writing ${Code(ConfigFileName)}...` }).start();
|
|
159
|
-
const Config = {
|
|
160
|
-
main: {
|
|
161
|
-
name: MainRegistrar.Name,
|
|
162
|
-
path: MainRegistrar.Path
|
|
163
|
-
},
|
|
164
|
-
outPath: BuiltModulePath,
|
|
165
|
-
renderer: {
|
|
166
|
-
name: RendererRegistrar.Name,
|
|
167
|
-
path: RendererRegistrar.Path
|
|
168
|
-
}
|
|
169
|
-
};
|
|
170
|
-
const ConfigString = JSON.stringify(Config, null, 4);
|
|
171
|
-
const ConfigPath = resolve(ConfigDirectoryPath, ConfigFileName);
|
|
172
|
-
const { Error } = await Try(writeFile(ConfigPath, ConfigString, { encoding: "utf-8" }));
|
|
173
|
-
if (Error === undefined) {
|
|
174
|
-
OraWriteConfig.succeed();
|
|
175
|
-
}
|
|
176
|
-
else {
|
|
177
|
-
OraWriteConfig.fail();
|
|
178
|
-
const ErrorMessage = `Failed to write the config file ${ConfigFileName} in \
|
|
179
|
-
${ConfigDirectoryPath}.\n`;
|
|
180
|
-
console.error(ErrorMessage, JSON.stringify(Error, null, 4));
|
|
181
|
-
process.exit(1);
|
|
182
|
-
}
|
|
183
|
-
if (await IsPackageJsonConfigNeeded(ConfigDirectoryPath, ConfigFileName)) {
|
|
184
|
-
const text = `Setting ${Code("config.electron-reactive-event-cli")} \
|
|
185
|
-
in your project's ${Code("package.json")}...`;
|
|
186
|
-
const OraWriteConfigProperty = ora({ spinner: "point", text }).start();
|
|
187
|
-
const ConfigPart = {
|
|
188
|
-
"electron-reactive-event-cli": ConfigPath
|
|
189
|
-
};
|
|
190
|
-
const PackageJson = await GetPackageJson();
|
|
191
|
-
const HasConfigProperty = ("config" in PackageJson &&
|
|
192
|
-
typeof PackageJson.config === "object" &&
|
|
193
|
-
PackageJson.config !== null);
|
|
194
|
-
if (!HasConfigProperty) {
|
|
195
|
-
PackageJson.config = ConfigPart;
|
|
196
|
-
}
|
|
197
|
-
else {
|
|
198
|
-
PackageJson.config =
|
|
199
|
-
{
|
|
200
|
-
...PackageJson.config,
|
|
201
|
-
...ConfigPart
|
|
202
|
-
};
|
|
203
|
-
}
|
|
204
|
-
const { Error: UpdatePackageJsonError } = await Try(SetPackageJson(PackageJson));
|
|
205
|
-
if (UpdatePackageJsonError !== undefined) {
|
|
206
|
-
OraWriteConfigProperty.fail();
|
|
207
|
-
const ErrorMessage = `Failed to write the updated ${Code("package.json")}.\n`;
|
|
208
|
-
console.error(ErrorMessage, JSON.stringify(UpdatePackageJsonError, null, 4));
|
|
209
|
-
process.exit(1);
|
|
210
|
-
}
|
|
211
|
-
OraWriteConfigProperty.succeed();
|
|
212
|
-
}
|
|
213
|
-
console.log("🥳 " + Chalk.greenBright(`Completed ${Code("setup")} successfully!`));
|
|
214
|
-
console.log(`Your project has been configured to support the ${Code("register")} command ` +
|
|
215
|
-
`provided by ${Code("electron-reactive-event-cli")}.\n`);
|
|
216
|
-
const ShouldRunRegister = await Confirm({
|
|
217
|
-
default: true,
|
|
218
|
-
message: `Run the ${Code("register")} command?`
|
|
219
|
-
});
|
|
220
|
-
if (ShouldRunRegister) {
|
|
221
|
-
await Register();
|
|
222
|
-
}
|
|
223
|
-
process.exit(0);
|
|
224
|
-
}
|
|
225
|
-
async function SetupNoInteractive() {
|
|
226
|
-
await WriteCliConfig(DefaultConfigFileName, GetEmptyCliConfig());
|
|
227
|
-
}
|
|
228
|
-
async function Setup() {
|
|
229
|
-
const { interactive: IsInteractive } = this.opts();
|
|
230
|
-
if (IsInteractive) {
|
|
231
|
-
await SetupInteractive.call(this);
|
|
232
|
-
return;
|
|
233
|
-
}
|
|
234
|
-
else {
|
|
235
|
-
await SetupNoInteractive.call(this);
|
|
236
|
-
return;
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
async function Main() {
|
|
240
|
-
const SetupCommand = new Command("setup")
|
|
241
|
-
/* eslint-disable-next-line @stylistic/max-len */
|
|
242
|
-
.description("Create the config file needed to register your event declarations automatically in your project's build step.")
|
|
243
|
-
.option("--no-interactive", "Write an empty settings file to the root of your package.", true)
|
|
244
|
-
.action(Setup);
|
|
245
|
-
await RunCommand(SetupCommand);
|
|
246
|
-
}
|
|
247
|
-
Main();
|
|
248
|
-
//# sourceMappingURL=SetupCommand.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SetupCommand.js","sourceRoot":"","sources":["../../Source/Setup/SetupCommand.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { IPackageJson } from "package-json-type";
|
|
2
|
-
import type { TDeepWriteable } from "@sorrell/utilities";
|
|
3
|
-
import type TypeScript from "typescript";
|
|
4
|
-
export type FReadConfigFileResult = ReturnType<typeof TypeScript.readConfigFile>;
|
|
5
|
-
export type FRegistrarBaseMatch = Readonly<{
|
|
6
|
-
Name: string;
|
|
7
|
-
Path: string;
|
|
8
|
-
}>;
|
|
9
|
-
export type FPackageJson = TDeepWriteable<IPackageJson>;
|
|
10
|
-
//# sourceMappingURL=TsConfig.Types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TsConfig.Types.d.ts","sourceRoot":"","sources":["../../Source/Setup/TsConfig.Types.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,UAAU,MAAM,YAAY,CAAC;AAEzC,MAAM,MAAM,qBAAqB,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,cAAc,CAAC,CAAC;AAEjF,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TsConfig.Types.js","sourceRoot":"","sources":["../../Source/Setup/TsConfig.Types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { FBaseInterfaceName } from "../index.js";
|
|
2
|
-
import TypeScript from "typescript";
|
|
3
|
-
export declare function FormatDiagnostics(Diagnostics: ReadonlyArray<TypeScript.Diagnostic>): string;
|
|
4
|
-
export declare function GetRightmostIdentifierText(Expression: TypeScript.Expression): string | undefined;
|
|
5
|
-
export declare function IsSearchableProjectSourceFile(SourceFile: TypeScript.SourceFile): boolean;
|
|
6
|
-
export declare function GetMatchingInterfacesInSourceFile(SourceFile: TypeScript.SourceFile, InterfaceName: FBaseInterfaceName): ReadonlyArray<string>;
|
|
7
|
-
export declare function GetTsConfigPath(): Promise<string>;
|
|
8
|
-
//# sourceMappingURL=TsConfig.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TsConfig.d.ts","sourceRoot":"","sources":["../../Source/Setup/TsConfig.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,UAAU,MAAM,YAAY,CAAC;AAGpC,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,MAAM,CAqB3F;AAED,wBAAgB,0BAA0B,CACtC,UAAU,EAAE,UAAU,CAAC,UAAU,GAClC,MAAM,GAAG,SAAS,CAapB;AAED,wBAAgB,6BAA6B,CACzC,UAAU,EAAE,UAAU,CAAC,UAAU,GAClC,OAAO,CAaT;AAED,wBAAgB,iCAAiC,CAC7C,UAAU,EAAE,UAAU,CAAC,UAAU,EACjC,aAAa,EAAE,kBAAkB,GAClC,aAAa,CAAC,MAAM,CAAC,CAsCvB;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,CAGvD"}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
/* File: TsConfig.ts
|
|
2
|
-
* Author: Gage Sorrell <gage@sorrell.sh>
|
|
3
|
-
* Copyright: (c) 2026 Gage Sorrell
|
|
4
|
-
* License: MIT
|
|
5
|
-
*/
|
|
6
|
-
import { GetPackageRootDirectory } from "@sorrell/utilities";
|
|
7
|
-
import TypeScript from "typescript";
|
|
8
|
-
import { resolve } from "path";
|
|
9
|
-
export function FormatDiagnostics(Diagnostics) {
|
|
10
|
-
return TypeScript.formatDiagnosticsWithColorAndContext(Diagnostics, {
|
|
11
|
-
getCanonicalFileName(FileName) {
|
|
12
|
-
return FileName;
|
|
13
|
-
},
|
|
14
|
-
getCurrentDirectory() {
|
|
15
|
-
return process.cwd();
|
|
16
|
-
},
|
|
17
|
-
getNewLine() {
|
|
18
|
-
return TypeScript.sys.newLine;
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
export function GetRightmostIdentifierText(Expression) {
|
|
23
|
-
if (TypeScript.isIdentifier(Expression)) {
|
|
24
|
-
return Expression.text;
|
|
25
|
-
}
|
|
26
|
-
if (TypeScript.isPropertyAccessExpression(Expression)) {
|
|
27
|
-
return Expression.name.text;
|
|
28
|
-
}
|
|
29
|
-
return undefined;
|
|
30
|
-
}
|
|
31
|
-
export function IsSearchableProjectSourceFile(SourceFile) {
|
|
32
|
-
if (SourceFile.isDeclarationFile) {
|
|
33
|
-
return false;
|
|
34
|
-
}
|
|
35
|
-
const FileNameLower = SourceFile.fileName.toLowerCase();
|
|
36
|
-
return FileNameLower.endsWith(".ts")
|
|
37
|
-
|| FileNameLower.endsWith(".tsx")
|
|
38
|
-
|| FileNameLower.endsWith(".mts")
|
|
39
|
-
|| FileNameLower.endsWith(".cts");
|
|
40
|
-
}
|
|
41
|
-
export function GetMatchingInterfacesInSourceFile(SourceFile, InterfaceName) {
|
|
42
|
-
const MatchingInterfaceNames = [];
|
|
43
|
-
const Visit = (Node) => {
|
|
44
|
-
if (TypeScript.isInterfaceDeclaration(Node)) {
|
|
45
|
-
const HeritageClauses = Node.heritageClauses ?? [];
|
|
46
|
-
for (const HeritageClause of HeritageClauses) {
|
|
47
|
-
if (HeritageClause.token !== TypeScript.SyntaxKind.ExtendsKeyword) {
|
|
48
|
-
continue;
|
|
49
|
-
}
|
|
50
|
-
for (const HeritageType of HeritageClause.types) {
|
|
51
|
-
const ReferencedTypeName = GetRightmostIdentifierText(HeritageType.expression);
|
|
52
|
-
if (ReferencedTypeName === InterfaceName) {
|
|
53
|
-
MatchingInterfaceNames.push(Node.name.text);
|
|
54
|
-
break;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
TypeScript.forEachChild(Node, Visit);
|
|
60
|
-
};
|
|
61
|
-
Visit(SourceFile);
|
|
62
|
-
return MatchingInterfaceNames;
|
|
63
|
-
}
|
|
64
|
-
export async function GetTsConfigPath() {
|
|
65
|
-
return resolve(await GetPackageRootDirectory(), "tsconfig.json");
|
|
66
|
-
}
|
|
67
|
-
//# sourceMappingURL=TsConfig.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TsConfig.js","sourceRoot":"","sources":["../../Source/Setup/TsConfig.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,MAAM,UAAU,iBAAiB,CAAC,WAAiD;IAE/E,OAAO,UAAU,CAAC,oCAAoC,CAClD,WAAW,EACX;QACI,oBAAoB,CAAC,QAAgB;YAEjC,OAAO,QAAQ,CAAC;QACpB,CAAC;QAED,mBAAmB;YAEf,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC;QACzB,CAAC;QAED,UAAU;YAEN,OAAO,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC;QAClC,CAAC;KACJ,CACJ,CAAC;AACN,CAAC;AAED,MAAM,UAAU,0BAA0B,CACtC,UAAiC;IAGjC,IAAI,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,EACvC,CAAC;QACG,OAAO,UAAU,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,IAAI,UAAU,CAAC,0BAA0B,CAAC,UAAU,CAAC,EACrD,CAAC;QACG,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;IAChC,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,6BAA6B,CACzC,UAAiC;IAGjC,IAAI,UAAU,CAAC,iBAAiB,EAChC,CAAC;QACG,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,aAAa,GAAW,UAAU,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IAEhE,OAAO,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC;WAC7B,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC;WAC9B,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC;WAC9B,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC7C,UAAiC,EACjC,aAAiC;IAGjC,MAAM,sBAAsB,GAAkB,EAAG,CAAC;IAElD,MAAM,KAAK,GAAG,CAAC,IAAqB,EAAQ,EAAE;QAE1C,IAAI,UAAU,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAC3C,CAAC;YACG,MAAM,eAAe,GAA6C,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC;YAE7F,KAAK,MAAM,cAAc,IAAI,eAAe,EAC5C,CAAC;gBACG,IAAI,cAAc,CAAC,KAAK,KAAK,UAAU,CAAC,UAAU,CAAC,cAAc,EACjE,CAAC;oBACG,SAAS;gBACb,CAAC;gBAED,KAAK,MAAM,YAAY,IAAI,cAAc,CAAC,KAAK,EAC/C,CAAC;oBACG,MAAM,kBAAkB,GAAuB,0BAA0B,CACrE,YAAY,CAAC,UAAU,CAC1B,CAAC;oBAEF,IAAI,kBAAkB,KAAK,aAAa,EACxC,CAAC;wBACG,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAC5C,MAAM;oBACV,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAED,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC,CAAC;IAEF,KAAK,CAAC,UAAU,CAAC,CAAC;IAElB,OAAO,sBAAsB,CAAC;AAClC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe;IAEjC,OAAO,OAAO,CAAC,MAAM,uBAAuB,EAAE,EAAE,eAAe,CAAC,CAAC;AACrE,CAAC"}
|