tnp-helpers 19.0.3 → 19.0.4

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 (70) hide show
  1. package/assets/shared/shared_folder_info.txt +1 -1
  2. package/browser/fesm2022/tnp-helpers.mjs +25 -1
  3. package/browser/fesm2022/tnp-helpers.mjs.map +1 -1
  4. package/browser/lib/base/classes/base-git.d.ts +12 -1
  5. package/browser/lib/base/classes/base-node-modules.d.ts +1 -1
  6. package/browser/lib/build-info._auto-generated_.d.ts +1 -1
  7. package/browser/package.json +1 -1
  8. package/client/fesm2022/tnp-helpers.mjs +25 -1
  9. package/client/fesm2022/tnp-helpers.mjs.map +1 -1
  10. package/client/lib/base/classes/base-git.d.ts +12 -1
  11. package/client/lib/base/classes/base-node-modules.d.ts +1 -1
  12. package/client/lib/build-info._auto-generated_.d.ts +1 -1
  13. package/client/package.json +1 -1
  14. package/lib/base/classes/base-cli-worker-config.d.ts +27 -0
  15. package/lib/base/classes/base-cli-worker-config.js +64 -0
  16. package/lib/base/classes/base-cli-worker-config.js.map +1 -0
  17. package/lib/base/classes/base-cli-worker-controller.d.ts +15 -0
  18. package/lib/base/classes/base-cli-worker-controller.js +124 -0
  19. package/lib/base/classes/base-cli-worker-controller.js.map +1 -0
  20. package/lib/base/classes/base-cli-worker.d.ts +111 -0
  21. package/lib/base/classes/base-cli-worker.js +535 -0
  22. package/lib/base/classes/base-cli-worker.js.map +1 -0
  23. package/lib/base/classes/base-detached-service.d.ts +6 -0
  24. package/lib/base/classes/base-detached-service.js +16 -0
  25. package/lib/base/classes/base-detached-service.js.map +1 -0
  26. package/lib/base/classes/base-git.d.ts +11 -0
  27. package/lib/base/classes/base-git.js +21 -0
  28. package/lib/base/classes/base-git.js.map +1 -1
  29. package/lib/base/classes/base-github-pages.d.ts +14 -0
  30. package/lib/base/classes/base-github-pages.js +173 -0
  31. package/lib/base/classes/base-github-pages.js.map +1 -0
  32. package/lib/base/classes/base-node-modules.d.ts +1 -1
  33. package/lib/base/classes/base-node-modules.js +16 -14
  34. package/lib/base/classes/base-node-modules.js.map +1 -1
  35. package/lib/base/classes/base-powershell.js +4 -0
  36. package/lib/base/classes/base-powershell.js.map +1 -1
  37. package/lib/base/classes/base-project.d.ts +1 -1
  38. package/lib/base/classes/base-release-process.js +2 -2
  39. package/lib/base/classes/base-release-process.js.map +1 -1
  40. package/lib/base/tcp-udp-ports/not-assignable-port.entity.js +2 -2
  41. package/lib/base/tcp-udp-ports/tcp-udp-ports.context.d.ts +9 -9
  42. package/lib/build-info._auto-generated_.d.ts +1 -1
  43. package/lib/build-info._auto-generated_.js +1 -1
  44. package/lib/helpers/for-backend/helpers-file-folders.backend.d.ts +104 -0
  45. package/lib/helpers/for-backend/helpers-file-folders.backend.js +896 -0
  46. package/lib/helpers/for-backend/helpers-file-folders.backend.js.map +1 -0
  47. package/lib/helpers/for-backend/helpers-git.backend.d.ts +10 -0
  48. package/lib/helpers/for-backend/helpers-git.backend.js +76 -2
  49. package/lib/helpers/for-backend/helpers-git.backend.js.map +1 -1
  50. package/lib/helpers/for-backend/helpers-process.backend.d.ts +87 -0
  51. package/lib/helpers/for-backend/helpers-process.backend.js +456 -0
  52. package/lib/helpers/for-backend/helpers-process.backend.js.map +1 -0
  53. package/lib/helpers/for-backend/ts-code/index.d.ts +1 -0
  54. package/lib/helpers/for-backend/ts-code/index.js +5 -0
  55. package/lib/helpers/for-backend/ts-code/index.js.map +1 -0
  56. package/lib/helpers/for-backend/ts-code/ts-import-export-extractor.d.ts +29 -0
  57. package/lib/helpers/for-backend/ts-code/ts-import-export-extractor.js +81 -0
  58. package/lib/helpers/for-backend/ts-code/ts-import-export-extractor.js.map +1 -0
  59. package/lib/helpers/for-browser/angular.helper.js +2 -2
  60. package/lib/old/base-component.js +2 -2
  61. package/lib/old/base-formly-component.js +2 -2
  62. package/lib/old/dual-component-ctrl.js +2 -2
  63. package/package.json +1 -1
  64. package/tmp-environment.json +4 -3
  65. package/websql/fesm2022/tnp-helpers.mjs +25 -1
  66. package/websql/fesm2022/tnp-helpers.mjs.map +1 -1
  67. package/websql/lib/base/classes/base-git.d.ts +12 -1
  68. package/websql/lib/base/classes/base-node-modules.d.ts +1 -1
  69. package/websql/lib/build-info._auto-generated_.d.ts +1 -1
  70. package/websql/package.json +1 -1
