node-cli-tester 21.0.17 → 21.0.19

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.
Files changed (36) hide show
  1. package/browser/package.json +1 -1
  2. package/browser-prod/package.json +1 -1
  3. package/lib/build-info._auto-generated_.d.ts +1 -1
  4. package/lib/build-info._auto-generated_.js +1 -1
  5. package/lib/package.json +1 -1
  6. package/lib-prod/base-project-structure.backend.js +73 -0
  7. package/lib-prod/{build-info._auto-generated_.ts → build-info._auto-generated_.js} +1 -2
  8. package/lib-prod/cli-test.backend.js +137 -0
  9. package/lib-prod/env/{env.angular-node-app.ts → env.angular-node-app.js} +1 -1
  10. package/lib-prod/env/{env.docs-webapp.ts → env.docs-webapp.js} +1 -1
  11. package/lib-prod/env/{env.electron-app.ts → env.electron-app.js} +1 -1
  12. package/lib-prod/env/{env.mobile-app.ts → env.mobile-app.js} +1 -1
  13. package/lib-prod/env/{env.npm-lib-and-cli-tool.ts → env.npm-lib-and-cli-tool.js} +1 -1
  14. package/lib-prod/env/{env.vscode-plugin.ts → env.vscode-plugin.js} +1 -1
  15. package/lib-prod/{index._auto-generated_.ts → index._auto-generated_.js} +1 -1
  16. package/lib-prod/{index.ts → index.js} +1 -1
  17. package/lib-prod/meta-content-md.backend.js +243 -0
  18. package/lib-prod/migrations/index.js +2 -0
  19. package/lib-prod/migrations/{migrations_index._auto-generated_.ts → migrations_index._auto-generated_.js} +0 -2
  20. package/lib-prod/node-cli-tester.js +199 -0
  21. package/lib-prod/package.json +1 -1
  22. package/lib-prod/spec-templates.backend.js +100 -0
  23. package/lib-prod/start.backend.js +25 -0
  24. package/package.json +1 -1
  25. package/websql/package.json +1 -1
  26. package/websql-prod/package.json +1 -1
  27. package/lib-prod/base-project-structure.backend.ts +0 -83
  28. package/lib-prod/cli-test.backend.ts +0 -182
  29. package/lib-prod/lib-info.md +0 -8
  30. package/lib-prod/meta-content-md.backend.ts +0 -320
  31. package/lib-prod/migrations/index.ts +0 -2
  32. package/lib-prod/migrations/migrations-info.md +0 -6
  33. package/lib-prod/node-cli-tester.ts +0 -234
  34. package/lib-prod/spec-templates.backend.ts +0 -105
  35. package/lib-prod/start.backend.ts +0 -32
  36. /package/lib-prod/env/{index.ts → index.js} +0 -0
