tnp-helpers 21.0.66 → 21.0.70

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 (149) hide show
  1. package/browser/fesm2022/tnp-helpers-browser.mjs +742 -669
  2. package/browser/fesm2022/tnp-helpers-browser.mjs.map +1 -1
  3. package/browser/package.json +1 -1
  4. package/browser/types/tnp-helpers-browser.d.ts +51 -47
  5. package/browser-prod/fesm2022/tnp-helpers-browser-prod.mjs +699 -626
  6. package/browser-prod/fesm2022/tnp-helpers-browser-prod.mjs.map +1 -1
  7. package/browser-prod/package.json +1 -1
  8. package/browser-prod/types/tnp-helpers-browser-prod.d.ts +50 -46
  9. package/browser-prod.split-namespaces.json +38 -36
  10. package/lib/base/classes/base-git.js +1 -1
  11. package/lib/base/classes/base-git.js.map +1 -1
  12. package/lib/base/classes/base-global-command-line.d.ts +1 -0
  13. package/lib/base/classes/base-global-command-line.js +3 -0
  14. package/lib/base/classes/base-global-command-line.js.map +1 -1
  15. package/lib/base/classes/base-npm-helpers.js +26 -27
  16. package/lib/base/classes/base-npm-helpers.js.map +1 -1
  17. package/lib/base/classes/base-project.js +1 -1
  18. package/lib/base/classes/base-project.js.map +1 -1
  19. package/lib/base/tcp-udp-ports/not-assignable-port.entity.js +2 -2
  20. package/lib/build-info._auto-generated_.d.ts +1 -1
  21. package/lib/build-info._auto-generated_.js +1 -1
  22. package/lib/env/env.angular-node-app.d.ts +2 -0
  23. package/lib/env/env.angular-node-app.js +5 -1
  24. package/lib/env/env.angular-node-app.js.map +1 -1
  25. package/lib/env/env.docs-webapp.d.ts +2 -0
  26. package/lib/env/env.docs-webapp.js +5 -1
  27. package/lib/env/env.docs-webapp.js.map +1 -1
  28. package/lib/env/env.electron-app.d.ts +2 -0
  29. package/lib/env/env.electron-app.js +5 -1
  30. package/lib/env/env.electron-app.js.map +1 -1
  31. package/lib/env/env.mobile-app.d.ts +2 -0
  32. package/lib/env/env.mobile-app.js +5 -1
  33. package/lib/env/env.mobile-app.js.map +1 -1
  34. package/lib/env/env.npm-lib-and-cli-tool.d.ts +2 -0
  35. package/lib/env/env.npm-lib-and-cli-tool.js +5 -1
  36. package/lib/env/env.npm-lib-and-cli-tool.js.map +1 -1
  37. package/lib/env/env.vscode-plugin.d.ts +2 -0
  38. package/lib/env/env.vscode-plugin.js +5 -1
  39. package/lib/env/env.vscode-plugin.js.map +1 -1
  40. package/lib/helpers/helpers.d.ts +3 -1
  41. package/lib/helpers/helpers.js +34 -4
  42. package/lib/helpers/helpers.js.map +1 -1
  43. package/lib/index.d.ts +1 -0
  44. package/lib/index.js +1 -0
  45. package/lib/index.js.map +1 -1
  46. package/lib/old/base-component.js +2 -2
  47. package/lib/old/base-formly-component.js +2 -2
  48. package/lib/old/dual-component-ctrl.js +2 -2
  49. package/lib/old/execute-command.js +4 -3
  50. package/lib/old/execute-command.js.map +1 -1
  51. package/lib/old/helpers.d.ts +0 -4
  52. package/lib/old/helpers.js +6 -48
  53. package/lib/old/helpers.js.map +1 -1
  54. package/lib/package.json +1 -1
  55. package/lib/utils-vscode.d.ts +46 -0
  56. package/lib/utils-vscode.js +843 -0
  57. package/lib/utils-vscode.js.map +1 -0
  58. package/lib/utils.d.ts +1 -47
  59. package/lib/utils.js +1 -806
  60. package/lib/utils.js.map +1 -1
  61. package/lib-prod/base/classes/base-cli-worker/base-cli-worker-database-config.js.map +1 -1
  62. package/lib-prod/base/classes/base-cli-worker/base-cli-worker.js.map +1 -1
  63. package/lib-prod/base/classes/base-cli-worker/base-cli-worker.utils.js.map +1 -1
  64. package/lib-prod/base/classes/base-command-line-feature.js.map +1 -1
  65. package/lib-prod/base/classes/base-db.js.map +1 -1
  66. package/lib-prod/base/classes/base-file-folders-operations.js.map +1 -1
  67. package/lib-prod/base/classes/base-git.js +1 -1
  68. package/lib-prod/base/classes/base-git.js.map +1 -1
  69. package/lib-prod/base/classes/base-global-command-line.d.ts +1 -0
  70. package/lib-prod/base/classes/base-global-command-line.js +3 -0
  71. package/lib-prod/base/classes/base-global-command-line.js.map +1 -1
  72. package/lib-prod/base/classes/base-library-build.js.map +1 -1
  73. package/lib-prod/base/classes/base-linked-projects.js.map +1 -1
  74. package/lib-prod/base/classes/base-node-modules.js.map +1 -1
  75. package/lib-prod/base/classes/base-npm-helpers.js +5 -6
  76. package/lib-prod/base/classes/base-npm-helpers.js.map +1 -1
  77. package/lib-prod/base/classes/base-project-resolver.js.map +1 -1
  78. package/lib-prod/base/classes/base-project.js +1 -1
  79. package/lib-prod/base/classes/base-project.js.map +1 -1
  80. package/lib-prod/base/classes/base-quick-fixes.js.map +1 -1
  81. package/lib-prod/base/classes/base-release-process.js.map +1 -1
  82. package/lib-prod/base/classes/base-start-config.backend.js.map +1 -1
  83. package/lib-prod/base/classes/base-static-pages.js.map +1 -1
  84. package/lib-prod/base/classes/base-vscode.js.map +1 -1
  85. package/lib-prod/base/commit-data.js.map +1 -1
  86. package/lib-prod/base/config-database.js.map +1 -1
  87. package/lib-prod/base/core-project.js.map +1 -1
  88. package/lib-prod/base/gh-temp-code.js.map +1 -1
  89. package/lib-prod/base/linked-project.js.map +1 -1
  90. package/lib-prod/base/tcp-udp-ports/not-assignable-port.entity.d.ts +1 -1
  91. package/lib-prod/base/tcp-udp-ports/not-assignable-port.entity.js +1 -1
  92. package/lib-prod/base/tcp-udp-ports/ports.controller.js.map +1 -1
  93. package/lib-prod/build-info._auto-generated_.d.ts +1 -1
  94. package/lib-prod/build-info._auto-generated_.js +1 -1
  95. package/lib-prod/env/env.angular-node-app.d.ts +2 -0
  96. package/lib-prod/env/env.angular-node-app.js +4 -0
  97. package/lib-prod/env/env.angular-node-app.js.map +1 -1
  98. package/lib-prod/env/env.docs-webapp.d.ts +2 -0
  99. package/lib-prod/env/env.docs-webapp.js +4 -0
  100. package/lib-prod/env/env.docs-webapp.js.map +1 -1
  101. package/lib-prod/env/env.electron-app.d.ts +2 -0
  102. package/lib-prod/env/env.electron-app.js +4 -0
  103. package/lib-prod/env/env.electron-app.js.map +1 -1
  104. package/lib-prod/env/env.mobile-app.d.ts +2 -0
  105. package/lib-prod/env/env.mobile-app.js +4 -0
  106. package/lib-prod/env/env.mobile-app.js.map +1 -1
  107. package/lib-prod/env/env.npm-lib-and-cli-tool.d.ts +2 -0
  108. package/lib-prod/env/env.npm-lib-and-cli-tool.js +4 -0
  109. package/lib-prod/env/env.npm-lib-and-cli-tool.js.map +1 -1
  110. package/lib-prod/env/env.vscode-plugin.d.ts +2 -0
  111. package/lib-prod/env/env.vscode-plugin.js +4 -0
  112. package/lib-prod/env/env.vscode-plugin.js.map +1 -1
  113. package/lib-prod/helpers/helpers.d.ts +3 -1
  114. package/lib-prod/helpers/helpers.js +33 -3
  115. package/lib-prod/helpers/helpers.js.map +1 -1
  116. package/lib-prod/index.d.ts +1 -0
  117. package/lib-prod/index.js +1 -0
  118. package/lib-prod/index.js.map +1 -1
  119. package/lib-prod/old/base-component.d.ts +1 -1
  120. package/lib-prod/old/base-component.js +1 -1
  121. package/lib-prod/old/base-formly-component.d.ts +1 -1
  122. package/lib-prod/old/base-formly-component.js +1 -1
  123. package/lib-prod/old/dual-component-ctrl.d.ts +1 -1
  124. package/lib-prod/old/dual-component-ctrl.js +1 -1
  125. package/lib-prod/old/execute-command.js +3 -2
  126. package/lib-prod/old/execute-command.js.map +1 -1
  127. package/lib-prod/old/helpers.d.ts +0 -4
  128. package/lib-prod/old/helpers.js +3 -45
  129. package/lib-prod/old/helpers.js.map +1 -1
  130. package/lib-prod/package.json +1 -1
  131. package/lib-prod/utils-typescript.js.map +1 -1
  132. package/lib-prod/utils-vscode.d.ts +44 -0
  133. package/lib-prod/utils-vscode.js +839 -0
  134. package/lib-prod/utils-vscode.js.map +1 -0
  135. package/lib-prod/utils.d.ts +0 -44
  136. package/lib-prod/utils.js +3 -807
  137. package/lib-prod/utils.js.map +1 -1
  138. package/lib-prod.split-namespaces.json +38 -36
  139. package/package.json +1 -1
  140. package/websql/fesm2022/tnp-helpers-websql.mjs +742 -669
  141. package/websql/fesm2022/tnp-helpers-websql.mjs.map +1 -1
  142. package/websql/package.json +1 -1
  143. package/websql/types/tnp-helpers-websql.d.ts +51 -47
  144. package/websql-prod/fesm2022/tnp-helpers-websql-prod.mjs +699 -626
  145. package/websql-prod/fesm2022/tnp-helpers-websql-prod.mjs.map +1 -1
  146. package/websql-prod/package.json +1 -1
  147. package/websql-prod/types/tnp-helpers-websql-prod.d.ts +50 -46
  148. package/websql-prod.split-namespaces.json +38 -36
  149. package/VERIFIED-BUILD-DATA.jsonc +0 -5
