@nlabs/lex 1.32.0 → 1.37.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/.postcssrc.js +1 -1
- package/dist/LexConfig.js +22 -43
- package/dist/commands/build.js +24 -42
- package/dist/commands/bulid.test.js +1 -1
- package/dist/commands/clean.js +18 -21
- package/dist/commands/compile.js +53 -57
- package/dist/commands/config.js +17 -23
- package/dist/commands/copy.js +21 -26
- package/dist/commands/create.js +44 -49
- package/dist/commands/dev.js +21 -39
- package/dist/commands/index.js +9 -13
- package/dist/commands/init.js +21 -26
- package/dist/commands/link.js +13 -16
- package/dist/commands/lint.js +17 -23
- package/dist/commands/migrate.js +18 -23
- package/dist/commands/publish.js +23 -45
- package/dist/commands/test.js +17 -21
- package/dist/commands/update.js +15 -21
- package/dist/commands/upgrade.js +17 -22
- package/dist/commands/versions.js +17 -21
- package/dist/create/changelog.js +18 -23
- package/dist/lex.js +1 -0
- package/dist/resolver.js +35 -22
- package/dist/utils/app.js +243 -0
- package/dist/utils/file.js +53 -0
- package/dist/utils/log.js +54 -0
- package/dist/utils/reactShim.js +31 -0
- package/jest.config.js +2 -3
- package/jest.config.lex.js +44 -10
- package/jest.setup.js +3 -1
- package/package.json +41 -40
- package/tsconfig.template.json +1 -1
- package/webpack.config.js +29 -10
- package/dist/utils.js +0 -312
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
|
|
20
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
21
|
+
var app_exports = {};
|
|
22
|
+
__export(app_exports, {
|
|
23
|
+
checkLinkedModules: () => checkLinkedModules,
|
|
24
|
+
copyFileSync: () => copyFileSync,
|
|
25
|
+
copyFiles: () => copyFiles,
|
|
26
|
+
copyFolderRecursiveSync: () => copyFolderRecursiveSync,
|
|
27
|
+
createSpinner: () => createSpinner,
|
|
28
|
+
cwd: () => cwd,
|
|
29
|
+
getFilenames: () => getFilenames,
|
|
30
|
+
getFilesByExt: () => getFilesByExt,
|
|
31
|
+
getPackageJson: () => getPackageJson,
|
|
32
|
+
linkedModules: () => linkedModules,
|
|
33
|
+
removeConflictModules: () => removeConflictModules,
|
|
34
|
+
removeFiles: () => removeFiles,
|
|
35
|
+
removeModules: () => removeModules,
|
|
36
|
+
setPackageJson: () => setPackageJson,
|
|
37
|
+
updateTemplateName: () => updateTemplateName
|
|
38
|
+
});
|
|
39
|
+
module.exports = __toCommonJS(app_exports);
|
|
40
|
+
var import_boxen = __toESM(require("boxen"));
|
|
41
|
+
var import_fs_extra = __toESM(require("fs-extra"));
|
|
42
|
+
var import_glob = __toESM(require("glob"));
|
|
43
|
+
var import_isEmpty = __toESM(require("lodash/isEmpty"));
|
|
44
|
+
var import_ora = __toESM(require("ora"));
|
|
45
|
+
var import_path = __toESM(require("path"));
|
|
46
|
+
var import_rimraf = __toESM(require("rimraf"));
|
|
47
|
+
var import_log = require("./log");
|
|
48
|
+
const cwd = process.cwd();
|
|
49
|
+
const getFilenames = (props) => {
|
|
50
|
+
const { callback, cliName, name, quiet, type, useTypescript } = props;
|
|
51
|
+
let nameCaps;
|
|
52
|
+
const itemTypes = ["stores", "views"];
|
|
53
|
+
if (!name) {
|
|
54
|
+
if (itemTypes.includes(type)) {
|
|
55
|
+
(0, import_log.log)(`
|
|
56
|
+
${cliName} Error: ${type} name is required. Please use 'lex -h' for options.`, "error", quiet);
|
|
57
|
+
return callback(1);
|
|
58
|
+
}
|
|
59
|
+
} else {
|
|
60
|
+
nameCaps = `${name.charAt(0).toUpperCase()}${name.substr(1)}`;
|
|
61
|
+
}
|
|
62
|
+
(0, import_log.log)(`${cliName} adding ${name} ${type}...`, "info", quiet);
|
|
63
|
+
let templatePath;
|
|
64
|
+
let templateExt;
|
|
65
|
+
let templateReact;
|
|
66
|
+
if (useTypescript) {
|
|
67
|
+
templatePath = "../../templates/typescript";
|
|
68
|
+
templateExt = ".ts";
|
|
69
|
+
templateReact = ".tsx";
|
|
70
|
+
} else {
|
|
71
|
+
templatePath = "../../templates/flow";
|
|
72
|
+
templateExt = ".js";
|
|
73
|
+
templateReact = ".js";
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
nameCaps,
|
|
77
|
+
templateExt,
|
|
78
|
+
templatePath,
|
|
79
|
+
templateReact
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
const createSpinner = (quiet = false) => {
|
|
83
|
+
if (quiet) {
|
|
84
|
+
return {
|
|
85
|
+
fail: () => {
|
|
86
|
+
},
|
|
87
|
+
start: () => {
|
|
88
|
+
},
|
|
89
|
+
succeed: () => {
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
return (0, import_ora.default)({ color: "yellow" });
|
|
94
|
+
};
|
|
95
|
+
const copyFiles = async (files, typeName, spinner, config) => {
|
|
96
|
+
const { outputFullPath, sourceFullPath } = config;
|
|
97
|
+
const items = files.map((fileName) => ({
|
|
98
|
+
from: fileName,
|
|
99
|
+
to: import_path.default.resolve(outputFullPath, import_path.default.relative(sourceFullPath, fileName))
|
|
100
|
+
}));
|
|
101
|
+
try {
|
|
102
|
+
spinner.start(`Copying ${typeName} files...`);
|
|
103
|
+
await Promise.all(items.map(({ from, to }) => import_fs_extra.default.copy(from, to)));
|
|
104
|
+
spinner.succeed(`Successfully copied ${files.length} ${typeName} files!`);
|
|
105
|
+
} catch (error) {
|
|
106
|
+
spinner.fail(`Copying of ${typeName} files failed.`);
|
|
107
|
+
(0, import_log.log)(`Error: ${error.message}`, "error");
|
|
108
|
+
console.log(error);
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
const copyFileSync = (source, target) => {
|
|
112
|
+
let targetFile = target;
|
|
113
|
+
if (import_fs_extra.default.existsSync(target)) {
|
|
114
|
+
if (import_fs_extra.default.lstatSync(target).isDirectory()) {
|
|
115
|
+
targetFile = import_path.default.join(target, import_path.default.basename(source));
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
import_fs_extra.default.writeFileSync(targetFile, import_fs_extra.default.readFileSync(source));
|
|
119
|
+
};
|
|
120
|
+
const copyFolderRecursiveSync = (source, target) => {
|
|
121
|
+
let files = [];
|
|
122
|
+
const targetFolder = import_path.default.join(target, import_path.default.basename(source));
|
|
123
|
+
if (!import_fs_extra.default.existsSync(targetFolder)) {
|
|
124
|
+
import_fs_extra.default.mkdirSync(targetFolder);
|
|
125
|
+
}
|
|
126
|
+
if (import_fs_extra.default.lstatSync(source).isDirectory()) {
|
|
127
|
+
files = import_fs_extra.default.readdirSync(source);
|
|
128
|
+
files.forEach((file) => {
|
|
129
|
+
const curSource = import_path.default.join(source, file);
|
|
130
|
+
if (import_fs_extra.default.lstatSync(curSource).isDirectory()) {
|
|
131
|
+
copyFolderRecursiveSync(curSource, targetFolder);
|
|
132
|
+
} else {
|
|
133
|
+
copyFileSync(curSource, targetFolder);
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
const getPackageJson = (packagePath) => {
|
|
139
|
+
const formatPath = packagePath || `${process.cwd()}/package.json`;
|
|
140
|
+
const packageData = import_fs_extra.default.readFileSync(formatPath).toString();
|
|
141
|
+
return JSON.parse(packageData);
|
|
142
|
+
};
|
|
143
|
+
const getFilesByExt = (ext, config) => {
|
|
144
|
+
const { sourceFullPath } = config;
|
|
145
|
+
return import_glob.default.sync(`${sourceFullPath}/**/**${ext}`);
|
|
146
|
+
};
|
|
147
|
+
const removeConflictModules = (moduleList) => {
|
|
148
|
+
const updatedList = { ...moduleList };
|
|
149
|
+
Object.keys(updatedList).forEach((moduleName) => {
|
|
150
|
+
const regex = new RegExp("^(?!@types/).*(jest|webpack).*$", "gi");
|
|
151
|
+
if (regex.test(moduleName)) {
|
|
152
|
+
delete updatedList[moduleName];
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
return updatedList;
|
|
156
|
+
};
|
|
157
|
+
const removeFiles = (fileName, isRelative = false) => new Promise((resolve, reject) => {
|
|
158
|
+
const filePath = isRelative ? import_path.default.resolve(cwd, fileName) : fileName;
|
|
159
|
+
(0, import_rimraf.default)(filePath, (error) => {
|
|
160
|
+
if (error) {
|
|
161
|
+
return reject(error);
|
|
162
|
+
}
|
|
163
|
+
return resolve(null);
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
const removeModules = () => new Promise(async (resolve, reject) => {
|
|
167
|
+
try {
|
|
168
|
+
await removeFiles("./node_modules", true);
|
|
169
|
+
await removeFiles("./yarn.lock", true);
|
|
170
|
+
await removeFiles("./package-lock.json", true);
|
|
171
|
+
resolve(null);
|
|
172
|
+
} catch (error) {
|
|
173
|
+
reject(error);
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
const setPackageJson = (json, packagePath) => {
|
|
177
|
+
if (!json) {
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
const formatPath = packagePath || `${process.cwd()}/package.json`;
|
|
181
|
+
import_fs_extra.default.writeFileSync(formatPath, JSON.stringify(json, null, 2));
|
|
182
|
+
};
|
|
183
|
+
const linkedModules = (startPath) => {
|
|
184
|
+
const workingPath = startPath || process.cwd();
|
|
185
|
+
let modulePath;
|
|
186
|
+
let prefix;
|
|
187
|
+
if (workingPath.includes("@")) {
|
|
188
|
+
prefix = `@${workingPath.split("@").pop()}`;
|
|
189
|
+
modulePath = workingPath;
|
|
190
|
+
} else {
|
|
191
|
+
modulePath = import_path.default.join(workingPath, "node_modules");
|
|
192
|
+
}
|
|
193
|
+
const foundPaths = import_glob.default.sync(`${modulePath}/*`);
|
|
194
|
+
return foundPaths.reduce((list, foundPath) => {
|
|
195
|
+
try {
|
|
196
|
+
const stats = import_fs_extra.default.lstatSync(foundPath);
|
|
197
|
+
if (stats.isDirectory()) {
|
|
198
|
+
const deepList = linkedModules(foundPath);
|
|
199
|
+
list.push(...deepList);
|
|
200
|
+
} else if (stats.isSymbolicLink()) {
|
|
201
|
+
const moduleNames = [prefix, import_path.default.basename(foundPath)].filter((item) => !(0, import_isEmpty.default)(item));
|
|
202
|
+
list.push({ name: `${moduleNames.join("/")}`, path: foundPath });
|
|
203
|
+
}
|
|
204
|
+
return list;
|
|
205
|
+
} catch (fsError) {
|
|
206
|
+
throw fsError;
|
|
207
|
+
}
|
|
208
|
+
}, []);
|
|
209
|
+
};
|
|
210
|
+
const checkLinkedModules = () => {
|
|
211
|
+
const linked = linkedModules();
|
|
212
|
+
if (linked.length) {
|
|
213
|
+
const msgModule = linked.length > 1 ? "Modules" : "Module";
|
|
214
|
+
const linkedMsg = linked.reduce((msg, linkedModule) => `${msg}
|
|
215
|
+
* ${linkedModule.name}`, `Linked ${msgModule}:`);
|
|
216
|
+
(0, import_log.log)((0, import_boxen.default)(linkedMsg, { dimBorder: true, padding: 1 }), "warn");
|
|
217
|
+
}
|
|
218
|
+
};
|
|
219
|
+
const updateTemplateName = (filePath, replace, replaceCaps) => {
|
|
220
|
+
let data = import_fs_extra.default.readFileSync(filePath, "utf8");
|
|
221
|
+
data = data.replace(/sample/g, replace);
|
|
222
|
+
data = data.replace(/Sample/g, replaceCaps);
|
|
223
|
+
import_fs_extra.default.writeFileSync(filePath, data, "utf8");
|
|
224
|
+
};
|
|
225
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
226
|
+
0 && (module.exports = {
|
|
227
|
+
checkLinkedModules,
|
|
228
|
+
copyFileSync,
|
|
229
|
+
copyFiles,
|
|
230
|
+
copyFolderRecursiveSync,
|
|
231
|
+
createSpinner,
|
|
232
|
+
cwd,
|
|
233
|
+
getFilenames,
|
|
234
|
+
getFilesByExt,
|
|
235
|
+
getPackageJson,
|
|
236
|
+
linkedModules,
|
|
237
|
+
removeConflictModules,
|
|
238
|
+
removeFiles,
|
|
239
|
+
removeModules,
|
|
240
|
+
setPackageJson,
|
|
241
|
+
updateTemplateName
|
|
242
|
+
});
|
|
243
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL2FwcC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCBib3hlbiBmcm9tICdib3hlbic7XG5pbXBvcnQgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0IGdsb2IgZnJvbSAnZ2xvYic7XG5pbXBvcnQgaXNFbXB0eSBmcm9tICdsb2Rhc2gvaXNFbXB0eSc7XG5pbXBvcnQgb3JhIGZyb20gJ29yYSc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCByaW1yYWYgZnJvbSAncmltcmFmJztcblxuaW1wb3J0IHR5cGUge0xleENvbmZpZ1R5cGV9IGZyb20gJy4uL0xleENvbmZpZyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi9sb2cnO1xuXG5leHBvcnQgY29uc3QgY3dkOiBzdHJpbmcgPSBwcm9jZXNzLmN3ZCgpO1xuXG5leHBvcnQgY29uc3QgZ2V0RmlsZW5hbWVzID0gKHByb3BzOiBhbnkpID0+IHtcbiAgY29uc3Qge2NhbGxiYWNrLCBjbGlOYW1lLCBuYW1lLCBxdWlldCwgdHlwZSwgdXNlVHlwZXNjcmlwdH0gPSBwcm9wcztcblxuICAvLyBTZXQgZmlsZW5hbWVcbiAgbGV0IG5hbWVDYXBzOiBzdHJpbmc7XG4gIGNvbnN0IGl0ZW1UeXBlczogc3RyaW5nW10gPSBbJ3N0b3JlcycsICd2aWV3cyddO1xuXG4gIGlmKCFuYW1lKSB7XG4gICAgaWYoaXRlbVR5cGVzLmluY2x1ZGVzKHR5cGUpKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6ICR7dHlwZX0gbmFtZSBpcyByZXF1aXJlZC4gUGxlYXNlIHVzZSAnbGV4IC1oJyBmb3Igb3B0aW9ucy5gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICByZXR1cm4gY2FsbGJhY2soMSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG5hbWVDYXBzID0gYCR7bmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKX0ke25hbWUuc3Vic3RyKDEpfWA7XG4gIH1cblxuICAvLyBEaXNwbGF5IG1lc3NhZ2VcbiAgbG9nKGAke2NsaU5hbWV9IGFkZGluZyAke25hbWV9ICR7dHlwZX0uLi5gLCAnaW5mbycsIHF1aWV0KTtcblxuICAvLyBUZW1wbGF0ZSBkaXJlY3RvcnlcbiAgbGV0IHRlbXBsYXRlUGF0aDogc3RyaW5nO1xuICBsZXQgdGVtcGxhdGVFeHQ6IHN0cmluZztcbiAgbGV0IHRlbXBsYXRlUmVhY3Q6IHN0cmluZztcblxuICBpZih1c2VUeXBlc2NyaXB0KSB7XG4gICAgdGVtcGxhdGVQYXRoID0gJy4uLy4uL3RlbXBsYXRlcy90eXBlc2NyaXB0JztcbiAgICB0ZW1wbGF0ZUV4dCA9ICcudHMnO1xuICAgIHRlbXBsYXRlUmVhY3QgPSAnLnRzeCc7XG4gIH0gZWxzZSB7XG4gICAgdGVtcGxhdGVQYXRoID0gJy4uLy4uL3RlbXBsYXRlcy9mbG93JztcbiAgICB0ZW1wbGF0ZUV4dCA9ICcuanMnO1xuICAgIHRlbXBsYXRlUmVhY3QgPSAnLmpzJztcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbmFtZUNhcHMsXG4gICAgdGVtcGxhdGVFeHQsXG4gICAgdGVtcGxhdGVQYXRoLFxuICAgIHRlbXBsYXRlUmVhY3RcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVTcGlubmVyID0gKHF1aWV0ID0gZmFsc2UpOiBhbnkgPT4ge1xuICBpZihxdWlldCkge1xuICAgIHJldHVybiB7XG4gICAgICBmYWlsOiAoKSA9PiB7fSxcbiAgICAgIHN0YXJ0OiAoKSA9PiB7fSxcbiAgICAgIHN1Y2NlZWQ6ICgpID0+IHt9XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBvcmEoe2NvbG9yOiAneWVsbG93J30pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvcHlGaWxlcyA9IGFzeW5jIChmaWxlczogc3RyaW5nW10sIHR5cGVOYW1lOiBzdHJpbmcsIHNwaW5uZXIsIGNvbmZpZzogTGV4Q29uZmlnVHlwZSkgPT4ge1xuICBjb25zdCB7b3V0cHV0RnVsbFBhdGgsIHNvdXJjZUZ1bGxQYXRofSA9IGNvbmZpZztcbiAgY29uc3QgaXRlbXMgPSBmaWxlcy5tYXAoKGZpbGVOYW1lOiBzdHJpbmcpID0+ICh7XG4gICAgZnJvbTogZmlsZU5hbWUsXG4gICAgdG86IHBhdGgucmVzb2x2ZShvdXRwdXRGdWxsUGF0aCwgcGF0aC5yZWxhdGl2ZShzb3VyY2VGdWxsUGF0aCwgZmlsZU5hbWUpKVxuICB9KSk7XG5cbiAgdHJ5IHtcbiAgICBzcGlubmVyLnN0YXJ0KGBDb3B5aW5nICR7dHlwZU5hbWV9IGZpbGVzLi4uYCk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoaXRlbXMubWFwKCh7ZnJvbSwgdG99KSA9PiBmcy5jb3B5KGZyb20sIHRvKSkpO1xuICAgIHNwaW5uZXIuc3VjY2VlZChgU3VjY2Vzc2Z1bGx5IGNvcGllZCAke2ZpbGVzLmxlbmd0aH0gJHt0eXBlTmFtZX0gZmlsZXMhYCk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAvLyBTdG9wIHNwaW5uZXJcbiAgICBzcGlubmVyLmZhaWwoYENvcHlpbmcgb2YgJHt0eXBlTmFtZX0gZmlsZXMgZmFpbGVkLmApO1xuICAgIGxvZyhgRXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InKTtcbiAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBjb3B5RmlsZVN5bmMgPSAoc291cmNlOiBzdHJpbmcsIHRhcmdldDogc3RyaW5nKSA9PiB7XG4gIGxldCB0YXJnZXRGaWxlOiBzdHJpbmcgPSB0YXJnZXQ7XG5cbiAgLy8gSWYgdGFyZ2V0IGlzIGEgZGlyZWN0b3J5IGEgbmV3IGZpbGUgd2l0aCB0aGUgc2FtZSBuYW1lIHdpbGwgYmUgY3JlYXRlZFxuICBpZihmcy5leGlzdHNTeW5jKHRhcmdldCkpIHtcbiAgICBpZihmcy5sc3RhdFN5bmModGFyZ2V0KS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICB0YXJnZXRGaWxlID0gcGF0aC5qb2luKHRhcmdldCwgcGF0aC5iYXNlbmFtZShzb3VyY2UpKTtcbiAgICB9XG4gIH1cblxuICBmcy53cml0ZUZpbGVTeW5jKHRhcmdldEZpbGUsIGZzLnJlYWRGaWxlU3luYyhzb3VyY2UpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb3B5Rm9sZGVyUmVjdXJzaXZlU3luYyA9IChzb3VyY2U6IHN0cmluZywgdGFyZ2V0OiBzdHJpbmcpOiB2b2lkID0+IHtcbiAgbGV0IGZpbGVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8vIENoZWNrIGlmIGZvbGRlciBuZWVkcyB0byBiZSBjcmVhdGVkIG9yIGludGVncmF0ZWRcbiAgY29uc3QgdGFyZ2V0Rm9sZGVyOiBzdHJpbmcgPSBwYXRoLmpvaW4odGFyZ2V0LCBwYXRoLmJhc2VuYW1lKHNvdXJjZSkpO1xuXG4gIGlmKCFmcy5leGlzdHNTeW5jKHRhcmdldEZvbGRlcikpIHtcbiAgICBmcy5ta2RpclN5bmModGFyZ2V0Rm9sZGVyKTtcbiAgfVxuXG4gIC8vIENvcHlcbiAgaWYoZnMubHN0YXRTeW5jKHNvdXJjZSkuaXNEaXJlY3RvcnkoKSkge1xuICAgIGZpbGVzID0gZnMucmVhZGRpclN5bmMoc291cmNlKTtcbiAgICBmaWxlcy5mb3JFYWNoKChmaWxlOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IGN1clNvdXJjZTogc3RyaW5nID0gcGF0aC5qb2luKHNvdXJjZSwgZmlsZSk7XG5cbiAgICAgIGlmKGZzLmxzdGF0U3luYyhjdXJTb3VyY2UpLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgY29weUZvbGRlclJlY3Vyc2l2ZVN5bmMoY3VyU291cmNlLCB0YXJnZXRGb2xkZXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29weUZpbGVTeW5jKGN1clNvdXJjZSwgdGFyZ2V0Rm9sZGVyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldFBhY2thZ2VKc29uID0gKHBhY2thZ2VQYXRoPzogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGZvcm1hdFBhdGg6IHN0cmluZyA9IHBhY2thZ2VQYXRoIHx8IGAke3Byb2Nlc3MuY3dkKCl9L3BhY2thZ2UuanNvbmA7XG5cbiAgLy8gQ29uZmlndXJlIHBhY2thZ2UuanNvblxuICBjb25zdCBwYWNrYWdlRGF0YTogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGZvcm1hdFBhdGgpLnRvU3RyaW5nKCk7XG4gIHJldHVybiBKU09OLnBhcnNlKHBhY2thZ2VEYXRhKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGaWxlc0J5RXh0ID0gKGV4dDogc3RyaW5nLCBjb25maWc6IExleENvbmZpZ1R5cGUpOiBzdHJpbmdbXSA9PiB7XG4gIGNvbnN0IHtzb3VyY2VGdWxsUGF0aH0gPSBjb25maWc7XG4gIHJldHVybiBnbG9iLnN5bmMoYCR7c291cmNlRnVsbFBhdGh9LyoqLyoqJHtleHR9YCk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlQ29uZmxpY3RNb2R1bGVzID0gKG1vZHVsZUxpc3Q6IG9iamVjdCkgPT4ge1xuICBjb25zdCB1cGRhdGVkTGlzdDogb2JqZWN0ID0gey4uLm1vZHVsZUxpc3R9O1xuXG4gIE9iamVjdC5rZXlzKHVwZGF0ZWRMaXN0KS5mb3JFYWNoKChtb2R1bGVOYW1lOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCByZWdleDogUmVnRXhwID0gbmV3IFJlZ0V4cCgnXig/IUB0eXBlc1xcLykuKihqZXN0fHdlYnBhY2spLiokJywgJ2dpJyk7XG4gICAgaWYocmVnZXgudGVzdChtb2R1bGVOYW1lKSkge1xuICAgICAgZGVsZXRlIHVwZGF0ZWRMaXN0W21vZHVsZU5hbWVdO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHVwZGF0ZWRMaXN0O1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZUZpbGVzID0gKGZpbGVOYW1lOiBzdHJpbmcsIGlzUmVsYXRpdmU6IGJvb2xlYW4gPSBmYWxzZSkgPT4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICBjb25zdCBmaWxlUGF0aDogc3RyaW5nID0gaXNSZWxhdGl2ZSA/IHBhdGgucmVzb2x2ZShjd2QsIGZpbGVOYW1lKSA6IGZpbGVOYW1lO1xuXG4gIHJpbXJhZihmaWxlUGF0aCwgKGVycm9yKSA9PiB7XG4gICAgaWYoZXJyb3IpIHtcbiAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgIH1cblxuICAgIHJldHVybiByZXNvbHZlKG51bGwpO1xuICB9KTtcbn0pO1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlTW9kdWxlcyA9ICgpID0+IG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgdHJ5IHtcbiAgICAvLyBSZW1vdmUgbm9kZV9tb2R1bGVzXG4gICAgYXdhaXQgcmVtb3ZlRmlsZXMoJy4vbm9kZV9tb2R1bGVzJywgdHJ1ZSk7XG5cbiAgICAvLyBSZW1vdmUgeWFybiBsb2NrXG4gICAgYXdhaXQgcmVtb3ZlRmlsZXMoJy4veWFybi5sb2NrJywgdHJ1ZSk7XG5cbiAgICAvLyBSZW1vdmUgbnBtIGxvY2tcbiAgICBhd2FpdCByZW1vdmVGaWxlcygnLi9wYWNrYWdlLWxvY2suanNvbicsIHRydWUpO1xuXG4gICAgcmVzb2x2ZShudWxsKTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIHJlamVjdChlcnJvcik7XG4gIH1cbn0pO1xuXG5leHBvcnQgY29uc3Qgc2V0UGFja2FnZUpzb24gPSAoanNvbiwgcGFja2FnZVBhdGg/OiBzdHJpbmcpID0+IHtcbiAgaWYoIWpzb24pIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBmb3JtYXRQYXRoOiBzdHJpbmcgPSBwYWNrYWdlUGF0aCB8fCBgJHtwcm9jZXNzLmN3ZCgpfS9wYWNrYWdlLmpzb25gO1xuXG4gIC8vIFVwZGF0ZSBwYWNrYWdlLmpzb25cbiAgZnMud3JpdGVGaWxlU3luYyhmb3JtYXRQYXRoLCBKU09OLnN0cmluZ2lmeShqc29uLCBudWxsLCAyKSk7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIExpbmtlZE1vZHVsZVR5cGUge1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IGxpbmtlZE1vZHVsZXMgPSAoc3RhcnRQYXRoPzogc3RyaW5nKTogTGlua2VkTW9kdWxlVHlwZVtdID0+IHtcbiAgY29uc3Qgd29ya2luZ1BhdGg6IHN0cmluZyA9IHN0YXJ0UGF0aCB8fCBwcm9jZXNzLmN3ZCgpO1xuICBsZXQgbW9kdWxlUGF0aDogc3RyaW5nO1xuICBsZXQgcHJlZml4OiBzdHJpbmc7XG5cbiAgLy8gaWYgd2UgaGF2ZSBhIHNjb3BlIHdlIHNob3VsZCBjaGVjayBpZiB0aGUgbW9kdWxlcyBpbnNpZGUgdGhlIGZvbGRlciBpcyBsaW5rZWRcbiAgaWYod29ya2luZ1BhdGguaW5jbHVkZXMoJ0AnKSkge1xuICAgIHByZWZpeCA9IGBAJHt3b3JraW5nUGF0aC5zcGxpdCgnQCcpLnBvcCgpfWA7XG4gICAgbW9kdWxlUGF0aCA9IHdvcmtpbmdQYXRoO1xuICB9IGVsc2Uge1xuICAgIG1vZHVsZVBhdGggPSBwYXRoLmpvaW4od29ya2luZ1BhdGgsICdub2RlX21vZHVsZXMnKTtcbiAgfVxuXG4gIGNvbnN0IGZvdW5kUGF0aHM6IHN0cmluZ1tdID0gZ2xvYi5zeW5jKGAke21vZHVsZVBhdGh9LypgKTtcbiAgcmV0dXJuIGZvdW5kUGF0aHMucmVkdWNlKChsaXN0OiBMaW5rZWRNb2R1bGVUeXBlW10sIGZvdW5kUGF0aDogc3RyaW5nKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0YXRzID0gZnMubHN0YXRTeW5jKGZvdW5kUGF0aCk7XG5cbiAgICAgIGlmKHN0YXRzLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgY29uc3QgZGVlcExpc3Q6IExpbmtlZE1vZHVsZVR5cGVbXSA9IGxpbmtlZE1vZHVsZXMoZm91bmRQYXRoKTtcbiAgICAgICAgbGlzdC5wdXNoKC4uLmRlZXBMaXN0KTtcbiAgICAgIH0gZWxzZSBpZihzdGF0cy5pc1N5bWJvbGljTGluaygpKSB7XG4gICAgICAgIGNvbnN0IG1vZHVsZU5hbWVzOiBzdHJpbmdbXSA9IChbcHJlZml4LCBwYXRoLmJhc2VuYW1lKGZvdW5kUGF0aCldKS5maWx0ZXIoKGl0ZW06IHN0cmluZykgPT4gIWlzRW1wdHkoaXRlbSkpO1xuICAgICAgICBsaXN0LnB1c2goe25hbWU6IGAke21vZHVsZU5hbWVzLmpvaW4oJy8nKX1gLCBwYXRoOiBmb3VuZFBhdGh9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGxpc3Q7XG4gICAgfSBjYXRjaChmc0Vycm9yKSB7XG4gICAgICB0aHJvdyBmc0Vycm9yO1xuICAgIH1cbiAgfSwgW10pO1xufTtcblxuLy8gQ2hlY2sgZm9yIGxpbmtlZCBtb2R1bGVzXG5leHBvcnQgY29uc3QgY2hlY2tMaW5rZWRNb2R1bGVzID0gKCkgPT4ge1xuICBjb25zdCBsaW5rZWQgPSBsaW5rZWRNb2R1bGVzKCk7XG5cbiAgaWYobGlua2VkLmxlbmd0aCkge1xuICAgIGNvbnN0IG1zZ01vZHVsZTogc3RyaW5nID0gbGlua2VkLmxlbmd0aCA+IDEgPyAnTW9kdWxlcycgOiAnTW9kdWxlJztcbiAgICBjb25zdCBsaW5rZWRNc2c6IHN0cmluZyA9IGxpbmtlZC5yZWR1Y2UoXG4gICAgICAobXNnOiBzdHJpbmcsIGxpbmtlZE1vZHVsZTogTGlua2VkTW9kdWxlVHlwZSkgPT5cbiAgICAgICAgYCR7bXNnfVxcbiAqICR7bGlua2VkTW9kdWxlLm5hbWV9YCxcbiAgICAgIGBMaW5rZWQgJHttc2dNb2R1bGV9OmBcbiAgICApO1xuICAgIGxvZyhib3hlbihsaW5rZWRNc2csIHtkaW1Cb3JkZXI6IHRydWUsIHBhZGRpbmc6IDF9KSwgJ3dhcm4nKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZVRlbXBsYXRlTmFtZSA9IChmaWxlUGF0aDogc3RyaW5nLCByZXBsYWNlOiBzdHJpbmcsIHJlcGxhY2VDYXBzOiBzdHJpbmcpID0+IHtcbiAgbGV0IGRhdGE6IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhmaWxlUGF0aCwgJ3V0ZjgnKTtcbiAgZGF0YSA9IGRhdGEucmVwbGFjZSgvc2FtcGxlL2csIHJlcGxhY2UpO1xuICBkYXRhID0gZGF0YS5yZXBsYWNlKC9TYW1wbGUvZywgcmVwbGFjZUNhcHMpO1xuICBmcy53cml0ZUZpbGVTeW5jKGZpbGVQYXRoLCBkYXRhLCAndXRmOCcpO1xufTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFJQSxtQkFBa0I7QUFDbEIsc0JBQWU7QUFDZixrQkFBaUI7QUFDakIscUJBQW9CO0FBQ3BCLGlCQUFnQjtBQUNoQixrQkFBaUI7QUFDakIsb0JBQW1CO0FBR25CLGlCQUFrQjtBQUVYLE1BQU0sTUFBYyxRQUFRLElBQUk7QUFFaEMsTUFBTSxlQUFlLENBQUMsVUFBZTtBQUMxQyxRQUFNLEVBQUMsVUFBVSxTQUFTLE1BQU0sT0FBTyxNQUFNLGtCQUFpQjtBQUc5RCxNQUFJO0FBQ0osUUFBTSxZQUFzQixDQUFDLFVBQVUsT0FBTztBQUU5QyxNQUFHLENBQUMsTUFBTTtBQUNSLFFBQUcsVUFBVSxTQUFTLElBQUksR0FBRztBQUMzQiwwQkFBSTtBQUFBLEVBQUssa0JBQWtCLDJEQUEyRCxTQUFTLEtBQUs7QUFDcEcsYUFBTyxTQUFTLENBQUM7QUFBQSxJQUNuQjtBQUFBLEVBQ0YsT0FBTztBQUNMLGVBQVcsR0FBRyxLQUFLLE9BQU8sQ0FBQyxFQUFFLFlBQVksSUFBSSxLQUFLLE9BQU8sQ0FBQztBQUFBLEVBQzVEO0FBR0Esc0JBQUksR0FBRyxrQkFBa0IsUUFBUSxXQUFXLFFBQVEsS0FBSztB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
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
|
|
20
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
21
|
+
var file_exports = {};
|
|
22
|
+
__export(file_exports, {
|
|
23
|
+
getNodePath: () => getNodePath,
|
|
24
|
+
relativeFilePath: () => relativeFilePath
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(file_exports);
|
|
27
|
+
var import_find_file_up = __toESM(require("find-file-up"));
|
|
28
|
+
var import_fs_extra = require("fs-extra");
|
|
29
|
+
var import_path = require("path");
|
|
30
|
+
const relativeFilePath = (filename, nodePath = "./", backUp = 0) => {
|
|
31
|
+
const nestDepth = 10;
|
|
32
|
+
if (backUp) {
|
|
33
|
+
const filePath = import_find_file_up.default.sync(filename, nodePath, nestDepth);
|
|
34
|
+
const previousPath = Array(backUp).fill(null).map(() => "../").join("");
|
|
35
|
+
return (0, import_path.resolve)(filePath, previousPath);
|
|
36
|
+
}
|
|
37
|
+
return import_find_file_up.default.sync(filename, nodePath, nestDepth);
|
|
38
|
+
};
|
|
39
|
+
const getNodePath = (moduleName) => {
|
|
40
|
+
const modulePath = `node_modules/${moduleName}`;
|
|
41
|
+
const repoPath = import_find_file_up.default.sync(modulePath, __dirname);
|
|
42
|
+
if (repoPath && (0, import_fs_extra.existsSync)(repoPath)) {
|
|
43
|
+
return repoPath;
|
|
44
|
+
}
|
|
45
|
+
const localPath = import_find_file_up.default.sync(modulePath, "./", 10) || `./${modulePath}`;
|
|
46
|
+
return localPath;
|
|
47
|
+
};
|
|
48
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
49
|
+
0 && (module.exports = {
|
|
50
|
+
getNodePath,
|
|
51
|
+
relativeFilePath
|
|
52
|
+
});
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL2ZpbGUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDIyLVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgZmluZEZpbGVVcCBmcm9tICdmaW5kLWZpbGUtdXAnO1xuaW1wb3J0IHtleGlzdHNTeW5jfSBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQge3Jlc29sdmV9IGZyb20gJ3BhdGgnO1xuXG4vLyBHZXQgZmlsZSBwYXRocyByZWxhdGl2ZSB0byBMZXhcbmV4cG9ydCBjb25zdCByZWxhdGl2ZUZpbGVQYXRoID0gKGZpbGVuYW1lOiBzdHJpbmcsIG5vZGVQYXRoOiBzdHJpbmcgPSAnLi8nLCBiYWNrVXA6IG51bWJlciA9IDApID0+IHtcbiAgY29uc3QgbmVzdERlcHRoOiBudW1iZXIgPSAxMDtcblxuICBpZihiYWNrVXApIHtcbiAgICBjb25zdCBmaWxlUGF0aDogc3RyaW5nID0gZmluZEZpbGVVcC5zeW5jKGZpbGVuYW1lLCBub2RlUGF0aCwgbmVzdERlcHRoKTtcbiAgICBjb25zdCBwcmV2aW91c1BhdGg6IHN0cmluZyA9IEFycmF5KGJhY2tVcCkuZmlsbChudWxsKS5tYXAoKCkgPT4gJy4uLycpLmpvaW4oJycpO1xuICAgIHJldHVybiByZXNvbHZlKGZpbGVQYXRoLCBwcmV2aW91c1BhdGgpO1xuICB9XG5cbiAgcmV0dXJuIGZpbmRGaWxlVXAuc3luYyhmaWxlbmFtZSwgbm9kZVBhdGgsIG5lc3REZXB0aCk7XG59O1xuXG4vLyBHZXQgZmlsZSBwYXRocyByZWxhdGl2ZSB0byBMZXhcbmV4cG9ydCBjb25zdCBnZXROb2RlUGF0aCA9IChtb2R1bGVOYW1lOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBtb2R1bGVQYXRoOiBzdHJpbmcgPSBgbm9kZV9tb2R1bGVzLyR7bW9kdWxlTmFtZX1gO1xuICBjb25zdCByZXBvUGF0aDogc3RyaW5nID0gZmluZEZpbGVVcC5zeW5jKG1vZHVsZVBhdGgsIF9fZGlybmFtZSk7XG5cbiAgaWYocmVwb1BhdGggJiYgZXhpc3RzU3luYyhyZXBvUGF0aCkpIHtcbiAgICByZXR1cm4gcmVwb1BhdGg7XG4gIH1cblxuICBjb25zdCBsb2NhbFBhdGg6IHN0cmluZyA9IGZpbmRGaWxlVXAuc3luYyhtb2R1bGVQYXRoLCAnLi8nLCAxMCkgfHwgYC4vJHttb2R1bGVQYXRofWA7XG4gIHJldHVybiBsb2NhbFBhdGg7XG59OyJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSUEsMEJBQXVCO0FBQ3ZCLHNCQUF5QjtBQUN6QixrQkFBc0I7QUFHZixNQUFNLG1CQUFtQixDQUFDLFVBQWtCLFdBQW1CLE1BQU0sU0FBaUIsTUFBTTtBQUNqRyxRQUFNLFlBQW9CO0FBRTFCLE1BQUcsUUFBUTtBQUNULFVBQU0sV0FBbUIsNEJBQVcsS0FBSyxVQUFVLFVBQVUsU0FBUztBQUN0RSxVQUFNLGVBQXVCLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxFQUFFLElBQUksTUFBTSxLQUFLLEVBQUUsS0FBSyxFQUFFO0FBQzlFLFdBQU8seUJBQVEsVUFBVSxZQUFZO0FBQUEsRUFDdkM7QUFFQSxTQUFPLDRCQUFXLEtBQUssVUFBVSxVQUFVLFNBQVM7QUFDdEQ7QUFHTyxNQUFNLGNBQWMsQ0FBQyxlQUErQjtBQUN6RCxRQUFNLGFBQXFCLGdCQUFnQjtBQUMzQyxRQUFNLFdBQW1CLDRCQUFXLEtBQUssWUFBWSxTQUFTO0FBRTlELE1BQUcsWUFBWSxnQ0FBVyxRQUFRLEdBQUc7QUFDbkMsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLFlBQW9CLDRCQUFXLEtBQUssWUFBWSxNQUFNLEVBQUUsS0FBSyxLQUFLO0FBQ3hFLFNBQU87QUFDVDsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
|
|
20
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
21
|
+
var log_exports = {};
|
|
22
|
+
__export(log_exports, {
|
|
23
|
+
log: () => log
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(log_exports);
|
|
26
|
+
var import_chalk = __toESM(require("chalk"));
|
|
27
|
+
const log = (message, type = "info", quiet = false) => {
|
|
28
|
+
if (!quiet) {
|
|
29
|
+
let color;
|
|
30
|
+
switch (type) {
|
|
31
|
+
case "error":
|
|
32
|
+
color = import_chalk.default.red;
|
|
33
|
+
break;
|
|
34
|
+
case "note":
|
|
35
|
+
color = import_chalk.default.grey;
|
|
36
|
+
break;
|
|
37
|
+
case "success":
|
|
38
|
+
color = import_chalk.default.greenBright;
|
|
39
|
+
break;
|
|
40
|
+
case "warn":
|
|
41
|
+
color = import_chalk.default.yellow;
|
|
42
|
+
break;
|
|
43
|
+
default:
|
|
44
|
+
color = import_chalk.default.cyan;
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
console.log(color(message));
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
51
|
+
0 && (module.exports = {
|
|
52
|
+
log
|
|
53
|
+
});
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL2xvZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjItUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5cbmV4cG9ydCBjb25zdCBsb2cgPSAobWVzc2FnZTogc3RyaW5nLCB0eXBlOiBzdHJpbmcgPSAnaW5mbycsIHF1aWV0ID0gZmFsc2UpID0+IHtcbiAgaWYoIXF1aWV0KSB7XG4gICAgbGV0IGNvbG9yO1xuXG4gICAgc3dpdGNoKHR5cGUpIHtcbiAgICAgIGNhc2UgJ2Vycm9yJzpcbiAgICAgICAgY29sb3IgPSBjaGFsay5yZWQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbm90ZSc6XG4gICAgICAgIGNvbG9yID0gY2hhbGsuZ3JleTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzdWNjZXNzJzpcbiAgICAgICAgY29sb3IgPSBjaGFsay5ncmVlbkJyaWdodDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd3YXJuJzpcbiAgICAgICAgY29sb3IgPSBjaGFsay55ZWxsb3c7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY29sb3IgPSBjaGFsay5jeWFuO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZyhjb2xvcihtZXNzYWdlKSk7XG4gIH1cbn07Il0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSUEsbUJBQWtCO0FBRVgsTUFBTSxNQUFNLENBQUMsU0FBaUIsT0FBZSxRQUFRLFFBQVEsVUFBVTtBQUM1RSxNQUFHLENBQUMsT0FBTztBQUNULFFBQUk7QUFFSixZQUFPO0FBQUEsV0FDQTtBQUNILGdCQUFRLHFCQUFNO0FBQ2Q7QUFBQSxXQUNHO0FBQ0gsZ0JBQVEscUJBQU07QUFDZDtBQUFBLFdBQ0c7QUFDSCxnQkFBUSxxQkFBTTtBQUNkO0FBQUEsV0FDRztBQUNILGdCQUFRLHFCQUFNO0FBQ2Q7QUFBQTtBQUVBLGdCQUFRLHFCQUFNO0FBQ2Q7QUFBQTtBQUdKLFlBQVEsSUFBSSxNQUFNLE9BQU8sQ0FBQztBQUFBLEVBQzVCO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
|
|
20
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
21
|
+
var reactShim_exports = {};
|
|
22
|
+
__export(reactShim_exports, {
|
|
23
|
+
React: () => import_react.default
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(reactShim_exports);
|
|
26
|
+
var import_react = __toESM(require("react"));
|
|
27
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
28
|
+
0 && (module.exports = {
|
|
29
|
+
React
|
|
30
|
+
});
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL3JlYWN0U2hpbS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IHtSZWFjdH07XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxtQkFBa0I7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
package/jest.config.js
CHANGED
|
@@ -2,13 +2,12 @@
|
|
|
2
2
|
* Copyright (c) 2018-Present, Nitrogen Labs, Inc.
|
|
3
3
|
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
4
4
|
*/
|
|
5
|
-
const base = require('../../jest.config.base
|
|
6
|
-
const pack = require('./package');
|
|
5
|
+
const base = require('../../jest.config.base');
|
|
6
|
+
const pack = require('./package.json');
|
|
7
7
|
|
|
8
8
|
module.exports = {
|
|
9
9
|
...base,
|
|
10
10
|
displayName: pack.name,
|
|
11
|
-
name: pack.name,
|
|
12
11
|
rootDir: '../..',
|
|
13
12
|
setupFiles: ['<rootDir>/packages/lex/jest.setup.js'],
|
|
14
13
|
testMatch: ['<rootDir>/packages/lex/**/*.test.ts']
|
package/jest.config.lex.js
CHANGED
|
@@ -1,16 +1,26 @@
|
|
|
1
|
-
const
|
|
1
|
+
const {resolve} = require('path');
|
|
2
2
|
|
|
3
|
-
const {getNodePath} = require('./dist/utils');
|
|
3
|
+
const {getNodePath} = require('./dist/utils/file');
|
|
4
4
|
|
|
5
5
|
const rootDir = process.cwd();
|
|
6
|
-
const {jest, sourceFullPath, useTypescript} = JSON.parse(process.env.LEX_CONFIG || '{}');
|
|
6
|
+
const {jest, sourceFullPath, targetEnvironment, useTypescript} = JSON.parse(process.env.LEX_CONFIG || '{}');
|
|
7
7
|
|
|
8
8
|
// Polyfill path
|
|
9
|
-
const nodePath =
|
|
9
|
+
const nodePath = resolve(__dirname, './node_modules');
|
|
10
10
|
const setupFiles = [
|
|
11
11
|
getNodePath('core-js'),
|
|
12
12
|
getNodePath('regenerator-runtime/runtime.js')
|
|
13
13
|
];
|
|
14
|
+
let testEnvironment = 'node';
|
|
15
|
+
let testEnvironmentOptions = {};
|
|
16
|
+
|
|
17
|
+
if(targetEnvironment === 'web') {
|
|
18
|
+
testEnvironment = 'jsdom';
|
|
19
|
+
testEnvironmentOptions = {
|
|
20
|
+
url: 'http://localhost'
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
|
|
14
24
|
let moduleFileExtensions = ['js', 'json'];
|
|
15
25
|
let testRegex = '(/__tests__/.*|\\.(test|spec))\\.(js)?$';
|
|
16
26
|
let transformIgnorePatterns = ['[/\\\\]node_modules[/\\\\].+\\.(js)$'];
|
|
@@ -26,25 +36,49 @@ module.exports = {
|
|
|
26
36
|
coverageDirectory: '<rootDir>/coverage',
|
|
27
37
|
coveragePathIgnorePatterns: ['/node_modules/', '/dist', '/lib', '__snapshots__', '.d.ts'],
|
|
28
38
|
coverageReporters: ['html', 'text'],
|
|
29
|
-
moduleDirectories: [
|
|
39
|
+
moduleDirectories: [
|
|
40
|
+
'node_modules',
|
|
41
|
+
nodePath
|
|
42
|
+
],
|
|
30
43
|
moduleFileExtensions,
|
|
31
|
-
moduleNameMapper: {'\\.(css|jpg|png|svg|txt)$':
|
|
44
|
+
moduleNameMapper: {'\\.(css|jpg|png|svg|txt)$': resolve(__dirname, './emptyModule')},
|
|
32
45
|
modulePaths: [
|
|
46
|
+
rootDir,
|
|
33
47
|
`${rootDir}/node_modules`,
|
|
34
48
|
nodePath,
|
|
35
49
|
sourceFullPath
|
|
36
50
|
],
|
|
37
|
-
resolver:
|
|
51
|
+
resolver: resolve(__dirname, './dist/resolver.js'),
|
|
38
52
|
rootDir,
|
|
39
53
|
setupFiles,
|
|
40
|
-
testEnvironment
|
|
54
|
+
testEnvironment,
|
|
55
|
+
testEnvironmentOptions,
|
|
41
56
|
testPathIgnorePatterns: [
|
|
42
57
|
'/node_modules/',
|
|
43
58
|
`${nodePath}/`
|
|
44
59
|
],
|
|
45
60
|
testRegex,
|
|
46
|
-
|
|
47
|
-
|
|
61
|
+
testRunner: `${nodePath}/jest-circus/runner.js`,
|
|
62
|
+
transform: {
|
|
63
|
+
'^.+\\.tsx?$': [
|
|
64
|
+
`${nodePath}/@nlabs/esbuild-jest/dist/index.js`,
|
|
65
|
+
{
|
|
66
|
+
format: 'cjs',
|
|
67
|
+
loaders: {
|
|
68
|
+
'.js': 'js',
|
|
69
|
+
'.ts': 'ts',
|
|
70
|
+
'.test.ts': 'ts',
|
|
71
|
+
'.spec.ts': 'ts',
|
|
72
|
+
'.tsx': 'tsx',
|
|
73
|
+
'.test.tsx': 'tsx',
|
|
74
|
+
'.spec.tsx': 'tsx'
|
|
75
|
+
},
|
|
76
|
+
sourcemap: true
|
|
77
|
+
}
|
|
78
|
+
],
|
|
79
|
+
'\\.(gql|graphql)$': 'jest-transform-graphql'
|
|
80
|
+
},
|
|
81
|
+
transformIgnorePatterns: [],
|
|
48
82
|
verbose: false,
|
|
49
83
|
...jest
|
|
50
84
|
};
|
package/jest.setup.js
CHANGED