@@ -0,0 +1,199 @@
1
+ //#region imports
2
+ //#region @backend
3
+ import { path, ___NS__isString } from 'tnp-core/lib-prod';
4
+ import { BaseProject as Project, Helpers__NS__createSymLink, Helpers__NS__error, Helpers__NS__exists, Helpers__NS__log, Helpers__NS__readFile, Helpers__NS__writeFile, HelpersTaon__NS__outputToVScode } from 'tnp-helpers/lib-prod';
5
+ import { config } from 'tnp-core/lib-prod';
6
+ import { CliTest } from './cli-test.backend';
7
+ import { CLASS } from 'typescript-class-helpers/lib-prod';
8
+ //#endregion
9
+ //#endregion
10
+ export class NodeCliTester {
11
+ //#region @backend
12
+ //#region singleton
13
+ static { this._instances = {}; }
14
+ static {
15
+ this.ACTIONS = {
16
+ REGENERATE_LAST_HASH: 'regenerate-last-env-hash'
17
+ };
18
+ }
19
+ static { this.classFn = NodeCliTester; }
20
+ static { this.projectClassFn = Project; }
21
+ static { this.foundProjectsFn = void 0; }
22
+ constructor(cwd = process.cwd()) {
23
+ this.cwd = cwd;
24
+ const pathToScenarios = path.join(cwd, config.folder.scenarios);
25
+ const pathToScenariosTemp = path.join(cwd, config.folder.tmpScenarios);
26
+ if (!Helpers__NS__exists(pathToScenarios)) {
27
+ Helpers__NS__createSymLink(pathToScenariosTemp, pathToScenarios, { continueWhenExistedFolderDoesntExists: true });
28
+ }
29
+ }
30
+ static Instance(cwd = process.cwd()) {
31
+ if (!NodeCliTester._instances[cwd]) {
32
+ NodeCliTester._instances[cwd] = new (this.classFn)(cwd);
33
+ }
34
+ return NodeCliTester._instances[cwd];
35
+ }
36
+ static InstanceNearestTo(cwd) {
37
+ const proj = Project.ins.nearestTo(cwd);
38
+ if (!proj) {
39
+ Helpers__NS__error(`Nearsest project instance not found for ${cwd} `, false, true);
40
+ }
41
+ return this.Instance(proj.location);
42
+ }
43
+ //#endregion
44
+ //#region get menu options
45
+ //#region get menu options / all tests names
46
+ getAllTestsNames() {
47
+ const names = CliTest.allFrom(this.cwd).map(c => {
48
+ return { label: c.testName, option: c.testDirnamePath };
49
+ });
50
+ HelpersTaon__NS__outputToVScode(names);
51
+ }
52
+ //#endregion
53
+ //#region get menu options / all meta-content.md files for test (path as option)
54
+ getMdContentFilesForTest(testNameOrPathToTestFolder) {
55
+ const c = CliTest.from(this.cwd, path.isAbsolute(testNameOrPathToTestFolder) ? path.basename(testNameOrPathToTestFolder) : testNameOrPathToTestFolder);
56
+ const toOutput = [
57
+ { label: `< create new ${config.file.meta_config_md} file >`, option: null },
58
+ ...c.metaMd.all.map(c => {
59
+ const v = c.filePath;
60
+ return { option: v, label: `add to "${path.basename(v)}"` };
61
+ })
62
+ ];
63
+ HelpersTaon__NS__outputToVScode(toOutput);
64
+ }
65
+ //#endregion
66
+ //#region get menu options / all meta-content.md files for test (hash as option)
67
+ getMdContentFilesWithHash(testNameOrPathToTestFolder) {
68
+ const c = CliTest.from(this.cwd, path.isAbsolute(testNameOrPathToTestFolder) ? path.basename(testNameOrPathToTestFolder) : testNameOrPathToTestFolder);
69
+ const toOutput = [
70
+ ...c.metaMd.all.map(c => {
71
+ return { option: c.readonlyMetaJson.timeHash, label: `add to "${path.basename(c.filePath)}"` };
72
+ })
73
+ ];
74
+ HelpersTaon__NS__outputToVScode(toOutput);
75
+ }
76
+ //#endregion
77
+ //#region get menu options / all tests names (with additional options for regenerate)
78
+ getAllTestsNamesForRegenerate() {
79
+ const last = this.lastRegenerateMenuItem;
80
+ const specialOptions = [
81
+ ...(last ? [last] : [])
82
+ ];
83
+ const names = [
84
+ ...specialOptions,
85
+ ...CliTest.allFrom(this.cwd).map(c => {
86
+ return { label: c.testName, option: c.testDirnamePath };
87
+ }),
88
+ ];
89
+ HelpersTaon__NS__outputToVScode(names);
90
+ }
91
+ //#endregion
92
+ //#endregion
93
+ //#region create test
94
+ async createTest(testNameOrPathToTestFolder) {
95
+ Helpers__NS__log(`Create test from node-cli-tester`);
96
+ if (___NS__isString(testNameOrPathToTestFolder)) {
97
+ testNameOrPathToTestFolder = [testNameOrPathToTestFolder];
98
+ }
99
+ for (let index = 0; index < testNameOrPathToTestFolder.length; index++) {
100
+ const p = testNameOrPathToTestFolder[index];
101
+ const c = CliTest.from(this.cwd, path.isAbsolute(p) ? path.basename(p) : p);
102
+ await c.regenerateFiles();
103
+ }
104
+ }
105
+ //#endregion
106
+ //#region create test and add file
107
+ async createTestAndAddFiles(testName, absoluteFilePathes, editorCwd = process.cwd()) {
108
+ await this.createTest(testName);
109
+ await this.addFilesToTest(testName, absoluteFilePathes, editorCwd);
110
+ }
111
+ //#endregion
112
+ //#region add files to
113
+ //#region add files to / test
114
+ async addFilesToTest(testNameOrPathToTestFolder, filePath, editorCwd = process.cwd()) {
115
+ const c = CliTest.from(this.cwd, path.isAbsolute(testNameOrPathToTestFolder)
116
+ ? path.basename(testNameOrPathToTestFolder) : testNameOrPathToTestFolder);
117
+ await c.metaMd.add(filePath, editorCwd, CLASS.getFromObject(this));
118
+ }
119
+ //#endregion
120
+ //#region add files to / meta-content.md files
121
+ async addFilesToMdContent(testNameOrPathToTestFolder, mdContentFileBasenameOrPath, filePaths, editorCwd = process.cwd()) {
122
+ const c = CliTest.from(this.cwd, path.isAbsolute(testNameOrPathToTestFolder)
123
+ ? path.basename(testNameOrPathToTestFolder) : testNameOrPathToTestFolder);
124
+ const mdContentFileBasename = !!mdContentFileBasenameOrPath && (path.isAbsolute(mdContentFileBasenameOrPath)
125
+ ? path.basename(mdContentFileBasenameOrPath) : mdContentFileBasenameOrPath);
126
+ const m = mdContentFileBasename && c.metaMd.all.find(a => a.basename === mdContentFileBasename);
127
+ if (m) {
128
+ const NodeCliTestrClass = CLASS.getFromObject(this);
129
+ await m.addFiles(filePaths, c.testDirnamePath, editorCwd, NodeCliTestrClass.foundProjectsFn, c.cwd);
130
+ }
131
+ else {
132
+ await this.addFilesToTest(testNameOrPathToTestFolder, filePaths, editorCwd);
133
+ }
134
+ }
135
+ //#endregion
136
+ //#endregion
137
+ //#region regenerate
138
+ //#region regenerate / last regenerate hash file path
139
+ get lastRegenerateHashFile() {
140
+ return path.join(this.cwd, 'tmp-last-regenerate-hash-env');
141
+ }
142
+ //#endregion
143
+ //#region regenerate / get last regenerate manu item
144
+ get lastRegenerateMenuItem() {
145
+ const lashHash = Helpers__NS__readFile(this.lastRegenerateHashFile, '').trim();
146
+ if (lashHash) {
147
+ const allTests = CliTest.allFrom(this.cwd);
148
+ let machingMdFile;
149
+ allTests.find(a => a.metaMd.all.find(b => {
150
+ if (b.readonlyMetaJson.timeHash === lashHash) {
151
+ machingMdFile = b;
152
+ return true;
153
+ }
154
+ return false;
155
+ }));
156
+ if (machingMdFile) {
157
+ const NodeCliTesterClass = CLASS.getFromObject(this);
158
+ const res = {
159
+ label: ` < regenerate last hash env "${machingMdFile.readonlyMetaJson.timeHash}" `
160
+ + `for project: "${machingMdFile.readonlyMetaJson.firstProjectBasename}" in `
161
+ + `${machingMdFile.basename} >`,
162
+ option: { action: NodeCliTesterClass.ACTIONS.REGENERATE_LAST_HASH }
163
+ };
164
+ return res;
165
+ }
166
+ }
167
+ return void 0;
168
+ }
169
+ //#endregion
170
+ //#region regenerate / aliases
171
+ async regenerate(timeHash) {
172
+ await this.regenerateEnvironment(timeHash);
173
+ }
174
+ async regenerateLast() {
175
+ const NodeCliTesterClass = CLASS.getFromObject(this);
176
+ await this.regenerateEnvironment(NodeCliTesterClass.ACTIONS.REGENERATE_LAST_HASH);
177
+ }
178
+ //#endregion
179
+ //#region regenerate / regenerate environment function
180
+ async regenerateEnvironment(timeHash, tempFolder = config.folder.tmpTestsEnvironments, onlyIfNotExists = false) {
181
+ const NodeCliTesterClass = CLASS.getFromObject(this);
182
+ if (timeHash === NodeCliTesterClass.ACTIONS.REGENERATE_LAST_HASH) {
183
+ timeHash = Helpers__NS__readFile(this.lastRegenerateHashFile, '');
184
+ }
185
+ if (!path.isAbsolute(tempFolder)) {
186
+ tempFolder = path.join(this.cwd, tempFolder);
187
+ }
188
+ const c = CliTest.getBy(this.cwd, timeHash);
189
+ const m = c?.metaMd.all.find(a => a.readonlyMetaJson.timeHash === timeHash);
190
+ if (m) {
191
+ const ProjectClass = NodeCliTesterClass.projectClassFn;
192
+ m.recreate(tempFolder, this.cwd, ProjectClass, onlyIfNotExists);
193
+ Helpers__NS__writeFile(this.lastRegenerateHashFile, timeHash);
194
+ }
195
+ else {
196
+ Helpers__NS__error(`Not able to find test with hash ${timeHash}`, false, true);
197
+ }
198
+ }
199
+ }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "name": "node-cli-tester/lib-prod",
3
- "version": "21.0.17"
3
+ "version": "21.0.19"
4
4
  }