@@ -1,4 +1,4 @@
1
- import { CoreModels, Utils, UtilsOs, Helpers, crossPlatformPath, UtilsFilesFoldersSync, _, UtilsTerminal, child_process, fse, path, config, dateformat, CLI, UtilsExecProc, BaselineSiteJoinprefix, chalk, folderName, fileName, GlobalTaskManager, UtilsNetwork, UtilsSudo, isElevated } from 'tnp-core/browser';
1
+ import { CoreModels, Utils, crossPlatformPath, UtilsOs, Helpers, UtilsFilesFoldersSync, _, UtilsTerminal, child_process, fse, path, config, dateformat, CLI, UtilsExecProc, BaselineSiteJoinprefix, chalk, folderName, fileName, GlobalTaskManager, UtilsNetwork, UtilsSudo, isElevated } from 'tnp-core/browser';
2
2
  export { Helpers } from 'tnp-core/browser';
3
3
  import { createSourceFile, ScriptTarget, isCallExpression, SyntaxKind, isImportDeclaration, isExportDeclaration, forEachChild, ScriptKind, getLeadingCommentRanges, getTrailingCommentRanges, isArrayLiteralExpression, isObjectLiteralExpression, DiagnosticCategory } from 'typescript';
4
4
  import * as ini from 'ini';
@@ -482,73 +482,108 @@ var UtilsQuickFixes;
482
482
  };
483
483
  })(UtilsQuickFixes || (UtilsQuickFixes = {}));
484
484
  //#endregion
