node-cli-tester 21.0.10 → 21.0.12
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/browser/package.json +1 -1
- package/browser-prod/README.md +24 -0
- package/browser-prod/fesm2022/node-cli-tester-browser.mjs +23 -0
- package/browser-prod/fesm2022/node-cli-tester-browser.mjs.map +1 -0
- package/browser-prod/types/node-cli-tester-browser.d.ts +5 -0
- package/lib/build-info._auto-generated_.d.ts +5 -1
- package/lib/build-info._auto-generated_.js +6 -2
- package/lib/build-info._auto-generated_.js.map +1 -1
- package/lib/env/env.angular-node-app.d.ts +30 -29
- package/lib/env/env.angular-node-app.js +32 -31
- package/lib/env/env.angular-node-app.js.map +1 -1
- package/lib/env/env.docs-webapp.d.ts +30 -29
- package/lib/env/env.docs-webapp.js +32 -31
- package/lib/env/env.docs-webapp.js.map +1 -1
- package/lib/env/env.electron-app.d.ts +30 -29
- package/lib/env/env.electron-app.js +32 -31
- package/lib/env/env.electron-app.js.map +1 -1
- package/lib/env/env.mobile-app.d.ts +30 -29
- package/lib/env/env.mobile-app.js +32 -31
- package/lib/env/env.mobile-app.js.map +1 -1
- package/lib/env/env.npm-lib-and-cli-tool.d.ts +30 -29
- package/lib/env/env.npm-lib-and-cli-tool.js +32 -31
- package/lib/env/env.npm-lib-and-cli-tool.js.map +1 -1
- package/lib/env/env.vscode-plugin.d.ts +30 -29
- package/lib/env/env.vscode-plugin.js +32 -31
- package/lib/env/env.vscode-plugin.js.map +1 -1
- package/lib/index._auto-generated_.js +1 -1
- package/lib/index._auto-generated_.js.map +1 -1
- package/lib-prod/base-project-structure.backend.d.ts +13 -0
- package/lib-prod/base-project-structure.backend.js +76 -0
- package/lib-prod/base-project-structure.backend.js.map +1 -0
- package/lib-prod/build-info._auto-generated_.d.ts +24 -0
- package/lib-prod/build-info._auto-generated_.js +30 -0
- package/lib-prod/build-info._auto-generated_.js.map +1 -0
- package/lib-prod/cli-test.backend.d.ts +24 -0
- package/lib-prod/cli-test.backend.js +145 -0
- package/lib-prod/cli-test.backend.js.map +1 -0
- package/lib-prod/env/env.angular-node-app.d.ts +64 -0
- package/lib-prod/env/env.angular-node-app.js +71 -0
- package/lib-prod/env/env.angular-node-app.js.map +1 -0
- package/lib-prod/env/env.docs-webapp.d.ts +64 -0
- package/lib-prod/env/env.docs-webapp.js +71 -0
- package/lib-prod/env/env.docs-webapp.js.map +1 -0
- package/lib-prod/env/env.electron-app.d.ts +64 -0
- package/lib-prod/env/env.electron-app.js +71 -0
- package/lib-prod/env/env.electron-app.js.map +1 -0
- package/lib-prod/env/env.mobile-app.d.ts +64 -0
- package/lib-prod/env/env.mobile-app.js +71 -0
- package/lib-prod/env/env.mobile-app.js.map +1 -0
- package/lib-prod/env/env.npm-lib-and-cli-tool.d.ts +64 -0
- package/lib-prod/env/env.npm-lib-and-cli-tool.js +71 -0
- package/lib-prod/env/env.npm-lib-and-cli-tool.js.map +1 -0
- package/lib-prod/env/env.vscode-plugin.d.ts +64 -0
- package/lib-prod/env/env.vscode-plugin.js +71 -0
- package/lib-prod/env/env.vscode-plugin.js.map +1 -0
- package/lib-prod/env/index.d.ts +6 -0
- package/lib-prod/env/index.js +23 -0
- package/lib-prod/env/index.js.map +1 -0
- package/lib-prod/index._auto-generated_.d.ts +0 -0
- package/lib-prod/index._auto-generated_.js +6 -0
- package/lib-prod/index._auto-generated_.js.map +1 -0
- package/lib-prod/index.d.ts +4 -0
- package/lib-prod/index.js +14 -0
- package/lib-prod/index.js.map +1 -0
- package/lib-prod/meta-content-md.backend.d.ts +42 -0
- package/lib-prod/meta-content-md.backend.js +250 -0
- package/lib-prod/meta-content-md.backend.js.map +1 -0
- package/lib-prod/node-cli-tester.d.ts +25 -0
- package/lib-prod/node-cli-tester.js +203 -0
- package/lib-prod/node-cli-tester.js.map +1 -0
- package/lib-prod/spec-templates.backend.d.ts +6 -0
- package/lib-prod/spec-templates.backend.js +110 -0
- package/lib-prod/spec-templates.backend.js.map +1 -0
- package/lib-prod/start.backend.d.ts +2 -0
- package/lib-prod/start.backend.js +29 -0
- package/lib-prod/start.backend.js.map +1 -0
- package/package.json +1 -1
- package/package.json_tnp.json5 +3 -0
- package/tmp-environment.json +11 -5
- package/websql/package.json +1 -1
- package/websql-prod/README.md +24 -0
- package/websql-prod/fesm2022/node-cli-tester-websql.mjs +23 -0
- package/websql-prod/fesm2022/node-cli-tester-websql.mjs.map +1 -0
- package/websql-prod/types/node-cli-tester-websql.d.ts +5 -0
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MetaMd = void 0;
|
|
4
|
+
exports.extract = extract;
|
|
5
|
+
//#region imports
|
|
6
|
+
const glob = require("glob");
|
|
7
|
+
const lib_prod_1 = require("tnp-core/lib-prod");
|
|
8
|
+
const lib_prod_2 = require("tnp-core/lib-prod");
|
|
9
|
+
const lib_prod_3 = require("tnp-helpers/lib-prod");
|
|
10
|
+
const lib_prod_4 = require("typescript-class-helpers/lib-prod");
|
|
11
|
+
const base_project_structure_backend_1 = require("./base-project-structure.backend");
|
|
12
|
+
//#endregion
|
|
13
|
+
/**
|
|
14
|
+
* Special forma of .md for keeping metadata, testfile, and test template for file
|
|
15
|
+
*/
|
|
16
|
+
class MetaMd {
|
|
17
|
+
filePath;
|
|
18
|
+
//#region static fields
|
|
19
|
+
static JSON_PART = '@jsonPart';
|
|
20
|
+
static FILE_CONTENT_PART = '@fileContentPart';
|
|
21
|
+
static TEST_PART = '@testPart';
|
|
22
|
+
//#region static fields / create
|
|
23
|
+
static async create(json, fileContent, testContent) {
|
|
24
|
+
return await create((lib_prod_1._.isObject(json) ? lib_prod_3.Helpers.stringify(json) : json), fileContent, testContent);
|
|
25
|
+
}
|
|
26
|
+
//#endregion
|
|
27
|
+
//#region static fields / preserve file
|
|
28
|
+
static async preserveFiles(originalAnyTypeFiles, destinationFolder, editorCwd, foundProjectsFn = (a) => a, baseProjectsStructurePath, // navi-cli folder or current folder,
|
|
29
|
+
overrideThisFileName = void 0, overrideTimehash = void 0) {
|
|
30
|
+
const properDestName = overrideThisFileName ? overrideThisFileName :
|
|
31
|
+
`${lib_prod_1.path.basename(lib_prod_1._.first(originalAnyTypeFiles))}.${lib_prod_2.config.file.meta_config_md}`; // TODO later menu to confirm name
|
|
32
|
+
if (!lib_prod_3.Helpers.isFolder(destinationFolder)) {
|
|
33
|
+
lib_prod_3.Helpers.error(`[tnp-helpers][meta-content-md] Destination folder "${destinationFolder}"
|
|
34
|
+
is not a folder`, false, true);
|
|
35
|
+
}
|
|
36
|
+
let foundedProjectsInPath = resolveFoundedProject(originalAnyTypeFiles, editorCwd, foundProjectsFn);
|
|
37
|
+
const mostBaseLocationFound = lib_prod_1._.minBy(foundedProjectsInPath, p => p.location.length).location;
|
|
38
|
+
// console.log(foundedProjectsInPath.map(p => p.location))
|
|
39
|
+
const projects = foundedProjectsInPath
|
|
40
|
+
.reduce((a, b) => {
|
|
41
|
+
const baseStructureHash = base_project_structure_backend_1.BaseProjectStructure.generate(b).insideIfNotExists(baseProjectsStructurePath);
|
|
42
|
+
return lib_prod_1._.merge(a, {
|
|
43
|
+
[lib_prod_1.path.join(lib_prod_1.path.basename(mostBaseLocationFound), b.location.replace(mostBaseLocationFound, ''))]: {
|
|
44
|
+
githash: b.git.lastCommitHash(),
|
|
45
|
+
name: b.name,
|
|
46
|
+
baseStructureHash,
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
}, {});
|
|
50
|
+
const timeHash = overrideTimehash ? overrideTimehash : (+new Date).toString(36);
|
|
51
|
+
const c = await MetaMd.create({
|
|
52
|
+
orgFileBasenames: originalAnyTypeFiles.map(a => lib_prod_1.path.basename(a)),
|
|
53
|
+
orgRelativePathes: originalAnyTypeFiles.map(a => {
|
|
54
|
+
return lib_prod_1.path.join(lib_prod_1.path.basename(mostBaseLocationFound), a.replace(mostBaseLocationFound, ''));
|
|
55
|
+
}),
|
|
56
|
+
projects,
|
|
57
|
+
firstProjectBasename: lib_prod_1.path.basename(mostBaseLocationFound),
|
|
58
|
+
timeHash,
|
|
59
|
+
}, originalAnyTypeFiles.map(a => lib_prod_3.Helpers.readFile(a)));
|
|
60
|
+
lib_prod_3.Helpers.writeFile(lib_prod_1.path.join(destinationFolder, properDestName), c);
|
|
61
|
+
}
|
|
62
|
+
//#endregion
|
|
63
|
+
async addFiles(newFilesPathes, destinationFolder, editorCwd, foundProjectFn = void 0, baseProjectsStructurePath) {
|
|
64
|
+
let foundedProjectsInPath = resolveFoundedProject(newFilesPathes, editorCwd, foundProjectFn);
|
|
65
|
+
const mostBaseLocationFound = lib_prod_1._.minBy(foundedProjectsInPath, p => p.location.length).location;
|
|
66
|
+
newFilesPathes = lib_prod_3.Helpers.arrays.uniqArray([
|
|
67
|
+
...newFilesPathes,
|
|
68
|
+
...this.readonlyMetaJson.orgRelativePathes.map(a => {
|
|
69
|
+
return lib_prod_1.path.join(lib_prod_1.path.dirname(mostBaseLocationFound), a);
|
|
70
|
+
}),
|
|
71
|
+
]);
|
|
72
|
+
newFilesPathes.forEach(f => {
|
|
73
|
+
if (!lib_prod_3.Helpers.exists(f)) {
|
|
74
|
+
lib_prod_3.Helpers.error(`File doesn't exists`, false, true);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
await MetaMd.preserveFiles(newFilesPathes, destinationFolder, editorCwd, foundProjectFn, baseProjectsStructurePath, lib_prod_1.path.basename(this.filePath), this.readonlyMetaJson.timeHash);
|
|
78
|
+
}
|
|
79
|
+
//#region static fields / handle instance from meta-content.md file
|
|
80
|
+
static instanceFrom(filePath) {
|
|
81
|
+
return new MetaMd(filePath);
|
|
82
|
+
}
|
|
83
|
+
static allInstancesFrom(folderPath) {
|
|
84
|
+
return glob.sync(`${folderPath}/*.${lib_prod_2.config.file.meta_config_md}`).map(f => {
|
|
85
|
+
return MetaMd.instanceFrom(f);
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
//#endregion
|
|
89
|
+
//#endregion
|
|
90
|
+
//#region getters
|
|
91
|
+
get json() {
|
|
92
|
+
const content = lib_prod_3.Helpers.readFile(this.filePath) || '';
|
|
93
|
+
try {
|
|
94
|
+
const extracted = lib_prod_1._.first(extract(content, MetaMd.JSON_PART));
|
|
95
|
+
const parsed = lib_prod_3.Helpers.parse(extracted, true);
|
|
96
|
+
return parsed;
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
return {};
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
get readonlyMetaJson() {
|
|
103
|
+
return Object.freeze(this.json);
|
|
104
|
+
}
|
|
105
|
+
fileContentByIndex(i) {
|
|
106
|
+
const content = lib_prod_3.Helpers.readFile(this.filePath) || '';
|
|
107
|
+
const extracted = extract(content, MetaMd.FILE_CONTENT_PART)[i];
|
|
108
|
+
return extracted;
|
|
109
|
+
}
|
|
110
|
+
get basename() {
|
|
111
|
+
return lib_prod_1.path.basename(this.filePath);
|
|
112
|
+
}
|
|
113
|
+
get dirname() {
|
|
114
|
+
return lib_prod_1.path.dirname(this.filePath);
|
|
115
|
+
}
|
|
116
|
+
//#endregion
|
|
117
|
+
//#region constructor
|
|
118
|
+
constructor(filePath) {
|
|
119
|
+
this.filePath = filePath;
|
|
120
|
+
}
|
|
121
|
+
//#endregion
|
|
122
|
+
//#region recreate files/content/env before any tests
|
|
123
|
+
/**
|
|
124
|
+
* recate original files before any unit/intergration test
|
|
125
|
+
*/
|
|
126
|
+
recreate(testCwd, cwdProj, ProjectClass = lib_prod_3.BaseProject, onlyIfNotExists = false) {
|
|
127
|
+
// recreat whole structure
|
|
128
|
+
const hashDir = lib_prod_1.path.join(testCwd, this.json.timeHash);
|
|
129
|
+
if (onlyIfNotExists && lib_prod_3.Helpers.exists(hashDir)) {
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
lib_prod_3.Helpers.removeFolderIfExists(hashDir);
|
|
133
|
+
lib_prod_3.Helpers.mkdirp(hashDir);
|
|
134
|
+
const firstToFind = this.json.projects[this.json.firstProjectBasename].baseStructureHash;
|
|
135
|
+
const allBaseStructures = base_project_structure_backend_1.BaseProjectStructure.allBaseStructures(cwdProj);
|
|
136
|
+
const baseStructure = allBaseStructures.find(p => p.baseStructureHash === firstToFind);
|
|
137
|
+
if (!baseStructure) {
|
|
138
|
+
lib_prod_3.Helpers.error(`[node-cli-test][regenerate] base structure was not generated for ${firstToFind}`, false, true);
|
|
139
|
+
}
|
|
140
|
+
baseStructure.copyto(hashDir);
|
|
141
|
+
lib_prod_1._.keys(this.json.projects)
|
|
142
|
+
.filter(key => key !== this.json.firstProjectBasename)
|
|
143
|
+
.map(key => {
|
|
144
|
+
const baseStructureHashChild = this.json.projects[key].baseStructureHash;
|
|
145
|
+
const childBaseStruct = allBaseStructures.find(p => p.baseStructureHash === baseStructureHashChild);
|
|
146
|
+
if (childBaseStruct) {
|
|
147
|
+
childBaseStruct.copyto(lib_prod_1.path.join(hashDir, lib_prod_1.path.dirname(key)), lib_prod_1.path.basename(key));
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
this.readonlyMetaJson.orgRelativePathes.forEach((f, i) => {
|
|
151
|
+
const fileToWritePath = lib_prod_1.path.join(hashDir, f);
|
|
152
|
+
lib_prod_3.Helpers.writeFile(fileToWritePath, this.fileContentByIndex(i));
|
|
153
|
+
});
|
|
154
|
+
const proj = ProjectClass.ins.From(lib_prod_1.path.join(hashDir, this.readonlyMetaJson.firstProjectBasename));
|
|
155
|
+
const linksToLInk = []; // proj?.forEmptyStructure().filter(f => !!f.relativeLinkFrom) || [];
|
|
156
|
+
linksToLInk.forEach(l => {
|
|
157
|
+
const source = lib_prod_1.path.resolve(lib_prod_1.path.join(proj.location, l.relativeLinkFrom));
|
|
158
|
+
if (lib_prod_3.Helpers.exists(source)) {
|
|
159
|
+
const dest = lib_prod_1.path.resolve(lib_prod_1.path.join(proj.location, l.relativePath));
|
|
160
|
+
lib_prod_3.Helpers.createSymLink(source, dest);
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
lib_prod_3.Helpers.log(`[cli-tester][recreate-env] not exist ${source}`);
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
exports.MetaMd = MetaMd;
|
|
169
|
+
//#region create
|
|
170
|
+
async function create(json5string, fileContents, testContent) {
|
|
171
|
+
const metadataJSON = lib_prod_3.Helpers.parse(json5string, true);
|
|
172
|
+
// Helpers.log(`metadataJSON.orgFileBasename: ${metadataJSON.orgFileBasename}`)
|
|
173
|
+
if (!testContent) {
|
|
174
|
+
const projPath = lib_prod_1._.maxBy(lib_prod_1._.keys(metadataJSON.projects).map(projRelPath => {
|
|
175
|
+
return { path: projRelPath, length: projRelPath.length };
|
|
176
|
+
}), c => c.length)?.path || '';
|
|
177
|
+
let TestTemplatesClass = lib_prod_4.CLASS.getBy('TestTemplates');
|
|
178
|
+
if (!TestTemplatesClass) {
|
|
179
|
+
TestTemplatesClass = await (await Promise.resolve().then(() => require('./spec-templates.backend'))).TestTemplates;
|
|
180
|
+
}
|
|
181
|
+
testContent = TestTemplatesClass.testPart(metadataJSON.orgRelativePathes, projPath, metadataJSON.timeHash);
|
|
182
|
+
}
|
|
183
|
+
const filesContestString = fileContents.map((fileContent, i) => {
|
|
184
|
+
const ext = lib_prod_1.path.extname(metadataJSON.orgFileBasenames[i]).replace(/^\./, '');
|
|
185
|
+
return `\`\`\`${ext} ${MetaMd.FILE_CONTENT_PART}
|
|
186
|
+
${fileContent}
|
|
187
|
+
\`\`\``;
|
|
188
|
+
}).join('\n\n');
|
|
189
|
+
return `
|
|
190
|
+
\`\`\`ts ${MetaMd.TEST_PART}
|
|
191
|
+
${testContent}
|
|
192
|
+
\`\`\`
|
|
193
|
+
|
|
194
|
+
\`\`\`json5 ${MetaMd.JSON_PART}
|
|
195
|
+
${json5string}
|
|
196
|
+
\`\`\`
|
|
197
|
+
|
|
198
|
+
${filesContestString}
|
|
199
|
+
`.split('\n').map(l => {
|
|
200
|
+
return l.trim().startsWith('\`\`\`') ? l.trimLeft() : l;
|
|
201
|
+
}).join('\n').trim() + '\n';
|
|
202
|
+
}
|
|
203
|
+
//#endregion
|
|
204
|
+
//#region extract data parts from content md file
|
|
205
|
+
function extract(content, PARTS_TO_FIND) {
|
|
206
|
+
if (!content) {
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
const parts = [];
|
|
210
|
+
let lines = [];
|
|
211
|
+
const allLines = content.split('\n');
|
|
212
|
+
let pushingActive = false;
|
|
213
|
+
for (let index = 0; index < allLines.length; index++) {
|
|
214
|
+
const orgLine = (allLines[index] || '');
|
|
215
|
+
const line = orgLine.trim();
|
|
216
|
+
if (pushingActive) {
|
|
217
|
+
if (line.startsWith('\`\`\`')) {
|
|
218
|
+
parts.push(lines.join('\n'));
|
|
219
|
+
lines = [];
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
lines.push(orgLine);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
if (line.startsWith('\`\`\`') && (line.search(PARTS_TO_FIND) !== -1)) {
|
|
226
|
+
pushingActive = true;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
return parts.filter(f => !!f.trim());
|
|
230
|
+
}
|
|
231
|
+
//#endregion
|
|
232
|
+
//#region resolve founded projects
|
|
233
|
+
function resolveFoundedProject(originalAnyTypeFiles, editorCwd, foundProjectFn) {
|
|
234
|
+
let foundedProjectsInPath = [];
|
|
235
|
+
for (let index = 0; index < originalAnyTypeFiles.length; index++) {
|
|
236
|
+
const fileAbsPath = originalAnyTypeFiles[index];
|
|
237
|
+
foundedProjectsInPath = [
|
|
238
|
+
...foundedProjectsInPath,
|
|
239
|
+
...lib_prod_3.BaseProject.ins.allProjectFrom(fileAbsPath, editorCwd)
|
|
240
|
+
];
|
|
241
|
+
if (foundProjectFn) {
|
|
242
|
+
foundedProjectsInPath = foundProjectFn(lib_prod_3.Helpers.arrays.uniqArray(foundedProjectsInPath, 'location'));
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
foundedProjectsInPath = lib_prod_3.Helpers.arrays.uniqArray(foundedProjectsInPath, 'location');
|
|
246
|
+
return foundedProjectsInPath;
|
|
247
|
+
}
|
|
248
|
+
//#endregion
|
|
249
|
+
//#endregion
|
|
250
|
+
//# sourceMappingURL=meta-content-md.backend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meta-content-md.backend.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { BaseProject as Project } from 'tnp-helpers/lib-prod';
|
|
2
|
+
export declare class NodeCliTester {
|
|
3
|
+
protected readonly cwd: string;
|
|
4
|
+
private static _instances;
|
|
5
|
+
private static ACTIONS;
|
|
6
|
+
static classFn: typeof NodeCliTester;
|
|
7
|
+
static projectClassFn: typeof Project;
|
|
8
|
+
static foundProjectsFn: (projects: Project[]) => Project[];
|
|
9
|
+
protected constructor(cwd?: string);
|
|
10
|
+
static Instance(cwd?: string): NodeCliTester;
|
|
11
|
+
static InstanceNearestTo(cwd: string): NodeCliTester;
|
|
12
|
+
protected getAllTestsNames(): void;
|
|
13
|
+
protected getMdContentFilesForTest(testNameOrPathToTestFolder: string): void;
|
|
14
|
+
protected getMdContentFilesWithHash(testNameOrPathToTestFolder: string): void;
|
|
15
|
+
protected getAllTestsNamesForRegenerate(): void;
|
|
16
|
+
createTest(testNameOrPathToTestFolder: string[] | string): Promise<void>;
|
|
17
|
+
createTestAndAddFiles(testName: string, absoluteFilePathes: string[], editorCwd?: string): Promise<void>;
|
|
18
|
+
addFilesToTest(testNameOrPathToTestFolder: string, filePath: string[], editorCwd?: string): Promise<void>;
|
|
19
|
+
addFilesToMdContent(testNameOrPathToTestFolder: string, mdContentFileBasenameOrPath: string | null, filePaths: string[], editorCwd?: string): Promise<void>;
|
|
20
|
+
private get lastRegenerateHashFile();
|
|
21
|
+
private get lastRegenerateMenuItem();
|
|
22
|
+
regenerate(timeHash: string): Promise<void>;
|
|
23
|
+
regenerateLast(): Promise<void>;
|
|
24
|
+
regenerateEnvironment(timeHash: string, tempFolder?: string, onlyIfNotExists?: boolean): Promise<void>;
|
|
25
|
+
}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NodeCliTester = void 0;
|
|
4
|
+
//#region imports
|
|
5
|
+
//#region @backend
|
|
6
|
+
const lib_prod_1 = require("tnp-core/lib-prod");
|
|
7
|
+
const lib_prod_2 = require("tnp-helpers/lib-prod");
|
|
8
|
+
const lib_prod_3 = require("tnp-core/lib-prod");
|
|
9
|
+
const cli_test_backend_1 = require("./cli-test.backend");
|
|
10
|
+
const lib_prod_4 = require("typescript-class-helpers/lib-prod");
|
|
11
|
+
//#endregion
|
|
12
|
+
//#endregion
|
|
13
|
+
class NodeCliTester {
|
|
14
|
+
cwd;
|
|
15
|
+
//#region @backend
|
|
16
|
+
//#region singleton
|
|
17
|
+
static _instances = {};
|
|
18
|
+
static ACTIONS = {
|
|
19
|
+
REGENERATE_LAST_HASH: 'regenerate-last-env-hash'
|
|
20
|
+
};
|
|
21
|
+
static classFn = NodeCliTester;
|
|
22
|
+
static projectClassFn = lib_prod_2.BaseProject;
|
|
23
|
+
static foundProjectsFn = void 0;
|
|
24
|
+
constructor(cwd = process.cwd()) {
|
|
25
|
+
this.cwd = cwd;
|
|
26
|
+
const pathToScenarios = lib_prod_1.path.join(cwd, lib_prod_3.config.folder.scenarios);
|
|
27
|
+
const pathToScenariosTemp = lib_prod_1.path.join(cwd, lib_prod_3.config.folder.tmpScenarios);
|
|
28
|
+
if (!lib_prod_2.Helpers.exists(pathToScenarios)) {
|
|
29
|
+
lib_prod_2.Helpers.createSymLink(pathToScenariosTemp, pathToScenarios, { continueWhenExistedFolderDoesntExists: true });
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
static Instance(cwd = process.cwd()) {
|
|
33
|
+
if (!NodeCliTester._instances[cwd]) {
|
|
34
|
+
NodeCliTester._instances[cwd] = new (this.classFn)(cwd);
|
|
35
|
+
}
|
|
36
|
+
return NodeCliTester._instances[cwd];
|
|
37
|
+
}
|
|
38
|
+
static InstanceNearestTo(cwd) {
|
|
39
|
+
const proj = lib_prod_2.BaseProject.ins.nearestTo(cwd);
|
|
40
|
+
if (!proj) {
|
|
41
|
+
lib_prod_2.Helpers.error(`Nearsest project instance not found for ${cwd} `, false, true);
|
|
42
|
+
}
|
|
43
|
+
return this.Instance(proj.location);
|
|
44
|
+
}
|
|
45
|
+
//#endregion
|
|
46
|
+
//#region get menu options
|
|
47
|
+
//#region get menu options / all tests names
|
|
48
|
+
getAllTestsNames() {
|
|
49
|
+
const names = cli_test_backend_1.CliTest.allFrom(this.cwd).map(c => {
|
|
50
|
+
return { label: c.testName, option: c.testDirnamePath };
|
|
51
|
+
});
|
|
52
|
+
lib_prod_2.Helpers.outputToVScode(names);
|
|
53
|
+
}
|
|
54
|
+
//#endregion
|
|
55
|
+
//#region get menu options / all meta-content.md files for test (path as option)
|
|
56
|
+
getMdContentFilesForTest(testNameOrPathToTestFolder) {
|
|
57
|
+
const c = cli_test_backend_1.CliTest.from(this.cwd, lib_prod_1.path.isAbsolute(testNameOrPathToTestFolder) ? lib_prod_1.path.basename(testNameOrPathToTestFolder) : testNameOrPathToTestFolder);
|
|
58
|
+
const toOutput = [
|
|
59
|
+
{ label: `< create new ${lib_prod_3.config.file.meta_config_md} file >`, option: null },
|
|
60
|
+
...c.metaMd.all.map(c => {
|
|
61
|
+
const v = c.filePath;
|
|
62
|
+
return { option: v, label: `add to "${lib_prod_1.path.basename(v)}"` };
|
|
63
|
+
})
|
|
64
|
+
];
|
|
65
|
+
lib_prod_2.Helpers.outputToVScode(toOutput);
|
|
66
|
+
}
|
|
67
|
+
//#endregion
|
|
68
|
+
//#region get menu options / all meta-content.md files for test (hash as option)
|
|
69
|
+
getMdContentFilesWithHash(testNameOrPathToTestFolder) {
|
|
70
|
+
const c = cli_test_backend_1.CliTest.from(this.cwd, lib_prod_1.path.isAbsolute(testNameOrPathToTestFolder) ? lib_prod_1.path.basename(testNameOrPathToTestFolder) : testNameOrPathToTestFolder);
|
|
71
|
+
const toOutput = [
|
|
72
|
+
...c.metaMd.all.map(c => {
|
|
73
|
+
return { option: c.readonlyMetaJson.timeHash, label: `add to "${lib_prod_1.path.basename(c.filePath)}"` };
|
|
74
|
+
})
|
|
75
|
+
];
|
|
76
|
+
lib_prod_2.Helpers.outputToVScode(toOutput);
|
|
77
|
+
}
|
|
78
|
+
//#endregion
|
|
79
|
+
//#region get menu options / all tests names (with additional options for regenerate)
|
|
80
|
+
getAllTestsNamesForRegenerate() {
|
|
81
|
+
const last = this.lastRegenerateMenuItem;
|
|
82
|
+
const specialOptions = [
|
|
83
|
+
...(last ? [last] : [])
|
|
84
|
+
];
|
|
85
|
+
const names = [
|
|
86
|
+
...specialOptions,
|
|
87
|
+
...cli_test_backend_1.CliTest.allFrom(this.cwd).map(c => {
|
|
88
|
+
return { label: c.testName, option: c.testDirnamePath };
|
|
89
|
+
}),
|
|
90
|
+
];
|
|
91
|
+
lib_prod_2.Helpers.outputToVScode(names);
|
|
92
|
+
}
|
|
93
|
+
//#endregion
|
|
94
|
+
//#endregion
|
|
95
|
+
//#region create test
|
|
96
|
+
async createTest(testNameOrPathToTestFolder) {
|
|
97
|
+
lib_prod_2.Helpers.log(`Create test from node-cli-tester`);
|
|
98
|
+
if (lib_prod_1._.isString(testNameOrPathToTestFolder)) {
|
|
99
|
+
testNameOrPathToTestFolder = [testNameOrPathToTestFolder];
|
|
100
|
+
}
|
|
101
|
+
for (let index = 0; index < testNameOrPathToTestFolder.length; index++) {
|
|
102
|
+
const p = testNameOrPathToTestFolder[index];
|
|
103
|
+
const c = cli_test_backend_1.CliTest.from(this.cwd, lib_prod_1.path.isAbsolute(p) ? lib_prod_1.path.basename(p) : p);
|
|
104
|
+
await c.regenerateFiles();
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
//#endregion
|
|
108
|
+
//#region create test and add file
|
|
109
|
+
async createTestAndAddFiles(testName, absoluteFilePathes, editorCwd = process.cwd()) {
|
|
110
|
+
await this.createTest(testName);
|
|
111
|
+
await this.addFilesToTest(testName, absoluteFilePathes, editorCwd);
|
|
112
|
+
}
|
|
113
|
+
//#endregion
|
|
114
|
+
//#region add files to
|
|
115
|
+
//#region add files to / test
|
|
116
|
+
async addFilesToTest(testNameOrPathToTestFolder, filePath, editorCwd = process.cwd()) {
|
|
117
|
+
const c = cli_test_backend_1.CliTest.from(this.cwd, lib_prod_1.path.isAbsolute(testNameOrPathToTestFolder)
|
|
118
|
+
? lib_prod_1.path.basename(testNameOrPathToTestFolder) : testNameOrPathToTestFolder);
|
|
119
|
+
await c.metaMd.add(filePath, editorCwd, lib_prod_4.CLASS.getFromObject(this));
|
|
120
|
+
}
|
|
121
|
+
//#endregion
|
|
122
|
+
//#region add files to / meta-content.md files
|
|
123
|
+
async addFilesToMdContent(testNameOrPathToTestFolder, mdContentFileBasenameOrPath, filePaths, editorCwd = process.cwd()) {
|
|
124
|
+
const c = cli_test_backend_1.CliTest.from(this.cwd, lib_prod_1.path.isAbsolute(testNameOrPathToTestFolder)
|
|
125
|
+
? lib_prod_1.path.basename(testNameOrPathToTestFolder) : testNameOrPathToTestFolder);
|
|
126
|
+
const mdContentFileBasename = !!mdContentFileBasenameOrPath && (lib_prod_1.path.isAbsolute(mdContentFileBasenameOrPath)
|
|
127
|
+
? lib_prod_1.path.basename(mdContentFileBasenameOrPath) : mdContentFileBasenameOrPath);
|
|
128
|
+
const m = mdContentFileBasename && c.metaMd.all.find(a => a.basename === mdContentFileBasename);
|
|
129
|
+
if (m) {
|
|
130
|
+
const NodeCliTestrClass = lib_prod_4.CLASS.getFromObject(this);
|
|
131
|
+
await m.addFiles(filePaths, c.testDirnamePath, editorCwd, NodeCliTestrClass.foundProjectsFn, c.cwd);
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
await this.addFilesToTest(testNameOrPathToTestFolder, filePaths, editorCwd);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
//#endregion
|
|
138
|
+
//#endregion
|
|
139
|
+
//#region regenerate
|
|
140
|
+
//#region regenerate / last regenerate hash file path
|
|
141
|
+
get lastRegenerateHashFile() {
|
|
142
|
+
return lib_prod_1.path.join(this.cwd, 'tmp-last-regenerate-hash-env');
|
|
143
|
+
}
|
|
144
|
+
//#endregion
|
|
145
|
+
//#region regenerate / get last regenerate manu item
|
|
146
|
+
get lastRegenerateMenuItem() {
|
|
147
|
+
const lashHash = lib_prod_2.Helpers.readFile(this.lastRegenerateHashFile, '').trim();
|
|
148
|
+
if (lashHash) {
|
|
149
|
+
const allTests = cli_test_backend_1.CliTest.allFrom(this.cwd);
|
|
150
|
+
let machingMdFile;
|
|
151
|
+
allTests.find(a => a.metaMd.all.find(b => {
|
|
152
|
+
if (b.readonlyMetaJson.timeHash === lashHash) {
|
|
153
|
+
machingMdFile = b;
|
|
154
|
+
return true;
|
|
155
|
+
}
|
|
156
|
+
return false;
|
|
157
|
+
}));
|
|
158
|
+
if (machingMdFile) {
|
|
159
|
+
const NodeCliTesterClass = lib_prod_4.CLASS.getFromObject(this);
|
|
160
|
+
const res = {
|
|
161
|
+
label: ` < regenerate last hash env "${machingMdFile.readonlyMetaJson.timeHash}" `
|
|
162
|
+
+ `for project: "${machingMdFile.readonlyMetaJson.firstProjectBasename}" in `
|
|
163
|
+
+ `${machingMdFile.basename} >`,
|
|
164
|
+
option: { action: NodeCliTesterClass.ACTIONS.REGENERATE_LAST_HASH }
|
|
165
|
+
};
|
|
166
|
+
return res;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
return void 0;
|
|
170
|
+
}
|
|
171
|
+
//#endregion
|
|
172
|
+
//#region regenerate / aliases
|
|
173
|
+
async regenerate(timeHash) {
|
|
174
|
+
await this.regenerateEnvironment(timeHash);
|
|
175
|
+
}
|
|
176
|
+
async regenerateLast() {
|
|
177
|
+
const NodeCliTesterClass = lib_prod_4.CLASS.getFromObject(this);
|
|
178
|
+
await this.regenerateEnvironment(NodeCliTesterClass.ACTIONS.REGENERATE_LAST_HASH);
|
|
179
|
+
}
|
|
180
|
+
//#endregion
|
|
181
|
+
//#region regenerate / regenerate environment function
|
|
182
|
+
async regenerateEnvironment(timeHash, tempFolder = lib_prod_3.config.folder.tmpTestsEnvironments, onlyIfNotExists = false) {
|
|
183
|
+
const NodeCliTesterClass = lib_prod_4.CLASS.getFromObject(this);
|
|
184
|
+
if (timeHash === NodeCliTesterClass.ACTIONS.REGENERATE_LAST_HASH) {
|
|
185
|
+
timeHash = lib_prod_2.Helpers.readFile(this.lastRegenerateHashFile, '');
|
|
186
|
+
}
|
|
187
|
+
if (!lib_prod_1.path.isAbsolute(tempFolder)) {
|
|
188
|
+
tempFolder = lib_prod_1.path.join(this.cwd, tempFolder);
|
|
189
|
+
}
|
|
190
|
+
const c = cli_test_backend_1.CliTest.getBy(this.cwd, timeHash);
|
|
191
|
+
const m = c?.metaMd.all.find(a => a.readonlyMetaJson.timeHash === timeHash);
|
|
192
|
+
if (m) {
|
|
193
|
+
const ProjectClass = NodeCliTesterClass.projectClassFn;
|
|
194
|
+
m.recreate(tempFolder, this.cwd, ProjectClass, onlyIfNotExists);
|
|
195
|
+
lib_prod_2.Helpers.writeFile(this.lastRegenerateHashFile, timeHash);
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
lib_prod_2.Helpers.error(`Not able to find test with hash ${timeHash}`, false, true);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
exports.NodeCliTester = NodeCliTester;
|
|
203
|
+
//# sourceMappingURL=node-cli-tester.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-cli-tester.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare class TestTemplates {
|
|
2
|
+
static DEFAULT_COMMAND: string;
|
|
3
|
+
static PROJECT_ENTITY_LOCATION: string;
|
|
4
|
+
static testPart(pathToFiles: string[], projPath: string, timeHash: string): string;
|
|
5
|
+
static regenerateSpecTs(specTsPath: string, testRealName: string): void;
|
|
6
|
+
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.TestTemplates = void 0;
|
|
10
|
+
//#region imports
|
|
11
|
+
const lib_prod_1 = require("tnp-core/lib-prod");
|
|
12
|
+
const lib_prod_2 = require("typescript-class-helpers/lib-prod");
|
|
13
|
+
const lib_prod_3 = require("tnp-helpers/lib-prod");
|
|
14
|
+
//#endregion
|
|
15
|
+
//#region base imports contant
|
|
16
|
+
const baseImports = `
|
|
17
|
+
import { _, path, crossPlatformPath } from 'tnp-core';
|
|
18
|
+
import chalk from 'chalk';
|
|
19
|
+
import { describe, before, beforeEach, it } from 'mocha';
|
|
20
|
+
import { expect } from 'chai';
|
|
21
|
+
import { CLASS } from 'typescript-class-helpers';
|
|
22
|
+
import { Helpers } from 'tnp-helpers';
|
|
23
|
+
import { config } from 'tnp-core';
|
|
24
|
+
import { NodeCliTester } from 'node-cli-tester';
|
|
25
|
+
`.trim();
|
|
26
|
+
const testMeta = `
|
|
27
|
+
// const testName = this.test.title;
|
|
28
|
+
// const testFullName = this.test.fullTitle();
|
|
29
|
+
`.trim();
|
|
30
|
+
//#endregion
|
|
31
|
+
let TestTemplates = class TestTemplates {
|
|
32
|
+
static DEFAULT_COMMAND = `echo "hello world"`;
|
|
33
|
+
static PROJECT_ENTITY_LOCATION = `tnp-helpers`;
|
|
34
|
+
//#region create test part
|
|
35
|
+
static testPart(pathToFiles, projPath, timeHash) {
|
|
36
|
+
const describes = `
|
|
37
|
+
|
|
38
|
+
it('Should pass the test with hash ' + cwdHash // chalk.hidden(cwdHash)
|
|
39
|
+
, async () => {
|
|
40
|
+
//#region resolve variables
|
|
41
|
+
${'' // testMeta
|
|
42
|
+
}
|
|
43
|
+
const projFolder = '${lib_prod_1._.first(projPath.split('/'))}';
|
|
44
|
+
const tmpTestEnvironmentFolder = 'tmp-tests-environments';
|
|
45
|
+
const cwd = path.resolve(path.join(crossPlatformPath(__dirname), \`../../../../\${tmpTestEnvironmentFolder}\`, cwdHash));
|
|
46
|
+
const relativePathToFile = {
|
|
47
|
+
${pathToFiles.map(pathToFile => `${lib_prod_1._.camelCase(lib_prod_1.path.basename(pathToFile))} : \`${pathToFile.split('/').slice(1).join('/')}\``)
|
|
48
|
+
.join(',\n ')}
|
|
49
|
+
};
|
|
50
|
+
const absolutePathToTestFile = {
|
|
51
|
+
${pathToFiles.map(pathToFile => `${lib_prod_1._.camelCase(lib_prod_1.path.basename(pathToFile))} : path.join(cwd, projFolder, relativePathToFile.${lib_prod_1._.camelCase(lib_prod_1.path.basename(pathToFile))})`)
|
|
52
|
+
.join(',\n ')}
|
|
53
|
+
};
|
|
54
|
+
await NodeCliTester.InstanceNearestTo(cwd).regenerateEnvironment(cwdHash,tmpTestEnvironmentFolder);
|
|
55
|
+
const $Project = Project || CLASS.getBy('Project') as typeof Project;
|
|
56
|
+
const proj = $Project.From(path.join(cwd,projFolder));
|
|
57
|
+
//#endregion
|
|
58
|
+
|
|
59
|
+
// @ts-ignore
|
|
60
|
+
expect(proj.runCommandGetString(\`${this.DEFAULT_COMMAND}\`)).to.be.eq('hello world');
|
|
61
|
+
});
|
|
62
|
+
`;
|
|
63
|
+
const testsImports = `
|
|
64
|
+
${'' // baseImports
|
|
65
|
+
}
|
|
66
|
+
${'' // import { Project } from '${this.PROJECT_ENTITY_LOCATION}';
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
`;
|
|
70
|
+
const result = '\n'
|
|
71
|
+
+ testsImports.trim()
|
|
72
|
+
+ `
|
|
73
|
+
describe('${projPath}',()=> {
|
|
74
|
+
const cwdHash = '${timeHash}';
|
|
75
|
+
${describes}
|
|
76
|
+
});
|
|
77
|
+
`.trim() + '\n\n';
|
|
78
|
+
return result;
|
|
79
|
+
}
|
|
80
|
+
//#endregion
|
|
81
|
+
//#region regenerate spec ts
|
|
82
|
+
static regenerateSpecTs(specTsPath, testRealName) {
|
|
83
|
+
if (!lib_prod_3.Helpers.exists(specTsPath)) {
|
|
84
|
+
lib_prod_3.Helpers.writeFile(specTsPath,
|
|
85
|
+
//#region content of *.spec.ts
|
|
86
|
+
`
|
|
87
|
+
${baseImports}
|
|
88
|
+
import { Project } from '${this.PROJECT_ENTITY_LOCATION}';
|
|
89
|
+
|
|
90
|
+
describe('${testRealName}', () => {
|
|
91
|
+
|
|
92
|
+
// PUT ALL YOUR TESTS HERE
|
|
93
|
+
|
|
94
|
+
it('should works example unit test', () => {
|
|
95
|
+
${testMeta}
|
|
96
|
+
expect(1).to.be.gt(0)
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
});
|
|
100
|
+
`.trim() + '\n'
|
|
101
|
+
//#endregion
|
|
102
|
+
);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
exports.TestTemplates = TestTemplates;
|
|
107
|
+
exports.TestTemplates = TestTemplates = __decorate([
|
|
108
|
+
lib_prod_2.CLASS.NAME('TestTemplates')
|
|
109
|
+
], TestTemplates);
|
|
110
|
+
//# sourceMappingURL=spec-templates.backend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec-templates.backend.js","sourceRoot":"","sources":[""],"names":[],"mappings":";;;;;;;;;AAAA,iBAAiB;AACjB,gDAA4C;AAC5C,gEAA0D;AAC1D,mDAA+C;AAC/C,YAAY;AAEZ,8BAA8B;AAC9B,MAAM,WAAW,GAAG;;;;;;;;;CASnB,CAAC,IAAI,EAAE,CAAC;AAET,MAAM,QAAQ,GAAG;;;CAGhB,CAAC,IAAI,EAAE,CAAC;AACT,YAAY;AAEL,IAAM,aAAa,GAAnB,MAAM,aAAa;IACjB,MAAM,CAAC,eAAe,GAAG,oBAAoB,CAAC;IAC9C,MAAM,CAAC,uBAAuB,GAAG,aAAa,CAAC;IAEtD,0BAA0B;IACnB,MAAM,CAAC,QAAQ,CAAC,WAAqB,EAAE,QAAgB,EAAE,QAAgB;QAC9E,MAAM,SAAS,GAAG;;;;;EAKpB,EAAE,CAAE,WAAW;QACX;yBACmB,YAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;;;OAI9C,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,YAAC,CAAC,SAAS,CAAC,eAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,QAAQ,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;aAC1H,IAAI,CAAC,UAAU,CAAC;;;OAGlB,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,YAAC,CAAC,SAAS,CAAC,eAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,oDAAoD,YAAC,CAAC,SAAS,CAAC,eAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC;aACnK,IAAI,CAAC,UAAU,CAAC;;;;;;;;uCAQc,IAAI,CAAC,eAAe;;CAE1D,CAAC;QAGE,MAAM,YAAY,GAAG;EACvB,EAAE,CAAE,cAAc;QACd;EACJ,EAAE,CAAC,6DAA6D;QAC5D;;CAEL,CAAC;QACE,MAAM,MAAM,GAAG,IAAI;cACf,YAAY,CAAC,IAAI,EAAE;cACnB;YACI,QAAQ;qBACC,QAAQ;EAC3B,SAAS;;GAER,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC;QAChB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,YAAY;IAEZ,4BAA4B;IACrB,MAAM,CAAC,gBAAgB,CAAC,UAAkB,EAAE,YAAoB;QACrE,IAAI,CAAC,kBAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YAChC,kBAAO,CAAC,SAAS,CAAC,UAAU;YAC1B,8BAA8B;YAC9B;EACN,WAAW;2BACc,IAAI,CAAC,uBAAuB;;YAE3C,YAAY;;;;;EAKtB,QAAQ;;;;;CAKT,CAAC,IAAI,EAAE,GAAG,IAAI;YACP,YAAY;aACb,CAAC;QACJ,CAAC;IACH,CAAC;;AA7EU,sCAAa;wBAAb,aAAa;IADzB,gBAAK,CAAC,IAAI,CAAC,eAAe,CAAC;GACf,aAAa,CAgFzB"}
|