@@ -0,0 +1,100 @@
1
+ //#region imports
2
+ import { path, ___NS__camelCase, ___NS__first } from 'tnp-core/lib-prod';
3
+ import { CLASS } from 'typescript-class-helpers/lib-prod';
4
+ import { Helpers__NS__exists, Helpers__NS__writeFile } from 'tnp-helpers/lib-prod';
5
+ //#endregion
6
+ //#region base imports contant
7
+ const baseImports = `
8
+ import { _, path, crossPlatformPath } from 'tnp-core';
9
+ import chalk from 'chalk';
10
+ import { describe, before, beforeEach, it } from 'mocha';
11
+ import { expect } from 'chai';
12
+ import { CLASS } from 'typescript-class-helpers';
13
+ import { Helpers } from 'tnp-helpers';
14
+ import { config } from 'tnp-core';
15
+ import { NodeCliTester } from 'node-cli-tester';
16
+ `.trim();
17
+ const testMeta = `
18
+ // const testName = this.test.title;
19
+ // const testFullName = this.test.fullTitle();
20
+ `.trim();
21
+ //#endregion
22
+ let TestTemplates = class TestTemplates {
23
+ static { this.DEFAULT_COMMAND = `echo "hello world"`; }
24
+ static { this.PROJECT_ENTITY_LOCATION = `tnp-helpers`; }
25
+ //#region create test part
26
+ static testPart(pathToFiles, projPath, timeHash) {
27
+ const describes = `
28
+
29
+ it('Should pass the test with hash ' + cwdHash // chalk.hidden(cwdHash)
30
+ , async () => {
31
+ //#region resolve variables
32
+ ${'' // testMeta
33
+ }
34
+ const projFolder = '${___NS__first(projPath.split('/'))}';
35
+ const tmpTestEnvironmentFolder = 'tmp-tests-environments';
36
+ const cwd = path.resolve(path.join(crossPlatformPath(__dirname), \`../../../../\${tmpTestEnvironmentFolder}\`, cwdHash));
37
+ const relativePathToFile = {
38
+ ${pathToFiles.map(pathToFile => `${___NS__camelCase(path.basename(pathToFile))} : \`${pathToFile.split('/').slice(1).join('/')}\``)
39
+ .join(',\n ')}
40
+ };
41
+ const absolutePathToTestFile = {
42
+ ${pathToFiles.map(pathToFile => `${___NS__camelCase(path.basename(pathToFile))} : path.join(cwd, projFolder, relativePathToFile.${___NS__camelCase(path.basename(pathToFile))})`)
43
+ .join(',\n ')}
44
+ };
45
+ await NodeCliTester.InstanceNearestTo(cwd).regenerateEnvironment(cwdHash,tmpTestEnvironmentFolder);
46
+ const $Project = Project || CLASS.getBy('Project') as typeof Project;
47
+ const proj = $Project.From(path.join(cwd,projFolder));
48
+ //#endregion
49
+
50
+ // @ts-ignore
51
+ expect(proj.runCommandGetString(\`${this.DEFAULT_COMMAND}\`)).to.be.eq('hello world');
52
+ });
53
+ `;
54
+ const testsImports = `
55
+ ${'' // baseImports
56
+ }
57
+ ${'' // import { Project } from '${this.PROJECT_ENTITY_LOCATION}';
58
+ }
59
+
60
+ `;
61
+ const result = '\n'
62
+ + testsImports.trim()
63
+ + `
64
+ describe('${projPath}',()=> {
65
+ const cwdHash = '${timeHash}';
66
+ ${describes}
67
+ });
68
+ `.trim() + '\n\n';
69
+ return result;
70
+ }
71
+ //#endregion
72
+ //#region regenerate spec ts
73
+ static regenerateSpecTs(specTsPath, testRealName) {
74
+ if (!Helpers__NS__exists(specTsPath)) {
75
+ Helpers__NS__writeFile(specTsPath,
76
+ //#region content of *.spec.ts
77
+ `
78
+ ${baseImports}
79
+ import { Project } from '${this.PROJECT_ENTITY_LOCATION}';
80
+
81
+ describe('${testRealName}', () => {
82
+
83
+ // PUT ALL YOUR TESTS HERE
84
+
85
+ it('should works example unit test', () => {
86
+ ${testMeta}
87
+ expect(1).to.be.gt(0)
88
+ });
89
+
90
+ });
91
+ `.trim() + '\n'
92
+ //#endregion
93
+ );
94
+ }
95
+ }
96
+ };
97
+ TestTemplates = __decorate([
98
+ CLASS.NAME('TestTemplates')
99
+ ], TestTemplates);
100
+ export { TestTemplates };
@@ -0,0 +1,25 @@
1
+ import { NodeCliTester } from './node-cli-tester';
2
+ export async function run(argsv, instance = NodeCliTester.Instance()) {
3
+ // const command: Lowercase<keyof NodeCliTester> = argsv.shift().toLowerCase() as any;
4
+ // TODO
5
+ // const command = argsv.shift().toLowerCase() as any; // TODO up tsc version
6
+ // for (const key in instance) {
7
+ // if (key.toLowerCase() === command && _.isFunction(instance[key])) {
8
+ // const argsToPass: string[] = argsv
9
+ // .filter(a => !a.startsWith('--'))
10
+ // .map(a => parseArr(a)) as any;
11
+ // await Helpers.runSyncOrAsync({ functionFn: [key, instance], arrayOfParams: argsToPass });
12
+ // }
13
+ // }
14
+ // process.exit(0);
15
+ }
16
+ function parseArr(a) {
17
+ if (a === 'null') {
18
+ return null;
19
+ }
20
+ if (a.startsWith('[') && a.endsWith(']')) {
21
+ const elems = a.slice(1, a.length - 1).split(',');
22
+ return elems;
23
+ }
24
+ return a;
25
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-cli-tester",
3
- "version": "21.0.17",
3
+ "version": "21.0.19",
4
4
  "scripts": {
5
5
  "taon init": "taon init",
6
6
  "taon start": "taon start",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-cli-tester/websql",
3
- "version": "21.0.17",
3
+ "version": "21.0.19",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^21.0.0",
6
6
  "@angular/core": "^21.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-cli-tester/websql-prod",
3
- "version": "21.0.17",
3
+ "version": "21.0.19",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^21.0.0",
6
6
  "@angular/core": "^21.0.0"
@@ -1,83 +0,0 @@
1
- //#region imports
2
- import { path, ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/lib-prod';
3
- import { BaseProject as Project, Helpers__NS___fixCommand, Helpers__NS__bigMaxBuffer, Helpers__NS__checkProcess, Helpers__NS__cleanExit, Helpers__NS__clearConsole, Helpers__NS__command, Helpers__NS__commandOutputAsString, Helpers__NS__commandOutputAsStringAsync, Helpers__NS__compilationWrapper, Helpers__NS__contain, Helpers__NS__createFolder, Helpers__NS__createSymLink, Helpers__NS__error, Helpers__NS__execute, Helpers__NS__exists, Helpers__NS__filesFrom, Helpers__NS__foldersFrom, Helpers__NS__getFilesFrom, Helpers__NS__getFoldersFrom, Helpers__NS__getIsBrowser, Helpers__NS__getIsElectron, Helpers__NS__getIsNode, Helpers__NS__getIsRunningInGitBash, Helpers__NS__getIsSupportedTaonTerminal, Helpers__NS__getIsVerboseMode, Helpers__NS__getIsWebSQL, Helpers__NS__getIsWsl, Helpers__NS__getStdio, Helpers__NS__hideNodeWarnings, Helpers__NS__info, Helpers__NS__isBlob, Helpers__NS__isBuffer, Helpers__NS__isClass, Helpers__NS__isExistedSymlink, Helpers__NS__isFile, Helpers__NS__isFolder, Helpers__NS__isRunningInDocker, Helpers__NS__isRunningInLinuxGraphicsCapableEnvironment, Helpers__NS__isSymlinkFileExitedOrUnexisted, Helpers__NS__isSymlinkThatMatchesUrl, Helpers__NS__isUnexistedLink, Helpers__NS__killOnPort, Helpers__NS__killProcess, Helpers__NS__killProcessByPort, Helpers__NS__linksToFolderFrom, Helpers__NS__linksToFoldersFrom, Helpers__NS__log, Helpers__NS__logError, Helpers__NS__logInfo, Helpers__NS__logProc, Helpers__NS__logSuccess, Helpers__NS__logWarn, Helpers__NS__mediaTypeFromSrc, Helpers__NS__mkdirp, Helpers__NS__modifyLineByLine, Helpers__NS__msgCacheClear, Helpers__NS__openFolderInFileExplorer, Helpers__NS__parse, Helpers__NS__pathContainLink, Helpers__NS__questionYesNo, Helpers__NS__readFile, Helpers__NS__readJson, Helpers__NS__readJson5, Helpers__NS__readJsonC, Helpers__NS__relative, Helpers__NS__remove, Helpers__NS__removeEmptyLineFromString, Helpers__NS__removeFileIfExists, Helpers__NS__removeFolderIfExists, Helpers__NS__removeIfExists, Helpers__NS__removeSlashAtBegin, Helpers__NS__removeSlashAtEnd, Helpers__NS__removeSymlinks, Helpers__NS__renderError, Helpers__NS__replaceLinesInFile, Helpers__NS__run, Helpers__NS__runAsyncIn, Helpers__NS__runSyncIn, Helpers__NS__runSyncOrAsync, Helpers__NS__sleep, Helpers__NS__stopApplication, Helpers__NS__stringify, Helpers__NS__success, Helpers__NS__taskDone, Helpers__NS__taskStarted, Helpers__NS__throwError, Helpers__NS__timeout, Helpers__NS__tryCatchError, Helpers__NS__tryReadFile, Helpers__NS__tryRemoveDir, Helpers__NS__values, Helpers__NS__wait, Helpers__NS__warn, Helpers__NS__writeFile, Helpers__NS__writeJson, Helpers__NS__writeJson5, Helpers__NS__writeJsonC, HelpersTaon__NS__actionWrapper, HelpersTaon__NS__applyMixins, HelpersTaon__NS__arrays__NS__arrayMoveElementAfterB, HelpersTaon__NS__arrays__NS__arrayMoveElementBefore, HelpersTaon__NS__arrays__NS__from, HelpersTaon__NS__arrays__NS__fuzzy, HelpersTaon__NS__arrays__NS__moveObjectAfter, HelpersTaon__NS__arrays__NS__moveObjectBefore, HelpersTaon__NS__arrays__NS__second, HelpersTaon__NS__arrays__NS__sortKeys, HelpersTaon__NS__arrays__NS__uniqArray, HelpersTaon__NS__autocompleteAsk, HelpersTaon__NS__bundleCodeIntoSingleFile, HelpersTaon__NS__changeCwd, HelpersTaon__NS__changeCwdWrapper, HelpersTaon__NS__checkEnvironment, HelpersTaon__NS__checkIfNameAllowedForTaonProj, HelpersTaon__NS__checksum, HelpersTaon__NS__cliTool__NS__cleanCommand, HelpersTaon__NS__cliTool__NS__fixUnexpectedCommandCharacters, HelpersTaon__NS__cliTool__NS__getPramsFromArgs, HelpersTaon__NS__cliTool__NS__globalArgumentsParserTnp, HelpersTaon__NS__cliTool__NS__match, HelpersTaon__NS__cliTool__NS__removeArg, HelpersTaon__NS__cliTool__NS__removeArgsFromCommand, HelpersTaon__NS__cliTool__NS__resolveItemFromArgsBegin, HelpersTaon__NS__cliTool__NS__resolveItemsFromArgsBegin, HelpersTaon__NS__CLIWRAP, HelpersTaon__NS__consoleGui__NS__multiselect, HelpersTaon__NS__consoleGui__NS__pressAnyKey, HelpersTaon__NS__consoleGui__NS__question__NS__yesNo, HelpersTaon__NS__consoleGui__NS__select, HelpersTaon__NS__consoleGui__NS__wait, HelpersTaon__NS__copy, HelpersTaon__NS__copyFile, HelpersTaon__NS__copyFolderOsNative, HelpersTaon__NS__filterDontCopy, HelpersTaon__NS__filterOnlyCopy, HelpersTaon__NS__findChildren, HelpersTaon__NS__findChildrenNavi, HelpersTaon__NS__fixWebpackEnv, HelpersTaon__NS__formatPath, HelpersTaon__NS__generatedFileWrap, HelpersTaon__NS__getLinesFromFiles, HelpersTaon__NS__getMethodName, HelpersTaon__NS__getMostRecentFileName, HelpersTaon__NS__getMostRecentFilesNames, HelpersTaon__NS__getRecrusiveFilesFrom, HelpersTaon__NS__getStringFrom, HelpersTaon__NS__getTempFolder, HelpersTaon__NS__getValueFromJSON, HelpersTaon__NS__getValueFromJSONC, HelpersTaon__NS__getWorkingDirOfProcess, HelpersTaon__NS__git__NS___pull, HelpersTaon__NS__git__NS__allOrigins, HelpersTaon__NS__git__NS__backupBranch, HelpersTaon__NS__git__NS__changeRemoteFromHttpsToSSh, HelpersTaon__NS__git__NS__changeRemoveFromSshToHttps, HelpersTaon__NS__git__NS__changesSummary, HelpersTaon__NS__git__NS__checkIfthereAreSomeUncommitedChange, HelpersTaon__NS__git__NS__checkout, HelpersTaon__NS__git__NS__checkoutDefaultBranch, HelpersTaon__NS__git__NS__checkoutFromTo, HelpersTaon__NS__git__NS__checkTagExists, HelpersTaon__NS__git__NS__cleanRepoFromAnyFilesExceptDotGitFolder, HelpersTaon__NS__git__NS__clone, HelpersTaon__NS__git__NS__commit, HelpersTaon__NS__git__NS__countCommits, HelpersTaon__NS__git__NS__currentBranchName, HelpersTaon__NS__git__NS__defaultRepoBranch, HelpersTaon__NS__git__NS__fetch, HelpersTaon__NS__git__NS__findGitRoot, HelpersTaon__NS__git__NS__getACTION_MSG_RESET_GIT_HARD_COMMIT, HelpersTaon__NS__git__NS__getAllTags, HelpersTaon__NS__git__NS__getBranchesNames, HelpersTaon__NS__git__NS__getChangedFiles, HelpersTaon__NS__git__NS__getChangedFilesInCommitByHash, HelpersTaon__NS__git__NS__getChangedFilesInCommitByIndex, HelpersTaon__NS__git__NS__getCommitHashByIndex, HelpersTaon__NS__git__NS__getCommitMessageByHash, HelpersTaon__NS__git__NS__getCommitMessageByIndex, HelpersTaon__NS__git__NS__getListOfCurrentGitChanges, HelpersTaon__NS__git__NS__getOriginURL, HelpersTaon__NS__git__NS__getRemoteProvider, HelpersTaon__NS__git__NS__getUserInfo, HelpersTaon__NS__git__NS__hasAnyCommits, HelpersTaon__NS__git__NS__isGitRoot, HelpersTaon__NS__git__NS__isInMergeProcess, HelpersTaon__NS__git__NS__isInsideGitRepo, HelpersTaon__NS__git__NS__isValidRepoUrl, HelpersTaon__NS__git__NS__lastCommitDate, HelpersTaon__NS__git__NS__lastCommitHash, HelpersTaon__NS__git__NS__lastCommitMessage, HelpersTaon__NS__git__NS__lastTagHash, HelpersTaon__NS__git__NS__lastTagNameForMajorVersion, HelpersTaon__NS__git__NS__lastTagVersionName, HelpersTaon__NS__git__NS__meltActionCommits, HelpersTaon__NS__git__NS__originHttpToSsh, HelpersTaon__NS__git__NS__originSshToHttp, HelpersTaon__NS__git__NS__penultimateCommitHash, HelpersTaon__NS__git__NS__penultimateCommitMessage, HelpersTaon__NS__git__NS__pullCurrentBranch, HelpersTaon__NS__git__NS__pushCurrentBranch, HelpersTaon__NS__git__NS__rebase, HelpersTaon__NS__git__NS__removeTag, HelpersTaon__NS__git__NS__resetFiles, HelpersTaon__NS__git__NS__resetHard, HelpersTaon__NS__git__NS__resetSoftHEAD, HelpersTaon__NS__git__NS__restoreLastVersion, HelpersTaon__NS__git__NS__revertFileChanges, HelpersTaon__NS__git__NS__setUserInfos, HelpersTaon__NS__git__NS__stageAllAndCommit, HelpersTaon__NS__git__NS__stageAllFiles, HelpersTaon__NS__git__NS__stagedFiles, HelpersTaon__NS__git__NS__stageFile, HelpersTaon__NS__git__NS__stash, HelpersTaon__NS__git__NS__stashApply, HelpersTaon__NS__git__NS__tagAndPushToGitRepo, HelpersTaon__NS__git__NS__thereAreSomeUncommitedChangeExcept, HelpersTaon__NS__git__NS__uncommitedFiles, HelpersTaon__NS__git__NS__unstageAllFiles, HelpersTaon__NS__goToDir, HelpersTaon__NS__HelpersNumber, HelpersTaon__NS__input, HelpersTaon__NS__isElevated, HelpersTaon__NS__isPlainFileOrFolder, HelpersTaon__NS__killAllNode, HelpersTaon__NS__killAllNodeExceptCurrentProcess, HelpersTaon__NS__list, HelpersTaon__NS__mesureExectionInMs, HelpersTaon__NS__mesureExectionInMsSync, HelpersTaon__NS__move, HelpersTaon__NS__multipleChoicesAsk, HelpersTaon__NS__osIsMacOs, HelpersTaon__NS__outputToVScode, HelpersTaon__NS__pathFromLink, HelpersTaon__NS__paths__NS__create, HelpersTaon__NS__paths__NS__PREFIX, HelpersTaon__NS__paths__NS__removeExt, HelpersTaon__NS__paths__NS__removeExtension, HelpersTaon__NS__paths__NS__removeRootFolder, HelpersTaon__NS__prepareWatchCommand, HelpersTaon__NS__pressKeyAndContinue, HelpersTaon__NS__pressKeyOrWait, HelpersTaon__NS__randomInteger, HelpersTaon__NS__readValueFromJson, HelpersTaon__NS__readValueFromJsonC, HelpersTaon__NS__removeExcept, HelpersTaon__NS__renameFiles, HelpersTaon__NS__renameFolder, HelpersTaon__NS__requireJs, HelpersTaon__NS__requireUncached, HelpersTaon__NS__resolve, HelpersTaon__NS__restartApplicationItself, HelpersTaon__NS__selectChoicesAsk, HelpersTaon__NS__setValueToJSON, HelpersTaon__NS__setValueToJSONC, HelpersTaon__NS__size, HelpersTaon__NS__slash, HelpersTaon__NS__strings__NS__interpolateString, HelpersTaon__NS__strings__NS__numValue, HelpersTaon__NS__strings__NS__plural, HelpersTaon__NS__strings__NS__removeDoubleOrMoreEmptyLines, HelpersTaon__NS__strings__NS__singular, HelpersTaon__NS__strings__NS__splitIfNeed, HelpersTaon__NS__terminalLine, HelpersTaon__NS__tryCopyFrom, HelpersTaon__NS__tryRecreateDir, HelpersTaon__NS__uniqArray, HelpersTaon__NS__waitForCondition, HelpersTaon__NS__waitForMessegeInStdout, HelpersTaon__NS__workerCalculateArray } from 'tnp-helpers/lib-prod';
4
- //#endregion
5
-
6
- export class BaseProjectStructure {
7
- static BASE_STRUCTURES_FOLDER = 'base-structures';
8
- get baseStructureHash() {
9
- return path.basename(this.cwd);
10
- }
11
-
12
- get projectPathBasename() {
13
- return ___NS__first(path.basename(this.cwd).split('__'));
14
- }
15
-
16
- constructor(private cwd: string) {}
17
-
18
- copyto(destinationCwd: string, basename?: string) {
19
- HelpersTaon__NS__copy(
20
- this.cwd,
21
- path.join(destinationCwd, basename ? basename : this.projectPathBasename),
22
- );
23
- }
24
-
25
- static allBaseStructures(cwd) {
26
- const folderPath = path.join(cwd, this.BASE_STRUCTURES_FOLDER);
27
- return Helpers__NS__foldersFrom(folderPath).map(
28
- f => new BaseProjectStructure(f),
29
- );
30
- }
31
-
32
- static generate<P extends Project = Project>(project: P) {
33
- const that = this;
34
- const orgCwd = path.join(project.location);
35
- const files = []; //= project.forEmptyStructure();
36
- const filesWithoutLinks = files.filter(f => !f.relativeLinkFrom);
37
- let hash = files.length.toString();
38
- for (let index = 0; index < filesWithoutLinks.length; index++) {
39
- const file = filesWithoutLinks[index];
40
- const abasolutePAth = path.join(orgCwd, file.relativePath);
41
- hash +=
42
- (file.relativePath.length + 1).toString() +
43
- (Helpers__NS__isFolder(abasolutePAth)
44
- ? ''
45
- : (Helpers__NS__readFile(abasolutePAth)?.length + 1).toString());
46
- }
47
- hash = `${project.name}__${HelpersTaon__NS__checksum(hash)}`;
48
- return {
49
- insideIfNotExists(destinationCwd: string) {
50
- const destStruct = path.join(
51
- destinationCwd,
52
- that.BASE_STRUCTURES_FOLDER,
53
- hash,
54
- );
55
- if (Helpers__NS__exists(destStruct)) {
56
- Helpers__NS__log(`Base structure with name: ${hash}`);
57
- return hash;
58
- }
59
- Helpers__NS__removeFolderIfExists(destStruct);
60
- for (let index = 0; index < filesWithoutLinks.length; index++) {
61
- const file = filesWithoutLinks[index];
62
- const orgPath = path.join(orgCwd, file.relativePath);
63
- const destPath = path.join(destStruct, file.relativePath);
64
- Helpers__NS__mkdirp(path.dirname(destPath));
65
- if (Helpers__NS__isFolder(orgPath)) {
66
- if (file.includeContent) {
67
- HelpersTaon__NS__copy(orgPath, destPath);
68
- } else {
69
- Helpers__NS__mkdirp(destPath);
70
- }
71
- } else {
72
- if (file.includeContent) {
73
- HelpersTaon__NS__copyFile(orgPath, destPath);
74
- } else {
75
- Helpers__NS__writeFile(destPath, '');
76
- }
77
- }
78
- }
79
- return hash;
80
- },
81
- };
82
- }
83
- }
@@ -1,182 +0,0 @@
1
- //#region imports
2
- import { path, ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/lib-prod';
3
- import { config } from 'tnp-core/lib-prod';
4
- import { Helpers__NS___fixCommand, Helpers__NS__bigMaxBuffer, Helpers__NS__checkProcess, Helpers__NS__cleanExit, Helpers__NS__clearConsole, Helpers__NS__command, Helpers__NS__commandOutputAsString, Helpers__NS__commandOutputAsStringAsync, Helpers__NS__compilationWrapper, Helpers__NS__contain, Helpers__NS__createFolder, Helpers__NS__createSymLink, Helpers__NS__error, Helpers__NS__execute, Helpers__NS__exists, Helpers__NS__filesFrom, Helpers__NS__foldersFrom, Helpers__NS__getFilesFrom, Helpers__NS__getFoldersFrom, Helpers__NS__getIsBrowser, Helpers__NS__getIsElectron, Helpers__NS__getIsNode, Helpers__NS__getIsRunningInGitBash, Helpers__NS__getIsSupportedTaonTerminal, Helpers__NS__getIsVerboseMode, Helpers__NS__getIsWebSQL, Helpers__NS__getIsWsl, Helpers__NS__getStdio, Helpers__NS__hideNodeWarnings, Helpers__NS__info, Helpers__NS__isBlob, Helpers__NS__isBuffer, Helpers__NS__isClass, Helpers__NS__isExistedSymlink, Helpers__NS__isFile, Helpers__NS__isFolder, Helpers__NS__isRunningInDocker, Helpers__NS__isRunningInLinuxGraphicsCapableEnvironment, Helpers__NS__isSymlinkFileExitedOrUnexisted, Helpers__NS__isSymlinkThatMatchesUrl, Helpers__NS__isUnexistedLink, Helpers__NS__killOnPort, Helpers__NS__killProcess, Helpers__NS__killProcessByPort, Helpers__NS__linksToFolderFrom, Helpers__NS__linksToFoldersFrom, Helpers__NS__log, Helpers__NS__logError, Helpers__NS__logInfo, Helpers__NS__logProc, Helpers__NS__logSuccess, Helpers__NS__logWarn, Helpers__NS__mediaTypeFromSrc, Helpers__NS__mkdirp, Helpers__NS__modifyLineByLine, Helpers__NS__msgCacheClear, Helpers__NS__openFolderInFileExplorer, Helpers__NS__parse, Helpers__NS__pathContainLink, Helpers__NS__questionYesNo, Helpers__NS__readFile, Helpers__NS__readJson, Helpers__NS__readJson5, Helpers__NS__readJsonC, Helpers__NS__relative, Helpers__NS__remove, Helpers__NS__removeEmptyLineFromString, Helpers__NS__removeFileIfExists, Helpers__NS__removeFolderIfExists, Helpers__NS__removeIfExists, Helpers__NS__removeSlashAtBegin, Helpers__NS__removeSlashAtEnd, Helpers__NS__removeSymlinks, Helpers__NS__renderError, Helpers__NS__replaceLinesInFile, Helpers__NS__run, Helpers__NS__runAsyncIn, Helpers__NS__runSyncIn, Helpers__NS__runSyncOrAsync, Helpers__NS__sleep, Helpers__NS__stopApplication, Helpers__NS__stringify, Helpers__NS__success, Helpers__NS__taskDone, Helpers__NS__taskStarted, Helpers__NS__throwError, Helpers__NS__timeout, Helpers__NS__tryCatchError, Helpers__NS__tryReadFile, Helpers__NS__tryRemoveDir, Helpers__NS__values, Helpers__NS__wait, Helpers__NS__warn, Helpers__NS__writeFile, Helpers__NS__writeJson, Helpers__NS__writeJson5, Helpers__NS__writeJsonC } from 'tnp-helpers/lib-prod';
5
- import { MetaMd } from './meta-content-md.backend';
6
- import type { TestTemplates } from './spec-templates.backend';
7
- import type { NodeCliTester } from './node-cli-tester';
8
- import { CLASS } from 'typescript-class-helpers/lib-prod';
9
- //#endregion
10
-
11
- export class CliTest {
12
- static readonly NAME_FOR_CLI_TESTS_FOLDER = 'src/tests/tests-cli';
13
- readonly testDirnamePath: string;
14
-
15
- //#region singleton / static inst
16
- private static instances = {};
17
- static allFrom(cwd: string): CliTest[] {
18
- const folderWithTests = path.join(cwd,
19
- this.NAME_FOR_CLI_TESTS_FOLDER);
20
- const folders = Helpers__NS__foldersFrom(folderWithTests);
21
- const tests = folders.map(f => CliTest.from(f)).filter(f => !!f);
22
- return tests;
23
- }
24
-
25
- static getBy(cwd: string, timeHash: string): CliTest {
26
- return this.allFrom(cwd).find(c => !___NS__isUndefined(c.metaMd.all.find(c => c.readonlyMetaJson.timeHash === timeHash)));
27
- }
28
-
29
- static from(
30
- cwd: string,
31
- testName?: string,
32
- ) {
33
- if (!testName) {
34
- testName = path.basename(cwd);
35
- cwd = path.dirname(cwd);
36
- }
37
- if (!CliTest.instances[cwd]) {
38
- CliTest.instances[cwd] = {};
39
- }
40
- if (!CliTest.instances[cwd][testName]) {
41
-
42
- CliTest.instances[cwd][testName] = new CliTest(cwd, testName);
43
- }
44
- return CliTest.instances[cwd][testName] as CliTest;
45
- }
46
- //#endregion
47
-
48
- //#region getters
49
-
50
- //#region getters / meta md
51
- get metaMd() {
52
- const that = this;
53
- return {
54
- get all() {
55
- return MetaMd.allInstancesFrom(that.testDirnamePath);
56
- },
57
- async add(originalFilePath: string[], baseCwd: string, NodeCliTestrClass: typeof NodeCliTester) {
58
- await MetaMd.preserveFiles(
59
- originalFilePath,
60
- that.testDirnamePath,
61
- baseCwd,
62
- NodeCliTestrClass.foundProjectsFn,
63
- that.cwd,
64
- );
65
- }
66
- }
67
- }
68
- //#endregion
69
-
70
- //#region getters / pathes
71
-
72
- private get firedev_jsonc() {
73
- return path.join(this.testDirnamePath, config.file.firedev_jsonc);
74
- }
75
-
76
- private get packageJsonPath() {
77
- return path.join(this.testDirnamePath, config.file.package_json);
78
- }
79
-
80
- private get gitignorePath() {
81
- return path.join(this.testDirnamePath, config.file._gitignore);
82
- }
83
-
84
- private get specTsPath() {
85
- return path.join(this.testDirnamePath, `${___NS__kebabCase(this.testName)}.spec.ts`);
86
- }
87
- //#endregion
88
-
89
- //#endregion
90
-
91
- //#region constructor / init
92
- constructor(
93
- public cwd: string,
94
- public testName: string,
95
-
96
- ) {
97
- cwd = cwd.endsWith(CliTest.NAME_FOR_CLI_TESTS_FOLDER) ? cwd.replace(CliTest.NAME_FOR_CLI_TESTS_FOLDER, '') : cwd;
98
- this.cwd = cwd;
99
- this.testDirnamePath = path.join(
100
- cwd,
101
- CliTest.NAME_FOR_CLI_TESTS_FOLDER,
102
- ___NS__kebabCase(this.testName),
103
- );
104
- const pathToTempEnvs = path.join(cwd, config.folder.tmpTestsEnvironments);
105
- const pathToEnvs = path.join(cwd, config.folder.testsEnvironments);
106
- Helpers__NS__createSymLink(pathToTempEnvs,pathToEnvs,{
107
- continueWhenExistedFolderDoesntExists: true
108
- });
109
-
110
- if (Helpers__NS__exists(this.firedev_jsonc)) {
111
- const testNameFromPJ5 = Helpers__NS__readJson(this.firedev_jsonc, {}, true).description;
112
- if (testNameFromPJ5) {
113
- testName = testNameFromPJ5;
114
- this.testName = testName;
115
- }
116
- }
117
- }
118
- //#endregion
119
-
120
- //#region public api
121
-
122
- //#region regenerate
123
- public async regenerateFiles() {
124
- if (!Helpers__NS__exists(this.testDirnamePath)) {
125
- Helpers__NS__mkdirp(this.testDirnamePath);
126
- }
127
- this.regeneratePackageJson5();
128
- let TestTemplatesClass = CLASS.getBy('TestTemplates') as typeof TestTemplates;
129
- if (!TestTemplatesClass) {
130
- TestTemplatesClass = await (await import('./spec-templates.backend')).TestTemplates;
131
- }
132
- TestTemplatesClass.regenerateSpecTs(this.specTsPath, this.testName);
133
- this.regenerateGitIgnore();
134
- }
135
-
136
- //#endregion
137
-
138
- //#endregion
139
-
140
- //#region private methods
141
-
142
- //#region regenerate package json 5
143
- private regeneratePackageJson5() {
144
- if (!Helpers__NS__exists(this.firedev_jsonc)) {
145
- Helpers__NS__writeFile(this.firedev_jsonc,
146
- //#region content of package.json5
147
- `{
148
- // generated from basename
149
- "name": "${___NS__kebabCase(this.testName)}",
150
- "description": "${this.testName}",
151
- "tnp": {
152
- "type": "cli-test"
153
- },
154
- "version": "0.0.0",
155
- }`
156
- //#endregion
157
- );
158
- }
159
- }
160
- //#endregion
161
-
162
- //#region regenerate gitignore
163
- private regenerateGitIgnore() {
164
-
165
- Helpers__NS__writeFile(this.gitignorePath,
166
- //#region content of .gitignore
167
- `
168
- /**/*.*
169
- !/.gitignore
170
- !/${path.basename(this.specTsPath)}
171
- !/package.json
172
- !/package.json5
173
- !/*.md
174
-
175
- `
176
- //#endregion
177
- );
178
- }
179
- //#endregion
180
-
181
- //#endregion
182
- }
@@ -1,8 +0,0 @@
1
- THIS FILE IS GENERATED - DO NOT MODIFY
2
-
3
- This folder is an entry point for npm Angular/NodeJS library
4
-
5
- DON'T USE STUFF FROM PARENT FOLDER app.* FILES HERE (except src/migrations/** files).
6
-
7
- THIS FILE IS GENERATED - DO NOT MODIFY
8
-