485
- //#region utils vscode
486
- var UtilsVSCode;
487
- (function (UtilsVSCode) {
488
- //#region calculate contrast hex color
489
- UtilsVSCode.calculateContrastingHexColor = (hex) => {
490
- // Normalize shorthand format like "#abc" → "#aabbcc"
491
- if (hex.length === 4) {
492
- hex =
493
- '#' +
494
- hex
495
- .slice(1)
496
- .split('')
497
- .map(ch => ch + ch)
498
- .join('');
499
- }
500
- const r = parseInt(hex.slice(1, 3), 16);
501
- const g = parseInt(hex.slice(3, 5), 16);
502
- const b = parseInt(hex.slice(5, 7), 16);
503
- // YIQ contrast formula
504
- const yiq = (r * 299 + g * 587 + b * 114) / 1000;
505
- return yiq >= 128 ? '#000000' : '#ffffff';
506
- };
507
- //#endregion
508
- //#region Convert HSL to HEX if you need HEX output
509
- const hslToHex = (hsl) => {
510
- const [_, hStr, sStr, lStr] = hsl.match(/hsl\((\d+), (\d+)%?, (\d+)%?\)/);
511
- let h = parseInt(hStr) / 360;
512
- let s = parseInt(sStr) / 100;
513
- let l = parseInt(lStr) / 100;
514
- const hue2rgb = (p, q, t) => {
515
- if (t < 0)
516
- t += 1;
517
- if (t > 1)
518
- t -= 1;
519
- if (t < 1 / 6)
520
- return p + (q - p) * 6 * t;
521
- if (t < 1 / 2)
522
- return q;
523
- if (t < 2 / 3)
524
- return p + (q - p) * (2 / 3 - t) * 6;
525
- return p;
526
- };
527
- let r, g, b;
528
- if (s === 0) {
529
- r = g = b = l; // achromatic
530
- }
531
- else {
532
- const q = l < 0.5 ? l * (1 + s) : l + s - l * s;
533
- const p = 2 * l - q;
534
- r = hue2rgb(p, q, h + 1 / 3);
535
- g = hue2rgb(p, q, h);
536
- b = hue2rgb(p, q, h - 1 / 3);
537
- }
538
- const toHex = (x) => {
539
- const hex = Math.round(x * 255).toString(16);
540
- return hex.length === 1 ? '0' + hex : hex;
541
- };
542
- return `#${toHex(r)}${toHex(g)}${toHex(b)}`;
485
+ //#region utils zip browser
486
+ var UtilsZipBrowser;
487
+ (function (UtilsZipBrowser) {
488
+ // <input type="file" id="folderInput" webkitdirectory />
489
+ // ts
490
+ // Copy
491
+ // Edit
492
+ // document.getElementById('folderInput').addEventListener('change', async (e) => {
493
+ // const input = e.target as HTMLInputElement;
494
+ // if (input.files) {
495
+ // const zipBlob = await zipDirBrowser(input.files);
496
+ // // Save the zip using FileSaver.js or URL.createObjectURL
497
+ // const url = URL.createObjectURL(zipBlob);
498
+ // const a = document.createElement('a');
499
+ // a.href = url;
500
+ // a.download = 'folder.zip';
501
+ // a.click();
502
+ // URL.revokeObjectURL(url);
503
+ // }
504
+ // });
505
+ // import JSZip from 'jszip';
506
+ // <input type="file" id="zipInput" />
507
+ // ts
508
+ // Copy
509
+ // Edit
510
+ // document.getElementById('zipInput').addEventListener('change', async (e) => {
511
+ // const input = e.target as HTMLInputElement;
512
+ // if (input.files?.[0]) {
513
+ // const entries = await unzipArchiveBrowser(input.files[0]);
514
+ // for (const [name, blob] of entries) {
515
+ // console.log(`Extracted file: ${name}`, blob);
516
+ // }
517
+ // }
518
+ // });
519
+ UtilsZipBrowser.zipDirBrowser = async (fileList) => {
520
+ // const zip = new JSZip();
521
+ // for (const file of Array.from(fileList)) {
522
+ // const relativePath = (file as any).webkitRelativePath || file.name;
523
+ // zip.file(relativePath, file);
524
+ // }
525
+ // return zip.generateAsync({ type: 'blob' });
526
+ return void 0;
543
527
  };
544
- UtilsVSCode.generateFancyColor = () => {
545
- const h = Math.floor(Math.random() * 360); // full hue range
546
- const s = Math.floor(40 + Math.random() * 30); // 40–70% saturation
547
- const l = Math.floor(35 + Math.random() * 25); // 35–60% lightness
548
- return hslToHex(`hsl(${h}, ${s}%, ${l}%)`);
528
+ UtilsZipBrowser.unzipArchiveBrowser = async (zipBlob) => {
529
+ // const zip = await JSZip.loadAsync(zipBlob);
530
+ // const files = new Map<string, Blob>();
531
+ // for (const [filePath, fileObj] of Object.entries(zip.files)) {
532
+ // if (!fileObj.dir) {
533
+ // const content = await fileObj.async('blob');
534
+ // files.set(filePath, content);
535
+ // }
536
+ // }
537
+ // return files;
538
+ return void 0;
549
539
  };
550
- //#endregion
551
- UtilsVSCode.vscodeImport = () => {
540
+ })(UtilsZipBrowser || (UtilsZipBrowser = {}));
541
+ //#endregion
542
+ //#region utils zip node
543
+ var UtilsZip;
544
+ (function (UtilsZip) {
545
+ //#region split zip file
546
+ UtilsZip.splitFile7Zip = async (inputPath, partSizeMB = 99) => {
547
+ /* */
548
+ /* */
549
+ /* */
550
+ /* */
551
+ /* */
552
+ /* */
553
+ /* */
554
+ /* */
555
+ /* */
556
+ /* */
557
+ /* */
558
+ /* */
559
+ /* */
560
+ /* */
561
+ /* */
562
+ /* */
563
+ /* */
564
+ /* */
565
+ /* */
566
+ /* */
567
+ /* */
568
+ /* */
569
+ /* */
570
+ /* */
571
+ /* */
572
+ /* */
573
+ /* */
574
+ /* */
575
+ /* */
576
+ /* */
577
+ /* */
578
+ /* */
579
+ /* */
580
+ /* */
581
+ /* */
582
+ /* */
583
+ /* */
584
+ /* */
585
+ /* */
586
+ /* */
552
587
  /* */
553
588
  /* */
554
589
  /* */
@@ -557,8 +592,26 @@ var UtilsVSCode;
557
592
  /* */
558
593
  return (void 0);
559
594
  };
560
- //#region utils os / open folder in vscode
561
- UtilsVSCode.openFolder = async (folderAbsPath, editor) => {
595
+ /**
596
+ * Splits a file into smaller parts if its size exceeds the specified part size.
597
+ * @returns true if file was split, false if not needed
598
+ */
599
+ UtilsZip.splitFile = async (inputPath, partSizeMB = 99) => {
600
+ /* */
601
+ /* */
602
+ /* */
603
+ /* */
604
+ /* */
605
+ /* */
606
+ /* */
607
+ /* */
608
+ /* */
609
+ /* */
610
+ /* */
611
+ /* */
612
+ /* */
613
+ /* */
614
+ /* */
562
615
  /* */
563
616
  /* */
564
617
  /* */
@@ -594,8 +647,14 @@ var UtilsVSCode;
594
647
  return (void 0);
595
648
  };
596
649
  //#endregion
597
- //#region utils os / open folder in vscode
598
- UtilsVSCode.openFile = async (fileAbsPath, options) => {
650
+ /**
651
+ * @returns absolute path to zip file
652
+ */
653
+ UtilsZip.zipDir = async (absPathToDir, options) => {
654
+ /* */
655
+ /* */
656
+ /* */
657
+ /* */
599
658
  /* */
600
659
  /* */
601
660
  /* */
@@ -635,9 +694,13 @@ var UtilsVSCode;
635
694
  /* */
636
695
  return (void 0);
637
696
  };
638
- //#endregion
639
- //#region regeberate vscode setting
640
- UtilsVSCode.regenerateVsCodeSettingsColors = (cwd, overideBottomColor) => {
697
+ // Unzip: `/some/path/folder.zip` → `/some/path/folder`
698
+ UtilsZip.unzipArchive = async (absPathToZip) => {
699
+ /* */
700
+ /* */
701
+ /* */
702
+ /* */
703
+ /* */
641
704
  /* */
642
705
  /* */
643
706
  /* */
@@ -665,226 +728,28 @@ var UtilsVSCode;
665
728
  /* */
666
729
  return (void 0);
667
730
  };
668
- //#endregion
669
- //#region get extensions
670
- UtilsVSCode.commonRecommededExtensionsExtensions = () => {
671
- return [
672
- 'taon-dev.taon',
673
- 'EditorConfig.EditorConfig',
674
- 'IBM.output-colorizer',
675
- 'Mikael.Angular-BeastCode',
676
- // 'Angular.ng-template',
677
- 'sndst00m.vscode-native-svg-preview', // 'SimonSiefke.svg-preview',
678
- 'HansUXdev.bootstrap5-snippets', // 'Zaczero.bootstrap-v4-snippets', 'wcwhitehead.bootstrap-3-snippets', // very old
679
- 'alefragnani.Bookmarks',
680
- 'amodio.toggle-excluded-files',
681
- 'ctcuff.font-preview',
682
- 'dbaeumer.vscode-eslint',
683
- 'dnicolson.binary-plist',
684
- 'eamodio.gitlens', // very nice inline git blame
685
- 'esbenp.prettier-vscode',
686
- 'johnpapa.Angular2',
687
- 'marclipovsky.string-manipulation',
688
- 'thebearingedge.vscode-sql-lit', // SQL templates extensions
689
- 'keyshout.sqlite-db-viewer', // free version of qwtel.sqlite-viewer - no writes
690
- 'christian-kohler.path-intellisense', // asset pathes autocomplete
691
- 'redhat.vscode-xml',
692
- 'rogalmic.bash-debug',
693
- 'Gruntfuggly.todo-tree',
694
- 'saber2pr.file-git-history',
695
- 'unifiedjs.vscode-mdx',
696
- 'Malo.copy-json-path',
697
- 'aaron-bond.better-comments',
698
- 'mikestead.dotenv',
699
- 'humao.rest-client',
700
- 'hediet.vscode-drawio',
701
- 'tomoki1207.pdf',
702
- 'streetsidesoftware.code-spell-checker',
703
- 'Tyriar.sort-lines',
704
- 'DavidAnson.vscode-markdownlint',
705
- 'wmaurer.change-case',
706
- 'earshinov.permute-lines',
707
- 'xabikos.javascriptsnippets',
708
- // 'mechatroner.rainbow-csv',
709
- // 'wenfangdu.snippet-generator', snippet generator
710
- //#region to check
711
- // 'abumalick.vscode-nvm', // test this before
712
- // , // there is prettiers
713
- // 'alexdima.copy-relative-path', // already in taon
714
- // 'alexiv.vscode-angular2-files', // taon generator is better
715
- // , // no needed anymore (embeded in taon)
716
- // 'eg2.tslint',
717
- // 'henry-li.vscode-import-formatter', not neede - eslint does it
718
- // 'jack89ita.copy-filename', // in taon
719
- // 'momoko8443.library-version',
720
- // 'oven.bun-vscode', // errors in vscode cosole
721
- // 'qwtel.sqlite-viewer', // 80$ not free
722
- // , already in taon
723
- // 'taddison.gitlazy',
724
- // 'vespa-dev-works.jestrunit',
725
- // 'wmaurer.vscode-jumpy', // nice but I am not using it
726
- // 'usernamehw.errorlens', nice extension.. but to much input at once
727
- // 'pranaygp.vscode-css-peek', // high cpu usage
728
- // 'bengreenier.vscode-node-readme',
729
- // 'kisstkondoros.vscode-codemetrics', // TOO MUCH CPU USAGE
730
- // 'vscode-icons-team.vscode-icons',
731
- // TODO nesting is so nice.. but I nee to modify it for taon
732
- // 'antfu.file-nesting',
733
- // 'frigus02.vscode-sql-tagged-template-literals', TODO CHECK
734
- // 'frigus02.vscode-sql-tagged-template-literals-syntax-only', TODO CHECK
735
- // -------
736
- // 'mihelcic.colored-regions', TODO I need modified version for taon
737
- // 'shardulm94.trailing-spaces',
738
- // 'bierner.color-info', // nice to have color info in css/scss files
739
- // ---
740
- // 'skacekachna.win-opacity',
741
- // 'electrotype.windows-explorer-context-menu',
742
- // escape win path on paset TODO CHECK THIS
743
- // 'coalaura.win-path',
744
- // nice extension but not use for now in taon
745
- // csv thing
746
- //
747
- //#endregion
748
- ];
749
- };
750
- UtilsVSCode.codiumExtensions = () => {
751
- return [
752
- 'Alexanderius.language-hosts',
753
- ...UtilsVSCode.commonRecommededExtensionsExtensions(),
754
- ];
755
- };
756
- UtilsVSCode.codeExtensions = () => {
757
- // wenfangdu.faster-new new file folder for codium
758
- return Utils.uniqArray([
759
- ...UtilsVSCode.commonRecommededExtensionsExtensions(),
760
- 'tommasov.hosts',
761
- /* */
762
- /* */
763
- /* */
764
- /* */
765
- /* */
766
- /* */
767
- /* */
768
- /* */
769
- /* */
770
- /* */
771
- /* */
772
- /* */
773
- /* */
774
- ]).map(c => c.toLowerCase());
775
- };
776
- //#endregion
777
- UtilsVSCode.vscodeExtensions = (editor) => {
778
- editor = editor ? editor : UtilsOs.detectEditor();
779
- if (editor === 'code') {
780
- return UtilsVSCode.codeExtensions();
731
+ })(UtilsZip || (UtilsZip = {}));
732
+ //#endregion
733
+ //#region utils worker
734
+ var UtilsTaonWorker;
735
+ (function (UtilsTaonWorker) {
736
+ UtilsTaonWorker.getUniqueForTask = (task, location) => {
737
+ if (!location) {
738
+ throw new Error('[UtilsTaonWorker.getUniqueForTask()] Location must be provided');
781
739
  }
782
- return UtilsVSCode.codiumExtensions();
783
- };
784
- //#region get deprecated extensions
785
- UtilsVSCode.getDeprecatedExtension = (editor) => {
786
- return [
787
- 'ms-azuretools.vscode-containers',
788
- 'ms-azuretools.vscode-docker',
789
- 'bibhasdn.unique-lines',
790
- 'ms-vscode-remote.remote-ssh',
791
- 'scrapecrow.html-escape',
792
- 'marinhobrandao.angular2tests', // snipperts for test
793
- 'cg-cnu.vscode-path-tools',
794
- 'chrisdias.vscode-opennewinstance',
795
- 'aeschli.vscode-css-formatter',
796
- 'rssowl.copy-relative-path-posix',
797
- 'ms-vscode-remote.remote-containers',
798
- 'ms-azuretools.vscode-docker',
799
- 'waderyan.gitblame',
800
- 'ryu1kn.partial-diff',
801
- 'nidu.copy-json-path',
802
- 'firsttris.vscode-jest-runner', // better for jest TODO include this for TAON
803
- 'franklinteixeira205.primeflex',
804
- 'stepanog.angular1-inline',
805
- 'shakram02.bash-beautify',
806
- 'ryanlaws.toggle-case',
807
- 'ritwickdey.create-file-folder',
808
- 'ms-vscode-remote.remote-wsl',
809
- 'kgrzywocz.wsl-path',
810
- 'imgildev.vscode-angular-generator',
811
- 'nemesv.copy-file-name',
812
- 'natqe.reload', // in taon
813
- 'ms-vscode.live-server', // not needed
814
- 'msjsdiag.debugger-for-chrome', // old
815
- 'mikebovenlander.formate', // prettier
816
- 'mrmlnc.vscode-json5', // prettier
817
- 'jack89ita.copy-filename', // in taon
818
- 'eg2.tslint', // old
819
- 'rssowl.copy-relative-path-posix', // in taon
820
- 'alexdima.copy-relative-path', // in taon
821
- 'ivangabriele.vscode-git-add-and-commit', // in taon
822
- 'alexiv.vscode-angular2-files', // in taon
823
- 'taddison.gitlazy', // in taon
824
- ];
825
- };
826
- //#endregion
827
- //#region strip version
828
- /**
829
- * This pattern finds a dash followed by at least one digit.
830
- * It removes everything from that dash to the end of the string.
831
- * Examples:
832
- * "name-of-extension-1.2.3" -> "name-of-extension"
833
- * "extension-0.9.5-win32-x64" -> "extension"
834
- */
835
- UtilsVSCode.stripVersion = (folderName) => {
836
- return folderName.replace(/(-\d+.*)$/, '');
837
- };
838
- //#endregion
839
- //#region install extensions
840
- UtilsVSCode.removeDeprecated = async (options) => {
841
- options = options || {};
842
- options.editor = UtilsOs.detectEditor();
843
- const deprecated = UtilsVSCode.getDeprecatedExtension(options.editor);
844
- // console.log({ deprecated });
845
- // HelpersTaon.pressKeyOrWait('Press any key to continue...');
846
- for (let index = 0; index < deprecated.length; index++) {
847
- const extname = deprecated[index];
848
- try {
849
- Helpers.taskStarted(`Uninstalling: ${extname}`);
850
- Helpers.run(`${options.editor} --uninstall-extension ${extname}`).sync();
851
- Helpers.taskDone(`Removed ${extname} done.`);
852
- await Utils.wait(1);
853
- }
854
- catch (error) {
855
- // console.error(error);
856
- Helpers.warn(`Not able to uninstall ${extname}`);
857
- // await UtilsTerminal.pressAnyKeyToContinueAsync({
858
- // message: 'Press any key to continue...',
859
- // });
860
- }
740
+ if (!task) {
741
+ throw new Error('[UtilsTaonWorker.getUniqueForTask()] Task must be provided');
861
742
  }
743
+ location = crossPlatformPath(location);
744
+ return `task(${task?.trim()}) in ${location}`?.trim();
862
745
  };
863
- UtilsVSCode.installAndRemoveDeprecatedExtensions = async (options) => {
864
- await UtilsVSCode.installExtensions(options);
865
- await UtilsVSCode.removeDeprecated(options);
866
- };
867
- UtilsVSCode.installExtensions = async (options) => {
868
- /* */
869
- /* */
870
- /* */
871
- /* */
872
- /* */
873
- /* */
874
- /* */
875
- /* */
876
- /* */
877
- /* */
878
- /* */
879
- /* */
880
- /* */
881
- /* */
882
- /* */
883
- /* */
884
- /* */
885
- /* */
886
- /* */
887
- /* */
746
+ })(UtilsTaonWorker || (UtilsTaonWorker = {}));
747
+ //#endregion
748
+ //#region utils java
749
+ var UtilsJava;
750
+ (function (UtilsJava) {
751
+ //#region select jdk version
752
+ UtilsJava.selectJdkVersion = async () => {
888
753
  /* */
889
754
  /* */
890
755
  /* */
@@ -922,50 +787,6 @@ var UtilsVSCode;
922
787
  /* */
923
788
  /* */
924
789
  /* */
925
- /* */
926
- /* */
927
- /* */
928
- /* */
929
- return (void 0);
930
- };
931
- //#endregion
932
- //#region installed extensions
933
- /**
934
- * @deprecated
935
- */
936
- UtilsVSCode.installedExtensions = () => {
937
- /* */
938
- /* */
939
- /* */
940
- /* */
941
- /* */
942
- /* */
943
- /* */
944
- /* */
945
- /* */
946
- /* */
947
- /* */
948
- /* */
949
- /* */
950
- /* */
951
- /* */
952
- /* */
953
- /* */
954
- /* */
955
- /* */
956
- /* */
957
- /* */
958
- /* */
959
- /* */
960
- /* */
961
- /* */
962
- /* */
963
- /* */
964
- return (void 0);
965
- };
966
- //#endregion
967
- //#region apply proper global settings
968
- UtilsVSCode.applyProperGlobalSettings = async (options) => {
969
790
  /* */
970
791
  /* */
971
792
  /* */
@@ -1115,6 +936,10 @@ var UtilsVSCode;
1115
936
  /* */
1116
937
  /* */
1117
938
  /* */
939
+ return (void 0);
940
+ };
941
+ //#endregion
942
+ UtilsJava.detectJavaVersionMacOS = (javaHome) => {
1118
943
  /* */
1119
944
  /* */
1120
945
  /* */
@@ -1138,6 +963,10 @@ var UtilsVSCode;
1138
963
  /* */
1139
964
  /* */
1140
965
  /* */
966
+ return (void 0);
967
+ };
968
+ //#region update java home path
969
+ UtilsJava.updateJavaHomePath = (selectedPath) => {
1141
970
  /* */
1142
971
  /* */
1143
972
  /* */
@@ -1175,6 +1004,11 @@ var UtilsVSCode;
1175
1004
  /* */
1176
1005
  /* */
1177
1006
  /* */
1007
+ return (void 0);
1008
+ };
1009
+ //#endregion
1010
+ //#region api methods / selectTomcatVersion
1011
+ UtilsJava.selectTomcatVersion = async () => {
1178
1012
  /* */
1179
1013
  /* */
1180
1014
  /* */
@@ -1261,6 +1095,11 @@ var UtilsVSCode;
1261
1095
  /* */
1262
1096
  /* */
1263
1097
  /* */
1098
+ return (void 0);
1099
+ };
1100
+ //#endregion
1101
+ //#region update tomcat home path
1102
+ UtilsJava.updateTomcatHomePath = (selectedPath) => {
1264
1103
  /* */
1265
1104
  /* */
1266
1105
  /* */
@@ -1284,6 +1123,16 @@ var UtilsVSCode;
1284
1123
  /* */
1285
1124
  /* */
1286
1125
  /* */
1126
+ return (void 0);
1127
+ };
1128
+ //#endregion
1129
+ })(UtilsJava || (UtilsJava = {}));
1130
+ //#endregion
1131
+ //#region utils passwords
1132
+ var UtilsPasswords;
1133
+ (function (UtilsPasswords) {
1134
+ //#region hash password
1135
+ UtilsPasswords.hashPassword = (password) => {
1287
1136
  /* */
1288
1137
  /* */
1289
1138
  /* */
@@ -1293,6 +1142,11 @@ var UtilsVSCode;
1293
1142
  /* */
1294
1143
  /* */
1295
1144
  /* */
1145
+ return (void 0);
1146
+ };
1147
+ //#endregion
1148
+ //#region verify password
1149
+ UtilsPasswords.verifyPassword = (password, stored) => {
1296
1150
  /* */
1297
1151
  /* */
1298
1152
  /* */
@@ -1304,6 +1158,29 @@ var UtilsVSCode;
1304
1158
  /* */
1305
1159
  /* */
1306
1160
  /* */
1161
+ return (void 0);
1162
+ };
1163
+ //#endregion
1164
+ // Example
1165
+ // (async () => {
1166
+ // const hash = await hashPassword('super-secret');
1167
+ // console.log('stored:', hash);
1168
+ // const ok = await verifyPassword('super-secret', hash);
1169
+ // console.log('valid?', ok);
1170
+ // })();
1171
+ })(UtilsPasswords || (UtilsPasswords = {}));
1172
+ //#endregion
1173
+ //#region utils docker
1174
+ var UtilsDocker;
1175
+ (function (UtilsDocker) {
1176
+ //#region utils docker / constants
1177
+ const DOCKER_TAON_PROJECT_LABEL_KEY = 'com.docker.compose.taon.project'; // change to your app name
1178
+ const DOCKER_TAON_PROJECT_LABEL_VALUE = 'true'; // change to your app name
1179
+ UtilsDocker.DOCKER_LABEL_KEY = 'com.docker.compose.project'; // change to your app name
1180
+ UtilsDocker.DOCKER_TAON_PROJECT_LABEL = `${DOCKER_TAON_PROJECT_LABEL_KEY}=${DOCKER_TAON_PROJECT_LABEL_VALUE}`;
1181
+ //#endregion
1182
+ //#region utils docker / clean images by docker label
1183
+ UtilsDocker.cleanImagesAndContainersByDockerLabel = async (labelKey, labelValue) => {
1307
1184
  /* */
1308
1185
  /* */
1309
1186
  /* */
@@ -1349,84 +1226,28 @@ var UtilsVSCode;
1349
1226
  return (void 0);
1350
1227
  };
1351
1228
  //#endregion
1352
- })(UtilsVSCode || (UtilsVSCode = {}));
1353
- //#endregion
1354
- //#region utils zip browser
1355
- var UtilsZipBrowser;
1356
- (function (UtilsZipBrowser) {
1357
- // <input type="file" id="folderInput" webkitdirectory />
1358
- // ts
1359
- // Copy
1360
- // Edit
1361
- // document.getElementById('folderInput').addEventListener('change', async (e) => {
1362
- // const input = e.target as HTMLInputElement;
1363
- // if (input.files) {
1364
- // const zipBlob = await zipDirBrowser(input.files);
1365
- // // Save the zip using FileSaver.js or URL.createObjectURL
1366
- // const url = URL.createObjectURL(zipBlob);
1367
- // const a = document.createElement('a');
1368
- // a.href = url;
1369
- // a.download = 'folder.zip';
1370
- // a.click();
1371
- // URL.revokeObjectURL(url);
1372
- // }
1373
- // });
1374
- // import JSZip from 'jszip';
1375
- // <input type="file" id="zipInput" />
1376
- // ts
1377
- // Copy
1378
- // Edit
1379
- // document.getElementById('zipInput').addEventListener('change', async (e) => {
1380
- // const input = e.target as HTMLInputElement;
1381
- // if (input.files?.[0]) {
1382
- // const entries = await unzipArchiveBrowser(input.files[0]);
1383
- // for (const [name, blob] of entries) {
1384
- // console.log(`Extracted file: ${name}`, blob);
1385
- // }
1386
- // }
1387
- // });
1388
- UtilsZipBrowser.zipDirBrowser = async (fileList) => {
1389
- // const zip = new JSZip();
1390
- // for (const file of Array.from(fileList)) {
1391
- // const relativePath = (file as any).webkitRelativePath || file.name;
1392
- // zip.file(relativePath, file);
1393
- // }
1394
- // return zip.generateAsync({ type: 'blob' });
1395
- return void 0;
1396
- };
1397
- UtilsZipBrowser.unzipArchiveBrowser = async (zipBlob) => {
1398
- // const zip = await JSZip.loadAsync(zipBlob);
1399
- // const files = new Map<string, Blob>();
1400
- // for (const [filePath, fileObj] of Object.entries(zip.files)) {
1401
- // if (!fileObj.dir) {
1402
- // const content = await fileObj.async('blob');
1403
- // files.set(filePath, content);
1404
- // }
1405
- // }
1406
- // return files;
1407
- return void 0;
1229
+ //#region utils docker / get docker compose up/down command
1230
+ /**
1231
+ * @returns cmd + args array
1232
+ * you can use with child_process.spawn
1233
+ * const [cmd, ...args] = getDockerComposeActionCommand('up');
1234
+ * child.spawn(cmd, args, { ... });
1235
+ *
1236
+ * @param action 'up' | 'down'
1237
+ */
1238
+ UtilsDocker.getDockerComposeActionCommand = (action, options) => {
1239
+ options = options || {};
1240
+ options.skipBuild = !!options?.skipBuild;
1241
+ const composeFileName = options?.composeFileName || 'docker-compose.yml';
1242
+ return ['docker', 'compose', '-f', composeFileName].concat(action === 'up'
1243
+ ? options.skipBuild
1244
+ ? ['up']
1245
+ : ['up', '--build']
1246
+ : ['down']);
1408
1247
  };
1409
- })(UtilsZipBrowser || (UtilsZipBrowser = {}));
1410
- //#endregion
1411
- //#region utils zip node
1412
- var UtilsZip;
1413
- (function (UtilsZip) {
1414
- //#region split zip file
1415
- UtilsZip.splitFile7Zip = async (inputPath, partSizeMB = 99) => {
1416
- /* */
1417
- /* */
1418
- /* */
1419
- /* */
1420
- /* */
1421
- /* */
1422
- /* */
1423
- /* */
1424
- /* */
1425
- /* */
1426
- /* */
1427
- /* */
1428
- /* */
1429
- /* */
1248
+ //#endregion
1249
+ //#region utils docker / get docker compose up/down child process
1250
+ UtilsDocker.getDockerComposeActionChildProcess = (action, options) => {
1430
1251
  /* */
1431
1252
  /* */
1432
1253
  /* */
@@ -1454,6 +1275,11 @@ var UtilsZip;
1454
1275
  /* */
1455
1276
  /* */
1456
1277
  /* */
1278
+ return (void 0);
1279
+ };
1280
+ //#endregion
1281
+ //#region utils docker / remove all taon containers and images from docker
1282
+ UtilsDocker.removeAllTaonContainersAndImagesFromDocker = async () => {
1457
1283
  /* */
1458
1284
  /* */
1459
1285
  /* */
@@ -1461,26 +1287,12 @@ var UtilsZip;
1461
1287
  /* */
1462
1288
  return (void 0);
1463
1289
  };
1290
+ //#endregion
1291
+ //#region utils docker / link podman as docker if necessary
1464
1292
  /**
1465
- * Splits a file into smaller parts if its size exceeds the specified part size.
1466
- * @returns true if file was split, false if not needed
1293
+ * @TODO @REFACTOR use async stuff
1467
1294
  */
1468
- UtilsZip.splitFile = async (inputPath, partSizeMB = 99) => {
1469
- /* */
1470
- /* */
1471
- /* */
1472
- /* */
1473
- /* */
1474
- /* */
1475
- /* */
1476
- /* */
1477
- /* */
1478
- /* */
1479
- /* */
1480
- /* */
1481
- /* */
1482
- /* */
1483
- /* */
1295
+ UtilsDocker.linkPodmanAsDockerIfNecessary = async () => {
1484
1296
  /* */
1485
1297
  /* */
1486
1298
  /* */
@@ -1513,13 +1325,6 @@ var UtilsZip;
1513
1325
  /* */
1514
1326
  /* */
1515
1327
  /* */
1516
- return (void 0);
1517
- };
1518
- //#endregion
1519
- /**
1520
- * @returns absolute path to zip file
1521
- */
1522
- UtilsZip.zipDir = async (absPathToDir, options) => {
1523
1328
  /* */
1524
1329
  /* */
1525
1330
  /* */
@@ -1561,10 +1366,6 @@ var UtilsZip;
1561
1366
  /* */
1562
1367
  /* */
1563
1368
  /* */
1564
- return (void 0);
1565
- };
1566
- // Unzip: `/some/path/folder.zip` → `/some/path/folder`
1567
- UtilsZip.unzipArchive = async (absPathToZip) => {
1568
1369
  /* */
1569
1370
  /* */
1570
1371
  /* */
@@ -1597,30 +1398,25 @@ var UtilsZip;
1597
1398
  /* */
1598
1399
  return (void 0);
1599
1400
  };
1600
- })(UtilsZip || (UtilsZip = {}));
1601
- //#endregion
1602
- //#region utils worker
1603
- var UtilsTaonWorker;
1604
- (function (UtilsTaonWorker) {
1605
- UtilsTaonWorker.getUniqueForTask = (task, location) => {
1606
- if (!location) {
1607
- throw new Error('[UtilsTaonWorker.getUniqueForTask()] Location must be provided');
1608
- }
1609
- if (!task) {
1610
- throw new Error('[UtilsTaonWorker.getUniqueForTask()] Task must be provided');
1611
- }
1612
- location = crossPlatformPath(location);
1613
- return `task(${task?.trim()}) in ${location}`?.trim();
1614
- };
1615
- })(UtilsTaonWorker || (UtilsTaonWorker = {}));
1401
+ //#endregion
1402
+ })(UtilsDocker || (UtilsDocker = {}));
1616
1403
  //#endregion
1617
- //#region utils java
1618
- var UtilsJava;
1619
- (function (UtilsJava) {
1620
- //#region select jdk version
1621
- UtilsJava.selectJdkVersion = async () => {
1622
- /* */
1623
- /* */
1404
+ //#region utils file sync
1405
+ /**
1406
+ * ! TODO @IN_PROGRESS @LAST
1407
+ */
1408
+ var UtilsFileSync;
1409
+ (function (UtilsFileSync) {
1410
+ //#region constants
1411
+ // ───── SAFETY SETTINGS ─────────────────────────────
1412
+ // Minimum realistic photo/video size (in bytes) before we even try
1413
+ const MIN_PHOTO_SIZE = 50_000; // ~50 KB — anything smaller is probably placeholder
1414
+ const MIN_VIDEO_SIZE = 500_000; // ~500 KB
1415
+ // How long we wait after the file stops growing before processing
1416
+ const STABILIZATION_MS = 5000; // 5 seconds is bulletproof
1417
+ //#endregion
1418
+ //#region for folders
1419
+ UtilsFileSync.forFolders = async (folder) => {
1624
1420
  /* */
1625
1421
  /* */
1626
1422
  /* */
@@ -1723,6 +1519,11 @@ var UtilsJava;
1723
1519
  /* */
1724
1520
  /* */
1725
1521
  /* */
1522
+ return (void 0);
1523
+ };
1524
+ //#endregion
1525
+ //#region is hevc
1526
+ async function isHevc(file) {
1726
1527
  /* */
1727
1528
  /* */
1728
1529
  /* */
@@ -1733,6 +1534,11 @@ var UtilsJava;
1733
1534
  /* */
1734
1535
  /* */
1735
1536
  /* */
1537
+ return (void 0);
1538
+ }
1539
+ //#endregion
1540
+ //#region safe process
1541
+ const safeProcess = async (filePath, wacherData) => {
1736
1542
  /* */
1737
1543
  /* */
1738
1544
  /* */
@@ -1805,10 +1611,111 @@ var UtilsJava;
1805
1611
  /* */
1806
1612
  /* */
1807
1613
  /* */
1808
- return (void 0);
1809
- };
1810
- //#endregion
1811
- UtilsJava.detectJavaVersionMacOS = (javaHome) => {
1614
+ /* */
1615
+ /* */
1616
+ /* */
1617
+ /* */
1618
+ /* */
1619
+ /* */
1620
+ return (void 0);
1621
+ };
1622
+ //#endregion
1623
+ })(UtilsFileSync || (UtilsFileSync = {}));
1624
+ //#endregion
1625
+ //#region utils clipboard
1626
+ var UtilsClipboard;
1627
+ (function (UtilsClipboard) {
1628
+ UtilsClipboard.copyText = async (textToCopy) => {
1629
+ /* */
1630
+ /* */
1631
+ /* */
1632
+ /* */
1633
+ /* */
1634
+ /* */
1635
+ /* */
1636
+ //#region @browser
1637
+ if (typeof navigator !== 'undefined') {
1638
+ // Preferred modern API
1639
+ if (navigator.clipboard?.writeText) {
1640
+ await navigator.clipboard.writeText(textToCopy);
1641
+ return;
1642
+ }
1643
+ // Fallback (older browsers / restricted permissions)
1644
+ const textarea = document.createElement('textarea');
1645
+ textarea.value = textToCopy;
1646
+ textarea.style.position = 'fixed';
1647
+ textarea.style.opacity = '0';
1648
+ document.body.appendChild(textarea);
1649
+ textarea.focus();
1650
+ textarea.select();
1651
+ try {
1652
+ document.execCommand('copy');
1653
+ }
1654
+ finally {
1655
+ document.body.removeChild(textarea);
1656
+ }
1657
+ }
1658
+ //#endregion
1659
+ };
1660
+ UtilsClipboard.pasteText = async () => {
1661
+ /* */
1662
+ /* */
1663
+ /* */
1664
+ /* */
1665
+ /* */
1666
+ /* */
1667
+ /* */
1668
+ //#region @browser
1669
+ if (typeof navigator !== 'undefined') {
1670
+ // Preferred modern API
1671
+ if (navigator.clipboard?.readText) {
1672
+ return await navigator.clipboard.readText();
1673
+ }
1674
+ // Fallback (best-effort)
1675
+ const textarea = document.createElement('textarea');
1676
+ textarea.style.position = 'fixed';
1677
+ textarea.style.opacity = '0';
1678
+ document.body.appendChild(textarea);
1679
+ textarea.focus();
1680
+ try {
1681
+ document.execCommand('paste');
1682
+ return textarea.value;
1683
+ }
1684
+ finally {
1685
+ document.body.removeChild(textarea);
1686
+ }
1687
+ }
1688
+ //#endregion
1689
+ return '';
1690
+ };
1691
+ })(UtilsClipboard || (UtilsClipboard = {}));
1692
+ //#endregion
1693
+ //#region utils line count
1694
+ var UtilsLineCount;
1695
+ (function (UtilsLineCount) {
1696
+ //#region utils line count / constatns
1697
+ const skip = [
1698
+ 'node_modules',
1699
+ '.',
1700
+ 'tmp-',
1701
+ 'environments',
1702
+ 'dist',
1703
+ 'docs',
1704
+ 'bundle',
1705
+ 'browser',
1706
+ ];
1707
+ const emptyTotal = {
1708
+ source: 0,
1709
+ comment: 0,
1710
+ single: 0,
1711
+ block: 0,
1712
+ empty: 0,
1713
+ total: 0,
1714
+ };
1715
+ //#endregion
1716
+ //#region utils line count / walk
1717
+ const walk = (folder, total, extensions) => {
1718
+ /* */
1812
1719
  /* */
1813
1720
  /* */
1814
1721
  /* */
@@ -1834,8 +1741,9 @@ var UtilsJava;
1834
1741
  /* */
1835
1742
  return (void 0);
1836
1743
  };
1837
- //#region update java home path
1838
- UtilsJava.updateJavaHomePath = (selectedPath) => {
1744
+ //#endregion
1745
+ //#region utils line count / for porject
1746
+ UtilsLineCount.forPorject = (project, opt) => {
1839
1747
  /* */
1840
1748
  /* */
1841
1749
  /* */
@@ -1873,11 +1781,6 @@ var UtilsJava;
1873
1781
  /* */
1874
1782
  /* */
1875
1783
  /* */
1876
- return (void 0);
1877
- };
1878
- //#endregion
1879
- //#region api methods / selectTomcatVersion
1880
- UtilsJava.selectTomcatVersion = async () => {
1881
1784
  /* */
1882
1785
  /* */
1883
1786
  /* */
@@ -1903,12 +1806,92 @@ var UtilsJava;
1903
1806
  /* */
1904
1807
  /* */
1905
1808
  /* */
1809
+ /* */
1810
+ /* */
1811
+ return (void 0);
1812
+ };
1813
+ //#endregion
1814
+ })(UtilsLineCount || (UtilsLineCount = {}));
1815
+ //#endregion
1816
+
1817
+ //#endregion
1818
+ //#region utils vscode
1819
+ var UtilsVSCode;
1820
+ (function (UtilsVSCode) {
1821
+ //#region calculate contrast hex color
1822
+ UtilsVSCode.calculateContrastingHexColor = (hex) => {
1823
+ // Normalize shorthand format like "#abc" → "#aabbcc"
1824
+ if (hex.length === 4) {
1825
+ hex =
1826
+ '#' +
1827
+ hex
1828
+ .slice(1)
1829
+ .split('')
1830
+ .map(ch => ch + ch)
1831
+ .join('');
1832
+ }
1833
+ const r = parseInt(hex.slice(1, 3), 16);
1834
+ const g = parseInt(hex.slice(3, 5), 16);
1835
+ const b = parseInt(hex.slice(5, 7), 16);
1836
+ // YIQ contrast formula
1837
+ const yiq = (r * 299 + g * 587 + b * 114) / 1000;
1838
+ return yiq >= 128 ? '#000000' : '#ffffff';
1839
+ };
1840
+ //#endregion
1841
+ //#region Convert HSL to HEX if you need HEX output
1842
+ const hslToHex = (hsl) => {
1843
+ const [_, hStr, sStr, lStr] = hsl.match(/hsl\((\d+), (\d+)%?, (\d+)%?\)/);
1844
+ let h = parseInt(hStr) / 360;
1845
+ let s = parseInt(sStr) / 100;
1846
+ let l = parseInt(lStr) / 100;
1847
+ const hue2rgb = (p, q, t) => {
1848
+ if (t < 0)
1849
+ t += 1;
1850
+ if (t > 1)
1851
+ t -= 1;
1852
+ if (t < 1 / 6)
1853
+ return p + (q - p) * 6 * t;
1854
+ if (t < 1 / 2)
1855
+ return q;
1856
+ if (t < 2 / 3)
1857
+ return p + (q - p) * (2 / 3 - t) * 6;
1858
+ return p;
1859
+ };
1860
+ let r, g, b;
1861
+ if (s === 0) {
1862
+ r = g = b = l; // achromatic
1863
+ }
1864
+ else {
1865
+ const q = l < 0.5 ? l * (1 + s) : l + s - l * s;
1866
+ const p = 2 * l - q;
1867
+ r = hue2rgb(p, q, h + 1 / 3);
1868
+ g = hue2rgb(p, q, h);
1869
+ b = hue2rgb(p, q, h - 1 / 3);
1870
+ }
1871
+ const toHex = (x) => {
1872
+ const hex = Math.round(x * 255).toString(16);
1873
+ return hex.length === 1 ? '0' + hex : hex;
1874
+ };
1875
+ return `#${toHex(r)}${toHex(g)}${toHex(b)}`;
1876
+ };
1877
+ UtilsVSCode.generateFancyColor = () => {
1878
+ const h = Math.floor(Math.random() * 360); // full hue range
1879
+ const s = Math.floor(40 + Math.random() * 30); // 40–70% saturation
1880
+ const l = Math.floor(35 + Math.random() * 25); // 35–60% lightness
1881
+ return hslToHex(`hsl(${h}, ${s}%, ${l}%)`);
1882
+ };
1883
+ //#endregion
1884
+ UtilsVSCode.vscodeImport = () => {
1906
1885
  /* */
1907
1886
  /* */
1908
1887
  /* */
1909
1888
  /* */
1910
1889
  /* */
1911
1890
  /* */
1891
+ return (void 0);
1892
+ };
1893
+ //#region utils os / open folder in vscode
1894
+ UtilsVSCode.openFolder = async (folderAbsPath, editor) => {
1912
1895
  /* */
1913
1896
  /* */
1914
1897
  /* */
@@ -1927,6 +1910,25 @@ var UtilsJava;
1927
1910
  /* */
1928
1911
  /* */
1929
1912
  /* */
1913
+ /* */
1914
+ /* */
1915
+ /* */
1916
+ /* */
1917
+ /* */
1918
+ /* */
1919
+ /* */
1920
+ /* */
1921
+ /* */
1922
+ /* */
1923
+ /* */
1924
+ /* */
1925
+ /* */
1926
+ /* */
1927
+ return (void 0);
1928
+ };
1929
+ //#endregion
1930
+ //#region utils os / open folder in vscode
1931
+ UtilsVSCode.openFile = async (fileAbsPath, options) => {
1930
1932
  /* */
1931
1933
  /* */
1932
1934
  /* */
@@ -1967,8 +1969,10 @@ var UtilsJava;
1967
1969
  return (void 0);
1968
1970
  };
1969
1971
  //#endregion
1970
- //#region update tomcat home path
1971
- UtilsJava.updateTomcatHomePath = (selectedPath) => {
1972
+ //#region regeberate vscode setting
1973
+ UtilsVSCode.regenerateVsCodeSettingsColors = (cwd, overideBottomColor) => {
1974
+ /* */
1975
+ /* */
1972
1976
  /* */
1973
1977
  /* */
1974
1978
  /* */
@@ -1994,15 +1998,208 @@ var UtilsJava;
1994
1998
  /* */
1995
1999
  return (void 0);
1996
2000
  };
1997
- //#endregion
1998
- })(UtilsJava || (UtilsJava = {}));
1999
- //#endregion
2000
- //#region utils passwords
2001
- var UtilsPasswords;
2002
- (function (UtilsPasswords) {
2003
- //#region hash password
2004
- UtilsPasswords.hashPassword = (password) => {
2005
- /* */
2001
+ //#endregion
2002
+ //#region get extensions
2003
+ UtilsVSCode.commonRecommededExtensionsExtensions = () => {
2004
+ return [
2005
+ 'taon-dev.taon',
2006
+ 'EditorConfig.EditorConfig',
2007
+ 'IBM.output-colorizer',
2008
+ 'Mikael.Angular-BeastCode',
2009
+ // 'Angular.ng-template',
2010
+ 'sndst00m.vscode-native-svg-preview', // 'SimonSiefke.svg-preview',
2011
+ 'HansUXdev.bootstrap5-snippets', // 'Zaczero.bootstrap-v4-snippets', 'wcwhitehead.bootstrap-3-snippets', // very old
2012
+ 'alefragnani.Bookmarks',
2013
+ 'amodio.toggle-excluded-files',
2014
+ 'ctcuff.font-preview',
2015
+ 'dbaeumer.vscode-eslint',
2016
+ 'dnicolson.binary-plist',
2017
+ 'eamodio.gitlens', // very nice inline git blame
2018
+ 'esbenp.prettier-vscode',
2019
+ 'johnpapa.Angular2',
2020
+ 'marclipovsky.string-manipulation',
2021
+ 'thebearingedge.vscode-sql-lit', // SQL templates extensions
2022
+ 'keyshout.sqlite-db-viewer', // free version of qwtel.sqlite-viewer - no writes
2023
+ 'christian-kohler.path-intellisense', // asset pathes autocomplete
2024
+ 'redhat.vscode-xml',
2025
+ 'rogalmic.bash-debug',
2026
+ 'Gruntfuggly.todo-tree',
2027
+ 'saber2pr.file-git-history',
2028
+ 'unifiedjs.vscode-mdx',
2029
+ 'Malo.copy-json-path',
2030
+ 'aaron-bond.better-comments',
2031
+ 'mikestead.dotenv',
2032
+ 'humao.rest-client',
2033
+ 'hediet.vscode-drawio',
2034
+ 'tomoki1207.pdf',
2035
+ 'streetsidesoftware.code-spell-checker',
2036
+ 'Tyriar.sort-lines',
2037
+ 'DavidAnson.vscode-markdownlint',
2038
+ 'wmaurer.change-case',
2039
+ 'earshinov.permute-lines',
2040
+ 'xabikos.javascriptsnippets',
2041
+ // 'mechatroner.rainbow-csv',
2042
+ // 'wenfangdu.snippet-generator', snippet generator
2043
+ //#region to check
2044
+ // 'abumalick.vscode-nvm', // test this before
2045
+ // , // there is prettiers
2046
+ // 'alexdima.copy-relative-path', // already in taon
2047
+ // 'alexiv.vscode-angular2-files', // taon generator is better
2048
+ // , // no needed anymore (embeded in taon)
2049
+ // 'eg2.tslint',
2050
+ // 'henry-li.vscode-import-formatter', not neede - eslint does it
2051
+ // 'jack89ita.copy-filename', // in taon
2052
+ // 'momoko8443.library-version',
2053
+ // 'oven.bun-vscode', // errors in vscode cosole
2054
+ // 'qwtel.sqlite-viewer', // 80$ not free
2055
+ // , already in taon
2056
+ // 'taddison.gitlazy',
2057
+ // 'vespa-dev-works.jestrunit',
2058
+ // 'wmaurer.vscode-jumpy', // nice but I am not using it
2059
+ // 'usernamehw.errorlens', nice extension.. but to much input at once
2060
+ // 'pranaygp.vscode-css-peek', // high cpu usage
2061
+ // 'bengreenier.vscode-node-readme',
2062
+ // 'kisstkondoros.vscode-codemetrics', // TOO MUCH CPU USAGE
2063
+ // 'vscode-icons-team.vscode-icons',
2064
+ // TODO nesting is so nice.. but I nee to modify it for taon
2065
+ // 'antfu.file-nesting',
2066
+ // 'frigus02.vscode-sql-tagged-template-literals', TODO CHECK
2067
+ // 'frigus02.vscode-sql-tagged-template-literals-syntax-only', TODO CHECK
2068
+ // -------
2069
+ // 'mihelcic.colored-regions', TODO I need modified version for taon
2070
+ // 'shardulm94.trailing-spaces',
2071
+ // 'bierner.color-info', // nice to have color info in css/scss files
2072
+ // ---
2073
+ // 'skacekachna.win-opacity',
2074
+ // 'electrotype.windows-explorer-context-menu',
2075
+ // escape win path on paset TODO CHECK THIS
2076
+ // 'coalaura.win-path',
2077
+ // nice extension but not use for now in taon
2078
+ // csv thing
2079
+ //
2080
+ //#endregion
2081
+ ];
2082
+ };
2083
+ UtilsVSCode.codiumExtensions = () => {
2084
+ return [
2085
+ 'Alexanderius.language-hosts',
2086
+ 'jellydn.toggle-excluded-files', // for of 'amodio.toggle-excluded-files',
2087
+ ...UtilsVSCode.commonRecommededExtensionsExtensions(),
2088
+ ];
2089
+ };
2090
+ UtilsVSCode.codeExtensions = () => {
2091
+ // wenfangdu.faster-new new file folder for codium
2092
+ return Utils.uniqArray([
2093
+ ...UtilsVSCode.commonRecommededExtensionsExtensions(),
2094
+ 'tommasov.hosts',
2095
+ 'amodio.toggle-excluded-files',
2096
+ /* */
2097
+ /* */
2098
+ /* */
2099
+ /* */
2100
+ /* */
2101
+ /* */
2102
+ /* */
2103
+ /* */
2104
+ /* */
2105
+ /* */
2106
+ /* */
2107
+ /* */
2108
+ /* */
2109
+ ]).map(c => c.toLowerCase());
2110
+ };
2111
+ //#endregion
2112
+ UtilsVSCode.vscodeExtensions = (editor) => {
2113
+ editor = editor ? editor : UtilsOs.detectEditor();
2114
+ if (editor === 'code') {
2115
+ return UtilsVSCode.codeExtensions();
2116
+ }
2117
+ return UtilsVSCode.codiumExtensions();
2118
+ };
2119
+ //#region get deprecated extensions
2120
+ UtilsVSCode.getDeprecatedExtension = (editor) => {
2121
+ return [
2122
+ 'ms-azuretools.vscode-containers',
2123
+ 'ms-azuretools.vscode-docker',
2124
+ 'bibhasdn.unique-lines',
2125
+ 'ms-vscode-remote.remote-ssh',
2126
+ 'scrapecrow.html-escape',
2127
+ 'marinhobrandao.angular2tests', // snipperts for test
2128
+ 'cg-cnu.vscode-path-tools',
2129
+ 'chrisdias.vscode-opennewinstance',
2130
+ 'aeschli.vscode-css-formatter',
2131
+ 'rssowl.copy-relative-path-posix',
2132
+ 'ms-vscode-remote.remote-containers',
2133
+ 'ms-azuretools.vscode-docker',
2134
+ 'waderyan.gitblame',
2135
+ 'ryu1kn.partial-diff',
2136
+ 'nidu.copy-json-path',
2137
+ 'firsttris.vscode-jest-runner', // better for jest TODO include this for TAON
2138
+ 'franklinteixeira205.primeflex',
2139
+ 'stepanog.angular1-inline',
2140
+ 'shakram02.bash-beautify',
2141
+ 'ryanlaws.toggle-case',
2142
+ 'ritwickdey.create-file-folder',
2143
+ 'ms-vscode-remote.remote-wsl',
2144
+ 'kgrzywocz.wsl-path',
2145
+ 'imgildev.vscode-angular-generator',
2146
+ 'nemesv.copy-file-name',
2147
+ 'natqe.reload', // in taon
2148
+ 'ms-vscode.live-server', // not needed
2149
+ 'msjsdiag.debugger-for-chrome', // old
2150
+ 'mikebovenlander.formate', // prettier
2151
+ 'mrmlnc.vscode-json5', // prettier
2152
+ 'jack89ita.copy-filename', // in taon
2153
+ 'eg2.tslint', // old
2154
+ 'rssowl.copy-relative-path-posix', // in taon
2155
+ 'alexdima.copy-relative-path', // in taon
2156
+ 'ivangabriele.vscode-git-add-and-commit', // in taon
2157
+ 'alexiv.vscode-angular2-files', // in taon
2158
+ 'taddison.gitlazy', // in taon
2159
+ ];
2160
+ };
2161
+ //#endregion
2162
+ //#region strip version
2163
+ /**
2164
+ * This pattern finds a dash followed by at least one digit.
2165
+ * It removes everything from that dash to the end of the string.
2166
+ * Examples:
2167
+ * "name-of-extension-1.2.3" -> "name-of-extension"
2168
+ * "extension-0.9.5-win32-x64" -> "extension"
2169
+ */
2170
+ UtilsVSCode.stripVersion = (folderName) => {
2171
+ return folderName.replace(/(-\d+.*)$/, '');
2172
+ };
2173
+ //#endregion
2174
+ //#region install extensions
2175
+ UtilsVSCode.removeDeprecated = async (options) => {
2176
+ options = options || {};
2177
+ options.editor = UtilsOs.detectEditor();
2178
+ const deprecated = UtilsVSCode.getDeprecatedExtension(options.editor);
2179
+ // console.log({ deprecated });
2180
+ // HelpersTaon.pressKeyOrWait('Press any key to continue...');
2181
+ for (let index = 0; index < deprecated.length; index++) {
2182
+ const extname = deprecated[index];
2183
+ try {
2184
+ Helpers.taskStarted(`Uninstalling: ${extname}`);
2185
+ Helpers.run(`${options.editor} --uninstall-extension ${extname}`).sync();
2186
+ Helpers.taskDone(`Removed ${extname} done.`);
2187
+ await Utils.wait(1);
2188
+ }
2189
+ catch (error) {
2190
+ // console.error(error);
2191
+ Helpers.warn(`Not able to uninstall ${extname}`);
2192
+ // await UtilsTerminal.pressAnyKeyToContinueAsync({
2193
+ // message: 'Press any key to continue...',
2194
+ // });
2195
+ }
2196
+ }
2197
+ };
2198
+ UtilsVSCode.installAndRemoveDeprecatedExtensions = async (options) => {
2199
+ await UtilsVSCode.installExtensions(options);
2200
+ await UtilsVSCode.removeDeprecated(options);
2201
+ };
2202
+ UtilsVSCode.installExtensions = async (options) => {
2006
2203
  /* */
2007
2204
  /* */
2008
2205
  /* */
@@ -2011,11 +2208,6 @@ var UtilsPasswords;
2011
2208
  /* */
2012
2209
  /* */
2013
2210
  /* */
2014
- return (void 0);
2015
- };
2016
- //#endregion
2017
- //#region verify password
2018
- UtilsPasswords.verifyPassword = (password, stored) => {
2019
2211
  /* */
2020
2212
  /* */
2021
2213
  /* */
@@ -2027,29 +2219,6 @@ var UtilsPasswords;
2027
2219
  /* */
2028
2220
  /* */
2029
2221
  /* */
2030
- return (void 0);
2031
- };
2032
- //#endregion
2033
- // Example
2034
- // (async () => {
2035
- // const hash = await hashPassword('super-secret');
2036
- // console.log('stored:', hash);
2037
- // const ok = await verifyPassword('super-secret', hash);
2038
- // console.log('valid?', ok);
2039
- // })();
2040
- })(UtilsPasswords || (UtilsPasswords = {}));
2041
- //#endregion
2042
- //#region utils docker
2043
- var UtilsDocker;
2044
- (function (UtilsDocker) {
2045
- //#region utils docker / constants
2046
- const DOCKER_TAON_PROJECT_LABEL_KEY = 'com.docker.compose.taon.project'; // change to your app name
2047
- const DOCKER_TAON_PROJECT_LABEL_VALUE = 'true'; // change to your app name
2048
- UtilsDocker.DOCKER_LABEL_KEY = 'com.docker.compose.project'; // change to your app name
2049
- UtilsDocker.DOCKER_TAON_PROJECT_LABEL = `${DOCKER_TAON_PROJECT_LABEL_KEY}=${DOCKER_TAON_PROJECT_LABEL_VALUE}`;
2050
- //#endregion
2051
- //#region utils docker / clean images by docker label
2052
- UtilsDocker.cleanImagesAndContainersByDockerLabel = async (labelKey, labelValue) => {
2053
2222
  /* */
2054
2223
  /* */
2055
2224
  /* */
@@ -2095,28 +2264,11 @@ var UtilsDocker;
2095
2264
  return (void 0);
2096
2265
  };
2097
2266
  //#endregion
2098
- //#region utils docker / get docker compose up/down command
2267
+ //#region installed extensions
2099
2268
  /**
2100
- * @returns cmd + args array
2101
- * you can use with child_process.spawn
2102
- * const [cmd, ...args] = getDockerComposeActionCommand('up');
2103
- * child.spawn(cmd, args, { ... });
2104
- *
2105
- * @param action 'up' | 'down'
2269
+ * @deprecated
2106
2270
  */
2107
- UtilsDocker.getDockerComposeActionCommand = (action, options) => {
2108
- options = options || {};
2109
- options.skipBuild = !!options?.skipBuild;
2110
- const composeFileName = options?.composeFileName || 'docker-compose.yml';
2111
- return ['docker', 'compose', '-f', composeFileName].concat(action === 'up'
2112
- ? options.skipBuild
2113
- ? ['up']
2114
- : ['up', '--build']
2115
- : ['down']);
2116
- };
2117
- //#endregion
2118
- //#region utils docker / get docker compose up/down child process
2119
- UtilsDocker.getDockerComposeActionChildProcess = (action, options) => {
2271
+ UtilsVSCode.installedExtensions = () => {
2120
2272
  /* */
2121
2273
  /* */
2122
2274
  /* */
@@ -2147,21 +2299,21 @@ var UtilsDocker;
2147
2299
  return (void 0);
2148
2300
  };
2149
2301
  //#endregion
2150
- //#region utils docker / remove all taon containers and images from docker
2151
- UtilsDocker.removeAllTaonContainersAndImagesFromDocker = async () => {
2302
+ //#region apply proper global settings
2303
+ UtilsVSCode.applyProperGlobalSettings = async (options) => {
2304
+ /* */
2305
+ /* */
2306
+ /* */
2307
+ /* */
2308
+ /* */
2309
+ /* */
2310
+ /* */
2311
+ /* */
2152
2312
  /* */
2153
2313
  /* */
2154
2314
  /* */
2155
2315
  /* */
2156
2316
  /* */
2157
- return (void 0);
2158
- };
2159
- //#endregion
2160
- //#region utils docker / link podman as docker if necessary
2161
- /**
2162
- * @TODO @REFACTOR use async stuff
2163
- */
2164
- UtilsDocker.linkPodmanAsDockerIfNecessary = async () => {
2165
2317
  /* */
2166
2318
  /* */
2167
2319
  /* */
@@ -2265,27 +2417,6 @@ var UtilsDocker;
2265
2417
  /* */
2266
2418
  /* */
2267
2419
  /* */
2268
- return (void 0);
2269
- };
2270
- //#endregion
2271
- })(UtilsDocker || (UtilsDocker = {}));
2272
- //#endregion
2273
- //#region utils file sync
2274
- /**
2275
- * ! TODO @IN_PROGRESS @LAST
2276
- */
2277
- var UtilsFileSync;
2278
- (function (UtilsFileSync) {
2279
- //#region constants
2280
- // ───── SAFETY SETTINGS ─────────────────────────────
2281
- // Minimum realistic photo/video size (in bytes) before we even try
2282
- const MIN_PHOTO_SIZE = 50_000; // ~50 KB — anything smaller is probably placeholder
2283
- const MIN_VIDEO_SIZE = 500_000; // ~500 KB
2284
- // How long we wait after the file stops growing before processing
2285
- const STABILIZATION_MS = 5000; // 5 seconds is bulletproof
2286
- //#endregion
2287
- //#region for folders
2288
- UtilsFileSync.forFolders = async (folder) => {
2289
2420
  /* */
2290
2421
  /* */
2291
2422
  /* */
@@ -2388,11 +2519,6 @@ var UtilsFileSync;
2388
2519
  /* */
2389
2520
  /* */
2390
2521
  /* */
2391
- return (void 0);
2392
- };
2393
- //#endregion
2394
- //#region is hevc
2395
- async function isHevc(file) {
2396
2522
  /* */
2397
2523
  /* */
2398
2524
  /* */
@@ -2403,11 +2529,6 @@ var UtilsFileSync;
2403
2529
  /* */
2404
2530
  /* */
2405
2531
  /* */
2406
- return (void 0);
2407
- }
2408
- //#endregion
2409
- //#region safe process
2410
- const safeProcess = async (filePath, wacherData) => {
2411
2532
  /* */
2412
2533
  /* */
2413
2534
  /* */
@@ -2486,15 +2607,6 @@ var UtilsFileSync;
2486
2607
  /* */
2487
2608
  /* */
2488
2609
  /* */
2489
- return (void 0);
2490
- };
2491
- //#endregion
2492
- })(UtilsFileSync || (UtilsFileSync = {}));
2493
- //#endregion
2494
- //#region utils clipboard
2495
- var UtilsClipboard;
2496
- (function (UtilsClipboard) {
2497
- UtilsClipboard.copyText = async (textToCopy) => {
2498
2610
  /* */
2499
2611
  /* */
2500
2612
  /* */
@@ -2502,31 +2614,6 @@ var UtilsClipboard;
2502
2614
  /* */
2503
2615
  /* */
2504
2616
  /* */
2505
- //#region @browser
2506
- if (typeof navigator !== 'undefined') {
2507
- // Preferred modern API
2508
- if (navigator.clipboard?.writeText) {
2509
- await navigator.clipboard.writeText(textToCopy);
2510
- return;
2511
- }
2512
- // Fallback (older browsers / restricted permissions)
2513
- const textarea = document.createElement('textarea');
2514
- textarea.value = textToCopy;
2515
- textarea.style.position = 'fixed';
2516
- textarea.style.opacity = '0';
2517
- document.body.appendChild(textarea);
2518
- textarea.focus();
2519
- textarea.select();
2520
- try {
2521
- document.execCommand('copy');
2522
- }
2523
- finally {
2524
- document.body.removeChild(textarea);
2525
- }
2526
- }
2527
- //#endregion
2528
- };
2529
- UtilsClipboard.pasteText = async () => {
2530
2617
  /* */
2531
2618
  /* */
2532
2619
  /* */
@@ -2534,56 +2621,6 @@ var UtilsClipboard;
2534
2621
  /* */
2535
2622
  /* */
2536
2623
  /* */
2537
- //#region @browser
2538
- if (typeof navigator !== 'undefined') {
2539
- // Preferred modern API
2540
- if (navigator.clipboard?.readText) {
2541
- return await navigator.clipboard.readText();
2542
- }
2543
- // Fallback (best-effort)
2544
- const textarea = document.createElement('textarea');
2545
- textarea.style.position = 'fixed';
2546
- textarea.style.opacity = '0';
2547
- document.body.appendChild(textarea);
2548
- textarea.focus();
2549
- try {
2550
- document.execCommand('paste');
2551
- return textarea.value;
2552
- }
2553
- finally {
2554
- document.body.removeChild(textarea);
2555
- }
2556
- }
2557
- //#endregion
2558
- return '';
2559
- };
2560
- })(UtilsClipboard || (UtilsClipboard = {}));
2561
- //#endregion
2562
- //#region utils line count
2563
- var UtilsLineCount;
2564
- (function (UtilsLineCount) {
2565
- //#region utils line count / constatns
2566
- const skip = [
2567
- 'node_modules',
2568
- '.',
2569
- 'tmp-',
2570
- 'environments',
2571
- 'dist',
2572
- 'docs',
2573
- 'bundle',
2574
- 'browser',
2575
- ];
2576
- const emptyTotal = {
2577
- source: 0,
2578
- comment: 0,
2579
- single: 0,
2580
- block: 0,
2581
- empty: 0,
2582
- total: 0,
2583
- };
2584
- //#endregion
2585
- //#region utils line count / walk
2586
- const walk = (folder, total, extensions) => {
2587
2624
  /* */
2588
2625
  /* */
2589
2626
  /* */
@@ -2608,11 +2645,6 @@ var UtilsLineCount;
2608
2645
  /* */
2609
2646
  /* */
2610
2647
  /* */
2611
- return (void 0);
2612
- };
2613
- //#endregion
2614
- //#region utils line count / for porject
2615
- UtilsLineCount.forPorject = (project, opt) => {
2616
2648
  /* */
2617
2649
  /* */
2618
2650
  /* */
@@ -2680,7 +2712,7 @@ var UtilsLineCount;
2680
2712
  return (void 0);
2681
2713
  };
2682
2714
  //#endregion
2683
- })(UtilsLineCount || (UtilsLineCount = {}));
2715
+ })(UtilsVSCode || (UtilsVSCode = {}));
2684
2716
  //#endregion
2685
2717
 
2686
2718
  /* */
@@ -6113,6 +6145,40 @@ var HelpersTaon;
6113
6145
  let git;
6114
6146
  (function (git) {
6115
6147
  const tempGitCommitMsgFile = 'tmp-git-commit-name.txt';
6148
+ git.addOriginIfNotExists = async (cwd, origin, originUrl) => {
6149
+ /* */
6150
+ /* */
6151
+ /* */
6152
+ /* */
6153
+ /* */
6154
+ /* */
6155
+ /* */
6156
+ /* */
6157
+ /* */
6158
+ /* */
6159
+ /* */
6160
+ /* */
6161
+ /* */
6162
+ /* */
6163
+ /* */
6164
+ /* */
6165
+ /* */
6166
+ /* */
6167
+ /* */
6168
+ /* */
6169
+ /* */
6170
+ /* */
6171
+ /* */
6172
+ /* */
6173
+ /* */
6174
+ /* */
6175
+ /* */
6176
+ /* */
6177
+ /* */
6178
+ /* */
6179
+ /* */
6180
+ return (void 0);
6181
+ };
6116
6182
  git.tagAndPushToGitRepo = async (cwd, options) => {
6117
6183
  /* */
6118
6184
  /* */
@@ -6151,6 +6217,12 @@ var HelpersTaon;
6151
6217
  /* */
6152
6218
  /* */
6153
6219
  /* */
6220
+ /* */
6221
+ /* */
6222
+ /* */
6223
+ /* */
6224
+ /* */
6225
+ /* */
6154
6226
  return (void 0);
6155
6227
  };
6156
6228
  git.getAllTags = async (cwd) => {
@@ -9443,7 +9515,7 @@ const CURRENT_PACKAGE_TAON_VERSION = 'v21';
9443
9515
  /**
9444
9516
  * Autogenerated by current cli tool. Use *tnp release* to bump version.
9445
9517
  */
9446
- const CURRENT_PACKAGE_VERSION = '21.0.66';
9518
+ const CURRENT_PACKAGE_VERSION = '21.0.70';
9447
9519
  // THIS FILE IS GENERATED - DO NOT MODIFY
9448
9520
 
9449
9521
  //#endregion
@@ -13039,7 +13111,7 @@ class BaseProject {
13039
13111
  * publish project to npm
13040
13112
  */
13041
13113
  async publish(publishOptions) {
13042
- this.npmHelpers.publishToNpmRegistry();
13114
+ await this.npmHelpers.publishToNpmRegistry();
13043
13115
  }
13044
13116
  //#endregion
13045
13117
  //#region getters & methods / build
@@ -15260,9 +15332,6 @@ class BaseNpmHelpers extends BaseFeatureForProject {
15260
15332
  /* */
15261
15333
  /* */
15262
15334
  /* */
15263
- /* */
15264
- /* */
15265
- /* */
15266
15335
  return (void 0);
15267
15336
  }
15268
15337
  //#endregion
@@ -19920,6 +19989,9 @@ class BaseGlobalCommandLine extends BaseCommandLineFeature {
19920
19989
  async docsUp() {
19921
19990
  await this.docsUpdate();
19922
19991
  }
19992
+ async upDocs() {
19993
+ await this.docsUpdate();
19994
+ }
19923
19995
  //#endregion
19924
19996
  //#region commands / deep update
19925
19997
  async deepUpdate() {
@@ -24391,6 +24463,7 @@ function executeCommand(titleOfTask, registerName, commandToExecute, pOptions, i
24391
24463
  /* */
24392
24464
  /* */
24393
24465
  /* */
24466
+ /* */
24394
24467
  return (void 0);
24395
24468
  }
24396
24469