tnp-helpers 19.0.39 → 19.0.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/browser/README.md +24 -24
- package/browser/fesm2022/tnp-helpers.mjs +1 -1
- package/browser/fesm2022/tnp-helpers.mjs.map +1 -1
- package/browser/lib/build-info._auto-generated_.d.ts +1 -1
- package/browser/package.json +1 -1
- package/lib/base/classes/base-cli-worker/base-cli-worker.js +1 -1
- package/lib/base/classes/base-cli-worker/base-cli-worker.js.map +1 -1
- package/lib/base/classes/base-command-line-feature.backend.d.ts +3 -3
- package/lib/base/classes/base-command-line-feature.backend.js.map +1 -1
- package/lib/base/classes/base-global-command-line.backend.d.ts +1 -0
- package/lib/base/classes/base-global-command-line.backend.js +3 -0
- package/lib/base/classes/base-global-command-line.backend.js.map +1 -1
- package/lib/base/tcp-udp-ports/not-assignable-port.entity.js +2 -2
- package/lib/base/tcp-udp-ports/ports.entity.d.ts +1 -1
- package/lib/base/tcp-udp-ports/tcp-udp-ports.context.d.ts +2 -2
- package/lib/build-info._auto-generated_.d.ts +1 -1
- package/lib/build-info._auto-generated_.js +1 -1
- package/lib/helpers/for-browser/angular.helper.js +2 -2
- package/lib/helpers/helpers-numbers.js.map +1 -1
- package/lib/old/base-component.js +2 -2
- package/lib/old/base-formly-component.js +2 -2
- package/lib/old/dual-component-ctrl.js +2 -2
- package/lib/validators/validators-git.js.map +1 -1
- package/package.json +1 -1
- package/tmp-environment.json +33 -0
- package/websql/README.md +24 -24
- package/websql/fesm2022/tnp-helpers.mjs +1 -1
- package/websql/fesm2022/tnp-helpers.mjs.map +1 -1
- package/websql/lib/build-info._auto-generated_.d.ts +1 -1
- package/websql/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tnp-helpers.mjs","sources":["../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/validators/validators-git.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/validators/validators-network.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/validators/validators.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/helpers/for-browser/angular.helper.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/utils.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/helpers/helpers-array-obj.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/helpers/helpers-strings-regexes.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/helpers/helpers-strings.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/helpers/for-backend/helpers-process.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/helpers/for-backend/helpers-file-folders.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/helpers/helpers-numbers.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/helpers/for-browser/helpers-browser.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/helpers/helpers.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-db.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/config-database.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/project-database.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/tcp-udp-ports/ports.entity.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-cli-worker/base-cli-worker-terminal-ui.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-cli-worker/base-cli-worker.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-cli-worker/base-cli-worker-config.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-cli-worker/base-cli-worker-controller.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/tcp-udp-ports/ports.controller.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/migrations/1736198527297_init.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/migrations/1736199486472_addingNotAssignablePorts.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/migrations/1736454437350_addFreePorts.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/migrations/migrations_index._auto-generated_.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/migrations/index.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/tcp-udp-ports/tcp-udp-ports.context.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/tcp-udp-ports/tcp-upd-ports-terminal-ui.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/tcp-udp-ports/tcp-upd-ports.worker.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/build-info._auto-generated_.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-project-resolver.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-project.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-feature-for-project.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-library-build.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-json-file-reader.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-package-json.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-node-modules.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-bower-json.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-npm-helpers.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-linked-projects.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-git.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-vscode.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-release-process.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-compiler-for-project.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-debounce-compiler-for-project.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-quick-fixes.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/models.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-process-manager.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-command-line-feature.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/index.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/commit-data.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/core-project.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/linked-project.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/index.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/old/execute-command.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/old/models.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/index.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/tnp-helpers.ts"],"sourcesContent":["\nexport namespace ValidatorsGit {\n\n export function isValidRepoUrl(url: string) {\n const regex = /^([A-Za-z0-9]+@|http(|s)\\:\\/\\/)([A-Za-z0-9.]+(:\\d+)?)(?::|\\/)([\\d\\/\\w.-]+?)(\\.git)?$/;\n const res = regex.test(url);\n return res;\n }\n\n}\n","import { _ } from 'tnp-core/browser';\n\nexport namespace ValidatorsNetwork {\n export function isValidIp(ip: string) {\n if (!_.isString(ip)) {\n return false;\n }\n ip = ip.trim();\n if (ip === 'localhost') {\n return true;\n }\n return /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(ip)\n }\n}\n","import { ValidatorsGit } from \"./validators-git\";\nimport { ValidatorsNetwork } from \"./validators-network\";\n\nexport namespace Validators {\n export import git = ValidatorsGit;\n export import network = ValidatorsNetwork;\n}\n\n","//#region @browser\nimport { Observable, Subject } from \"rxjs\";\n\nconst componentContextSymbol = Symbol();\nconst componentsDestroy$Subjects = {};\n\n\nexport namespace HelpersAngular {\n\n export class SerializedSubject<T> {\n constructor(\n public id: string\n ) { }\n }\n\n\n function subjectId(destroySubject: Subject<any>): SerializedSubject<any> {\n const id = Math.random().toString(36).substring(2);\n if (!destroySubject[componentContextSymbol]) {\n destroySubject[componentContextSymbol] = new SerializedSubject(id);\n componentsDestroy$Subjects[id] = destroySubject;\n }\n return destroySubject[componentContextSymbol];\n }\n\n /**\n * if you are using this.. please call Helpers.ng.unsubscribe(this.$destroy) in ngOnDestroy();\n */\n export function serialize(destroy$: Subject<any>): SerializedSubject<any> {\n return subjectId(destroy$);\n }\n\n /**\n * if you are using this.. please call Helpers.ng.unsubscribe(this.$destroy) in ngOnDestroy();\n */\n export function deserialize(destroy$: SerializedSubject<any>): Subject<any> {\n if (destroy$?.id) {\n const realDestroySubject = componentsDestroy$Subjects[destroy$.id];\n return realDestroySubject;\n }\n return new Subject();\n }\n\n export function unsubscribe(destroy$: Subject<any>) {\n const destroySubject = subjectId(destroy$);\n if (destroySubject?.id) {\n delete componentsDestroy$Subjects[destroySubject.id];\n delete destroySubject[componentContextSymbol];\n }\n }\n\n\n\n /**\n get properties from scss file\n\n\n import styles from './tasks-ngrx-data.component.scss';\n\n export class ExampleComponent {\n sassFile = sassFile(styles);\n\n async ngOnInit() {\n this.tasksService.getAll();\n console.log(this.sassFile.stringValue('--max-container-size'))\n console.log(this.sassFile.numberValue('--max-container-size'))\n }\n }\n */\n export function sassFile(styles: string) {\n const lines = (styles.split('\\n'));\n return {\n stringValue: (name: string) => {\n for (let index = 0; index < lines.length; index++) {\n const l = lines[index];\n const [varName, value] = l.trim().split(':');\n if (varName === name) {\n return value.replace(';', '');\n }\n }\n },\n numberValue: (name: string): number => {\n for (let index = 0; index < lines.length; index++) {\n const l = lines[index];\n const [varName, value] = l.trim().split(':');\n if (varName === name) {\n return Number(value.replace('px', '').replace(';', ''));\n }\n }\n }\n }\n }\n}\n\n//#endregion\n","//#region imports\nimport { config } from 'tnp-config/browser';\nimport {\n child_process,\n crossPlatformPath,\n fse,\n path,\n UtilsOs,\n} from 'tnp-core/browser';\nimport { _, CoreModels, Utils } from 'tnp-core/browser';\nimport {\n createPrinter,\n createSourceFile,\n factory,\n getLeadingCommentRanges,\n isClassDeclaration,\n isSourceFile,\n NodeArray,\n ScriptKind,\n ScriptTarget,\n SourceFile,\n Statement,\n transform,\n TransformationContext,\n visitEachChild,\n Node,\n isFunctionDeclaration,\n isVariableStatement,\n isIdentifier,\n NodeFlags,\n isEnumDeclaration,\n isTypeAliasDeclaration,\n isInterfaceDeclaration,\n isModuleDeclaration,\n isExportAssignment,\n forEachChild,\n Declaration,\n getCombinedModifierFlags,\n ModifierFlags,\n SyntaxKind,\n isVariableDeclaration,\n isCallExpression,\n isPropertyAccessExpression,\n isObjectLiteralExpression,\n isPropertyAssignment,\n isStringLiteral,\n canHaveDecorators,\n getDecorators,\n visitNode,\n isExportDeclaration,\n isImportDeclaration,\n Expression,\n isNamedImports,\n isNamedExports,\n NewLineKind,\n TransformerFactory,\n isDecorator,\n isEmptyStatement,\n isExpressionStatement,\n isPropertyDeclaration,\n isMethodDeclaration,\n} from 'typescript';\nimport type * as ts from 'typescript';\nimport type * as vscodeType from 'vscode';\n\nimport { Helpers } from './index';\n//#endregion\n\n//#region utils npm\nexport namespace UtilsNpm {\n //#region is special version\n export const isSpecialVersion = (version: string) => {\n return CoreModels.NpmSpecialVersions.includes(version);\n };\n //#endregion\n\n //#region clear version\n export const clearVersion = (\n version: string,\n options: {\n removePrefixes?: boolean;\n /**\n * Remove alpha, beta, rc, latest, next etc.\n */\n removeSuffix?: boolean;\n },\n ) => {\n const { removePrefixes, removeSuffix } = options || {};\n\n if (!version || isSpecialVersion(version)) {\n return version;\n }\n\n version = (version || '')\n .trim()\n .replace(new RegExp(Utils.escapeStringForRegEx('undefined'), 'g'), '0');\n\n if (removePrefixes) {\n version = version.replace('^', '').replace('~', '');\n }\n let [major, minor, patch, alphaOrBetaOrRc] = version.split('.');\n if (removeSuffix) {\n alphaOrBetaOrRc = '';\n }\n return fixMajorVerNumber(\n `${major}.${minor}.${patch}${\n alphaOrBetaOrRc ? '.' + alphaOrBetaOrRc : ''\n }`,\n );\n };\n //#endregion\n\n //#region fix major version number\n export const fixMajorVerNumber = (version: string) => {\n if (!version || isSpecialVersion(version)) {\n return version;\n }\n version = (version || '')\n .trim()\n .replace(new RegExp(Utils.escapeStringForRegEx('undefined'), 'g'), '0');\n const splited = version.split('.');\n let [major, minor, patch, alphaOrBetaOrRc] = splited;\n if (splited.length === 1) {\n minor = '0';\n patch = '0';\n } else if (splited.length === 2) {\n patch = '0';\n }\n return `${major}.${minor}.${patch}${\n alphaOrBetaOrRc ? '.' + alphaOrBetaOrRc : ''\n }`;\n };\n //#endregion\n}\n//#endregion\n\n//#region utils typescript\nexport namespace UtilsTypescript {\n //#region remove region by name\n /**\n * Remove TypeScript region blocks by their name, including nested regions.\n *\n * @param sourceCode - The TypeScript source code as a string.\n * @param regionName - The name of the region to remove.\n * @returns Modified TypeScript code without the specified regions.\n */\n export const removeRegionByName = (\n sourceCode: string,\n regionName: string,\n ): string => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region extract exports from a TypeScript file\n\n //#region helper function to check if a node is exported\n const isExported = (node: Node): boolean => {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region exports from file\n\n interface ExportInfo {\n type:\n | 'class'\n | 'function'\n | 'const'\n | 'let'\n | 'var'\n | 'enum'\n | 'type'\n | 'interface'\n | 'default'\n | 'module'\n | 'namespace';\n name: string;\n }\n\n /**\n * Function to extract exports from a TypeScript file\n */\n export const exportsFromFile = (filePath: string): ExportInfo[] => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n\n /**\n * Function to extract exports from a TypeScript file\n */\n export const exportsFromContent = (fileContent: string): ExportInfo[] => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#endregion\n\n //#region extract class names from ts file or source code\n\n export const extractDefaultClassNameFromString = (\n sourceCode: string,\n ): string | undefined => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n\n export const extractClassNameFromString = (sourceCode: string): string[] => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n\n export const extractClassNamesFromFile = (\n absoluteFilePath: string,\n ): string[] => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n\n export const extractDefaultClassNameFromFile = (absoluteFilePath: string) => {\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region format file(s) with prettier\n export const formatFile = (absPathToFile: string | string[]): void => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n\n export const formatAllFilesInsideFolder = (absPathToFolder: string): void => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region lint file(s) with eslint\n export const eslintFixFile = (absPathToFile: string | string[]): void => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n\n export const eslintFixAllFilesInsideFolder = (\n absPathToFolder: string | string[],\n ): void => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region extract Taon contexts from file\n export const getTaonContextFromContent = (fileContent: string): string[] => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n\n export const getTaonContextsNamesFromFile = (\n tsAbsFilePath: string,\n ): string[] => {\n/* */\n/* */\n return (void 0);\n };\n\n //#endregion\n\n //#region extract selectors from Angular components class files\n export const extractAngularComponentSelectors = (\n fileAbsPath: string,\n ): { className: string; selector: string }[] => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region wrap one line with comment\n export const wrapWithComment = (\n oneLineComment: string,\n absDestFilePath: string,\n ) => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region ser or add exported variable with AST\n // Helper to check if a node has 'export' in its modifiers\n // const hasExportModifier = (\n // modifiers: ts.NodeArray<ts.Modifier> | undefined,\n // ) => {\n // return (\n // !!modifiers && modifiers.some(m => m.kind === SyntaxKind.ExportKeyword)\n // );\n // };\n\n /**\n * Attempts to set or add an exported const with given name and value.\n */\n export const setValueToVariableInTsFile = (\n tsAbsFilePath: string,\n variableName: string,\n valueOfVariable: any,\n options?: {\n skipAddIfNotExists?: boolean;\n useRawStringValue?: boolean;\n },\n ): void => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n\n //#endregion\n\n //#region recognize imports from file\n\n //#region helpers / ts import export class\n export class TsImportExport {\n /**\n * for external modification\n */\n embeddedPathToFileResult: string;\n /**\n * for external modification\n */\n packageName: string;\n /**\n * for external modification\n */\n isIsomorphic?: boolean;\n\n //#region generated/readonly files\n readonly type: 'export' | 'import' | 'async-import' | 'require';\n /**\n * ORIGNAL\n * Name of the file that is being imported/exported\n * with parenthesis included , example\n * 'my-file' or \"my-file\" or `my-file`\n */\n readonly embeddedPathToFile: string;\n /**\n * same as cleanEmbeddedPathToFile but without quotes (parenthesis), example:\n * my-file or my-file or my-file\n */\n readonly cleanEmbeddedPathToFile: string;\n readonly startRow: number;\n readonly startCol: number;\n readonly endRow: number;\n readonly endCol: number;\n readonly parenthesisType: 'single' | 'double' | 'tics';\n readonly importElements: string[] = [];\n //#endregion\n\n //#region constructor\n constructor(\n type: 'export' | 'import' | 'async-import' | 'require',\n embeddedPathToFile: string,\n start: ts.LineAndCharacter,\n end: ts.LineAndCharacter,\n parenthesisType: 'single' | 'double' | 'tics',\n importElements: string[] = [],\n ) {\n this.type = type;\n this.isIsomorphic = false;\n this.embeddedPathToFile = embeddedPathToFile;\n this.cleanEmbeddedPathToFile =\n this.removeStartEndQuotes(embeddedPathToFile);\n this.embeddedPathToFileResult = embeddedPathToFile;\n this.startRow = start.line + 1; // TypeScript lines are zero-based\n this.startCol = start.character + 1;\n this.endRow = end.line + 1;\n this.endCol = end.character + 1;\n this.parenthesisType = parenthesisType;\n this.importElements = importElements;\n }\n //#endregion\n\n //#region remove quotes\n private removeStartEndQuotes(str: string): string {\n return str.replace(/^['\"`]/, '').replace(/['\"`]$/, '');\n }\n //#endregion\n\n //#region get string part\n /**\n * it will extract part of the file content\n * that is between startRow, startCol and endRow, endCol\n * and contains import/export/require statement\n */\n public getStringPartFrom(wholeContentOfFile: string): string {\n const lines = wholeContentOfFile.split('\\n');\n\n // Convert 1-based row indices to 0-based\n const startRowIndex = this.startRow - 1;\n const endRowIndex = this.endRow - 1;\n\n // Ensure indices are within bounds\n if (startRowIndex >= lines.length || endRowIndex >= lines.length) {\n throw new Error('Row index out of bounds.');\n }\n\n let extractedLines: string[] = [];\n\n for (let i = startRowIndex; i <= endRowIndex; i++) {\n let line = lines[i];\n\n if (i === startRowIndex && i === endRowIndex) {\n // Same row: extract from startCol to endCol\n extractedLines.push(line.substring(this.startCol - 1, this.endCol));\n } else if (i === startRowIndex) {\n // First row: extract from startCol to end\n extractedLines.push(line.substring(this.startCol - 1));\n } else if (i === endRowIndex) {\n // Last row: extract from beginning to endCol\n extractedLines.push(line.substring(0, this.endCol));\n } else {\n // Whole row in between\n extractedLines.push(line);\n }\n }\n\n return extractedLines.join('\\n');\n }\n //#endregion\n\n //#region wrap in current parenthesis\n public wrapInParenthesis(str: string): string {\n return this.parenthesisType === 'single'\n ? `'${str}'`\n : this.parenthesisType === 'double'\n ? `\"${str}\"`\n : `\\`${str}\\``;\n //#endregion\n }\n }\n //#endregion\n\n //#region helpers / get quote type\n const getQuoteType = (text: string): 'single' | 'double' | 'tics' => {\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n const extractImportExportElements = (node: ts.Node): string[] => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n\n export const recognizeImportsFromFile = (\n fileAbsPAth: string,\n ): TsImportExport[] => {\n/* */\n/* */\n/* */\n return (void 0);\n };\n\n export const recognizeImportsFromContent = (\n fileContent: string,\n ): TsImportExport[] => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region fix standalone ng 19\n /**\n * Transition methods ng18 => ng19\n * Remove standalone:true from component decorator\n * and add standalone: false if not exists\n */\n export function transformComponentStandaloneOption(\n sourceText: string,\n ): string {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region escape @ in html text\n const escapeAtInHtmlText = (fileContent: string): string => {\n return fileContent.replace(\n />([^<@]*?)@([^<]*)</g,\n (_match, before, after) => {\n return `>${before}@${after}<`;\n },\n );\n };\n\n export const fixHtmlTemplatesInDir = (directoryPath: string): void => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region remove tagged imports/exports\n export function removeTaggedImportExport(\n tsFileContent: string,\n tags: string[],\n // debug = false,\n ): string {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region wrap first imports in region\n export const wrapFirstImportsInImportsRegion = (\n fileContent: string,\n ): string => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region wrap entities class fields with region\n const applyEdits = (\n original: string,\n edits: { pos: number; text: string }[],\n ): string => {\n edits.sort((a, b) => b.pos - a.pos); // apply from end to start\n let result = original;\n for (const edit of edits) {\n result = result.slice(0, edit.pos) + edit.text + result.slice(edit.pos);\n }\n return result;\n };\n\n /**\n * wrap class field with decorators\n * wrap class methods with decorators\n */\n export function wrapContentClassMembersDecoratorsWithRegion(\n classFileContent: string,\n wrapTag = '@websql',\n ): string {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n export const clearRequireCacheRecursive = (\n modulePath: string,\n seen = new Set<string>(),\n ): void => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n\n export type DeepWritable<T> = {\n -readonly [P in keyof T]: T[P] extends object\n ? T[P] extends Function\n ? T[P]\n : DeepWritable<T[P]>\n : T[P];\n };\n}\n\n//#endregion\n\n//#region utils http\nexport namespace UtilsHttp {\n //#region utils http / start http server\n export const startHttpServer = async (cwd: string, port: number) => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n}\n//#endregion\n\n//#region utils md\nexport namespace UtilsMd {\n /**\n * extract assets pathes from .md file\n */\n export const getAssets = (mdfileContent: string): string[] => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n\n /**\n * Extract links to other Markdown files from a given Markdown content.\n * @param mdfileContent\n */\n export const getLinksToOtherMdFiles = (mdfileContent: string): string[] => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n\n /**\n * Move asset paths to a higher directory level by adding \"../\" before each path.\n *\n * @param mdfileContent - The content of the .md file.\n * @param level - The number of levels to go up (default is 1).\n * @returns The modified content with updated asset paths.\n */\n export const moveAssetsPathesToLevel = (\n mdfileContent: string,\n level = 1,\n ): string => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n}\n//#endregion\n\n//#region utils quickfixes\nexport namespace UtilsQuickFixes {\n //#region replace sql-wasm.js faulty code content\n /**\n *\n * @param node_modules/sql.js/dist/sql-wasm.js\n */\n export const replaceKnownFaultyCode = (\n contentofSQLWasmJS: string,\n ): string => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n /**\n * for some reason electron is being bundled - and it is not needed for cli\n */\n export const replaceElectronWithNothing = (\n jsContent: string,\n packageName: string,\n ): string => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n}\n//#endregion\n\n//#region utils vscode\nexport namespace UtilsVSCode {\n export const calculateContrastingHexColor = (hex: string): string => {\n // Normalize shorthand format like \"#abc\" → \"#aabbcc\"\n if (hex.length === 4) {\n hex =\n '#' +\n hex\n .slice(1)\n .split('')\n .map(ch => ch + ch)\n .join('');\n }\n\n const r = parseInt(hex.slice(1, 3), 16);\n const g = parseInt(hex.slice(3, 5), 16);\n const b = parseInt(hex.slice(5, 7), 16);\n\n // YIQ contrast formula\n const yiq = (r * 299 + g * 587 + b * 114) / 1000;\n\n return yiq >= 128 ? '#000000' : '#ffffff';\n };\n\n // Convert HSL to HEX if you need HEX output\n const hslToHex = (hsl: string): string => {\n const [_, hStr, sStr, lStr] = hsl.match(/hsl\\((\\d+), (\\d+)%?, (\\d+)%?\\)/)!;\n let h = parseInt(hStr) / 360;\n let s = parseInt(sStr) / 100;\n let l = parseInt(lStr) / 100;\n\n const hue2rgb = (p: number, q: number, t: number): number => {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n };\n\n let r: number, g: number, b: number;\n\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n const toHex = (x: number) => {\n const hex = Math.round(x * 255).toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n };\n\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n };\n export const generateFancyColor = (): string => {\n const h = Math.floor(Math.random() * 360); // full hue range\n const s = Math.floor(40 + Math.random() * 30); // 40–70% saturation\n const l = Math.floor(35 + Math.random() * 25); // 35–60% lightness\n\n return hslToHex(`hsl(${h}, ${s}%, ${l}%)`);\n };\n\n export const vscodeImport = () => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n}\n\n//#endregion\n\n//#region utils dot file\nexport namespace UtilsDotFile {\n //#region parse value from dot file util\n const parseValue = (rawValue: string): string | number | boolean => {\n const val = rawValue.trim().replace(/^\"|\"$/g, '');\n\n // Try boolean\n if (val.toLowerCase() === 'true') return true;\n if (val.toLowerCase() === 'false') return false;\n\n // Try number\n if (!isNaN(Number(val)) && val !== '') return Number(val);\n\n return val;\n };\n //#endregion\n\n //#region set value to/from dot file\n export const setValueToDotFile = (\n dotFileAbsPath: string | string[],\n value: string,\n key: string | number | boolean,\n ): void => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region get value from dot file\n export const getValueFromDotFile = (\n dotFileAbsPath: string | string[],\n key: string,\n ): string | number | boolean => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region set values keys from object\n export const setValuesKeysFromObject = (\n dotFileAbsPath: string | string[],\n obj: Record<string, string | number | boolean>,\n options?: {\n /**\n * if true, it will overwrite existing keys\n */\n setAsNewFile?: boolean;\n },\n ): void => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region get values keys as json object\n export const getValuesKeysAsJsonObject = <\n T = Record<string, string | number | boolean>,\n >(\n dotFileAbsPath: string | string[],\n ): T => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n}\n//#endregion\n\n//#region utils zip browser\nexport namespace UtilsZipBrowser {\n // <input type=\"file\" id=\"folderInput\" webkitdirectory />\n // ts\n // Copy\n // Edit\n // document.getElementById('folderInput').addEventListener('change', async (e) => {\n // const input = e.target as HTMLInputElement;\n // if (input.files) {\n // const zipBlob = await zipDirBrowser(input.files);\n // // Save the zip using FileSaver.js or URL.createObjectURL\n // const url = URL.createObjectURL(zipBlob);\n // const a = document.createElement('a');\n // a.href = url;\n // a.download = 'folder.zip';\n // a.click();\n // URL.revokeObjectURL(url);\n // }\n // });\n\n // import JSZip from 'jszip';\n\n // <input type=\"file\" id=\"zipInput\" />\n // ts\n // Copy\n // Edit\n // document.getElementById('zipInput').addEventListener('change', async (e) => {\n // const input = e.target as HTMLInputElement;\n // if (input.files?.[0]) {\n // const entries = await unzipArchiveBrowser(input.files[0]);\n // for (const [name, blob] of entries) {\n // console.log(`Extracted file: ${name}`, blob);\n // }\n // }\n // });\n export const zipDirBrowser = async (fileList: FileList): Promise<Blob> => {\n // const zip = new JSZip();\n\n // for (const file of Array.from(fileList)) {\n // const relativePath = (file as any).webkitRelativePath || file.name;\n // zip.file(relativePath, file);\n // }\n\n // return zip.generateAsync({ type: 'blob' });\n return void 0;\n };\n\n export const unzipArchiveBrowser = async (\n zipBlob: Blob,\n ): Promise<Map<string, Blob>> => {\n // const zip = await JSZip.loadAsync(zipBlob);\n // const files = new Map<string, Blob>();\n\n // for (const [filePath, fileObj] of Object.entries(zip.files)) {\n // if (!fileObj.dir) {\n // const content = await fileObj.async('blob');\n // files.set(filePath, content);\n // }\n // }\n\n // return files;\n return void 0;\n };\n}\n//#endregion\n\n//#region utils zip node\nexport namespace UtilsZip {\n //#region split zip file\n\n export const splitFile7Zip = async (\n inputPath: string,\n partSizeMB = 99,\n ): Promise<number> => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n\n /**\n * Splits a file into smaller parts if its size exceeds the specified part size.\n * @returns true if file was split, false if not needed\n */\n export const splitFile = async (\n inputPath: string,\n partSizeMB = 99,\n ): Promise<number> => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n export const zipDir = async (absPathToDir: string): Promise<void> => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n\n // Unzip: `/some/path/folder.zip` → `/some/path/folder`\n export const unzipArchive = async (absPathToZip: string): Promise<void> => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n}\n//#endregion\n","import { _, Utils } from 'tnp-core/browser';\nimport * as fuzzy from 'fuzzy';\n\nexport class HelpersArrayObj {\n from(s: string | string[]): string[] {\n if (_.isArray(s)) {\n return s;\n }\n if (_.isString(s)) {\n return s.split(' ');\n }\n }\n\n second(arr) {\n if (!Array.isArray(arr) || arr.length < 2) {\n return void 0;\n }\n return arr[1];\n }\n\n /**\n * @deprecated\n * use moveObjectBefore\n */\n arrayMoveElementBefore<T = any>(arr: any[], a: any, b: any, prop?: keyof T) {\n let indexA = prop\n ? arr.findIndex(elem => elem[prop] === a[prop])\n : arr.indexOf(a);\n _.pullAt(arr, indexA);\n let indexB = prop\n ? arr.findIndex(elem => elem[prop] === b[prop])\n : arr.indexOf(b);\n if (indexB === 0) {\n arr.unshift(a);\n } else {\n arr.splice(indexB - 1, 0, a);\n }\n return arr;\n }\n\n /**\n * @deprecated\n * use moveObjectAfter\n */\n arrayMoveElementAfterB<T = any>(arr: any[], a: any, b: any, prop?: keyof T) {\n let indexA = prop\n ? arr.findIndex(elem => elem[prop] === a[prop])\n : arr.indexOf(a);\n _.pullAt(arr, indexA);\n let indexB = prop\n ? arr.findIndex(elem => elem[prop] === b[prop])\n : arr.indexOf(b);\n if (indexB === arr.length - 1) {\n arr.push(a);\n } else {\n arr.splice(indexB + 1, 0, a);\n }\n return arr;\n }\n\n moveObjectBefore<T = any>(array: T[], target: T, before: T): T[] {\n const newArray = [...array];\n const targetIndex = newArray.findIndex(item => item === target);\n const beforeIndex = newArray.findIndex(item => item === before);\n\n if (targetIndex === -1 || beforeIndex === -1) {\n // Handle the case when either the target or before object is not found in the array\n console.error('Target or Before object not found in the array');\n return newArray;\n }\n\n // Remove the target object from its current position\n newArray.splice(targetIndex, 1);\n\n // Insert the target object before the before object\n newArray.splice(beforeIndex, 0, target);\n\n return newArray;\n }\n\n moveObjectAfter<T = any>(array: T[], target: T, after: T): T[] {\n const newArray = [...array];\n const targetIndex = newArray.findIndex(item => item === target);\n const afterIndex = newArray.findIndex(item => item === after);\n\n if (targetIndex === -1 || afterIndex === -1) {\n // Handle the case when either the target or after object is not found in the array\n console.error('Target or After object not found in the array');\n return newArray;\n }\n\n // Remove the target object from its current position\n newArray.splice(targetIndex, 1);\n\n // Insert the target object after the after object\n newArray.splice(afterIndex + 1, 0, target);\n\n return newArray;\n }\n\n /**\n * @deprecated use Utils.uniqArray from tnp-core\n */\n uniqArray<T = any>(array: any[], uniqueProperty?: keyof T) {\n return Utils.uniqArray(array, uniqueProperty);\n }\n\n /**\n * @deprecated use Utils.uniqArray from tnp-core\n */\n sortKeys(obj) {\n return Utils.sortKeys(obj);\n }\n\n /**\n * Fuzzy search\n */\n fuzzy<T = any>(\n query: string,\n list: T[],\n valueFn?: (modelFromList: T) => string,\n ) {\n // console.log('fuzzy search', query, list, valueFn)\n const resultsFuzzy = fuzzy.filter(\n query,\n list.map(k => (valueFn ? valueFn(k) : k)),\n );\n const resultsFuzzyKebab = fuzzy.filter(\n _.kebabCase(query),\n list.map(k => _.kebabCase((valueFn ? valueFn(k) : k) as any)),\n );\n const matches = resultsFuzzy.map(el => el.string);\n const matchesKebab = resultsFuzzyKebab.map(el => el.string);\n\n const results =\n resultsFuzzy.length === 0\n ? []\n : list.filter(k => {\n return matches.includes((valueFn ? valueFn(k) : k) as any);\n });\n\n if (matches.length === 0 && matchesKebab.length > 0) {\n const m = list.find(\n k =>\n _.kebabCase((valueFn ? valueFn(k) : k) as any) ===\n _.first(matchesKebab),\n );\n results.push(m);\n matches.push((valueFn ? valueFn(m) : m) as any);\n }\n\n return { matches, results };\n }\n}\n","import { Utils, _ } from 'tnp-core/browser';\nexport class HelpersStringsRegexes {\n\n\n\n escapeStringForRegEx(s: string) {\n return Utils.escapeStringForRegEx(s);\n }\n\n matchExactOnce(s: string, regex: RegExp): string {\n if (!_.isString(s) || !_.isRegExp(regex)) {\n return void 0;\n }\n const result = s.match(regex);\n if (_.isNil(result)) {\n return void 0;\n }\n return result.length >= 1 ? _.first(result) : void 0;\n }\n\n get regex() {\n return {\n /**\n * mathes\n * xxx.xxx.xxx.xxx\n * xxx.xxx.xxx.xxx:port\n * http://xxx.xxx.xxx.xxx:port\n * http://xxx.xxx.xxx.xxx\n * https://xxx.xxx.xxx.xxx:port\n * https://xxx.xxx.xxx.xxx *\n */\n get forStringWithIpHost() {\n const regex = /(http(s)?\\:\\/\\/)?(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\\:[0-9]+)?/;\n return regex;\n },\n /**\n * mathes\n * http://domain.com:port\n * http://domain.com\n * http://domain:port\n * http://domain\n * https://domain.com:port\n * https://domain.com\n * https://domain:port\n * https://domain\n */\n get forStringWithDomainHost() {\n const regex = /(((http(s)?\\:\\/\\/)?[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9](?:\\.[a-zA-Z]{2,})+(\\:[0-9]+)?)|((http(s)?\\:\\/\\/)[a-zA-Z0-9-]{1,61}))/;\n return regex;\n }\n }\n }\n}\n","import { _ } from 'tnp-core/browser';\nimport { Helpers } from '../index';\n\nexport class HelpersStrings {\n\n /**\n * Example:\n *\n * const result = interpolateString(\"I'm {age} years old!\")\n * .withParameters({ age: 29 });\n *\n * const result = interpolateString(\"The {a} says {n}, {n}, {n}!\")\n * .withParameters({ a: 'cow', n: 'moo' });\n *\n *\n * @param value string to interpolate\n * @param parameters object with parametes\n */\n interpolateString<T = any>(value: string) {\n if (typeof value !== 'string') {\n Helpers.warn('[taon-heleprs] Value for interpolation is not string: ', value);\n return value;\n }\n\n return {\n withParameters(parameters: T) {\n if (typeof parameters !== 'object') {\n Helpers.log(parameters as any);\n Helpers.warn('[taon-heleprs] Parameters are not a object: ');\n return value;\n }\n return value.replace(/{([^{}]*)}/g, function (a, b) {\n var r = parameters[b];\n return typeof r === 'string' || typeof r === 'number' ? r : a;\n } as any);\n }\n }\n\n }\n\n /**\n *\n * @param pixelsCss exmaple: 100px\n * @returns number value\n */\n numValue(pixelsCss: string) {\n // tslint:disable-next-line:radix\n return parseInt(pixelsCss.replace('px', ''));\n }\n\n /**\n * examples:\n * 'aa bb bb' => ['aa','bb','cc'],\n * 'aa' => ['aa']\n * ['aa'] => ['aa']\n */\n splitIfNeed(stringOrArr: string | string[]): string[] {\n let res = [];\n if (_.isArray(stringOrArr)) {\n res = stringOrArr.map(s => {\n return s.trim();\n })\n }\n if (_.isString(stringOrArr)) {\n res = stringOrArr.split(/\\s*[\\s,]\\s*/);\n }\n return res.filter(f => !!f && (f.trim() !== ''));\n }\n\n removeDoubleOrMoreEmptyLines(s: string) {\n s = s?.split('\\n').map(f => f.trimRight()).join('\\n');\n return s?.replace(/(\\r\\n|\\r|\\n){2,}/g, '$1\\n');\n }\n\n /**\n *\n * https://stackoverflow.com/a/57129703/1345101\n *\n * Returns the plural of an English word.\n *\n * @export\n * @param {string} word\n * @param {number} [amount]\n * @returns {string}\n */\n plural(word: string, amount?: number): string {\n if (amount !== undefined && amount === 1) {\n return word\n }\n const plural: { [key: string]: string } = {\n '(quiz)$': \"$1zes\",\n '^(ox)$': \"$1en\",\n '([m|l])ouse$': \"$1ice\",\n '(matr|vert|ind)ix|ex$': \"$1ices\",\n '(x|ch|ss|sh)$': \"$1es\",\n '([^aeiouy]|qu)y$': \"$1ies\",\n '(hive)$': \"$1s\",\n '(?:([^f])fe|([lr])f)$': \"$1$2ves\",\n '(shea|lea|loa|thie)f$': \"$1ves\",\n 'sis$': \"ses\",\n '([ti])um$': \"$1a\",\n '(tomat|potat|ech|her|vet)o$': \"$1oes\",\n '(bu)s$': \"$1ses\",\n '(alias)$': \"$1es\",\n '(octop)us$': \"$1i\",\n '(ax|test)is$': \"$1es\",\n '(us)$': \"$1es\",\n '([^s]+)$': \"$1s\"\n }\n const irregular: { [key: string]: string } = {\n 'move': 'moves',\n 'foot': 'feet',\n 'goose': 'geese',\n 'sex': 'sexes',\n 'child': 'children',\n 'man': 'men',\n 'tooth': 'teeth',\n 'person': 'people'\n }\n const uncountable: string[] = [\n 'sheep',\n 'fish',\n 'deer',\n 'moose',\n 'series',\n 'species',\n 'money',\n 'rice',\n 'information',\n 'equipment',\n 'bison',\n 'cod',\n 'offspring',\n 'pike',\n 'salmon',\n 'shrimp',\n 'swine',\n 'trout',\n 'aircraft',\n 'hovercraft',\n 'spacecraft',\n 'sugar',\n 'tuna',\n 'you',\n 'wood'\n ]\n // save some time in the case that singular and plural are the same\n if (uncountable.indexOf(word.toLowerCase()) >= 0) {\n return word\n }\n // check for irregular forms\n for (const w in irregular) {\n const pattern = new RegExp(`${w}$`, 'i')\n const replace = irregular[w]\n if (pattern.test(word)) {\n return word.replace(pattern, replace)\n }\n }\n // check for matches using regular expressions\n for (const reg in plural) {\n const pattern = new RegExp(reg, 'i')\n if (pattern.test(word)) {\n return word.replace(pattern, plural[reg])\n }\n }\n return word\n }\n\n\n /**\n * https://stackoverflow.com/a/57129703/1345101\n *\n * Returns the singular of an English word.\n *\n * @export\n * @param {string} word\n * @param {number} [amount]\n * @returns {string}\n */\n singular(word: string, amount?: number): string {\n if (amount !== undefined && amount !== 1) {\n return word\n }\n const singular: { [key: string]: string } = {\n '(quiz)zes$': \"$1\",\n '(matr)ices$': \"$1ix\",\n '(vert|ind)ices$': \"$1ex\",\n '^(ox)en$': \"$1\",\n '(alias)es$': \"$1\",\n '(octop|vir)i$': \"$1us\",\n '(cris|ax|test)es$': \"$1is\",\n '(shoe)s$': \"$1\",\n '(o)es$': \"$1\",\n '(bus)es$': \"$1\",\n '([m|l])ice$': \"$1ouse\",\n '(x|ch|ss|sh)es$': \"$1\",\n '(m)ovies$': \"$1ovie\",\n '(s)eries$': \"$1eries\",\n '([^aeiouy]|qu)ies$': \"$1y\",\n '([lr])ves$': \"$1f\",\n '(tive)s$': \"$1\",\n '(hive)s$': \"$1\",\n '(li|wi|kni)ves$': \"$1fe\",\n '(shea|loa|lea|thie)ves$': \"$1f\",\n '(^analy)ses$': \"$1sis\",\n '((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$': \"$1$2sis\",\n '([ti])a$': \"$1um\",\n '(n)ews$': \"$1ews\",\n '(h|bl)ouses$': \"$1ouse\",\n '(corpse)s$': \"$1\",\n '(us)es$': \"$1\",\n 's$': \"\"\n }\n const irregular: { [key: string]: string } = {\n 'move': 'moves',\n 'foot': 'feet',\n 'goose': 'geese',\n 'sex': 'sexes',\n 'child': 'children',\n 'man': 'men',\n 'tooth': 'teeth',\n 'person': 'people'\n }\n const uncountable: string[] = [\n 'sheep',\n 'fish',\n 'deer',\n 'moose',\n 'series',\n 'species',\n 'money',\n 'rice',\n 'information',\n 'equipment',\n 'bison',\n 'cod',\n 'offspring',\n 'pike',\n 'salmon',\n 'shrimp',\n 'swine',\n 'trout',\n 'aircraft',\n 'hovercraft',\n 'spacecraft',\n 'sugar',\n 'tuna',\n 'you',\n 'wood'\n ]\n // save some time in the case that singular and plural are the same\n if (uncountable.indexOf(word.toLowerCase()) >= 0) {\n return word\n }\n // check for irregular forms\n for (const w in irregular) {\n const pattern = new RegExp(`${irregular[w]}$`, 'i')\n const replace = w\n if (pattern.test(word)) {\n return word.replace(pattern, replace)\n }\n }\n // check for matches using regular expressions\n for (const reg in singular) {\n const pattern = new RegExp(reg, 'i')\n if (pattern.test(word)) {\n return word.replace(pattern, singular[reg])\n }\n }\n return word\n }\n\n}\n\n","//#region imports\nimport { exec } from 'child_process';\nimport type { ChildProcess } from 'child_process';\n\nimport * as spawn from 'cross-spawn';\nimport * as dateformat from 'dateformat';\nimport * as fuzzy from 'fuzzy';\nimport { Log, Level } from 'ng2-logger/browser';\nimport { config } from 'tnp-config/browser';\nimport {\n _,\n os,\n path,\n fse,\n child_process,\n fkill,\n crossPlatformPath,\n chalk,\n} from 'tnp-core/browser';\nimport { CLI, UtilsProcess, UtilsTerminal } from 'tnp-core/browser';\nimport { CLASS } from 'typescript-class-helpers/browser';\n\nimport type { BaseProject } from '../../index';\nimport { Helpers } from '../../index';\n\n//#endregion\n\nexport class HelpersProcess {\n //#region restart application itself\n async restartApplicationItself(nameOfApp: string) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region os is macos\n osIsMacOs(versino: 'big-sur' | 'catalina') {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region generate file wrap\n generatedFileWrap(content: string) {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region change cwd wrapper\n async changeCwdWrapper(\n dir: string,\n functionToExecure: Function,\n logLevel: Level = Level.__NOTHING,\n ) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region change cwd\n changeCwd(dir?: string) {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region go to dir\n /**\n * // TODO refactor this\n * @deprecated\n */\n goToDir(dir = '..') {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region press key or wait\n async pressKeyOrWait(\n message = 'Press enter try again',\n printWaitMessages = 0,\n ) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region press key and continue\n /**\n * @deprecated use UtilsTerminal.pressAnyKey\n */\n pressKeyAndContinue(message = 'Press enter to continue..') {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region list\n /**\n * @deprecated use UtilsTerminal.multiselect\n */\n async list<T = string>(\n question: string,\n choices:\n | { name: string; value: T }[]\n | { [choice: string]: { name: string } },\n ) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region multiple choices ask\n /**\n * @deprecated use UtilsTerminal.multiselect\n */\n async multipleChoicesAsk(\n question: string,\n choices: { name: string; value: string }[],\n autocomplete: boolean = false,\n selected?: { name: string; value: string }[],\n ): Promise<string[]> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region input\n /**\n * @deprecated use UtilsTerminal.input\n */\n async input(options: {\n defaultValue?: string;\n question: string;\n // required?: boolean;\n validate?: (value: string) => boolean;\n }): Promise<string> {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region select\n /**\n * @deprecated use UtilsTerminal.multiselect\n * TODO wierd problem when pressing key like \"i\"\n */\n async selectChoicesAsk<T = string>(\n question: string,\n choices:\n | { name: string; value: T }[]\n | { [choice: string]: { name: string } },\n ): Promise<T> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region autocomplete ask\n async autocompleteAsk<T = string>(\n question: string,\n choices: { name: string; value: T }[],\n pageSize = 10,\n ): Promise<T> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region get working dir of process\n getWorkingDirOfProcess(PID: number) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region output to vscode\n outputToVScode(\n data: { label: string; option: string }[] | string,\n disableEncode = false,\n ) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region action wrapper\n async actionWrapper(fn: () => void, taskName: string = 'Task') {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region terminal line\n terminalLine() {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region kill all node except current process\n /**\n * THIS DEOS NOT WORK !\n * ! TOOD FIX THIS\n */\n async killAllNodeExceptCurrentProcess() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region kill all node\n killAllNode() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region format path\n formatPath(pathToFileOrFolder: string) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region prepare wathc command\n /**\n * @deprecated\n */\n prepareWatchCommand(cmd) {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region get string from\n /**\n * @deprecated\n */\n getStringFrom(command: string, descriptionOfCommand?: string) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region wait for message in stdout\n async waitForMessegeInStdout(proc: ChildProcess, message: string) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n}\n","import * as crypto from 'crypto';\nimport { promisify } from 'util';\n\nimport type { CopyOptionsSync } from 'fs-extra';\nimport * as glob from 'glob';\nimport { config, extAllowedToReplace } from 'tnp-config/browser';\nimport {\n _,\n path,\n fse,\n os,\n rimraf,\n crossPlatformPath,\n json5,\n child_process,\n} from 'tnp-core/browser';\nimport * as underscore from 'underscore';\n\nimport { Helpers } from '../../index';\n\ndeclare const global: any;\n\nexport interface GetRecrusiveFilesFromOptions {\n // withNameOnly?: string; // TODO\n}\n\nexport class HelpersFileFolders {\n /**\n * Calculate file or string checksum\n */\n checksum(absolutePathToFileOrContent: string, algorithm?: 'md5' | 'sha1') {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n getValueFromJSON(\n filepath: string,\n lodashGetPath: string,\n defaultValue = void 0,\n ): any {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n getValueFromJSONC(\n filepath: string,\n lodashGetPath: string,\n defaultValue = void 0,\n ): any {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n readValueFromJson(\n filepath: string,\n lodashGetPath: string,\n defaultValue = void 0,\n ): any {\n/* */\n/* */\n return (void 0);\n }\n\n readValueFromJsonC(\n filepath: string,\n lodashGetPath: string,\n defaultValue = void 0,\n ): any {\n/* */\n/* */\n return (void 0);\n }\n\n setValueToJSON(\n filepath: string | string[],\n lodashGetPath: string,\n value: any,\n ): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n setValueToJSONC(filepath: string, lodashGetPath: string, value: any): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n /**\n * file size in bytes\n */\n size(filePath: string): number {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n pathFromLink(filePath: string): string {\n/* */\n/* */\n return (void 0);\n }\n\n // renameFolder(from: string, to: string, cwd?: string) {\n // // const command = `mv ${from} ${to}`;\n // const command = `renamer --find ${from} --replace ${to} *`;\n // Helpers.run(command, { cwd }).sync()\n // }\n\n /**\n * @deprecated\n */\n renameFolder(from: string, to: string, cwd?: string): void {\n/* */\n/* */\n return (void 0);\n }\n\n /**\n * @deprecated\n */\n renameFiles(from: string, to: string, cwd?: string): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n getTempFolder() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n // createMultiplatformLink(target: string, link: string) {\n\n // if (this.isPlainFileOrFolder(link)) {\n // link = path.join(process.cwd(), link);\n // }\n\n // let command: string;\n // if (os.platform() === 'win32') {\n\n // if (target.startsWith('./')) {\n // target = path.win32.normalize(path.join(process.cwd(), path.basename(target)))\n // } else {\n // if (target === '.' || target === './') {\n // target = path.win32.normalize(path.join(process.cwd(), path.basename(link)))\n // } else {\n // target = path.win32.normalize(path.join(target, path.basename(link)))\n // }\n // }\n // if (fse.existsSync(target)) {\n // fse.unlinkSync(target);\n // }\n // target = path.win32.normalize(target)\n // if (link === '.' || link === './') {\n // link = process.cwd()\n // }\n // link = path.win32.normalize(link);\n // // if (path.resolve(target) === path.resolve(link)) { // TODO\n // // Helpers.warn(`[createMultiplatformLink][win32] Trying to link same location`);\n // // return;\n // // }\n // command = \"mklink \\/D \"\n // + target\n // + \" \"\n // + link\n // + \" >nul 2>&1 \"\n // } else {\n // if (target.startsWith('./')) {\n // target = target.replace(/^\\.\\//g, '');\n // }\n // if (link === '.' || link === './') {\n // link = process.cwd()\n // }\n // if (path.resolve(target) === path.resolve(link)) {\n // Helpers.warn(`[createMultiplatformLink] Trying to link same location`);\n // return;\n // }\n // command = `ln -sf \"${link}\" \"${target}\"`;\n // }\n // child_process.execSync(command);\n // }\n\n isPlainFileOrFolder(filePath: string): boolean {\n/* */\n/* */\n return (void 0);\n }\n\n /**\n * @deprecated\n * use import (or modules only on backend)\n */\n requireUncached(module: string): any {\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n /**\n * @deprecated\n * use import (or modules only on backend)\n *\n * get default export object from js file\n * @param jsFilePath\n */\n require(jsFilePath: string) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n tryRecreateDir(dirpath: string): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n /**\n * @deprecated\n */\n tryCopyFrom(source: string, destination: string, options = {}): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n // private deleteFolderRecursive = (pathToFolder) => {\n // if (fs.existsSync(pathToFolder)) {\n // fs.readdirSync(pathToFolder).forEach((file, index) => {\n // const curPath = path.join(pathToFolder, file);\n // if (fs.lstatSync(curPath).isDirectory()) { // recurse\n // this.deleteFolderRecursive(curPath);\n // } else { // delete file\n // fs.unlinkSync(curPath);\n // }\n // });\n // fs.rmdirSync(pathToFolder);\n // }\n // };\n\n move(\n from: string,\n to: string,\n options?: {\n purpose?: string; // for logging purposes\n },\n ): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n findChildren<T>(\n location: string,\n createFn: (childLocation: string) => T,\n options?: { allowAllNames: boolean },\n ): T[] {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n /**\n * @deprecated\n */\n findChildrenNavi<T>(\n location: string,\n createFn: (childLocation: string) => T,\n ): T[] {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n /**\n * get all files from folder\n * absolute paths\n */\n getRecrusiveFilesFrom(\n dir: string,\n ommitFolders: string[] = [],\n options?: GetRecrusiveFilesFromOptions,\n ): string[] {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n checkIfNameAllowedForTaonProj(folderName: string): boolean {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n getLinesFromFiles(filename: string, lineCount?: number): Promise<string[]> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n /**\n * Get the most recent changes file in direcory\n * @param dir absoulute path to file\n */\n getMostRecentFileName(dir: string): string {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n getMostRecentFilesNames(dir: string): string[] {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n removeExcept(fromPath: string, exceptFolderAndFiles: string[]): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n /**\n * Copy folder using os native command\n * (perfect for large folders/files)\n */\n async copyFolderOsNative(\n from: string,\n to: string,\n options?: {\n removeDestination?: boolean;\n },\n ): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n copy(\n sourceDir: string | string[],\n destinationDir: string | string[],\n options?: {\n filter?: any;\n overwrite?: boolean;\n recursive?: boolean;\n asSeparatedFiles?: boolean;\n asSeparatedFilesAllowNotCopied?: boolean;\n asSeparatedFilesSymlinkAsFile?: boolean;\n /**\n * folders to omit: example: ['src','node_modules']\n *\n * This option works only with omitFoldersBaseFolder\n */\n omitFolders?: string[];\n /**\n * absolute path for base folder for omitFolder option\n */\n omitFoldersBaseFolder?: string;\n copySymlinksAsFiles?: boolean;\n copySymlinksAsFilesDeleteUnexistedLinksFromSourceFirst?: boolean;\n useTempFolder?: boolean;\n dontAskOnError?: boolean;\n } & CopyOptionsSync,\n ): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n filterDontCopy(basePathFoldersTosSkip: string[], projectOrBasepath: string) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n filterOnlyCopy(\n basePathFoldersOnlyToInclude: string[],\n projectOrBasepath: string,\n ) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n copyFile(\n sourcePath: string,\n destinationPath: string,\n options?: {\n transformTextFn?: (input: string) => string;\n debugMode?: boolean;\n fast?: boolean;\n dontCopySameContent?: boolean;\n },\n ): boolean {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n /**\n * get real absolute path\n */\n resolve(fileOrFolderPath: string): string {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n}\n","\nexport class HelpersNumber {\n /**\n * @deprecated\n * use _.random()\n */\n randomInteger = (max, min) => Math.round(Math.random() * (max - min)) + min;\n\n\n}\n","// session tab it\n// realtime session\n\nconst key = Symbol('[taon-helpers] helper browser key')\n\nexport class HelpersBrowser {\n\n private static callbacks = [];\n static onInit(callback: (ins: HelpersBrowser) => any) {\n this.callbacks.push(callback);\n }\n\n get win() {\n let win = window;\n return win;\n }\n\n private get tabIdSessionStorage() {\n return Number(this.win.sessionStorage?.tabId) || 0;\n }\n\n readonly tabId: number;\n\n private static inst: HelpersBrowser;\n init = (() => {\n const win = this.win;\n\n if (!win[key]) {\n win[key] = new HelpersBrowser(win);\n }\n HelpersBrowser.inst = win[key];\n })();\n\n private constructor(win: Window) {\n //#region @browser\n win.addEventListener(\"beforeunload\", (e) => {\n win.sessionStorage.tabId = this.tabId;\n return null;\n });\n\n setTimeout(() => {\n\n if (win.sessionStorage?.tabId) {\n // @ts-ignore\n this.tabId = Number(win.sessionStorage.tabId);\n win.sessionStorage.removeItem(\"tabId\");\n }\n else {\n // @ts-ignore\n this.tabId = Math.floor(Math.random() * 1000000) + (new Date()).getTime();\n }\n HelpersBrowser.callbacks.forEach((c) => {\n c(this);\n });\n })\n\n //#endregion\n }\n\n\n static get instance() {\n return HelpersBrowser.inst;\n }\n\n}\n\n\n\n\n\n","//#region imports\nimport { _, path, Utils } from 'tnp-core/browser';\nimport { HelpersArrayObj } from './helpers-array-obj';\nimport { HelpersStringsRegexes } from './helpers-strings-regexes';\nimport { HelpersStrings } from './helpers-strings';\nimport { HelpersProcess } from './for-backend/helpers-process';\nimport { HelpersFileFolders } from './for-backend/helpers-file-folders';\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \nimport { config } from 'tnp-config/browser';\nimport { Helpers, UtilsQuickFixes, Validators } from '../index';\nimport { CLASS } from 'typescript-class-helpers/browser';\nimport { CoreHelpers, CoreModels } from 'tnp-core/browser';\nimport { HelpersNumber } from './helpers-numbers';\n//#region @browser\nimport { HelpersBrowser } from './for-browser/helpers-browser';\nimport { HelpersAngular } from './for-browser/angular.helper';\n//#endregion\n//#endregion\n\n//#region class mixing helper\n/**\n * Mixing for multiclass inheritance\n *\n * How to use It:\n *\n * class Wolverine {}\n * class Jean {}\n * export class Child {}\n * export interface MyChild implements Wolverine, Jean {}\n * applyMixing(Child,[Wolverine, Jean]);\n *\n * @param derivedCtor Target Class\n * @param baseCtors Base Classes\n */\nexport function applyMixins(derivedCtor: any, baseCtors: any[]) {\n baseCtors.forEach(baseCtor => {\n Object.getOwnPropertyNames(baseCtor.prototype).forEach(name => {\n Object.defineProperty(\n derivedCtor.prototype,\n name,\n Object.getOwnPropertyDescriptor(baseCtor.prototype, name),\n );\n });\n });\n}\n//#endregion\n\nexport class HelpersTaon extends CoreHelpers {\n //#region staic\n private static _instance: HelpersTaon & CoreHelpers;\n public static get Instance(): HelpersTaon {\n if (!HelpersTaon._instance) {\n HelpersTaon._instance = new HelpersTaon();\n }\n return HelpersTaon._instance;\n }\n //#endregion\n\n //#region constructor\n private constructor(\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n public arrays = new HelpersArrayObj(),\n public strings = new HelpersStrings(),\n public numbers = new HelpersNumber(),\n //#region @browser\n public browser = HelpersBrowser.instance,\n public ng = HelpersAngular,\n //#endregion\n ) {\n super();\n }\n //#endregion\n\n //#region methods & getters / cli wrap\n CLIWRAP(f: Function, name: string) {\n CLASS.setName(f, name);\n return f;\n }\n //#endregion\n\n //#region methods & getters / uniqArray\n /**\n * Bundle file with node_modules into one file\n * default strategy is cli\n * Please keep: 'ts-node', 'typescript' as dependency in your package.json\n */\n async bundleCodeIntoSingleFile(\n pathToJsFile: string,\n outputFilePath: string,\n options?: {\n strategy?: 'cli' | 'vscode-ext' | 'node-app' | 'electron-app';\n /**\n * ! beforeWrite needs to return output\n */\n beforeWrite?: (options: {\n output?: string;\n copyToDestination?: (fileOrFolderAbsPath: string) => void;\n }) => string;\n additionalExternals?: string[];\n additionalReplaceWithNothing?: string[];\n skipFixingSQLlite?: boolean;\n minify?: boolean;\n },\n ): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n /**\n * @deprecated\n * use Utils.uniqArray from tnp-core\n */\n uniqArray<T = any>(array: any[], uniqueProperty?: keyof T): T[] {\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / replace invisible characters\n // replaceInvisibleCharacters(s: string) {\n // var reg = /[\\0-\\x1F\\x7F-\\x9F\\xAD\\u0378\\u0379\\u037F-\\u0383\\u038B\\u038D\\u03A2\\u0528-\\u0530\\u0557\\u0558\\u0560\\u0588\\u058B-\\u058E\\u0590\\u05C8-\\u05CF\\u05EB-\\u05EF\\u05F5-\\u0605\\u061C\\u061D\\u06DD\\u070E\\u070F\\u074B\\u074C\\u07B2-\\u07BF\\u07FB-\\u07FF\\u082E\\u082F\\u083F\\u085C\\u085D\\u085F-\\u089F\\u08A1\\u08AD-\\u08E3\\u08FF\\u0978\\u0980\\u0984\\u098D\\u098E\\u0991\\u0992\\u09A9\\u09B1\\u09B3-\\u09B5\\u09BA\\u09BB\\u09C5\\u09C6\\u09C9\\u09CA\\u09CF-\\u09D6\\u09D8-\\u09DB\\u09DE\\u09E4\\u09E5\\u09FC-\\u0A00\\u0A04\\u0A0B-\\u0A0E\\u0A11\\u0A12\\u0A29\\u0A31\\u0A34\\u0A37\\u0A3A\\u0A3B\\u0A3D\\u0A43-\\u0A46\\u0A49\\u0A4A\\u0A4E-\\u0A50\\u0A52-\\u0A58\\u0A5D\\u0A5F-\\u0A65\\u0A76-\\u0A80\\u0A84\\u0A8E\\u0A92\\u0AA9\\u0AB1\\u0AB4\\u0ABA\\u0ABB\\u0AC6\\u0ACA\\u0ACE\\u0ACF\\u0AD1-\\u0ADF\\u0AE4\\u0AE5\\u0AF2-\\u0B00\\u0B04\\u0B0D\\u0B0E\\u0B11\\u0B12\\u0B29\\u0B31\\u0B34\\u0B3A\\u0B3B\\u0B45\\u0B46\\u0B49\\u0B4A\\u0B4E-\\u0B55\\u0B58-\\u0B5B\\u0B5E\\u0B64\\u0B65\\u0B78-\\u0B81\\u0B84\\u0B8B-\\u0B8D\\u0B91\\u0B96-\\u0B98\\u0B9B\\u0B9D\\u0BA0-\\u0BA2\\u0BA5-\\u0BA7\\u0BAB-\\u0BAD\\u0BBA-\\u0BBD\\u0BC3-\\u0BC5\\u0BC9\\u0BCE\\u0BCF\\u0BD1-\\u0BD6\\u0BD8-\\u0BE5\\u0BFB-\\u0C00\\u0C04\\u0C0D\\u0C11\\u0C29\\u0C34\\u0C3A-\\u0C3C\\u0C45\\u0C49\\u0C4E-\\u0C54\\u0C57\\u0C5A-\\u0C5F\\u0C64\\u0C65\\u0C70-\\u0C77\\u0C80\\u0C81\\u0C84\\u0C8D\\u0C91\\u0CA9\\u0CB4\\u0CBA\\u0CBB\\u0CC5\\u0CC9\\u0CCE-\\u0CD4\\u0CD7-\\u0CDD\\u0CDF\\u0CE4\\u0CE5\\u0CF0\\u0CF3-\\u0D01\\u0D04\\u0D0D\\u0D11\\u0D3B\\u0D3C\\u0D45\\u0D49\\u0D4F-\\u0D56\\u0D58-\\u0D5F\\u0D64\\u0D65\\u0D76-\\u0D78\\u0D80\\u0D81\\u0D84\\u0D97-\\u0D99\\u0DB2\\u0DBC\\u0DBE\\u0DBF\\u0DC7-\\u0DC9\\u0DCB-\\u0DCE\\u0DD5\\u0DD7\\u0DE0-\\u0DF1\\u0DF5-\\u0E00\\u0E3B-\\u0E3E\\u0E5C-\\u0E80\\u0E83\\u0E85\\u0E86\\u0E89\\u0E8B\\u0E8C\\u0E8E-\\u0E93\\u0E98\\u0EA0\\u0EA4\\u0EA6\\u0EA8\\u0EA9\\u0EAC\\u0EBA\\u0EBE\\u0EBF\\u0EC5\\u0EC7\\u0ECE\\u0ECF\\u0EDA\\u0EDB\\u0EE0-\\u0EFF\\u0F48\\u0F6D-\\u0F70\\u0F98\\u0FBD\\u0FCD\\u0FDB-\\u0FFF\\u10C6\\u10C8-\\u10CC\\u10CE\\u10CF\\u1249\\u124E\\u124F\\u1257\\u1259\\u125E\\u125F\\u1289\\u128E\\u128F\\u12B1\\u12B6\\u12B7\\u12BF\\u12C1\\u12C6\\u12C7\\u12D7\\u1311\\u1316\\u1317\\u135B\\u135C\\u137D-\\u137F\\u139A-\\u139F\\u13F5-\\u13FF\\u169D-\\u169F\\u16F1-\\u16FF\\u170D\\u1715-\\u171F\\u1737-\\u173F\\u1754-\\u175F\\u176D\\u1771\\u1774-\\u177F\\u17DE\\u17DF\\u17EA-\\u17EF\\u17FA-\\u17FF\\u180F\\u181A-\\u181F\\u1878-\\u187F\\u18AB-\\u18AF\\u18F6-\\u18FF\\u191D-\\u191F\\u192C-\\u192F\\u193C-\\u193F\\u1941-\\u1943\\u196E\\u196F\\u1975-\\u197F\\u19AC-\\u19AF\\u19CA-\\u19CF\\u19DB-\\u19DD\\u1A1C\\u1A1D\\u1A5F\\u1A7D\\u1A7E\\u1A8A-\\u1A8F\\u1A9A-\\u1A9F\\u1AAE-\\u1AFF\\u1B4C-\\u1B4F\\u1B7D-\\u1B7F\\u1BF4-\\u1BFB\\u1C38-\\u1C3A\\u1C4A-\\u1C4C\\u1C80-\\u1CBF\\u1CC8-\\u1CCF\\u1CF7-\\u1CFF\\u1DE7-\\u1DFB\\u1F16\\u1F17\\u1F1E\\u1F1F\\u1F46\\u1F47\\u1F4E\\u1F4F\\u1F58\\u1F5A\\u1F5C\\u1F5E\\u1F7E\\u1F7F\\u1FB5\\u1FC5\\u1FD4\\u1FD5\\u1FDC\\u1FF0\\u1FF1\\u1FF5\\u1FFF\\u200B-\\u200F\\u202A-\\u202E\\u2060-\\u206F\\u2072\\u2073\\u208F\\u209D-\\u209F\\u20BB-\\u20CF\\u20F1-\\u20FF\\u218A-\\u218F\\u23F4-\\u23FF\\u2427-\\u243F\\u244B-\\u245F\\u2700\\u2B4D-\\u2B4F\\u2B5A-\\u2BFF\\u2C2F\\u2C5F\\u2CF4-\\u2CF8\\u2D26\\u2D28-\\u2D2C\\u2D2E\\u2D2F\\u2D68-\\u2D6E\\u2D71-\\u2D7E\\u2D97-\\u2D9F\\u2DA7\\u2DAF\\u2DB7\\u2DBF\\u2DC7\\u2DCF\\u2DD7\\u2DDF\\u2E3C-\\u2E7F\\u2E9A\\u2EF4-\\u2EFF\\u2FD6-\\u2FEF\\u2FFC-\\u2FFF\\u3040\\u3097\\u3098\\u3100-\\u3104\\u312E-\\u3130\\u318F\\u31BB-\\u31BF\\u31E4-\\u31EF\\u321F\\u32FF\\u4DB6-\\u4DBF\\u9FCD-\\u9FFF\\uA48D-\\uA48F\\uA4C7-\\uA4CF\\uA62C-\\uA63F\\uA698-\\uA69E\\uA6F8-\\uA6FF\\uA78F\\uA794-\\uA79F\\uA7AB-\\uA7F7\\uA82C-\\uA82F\\uA83A-\\uA83F\\uA878-\\uA87F\\uA8C5-\\uA8CD\\uA8DA-\\uA8DF\\uA8FC-\\uA8FF\\uA954-\\uA95E\\uA97D-\\uA97F\\uA9CE\\uA9DA-\\uA9DD\\uA9E0-\\uA9FF\\uAA37-\\uAA3F\\uAA4E\\uAA4F\\uAA5A\\uAA5B\\uAA7C-\\uAA7F\\uAAC3-\\uAADA\\uAAF7-\\uAB00\\uAB07\\uAB08\\uAB0F\\uAB10\\uAB17-\\uAB1F\\uAB27\\uAB2F-\\uABBF\\uABEE\\uABEF\\uABFA-\\uABFF\\uD7A4-\\uD7AF\\uD7C7-\\uD7CA\\uD7FC-\\uF8FF\\uFA6E\\uFA6F\\uFADA-\\uFAFF\\uFB07-\\uFB12\\uFB18-\\uFB1C\\uFB37\\uFB3D\\uFB3F\\uFB42\\uFB45\\uFBC2-\\uFBD2\\uFD40-\\uFD4F\\uFD90\\uFD91\\uFDC8-\\uFDEF\\uFDFE\\uFDFF\\uFE1A-\\uFE1F\\uFE27-\\uFE2F\\uFE53\\uFE67\\uFE6C-\\uFE6F\\uFE75\\uFEFD-\\uFF00\\uFFBF-\\uFFC1\\uFFC8\\uFFC9\\uFFD0\\uFFD1\\uFFD8\\uFFD9\\uFFDD-\\uFFDF\\uFFE7\\uFFEF-\\uFFFB\\uFFFE\\uFFFF]/g;\n // return s.replace(reg, '');\n // }\n //#endregion\n\n //#region methods & getters / parse url\n urlParse(portOrHost: number | string | URL, forceDomain = false) {\n let url: URL;\n if (portOrHost instanceof URL) {\n url = portOrHost;\n } else if (_.isNumber(portOrHost)) {\n url = new URL(`http://localhost:${portOrHost}`);\n } else if (!_.isNaN(Number(portOrHost))) {\n url = new URL(`http://localhost:${Number(portOrHost)}`);\n } else if (_.isString(portOrHost)) {\n try {\n url = new URL(portOrHost);\n } catch (error) {}\n if (Validators.network.isValidIp(portOrHost)) {\n try {\n url = new URL(`http://${portOrHost}`);\n } catch (error) {\n Helpers.warn(`Not able to get port from ${portOrHost}`);\n }\n }\n if (forceDomain) {\n const domain = portOrHost as string;\n url = new URL(\n domain.startsWith('http') ? domain : `http://${portOrHost}`,\n );\n }\n }\n return url;\n }\n //#endregion\n\n //#region methods & getters / slash\n slash(pathFromWindowsOrUnixType: string) {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / is elevated\n async isElevated() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n //#endregion\n\n //#region methods & getters / get local ip addresses\n /**\n * TODO fix this methods\n */\n async localIpAddress() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / get all local ip addresses\n\n allLocalIpAddresses(): URL[] {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / mesure execution in ms\n async mesureExectionInMs(\n description: string,\n functionToExecute: Function,\n ...functionArguments: any[]\n ): Promise<number> {\n var start = new Date();\n await Helpers.runSyncOrAsync({\n functionFn: functionToExecute,\n arrayOfParams: functionArguments,\n });\n //@ts-ignore\n var end = new Date() - start;\n if (Helpers.isBrowser) {\n Helpers.info(`Execution time: ${end.toString()}ms for \"${description}\"`);\n }\n/* */\n/* */\n/* */\n/* */\n \n return end;\n }\n //#endregion\n\n //#region methods & getters / mesure execution in ms (sync)\n mesureExectionInMsSync(\n description: string,\n functionToExecute: () => void,\n ): number {\n var start = new Date();\n functionToExecute();\n //@ts-ignore\n var end = new Date() - start;\n if (Helpers.isBrowser) {\n Helpers.info(`Execution time: ${end.toString()}ms for \"${description}\"`);\n }\n/* */\n/* */\n/* */\n/* */\n \n return end;\n }\n //#endregion\n\n //#region methods & getters / wait for condition\n waitForCondition(conditionFn: (any) => boolean, howOfftenCheckInMs = 1000) {\n return new Promise(async (resolve, reject) => {\n const result = await Helpers.runSyncOrAsync({ functionFn: conditionFn });\n if (result) {\n resolve(void 0);\n } else {\n setTimeout(() => {\n Helpers.waitForCondition(conditionFn, howOfftenCheckInMs).then(() => {\n resolve(void 0);\n });\n }, howOfftenCheckInMs);\n }\n });\n }\n //#endregion\n\n //#region methods & getters / get methods name\n getMethodName(classObject, method): string {\n var methodName = null;\n Object.getOwnPropertyNames(classObject).forEach(prop => {\n if (classObject[prop] === method) {\n methodName = prop;\n }\n });\n\n if (methodName !== null) {\n return methodName;\n }\n\n var proto = Object.getPrototypeOf(classObject);\n if (proto) {\n return Helpers.getMethodName(proto, method);\n }\n return null;\n }\n //#endregion\n\n //#region methods & getters / fix webpack config\n /**\n * @deprecated\n */\n fixWebpackEnv(env: Object) {\n _.forIn(env, (v, k) => {\n const value: string = v as any;\n if (value === 'true') env[k] = true;\n if (value === 'false') env[k] = false;\n });\n }\n //#endregion\n\n //#region methods & getters / work calculate array\n /**\n * @deprecated\n */\n async workerCalculateArray(\n dataToSplit: any[],\n operation: (\n dataChunk: any[],\n workerNumber?: number | undefined,\n ) => Promise<void>,\n options?: {\n maxesForWorkes?: { [workerMaxes: number]: number };\n workerLimit?: number;\n globals?: any;\n },\n ) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n //#endregion\n\n //#region methods & getters / check environment\n checkEnvironment(deps?: CoreModels.GlobalDependencies) {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / apply mixins\n public applyMixins = applyMixins;\n //#endregion\n\n //#region methods & getters / is valid ip\n isValidIp = Validators.network.isValidIp;\n //#endregion\n\n //#region methods & getters / is valid git repo url\n isValidGitRepuUrl = Validators.git.isValidRepoUrl;\n //#endregion\n}\n\n//#region class mixins\nexport interface HelpersTaon\n extends HelpersStringsRegexes,\n HelpersProcess,\n HelpersFileFolders {}\n\napplyMixins(HelpersTaon, [\n HelpersStringsRegexes,\n HelpersProcess,\n HelpersFileFolders,\n]);\n//#endregion\n// prettier-ignore-end\n","//#region imports\nimport { Helpers, crossPlatformPath } from \"tnp-core/browser\";\n\nimport type { BaseProjectResolver } from \"./base-project-resolver\";\n\n/* */\n/* */\n/* */\n/* */\n/* */\n \n//#endregion\n\nexport class BaseDb<DB extends object> {\n\n constructor(\n private ins: BaseProjectResolver,\n private dbName: string,\n private defaultDb: DB,\n ) {\n\n }\n/* */\n/* */\n \n\n public get isUsingDB(): boolean {\n/* */\n/* */\n return (void 0);\n }\n\n get projectsDbLocation() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n\n}\n","//#region imports\nimport { crossPlatformPath } from 'tnp-core/browser';\n\nimport type { BaseProjectResolver } from './classes/base-project-resolver';\nimport { BaseDb } from './classes/base-db';\nimport { Helpers } from '../index';\n/* */\n/* */\n/* */\n \n//#endregion\n\nconst defaultDb = {\n config: {} as { [key: string]: string | number | boolean | null },\n};\n\nexport class ConfigDatabase extends BaseDb<typeof defaultDb> {\n constructor(ins: BaseProjectResolver) {\n super(ins, 'config', defaultDb);\n }\n private get selectedCodeEditorKey(): string {\n return 'selected-code-editor';\n }\n\n public async selectCodeEditor(): Promise<\n 'code' | 'idea' | 'idea64' | string\n > {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n public async getCodeEditor(): Promise<'code' | 'idea' | 'idea64' | string> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n}\n","//#region imports\nimport { Helpers, crossPlatformPath } from \"tnp-core/browser\";\nimport type { BaseProjectResolver } from \"./classes/base-project-resolver\";\nimport { BaseDb } from \"./classes/base-db\";\n//#endregion\n\nconst defaultDb = {\n projects: [] as {\n location: string;\n }[],\n}\n\nexport class ProjectDatabase extends BaseDb<typeof defaultDb>{\n constructor(\n ins: BaseProjectResolver,\n ) {\n super(ins, 'projects', defaultDb);\n }\n\n async getAllProjectsFromDB() {\n/* */\n/* */\n/* */\n return (void 0);\n }\n}\n","import { Taon } from 'taon/browser';\nimport { _, chalk } from 'tnp-core/browser';\n\nexport type PortStatus =\n | 'unassigned'\n | 'assigned'\n | 'assigned-not-registered'\n | 'assigned-taken-by-os';\n\nexport const PortStatusArr: PortStatus[] = [\n 'unassigned',\n 'assigned',\n 'assigned-not-registered',\n 'assigned-taken-by-os',\n];\n\n@Taon.Entity({\n className: 'Port',\n uniqueKeyProp: 'port',\n})\nexport class Port extends Taon.Base.Entity {\n static from(opt: Omit<Port, 'version' | '_' | 'clone' | 'titleOnList' | 'relation'| 'relations'>) {\n return _.merge(new Port(), opt);\n }\n\n static getTitleForFreePort(port: Number) {\n return `free port ${port}`\n }\n\n get titleOnList(): string {\n/* */\n/* */\n return (void 0);\n }\n\n //#region port entity / columns / port\n/* */\n/* */\n/* */\n/* */\n/* */\n \n port: number;\n //#endregion\n\n //#region port entity / columns / serviceId\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n serviceId: string;\n //#endregion\n\n //#region port entity / columns / status\n /**\n * Port status\n */\n/* */\n/* */\n \n status: PortStatus;\n //#endregion\n\n //#region port entity / columns / when assigned timestamp\n /**\n * When port was assigned as registered service\n */\n/* */\n/* */\n \n whenAssignedTimestamp?: Number;\n //#endregion\n}\n","//#region imports\nimport { Helpers, UtilsTerminal } from 'tnp-core/browser';\nimport { _, chalk } from 'tnp-core/browser';\n\nimport type { CfontAlign, CfontStyle } from '../../../models';\n\nimport type { BaseCliWorker } from './base-cli-worker';\nimport type { BaseCliWorkerController } from './base-cli-worker-controller';\n//#endregion\n\nexport class BaseCliWorkerTerminalUI<\n WORKER extends BaseCliWorker<BaseCliWorkerController, any>,\n> {\n constructor(protected worker: WORKER) {}\n\n //#region protected methods / text for header\n protected async headerText(): Promise<string> {\n return _.startCase(this.worker.serviceID);\n }\n //#endregion\n\n //#region protected methods / text header style\n protected textHeaderStyle(): CfontStyle {\n return 'block';\n }\n //#endregion\n\n //#region protected methods / header text align\n protected headerTextAlign(): CfontAlign {\n return 'left';\n }\n //#endregion\n\n //#region protected methods / header\n /**\n * override whole terminal header\n */\n protected async header(): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region protected methods / info message below header\n async infoMessageBelowHeader(): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region protected methods / get back action\n protected get backAction() {\n return {\n back: {\n name: 'Back',\n },\n };\n }\n //#endregion\n\n //#region protected methods / choose action\n protected get chooseAction() {\n return {\n emptyAction: {\n name: ' -- choose any action below --',\n action: async () => {},\n },\n };\n }\n //#endregion\n\n //#region protected methods / worker terminal actions\n protected getWorkerTerminalActions(options?: {\n exitIsOnlyReturn?: boolean;\n chooseAction?: boolean;\n }): {\n [uniqeActionName: string]: {\n name: string;\n action: () => unknown | Promise<unknown>;\n };\n } {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region protected methods / info screen\n public async infoScreen(options?: {\n exitIsOnlyReturn?: boolean;\n }): Promise<void> {\n options = options || {};\n while (true) {\n Helpers.clearConsole();\n\n await this.header();\n\n await this.infoMessageBelowHeader();\n const choices = this.getWorkerTerminalActions(options);\n const choice = await UtilsTerminal.select<keyof typeof choices>({\n choices,\n question: 'Choose action',\n });\n const action = choices[choice].action;\n const result = await action();\n if (choice === 'exit' && result) {\n break;\n }\n }\n }\n //#endregion\n\n //#region protected methods / display special worker ready message\n public displaySpecialWorkerReadyMessage(): void {\n console.log(this.worker.SPECIAL_WORKER_READY_MESSAGE);\n }\n //#endregion\n}\n","//#region imports\n// @ts-ignore\nimport { EndpointContext, Taon } from 'taon/browser';\nimport { config } from 'tnp-config/browser';\nimport {\n chalk,\n crossPlatformPath,\n _,\n os,\n chokidar,\n UtilsProcess,\n Utils,\n UtilsTerminal,\n} from 'tnp-core/browser';\n\nimport { CfontAlign, CfontStyle, Helpers } from '../../../index';\n\nimport { BaseCliWorkerConfig } from './base-cli-worker-config';\nimport type { BaseCliWorkerController } from './base-cli-worker-controller';\nimport { BaseCliWorkerTerminalUI } from './base-cli-worker-terminal-ui';\n//#endregion\n\n//#region constants\nconst WORKER_INIT_START_TIME_LIMIT = 25; // 15 seconds max to start worker\nconst START_PORT_FOR_SERVICES = 3600;\n//#endregion\n\nexport abstract class BaseCliWorker<\n REMOTE_CTRL extends BaseCliWorkerController,\n TERMINAL_UI extends BaseCliWorkerTerminalUI<any>,\n> {\n //#region fields & getters\n public readonly SPECIAL_WORKER_READY_MESSAGE = '$$$ WORKER_READY $$$';\n\n // @ts-ignore TODO weird inheritance problem\n readonly terminalUI: TERMINAL_UI = new BaseCliWorkerTerminalUI(this);\n readonly workerContextTemplate: ReturnType<typeof Taon.createContextTemplate>;\n private workerMainContext: ReturnType<typeof Taon.createContext>;\n private workerRemoteContext: ReturnType<typeof Taon.createContext>;\n readonly controllerClass: new () => REMOTE_CTRL;\n private contextForRemoteConnection: EndpointContext;\n\n //#region fields & getters / path to process local info\n protected get pathToProcessLocalInfoJson(): string {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region fields & getters / process local info json object\n public get processLocalInfoObj(): BaseCliWorkerConfig {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#endregion\n\n //#region constructor\n constructor(\n /**\n * unique id for service\n */\n public readonly serviceID: string,\n /**\n * external command that will start service\n */\n public readonly startCommand: string,\n /**\n * unique id for service\n */\n public readonly serviceVersion: string,\n ) {}\n //#endregion\n\n //#region methods / start normally in current process\n /**\n * start normally process\n * this will crash if process already started\n */\n protected async startNormallyInCurrentProcess(): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods / get controller for remote connection\n async getControllerForRemoteConnection(): Promise<REMOTE_CTRL> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region public methods / start if needs to be started\n public async startDetachedIfNeedsToBeStarted(options?: {\n useCurrentWindowForDetach?: boolean;\n }) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region public methods / kill\n /**\n * stop if started\n */\n async kill(options?: { dontRemoveConfigFile?: boolean }) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region public methods / restart\n /**\n * kill detached process and start again\n * @param options.detached - default true\n */\n async restart(options?: {\n detached?: boolean;\n useCurrentWindowForDetach?: boolean;\n }) {\n options = options || {};\n options.detached = _.isUndefined(options.detached) ? true : false;\n await this.kill();\n //longer because os is disposing process previous process\n\n if (options.detached) {\n Helpers.info(\n `Restarting service \"${this.serviceID}\" in detached mode...`,\n );\n await this.startDetached(options);\n } else {\n Helpers.info(\n `Restarting service \"${this.serviceID}\" in current process...`,\n );\n await this.startNormallyInCurrentProcess();\n }\n }\n //#endregion\n\n //#region public methods / cli start\n /**\n * only for cli start\n * @param cliParams on from cli\n */\n async cliStartProcedure(cliParams: any) {\n const detached = !!cliParams['detached'] || !!cliParams['detach'];\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region prevent external config change\n protected preventExternalConfigChange() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region prevent prevent start if already started\n protected async preventStartIfAlreadyStarted(): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region prevent kill worker with lower version\n protected async killWorkerWithLowerVersion(): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region is service healthy\n /**\n * This has 2 purposes:\n * - infinite check when when detached process finished starting\n * - quick check if service is healthy / already started\n */\n protected async isServiceHealthy(options: {\n healthCheckRequestTrys?: number;\n }): Promise<boolean> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region start detached\n /**\n * start if not started detached process\n */\n protected async startDetached(options?: {\n useCurrentWindowForDetach?: boolean;\n }): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region save process info\n private saveProcessInfo(processConfig: Partial<BaseCliWorkerConfig>) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region initialize worker\n protected async initializeWorkerMetadata() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region wait for process port saved to disk\n protected async waitForProcessPortSavedToDisk(): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region get free port\n public async getServicePort(): Promise<number> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n}\n","import { gte } from 'semver';\nimport { _ } from 'tnp-core/browser';\n\n//#region base worker config\nexport class BaseCliWorkerConfig {\n static from(opt: Partial<BaseCliWorkerConfig>): BaseCliWorkerConfig {\n return _.merge(new BaseCliWorkerConfig(), opt);\n }\n\n /**\n * port taken by service\n */\n port: number;\n /**\n * unique in whole system id of service\n */\n serviceID: string;\n /**\n * pid of service process\n */\n pid: number;\n /**\n * timestamp when service was started\n * (in other cases = null)\n */\n startTimestamp: number;\n /**\n * version\n */\n version: string;\n\n hasBiggerOrEqualWorkerVersionThan(other: BaseCliWorkerConfig): boolean {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n isEquals(other: BaseCliWorkerConfig): boolean {\n other = BaseCliWorkerConfig.from(other);\n return (\n !!this.serviceID &&\n !!this.port &&\n !!this.pid &&\n this.serviceID === other.serviceID &&\n this.port === other.port &&\n this.pid === other.pid\n );\n }\n\n get isEmpty(): boolean {\n return !this.serviceID && !this.port && !this.pid;\n }\n}\n//#endregion\n","import { Taon } from 'taon/browser';\nimport { Helpers } from 'tnp-core/browser';\n\nimport { BaseCliWorkerConfig } from './base-cli-worker-config';\n\n@Taon.Controller({\n className: 'BaseCliWorkerController',\n})\nexport abstract class BaseCliWorkerController extends Taon.Base\n .Controller {\n /**\n * service id\n */\n private cliWorkerServiceId: string = null;\n private cliWorkerServiceVersion: string = null;\n\n //#region api methods / initialize metadata\n @Taon.Http.PUT()\n baseCLiWorkerCommand_initializeMetadata(\n @Taon.Http.Param.Body('serviceId') serviceId: string,\n @Taon.Http.Param.Body('serviceVersion') serviceVersion: string,\n ): Taon.Response<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region api methods / kill\n @Taon.Http.GET()\n baseCLiWorkerCommand_kill(): Taon.Response<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region api methods / info\n @Taon.Http.GET({\n pathIsGlobal: true,\n // overrideContentType: 'text/html',\n // overridResponseType: 'text',\n })\n info(): Taon.Response<string> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region api methods / is healthy\n @Taon.Http.POST()\n baseCLiWorkerCommand_isHealthy(\n @Taon.Http.Param.Body() checkingProcessConfig: BaseCliWorkerConfig,\n ): Taon.Response<boolean> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region api methods / has up to date version\n @Taon.Http.POST()\n baseCLiWorkerCommand_hasUpToDateVersion(\n @Taon.Http.Param.Body() checkingProcessConfig: BaseCliWorkerConfig,\n ): Taon.Response<boolean> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n}\n","//#region imports\nimport { Taon } from 'taon/browser';\nimport { _, UtilsOs } from 'tnp-core/browser';\n\nimport { BaseCliWorkerController } from '../classes/base-cli-worker';\n\nimport { Port, PortStatus } from './ports.entity';\n//#endregion\n\n@Taon.Controller({\n className: 'PortsController',\n})\nexport class PortsController extends BaseCliWorkerController {\n //#region fields\n public START_PORT = 3000;\n public END_PORT = 20000;\n public readonly portsCache = new Map<string, Port>();\n //#endregion\n\n //#region methods\n\n //#region methods / first free port\n protected get firstFreePort(): Port | null | undefined {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods / get first unassigned port more than\n protected firstUnassignedPortMoreThan(port: number) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n //#endregion\n\n //#region public methods\n\n //#region public methods / get\n\n //#region public methods / get / first free port\n @Taon.Http.GET()\n getFirstFreePort(): Taon.Response<Port> {\n return async () => {\n return this.firstFreePort;\n };\n }\n //#endregion\n\n //#region public methods / get / port by number\n @Taon.Http.GET()\n getPortByNumber(\n @Taon.Http.Param.Query('portNumber') portNumber: number,\n ): Taon.Response<Port> {\n return async () => {\n portNumber = Number(portNumber);\n return Array.from(this.portsCache.values()).find(\n f => f.port === portNumber,\n );\n };\n }\n //#endregion\n\n //#region public methods / get / ports by status\n @Taon.Http.GET()\n getPortsByStatus(\n @Taon.Http.Param.Query('status') status: PortStatus,\n ): Taon.Response<Port[]> {\n return async () => {\n return Array.from(this.portsCache.values())\n .filter(f => f.status === status)\n .sort(\n // sort by port number\n (a, b) => {\n if (a.port < b.port) {\n return -1;\n }\n if (a.port > b.port) {\n return 1;\n }\n return 0;\n },\n );\n };\n }\n //#endregion\n\n //#endregion\n\n //#region public methods / ports take by os\n\n //#region public methods / ports take by os / DELETE port (make it unassigned)\n /**\n * make it unassigned\n */\n @Taon.Http.DELETE()\n deletePort(\n @Taon.Http.Param.Query('portNumber') portNumber: number,\n ): Taon.Response<Port> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region public methods / ports take by os / UPDATE port unique id\n /**\n * make it unassigned\n */\n @Taon.Http.PUT()\n updatePortUniqueId(\n @Taon.Http.Param.Query('portNumber') portNumber: number,\n @Taon.Http.Param.Query('serviceId') serviceId: string,\n ): Taon.Response<Port> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region public methods / ports take by os / ADD port take by os\n @Taon.Http.POST()\n addTakeByOsPort(\n @Taon.Http.Param.Query('portNumber') portNumber: number,\n @Taon.Http.Param.Query('uniqueId') uniqueId: string,\n ): Taon.Response<Port> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#endregion\n\n //#region public methods / register and assign port\n /**\n * @param uniqueServiceName unique service name\n * @param startFrom start searching for free port from this number\n * @returns\n */\n @Taon.Http.PUT()\n registerAndAssignPort(\n @Taon.Http.Param.Query('uniqueServiceName') uniqueServiceName: string,\n @Taon.Http.Param.Query('startFrom') startFrom?: number,\n ): Taon.Response<Port> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#endregion\n}\n","// @ts-nocheck\nimport { Taon } from 'taon/browser';\nimport { QueryRunner } from 'taon-typeorm/browser';\n\n@Taon.Migration({\n className: 'MainContext_1736198527297_init',\n})\nexport class MainContext_1736198527297_init extends Taon.Base.Migration {\n /**\n * remove this method if you are ready to run this migration\n */\n public isReadyToRun(): boolean {\n return false;\n }\n\n async up(queryRunner: QueryRunner): Promise<any> {\n // do \"something\" in db\n }\n\n async down(queryRunner: QueryRunner): Promise<any> {\n // revert this \"something\" in db\n }\n}\n\n@Taon.Migration({\n className: 'PortsContext_1736198527297_init',\n})\nexport class PortsContext_1736198527297_init extends Taon.Base.Migration {\n /**\n * remove this method if you are ready to run this migration\n */\n public isReadyToRun(): boolean {\n return true;\n }\n\n async up(queryRunner: QueryRunner): Promise<any> {\n // do \"something\" in db\n // console.log('Hello from migration UP!')\n }\n\n async down(queryRunner: QueryRunner): Promise<any> {\n // revert this \"something\" in db\n // console.log('Hello from migration DOWN!')\n }\n}\n","// @ts-nocheck\nimport { Taon } from 'taon/browser';\nimport { _ } from 'tnp-core/browser';\nimport { QueryRunner } from 'taon-typeorm/browser';\nimport { Port, PortsController } from '../lib';\n\nconst portsWithDescription = {\n 3000: 'Commonly used for development servers',\n 3001: 'Alternate development server port',\n 3306: 'MySQL',\n 3389: 'Remote Desktop Protocol (RDP)',\n 3478: 'STUN (Session Traversal Utilities for NAT)',\n 4000: 'Alternative development server port',\n 4200: 'Angular CLI Development Server',\n 4500: 'IPSec NAT traversal',\n 4567: 'Sinatra Default Port',\n 5000: 'Flask, Python development server, or Node.js apps',\n 5432: 'PostgreSQL',\n 5500: 'Live Server (VS Code Extension)',\n 5672: 'RabbitMQ',\n 5800: 'VNC Remote Desktop (HTTP)',\n 5900: 'VNC Remote Desktop',\n 5984: 'CouchDB',\n 6000: 'in use by something in macos',\n};\n\n@Taon.Migration({\n className: 'PortsContext_1736199486472_addingNotAssignablePorts',\n})\nexport class PortsContext_1736199486472_addingNotAssignablePorts extends Taon\n .Base.Migration {\n protected portsController: PortsController =\n this.injectController(PortsController);\n\n private readonly commonPortsFrom3000to6000: number[] =\n Object.keys(portsWithDescription).map(Number);\n\n async up(queryRunner: QueryRunner): Promise<any> {\n const db = await queryRunner.manager.getRepository(Port);\n\n const allPorts = this.commonPortsFrom3000to6000.map(port =>\n Port.from({\n port,\n serviceId: `not assignable (${portsWithDescription[port]})`,\n status: 'assigned-taken-by-os',\n }),\n );\n await db.save(allPorts);\n for (const commonPortObj of allPorts) {\n this.portsController.portsCache.set(\n commonPortObj.serviceId,\n commonPortObj,\n );\n }\n }\n\n async down(queryRunner: QueryRunner): Promise<any> {\n const db = await queryRunner.manager.getRepository(Port);\n await db.remove(\n await db.find({\n where: {\n status: 'assigned-taken-by-os',\n },\n }),\n );\n const allPorts = Array.from(\n this.portsController.portsCache.values(),\n ).filter(f => f.status === 'assigned-taken-by-os');\n for (const port of allPorts) {\n this.portsController.portsCache.delete(port.serviceId);\n }\n }\n}\n","// @ts-nocheck\nimport { Taon } from 'taon/browser';\nimport { QueryRunner } from 'taon-typeorm/browser';\nimport { _ } from 'tnp-core/browser';\nimport { Port, PortsController } from '../lib';\n\n@Taon.Migration({\n className: 'PortsContext_1736454437350_addFreePorts',\n})\nexport class PortsContext_1736454437350_addFreePorts extends Taon.Base\n .Migration {\n protected portsController: PortsController =\n this.injectController(PortsController);\n\n async up(queryRunner: QueryRunner): Promise<any> {\n const portsTableRepo = await queryRunner.manager.getRepository(Port);\n const addFreePortsInRange = _.range(\n this.portsController.START_PORT,\n this.portsController.END_PORT + 1,\n );\n\n const allTakeByOsPort = (\n await portsTableRepo.find({\n where: {\n status: 'assigned-taken-by-os',\n },\n })\n ).map(f => f.port);\n\n const freePortsInRange = addFreePortsInRange.map(port =>\n Port.from({\n port: port,\n serviceId: Port.getTitleForFreePort(port),\n status: 'unassigned',\n }),\n ).filter(f => !allTakeByOsPort.includes(f.port));\n\n await portsTableRepo.save(freePortsInRange);\n\n for (const port of freePortsInRange) {\n this.portsController.portsCache.set(port.serviceId, port);\n }\n }\n\n async down(queryRunner: QueryRunner): Promise<any> {\n // revert this \"something\" in db\n const db = await queryRunner.manager.getRepository(Port);\n await db.remove(\n await db.find({\n where: {\n status: 'unassigned',\n },\n }),\n );\n const allPorts = Array.from(\n this.portsController.portsCache.values(),\n ).filter(f => f.status === 'unassigned');\n for (const port of allPorts) {\n this.portsController.portsCache.delete(port.serviceId);\n }\n }\n}\n","// THIS FILE IS GENERATED - DO NOT MODIFY\nimport {\n MainContext_1736198527297_init,\n PortsContext_1736198527297_init,\n} from './1736198527297_init';\nimport { PortsContext_1736199486472_addingNotAssignablePorts } from './1736199486472_addingNotAssignablePorts';\nimport { PortsContext_1736454437350_addFreePorts } from './1736454437350_addFreePorts';\n// THIS FILE IS GENERATED - DO NOT MODIFY\nexport const MIGRATIONS_CLASSES_FOR_MainContext = {\n /* 06-01-2025 22:22:07 */ MainContext_1736198527297_init,\n};\nexport const MIGRATIONS_CLASSES_FOR_PortsContext = {\n /* 06-01-2025 22:22:07 */ PortsContext_1736198527297_init,\n /* 06-01-2025 22:38:06 */ PortsContext_1736199486472_addingNotAssignablePorts,\n /* 09-01-2025 21:27:17 */ PortsContext_1736454437350_addFreePorts,\n};\n// THIS FILE IS GENERATED - DO NOT MODIFY\n","//@ts-nocheck\nexport * from './migrations_index._auto-generated_';\n","import { BaseContext, Taon } from 'taon/browser';\nimport { os } from 'tnp-core/browser';\nimport { crossPlatformPath, path, Helpers } from 'tnp-core/browser';\n\nimport { MIGRATIONS_CLASSES_FOR_PortsContext } from '../../../migrations';\n\nimport { PortsController } from './ports.controller';\nimport { Port } from './ports.entity';\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n\nexport const PortsContextTemplate = Taon.createContextTemplate(() => ({\n contextName: 'PortsContext',\n appId: 'dev.taon.taon-ports-worker',\n contexts: { BaseContext },\n controllers: { PortsController },\n entities: { Port },\n migrations: { ...MIGRATIONS_CLASSES_FOR_PortsContext },\n skipWritingServerRoutes: true,\n/* */\n/* */\n/* */\n/* */\n/* */\n \n logs: {\n migrations: true,\n },\n}));\n","//#region imports\nimport { UtilsTerminal, _ } from 'tnp-core/browser';\n\nimport { Helpers, Port, PortStatusArr } from '../../index';\nimport { CfontStyle } from '../../models';\nimport { BaseCliWorkerTerminalUI } from '../classes/base-cli-worker/base-cli-worker-terminal-ui';\n\nimport { PortStatus } from './ports.entity';\nimport type { PortsWorker } from './tcp-upd-ports.worker';\n//#endregion\n\nexport class TcpUdpPortsTerminalUI extends BaseCliWorkerTerminalUI<PortsWorker> {\n //#region methods / header text\n protected async headerText(): Promise<string> {\n return 'TCP/UDP|Ports DB';\n }\n //#endregion\n\n //#region methods / header text style\n protected textHeaderStyle(): CfontStyle {\n return 'block';\n }\n //#endregion\n\n //#region methods / crud menu for take by os ports\n protected async crudMenuForTakeByOsPorts() {\n const { selected: actionChoice } =\n await UtilsTerminal.selectActionAndExecute({\n back: {\n name: ' - back - ',\n },\n editPort: {\n name: 'Edit port',\n },\n addPort: {\n name: 'Add port',\n },\n deletePort: {\n name: 'Delete port (make it unassigned)',\n },\n });\n\n switch (actionChoice) {\n case 'editPort':\n await this.editPortTerminalUiProcess();\n break;\n case 'addPort':\n await this.addPortTerminalUiProcess();\n break;\n case 'deletePort':\n await this.deletePortTerminalUiProcess();\n break;\n }\n }\n //#endregion\n\n //#region methods / add port process\n protected async addPortTerminalUiProcess(): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods / select port process\n protected async selectPortProcess(\n ports: Port[],\n title: string,\n ): Promise<Port> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods / delete port process\n protected async deletePortTerminalUiProcess(): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods / edit port process\n protected async editPortTerminalUiProcess(): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods / get worker terminal actions\n getWorkerTerminalActions(options?: { exitIsOnlyReturn?: boolean }) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods / display menu with items\n protected async displayItemsForPortsStatus(status: PortStatus) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods / get new port to add\n private async getNewPortToAdd(): Promise<number> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n}\n","//#region imports\nimport { _ } from 'tnp-core/browser';\n\nimport { Helpers } from '../../index';\nimport { BaseCliWorker } from '../classes/base-cli-worker';\nimport { PortsController } from '../tcp-udp-ports/ports.controller';\nimport { PortsContextTemplate } from '../tcp-udp-ports/tcp-udp-ports.context';\n\nimport { TcpUdpPortsTerminalUI } from './tcp-upd-ports-terminal-ui';\n//#endregion\n\nexport class PortsWorker extends BaseCliWorker<\n PortsController,\n TcpUdpPortsTerminalUI\n> {\n terminalUI = new TcpUdpPortsTerminalUI(this);\n\n workerContextTemplate = PortsContextTemplate as any; // TODO for some reason as any is nessesary\n controllerClass = PortsController;\n}\n","// THIS FILE IS GENERATED - DO NOT MODIFY\nexport const BUILD_FRAMEWORK_CLI_NAME = 'tnp';\nexport const APP_ID = 'com.domain.example.tnp-helpers';\nexport const PROJECT_NPM_NAME = 'tnp-helpers';\nexport const CURRENT_PACKAGE_VERSION = '19.0.39';\n// THIS FILE IS GENERATED - DO NOT MODIFY\n ","//#region imports\nimport { config } from 'tnp-config/browser';\nimport { fse } from 'tnp-core/browser';\nimport { path, crossPlatformPath } from 'tnp-core/browser';\nimport { _ } from 'tnp-core/browser';\n\nimport { Helpers } from '../../index';\nimport { ConfigDatabase } from '../config-database';\nimport { ProjectDatabase } from '../project-database';\nimport { PortsWorker } from '../tcp-udp-ports';\nimport { CURRENT_PACKAGE_VERSION } from '../../build-info._auto-generated_';\n\nimport { BaseProject } from './base-project';\n//#endregion\n\nexport class BaseProjectResolver<PROJECT extends Partial<BaseProject> = any> {\n configDb: ConfigDatabase = new ConfigDatabase(this);\n projectsDb: ProjectDatabase = new ProjectDatabase(this);\n readonly portsWorker: PortsWorker;\n\n //#region fields\n protected readonly NPM_PROJECT_KEY = 'npm';\n protected projects: PROJECT[] = [];\n /**\n * To speed up checking folder I am keeping paths for already checked folder\n * This may break things that are creating new projects\n */\n protected emptyLocations: string[] = [];\n //#endregion\n\n //#region constructor\n constructor(\n protected readonly classFn: any,\n public readonly cliToolName: string,\n ) {\n this.cliToolName = cliToolName;\n // console.log(\"global.frameworkName\",global.frameworkName)\n // if (!UtilsOs.isRunningInVscodeExtension()) {\n // if (!this.cliToolName) {\n // Helpers.throw(`cliToolName is not provided`);\n // }\n this.portsWorker = new PortsWorker(\n 'ports-worker',\n `${this.cliToolName} startCliServicePortsWorker --skipCoreCheck`,\n CURRENT_PACKAGE_VERSION,\n );\n }\n //#endregion\n\n //#region fields & getters / allowed types\n get allowedTypes(): string[] {\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region fields & getters / current project\n /**\n * project from process.cwd()\n */\n get Current(): PROJECT {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region fields & getters / resolve type from\n /**\n * override this\n */\n typeFrom(location: string, recrusiveCall = false): string {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region fields & getters / from\n From(locationOfProject: string | string[], options?: any): PROJECT {\n // console.log({\n // locationOfProj\n // })\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region fields & getters / get project nearest to path\n nearestTo(\n absoluteLocation: string | string[],\n options?: {\n type?: string | string[];\n findGitRoot?: boolean;\n onlyOutSideNodeModules?: boolean;\n },\n ): PROJECT {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region fields & getters / unload project\n unload(projectOrLocationOfProject: PROJECT | string) {\n const location = _.isString(projectOrLocationOfProject)\n ? projectOrLocationOfProject\n : projectOrLocationOfProject?.location;\n\n this.projects = this.projects.filter(f => f.location !== location);\n this.emptyLocations = this.emptyLocations.filter(f => f !== location);\n }\n //#endregion\n\n //#region fields & getters / remove project\n remove(project: PROJECT) {\n/* */\n/* */\n/* */\n/* */\n \n }\n //#endregion\n\n //#region fields & getters / manually add project\n add(project: PROJECT) {\n/* */\n/* */\n \n }\n //#endregion\n\n //#region fields & getters / all projects from location\n\n allProjectFrom(absoluteLocation: string, stopOnCwd: string = '/') {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n allProjectsFromFolder(folderLocation: string): PROJECT[] {\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region fields & getters / sort group of projects\n public sortGroupOfProject<\n T extends BaseProject<any, any> = BaseProject<any, any>,\n >(\n projects: T[],\n resoveDepsArray: (proj: T) => string[],\n projNameToCompare: (proj: T) => string,\n ): T[] {\n const visited: { [key: string]: boolean } = {};\n const stack: { [key: string]: boolean } = {};\n const result: T[] = [];\n\n const visit = (project: T) => {\n if (stack[projNameToCompare(project)]) {\n // Circular dependency detected\n Helpers.error(\n `Circular dependency detected involving project: ${projNameToCompare(\n project,\n )}`,\n );\n }\n\n if (!visited[projNameToCompare(project)]) {\n visited[projNameToCompare(project)] = true;\n stack[projNameToCompare(project)] = true;\n\n const depsResolved = resoveDepsArray(project);\n depsResolved.forEach(dependency => {\n const dependentProject = projects.find(p => {\n // console.log(`comparing :\"${projNameToCompare(p)}\" and \"${dependency}\"`)\n return projNameToCompare(p) === dependency;\n });\n if (dependentProject) {\n visit(dependentProject);\n }\n });\n\n stack[projNameToCompare(project)] = false;\n result.push(project);\n }\n };\n\n projects.forEach(project => visit(project));\n return result;\n // return result.reverse(); // Reverse the result to get the correct order\n }\n //#endregion\n}\n","//#region import\nimport { config } from 'tnp-config/browser';\nimport { CommandOutputOptions } from 'tnp-core/browser';\nimport { CoreModels } from 'tnp-core/browser';\nimport { CLI } from 'tnp-core/browser';\nimport { path, crossPlatformPath } from 'tnp-core/browser';\nimport { fse, chalk } from 'tnp-core/browser';\nimport { _ } from 'tnp-core/browser';\nimport { Utils } from 'tnp-core/browser';\n\nimport { CoreProject, Helpers, UtilsTypescript } from '../../index';\nimport { BaseProjectType } from '../../models';\n\nimport { BaseGit } from './base-git';\nimport type { BaseLibraryBuild } from './base-library-build';\nimport { BaseLinkedProjects } from './base-linked-projects';\nimport { BaseNpmHelpers } from './base-npm-helpers';\nimport { BaseProjectResolver } from './base-project-resolver';\nimport { BaseQuickFixes } from './base-quick-fixes';\nimport { BaseReleaseProcess } from './base-release-process';\nimport { BaseStaticPages } from './base-static-pages';\nimport { BaseVscodeHelpers } from './base-vscode';\n//#endregion\n\nconst takenPorts = [];\n\nexport abstract class BaseProject<\n PROJECT extends BaseProject<any, any> = BaseProject<any, any>,\n TYPE = BaseProjectType,\n> {\n //#region static\n\n //#region static / instance of resovle\n static ins = new BaseProjectResolver<BaseProject>(BaseProject, 'taon');\n //#endregion\n\n //#endregion\n\n //#region fields\n public cache: any = {};\n public static cache: any = {};\n public get globalCache(): any {\n return BaseProject.cache;\n }\n readonly type: TYPE | string = 'unknow';\n\n /**\n * resolve instance\n */\n abstract readonly ins: BaseProjectResolver<PROJECT>;\n /**\n * Unique free port for project instance\n * only available after executing *this.assignFreePort()*\n */\n readonly port: string;\n\n public libraryBuild?: BaseLibraryBuild<BaseProject>;\n public npmHelpers?: BaseNpmHelpers;\n\n get packageJson() {\n return this.npmHelpers.packageJson;\n }\n\n get nodeModules() {\n return this.npmHelpers.nodeModules;\n }\n\n public linkedProjects?: BaseLinkedProjects;\n public vsCodeHelpers?: BaseVscodeHelpers;\n public releaseProcess?: BaseReleaseProcess;\n public git?: BaseGit;\n public quickFixes?: BaseQuickFixes;\n public staticPages?: BaseStaticPages;\n //#endregion\n\n private __location: string;\n get location(): string {\n return this.__location;\n }\n set location(v: string) {\n this.__location = crossPlatformPath(v);\n }\n\n //#region constructor\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n //#endregion\n\n //#region methods & getters / is monorepo\n /**\n * TODO move this to framework\n * Linked projects are actual inside repo\n * not in separated folders/git sub repos\n */\n get isMonorepo(): boolean {\n return false;\n }\n //#endregion\n\n //#region getters & methods / order core projects\n protected orderCoreProjects(coreProjects: CoreProject[]): CoreProject[] {\n const projectMap = new Map<CoreProject, CoreProject[]>();\n\n // Initialize the project map\n for (const project of coreProjects) {\n projectMap.set(project, []);\n }\n\n // Populate the project map with dependencies\n for (const project of coreProjects) {\n if (!projectMap.has(project.extends)) {\n projectMap.set(project.extends, []);\n }\n projectMap.get(project.extends)!.push(project);\n }\n\n const orderedProjects: CoreProject[] = [];\n const visited = new Set<CoreProject>();\n\n const visit = (project: CoreProject) => {\n if (!visited.has(project)) {\n visited.add(project);\n const dependencies = projectMap.get(project);\n if (dependencies) {\n for (const dep of dependencies) {\n visit(dep);\n }\n }\n orderedProjects.push(project);\n }\n };\n\n // Visit each project\n for (const project of coreProjects) {\n visit(project);\n }\n\n return orderedProjects.reverse();\n }\n //#endregion\n\n //#region methods & getters / core\n\n get core(): CoreProject {\n if (!_.isUndefined(this.cache['core'])) {\n return this.cache['core'];\n }\n // Helpers.taskStarted(`Detecting core project for ${this.genericName}`);\n let coreProjects = CoreProject.coreProjects.filter(p =>\n p.recognizedFn(this as any),\n );\n coreProjects = this.orderCoreProjects(coreProjects);\n // Helpers.taskDone(`Core project detected for ${this.genericName}`);\n // console.log('CoreProject.coreProjects', CoreProject.coreProjects.map(c => c.name));\n this.cache['core'] = _.first(coreProjects);\n return this.cache['core'];\n }\n //#endregion\n\n //#region getters & methods / link project exited\n get linkedProjectsExisted(): PROJECT[] {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / set type\n public setType(type: TYPE) {\n // @ts-ignore\n this.type = type;\n }\n //#endregion\n\n //#region methods & getters / type is\n public typeIs(...types: TYPE[]) {\n return this.type && types.includes(this.type as any);\n }\n //#endregion\n\n //#region methods & getters / type is not\n public typeIsNot(...types: TYPE[]) {\n return !this.typeIs(...types);\n }\n //#endregion\n\n //#region methods & getters / basename\n /**\n * project folder basename\n */\n get basename(): string {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / parent basename\n /**\n * project folder parent basename\n */\n get parentBasename(): string {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / name\n /**\n * name from package.json\n */\n get name(): string {\n return this.packageJson?.name || this.nameFromPomXML;\n }\n\n get nameForCli(): string {\n return this.name?.endsWith('-cli') ? this.name : `${this.name}-cli`;\n }\n\n get nameForNpmPackage(): string {\n return this.name;\n }\n\n get nameFromPomXML(): string {\n const artifactIdPattern = /<artifactId>([^<]+)<\\/artifactId>/;\n const match = (this.readFile('pom.xml') || '').match(artifactIdPattern);\n if (match && match[1]) {\n return match[1];\n }\n return '';\n }\n //#endregion\n\n //#region methods & getters / get folder for possible project chhildrens\n protected getFoldersForPossibleProjectChildren(): string[] {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / get all childrens\n protected getAllChildren() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / children\n /**\n * alias to getAllChildren\n */\n get children(): PROJECT[] {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / get child\n getChildBy(nameOrBasename: string, errors = true): PROJECT {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / parent\n get parent(): PROJECT {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / parent\n get nearestParent(): PROJECT {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / grandpa\n get grandpa(): PROJECT {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / generic name\n get allNpmPackagesNames(): string[] {\n return [this.name];\n }\n\n get titleBarName() {\n const allPackagesNames =\n this.allNpmPackagesNames.filter(f => f !== this.basename).length === 0\n ? ''\n : `(${this.allNpmPackagesNames.filter(f => f !== this.basename).join(',')})`;\n\n if (this.parent) {\n return (\n `${path.basename(path.dirname(this.parent.location))}/${this.parent.name}/` +\n `${this.basename} ${allPackagesNames} [ \\${activeEditorShort} ]`\n );\n }\n return (\n `${path.basename(path.dirname(this.location))}/` +\n `${this.basename} (${allPackagesNames}) [ \\${activeEditorShort}]`\n );\n }\n\n get genericName() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / check and bolden path\n private checkAndBoldenPath(fullPath: string) {\n const parts = fullPath.split('/');\n\n const result = parts.map((part, index) => {\n const pathTocheck = parts.slice(0, index + 1).join('/');\n // console.log('pathTocheck', pathTocheck);\n/* */\n/* */\n/* */\n/* */\n \n return part;\n });\n\n return result.join('/');\n }\n //#endregion\n\n //#region methods & getters / path exits\n /**\n * same has project.hasFile();\n */\n pathExists(relativePath: string | string[]): boolean {\n return this.hasFile(relativePath);\n }\n //#endregion\n\n //#region methods & getters / has file\n /**\n * same as project.pathExists();\n */\n hasFile(relativePath: string | string[]): boolean {\n/* */\n/* */\n/* */\n return (void 0);\n }\n hasFolder(relativePath: string | string[]): boolean {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / relative\n /**\n * Function will return relative path from project location\n */\n relative(absoultePath: string) {\n return crossPlatformPath(\n path.relative(\n crossPlatformPath(this.location),\n crossPlatformPath(absoultePath),\n ),\n );\n }\n //#endregion\n\n //#region methods & getters / create folder\n /**\n *\n * @param relativePath\n * @param override it will remove ex\n */\n createFolder(\n relativePath: string | string[],\n options?: {\n override?: boolean;\n },\n ) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / format file(s) with prettier\n formatFile(specificRelativePath: string | string[]) {\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n formatAllFiles() {\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / contains file\n /**\n * same as project.pathhasFileExists();\n * but with path.resolve\n */\n containsFile(fileRelativeToProjectPath: string) {\n const fullPath = path.resolve(\n path.join(this.location, fileRelativeToProjectPath),\n );\n return Helpers.exists(fullPath);\n }\n //#endregion\n\n //#region methods & getters / path for\n /**\n * absolute path:\n * concated project location with relative path\n */\n pathFor(relativePath: string | string[]) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / write json\n writeJson(relativePath: string, json: object) {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / write json\n writeJsonC(relativePath: string, json: object) {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / run\n /**\n * @deprecated us execute instead\n * use output from or more preciese crafted api\n */\n run(command: string, options?: Omit<CoreModels.RunOptions, 'cwd'>) {\n let opt: CoreModels.RunOptions;\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n return Helpers.run(command, opt);\n }\n //#endregion\n\n //#region methods & getters / execute\n /**\n * same as run but async\n */\n public async execute(\n command: string,\n options?: CoreModels.ExecuteOptions & { showCommand?: boolean },\n ): Promise<any> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / try run sync command\n /**\n * try run but continue when it fails\n * @param command\n * @param options\n * @returns\n */\n tryRunSync(\n command: string,\n/* */\n/* */\n \n ): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / output from command\n outputFrom(\n command: string,\n/* */\n/* */\n \n ) {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / remove file\n removeFile(fileRelativeToProjectPath: string) {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / read file\n readFile(fileRelativeToProjectPath: string) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / read file\n /**\n * read json file\n * handle all json files\n * jsonc, json5 , json\n * @param fileRelativeToProjectPath\n * @returns\n */\n readJson<T = {}>(fileRelativeToProjectPath: string): T {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / copy files or folders\n /**\n * copy files or folders from\n * project to destination\n */\n copy(filesOrFolderRelativePathes: string[]): {\n to: (destination: string) => void;\n } {\n return {\n to: (destination: string): void => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n },\n };\n }\n //#endregion\n\n //#region methods & getters / remove (fiel or folder)\n remove(relativePath: string | string[], exactPath = true) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / remove folder by relative path\n removeFolderByRelativePath(relativePathToFolder: string) {\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n //#endregion\n\n get isAngularLib() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n protected getUniqueForTask(task: string): string {\n return `task(${task}) in ${this.genericName}`;\n }\n\n public async registerAndAssignPort(\n taskName: string,\n options?: { startFrom?: number },\n ): Promise<number> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n //#region methods & getters / assign free port to project instance\n /**\n * @deprecated use this.registerAndAssignPort() or Utils.getFreePort() instead\n */\n async assignFreePort(startFrom: number = 4200): Promise<number> {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / remove project from disk/memory\n removeItself() {\n/* */\n/* */\n \n }\n //#endregion\n\n //#region methods & getters / define property\n /**\n * Purpose: not initializing all classes at the beginning\n * Only for BaseFeatureForProject class\n */\n defineProperty<PROJECT>(\n variableName: keyof PROJECT,\n classFn: Function,\n options?: {\n customInstanceReturn?: () => object;\n },\n ) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / filter only copy\n /**\n * fs.copy option filter function for copying only selected folders from project\n */\n filterOnlyCopy(basePathFoldersOnlyToInclude: string[]) {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / filter don't copy\n /**\n * fs.copy option filter function for copying only not selected folders from project\n */\n filterDontCopy(basePathFoldersTosSkip: string[]) {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / get main branches\n /**\n * main/default hardcoded branches\n */\n getMainBranches(): string[] {\n return ['master', 'develop', 'stage', 'prod', 'test'];\n }\n //#endregion\n\n //#region methods & getters / use feature in branch name for tests\n useFeatureInBranchNameForTests() {\n return false;\n }\n //#endregion\n\n //#region methods & getters / reset process\n async resetProcess(overrideBranch?: string, recrusive = false) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n //#endregion\n\n //#region methods & getters / link project to\n linkTo(destPackageLocation: string) {\n/* */\n/* */\n \n }\n //#endregion\n\n //#region methods & getters / set value to json\n setValueToJSON(\n relativePath: string | string[],\n lodashGetPath: string,\n value: any,\n ): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / set value to json\n setValueToJSONC(\n relativePath: string | string[],\n lodashGetPath: string,\n value: any,\n ): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / set value to json\n setValueToJSON5(\n relativePath: string | string[],\n lodashGetPath: string,\n value: any,\n ): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / get value from json\n getValueFromJSON(\n relativePath: string | string[],\n lodashGetPath: string,\n defaultValue: any = void 0,\n ): any {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / get value from jsonc\n getValueFromJSONC(\n relativePath: string | string[],\n lodashGetPath: string,\n defaultValue: any = void 0,\n ): any {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / write file\n\n writeFile(\n relativePath: string | string[],\n content: string,\n options?: { formatWithPrettier?: boolean },\n ) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n //#endregion\n\n //#region getters & methods / run command and get string\n public runCommandGetString(this: BaseProject, command: string) {\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region getters & methods / to string\n toString = () => {\n return `${this.name}=>${this.location}`;\n };\n //#endregion\n\n //#region getters & methods / find partners names\n get parentsNames() {\n/* */\n/* */\n return (void 0);\n }\n\n //#region getters & methods / open location\n openLocation(relativeFolderPath: string) {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n private findParentsNames(\n project?: PROJECT,\n parent?: PROJECT,\n result = [],\n ): string[] {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region getters & methods / kill all instance\n tryKillAllElectronInstances() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region getters & methods / init\n /**\n * init project files structure and depedencies\n */\n async init(initOptions?: any) {\n throw new Error('TODO IMPLEMENT');\n }\n //#endregion\n\n //#region getters & methods / link\n /**\n * globally link npm as package\n */\n async link() {\n throw new Error('TODO IMPLEMENT');\n }\n //#endregion\n\n //#region getters & methods / struct\n /**\n * init project files structure without depedencies\n */\n async struct(initOptions?: any) {\n throw new Error('TODO IMPLEMENT');\n }\n //#endregion\n\n //#region getters & methods / build\n /**\n * init and build() project\n */\n async test(testOptions?: any) {\n throw new Error('TODO IMPLEMENT');\n }\n //#endregion\n\n //#region getters & methods / build\n /**\n * init and build() project\n */\n async build(buildOptions?: any) {\n throw new Error('TODO IMPLEMENT');\n }\n //#endregion\n\n //#region getters & methods / publish\n /**\n * publish project to npm\n */\n async publish(publishOptions?: any): Promise<void> {\n this.npmHelpers.publishToNpmRegistry();\n }\n //#endregion\n\n //#region getters & methods / build\n async release(releaseOptions?: any) {\n throw new Error('TODO IMPLEMENT');\n }\n //#endregion\n\n //#region getters & methods / lint\n /**\n * lint porject\n */\n async lint(lintOptions?: any) {\n Helpers.info(`\n\n\n COMMIT LINT NOT IMPLEMENTED\n\n\n `);\n }\n //#endregion\n\n //#region getters & methods / info\n /**\n * get info about porject\n */\n async info(): Promise<string> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n}\n","import { BaseProject } from './base-project';\n\nexport abstract class BaseFeatureForProject<\n PROJECT extends BaseProject<any,any> = BaseProject<any,any>,\n> {\n get ins() {\n return this.project.ins;\n }\n\n constructor(protected project: PROJECT) {}\n}\n","//#region import\nimport { config, FilesNames } from 'tnp-config/browser';\nimport { chalk } from 'tnp-core/browser';\nimport { CoreModels } from 'tnp-core/browser';\nimport { path, crossPlatformPath } from 'tnp-core/browser';\nimport { _, UtilsTerminal } from 'tnp-core/browser';\n\nimport { Helpers } from '../../index';\nimport {\n LibrariesBuildOptions,\n LibraryBuildCommandOptions,\n NgProject,\n} from '../../models';\n\nimport { BaseFeatureForProject } from './base-feature-for-project';\nimport type { BaseProject } from './base-project';\n//#endregion\n\n/**\n * Base library build for standard angular/typescript projects\n */\nexport abstract class BaseLibraryBuild<\n PROJECT extends BaseProject<BaseProject, any>,\n> extends BaseFeatureForProject<PROJECT> {\n private cache: any = {};\n protected readonly tempOrgTsConfigFile = `tmp-original-${config.file.tsconfig_json}`;\n\n //#region getters & methods / sort by deps\n protected sortByDeps(libraries: PROJECT[]): PROJECT[] {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region getters & methods / get sorted libraries by deps for build\\\n /**\n * Use cases:\n * 1. build all libraries in normal mode\n * 2. build all libraries in watch mode\n * 3. build selected libraries in normal mode\n * (with first time all libraries will be build)\n * 4. build selected libraries in watch mode\n * (use normal build for not selected libraries)\n * 5. build selected libraries in watch mode\n * (skip normal build for not selected libraries)\n */\n async selectAndSaveLibraries(\n // this: {},\n {\n selectedLibs,\n watch,\n watchBuildSupported,\n skipAllLibsQuestion,\n useLastUserConfiguration,\n }: {\n selectedLibs: PROJECT[];\n watch: boolean;\n watchBuildSupported?: boolean;\n skipAllLibsQuestion?: boolean;\n useLastUserConfiguration?: boolean;\n },\n ): Promise<{ selectedLibs: PROJECT[]; skipRebuildingAllForWatch: boolean }> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region getters & methods / angular libraries\n /**\n * angular libraries from angular.json\n */\n get libraries(): PROJECT[] {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n protected getLibraries() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region getters & methods / build libraries\n /**\n * Angular library build\n */\n public async buildLibraries(\n // this:{},\n {\n watch = false,\n strategy,\n releaseBuild = false,\n copylink_to_node_modules,\n outputLineReplace,\n libraries,\n useLastUserConfiguration,\n }: LibrariesBuildOptions<PROJECT> & { watch?: boolean } = {} as any,\n ): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n //#endregion\n\n //#region getters & methods / lib watch build process\n protected async libWatchBuildProcess({\n lib,\n locationsForNodeModules,\n strategy,\n outputLineReplace,\n }: {\n lib: PROJECT;\n locationsForNodeModules: string[];\n strategy: 'link' | 'copy';\n outputLineReplace?: (outputLine: string) => string;\n }) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region getters & methods / lib normal build process\n protected async libNormalBuildProcess({\n lib,\n locationsForNodeModules,\n strategy,\n outputLineReplace,\n }: {\n lib: PROJECT;\n locationsForNodeModules: string[];\n strategy: 'link' | 'copy';\n outputLineReplace?: (outputLine: string) => string;\n }) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region getters & methods / get library build success command\n getLibraryBuildCommand(\n options?: LibraryBuildCommandOptions,\n ): string | undefined {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region getters & methods / get library build success command\n get getLibraryBuildSuccessComamnds(): string[] {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region getters & methods / select copy to projects\n async selectCopytoProjects(): Promise<string[]> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region private methods / change tsconfig for libraries typescript proper local types\n private async changeTsConfigForLibrariesTypes(): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region private methods / replace tsconfig pathes\n protected async replaceTsConfigsPathes() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region private methods / restore original tsconfig\n private async restoreOriginalTsConfig() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n}\n","import { config } from 'tnp-config/browser';\nimport { crossPlatformPath, path, _ } from 'tnp-core/browser';\nimport { Helpers } from '../../../lib';\nimport { PackageJson } from 'type-fest';\n\nexport interface BaseJsonFileReaderOptions<DATA> {\n /**\n * cwd for <my-json>.json\n * <cwd>/<my-json>\n * (you can also provide full path - basename will be cut)\n */\n cwd?: string;\n /**\n * file name\n * example: package.json, taon.json etc.\n */\n fileName?: string;\n /**\n * json content to read from memory\n */\n jsonContent?: Partial<DATA>;\n /**\n * callback for external reload\n */\n reloadInMemoryCallback?: (data: DATA) => void;\n /**\n * use json with comments reader to read json file\n */\n readJsonAsJsonWithComments?: boolean;\n /**\n * default value for data\n * if file not exist\n * (ONLY FOR cwd + fileName mode)\n */\n defaultValue?: Partial<DATA>;\n}\n\n/**\n * Base class for reading json files\n * There are 2 modes of reading json files:\n * - cwd + fileName (read and write to disk in cwd)\n * - jsonContent (read and write to memory and use\n * reloadInMemoryCallback for external reload)\n */\nexport class BaseJsonFileReader<DATA> {\n //#region fields\n /**\n * null when package.json not exist\n */\n protected data: DATA | null;\n\n /**\n * use json with comments reader to read package.json\n */\n protected readonly readJsonAsJsonWithComments: boolean = false;\n //#endregion\n\n //#region constructor\n public readonly cwd: string;\n protected readonly fileName: string;\n /**\n * @deprecated\n * use only when cwd and fileName are not provided\n */\n protected readonly jsonContent?: Partial<DATA>;\n protected readonly defaultValue?: Partial<DATA>;\n protected readonly reloadInMemoryCallback?: (data: DATA) => void;\n constructor(options: BaseJsonFileReaderOptions<DATA>) {\n let {\n cwd,\n fileName,\n jsonContent,\n reloadInMemoryCallback,\n readJsonAsJsonWithComments,\n defaultValue,\n } = options;\n if (cwd) {\n cwd = crossPlatformPath(cwd);\n if (cwd.endsWith(`/${config.file.package_json}`)) {\n cwd = cwd.replace(`/${config.file.package_json}`, '');\n }\n this.cwd = cwd;\n }\n\n this.defaultValue = defaultValue;\n this.fileName = fileName;\n if (cwd && jsonContent) {\n throw new Error(\n `You can't provide cwd and jsonContent at the same time. Choose one.`,\n );\n }\n if (!cwd && !jsonContent) {\n throw new Error(`You need to provide cwd or jsonContent`);\n }\n this.readJsonAsJsonWithComments = !!readJsonAsJsonWithComments;\n this.reloadInMemoryCallback = reloadInMemoryCallback;\n this.jsonContent = _.cloneDeep(jsonContent);\n this.reloadPackageJsonInMemory();\n }\n //#endregion\n\n //#region path\n /**\n * cwd + fileName\n */\n get path() {\n return crossPlatformPath([this.cwd, this.fileName]);\n }\n //#endregion\n\n //#region reload package json in memory\n /**\n * if something else change package.json in this project\n * and you know that you need to reload it..\n */\n reloadPackageJsonInMemory(): void {\n if (this.jsonContent) {\n this.data = _.cloneDeep(this.jsonContent as any);\n } else {\n try {\n if (this.readJsonAsJsonWithComments) {\n this.data = Helpers.readJsonC(this.path);\n } else {\n this.data = Helpers.readJson(this.path);\n }\n if (!this.data && this.defaultValue) {\n this.data = _.cloneDeep(this.defaultValue as any);\n }\n } catch (error) {\n if (this.defaultValue) {\n this.data = _.cloneDeep(this.defaultValue as any);\n } else {\n this.data = null;\n }\n }\n }\n this.reloadInMemoryCallback &&\n this.reloadInMemoryCallback(_.cloneDeep(this.data as any));\n }\n //#endregion\n\n //#region write package json to disk\n saveToDisk(purpose?: string) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region link to\n linkTo(destination: string): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region get all data\n getAllData(): DATA {\n return _.cloneDeep(this.data);\n }\n //#endregion\n\n //#region set all data\n setAllData(data: DATA): void {\n this.data = _.cloneDeep(data);\n this.saveToDisk();\n }\n //#endregion\n}\n","import { config } from 'tnp-config/browser';\nimport { _, CoreModels } from 'tnp-core/browser';\nimport { Helpers } from 'tnp-core/browser';\nimport { PackageJson as PackageJsonBase } from 'type-fest';\n\nimport {\n BaseJsonFileReader,\n BaseJsonFileReaderOptions,\n} from './base-json-file-reader';\n\nexport type PackageJson = PackageJsonBase & {\n lastBuildTagHash?: string;\n publisher?: string;\n displayName?: string;\n};\n\n//#region package json dependency obj\nexport type PackageJsonDependencyObj =\n | 'dependencies'\n | 'devDependencies'\n | 'peerDependencies'\n | 'resolutions';\n\nexport const PackageJsonDependencyObjArr = [\n 'dependencies',\n 'devDependencies',\n 'peerDependencies',\n 'resolutions',\n] as PackageJsonDependencyObj[];\n//#endregion\n\nexport class BasePackageJson extends BaseJsonFileReader<PackageJson> {\n constructor(\n options: Omit<BaseJsonFileReaderOptions<PackageJson>, 'fileName'>,\n ) {\n super({ ...options, fileName: config.file.package_json });\n }\n\n //#region name\n\n /**\n * 'dependencies'\n * 'devDependencies'\n * 'peerDependencies'\n * 'resolutions';\n * and whatever is in package.json to npm install\n */\n get dependenciesTypesArray(): PackageJsonDependencyObj[] {\n return PackageJsonDependencyObjArr;\n }\n\n get name(): string {\n return this.data?.name || '';\n }\n\n async setName(name: string): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region dev dependencies\n /**\n * devDependencies dependencies\n */\n get devDependencies(): PackageJson['devDependencies'] {\n return _.cloneDeep(this.data ? this.data.devDependencies : {}) || {};\n }\n //#endregion\n\n //#region resolutions dependencies\n /**\n * resolutions dependencies\n */\n get resolutions(): PackageJson['resolutions'] {\n return _.cloneDeep(this.data ? this.data['resolutions'] : {}) || {};\n }\n //#endregion\n\n //#region dependencies\n /**\n * npm dependencies from package.json\n */\n get dependencies(): PackageJson['dependencies'] {\n return _.cloneDeep(this.data ? this.data.dependencies : {}) || {};\n }\n\n get description(): string {\n return this.data?.description || '';\n }\n\n get displayName(): string {\n return this.data.displayName || '';\n }\n\n get publisher(): string {\n return this.data.publisher || '';\n }\n\n /**\n * set the WHOLE dependencies object\n * THIS WILL NOT MERGE -> IT WILL REPLACE WHOLE DEPENDENCIES OBJECT\n */\n setDependencies(dependencies: PackageJson['dependencies']) {\n if (!this.data) {\n Helpers.warn(\n `[taon][setDependencies] Package.json not exist in ${this.cwd}`,\n );\n return;\n }\n this.data.dependencies = dependencies;\n this.saveToDisk();\n }\n //#endregion\n\n /**\n * set the WHOLE dependencies object\n * THIS WILL NOT MERGE -> IT WILL REPLACE WHOLE DEPENDENCIES OBJECT\n */\n setDevDependencies(devDependencies: PackageJson['devDependencies']) {\n if (!this.data) {\n Helpers.warn(\n `[taon][setDevDependencies] Package.json not exist in ${this.cwd}`,\n );\n return;\n }\n this.data.devDependencies = devDependencies;\n this.saveToDisk();\n }\n //#endregion\n\n //#region peer dependencies\n /**\n * peerDependencies dependencies\n */\n get peerDependencies(): PackageJson['peerDependencies'] {\n return _.cloneDeep(this.data ? this.data.peerDependencies : {}) || {};\n }\n\n /**\n * set the WHOLE peerDependencies object\n * THIS WILL NOT MERGE -> IT WILL REPLACE WHOLE PEER DEPENDENCIES OBJECT\n */\n setPeerDependencies(peerDependencies: PackageJson['peerDependencies']) {\n if (!this.data) {\n Helpers.warn(\n `[taon][setPeerDependencies] Package.json not exist in ${this.cwd}`,\n );\n return;\n }\n this.data.peerDependencies = peerDependencies;\n this.saveToDisk();\n }\n //#endregion\n\n //#region remove dev dependencies\n removeDevDependencies() {\n if (!this.data) {\n Helpers.warn(\n `[taon][removeDevDependencies] Package.json not exist in ${this.cwd}`,\n );\n return;\n }\n try {\n delete this.data.devDependencies;\n } catch (error) {}\n this.saveToDisk();\n }\n //#endregion\n\n //#region all dependencies\n /**\n * @returns object witl all deps from current project package json\n */\n get allDependencies(): { [packageName: string]: string } {\n return this.allDepsFromPackageJson(this.data);\n }\n\n /**\n * @returns object witl all deps from package json\n */\n protected allDepsFromPackageJson(packageJson: PackageJson) {\n return _.cloneDeep(\n _.merge({\n ...PackageJsonDependencyObjArr.reduce((acc, depObj) => {\n return {\n ...acc,\n ...(packageJson[depObj] || {}),\n };\n }, {}),\n }),\n );\n }\n //#endregion\n\n //#region version\n /**\n * version from package.json -> property version\n */\n get version(): string {\n return this.data?.version;\n }\n\n setVersion(version: string): void {\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region bin\n /**\n * bin with cli config from package.json\n */\n get bin(): Partial<Record<string, string>> {\n return _.cloneDeep(this.data?.bin || {}) as any;\n }\n\n set bin(value: Partial<Record<string, string>>) {\n this.data.bin = value;\n this.saveToDisk('setting bin');\n }\n //#endregion\n\n //#region engines\n get engines(): PackageJson['engines'] {\n return _.cloneDeep(this.data.engines);\n }\n\n async setEngines(engines: PackageJson['engines']): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region homepage\n get homepage(): PackageJson['homepage'] {\n return _.cloneDeep(this.data.homepage);\n }\n\n async setHomepage(homepage: PackageJson['homepage']): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region version with patch plus one\n get versionWithPatchPlusOne(): string {\n const ver = this.version.split('.');\n if (ver.length > 0) {\n ver[ver.length - 1] = (parseInt(_.last(ver)) + 1).toString();\n }\n return ver.join('.');\n }\n //#endregion\n\n //#region version with minor plus one and path zero\n get versionWithMinorPlusOneAndPatchZero(): string {\n const ver = this.version.split('.');\n if (ver.length > 1) {\n ver[1] = (parseInt(ver[1]) + 1).toString();\n for (let index = 2; index < ver.length; index++) {\n ver[index] = '0';\n }\n } else {\n Helpers.warn(\n `[npm-project] something went wrong with bumping minor version`,\n );\n }\n return ver.join('.');\n }\n //#endregion\n\n //#region version with major plus one and minor zero and patch zero\n get versionWithMajorPlusOneAndMinorZeroAndPatchZero(): string {\n const ver = this.version.split('.');\n if (ver.length > 0) {\n ver[0] = (parseInt(_.first(ver)) + 1).toString();\n for (let index = 1; index < ver.length; index++) {\n ver[index] = '0';\n }\n } else {\n Helpers.warn(\n `[npm-project] something went wrong with bumping major version`,\n );\n }\n return ver.join('.');\n }\n //#endregion\n\n //#region get version path as number\n get versionPathAsNumber(): number {\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region major version\n /**\n * Major Version from package.json\n */\n // @ts-ignore\n get majorVersion(): number {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region minor version\n /**\n * Minor Version from package.json\n */\n // @ts-ignore\n get minorVersion(): number {\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region bump path version\n async bumpPatchVersion() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region getters & methods / get version for\n getVersionFor(releaseType: CoreModels.ReleaseVersionType): string {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region update deps from locations\n updateDepsFrom(locations: string[]) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region update dependency\n /**\n * this will NOT SET dependency if\n * dependency name is not in package.json\n */\n updateDependency({\n packageName,\n version,\n }: {\n packageName: string;\n version: string | null;\n }): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region is private\n get isPrivate(): boolean {\n/* */\n/* */\n return (void 0);\n }\n\n setIsPrivate(value: boolean) {\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n get sideEffects(): boolean {\n/* */\n/* */\n return (void 0);\n }\n\n //#region set new version\n async setMainProperty(main: string, purpose = ''): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region build hash\n setBuildHash(hash: string): void {\n this.data.lastBuildTagHash = hash;\n this.saveToDisk('setting build hash');\n }\n getBuildHash(): string {\n return this.data.lastBuildTagHash;\n }\n //#endregion\n}\n","//#region imports\nimport { config } from 'tnp-config/browser';\nimport { UtilsOs } from 'tnp-core/browser';\nimport {\n CoreModels,\n crossPlatformPath,\n fse,\n path,\n _,\n chalk,\n dateformat,\n} from 'tnp-core/browser';\nimport type { BaseNpmHelpers } from '../../../lib';\n\nimport { Helpers } from '../../index';\n\nimport type { BaseProject } from './base-project';\n//#endregion\n\nexport type DedupePackage =\n | string\n | {\n package: string;\n excludeFrom?: string[];\n includeOnlyIn?: string[];\n };\n\nexport class BaseNodeModules<\n NPM_HELPERS extends BaseNpmHelpers = BaseNpmHelpers,\n> {\n protected _npmHelpersType: NPM_HELPERS;\n\n //#region constructor\n constructor(\n /**\n * my-path/node_modules\n */\n protected cwd: string,\n protected npmHelpers: NPM_HELPERS,\n ) {\n this.npmHelpers = npmHelpers;\n }\n //#endregion\n\n //#region path\n /**\n * cwd + node_modules\n */\n get path() {\n return crossPlatformPath([this.cwd, config.folder.node_modules]);\n }\n //#endregion\n\n //#region path for package\n /**\n * Path to package inside node_modules folder\n * @example <project-path>/node_modules/<package-name>\n */\n pathFor(packageName: string | string[]): string {\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region real path of node_modules - if node_modules is a link\n /**\n * real path of node_modules\n * if node_modules is a link\n * it will return real path.\n * if node_modules is folder = path\n */\n get realPath() {\n try {\n const realPath = fse.realpathSync(this.path);\n return realPath;\n } catch (error) {\n return this.path;\n }\n }\n //#endregion\n\n //#region prevent wrong link destination\n protected preventWrongLinkDestination(dest: string): string {\n if (!path.isAbsolute(dest)) {\n Helpers.error(\n `[linkTo..] target destination path is not absolute \"${dest}\"`,\n );\n }\n\n if (dest.endsWith(`/${config.folder.node_modules}`)) {\n return dest;\n }\n return crossPlatformPath([dest, config.folder.node_modules]);\n }\n //#endregion\n\n //#region link node_modules to other project\n linkToProject(project: Partial<BaseProject>) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region link to project or location\n linkToLocation(location: string): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region make sure node modules installed\n async makeSureInstalled(options?: Omit<CoreModels.NpmInstallOptions, 'pkg'>) {\n if (this.isEmpty()) {\n await this.reinstall(options);\n }\n }\n //#endregion\n\n //#region delete node_modules\n async remove(options?: { skipQuestion?: boolean }): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region remove package inside\n removePackage(packageInside: string): void {\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region reinstall node modules\n async reinstall(options?: Omit<CoreModels.NpmInstallOptions, 'pkg'>) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region is link\n get isLink(): boolean {\n return Helpers.isSymlinkFileExitedOrUnexisted(this.path);\n }\n //#endregion\n\n unlinkNodeModulesWhenLinked() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n //#region empty\n get empty() {\n return this.isEmpty();\n }\n //#endregion\n\n //#region fields & getters / empty node_modules\n /**\n * @returns true if node_modules folder is empty\n * DEEP CHECK - also if node_modules is a link\n * and is not existent\n */\n isEmpty() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region prepare command\n /**\n * Prepare command for npm install\n * (or yarn install)\n */\n async prepareCommand(\n options: CoreModels.NpmInstallOptions,\n cwd: string = this.cwd,\n ): Promise<string> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region dedupe packages action\n dedupePackages(packagesConfig?: DedupePackage[], countOnly = false): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n //#endregion\n}\n","import { config } from 'tnp-config/browser';\n\nimport { BaseJsonFileReader } from './base-json-file-reader';\n\n//#region bower.json interface\n/**\n * Minimal interface describing a bower.json file according to:\n * https://github.com/bower/spec/blob/master/json.md\n */\nexport interface BowerJson {\n name: string;\n version?: string;\n description?: string;\n main?: string | string[];\n keywords?: string[];\n authors?: Array<string | { name: string; email?: string; homepage?: string }>;\n license?: string;\n homepage?: string;\n private?: boolean;\n repository?: {\n type: string;\n url: string;\n };\n ignore?: string[];\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n // Optional fields:\n resolutions?: Record<string, string>;\n moduleType?: string | string[];\n // ...and so on, for any additional custom fields\n}\n//#endregion\n\nexport class BaseBowerJson extends BaseJsonFileReader<BowerJson> {\n constructor(public cwd: string) {\n super({ cwd, fileName: config.file.bower_json });\n }\n\n //#region bower dependencies\n get dependencies() {\n return (this.data ? this.data.dependencies : {}) || {};\n }\n //#endregion\n}\n","//#region imports\nimport { config } from 'tnp-config/browser';\nimport { UtilsTerminal } from 'tnp-core/browser';\nimport {\n chalk,\n child_process,\n crossPlatformPath,\n fse,\n path,\n} from 'tnp-core/browser';\nimport { _ } from 'tnp-core/browser';\nimport { CoreModels } from 'tnp-core/browser';\nimport { PackageJson } from 'type-fest';\n\nimport { Helpers } from '../../index';\n\nimport { BaseBowerJson } from './base-bower-json';\nimport { BaseFeatureForProject } from './base-feature-for-project';\nimport { BaseNodeModules } from './base-node-modules';\nimport { BasePackageJson } from './base-package-json';\nimport type { BaseProject } from './base-project';\n\n//#endregion\n\nexport class BaseNpmHelpers<\n PROJECT extends BaseProject = BaseProject,\n> extends BaseFeatureForProject<PROJECT> {\n //#region fields\n public readonly packageJson: BasePackageJson;\n public readonly _packageJsonType: typeof BasePackageJson = BasePackageJson;\n private readonly _packageJsonTypeOriginal: typeof BasePackageJson =\n BasePackageJson;\n\n public readonly nodeModules: BaseNodeModules;\n public readonly _nodeModulesType: typeof BaseNodeModules = BaseNodeModules;\n private readonly __nodeModulesTypeOriginal: typeof BaseNodeModules =\n BaseNodeModules;\n\n public readonly bowerJson: BaseBowerJson;\n\n //#endregion\n\n //#region constructor\n constructor(project: PROJECT) {\n super(project);\n this.project = project;\n if (this._packageJsonType === this._packageJsonTypeOriginal) {\n this.packageJson = new this._packageJsonType({ cwd: project.location });\n }\n if (this._nodeModulesType === this.__nodeModulesTypeOriginal) {\n this.nodeModules = new this._nodeModulesType(\n project.location,\n this as any,\n );\n }\n this.bowerJson = new BaseBowerJson(project.location);\n }\n //#endregion\n\n //#region prefer yarn over npm\n preferYarnOverNpm(): boolean {\n return false;\n }\n //#endregion\n\n //#region reset package-lock.json\n async resetPackageLockJson() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region start npm task\n startNpmTask(taskName: string, additionalArguments?: string | object) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region check if logged in to registry\n /**\n *\n * @param registry without specified registr is checking npm registry\n * @returns\n */\n async isLoggedInToRegistry(registry?: string): Promise<boolean> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region login to registry\n /**\n * Prompt the user to log in to a specific npm registry.\n * @param {string} [registry] - Optional npm registry URL.\n * @returns {Promise<void>} - A promise that resolves when the login process completes.\n */\n async loginToRegistry(registry?: string): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region check if logged in to npm\n async makeSureLoggedInToNpmRegistry(registry?: string): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region should release lib\n async shouldReleaseMessage(options: {\n releaseVersionBumpType: CoreModels.ReleaseVersionType;\n versionToUse?: string;\n children?: BaseProject[];\n whatToRelease: {\n itself: boolean;\n children: boolean;\n };\n skipQuestionToUser?: boolean;\n }): Promise<boolean> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region publish to npm registry\n /**\n * @param registry when not specified, it will use the default npm registry\n */\n async publishToNpmRegistry(options?: { registry?: string }): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region get package version from npm registry\n getPackageVersionFromNpmRegistry(\n packageName: string,\n options?: {\n registry?: string;\n },\n ): Promise<string | undefined> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n}\n","//#region import\nimport { load } from 'json10-writer/browser';\nimport { config } from 'tnp-config/browser';\nimport { _, chalk, crossPlatformPath, path, UtilsTerminal } from 'tnp-core/browser';\n\nimport {\n Helpers,\n LinkedPorjectsConfig,\n LinkedProject,\n UtilsTypescript,\n} from '../../index';\n\nimport { BaseFeatureForProject } from './base-feature-for-project';\nimport type { BaseProject } from './base-project';\n//#endregion\n\nexport class BaseLinkedProjects<\n PROJECT extends BaseProject = any,\n> extends BaseFeatureForProject<PROJECT> {\n private cache: any = {};\n\n //#region methods & getters / embedded project\n get embeddedProject(): PROJECT {\n const cacheKey = 'embeddedProject' + _.kebabCase(this.project.location);\n if (!_.isUndefined(this.cache[cacheKey])) {\n return this.cache[cacheKey];\n }\n // Helpers.taskStarted(`Detecting embedded project for ${this.location}`); // TODO it is slow\n const nearsetProj = this.project.ins.nearestTo(\n crossPlatformPath([this.project.location, '..']),\n ) as PROJECT;\n const linkedPorj = nearsetProj?.linkedProjects?.linkedProjects.find(l => {\n const copareTo = crossPlatformPath([\n nearsetProj.location,\n l.relativeClonePath,\n ]);\n if (this.project.location === copareTo) {\n return true;\n }\n if (l.remoteUrl() === this.project.git.originURL) {\n return true;\n }\n return false;\n });\n if (!linkedPorj || !linkedPorj.internalRealtiveProjectPath) {\n return;\n }\n const pathToEmbededProj = crossPlatformPath([\n nearsetProj.location,\n linkedPorj.relativeClonePath,\n linkedPorj.internalRealtiveProjectPath || '',\n ]);\n const embdedresult = this.project.ins.From(pathToEmbededProj) as PROJECT;\n // Helpers.taskDone(`Embedded project detected for ${this.location}`);\n this.cache[cacheKey] = embdedresult;\n return this.cache[cacheKey];\n }\n //#endregion\n\n //#region methods & getters / projects db location\n get projectsDbLocation() {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / save location to db\n async saveLocationToDB() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / save all linked projects to db\n async saveAllLinkedProjectsToDB() {\n const proj = this.project;\n await proj.linkedProjects.saveLocationToDB();\n for (const link of proj.linkedProjects.linkedProjects) {\n const linkedPorj = this.project.ins.From([\n proj.location,\n link.relativeClonePath,\n link.internalRealtiveProjectPath || '',\n ]) as PROJECT;\n // console.log({ linkedPorj })\n if (linkedPorj) {\n await linkedPorj.linkedProjects.saveLocationToDB();\n } else {\n Helpers.warn(`\n In project ${proj.genericName}\n\n Folder ${link.relativeClonePath} is missing projects...\n\n `);\n }\n }\n }\n //#endregion\n\n //#region methods & getters / add linked project\n addLinkedProject(linkedProj: LinkedProject | string) {\n const linkedProject: LinkedProject = _.isString(linkedProj)\n ? LinkedProject.fromName(linkedProj)\n : linkedProj;\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / add linked projects\n addLinkedProjects(linkedProjs: LinkedProject[]) {\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / set linked projects config\n setLinkedProjectsConfig(linkedPorjectsConfig: Partial<LinkedPorjectsConfig>) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / get linked projects config path\n private get linkedProjectsConfigPath() {\n return this.project.pathFor(config.file.linked_projects_json);\n }\n\n private get linkedProjectsConfigTempPath() {\n return this.project.pathFor([`tmp-${config.file.linked_projects_json}`]);\n }\n //#endregion\n\n //#region methods & getters / recreate linked projects config\n protected recreateLinkedProjectsConfig() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / get linked projects config\n getLinkedProjectsConfig(): LinkedPorjectsConfig {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / linked projects\n get linkedProjects(): LinkedProject[] {\n return this.getLinkedProjectsConfig().projects || [];\n }\n //#endregion\n\n //#region methods & getters / detected linked projects\n get detectedLinkedProjects(): LinkedProject[] {\n const detectedLinkedProjects = LinkedProject.detect(\n this.project.location,\n { recursive: true }, // TOOD fix recrusive\n );\n return detectedLinkedProjects;\n }\n //#endregion\n\n //#region methods & getters / linked projects prefix\n get linkedProjectsPrefix() {\n return this.getLinkedProjectsConfig().prefix;\n }\n //#endregion\n\n //#region getters & methods / reset linked projects only to core branches\n resetLinkedProjectsOnlyToCoreBranches() {\n return false;\n }\n //#endregion\n\n //#region getters & methods / get unexisted projects\n async cloneUnexistedLinkedProjects(setOrigin: 'ssh' | 'http') {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n}\n","//#region imports\nimport { config } from 'tnp-config/browser';\nimport { chalk, dateformat, fse, Utils } from 'tnp-core/browser';\nimport { crossPlatformPath, path, _, UtilsTerminal } from 'tnp-core/browser';\n\nimport {\n CommitData,\n Helpers,\n PushProcessOptions,\n TypeOfCommit,\n} from '../../index';\nimport { translate } from '../translate';\n\nimport { BaseFeatureForProject } from './base-feature-for-project';\nimport type { BaseProject } from './base-project';\n//#endregion\n\nexport class BaseGit<\n PROJECT extends BaseProject = any,\n> extends BaseFeatureForProject<PROJECT> {\n //#region methods & getters / unstage all files\n unstageAllFiles(): void {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / revert file changes\n revertFileChanges(fileReletivePath: string): void {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / clone\n async clone(\n url: string,\n destinationFolderName = '',\n branchName?: string,\n ): Promise<string> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / restore last version\n restoreLastVersion(relativeFilePath: string): void {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / stage all files\n stageAllFiles(): void {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / stage all files\n stageFile(relativeFilePath: string): void {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / stash\n stash(options?: { onlyStaged?: boolean }): void {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / stash\n rebase(toBranch: string): void {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / stash apply\n stashApply(): void {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / fetch\n fetch(all = false): void {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / reset files\n resetFiles(...relativePathes: string[]): void {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / is inside git repo\n get isInsideGitRepo(): boolean {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / is without git repository\n get isWithoutGitRepository(): boolean {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / is git root\n get isGitRoot(): boolean {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / origin url\n get originURL(): string {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / commit\n commit(commitMessage?: string): void {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / add and commit\n /**\n * alias to stage all and commit\n */\n addAndCommit(commitMessage: string): void {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / get default develop Branch\n /**\n * general default development branch for all kinds of projects\n */\n getDefaultDevelopmentBranch(): string {\n return 'develop';\n }\n //#endregion\n\n //#region methods & getters / is using action commit\n isUsingActionCommit(): boolean {\n return false;\n }\n //#endregion\n\n jiraIssuesAreOutsideBrackets(): boolean {\n return false;\n }\n\n async getUserInfo(\n global = false,\n ): Promise<{ name?: string; email?: string }> {\n/* */\n/* */\n return (void 0);\n }\n\n async setUserInfo(\n { name, email }: { name?: string; email?: string },\n global = false,\n ): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n //#region methods & getters / stage all and commit\n stageAllAndCommit(commitMessage: string): void {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / push current branch\n async pushCurrentBranch(options?: {\n force?: boolean;\n origin?: string;\n askToRetry?: boolean;\n forcePushNoQuestion?: boolean;\n }): Promise<boolean> {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / all origins\n get allOrigins(): { origin: string; url: string }[] {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / uncommited files\n get uncommitedFiles(): string[] {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / there are some uncommited change\n get thereAreSomeUncommitedChange(): boolean {\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / there are some uncommited change except\n thereAreSomeUncommitedChangeExcept(filesList: string[] = []): boolean {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n /**\n * Resolve last changes\n * - uncommited changes\n * - action commits to melt\n */\n async resolveLastChanges(options?: {\n // TODO WIP on that\n tryAutomaticActionFirst?: boolean;\n projectNameAsOutputPrefix?: string;\n }): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n //#region methods & getters / has action commits to melt\n get hasActionCommitsToMelt(): boolean {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / melt action commits\n /**\n * @returns number of melted commits\n */\n meltActionCommits(): number {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region push to git repo\n /**\n *\n * @param newVersion\n * @param pushWithoutAsking\n */\n async tagAndPushToGitRepo(\n newVersion: string,\n autoReleaseUsingConfig: boolean,\n isCiProcess: boolean,\n ): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / pull current branch\n async pullCurrentBranch(options?: {\n askToRetry?: boolean;\n /**\n * default true, when false it will throw error instead process.exit(0)\n */\n exitOnError?: boolean;\n defaultHardResetCommits?: number;\n }): Promise<void> {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / current branch name\n get currentBranchName(): string {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / list of current git changes\n get listOfCurrentGitChanges(): {\n modified: string[];\n deleted: string[];\n created: string[];\n } {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / get branches names by\n getBranchesNamesBy(pattern: string | RegExp): string[] {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / reset soft HEAD\n resetSoftHEAD(HEAD = 1): void {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / reset hard\n resetHard(options?: { HEAD?: number }): void {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / count commits\n countCommits(): number {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / has any commits\n hasAnyCommits() {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / is in merge process\n get isInMergeProcess() {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / last commit date\n lastCommitDate() {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / last commit hash\n lastCommitHash() {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / last commit message\n lastCommitMessage(): string {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / last commit message\n async penultimateCommitMessage(): Promise<string> {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / get commit message by index\n async getCommitMessageByIndex(index: number): Promise<string> {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / get commit message by hash\n async getCommitMessageByHash(hash: string): Promise<string> {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / get commit hash by index\n async getCommitHashByIndex(index: number): Promise<string> {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / penultimate commit hash\n penultimateCommitHash(): string {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / check tag exists\n checkTagExists(tag: string): boolean {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / checkout\n checkout(\n branchName: string,\n options?: {\n createBranchIfNotExists?: boolean;\n fetchBeforeCheckout?: boolean;\n switchBranchWhenExists?: boolean;\n },\n ): void {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n allowedGitEmailDomains(): string[] {\n return [];\n }\n\n cleanRepoFromAnyFilesExceptDotGitFolder(): void {\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n //#region methods & getters / checkout from to\n checkoutFromTo(\n checkoutFromBranch: string,\n branch: string,\n origin = 'origin',\n ): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / last tag name for major version\n /**\n *\n * @param majorVersion example: v1, v2 etc.\n * @returns tag name\n */\n lastTagNameForMajorVersion(majorVersion): string {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / last tag hash\n lastTagHash(): string {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / remote origin url\n get remoteOriginUrl(): string {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / remote origin url\n /**\n * get provider of remote origin\n */\n get remoteProvider(): string {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / last tag version name\n get lastTagVersionName(): string {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / staged files\n get stagedFiles(): string[] {\n/* */\n/* */\n return (void 0);\n }\n get stagedFilesRelativePaths(): string[] {\n/* */\n/* */\n return (void 0);\n }\n\n //#endregion\n\n //#region methods & getters / rename origin\n /**\n * TODO does this make any sense\n */\n renameOrigin(newNameOrUlr: string): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region getters & methods / translate git commit from args\n /**\n * By default no translation of commit\n */\n transalteGitCommitFromArgs(): { from: string; to: string } {\n return { from: void 0 as string, to: void 0 as string };\n }\n //#endregion\n\n //#region getters & methods / us git branches when commiting and pushing\n /**\n * By defult true.. when commit branches will not function.\n * (false is better for simple projects)\n */\n useGitBranchesWhenCommitingAndPushing(): boolean {\n return true;\n }\n //#endregion\n\n //#region getters & methods / automatically add all changes when pushing to git\n /**\n * usefull when pushing in project with childrens as git repos\n */\n automaticallyAddAllChangesWhenPushingToGit(): boolean {\n return false;\n }\n //#endregion\n\n //#region getters & methods / use git branches as metadata for commits\n /**\n * usefull when pushing in project with childrens as git repos\n */\n useGitBranchesAsMetadataForCommits(): boolean {\n return true;\n }\n //#endregion\n\n //#region getters & methods / clone to\n /**\n * @returns true if clone was successful\n */\n async cloneTo(cwd: string, newProjectName?: string): Promise<boolean> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region getters & methods / get children\n /**\n * This is only for push/pull process\n *\n * There are 2 types of projects:\n * - with linked-projects.json\n * - with children from external folder\n *\n * projects that are children of this project (with its own git repo)\n */\n get gitChildren(): PROJECT[] {\n let childrenRepos: PROJECT[] = [];\n\n if (this.project.linkedProjects.linkedProjects.length > 0) {\n childrenRepos = this.project.linkedProjects.linkedProjects\n .map(c => {\n return this.project.ins.From([\n this.project.location,\n c.relativeClonePath,\n ]) as PROJECT;\n })\n .filter(f => !!f);\n } else {\n childrenRepos = this.project.children as PROJECT[];\n }\n\n childrenRepos = childrenRepos.filter(\n f => f.git.isInsideGitRepo && f.git.isGitRoot,\n ) as PROJECT[];\n return childrenRepos;\n }\n //#endregion\n\n //#region getters & methods / set remote origin type\n protected async setRemoteOriginType(\n setOrigin: 'ssh' | 'http',\n ): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / push process\n async pullProcess(\n options: {\n skipCloneGitChildren?: boolean;\n setOrigin?: 'ssh' | 'http';\n } = {},\n ): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n private async validateEmailDomain(\n allowedEmailsEnds: string[],\n ): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n protected async _afterPullProcessAction(\n setOrigin: 'ssh' | 'http',\n ): Promise<void> {\n // nothing yet\n }\n\n //#region methods & getters / push process\n async pushProcess(options: PushProcessOptions = {}): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / before any action on git root\n public _beforeAnyActionOnGitRoot(): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / before push action\n protected async _beforePushProcessAction(\n setOrigin: 'ssh' | 'http',\n ): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / before push action\n protected async _beforePullProcessAction(\n setOrigin: 'ssh' | 'http',\n skipCloneGitChildren = false,\n ): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / resovle commit message\n protected async _getCommitMessage(\n typeOfCommit: TypeOfCommit,\n args: string[],\n commitMessageRequired?: boolean,\n /**\n * only needed when push github\n * and I forgot to add my username before issue\n * taon pfix proper input my-repo#344\n * that should be\n * taon pfix proper input my-username/my-repo#344\n */\n currentOrigin?: string,\n ): Promise<CommitData> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / prevent accidental branch change for taon projects\n /**\n * This will prevent accidental branch change for taon projects\n * @returns branch name\n */\n duringPushWarnIfProjectNotOnSpecyficDevBranch(): string {\n return '';\n }\n //#endregion\n\n //#region methods & getters / get changed files in commit by hash\n async getChangedFilesInCommitByHash(hash: string): Promise<string[]> {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / get changed files in commit\n /**\n * @param index 0 - means last commit\n */\n async getChangedFilesInCommitByIndex(index: number): Promise<string[]> {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / get changes summary\n async changesSummary(): Promise<string> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / reset is resting also children\n /**\n * If true command navi reset will reset project\n * and its children.\n *\n * If false command navi reset will reset only project.\n */\n resetIsRestingAlsoChildren(): boolean {\n return true;\n }\n //#endregion\n}\n","import {\n crossPlatformPath,\n fse,\n os,\n path,\n Utils,\n UtilsTerminal,\n} from 'tnp-core/browser';\nimport { _ } from 'tnp-core/browser';\n\nimport { Helpers } from '../../index';\n\nimport { BaseFeatureForProject } from './base-feature-for-project';\nimport type { BaseProject } from './base-project';\n\nexport interface ISettingsVscode {\n 'workbench.colorTheme': string;\n 'workbench.colorCustomizations'?: {\n 'activityBar.background'?: string;\n 'statusBar.background'?: string;\n 'statusBar.debuggingBackground'?: string;\n };\n}\n\nexport class BaseVscodeHelpers<\n PROJECT extends BaseProject = any,\n> extends BaseFeatureForProject<PROJECT> {\n /**\n * settings.json relative path\n */\n public readonly relativePathSettingsJsonVscode = '.vscode/settings.json';\n public readonly relativePathExtensionJsonVScode = '.vscode/extensions.json';\n\n protected readonly currentSettingsValue: ISettingsVscode;\n saveCurrentSettings(): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n constructor(project: PROJECT) {\n super(project);\n this.currentSettingsValue =\n Helpers.readJsonC(project.pathFor(this.relativePathSettingsJsonVscode)) ||\n {};\n }\n\n getExtensions(): string[] {\n return Helpers.uniqArray([\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n ]).map(c => (c as string).toLowerCase());\n }\n\n //#region extensions\n /**\n * @deprecated use getExtensions() instead\n */\n private get extensions(): string[] {\n return this.getExtensions();\n }\n //#endregion\n\n //#region recreate extensions\n recreateExtensions(): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region recraete window title\n recreateWindowTitle(options?: { save?: boolean }): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region install extensions\n async installExtensions(\n extensions = this.extensions,\n defaultSelectedAll = false,\n ): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region strip version\n /**\n * This pattern finds a dash followed by at least one digit.\n * It removes everything from that dash to the end of the string.\n * Examples:\n * \"name-of-extension-1.2.3\" -> \"name-of-extension\"\n * \"extension-0.9.5-win32-x64\" -> \"extension\"\n */\n protected stripVersion(folderName: string): string {\n return folderName.replace(/(-\\d+.*)$/, '');\n }\n //#endregion\n\n //#region installed extensions\n get installedExtensions(): string[] {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region apply proper global settings\n async applyProperGlobalSettings(): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n}\n","//#region imports\nimport { config } from 'tnp-config/browser';\nimport { CoreModels, chalk, dateformat, _, UtilsTerminal } from 'tnp-core/browser';\n\nimport { Helpers } from '../../index';\nimport type { ChangelogData } from '../../models';\nimport { CommitData } from '../commit-data';\n\nimport { BaseFeatureForProject } from './base-feature-for-project';\nimport type { BaseProject } from './base-project';\n//#endregion\n\nexport class BaseReleaseProcess<\n PROJECT extends BaseProject<any, any> = any,\n> extends BaseFeatureForProject<PROJECT> {\n //#region fields\n\n /**\n * Automatic release process of patch plus one version\n */\n automaticRelease: boolean = false;\n versionType: CoreModels.ReleaseVersionType;\n preReleaseVersionTag: CoreModels.PreReleaseVersionTag;\n lastChangesSummary: string;\n newVersion: string;\n commitsForChangelog: {\n commitMessages: string;\n index: number;\n }[] = [];\n //#endregion\n\n //#region methods & getters / start release\n startRelease(options?: Partial<BaseReleaseProcess<PROJECT>>): Promise<void> {\n throw new Error('Method not implemented.');\n }\n //#endregion\n\n //#region methods & getters / get release words\n getReleaseWords(): string[] {\n return ['release'];\n }\n //#endregion\n\n //#region methods & getters / select changelog commits\n async selectChangelogCommits(): Promise<\n {\n commitMessages: string;\n index: number;\n }[]\n > {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / get commits up to release commit\n private async getCommitsUpToReleaseCommit(): Promise<\n {\n commitMessages: string;\n index: number;\n }[]\n > {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n public async checkBundleQuestion(\n cwdForCode: string,\n checkMessage = `Select action before publishing ?`,\n ): Promise<boolean> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n //#region methods & getters / publish to npm\n /**\n * @returns true if publish , faslse if just version bump\n */\n public async publishToNpm(\n cwdForCode = this.project.pathFor('dist'),\n automaticRelease = this.automaticRelease,\n ): Promise<boolean> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / test after publish\n protected async testAfterPublish(): Promise<boolean> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / test before publish\n protected async testBeforePublish(): Promise<boolean> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / commit and push\n protected async commitAndPush(): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / release commit template\n protected releaseCommitTemplate(): string {\n return `Release v${this.newVersion} + changelog.md update`;\n }\n //#endregion\n\n //#region methods & getters / test libraries\n private async testLibraries(): Promise<boolean> {\n try {\n this.project.run('npm run test', { output: true }).sync();\n return true;\n } catch (error) {\n Helpers.info(`Test failed, you can run test manually`);\n return false;\n }\n }\n //#endregion\n\n //#region methods & getters / build all libraries\n async buildAllLibraries() {\n await this.project.libraryBuild.buildLibraries({\n watch: false,\n releaseBuild: true,\n });\n }\n //#endregion\n\n //#region methods & getters / reset release files\n async resetReleaseFiles() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / to bump projects\n get toBumpProjects() {\n const toBumpProjects = [\n this.project,\n ...this.project.libraryBuild.libraries,\n ] as PROJECT[];\n\n return toBumpProjects;\n }\n //#endregion\n\n //#region methods & getters / bump new version everywhere\n async bumpNewVersionEverywhere() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / confirm release type\n async confirmNewVersion(): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / select release type\n protected async selectReleaseType(\n versionToUseResolveFn?: (\n releaseVersionBumpType: CoreModels.ReleaseVersionType,\n ) => string,\n ): Promise<CoreModels.ReleaseVersionType> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / commit message in changelog transform fn\n protected async commitMessageInChangelogTransformFn(\n message: string,\n ): Promise<string> {\n return message;\n }\n //#endregion\n\n //#region methods & getters / calculate item\n async getChangelogContentToAppend(askForEveryItem: boolean): Promise<string> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / update changelog.md from commits\n /**\n * TODO extend this to all commits from last release\n */\n async updateChangeLogFromCommits(): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / extract changed libraries in last commit\n async extractChangedLibrariesInCommit(\n hashOrIndex: string | number,\n ): Promise<string> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / change log item template\n async changelogItemTemplate(\n hashOrIndex: string | number,\n confirmEveryItem: boolean = false,\n ): Promise<string> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / generate last changes summary\n async generateLastChangesSummary(): Promise<string> {\n const lastReleaseCommitData = await this.getLastReleaseCommitData();\n const hasLastReleaseCommit = lastReleaseCommitData.index !== -1;\n const lastReleaseCommitMsg = !hasLastReleaseCommit\n ? '< nothing release yet >'\n : lastReleaseCommitData.lastReleaseCommitMsg;\n\n return `${chalk.bold.gray('Last changelog.md notes summary')}:\n${await this.getLastPackageVersionChangesFromChnagelog()}\n\n${chalk.bold.gray(\n hasLastReleaseCommit ? 'Last commits up to release commit' : 'Last 3 commits',\n)}:\n${await this.getLastChangesFromCommits({\n maxMessagesToCheck: hasLastReleaseCommit ? Number.POSITIVE_INFINITY : 3,\n stopOnCommitMessage: hasLastReleaseCommit\n ? lastReleaseCommitData.lastReleaseCommitMsg\n : '',\n})}\n `;\n }\n //#endregion\n\n //#region methods & getters / get last changes from commits\n async getLastChangesFromCommits({\n maxMessagesToCheck = 3,\n stopOnCommitMessage = '',\n }: {\n /**\n * default 3\n */\n maxMessagesToCheck?: number;\n /**\n * stop serching on commit message\n */\n stopOnCommitMessage?: string;\n } = {}): Promise<string> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / get last release commit data\n async getLastReleaseCommitData(): Promise<{\n lastReleaseCommitMsg: string;\n /**\n * -1 if not found\n */\n index: number;\n }> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / get last changes from changelog\n async getLastPackageVersionChangesFromChnagelog(): Promise<string> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / get changelog path\n private get changeLogPath() {\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / get changelog content\n get changelogContent() {\n return this.project.readFile(this.changeLogPath) || '';\n }\n //#endregion\n\n //#region methods & getters / change log key word\n changeLogKeyWord() {\n return 'Changes in version';\n }\n //#endregion\n\n //#region methods & getters / get changelog data\n getChnagelogData(): ChangelogData[] {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n}\n","//#region imports\n/* */\n/* */\n \nimport { IncCompiler } from 'incremental-compiler/browser';\nimport { _ } from 'tnp-core/browser';\nimport { BaseProject } from './base-project';\nimport { Helpers } from '../../../lib';\nimport { config } from 'tnp-config/browser';\n//#endregion\n\nexport abstract class BaseCompilerForProject<\n ADDITIONAL_DATA = any,\n PROJECT extends BaseProject = BaseProject,\n> extends IncCompiler.Base<ADDITIONAL_DATA> {\n //#region check folder compiler\n protected checkFolderCompiler(\n project: PROJECT,\n options: IncCompiler.Models.BaseClientCompilerOptions,\n dontCheck = false,\n ) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region constructor\n\n constructor(\n public project: PROJECT,\n options?: IncCompiler.Models.BaseClientCompilerOptions,\n allowFolderOutSideProject = false,\n ) {\n super();\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n //#endregion\n}\n","import { ChangeOfFile } from 'incremental-compiler/browser';\nimport { _, Utils } from 'tnp-core/browser';\n\nimport { BaseCompilerForProject } from './base-compiler-for-project';\nimport { BaseProject } from './base-project';\n\nexport abstract class BaseDebounceCompilerForProject<\n ADDITIONAL_DATA = any,\n PROJECT extends BaseProject = BaseProject,\n> extends BaseCompilerForProject<ADDITIONAL_DATA, PROJECT> {\n protected initialParams: ADDITIONAL_DATA;\n /**\n * default debounce time is 1s\n */\n protected debounceTime = 1000;\n abstract action({\n changeOfFiles,\n asyncEvent,\n }: {\n changeOfFiles: ChangeOfFile[];\n asyncEvent: boolean;\n });\n\n /**\n * current files that are in project\n */\n protected exitedFilesAbsPathes: string[] = [];\n\n /**\n * @deprecated use action() instead\n */\n public async syncAction(\n absFilesPathes: string[],\n initialParams: ADDITIONAL_DATA,\n ): Promise<void> {\n this.initialParams = initialParams || ({} as any);\n this.exitedFilesAbsPathes = absFilesPathes;\n return await this.action({\n changeOfFiles: absFilesPathes.map(\n fileAbsolutePath => new ChangeOfFile(fileAbsolutePath, 'change'),\n ),\n asyncEvent: false,\n });\n }\n\n private lastAsyncFilesChanges: ChangeOfFile[] = [];\n private debounceAction = _.debounce(() => {\n const changeOfFiles = this.lastAsyncFilesChanges;\n this.lastAsyncFilesChanges = [];\n this.action({\n changeOfFiles,\n asyncEvent: true,\n });\n }, this.debounceTime);\n\n /**\n * @deprecated use action() instead\n */\n public async asyncAction(\n asyncEvents: ChangeOfFile,\n initialParams?: ADDITIONAL_DATA,\n ): Promise<void> {\n this.lastAsyncFilesChanges.push(asyncEvents);\n if (asyncEvents.eventName === 'unlink') {\n this.exitedFilesAbsPathes = this.exitedFilesAbsPathes.filter(\n f => f !== asyncEvents.fileAbsolutePath,\n );\n } else if (asyncEvents.eventName === 'unlinkDir') {\n this.exitedFilesAbsPathes = this.exitedFilesAbsPathes.filter(\n f =>\n !f.startsWith(asyncEvents.fileAbsolutePath.replace(/\\/$/, '') + '/'),\n );\n } else {\n this.exitedFilesAbsPathes.push(asyncEvents.fileAbsolutePath);\n this.exitedFilesAbsPathes = Utils.uniqArray(this.exitedFilesAbsPathes);\n }\n await this.debounceAction();\n }\n}\n","//#region imports\nimport { config } from 'tnp-config/browser';\nimport { _, fse, path } from 'tnp-core/browser';\nimport { PackageJson } from 'type-fest';\n\nimport { Helpers, UtilsQuickFixes } from '../../index';\n\nimport { BaseFeatureForProject } from './base-feature-for-project';\nimport type { BaseProject } from './base-project';\n//#endregion\n\nexport class BaseQuickFixes<\n PROJECT extends BaseProject<any, any> = BaseProject<any, any>,\n> extends BaseFeatureForProject<PROJECT> {\n constructor(public project: PROJECT) {\n super(project);\n this.project = project;\n }\n\n /**\n * filesRelativePaths example:\n * ['node_modules/@types/glob/index.d.ts', '/home/user/project/src/app.ts']\n *\n * @param filesRelativeAbsPaths\\ Quick fix for typescript check\n */\n excludeNodeModulesDtsFromTypescriptCheck(filesRelativeAbsPaths:string[]) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n\n }\n\n //#region fix sqlite pacakge in node_modules\n fixSQLLiteModuleInNodeModules() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region add missing empty libs\n public createDummyEmptyLibsReplacements(missingLibsNames: string[] = []) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n}\n","//#region imports\nimport { ChildProcess, execSync } from 'child_process';\n\nimport { Helpers, UtilsTerminal } from 'tnp-core/browser';\nimport { CoreModels, _ } from 'tnp-core/browser';\n\nimport type { BaseProject, TypeOfCommit } from './base';\nimport type { BaseProcessManger } from './base/classes/base-process-manager';\n//#endregion\n\n//#region base project type\nexport type BaseProjectType = CoreModels.BaseProjectType;\nexport const BaseProjectTypeArr = CoreModels.BaseProjectTypeArr;\n//#endregion\n\n//#region ng project\n/**\n * Angular project type\n */\nexport type NgProject = {\n projectType: 'library' | 'application';\n /**\n * where ng-packagr.json is located, tsconfig etc.\n */\n root: string;\n /**\n * Source code project\n */\n sourceRoot: string;\n prefix: string;\n};\n\n//#endregion\n\n//#region library build options\nexport type LibraryBuildCommandOptions = {\n watch?: boolean;\n};\n//#endregion\n\n//#region libraries build options\nexport type LibrariesBuildOptions<PROJECT extends BaseProject = BaseProject> = {\n strategy?: 'link' | 'copy';\n /**\n * by default we are copying all libraries to node_modules of itself\n */\n copylink_to_node_modules?: string[];\n releaseBuild?: boolean;\n /**\n * override build options for specific libraries\n * @todo\n */\n libraries?: PROJECT[];\n outputLineReplace?: (\n libForOutput: PROJECT,\n useExternalProvidedLibs: boolean,\n ) => (line: string) => string;\n useLastUserConfiguration?: boolean;\n};\n//#endregion\n\n//#region test build options\nexport type TestBuildOptions = {\n onlySpecyficFiles?: string[];\n updateSnapshot?: boolean;\n};\n//#endregion\n\n//#region change log data\nexport interface ChangelogData {\n changes: string[];\n version: string;\n date: string;\n}\n//#endregion\n\n//#region push process options\nexport interface PushProcessOptions {\n force?: boolean;\n typeofCommit?: TypeOfCommit;\n mergeUpdateCommits?: boolean;\n askToConfirmPush?: boolean;\n askToConfirmCommit?: boolean;\n skipLint?: boolean;\n askToConfirmBranchChange?: boolean;\n origin?: string;\n args?: string[];\n setOrigin?: 'ssh' | 'http';\n exitCallBack?: () => void;\n forcePushNoQuestion?: boolean;\n overrideCommitMessage?: string;\n commitMessageRequired?: boolean;\n /**\n * only needed when push github\n * and I forgot to add my username before issue\n * taon pfix proper input my-repo#344\n * that should be\n * taon pfix proper input my-username/my-repo#344\n */\n currentOrigin?: string;\n skipChildren?: boolean;\n noExit?: boolean;\n}\n//#endregion\n\n//#region command config\nexport class CommandConfig {\n static from(config: CommandConfig): CommandConfig {\n return new CommandConfig(config as any);\n }\n private constructor(data: CommandConfig) {\n Object.keys(data).forEach(key => {\n this[key] = data[key];\n });\n }\n name: string;\n cmd: string;\n\n headerMessageWhenActive?: string;\n /**\n * If true, the output will be stored in a buffer and displayed when requested.\n * Default: true\n */\n useDataBuffer?: boolean;\n /**\n * Process that should be started\n * before this process starts.\n */\n shouldBeActiveOrAlreadyBuild?: CommandConfig[] = [];\n goToNextCommandWhenOutput?:\n | string\n | {\n stdoutContains?: string | string[];\n stderrContains?: string | string[];\n };\n}\n//#endregion\n\n//#region process manager config\nexport interface ProcessManagerConfig<PROJECT> {\n title: string;\n header?: string;\n commands: CommandConfig[];\n /**\n * Default: false\n * If false - after first selection of processes, it will be not possible\n * to add new processes to build and build will be done after\n * all processes are done.\n */\n watch?: boolean;\n}\n//#endregion\n\n//#region command process state\nexport enum CommandProcessState {\n NOT_STARTED = 'not-started',\n WAITING_TO_START = 'waiting-to-start',\n RUNNING = 'running',\n FINISHED_AND_RUNNING = 'finished-and-running', // only for watch mode\n FINISHED = 'finished', // only for normal mode\n}\n//#endregion\n\n//#region command process run options\nexport interface CommandProcessRunOptions {\n progress?: (n: number, total: number) => void;\n resolveNextProcess?: (\n currentProcess: CommandProcess,\n ) => Promise<CommandProcess>;\n resolveWhenFinish?: boolean;\n}\n//#endregion\n\n//#region command process\nexport class CommandProcess {\n //#region fields and getters\n private state: CommandProcessState = CommandProcessState.NOT_STARTED;\n public readonly child_process?: ChildProcess;\n\n protected get cmd(): string {\n return this.config.cmd;\n }\n\n public get name(): string {\n return this.config.name;\n }\n\n get headerMessageWhenActive(): string | undefined {\n return this.config.headerMessageWhenActive;\n }\n\n get pid(): number | undefined {\n return this.child_process.pid;\n }\n\n get isFinished(): boolean {\n return [\n CommandProcessState.FINISHED,\n CommandProcessState.FINISHED_AND_RUNNING,\n ].includes(this.state);\n }\n\n get isRunning(): boolean {\n return [\n CommandProcessState.RUNNING,\n CommandProcessState.FINISHED_AND_RUNNING,\n ].includes(this.state);\n }\n\n get isWaitingToStart(): boolean {\n return this.state === CommandProcessState.WAITING_TO_START;\n }\n\n markForStart(): void {\n if (this.isRunning || this.isWaitingToStart) {\n console.warn(`Already running or waiting to start: ${this.name}`);\n return;\n }\n this.state = CommandProcessState.WAITING_TO_START;\n }\n\n //#endregion\n public dependenciesProcesses: CommandProcess[] = [];\n\n //#region constructor\n constructor(\n private project: BaseProject,\n private config: CommandConfig,\n private manager: BaseProcessManger,\n ) {}\n //#endregion\n\n //#region run\n\n async start(options?: CommandProcessRunOptions): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region stop\n async stop(): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n}\n//#endregion\n\n//#region models\nexport type CfontStyle =\n | 'block'\n | 'slick'\n | 'tiny'\n | 'grid'\n | 'pallet'\n | 'shade'\n | 'chrome'\n | 'simple'\n | 'simpleBlock'\n | '3d'\n | 'simple3d'\n | 'huge';\n\nexport type CfontAlign = 'left' | 'center' | 'right' | 'block';\n//#endregion\n\n//#region docker-compose models\nexport interface DockerComposeFile {\n version: string;\n services: Record<string, DockerService>;\n networks?: Record<string, DockerNetwork>;\n volumes?: Record<string, DockerVolume>;\n}\n\nexport interface DockerService {\n build?: string | DockerBuild;\n image?: string;\n container_name?: string;\n ports?: string[];\n environment?: Record<string, string> | string[];\n volumes?: string[];\n depends_on?: string[];\n command?: string | string[];\n networks?: string[] | Record<string, unknown>;\n restart?: string;\n entrypoint?: string | string[];\n working_dir?: string;\n labels?: Record<string, string>;\n env_file?: string | string[];\n args?: Record<string, string> | string[];\n}\n\nexport interface DockerBuild {\n context: string;\n dockerfile?: string;\n args?: Record<string, string>;\n target?: string;\n}\n\nexport interface DockerNetwork {\n driver?: string;\n external?: boolean;\n name?: string;\n}\n\nexport interface DockerVolume {\n driver?: string;\n external?: boolean;\n name?: string;\n}\n//#endregion","//#region imports\nimport { _, chalk, Helpers, UtilsTerminal } from 'tnp-core/browser';\n\nimport { CommandProcess, ProcessManagerConfig } from '../../models';\n\nimport { BaseFeatureForProject } from './base-feature-for-project';\nimport { BaseProject } from './base-project';\n\nexport { CommandConfig } from '../../models';\n//#endregion\n\n//#region custom console select/multiselect\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n//#endregion\n\nexport class BaseProcessManger<\n PROJECT extends BaseProject<any, any> = BaseProject<any, any>,\n> extends BaseFeatureForProject<PROJECT> {\n //#region fields and getters\n private initialOptions: ProcessManagerConfig<PROJECT>;\n private allProcesses: CommandProcess[] = [];\n private selectedProcesses: CommandProcess[] = [];\n public outputBuffer: string[] = [];\n public startedProcesses = new Set<CommandProcess>();\n public watch = false;\n\n //#region fields and getters / show logs\n private _showLogs: boolean = false;\n public set showLogs(value: boolean) {\n this._showLogs = value;\n this.hideOutput.stderr = !value;\n this.hideOutput.stdout = !value;\n }\n get showLogs(): boolean {\n return this._showLogs;\n }\n\n /**\n * special config for Helpers.executer\n */\n hideOutput = {\n stderr: !this.showLogs,\n stdout: !this.showLogs,\n acceptAllExitCodeAsSuccess: true,\n };\n //#endregion\n\n //#endregion\n\n //#region constructor\n constructor(project: PROJECT) {\n super(project as any);\n }\n //#endregion\n\n //#region init\n async init<PROJECT = BaseProject<any, any>>(\n initialOptions: ProcessManagerConfig<PROJECT>,\n ): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region show output\n private showOutput(): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region kill or build menu\n private async killOrBuildMenu(): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region make sure selected processes are running\n async makeSureSelectedProcessesAreRunning(): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region start process with dependencies\n private async startProcessWithDependencies(\n process: CommandProcess,\n startedProcesses = new Set<CommandProcess>(),\n parent: CommandProcess | undefined = undefined,\n ): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region build menu\n private async buildMenu(allowedToShowOutput = true): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n}\n","//#region imports\nimport { config } from 'tnp-config/browser';\nimport { _, crossPlatformPath, path } from 'tnp-core/browser';\nimport { CLASS } from 'typescript-class-helpers/browser';\n\nimport { Helpers } from '../../index';\n\nimport { BaseProject } from './base-project';\nimport type { BaseProjectResolver } from './base-project-resolver';\n\n//#endregion\n\nexport abstract class BaseCommandLineFeature<\n PARAMS extends {} = any,\n PROJECT extends BaseProject<any, any> = BaseProject,\n PROJECT_RESOLVER extends\n BaseProjectResolver<PROJECT> = BaseProjectResolver<PROJECT>,\n> {\n /**\n * params from command line\n */\n protected params: PARAMS;\n protected ins: PROJECT_RESOLVER;\n\n protected __transformArgsBeforeResolvingParams__(args: string[]): string[] {\n const transformaed = args.map(a => {\n return a\n .replace(`--copyTo`, '--copyto')\n .replace(`copyTo`, '--copyto')\n .replace(`copyto`, '--copyto');\n });\n return transformaed;\n }\n\n /**\n * clean args without params from command line\n */\n args: string[];\n /**\n * first arg from args\n */\n get firstArg() {\n return _.first(this.args);\n }\n\n /**\n * last arg from args\n */\n get lastArg() {\n return _.last(this.args);\n }\n\n private __project: PROJECT;\n protected get project(): PROJECT {\n return this.__project;\n }\n protected set project(v: PROJECT) {\n // if (!v) {\n // Helpers.error(\n // `Command line cannot be executed on folder that is not know project.`,\n // false,\n // true,\n // );\n // }\n this.__project = v;\n }\n\n\n constructor(\n public readonly argsWithParams: string,\n protected readonly methodNameToCall: string,\n /**\n * nearest project to cwd\n */\n project: PROJECT,\n /**\n * process.cwd()\n */\n protected cwd: string,\n ins: PROJECT_RESOLVER,\n ) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n\n public _exit(code = 0): void {\n process.exit(code);\n }\n\n protected __initialize__() {}\n\n _tryResolveChildIfInsideArg() {\n const {\n resolved,\n clearedCommand,\n } = // @ts-ignore\n Helpers.cliTool.resolveItemFromArgsBegin<PROJECT>(this.args, arg =>\n this.project.getChildBy(arg.replace(/\\/$/, '')),\n );\n this.project = resolved ? resolved : this.project;\n this.args = resolved ? clearedCommand.split(' ') : this.args;\n }\n\n /**\n * method called when not using class methods\n */\n public abstract _();\n}\n","export * from './base-project';\nexport * from './base-project-resolver';\nexport * from './base-feature-for-project';\nexport * from './base-library-build';\nexport * from './base-json-file-reader';\nexport * from './base-package-json';\nexport * from './base-node-modules';\nexport * from './base-npm-helpers';\nexport * from './base-linked-projects';\nexport * from './base-git';\nexport * from './base-vscode';\nexport * from './base-release-process';\nexport * from './base-compiler-for-project';\nexport * from './base-debounce-compiler-for-project';\nexport * from './base-quick-fixes';\nexport * from './base-cli-worker';\nexport * from './base-process-manager';\nexport * from './base-command-line-feature';\n\n/* */\n/* */\n/* */\n/* */\n \n","//#region imports\nimport { _ } from 'tnp-core/browser';\nimport { path } from 'tnp-core/browser';\n\nimport { Helpers } from '../index';\n//#endregion\n\n//#region open source proviers\nconst openSourceProvidersIssuePrefix = [\n 'GH',\n // 'GITHUB',\n // 'BB',\n // 'BITBUCKET',\n // 'GL',\n // 'GITLAB',\n];\n//#endregion\n\n//#region common commit msg branch\nexport type CommonCommitMsgBranch =\n | 'refactor'\n | 'chore'\n | 'style'\n | 'docs'\n | 'test'\n | 'ci'\n | 'build'\n | 'release';\n//#endregion\n\n//#region type of commit\nexport type TypeOfCommit =\n | 'feature'\n | 'bugfix'\n | 'performance'\n | CommonCommitMsgBranch;\n//#endregion\n\nexport type TypeOfMsgPrefix = 'feat' | 'fix' | 'perf' | CommonCommitMsgBranch;\nconst regexTeamsID: RegExp = /[A-Z0-9]+\\#/;\n\nconst regexCommitModuleInArgs: RegExp = /\\[[a-z|\\-|\\,]+\\]/;\nconst regexCommitModuleInBranch: RegExp = /\\-\\-[a-z|\\-|\\_]+\\-\\-/;\n\nexport class CommitData {\n //#region static\n\n //#region static / methods & getters / clean http(s) from commit message\n private static cleanHttpFromCommitMessage(commitMsg: string): string {\n if (!commitMsg) {\n return commitMsg;\n }\n commitMsg = commitMsg.replace('https://', '');\n commitMsg = commitMsg.replace('http://', '');\n return commitMsg;\n }\n //#endregion\n\n //#region static / methods & getters / get temas id from\n private static getTeamsIdFrom(commitMsg: string) {\n let teamID = _.first(commitMsg.match(regexTeamsID));\n if (teamID) {\n commitMsg = commitMsg.replace(teamID, '');\n }\n return {\n commitMsgOrBranchName: commitMsg,\n teamID,\n };\n }\n //#endregion\n\n //#region static / methods & getters / get module name from\n private static getModuleNameFrom(commitMsg: string) {\n let commitModuleName = _.first(commitMsg.match(regexCommitModuleInArgs));\n if (commitModuleName) {\n commitMsg = commitMsg.replace(commitModuleName, '');\n }\n commitModuleName = commitModuleName?.replace(/\\[/g, '').replace(/\\]/g, '');\n return {\n commitMsg,\n commitModuleName,\n };\n }\n //#endregion\n\n //#region static / methods & getters / extract jira numbers\n /**\n *\n * @returns jiras (from oldest to newset)\n */\n static extractAndOrderJiraNumbers(commitOrBranchName: string): string[] {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region static / methods & getters / extract jira numbers\n /**\n *\n * @returns jiras (from oldest to newset)\n */\n static extractAndOrderIssuesFromOtherProjects(\n /**\n * example:\n * commit: proper git commands tnp/GH-9 darekf77/tnp-helpers/GH-10\n * feature/__tnp-GH-9____darekf77_tnp-helpers-GH10__-proper-git-commands\n */\n commitOrBranchName: string,\n currentOrigin?: string,\n ): string[] {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region static / methods & getters / clean message from jira numbers, team id and stuff\n static cleanMessageFromJiraNumTeamIdEtc(\n message: string,\n optinos?: {\n teamID: string;\n commitModuleName: string;\n jiraNumbers: string[];\n issuesFromOtherProjects: string[];\n },\n ): string {\n message = message || '';\n let { teamID, commitModuleName, jiraNumbers, issuesFromOtherProjects } =\n optinos || {};\n teamID = teamID || this.getTeamsIdFrom(message).teamID || '';\n commitModuleName =\n commitModuleName ||\n this.getModuleNameFrom(message).commitModuleName ||\n '';\n jiraNumbers = jiraNumbers || this.extractAndOrderJiraNumbers(message) || [];\n issuesFromOtherProjects =\n issuesFromOtherProjects ||\n this.extractAndOrderIssuesFromOtherProjects(message) ||\n [];\n\n if (!!teamID.trim()) {\n message = message.replace(teamID.toLowerCase().replace('-', ' '), ' ');\n message = message.replace(teamID.toUpperCase().replace('-', ' '), ' ');\n }\n\n // console.log({ clere: 'CLEAR', issuesFromOtherProjects, message });\n\n for (const issueFromOtherProj of issuesFromOtherProjects || []) {\n // console.log('issueFromOtherProj', issueFromOtherProj);\n // console.log('message', message);\n message = message.replace(\n `__${issueFromOtherProj.replace(/\\//g, '_').replace(/\\-/g, ' ')}__`,\n ' ',\n );\n message = message.replace(issueFromOtherProj, ' ');\n message = message.replace(\n issueFromOtherProj.toLowerCase().replace('-', ' '),\n ' ',\n );\n message = message.replace(\n issueFromOtherProj.toUpperCase().replace('-', ' '),\n ' ',\n );\n message = message.replace(issueFromOtherProj.toLowerCase(), ' ');\n message = message.replace(regexCommitModuleInArgs, ' ');\n message = message.replace(regexCommitModuleInBranch, ' ');\n message = message.replace(/\\ \\ /g, ' ');\n }\n\n for (const jira of jiraNumbers || []) {\n message = message.replace(jira.toLowerCase().replace('-', ' '), ' ');\n message = message.replace(jira.toUpperCase().replace('-', ' '), ' ');\n message = message.replace(jira, ' ');\n message = message.replace(jira.toLowerCase(), ' ');\n message = message.replace(regexCommitModuleInArgs, ' ');\n message = message.replace(regexCommitModuleInBranch, ' ');\n message = message.replace(/\\ \\ /g, ' ');\n }\n\n if (!!teamID.trim()) {\n message = message.replace(/\\_/g, ' ');\n }\n\n if (!!commitModuleName.trim()) {\n const cleanedModuleName = commitModuleName\n .replace(/\\-/g, ' ')\n .replace(/\\,/g, '_');\n\n message = message.replace(cleanedModuleName, ' ');\n }\n return message\n .replace(/\\ \\ /g, ' ')\n .replace(/\\ \\ /g, ' ')\n .replace(/\\ \\ /g, ' ');\n }\n\n //#endregion\n\n //#region static / methods & getters / get module name from branch\n private static getModuleNameFromBranch(branchName: string) {\n let commitModuleName = _.first(branchName.match(regexCommitModuleInBranch));\n if (commitModuleName) {\n branchName = branchName.replace(commitModuleName, '');\n commitModuleName = commitModuleName\n ?.replace(/^\\-\\-/, '')\n ?.replace(/\\-\\-$/, '');\n if (commitModuleName.startsWith('-')) {\n commitModuleName = commitModuleName.replace(/^\\-/, '');\n }\n }\n commitModuleName = commitModuleName\n ?.replace(/^\\-\\-/, '')\n ?.replace(/\\-\\-$/, '')\n .replace(/\\_/, ',');\n\n return { commitModuleName };\n }\n //#endregion\n\n //#region static / methods & getters / get from args\n static async getFromArgs(\n args: string[],\n options: {\n typeOfCommit: TypeOfCommit;\n /**\n * only needed when push github\n * and I forgot to add my username before issue\n * taon pfix proper input my-repo#344\n * that should be\n * taon pfix proper input my-username/my-repo#344\n */\n currentOrigin?: string;\n jiraIssuesAreOutsideBrackets?: boolean;\n },\n ): Promise<CommitData> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region static / methods & getters / get from bramch\n static async getFromBranch(\n currentBranchName: string,\n options?: {\n releaseWords?: string[];\n /**\n * only needed when push github\n * and I forgot to add my username before issue\n * taon pfix proper input my-repo#344\n * that should be\n * taon pfix proper input my-username/my-repo#344\n */\n currentOrigin?: string;\n jiraIssuesAreOutsideBrackets?: boolean;\n },\n ): Promise<CommitData> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region static / methods & getters / from\n public static from(\n options: Pick<\n CommitData,\n | 'message'\n | 'jiraNumbers'\n | 'typeOfCommit'\n | 'commitModuleName'\n | 'teamID'\n | 'issuesFromOtherProjects'\n | 'jiraIssuesAreOutsideBrackets'\n >,\n ): CommitData {\n options = (options ? options : {}) as any;\n // console.log(options)\n const opt = _.merge(new CommitData(), _.cloneDeep(options));\n return opt;\n }\n //#endregion\n\n //#endregion\n\n //#region fields\n private _message: string;\n typeOfCommit: TypeOfCommit;\n /**\n * ex. JIRA-2132 or MYJIRAREFIX-234234\n */\n jiraNumbers: string[];\n\n /**\n * if true then jira issues are outside brackets\n * feat: proper git commands JIRA-1234\n *\n * by default is false\n * feat(JIRA-1234): proper git commands\n */\n jiraIssuesAreOutsideBrackets: boolean;\n\n /**\n * when set -> jiraIssuesAreOutsideBrackets is true\n */\n readonly commitModuleName: string;\n readonly teamID: string;\n //#endregion\n\n //#region methods & getters / clear message\n private clearMessage(message: string): string {\n return CommitData.cleanMessageFromJiraNumTeamIdEtc(message, {\n teamID: this.teamID,\n commitModuleName: this.commitModuleName,\n jiraNumbers: this.jiraNumbers,\n issuesFromOtherProjects: this.issuesFromOtherProjects,\n });\n }\n //#endregion\n\n //#region methods & getters / message\n /**\n * pure message what was done (without jira or prefixes)\n * => is included in this.commitMessage\n */\n get message() {\n return this.clearMessage(this._message);\n }\n set message(message) {\n this._message = this.clearMessage(message);\n }\n //#endregion\n\n useFeatureBranchForTestBranch: boolean = false;\n\n //#region methods & getters / branch prefix\n get branchPrefix(): TypeOfMsgPrefix {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / issues from other projects\n /**\n * ex. taon/GH-12 darekf77/tnp-helpers/GH-4\n */\n get issuesFromOtherProjects(): string[] {\n return this.__issuesFromOtherProjects;\n }\n\n set issuesFromOtherProjects(value: string[]) {\n this.__issuesFromOtherProjects = value;\n // this.__issuesFromOtherProjects = value.map(issue => {\n // console.log('MAPPING', issue);\n // console.log('project', this.project?.name);\n // if (issue.split('/').length === 1 && !!this.project) {\n // console.log('issue', issue);\n // const origin = Helpers.git.originSshToHttp(this.project.git.originURL);\n // const provider = _.first(origin.replace('https://', '').split('/'));\n // const cleanUserWithPath = origin\n // .replace('https://', '')\n // .replace(provider + '/', '')\n // .replace(path.basename(origin).replace('.git', ''), '');\n\n // const issueLastPart = _.last(issue.split('/'));\n // return `tnp/${cleanUserWithPath}/${issueLastPart}`;\n // }\n // return issue;\n // });\n }\n\n private __issuesFromOtherProjects: string[];\n //#endregion\n\n //#region methods & getters / commit message git commit -m\n get commitMessage(): string {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / branch name\n get branchName(): string {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / is action commit\n get isActionCommit() {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n}\n","//#region imports\nimport { _, path, crossPlatformPath } from 'tnp-core/browser';\nimport type { BaseProject } from './classes/base-project';\nimport { CLASS } from 'typescript-class-helpers/browser';\nimport { Helpers, LibrariesBuildOptions, TestBuildOptions } from '../index';\n//#endregion\n\n//#region core porject environment\nexport type CoreProjectEnvironment = {\n shortName?: string;\n name?: string;\n description?: string;\n onlineLink?: string;\n};\n//#endregion\n\n//#region constants\n//#region constants / defult db\nconst defaultDb = {\n projects: [],\n};\n//#endregion\n//#endregion\n\n//#region core project command args options\nexport type CoreCommandArgOptions<PROJECT extends BaseProject<any,any>> = {\n project?: PROJECT;\n /**\n * watch mode\n */\n watch?: boolean;\n prod?: boolean;\n debug?: boolean;\n isInReleaseProcess?: boolean;\n libraryBuildOptions?: LibrariesBuildOptions;\n testBuildOptions?: TestBuildOptions;\n /**\n * first arg from command line\n */\n firstArg?: string;\n /**\n * Not question for user ex.\n * - automatic process of patch release\n * - automatic deployment for default server\n */\n automaticProcess?: boolean;\n /**\n * orignal args with params\n */\n argsWithParams?: string;\n copyto?: string[];\n copytoall?: boolean;\n /**\n * args from command line (clearn from params)\n */\n args?: string[];\n exitCallback?: () => void;\n};\n//#endregion\n\nexport class CoreProject<PROJECT extends BaseProject = BaseProject> {\n //#region static\n\n //#region static / core projects\n public static coreProjects: CoreProject<any>[] = [];\n //#endregion\n\n //#region static / from\n static from<Proj extends BaseProject = BaseProject<any,any>>(\n options: Omit<CoreProject<Proj>, 'name' | 'url' | 'branch'>,\n ): CoreProject<Proj> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#endregion\n\n //#region constructor\n private constructor() {}\n //#endregion\n\n //#region properties\n extends?: CoreProject<any>;\n color?: string;\n /**\n * second color for project (optional)\n */\n secondColor?: string;\n /**\n * second color for project (optional)\n */\n thirdColor?: string;\n npmRegistry?: string;\n description?: string;\n /**\n * ssh url for git repo\n */\n urlSSH?: string;\n /**\n * https url for git repo\n */\n urlHttp?: string;\n /**\n * main branches - first is default\n */\n branches: string[];\n /**\n * project environments\n */\n environments?: CoreProjectEnvironment[] = [];\n //#endregion\n\n //#region methods & getters\n startCommand?: (options: CoreCommandArgOptions<PROJECT>) => Promise<void>;\n releaseCommand?: (options: CoreCommandArgOptions<PROJECT>) => Promise<void>;\n publishCommand?: (options: CoreCommandArgOptions<PROJECT>) => Promise<void>;\n deployCommand?: (options: CoreCommandArgOptions<PROJECT>) => Promise<void>;\n testCommand?: (options: CoreCommandArgOptions<PROJECT>) => Promise<void>;\n buildCommand?: (options: CoreCommandArgOptions<PROJECT>) => Promise<void>;\n docsCommand?: (options: CoreCommandArgOptions<PROJECT>) => Promise<void>;\n /**\n * function to recognize project\n */\n recognizedFn: (project: PROJECT) => boolean;\n\n /**\n * core porject name from repo basename\n */\n get name() {\n return path.basename(this.url).replace(/\\.git$/, '');\n }\n\n /**\n * main (default for reset) branch\n */\n get branch() {\n return _.first(this.branches);\n }\n\n /**\n * url for git repo\n */\n get url(): string {\n return (this.urlHttp ? this.urlHttp : this.urlSSH) || '';\n }\n //#endregion\n}\n\nexport const CoreTypescriptProject = CoreProject.from<BaseProject>({\n //#region configuration\n branches: ['master', 'develop'],\n urlHttp: 'https://github.com/microsoft/TypeScript',\n environments: [],\n recognizedFn: project => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n },\n async startCommand({ project }) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n },\n async buildCommand({ project, watch }) {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n },\n\n //#endregion\n});\n\nexport const CoreAngularProject = CoreProject.from<BaseProject>({\n //#region configuration\n extends: CoreTypescriptProject,\n branches: ['master', 'develop'],\n urlHttp: 'https://github.com/angular/angular-cli',\n environments: [],\n recognizedFn: project => {\n return project.hasFile('angular.json');\n },\n async startCommand({ project }) {\n await project.npmHelpers.nodeModules.makeSureInstalled();\n const port = await project.assignFreePort(4200);\n project.run(`npm-run ng serve --port ${port}`).sync();\n },\n async buildCommand({ project }) {\n await project.npmHelpers.nodeModules.makeSureInstalled();\n project.run(`npm-run ng build`).sync();\n },\n //#endregion\n});\n","import { config, notAllowedNames, notAllowedProjectNames } from 'tnp-config/browser';\nimport { _, crossPlatformPath, path } from 'tnp-core/browser';\n\nimport { Helpers } from '../index';\n\nexport class LinkedProject {\n //#region static\n\n //#region static / from\n static from(options: Partial<LinkedProject>) {\n const linkedProj = _.merge(\n new (LinkedProject as any)(),\n _.cloneDeep(options),\n ) as LinkedProject;\n if (!linkedProj.relativeClonePath) {\n linkedProj.relativeClonePath = path.basename(\n linkedProj.remoteUrl().replace('.git', ''),\n );\n }\n if (!linkedProj.defaultBranch) {\n linkedProj.defaultBranch = 'master';\n }\n return linkedProj;\n }\n //#endregion\n\n //#region static / from name\n static fromName(\n projectName: string,\n currentRemoteUrl?: string,\n currentBranch?: string,\n ) {\n return LinkedProject.from({\n repoUrl: currentRemoteUrl?.replace(\n path.basename(currentRemoteUrl),\n `${projectName}.git`,\n ),\n defaultBranch: currentBranch,\n relativeClonePath: projectName,\n });\n }\n //#endregion\n\n //#region static / detect\n static detect(\n insideLocation: string,\n options?: {\n recursive?: boolean;\n checkAlsoNonRepos?: boolean;\n },\n ): LinkedProject[] {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#endregion\n\n /**\n * sometime there is project that has one project\n * embede inside another project\n */\n internalRealtiveProjectPath?: string;\n /**\n * don't access directly, use remoteUrl() instead\n */\n repoUrlSsh?: string;\n /**\n * don't access directly, use remoteUrl() instead\n */\n repoUrlHttp?: string;\n /**\n * don't access directly, use remoteUrl() instead\n */\n repoUrl?: string;\n /**\n * url for git repo\n */\n public remoteUrl(): string {\n if (this.repoUrl) {\n return this.repoUrl;\n }\n if (this.repoUrlHttp) {\n return this.repoUrlHttp;\n }\n return this.repoUrlSsh;\n }\n\n public remoteUrlTransformed(setOrigin: 'ssh' | 'http'): string {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n defaultBranch?: string;\n purpose?: string;\n relativeClonePath?: string;\n}\n\nexport class LinkedPorjectsConfig {\n //#region static\n\n //#region static / from\n static from(options: Partial<LinkedPorjectsConfig>) {\n options = options || {};\n options.projects = (options.projects || []).map(linkedProjOrname => {\n if (_.isString(linkedProjOrname)) {\n return LinkedProject.fromName(linkedProjOrname);\n }\n return LinkedProject.from(linkedProjOrname);\n });\n // .sort((a, b) => {\n // return (a.relativeClonePath || '').localeCompare((b.relativeClonePath || ''));\n // });\n return _.merge(new (LinkedPorjectsConfig as any)(), _.cloneDeep(options));\n }\n //#endregion\n //#endregion\n\n prefix?: string;\n skipRecrusivePush?: boolean;\n resetOnlyChildren?: boolean;\n projects: LinkedProject[];\n}\n","export * from './classes';\nexport * from './commit-data';\nexport * from './core-project';\nexport * from './linked-project';\nexport * from './tcp-udp-ports';\n/* */\n/* */\n \n","import * as child from 'child_process';\nimport * as fse from 'fs';\nimport * as path from 'path';\n\nimport type { ExtensionContext } from 'vscode';\n\nimport {\n capitalizeFirstLetter,\n optionsFix,\n Log,\n getModuleName,\n shell,\n escapeStringForRegEx,\n deepClone,\n valueFromCommand,\n crossPlatformPath,\n getVscode,\n} from './helpers';\nimport { ProcesOptions, ProgressData, ResolveVariable } from './models';\n\nexport type ExecCommandTypeOpt = {\n vscode?: typeof import('vscode');\n log?: Log;\n context?: ExtensionContext;\n cwd?: string;\n};\n\nexport type ExecCommandType =\n | string\n | string[]\n | ((opt: ExecCommandTypeOpt) => any);\n\nexport function executeCommand(\n titleOfTask,\n registerName: string,\n commandToExecute: ExecCommandType,\n pOptions?: ProcesOptions,\n isDefaultBuildCommand?: boolean,\n context?: ExtensionContext,\n debug?: boolean,\n) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n}\n","import { CoreModels } from 'tnp-core/browser';\n\nimport type { ExecCommandType } from './execute-command';\n\nexport type CommandType = {\n command?: string;\n exec?: ExecCommandType;\n title?: string;\n group?: string;\n hideContextMenu?: boolean;\n options?: ProcesOptions;\n isDefaultBuildCommand?: boolean;\n};\n\nexport type ResolveVariable = {\n variable: string;\n resolveValueFromCommand?: string;\n prompt?: string;\n placeholder?: string | Function;\n variableValue?: any;\n encode?: boolean;\n options?: { option: any; label: string }[] | string;\n optionsResolved?: {\n option: any;\n label: string;\n skipNextVariableResolve?: boolean;\n }[];\n useResultAsLinkAndExit?: boolean;\n exitWithMessgeWhenNoOptions?: string;\n /**\n * { label: 'action item !!!', option: { action: 'STRING_SECRET_CODE' } }\n * { label: 'normal item', option: < primitive value > }\n */\n fillNextVariableResolveWhenSelectedIsActionOption?: boolean;\n};\n\nexport type ProcesOptions = {\n progressLocation?: 'notification' | 'statusbar';\n findNearestProject?: boolean;\n findNearestProjectWithGitRoot?: boolean;\n findNearestProjectType?: CoreModels.LibType;\n findNearestProjectTypeWithGitRoot?: CoreModels.LibType;\n syncProcess?: boolean;\n reloadAfterSuccesFinish?: boolean;\n cancellable?: boolean;\n titleWhenProcessing?: string;\n tnpNonInteractive?: boolean;\n tnpShowProgress?: boolean;\n debug?: boolean;\n showOutputDataOnSuccess?: boolean;\n showSuccessMessage?: boolean;\n askBeforeExecute?: boolean;\n resolveVariables?: ResolveVariable[];\n};\n\n/**\n * @deprecated\n */\nexport type PROGRESS_DATA_TYPE = 'info' | 'error' | 'warning' | 'event';\n\n/**\n * @deprecated\n */\nexport interface IProgressData {\n /**\n * How man percent of progress\n */\n value?: number;\n msg?: string;\n type?: PROGRESS_DATA_TYPE;\n date?: Date;\n}\n\n/**\n * @deprecated\n */\nexport class ProgressData implements IProgressData {\n public static resolveFrom(\n chunk: string,\n callbackOnFounded?: (json: ProgressData) => any,\n checkSplit = true,\n ): ProgressData[] {\n let progress;\n let res: ProgressData[] = [];\n if (typeof chunk !== 'string') {\n return [];\n }\n chunk = chunk.trim();\n\n if (checkSplit) {\n const split = chunk.split(/\\r\\n|\\n|\\r/);\n if (split.length > 1) {\n // console.log('split founded', split)\n split.forEach(s => {\n res = res.concat(this.resolveFrom(s, callbackOnFounded, false));\n });\n return res;\n }\n }\n\n if (/\\[\\[\\[.*\\]\\]\\]/g.test(chunk)) {\n chunk = chunk.replace(/^\\[\\[\\[/g, '').replace(/\\]\\]\\]$/g, '');\n progress = chunk;\n }\n if (typeof progress !== 'undefined') {\n try {\n const p = JSON.parse(progress);\n const single = Object.assign(new ProgressData(), p);\n res = res.concat([single]);\n if (typeof callbackOnFounded === 'function') {\n callbackOnFounded(single);\n }\n } catch (err) {\n console.log(err);\n console.error(`ProgresssBarData: fail to parse \"${progress}\"`);\n }\n }\n return res;\n }\n\n constructor(\n public value: number = 0,\n public msg: string = '',\n\n public type: PROGRESS_DATA_TYPE = 'event',\n public date: Date = new Date(),\n ) {}\n}\n","export * from './validators/validators';\n//#region @browser\nexport { HelpersAngular } from './helpers/for-browser/angular.helper';\n//#endregion\n\nexport * from './utils';\nimport { HelpersTaon as Base } from './helpers/helpers';\nexport const Helpers: Base = Base.Instance as Base;\nexport * from './base';\nexport * from './models';\n\nexport * from './old/execute-command';\n// export * from './old/helpers';\nexport * from './old/models';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["defaultDb","Helpers","Base"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tnp-helpers.mjs","sources":["../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/validators/validators-git.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/validators/validators-network.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/validators/validators.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/helpers/for-browser/angular.helper.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/utils.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/helpers/helpers-array-obj.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/helpers/helpers-strings-regexes.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/helpers/helpers-strings.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/helpers/for-backend/helpers-process.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/helpers/for-backend/helpers-file-folders.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/helpers/helpers-numbers.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/helpers/for-browser/helpers-browser.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/helpers/helpers.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-db.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/config-database.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/project-database.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/tcp-udp-ports/ports.entity.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-cli-worker/base-cli-worker-terminal-ui.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-cli-worker/base-cli-worker.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-cli-worker/base-cli-worker-config.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-cli-worker/base-cli-worker-controller.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/tcp-udp-ports/ports.controller.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/migrations/1736198527297_init.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/migrations/1736199486472_addingNotAssignablePorts.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/migrations/1736454437350_addFreePorts.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/migrations/migrations_index._auto-generated_.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/migrations/index.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/tcp-udp-ports/tcp-udp-ports.context.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/tcp-udp-ports/tcp-upd-ports-terminal-ui.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/tcp-udp-ports/tcp-upd-ports.worker.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/build-info._auto-generated_.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-project-resolver.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-project.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-feature-for-project.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-library-build.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-json-file-reader.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-package-json.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-node-modules.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-bower-json.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-npm-helpers.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-linked-projects.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-git.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-vscode.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-release-process.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-compiler-for-project.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-debounce-compiler-for-project.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-quick-fixes.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/models.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-process-manager.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/base-command-line-feature.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/classes/index.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/commit-data.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/core-project.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/linked-project.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/base/index.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/old/execute-command.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/old/models.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/lib/index.ts","../../../tmp-libs-for-dist/tnp-helpers/projects/tnp-helpers/src/tnp-helpers.ts"],"sourcesContent":["export namespace ValidatorsGit {\n\n export function isValidRepoUrl(url: string) {\n const regex = /^([A-Za-z0-9]+@|http(|s)\\:\\/\\/)([A-Za-z0-9.]+(:\\d+)?)(?::|\\/)([\\d\\/\\w.-]+?)(\\.git)?$/;\n const res = regex.test(url);\n return res;\n }\n\n}","import { _ } from 'tnp-core/browser';\n\nexport namespace ValidatorsNetwork {\n export function isValidIp(ip: string) {\n if (!_.isString(ip)) {\n return false;\n }\n ip = ip.trim();\n if (ip === 'localhost') {\n return true;\n }\n return /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(ip)\n }\n}","import { ValidatorsGit } from \"./validators-git\";\nimport { ValidatorsNetwork } from \"./validators-network\";\n\nexport namespace Validators {\n export import git = ValidatorsGit;\n export import network = ValidatorsNetwork;\n}","//#region @browser\nimport { Observable, Subject } from \"rxjs\";\n\nconst componentContextSymbol = Symbol();\nconst componentsDestroy$Subjects = {};\n\n\nexport namespace HelpersAngular {\n\n export class SerializedSubject<T> {\n constructor(\n public id: string\n ) { }\n }\n\n\n function subjectId(destroySubject: Subject<any>): SerializedSubject<any> {\n const id = Math.random().toString(36).substring(2);\n if (!destroySubject[componentContextSymbol]) {\n destroySubject[componentContextSymbol] = new SerializedSubject(id);\n componentsDestroy$Subjects[id] = destroySubject;\n }\n return destroySubject[componentContextSymbol];\n }\n\n /**\n * if you are using this.. please call Helpers.ng.unsubscribe(this.$destroy) in ngOnDestroy();\n */\n export function serialize(destroy$: Subject<any>): SerializedSubject<any> {\n return subjectId(destroy$);\n }\n\n /**\n * if you are using this.. please call Helpers.ng.unsubscribe(this.$destroy) in ngOnDestroy();\n */\n export function deserialize(destroy$: SerializedSubject<any>): Subject<any> {\n if (destroy$?.id) {\n const realDestroySubject = componentsDestroy$Subjects[destroy$.id];\n return realDestroySubject;\n }\n return new Subject();\n }\n\n export function unsubscribe(destroy$: Subject<any>) {\n const destroySubject = subjectId(destroy$);\n if (destroySubject?.id) {\n delete componentsDestroy$Subjects[destroySubject.id];\n delete destroySubject[componentContextSymbol];\n }\n }\n\n\n\n /**\n get properties from scss file\n\n\n import styles from './tasks-ngrx-data.component.scss';\n\n export class ExampleComponent {\n sassFile = sassFile(styles);\n\n async ngOnInit() {\n this.tasksService.getAll();\n console.log(this.sassFile.stringValue('--max-container-size'))\n console.log(this.sassFile.numberValue('--max-container-size'))\n }\n }\n */\n export function sassFile(styles: string) {\n const lines = (styles.split('\\n'));\n return {\n stringValue: (name: string) => {\n for (let index = 0; index < lines.length; index++) {\n const l = lines[index];\n const [varName, value] = l.trim().split(':');\n if (varName === name) {\n return value.replace(';', '');\n }\n }\n },\n numberValue: (name: string): number => {\n for (let index = 0; index < lines.length; index++) {\n const l = lines[index];\n const [varName, value] = l.trim().split(':');\n if (varName === name) {\n return Number(value.replace('px', '').replace(';', ''));\n }\n }\n }\n }\n }\n}\n\n//#endregion","//#region imports\nimport { config } from 'tnp-config/browser';\nimport {\n child_process,\n crossPlatformPath,\n fse,\n path,\n UtilsOs,\n} from 'tnp-core/browser';\nimport { _, CoreModels, Utils } from 'tnp-core/browser';\nimport {\n createPrinter,\n createSourceFile,\n factory,\n getLeadingCommentRanges,\n isClassDeclaration,\n isSourceFile,\n NodeArray,\n ScriptKind,\n ScriptTarget,\n SourceFile,\n Statement,\n transform,\n TransformationContext,\n visitEachChild,\n Node,\n isFunctionDeclaration,\n isVariableStatement,\n isIdentifier,\n NodeFlags,\n isEnumDeclaration,\n isTypeAliasDeclaration,\n isInterfaceDeclaration,\n isModuleDeclaration,\n isExportAssignment,\n forEachChild,\n Declaration,\n getCombinedModifierFlags,\n ModifierFlags,\n SyntaxKind,\n isVariableDeclaration,\n isCallExpression,\n isPropertyAccessExpression,\n isObjectLiteralExpression,\n isPropertyAssignment,\n isStringLiteral,\n canHaveDecorators,\n getDecorators,\n visitNode,\n isExportDeclaration,\n isImportDeclaration,\n Expression,\n isNamedImports,\n isNamedExports,\n NewLineKind,\n TransformerFactory,\n isDecorator,\n isEmptyStatement,\n isExpressionStatement,\n isPropertyDeclaration,\n isMethodDeclaration,\n} from 'typescript';\nimport type * as ts from 'typescript';\nimport type * as vscodeType from 'vscode';\n\nimport { Helpers } from './index';\n//#endregion\n\n//#region utils npm\nexport namespace UtilsNpm {\n //#region is special version\n export const isSpecialVersion = (version: string) => {\n return CoreModels.NpmSpecialVersions.includes(version);\n };\n //#endregion\n\n //#region clear version\n export const clearVersion = (\n version: string,\n options: {\n removePrefixes?: boolean;\n /**\n * Remove alpha, beta, rc, latest, next etc.\n */\n removeSuffix?: boolean;\n },\n ) => {\n const { removePrefixes, removeSuffix } = options || {};\n\n if (!version || isSpecialVersion(version)) {\n return version;\n }\n\n version = (version || '')\n .trim()\n .replace(new RegExp(Utils.escapeStringForRegEx('undefined'), 'g'), '0');\n\n if (removePrefixes) {\n version = version.replace('^', '').replace('~', '');\n }\n let [major, minor, patch, alphaOrBetaOrRc] = version.split('.');\n if (removeSuffix) {\n alphaOrBetaOrRc = '';\n }\n return fixMajorVerNumber(\n `${major}.${minor}.${patch}${\n alphaOrBetaOrRc ? '.' + alphaOrBetaOrRc : ''\n }`,\n );\n };\n //#endregion\n\n //#region fix major version number\n export const fixMajorVerNumber = (version: string) => {\n if (!version || isSpecialVersion(version)) {\n return version;\n }\n version = (version || '')\n .trim()\n .replace(new RegExp(Utils.escapeStringForRegEx('undefined'), 'g'), '0');\n const splited = version.split('.');\n let [major, minor, patch, alphaOrBetaOrRc] = splited;\n if (splited.length === 1) {\n minor = '0';\n patch = '0';\n } else if (splited.length === 2) {\n patch = '0';\n }\n return `${major}.${minor}.${patch}${\n alphaOrBetaOrRc ? '.' + alphaOrBetaOrRc : ''\n }`;\n };\n //#endregion\n}\n//#endregion\n\n//#region utils typescript\nexport namespace UtilsTypescript {\n //#region remove region by name\n /**\n * Remove TypeScript region blocks by their name, including nested regions.\n *\n * @param sourceCode - The TypeScript source code as a string.\n * @param regionName - The name of the region to remove.\n * @returns Modified TypeScript code without the specified regions.\n */\n export const removeRegionByName = (\n sourceCode: string,\n regionName: string,\n ): string => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region extract exports from a TypeScript file\n\n //#region helper function to check if a node is exported\n const isExported = (node: Node): boolean => {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region exports from file\n\n interface ExportInfo {\n type:\n | 'class'\n | 'function'\n | 'const'\n | 'let'\n | 'var'\n | 'enum'\n | 'type'\n | 'interface'\n | 'default'\n | 'module'\n | 'namespace';\n name: string;\n }\n\n /**\n * Function to extract exports from a TypeScript file\n */\n export const exportsFromFile = (filePath: string): ExportInfo[] => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n\n /**\n * Function to extract exports from a TypeScript file\n */\n export const exportsFromContent = (fileContent: string): ExportInfo[] => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#endregion\n\n //#region extract class names from ts file or source code\n\n export const extractDefaultClassNameFromString = (\n sourceCode: string,\n ): string | undefined => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n\n export const extractClassNameFromString = (sourceCode: string): string[] => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n\n export const extractClassNamesFromFile = (\n absoluteFilePath: string,\n ): string[] => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n\n export const extractDefaultClassNameFromFile = (absoluteFilePath: string) => {\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region format file(s) with prettier\n export const formatFile = (absPathToFile: string | string[]): void => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n\n export const formatAllFilesInsideFolder = (absPathToFolder: string): void => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region lint file(s) with eslint\n export const eslintFixFile = (absPathToFile: string | string[]): void => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n\n export const eslintFixAllFilesInsideFolder = (\n absPathToFolder: string | string[],\n ): void => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region extract Taon contexts from file\n export const getTaonContextFromContent = (fileContent: string): string[] => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n\n export const getTaonContextsNamesFromFile = (\n tsAbsFilePath: string,\n ): string[] => {\n/* */\n/* */\n return (void 0);\n };\n\n //#endregion\n\n //#region extract selectors from Angular components class files\n export const extractAngularComponentSelectors = (\n fileAbsPath: string,\n ): { className: string; selector: string }[] => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region wrap one line with comment\n export const wrapWithComment = (\n oneLineComment: string,\n absDestFilePath: string,\n ) => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region ser or add exported variable with AST\n // Helper to check if a node has 'export' in its modifiers\n // const hasExportModifier = (\n // modifiers: ts.NodeArray<ts.Modifier> | undefined,\n // ) => {\n // return (\n // !!modifiers && modifiers.some(m => m.kind === SyntaxKind.ExportKeyword)\n // );\n // };\n\n /**\n * Attempts to set or add an exported const with given name and value.\n */\n export const setValueToVariableInTsFile = (\n tsAbsFilePath: string,\n variableName: string,\n valueOfVariable: any,\n options?: {\n skipAddIfNotExists?: boolean;\n useRawStringValue?: boolean;\n },\n ): void => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n\n //#endregion\n\n //#region recognize imports from file\n\n //#region helpers / ts import export class\n export class TsImportExport {\n /**\n * for external modification\n */\n embeddedPathToFileResult: string;\n /**\n * for external modification\n */\n packageName: string;\n /**\n * for external modification\n */\n isIsomorphic?: boolean;\n\n //#region generated/readonly files\n readonly type: 'export' | 'import' | 'async-import' | 'require';\n /**\n * ORIGNAL\n * Name of the file that is being imported/exported\n * with parenthesis included , example\n * 'my-file' or \"my-file\" or `my-file`\n */\n readonly embeddedPathToFile: string;\n /**\n * same as cleanEmbeddedPathToFile but without quotes (parenthesis), example:\n * my-file or my-file or my-file\n */\n readonly cleanEmbeddedPathToFile: string;\n readonly startRow: number;\n readonly startCol: number;\n readonly endRow: number;\n readonly endCol: number;\n readonly parenthesisType: 'single' | 'double' | 'tics';\n readonly importElements: string[] = [];\n //#endregion\n\n //#region constructor\n constructor(\n type: 'export' | 'import' | 'async-import' | 'require',\n embeddedPathToFile: string,\n start: ts.LineAndCharacter,\n end: ts.LineAndCharacter,\n parenthesisType: 'single' | 'double' | 'tics',\n importElements: string[] = [],\n ) {\n this.type = type;\n this.isIsomorphic = false;\n this.embeddedPathToFile = embeddedPathToFile;\n this.cleanEmbeddedPathToFile =\n this.removeStartEndQuotes(embeddedPathToFile);\n this.embeddedPathToFileResult = embeddedPathToFile;\n this.startRow = start.line + 1; // TypeScript lines are zero-based\n this.startCol = start.character + 1;\n this.endRow = end.line + 1;\n this.endCol = end.character + 1;\n this.parenthesisType = parenthesisType;\n this.importElements = importElements;\n }\n //#endregion\n\n //#region remove quotes\n private removeStartEndQuotes(str: string): string {\n return str.replace(/^['\"`]/, '').replace(/['\"`]$/, '');\n }\n //#endregion\n\n //#region get string part\n /**\n * it will extract part of the file content\n * that is between startRow, startCol and endRow, endCol\n * and contains import/export/require statement\n */\n public getStringPartFrom(wholeContentOfFile: string): string {\n const lines = wholeContentOfFile.split('\\n');\n\n // Convert 1-based row indices to 0-based\n const startRowIndex = this.startRow - 1;\n const endRowIndex = this.endRow - 1;\n\n // Ensure indices are within bounds\n if (startRowIndex >= lines.length || endRowIndex >= lines.length) {\n throw new Error('Row index out of bounds.');\n }\n\n let extractedLines: string[] = [];\n\n for (let i = startRowIndex; i <= endRowIndex; i++) {\n let line = lines[i];\n\n if (i === startRowIndex && i === endRowIndex) {\n // Same row: extract from startCol to endCol\n extractedLines.push(line.substring(this.startCol - 1, this.endCol));\n } else if (i === startRowIndex) {\n // First row: extract from startCol to end\n extractedLines.push(line.substring(this.startCol - 1));\n } else if (i === endRowIndex) {\n // Last row: extract from beginning to endCol\n extractedLines.push(line.substring(0, this.endCol));\n } else {\n // Whole row in between\n extractedLines.push(line);\n }\n }\n\n return extractedLines.join('\\n');\n }\n //#endregion\n\n //#region wrap in current parenthesis\n public wrapInParenthesis(str: string): string {\n return this.parenthesisType === 'single'\n ? `'${str}'`\n : this.parenthesisType === 'double'\n ? `\"${str}\"`\n : `\\`${str}\\``;\n //#endregion\n }\n }\n //#endregion\n\n //#region helpers / get quote type\n const getQuoteType = (text: string): 'single' | 'double' | 'tics' => {\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n const extractImportExportElements = (node: ts.Node): string[] => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n\n export const recognizeImportsFromFile = (\n fileAbsPAth: string,\n ): TsImportExport[] => {\n/* */\n/* */\n/* */\n return (void 0);\n };\n\n export const recognizeImportsFromContent = (\n fileContent: string,\n ): TsImportExport[] => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region fix standalone ng 19\n /**\n * Transition methods ng18 => ng19\n * Remove standalone:true from component decorator\n * and add standalone: false if not exists\n */\n export function transformComponentStandaloneOption(\n sourceText: string,\n ): string {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region escape @ in html text\n const escapeAtInHtmlText = (fileContent: string): string => {\n return fileContent.replace(\n />([^<@]*?)@([^<]*)</g,\n (_match, before, after) => {\n return `>${before}@${after}<`;\n },\n );\n };\n\n export const fixHtmlTemplatesInDir = (directoryPath: string): void => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region remove tagged imports/exports\n export function removeTaggedImportExport(\n tsFileContent: string,\n tags: string[],\n // debug = false,\n ): string {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region wrap first imports in region\n export const wrapFirstImportsInImportsRegion = (\n fileContent: string,\n ): string => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region wrap entities class fields with region\n const applyEdits = (\n original: string,\n edits: { pos: number; text: string }[],\n ): string => {\n edits.sort((a, b) => b.pos - a.pos); // apply from end to start\n let result = original;\n for (const edit of edits) {\n result = result.slice(0, edit.pos) + edit.text + result.slice(edit.pos);\n }\n return result;\n };\n\n /**\n * wrap class field with decorators\n * wrap class methods with decorators\n */\n export function wrapContentClassMembersDecoratorsWithRegion(\n classFileContent: string,\n wrapTag = '@websql',\n ): string {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n export const clearRequireCacheRecursive = (\n modulePath: string,\n seen = new Set<string>(),\n ): void => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n\n export type DeepWritable<T> = {\n -readonly [P in keyof T]: T[P] extends object\n ? T[P] extends Function\n ? T[P]\n : DeepWritable<T[P]>\n : T[P];\n };\n}\n\n//#endregion\n\n//#region utils http\nexport namespace UtilsHttp {\n //#region utils http / start http server\n export const startHttpServer = async (cwd: string, port: number) => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n}\n//#endregion\n\n//#region utils md\nexport namespace UtilsMd {\n /**\n * extract assets pathes from .md file\n */\n export const getAssets = (mdfileContent: string): string[] => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n\n /**\n * Extract links to other Markdown files from a given Markdown content.\n * @param mdfileContent\n */\n export const getLinksToOtherMdFiles = (mdfileContent: string): string[] => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n\n /**\n * Move asset paths to a higher directory level by adding \"../\" before each path.\n *\n * @param mdfileContent - The content of the .md file.\n * @param level - The number of levels to go up (default is 1).\n * @returns The modified content with updated asset paths.\n */\n export const moveAssetsPathesToLevel = (\n mdfileContent: string,\n level = 1,\n ): string => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n}\n//#endregion\n\n//#region utils quickfixes\nexport namespace UtilsQuickFixes {\n //#region replace sql-wasm.js faulty code content\n /**\n *\n * @param node_modules/sql.js/dist/sql-wasm.js\n */\n export const replaceKnownFaultyCode = (\n contentofSQLWasmJS: string,\n ): string => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n /**\n * for some reason electron is being bundled - and it is not needed for cli\n */\n export const replaceElectronWithNothing = (\n jsContent: string,\n packageName: string,\n ): string => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n}\n//#endregion\n\n//#region utils vscode\nexport namespace UtilsVSCode {\n export const calculateContrastingHexColor = (hex: string): string => {\n // Normalize shorthand format like \"#abc\" → \"#aabbcc\"\n if (hex.length === 4) {\n hex =\n '#' +\n hex\n .slice(1)\n .split('')\n .map(ch => ch + ch)\n .join('');\n }\n\n const r = parseInt(hex.slice(1, 3), 16);\n const g = parseInt(hex.slice(3, 5), 16);\n const b = parseInt(hex.slice(5, 7), 16);\n\n // YIQ contrast formula\n const yiq = (r * 299 + g * 587 + b * 114) / 1000;\n\n return yiq >= 128 ? '#000000' : '#ffffff';\n };\n\n // Convert HSL to HEX if you need HEX output\n const hslToHex = (hsl: string): string => {\n const [_, hStr, sStr, lStr] = hsl.match(/hsl\\((\\d+), (\\d+)%?, (\\d+)%?\\)/)!;\n let h = parseInt(hStr) / 360;\n let s = parseInt(sStr) / 100;\n let l = parseInt(lStr) / 100;\n\n const hue2rgb = (p: number, q: number, t: number): number => {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n };\n\n let r: number, g: number, b: number;\n\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n const toHex = (x: number) => {\n const hex = Math.round(x * 255).toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n };\n\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n };\n export const generateFancyColor = (): string => {\n const h = Math.floor(Math.random() * 360); // full hue range\n const s = Math.floor(40 + Math.random() * 30); // 40–70% saturation\n const l = Math.floor(35 + Math.random() * 25); // 35–60% lightness\n\n return hslToHex(`hsl(${h}, ${s}%, ${l}%)`);\n };\n\n export const vscodeImport = () => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n}\n\n//#endregion\n\n//#region utils dot file\nexport namespace UtilsDotFile {\n //#region parse value from dot file util\n const parseValue = (rawValue: string): string | number | boolean => {\n const val = rawValue.trim().replace(/^\"|\"$/g, '');\n\n // Try boolean\n if (val.toLowerCase() === 'true') return true;\n if (val.toLowerCase() === 'false') return false;\n\n // Try number\n if (!isNaN(Number(val)) && val !== '') return Number(val);\n\n return val;\n };\n //#endregion\n\n //#region set value to/from dot file\n export const setValueToDotFile = (\n dotFileAbsPath: string | string[],\n value: string,\n key: string | number | boolean,\n ): void => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region get value from dot file\n export const getValueFromDotFile = (\n dotFileAbsPath: string | string[],\n key: string,\n ): string | number | boolean => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region set values keys from object\n export const setValuesKeysFromObject = (\n dotFileAbsPath: string | string[],\n obj: Record<string, string | number | boolean>,\n options?: {\n /**\n * if true, it will overwrite existing keys\n */\n setAsNewFile?: boolean;\n },\n ): void => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region get values keys as json object\n export const getValuesKeysAsJsonObject = <\n T = Record<string, string | number | boolean>,\n >(\n dotFileAbsPath: string | string[],\n ): T => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n}\n//#endregion\n\n//#region utils zip browser\nexport namespace UtilsZipBrowser {\n // <input type=\"file\" id=\"folderInput\" webkitdirectory />\n // ts\n // Copy\n // Edit\n // document.getElementById('folderInput').addEventListener('change', async (e) => {\n // const input = e.target as HTMLInputElement;\n // if (input.files) {\n // const zipBlob = await zipDirBrowser(input.files);\n // // Save the zip using FileSaver.js or URL.createObjectURL\n // const url = URL.createObjectURL(zipBlob);\n // const a = document.createElement('a');\n // a.href = url;\n // a.download = 'folder.zip';\n // a.click();\n // URL.revokeObjectURL(url);\n // }\n // });\n\n // import JSZip from 'jszip';\n\n // <input type=\"file\" id=\"zipInput\" />\n // ts\n // Copy\n // Edit\n // document.getElementById('zipInput').addEventListener('change', async (e) => {\n // const input = e.target as HTMLInputElement;\n // if (input.files?.[0]) {\n // const entries = await unzipArchiveBrowser(input.files[0]);\n // for (const [name, blob] of entries) {\n // console.log(`Extracted file: ${name}`, blob);\n // }\n // }\n // });\n export const zipDirBrowser = async (fileList: FileList): Promise<Blob> => {\n // const zip = new JSZip();\n\n // for (const file of Array.from(fileList)) {\n // const relativePath = (file as any).webkitRelativePath || file.name;\n // zip.file(relativePath, file);\n // }\n\n // return zip.generateAsync({ type: 'blob' });\n return void 0;\n };\n\n export const unzipArchiveBrowser = async (\n zipBlob: Blob,\n ): Promise<Map<string, Blob>> => {\n // const zip = await JSZip.loadAsync(zipBlob);\n // const files = new Map<string, Blob>();\n\n // for (const [filePath, fileObj] of Object.entries(zip.files)) {\n // if (!fileObj.dir) {\n // const content = await fileObj.async('blob');\n // files.set(filePath, content);\n // }\n // }\n\n // return files;\n return void 0;\n };\n}\n//#endregion\n\n//#region utils zip node\nexport namespace UtilsZip {\n //#region split zip file\n\n export const splitFile7Zip = async (\n inputPath: string,\n partSizeMB = 99,\n ): Promise<number> => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n\n /**\n * Splits a file into smaller parts if its size exceeds the specified part size.\n * @returns true if file was split, false if not needed\n */\n export const splitFile = async (\n inputPath: string,\n partSizeMB = 99,\n ): Promise<number> => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n export const zipDir = async (absPathToDir: string): Promise<void> => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n\n // Unzip: `/some/path/folder.zip` → `/some/path/folder`\n export const unzipArchive = async (absPathToZip: string): Promise<void> => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n}\n//#endregion","import { _, Utils } from 'tnp-core/browser';\nimport * as fuzzy from 'fuzzy';\n\nexport class HelpersArrayObj {\n from(s: string | string[]): string[] {\n if (_.isArray(s)) {\n return s;\n }\n if (_.isString(s)) {\n return s.split(' ');\n }\n }\n\n second(arr) {\n if (!Array.isArray(arr) || arr.length < 2) {\n return void 0;\n }\n return arr[1];\n }\n\n /**\n * @deprecated\n * use moveObjectBefore\n */\n arrayMoveElementBefore<T = any>(arr: any[], a: any, b: any, prop?: keyof T) {\n let indexA = prop\n ? arr.findIndex(elem => elem[prop] === a[prop])\n : arr.indexOf(a);\n _.pullAt(arr, indexA);\n let indexB = prop\n ? arr.findIndex(elem => elem[prop] === b[prop])\n : arr.indexOf(b);\n if (indexB === 0) {\n arr.unshift(a);\n } else {\n arr.splice(indexB - 1, 0, a);\n }\n return arr;\n }\n\n /**\n * @deprecated\n * use moveObjectAfter\n */\n arrayMoveElementAfterB<T = any>(arr: any[], a: any, b: any, prop?: keyof T) {\n let indexA = prop\n ? arr.findIndex(elem => elem[prop] === a[prop])\n : arr.indexOf(a);\n _.pullAt(arr, indexA);\n let indexB = prop\n ? arr.findIndex(elem => elem[prop] === b[prop])\n : arr.indexOf(b);\n if (indexB === arr.length - 1) {\n arr.push(a);\n } else {\n arr.splice(indexB + 1, 0, a);\n }\n return arr;\n }\n\n moveObjectBefore<T = any>(array: T[], target: T, before: T): T[] {\n const newArray = [...array];\n const targetIndex = newArray.findIndex(item => item === target);\n const beforeIndex = newArray.findIndex(item => item === before);\n\n if (targetIndex === -1 || beforeIndex === -1) {\n // Handle the case when either the target or before object is not found in the array\n console.error('Target or Before object not found in the array');\n return newArray;\n }\n\n // Remove the target object from its current position\n newArray.splice(targetIndex, 1);\n\n // Insert the target object before the before object\n newArray.splice(beforeIndex, 0, target);\n\n return newArray;\n }\n\n moveObjectAfter<T = any>(array: T[], target: T, after: T): T[] {\n const newArray = [...array];\n const targetIndex = newArray.findIndex(item => item === target);\n const afterIndex = newArray.findIndex(item => item === after);\n\n if (targetIndex === -1 || afterIndex === -1) {\n // Handle the case when either the target or after object is not found in the array\n console.error('Target or After object not found in the array');\n return newArray;\n }\n\n // Remove the target object from its current position\n newArray.splice(targetIndex, 1);\n\n // Insert the target object after the after object\n newArray.splice(afterIndex + 1, 0, target);\n\n return newArray;\n }\n\n /**\n * @deprecated use Utils.uniqArray from tnp-core\n */\n uniqArray<T = any>(array: any[], uniqueProperty?: keyof T) {\n return Utils.uniqArray(array, uniqueProperty);\n }\n\n /**\n * @deprecated use Utils.uniqArray from tnp-core\n */\n sortKeys(obj) {\n return Utils.sortKeys(obj);\n }\n\n /**\n * Fuzzy search\n */\n fuzzy<T = any>(\n query: string,\n list: T[],\n valueFn?: (modelFromList: T) => string,\n ) {\n // console.log('fuzzy search', query, list, valueFn)\n const resultsFuzzy = fuzzy.filter(\n query,\n list.map(k => (valueFn ? valueFn(k) : k)),\n );\n const resultsFuzzyKebab = fuzzy.filter(\n _.kebabCase(query),\n list.map(k => _.kebabCase((valueFn ? valueFn(k) : k) as any)),\n );\n const matches = resultsFuzzy.map(el => el.string);\n const matchesKebab = resultsFuzzyKebab.map(el => el.string);\n\n const results =\n resultsFuzzy.length === 0\n ? []\n : list.filter(k => {\n return matches.includes((valueFn ? valueFn(k) : k) as any);\n });\n\n if (matches.length === 0 && matchesKebab.length > 0) {\n const m = list.find(\n k =>\n _.kebabCase((valueFn ? valueFn(k) : k) as any) ===\n _.first(matchesKebab),\n );\n results.push(m);\n matches.push((valueFn ? valueFn(m) : m) as any);\n }\n\n return { matches, results };\n }\n}","import { Utils, _ } from 'tnp-core/browser';\nexport class HelpersStringsRegexes {\n\n\n\n escapeStringForRegEx(s: string) {\n return Utils.escapeStringForRegEx(s);\n }\n\n matchExactOnce(s: string, regex: RegExp): string {\n if (!_.isString(s) || !_.isRegExp(regex)) {\n return void 0;\n }\n const result = s.match(regex);\n if (_.isNil(result)) {\n return void 0;\n }\n return result.length >= 1 ? _.first(result) : void 0;\n }\n\n get regex() {\n return {\n /**\n * mathes\n * xxx.xxx.xxx.xxx\n * xxx.xxx.xxx.xxx:port\n * http://xxx.xxx.xxx.xxx:port\n * http://xxx.xxx.xxx.xxx\n * https://xxx.xxx.xxx.xxx:port\n * https://xxx.xxx.xxx.xxx *\n */\n get forStringWithIpHost() {\n const regex = /(http(s)?\\:\\/\\/)?(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\\:[0-9]+)?/;\n return regex;\n },\n /**\n * mathes\n * http://domain.com:port\n * http://domain.com\n * http://domain:port\n * http://domain\n * https://domain.com:port\n * https://domain.com\n * https://domain:port\n * https://domain\n */\n get forStringWithDomainHost() {\n const regex = /(((http(s)?\\:\\/\\/)?[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9](?:\\.[a-zA-Z]{2,})+(\\:[0-9]+)?)|((http(s)?\\:\\/\\/)[a-zA-Z0-9-]{1,61}))/;\n return regex;\n }\n }\n }\n}","import { _ } from 'tnp-core/browser';\nimport { Helpers } from '../index';\n\nexport class HelpersStrings {\n\n /**\n * Example:\n *\n * const result = interpolateString(\"I'm {age} years old!\")\n * .withParameters({ age: 29 });\n *\n * const result = interpolateString(\"The {a} says {n}, {n}, {n}!\")\n * .withParameters({ a: 'cow', n: 'moo' });\n *\n *\n * @param value string to interpolate\n * @param parameters object with parametes\n */\n interpolateString<T = any>(value: string) {\n if (typeof value !== 'string') {\n Helpers.warn('[taon-heleprs] Value for interpolation is not string: ', value);\n return value;\n }\n\n return {\n withParameters(parameters: T) {\n if (typeof parameters !== 'object') {\n Helpers.log(parameters as any);\n Helpers.warn('[taon-heleprs] Parameters are not a object: ');\n return value;\n }\n return value.replace(/{([^{}]*)}/g, function (a, b) {\n var r = parameters[b];\n return typeof r === 'string' || typeof r === 'number' ? r : a;\n } as any);\n }\n }\n\n }\n\n /**\n *\n * @param pixelsCss exmaple: 100px\n * @returns number value\n */\n numValue(pixelsCss: string) {\n // tslint:disable-next-line:radix\n return parseInt(pixelsCss.replace('px', ''));\n }\n\n /**\n * examples:\n * 'aa bb bb' => ['aa','bb','cc'],\n * 'aa' => ['aa']\n * ['aa'] => ['aa']\n */\n splitIfNeed(stringOrArr: string | string[]): string[] {\n let res = [];\n if (_.isArray(stringOrArr)) {\n res = stringOrArr.map(s => {\n return s.trim();\n })\n }\n if (_.isString(stringOrArr)) {\n res = stringOrArr.split(/\\s*[\\s,]\\s*/);\n }\n return res.filter(f => !!f && (f.trim() !== ''));\n }\n\n removeDoubleOrMoreEmptyLines(s: string) {\n s = s?.split('\\n').map(f => f.trimRight()).join('\\n');\n return s?.replace(/(\\r\\n|\\r|\\n){2,}/g, '$1\\n');\n }\n\n /**\n *\n * https://stackoverflow.com/a/57129703/1345101\n *\n * Returns the plural of an English word.\n *\n * @export\n * @param {string} word\n * @param {number} [amount]\n * @returns {string}\n */\n plural(word: string, amount?: number): string {\n if (amount !== undefined && amount === 1) {\n return word\n }\n const plural: { [key: string]: string } = {\n '(quiz)$': \"$1zes\",\n '^(ox)$': \"$1en\",\n '([m|l])ouse$': \"$1ice\",\n '(matr|vert|ind)ix|ex$': \"$1ices\",\n '(x|ch|ss|sh)$': \"$1es\",\n '([^aeiouy]|qu)y$': \"$1ies\",\n '(hive)$': \"$1s\",\n '(?:([^f])fe|([lr])f)$': \"$1$2ves\",\n '(shea|lea|loa|thie)f$': \"$1ves\",\n 'sis$': \"ses\",\n '([ti])um$': \"$1a\",\n '(tomat|potat|ech|her|vet)o$': \"$1oes\",\n '(bu)s$': \"$1ses\",\n '(alias)$': \"$1es\",\n '(octop)us$': \"$1i\",\n '(ax|test)is$': \"$1es\",\n '(us)$': \"$1es\",\n '([^s]+)$': \"$1s\"\n }\n const irregular: { [key: string]: string } = {\n 'move': 'moves',\n 'foot': 'feet',\n 'goose': 'geese',\n 'sex': 'sexes',\n 'child': 'children',\n 'man': 'men',\n 'tooth': 'teeth',\n 'person': 'people'\n }\n const uncountable: string[] = [\n 'sheep',\n 'fish',\n 'deer',\n 'moose',\n 'series',\n 'species',\n 'money',\n 'rice',\n 'information',\n 'equipment',\n 'bison',\n 'cod',\n 'offspring',\n 'pike',\n 'salmon',\n 'shrimp',\n 'swine',\n 'trout',\n 'aircraft',\n 'hovercraft',\n 'spacecraft',\n 'sugar',\n 'tuna',\n 'you',\n 'wood'\n ]\n // save some time in the case that singular and plural are the same\n if (uncountable.indexOf(word.toLowerCase()) >= 0) {\n return word\n }\n // check for irregular forms\n for (const w in irregular) {\n const pattern = new RegExp(`${w}$`, 'i')\n const replace = irregular[w]\n if (pattern.test(word)) {\n return word.replace(pattern, replace)\n }\n }\n // check for matches using regular expressions\n for (const reg in plural) {\n const pattern = new RegExp(reg, 'i')\n if (pattern.test(word)) {\n return word.replace(pattern, plural[reg])\n }\n }\n return word\n }\n\n\n /**\n * https://stackoverflow.com/a/57129703/1345101\n *\n * Returns the singular of an English word.\n *\n * @export\n * @param {string} word\n * @param {number} [amount]\n * @returns {string}\n */\n singular(word: string, amount?: number): string {\n if (amount !== undefined && amount !== 1) {\n return word\n }\n const singular: { [key: string]: string } = {\n '(quiz)zes$': \"$1\",\n '(matr)ices$': \"$1ix\",\n '(vert|ind)ices$': \"$1ex\",\n '^(ox)en$': \"$1\",\n '(alias)es$': \"$1\",\n '(octop|vir)i$': \"$1us\",\n '(cris|ax|test)es$': \"$1is\",\n '(shoe)s$': \"$1\",\n '(o)es$': \"$1\",\n '(bus)es$': \"$1\",\n '([m|l])ice$': \"$1ouse\",\n '(x|ch|ss|sh)es$': \"$1\",\n '(m)ovies$': \"$1ovie\",\n '(s)eries$': \"$1eries\",\n '([^aeiouy]|qu)ies$': \"$1y\",\n '([lr])ves$': \"$1f\",\n '(tive)s$': \"$1\",\n '(hive)s$': \"$1\",\n '(li|wi|kni)ves$': \"$1fe\",\n '(shea|loa|lea|thie)ves$': \"$1f\",\n '(^analy)ses$': \"$1sis\",\n '((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$': \"$1$2sis\",\n '([ti])a$': \"$1um\",\n '(n)ews$': \"$1ews\",\n '(h|bl)ouses$': \"$1ouse\",\n '(corpse)s$': \"$1\",\n '(us)es$': \"$1\",\n 's$': \"\"\n }\n const irregular: { [key: string]: string } = {\n 'move': 'moves',\n 'foot': 'feet',\n 'goose': 'geese',\n 'sex': 'sexes',\n 'child': 'children',\n 'man': 'men',\n 'tooth': 'teeth',\n 'person': 'people'\n }\n const uncountable: string[] = [\n 'sheep',\n 'fish',\n 'deer',\n 'moose',\n 'series',\n 'species',\n 'money',\n 'rice',\n 'information',\n 'equipment',\n 'bison',\n 'cod',\n 'offspring',\n 'pike',\n 'salmon',\n 'shrimp',\n 'swine',\n 'trout',\n 'aircraft',\n 'hovercraft',\n 'spacecraft',\n 'sugar',\n 'tuna',\n 'you',\n 'wood'\n ]\n // save some time in the case that singular and plural are the same\n if (uncountable.indexOf(word.toLowerCase()) >= 0) {\n return word\n }\n // check for irregular forms\n for (const w in irregular) {\n const pattern = new RegExp(`${irregular[w]}$`, 'i')\n const replace = w\n if (pattern.test(word)) {\n return word.replace(pattern, replace)\n }\n }\n // check for matches using regular expressions\n for (const reg in singular) {\n const pattern = new RegExp(reg, 'i')\n if (pattern.test(word)) {\n return word.replace(pattern, singular[reg])\n }\n }\n return word\n }\n\n}","//#region imports\nimport { exec } from 'child_process';\nimport type { ChildProcess } from 'child_process';\n\nimport * as spawn from 'cross-spawn';\nimport * as dateformat from 'dateformat';\nimport * as fuzzy from 'fuzzy';\nimport { Log, Level } from 'ng2-logger/browser';\nimport { config } from 'tnp-config/browser';\nimport {\n _,\n os,\n path,\n fse,\n child_process,\n fkill,\n crossPlatformPath,\n chalk,\n} from 'tnp-core/browser';\nimport { CLI, UtilsProcess, UtilsTerminal } from 'tnp-core/browser';\nimport { CLASS } from 'typescript-class-helpers/browser';\n\nimport type { BaseProject } from '../../index';\nimport { Helpers } from '../../index';\n\n//#endregion\n\nexport class HelpersProcess {\n //#region restart application itself\n async restartApplicationItself(nameOfApp: string) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region os is macos\n osIsMacOs(versino: 'big-sur' | 'catalina') {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region generate file wrap\n generatedFileWrap(content: string) {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region change cwd wrapper\n async changeCwdWrapper(\n dir: string,\n functionToExecure: Function,\n logLevel: Level = Level.__NOTHING,\n ) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region change cwd\n changeCwd(dir?: string) {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region go to dir\n /**\n * // TODO refactor this\n * @deprecated\n */\n goToDir(dir = '..') {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region press key or wait\n async pressKeyOrWait(\n message = 'Press enter try again',\n printWaitMessages = 0,\n ) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region press key and continue\n /**\n * @deprecated use UtilsTerminal.pressAnyKey\n */\n pressKeyAndContinue(message = 'Press enter to continue..') {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region list\n /**\n * @deprecated use UtilsTerminal.multiselect\n */\n async list<T = string>(\n question: string,\n choices:\n | { name: string; value: T }[]\n | { [choice: string]: { name: string } },\n ) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region multiple choices ask\n /**\n * @deprecated use UtilsTerminal.multiselect\n */\n async multipleChoicesAsk(\n question: string,\n choices: { name: string; value: string }[],\n autocomplete: boolean = false,\n selected?: { name: string; value: string }[],\n ): Promise<string[]> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region input\n /**\n * @deprecated use UtilsTerminal.input\n */\n async input(options: {\n defaultValue?: string;\n question: string;\n // required?: boolean;\n validate?: (value: string) => boolean;\n }): Promise<string> {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region select\n /**\n * @deprecated use UtilsTerminal.multiselect\n * TODO wierd problem when pressing key like \"i\"\n */\n async selectChoicesAsk<T = string>(\n question: string,\n choices:\n | { name: string; value: T }[]\n | { [choice: string]: { name: string } },\n ): Promise<T> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region autocomplete ask\n async autocompleteAsk<T = string>(\n question: string,\n choices: { name: string; value: T }[],\n pageSize = 10,\n ): Promise<T> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region get working dir of process\n getWorkingDirOfProcess(PID: number) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region output to vscode\n outputToVScode(\n data: { label: string; option: string }[] | string,\n disableEncode = false,\n ) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region action wrapper\n async actionWrapper(fn: () => void, taskName: string = 'Task') {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region terminal line\n terminalLine() {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region kill all node except current process\n /**\n * THIS DEOS NOT WORK !\n * ! TOOD FIX THIS\n */\n async killAllNodeExceptCurrentProcess() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region kill all node\n killAllNode() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region format path\n formatPath(pathToFileOrFolder: string) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region prepare wathc command\n /**\n * @deprecated\n */\n prepareWatchCommand(cmd) {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region get string from\n /**\n * @deprecated\n */\n getStringFrom(command: string, descriptionOfCommand?: string) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region wait for message in stdout\n async waitForMessegeInStdout(proc: ChildProcess, message: string) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n}","import * as crypto from 'crypto';\nimport { promisify } from 'util';\n\nimport type { CopyOptionsSync } from 'fs-extra';\nimport * as glob from 'glob';\nimport { config, extAllowedToReplace } from 'tnp-config/browser';\nimport {\n _,\n path,\n fse,\n os,\n rimraf,\n crossPlatformPath,\n json5,\n child_process,\n} from 'tnp-core/browser';\nimport * as underscore from 'underscore';\n\nimport { Helpers } from '../../index';\n\ndeclare const global: any;\n\nexport interface GetRecrusiveFilesFromOptions {\n // withNameOnly?: string; // TODO\n}\n\nexport class HelpersFileFolders {\n /**\n * Calculate file or string checksum\n */\n checksum(absolutePathToFileOrContent: string, algorithm?: 'md5' | 'sha1') {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n getValueFromJSON(\n filepath: string,\n lodashGetPath: string,\n defaultValue = void 0,\n ): any {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n getValueFromJSONC(\n filepath: string,\n lodashGetPath: string,\n defaultValue = void 0,\n ): any {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n readValueFromJson(\n filepath: string,\n lodashGetPath: string,\n defaultValue = void 0,\n ): any {\n/* */\n/* */\n return (void 0);\n }\n\n readValueFromJsonC(\n filepath: string,\n lodashGetPath: string,\n defaultValue = void 0,\n ): any {\n/* */\n/* */\n return (void 0);\n }\n\n setValueToJSON(\n filepath: string | string[],\n lodashGetPath: string,\n value: any,\n ): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n setValueToJSONC(filepath: string, lodashGetPath: string, value: any): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n /**\n * file size in bytes\n */\n size(filePath: string): number {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n pathFromLink(filePath: string): string {\n/* */\n/* */\n return (void 0);\n }\n\n // renameFolder(from: string, to: string, cwd?: string) {\n // // const command = `mv ${from} ${to}`;\n // const command = `renamer --find ${from} --replace ${to} *`;\n // Helpers.run(command, { cwd }).sync()\n // }\n\n /**\n * @deprecated\n */\n renameFolder(from: string, to: string, cwd?: string): void {\n/* */\n/* */\n return (void 0);\n }\n\n /**\n * @deprecated\n */\n renameFiles(from: string, to: string, cwd?: string): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n getTempFolder() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n // createMultiplatformLink(target: string, link: string) {\n\n // if (this.isPlainFileOrFolder(link)) {\n // link = path.join(process.cwd(), link);\n // }\n\n // let command: string;\n // if (os.platform() === 'win32') {\n\n // if (target.startsWith('./')) {\n // target = path.win32.normalize(path.join(process.cwd(), path.basename(target)))\n // } else {\n // if (target === '.' || target === './') {\n // target = path.win32.normalize(path.join(process.cwd(), path.basename(link)))\n // } else {\n // target = path.win32.normalize(path.join(target, path.basename(link)))\n // }\n // }\n // if (fse.existsSync(target)) {\n // fse.unlinkSync(target);\n // }\n // target = path.win32.normalize(target)\n // if (link === '.' || link === './') {\n // link = process.cwd()\n // }\n // link = path.win32.normalize(link);\n // // if (path.resolve(target) === path.resolve(link)) { // TODO\n // // Helpers.warn(`[createMultiplatformLink][win32] Trying to link same location`);\n // // return;\n // // }\n // command = \"mklink \\/D \"\n // + target\n // + \" \"\n // + link\n // + \" >nul 2>&1 \"\n // } else {\n // if (target.startsWith('./')) {\n // target = target.replace(/^\\.\\//g, '');\n // }\n // if (link === '.' || link === './') {\n // link = process.cwd()\n // }\n // if (path.resolve(target) === path.resolve(link)) {\n // Helpers.warn(`[createMultiplatformLink] Trying to link same location`);\n // return;\n // }\n // command = `ln -sf \"${link}\" \"${target}\"`;\n // }\n // child_process.execSync(command);\n // }\n\n isPlainFileOrFolder(filePath: string): boolean {\n/* */\n/* */\n return (void 0);\n }\n\n /**\n * @deprecated\n * use import (or modules only on backend)\n */\n requireUncached(module: string): any {\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n /**\n * @deprecated\n * use import (or modules only on backend)\n *\n * get default export object from js file\n * @param jsFilePath\n */\n require(jsFilePath: string) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n tryRecreateDir(dirpath: string): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n /**\n * @deprecated\n */\n tryCopyFrom(source: string, destination: string, options = {}): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n // private deleteFolderRecursive = (pathToFolder) => {\n // if (fs.existsSync(pathToFolder)) {\n // fs.readdirSync(pathToFolder).forEach((file, index) => {\n // const curPath = path.join(pathToFolder, file);\n // if (fs.lstatSync(curPath).isDirectory()) { // recurse\n // this.deleteFolderRecursive(curPath);\n // } else { // delete file\n // fs.unlinkSync(curPath);\n // }\n // });\n // fs.rmdirSync(pathToFolder);\n // }\n // };\n\n move(\n from: string,\n to: string,\n options?: {\n purpose?: string; // for logging purposes\n },\n ): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n findChildren<T>(\n location: string,\n createFn: (childLocation: string) => T,\n options?: { allowAllNames: boolean },\n ): T[] {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n /**\n * @deprecated\n */\n findChildrenNavi<T>(\n location: string,\n createFn: (childLocation: string) => T,\n ): T[] {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n /**\n * get all files from folder\n * absolute paths\n */\n getRecrusiveFilesFrom(\n dir: string,\n ommitFolders: string[] = [],\n options?: GetRecrusiveFilesFromOptions,\n ): string[] {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n checkIfNameAllowedForTaonProj(folderName: string): boolean {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n getLinesFromFiles(filename: string, lineCount?: number): Promise<string[]> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n /**\n * Get the most recent changes file in direcory\n * @param dir absoulute path to file\n */\n getMostRecentFileName(dir: string): string {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n getMostRecentFilesNames(dir: string): string[] {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n removeExcept(fromPath: string, exceptFolderAndFiles: string[]): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n /**\n * Copy folder using os native command\n * (perfect for large folders/files)\n */\n async copyFolderOsNative(\n from: string,\n to: string,\n options?: {\n removeDestination?: boolean;\n },\n ): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n copy(\n sourceDir: string | string[],\n destinationDir: string | string[],\n options?: {\n filter?: any;\n overwrite?: boolean;\n recursive?: boolean;\n asSeparatedFiles?: boolean;\n asSeparatedFilesAllowNotCopied?: boolean;\n asSeparatedFilesSymlinkAsFile?: boolean;\n /**\n * folders to omit: example: ['src','node_modules']\n *\n * This option works only with omitFoldersBaseFolder\n */\n omitFolders?: string[];\n /**\n * absolute path for base folder for omitFolder option\n */\n omitFoldersBaseFolder?: string;\n copySymlinksAsFiles?: boolean;\n copySymlinksAsFilesDeleteUnexistedLinksFromSourceFirst?: boolean;\n useTempFolder?: boolean;\n dontAskOnError?: boolean;\n } & CopyOptionsSync,\n ): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n filterDontCopy(basePathFoldersTosSkip: string[], projectOrBasepath: string) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n filterOnlyCopy(\n basePathFoldersOnlyToInclude: string[],\n projectOrBasepath: string,\n ) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n copyFile(\n sourcePath: string,\n destinationPath: string,\n options?: {\n transformTextFn?: (input: string) => string;\n debugMode?: boolean;\n fast?: boolean;\n dontCopySameContent?: boolean;\n },\n ): boolean {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n /**\n * get real absolute path\n */\n resolve(fileOrFolderPath: string): string {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n}","export class HelpersNumber {\n /**\n * @deprecated\n * use _.random()\n */\n randomInteger = (max, min) => Math.round(Math.random() * (max - min)) + min;\n\n\n}","// session tab it\n// realtime session\n\nconst key = Symbol('[taon-helpers] helper browser key')\n\nexport class HelpersBrowser {\n\n private static callbacks = [];\n static onInit(callback: (ins: HelpersBrowser) => any) {\n this.callbacks.push(callback);\n }\n\n get win() {\n let win = window;\n return win;\n }\n\n private get tabIdSessionStorage() {\n return Number(this.win.sessionStorage?.tabId) || 0;\n }\n\n readonly tabId: number;\n\n private static inst: HelpersBrowser;\n init = (() => {\n const win = this.win;\n\n if (!win[key]) {\n win[key] = new HelpersBrowser(win);\n }\n HelpersBrowser.inst = win[key];\n })();\n\n private constructor(win: Window) {\n //#region @browser\n win.addEventListener(\"beforeunload\", (e) => {\n win.sessionStorage.tabId = this.tabId;\n return null;\n });\n\n setTimeout(() => {\n\n if (win.sessionStorage?.tabId) {\n // @ts-ignore\n this.tabId = Number(win.sessionStorage.tabId);\n win.sessionStorage.removeItem(\"tabId\");\n }\n else {\n // @ts-ignore\n this.tabId = Math.floor(Math.random() * 1000000) + (new Date()).getTime();\n }\n HelpersBrowser.callbacks.forEach((c) => {\n c(this);\n });\n })\n\n //#endregion\n }\n\n\n static get instance() {\n return HelpersBrowser.inst;\n }\n\n}","//#region imports\nimport { _, path, Utils } from 'tnp-core/browser';\nimport { HelpersArrayObj } from './helpers-array-obj';\nimport { HelpersStringsRegexes } from './helpers-strings-regexes';\nimport { HelpersStrings } from './helpers-strings';\nimport { HelpersProcess } from './for-backend/helpers-process';\nimport { HelpersFileFolders } from './for-backend/helpers-file-folders';\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \nimport { config } from 'tnp-config/browser';\nimport { Helpers, UtilsQuickFixes, Validators } from '../index';\nimport { CLASS } from 'typescript-class-helpers/browser';\nimport { CoreHelpers, CoreModels } from 'tnp-core/browser';\nimport { HelpersNumber } from './helpers-numbers';\n//#region @browser\nimport { HelpersBrowser } from './for-browser/helpers-browser';\nimport { HelpersAngular } from './for-browser/angular.helper';\n//#endregion\n//#endregion\n\n//#region class mixing helper\n/**\n * Mixing for multiclass inheritance\n *\n * How to use It:\n *\n * class Wolverine {}\n * class Jean {}\n * export class Child {}\n * export interface MyChild implements Wolverine, Jean {}\n * applyMixing(Child,[Wolverine, Jean]);\n *\n * @param derivedCtor Target Class\n * @param baseCtors Base Classes\n */\nexport function applyMixins(derivedCtor: any, baseCtors: any[]) {\n baseCtors.forEach(baseCtor => {\n Object.getOwnPropertyNames(baseCtor.prototype).forEach(name => {\n Object.defineProperty(\n derivedCtor.prototype,\n name,\n Object.getOwnPropertyDescriptor(baseCtor.prototype, name),\n );\n });\n });\n}\n//#endregion\n\nexport class HelpersTaon extends CoreHelpers {\n //#region staic\n private static _instance: HelpersTaon & CoreHelpers;\n public static get Instance(): HelpersTaon {\n if (!HelpersTaon._instance) {\n HelpersTaon._instance = new HelpersTaon();\n }\n return HelpersTaon._instance;\n }\n //#endregion\n\n //#region constructor\n private constructor(\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n public arrays = new HelpersArrayObj(),\n public strings = new HelpersStrings(),\n public numbers = new HelpersNumber(),\n //#region @browser\n public browser = HelpersBrowser.instance,\n public ng = HelpersAngular,\n //#endregion\n ) {\n super();\n }\n //#endregion\n\n //#region methods & getters / cli wrap\n CLIWRAP(f: Function, name: string) {\n CLASS.setName(f, name);\n return f;\n }\n //#endregion\n\n //#region methods & getters / uniqArray\n /**\n * Bundle file with node_modules into one file\n * default strategy is cli\n * Please keep: 'ts-node', 'typescript' as dependency in your package.json\n */\n async bundleCodeIntoSingleFile(\n pathToJsFile: string,\n outputFilePath: string,\n options?: {\n strategy?: 'cli' | 'vscode-ext' | 'node-app' | 'electron-app';\n /**\n * ! beforeWrite needs to return output\n */\n beforeWrite?: (options: {\n output?: string;\n copyToDestination?: (fileOrFolderAbsPath: string) => void;\n }) => string;\n additionalExternals?: string[];\n additionalReplaceWithNothing?: string[];\n skipFixingSQLlite?: boolean;\n minify?: boolean;\n },\n ): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n /**\n * @deprecated\n * use Utils.uniqArray from tnp-core\n */\n uniqArray<T = any>(array: any[], uniqueProperty?: keyof T): T[] {\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / replace invisible characters\n // replaceInvisibleCharacters(s: string) {\n // var reg = /[\\0-\\x1F\\x7F-\\x9F\\xAD\\u0378\\u0379\\u037F-\\u0383\\u038B\\u038D\\u03A2\\u0528-\\u0530\\u0557\\u0558\\u0560\\u0588\\u058B-\\u058E\\u0590\\u05C8-\\u05CF\\u05EB-\\u05EF\\u05F5-\\u0605\\u061C\\u061D\\u06DD\\u070E\\u070F\\u074B\\u074C\\u07B2-\\u07BF\\u07FB-\\u07FF\\u082E\\u082F\\u083F\\u085C\\u085D\\u085F-\\u089F\\u08A1\\u08AD-\\u08E3\\u08FF\\u0978\\u0980\\u0984\\u098D\\u098E\\u0991\\u0992\\u09A9\\u09B1\\u09B3-\\u09B5\\u09BA\\u09BB\\u09C5\\u09C6\\u09C9\\u09CA\\u09CF-\\u09D6\\u09D8-\\u09DB\\u09DE\\u09E4\\u09E5\\u09FC-\\u0A00\\u0A04\\u0A0B-\\u0A0E\\u0A11\\u0A12\\u0A29\\u0A31\\u0A34\\u0A37\\u0A3A\\u0A3B\\u0A3D\\u0A43-\\u0A46\\u0A49\\u0A4A\\u0A4E-\\u0A50\\u0A52-\\u0A58\\u0A5D\\u0A5F-\\u0A65\\u0A76-\\u0A80\\u0A84\\u0A8E\\u0A92\\u0AA9\\u0AB1\\u0AB4\\u0ABA\\u0ABB\\u0AC6\\u0ACA\\u0ACE\\u0ACF\\u0AD1-\\u0ADF\\u0AE4\\u0AE5\\u0AF2-\\u0B00\\u0B04\\u0B0D\\u0B0E\\u0B11\\u0B12\\u0B29\\u0B31\\u0B34\\u0B3A\\u0B3B\\u0B45\\u0B46\\u0B49\\u0B4A\\u0B4E-\\u0B55\\u0B58-\\u0B5B\\u0B5E\\u0B64\\u0B65\\u0B78-\\u0B81\\u0B84\\u0B8B-\\u0B8D\\u0B91\\u0B96-\\u0B98\\u0B9B\\u0B9D\\u0BA0-\\u0BA2\\u0BA5-\\u0BA7\\u0BAB-\\u0BAD\\u0BBA-\\u0BBD\\u0BC3-\\u0BC5\\u0BC9\\u0BCE\\u0BCF\\u0BD1-\\u0BD6\\u0BD8-\\u0BE5\\u0BFB-\\u0C00\\u0C04\\u0C0D\\u0C11\\u0C29\\u0C34\\u0C3A-\\u0C3C\\u0C45\\u0C49\\u0C4E-\\u0C54\\u0C57\\u0C5A-\\u0C5F\\u0C64\\u0C65\\u0C70-\\u0C77\\u0C80\\u0C81\\u0C84\\u0C8D\\u0C91\\u0CA9\\u0CB4\\u0CBA\\u0CBB\\u0CC5\\u0CC9\\u0CCE-\\u0CD4\\u0CD7-\\u0CDD\\u0CDF\\u0CE4\\u0CE5\\u0CF0\\u0CF3-\\u0D01\\u0D04\\u0D0D\\u0D11\\u0D3B\\u0D3C\\u0D45\\u0D49\\u0D4F-\\u0D56\\u0D58-\\u0D5F\\u0D64\\u0D65\\u0D76-\\u0D78\\u0D80\\u0D81\\u0D84\\u0D97-\\u0D99\\u0DB2\\u0DBC\\u0DBE\\u0DBF\\u0DC7-\\u0DC9\\u0DCB-\\u0DCE\\u0DD5\\u0DD7\\u0DE0-\\u0DF1\\u0DF5-\\u0E00\\u0E3B-\\u0E3E\\u0E5C-\\u0E80\\u0E83\\u0E85\\u0E86\\u0E89\\u0E8B\\u0E8C\\u0E8E-\\u0E93\\u0E98\\u0EA0\\u0EA4\\u0EA6\\u0EA8\\u0EA9\\u0EAC\\u0EBA\\u0EBE\\u0EBF\\u0EC5\\u0EC7\\u0ECE\\u0ECF\\u0EDA\\u0EDB\\u0EE0-\\u0EFF\\u0F48\\u0F6D-\\u0F70\\u0F98\\u0FBD\\u0FCD\\u0FDB-\\u0FFF\\u10C6\\u10C8-\\u10CC\\u10CE\\u10CF\\u1249\\u124E\\u124F\\u1257\\u1259\\u125E\\u125F\\u1289\\u128E\\u128F\\u12B1\\u12B6\\u12B7\\u12BF\\u12C1\\u12C6\\u12C7\\u12D7\\u1311\\u1316\\u1317\\u135B\\u135C\\u137D-\\u137F\\u139A-\\u139F\\u13F5-\\u13FF\\u169D-\\u169F\\u16F1-\\u16FF\\u170D\\u1715-\\u171F\\u1737-\\u173F\\u1754-\\u175F\\u176D\\u1771\\u1774-\\u177F\\u17DE\\u17DF\\u17EA-\\u17EF\\u17FA-\\u17FF\\u180F\\u181A-\\u181F\\u1878-\\u187F\\u18AB-\\u18AF\\u18F6-\\u18FF\\u191D-\\u191F\\u192C-\\u192F\\u193C-\\u193F\\u1941-\\u1943\\u196E\\u196F\\u1975-\\u197F\\u19AC-\\u19AF\\u19CA-\\u19CF\\u19DB-\\u19DD\\u1A1C\\u1A1D\\u1A5F\\u1A7D\\u1A7E\\u1A8A-\\u1A8F\\u1A9A-\\u1A9F\\u1AAE-\\u1AFF\\u1B4C-\\u1B4F\\u1B7D-\\u1B7F\\u1BF4-\\u1BFB\\u1C38-\\u1C3A\\u1C4A-\\u1C4C\\u1C80-\\u1CBF\\u1CC8-\\u1CCF\\u1CF7-\\u1CFF\\u1DE7-\\u1DFB\\u1F16\\u1F17\\u1F1E\\u1F1F\\u1F46\\u1F47\\u1F4E\\u1F4F\\u1F58\\u1F5A\\u1F5C\\u1F5E\\u1F7E\\u1F7F\\u1FB5\\u1FC5\\u1FD4\\u1FD5\\u1FDC\\u1FF0\\u1FF1\\u1FF5\\u1FFF\\u200B-\\u200F\\u202A-\\u202E\\u2060-\\u206F\\u2072\\u2073\\u208F\\u209D-\\u209F\\u20BB-\\u20CF\\u20F1-\\u20FF\\u218A-\\u218F\\u23F4-\\u23FF\\u2427-\\u243F\\u244B-\\u245F\\u2700\\u2B4D-\\u2B4F\\u2B5A-\\u2BFF\\u2C2F\\u2C5F\\u2CF4-\\u2CF8\\u2D26\\u2D28-\\u2D2C\\u2D2E\\u2D2F\\u2D68-\\u2D6E\\u2D71-\\u2D7E\\u2D97-\\u2D9F\\u2DA7\\u2DAF\\u2DB7\\u2DBF\\u2DC7\\u2DCF\\u2DD7\\u2DDF\\u2E3C-\\u2E7F\\u2E9A\\u2EF4-\\u2EFF\\u2FD6-\\u2FEF\\u2FFC-\\u2FFF\\u3040\\u3097\\u3098\\u3100-\\u3104\\u312E-\\u3130\\u318F\\u31BB-\\u31BF\\u31E4-\\u31EF\\u321F\\u32FF\\u4DB6-\\u4DBF\\u9FCD-\\u9FFF\\uA48D-\\uA48F\\uA4C7-\\uA4CF\\uA62C-\\uA63F\\uA698-\\uA69E\\uA6F8-\\uA6FF\\uA78F\\uA794-\\uA79F\\uA7AB-\\uA7F7\\uA82C-\\uA82F\\uA83A-\\uA83F\\uA878-\\uA87F\\uA8C5-\\uA8CD\\uA8DA-\\uA8DF\\uA8FC-\\uA8FF\\uA954-\\uA95E\\uA97D-\\uA97F\\uA9CE\\uA9DA-\\uA9DD\\uA9E0-\\uA9FF\\uAA37-\\uAA3F\\uAA4E\\uAA4F\\uAA5A\\uAA5B\\uAA7C-\\uAA7F\\uAAC3-\\uAADA\\uAAF7-\\uAB00\\uAB07\\uAB08\\uAB0F\\uAB10\\uAB17-\\uAB1F\\uAB27\\uAB2F-\\uABBF\\uABEE\\uABEF\\uABFA-\\uABFF\\uD7A4-\\uD7AF\\uD7C7-\\uD7CA\\uD7FC-\\uF8FF\\uFA6E\\uFA6F\\uFADA-\\uFAFF\\uFB07-\\uFB12\\uFB18-\\uFB1C\\uFB37\\uFB3D\\uFB3F\\uFB42\\uFB45\\uFBC2-\\uFBD2\\uFD40-\\uFD4F\\uFD90\\uFD91\\uFDC8-\\uFDEF\\uFDFE\\uFDFF\\uFE1A-\\uFE1F\\uFE27-\\uFE2F\\uFE53\\uFE67\\uFE6C-\\uFE6F\\uFE75\\uFEFD-\\uFF00\\uFFBF-\\uFFC1\\uFFC8\\uFFC9\\uFFD0\\uFFD1\\uFFD8\\uFFD9\\uFFDD-\\uFFDF\\uFFE7\\uFFEF-\\uFFFB\\uFFFE\\uFFFF]/g;\n // return s.replace(reg, '');\n // }\n //#endregion\n\n //#region methods & getters / parse url\n urlParse(portOrHost: number | string | URL, forceDomain = false) {\n let url: URL;\n if (portOrHost instanceof URL) {\n url = portOrHost;\n } else if (_.isNumber(portOrHost)) {\n url = new URL(`http://localhost:${portOrHost}`);\n } else if (!_.isNaN(Number(portOrHost))) {\n url = new URL(`http://localhost:${Number(portOrHost)}`);\n } else if (_.isString(portOrHost)) {\n try {\n url = new URL(portOrHost);\n } catch (error) {}\n if (Validators.network.isValidIp(portOrHost)) {\n try {\n url = new URL(`http://${portOrHost}`);\n } catch (error) {\n Helpers.warn(`Not able to get port from ${portOrHost}`);\n }\n }\n if (forceDomain) {\n const domain = portOrHost as string;\n url = new URL(\n domain.startsWith('http') ? domain : `http://${portOrHost}`,\n );\n }\n }\n return url;\n }\n //#endregion\n\n //#region methods & getters / slash\n slash(pathFromWindowsOrUnixType: string) {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / is elevated\n async isElevated() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n //#endregion\n\n //#region methods & getters / get local ip addresses\n /**\n * TODO fix this methods\n */\n async localIpAddress() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / get all local ip addresses\n\n allLocalIpAddresses(): URL[] {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / mesure execution in ms\n async mesureExectionInMs(\n description: string,\n functionToExecute: Function,\n ...functionArguments: any[]\n ): Promise<number> {\n var start = new Date();\n await Helpers.runSyncOrAsync({\n functionFn: functionToExecute,\n arrayOfParams: functionArguments,\n });\n //@ts-ignore\n var end = new Date() - start;\n if (Helpers.isBrowser) {\n Helpers.info(`Execution time: ${end.toString()}ms for \"${description}\"`);\n }\n/* */\n/* */\n/* */\n/* */\n \n return end;\n }\n //#endregion\n\n //#region methods & getters / mesure execution in ms (sync)\n mesureExectionInMsSync(\n description: string,\n functionToExecute: () => void,\n ): number {\n var start = new Date();\n functionToExecute();\n //@ts-ignore\n var end = new Date() - start;\n if (Helpers.isBrowser) {\n Helpers.info(`Execution time: ${end.toString()}ms for \"${description}\"`);\n }\n/* */\n/* */\n/* */\n/* */\n \n return end;\n }\n //#endregion\n\n //#region methods & getters / wait for condition\n waitForCondition(conditionFn: (any) => boolean, howOfftenCheckInMs = 1000) {\n return new Promise(async (resolve, reject) => {\n const result = await Helpers.runSyncOrAsync({ functionFn: conditionFn });\n if (result) {\n resolve(void 0);\n } else {\n setTimeout(() => {\n Helpers.waitForCondition(conditionFn, howOfftenCheckInMs).then(() => {\n resolve(void 0);\n });\n }, howOfftenCheckInMs);\n }\n });\n }\n //#endregion\n\n //#region methods & getters / get methods name\n getMethodName(classObject, method): string {\n var methodName = null;\n Object.getOwnPropertyNames(classObject).forEach(prop => {\n if (classObject[prop] === method) {\n methodName = prop;\n }\n });\n\n if (methodName !== null) {\n return methodName;\n }\n\n var proto = Object.getPrototypeOf(classObject);\n if (proto) {\n return Helpers.getMethodName(proto, method);\n }\n return null;\n }\n //#endregion\n\n //#region methods & getters / fix webpack config\n /**\n * @deprecated\n */\n fixWebpackEnv(env: Object) {\n _.forIn(env, (v, k) => {\n const value: string = v as any;\n if (value === 'true') env[k] = true;\n if (value === 'false') env[k] = false;\n });\n }\n //#endregion\n\n //#region methods & getters / work calculate array\n /**\n * @deprecated\n */\n async workerCalculateArray(\n dataToSplit: any[],\n operation: (\n dataChunk: any[],\n workerNumber?: number | undefined,\n ) => Promise<void>,\n options?: {\n maxesForWorkes?: { [workerMaxes: number]: number };\n workerLimit?: number;\n globals?: any;\n },\n ) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n //#endregion\n\n //#region methods & getters / check environment\n checkEnvironment(deps?: CoreModels.GlobalDependencies) {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / apply mixins\n public applyMixins = applyMixins;\n //#endregion\n\n //#region methods & getters / is valid ip\n isValidIp = Validators.network.isValidIp;\n //#endregion\n\n //#region methods & getters / is valid git repo url\n isValidGitRepuUrl = Validators.git.isValidRepoUrl;\n //#endregion\n}\n\n//#region class mixins\nexport interface HelpersTaon\n extends HelpersStringsRegexes,\n HelpersProcess,\n HelpersFileFolders {}\n\napplyMixins(HelpersTaon, [\n HelpersStringsRegexes,\n HelpersProcess,\n HelpersFileFolders,\n]);\n//#endregion\n// prettier-ignore-end","//#region imports\nimport { Helpers, crossPlatformPath } from \"tnp-core/browser\";\n\nimport type { BaseProjectResolver } from \"./base-project-resolver\";\n\n/* */\n/* */\n/* */\n/* */\n/* */\n \n//#endregion\n\nexport class BaseDb<DB extends object> {\n\n constructor(\n private ins: BaseProjectResolver,\n private dbName: string,\n private defaultDb: DB,\n ) {\n\n }\n/* */\n/* */\n \n\n public get isUsingDB(): boolean {\n/* */\n/* */\n return (void 0);\n }\n\n get projectsDbLocation() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n\n}","//#region imports\nimport { crossPlatformPath } from 'tnp-core/browser';\n\nimport type { BaseProjectResolver } from './classes/base-project-resolver';\nimport { BaseDb } from './classes/base-db';\nimport { Helpers } from '../index';\n/* */\n/* */\n/* */\n \n//#endregion\n\nconst defaultDb = {\n config: {} as { [key: string]: string | number | boolean | null },\n};\n\nexport class ConfigDatabase extends BaseDb<typeof defaultDb> {\n constructor(ins: BaseProjectResolver) {\n super(ins, 'config', defaultDb);\n }\n private get selectedCodeEditorKey(): string {\n return 'selected-code-editor';\n }\n\n public async selectCodeEditor(): Promise<\n 'code' | 'idea' | 'idea64' | string\n > {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n public async getCodeEditor(): Promise<'code' | 'idea' | 'idea64' | string> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n}","//#region imports\nimport { Helpers, crossPlatformPath } from \"tnp-core/browser\";\nimport type { BaseProjectResolver } from \"./classes/base-project-resolver\";\nimport { BaseDb } from \"./classes/base-db\";\n//#endregion\n\nconst defaultDb = {\n projects: [] as {\n location: string;\n }[],\n}\n\nexport class ProjectDatabase extends BaseDb<typeof defaultDb>{\n constructor(\n ins: BaseProjectResolver,\n ) {\n super(ins, 'projects', defaultDb);\n }\n\n async getAllProjectsFromDB() {\n/* */\n/* */\n/* */\n return (void 0);\n }\n}","import { Taon } from 'taon/browser';\nimport { _, chalk } from 'tnp-core/browser';\n\nexport type PortStatus =\n | 'unassigned'\n | 'assigned'\n | 'assigned-not-registered'\n | 'assigned-taken-by-os';\n\nexport const PortStatusArr: PortStatus[] = [\n 'unassigned',\n 'assigned',\n 'assigned-not-registered',\n 'assigned-taken-by-os',\n];\n\n@Taon.Entity({\n className: 'Port',\n uniqueKeyProp: 'port',\n})\nexport class Port extends Taon.Base.Entity {\n static from(opt: Omit<Port, 'version' | '_' | 'clone' | 'titleOnList' | 'relation'| 'relations'>) {\n return _.merge(new Port(), opt);\n }\n\n static getTitleForFreePort(port: Number) {\n return `free port ${port}`\n }\n\n get titleOnList(): string {\n/* */\n/* */\n return (void 0);\n }\n\n //#region port entity / columns / port\n/* */\n/* */\n/* */\n/* */\n/* */\n \n port: number;\n //#endregion\n\n //#region port entity / columns / serviceId\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n serviceId: string;\n //#endregion\n\n //#region port entity / columns / status\n /**\n * Port status\n */\n/* */\n/* */\n \n status: PortStatus;\n //#endregion\n\n //#region port entity / columns / when assigned timestamp\n /**\n * When port was assigned as registered service\n */\n/* */\n/* */\n \n whenAssignedTimestamp?: Number;\n //#endregion\n}","//#region imports\nimport { Helpers, UtilsTerminal } from 'tnp-core/browser';\nimport { _, chalk } from 'tnp-core/browser';\n\nimport type { CfontAlign, CfontStyle } from '../../../models';\n\nimport type { BaseCliWorker } from './base-cli-worker';\nimport type { BaseCliWorkerController } from './base-cli-worker-controller';\n//#endregion\n\nexport class BaseCliWorkerTerminalUI<\n WORKER extends BaseCliWorker<BaseCliWorkerController, any>,\n> {\n constructor(protected worker: WORKER) {}\n\n //#region protected methods / text for header\n protected async headerText(): Promise<string> {\n return _.startCase(this.worker.serviceID);\n }\n //#endregion\n\n //#region protected methods / text header style\n protected textHeaderStyle(): CfontStyle {\n return 'block';\n }\n //#endregion\n\n //#region protected methods / header text align\n protected headerTextAlign(): CfontAlign {\n return 'left';\n }\n //#endregion\n\n //#region protected methods / header\n /**\n * override whole terminal header\n */\n protected async header(): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region protected methods / info message below header\n async infoMessageBelowHeader(): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region protected methods / get back action\n protected get backAction() {\n return {\n back: {\n name: 'Back',\n },\n };\n }\n //#endregion\n\n //#region protected methods / choose action\n protected get chooseAction() {\n return {\n emptyAction: {\n name: ' -- choose any action below --',\n action: async () => {},\n },\n };\n }\n //#endregion\n\n //#region protected methods / worker terminal actions\n protected getWorkerTerminalActions(options?: {\n exitIsOnlyReturn?: boolean;\n chooseAction?: boolean;\n }): {\n [uniqeActionName: string]: {\n name: string;\n action: () => unknown | Promise<unknown>;\n };\n } {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region protected methods / info screen\n public async infoScreen(options?: {\n exitIsOnlyReturn?: boolean;\n }): Promise<void> {\n options = options || {};\n while (true) {\n Helpers.clearConsole();\n\n await this.header();\n\n await this.infoMessageBelowHeader();\n const choices = this.getWorkerTerminalActions(options);\n const choice = await UtilsTerminal.select<keyof typeof choices>({\n choices,\n question: 'Choose action',\n });\n const action = choices[choice].action;\n const result = await action();\n if (choice === 'exit' && result) {\n break;\n }\n }\n }\n //#endregion\n\n //#region protected methods / display special worker ready message\n public displaySpecialWorkerReadyMessage(): void {\n console.log(this.worker.SPECIAL_WORKER_READY_MESSAGE);\n }\n //#endregion\n}","//#region imports\n// @ts-ignore\nimport { EndpointContext, Taon } from 'taon/browser';\nimport { config } from 'tnp-config/browser';\nimport {\n chalk,\n crossPlatformPath,\n _,\n os,\n chokidar,\n UtilsProcess,\n Utils,\n UtilsTerminal,\n} from 'tnp-core/browser';\n\nimport { CfontAlign, CfontStyle, Helpers } from '../../../index';\n\nimport { BaseCliWorkerConfig } from './base-cli-worker-config';\nimport type { BaseCliWorkerController } from './base-cli-worker-controller';\nimport { BaseCliWorkerTerminalUI } from './base-cli-worker-terminal-ui';\n//#endregion\n\n//#region constants\nconst WORKER_INIT_START_TIME_LIMIT = 25; // 15 seconds max to start worker\nconst START_PORT_FOR_SERVICES = 3600;\n//#endregion\n\nexport abstract class BaseCliWorker<\n REMOTE_CTRL extends BaseCliWorkerController,\n TERMINAL_UI extends BaseCliWorkerTerminalUI<any>,\n> {\n //#region fields & getters\n public readonly SPECIAL_WORKER_READY_MESSAGE = '$$$ WORKER_READY $$$';\n\n // @ts-ignore TODO weird inheritance problem\n readonly terminalUI: TERMINAL_UI = new BaseCliWorkerTerminalUI(this);\n readonly workerContextTemplate: ReturnType<typeof Taon.createContextTemplate>;\n private workerMainContext: ReturnType<typeof Taon.createContext>;\n private workerRemoteContext: ReturnType<typeof Taon.createContext>;\n readonly controllerClass: new () => REMOTE_CTRL;\n private contextForRemoteConnection: EndpointContext;\n\n //#region fields & getters / path to process local info\n protected get pathToProcessLocalInfoJson(): string {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region fields & getters / process local info json object\n public get processLocalInfoObj(): BaseCliWorkerConfig {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#endregion\n\n //#region constructor\n constructor(\n /**\n * unique id for service\n */\n public readonly serviceID: string,\n /**\n * external command that will start service\n */\n public readonly startCommand: string,\n /**\n * unique id for service\n */\n public readonly serviceVersion: string,\n ) {}\n //#endregion\n\n //#region methods / start normally in current process\n /**\n * start normally process\n * this will crash if process already started\n */\n protected async startNormallyInCurrentProcess(): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods / get controller for remote connection\n async getControllerForRemoteConnection(): Promise<REMOTE_CTRL> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region public methods / start if needs to be started\n public async startDetachedIfNeedsToBeStarted(options?: {\n useCurrentWindowForDetach?: boolean;\n }) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region public methods / kill\n /**\n * stop if started\n */\n async kill(options?: { dontRemoveConfigFile?: boolean }) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region public methods / restart\n /**\n * kill detached process and start again\n * @param options.detached - default true\n */\n async restart(options?: {\n detached?: boolean;\n useCurrentWindowForDetach?: boolean;\n }) {\n options = options || {};\n options.detached = _.isUndefined(options.detached) ? true : false;\n await this.kill();\n //longer because os is disposing process previous process\n\n if (options.detached) {\n Helpers.info(\n `Restarting service \"${this.serviceID}\" in detached mode...`,\n );\n await this.startDetached(options);\n } else {\n Helpers.info(\n `Restarting service \"${this.serviceID}\" in current process...`,\n );\n await this.startNormallyInCurrentProcess();\n }\n }\n //#endregion\n\n //#region public methods / cli start\n /**\n * only for cli start\n * @param cliParams on from cli\n */\n async cliStartProcedure(cliParams: any) {\n const detached = !!cliParams['detached'] || !!cliParams['detach'];\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region prevent external config change\n protected preventExternalConfigChange() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region prevent prevent start if already started\n protected async preventStartIfAlreadyStarted(): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region prevent kill worker with lower version\n protected async killWorkerWithLowerVersion(): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region is service healthy\n /**\n * This has 2 purposes:\n * - infinite check when when detached process finished starting\n * - quick check if service is healthy / already started\n */\n protected async isServiceHealthy(options: {\n healthCheckRequestTrys?: number;\n }): Promise<boolean> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region start detached\n /**\n * start if not started detached process\n */\n protected async startDetached(options?: {\n useCurrentWindowForDetach?: boolean;\n }): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region save process info\n private saveProcessInfo(processConfig: Partial<BaseCliWorkerConfig>) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region initialize worker\n protected async initializeWorkerMetadata() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region wait for process port saved to disk\n protected async waitForProcessPortSavedToDisk(): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region get free port\n public async getServicePort(): Promise<number> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n}","import { gte } from 'semver';\nimport { _ } from 'tnp-core/browser';\n\n//#region base worker config\nexport class BaseCliWorkerConfig {\n static from(opt: Partial<BaseCliWorkerConfig>): BaseCliWorkerConfig {\n return _.merge(new BaseCliWorkerConfig(), opt);\n }\n\n /**\n * port taken by service\n */\n port: number;\n /**\n * unique in whole system id of service\n */\n serviceID: string;\n /**\n * pid of service process\n */\n pid: number;\n /**\n * timestamp when service was started\n * (in other cases = null)\n */\n startTimestamp: number;\n /**\n * version\n */\n version: string;\n\n hasBiggerOrEqualWorkerVersionThan(other: BaseCliWorkerConfig): boolean {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n isEquals(other: BaseCliWorkerConfig): boolean {\n other = BaseCliWorkerConfig.from(other);\n return (\n !!this.serviceID &&\n !!this.port &&\n !!this.pid &&\n this.serviceID === other.serviceID &&\n this.port === other.port &&\n this.pid === other.pid\n );\n }\n\n get isEmpty(): boolean {\n return !this.serviceID && !this.port && !this.pid;\n }\n}\n//#endregion","import { Taon } from 'taon/browser';\nimport { Helpers } from 'tnp-core/browser';\n\nimport { BaseCliWorkerConfig } from './base-cli-worker-config';\n\n@Taon.Controller({\n className: 'BaseCliWorkerController',\n})\nexport abstract class BaseCliWorkerController extends Taon.Base\n .Controller {\n /**\n * service id\n */\n private cliWorkerServiceId: string = null;\n private cliWorkerServiceVersion: string = null;\n\n //#region api methods / initialize metadata\n @Taon.Http.PUT()\n baseCLiWorkerCommand_initializeMetadata(\n @Taon.Http.Param.Body('serviceId') serviceId: string,\n @Taon.Http.Param.Body('serviceVersion') serviceVersion: string,\n ): Taon.Response<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region api methods / kill\n @Taon.Http.GET()\n baseCLiWorkerCommand_kill(): Taon.Response<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region api methods / info\n @Taon.Http.GET({\n pathIsGlobal: true,\n // overrideContentType: 'text/html',\n // overridResponseType: 'text',\n })\n info(): Taon.Response<string> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region api methods / is healthy\n @Taon.Http.POST()\n baseCLiWorkerCommand_isHealthy(\n @Taon.Http.Param.Body() checkingProcessConfig: BaseCliWorkerConfig,\n ): Taon.Response<boolean> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region api methods / has up to date version\n @Taon.Http.POST()\n baseCLiWorkerCommand_hasUpToDateVersion(\n @Taon.Http.Param.Body() checkingProcessConfig: BaseCliWorkerConfig,\n ): Taon.Response<boolean> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n}","//#region imports\nimport { Taon } from 'taon/browser';\nimport { _, UtilsOs } from 'tnp-core/browser';\n\nimport { BaseCliWorkerController } from '../classes/base-cli-worker';\n\nimport { Port, PortStatus } from './ports.entity';\n//#endregion\n\n@Taon.Controller({\n className: 'PortsController',\n})\nexport class PortsController extends BaseCliWorkerController {\n //#region fields\n public START_PORT = 3000;\n public END_PORT = 20000;\n public readonly portsCache = new Map<string, Port>();\n //#endregion\n\n //#region methods\n\n //#region methods / first free port\n protected get firstFreePort(): Port | null | undefined {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods / get first unassigned port more than\n protected firstUnassignedPortMoreThan(port: number) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n //#endregion\n\n //#region public methods\n\n //#region public methods / get\n\n //#region public methods / get / first free port\n @Taon.Http.GET()\n getFirstFreePort(): Taon.Response<Port> {\n return async () => {\n return this.firstFreePort;\n };\n }\n //#endregion\n\n //#region public methods / get / port by number\n @Taon.Http.GET()\n getPortByNumber(\n @Taon.Http.Param.Query('portNumber') portNumber: number,\n ): Taon.Response<Port> {\n return async () => {\n portNumber = Number(portNumber);\n return Array.from(this.portsCache.values()).find(\n f => f.port === portNumber,\n );\n };\n }\n //#endregion\n\n //#region public methods / get / ports by status\n @Taon.Http.GET()\n getPortsByStatus(\n @Taon.Http.Param.Query('status') status: PortStatus,\n ): Taon.Response<Port[]> {\n return async () => {\n return Array.from(this.portsCache.values())\n .filter(f => f.status === status)\n .sort(\n // sort by port number\n (a, b) => {\n if (a.port < b.port) {\n return -1;\n }\n if (a.port > b.port) {\n return 1;\n }\n return 0;\n },\n );\n };\n }\n //#endregion\n\n //#endregion\n\n //#region public methods / ports take by os\n\n //#region public methods / ports take by os / DELETE port (make it unassigned)\n /**\n * make it unassigned\n */\n @Taon.Http.DELETE()\n deletePort(\n @Taon.Http.Param.Query('portNumber') portNumber: number,\n ): Taon.Response<Port> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region public methods / ports take by os / UPDATE port unique id\n /**\n * make it unassigned\n */\n @Taon.Http.PUT()\n updatePortUniqueId(\n @Taon.Http.Param.Query('portNumber') portNumber: number,\n @Taon.Http.Param.Query('serviceId') serviceId: string,\n ): Taon.Response<Port> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region public methods / ports take by os / ADD port take by os\n @Taon.Http.POST()\n addTakeByOsPort(\n @Taon.Http.Param.Query('portNumber') portNumber: number,\n @Taon.Http.Param.Query('uniqueId') uniqueId: string,\n ): Taon.Response<Port> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#endregion\n\n //#region public methods / register and assign port\n /**\n * @param uniqueServiceName unique service name\n * @param startFrom start searching for free port from this number\n * @returns\n */\n @Taon.Http.PUT()\n registerAndAssignPort(\n @Taon.Http.Param.Query('uniqueServiceName') uniqueServiceName: string,\n @Taon.Http.Param.Query('startFrom') startFrom?: number,\n ): Taon.Response<Port> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#endregion\n}","// @ts-nocheck\nimport { Taon } from 'taon/browser';\nimport { QueryRunner } from 'taon-typeorm/browser';\n\n@Taon.Migration({\n className: 'MainContext_1736198527297_init',\n})\nexport class MainContext_1736198527297_init extends Taon.Base.Migration {\n /**\n * remove this method if you are ready to run this migration\n */\n public isReadyToRun(): boolean {\n return false;\n }\n\n async up(queryRunner: QueryRunner): Promise<any> {\n // do \"something\" in db\n }\n\n async down(queryRunner: QueryRunner): Promise<any> {\n // revert this \"something\" in db\n }\n}\n\n@Taon.Migration({\n className: 'PortsContext_1736198527297_init',\n})\nexport class PortsContext_1736198527297_init extends Taon.Base.Migration {\n /**\n * remove this method if you are ready to run this migration\n */\n public isReadyToRun(): boolean {\n return true;\n }\n\n async up(queryRunner: QueryRunner): Promise<any> {\n // do \"something\" in db\n // console.log('Hello from migration UP!')\n }\n\n async down(queryRunner: QueryRunner): Promise<any> {\n // revert this \"something\" in db\n // console.log('Hello from migration DOWN!')\n }\n}","// @ts-nocheck\nimport { Taon } from 'taon/browser';\nimport { _ } from 'tnp-core/browser';\nimport { QueryRunner } from 'taon-typeorm/browser';\nimport { Port, PortsController } from '../lib';\n\nconst portsWithDescription = {\n 3000: 'Commonly used for development servers',\n 3001: 'Alternate development server port',\n 3306: 'MySQL',\n 3389: 'Remote Desktop Protocol (RDP)',\n 3478: 'STUN (Session Traversal Utilities for NAT)',\n 4000: 'Alternative development server port',\n 4200: 'Angular CLI Development Server',\n 4500: 'IPSec NAT traversal',\n 4567: 'Sinatra Default Port',\n 5000: 'Flask, Python development server, or Node.js apps',\n 5432: 'PostgreSQL',\n 5500: 'Live Server (VS Code Extension)',\n 5672: 'RabbitMQ',\n 5800: 'VNC Remote Desktop (HTTP)',\n 5900: 'VNC Remote Desktop',\n 5984: 'CouchDB',\n 6000: 'in use by something in macos',\n};\n\n@Taon.Migration({\n className: 'PortsContext_1736199486472_addingNotAssignablePorts',\n})\nexport class PortsContext_1736199486472_addingNotAssignablePorts extends Taon\n .Base.Migration {\n protected portsController: PortsController =\n this.injectController(PortsController);\n\n private readonly commonPortsFrom3000to6000: number[] =\n Object.keys(portsWithDescription).map(Number);\n\n async up(queryRunner: QueryRunner): Promise<any> {\n const db = await queryRunner.manager.getRepository(Port);\n\n const allPorts = this.commonPortsFrom3000to6000.map(port =>\n Port.from({\n port,\n serviceId: `not assignable (${portsWithDescription[port]})`,\n status: 'assigned-taken-by-os',\n }),\n );\n await db.save(allPorts);\n for (const commonPortObj of allPorts) {\n this.portsController.portsCache.set(\n commonPortObj.serviceId,\n commonPortObj,\n );\n }\n }\n\n async down(queryRunner: QueryRunner): Promise<any> {\n const db = await queryRunner.manager.getRepository(Port);\n await db.remove(\n await db.find({\n where: {\n status: 'assigned-taken-by-os',\n },\n }),\n );\n const allPorts = Array.from(\n this.portsController.portsCache.values(),\n ).filter(f => f.status === 'assigned-taken-by-os');\n for (const port of allPorts) {\n this.portsController.portsCache.delete(port.serviceId);\n }\n }\n}","// @ts-nocheck\nimport { Taon } from 'taon/browser';\nimport { QueryRunner } from 'taon-typeorm/browser';\nimport { _ } from 'tnp-core/browser';\nimport { Port, PortsController } from '../lib';\n\n@Taon.Migration({\n className: 'PortsContext_1736454437350_addFreePorts',\n})\nexport class PortsContext_1736454437350_addFreePorts extends Taon.Base\n .Migration {\n protected portsController: PortsController =\n this.injectController(PortsController);\n\n async up(queryRunner: QueryRunner): Promise<any> {\n const portsTableRepo = await queryRunner.manager.getRepository(Port);\n const addFreePortsInRange = _.range(\n this.portsController.START_PORT,\n this.portsController.END_PORT + 1,\n );\n\n const allTakeByOsPort = (\n await portsTableRepo.find({\n where: {\n status: 'assigned-taken-by-os',\n },\n })\n ).map(f => f.port);\n\n const freePortsInRange = addFreePortsInRange.map(port =>\n Port.from({\n port: port,\n serviceId: Port.getTitleForFreePort(port),\n status: 'unassigned',\n }),\n ).filter(f => !allTakeByOsPort.includes(f.port));\n\n await portsTableRepo.save(freePortsInRange);\n\n for (const port of freePortsInRange) {\n this.portsController.portsCache.set(port.serviceId, port);\n }\n }\n\n async down(queryRunner: QueryRunner): Promise<any> {\n // revert this \"something\" in db\n const db = await queryRunner.manager.getRepository(Port);\n await db.remove(\n await db.find({\n where: {\n status: 'unassigned',\n },\n }),\n );\n const allPorts = Array.from(\n this.portsController.portsCache.values(),\n ).filter(f => f.status === 'unassigned');\n for (const port of allPorts) {\n this.portsController.portsCache.delete(port.serviceId);\n }\n }\n}","// THIS FILE IS GENERATED - DO NOT MODIFY\nimport {\n MainContext_1736198527297_init,\n PortsContext_1736198527297_init,\n} from './1736198527297_init';\nimport { PortsContext_1736199486472_addingNotAssignablePorts } from './1736199486472_addingNotAssignablePorts';\nimport { PortsContext_1736454437350_addFreePorts } from './1736454437350_addFreePorts';\n// THIS FILE IS GENERATED - DO NOT MODIFY\nexport const MIGRATIONS_CLASSES_FOR_MainContext = {\n /* 06-01-2025 22:22:07 */ MainContext_1736198527297_init,\n};\nexport const MIGRATIONS_CLASSES_FOR_PortsContext = {\n /* 06-01-2025 22:22:07 */ PortsContext_1736198527297_init,\n /* 06-01-2025 22:38:06 */ PortsContext_1736199486472_addingNotAssignablePorts,\n /* 09-01-2025 21:27:17 */ PortsContext_1736454437350_addFreePorts,\n};\n// THIS FILE IS GENERATED - DO NOT MODIFY\n","//@ts-nocheck\nexport * from './migrations_index._auto-generated_';","import { BaseContext, Taon } from 'taon/browser';\nimport { os } from 'tnp-core/browser';\nimport { crossPlatformPath, path, Helpers } from 'tnp-core/browser';\n\nimport { MIGRATIONS_CLASSES_FOR_PortsContext } from '../../../migrations';\n\nimport { PortsController } from './ports.controller';\nimport { Port } from './ports.entity';\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n\nexport const PortsContextTemplate = Taon.createContextTemplate(() => ({\n contextName: 'PortsContext',\n appId: 'dev.taon.taon-ports-worker',\n contexts: { BaseContext },\n controllers: { PortsController },\n entities: { Port },\n migrations: { ...MIGRATIONS_CLASSES_FOR_PortsContext },\n skipWritingServerRoutes: true,\n/* */\n/* */\n/* */\n/* */\n/* */\n \n logs: {\n migrations: true,\n },\n}));","//#region imports\nimport { UtilsTerminal, _ } from 'tnp-core/browser';\n\nimport { Helpers, Port, PortStatusArr } from '../../index';\nimport { CfontStyle } from '../../models';\nimport { BaseCliWorkerTerminalUI } from '../classes/base-cli-worker/base-cli-worker-terminal-ui';\n\nimport { PortStatus } from './ports.entity';\nimport type { PortsWorker } from './tcp-upd-ports.worker';\n//#endregion\n\nexport class TcpUdpPortsTerminalUI extends BaseCliWorkerTerminalUI<PortsWorker> {\n //#region methods / header text\n protected async headerText(): Promise<string> {\n return 'TCP/UDP|Ports DB';\n }\n //#endregion\n\n //#region methods / header text style\n protected textHeaderStyle(): CfontStyle {\n return 'block';\n }\n //#endregion\n\n //#region methods / crud menu for take by os ports\n protected async crudMenuForTakeByOsPorts() {\n const { selected: actionChoice } =\n await UtilsTerminal.selectActionAndExecute({\n back: {\n name: ' - back - ',\n },\n editPort: {\n name: 'Edit port',\n },\n addPort: {\n name: 'Add port',\n },\n deletePort: {\n name: 'Delete port (make it unassigned)',\n },\n });\n\n switch (actionChoice) {\n case 'editPort':\n await this.editPortTerminalUiProcess();\n break;\n case 'addPort':\n await this.addPortTerminalUiProcess();\n break;\n case 'deletePort':\n await this.deletePortTerminalUiProcess();\n break;\n }\n }\n //#endregion\n\n //#region methods / add port process\n protected async addPortTerminalUiProcess(): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods / select port process\n protected async selectPortProcess(\n ports: Port[],\n title: string,\n ): Promise<Port> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods / delete port process\n protected async deletePortTerminalUiProcess(): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods / edit port process\n protected async editPortTerminalUiProcess(): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods / get worker terminal actions\n getWorkerTerminalActions(options?: { exitIsOnlyReturn?: boolean }) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods / display menu with items\n protected async displayItemsForPortsStatus(status: PortStatus) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods / get new port to add\n private async getNewPortToAdd(): Promise<number> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n}","//#region imports\nimport { _ } from 'tnp-core/browser';\n\nimport { Helpers } from '../../index';\nimport { BaseCliWorker } from '../classes/base-cli-worker';\nimport { PortsController } from '../tcp-udp-ports/ports.controller';\nimport { PortsContextTemplate } from '../tcp-udp-ports/tcp-udp-ports.context';\n\nimport { TcpUdpPortsTerminalUI } from './tcp-upd-ports-terminal-ui';\n//#endregion\n\nexport class PortsWorker extends BaseCliWorker<\n PortsController,\n TcpUdpPortsTerminalUI\n> {\n terminalUI = new TcpUdpPortsTerminalUI(this);\n\n workerContextTemplate = PortsContextTemplate as any; // TODO for some reason as any is nessesary\n controllerClass = PortsController;\n}","// THIS FILE IS GENERATED - DO NOT MODIFY\nexport const BUILD_FRAMEWORK_CLI_NAME = 'tnp';\nexport const APP_ID = 'com.domain.example.tnp-helpers';\nexport const PROJECT_NPM_NAME = 'tnp-helpers';\nexport const CURRENT_PACKAGE_VERSION = '19.0.40';\n// THIS FILE IS GENERATED - DO NOT MODIFY\n ","//#region imports\nimport { config } from 'tnp-config/browser';\nimport { fse } from 'tnp-core/browser';\nimport { path, crossPlatformPath } from 'tnp-core/browser';\nimport { _ } from 'tnp-core/browser';\n\nimport { Helpers } from '../../index';\nimport { ConfigDatabase } from '../config-database';\nimport { ProjectDatabase } from '../project-database';\nimport { PortsWorker } from '../tcp-udp-ports';\nimport { CURRENT_PACKAGE_VERSION } from '../../build-info._auto-generated_';\n\nimport { BaseProject } from './base-project';\n//#endregion\n\nexport class BaseProjectResolver<PROJECT extends Partial<BaseProject> = any> {\n configDb: ConfigDatabase = new ConfigDatabase(this);\n projectsDb: ProjectDatabase = new ProjectDatabase(this);\n readonly portsWorker: PortsWorker;\n\n //#region fields\n protected readonly NPM_PROJECT_KEY = 'npm';\n protected projects: PROJECT[] = [];\n /**\n * To speed up checking folder I am keeping paths for already checked folder\n * This may break things that are creating new projects\n */\n protected emptyLocations: string[] = [];\n //#endregion\n\n //#region constructor\n constructor(\n protected readonly classFn: any,\n public readonly cliToolName: string,\n ) {\n this.cliToolName = cliToolName;\n // console.log(\"global.frameworkName\",global.frameworkName)\n // if (!UtilsOs.isRunningInVscodeExtension()) {\n // if (!this.cliToolName) {\n // Helpers.throw(`cliToolName is not provided`);\n // }\n this.portsWorker = new PortsWorker(\n 'ports-worker',\n `${this.cliToolName} startCliServicePortsWorker --skipCoreCheck`,\n CURRENT_PACKAGE_VERSION,\n );\n }\n //#endregion\n\n //#region fields & getters / allowed types\n get allowedTypes(): string[] {\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region fields & getters / current project\n /**\n * project from process.cwd()\n */\n get Current(): PROJECT {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region fields & getters / resolve type from\n /**\n * override this\n */\n typeFrom(location: string, recrusiveCall = false): string {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region fields & getters / from\n From(locationOfProject: string | string[], options?: any): PROJECT {\n // console.log({\n // locationOfProj\n // })\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region fields & getters / get project nearest to path\n nearestTo(\n absoluteLocation: string | string[],\n options?: {\n type?: string | string[];\n findGitRoot?: boolean;\n onlyOutSideNodeModules?: boolean;\n },\n ): PROJECT {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region fields & getters / unload project\n unload(projectOrLocationOfProject: PROJECT | string) {\n const location = _.isString(projectOrLocationOfProject)\n ? projectOrLocationOfProject\n : projectOrLocationOfProject?.location;\n\n this.projects = this.projects.filter(f => f.location !== location);\n this.emptyLocations = this.emptyLocations.filter(f => f !== location);\n }\n //#endregion\n\n //#region fields & getters / remove project\n remove(project: PROJECT) {\n/* */\n/* */\n/* */\n/* */\n \n }\n //#endregion\n\n //#region fields & getters / manually add project\n add(project: PROJECT) {\n/* */\n/* */\n \n }\n //#endregion\n\n //#region fields & getters / all projects from location\n\n allProjectFrom(absoluteLocation: string, stopOnCwd: string = '/') {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n allProjectsFromFolder(folderLocation: string): PROJECT[] {\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region fields & getters / sort group of projects\n public sortGroupOfProject<\n T extends BaseProject<any, any> = BaseProject<any, any>,\n >(\n projects: T[],\n resoveDepsArray: (proj: T) => string[],\n projNameToCompare: (proj: T) => string,\n ): T[] {\n const visited: { [key: string]: boolean } = {};\n const stack: { [key: string]: boolean } = {};\n const result: T[] = [];\n\n const visit = (project: T) => {\n if (stack[projNameToCompare(project)]) {\n // Circular dependency detected\n Helpers.error(\n `Circular dependency detected involving project: ${projNameToCompare(\n project,\n )}`,\n );\n }\n\n if (!visited[projNameToCompare(project)]) {\n visited[projNameToCompare(project)] = true;\n stack[projNameToCompare(project)] = true;\n\n const depsResolved = resoveDepsArray(project);\n depsResolved.forEach(dependency => {\n const dependentProject = projects.find(p => {\n // console.log(`comparing :\"${projNameToCompare(p)}\" and \"${dependency}\"`)\n return projNameToCompare(p) === dependency;\n });\n if (dependentProject) {\n visit(dependentProject);\n }\n });\n\n stack[projNameToCompare(project)] = false;\n result.push(project);\n }\n };\n\n projects.forEach(project => visit(project));\n return result;\n // return result.reverse(); // Reverse the result to get the correct order\n }\n //#endregion\n}","//#region import\nimport { config } from 'tnp-config/browser';\nimport { CommandOutputOptions } from 'tnp-core/browser';\nimport { CoreModels } from 'tnp-core/browser';\nimport { CLI } from 'tnp-core/browser';\nimport { path, crossPlatformPath } from 'tnp-core/browser';\nimport { fse, chalk } from 'tnp-core/browser';\nimport { _ } from 'tnp-core/browser';\nimport { Utils } from 'tnp-core/browser';\n\nimport { CoreProject, Helpers, UtilsTypescript } from '../../index';\nimport { BaseProjectType } from '../../models';\n\nimport { BaseGit } from './base-git';\nimport type { BaseLibraryBuild } from './base-library-build';\nimport { BaseLinkedProjects } from './base-linked-projects';\nimport { BaseNpmHelpers } from './base-npm-helpers';\nimport { BaseProjectResolver } from './base-project-resolver';\nimport { BaseQuickFixes } from './base-quick-fixes';\nimport { BaseReleaseProcess } from './base-release-process';\nimport { BaseStaticPages } from './base-static-pages';\nimport { BaseVscodeHelpers } from './base-vscode';\n//#endregion\n\nconst takenPorts = [];\n\nexport abstract class BaseProject<\n PROJECT extends BaseProject<any, any> = BaseProject<any, any>,\n TYPE = BaseProjectType,\n> {\n //#region static\n\n //#region static / instance of resovle\n static ins = new BaseProjectResolver<BaseProject>(BaseProject, 'taon');\n //#endregion\n\n //#endregion\n\n //#region fields\n public cache: any = {};\n public static cache: any = {};\n public get globalCache(): any {\n return BaseProject.cache;\n }\n readonly type: TYPE | string = 'unknow';\n\n /**\n * resolve instance\n */\n abstract readonly ins: BaseProjectResolver<PROJECT>;\n /**\n * Unique free port for project instance\n * only available after executing *this.assignFreePort()*\n */\n readonly port: string;\n\n public libraryBuild?: BaseLibraryBuild<BaseProject>;\n public npmHelpers?: BaseNpmHelpers;\n\n get packageJson() {\n return this.npmHelpers.packageJson;\n }\n\n get nodeModules() {\n return this.npmHelpers.nodeModules;\n }\n\n public linkedProjects?: BaseLinkedProjects;\n public vsCodeHelpers?: BaseVscodeHelpers;\n public releaseProcess?: BaseReleaseProcess;\n public git?: BaseGit;\n public quickFixes?: BaseQuickFixes;\n public staticPages?: BaseStaticPages;\n //#endregion\n\n private __location: string;\n get location(): string {\n return this.__location;\n }\n set location(v: string) {\n this.__location = crossPlatformPath(v);\n }\n\n //#region constructor\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n //#endregion\n\n //#region methods & getters / is monorepo\n /**\n * TODO move this to framework\n * Linked projects are actual inside repo\n * not in separated folders/git sub repos\n */\n get isMonorepo(): boolean {\n return false;\n }\n //#endregion\n\n //#region getters & methods / order core projects\n protected orderCoreProjects(coreProjects: CoreProject[]): CoreProject[] {\n const projectMap = new Map<CoreProject, CoreProject[]>();\n\n // Initialize the project map\n for (const project of coreProjects) {\n projectMap.set(project, []);\n }\n\n // Populate the project map with dependencies\n for (const project of coreProjects) {\n if (!projectMap.has(project.extends)) {\n projectMap.set(project.extends, []);\n }\n projectMap.get(project.extends)!.push(project);\n }\n\n const orderedProjects: CoreProject[] = [];\n const visited = new Set<CoreProject>();\n\n const visit = (project: CoreProject) => {\n if (!visited.has(project)) {\n visited.add(project);\n const dependencies = projectMap.get(project);\n if (dependencies) {\n for (const dep of dependencies) {\n visit(dep);\n }\n }\n orderedProjects.push(project);\n }\n };\n\n // Visit each project\n for (const project of coreProjects) {\n visit(project);\n }\n\n return orderedProjects.reverse();\n }\n //#endregion\n\n //#region methods & getters / core\n\n get core(): CoreProject {\n if (!_.isUndefined(this.cache['core'])) {\n return this.cache['core'];\n }\n // Helpers.taskStarted(`Detecting core project for ${this.genericName}`);\n let coreProjects = CoreProject.coreProjects.filter(p =>\n p.recognizedFn(this as any),\n );\n coreProjects = this.orderCoreProjects(coreProjects);\n // Helpers.taskDone(`Core project detected for ${this.genericName}`);\n // console.log('CoreProject.coreProjects', CoreProject.coreProjects.map(c => c.name));\n this.cache['core'] = _.first(coreProjects);\n return this.cache['core'];\n }\n //#endregion\n\n //#region getters & methods / link project exited\n get linkedProjectsExisted(): PROJECT[] {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / set type\n public setType(type: TYPE) {\n // @ts-ignore\n this.type = type;\n }\n //#endregion\n\n //#region methods & getters / type is\n public typeIs(...types: TYPE[]) {\n return this.type && types.includes(this.type as any);\n }\n //#endregion\n\n //#region methods & getters / type is not\n public typeIsNot(...types: TYPE[]) {\n return !this.typeIs(...types);\n }\n //#endregion\n\n //#region methods & getters / basename\n /**\n * project folder basename\n */\n get basename(): string {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / parent basename\n /**\n * project folder parent basename\n */\n get parentBasename(): string {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / name\n /**\n * name from package.json\n */\n get name(): string {\n return this.packageJson?.name || this.nameFromPomXML;\n }\n\n get nameForCli(): string {\n return this.name?.endsWith('-cli') ? this.name : `${this.name}-cli`;\n }\n\n get nameForNpmPackage(): string {\n return this.name;\n }\n\n get nameFromPomXML(): string {\n const artifactIdPattern = /<artifactId>([^<]+)<\\/artifactId>/;\n const match = (this.readFile('pom.xml') || '').match(artifactIdPattern);\n if (match && match[1]) {\n return match[1];\n }\n return '';\n }\n //#endregion\n\n //#region methods & getters / get folder for possible project chhildrens\n protected getFoldersForPossibleProjectChildren(): string[] {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / get all childrens\n protected getAllChildren() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / children\n /**\n * alias to getAllChildren\n */\n get children(): PROJECT[] {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / get child\n getChildBy(nameOrBasename: string, errors = true): PROJECT {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / parent\n get parent(): PROJECT {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / parent\n get nearestParent(): PROJECT {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / grandpa\n get grandpa(): PROJECT {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / generic name\n get allNpmPackagesNames(): string[] {\n return [this.name];\n }\n\n get titleBarName() {\n const allPackagesNames =\n this.allNpmPackagesNames.filter(f => f !== this.basename).length === 0\n ? ''\n : `(${this.allNpmPackagesNames.filter(f => f !== this.basename).join(',')})`;\n\n if (this.parent) {\n return (\n `${path.basename(path.dirname(this.parent.location))}/${this.parent.name}/` +\n `${this.basename} ${allPackagesNames} [ \\${activeEditorShort} ]`\n );\n }\n return (\n `${path.basename(path.dirname(this.location))}/` +\n `${this.basename} (${allPackagesNames}) [ \\${activeEditorShort}]`\n );\n }\n\n get genericName() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / check and bolden path\n private checkAndBoldenPath(fullPath: string) {\n const parts = fullPath.split('/');\n\n const result = parts.map((part, index) => {\n const pathTocheck = parts.slice(0, index + 1).join('/');\n // console.log('pathTocheck', pathTocheck);\n/* */\n/* */\n/* */\n/* */\n \n return part;\n });\n\n return result.join('/');\n }\n //#endregion\n\n //#region methods & getters / path exits\n /**\n * same has project.hasFile();\n */\n pathExists(relativePath: string | string[]): boolean {\n return this.hasFile(relativePath);\n }\n //#endregion\n\n //#region methods & getters / has file\n /**\n * same as project.pathExists();\n */\n hasFile(relativePath: string | string[]): boolean {\n/* */\n/* */\n/* */\n return (void 0);\n }\n hasFolder(relativePath: string | string[]): boolean {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / relative\n /**\n * Function will return relative path from project location\n */\n relative(absoultePath: string) {\n return crossPlatformPath(\n path.relative(\n crossPlatformPath(this.location),\n crossPlatformPath(absoultePath),\n ),\n );\n }\n //#endregion\n\n //#region methods & getters / create folder\n /**\n *\n * @param relativePath\n * @param override it will remove ex\n */\n createFolder(\n relativePath: string | string[],\n options?: {\n override?: boolean;\n },\n ) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / format file(s) with prettier\n formatFile(specificRelativePath: string | string[]) {\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n formatAllFiles() {\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / contains file\n /**\n * same as project.pathhasFileExists();\n * but with path.resolve\n */\n containsFile(fileRelativeToProjectPath: string) {\n const fullPath = path.resolve(\n path.join(this.location, fileRelativeToProjectPath),\n );\n return Helpers.exists(fullPath);\n }\n //#endregion\n\n //#region methods & getters / path for\n /**\n * absolute path:\n * concated project location with relative path\n */\n pathFor(relativePath: string | string[]) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / write json\n writeJson(relativePath: string, json: object) {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / write json\n writeJsonC(relativePath: string, json: object) {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / run\n /**\n * @deprecated us execute instead\n * use output from or more preciese crafted api\n */\n run(command: string, options?: Omit<CoreModels.RunOptions, 'cwd'>) {\n let opt: CoreModels.RunOptions;\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n return Helpers.run(command, opt);\n }\n //#endregion\n\n //#region methods & getters / execute\n /**\n * same as run but async\n */\n public async execute(\n command: string,\n options?: CoreModels.ExecuteOptions & { showCommand?: boolean },\n ): Promise<any> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / try run sync command\n /**\n * try run but continue when it fails\n * @param command\n * @param options\n * @returns\n */\n tryRunSync(\n command: string,\n/* */\n/* */\n \n ): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / output from command\n outputFrom(\n command: string,\n/* */\n/* */\n \n ) {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / remove file\n removeFile(fileRelativeToProjectPath: string) {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / read file\n readFile(fileRelativeToProjectPath: string) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / read file\n /**\n * read json file\n * handle all json files\n * jsonc, json5 , json\n * @param fileRelativeToProjectPath\n * @returns\n */\n readJson<T = {}>(fileRelativeToProjectPath: string): T {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / copy files or folders\n /**\n * copy files or folders from\n * project to destination\n */\n copy(filesOrFolderRelativePathes: string[]): {\n to: (destination: string) => void;\n } {\n return {\n to: (destination: string): void => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n },\n };\n }\n //#endregion\n\n //#region methods & getters / remove (fiel or folder)\n remove(relativePath: string | string[], exactPath = true) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / remove folder by relative path\n removeFolderByRelativePath(relativePathToFolder: string) {\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n //#endregion\n\n get isAngularLib() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n protected getUniqueForTask(task: string): string {\n return `task(${task}) in ${this.genericName}`;\n }\n\n public async registerAndAssignPort(\n taskName: string,\n options?: { startFrom?: number },\n ): Promise<number> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n //#region methods & getters / assign free port to project instance\n /**\n * @deprecated use this.registerAndAssignPort() or Utils.getFreePort() instead\n */\n async assignFreePort(startFrom: number = 4200): Promise<number> {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / remove project from disk/memory\n removeItself() {\n/* */\n/* */\n \n }\n //#endregion\n\n //#region methods & getters / define property\n /**\n * Purpose: not initializing all classes at the beginning\n * Only for BaseFeatureForProject class\n */\n defineProperty<PROJECT>(\n variableName: keyof PROJECT,\n classFn: Function,\n options?: {\n customInstanceReturn?: () => object;\n },\n ) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / filter only copy\n /**\n * fs.copy option filter function for copying only selected folders from project\n */\n filterOnlyCopy(basePathFoldersOnlyToInclude: string[]) {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / filter don't copy\n /**\n * fs.copy option filter function for copying only not selected folders from project\n */\n filterDontCopy(basePathFoldersTosSkip: string[]) {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / get main branches\n /**\n * main/default hardcoded branches\n */\n getMainBranches(): string[] {\n return ['master', 'develop', 'stage', 'prod', 'test'];\n }\n //#endregion\n\n //#region methods & getters / use feature in branch name for tests\n useFeatureInBranchNameForTests() {\n return false;\n }\n //#endregion\n\n //#region methods & getters / reset process\n async resetProcess(overrideBranch?: string, recrusive = false) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n //#endregion\n\n //#region methods & getters / link project to\n linkTo(destPackageLocation: string) {\n/* */\n/* */\n \n }\n //#endregion\n\n //#region methods & getters / set value to json\n setValueToJSON(\n relativePath: string | string[],\n lodashGetPath: string,\n value: any,\n ): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / set value to json\n setValueToJSONC(\n relativePath: string | string[],\n lodashGetPath: string,\n value: any,\n ): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / set value to json\n setValueToJSON5(\n relativePath: string | string[],\n lodashGetPath: string,\n value: any,\n ): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / get value from json\n getValueFromJSON(\n relativePath: string | string[],\n lodashGetPath: string,\n defaultValue: any = void 0,\n ): any {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / get value from jsonc\n getValueFromJSONC(\n relativePath: string | string[],\n lodashGetPath: string,\n defaultValue: any = void 0,\n ): any {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / write file\n\n writeFile(\n relativePath: string | string[],\n content: string,\n options?: { formatWithPrettier?: boolean },\n ) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n //#endregion\n\n //#region getters & methods / run command and get string\n public runCommandGetString(this: BaseProject, command: string) {\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region getters & methods / to string\n toString = () => {\n return `${this.name}=>${this.location}`;\n };\n //#endregion\n\n //#region getters & methods / find partners names\n get parentsNames() {\n/* */\n/* */\n return (void 0);\n }\n\n //#region getters & methods / open location\n openLocation(relativeFolderPath: string) {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n private findParentsNames(\n project?: PROJECT,\n parent?: PROJECT,\n result = [],\n ): string[] {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region getters & methods / kill all instance\n tryKillAllElectronInstances() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region getters & methods / init\n /**\n * init project files structure and depedencies\n */\n async init(initOptions?: any) {\n throw new Error('TODO IMPLEMENT');\n }\n //#endregion\n\n //#region getters & methods / link\n /**\n * globally link npm as package\n */\n async link() {\n throw new Error('TODO IMPLEMENT');\n }\n //#endregion\n\n //#region getters & methods / struct\n /**\n * init project files structure without depedencies\n */\n async struct(initOptions?: any) {\n throw new Error('TODO IMPLEMENT');\n }\n //#endregion\n\n //#region getters & methods / build\n /**\n * init and build() project\n */\n async test(testOptions?: any) {\n throw new Error('TODO IMPLEMENT');\n }\n //#endregion\n\n //#region getters & methods / build\n /**\n * init and build() project\n */\n async build(buildOptions?: any) {\n throw new Error('TODO IMPLEMENT');\n }\n //#endregion\n\n //#region getters & methods / publish\n /**\n * publish project to npm\n */\n async publish(publishOptions?: any): Promise<void> {\n this.npmHelpers.publishToNpmRegistry();\n }\n //#endregion\n\n //#region getters & methods / build\n async release(releaseOptions?: any) {\n throw new Error('TODO IMPLEMENT');\n }\n //#endregion\n\n //#region getters & methods / lint\n /**\n * lint porject\n */\n async lint(lintOptions?: any) {\n Helpers.info(`\n\n\n COMMIT LINT NOT IMPLEMENTED\n\n\n `);\n }\n //#endregion\n\n //#region getters & methods / info\n /**\n * get info about porject\n */\n async info(): Promise<string> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n}","import { BaseProject } from './base-project';\n\nexport abstract class BaseFeatureForProject<\n PROJECT extends BaseProject<any,any> = BaseProject<any,any>,\n> {\n get ins() {\n return this.project.ins;\n }\n\n constructor(protected project: PROJECT) {}\n}","//#region import\nimport { config, FilesNames } from 'tnp-config/browser';\nimport { chalk } from 'tnp-core/browser';\nimport { CoreModels } from 'tnp-core/browser';\nimport { path, crossPlatformPath } from 'tnp-core/browser';\nimport { _, UtilsTerminal } from 'tnp-core/browser';\n\nimport { Helpers } from '../../index';\nimport {\n LibrariesBuildOptions,\n LibraryBuildCommandOptions,\n NgProject,\n} from '../../models';\n\nimport { BaseFeatureForProject } from './base-feature-for-project';\nimport type { BaseProject } from './base-project';\n//#endregion\n\n/**\n * Base library build for standard angular/typescript projects\n */\nexport abstract class BaseLibraryBuild<\n PROJECT extends BaseProject<BaseProject, any>,\n> extends BaseFeatureForProject<PROJECT> {\n private cache: any = {};\n protected readonly tempOrgTsConfigFile = `tmp-original-${config.file.tsconfig_json}`;\n\n //#region getters & methods / sort by deps\n protected sortByDeps(libraries: PROJECT[]): PROJECT[] {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region getters & methods / get sorted libraries by deps for build\\\n /**\n * Use cases:\n * 1. build all libraries in normal mode\n * 2. build all libraries in watch mode\n * 3. build selected libraries in normal mode\n * (with first time all libraries will be build)\n * 4. build selected libraries in watch mode\n * (use normal build for not selected libraries)\n * 5. build selected libraries in watch mode\n * (skip normal build for not selected libraries)\n */\n async selectAndSaveLibraries(\n // this: {},\n {\n selectedLibs,\n watch,\n watchBuildSupported,\n skipAllLibsQuestion,\n useLastUserConfiguration,\n }: {\n selectedLibs: PROJECT[];\n watch: boolean;\n watchBuildSupported?: boolean;\n skipAllLibsQuestion?: boolean;\n useLastUserConfiguration?: boolean;\n },\n ): Promise<{ selectedLibs: PROJECT[]; skipRebuildingAllForWatch: boolean }> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region getters & methods / angular libraries\n /**\n * angular libraries from angular.json\n */\n get libraries(): PROJECT[] {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n protected getLibraries() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region getters & methods / build libraries\n /**\n * Angular library build\n */\n public async buildLibraries(\n // this:{},\n {\n watch = false,\n strategy,\n releaseBuild = false,\n copylink_to_node_modules,\n outputLineReplace,\n libraries,\n useLastUserConfiguration,\n }: LibrariesBuildOptions<PROJECT> & { watch?: boolean } = {} as any,\n ): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n //#endregion\n\n //#region getters & methods / lib watch build process\n protected async libWatchBuildProcess({\n lib,\n locationsForNodeModules,\n strategy,\n outputLineReplace,\n }: {\n lib: PROJECT;\n locationsForNodeModules: string[];\n strategy: 'link' | 'copy';\n outputLineReplace?: (outputLine: string) => string;\n }) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region getters & methods / lib normal build process\n protected async libNormalBuildProcess({\n lib,\n locationsForNodeModules,\n strategy,\n outputLineReplace,\n }: {\n lib: PROJECT;\n locationsForNodeModules: string[];\n strategy: 'link' | 'copy';\n outputLineReplace?: (outputLine: string) => string;\n }) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region getters & methods / get library build success command\n getLibraryBuildCommand(\n options?: LibraryBuildCommandOptions,\n ): string | undefined {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region getters & methods / get library build success command\n get getLibraryBuildSuccessComamnds(): string[] {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region getters & methods / select copy to projects\n async selectCopytoProjects(): Promise<string[]> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region private methods / change tsconfig for libraries typescript proper local types\n private async changeTsConfigForLibrariesTypes(): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region private methods / replace tsconfig pathes\n protected async replaceTsConfigsPathes() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region private methods / restore original tsconfig\n private async restoreOriginalTsConfig() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n}","import { config } from 'tnp-config/browser';\nimport { crossPlatformPath, path, _ } from 'tnp-core/browser';\nimport { Helpers } from '../../../lib';\nimport { PackageJson } from 'type-fest';\n\nexport interface BaseJsonFileReaderOptions<DATA> {\n /**\n * cwd for <my-json>.json\n * <cwd>/<my-json>\n * (you can also provide full path - basename will be cut)\n */\n cwd?: string;\n /**\n * file name\n * example: package.json, taon.json etc.\n */\n fileName?: string;\n /**\n * json content to read from memory\n */\n jsonContent?: Partial<DATA>;\n /**\n * callback for external reload\n */\n reloadInMemoryCallback?: (data: DATA) => void;\n /**\n * use json with comments reader to read json file\n */\n readJsonAsJsonWithComments?: boolean;\n /**\n * default value for data\n * if file not exist\n * (ONLY FOR cwd + fileName mode)\n */\n defaultValue?: Partial<DATA>;\n}\n\n/**\n * Base class for reading json files\n * There are 2 modes of reading json files:\n * - cwd + fileName (read and write to disk in cwd)\n * - jsonContent (read and write to memory and use\n * reloadInMemoryCallback for external reload)\n */\nexport class BaseJsonFileReader<DATA> {\n //#region fields\n /**\n * null when package.json not exist\n */\n protected data: DATA | null;\n\n /**\n * use json with comments reader to read package.json\n */\n protected readonly readJsonAsJsonWithComments: boolean = false;\n //#endregion\n\n //#region constructor\n public readonly cwd: string;\n protected readonly fileName: string;\n /**\n * @deprecated\n * use only when cwd and fileName are not provided\n */\n protected readonly jsonContent?: Partial<DATA>;\n protected readonly defaultValue?: Partial<DATA>;\n protected readonly reloadInMemoryCallback?: (data: DATA) => void;\n constructor(options: BaseJsonFileReaderOptions<DATA>) {\n let {\n cwd,\n fileName,\n jsonContent,\n reloadInMemoryCallback,\n readJsonAsJsonWithComments,\n defaultValue,\n } = options;\n if (cwd) {\n cwd = crossPlatformPath(cwd);\n if (cwd.endsWith(`/${config.file.package_json}`)) {\n cwd = cwd.replace(`/${config.file.package_json}`, '');\n }\n this.cwd = cwd;\n }\n\n this.defaultValue = defaultValue;\n this.fileName = fileName;\n if (cwd && jsonContent) {\n throw new Error(\n `You can't provide cwd and jsonContent at the same time. Choose one.`,\n );\n }\n if (!cwd && !jsonContent) {\n throw new Error(`You need to provide cwd or jsonContent`);\n }\n this.readJsonAsJsonWithComments = !!readJsonAsJsonWithComments;\n this.reloadInMemoryCallback = reloadInMemoryCallback;\n this.jsonContent = _.cloneDeep(jsonContent);\n this.reloadPackageJsonInMemory();\n }\n //#endregion\n\n //#region path\n /**\n * cwd + fileName\n */\n get path() {\n return crossPlatformPath([this.cwd, this.fileName]);\n }\n //#endregion\n\n //#region reload package json in memory\n /**\n * if something else change package.json in this project\n * and you know that you need to reload it..\n */\n reloadPackageJsonInMemory(): void {\n if (this.jsonContent) {\n this.data = _.cloneDeep(this.jsonContent as any);\n } else {\n try {\n if (this.readJsonAsJsonWithComments) {\n this.data = Helpers.readJsonC(this.path);\n } else {\n this.data = Helpers.readJson(this.path);\n }\n if (!this.data && this.defaultValue) {\n this.data = _.cloneDeep(this.defaultValue as any);\n }\n } catch (error) {\n if (this.defaultValue) {\n this.data = _.cloneDeep(this.defaultValue as any);\n } else {\n this.data = null;\n }\n }\n }\n this.reloadInMemoryCallback &&\n this.reloadInMemoryCallback(_.cloneDeep(this.data as any));\n }\n //#endregion\n\n //#region write package json to disk\n saveToDisk(purpose?: string) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region link to\n linkTo(destination: string): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region get all data\n getAllData(): DATA {\n return _.cloneDeep(this.data);\n }\n //#endregion\n\n //#region set all data\n setAllData(data: DATA): void {\n this.data = _.cloneDeep(data);\n this.saveToDisk();\n }\n //#endregion\n}","import { config } from 'tnp-config/browser';\nimport { _, CoreModels } from 'tnp-core/browser';\nimport { Helpers } from 'tnp-core/browser';\nimport { PackageJson as PackageJsonBase } from 'type-fest';\n\nimport {\n BaseJsonFileReader,\n BaseJsonFileReaderOptions,\n} from './base-json-file-reader';\n\nexport type PackageJson = PackageJsonBase & {\n lastBuildTagHash?: string;\n publisher?: string;\n displayName?: string;\n};\n\n//#region package json dependency obj\nexport type PackageJsonDependencyObj =\n | 'dependencies'\n | 'devDependencies'\n | 'peerDependencies'\n | 'resolutions';\n\nexport const PackageJsonDependencyObjArr = [\n 'dependencies',\n 'devDependencies',\n 'peerDependencies',\n 'resolutions',\n] as PackageJsonDependencyObj[];\n//#endregion\n\nexport class BasePackageJson extends BaseJsonFileReader<PackageJson> {\n constructor(\n options: Omit<BaseJsonFileReaderOptions<PackageJson>, 'fileName'>,\n ) {\n super({ ...options, fileName: config.file.package_json });\n }\n\n //#region name\n\n /**\n * 'dependencies'\n * 'devDependencies'\n * 'peerDependencies'\n * 'resolutions';\n * and whatever is in package.json to npm install\n */\n get dependenciesTypesArray(): PackageJsonDependencyObj[] {\n return PackageJsonDependencyObjArr;\n }\n\n get name(): string {\n return this.data?.name || '';\n }\n\n async setName(name: string): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region dev dependencies\n /**\n * devDependencies dependencies\n */\n get devDependencies(): PackageJson['devDependencies'] {\n return _.cloneDeep(this.data ? this.data.devDependencies : {}) || {};\n }\n //#endregion\n\n //#region resolutions dependencies\n /**\n * resolutions dependencies\n */\n get resolutions(): PackageJson['resolutions'] {\n return _.cloneDeep(this.data ? this.data['resolutions'] : {}) || {};\n }\n //#endregion\n\n //#region dependencies\n /**\n * npm dependencies from package.json\n */\n get dependencies(): PackageJson['dependencies'] {\n return _.cloneDeep(this.data ? this.data.dependencies : {}) || {};\n }\n\n get description(): string {\n return this.data?.description || '';\n }\n\n get displayName(): string {\n return this.data.displayName || '';\n }\n\n get publisher(): string {\n return this.data.publisher || '';\n }\n\n /**\n * set the WHOLE dependencies object\n * THIS WILL NOT MERGE -> IT WILL REPLACE WHOLE DEPENDENCIES OBJECT\n */\n setDependencies(dependencies: PackageJson['dependencies']) {\n if (!this.data) {\n Helpers.warn(\n `[taon][setDependencies] Package.json not exist in ${this.cwd}`,\n );\n return;\n }\n this.data.dependencies = dependencies;\n this.saveToDisk();\n }\n //#endregion\n\n /**\n * set the WHOLE dependencies object\n * THIS WILL NOT MERGE -> IT WILL REPLACE WHOLE DEPENDENCIES OBJECT\n */\n setDevDependencies(devDependencies: PackageJson['devDependencies']) {\n if (!this.data) {\n Helpers.warn(\n `[taon][setDevDependencies] Package.json not exist in ${this.cwd}`,\n );\n return;\n }\n this.data.devDependencies = devDependencies;\n this.saveToDisk();\n }\n //#endregion\n\n //#region peer dependencies\n /**\n * peerDependencies dependencies\n */\n get peerDependencies(): PackageJson['peerDependencies'] {\n return _.cloneDeep(this.data ? this.data.peerDependencies : {}) || {};\n }\n\n /**\n * set the WHOLE peerDependencies object\n * THIS WILL NOT MERGE -> IT WILL REPLACE WHOLE PEER DEPENDENCIES OBJECT\n */\n setPeerDependencies(peerDependencies: PackageJson['peerDependencies']) {\n if (!this.data) {\n Helpers.warn(\n `[taon][setPeerDependencies] Package.json not exist in ${this.cwd}`,\n );\n return;\n }\n this.data.peerDependencies = peerDependencies;\n this.saveToDisk();\n }\n //#endregion\n\n //#region remove dev dependencies\n removeDevDependencies() {\n if (!this.data) {\n Helpers.warn(\n `[taon][removeDevDependencies] Package.json not exist in ${this.cwd}`,\n );\n return;\n }\n try {\n delete this.data.devDependencies;\n } catch (error) {}\n this.saveToDisk();\n }\n //#endregion\n\n //#region all dependencies\n /**\n * @returns object witl all deps from current project package json\n */\n get allDependencies(): { [packageName: string]: string } {\n return this.allDepsFromPackageJson(this.data);\n }\n\n /**\n * @returns object witl all deps from package json\n */\n protected allDepsFromPackageJson(packageJson: PackageJson) {\n return _.cloneDeep(\n _.merge({\n ...PackageJsonDependencyObjArr.reduce((acc, depObj) => {\n return {\n ...acc,\n ...(packageJson[depObj] || {}),\n };\n }, {}),\n }),\n );\n }\n //#endregion\n\n //#region version\n /**\n * version from package.json -> property version\n */\n get version(): string {\n return this.data?.version;\n }\n\n setVersion(version: string): void {\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region bin\n /**\n * bin with cli config from package.json\n */\n get bin(): Partial<Record<string, string>> {\n return _.cloneDeep(this.data?.bin || {}) as any;\n }\n\n set bin(value: Partial<Record<string, string>>) {\n this.data.bin = value;\n this.saveToDisk('setting bin');\n }\n //#endregion\n\n //#region engines\n get engines(): PackageJson['engines'] {\n return _.cloneDeep(this.data.engines);\n }\n\n async setEngines(engines: PackageJson['engines']): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region homepage\n get homepage(): PackageJson['homepage'] {\n return _.cloneDeep(this.data.homepage);\n }\n\n async setHomepage(homepage: PackageJson['homepage']): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region version with patch plus one\n get versionWithPatchPlusOne(): string {\n const ver = this.version.split('.');\n if (ver.length > 0) {\n ver[ver.length - 1] = (parseInt(_.last(ver)) + 1).toString();\n }\n return ver.join('.');\n }\n //#endregion\n\n //#region version with minor plus one and path zero\n get versionWithMinorPlusOneAndPatchZero(): string {\n const ver = this.version.split('.');\n if (ver.length > 1) {\n ver[1] = (parseInt(ver[1]) + 1).toString();\n for (let index = 2; index < ver.length; index++) {\n ver[index] = '0';\n }\n } else {\n Helpers.warn(\n `[npm-project] something went wrong with bumping minor version`,\n );\n }\n return ver.join('.');\n }\n //#endregion\n\n //#region version with major plus one and minor zero and patch zero\n get versionWithMajorPlusOneAndMinorZeroAndPatchZero(): string {\n const ver = this.version.split('.');\n if (ver.length > 0) {\n ver[0] = (parseInt(_.first(ver)) + 1).toString();\n for (let index = 1; index < ver.length; index++) {\n ver[index] = '0';\n }\n } else {\n Helpers.warn(\n `[npm-project] something went wrong with bumping major version`,\n );\n }\n return ver.join('.');\n }\n //#endregion\n\n //#region get version path as number\n get versionPathAsNumber(): number {\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region major version\n /**\n * Major Version from package.json\n */\n // @ts-ignore\n get majorVersion(): number {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region minor version\n /**\n * Minor Version from package.json\n */\n // @ts-ignore\n get minorVersion(): number {\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region bump path version\n async bumpPatchVersion() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region getters & methods / get version for\n getVersionFor(releaseType: CoreModels.ReleaseVersionType): string {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region update deps from locations\n updateDepsFrom(locations: string[]) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region update dependency\n /**\n * this will NOT SET dependency if\n * dependency name is not in package.json\n */\n updateDependency({\n packageName,\n version,\n }: {\n packageName: string;\n version: string | null;\n }): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region is private\n get isPrivate(): boolean {\n/* */\n/* */\n return (void 0);\n }\n\n setIsPrivate(value: boolean) {\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n get sideEffects(): boolean {\n/* */\n/* */\n return (void 0);\n }\n\n //#region set new version\n async setMainProperty(main: string, purpose = ''): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region build hash\n setBuildHash(hash: string): void {\n this.data.lastBuildTagHash = hash;\n this.saveToDisk('setting build hash');\n }\n getBuildHash(): string {\n return this.data.lastBuildTagHash;\n }\n //#endregion\n}","//#region imports\nimport { config } from 'tnp-config/browser';\nimport { UtilsOs } from 'tnp-core/browser';\nimport {\n CoreModels,\n crossPlatformPath,\n fse,\n path,\n _,\n chalk,\n dateformat,\n} from 'tnp-core/browser';\nimport type { BaseNpmHelpers } from '../../../lib';\n\nimport { Helpers } from '../../index';\n\nimport type { BaseProject } from './base-project';\n//#endregion\n\nexport type DedupePackage =\n | string\n | {\n package: string;\n excludeFrom?: string[];\n includeOnlyIn?: string[];\n };\n\nexport class BaseNodeModules<\n NPM_HELPERS extends BaseNpmHelpers = BaseNpmHelpers,\n> {\n protected _npmHelpersType: NPM_HELPERS;\n\n //#region constructor\n constructor(\n /**\n * my-path/node_modules\n */\n protected cwd: string,\n protected npmHelpers: NPM_HELPERS,\n ) {\n this.npmHelpers = npmHelpers;\n }\n //#endregion\n\n //#region path\n /**\n * cwd + node_modules\n */\n get path() {\n return crossPlatformPath([this.cwd, config.folder.node_modules]);\n }\n //#endregion\n\n //#region path for package\n /**\n * Path to package inside node_modules folder\n * @example <project-path>/node_modules/<package-name>\n */\n pathFor(packageName: string | string[]): string {\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region real path of node_modules - if node_modules is a link\n /**\n * real path of node_modules\n * if node_modules is a link\n * it will return real path.\n * if node_modules is folder = path\n */\n get realPath() {\n try {\n const realPath = fse.realpathSync(this.path);\n return realPath;\n } catch (error) {\n return this.path;\n }\n }\n //#endregion\n\n //#region prevent wrong link destination\n protected preventWrongLinkDestination(dest: string): string {\n if (!path.isAbsolute(dest)) {\n Helpers.error(\n `[linkTo..] target destination path is not absolute \"${dest}\"`,\n );\n }\n\n if (dest.endsWith(`/${config.folder.node_modules}`)) {\n return dest;\n }\n return crossPlatformPath([dest, config.folder.node_modules]);\n }\n //#endregion\n\n //#region link node_modules to other project\n linkToProject(project: Partial<BaseProject>) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region link to project or location\n linkToLocation(location: string): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region make sure node modules installed\n async makeSureInstalled(options?: Omit<CoreModels.NpmInstallOptions, 'pkg'>) {\n if (this.isEmpty()) {\n await this.reinstall(options);\n }\n }\n //#endregion\n\n //#region delete node_modules\n async remove(options?: { skipQuestion?: boolean }): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region remove package inside\n removePackage(packageInside: string): void {\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region reinstall node modules\n async reinstall(options?: Omit<CoreModels.NpmInstallOptions, 'pkg'>) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region is link\n get isLink(): boolean {\n return Helpers.isSymlinkFileExitedOrUnexisted(this.path);\n }\n //#endregion\n\n unlinkNodeModulesWhenLinked() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n //#region empty\n get empty() {\n return this.isEmpty();\n }\n //#endregion\n\n //#region fields & getters / empty node_modules\n /**\n * @returns true if node_modules folder is empty\n * DEEP CHECK - also if node_modules is a link\n * and is not existent\n */\n isEmpty() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region prepare command\n /**\n * Prepare command for npm install\n * (or yarn install)\n */\n async prepareCommand(\n options: CoreModels.NpmInstallOptions,\n cwd: string = this.cwd,\n ): Promise<string> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region dedupe packages action\n dedupePackages(packagesConfig?: DedupePackage[], countOnly = false): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n //#endregion\n}","import { config } from 'tnp-config/browser';\n\nimport { BaseJsonFileReader } from './base-json-file-reader';\n\n//#region bower.json interface\n/**\n * Minimal interface describing a bower.json file according to:\n * https://github.com/bower/spec/blob/master/json.md\n */\nexport interface BowerJson {\n name: string;\n version?: string;\n description?: string;\n main?: string | string[];\n keywords?: string[];\n authors?: Array<string | { name: string; email?: string; homepage?: string }>;\n license?: string;\n homepage?: string;\n private?: boolean;\n repository?: {\n type: string;\n url: string;\n };\n ignore?: string[];\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n // Optional fields:\n resolutions?: Record<string, string>;\n moduleType?: string | string[];\n // ...and so on, for any additional custom fields\n}\n//#endregion\n\nexport class BaseBowerJson extends BaseJsonFileReader<BowerJson> {\n constructor(public cwd: string) {\n super({ cwd, fileName: config.file.bower_json });\n }\n\n //#region bower dependencies\n get dependencies() {\n return (this.data ? this.data.dependencies : {}) || {};\n }\n //#endregion\n}","//#region imports\nimport { config } from 'tnp-config/browser';\nimport { UtilsTerminal } from 'tnp-core/browser';\nimport {\n chalk,\n child_process,\n crossPlatformPath,\n fse,\n path,\n} from 'tnp-core/browser';\nimport { _ } from 'tnp-core/browser';\nimport { CoreModels } from 'tnp-core/browser';\nimport { PackageJson } from 'type-fest';\n\nimport { Helpers } from '../../index';\n\nimport { BaseBowerJson } from './base-bower-json';\nimport { BaseFeatureForProject } from './base-feature-for-project';\nimport { BaseNodeModules } from './base-node-modules';\nimport { BasePackageJson } from './base-package-json';\nimport type { BaseProject } from './base-project';\n\n//#endregion\n\nexport class BaseNpmHelpers<\n PROJECT extends BaseProject = BaseProject,\n> extends BaseFeatureForProject<PROJECT> {\n //#region fields\n public readonly packageJson: BasePackageJson;\n public readonly _packageJsonType: typeof BasePackageJson = BasePackageJson;\n private readonly _packageJsonTypeOriginal: typeof BasePackageJson =\n BasePackageJson;\n\n public readonly nodeModules: BaseNodeModules;\n public readonly _nodeModulesType: typeof BaseNodeModules = BaseNodeModules;\n private readonly __nodeModulesTypeOriginal: typeof BaseNodeModules =\n BaseNodeModules;\n\n public readonly bowerJson: BaseBowerJson;\n\n //#endregion\n\n //#region constructor\n constructor(project: PROJECT) {\n super(project);\n this.project = project;\n if (this._packageJsonType === this._packageJsonTypeOriginal) {\n this.packageJson = new this._packageJsonType({ cwd: project.location });\n }\n if (this._nodeModulesType === this.__nodeModulesTypeOriginal) {\n this.nodeModules = new this._nodeModulesType(\n project.location,\n this as any,\n );\n }\n this.bowerJson = new BaseBowerJson(project.location);\n }\n //#endregion\n\n //#region prefer yarn over npm\n preferYarnOverNpm(): boolean {\n return false;\n }\n //#endregion\n\n //#region reset package-lock.json\n async resetPackageLockJson() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region start npm task\n startNpmTask(taskName: string, additionalArguments?: string | object) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region check if logged in to registry\n /**\n *\n * @param registry without specified registr is checking npm registry\n * @returns\n */\n async isLoggedInToRegistry(registry?: string): Promise<boolean> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region login to registry\n /**\n * Prompt the user to log in to a specific npm registry.\n * @param {string} [registry] - Optional npm registry URL.\n * @returns {Promise<void>} - A promise that resolves when the login process completes.\n */\n async loginToRegistry(registry?: string): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region check if logged in to npm\n async makeSureLoggedInToNpmRegistry(registry?: string): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region should release lib\n async shouldReleaseMessage(options: {\n releaseVersionBumpType: CoreModels.ReleaseVersionType;\n versionToUse?: string;\n children?: BaseProject[];\n whatToRelease: {\n itself: boolean;\n children: boolean;\n };\n skipQuestionToUser?: boolean;\n }): Promise<boolean> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region publish to npm registry\n /**\n * @param registry when not specified, it will use the default npm registry\n */\n async publishToNpmRegistry(options?: { registry?: string }): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region get package version from npm registry\n getPackageVersionFromNpmRegistry(\n packageName: string,\n options?: {\n registry?: string;\n },\n ): Promise<string | undefined> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n}","//#region import\nimport { load } from 'json10-writer/browser';\nimport { config } from 'tnp-config/browser';\nimport { _, chalk, crossPlatformPath, path, UtilsTerminal } from 'tnp-core/browser';\n\nimport {\n Helpers,\n LinkedPorjectsConfig,\n LinkedProject,\n UtilsTypescript,\n} from '../../index';\n\nimport { BaseFeatureForProject } from './base-feature-for-project';\nimport type { BaseProject } from './base-project';\n//#endregion\n\nexport class BaseLinkedProjects<\n PROJECT extends BaseProject = any,\n> extends BaseFeatureForProject<PROJECT> {\n private cache: any = {};\n\n //#region methods & getters / embedded project\n get embeddedProject(): PROJECT {\n const cacheKey = 'embeddedProject' + _.kebabCase(this.project.location);\n if (!_.isUndefined(this.cache[cacheKey])) {\n return this.cache[cacheKey];\n }\n // Helpers.taskStarted(`Detecting embedded project for ${this.location}`); // TODO it is slow\n const nearsetProj = this.project.ins.nearestTo(\n crossPlatformPath([this.project.location, '..']),\n ) as PROJECT;\n const linkedPorj = nearsetProj?.linkedProjects?.linkedProjects.find(l => {\n const copareTo = crossPlatformPath([\n nearsetProj.location,\n l.relativeClonePath,\n ]);\n if (this.project.location === copareTo) {\n return true;\n }\n if (l.remoteUrl() === this.project.git.originURL) {\n return true;\n }\n return false;\n });\n if (!linkedPorj || !linkedPorj.internalRealtiveProjectPath) {\n return;\n }\n const pathToEmbededProj = crossPlatformPath([\n nearsetProj.location,\n linkedPorj.relativeClonePath,\n linkedPorj.internalRealtiveProjectPath || '',\n ]);\n const embdedresult = this.project.ins.From(pathToEmbededProj) as PROJECT;\n // Helpers.taskDone(`Embedded project detected for ${this.location}`);\n this.cache[cacheKey] = embdedresult;\n return this.cache[cacheKey];\n }\n //#endregion\n\n //#region methods & getters / projects db location\n get projectsDbLocation() {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / save location to db\n async saveLocationToDB() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / save all linked projects to db\n async saveAllLinkedProjectsToDB() {\n const proj = this.project;\n await proj.linkedProjects.saveLocationToDB();\n for (const link of proj.linkedProjects.linkedProjects) {\n const linkedPorj = this.project.ins.From([\n proj.location,\n link.relativeClonePath,\n link.internalRealtiveProjectPath || '',\n ]) as PROJECT;\n // console.log({ linkedPorj })\n if (linkedPorj) {\n await linkedPorj.linkedProjects.saveLocationToDB();\n } else {\n Helpers.warn(`\n In project ${proj.genericName}\n\n Folder ${link.relativeClonePath} is missing projects...\n\n `);\n }\n }\n }\n //#endregion\n\n //#region methods & getters / add linked project\n addLinkedProject(linkedProj: LinkedProject | string) {\n const linkedProject: LinkedProject = _.isString(linkedProj)\n ? LinkedProject.fromName(linkedProj)\n : linkedProj;\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / add linked projects\n addLinkedProjects(linkedProjs: LinkedProject[]) {\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / set linked projects config\n setLinkedProjectsConfig(linkedPorjectsConfig: Partial<LinkedPorjectsConfig>) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / get linked projects config path\n private get linkedProjectsConfigPath() {\n return this.project.pathFor(config.file.linked_projects_json);\n }\n\n private get linkedProjectsConfigTempPath() {\n return this.project.pathFor([`tmp-${config.file.linked_projects_json}`]);\n }\n //#endregion\n\n //#region methods & getters / recreate linked projects config\n protected recreateLinkedProjectsConfig() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / get linked projects config\n getLinkedProjectsConfig(): LinkedPorjectsConfig {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / linked projects\n get linkedProjects(): LinkedProject[] {\n return this.getLinkedProjectsConfig().projects || [];\n }\n //#endregion\n\n //#region methods & getters / detected linked projects\n get detectedLinkedProjects(): LinkedProject[] {\n const detectedLinkedProjects = LinkedProject.detect(\n this.project.location,\n { recursive: true }, // TOOD fix recrusive\n );\n return detectedLinkedProjects;\n }\n //#endregion\n\n //#region methods & getters / linked projects prefix\n get linkedProjectsPrefix() {\n return this.getLinkedProjectsConfig().prefix;\n }\n //#endregion\n\n //#region getters & methods / reset linked projects only to core branches\n resetLinkedProjectsOnlyToCoreBranches() {\n return false;\n }\n //#endregion\n\n //#region getters & methods / get unexisted projects\n async cloneUnexistedLinkedProjects(setOrigin: 'ssh' | 'http') {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n}","//#region imports\nimport { config } from 'tnp-config/browser';\nimport { chalk, dateformat, fse, Utils } from 'tnp-core/browser';\nimport { crossPlatformPath, path, _, UtilsTerminal } from 'tnp-core/browser';\n\nimport {\n CommitData,\n Helpers,\n PushProcessOptions,\n TypeOfCommit,\n} from '../../index';\nimport { translate } from '../translate';\n\nimport { BaseFeatureForProject } from './base-feature-for-project';\nimport type { BaseProject } from './base-project';\n//#endregion\n\nexport class BaseGit<\n PROJECT extends BaseProject = any,\n> extends BaseFeatureForProject<PROJECT> {\n //#region methods & getters / unstage all files\n unstageAllFiles(): void {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / revert file changes\n revertFileChanges(fileReletivePath: string): void {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / clone\n async clone(\n url: string,\n destinationFolderName = '',\n branchName?: string,\n ): Promise<string> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / restore last version\n restoreLastVersion(relativeFilePath: string): void {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / stage all files\n stageAllFiles(): void {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / stage all files\n stageFile(relativeFilePath: string): void {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / stash\n stash(options?: { onlyStaged?: boolean }): void {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / stash\n rebase(toBranch: string): void {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / stash apply\n stashApply(): void {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / fetch\n fetch(all = false): void {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / reset files\n resetFiles(...relativePathes: string[]): void {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / is inside git repo\n get isInsideGitRepo(): boolean {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / is without git repository\n get isWithoutGitRepository(): boolean {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / is git root\n get isGitRoot(): boolean {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / origin url\n get originURL(): string {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / commit\n commit(commitMessage?: string): void {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / add and commit\n /**\n * alias to stage all and commit\n */\n addAndCommit(commitMessage: string): void {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / get default develop Branch\n /**\n * general default development branch for all kinds of projects\n */\n getDefaultDevelopmentBranch(): string {\n return 'develop';\n }\n //#endregion\n\n //#region methods & getters / is using action commit\n isUsingActionCommit(): boolean {\n return false;\n }\n //#endregion\n\n jiraIssuesAreOutsideBrackets(): boolean {\n return false;\n }\n\n async getUserInfo(\n global = false,\n ): Promise<{ name?: string; email?: string }> {\n/* */\n/* */\n return (void 0);\n }\n\n async setUserInfo(\n { name, email }: { name?: string; email?: string },\n global = false,\n ): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n //#region methods & getters / stage all and commit\n stageAllAndCommit(commitMessage: string): void {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / push current branch\n async pushCurrentBranch(options?: {\n force?: boolean;\n origin?: string;\n askToRetry?: boolean;\n forcePushNoQuestion?: boolean;\n }): Promise<boolean> {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / all origins\n get allOrigins(): { origin: string; url: string }[] {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / uncommited files\n get uncommitedFiles(): string[] {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / there are some uncommited change\n get thereAreSomeUncommitedChange(): boolean {\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / there are some uncommited change except\n thereAreSomeUncommitedChangeExcept(filesList: string[] = []): boolean {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n /**\n * Resolve last changes\n * - uncommited changes\n * - action commits to melt\n */\n async resolveLastChanges(options?: {\n // TODO WIP on that\n tryAutomaticActionFirst?: boolean;\n projectNameAsOutputPrefix?: string;\n }): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n //#region methods & getters / has action commits to melt\n get hasActionCommitsToMelt(): boolean {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / melt action commits\n /**\n * @returns number of melted commits\n */\n meltActionCommits(): number {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region push to git repo\n /**\n *\n * @param newVersion\n * @param pushWithoutAsking\n */\n async tagAndPushToGitRepo(\n newVersion: string,\n autoReleaseUsingConfig: boolean,\n isCiProcess: boolean,\n ): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / pull current branch\n async pullCurrentBranch(options?: {\n askToRetry?: boolean;\n /**\n * default true, when false it will throw error instead process.exit(0)\n */\n exitOnError?: boolean;\n defaultHardResetCommits?: number;\n }): Promise<void> {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / current branch name\n get currentBranchName(): string {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / list of current git changes\n get listOfCurrentGitChanges(): {\n modified: string[];\n deleted: string[];\n created: string[];\n } {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / get branches names by\n getBranchesNamesBy(pattern: string | RegExp): string[] {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / reset soft HEAD\n resetSoftHEAD(HEAD = 1): void {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / reset hard\n resetHard(options?: { HEAD?: number }): void {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / count commits\n countCommits(): number {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / has any commits\n hasAnyCommits() {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / is in merge process\n get isInMergeProcess() {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / last commit date\n lastCommitDate() {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / last commit hash\n lastCommitHash() {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / last commit message\n lastCommitMessage(): string {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / last commit message\n async penultimateCommitMessage(): Promise<string> {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / get commit message by index\n async getCommitMessageByIndex(index: number): Promise<string> {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / get commit message by hash\n async getCommitMessageByHash(hash: string): Promise<string> {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / get commit hash by index\n async getCommitHashByIndex(index: number): Promise<string> {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / penultimate commit hash\n penultimateCommitHash(): string {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / check tag exists\n checkTagExists(tag: string): boolean {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / checkout\n checkout(\n branchName: string,\n options?: {\n createBranchIfNotExists?: boolean;\n fetchBeforeCheckout?: boolean;\n switchBranchWhenExists?: boolean;\n },\n ): void {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n allowedGitEmailDomains(): string[] {\n return [];\n }\n\n cleanRepoFromAnyFilesExceptDotGitFolder(): void {\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n //#region methods & getters / checkout from to\n checkoutFromTo(\n checkoutFromBranch: string,\n branch: string,\n origin = 'origin',\n ): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / last tag name for major version\n /**\n *\n * @param majorVersion example: v1, v2 etc.\n * @returns tag name\n */\n lastTagNameForMajorVersion(majorVersion): string {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / last tag hash\n lastTagHash(): string {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / remote origin url\n get remoteOriginUrl(): string {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / remote origin url\n /**\n * get provider of remote origin\n */\n get remoteProvider(): string {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / last tag version name\n get lastTagVersionName(): string {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / staged files\n get stagedFiles(): string[] {\n/* */\n/* */\n return (void 0);\n }\n get stagedFilesRelativePaths(): string[] {\n/* */\n/* */\n return (void 0);\n }\n\n //#endregion\n\n //#region methods & getters / rename origin\n /**\n * TODO does this make any sense\n */\n renameOrigin(newNameOrUlr: string): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region getters & methods / translate git commit from args\n /**\n * By default no translation of commit\n */\n transalteGitCommitFromArgs(): { from: string; to: string } {\n return { from: void 0 as string, to: void 0 as string };\n }\n //#endregion\n\n //#region getters & methods / us git branches when commiting and pushing\n /**\n * By defult true.. when commit branches will not function.\n * (false is better for simple projects)\n */\n useGitBranchesWhenCommitingAndPushing(): boolean {\n return true;\n }\n //#endregion\n\n //#region getters & methods / automatically add all changes when pushing to git\n /**\n * usefull when pushing in project with childrens as git repos\n */\n automaticallyAddAllChangesWhenPushingToGit(): boolean {\n return false;\n }\n //#endregion\n\n //#region getters & methods / use git branches as metadata for commits\n /**\n * usefull when pushing in project with childrens as git repos\n */\n useGitBranchesAsMetadataForCommits(): boolean {\n return true;\n }\n //#endregion\n\n //#region getters & methods / clone to\n /**\n * @returns true if clone was successful\n */\n async cloneTo(cwd: string, newProjectName?: string): Promise<boolean> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region getters & methods / get children\n /**\n * This is only for push/pull process\n *\n * There are 2 types of projects:\n * - with linked-projects.json\n * - with children from external folder\n *\n * projects that are children of this project (with its own git repo)\n */\n get gitChildren(): PROJECT[] {\n let childrenRepos: PROJECT[] = [];\n\n if (this.project.linkedProjects.linkedProjects.length > 0) {\n childrenRepos = this.project.linkedProjects.linkedProjects\n .map(c => {\n return this.project.ins.From([\n this.project.location,\n c.relativeClonePath,\n ]) as PROJECT;\n })\n .filter(f => !!f);\n } else {\n childrenRepos = this.project.children as PROJECT[];\n }\n\n childrenRepos = childrenRepos.filter(\n f => f.git.isInsideGitRepo && f.git.isGitRoot,\n ) as PROJECT[];\n return childrenRepos;\n }\n //#endregion\n\n //#region getters & methods / set remote origin type\n protected async setRemoteOriginType(\n setOrigin: 'ssh' | 'http',\n ): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / push process\n async pullProcess(\n options: {\n skipCloneGitChildren?: boolean;\n setOrigin?: 'ssh' | 'http';\n } = {},\n ): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n private async validateEmailDomain(\n allowedEmailsEnds: string[],\n ): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n protected async _afterPullProcessAction(\n setOrigin: 'ssh' | 'http',\n ): Promise<void> {\n // nothing yet\n }\n\n //#region methods & getters / push process\n async pushProcess(options: PushProcessOptions = {}): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / before any action on git root\n public _beforeAnyActionOnGitRoot(): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / before push action\n protected async _beforePushProcessAction(\n setOrigin: 'ssh' | 'http',\n ): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / before push action\n protected async _beforePullProcessAction(\n setOrigin: 'ssh' | 'http',\n skipCloneGitChildren = false,\n ): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / resovle commit message\n protected async _getCommitMessage(\n typeOfCommit: TypeOfCommit,\n args: string[],\n commitMessageRequired?: boolean,\n /**\n * only needed when push github\n * and I forgot to add my username before issue\n * taon pfix proper input my-repo#344\n * that should be\n * taon pfix proper input my-username/my-repo#344\n */\n currentOrigin?: string,\n ): Promise<CommitData> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / prevent accidental branch change for taon projects\n /**\n * This will prevent accidental branch change for taon projects\n * @returns branch name\n */\n duringPushWarnIfProjectNotOnSpecyficDevBranch(): string {\n return '';\n }\n //#endregion\n\n //#region methods & getters / get changed files in commit by hash\n async getChangedFilesInCommitByHash(hash: string): Promise<string[]> {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / get changed files in commit\n /**\n * @param index 0 - means last commit\n */\n async getChangedFilesInCommitByIndex(index: number): Promise<string[]> {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / get changes summary\n async changesSummary(): Promise<string> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / reset is resting also children\n /**\n * If true command navi reset will reset project\n * and its children.\n *\n * If false command navi reset will reset only project.\n */\n resetIsRestingAlsoChildren(): boolean {\n return true;\n }\n //#endregion\n}","import {\n crossPlatformPath,\n fse,\n os,\n path,\n Utils,\n UtilsTerminal,\n} from 'tnp-core/browser';\nimport { _ } from 'tnp-core/browser';\n\nimport { Helpers } from '../../index';\n\nimport { BaseFeatureForProject } from './base-feature-for-project';\nimport type { BaseProject } from './base-project';\n\nexport interface ISettingsVscode {\n 'workbench.colorTheme': string;\n 'workbench.colorCustomizations'?: {\n 'activityBar.background'?: string;\n 'statusBar.background'?: string;\n 'statusBar.debuggingBackground'?: string;\n };\n}\n\nexport class BaseVscodeHelpers<\n PROJECT extends BaseProject = any,\n> extends BaseFeatureForProject<PROJECT> {\n /**\n * settings.json relative path\n */\n public readonly relativePathSettingsJsonVscode = '.vscode/settings.json';\n public readonly relativePathExtensionJsonVScode = '.vscode/extensions.json';\n\n protected readonly currentSettingsValue: ISettingsVscode;\n saveCurrentSettings(): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n constructor(project: PROJECT) {\n super(project);\n this.currentSettingsValue =\n Helpers.readJsonC(project.pathFor(this.relativePathSettingsJsonVscode)) ||\n {};\n }\n\n getExtensions(): string[] {\n return Helpers.uniqArray([\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n ]).map(c => (c as string).toLowerCase());\n }\n\n //#region extensions\n /**\n * @deprecated use getExtensions() instead\n */\n private get extensions(): string[] {\n return this.getExtensions();\n }\n //#endregion\n\n //#region recreate extensions\n recreateExtensions(): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region recraete window title\n recreateWindowTitle(options?: { save?: boolean }): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region install extensions\n async installExtensions(\n extensions = this.extensions,\n defaultSelectedAll = false,\n ): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region strip version\n /**\n * This pattern finds a dash followed by at least one digit.\n * It removes everything from that dash to the end of the string.\n * Examples:\n * \"name-of-extension-1.2.3\" -> \"name-of-extension\"\n * \"extension-0.9.5-win32-x64\" -> \"extension\"\n */\n protected stripVersion(folderName: string): string {\n return folderName.replace(/(-\\d+.*)$/, '');\n }\n //#endregion\n\n //#region installed extensions\n get installedExtensions(): string[] {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region apply proper global settings\n async applyProperGlobalSettings(): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n}","//#region imports\nimport { config } from 'tnp-config/browser';\nimport { CoreModels, chalk, dateformat, _, UtilsTerminal } from 'tnp-core/browser';\n\nimport { Helpers } from '../../index';\nimport type { ChangelogData } from '../../models';\nimport { CommitData } from '../commit-data';\n\nimport { BaseFeatureForProject } from './base-feature-for-project';\nimport type { BaseProject } from './base-project';\n//#endregion\n\nexport class BaseReleaseProcess<\n PROJECT extends BaseProject<any, any> = any,\n> extends BaseFeatureForProject<PROJECT> {\n //#region fields\n\n /**\n * Automatic release process of patch plus one version\n */\n automaticRelease: boolean = false;\n versionType: CoreModels.ReleaseVersionType;\n preReleaseVersionTag: CoreModels.PreReleaseVersionTag;\n lastChangesSummary: string;\n newVersion: string;\n commitsForChangelog: {\n commitMessages: string;\n index: number;\n }[] = [];\n //#endregion\n\n //#region methods & getters / start release\n startRelease(options?: Partial<BaseReleaseProcess<PROJECT>>): Promise<void> {\n throw new Error('Method not implemented.');\n }\n //#endregion\n\n //#region methods & getters / get release words\n getReleaseWords(): string[] {\n return ['release'];\n }\n //#endregion\n\n //#region methods & getters / select changelog commits\n async selectChangelogCommits(): Promise<\n {\n commitMessages: string;\n index: number;\n }[]\n > {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / get commits up to release commit\n private async getCommitsUpToReleaseCommit(): Promise<\n {\n commitMessages: string;\n index: number;\n }[]\n > {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n public async checkBundleQuestion(\n cwdForCode: string,\n checkMessage = `Select action before publishing ?`,\n ): Promise<boolean> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n //#region methods & getters / publish to npm\n /**\n * @returns true if publish , faslse if just version bump\n */\n public async publishToNpm(\n cwdForCode = this.project.pathFor('dist'),\n automaticRelease = this.automaticRelease,\n ): Promise<boolean> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / test after publish\n protected async testAfterPublish(): Promise<boolean> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / test before publish\n protected async testBeforePublish(): Promise<boolean> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / commit and push\n protected async commitAndPush(): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / release commit template\n protected releaseCommitTemplate(): string {\n return `Release v${this.newVersion} + changelog.md update`;\n }\n //#endregion\n\n //#region methods & getters / test libraries\n private async testLibraries(): Promise<boolean> {\n try {\n this.project.run('npm run test', { output: true }).sync();\n return true;\n } catch (error) {\n Helpers.info(`Test failed, you can run test manually`);\n return false;\n }\n }\n //#endregion\n\n //#region methods & getters / build all libraries\n async buildAllLibraries() {\n await this.project.libraryBuild.buildLibraries({\n watch: false,\n releaseBuild: true,\n });\n }\n //#endregion\n\n //#region methods & getters / reset release files\n async resetReleaseFiles() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / to bump projects\n get toBumpProjects() {\n const toBumpProjects = [\n this.project,\n ...this.project.libraryBuild.libraries,\n ] as PROJECT[];\n\n return toBumpProjects;\n }\n //#endregion\n\n //#region methods & getters / bump new version everywhere\n async bumpNewVersionEverywhere() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / confirm release type\n async confirmNewVersion(): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / select release type\n protected async selectReleaseType(\n versionToUseResolveFn?: (\n releaseVersionBumpType: CoreModels.ReleaseVersionType,\n ) => string,\n ): Promise<CoreModels.ReleaseVersionType> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / commit message in changelog transform fn\n protected async commitMessageInChangelogTransformFn(\n message: string,\n ): Promise<string> {\n return message;\n }\n //#endregion\n\n //#region methods & getters / calculate item\n async getChangelogContentToAppend(askForEveryItem: boolean): Promise<string> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / update changelog.md from commits\n /**\n * TODO extend this to all commits from last release\n */\n async updateChangeLogFromCommits(): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / extract changed libraries in last commit\n async extractChangedLibrariesInCommit(\n hashOrIndex: string | number,\n ): Promise<string> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / change log item template\n async changelogItemTemplate(\n hashOrIndex: string | number,\n confirmEveryItem: boolean = false,\n ): Promise<string> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / generate last changes summary\n async generateLastChangesSummary(): Promise<string> {\n const lastReleaseCommitData = await this.getLastReleaseCommitData();\n const hasLastReleaseCommit = lastReleaseCommitData.index !== -1;\n const lastReleaseCommitMsg = !hasLastReleaseCommit\n ? '< nothing release yet >'\n : lastReleaseCommitData.lastReleaseCommitMsg;\n\n return `${chalk.bold.gray('Last changelog.md notes summary')}:\n${await this.getLastPackageVersionChangesFromChnagelog()}\n\n${chalk.bold.gray(\n hasLastReleaseCommit ? 'Last commits up to release commit' : 'Last 3 commits',\n)}:\n${await this.getLastChangesFromCommits({\n maxMessagesToCheck: hasLastReleaseCommit ? Number.POSITIVE_INFINITY : 3,\n stopOnCommitMessage: hasLastReleaseCommit\n ? lastReleaseCommitData.lastReleaseCommitMsg\n : '',\n})}\n `;\n }\n //#endregion\n\n //#region methods & getters / get last changes from commits\n async getLastChangesFromCommits({\n maxMessagesToCheck = 3,\n stopOnCommitMessage = '',\n }: {\n /**\n * default 3\n */\n maxMessagesToCheck?: number;\n /**\n * stop serching on commit message\n */\n stopOnCommitMessage?: string;\n } = {}): Promise<string> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / get last release commit data\n async getLastReleaseCommitData(): Promise<{\n lastReleaseCommitMsg: string;\n /**\n * -1 if not found\n */\n index: number;\n }> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / get last changes from changelog\n async getLastPackageVersionChangesFromChnagelog(): Promise<string> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / get changelog path\n private get changeLogPath() {\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / get changelog content\n get changelogContent() {\n return this.project.readFile(this.changeLogPath) || '';\n }\n //#endregion\n\n //#region methods & getters / change log key word\n changeLogKeyWord() {\n return 'Changes in version';\n }\n //#endregion\n\n //#region methods & getters / get changelog data\n getChnagelogData(): ChangelogData[] {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n}","//#region imports\n/* */\n/* */\n \nimport { IncCompiler } from 'incremental-compiler/browser';\nimport { _ } from 'tnp-core/browser';\nimport { BaseProject } from './base-project';\nimport { Helpers } from '../../../lib';\nimport { config } from 'tnp-config/browser';\n//#endregion\n\nexport abstract class BaseCompilerForProject<\n ADDITIONAL_DATA = any,\n PROJECT extends BaseProject = BaseProject,\n> extends IncCompiler.Base<ADDITIONAL_DATA> {\n //#region check folder compiler\n protected checkFolderCompiler(\n project: PROJECT,\n options: IncCompiler.Models.BaseClientCompilerOptions,\n dontCheck = false,\n ) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region constructor\n\n constructor(\n public project: PROJECT,\n options?: IncCompiler.Models.BaseClientCompilerOptions,\n allowFolderOutSideProject = false,\n ) {\n super();\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n //#endregion\n}","import { ChangeOfFile } from 'incremental-compiler/browser';\nimport { _, Utils } from 'tnp-core/browser';\n\nimport { BaseCompilerForProject } from './base-compiler-for-project';\nimport { BaseProject } from './base-project';\n\nexport abstract class BaseDebounceCompilerForProject<\n ADDITIONAL_DATA = any,\n PROJECT extends BaseProject = BaseProject,\n> extends BaseCompilerForProject<ADDITIONAL_DATA, PROJECT> {\n protected initialParams: ADDITIONAL_DATA;\n /**\n * default debounce time is 1s\n */\n protected debounceTime = 1000;\n abstract action({\n changeOfFiles,\n asyncEvent,\n }: {\n changeOfFiles: ChangeOfFile[];\n asyncEvent: boolean;\n });\n\n /**\n * current files that are in project\n */\n protected exitedFilesAbsPathes: string[] = [];\n\n /**\n * @deprecated use action() instead\n */\n public async syncAction(\n absFilesPathes: string[],\n initialParams: ADDITIONAL_DATA,\n ): Promise<void> {\n this.initialParams = initialParams || ({} as any);\n this.exitedFilesAbsPathes = absFilesPathes;\n return await this.action({\n changeOfFiles: absFilesPathes.map(\n fileAbsolutePath => new ChangeOfFile(fileAbsolutePath, 'change'),\n ),\n asyncEvent: false,\n });\n }\n\n private lastAsyncFilesChanges: ChangeOfFile[] = [];\n private debounceAction = _.debounce(() => {\n const changeOfFiles = this.lastAsyncFilesChanges;\n this.lastAsyncFilesChanges = [];\n this.action({\n changeOfFiles,\n asyncEvent: true,\n });\n }, this.debounceTime);\n\n /**\n * @deprecated use action() instead\n */\n public async asyncAction(\n asyncEvents: ChangeOfFile,\n initialParams?: ADDITIONAL_DATA,\n ): Promise<void> {\n this.lastAsyncFilesChanges.push(asyncEvents);\n if (asyncEvents.eventName === 'unlink') {\n this.exitedFilesAbsPathes = this.exitedFilesAbsPathes.filter(\n f => f !== asyncEvents.fileAbsolutePath,\n );\n } else if (asyncEvents.eventName === 'unlinkDir') {\n this.exitedFilesAbsPathes = this.exitedFilesAbsPathes.filter(\n f =>\n !f.startsWith(asyncEvents.fileAbsolutePath.replace(/\\/$/, '') + '/'),\n );\n } else {\n this.exitedFilesAbsPathes.push(asyncEvents.fileAbsolutePath);\n this.exitedFilesAbsPathes = Utils.uniqArray(this.exitedFilesAbsPathes);\n }\n await this.debounceAction();\n }\n}","//#region imports\nimport { config } from 'tnp-config/browser';\nimport { _, fse, path } from 'tnp-core/browser';\nimport { PackageJson } from 'type-fest';\n\nimport { Helpers, UtilsQuickFixes } from '../../index';\n\nimport { BaseFeatureForProject } from './base-feature-for-project';\nimport type { BaseProject } from './base-project';\n//#endregion\n\nexport class BaseQuickFixes<\n PROJECT extends BaseProject<any, any> = BaseProject<any, any>,\n> extends BaseFeatureForProject<PROJECT> {\n constructor(public project: PROJECT) {\n super(project);\n this.project = project;\n }\n\n /**\n * filesRelativePaths example:\n * ['node_modules/@types/glob/index.d.ts', '/home/user/project/src/app.ts']\n *\n * @param filesRelativeAbsPaths\\ Quick fix for typescript check\n */\n excludeNodeModulesDtsFromTypescriptCheck(filesRelativeAbsPaths:string[]) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n\n }\n\n //#region fix sqlite pacakge in node_modules\n fixSQLLiteModuleInNodeModules() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region add missing empty libs\n public createDummyEmptyLibsReplacements(missingLibsNames: string[] = []) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n}","//#region imports\nimport { ChildProcess, execSync } from 'child_process';\n\nimport { Helpers, UtilsTerminal } from 'tnp-core/browser';\nimport { CoreModels, _ } from 'tnp-core/browser';\n\nimport type { BaseProject, TypeOfCommit } from './base';\nimport type { BaseProcessManger } from './base/classes/base-process-manager';\n//#endregion\n\n//#region base project type\nexport type BaseProjectType = CoreModels.BaseProjectType;\nexport const BaseProjectTypeArr = CoreModels.BaseProjectTypeArr;\n//#endregion\n\n//#region ng project\n/**\n * Angular project type\n */\nexport type NgProject = {\n projectType: 'library' | 'application';\n /**\n * where ng-packagr.json is located, tsconfig etc.\n */\n root: string;\n /**\n * Source code project\n */\n sourceRoot: string;\n prefix: string;\n};\n\n//#endregion\n\n//#region library build options\nexport type LibraryBuildCommandOptions = {\n watch?: boolean;\n};\n//#endregion\n\n//#region libraries build options\nexport type LibrariesBuildOptions<PROJECT extends BaseProject = BaseProject> = {\n strategy?: 'link' | 'copy';\n /**\n * by default we are copying all libraries to node_modules of itself\n */\n copylink_to_node_modules?: string[];\n releaseBuild?: boolean;\n /**\n * override build options for specific libraries\n * @todo\n */\n libraries?: PROJECT[];\n outputLineReplace?: (\n libForOutput: PROJECT,\n useExternalProvidedLibs: boolean,\n ) => (line: string) => string;\n useLastUserConfiguration?: boolean;\n};\n//#endregion\n\n//#region test build options\nexport type TestBuildOptions = {\n onlySpecyficFiles?: string[];\n updateSnapshot?: boolean;\n};\n//#endregion\n\n//#region change log data\nexport interface ChangelogData {\n changes: string[];\n version: string;\n date: string;\n}\n//#endregion\n\n//#region push process options\nexport interface PushProcessOptions {\n force?: boolean;\n typeofCommit?: TypeOfCommit;\n mergeUpdateCommits?: boolean;\n askToConfirmPush?: boolean;\n askToConfirmCommit?: boolean;\n skipLint?: boolean;\n askToConfirmBranchChange?: boolean;\n origin?: string;\n args?: string[];\n setOrigin?: 'ssh' | 'http';\n exitCallBack?: () => void;\n forcePushNoQuestion?: boolean;\n overrideCommitMessage?: string;\n commitMessageRequired?: boolean;\n /**\n * only needed when push github\n * and I forgot to add my username before issue\n * taon pfix proper input my-repo#344\n * that should be\n * taon pfix proper input my-username/my-repo#344\n */\n currentOrigin?: string;\n skipChildren?: boolean;\n noExit?: boolean;\n}\n//#endregion\n\n//#region command config\nexport class CommandConfig {\n static from(config: CommandConfig): CommandConfig {\n return new CommandConfig(config as any);\n }\n private constructor(data: CommandConfig) {\n Object.keys(data).forEach(key => {\n this[key] = data[key];\n });\n }\n name: string;\n cmd: string;\n\n headerMessageWhenActive?: string;\n /**\n * If true, the output will be stored in a buffer and displayed when requested.\n * Default: true\n */\n useDataBuffer?: boolean;\n /**\n * Process that should be started\n * before this process starts.\n */\n shouldBeActiveOrAlreadyBuild?: CommandConfig[] = [];\n goToNextCommandWhenOutput?:\n | string\n | {\n stdoutContains?: string | string[];\n stderrContains?: string | string[];\n };\n}\n//#endregion\n\n//#region process manager config\nexport interface ProcessManagerConfig<PROJECT> {\n title: string;\n header?: string;\n commands: CommandConfig[];\n /**\n * Default: false\n * If false - after first selection of processes, it will be not possible\n * to add new processes to build and build will be done after\n * all processes are done.\n */\n watch?: boolean;\n}\n//#endregion\n\n//#region command process state\nexport enum CommandProcessState {\n NOT_STARTED = 'not-started',\n WAITING_TO_START = 'waiting-to-start',\n RUNNING = 'running',\n FINISHED_AND_RUNNING = 'finished-and-running', // only for watch mode\n FINISHED = 'finished', // only for normal mode\n}\n//#endregion\n\n//#region command process run options\nexport interface CommandProcessRunOptions {\n progress?: (n: number, total: number) => void;\n resolveNextProcess?: (\n currentProcess: CommandProcess,\n ) => Promise<CommandProcess>;\n resolveWhenFinish?: boolean;\n}\n//#endregion\n\n//#region command process\nexport class CommandProcess {\n //#region fields and getters\n private state: CommandProcessState = CommandProcessState.NOT_STARTED;\n public readonly child_process?: ChildProcess;\n\n protected get cmd(): string {\n return this.config.cmd;\n }\n\n public get name(): string {\n return this.config.name;\n }\n\n get headerMessageWhenActive(): string | undefined {\n return this.config.headerMessageWhenActive;\n }\n\n get pid(): number | undefined {\n return this.child_process.pid;\n }\n\n get isFinished(): boolean {\n return [\n CommandProcessState.FINISHED,\n CommandProcessState.FINISHED_AND_RUNNING,\n ].includes(this.state);\n }\n\n get isRunning(): boolean {\n return [\n CommandProcessState.RUNNING,\n CommandProcessState.FINISHED_AND_RUNNING,\n ].includes(this.state);\n }\n\n get isWaitingToStart(): boolean {\n return this.state === CommandProcessState.WAITING_TO_START;\n }\n\n markForStart(): void {\n if (this.isRunning || this.isWaitingToStart) {\n console.warn(`Already running or waiting to start: ${this.name}`);\n return;\n }\n this.state = CommandProcessState.WAITING_TO_START;\n }\n\n //#endregion\n public dependenciesProcesses: CommandProcess[] = [];\n\n //#region constructor\n constructor(\n private project: BaseProject,\n private config: CommandConfig,\n private manager: BaseProcessManger,\n ) {}\n //#endregion\n\n //#region run\n\n async start(options?: CommandProcessRunOptions): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region stop\n async stop(): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n}\n//#endregion\n\n//#region models\nexport type CfontStyle =\n | 'block'\n | 'slick'\n | 'tiny'\n | 'grid'\n | 'pallet'\n | 'shade'\n | 'chrome'\n | 'simple'\n | 'simpleBlock'\n | '3d'\n | 'simple3d'\n | 'huge';\n\nexport type CfontAlign = 'left' | 'center' | 'right' | 'block';\n//#endregion\n\n//#region docker-compose models\nexport interface DockerComposeFile {\n version: string;\n services: Record<string, DockerService>;\n networks?: Record<string, DockerNetwork>;\n volumes?: Record<string, DockerVolume>;\n}\n\nexport interface DockerService {\n build?: string | DockerBuild;\n image?: string;\n container_name?: string;\n ports?: string[];\n environment?: Record<string, string> | string[];\n volumes?: string[];\n depends_on?: string[];\n command?: string | string[];\n networks?: string[] | Record<string, unknown>;\n restart?: string;\n entrypoint?: string | string[];\n working_dir?: string;\n labels?: Record<string, string>;\n env_file?: string | string[];\n args?: Record<string, string> | string[];\n}\n\nexport interface DockerBuild {\n context: string;\n dockerfile?: string;\n args?: Record<string, string>;\n target?: string;\n}\n\nexport interface DockerNetwork {\n driver?: string;\n external?: boolean;\n name?: string;\n}\n\nexport interface DockerVolume {\n driver?: string;\n external?: boolean;\n name?: string;\n}\n//#endregion","//#region imports\nimport { _, chalk, Helpers, UtilsTerminal } from 'tnp-core/browser';\n\nimport { CommandProcess, ProcessManagerConfig } from '../../models';\n\nimport { BaseFeatureForProject } from './base-feature-for-project';\nimport { BaseProject } from './base-project';\n\nexport { CommandConfig } from '../../models';\n//#endregion\n\n//#region custom console select/multiselect\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n//#endregion\n\nexport class BaseProcessManger<\n PROJECT extends BaseProject<any, any> = BaseProject<any, any>,\n> extends BaseFeatureForProject<PROJECT> {\n //#region fields and getters\n private initialOptions: ProcessManagerConfig<PROJECT>;\n private allProcesses: CommandProcess[] = [];\n private selectedProcesses: CommandProcess[] = [];\n public outputBuffer: string[] = [];\n public startedProcesses = new Set<CommandProcess>();\n public watch = false;\n\n //#region fields and getters / show logs\n private _showLogs: boolean = false;\n public set showLogs(value: boolean) {\n this._showLogs = value;\n this.hideOutput.stderr = !value;\n this.hideOutput.stdout = !value;\n }\n get showLogs(): boolean {\n return this._showLogs;\n }\n\n /**\n * special config for Helpers.executer\n */\n hideOutput = {\n stderr: !this.showLogs,\n stdout: !this.showLogs,\n acceptAllExitCodeAsSuccess: true,\n };\n //#endregion\n\n //#endregion\n\n //#region constructor\n constructor(project: PROJECT) {\n super(project as any);\n }\n //#endregion\n\n //#region init\n async init<PROJECT = BaseProject<any, any>>(\n initialOptions: ProcessManagerConfig<PROJECT>,\n ): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region show output\n private showOutput(): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region kill or build menu\n private async killOrBuildMenu(): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region make sure selected processes are running\n async makeSureSelectedProcessesAreRunning(): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region start process with dependencies\n private async startProcessWithDependencies(\n process: CommandProcess,\n startedProcesses = new Set<CommandProcess>(),\n parent: CommandProcess | undefined = undefined,\n ): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region build menu\n private async buildMenu(allowedToShowOutput = true): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n}","//#region imports\nimport { config } from 'tnp-config/browser';\nimport { _, crossPlatformPath, path } from 'tnp-core/browser';\nimport { CLASS } from 'typescript-class-helpers/browser';\n\nimport { Helpers } from '../../index';\n\nimport { BaseProject } from './base-project';\nimport type { BaseProjectResolver } from './base-project-resolver';\n\n//#endregion\n\nexport abstract class BaseCommandLineFeature<\n PARAMS extends {} = any,\n PROJECT extends BaseProject<any, any> = BaseProject,\n PROJECT_RESOLVER extends\n BaseProjectResolver<PROJECT> = BaseProjectResolver<PROJECT>,\n> {\n /**\n * params from command line\n */\n protected params: PARAMS;\n protected ins: PROJECT_RESOLVER;\n\n protected __transformArgsBeforeResolvingParams__(args: string[]): string[] {\n const transformaed = args.map(a => {\n return a\n .replace(`--copyTo`, '--copyto')\n .replace(`copyTo`, '--copyto')\n .replace(`copyto`, '--copyto');\n });\n return transformaed;\n }\n\n /**\n * clean args without params from command line\n */\n args: string[];\n /**\n * first arg from args\n */\n get firstArg() {\n return _.first(this.args);\n }\n\n /**\n * last arg from args\n */\n get lastArg() {\n return _.last(this.args);\n }\n\n private __project: PROJECT;\n protected get project(): PROJECT {\n return this.__project;\n }\n protected set project(v: PROJECT) {\n // if (!v) {\n // Helpers.error(\n // `Command line cannot be executed on folder that is not know project.`,\n // false,\n // true,\n // );\n // }\n this.__project = v;\n }\n\n\n constructor(\n public readonly argsWithParams: string,\n protected readonly methodNameToCall: string,\n /**\n * nearest project to cwd\n */\n project: PROJECT,\n /**\n * process.cwd()\n */\n protected cwd: string,\n ins: PROJECT_RESOLVER,\n ) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n\n public _exit(code = 0): void {\n process.exit(code);\n }\n\n protected __initialize__() {}\n\n _tryResolveChildIfInsideArg() {\n const {\n resolved,\n clearedCommand,\n } = // @ts-ignore\n Helpers.cliTool.resolveItemFromArgsBegin<PROJECT>(this.args, arg =>\n this.project.getChildBy(arg.replace(/\\/$/, '')),\n );\n this.project = resolved ? resolved : this.project;\n this.args = resolved ? clearedCommand.split(' ') : this.args;\n }\n\n /**\n * method called when not using class methods\n */\n public abstract _();\n}","export * from './base-project';\nexport * from './base-project-resolver';\nexport * from './base-feature-for-project';\nexport * from './base-library-build';\nexport * from './base-json-file-reader';\nexport * from './base-package-json';\nexport * from './base-node-modules';\nexport * from './base-npm-helpers';\nexport * from './base-linked-projects';\nexport * from './base-git';\nexport * from './base-vscode';\nexport * from './base-release-process';\nexport * from './base-compiler-for-project';\nexport * from './base-debounce-compiler-for-project';\nexport * from './base-quick-fixes';\nexport * from './base-cli-worker';\nexport * from './base-process-manager';\nexport * from './base-command-line-feature';\n\n/* */\n/* */\n/* */\n/* */\n ","//#region imports\nimport { _ } from 'tnp-core/browser';\nimport { path } from 'tnp-core/browser';\n\nimport { Helpers } from '../index';\n//#endregion\n\n//#region open source proviers\nconst openSourceProvidersIssuePrefix = [\n 'GH',\n // 'GITHUB',\n // 'BB',\n // 'BITBUCKET',\n // 'GL',\n // 'GITLAB',\n];\n//#endregion\n\n//#region common commit msg branch\nexport type CommonCommitMsgBranch =\n | 'refactor'\n | 'chore'\n | 'style'\n | 'docs'\n | 'test'\n | 'ci'\n | 'build'\n | 'release';\n//#endregion\n\n//#region type of commit\nexport type TypeOfCommit =\n | 'feature'\n | 'bugfix'\n | 'performance'\n | CommonCommitMsgBranch;\n//#endregion\n\nexport type TypeOfMsgPrefix = 'feat' | 'fix' | 'perf' | CommonCommitMsgBranch;\nconst regexTeamsID: RegExp = /[A-Z0-9]+\\#/;\n\nconst regexCommitModuleInArgs: RegExp = /\\[[a-z|\\-|\\,]+\\]/;\nconst regexCommitModuleInBranch: RegExp = /\\-\\-[a-z|\\-|\\_]+\\-\\-/;\n\nexport class CommitData {\n //#region static\n\n //#region static / methods & getters / clean http(s) from commit message\n private static cleanHttpFromCommitMessage(commitMsg: string): string {\n if (!commitMsg) {\n return commitMsg;\n }\n commitMsg = commitMsg.replace('https://', '');\n commitMsg = commitMsg.replace('http://', '');\n return commitMsg;\n }\n //#endregion\n\n //#region static / methods & getters / get temas id from\n private static getTeamsIdFrom(commitMsg: string) {\n let teamID = _.first(commitMsg.match(regexTeamsID));\n if (teamID) {\n commitMsg = commitMsg.replace(teamID, '');\n }\n return {\n commitMsgOrBranchName: commitMsg,\n teamID,\n };\n }\n //#endregion\n\n //#region static / methods & getters / get module name from\n private static getModuleNameFrom(commitMsg: string) {\n let commitModuleName = _.first(commitMsg.match(regexCommitModuleInArgs));\n if (commitModuleName) {\n commitMsg = commitMsg.replace(commitModuleName, '');\n }\n commitModuleName = commitModuleName?.replace(/\\[/g, '').replace(/\\]/g, '');\n return {\n commitMsg,\n commitModuleName,\n };\n }\n //#endregion\n\n //#region static / methods & getters / extract jira numbers\n /**\n *\n * @returns jiras (from oldest to newset)\n */\n static extractAndOrderJiraNumbers(commitOrBranchName: string): string[] {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region static / methods & getters / extract jira numbers\n /**\n *\n * @returns jiras (from oldest to newset)\n */\n static extractAndOrderIssuesFromOtherProjects(\n /**\n * example:\n * commit: proper git commands tnp/GH-9 darekf77/tnp-helpers/GH-10\n * feature/__tnp-GH-9____darekf77_tnp-helpers-GH10__-proper-git-commands\n */\n commitOrBranchName: string,\n currentOrigin?: string,\n ): string[] {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region static / methods & getters / clean message from jira numbers, team id and stuff\n static cleanMessageFromJiraNumTeamIdEtc(\n message: string,\n optinos?: {\n teamID: string;\n commitModuleName: string;\n jiraNumbers: string[];\n issuesFromOtherProjects: string[];\n },\n ): string {\n message = message || '';\n let { teamID, commitModuleName, jiraNumbers, issuesFromOtherProjects } =\n optinos || {};\n teamID = teamID || this.getTeamsIdFrom(message).teamID || '';\n commitModuleName =\n commitModuleName ||\n this.getModuleNameFrom(message).commitModuleName ||\n '';\n jiraNumbers = jiraNumbers || this.extractAndOrderJiraNumbers(message) || [];\n issuesFromOtherProjects =\n issuesFromOtherProjects ||\n this.extractAndOrderIssuesFromOtherProjects(message) ||\n [];\n\n if (!!teamID.trim()) {\n message = message.replace(teamID.toLowerCase().replace('-', ' '), ' ');\n message = message.replace(teamID.toUpperCase().replace('-', ' '), ' ');\n }\n\n // console.log({ clere: 'CLEAR', issuesFromOtherProjects, message });\n\n for (const issueFromOtherProj of issuesFromOtherProjects || []) {\n // console.log('issueFromOtherProj', issueFromOtherProj);\n // console.log('message', message);\n message = message.replace(\n `__${issueFromOtherProj.replace(/\\//g, '_').replace(/\\-/g, ' ')}__`,\n ' ',\n );\n message = message.replace(issueFromOtherProj, ' ');\n message = message.replace(\n issueFromOtherProj.toLowerCase().replace('-', ' '),\n ' ',\n );\n message = message.replace(\n issueFromOtherProj.toUpperCase().replace('-', ' '),\n ' ',\n );\n message = message.replace(issueFromOtherProj.toLowerCase(), ' ');\n message = message.replace(regexCommitModuleInArgs, ' ');\n message = message.replace(regexCommitModuleInBranch, ' ');\n message = message.replace(/\\ \\ /g, ' ');\n }\n\n for (const jira of jiraNumbers || []) {\n message = message.replace(jira.toLowerCase().replace('-', ' '), ' ');\n message = message.replace(jira.toUpperCase().replace('-', ' '), ' ');\n message = message.replace(jira, ' ');\n message = message.replace(jira.toLowerCase(), ' ');\n message = message.replace(regexCommitModuleInArgs, ' ');\n message = message.replace(regexCommitModuleInBranch, ' ');\n message = message.replace(/\\ \\ /g, ' ');\n }\n\n if (!!teamID.trim()) {\n message = message.replace(/\\_/g, ' ');\n }\n\n if (!!commitModuleName.trim()) {\n const cleanedModuleName = commitModuleName\n .replace(/\\-/g, ' ')\n .replace(/\\,/g, '_');\n\n message = message.replace(cleanedModuleName, ' ');\n }\n return message\n .replace(/\\ \\ /g, ' ')\n .replace(/\\ \\ /g, ' ')\n .replace(/\\ \\ /g, ' ');\n }\n\n //#endregion\n\n //#region static / methods & getters / get module name from branch\n private static getModuleNameFromBranch(branchName: string) {\n let commitModuleName = _.first(branchName.match(regexCommitModuleInBranch));\n if (commitModuleName) {\n branchName = branchName.replace(commitModuleName, '');\n commitModuleName = commitModuleName\n ?.replace(/^\\-\\-/, '')\n ?.replace(/\\-\\-$/, '');\n if (commitModuleName.startsWith('-')) {\n commitModuleName = commitModuleName.replace(/^\\-/, '');\n }\n }\n commitModuleName = commitModuleName\n ?.replace(/^\\-\\-/, '')\n ?.replace(/\\-\\-$/, '')\n .replace(/\\_/, ',');\n\n return { commitModuleName };\n }\n //#endregion\n\n //#region static / methods & getters / get from args\n static async getFromArgs(\n args: string[],\n options: {\n typeOfCommit: TypeOfCommit;\n /**\n * only needed when push github\n * and I forgot to add my username before issue\n * taon pfix proper input my-repo#344\n * that should be\n * taon pfix proper input my-username/my-repo#344\n */\n currentOrigin?: string;\n jiraIssuesAreOutsideBrackets?: boolean;\n },\n ): Promise<CommitData> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region static / methods & getters / get from bramch\n static async getFromBranch(\n currentBranchName: string,\n options?: {\n releaseWords?: string[];\n /**\n * only needed when push github\n * and I forgot to add my username before issue\n * taon pfix proper input my-repo#344\n * that should be\n * taon pfix proper input my-username/my-repo#344\n */\n currentOrigin?: string;\n jiraIssuesAreOutsideBrackets?: boolean;\n },\n ): Promise<CommitData> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region static / methods & getters / from\n public static from(\n options: Pick<\n CommitData,\n | 'message'\n | 'jiraNumbers'\n | 'typeOfCommit'\n | 'commitModuleName'\n | 'teamID'\n | 'issuesFromOtherProjects'\n | 'jiraIssuesAreOutsideBrackets'\n >,\n ): CommitData {\n options = (options ? options : {}) as any;\n // console.log(options)\n const opt = _.merge(new CommitData(), _.cloneDeep(options));\n return opt;\n }\n //#endregion\n\n //#endregion\n\n //#region fields\n private _message: string;\n typeOfCommit: TypeOfCommit;\n /**\n * ex. JIRA-2132 or MYJIRAREFIX-234234\n */\n jiraNumbers: string[];\n\n /**\n * if true then jira issues are outside brackets\n * feat: proper git commands JIRA-1234\n *\n * by default is false\n * feat(JIRA-1234): proper git commands\n */\n jiraIssuesAreOutsideBrackets: boolean;\n\n /**\n * when set -> jiraIssuesAreOutsideBrackets is true\n */\n readonly commitModuleName: string;\n readonly teamID: string;\n //#endregion\n\n //#region methods & getters / clear message\n private clearMessage(message: string): string {\n return CommitData.cleanMessageFromJiraNumTeamIdEtc(message, {\n teamID: this.teamID,\n commitModuleName: this.commitModuleName,\n jiraNumbers: this.jiraNumbers,\n issuesFromOtherProjects: this.issuesFromOtherProjects,\n });\n }\n //#endregion\n\n //#region methods & getters / message\n /**\n * pure message what was done (without jira or prefixes)\n * => is included in this.commitMessage\n */\n get message() {\n return this.clearMessage(this._message);\n }\n set message(message) {\n this._message = this.clearMessage(message);\n }\n //#endregion\n\n useFeatureBranchForTestBranch: boolean = false;\n\n //#region methods & getters / branch prefix\n get branchPrefix(): TypeOfMsgPrefix {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / issues from other projects\n /**\n * ex. taon/GH-12 darekf77/tnp-helpers/GH-4\n */\n get issuesFromOtherProjects(): string[] {\n return this.__issuesFromOtherProjects;\n }\n\n set issuesFromOtherProjects(value: string[]) {\n this.__issuesFromOtherProjects = value;\n // this.__issuesFromOtherProjects = value.map(issue => {\n // console.log('MAPPING', issue);\n // console.log('project', this.project?.name);\n // if (issue.split('/').length === 1 && !!this.project) {\n // console.log('issue', issue);\n // const origin = Helpers.git.originSshToHttp(this.project.git.originURL);\n // const provider = _.first(origin.replace('https://', '').split('/'));\n // const cleanUserWithPath = origin\n // .replace('https://', '')\n // .replace(provider + '/', '')\n // .replace(path.basename(origin).replace('.git', ''), '');\n\n // const issueLastPart = _.last(issue.split('/'));\n // return `tnp/${cleanUserWithPath}/${issueLastPart}`;\n // }\n // return issue;\n // });\n }\n\n private __issuesFromOtherProjects: string[];\n //#endregion\n\n //#region methods & getters / commit message git commit -m\n get commitMessage(): string {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / branch name\n get branchName(): string {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods & getters / is action commit\n get isActionCommit() {\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n}","//#region imports\nimport { _, path, crossPlatformPath } from 'tnp-core/browser';\nimport type { BaseProject } from './classes/base-project';\nimport { CLASS } from 'typescript-class-helpers/browser';\nimport { Helpers, LibrariesBuildOptions, TestBuildOptions } from '../index';\n//#endregion\n\n//#region core porject environment\nexport type CoreProjectEnvironment = {\n shortName?: string;\n name?: string;\n description?: string;\n onlineLink?: string;\n};\n//#endregion\n\n//#region constants\n//#region constants / defult db\nconst defaultDb = {\n projects: [],\n};\n//#endregion\n//#endregion\n\n//#region core project command args options\nexport type CoreCommandArgOptions<PROJECT extends BaseProject<any,any>> = {\n project?: PROJECT;\n /**\n * watch mode\n */\n watch?: boolean;\n prod?: boolean;\n debug?: boolean;\n isInReleaseProcess?: boolean;\n libraryBuildOptions?: LibrariesBuildOptions;\n testBuildOptions?: TestBuildOptions;\n /**\n * first arg from command line\n */\n firstArg?: string;\n /**\n * Not question for user ex.\n * - automatic process of patch release\n * - automatic deployment for default server\n */\n automaticProcess?: boolean;\n /**\n * orignal args with params\n */\n argsWithParams?: string;\n copyto?: string[];\n copytoall?: boolean;\n /**\n * args from command line (clearn from params)\n */\n args?: string[];\n exitCallback?: () => void;\n};\n//#endregion\n\nexport class CoreProject<PROJECT extends BaseProject = BaseProject> {\n //#region static\n\n //#region static / core projects\n public static coreProjects: CoreProject<any>[] = [];\n //#endregion\n\n //#region static / from\n static from<Proj extends BaseProject = BaseProject<any,any>>(\n options: Omit<CoreProject<Proj>, 'name' | 'url' | 'branch'>,\n ): CoreProject<Proj> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#endregion\n\n //#region constructor\n private constructor() {}\n //#endregion\n\n //#region properties\n extends?: CoreProject<any>;\n color?: string;\n /**\n * second color for project (optional)\n */\n secondColor?: string;\n /**\n * second color for project (optional)\n */\n thirdColor?: string;\n npmRegistry?: string;\n description?: string;\n /**\n * ssh url for git repo\n */\n urlSSH?: string;\n /**\n * https url for git repo\n */\n urlHttp?: string;\n /**\n * main branches - first is default\n */\n branches: string[];\n /**\n * project environments\n */\n environments?: CoreProjectEnvironment[] = [];\n //#endregion\n\n //#region methods & getters\n startCommand?: (options: CoreCommandArgOptions<PROJECT>) => Promise<void>;\n releaseCommand?: (options: CoreCommandArgOptions<PROJECT>) => Promise<void>;\n publishCommand?: (options: CoreCommandArgOptions<PROJECT>) => Promise<void>;\n deployCommand?: (options: CoreCommandArgOptions<PROJECT>) => Promise<void>;\n testCommand?: (options: CoreCommandArgOptions<PROJECT>) => Promise<void>;\n buildCommand?: (options: CoreCommandArgOptions<PROJECT>) => Promise<void>;\n docsCommand?: (options: CoreCommandArgOptions<PROJECT>) => Promise<void>;\n /**\n * function to recognize project\n */\n recognizedFn: (project: PROJECT) => boolean;\n\n /**\n * core porject name from repo basename\n */\n get name() {\n return path.basename(this.url).replace(/\\.git$/, '');\n }\n\n /**\n * main (default for reset) branch\n */\n get branch() {\n return _.first(this.branches);\n }\n\n /**\n * url for git repo\n */\n get url(): string {\n return (this.urlHttp ? this.urlHttp : this.urlSSH) || '';\n }\n //#endregion\n}\n\nexport const CoreTypescriptProject = CoreProject.from<BaseProject>({\n //#region configuration\n branches: ['master', 'develop'],\n urlHttp: 'https://github.com/microsoft/TypeScript',\n environments: [],\n recognizedFn: project => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n },\n async startCommand({ project }) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n },\n async buildCommand({ project, watch }) {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n },\n\n //#endregion\n});\n\nexport const CoreAngularProject = CoreProject.from<BaseProject>({\n //#region configuration\n extends: CoreTypescriptProject,\n branches: ['master', 'develop'],\n urlHttp: 'https://github.com/angular/angular-cli',\n environments: [],\n recognizedFn: project => {\n return project.hasFile('angular.json');\n },\n async startCommand({ project }) {\n await project.npmHelpers.nodeModules.makeSureInstalled();\n const port = await project.assignFreePort(4200);\n project.run(`npm-run ng serve --port ${port}`).sync();\n },\n async buildCommand({ project }) {\n await project.npmHelpers.nodeModules.makeSureInstalled();\n project.run(`npm-run ng build`).sync();\n },\n //#endregion\n});","import { config, notAllowedNames, notAllowedProjectNames } from 'tnp-config/browser';\nimport { _, crossPlatformPath, path } from 'tnp-core/browser';\n\nimport { Helpers } from '../index';\n\nexport class LinkedProject {\n //#region static\n\n //#region static / from\n static from(options: Partial<LinkedProject>) {\n const linkedProj = _.merge(\n new (LinkedProject as any)(),\n _.cloneDeep(options),\n ) as LinkedProject;\n if (!linkedProj.relativeClonePath) {\n linkedProj.relativeClonePath = path.basename(\n linkedProj.remoteUrl().replace('.git', ''),\n );\n }\n if (!linkedProj.defaultBranch) {\n linkedProj.defaultBranch = 'master';\n }\n return linkedProj;\n }\n //#endregion\n\n //#region static / from name\n static fromName(\n projectName: string,\n currentRemoteUrl?: string,\n currentBranch?: string,\n ) {\n return LinkedProject.from({\n repoUrl: currentRemoteUrl?.replace(\n path.basename(currentRemoteUrl),\n `${projectName}.git`,\n ),\n defaultBranch: currentBranch,\n relativeClonePath: projectName,\n });\n }\n //#endregion\n\n //#region static / detect\n static detect(\n insideLocation: string,\n options?: {\n recursive?: boolean;\n checkAlsoNonRepos?: boolean;\n },\n ): LinkedProject[] {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#endregion\n\n /**\n * sometime there is project that has one project\n * embede inside another project\n */\n internalRealtiveProjectPath?: string;\n /**\n * don't access directly, use remoteUrl() instead\n */\n repoUrlSsh?: string;\n /**\n * don't access directly, use remoteUrl() instead\n */\n repoUrlHttp?: string;\n /**\n * don't access directly, use remoteUrl() instead\n */\n repoUrl?: string;\n /**\n * url for git repo\n */\n public remoteUrl(): string {\n if (this.repoUrl) {\n return this.repoUrl;\n }\n if (this.repoUrlHttp) {\n return this.repoUrlHttp;\n }\n return this.repoUrlSsh;\n }\n\n public remoteUrlTransformed(setOrigin: 'ssh' | 'http'): string {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n defaultBranch?: string;\n purpose?: string;\n relativeClonePath?: string;\n}\n\nexport class LinkedPorjectsConfig {\n //#region static\n\n //#region static / from\n static from(options: Partial<LinkedPorjectsConfig>) {\n options = options || {};\n options.projects = (options.projects || []).map(linkedProjOrname => {\n if (_.isString(linkedProjOrname)) {\n return LinkedProject.fromName(linkedProjOrname);\n }\n return LinkedProject.from(linkedProjOrname);\n });\n // .sort((a, b) => {\n // return (a.relativeClonePath || '').localeCompare((b.relativeClonePath || ''));\n // });\n return _.merge(new (LinkedPorjectsConfig as any)(), _.cloneDeep(options));\n }\n //#endregion\n //#endregion\n\n prefix?: string;\n skipRecrusivePush?: boolean;\n resetOnlyChildren?: boolean;\n projects: LinkedProject[];\n}","export * from './classes';\nexport * from './commit-data';\nexport * from './core-project';\nexport * from './linked-project';\nexport * from './tcp-udp-ports';\n/* */\n/* */\n ","import * as child from 'child_process';\nimport * as fse from 'fs';\nimport * as path from 'path';\n\nimport type { ExtensionContext } from 'vscode';\n\nimport {\n capitalizeFirstLetter,\n optionsFix,\n Log,\n getModuleName,\n shell,\n escapeStringForRegEx,\n deepClone,\n valueFromCommand,\n crossPlatformPath,\n getVscode,\n} from './helpers';\nimport { ProcesOptions, ProgressData, ResolveVariable } from './models';\n\nexport type ExecCommandTypeOpt = {\n vscode?: typeof import('vscode');\n log?: Log;\n context?: ExtensionContext;\n cwd?: string;\n};\n\nexport type ExecCommandType =\n | string\n | string[]\n | ((opt: ExecCommandTypeOpt) => any);\n\nexport function executeCommand(\n titleOfTask,\n registerName: string,\n commandToExecute: ExecCommandType,\n pOptions?: ProcesOptions,\n isDefaultBuildCommand?: boolean,\n context?: ExtensionContext,\n debug?: boolean,\n) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n}","import { CoreModels } from 'tnp-core/browser';\n\nimport type { ExecCommandType } from './execute-command';\n\nexport type CommandType = {\n command?: string;\n exec?: ExecCommandType;\n title?: string;\n group?: string;\n hideContextMenu?: boolean;\n options?: ProcesOptions;\n isDefaultBuildCommand?: boolean;\n};\n\nexport type ResolveVariable = {\n variable: string;\n resolveValueFromCommand?: string;\n prompt?: string;\n placeholder?: string | Function;\n variableValue?: any;\n encode?: boolean;\n options?: { option: any; label: string }[] | string;\n optionsResolved?: {\n option: any;\n label: string;\n skipNextVariableResolve?: boolean;\n }[];\n useResultAsLinkAndExit?: boolean;\n exitWithMessgeWhenNoOptions?: string;\n /**\n * { label: 'action item !!!', option: { action: 'STRING_SECRET_CODE' } }\n * { label: 'normal item', option: < primitive value > }\n */\n fillNextVariableResolveWhenSelectedIsActionOption?: boolean;\n};\n\nexport type ProcesOptions = {\n progressLocation?: 'notification' | 'statusbar';\n findNearestProject?: boolean;\n findNearestProjectWithGitRoot?: boolean;\n findNearestProjectType?: CoreModels.LibType;\n findNearestProjectTypeWithGitRoot?: CoreModels.LibType;\n syncProcess?: boolean;\n reloadAfterSuccesFinish?: boolean;\n cancellable?: boolean;\n titleWhenProcessing?: string;\n tnpNonInteractive?: boolean;\n tnpShowProgress?: boolean;\n debug?: boolean;\n showOutputDataOnSuccess?: boolean;\n showSuccessMessage?: boolean;\n askBeforeExecute?: boolean;\n resolveVariables?: ResolveVariable[];\n};\n\n/**\n * @deprecated\n */\nexport type PROGRESS_DATA_TYPE = 'info' | 'error' | 'warning' | 'event';\n\n/**\n * @deprecated\n */\nexport interface IProgressData {\n /**\n * How man percent of progress\n */\n value?: number;\n msg?: string;\n type?: PROGRESS_DATA_TYPE;\n date?: Date;\n}\n\n/**\n * @deprecated\n */\nexport class ProgressData implements IProgressData {\n public static resolveFrom(\n chunk: string,\n callbackOnFounded?: (json: ProgressData) => any,\n checkSplit = true,\n ): ProgressData[] {\n let progress;\n let res: ProgressData[] = [];\n if (typeof chunk !== 'string') {\n return [];\n }\n chunk = chunk.trim();\n\n if (checkSplit) {\n const split = chunk.split(/\\r\\n|\\n|\\r/);\n if (split.length > 1) {\n // console.log('split founded', split)\n split.forEach(s => {\n res = res.concat(this.resolveFrom(s, callbackOnFounded, false));\n });\n return res;\n }\n }\n\n if (/\\[\\[\\[.*\\]\\]\\]/g.test(chunk)) {\n chunk = chunk.replace(/^\\[\\[\\[/g, '').replace(/\\]\\]\\]$/g, '');\n progress = chunk;\n }\n if (typeof progress !== 'undefined') {\n try {\n const p = JSON.parse(progress);\n const single = Object.assign(new ProgressData(), p);\n res = res.concat([single]);\n if (typeof callbackOnFounded === 'function') {\n callbackOnFounded(single);\n }\n } catch (err) {\n console.log(err);\n console.error(`ProgresssBarData: fail to parse \"${progress}\"`);\n }\n }\n return res;\n }\n\n constructor(\n public value: number = 0,\n public msg: string = '',\n\n public type: PROGRESS_DATA_TYPE = 'event',\n public date: Date = new Date(),\n ) {}\n}","export * from './validators/validators';\n//#region @browser\nexport { HelpersAngular } from './helpers/for-browser/angular.helper';\n//#endregion\n\nexport * from './utils';\nimport { HelpersTaon as Base } from './helpers/helpers';\nexport const Helpers: Base = Base.Instance as Base;\nexport * from './base';\nexport * from './models';\n\nexport * from './old/execute-command';\n// export * from './old/helpers';\nexport * from './old/models';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["defaultDb","Helpers","Base"],"mappings":"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"}
|