@nlabs/lex 1.48.6 → 1.49.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.storybook/main.ts +9 -2
- package/.vscode/settings.json +1 -6
- package/README.md +276 -4
- package/eslint.config.mjs +24 -0
- package/examples/lex.config.js +18 -8
- package/examples/serverless-example/README.md +109 -0
- package/examples/serverless-example/dist/handlers/echo.js +15 -0
- package/examples/serverless-example/dist/handlers/graphql.js +137 -0
- package/examples/serverless-example/dist/handlers/hello.js +15 -0
- package/examples/serverless-example/dist/handlers/test.js +17 -0
- package/examples/serverless-example/dist/handlers/websocket.js +14 -0
- package/examples/serverless-example/lex.config.mjs +74 -0
- package/jest.config.mjs +13 -12
- package/{dist → lib}/LexConfig.d.ts +14 -6
- package/lib/LexConfig.js +268 -0
- package/lib/commands/ai/ai.js +303 -0
- package/{dist → lib}/commands/build/build.d.ts +3 -0
- package/lib/commands/build/build.js +494 -0
- package/{dist → lib}/commands/clean/clean.js +1 -1
- package/lib/commands/compile/compile.js +241 -0
- package/lib/commands/copy/copy.js +38 -0
- package/{dist → lib}/commands/create/create.js +1 -1
- package/{dist → lib}/commands/dev/dev.d.ts +2 -0
- package/lib/commands/dev/dev.js +286 -0
- package/{dist → lib}/commands/init/init.js +1 -1
- package/{dist → lib}/commands/lint/lint.d.ts +4 -1
- package/lib/commands/lint/lint.js +993 -0
- package/{dist → lib}/commands/migrate/migrate.js +1 -1
- package/lib/commands/publish/publish.js +104 -0
- package/lib/commands/serverless/serverless.d.ts +17 -0
- package/lib/commands/serverless/serverless.js +662 -0
- package/lib/commands/storybook/storybook.js +249 -0
- package/lib/commands/test/test.js +428 -0
- package/lib/commands/update/update.js +128 -0
- package/lib/commands/versions/versions.js +41 -0
- package/{dist → lib}/create/changelog.js +1 -1
- package/{dist → lib}/index.d.ts +2 -0
- package/{dist → lib}/index.js +3 -1
- package/lib/lex.js +73 -0
- package/lib/storybook/index.d.ts +5 -0
- package/lib/types.js +1 -0
- package/lib/utils/aiService.d.ts +9 -0
- package/lib/utils/aiService.js +299 -0
- package/{dist → lib}/utils/app.d.ts +3 -0
- package/lib/utils/app.js +296 -0
- package/lib/utils/deepMerge.js +26 -0
- package/{dist → lib}/utils/file.d.ts +7 -3
- package/lib/utils/file.js +229 -0
- package/lib/utils/translations.d.ts +1 -0
- package/lib/utils/translations.js +74 -0
- package/package.json +62 -50
- package/postcss.config.js +5 -3
- package/tsconfig.build.json +2 -2
- package/webpack.config.js +229 -39
- package/dist/LexConfig.js +0 -286
- package/dist/commands/ai/ai.js +0 -303
- package/dist/commands/build/build.js +0 -404
- package/dist/commands/compile/compile.js +0 -234
- package/dist/commands/copy/copy.js +0 -38
- package/dist/commands/dev/dev.js +0 -74
- package/dist/commands/lint/lint.js +0 -811
- package/dist/commands/publish/publish.js +0 -104
- package/dist/commands/storybook/storybook.js +0 -249
- package/dist/commands/test/test.js +0 -429
- package/dist/commands/update/update.js +0 -132
- package/dist/commands/versions/versions.js +0 -41
- package/dist/lex.js +0 -70
- package/dist/utils/aiService.d.ts +0 -9
- package/dist/utils/aiService.js +0 -299
- package/dist/utils/app.js +0 -267
- package/dist/utils/deepMerge.js +0 -24
- package/dist/utils/file.js +0 -185
- package/emptyModule.js +0 -0
- package/eslint.config.js +0 -7
- /package/{dist → lib}/Button.stories.d.ts +0 -0
- /package/{dist → lib}/commands/ai/ai.d.ts +0 -0
- /package/{dist → lib}/commands/ai/index.d.ts +0 -0
- /package/{dist → lib}/commands/ai/index.js +0 -0
- /package/{dist → lib}/commands/clean/clean.d.ts +0 -0
- /package/{dist → lib}/commands/compile/compile.d.ts +0 -0
- /package/{dist → lib}/commands/config/config.d.ts +0 -0
- /package/{dist → lib}/commands/config/config.js +0 -0
- /package/{dist → lib}/commands/copy/copy.d.ts +0 -0
- /package/{dist → lib}/commands/create/create.d.ts +0 -0
- /package/{dist → lib}/commands/init/init.d.ts +0 -0
- /package/{dist → lib}/commands/link/link.d.ts +0 -0
- /package/{dist → lib}/commands/link/link.js +0 -0
- /package/{dist → lib}/commands/lint/autofix.d.ts +0 -0
- /package/{dist → lib}/commands/migrate/migrate.d.ts +0 -0
- /package/{dist → lib}/commands/publish/publish.d.ts +0 -0
- /package/{dist → lib}/commands/storybook/storybook.d.ts +0 -0
- /package/{dist → lib}/commands/test/test.d.ts +0 -0
- /package/{dist → lib}/commands/update/update.d.ts +0 -0
- /package/{dist → lib}/commands/upgrade/upgrade.d.ts +0 -0
- /package/{dist → lib}/commands/upgrade/upgrade.js +0 -0
- /package/{dist → lib}/commands/versions/versions.d.ts +0 -0
- /package/{dist → lib}/create/changelog.d.ts +0 -0
- /package/{dist → lib}/lex.d.ts +0 -0
- /package/{dist/types.js → lib/storybook/index.js} +0 -0
- /package/{dist → lib}/test-react/index.d.ts +0 -0
- /package/{dist → lib}/test-react/index.js +0 -0
- /package/{dist → lib}/types.d.ts +0 -0
- /package/{dist → lib}/utils/deepMerge.d.ts +0 -0
- /package/{dist → lib}/utils/log.d.ts +0 -0
- /package/{dist → lib}/utils/log.js +0 -0
- /package/{dist → lib}/utils/reactShim.d.ts +0 -0
- /package/{dist → lib}/utils/reactShim.js +0 -0
package/dist/utils/app.js
DELETED
|
@@ -1,267 +0,0 @@
|
|
|
1
|
-
import boxen from "boxen";
|
|
2
|
-
import { copyFile, existsSync, lstatSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from "fs";
|
|
3
|
-
import { sync as globSync } from "glob";
|
|
4
|
-
import isEmpty from "lodash/isEmpty.js";
|
|
5
|
-
import ora from "ora";
|
|
6
|
-
import { basename as pathBasename, join as pathJoin, relative as pathRelative, resolve as pathResolve } from "path";
|
|
7
|
-
import { rimrafSync } from "rimraf";
|
|
8
|
-
import { log } from "./log.js";
|
|
9
|
-
const cwd = process.cwd();
|
|
10
|
-
const getFilenames = (props) => {
|
|
11
|
-
const { callback, cliName, name, quiet, type, useTypescript } = props;
|
|
12
|
-
let nameCaps;
|
|
13
|
-
const itemTypes = ["stores", "views"];
|
|
14
|
-
if (!name) {
|
|
15
|
-
if (itemTypes.includes(type)) {
|
|
16
|
-
log(`
|
|
17
|
-
${cliName} Error: ${type} name is required. Please use 'lex -h' for options.`, "error", quiet);
|
|
18
|
-
return callback?.(1);
|
|
19
|
-
}
|
|
20
|
-
} else {
|
|
21
|
-
nameCaps = `${name.charAt(0).toUpperCase()}${name.substr(1)}`;
|
|
22
|
-
}
|
|
23
|
-
log(`${cliName} adding ${name} ${type}...`, "info", quiet);
|
|
24
|
-
let templatePath;
|
|
25
|
-
let templateExt;
|
|
26
|
-
let templateReact;
|
|
27
|
-
if (useTypescript) {
|
|
28
|
-
templatePath = "../../templates/typescript";
|
|
29
|
-
templateExt = ".ts";
|
|
30
|
-
templateReact = ".tsx";
|
|
31
|
-
} else {
|
|
32
|
-
templatePath = "../../templates/flow";
|
|
33
|
-
templateExt = ".js";
|
|
34
|
-
templateReact = ".js";
|
|
35
|
-
}
|
|
36
|
-
return {
|
|
37
|
-
nameCaps,
|
|
38
|
-
templateExt,
|
|
39
|
-
templatePath,
|
|
40
|
-
templateReact
|
|
41
|
-
};
|
|
42
|
-
};
|
|
43
|
-
const createSpinner = (quiet = false) => {
|
|
44
|
-
if (quiet) {
|
|
45
|
-
return {
|
|
46
|
-
fail: () => {
|
|
47
|
-
},
|
|
48
|
-
start: () => {
|
|
49
|
-
},
|
|
50
|
-
succeed: () => {
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
return ora({ color: "yellow" });
|
|
55
|
-
};
|
|
56
|
-
const copyFiles = async (files, typeName, spinner, config) => {
|
|
57
|
-
const { outputFullPath, sourceFullPath } = config;
|
|
58
|
-
const items = files.map((fileName) => ({
|
|
59
|
-
from: fileName,
|
|
60
|
-
to: pathResolve(outputFullPath, pathRelative(sourceFullPath, fileName))
|
|
61
|
-
}));
|
|
62
|
-
try {
|
|
63
|
-
spinner.start(`Copying ${typeName} files...`);
|
|
64
|
-
await Promise.all(items.map(({ from, to }) => new Promise(
|
|
65
|
-
(resolve, reject) => {
|
|
66
|
-
mkdirSync(pathResolve(to, ".."), { recursive: true });
|
|
67
|
-
return copyFile(from, to, (copyError) => {
|
|
68
|
-
if (copyError) {
|
|
69
|
-
reject();
|
|
70
|
-
} else {
|
|
71
|
-
resolve(true);
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
)));
|
|
76
|
-
spinner.succeed(`Successfully copied ${files.length} ${typeName} files!`);
|
|
77
|
-
} catch (error) {
|
|
78
|
-
spinner.fail(`Copying of ${typeName} files failed.`);
|
|
79
|
-
log(`Error: ${error.message}`, "error");
|
|
80
|
-
log(error, "error");
|
|
81
|
-
}
|
|
82
|
-
};
|
|
83
|
-
const copyConfiguredFiles = async (spinner, config, quiet) => {
|
|
84
|
-
const { copyFiles: copyFilesConfig, outputFullPath, sourceFullPath, sourcePath } = config;
|
|
85
|
-
if (!copyFilesConfig || copyFilesConfig.length === 0) {
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
try {
|
|
89
|
-
spinner.start("Copying configured files...");
|
|
90
|
-
let totalCopied = 0;
|
|
91
|
-
const baseDir = sourceFullPath || (sourcePath ? pathResolve(cwd, sourcePath) : cwd);
|
|
92
|
-
for (const pattern of copyFilesConfig) {
|
|
93
|
-
const resolvedPattern = pathResolve(baseDir, pattern);
|
|
94
|
-
const matchingFiles = globSync(resolvedPattern, {
|
|
95
|
-
nodir: true,
|
|
96
|
-
absolute: true
|
|
97
|
-
});
|
|
98
|
-
if (matchingFiles.length === 0) {
|
|
99
|
-
if (!quiet) {
|
|
100
|
-
log(`Warning: No files found matching pattern: ${pattern}`, "warn", quiet);
|
|
101
|
-
}
|
|
102
|
-
continue;
|
|
103
|
-
}
|
|
104
|
-
for (const sourceFile of matchingFiles) {
|
|
105
|
-
const relativePath = pathRelative(baseDir, sourceFile);
|
|
106
|
-
const destPath = pathResolve(outputFullPath, relativePath);
|
|
107
|
-
const destDir = pathResolve(destPath, "..");
|
|
108
|
-
mkdirSync(destDir, { recursive: true });
|
|
109
|
-
await new Promise((resolve, reject) => {
|
|
110
|
-
copyFile(sourceFile, destPath, (copyError) => {
|
|
111
|
-
if (copyError) {
|
|
112
|
-
reject(copyError);
|
|
113
|
-
} else {
|
|
114
|
-
resolve(true);
|
|
115
|
-
}
|
|
116
|
-
});
|
|
117
|
-
});
|
|
118
|
-
totalCopied++;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
if (totalCopied > 0) {
|
|
122
|
-
spinner.succeed(`Successfully copied ${totalCopied} configured files!`);
|
|
123
|
-
} else {
|
|
124
|
-
spinner.succeed("No configured files to copy");
|
|
125
|
-
}
|
|
126
|
-
} catch (error) {
|
|
127
|
-
spinner.fail("Failed to copy configured files");
|
|
128
|
-
log(`Error copying configured files: ${error.message}`, "error", quiet);
|
|
129
|
-
throw error;
|
|
130
|
-
}
|
|
131
|
-
};
|
|
132
|
-
const copyFileSync = (source, target) => {
|
|
133
|
-
let targetFile = target;
|
|
134
|
-
if (existsSync(target)) {
|
|
135
|
-
if (lstatSync(target).isDirectory()) {
|
|
136
|
-
targetFile = pathJoin(target, pathBasename(source));
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
writeFileSync(targetFile, readFileSync(source));
|
|
140
|
-
};
|
|
141
|
-
const copyFolderRecursiveSync = (source, target) => {
|
|
142
|
-
let files = [];
|
|
143
|
-
const targetFolder = pathJoin(target, pathBasename(source));
|
|
144
|
-
if (!existsSync(targetFolder)) {
|
|
145
|
-
mkdirSync(targetFolder);
|
|
146
|
-
}
|
|
147
|
-
if (lstatSync(source).isDirectory()) {
|
|
148
|
-
files = readdirSync(source);
|
|
149
|
-
files.forEach((file) => {
|
|
150
|
-
const curSource = pathJoin(source, file);
|
|
151
|
-
if (lstatSync(curSource).isDirectory()) {
|
|
152
|
-
copyFolderRecursiveSync(curSource, targetFolder);
|
|
153
|
-
} else {
|
|
154
|
-
copyFileSync(curSource, targetFolder);
|
|
155
|
-
}
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
};
|
|
159
|
-
const getPackageJson = (packagePath) => {
|
|
160
|
-
const formatPath = packagePath || `${process.cwd()}/package.json`;
|
|
161
|
-
const packageData = readFileSync(formatPath).toString();
|
|
162
|
-
return JSON.parse(packageData);
|
|
163
|
-
};
|
|
164
|
-
const getFilesByExt = (ext, config) => {
|
|
165
|
-
const { sourceFullPath } = config;
|
|
166
|
-
return globSync(`${sourceFullPath}/**/**${ext}`);
|
|
167
|
-
};
|
|
168
|
-
const removeConflictModules = (moduleList) => {
|
|
169
|
-
const updatedList = { ...moduleList };
|
|
170
|
-
Object.keys(updatedList).forEach((moduleName) => {
|
|
171
|
-
const regex = new RegExp("^(?!@types/).*?(jest|webpack).*$", "gi");
|
|
172
|
-
if (regex.test(moduleName)) {
|
|
173
|
-
delete updatedList[moduleName];
|
|
174
|
-
}
|
|
175
|
-
});
|
|
176
|
-
return updatedList;
|
|
177
|
-
};
|
|
178
|
-
const removeFiles = (fileName, isRelative = false) => new Promise((resolve, reject) => {
|
|
179
|
-
const filePath = isRelative ? pathResolve(cwd, fileName) : fileName;
|
|
180
|
-
try {
|
|
181
|
-
rimrafSync(filePath);
|
|
182
|
-
return resolve(null);
|
|
183
|
-
} catch (error) {
|
|
184
|
-
return reject(error);
|
|
185
|
-
}
|
|
186
|
-
});
|
|
187
|
-
const removeModules = () => new Promise(async (resolve, reject) => {
|
|
188
|
-
try {
|
|
189
|
-
await removeFiles("./node_modules", true);
|
|
190
|
-
await removeFiles("./yarn.lock", true);
|
|
191
|
-
await removeFiles("./package-lock.json", true);
|
|
192
|
-
resolve(null);
|
|
193
|
-
} catch (error) {
|
|
194
|
-
reject(error);
|
|
195
|
-
}
|
|
196
|
-
});
|
|
197
|
-
const setPackageJson = (json, packagePath) => {
|
|
198
|
-
if (!json) {
|
|
199
|
-
return;
|
|
200
|
-
}
|
|
201
|
-
const formatPath = packagePath || `${process.cwd()}/package.json`;
|
|
202
|
-
writeFileSync(formatPath, JSON.stringify(json, null, 2));
|
|
203
|
-
};
|
|
204
|
-
const linkedModules = (startPath) => {
|
|
205
|
-
const workingPath = startPath || process.cwd();
|
|
206
|
-
let modulePath;
|
|
207
|
-
let prefix;
|
|
208
|
-
if (workingPath.includes("@")) {
|
|
209
|
-
prefix = `@${workingPath.split("@").pop()}`;
|
|
210
|
-
modulePath = workingPath;
|
|
211
|
-
} else {
|
|
212
|
-
modulePath = pathJoin(workingPath, "node_modules");
|
|
213
|
-
}
|
|
214
|
-
const foundPaths = globSync(`${modulePath}/*`);
|
|
215
|
-
return foundPaths.reduce((list, foundPath) => {
|
|
216
|
-
try {
|
|
217
|
-
const stats = lstatSync(foundPath);
|
|
218
|
-
if (stats.isDirectory()) {
|
|
219
|
-
const deepList = linkedModules(foundPath);
|
|
220
|
-
list.push(...deepList);
|
|
221
|
-
} else if (stats.isSymbolicLink()) {
|
|
222
|
-
const moduleNames = [prefix, pathBasename(foundPath)].filter((item) => !isEmpty(item));
|
|
223
|
-
list.push({ name: `${moduleNames.join("/")}`, path: foundPath });
|
|
224
|
-
}
|
|
225
|
-
return list;
|
|
226
|
-
} catch (fsError) {
|
|
227
|
-
return list;
|
|
228
|
-
}
|
|
229
|
-
}, []);
|
|
230
|
-
};
|
|
231
|
-
const checkLinkedModules = () => {
|
|
232
|
-
const linked = linkedModules();
|
|
233
|
-
if (linked.length) {
|
|
234
|
-
const msgModule = linked.length > 1 ? "Modules" : "Module";
|
|
235
|
-
const linkedMsg = linked.reduce(
|
|
236
|
-
(msg, linkedModule) => `${msg}
|
|
237
|
-
* ${linkedModule.name}`,
|
|
238
|
-
`Linked ${msgModule}:`
|
|
239
|
-
);
|
|
240
|
-
log(boxen(linkedMsg, { dimBorder: true, padding: 1 }), "warn");
|
|
241
|
-
}
|
|
242
|
-
};
|
|
243
|
-
const updateTemplateName = (filePath, replace, replaceCaps) => {
|
|
244
|
-
let data = readFileSync(filePath, "utf8");
|
|
245
|
-
data = data.replace(/sample/g, replace);
|
|
246
|
-
data = data.replace(/Sample/g, replaceCaps);
|
|
247
|
-
writeFileSync(filePath, data, "utf8");
|
|
248
|
-
};
|
|
249
|
-
export {
|
|
250
|
-
checkLinkedModules,
|
|
251
|
-
copyConfiguredFiles,
|
|
252
|
-
copyFileSync,
|
|
253
|
-
copyFiles,
|
|
254
|
-
copyFolderRecursiveSync,
|
|
255
|
-
createSpinner,
|
|
256
|
-
cwd,
|
|
257
|
-
getFilenames,
|
|
258
|
-
getFilesByExt,
|
|
259
|
-
getPackageJson,
|
|
260
|
-
linkedModules,
|
|
261
|
-
removeConflictModules,
|
|
262
|
-
removeFiles,
|
|
263
|
-
removeModules,
|
|
264
|
-
setPackageJson,
|
|
265
|
-
updateTemplateName
|
|
266
|
-
};
|
|
267
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL2FwcC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cblxuaW1wb3J0IGJveGVuIGZyb20gJ2JveGVuJztcbmltcG9ydCB7Y29weUZpbGUsIGV4aXN0c1N5bmMsIGxzdGF0U3luYywgbWtkaXJTeW5jLCByZWFkZGlyU3luYywgcmVhZEZpbGVTeW5jLCB3cml0ZUZpbGVTeW5jfSBmcm9tICdmcyc7XG5pbXBvcnQge3N5bmMgYXMgZ2xvYlN5bmN9IGZyb20gJ2dsb2InO1xuaW1wb3J0IGlzRW1wdHkgZnJvbSAnbG9kYXNoL2lzRW1wdHkuanMnO1xuaW1wb3J0IG9yYSBmcm9tICdvcmEnO1xuaW1wb3J0IHtiYXNlbmFtZSBhcyBwYXRoQmFzZW5hbWUsIGpvaW4gYXMgcGF0aEpvaW4sIHJlbGF0aXZlIGFzIHBhdGhSZWxhdGl2ZSwgcmVzb2x2ZSBhcyBwYXRoUmVzb2x2ZX0gZnJvbSAncGF0aCc7XG5pbXBvcnQge3JpbXJhZlN5bmN9IGZyb20gJ3JpbXJhZic7XG5cblxuaW1wb3J0IHtsb2d9IGZyb20gJy4vbG9nLmpzJztcblxuaW1wb3J0IHR5cGUge0xleENvbmZpZ1R5cGV9IGZyb20gJy4uL0xleENvbmZpZy5qcyc7XG5cblxuZXhwb3J0IGNvbnN0IGN3ZDogc3RyaW5nID0gcHJvY2Vzcy5jd2QoKTtcblxuZXhwb3J0IGludGVyZmFjZSBHZXRGaWxlbmFtZXNQcm9wcyB7XG4gIHJlYWRvbmx5IGNhbGxiYWNrPzogKHN0YXR1czogbnVtYmVyKSA9PiB2b2lkO1xuICByZWFkb25seSBjbGlOYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBxdWlldD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHR5cGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHVzZVR5cGVzY3JpcHQ/OiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgRmlsZW5hbWVzUmVzdWx0IHtcbiAgbmFtZUNhcHM6IHN0cmluZztcbiAgdGVtcGxhdGVFeHQ6IHN0cmluZztcbiAgdGVtcGxhdGVQYXRoOiBzdHJpbmc7XG4gIHRlbXBsYXRlUmVhY3Q6IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IGdldEZpbGVuYW1lcyA9IChwcm9wczogR2V0RmlsZW5hbWVzUHJvcHMpOiBGaWxlbmFtZXNSZXN1bHQgfCB2b2lkID0+IHtcbiAgY29uc3Qge2NhbGxiYWNrLCBjbGlOYW1lLCBuYW1lLCBxdWlldCwgdHlwZSwgdXNlVHlwZXNjcmlwdH0gPSBwcm9wcztcblxuICBsZXQgbmFtZUNhcHM6IHN0cmluZztcbiAgY29uc3QgaXRlbVR5cGVzOiBzdHJpbmdbXSA9IFsnc3RvcmVzJywgJ3ZpZXdzJ107XG5cbiAgaWYoIW5hbWUpIHtcbiAgICBpZihpdGVtVHlwZXMuaW5jbHVkZXModHlwZSkpIHtcbiAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogJHt0eXBlfSBuYW1lIGlzIHJlcXVpcmVkLiBQbGVhc2UgdXNlICdsZXggLWgnIGZvciBvcHRpb25zLmAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgIHJldHVybiBjYWxsYmFjaz8uKDEpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBuYW1lQ2FwcyA9IGAke25hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCl9JHtuYW1lLnN1YnN0cigxKX1gO1xuICB9XG5cbiAgbG9nKGAke2NsaU5hbWV9IGFkZGluZyAke25hbWV9ICR7dHlwZX0uLi5gLCAnaW5mbycsIHF1aWV0KTtcblxuICBsZXQgdGVtcGxhdGVQYXRoOiBzdHJpbmc7XG4gIGxldCB0ZW1wbGF0ZUV4dDogc3RyaW5nO1xuICBsZXQgdGVtcGxhdGVSZWFjdDogc3RyaW5nO1xuXG4gIGlmKHVzZVR5cGVzY3JpcHQpIHtcbiAgICB0ZW1wbGF0ZVBhdGggPSAnLi4vLi4vdGVtcGxhdGVzL3R5cGVzY3JpcHQnO1xuICAgIHRlbXBsYXRlRXh0ID0gJy50cyc7XG4gICAgdGVtcGxhdGVSZWFjdCA9ICcudHN4JztcbiAgfSBlbHNlIHtcbiAgICB0ZW1wbGF0ZVBhdGggPSAnLi4vLi4vdGVtcGxhdGVzL2Zsb3cnO1xuICAgIHRlbXBsYXRlRXh0ID0gJy5qcyc7XG4gICAgdGVtcGxhdGVSZWFjdCA9ICcuanMnO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lQ2FwcyxcbiAgICB0ZW1wbGF0ZUV4dCxcbiAgICB0ZW1wbGF0ZVBhdGgsXG4gICAgdGVtcGxhdGVSZWFjdFxuICB9O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBTcGlubmVyIHtcbiAgZmFpbDogKHRleHQ/OiBzdHJpbmcpID0+IHZvaWQ7XG4gIHN0YXJ0OiAodGV4dD86IHN0cmluZykgPT4gdm9pZDtcbiAgc3VjY2VlZDogKHRleHQ/OiBzdHJpbmcpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVTcGlubmVyID0gKHF1aWV0ID0gZmFsc2UpOiBTcGlubmVyID0+IHtcbiAgaWYocXVpZXQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZmFpbDogKCkgPT4ge30sXG4gICAgICBzdGFydDogKCkgPT4ge30sXG4gICAgICBzdWNjZWVkOiAoKSA9PiB7fVxuICAgIH07XG4gIH1cblxuICByZXR1cm4gb3JhKHtjb2xvcjogJ3llbGxvdyd9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb3B5RmlsZXMgPSBhc3luYyAoZmlsZXM6IHN0cmluZ1tdLCB0eXBlTmFtZTogc3RyaW5nLCBzcGlubmVyLCBjb25maWc6IExleENvbmZpZ1R5cGUpID0+IHtcbiAgY29uc3Qge291dHB1dEZ1bGxQYXRoLCBzb3VyY2VGdWxsUGF0aH0gPSBjb25maWc7XG4gIGNvbnN0IGl0ZW1zID0gZmlsZXMubWFwKChmaWxlTmFtZTogc3RyaW5nKSA9PiAoe1xuICAgIGZyb206IGZpbGVOYW1lLFxuICAgIHRvOiBwYXRoUmVzb2x2ZShvdXRwdXRGdWxsUGF0aCwgcGF0aFJlbGF0aXZlKHNvdXJjZUZ1bGxQYXRoLCBmaWxlTmFtZSkpXG4gIH0pKTtcblxuICB0cnkge1xuICAgIHNwaW5uZXIuc3RhcnQoYENvcHlpbmcgJHt0eXBlTmFtZX0gZmlsZXMuLi5gKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChpdGVtcy5tYXAoKHtmcm9tLCB0b30pID0+IG5ldyBQcm9taXNlKFxuICAgICAgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBta2RpclN5bmMocGF0aFJlc29sdmUodG8sICcuLicpLCB7cmVjdXJzaXZlOiB0cnVlfSk7XG4gICAgICAgIHJldHVybiBjb3B5RmlsZShmcm9tLCB0bywgKGNvcHlFcnJvcikgPT4ge1xuICAgICAgICAgIGlmKGNvcHlFcnJvcikge1xuICAgICAgICAgICAgcmVqZWN0KCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICApKSk7XG4gICAgc3Bpbm5lci5zdWNjZWVkKGBTdWNjZXNzZnVsbHkgY29waWVkICR7ZmlsZXMubGVuZ3RofSAke3R5cGVOYW1lfSBmaWxlcyFgKTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIHNwaW5uZXIuZmFpbChgQ29weWluZyBvZiAke3R5cGVOYW1lfSBmaWxlcyBmYWlsZWQuYCk7XG4gICAgbG9nKGBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicpO1xuICAgIGxvZyhlcnJvciwgJ2Vycm9yJyk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBjb3B5Q29uZmlndXJlZEZpbGVzID0gYXN5bmMgKHNwaW5uZXIsIGNvbmZpZzogTGV4Q29uZmlnVHlwZSwgcXVpZXQ6IGJvb2xlYW4pID0+IHtcbiAgY29uc3Qge2NvcHlGaWxlczogY29weUZpbGVzQ29uZmlnLCBvdXRwdXRGdWxsUGF0aCwgc291cmNlRnVsbFBhdGgsIHNvdXJjZVBhdGh9ID0gY29uZmlnO1xuICBpZighY29weUZpbGVzQ29uZmlnIHx8IGNvcHlGaWxlc0NvbmZpZy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB0cnkge1xuICAgIHNwaW5uZXIuc3RhcnQoJ0NvcHlpbmcgY29uZmlndXJlZCBmaWxlcy4uLicpO1xuICAgIGxldCB0b3RhbENvcGllZCA9IDA7XG5cbiAgICBjb25zdCBiYXNlRGlyID0gc291cmNlRnVsbFBhdGggfHwgKHNvdXJjZVBhdGggPyBwYXRoUmVzb2x2ZShjd2QsIHNvdXJjZVBhdGgpIDogY3dkKTtcblxuICAgIGZvcihjb25zdCBwYXR0ZXJuIG9mIGNvcHlGaWxlc0NvbmZpZykge1xuICAgICAgY29uc3QgcmVzb2x2ZWRQYXR0ZXJuID0gcGF0aFJlc29sdmUoYmFzZURpciwgcGF0dGVybik7XG4gICAgICBjb25zdCBtYXRjaGluZ0ZpbGVzID0gZ2xvYlN5bmMocmVzb2x2ZWRQYXR0ZXJuLCB7XG4gICAgICAgIG5vZGlyOiB0cnVlLFxuICAgICAgICBhYnNvbHV0ZTogdHJ1ZVxuICAgICAgfSk7XG4gICAgICBpZihtYXRjaGluZ0ZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBpZighcXVpZXQpIHtcbiAgICAgICAgICBsb2coYFdhcm5pbmc6IE5vIGZpbGVzIGZvdW5kIG1hdGNoaW5nIHBhdHRlcm46ICR7cGF0dGVybn1gLCAnd2FybicsIHF1aWV0KTtcbiAgICAgICAgfVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgZm9yKGNvbnN0IHNvdXJjZUZpbGUgb2YgbWF0Y2hpbmdGaWxlcykge1xuICAgICAgICAvLyBDYWxjdWxhdGUgcmVsYXRpdmUgcGF0aCBmcm9tIHNvdXJjZSBkaXJlY3RvcnlcbiAgICAgICAgY29uc3QgcmVsYXRpdmVQYXRoID0gcGF0aFJlbGF0aXZlKGJhc2VEaXIsIHNvdXJjZUZpbGUpO1xuICAgICAgICAvLyBEZXRlcm1pbmUgZGVzdGluYXRpb24gcGF0aCBpbiBvdXRwdXQgZGlyZWN0b3J5XG4gICAgICAgIGNvbnN0IGRlc3RQYXRoID0gcGF0aFJlc29sdmUob3V0cHV0RnVsbFBhdGgsIHJlbGF0aXZlUGF0aCk7XG4gICAgICAgIC8vIENyZWF0ZSBkZXN0aW5hdGlvbiBkaXJlY3RvcnkgaWYgaXQgZG9lc24ndCBleGlzdFxuICAgICAgICBjb25zdCBkZXN0RGlyID0gcGF0aFJlc29sdmUoZGVzdFBhdGgsICcuLicpO1xuICAgICAgICBta2RpclN5bmMoZGVzdERpciwge3JlY3Vyc2l2ZTogdHJ1ZX0pO1xuXG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICBjb3B5RmlsZShzb3VyY2VGaWxlLCBkZXN0UGF0aCwgKGNvcHlFcnJvcikgPT4ge1xuICAgICAgICAgICAgaWYoY29weUVycm9yKSB7XG4gICAgICAgICAgICAgIHJlamVjdChjb3B5RXJyb3IpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRvdGFsQ29waWVkKys7XG4gICAgICB9XG4gICAgfVxuICAgIGlmKHRvdGFsQ29waWVkID4gMCkge1xuICAgICAgc3Bpbm5lci5zdWNjZWVkKGBTdWNjZXNzZnVsbHkgY29waWVkICR7dG90YWxDb3BpZWR9IGNvbmZpZ3VyZWQgZmlsZXMhYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNwaW5uZXIuc3VjY2VlZCgnTm8gY29uZmlndXJlZCBmaWxlcyB0byBjb3B5Jyk7XG4gICAgfVxuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgc3Bpbm5lci5mYWlsKCdGYWlsZWQgdG8gY29weSBjb25maWd1cmVkIGZpbGVzJyk7XG4gICAgbG9nKGBFcnJvciBjb3B5aW5nIGNvbmZpZ3VyZWQgZmlsZXM6ICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBjb3B5RmlsZVN5bmMgPSAoc291cmNlOiBzdHJpbmcsIHRhcmdldDogc3RyaW5nKSA9PiB7XG4gIGxldCB0YXJnZXRGaWxlOiBzdHJpbmcgPSB0YXJnZXQ7XG5cbiAgaWYoZXhpc3RzU3luYyh0YXJnZXQpKSB7XG4gICAgaWYobHN0YXRTeW5jKHRhcmdldCkuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgdGFyZ2V0RmlsZSA9IHBhdGhKb2luKHRhcmdldCwgcGF0aEJhc2VuYW1lKHNvdXJjZSkpO1xuICAgIH1cbiAgfVxuXG4gIHdyaXRlRmlsZVN5bmModGFyZ2V0RmlsZSwgcmVhZEZpbGVTeW5jKHNvdXJjZSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvcHlGb2xkZXJSZWN1cnNpdmVTeW5jID0gKHNvdXJjZTogc3RyaW5nLCB0YXJnZXQ6IHN0cmluZyk6IHZvaWQgPT4ge1xuICBsZXQgZmlsZXM6IHN0cmluZ1tdID0gW107XG5cbiAgY29uc3QgdGFyZ2V0Rm9sZGVyOiBzdHJpbmcgPSBwYXRoSm9pbih0YXJnZXQsIHBhdGhCYXNlbmFtZShzb3VyY2UpKTtcblxuICBpZighZXhpc3RzU3luYyh0YXJnZXRGb2xkZXIpKSB7XG4gICAgbWtkaXJTeW5jKHRhcmdldEZvbGRlcik7XG4gIH1cblxuICBpZihsc3RhdFN5bmMoc291cmNlKS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgZmlsZXMgPSByZWFkZGlyU3luYyhzb3VyY2UpO1xuICAgIGZpbGVzLmZvckVhY2goKGZpbGU6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgY3VyU291cmNlOiBzdHJpbmcgPSBwYXRoSm9pbihzb3VyY2UsIGZpbGUpO1xuXG4gICAgICBpZihsc3RhdFN5bmMoY3VyU291cmNlKS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgIGNvcHlGb2xkZXJSZWN1cnNpdmVTeW5jKGN1clNvdXJjZSwgdGFyZ2V0Rm9sZGVyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvcHlGaWxlU3luYyhjdXJTb3VyY2UsIHRhcmdldEZvbGRlcik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRQYWNrYWdlSnNvbiA9IChwYWNrYWdlUGF0aD86IHN0cmluZykgPT4ge1xuICBjb25zdCBmb3JtYXRQYXRoOiBzdHJpbmcgPSBwYWNrYWdlUGF0aCB8fCBgJHtwcm9jZXNzLmN3ZCgpfS9wYWNrYWdlLmpzb25gO1xuXG4gIGNvbnN0IHBhY2thZ2VEYXRhOiBzdHJpbmcgPSByZWFkRmlsZVN5bmMoZm9ybWF0UGF0aCkudG9TdHJpbmcoKTtcbiAgcmV0dXJuIEpTT04ucGFyc2UocGFja2FnZURhdGEpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZpbGVzQnlFeHQgPSAoZXh0OiBzdHJpbmcsIGNvbmZpZzogTGV4Q29uZmlnVHlwZSk6IHN0cmluZ1tdID0+IHtcbiAgY29uc3Qge3NvdXJjZUZ1bGxQYXRofSA9IGNvbmZpZztcbiAgcmV0dXJuIGdsb2JTeW5jKGAke3NvdXJjZUZ1bGxQYXRofS8qKi8qKiR7ZXh0fWApO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZUNvbmZsaWN0TW9kdWxlcyA9IChtb2R1bGVMaXN0OiBvYmplY3QpID0+IHtcbiAgY29uc3QgdXBkYXRlZExpc3Q6IG9iamVjdCA9IHsuLi5tb2R1bGVMaXN0fTtcblxuICBPYmplY3Qua2V5cyh1cGRhdGVkTGlzdCkuZm9yRWFjaCgobW9kdWxlTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgcmVnZXg6IFJlZ0V4cCA9IG5ldyBSZWdFeHAoJ14oPyFAdHlwZXMvKS4qPyhqZXN0fHdlYnBhY2spLiokJywgJ2dpJyk7XG4gICAgaWYocmVnZXgudGVzdChtb2R1bGVOYW1lKSkge1xuICAgICAgZGVsZXRlIHVwZGF0ZWRMaXN0W21vZHVsZU5hbWVdO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHVwZGF0ZWRMaXN0O1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZUZpbGVzID0gKGZpbGVOYW1lOiBzdHJpbmcsIGlzUmVsYXRpdmU6IGJvb2xlYW4gPSBmYWxzZSkgPT4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICBjb25zdCBmaWxlUGF0aDogc3RyaW5nID0gaXNSZWxhdGl2ZSA/IHBhdGhSZXNvbHZlKGN3ZCwgZmlsZU5hbWUpIDogZmlsZU5hbWU7XG4gIHRyeSB7XG4gICAgcmltcmFmU3luYyhmaWxlUGF0aCk7XG4gICAgcmV0dXJuIHJlc29sdmUobnVsbCk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgfVxufSk7XG5cbmV4cG9ydCBjb25zdCByZW1vdmVNb2R1bGVzID0gKCkgPT4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICB0cnkge1xuICAgIC8vIFJlbW92ZSBub2RlX21vZHVsZXNcbiAgICBhd2FpdCByZW1vdmVGaWxlcygnLi9ub2RlX21vZHVsZXMnLCB0cnVlKTtcblxuICAgIC8vIFJlbW92ZSB5YXJuIGxvY2tcbiAgICBhd2FpdCByZW1vdmVGaWxlcygnLi95YXJuLmxvY2snLCB0cnVlKTtcblxuICAgIC8vIFJlbW92ZSBucG0gbG9ja1xuICAgIGF3YWl0IHJlbW92ZUZpbGVzKCcuL3BhY2thZ2UtbG9jay5qc29uJywgdHJ1ZSk7XG5cbiAgICByZXNvbHZlKG51bGwpO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgcmVqZWN0KGVycm9yKTtcbiAgfVxufSk7XG5cbmV4cG9ydCBjb25zdCBzZXRQYWNrYWdlSnNvbiA9IChqc29uLCBwYWNrYWdlUGF0aD86IHN0cmluZykgPT4ge1xuICBpZighanNvbikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGZvcm1hdFBhdGg6IHN0cmluZyA9IHBhY2thZ2VQYXRoIHx8IGAke3Byb2Nlc3MuY3dkKCl9L3BhY2thZ2UuanNvbmA7XG5cbiAgd3JpdGVGaWxlU3luYyhmb3JtYXRQYXRoLCBKU09OLnN0cmluZ2lmeShqc29uLCBudWxsLCAyKSk7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIExpbmtlZE1vZHVsZVR5cGUge1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IGxpbmtlZE1vZHVsZXMgPSAoc3RhcnRQYXRoPzogc3RyaW5nKTogTGlua2VkTW9kdWxlVHlwZVtdID0+IHtcbiAgY29uc3Qgd29ya2luZ1BhdGg6IHN0cmluZyA9IHN0YXJ0UGF0aCB8fCBwcm9jZXNzLmN3ZCgpO1xuICBsZXQgbW9kdWxlUGF0aDogc3RyaW5nO1xuICBsZXQgcHJlZml4OiBzdHJpbmc7XG5cbiAgaWYod29ya2luZ1BhdGguaW5jbHVkZXMoJ0AnKSkge1xuICAgIHByZWZpeCA9IGBAJHt3b3JraW5nUGF0aC5zcGxpdCgnQCcpLnBvcCgpfWA7XG4gICAgbW9kdWxlUGF0aCA9IHdvcmtpbmdQYXRoO1xuICB9IGVsc2Uge1xuICAgIG1vZHVsZVBhdGggPSBwYXRoSm9pbih3b3JraW5nUGF0aCwgJ25vZGVfbW9kdWxlcycpO1xuICB9XG5cbiAgY29uc3QgZm91bmRQYXRoczogc3RyaW5nW10gPSBnbG9iU3luYyhgJHttb2R1bGVQYXRofS8qYCk7XG4gIHJldHVybiBmb3VuZFBhdGhzLnJlZHVjZSgobGlzdDogTGlua2VkTW9kdWxlVHlwZVtdLCBmb3VuZFBhdGg6IHN0cmluZykgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzdGF0cyA9IGxzdGF0U3luYyhmb3VuZFBhdGgpO1xuXG4gICAgICBpZihzdGF0cy5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgIGNvbnN0IGRlZXBMaXN0OiBMaW5rZWRNb2R1bGVUeXBlW10gPSBsaW5rZWRNb2R1bGVzKGZvdW5kUGF0aCk7XG4gICAgICAgIGxpc3QucHVzaCguLi5kZWVwTGlzdCk7XG4gICAgICB9IGVsc2UgaWYoc3RhdHMuaXNTeW1ib2xpY0xpbmsoKSkge1xuICAgICAgICBjb25zdCBtb2R1bGVOYW1lczogc3RyaW5nW10gPSAoW3ByZWZpeCwgcGF0aEJhc2VuYW1lKGZvdW5kUGF0aCldKS5maWx0ZXIoKGl0ZW06IHN0cmluZykgPT4gIWlzRW1wdHkoaXRlbSkpO1xuICAgICAgICBsaXN0LnB1c2goe25hbWU6IGAke21vZHVsZU5hbWVzLmpvaW4oJy8nKX1gLCBwYXRoOiBmb3VuZFBhdGh9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGxpc3Q7XG4gICAgfSBjYXRjaChmc0Vycm9yKSB7XG4gICAgICAvLyBTa2lwIGZpbGVzIHRoYXQgZG9uJ3QgZXhpc3Qgb3IgY2FuJ3QgYmUgYWNjZXNzZWRcbiAgICAgIHJldHVybiBsaXN0O1xuICAgIH1cbiAgfSwgW10pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrTGlua2VkTW9kdWxlcyA9ICgpID0+IHtcbiAgY29uc3QgbGlua2VkID0gbGlua2VkTW9kdWxlcygpO1xuXG4gIGlmKGxpbmtlZC5sZW5ndGgpIHtcbiAgICBjb25zdCBtc2dNb2R1bGU6IHN0cmluZyA9IGxpbmtlZC5sZW5ndGggPiAxID8gJ01vZHVsZXMnIDogJ01vZHVsZSc7XG4gICAgY29uc3QgbGlua2VkTXNnOiBzdHJpbmcgPSBsaW5rZWQucmVkdWNlKFxuICAgICAgKG1zZzogc3RyaW5nLCBsaW5rZWRNb2R1bGU6IExpbmtlZE1vZHVsZVR5cGUpID0+XG4gICAgICAgIGAke21zZ31cXG4gKiAke2xpbmtlZE1vZHVsZS5uYW1lfWAsXG4gICAgICBgTGlua2VkICR7bXNnTW9kdWxlfTpgXG4gICAgKTtcbiAgICBsb2coYm94ZW4obGlua2VkTXNnLCB7ZGltQm9yZGVyOiB0cnVlLCBwYWRkaW5nOiAxfSksICd3YXJuJyk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVUZW1wbGF0ZU5hbWUgPSAoZmlsZVBhdGg6IHN0cmluZywgcmVwbGFjZTogc3RyaW5nLCByZXBsYWNlQ2Fwczogc3RyaW5nKSA9PiB7XG4gIGxldCBkYXRhOiBzdHJpbmcgPSByZWFkRmlsZVN5bmMoZmlsZVBhdGgsICd1dGY4Jyk7XG4gIGRhdGEgPSBkYXRhLnJlcGxhY2UoL3NhbXBsZS9nLCByZXBsYWNlKTtcbiAgZGF0YSA9IGRhdGEucmVwbGFjZSgvU2FtcGxlL2csIHJlcGxhY2VDYXBzKTtcbiAgd3JpdGVGaWxlU3luYyhmaWxlUGF0aCwgZGF0YSwgJ3V0ZjgnKTtcbn07Il0sCiAgIm1hcHBpbmdzIjogIkFBS0EsT0FBTyxXQUFXO0FBQ2xCLFNBQVEsVUFBVSxZQUFZLFdBQVcsV0FBVyxhQUFhLGNBQWMscUJBQW9CO0FBQ25HLFNBQVEsUUFBUSxnQkFBZTtBQUMvQixPQUFPLGFBQWE7QUFDcEIsT0FBTyxTQUFTO0FBQ2hCLFNBQVEsWUFBWSxjQUFjLFFBQVEsVUFBVSxZQUFZLGNBQWMsV0FBVyxtQkFBa0I7QUFDM0csU0FBUSxrQkFBaUI7QUFHekIsU0FBUSxXQUFVO0FBS1gsTUFBTSxNQUFjLFFBQVEsSUFBSTtBQWtCaEMsTUFBTSxlQUFlLENBQUMsVUFBcUQ7QUFDaEYsUUFBTSxFQUFDLFVBQVUsU0FBUyxNQUFNLE9BQU8sTUFBTSxjQUFhLElBQUk7QUFFOUQsTUFBSTtBQUNKLFFBQU0sWUFBc0IsQ0FBQyxVQUFVLE9BQU87QUFFOUMsTUFBRyxDQUFDLE1BQU07QUFDUixRQUFHLFVBQVUsU0FBUyxJQUFJLEdBQUc7QUFDM0IsVUFBSTtBQUFBLEVBQUssT0FBTyxXQUFXLElBQUksdURBQXVELFNBQVMsS0FBSztBQUNwRyxhQUFPLFdBQVcsQ0FBQztBQUFBLElBQ3JCO0FBQUEsRUFDRixPQUFPO0FBQ0wsZUFBVyxHQUFHLEtBQUssT0FBTyxDQUFDLEVBQUUsWUFBWSxDQUFDLEdBQUcsS0FBSyxPQUFPLENBQUMsQ0FBQztBQUFBLEVBQzdEO0FBRUEsTUFBSSxHQUFHLE9BQU8sV0FBVyxJQUFJLElBQUksSUFBSSxPQUFPLFFBQVEsS0FBSztBQUV6RCxNQUFJO0FBQ0osTUFBSTtBQUNKLE1BQUk7QUFFSixNQUFHLGVBQWU7QUFDaEIsbUJB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
|
package/dist/utils/deepMerge.js
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
const deepMerge = (target, source) => {
|
|
2
|
-
if (!source) return target;
|
|
3
|
-
const result = { ...target };
|
|
4
|
-
for (const key in source) {
|
|
5
|
-
if (source.hasOwnProperty(key)) {
|
|
6
|
-
if (source[key] && typeof source[key] === "object" && !Array.isArray(source[key])) {
|
|
7
|
-
result[key] = deepMerge(target[key] || {}, source[key]);
|
|
8
|
-
} else if (Array.isArray(source[key])) {
|
|
9
|
-
if (Array.isArray(target[key])) {
|
|
10
|
-
result[key] = [...target[key], ...source[key]];
|
|
11
|
-
} else {
|
|
12
|
-
result[key] = [...source[key]];
|
|
13
|
-
}
|
|
14
|
-
} else {
|
|
15
|
-
result[key] = source[key];
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
return result;
|
|
20
|
-
};
|
|
21
|
-
export {
|
|
22
|
-
deepMerge
|
|
23
|
-
};
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL2RlZXBNZXJnZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cblxuLyoqXG4gKiBEZWVwIG1lcmdlIGZ1bmN0aW9uIHRoYXQgcmVjdXJzaXZlbHkgbWVyZ2VzIG9iamVjdHMgYW5kIGFycmF5c1xuICogQHBhcmFtIHRhcmdldCAtIFRoZSB0YXJnZXQgb2JqZWN0IHRvIG1lcmdlIGludG9cbiAqIEBwYXJhbSBzb3VyY2UgLSBUaGUgc291cmNlIG9iamVjdCB0byBtZXJnZSBmcm9tXG4gKiBAcmV0dXJucyBUaGUgbWVyZ2VkIG9iamVjdFxuICovXG5leHBvcnQgY29uc3QgZGVlcE1lcmdlID0gKHRhcmdldDogYW55LCBzb3VyY2U6IGFueSk6IGFueSA9PiB7XG4gIGlmKCFzb3VyY2UpIHJldHVybiB0YXJnZXQ7XG5cbiAgY29uc3QgcmVzdWx0ID0gey4uLnRhcmdldH07XG5cbiAgZm9yKGNvbnN0IGtleSBpbiBzb3VyY2UpIHtcbiAgICBpZihzb3VyY2UuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgaWYoc291cmNlW2tleV0gJiYgdHlwZW9mIHNvdXJjZVtrZXldID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShzb3VyY2Vba2V5XSkpIHtcbiAgICAgICAgcmVzdWx0W2tleV0gPSBkZWVwTWVyZ2UodGFyZ2V0W2tleV0gfHwge30sIHNvdXJjZVtrZXldKTtcbiAgICAgIH0gZWxzZSBpZihBcnJheS5pc0FycmF5KHNvdXJjZVtrZXldKSkge1xuICAgICAgICAvLyBGb3IgYXJyYXlzLCBtZXJnZSBpZiBib3RoIGFyZSBhcnJheXMsIG90aGVyd2lzZSByZXBsYWNlXG4gICAgICAgIGlmKEFycmF5LmlzQXJyYXkodGFyZ2V0W2tleV0pKSB7XG4gICAgICAgICAgcmVzdWx0W2tleV0gPSBbLi4udGFyZ2V0W2tleV0sIC4uLnNvdXJjZVtrZXldXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHRba2V5XSA9IFsuLi5zb3VyY2Vba2V5XV07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gc291cmNlW2tleV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07Il0sCiAgIm1hcHBpbmdzIjogIkFBV08sTUFBTSxZQUFZLENBQUMsUUFBYSxXQUFxQjtBQUMxRCxNQUFHLENBQUMsT0FBUSxRQUFPO0FBRW5CLFFBQU0sU0FBUyxFQUFDLEdBQUcsT0FBTTtBQUV6QixhQUFVLE9BQU8sUUFBUTtBQUN2QixRQUFHLE9BQU8sZUFBZSxHQUFHLEdBQUc7QUFDN0IsVUFBRyxPQUFPLEdBQUcsS0FBSyxPQUFPLE9BQU8sR0FBRyxNQUFNLFlBQVksQ0FBQyxNQUFNLFFBQVEsT0FBTyxHQUFHLENBQUMsR0FBRztBQUNoRixlQUFPLEdBQUcsSUFBSSxVQUFVLE9BQU8sR0FBRyxLQUFLLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQztBQUFBLE1BQ3hELFdBQVUsTUFBTSxRQUFRLE9BQU8sR0FBRyxDQUFDLEdBQUc7QUFFcEMsWUFBRyxNQUFNLFFBQVEsT0FBTyxHQUFHLENBQUMsR0FBRztBQUM3QixpQkFBTyxHQUFHLElBQUksQ0FBQyxHQUFHLE9BQU8sR0FBRyxHQUFHLEdBQUcsT0FBTyxHQUFHLENBQUM7QUFBQSxRQUMvQyxPQUFPO0FBQ0wsaUJBQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQztBQUFBLFFBQy9CO0FBQUEsTUFDRixPQUFPO0FBQ0wsZUFBTyxHQUFHLElBQUksT0FBTyxHQUFHO0FBQUEsTUFDMUI7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLFNBQU87QUFDVDsiLAogICJuYW1lcyI6IFtdCn0K
|
package/dist/utils/file.js
DELETED
|
@@ -1,185 +0,0 @@
|
|
|
1
|
-
import findFileUp from "find-file-up";
|
|
2
|
-
import { existsSync, readFileSync } from "fs";
|
|
3
|
-
import { sync as globSync } from "glob";
|
|
4
|
-
import { resolve as pathResolve, dirname } from "path";
|
|
5
|
-
import { LexConfig } from "../LexConfig.js";
|
|
6
|
-
function getDirName() {
|
|
7
|
-
try {
|
|
8
|
-
return eval('new URL(".", import.meta.url).pathname');
|
|
9
|
-
} catch {
|
|
10
|
-
return process.cwd();
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
function getFilePath(relativePath) {
|
|
14
|
-
try {
|
|
15
|
-
return eval('require("url").fileURLToPath(new URL(relativePath, import.meta.url))');
|
|
16
|
-
} catch {
|
|
17
|
-
if (relativePath === "../../../package.json") {
|
|
18
|
-
return pathResolve(process.cwd(), "package.json");
|
|
19
|
-
}
|
|
20
|
-
return pathResolve(process.cwd(), relativePath);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
function getLexPackageJsonPath() {
|
|
24
|
-
const LEX_PACKAGE_NAME = "@nlabs/lex";
|
|
25
|
-
const lexInNodeModules = pathResolve(process.cwd(), "node_modules/@nlabs/lex/package.json");
|
|
26
|
-
if (existsSync(lexInNodeModules)) {
|
|
27
|
-
return lexInNodeModules;
|
|
28
|
-
}
|
|
29
|
-
let startDir;
|
|
30
|
-
if (process.env.LEX_ROOT) {
|
|
31
|
-
startDir = process.env.LEX_ROOT;
|
|
32
|
-
} else {
|
|
33
|
-
try {
|
|
34
|
-
startDir = eval('new URL(".", import.meta.url).pathname');
|
|
35
|
-
} catch (err1) {
|
|
36
|
-
try {
|
|
37
|
-
startDir = eval('__filename ? require("path").dirname(__filename) : null');
|
|
38
|
-
if (!startDir) {
|
|
39
|
-
throw new Error("__filename not available");
|
|
40
|
-
}
|
|
41
|
-
} catch (err2) {
|
|
42
|
-
try {
|
|
43
|
-
if (process.argv[1] && !process.argv[1].includes("node")) {
|
|
44
|
-
startDir = dirname(process.argv[1]);
|
|
45
|
-
} else {
|
|
46
|
-
throw new Error("process.argv[1] not suitable");
|
|
47
|
-
}
|
|
48
|
-
} catch (err3) {
|
|
49
|
-
startDir = process.cwd();
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
let dir = startDir;
|
|
55
|
-
for (let i = 0; i < 8; i++) {
|
|
56
|
-
const pkgPath = pathResolve(dir, "package.json");
|
|
57
|
-
if (existsSync(pkgPath)) {
|
|
58
|
-
try {
|
|
59
|
-
const pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
|
|
60
|
-
if (pkg.name === LEX_PACKAGE_NAME) {
|
|
61
|
-
return pkgPath;
|
|
62
|
-
}
|
|
63
|
-
} catch (error) {
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
const parent = dirname(dir);
|
|
67
|
-
if (parent === dir) {
|
|
68
|
-
break;
|
|
69
|
-
}
|
|
70
|
-
dir = parent;
|
|
71
|
-
}
|
|
72
|
-
return pathResolve(process.cwd(), "package.json");
|
|
73
|
-
}
|
|
74
|
-
const relativeFilePath = (filename, dirPath = "./", backUp = 0) => {
|
|
75
|
-
const nestDepth = 10;
|
|
76
|
-
if (backUp) {
|
|
77
|
-
const filePath = findFileUp.sync(filename, dirPath, nestDepth);
|
|
78
|
-
const previousPath = Array(backUp).fill(null).map(() => "../").join("");
|
|
79
|
-
return pathResolve(filePath, previousPath);
|
|
80
|
-
}
|
|
81
|
-
return findFileUp.sync(filename, dirPath, nestDepth);
|
|
82
|
-
};
|
|
83
|
-
const relativeNodePath = (filename, dirPath = "./", backUp = 0) => {
|
|
84
|
-
const nestDepth = 10;
|
|
85
|
-
const modulePath = `node_modules/${filename}`;
|
|
86
|
-
if (dirPath !== "./") {
|
|
87
|
-
const lexModulePath = pathResolve(dirPath, modulePath);
|
|
88
|
-
if (existsSync(lexModulePath)) {
|
|
89
|
-
return lexModulePath;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
const projectPath = pathResolve(process.cwd(), modulePath);
|
|
93
|
-
if (existsSync(projectPath)) {
|
|
94
|
-
return projectPath;
|
|
95
|
-
}
|
|
96
|
-
if (backUp) {
|
|
97
|
-
const filePath = findFileUp.sync(modulePath, dirPath, nestDepth);
|
|
98
|
-
const previousPath = Array(nestDepth).fill(null).map(() => "../").join("");
|
|
99
|
-
return pathResolve(filePath, previousPath);
|
|
100
|
-
}
|
|
101
|
-
return findFileUp.sync(modulePath, dirPath, nestDepth) || `/node_modules/${filename}`;
|
|
102
|
-
};
|
|
103
|
-
const getNodePath = (moduleName) => {
|
|
104
|
-
const dirName = getDirName();
|
|
105
|
-
const modulePath = `node_modules/${moduleName}`;
|
|
106
|
-
const projectPath = pathResolve(process.cwd(), modulePath);
|
|
107
|
-
if (existsSync(projectPath)) {
|
|
108
|
-
return projectPath;
|
|
109
|
-
}
|
|
110
|
-
const repoPath = findFileUp.sync(modulePath, dirName);
|
|
111
|
-
if (repoPath && existsSync(repoPath)) {
|
|
112
|
-
return repoPath;
|
|
113
|
-
}
|
|
114
|
-
const localPath = findFileUp.sync(modulePath, "./", 10) || `./${modulePath}`;
|
|
115
|
-
return localPath;
|
|
116
|
-
};
|
|
117
|
-
const resolveBinaryPath = (binaryName, packageName) => {
|
|
118
|
-
const lexDir = LexConfig.getLexDir();
|
|
119
|
-
const lexBinPath = pathResolve(lexDir, `node_modules/.bin/${binaryName}`);
|
|
120
|
-
if (existsSync(lexBinPath)) {
|
|
121
|
-
return lexBinPath;
|
|
122
|
-
}
|
|
123
|
-
if (packageName) {
|
|
124
|
-
const lexPackageBinPath = pathResolve(lexDir, `node_modules/${packageName}/bin/${binaryName}`);
|
|
125
|
-
if (existsSync(lexPackageBinPath)) {
|
|
126
|
-
return lexPackageBinPath;
|
|
127
|
-
}
|
|
128
|
-
const lexPackageBinJsPath = pathResolve(lexDir, `node_modules/${packageName}/bin/${binaryName}.js`);
|
|
129
|
-
if (existsSync(lexPackageBinJsPath)) {
|
|
130
|
-
return lexPackageBinJsPath;
|
|
131
|
-
}
|
|
132
|
-
const lexPackageBinCjsPath = pathResolve(lexDir, `node_modules/${packageName}/bin/${binaryName}.cjs`);
|
|
133
|
-
if (existsSync(lexPackageBinCjsPath)) {
|
|
134
|
-
return lexPackageBinCjsPath;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
const checkBinUp = (startDir2) => {
|
|
138
|
-
let checkDir = startDir2;
|
|
139
|
-
for (let i = 0; i < 5; i++) {
|
|
140
|
-
const monorepoBinPath = pathResolve(checkDir, `node_modules/.bin/${binaryName}`);
|
|
141
|
-
if (existsSync(monorepoBinPath)) {
|
|
142
|
-
return monorepoBinPath;
|
|
143
|
-
}
|
|
144
|
-
const parentDir = pathResolve(checkDir, "..");
|
|
145
|
-
if (parentDir === checkDir) {
|
|
146
|
-
break;
|
|
147
|
-
}
|
|
148
|
-
checkDir = parentDir;
|
|
149
|
-
}
|
|
150
|
-
return "";
|
|
151
|
-
};
|
|
152
|
-
const fromCwd = checkBinUp(process.cwd());
|
|
153
|
-
if (fromCwd) {
|
|
154
|
-
return fromCwd;
|
|
155
|
-
}
|
|
156
|
-
const fromLex = checkBinUp(lexDir);
|
|
157
|
-
if (fromLex) {
|
|
158
|
-
return fromLex;
|
|
159
|
-
}
|
|
160
|
-
return "";
|
|
161
|
-
};
|
|
162
|
-
const findTailwindCssPath = () => {
|
|
163
|
-
const tailwindPatterns = ["**/tailwind.css"];
|
|
164
|
-
for (const pattern of tailwindPatterns) {
|
|
165
|
-
const files = globSync(pattern, {
|
|
166
|
-
cwd: process.cwd(),
|
|
167
|
-
ignore: ["**/node_modules/**", "**/dist/**", "**/build/**", "**/.storybook/**"]
|
|
168
|
-
});
|
|
169
|
-
if (files.length > 0) {
|
|
170
|
-
return pathResolve(process.cwd(), files[0]);
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
return "";
|
|
174
|
-
};
|
|
175
|
-
export {
|
|
176
|
-
findTailwindCssPath,
|
|
177
|
-
getDirName,
|
|
178
|
-
getFilePath,
|
|
179
|
-
getLexPackageJsonPath,
|
|
180
|
-
getNodePath,
|
|
181
|
-
relativeFilePath,
|
|
182
|
-
relativeNodePath,
|
|
183
|
-
resolveBinaryPath
|
|
184
|
-
};
|
|
185
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL2ZpbGUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgZmluZEZpbGVVcCBmcm9tICdmaW5kLWZpbGUtdXAnO1xuaW1wb3J0IHtleGlzdHNTeW5jLCByZWFkRmlsZVN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCB7c3luYyBhcyBnbG9iU3luY30gZnJvbSAnZ2xvYic7XG5pbXBvcnQge3Jlc29sdmUgYXMgcGF0aFJlc29sdmUsIGRpcm5hbWV9IGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQge0xleENvbmZpZ30gZnJvbSAnLi4vTGV4Q29uZmlnLmpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldERpck5hbWUoKTogc3RyaW5nIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZXZhbCgnbmV3IFVSTChcIi5cIiwgaW1wb3J0Lm1ldGEudXJsKS5wYXRobmFtZScpO1xuICB9IGNhdGNoe1xuICAgIHJldHVybiBwcm9jZXNzLmN3ZCgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlUGF0aChyZWxhdGl2ZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGV2YWwoJ3JlcXVpcmUoXCJ1cmxcIikuZmlsZVVSTFRvUGF0aChuZXcgVVJMKHJlbGF0aXZlUGF0aCwgaW1wb3J0Lm1ldGEudXJsKSknKTtcbiAgfSBjYXRjaHtcbiAgICBpZihyZWxhdGl2ZVBhdGggPT09ICcuLi8uLi8uLi9wYWNrYWdlLmpzb24nKSB7XG4gICAgICByZXR1cm4gcGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgJ3BhY2thZ2UuanNvbicpO1xuICAgIH1cbiAgICByZXR1cm4gcGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgcmVsYXRpdmVQYXRoKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGV4UGFja2FnZUpzb25QYXRoKCk6IHN0cmluZyB7XG4gIGNvbnN0IExFWF9QQUNLQUdFX05BTUUgPSAnQG5sYWJzL2xleCc7XG5cbiAgY29uc3QgbGV4SW5Ob2RlTW9kdWxlcyA9IHBhdGhSZXNvbHZlKHByb2Nlc3MuY3dkKCksICdub2RlX21vZHVsZXMvQG5sYWJzL2xleC9wYWNrYWdlLmpzb24nKTtcblxuICBpZihleGlzdHNTeW5jKGxleEluTm9kZU1vZHVsZXMpKSB7XG4gICAgcmV0dXJuIGxleEluTm9kZU1vZHVsZXM7XG4gIH1cblxuICBsZXQgc3RhcnREaXI6IHN0cmluZztcblxuICBpZihwcm9jZXNzLmVudi5MRVhfUk9PVCkge1xuICAgIHN0YXJ0RGlyID0gcHJvY2Vzcy5lbnYuTEVYX1JPT1Q7XG4gIH0gZWxzZSB7XG4gICAgdHJ5IHtcbiAgICAgIHN0YXJ0RGlyID0gZXZhbCgnbmV3IFVSTChcIi5cIiwgaW1wb3J0Lm1ldGEudXJsKS5wYXRobmFtZScpO1xuICAgIH0gY2F0Y2goZXJyMSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgc3RhcnREaXIgPSBldmFsKCdfX2ZpbGVuYW1lID8gcmVxdWlyZShcInBhdGhcIikuZGlybmFtZShfX2ZpbGVuYW1lKSA6IG51bGwnKTtcbiAgICAgICAgaWYoIXN0YXJ0RGlyKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdfX2ZpbGVuYW1lIG5vdCBhdmFpbGFibGUnKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaChlcnIyKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaWYocHJvY2Vzcy5hcmd2WzFdICYmICFwcm9jZXNzLmFyZ3ZbMV0uaW5jbHVkZXMoJ25vZGUnKSkge1xuICAgICAgICAgICAgc3RhcnREaXIgPSBkaXJuYW1lKHByb2Nlc3MuYXJndlsxXSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5hcmd2WzFdIG5vdCBzdWl0YWJsZScpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaChlcnIzKSB7XG4gICAgICAgICAgc3RhcnREaXIgPSBwcm9jZXNzLmN3ZCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbGV0IGRpciA9IHN0YXJ0RGlyO1xuICBmb3IobGV0IGkgPSAwOyBpIDwgODsgaSsrKSB7XG4gICAgY29uc3QgcGtnUGF0aCA9IHBhdGhSZXNvbHZlKGRpciwgJ3BhY2thZ2UuanNvbicpO1xuICAgIGlmKGV4aXN0c1N5bmMocGtnUGF0aCkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHBrZyA9IEpTT04ucGFyc2UocmVhZEZpbGVTeW5jKHBrZ1BhdGgsICd1dGY4JykpO1xuICAgICAgICBpZihwa2cubmFtZSA9PT0gTEVYX1BBQ0tBR0VfTkFNRSkge1xuICAgICAgICAgIHJldHVybiBwa2dQYXRoO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHBhcmVudCA9IGRpcm5hbWUoZGlyKTtcbiAgICBpZihwYXJlbnQgPT09IGRpcikge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRpciA9IHBhcmVudDtcbiAgfVxuXG4gIHJldHVybiBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCAncGFja2FnZS5qc29uJyk7XG59XG5cbmV4cG9ydCBjb25zdCByZWxhdGl2ZUZpbGVQYXRoID0gKGZpbGVuYW1lOiBzdHJpbmcsIGRpclBhdGg6IHN0cmluZyA9ICcuLycsIGJhY2tVcDogbnVtYmVyID0gMCk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IG5lc3REZXB0aDogbnVtYmVyID0gMTA7XG5cbiAgaWYoYmFja1VwKSB7XG4gICAgY29uc3QgZmlsZVBhdGg6IHN0cmluZyA9IGZpbmRGaWxlVXAuc3luYyhmaWxlbmFtZSwgZGlyUGF0aCwgbmVzdERlcHRoKTtcbiAgICBjb25zdCBwcmV2aW91c1BhdGg6IHN0cmluZyA9IEFycmF5KGJhY2tVcCkuZmlsbChudWxsKS5tYXAoKCkgPT4gJy4uLycpLmpvaW4oJycpO1xuICAgIHJldHVybiBwYXRoUmVzb2x2ZShmaWxlUGF0aCwgcHJldmlvdXNQYXRoKTtcbiAgfVxuXG4gIHJldHVybiBmaW5kRmlsZVVwLnN5bmMoZmlsZW5hbWUsIGRpclBhdGgsIG5lc3REZXB0aCk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVsYXRpdmVOb2RlUGF0aCA9IChmaWxlbmFtZTogc3RyaW5nLCBkaXJQYXRoOiBzdHJpbmcgPSAnLi8nLCBiYWNrVXA6IG51bWJlciA9IDApOiBzdHJpbmcgPT4ge1xuICBjb25zdCBuZXN0RGVwdGg6IG51bWJlciA9IDEwO1xuICBjb25zdCBtb2R1bGVQYXRoID0gYG5vZGVfbW9kdWxlcy8ke2ZpbGVuYW1lfWA7XG5cbiAgaWYoZGlyUGF0aCAhPT0gJy4vJykge1xuICAgIGNvbnN0IGxleE1vZHVsZVBhdGggPSBwYXRoUmVzb2x2ZShkaXJQYXRoLCBtb2R1bGVQYXRoKTtcbiAgICBpZihleGlzdHNTeW5jKGxleE1vZHVsZVBhdGgpKSB7XG4gICAgICByZXR1cm4gbGV4TW9kdWxlUGF0aDtcbiAgICB9XG4gIH1cblxuICBjb25zdCBwcm9qZWN0UGF0aCA9IHBhdGhSZXNvbHZlKHByb2Nlc3MuY3dkKCksIG1vZHVsZVBhdGgpO1xuICBpZihleGlzdHNTeW5jKHByb2plY3RQYXRoKSkge1xuICAgIHJldHVybiBwcm9qZWN0UGF0aDtcbiAgfVxuXG4gIGlmKGJhY2tVcCkge1xuICAgIGNvbnN0IGZpbGVQYXRoOiBzdHJpbmcgPSBmaW5kRmlsZVVwLnN5bmMobW9kdWxlUGF0aCwgZGlyUGF0aCwgbmVzdERlcHRoKTtcbiAgICBjb25zdCBwcmV2aW91c1BhdGg6IHN0cmluZyA9IEFycmF5KG5lc3REZXB0aCkuZmlsbChudWxsKS5tYXAoKCkgPT4gJy4uLycpLmpvaW4oJycpO1xuICAgIHJldHVybiBwYXRoUmVzb2x2ZShmaWxlUGF0aCwgcHJldmlvdXNQYXRoKTtcbiAgfVxuXG4gIHJldHVybiBmaW5kRmlsZVVwLnN5bmMobW9kdWxlUGF0aCwgZGlyUGF0aCwgbmVzdERlcHRoKSB8fCBgL25vZGVfbW9kdWxlcy8ke2ZpbGVuYW1lfWA7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Tm9kZVBhdGggPSAobW9kdWxlTmFtZTogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3QgZGlyTmFtZSA9IGdldERpck5hbWUoKTtcbiAgY29uc3QgbW9kdWxlUGF0aDogc3RyaW5nID0gYG5vZGVfbW9kdWxlcy8ke21vZHVsZU5hbWV9YDtcblxuICBjb25zdCBwcm9qZWN0UGF0aCA9IHBhdGhSZXNvbHZlKHByb2Nlc3MuY3dkKCksIG1vZHVsZVBhdGgpO1xuICBpZihleGlzdHNTeW5jKHByb2plY3RQYXRoKSkge1xuICAgIHJldHVybiBwcm9qZWN0UGF0aDtcbiAgfVxuXG4gIGNvbnN0IHJlcG9QYXRoOiBzdHJpbmcgPSBmaW5kRmlsZVVwLnN5bmMobW9kdWxlUGF0aCwgZGlyTmFtZSk7XG4gIGlmKHJlcG9QYXRoICYmIGV4aXN0c1N5bmMocmVwb1BhdGgpKSB7XG4gICAgcmV0dXJuIHJlcG9QYXRoO1xuICB9XG5cbiAgY29uc3QgbG9jYWxQYXRoOiBzdHJpbmcgPSBmaW5kRmlsZVVwLnN5bmMobW9kdWxlUGF0aCwgJy4vJywgMTApIHx8IGAuLyR7bW9kdWxlUGF0aH1gO1xuICByZXR1cm4gbG9jYWxQYXRoO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlc29sdmVCaW5hcnlQYXRoID0gKGJpbmFyeU5hbWU6IHN0cmluZywgcGFja2FnZU5hbWU/OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBsZXhEaXIgPSBMZXhDb25maWcuZ2V0TGV4RGlyKCk7XG5cbiAgY29uc3QgbGV4QmluUGF0aCA9IHBhdGhSZXNvbHZlKGxleERpciwgYG5vZGVfbW9kdWxlcy8uYmluLyR7YmluYXJ5TmFtZX1gKTtcbiAgaWYoZXhpc3RzU3luYyhsZXhCaW5QYXRoKSkge1xuICAgIHJldHVybiBsZXhCaW5QYXRoO1xuICB9XG5cbiAgaWYocGFja2FnZU5hbWUpIHtcbiAgICBjb25zdCBsZXhQYWNrYWdlQmluUGF0aCA9IHBhdGhSZXNvbHZlKGxleERpciwgYG5vZGVfbW9kdWxlcy8ke3BhY2thZ2VOYW1lfS9iaW4vJHtiaW5hcnlOYW1lfWApO1xuICAgIGlmKGV4aXN0c1N5bmMobGV4UGFja2FnZUJpblBhdGgpKSB7XG4gICAgICByZXR1cm4gbGV4UGFja2FnZUJpblBhdGg7XG4gICAgfVxuXG4gICAgY29uc3QgbGV4UGFja2FnZUJpbkpzUGF0aCA9IHBhdGhSZXNvbHZlKGxleERpciwgYG5vZGVfbW9kdWxlcy8ke3BhY2thZ2VOYW1lfS9iaW4vJHtiaW5hcnlOYW1lfS5qc2ApO1xuICAgIGlmKGV4aXN0c1N5bmMobGV4UGFja2FnZUJpbkpzUGF0aCkpIHtcbiAgICAgIHJldHVybiBsZXhQYWNrYWdlQmluSnNQYXRoO1xuICAgIH1cblxuICAgIGNvbnN0IGxleFBhY2thZ2VCaW5DanNQYXRoID0gcGF0aFJlc29sdmUobGV4RGlyLCBgbm9kZV9tb2R1bGVzLyR7cGFja2FnZU5hbWV9L2Jpbi8ke2JpbmFyeU5hbWV9LmNqc2ApO1xuICAgIGlmKGV4aXN0c1N5bmMobGV4UGFja2FnZUJpbkNqc1BhdGgpKSB7XG4gICAgICByZXR1cm4gbGV4UGFja2FnZUJpbkNqc1BhdGg7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgY2hlY2tCaW5VcCA9IChzdGFydERpcjogc3RyaW5nKSA9PiB7XG4gICAgbGV0IGNoZWNrRGlyID0gc3RhcnREaXI7XG4gICAgZm9yKGxldCBpID0gMDsgaSA8IDU7IGkrKykge1xuICAgICAgY29uc3QgbW9ub3JlcG9CaW5QYXRoID0gcGF0aFJlc29sdmUoY2hlY2tEaXIsIGBub2RlX21vZHVsZXMvLmJpbi8ke2JpbmFyeU5hbWV9YCk7XG4gICAgICBpZihleGlzdHNTeW5jKG1vbm9yZXBvQmluUGF0aCkpIHtcbiAgICAgICAgcmV0dXJuIG1vbm9yZXBvQmluUGF0aDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhcmVudERpciA9IHBhdGhSZXNvbHZlKGNoZWNrRGlyLCAnLi4nKTtcbiAgICAgIGlmKHBhcmVudERpciA9PT0gY2hlY2tEaXIpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjaGVja0RpciA9IHBhcmVudERpcjtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9O1xuXG4gIGNvbnN0IGZyb21Dd2QgPSBjaGVja0JpblVwKHByb2Nlc3MuY3dkKCkpO1xuICBpZihmcm9tQ3dkKSB7XG4gICAgcmV0dXJuIGZyb21Dd2Q7XG4gIH1cblxuICBjb25zdCBmcm9tTGV4ID0gY2hlY2tCaW5VcChsZXhEaXIpO1xuICBpZihmcm9tTGV4KSB7XG4gICAgcmV0dXJuIGZyb21MZXg7XG4gIH1cblxuICByZXR1cm4gJyc7XG59O1xuXG5leHBvcnQgY29uc3QgZmluZFRhaWx3aW5kQ3NzUGF0aCA9ICgpOiBzdHJpbmcgPT4ge1xuICBjb25zdCB0YWlsd2luZFBhdHRlcm5zID0gWycqKi90YWlsd2luZC5jc3MnXTtcblxuICBmb3IoY29uc3QgcGF0dGVybiBvZiB0YWlsd2luZFBhdHRlcm5zKSB7XG4gICAgY29uc3QgZmlsZXMgPSBnbG9iU3luYyhwYXR0ZXJuLCB7XG4gICAgICBjd2Q6IHByb2Nlc3MuY3dkKCksXG4gICAgICBpZ25vcmU6IFsnKiovbm9kZV9tb2R1bGVzLyoqJywgJyoqL2Rpc3QvKionLCAnKiovYnVpbGQvKionLCAnKiovLnN0b3J5Ym9vay8qKiddXG4gICAgfSk7XG5cbiAgICBpZihmaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gcGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgZmlsZXNbMF0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiAnJztcbn07Il0sCiAgIm1hcHBpbmdzIjogIkFBSUEsT0FBTyxnQkFBZ0I7QUFDdkIsU0FB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
|
package/emptyModule.js
DELETED
|
File without changes
|
package/eslint.config.js
DELETED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/{dist → lib}/lex.d.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/{dist → lib}/types.d.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|