@@ -0,0 +1,456 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HelpersProcess = void 0;
4
+ //#region imports
5
+ const tnp_core_1 = require("tnp-core");
6
+ const tnp_core_2 = require("tnp-core");
7
+ const dateformat = require("dateformat");
8
+ const child_process_1 = require("child_process");
9
+ const index_1 = require("../../index");
10
+ const typescript_class_helpers_1 = require("typescript-class-helpers");
11
+ const tnp_config_1 = require("tnp-config");
12
+ const ng2_logger_1 = require("ng2-logger");
13
+ const fuzzy = require("fuzzy");
14
+ const spawn = require("cross-spawn");
15
+ //#endregion
16
+ class HelpersProcess {
17
+ //#region restart application itself
18
+ async restartApplicationItself(nameOfApp) {
19
+ index_1.Helpers.log(`Restarting ${nameOfApp}`);
20
+ return new Promise(() => {
21
+ setTimeout(function () {
22
+ process.on('exit', function () {
23
+ spawn(process.argv.shift(), [...process.argv, '--restarting'], {
24
+ cwd: (0, tnp_core_1.crossPlatformPath)(process.cwd()),
25
+ detached: true,
26
+ stdio: 'inherit',
27
+ });
28
+ });
29
+ process.exit();
30
+ }, 5000);
31
+ });
32
+ }
33
+ //#endregion
34
+ //#region os is macos
35
+ osIsMacOs(versino) {
36
+ if (versino == 'big-sur') {
37
+ return tnp_core_1.os.release().startsWith('20.');
38
+ }
39
+ if (versino == 'catalina') {
40
+ return tnp_core_1.os.release().startsWith('19.');
41
+ }
42
+ // TODO other oses
43
+ }
44
+ //#endregion
45
+ //#region generate file wrap
46
+ generatedFileWrap(content) {
47
+ return `${content}
48
+ // [${tnp_config_1.config.frameworkName}] GENERATED CONTENT FOR BACKEND VERSION
49
+ // [${tnp_config_1.config.frameworkName}] GENERATED CONTENT FOR BACKEND VERSION
50
+ `.trim();
51
+ }
52
+ //#endregion
53
+ //#region change cwd wrapper
54
+ async changeCwdWrapper(dir, functionToExecure, logLevel = ng2_logger_1.Level.__NOTHING) {
55
+ const currentCwd = (0, tnp_core_1.crossPlatformPath)(process.cwd());
56
+ index_1.Helpers.changeCwd(dir);
57
+ ng2_logger_1.Log.disableLogs(logLevel);
58
+ await index_1.Helpers.runSyncOrAsync({ functionFn: functionToExecure });
59
+ ng2_logger_1.Log.enableLogs();
60
+ index_1.Helpers.changeCwd(currentCwd);
61
+ }
62
+ //#endregion
63
+ //#region change cwd
64
+ changeCwd(dir) {
65
+ if (!dir) {
66
+ return;
67
+ }
68
+ index_1.Helpers.goToDir(dir);
69
+ }
70
+ //#endregion
71
+ //#region go to dir
72
+ /**
73
+ * // TODO refactor this
74
+ * @deprecated
75
+ */
76
+ goToDir(dir = '..') {
77
+ const previous = (0, tnp_core_1.crossPlatformPath)(process.cwd());
78
+ try {
79
+ dir = tnp_core_1.path.isAbsolute(dir)
80
+ ? dir
81
+ : (0, tnp_core_1.crossPlatformPath)(tnp_core_1.path.resolve(tnp_core_1.path.join((0, tnp_core_1.crossPlatformPath)(process.cwd()), dir)));
82
+ if (tnp_core_1.path.basename(dir) === tnp_config_1.config.folder.external) {
83
+ const belowExternal = tnp_core_1.path.resolve(tnp_core_1.path.join(dir, '..'));
84
+ const classProject = typescript_class_helpers_1.CLASS.getBy('Project');
85
+ if (tnp_core_1.fse.existsSync(belowExternal) &&
86
+ !!classProject.ins.From(belowExternal)) {
87
+ dir = belowExternal;
88
+ }
89
+ }
90
+ process.chdir(dir);
91
+ }
92
+ catch (err) {
93
+ this.goToDir(previous);
94
+ return false;
95
+ }
96
+ return true;
97
+ }
98
+ //#endregion
99
+ //#region press key or wait
100
+ async pressKeyOrWait(message = 'Press enter try again', printWaitMessages = 0) {
101
+ if (tnp_core_1._.isNumber(printWaitMessages) && printWaitMessages > 0) {
102
+ index_1.Helpers.log(`Please wait (${printWaitMessages}) seconds`);
103
+ await index_1.Helpers.pressKeyOrWait(message, printWaitMessages - 1);
104
+ return;
105
+ }
106
+ return new Promise(resovle => {
107
+ index_1.Helpers.log(message);
108
+ process.stdin.once('data', function () {
109
+ resovle(void 0);
110
+ });
111
+ });
112
+ }
113
+ //#endregion
114
+ //#region press key and continue
115
+ /**
116
+ * @deprecated use UtilsTerminal.pressAnyKey
117
+ */
118
+ pressKeyAndContinue(message = 'Press enter to continue..') {
119
+ return tnp_core_2.UtilsTerminal.pressAnyKey({ message });
120
+ }
121
+ //#endregion
122
+ //#region list
123
+ /**
124
+ * @deprecated use UtilsTerminal.multiselect
125
+ */
126
+ async list(question, choices) {
127
+ //#region @backendFunc
128
+ if (!tnp_core_1._.isArray(choices) && tnp_core_1._.isObject(choices)) {
129
+ choices = Object.keys(choices)
130
+ .map(key => {
131
+ return {
132
+ name: choices[key].name,
133
+ value: key,
134
+ };
135
+ })
136
+ .reduce((a, b) => a.concat(b), []);
137
+ }
138
+ const inquirer = await Promise.resolve().then(() => require('inquirer'));
139
+ const res = (await inquirer.prompt({
140
+ type: 'list',
141
+ name: 'value',
142
+ message: question,
143
+ choices,
144
+ pageSize: 10,
145
+ loop: true,
146
+ }));
147
+ return res.value;
148
+ //#endregion
149
+ }
150
+ //#endregion
151
+ //#region multiple choices ask
152
+ /**
153
+ * @deprecated use UtilsTerminal.multiselect
154
+ */
155
+ async multipleChoicesAsk(question, choices, autocomplete = false, selected) {
156
+ return tnp_core_2.UtilsTerminal.multiselect({
157
+ question,
158
+ choices,
159
+ autocomplete,
160
+ defaultSelected: (selected || []).map(s => s.value),
161
+ });
162
+ }
163
+ //#endregion
164
+ //#region input
165
+ /**
166
+ * @deprecated use UtilsTerminal.input
167
+ */
168
+ async input(options) {
169
+ return await tnp_core_2.UtilsTerminal.input(options);
170
+ }
171
+ //#endregion
172
+ //#region select
173
+ /**
174
+ * @deprecated use UtilsTerminal.multiselect
175
+ * TODO wierd problem when pressing key like "i"
176
+ */
177
+ async selectChoicesAsk(question, choices) {
178
+ //#region @backendFunc
179
+ // console.log({ choices })
180
+ // Helpers.pressKeyAndContinue()
181
+ if (!tnp_core_1._.isArray(choices) && tnp_core_1._.isObject(choices)) {
182
+ choices = Object.keys(choices)
183
+ .map(key => {
184
+ return {
185
+ name: choices[key].name,
186
+ value: key,
187
+ };
188
+ })
189
+ .reduce((a, b) => a.concat(b), []);
190
+ }
191
+ const { AutoComplete } = require('enquirer');
192
+ const prompt = new AutoComplete({
193
+ name: 'value',
194
+ message: question,
195
+ limit: 10,
196
+ multiple: false,
197
+ autocomplete: false,
198
+ choices,
199
+ hint: '- Space to select. Return to submit',
200
+ footer() {
201
+ return tnp_core_2.CLI.chalk.green('(Scroll up and down to reveal more choices)');
202
+ },
203
+ });
204
+ const res = await prompt.run();
205
+ return res;
206
+ //#endregion
207
+ }
208
+ //#endregion
209
+ //#region autocomplete ask
210
+ async autocompleteAsk(question, choices, pageSize = 10) {
211
+ //#region @backendFunc
212
+ const source = (__, input) => {
213
+ input = input || '';
214
+ return new Promise(resolve => {
215
+ const fuzzyResult = fuzzy.filter(input, choices.map(f => f.name));
216
+ resolve(fuzzyResult.map(el => {
217
+ return {
218
+ name: el.original,
219
+ value: choices.find(c => c.name === el.original).value,
220
+ };
221
+ }));
222
+ });
223
+ };
224
+ const inquirer = await Promise.resolve().then(() => require('inquirer'));
225
+ const inquirerAutocomplete = await Promise.resolve().then(() => require('inquirer-autocomplete-prompt'));
226
+ inquirer.registerPrompt('autocomplete', inquirerAutocomplete);
227
+ const res = (await inquirer.prompt({
228
+ type: 'autocomplete',
229
+ name: 'command',
230
+ pageSize,
231
+ source,
232
+ message: question,
233
+ choices,
234
+ }));
235
+ return res.command;
236
+ //#endregion
237
+ }
238
+ //#endregion
239
+ //#region get working dir of process
240
+ getWorkingDirOfProcess(PID) {
241
+ try {
242
+ const cwd = tnp_core_1.child_process
243
+ .execSync(`lsof -p ${PID} | awk '$4=="cwd" {print $9}'`)
244
+ .toString()
245
+ .trim();
246
+ return cwd;
247
+ }
248
+ catch (e) {
249
+ index_1.Helpers.error(e);
250
+ }
251
+ }
252
+ //#endregion
253
+ //#region output to vscode
254
+ outputToVScode(data, disableEncode = false) {
255
+ if (tnp_core_1._.isObject(data)) {
256
+ data = JSON.stringify(data);
257
+ }
258
+ if (disableEncode) {
259
+ console.log(data);
260
+ }
261
+ else {
262
+ console.log(encodeURIComponent(data));
263
+ }
264
+ }
265
+ //#endregion
266
+ //#region action wrapper
267
+ async actionWrapper(fn, taskName = 'Task') {
268
+ function currentDate() {
269
+ return `[${dateformat(new Date(), 'dd-mm-yyyy HH:MM:ss')}]`;
270
+ }
271
+ // global.spinner && global.spinner.start()
272
+ index_1.Helpers.taskStarted(`${currentDate()} "${taskName}" Started..`);
273
+ await index_1.Helpers.runSyncOrAsync({ functionFn: fn });
274
+ index_1.Helpers.taskDone(`${currentDate()} "${taskName}" Done`);
275
+ // global.spinner && global.spinner.stop()
276
+ }
277
+ //#endregion
278
+ //#region terminal line
279
+ terminalLine() {
280
+ return tnp_core_1._.times(process.stdout.columns, () => '-').join('');
281
+ }
282
+ //#endregion
283
+ //#region kill all node except current process
284
+ /**
285
+ * THIS DEOS NOT WORK !
286
+ * ! TOOD FIX THIS
287
+ */
288
+ async killAllNodeExceptCurrentProcess() {
289
+ return new Promise((resolve, reject) => {
290
+ // Get the current process ID
291
+ const currentProcessId = process.pid;
292
+ // Command to list all Node.js processes
293
+ const listProcessesCommand = process.platform === 'win32'
294
+ ? 'tasklist /fi "imagename eq node.exe" /fo csv'
295
+ : 'ps -A -o pid,command | grep node';
296
+ // Execute the command to list processes
297
+ (0, child_process_1.exec)(listProcessesCommand, { shell: process.platform === 'win32' ? 'cmd.exe' : void 0 }, (error, stdout, stderr) => {
298
+ if (error) {
299
+ reject(new Error(`Error occurred while listing processes: ${error.message}`));
300
+ return;
301
+ }
302
+ if (stderr) {
303
+ reject(new Error(`Error occurred while listing processes: ${stderr}`));
304
+ return;
305
+ }
306
+ // Split the output into lines and filter out non-node processes
307
+ const processes = stdout
308
+ .split('\n')
309
+ .map(line => line.trim())
310
+ .filter(line => line.includes('node') &&
311
+ !line.includes('grep') &&
312
+ !line.includes('tasklist'));
313
+ // Extract the process IDs
314
+ const processIds = processes.map(line => parseInt(line.split(',')[1]));
315
+ // Filter out the current process ID
316
+ const processesToKill = processIds
317
+ .filter(id => id !== currentProcessId)
318
+ .filter(f => !!f);
319
+ // If there are no processes to kill, resolve immediately
320
+ if (processesToKill.length === 0) {
321
+ resolve();
322
+ return;
323
+ }
324
+ // Kill the processes
325
+ let numProcessesKilled = 0;
326
+ processesToKill.forEach(id => {
327
+ const killCommand = process.platform === 'win32'
328
+ ? `taskkill /pid ${id} /f`
329
+ : `kill ${id}`;
330
+ (0, child_process_1.exec)(killCommand, error => {
331
+ if (error) {
332
+ console.error(`Error occurred while killing process ${id}:`, error);
333
+ }
334
+ else {
335
+ console.log(`Successfully killed process ${id}`);
336
+ }
337
+ numProcessesKilled++;
338
+ if (numProcessesKilled === processesToKill.length) {
339
+ resolve();
340
+ }
341
+ });
342
+ });
343
+ });
344
+ });
345
+ }
346
+ //#endregion
347
+ //#region kill all node
348
+ killAllNode() {
349
+ index_1.Helpers.info('Killing all node processes...');
350
+ try {
351
+ if (process.platform === 'win32') {
352
+ index_1.Helpers.run(`taskkill /f /im node.exe`, {
353
+ output: false,
354
+ silence: true,
355
+ }).sync();
356
+ }
357
+ else {
358
+ index_1.Helpers.run(`fkill -f node`, { output: false, silence: true }).sync();
359
+ }
360
+ }
361
+ catch (error) {
362
+ index_1.Helpers.error(`[${tnp_config_1.config.frameworkName}] not able to kill all node processes`, false, true);
363
+ }
364
+ index_1.Helpers.info('DONE KILL ALL NODE PROCESSES');
365
+ }
366
+ //#endregion
367
+ //#region format path
368
+ formatPath(pathToFileOrFolder) {
369
+ if (!tnp_core_1._.isString(pathToFileOrFolder)) {
370
+ return `\n< provided path is not string: ${pathToFileOrFolder} >\n`;
371
+ }
372
+ if (!tnp_core_1.path.isAbsolute(pathToFileOrFolder)) {
373
+ return `\n
374
+ ${index_1.Helpers.terminalLine()}
375
+ relativePath: ${pathToFileOrFolder}
376
+ ${index_1.Helpers.terminalLine()}\n`;
377
+ }
378
+ if (!tnp_core_1.fse.existsSync(pathToFileOrFolder)) {
379
+ return `\n
380
+ ${index_1.Helpers.terminalLine()}
381
+ < provided path does not exist: ${pathToFileOrFolder} >
382
+ ${index_1.Helpers.terminalLine()}\n`;
383
+ }
384
+ const isDirectory = tnp_core_1.fse.lstatSync(pathToFileOrFolder).isDirectory();
385
+ return `
386
+ ${index_1.Helpers.terminalLine()}
387
+ <-- ${isDirectory ? 'Path to directory' : 'Path to file'}: -->
388
+ ${isDirectory
389
+ ? pathToFileOrFolder
390
+ .split('/')
391
+ .map(c => `/${c}`)
392
+ .join('')
393
+ .replace(/^\//, '')
394
+ : tnp_core_1.path.dirname(pathToFileOrFolder
395
+ .split('/')
396
+ .map(c => `/${c}`)
397
+ .join('')
398
+ .replace(/^\//, '')) +
399
+ '\n/' +
400
+ tnp_core_2.CLI.chalk.bold(tnp_core_1.path.basename(pathToFileOrFolder))}
401
+ ${index_1.Helpers.terminalLine()}\n`;
402
+ }
403
+ //#endregion
404
+ //#region prepare wathc command
405
+ /**
406
+ * @deprecated
407
+ */
408
+ prepareWatchCommand(cmd) {
409
+ return tnp_core_1.os.platform() === 'win32' ? `"${cmd}"` : `'${cmd}'`;
410
+ }
411
+ //#endregion
412
+ //#region get string from
413
+ /**
414
+ * @deprecated
415
+ */
416
+ getStringFrom(command, descriptionOfCommand) {
417
+ try {
418
+ const res = index_1.Helpers.run(command, { output: false }).sync().toString();
419
+ return res;
420
+ }
421
+ catch (error) {
422
+ index_1.Helpers.warn(`Not able to get string from "${descriptionOfCommand ? descriptionOfCommand : command}"`);
423
+ return void 0;
424
+ }
425
+ }
426
+ //#endregion
427
+ //#region wait for message in stdout
428
+ async waitForMessegeInStdout(proc, message) {
429
+ return new Promise((resolve, reject) => {
430
+ let resolved = false;
431
+ proc.stdout.on('data', data => {
432
+ // console.log(`
433
+ // [waitForMessegeInStdout] data: ${data}
434
+ // [waitForMessegeInStdout] data typeof: ${typeof data}
435
+ // `);
436
+ if (tnp_core_1._.isObject(data) && tnp_core_1._.isFunction(data.toString)) {
437
+ data = data.toString();
438
+ }
439
+ if (tnp_core_1._.isString(data) && data.search(message) !== -1) {
440
+ resolved = true;
441
+ resolve(void 0);
442
+ }
443
+ });
444
+ proc.once('exit', () => {
445
+ // console.log(`
446
+ // [waitForMessegeInStdout] exit: ${code}
447
+ // `);
448
+ if (!resolved) {
449
+ reject();
450
+ }
451
+ });
452
+ });
453
+ }
454
+ }
455
+ exports.HelpersProcess = HelpersProcess;
456
+ //# sourceMappingURL=helpers-process.backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers-process.backend.js","sourceRoot":"","sources":["c:/Users/darek/projects/npm/taon-dev/tnp-helpers/src/lib/helpers/for-backend/helpers-process.backend.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from './ts-import-export-extractor';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./ts-import-export-extractor"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["c:/Users/darek/projects/npm/taon-dev/tnp-helpers/src/lib/helpers/for-backend/ts-code/index.ts"],"names":[],"mappings":";;;AAAA,uEAA6C"}
@@ -0,0 +1,29 @@
1
+ import { LineAndCharacter } from 'typescript';
2
+ export declare class TsImportExport {
3
+ type: 'export' | 'import' | 'async-import' | 'require';
4
+ /**
5
+ * ORIGNAL
6
+ * Name of the file that is being imported/exported
7
+ * with parenthesis included
8
+ */
9
+ embeddedPathToFile: string;
10
+ /**
11
+ * same as cleanEmbeddedPathToFile but without quotes (parenthesis)
12
+ */
13
+ cleanEmbeddedPathToFile: string;
14
+ removeStartEndQuotes(str: string): string;
15
+ /**
16
+ * RESULT OF PROCESSING
17
+ */
18
+ embeddedPathToFileResult: string;
19
+ packageName: string;
20
+ isIsomorphic?: boolean;
21
+ startRow: number;
22
+ startCol: number;
23
+ endRow: number;
24
+ endCol: number;
25
+ parenthesisType: 'single' | 'double' | 'tics';
26
+ wrapInParenthesis(str: string): string;
27
+ constructor(type: 'export' | 'import' | 'async-import' | 'require', embeddedPathToFile: string, start: LineAndCharacter, end: LineAndCharacter, parenthesisType: 'single' | 'double' | 'tics');
28
+ }
29
+ export declare const recognizeImportsFromFile: (fileContent: string) => TsImportExport[];
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.recognizeImportsFromFile = exports.TsImportExport = void 0;
4
+ var typescript_1 = require("typescript");
5
+ var TsImportExport = /** @class */ (function () {
6
+ function TsImportExport(type, embeddedPathToFile, start, end, parenthesisType) {
7
+ this.type = type;
8
+ this.isIsomorphic = false;
9
+ this.embeddedPathToFile = embeddedPathToFile;
10
+ this.cleanEmbeddedPathToFile =
11
+ this.removeStartEndQuotes(embeddedPathToFile);
12
+ this.embeddedPathToFileResult = embeddedPathToFile;
13
+ this.startRow = start.line + 1; // TypeScript lines are zero-based
14
+ this.startCol = start.character + 1;
15
+ this.endRow = end.line + 1;
16
+ this.endCol = end.character + 1;
17
+ this.parenthesisType = parenthesisType;
18
+ }
19
+ TsImportExport.prototype.removeStartEndQuotes = function (str) {
20
+ return str.replace(/^['"`]/, '').replace(/['"`]$/, '');
21
+ };
22
+ TsImportExport.prototype.wrapInParenthesis = function (str) {
23
+ return this.parenthesisType === 'single'
24
+ ? "'".concat(str, "'")
25
+ : this.parenthesisType === 'double'
26
+ ? "\"".concat(str, "\"")
27
+ : "`".concat(str, "`");
28
+ };
29
+ return TsImportExport;
30
+ }());
31
+ exports.TsImportExport = TsImportExport;
32
+ var getQuoteType = function (text) {
33
+ if (text.startsWith('`'))
34
+ return 'tics';
35
+ if (text.startsWith("'"))
36
+ return 'single';
37
+ return 'double';
38
+ };
39
+ var recognizeImportsFromFile = function (fileContent) {
40
+ //#region @backendFunc
41
+ var sourceFile = (0, typescript_1.createSourceFile)('file.ts', // a name for the file
42
+ fileContent, typescript_1.ScriptTarget.Latest, true);
43
+ var results = [];
44
+ function visit(node) {
45
+ // Check for dynamic import expressions specifically
46
+ if ((0, typescript_1.isCallExpression)(node) &&
47
+ node.expression.kind === typescript_1.SyntaxKind.ImportKeyword) {
48
+ var args = node.arguments;
49
+ if (args.length) {
50
+ var arg = args[0];
51
+ var specifier = arg.getText(sourceFile);
52
+ var parenthesisType = getQuoteType(specifier);
53
+ results.push(new TsImportExport('async-import', specifier, sourceFile.getLineAndCharacterOfPosition(node.getStart()), sourceFile.getLineAndCharacterOfPosition(node.getEnd()), parenthesisType));
54
+ }
55
+ }
56
+ if ((0, typescript_1.isImportDeclaration)(node) || (0, typescript_1.isExportDeclaration)(node)) {
57
+ var specifier = node.moduleSpecifier
58
+ ? node.moduleSpecifier.getText(sourceFile)
59
+ : '';
60
+ var parenthesisType = getQuoteType(specifier);
61
+ var type = node.kind === typescript_1.SyntaxKind.ImportDeclaration ? 'import' : 'export';
62
+ results.push(new TsImportExport(type, specifier, sourceFile.getLineAndCharacterOfPosition(node.getStart()), sourceFile.getLineAndCharacterOfPosition(node.getEnd()), parenthesisType));
63
+ }
64
+ if ((0, typescript_1.isCallExpression)(node) &&
65
+ node.expression.getText(sourceFile) === 'require') {
66
+ var args = node.arguments;
67
+ if (args.length > 0) {
68
+ var arg = args[0];
69
+ var specifier = arg.getText(sourceFile);
70
+ var parenthesisType = getQuoteType(specifier);
71
+ results.push(new TsImportExport('require', specifier, sourceFile.getLineAndCharacterOfPosition(arg.getStart()), sourceFile.getLineAndCharacterOfPosition(arg.getEnd()), parenthesisType));
72
+ }
73
+ }
74
+ (0, typescript_1.forEachChild)(node, visit);
75
+ }
76
+ (0, typescript_1.forEachChild)(sourceFile, visit);
77
+ return results;
78
+ //#endregion
79
+ };
80
+ exports.recognizeImportsFromFile = recognizeImportsFromFile;
81
+ //# sourceMappingURL=ts-import-export-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts-import-export-extractor.js","sourceRoot":"","sources":["c:/Users/darek/projects/npm/taon-dev/tnp-helpers/src/lib/helpers/for-backend/ts-code/ts-import-export-extractor.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.dummy1745702990285 = dummy1745702990285;
4
- function dummy1745702990285() { }
3
+ exports.dummy1745786025147 = dummy1745786025147;
4
+ function dummy1745786025147() { }
5
5
  //# sourceMappingURL=angular.helper.js.map
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.dummy1745702989337 = dummy1745702989337;
4
- function dummy1745702989337() { }
3
+ exports.dummy1745786024153 = dummy1745786024153;
4
+ function dummy1745786024153() { }
5
5
  //# sourceMappingURL=base-component.js.map
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.dummy1745702989342 = dummy1745702989342;
4
- function dummy1745702989342() { }
3
+ exports.dummy1745786024159 = dummy1745786024159;
4
+ function dummy1745786024159() { }
5
5
  //# sourceMappingURL=base-formly-component.js.map
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.dummy1745702989351 = dummy1745702989351;
4
- function dummy1745702989351() { }
3
+ exports.dummy1745786024168 = dummy1745786024168;
4
+ function dummy1745786024168() { }
5
5
  //# sourceMappingURL=dual-component-ctrl.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tnp-helpers",
3
- "version": "19.0.3",
3
+ "version": "19.0.4",
4
4
  "scripts": {
5
5
  "docs": "python3 -m mkdocs",
6
6
  "mkdocs": "python3 -m mkdocs"